diff --git a/pages/index/index.vue b/pages/index/index.vue index 2c9cfc7..811906c 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -6,7 +6,7 @@ {{city}} - + 获取定位 @@ -76,7 +76,7 @@ - 获取定位 + 获取定位 @@ -143,7 +143,11 @@ uni.stopPullDownRefresh(); },2000) }, - onLoad() {}, + onLoad() { + if(uni.getSystemInfoSync().platform == 'ios') { + this.getLocation(); + } + }, onReady() { const that = this; uni.$on("clickTap", res=>{ @@ -204,8 +208,9 @@ } }, methods: { - getLocation() { + toGetLocation() { const that = this; + console.log(111) // APP检查权限 if(uni.getSystemInfoSync().platform == 'android') { plus.android.checkPermission( @@ -411,7 +416,7 @@ openPage(index,id){ const that = this; if(!that.city){ - that.getLocation(); + that.toGetLocation(); return ; } if(index == 1){ diff --git a/pages/peiwan/index.vue b/pages/peiwan/index.vue index 9f48002..32bc79d 100644 --- a/pages/peiwan/index.vue +++ b/pages/peiwan/index.vue @@ -6,7 +6,7 @@ {{city}} - + 获取定位 @@ -46,7 +46,7 @@ - 获取定位 + 获取定位 @@ -93,7 +93,11 @@ uni.stopPullDownRefresh(); },2000) }, - onLoad() {}, + onLoad() { + if(uni.getSystemInfoSync().platform == 'ios') { + this.getLocation(); + } + }, onShow() { if(uni.getStorageSync("userInfo").id){ this.getUserInfo(); @@ -278,7 +282,7 @@ }, openPage(index,id){ if(!that.city){ - that.getLocation(); + that.toGetLocation(); return ; } if(index == 1){ diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js index d1ada81..1701541 100644 --- a/unpackage/dist/dev/app-plus/app-service.js +++ b/unpackage/dist/dev/app-plus/app-service.js @@ -4375,7 +4375,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rua /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 68));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/js_sdk/wa-permission/permission.js */ 74));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar systemInfoSync = uni.getSystemInfoSync();\nvar recorderManager = uni.getRecorderManager();\nvar innerAudioContext = uni.createInnerAudioContext();\ninnerAudioContext.autoplay = true;\nvar timer = 0;\nvar _default = {\n data: function data() {\n return {\n showType: 1,\n //1xiangce 2录音\n isSvga: false,\n canvasId: 'myCanvas',\n svgaSrcList: [],\n svgaSrc: \"https://api.lyiyuan.cn/profile/upload/2024/11/05/9284d0797a991ef130d9b06759ef9b30.svga\",\n isPlay1: false,\n videoUrl: \"\",\n wrapperScrollHeight: 0,\n tabIndex: 0,\n id: \"\",\n current: 1,\n show1: false,\n show2: false,\n isCoins: false,\n isToggle: true,\n isOpen: false,\n title: \"\",\n content: \"\",\n userInfo: {},\n list: [],\n itemList: [],\n chatList: [],\n userId: \"\",\n img: \"\",\n show: false,\n isPlay: true,\n count: 0,\n balanceInfo: {},\n num: 1,\n giftList: [],\n giftListNum: 1,\n statusBarHeight: 0,\n wrapperHeight: 0,\n total: 0,\n page: 1,\n editorCtx: \"\",\n isBiaoqing: false,\n winWidth: 1,\n winHeight: 1\n };\n },\n onLoad: function onLoad(o) {\n this.statusBarHeight = systemInfoSync.statusBarHeight;\n this.userId = uni.getStorageSync(\"userInfo\").id;\n this.id = o.id;\n this.winWidth = uni.getSystemInfoSync().windowWidth;\n this.winHeight = uni.getSystemInfoSync().windowHeight;\n this.getUserInfo();\n this.getChatList();\n this.userBalance();\n this.getGift();\n },\n onReady: function onReady() {\n var that = this;\n recorderManager.onStop(function (res) {\n that.uploadAudio(res.tempFilePath);\n clearInterval(timer);\n that.isPlay = true;\n });\n innerAudioContext.onEnded(function (res) {\n that.isPlay = false;\n });\n that.watchSocket();\n },\n methods: {\n onLoaded: function onLoaded() {\n // console.log(\"加载完了\")\n // this.$refs.cSvgaRef.call(\"startAnimation\")\n },\n onFinished: function onFinished() {\n this.isSvga = false;\n this.svgaSrc = \"\";\n // console.log(\"播放完了\")\n },\n toToggle1: function toToggle1() {\n this.isPlay1 = !this.isPlay1;\n if (this.isPlay1) {\n innerAudioContext.src = this.userInfo.voice;\n innerAudioContext.play();\n } else {\n innerAudioContext.pause();\n }\n },\n perviewImages: function perviewImages(url) {\n uni.previewImage({\n urls: this.userInfo.xiangce,\n count: url\n });\n },\n perviewImage: function perviewImage(url) {\n uni.previewImage({\n urls: [url]\n });\n },\n toClick: function toClick(idx) {\n this.editorCtx.insertImage({\n src: 'https://api.lyiyuan.cn/profile/upload/static/face/' + idx + '.gif',\n with: 30,\n height: 30,\n success: function success() {}\n });\n },\n imMessageInput: function imMessageInput(e) {\n __f__(\"log\", e, \" at pages/users/chat/index.vue:308\");\n this.content = e.detail.html.replace(/= 8) {\n if (uni.getStorageSync(\"userInfo\").id == obj.sellerId) {\n if (obj.type == 10) {\n setTimeout(function () {\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=2&id=\" + that.id\n });\n }, 500);\n }\n if (obj.type == 18) {\n if (obj.userMsgVoice == 1) {\n uni.$emit(\"playAudio\");\n }\n if (obj.userMsgShock == 1) {\n uni.vibrateLong({\n complete: function complete(res) {\n __f__(\"log\", 'success', res, \" at pages/users/chat/index.vue:375\");\n }\n });\n }\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=3&id=\" + obj.userId + '&fid=' + obj.sellerId\n });\n }\n if (obj.type == 19) {\n if (obj.userMsgVoice == 1) {\n uni.$emit(\"playAudio\");\n }\n if (obj.userMsgShock == 1) {\n uni.vibrateLong({\n complete: function complete(res) {\n __f__(\"log\", 'success', res, \" at pages/users/chat/index.vue:390\");\n }\n });\n }\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=4&id=\" + obj.userId + '&fid=' + obj.sellerId\n });\n }\n }\n }\n }\n });\n },\n toBiaoqing: function toBiaoqing(type) {\n if (type == 1) {\n this.isBiaoqing = false;\n this.isOpen = !this.isOpen;\n } else {\n this.isOpen = false;\n this.isBiaoqing = !this.isBiaoqing;\n }\n },\n scrolltoupper: function scrolltoupper(e) {\n if (this.chatList.length <= this.total) {\n this.page++;\n this.getChatList(1);\n }\n },\n toAudio: function toAudio(url) {\n innerAudioContext.src = url;\n innerAudioContext.play();\n },\n toPlay: function toPlay(url) {\n this.show2 = true;\n this.videoUrl = url;\n },\n // 将px转换为rpx\n pxToRpx: function pxToRpx(px) {\n return px * 750 / systemInfoSync.windowWidth;\n },\n //发送得内容,type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n giftGiving: function giftGiving() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.$api.giftGiving({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n //用户ID\n \"acceptUserId\": _this.id,\n //被送礼之人ID\n \"giftId\": _this.giftList[_this.tabIndex].id,\n //礼物ID\n \"num\": _this.num //礼物数量\n });\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n toZengsong: function toZengsong() {\n var that = this;\n if (this.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (this.balanceInfo.isBlack >= this.giftList[this.tabIndex].price * that.num) {\n that.isCoins = true;\n return;\n }\n that.img = this.giftList[this.tabIndex].id;\n that.count = that.num;\n that.toSend(5);\n },\n tabItem: function tabItem(index) {\n this.tabIndex = index;\n },\n getGift: function getGift() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var _yield$_this2$$api$gi, code, data;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.$api.giftList({\n userId: uni.getStorageSync(\"userInfo\").id,\n limit: 999,\n page: 1\n });\n case 2:\n _yield$_this2$$api$gi = _context2.sent;\n code = _yield$_this2$$api$gi.code;\n data = _yield$_this2$$api$gi.data;\n if (code == 200) {\n _this2.giftList = data.list;\n _this2.giftListNum = Math.ceil(data.total / 8);\n }\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n closeGift: function closeGift() {\n this.show1 = false;\n this.isOpen = false;\n this.isBiaoqing = false;\n },\n openGift: function openGift() {\n if (this.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n this.show1 = true;\n this.isOpen = false;\n this.isBiaoqing = false;\n },\n changeswiper: function changeswiper(e) {\n this.current = e.detail.current;\n },\n toEnd: function toEnd() {\n recorderManager.stop();\n },\n toToggle: function toToggle() {\n var that = this;\n this.isToggle = !this.isToggle;\n this.isOpen = false;\n },\n //检查次数\n userBalance: function userBalance() {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _yield$_this3$$api$us, code, data;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this3.$api.userBalance({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this3$$api$us = _context3.sent;\n code = _yield$_this3$$api$us.code;\n data = _yield$_this3$$api$us.data;\n if (code == 200) {\n _this3.balanceInfo = data;\n /***\n \"videoCoins\": 0, //视频可用时长:分钟\n \"wordVoiceDiscount\": 0, //语音视频文字折扣:0表示不打折\n \"voiceCoins\": 0, //语音可用时长:分钟\n \"wordCoins\": 0, //文字可发数量\n \"userBalance\": 1 //当前用户金币余额\n */\n }\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n //结算 type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n socialConsumption: function socialConsumption(type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _this4.$api.socialConsumption({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this4.id,\n type: type == 1 || type == 2 || type == 3 ? 3 : type,\n duration: \"\"\n });\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n toOpen: function toOpen() {\n var that = this;\n //{\"userId\":\"123\",\"sellerId\":\"4575676878\",\"type\":3} 发送得内容,type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n // console.log(111)\n // console.log(JSON.stringify({\"userId\": uni.getStorageSync(\"userInfo\").id,sellerId:this.id, type:3,\"topic\":\"message\"}))\n // uni.sendSocketMessage({data:JSON.stringify({\"userId\": uni.getStorageSync(\"userInfo\").id,sellerId:this.id, type:3,\"topic\":\"message\"})});\n\n // return ;\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.RECORD_AUDIO', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n that.showType = 2;\n } else {\n that.show = false;\n that.showType = 1;\n that.toLuyin();\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/users/chat/index.vue:549\");\n });\n that.requestAndroidPermission('android.permission.RECORD_AUDIO');\n return;\n }\n that.toLuyin();\n },\n toLuyin: function toLuyin() {\n var that = this;\n clearInterval(timer);\n that.isPlay = false;\n timer = setInterval(function () {\n that.count++;\n }, 1000);\n recorderManager.start({\n format: \"mp3\"\n });\n },\n recorderAuthModal: function recorderAuthModal() {\n var that = this;\n uni.showModal({\n title: '温馨提示',\n content: '为了麦克风的功能,我们需要申请麦克风权限,请您确认授权,否则无法使用该功能~',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n recorderAuthModal1: function recorderAuthModal1() {\n var that = this;\n uni.showModal({\n title: '温馨提示',\n content: '为了提供图片/视频上传的功能,我们需要申请相机/存储权限,请您确认授权,否则无法使用该功能~',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n requestAndroidPermission: function requestAndroidPermission(permisionID) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var that, result;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n that = _this5;\n _context5.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context5.sent;\n if (result != 1) {\n that.recorderAuthModal();\n } else {\n that.show = false;\n }\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n //上传语音\n uploadAudio: function uploadAudio(filePath) {\n var that = this;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.wordCoins <= 0) {\n that.isCoins = true;\n return;\n }\n }\n uni.uploadFile({\n name: 'file',\n url: that.$baseUrl + '/prod-api/common/upload',\n filePath: filePath,\n success: function success(res) {\n var _JSON$parse = JSON.parse(res.data),\n code = _JSON$parse.code,\n fileName = _JSON$parse.fileName,\n url = _JSON$parse.url,\n msg = _JSON$parse.msg;\n if (code == 200) {\n that.img = url;\n that.toSend(1);\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at pages/users/chat/index.vue:636\");\n }\n });\n },\n //上传视频\n uploadVideo: function uploadVideo() {\n var _this6 = this;\n var that = this;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n uni.chooseVideo({\n count: 1,\n sourceType: [\"album\", \"camera\"],\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/users/chat/index.vue:655\");\n that.count = res1.duration;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.wordCoins <= 0) {\n that.isCoins = true;\n return;\n }\n }\n uni.uploadFile({\n name: 'file',\n url: that.$baseUrl + '/prod-api/common/upload',\n filePath: res1.tempFilePath,\n success: function success(res) {\n var _JSON$parse2 = JSON.parse(res.data),\n code = _JSON$parse2.code,\n fileName = _JSON$parse2.fileName,\n url = _JSON$parse2.url,\n msg = _JSON$parse2.msg;\n if (code == 200) {\n that.img = url;\n _this6.toSend(2);\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at pages/users/chat/index.vue:683\");\n }\n });\n },\n fail: function fail(err) {\n __f__(\"log\", \"fail\", err, \" at pages/users/chat/index.vue:688\");\n }\n });\n },\n //\n chooseAvatar: function chooseAvatar(index) {\n var that = this;\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.WRITE_EXTERNAL_STORAGE', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n that.showType = 1;\n } else {\n that.show = false;\n that.showType = 1;\n if (index == 1) {\n that.uploadImg();\n } else {\n that.uploadVideo();\n }\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/users/chat/index.vue:714\");\n });\n that.requestAndroidPermission1('android.permission.WRITE_EXTERNAL_STORAGE', index);\n return;\n }\n if (index == 1) {\n that.uploadImg();\n } else {\n that.uploadVideo();\n }\n },\n requestAndroidPermission1: function requestAndroidPermission1(permisionID, index) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var that, result;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n that = _this7;\n _context6.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context6.sent;\n if (result != 1) {\n that.recorderAuthModal1();\n } else {\n if (index == 1) {\n that.uploadImg();\n } else {\n that.uploadVideo();\n }\n }\n case 5:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n //上传图片\n uploadImg: function uploadImg() {\n var that = this;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n uni.chooseImage({\n count: 1,\n //可以指定是原图还是压缩图,默认二者都有\n sourceType: [\"album\", \"camera\"],\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/users/chat/index.vue:754\");\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.wordCoins <= 0) {\n that.isCoins = true;\n return;\n }\n }\n uni.uploadFile({\n name: 'file',\n url: that.$baseUrl + '/prod-api/common/upload',\n filePath: res1.tempFilePaths[0],\n success: function success(res) {\n //1.语音 2.视频 3.文字 4图片 5礼物\n var _JSON$parse3 = JSON.parse(res.data),\n code = _JSON$parse3.code,\n fileName = _JSON$parse3.fileName,\n url = _JSON$parse3.url,\n msg = _JSON$parse3.msg;\n if (code == 200) {\n that.img = url;\n that.toSend(4);\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at pages/users/chat/index.vue:782\");\n }\n });\n },\n fail: function fail(err) {\n __f__(\"log\", \"fail\", err, \" at pages/users/chat/index.vue:787\");\n }\n });\n },\n toSelect: function toSelect(msg) {\n this.content = msg;\n this.toSend(3);\n },\n // 发送得内容,type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n toSend: function toSend(type) {\n var _this8 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n var that, svgaSrc, _yield$_this8$$api$ch, code, data, _svgaSrc;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n that = _this8;\n if (!(type == 3)) {\n _context7.next = 9;\n break;\n }\n if (!(that.userInfo.isBlack == 1)) {\n _context7.next = 5;\n break;\n }\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return _context7.abrupt(\"return\");\n case 5:\n if (!(uni.getStorageSync(\"userInfo\").sex == 1)) {\n _context7.next = 9;\n break;\n }\n if (!(that.balanceInfo.wordCoins <= 1)) {\n _context7.next = 9;\n break;\n }\n that.isCoins = true;\n return _context7.abrupt(\"return\");\n case 9:\n svgaSrc = null;\n if (that.giftList && that.giftList.length > 0) {\n svgaSrc = that.giftList[that.tabIndex].specialEffects;\n }\n // console.log(that.svgaSrc)\n // console.log(svgaSrc)\n // that.svgaSrc = svgaSrc\n // that.isSvga = true;\n // return ;\n _context7.next = 13;\n return _this8.$api.chat({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: type,\n num: type == 5 ? that.count : that.count + 1,\n message: type == 3 ? that.content : that.img\n });\n case 13:\n _yield$_this8$$api$ch = _context7.sent;\n code = _yield$_this8$$api$ch.code;\n data = _yield$_this8$$api$ch.data;\n if (code == 200) {\n _svgaSrc = null;\n if (type == 5) {\n if (that.giftList && that.giftList.length > 0) {\n _svgaSrc = that.giftList[that.tabIndex].specialEffects;\n that.svgaSrc = _svgaSrc;\n that.isSvga = true;\n // if(that.svgaSrc == svgaSrc){\n // \tconsole.log(33333,that.svgaSrc == svgaSrc,that.svgaSrc, svgaSrc)\n // \tthat.isSvga = true;\n // \tthat.$refs.cSvgaRef.call(\"startAnimation\")\n // }else{\n // \tconsole.log(4444,that.svgaSrc == svgaSrc,that.svgaSrc, svgaSrc)\n // \tthat.svgaSrc = svgaSrc\n // \tthat.isSvga = true;\n // }\n }\n\n that.giftGiving();\n }\n uni.sendSocketMessage({\n data: JSON.stringify({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: type,\n num: that.count + 1,\n message: type == 3 ? that.content : that.img,\n svgaSrc: _svgaSrc ? _svgaSrc : '',\n \"topic\": \"message\"\n })\n });\n that.socialConsumption(type);\n that.isOpen = false;\n that.isBiaoqing = false;\n that.show1 = false;\n that.userBalance();\n that.editorCtx.clear();\n that.content = \"\";\n that.count = 0;\n that.num = 1;\n }\n case 17:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }))();\n },\n //数组对象去重\n arrayUnique: function arrayUnique(arr, name) {\n var hash = {};\n return arr.reduce(function (item, next) {\n hash[next[name]] ? \"\" : hash[next[name]] = true && item.push(next);\n return item;\n }, []);\n },\n getChatList: function getChatList(type) {\n var _this9 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var that, _yield$_this9$$api$fi, code, data, msg;\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n that = _this9;\n _context8.next = 3;\n return _this9.$api.findChatList({\n limit: 10,\n page: _this9.page,\n formUserId: uni.getStorageSync(\"userInfo\").id,\n toUserId: _this9.id\n });\n case 3:\n _yield$_this9$$api$fi = _context8.sent;\n code = _yield$_this9$$api$fi.code;\n data = _yield$_this9$$api$fi.data;\n msg = _yield$_this9$$api$fi.msg;\n if (!(code == 200)) {\n _context8.next = 13;\n break;\n }\n _this9.total = data.total;\n if (type == 1) {\n _this9.chatList = that.arrayUnique([].concat((0, _toConsumableArray2.default)(data.list), (0, _toConsumableArray2.default)(_this9.chatList)), 'msgId');\n } else {\n _this9.chatList = data.list;\n }\n if (!(type == 1)) {\n _context8.next = 12;\n break;\n }\n return _context8.abrupt(\"return\");\n case 12:\n setTimeout(function () {\n var wrapper = uni.createSelectorQuery().in(_this9).select('#wrapper');\n wrapper.fields({\n size: true,\n scrollOffset: true\n }, function (data) {\n // console.log(\"wrapper\",data)\n that.wrapperScrollHeight = data.scrollHeight * 6;\n }).exec();\n // ;\n }, 100);\n case 13:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }))();\n },\n getUserInfo: function getUserInfo() {\n var _this10 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n var _yield$_this10$$api$f, code, data, msg;\n return _regenerator.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return _this10.$api.findOtherUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this10.id\n });\n case 2:\n _yield$_this10$$api$f = _context9.sent;\n code = _yield$_this10$$api$f.code;\n data = _yield$_this10$$api$f.data;\n msg = _yield$_this10$$api$f.msg;\n if (code == 200) {\n _this10.userInfo = data;\n _this10.userInfo.xiangce = [];\n if (data.reserved1) {\n _this10.userInfo.xiangce = data.reserved1.split(\",\");\n }\n _this10.itemList = [\"查看TA的主页\", data.isCare == 0 ? \"关注\" : \"取消关注\", \"举报\", data.isBlack == 0 ? \"加入黑名单\" : \"移除黑名单\"];\n _this10.title = data.nickname + (data.isOnline == 1 ? \"_(在线)\" : \"_(离线)\");\n if (data.operrole == 0) {\n _this10.getConfigData();\n }\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }))();\n },\n //字典查询\n getConfigData: function getConfigData() {\n var _this11 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n var that, res1;\n return _regenerator.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n that = _this11;\n _context10.next = 3;\n return that.$api.getConfigData({\n dictType: 'CONFIG_MESSAGE_NOTICE'\n });\n case 3:\n res1 = _context10.sent;\n that.list = [res1.data.content];\n case 5:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n }))();\n },\n //是否关注\n toCareOrCancel: function toCareOrCancel() {\n var _this12 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var _yield$_this12$$api$c, code, data, msg;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return _this12.$api.careOrCancel({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this12.id,\n type: _this12.userInfo.isCare == 0 ? 1 : 2\n });\n case 2:\n _yield$_this12$$api$c = _context11.sent;\n code = _yield$_this12$$api$c.code;\n data = _yield$_this12$$api$c.data;\n msg = _yield$_this12$$api$c.msg;\n if (code == 200) {\n uni.showToast({\n title: _this12.userInfo.isCare == 0 ? \"关注成功\" : \"取消关注\"\n });\n setTimeout(function () {\n _this12.getUserInfo(1);\n }, 2000);\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11);\n }))();\n },\n //是否加入黑名单\n toYichu: function toYichu() {\n var _this13 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {\n var _yield$_this13$$api$a, code, data;\n return _regenerator.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return _this13.$api.addOrRemoveBlacklist({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this13.id,\n type: _this13.userInfo.isBlack == 0 ? 1 : 2\n });\n case 2:\n _yield$_this13$$api$a = _context12.sent;\n code = _yield$_this13$$api$a.code;\n data = _yield$_this13$$api$a.data;\n if (code == 200) {\n uni.showToast({\n title: _this13.userInfo.isBlack == 1 ? \"移除成功\" : \"加入成功\"\n });\n setTimeout(function () {\n _this13.getInfo();\n }, 2000);\n }\n case 6:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12);\n }))();\n },\n //视频语音说明\n openShiping: function openShiping() {\n var _this14 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {\n var that, _yield$that$$api$cost, code, data;\n return _regenerator.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n that = _this14;\n _context13.next = 3;\n return that.$api.costDescription({});\n case 3:\n _yield$that$$api$cost = _context13.sent;\n code = _yield$that$$api$cost.code;\n data = _yield$that$$api$cost.data;\n if (code == 200) {\n uni.showActionSheet({\n title: \"语音/视频通话\",\n itemList: [\"语音通话(\" + data.voiceCoins + \"金币/1分钟)\", \"视频通话(\" + data.videoCoins + \"金币/1分钟)\"],\n success: function success(res) {\n if (res.tapIndex == 0) {\n if (that.userInfo.isOnline == 0) {\n uni.showToast({\n title: \"当前用户已离线\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.userBalance <= 0) {\n that.isCoins = true;\n return;\n }\n }\n that.isToggle = true;\n that.isOpen = false;\n that.isBiaoqing = false;\n uni.sendSocketMessage({\n data: JSON.stringify({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: 18,\n \"topic\": \"message\"\n })\n });\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=3&id=\" + that.id\n });\n } else if (res.tapIndex == 1) {\n if (that.userInfo.isOnline == 0) {\n uni.showToast({\n title: \"当前用户已离线\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.userBalance <= 0) {\n that.isCoins = true;\n return;\n }\n }\n that.isToggle = true;\n that.isOpen = false;\n that.isBiaoqing = false;\n uni.sendSocketMessage({\n data: JSON.stringify({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: 19,\n \"topic\": \"message\"\n })\n });\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=4&id=\" + that.id\n });\n }\n }\n });\n }\n case 7:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13);\n }))();\n },\n toSheet1: function toSheet1() {\n var that = this;\n that.getcostDescription();\n },\n toSheet: function toSheet() {\n var that = this;\n uni.showActionSheet({\n itemList: this.itemList,\n success: function success(res) {\n if (res.tapIndex == 0) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + that.id\n });\n } else if (res.tapIndex == 1) {\n that.toCareOrCancel();\n } else if (res.tapIndex == 2) {\n uni.navigateTo({\n url: \"/pages/users/feedback/index?type=2&id=\" + that.id\n });\n } else if (res.tapIndex == 3) {\n that.toYichu();\n }\n }\n });\n },\n inputValue: function inputValue(e) {\n // console.log(e)\n }\n },\n destroyed: function destroyed() {\n uni.$off(\"toChatObj\");\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdXNlcnMvY2hhdC9pbmRleC52dWUiXSwibmFtZXMiOlsic3lzdGVtSW5mb1N5bmMiLCJ1bmkiLCJnZXRTeXN0ZW1JbmZvU3luYyIsInJlY29yZGVyTWFuYWdlciIsImdldFJlY29yZGVyTWFuYWdlciIsImlubmVyQXVkaW9Db250ZXh0IiwiY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQiLCJhdXRvcGxheSIsInRpbWVyIiwiZGF0YSIsInNob3dUeXBlIiwiaXNTdmdhIiwiY2FudmFzSWQiLCJzdmdhU3JjTGlzdCIsInN2Z2FTcmMiLCJpc1BsYXkxIiwidmlkZW9VcmwiLCJ3cmFwcGVyU2Nyb2xsSGVpZ2h0IiwidGFiSW5kZXgiLCJpZCIsImN1cnJlbnQiLCJzaG93MSIsInNob3cyIiwiaXNDb2lucyIsImlzVG9nZ2xlIiwiaXNPcGVuIiwidGl0bGUiLCJjb250ZW50IiwidXNlckluZm8iLCJsaXN0IiwiaXRlbUxpc3QiLCJjaGF0TGlzdCIsInVzZXJJZCIsImltZyIsInNob3ciLCJpc1BsYXkiLCJjb3VudCIsImJhbGFuY2VJbmZvIiwibnVtIiwiZ2lmdExpc3QiLCJnaWZ0TGlzdE51bSIsInN0YXR1c0JhckhlaWdodCIsIndyYXBwZXJIZWlnaHQiLCJ0b3RhbCIsInBhZ2UiLCJlZGl0b3JDdHgiLCJpc0JpYW9xaW5nIiwid2luV2lkdGgiLCJ3aW5IZWlnaHQiLCJvbkxvYWQiLCJvIiwiZ2V0U3RvcmFnZVN5bmMiLCJ3aW5kb3dXaWR0aCIsIndpbmRvd0hlaWdodCIsImdldFVzZXJJbmZvIiwiZ2V0Q2hhdExpc3QiLCJ1c2VyQmFsYW5jZSIsImdldEdpZnQiLCJvblJlYWR5IiwidGhhdCIsIm9uU3RvcCIsInJlcyIsInVwbG9hZEF1ZGlvIiwidGVtcEZpbGVQYXRoIiwiY2xlYXJJbnRlcnZhbCIsIm9uRW5kZWQiLCJ3YXRjaFNvY2tldCIsIm1ldGhvZHMiLCJvbkxvYWRlZCIsIm9uRmluaXNoZWQiLCJ0b1RvZ2dsZTEiLCJzcmMiLCJ2b2ljZSIsInBsYXkiLCJwYXVzZSIsInBlcnZpZXdJbWFnZXMiLCJ1cmwiLCJwcmV2aWV3SW1hZ2UiLCJ1cmxzIiwieGlhbmdjZSIsInBlcnZpZXdJbWFnZSIsInRvQ2xpY2siLCJpZHgiLCJpbnNlcnRJbWFnZSIsIndpdGgiLCJoZWlnaHQiLCJzdWNjZXNzIiwiaW1NZXNzYWdlSW5wdXQiLCJlIiwiZGV0YWlsIiwiaHRtbCIsInJlcGxhY2UiLCJvbkVkaXRvclJlYWR5IiwiY3JlYXRlU2VsZWN0b3JRdWVyeSIsInNlbGVjdCIsImNvbnRleHQiLCJleGVjIiwiJG9uIiwib2JqIiwiSlNPTiIsInBhcnNlIiwidG9waWMiLCJ0eXBlIiwiJGVtaXQiLCJzZWxsZXJJZCIsIiRyZWZzIiwiY1N2Z2FSZWYiLCJjYWxsIiwic2V0VGltZW91dCIsIm5hdmlnYXRlVG8iLCJ1c2VyTXNnVm9pY2UiLCJ1c2VyTXNnU2hvY2siLCJ2aWJyYXRlTG9uZyIsImNvbXBsZXRlIiwidG9CaWFvcWluZyIsInNjcm9sbHRvdXBwZXIiLCJsZW5ndGgiLCJ0b0F1ZGlvIiwidG9QbGF5IiwicHhUb1JweCIsInB4IiwiZ2lmdEdpdmluZyIsIiRhcGkiLCJ0b1plbmdzb25nIiwiaXNCbGFjayIsInNob3dUb2FzdCIsInBvc2l0aW9uIiwiaWNvbiIsInByaWNlIiwidG9TZW5kIiwidGFiSXRlbSIsImluZGV4IiwibGltaXQiLCJjb2RlIiwiTWF0aCIsImNlaWwiLCJjbG9zZUdpZnQiLCJvcGVuR2lmdCIsImNoYW5nZXN3aXBlciIsInRvRW5kIiwic3RvcCIsInRvVG9nZ2xlIiwic29jaWFsQ29uc3VtcHRpb24iLCJkdXJhdGlvbiIsInRvT3BlbiIsInBsYXRmb3JtIiwicGx1cyIsImFuZHJvaWQiLCJjaGVja1Blcm1pc3Npb24iLCJncmFudGVkIiwiY2hlY2tSZXN1bHQiLCJ0b0x1eWluIiwiZXJyb3IiLCJtZXNzYWdlIiwicmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uIiwic2V0SW50ZXJ2YWwiLCJzdGFydCIsImZvcm1hdCIsInJlY29yZGVyQXV0aE1vZGFsIiwic2hvd01vZGFsIiwiY2FuY2VsVGV4dCIsImNvbmZpcm1UZXh0IiwiY29uZmlybSIsInBlcm1pc2lvbiIsImdvdG9BcHBQZXJtaXNzaW9uU2V0dGluZyIsInJlY29yZGVyQXV0aE1vZGFsMSIsInBlcm1pc2lvbklEIiwicmVzdWx0IiwiZmlsZVBhdGgiLCJzZXgiLCJ3b3JkQ29pbnMiLCJ1cGxvYWRGaWxlIiwibmFtZSIsIiRiYXNlVXJsIiwiZmlsZU5hbWUiLCJtc2ciLCJmYWlsIiwiZXJyIiwidXBsb2FkVmlkZW8iLCJjaG9vc2VWaWRlbyIsInNvdXJjZVR5cGUiLCJyZXMxIiwiY2hvb3NlQXZhdGFyIiwidXBsb2FkSW1nIiwicmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uMSIsImNob29zZUltYWdlIiwidGVtcEZpbGVQYXRocyIsInRvU2VsZWN0Iiwic3BlY2lhbEVmZmVjdHMiLCJjaGF0Iiwic2VuZFNvY2tldE1lc3NhZ2UiLCJzdHJpbmdpZnkiLCJjbGVhciIsImFycmF5VW5pcXVlIiwiYXJyIiwiaGFzaCIsInJlZHVjZSIsIml0ZW0iLCJuZXh0IiwicHVzaCIsImZpbmRDaGF0TGlzdCIsImZvcm1Vc2VySWQiLCJ0b1VzZXJJZCIsIndyYXBwZXIiLCJpbiIsImZpZWxkcyIsInNpemUiLCJzY3JvbGxPZmZzZXQiLCJzY3JvbGxIZWlnaHQiLCJmaW5kT3RoZXJVc2VySW5mbyIsInJlc2VydmVkMSIsInNwbGl0IiwiaXNDYXJlIiwibmlja25hbWUiLCJpc09ubGluZSIsIm9wZXJyb2xlIiwiZ2V0Q29uZmlnRGF0YSIsImRpY3RUeXBlIiwidG9DYXJlT3JDYW5jZWwiLCJjYXJlT3JDYW5jZWwiLCJ0b1lpY2h1IiwiYWRkT3JSZW1vdmVCbGFja2xpc3QiLCJnZXRJbmZvIiwib3BlblNoaXBpbmciLCJjb3N0RGVzY3JpcHRpb24iLCJzaG93QWN0aW9uU2hlZXQiLCJ2b2ljZUNvaW5zIiwidmlkZW9Db2lucyIsInRhcEluZGV4IiwidG9TaGVldDEiLCJnZXRjb3N0RGVzY3JpcHRpb24iLCJ0b1NoZWV0IiwiaW5wdXRWYWx1ZSIsImRlc3Ryb3llZCIsIiRvZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFrTUM7QUFsTUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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SUFBSTtNQUNqQjFELEdBQUcsQ0FBQ2dPLGVBQWUsQ0FBQztRQUNuQm5NLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVE7UUFDdkJ3RCxPQUFPLG1CQUFDekIsR0FBRyxFQUFDO1VBQ1gsSUFBR0EsR0FBRyxDQUFDdUssUUFBUSxJQUFJLENBQUMsRUFBQztZQUNwQm5PLEdBQUcsQ0FBQzRHLFVBQVUsQ0FBQztjQUNkakMsR0FBRyxFQUFFLDBCQUEwQixHQUFDakIsSUFBSSxDQUFDeEM7WUFDdEMsQ0FBQyxDQUFDO1VBQ0gsQ0FBQyxNQUFLLElBQUcwQyxHQUFHLENBQUN1SyxRQUFRLElBQUksQ0FBQyxFQUFDO1lBQzFCekssSUFBSSxDQUFDK0osY0FBYyxFQUFFO1VBQ3RCLENBQUMsTUFBSyxJQUFHN0osR0FBRyxDQUFDdUssUUFBUSxJQUFJLENBQUMsRUFBQztZQUMxQm5PLEdBQUcsQ0FBQzRHLFVBQVUsQ0FBQztjQUNkakMsR0FBRyxFQUFFLHdDQUF3QyxHQUFDakIsSUFBSSxDQUFDeEM7WUFDcEQsQ0FBQyxDQUFDO1VBQ0gsQ0FBQyxNQUFLLElBQUcwQyxHQUFHLENBQUN1SyxRQUFRLElBQUksQ0FBQyxFQUFDO1lBQzFCekssSUFBSSxDQUFDaUssT0FBTyxFQUFFO1VBQ2Y7UUFDRDtNQUNELENBQUMsQ0FBQztJQUNILENBQUM7SUFDRFksVUFBVSxzQkFBQ2hKLENBQUMsRUFBRTtNQUNiO0lBQUE7RUFFRixDQUFDO0VBQ0RpSixTQUFTLHVCQUFHO0lBQ1h4TyxHQUFHLENBQUN5TyxJQUFJLENBQUMsV0FBVyxDQUFDO0VBQ3RCO0FBQ0QsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjY3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5cdGNvbnN0IHN5c3RlbUluZm9TeW5jID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCk7XG5cdGltcG9ydCBwZXJtaXNpb24gZnJvbSBcIkAvanNfc2RrL3dhLXBlcm1pc3Npb24vcGVybWlzc2lvbi5qc1wiXG5cdGNvbnN0IHJlY29yZGVyTWFuYWdlciA9IHVuaS5nZXRSZWNvcmRlck1hbmFnZXIoKTtcblx0Y29uc3QgaW5uZXJBdWRpb0NvbnRleHQgPSB1bmkuY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQoKTtcblx0aW5uZXJBdWRpb0NvbnRleHQuYXV0b3BsYXkgPSB0cnVlO1xuXHRsZXQgdGltZXIgPSAwO1xuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHNob3dUeXBlOiAxLC8vMXhpYW5nY2UgIDLlvZXpn7Ncblx0XHRcdFx0aXNTdmdhOiBmYWxzZSxcblx0XHRcdFx0Y2FudmFzSWQ6J215Q2FudmFzJyxcblx0XHRcdFx0c3ZnYVNyY0xpc3Q6IFtdLFxuXHRcdFx0XHRzdmdhU3JjOiBcImh0dHBzOi8vYXBpLmx5aXl1YW4uY24vcHJvZmlsZS91cGxvYWQvMjAyNC8xMS8wNS85Mjg0ZDA3OTdhOTkxZWYxMzBkOWIwNjc1OWVmOWIzMC5zdmdhXCIsXG5cdFx0XHRcdGlzUGxheTE6IGZhbHNlLFxuXHRcdFx0XHR2aWRlb1VybDogXCJcIixcblx0XHRcdFx0d3JhcHBlclNjcm9sbEhlaWdodDogMCxcblx0XHRcdFx0dGFiSW5kZXg6IDAsXG5cdFx0XHRcdGlkOiBcIlwiLFxuXHRcdFx0XHRjdXJyZW50OiAxLFxuXHRcdFx0XHRzaG93MTogZmFsc2UsXG5cdFx0XHRcdHNob3cyOiBmYWxzZSxcblx0XHRcdFx0aXNDb2luczogZmFsc2UsXG5cdFx0XHRcdGlzVG9nZ2xlOiB0cnVlLFxuXHRcdFx0XHRpc09wZW46IGZhbHNlLFxuXHRcdFx0XHR0aXRsZTogXCJcIixcblx0XHRcdFx0Y29udGVudDogXCJcIixcblx0XHRcdFx0dXNlckluZm86IHt9LFxuXHRcdFx0XHRsaXN0OiBbXSxcblx0XHRcdFx0aXRlbUxpc3Q6IFtdLFxuXHRcdFx0XHRjaGF0TGlzdDogW10sXG5cdFx0XHRcdHVzZXJJZDogXCJcIixcblx0XHRcdFx0aW1nOiBcIlwiLFxuXHRcdFx0XHRzaG93OiBmYWxzZSxcblx0XHRcdFx0aXNQbGF5OiB0cnVlLFxuXHRcdFx0XHRjb3VudDogMCxcblx0XHRcdFx0YmFsYW5jZUluZm86IHt9LFxuXHRcdFx0XHRudW06IDEsXG5cdFx0XHRcdGdpZnRMaXN0OiBbXSxcblx0XHRcdFx0Z2lmdExpc3ROdW06IDEsXG5cdFx0XHRcdHN0YXR1c0JhckhlaWdodDogMCxcblx0XHRcdFx0d3JhcHBlckhlaWdodDogMCxcblx0XHRcdFx0dG90YWw6IDAsXG5cdFx0XHRcdHBhZ2U6IDEsXG5cdFx0XHRcdGVkaXRvckN0eDogXCJcIixcblx0XHRcdFx0aXNCaWFvcWluZzogZmFsc2UsXG5cdFx0XHRcdHdpbldpZHRoOiAxLFxuXHRcdFx0XHR3aW5IZWlnaHQ6IDFcblx0XHRcdH07XG5cdFx0fSxcblx0XHRvbkxvYWQobykge1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJIZWlnaHQgPSBzeXN0ZW1JbmZvU3luYy5zdGF0dXNCYXJIZWlnaHQ7XG5cdFx0XHR0aGlzLnVzZXJJZCA9IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkO1xuXHRcdFx0dGhpcy5pZCA9IG8uaWQ7XG5cdFx0XHR0aGlzLndpbldpZHRoID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkud2luZG93V2lkdGg7XG5cdFx0XHR0aGlzLndpbkhlaWdodCA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLndpbmRvd0hlaWdodDtcblx0XHRcdHRoaXMuZ2V0VXNlckluZm8oKTtcblx0XHRcdHRoaXMuZ2V0Q2hhdExpc3QoKTtcblx0XHRcdHRoaXMudXNlckJhbGFuY2UoKTtcblx0XHRcdHRoaXMuZ2V0R2lmdCgpO1xuXHRcdH0sXG5cdFx0b25SZWFkeSgpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0cmVjb3JkZXJNYW5hZ2VyLm9uU3RvcChmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRcdHRoYXQudXBsb2FkQXVkaW8ocmVzLnRlbXBGaWxlUGF0aCk7XG5cdFx0XHRcdGNsZWFySW50ZXJ2YWwodGltZXIpO1xuXHRcdFx0XHR0aGF0LmlzUGxheSA9IHRydWVcblx0XHRcdFx0XG5cdFx0XHR9KTtcblx0XHRcdGlubmVyQXVkaW9Db250ZXh0Lm9uRW5kZWQocmVzPT57XG5cdFx0XHRcdHRoYXQuaXNQbGF5ID0gZmFsc2Vcblx0XHRcdH0pXG5cdFx0XHR0aGF0LndhdGNoU29ja2V0KCk7XG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XG5cdFx0XHRvbkxvYWRlZCgpIHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCLliqDovb3lrozkuoZcIilcblx0XHRcdFx0Ly8gdGhpcy4kcmVmcy5jU3ZnYVJlZi5jYWxsKFwic3RhcnRBbmltYXRpb25cIilcblx0XHRcdH0sXG5cdFx0XHRvbkZpbmlzaGVkKCkge1xuXHRcdFx0XHR0aGlzLmlzU3ZnYSA9IGZhbHNlXG5cdFx0XHRcdHRoaXMuc3ZnYVNyYyA9IFwiXCJcbiBcdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwi5pKt5pS+5a6M5LqGXCIpXG5cdFx0XHR9LFxuXHRcdFx0dG9Ub2dnbGUxKCkge1xuXHRcdFx0XHR0aGlzLmlzUGxheTEgPSAhdGhpcy5pc1BsYXkxXG5cdFx0XHRcdGlmKHRoaXMuaXNQbGF5MSl7XG5cdFx0XHRcdFx0aW5uZXJBdWRpb0NvbnRleHQuc3JjID0gdGhpcy51c2VySW5mby52b2ljZTtcblx0XHRcdFx0XHRpbm5lckF1ZGlvQ29udGV4dC5wbGF5KCk7XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdGlubmVyQXVkaW9Db250ZXh0LnBhdXNlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRwZXJ2aWV3SW1hZ2VzKHVybCl7XG5cdFx0XHRcdHVuaS5wcmV2aWV3SW1hZ2Uoe1xuXHRcdFx0XHRcdHVybHM6IHRoaXMudXNlckluZm8ueGlhbmdjZSxcblx0XHRcdFx0XHRjb3VudDogdXJsXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0cGVydmlld0ltYWdlKHVybCl7XG5cdFx0XHRcdHVuaS5wcmV2aWV3SW1hZ2Uoe1xuXHRcdFx0XHRcdHVybHM6IFt1cmxdXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0dG9DbGljayAoaWR4KXtcblx0XHRcdFx0dGhpcy5lZGl0b3JDdHguaW5zZXJ0SW1hZ2Uoe1xuXHRcdFx0XHRcdHNyYzogJ2h0dHBzOi8vYXBpLmx5aXl1YW4uY24vcHJvZmlsZS91cGxvYWQvc3RhdGljL2ZhY2UvJytpZHgrJy5naWYnLFxuXHRcdFx0XHRcdHdpdGg6IDMwLFxuXHRcdFx0XHRcdGhlaWdodDogMzAsXG5cdFx0XHRcdFx0c3VjY2Vzcygpe1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRpbU1lc3NhZ2VJbnB1dChlKXtcblx0XHRcdFx0Y29uc29sZS5sb2coZSlcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gZS5kZXRhaWwuaHRtbC5yZXBsYWNlKC88aW1nIC9nLCc8aW1nIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIiAnKTtcblx0XHRcdH0sXG5cdFx0XHRvbkVkaXRvclJlYWR5KCkge1xuXG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdCgnI2VkaXRvcicpLmNvbnRleHQoKHJlcykgPT4ge1xuXHRcdFx0XHQgIHRoYXQuZWRpdG9yQ3R4ID0gcmVzLmNvbnRleHRcblx0XHRcdFx0fSkuZXhlYygpXG5cblx0XHRcdH0sXG5cdFx0XHR3YXRjaFNvY2tldCgpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHVuaS4kb24oXCJ0b0NoYXRPYmpcIixmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb2JqID0gcmVzLmRhdGE/SlNPTi5wYXJzZShyZXMuZGF0YSk6e31cblx0XHRcdFx0XHRjb25zb2xlLmxvZyhvYmopXG5cdFx0XHRcdFx0aWYob2JqLnRvcGljID09ICdtZXNzYWdlJyl7XG5cdFx0XHRcdFx0XHRpZihvYmoudHlwZVx0ID09IDEyKXtcblx0XHRcdFx0XHRcdFx0dW5pLiRlbWl0KFwid2F0Y2hFdmVudFwiLG9iailcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKG9iai50eXBlID09IDIwKXtcblx0XHRcdFx0XHRcdFx0dW5pLiRlbWl0KFwidG9KaWVzaG91WWluc2hpcFwiLG9iailcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKG9iai50eXBlPD03KXtcblx0XHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQgPT0gb2JqLnNlbGxlcklkKXtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LnBhZ2UgPSAxO1xuXHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0Q2hhdExpc3QoKTtcblx0XHRcdFx0XHRcdFx0XHRpZihvYmoudHlwZSA9PSA1KXtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKG9iai5zdmdhU3JjKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYob2JqLnN2Z2FTcmMpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LnN2Z2FTcmMgPT0gb2JqLnN2Z2FTcmMpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKDExMTIyLHRoYXQuc3ZnYVNyYyA9PSBvYmouc3ZnYVNyYyx0aGF0LnN2Z2FTcmMsb2JqLnN2Z2FTcmMpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5pc1N2Z2EgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuJHJlZnMuY1N2Z2FSZWYuY2FsbChcInN0YXJ0QW5pbWF0aW9uXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKDIyMjIyLHRoYXQuc3ZnYVNyYyA9PSBvYmouc3ZnYVNyYyx0aGF0LnN2Z2FTcmMsIG9iai5zdmdhU3JjKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNTdmdhID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnN2Z2FTcmMgPSBvYmouc3ZnYVNyYztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyB0aGF0LiRyZWZzLmNTdmdhUmVmLmNhbGwoXCJjbGVhclwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gdGhhdC4kcmVmcy5jU3ZnYVJlZi5jYWxsKFwic3RhcnRBbmltYXRpb25cIilcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQgPT0gb2JqLnVzZXJJZCl7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5wYWdlID0gMTtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldENoYXRMaXN0KCk7XHRcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0aWYob2JqLnR5cGU+PSA4KXtcblx0XHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQgPT0gb2JqLnNlbGxlcklkKXtcblx0XHRcdFx0XHRcdFx0XHRpZihvYmoudHlwZSA9PSAxMCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BpcGVpL3NoaXBpbi9kZXRhaWw/dHlwZT0yJmlkPVwiK3RoYXQuaWRcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdH0sNTAwKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZihvYmoudHlwZSA9PSAxOCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZihvYmoudXNlck1zZ1ZvaWNlID09IDEpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1bmkuJGVtaXQoXCJwbGF5QXVkaW9cIilcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGlmKG9iai51c2VyTXNnU2hvY2sgPT0gMSl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVuaS52aWJyYXRlTG9uZyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uIChyZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdzdWNjZXNzJyxyZXMpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGlwZWkvc2hpcGluL2RldGFpbD90eXBlPTMmaWQ9XCIrb2JqLnVzZXJJZCsnJmZpZD0nK29iai5zZWxsZXJJZFxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYob2JqLnR5cGUgPT0gMTkpe1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYob2JqLnVzZXJNc2dWb2ljZSA9PSAxKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLiRlbWl0KFwicGxheUF1ZGlvXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZihvYmoudXNlck1zZ1Nob2NrID09IDEpe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1bmkudmlicmF0ZUxvbmcoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlOiBmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc3VjY2VzcycscmVzKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BpcGVpL3NoaXBpbi9kZXRhaWw/dHlwZT00JmlkPVwiK29iai51c2VySWQrJyZmaWQ9JytvYmouc2VsbGVySWRcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHR0b0JpYW9xaW5nKHR5cGUpIHtcblx0XHRcdFx0aWYodHlwZT09MSl7XG5cdFx0XHRcdFx0dGhpcy5pc0JpYW9xaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW5cblx0XHRcdFx0fWVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy5pc0JpYW9xaW5nID0gIXRoaXMuaXNCaWFvcWluZ1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0c2Nyb2xsdG91cHBlcihlKSB7XG5cdFx0XHRcdGlmKHRoaXMuY2hhdExpc3QubGVuZ3RoIDw9dGhpcy50b3RhbCl7XG5cdFx0XHRcdFx0dGhpcy5wYWdlICsrO1xuXHRcdFx0XHRcdHRoaXMuZ2V0Q2hhdExpc3QoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR0b0F1ZGlvKHVybCkge1xuXHRcdFx0XHRpbm5lckF1ZGlvQ29udGV4dC5zcmMgPSB1cmw7XG5cdFx0XHRcdGlubmVyQXVkaW9Db250ZXh0LnBsYXkoKTtcblx0XHRcdH0sXG5cdFx0XHR0b1BsYXkodXJsKXtcblx0XHRcdFx0dGhpcy5zaG93MiA9IHRydWU7XG5cdFx0XHRcdHRoaXMudmlkZW9VcmwgPSB1cmxcblx0XHRcdH0sXG5cdFx0XHQvLyDlsIZweOi9rOaNouS4unJweFxuXHRcdFx0cHhUb1JweChweCkge1xuXHRcdFx0ICAgIHJldHVybiBweCAqIDc1MCAvIHN5c3RlbUluZm9TeW5jLndpbmRvd1dpZHRoO1xuXHRcdFx0fSxcblx0XHRcdC8v5Y+R6YCB5b6X5YaF5a6577yMdHlwZToxLuivremfsyAyLuinhumikSAzLuaWh+WtlyA05Zu+54mHIDXnpLzniak25pCt6K6qXG5cdFx0XHRhc3luYyBnaWZ0R2l2aW5nKCkge1xuXHRcdFx0XHRhd2FpdCB0aGlzLiRhcGkuZ2lmdEdpdmluZyh7XG5cdFx0XHRcdFx0XCJ1c2VySWRcIjogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsIC8v55So5oi3SURcblx0XHRcdFx0XHRcImFjY2VwdFVzZXJJZFwiOiB0aGlzLmlkLCAvL+iiq+mAgeekvOS5i+S6uklEXG5cdFx0XHRcdFx0XCJnaWZ0SWRcIjogdGhpcy5naWZ0TGlzdFt0aGlzLnRhYkluZGV4XS5pZCwgLy/npLznialJRFxuXHRcdFx0XHRcdFwibnVtXCI6IHRoaXMubnVtIC8v56S854mp5pWw6YePXG5cdFx0XHRcdH0pIFxuXHRcdFx0fSxcblx0XHRcdHRvWmVuZ3NvbmcoKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHRpZih0aGlzLnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLlvZPliY3nlKjmiLfmmK/pu5HlkI3ljZXvvIzlt7LpmZDliLZcIixcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHRoaXMuYmFsYW5jZUluZm8uaXNCbGFjayA+PSB0aGlzLmdpZnRMaXN0W3RoaXMudGFiSW5kZXhdLnByaWNlKnRoYXQubnVtKXtcblx0XHRcdFx0XHR0aGF0LmlzQ29pbnMgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhhdC5pbWcgPSB0aGlzLmdpZnRMaXN0W3RoaXMudGFiSW5kZXhdLmlkXG5cdFx0XHRcdHRoYXQuY291bnQgPSB0aGF0Lm51bVxuXHRcdFx0XHR0aGF0LnRvU2VuZCg1KVxuXHRcdFx0fSxcblx0XHRcdHRhYkl0ZW0oaW5kZXgpe1xuXHRcdFx0XHR0aGlzLnRhYkluZGV4ID0gaW5kZXg7XG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgZ2V0R2lmdCgpIHtcblx0XHRcdFx0Y29uc3QgeyBjb2RlLCBkYXRhIH0gPSBhd2FpdCB0aGlzLiRhcGkuZ2lmdExpc3Qoe1xuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0bGltaXQ6IDk5OSxcblx0XHRcdFx0XHRwYWdlOiAxXG5cdFx0XHRcdH0pIFxuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dGhpcy5naWZ0TGlzdCA9IGRhdGEubGlzdDtcblx0XHRcdFx0XHR0aGlzLmdpZnRMaXN0TnVtID0gTWF0aC5jZWlsKGRhdGEudG90YWwvOClcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGNsb3NlR2lmdCgpe1xuXHRcdFx0XHR0aGlzLnNob3cxID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuaXNCaWFvcWluZyA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdG9wZW5HaWZ0KCl7XG5cdFx0XHRcdGlmKHRoaXMudXNlckluZm8uaXNCbGFjayA9PSAxKXtcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+aYr+m7keWQjeWNle+8jOW3sumZkOWItlwiLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5zaG93MSA9IHRydWU7XG5cdFx0XHRcdFxuXHRcdFx0XHR0aGlzLmlzT3BlbiA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLmlzQmlhb3FpbmcgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHRjaGFuZ2Vzd2lwZXIoZSl7XG5cdFx0XHRcdHRoaXMuY3VycmVudCA9IGUuZGV0YWlsLmN1cnJlbnRcblx0XHRcdH0sXG5cdFx0XHR0b0VuZCgpIHtcblx0XHRcdFx0cmVjb3JkZXJNYW5hZ2VyLnN0b3AoKTtcblx0XHRcdH0sXG5cdFx0XHR0b1RvZ2dsZSgpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHRoaXMuaXNUb2dnbGUgPSAhdGhpcy5pc1RvZ2dsZVxuXHRcdFx0XHR0aGlzLmlzT3BlbiA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdC8v5qOA5p+l5qyh5pWwXG5cdFx0XHRhc3luYyB1c2VyQmFsYW5jZSgpIHtcblx0XHRcdFx0Y29uc3QgeyBjb2RlLCBkYXRhIH0gPSBhd2FpdCB0aGlzLiRhcGkudXNlckJhbGFuY2Uoe1xuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWRcblx0XHRcdFx0fSkgXG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHR0aGlzLmJhbGFuY2VJbmZvID0gZGF0YVxuXHRcdFx0XHRcdC8qKipcblx0XHRcdFx0XHRcInZpZGVvQ29pbnNcIjogMCwgLy/op4bpopHlj6/nlKjml7bplb/vvJrliIbpkp9cblx0XHRcdFx0XHRcIndvcmRWb2ljZURpc2NvdW50XCI6IDAsIC8v6K+t6Z+z6KeG6aKR5paH5a2X5oqY5omj77yaMOihqOekuuS4jeaJk+aKmFxuXHRcdFx0XHRcdFwidm9pY2VDb2luc1wiOiAwLCAvL+ivremfs+WPr+eUqOaXtumVv++8muWIhumSn1xuXHRcdFx0XHRcdFwid29yZENvaW5zXCI6IDAsIC8v5paH5a2X5Y+v5Y+R5pWw6YePXG5cdFx0XHRcdFx0XCJ1c2VyQmFsYW5jZVwiOiAxIC8v5b2T5YmN55So5oi36YeR5biB5L2Z6aKdXG5cdFx0XHRcdFx0Ki9cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8v57uT566XIHR5cGU6MS7or63pn7MgMi7op4bpopEgMy7mloflrZcgNOWbvueJhyA156S854mpNuaQreiuqlxuXHRcdFx0YXN5bmMgc29jaWFsQ29uc3VtcHRpb24odHlwZSkge1xuXHRcdFx0XHRhd2FpdCB0aGlzLiRhcGkuc29jaWFsQ29uc3VtcHRpb24oe1xuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0c2VsbGVySWQ6IHRoaXMuaWQsXG5cdFx0XHRcdFx0dHlwZTogKHR5cGUgPT0gMSB8fCB0eXBlID09IDIgfHwgdHlwZSA9PSAzKT8zOnR5cGUsXG5cdFx0XHRcdFx0ZHVyYXRpb246IFwiXCJcblx0XHRcdFx0fSkgXG5cdFx0XHR9LFxuXHRcdFx0dG9PcGVuKCl7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHQvL3tcInVzZXJJZFwiOlwiMTIzXCIsXCJzZWxsZXJJZFwiOlwiNDU3NTY3Njg3OFwiLFwidHlwZVwiOjN9ICAg5Y+R6YCB5b6X5YaF5a6577yMdHlwZToxLuivremfsyAyLuinhumikSAzLuaWh+WtlyA05Zu+54mHIDXnpLzniak25pCt6K6qXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKDExMSlcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe1widXNlcklkXCI6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLHNlbGxlcklkOnRoaXMuaWQsIHR5cGU6MyxcInRvcGljXCI6XCJtZXNzYWdlXCJ9KSlcblx0XHRcdFx0Ly8gdW5pLnNlbmRTb2NrZXRNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KHtcInVzZXJJZFwiOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxzZWxsZXJJZDp0aGlzLmlkLCB0eXBlOjMsXCJ0b3BpY1wiOlwibWVzc2FnZVwifSl9KTtcblx0XHRcdFx0XG5cdFx0XHRcdC8vIHJldHVybiA7XG5cdFx0XHRcdC8vIEFQUOajgOafpeadg+mZkFxuXHRcdFx0XHRpZih1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKS5wbGF0Zm9ybSA9PSAnYW5kcm9pZCcpIHtcblx0XHRcdFx0XHRwbHVzLmFuZHJvaWQuY2hlY2tQZXJtaXNzaW9uKFxuXHRcdFx0XHRcdFx0J2FuZHJvaWQucGVybWlzc2lvbi5SRUNPUkRfQVVESU8nLFxuXHRcdFx0XHRcdFx0Z3JhbnRlZCA9PiB7XG5cdFx0XHRcdFx0XHQgIGlmIChncmFudGVkLmNoZWNrUmVzdWx0PT0tMSl7XG5cdFx0XHRcdFx0XHRcdHRoYXQuc2hvdz10cnVlXG5cdFx0XHRcdFx0XHRcdHRoYXQuc2hvd1R5cGUgPSAyXG5cdFx0XHRcdFx0XHQgIH1lbHNle1xuXHRcdFx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2Vcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93VHlwZSA9IDFcblx0XHRcdFx0XHRcdFx0dGhhdC50b0x1eWluKCk7XG5cdFx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRlcnJvciA9PiB7XG5cdFx0XHRcdFx0XHQgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHBlcm1pc3Npb246JywgZXJyb3IubWVzc2FnZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ICApO1xuXHRcdFx0XHRcdCB0aGF0LnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbignYW5kcm9pZC5wZXJtaXNzaW9uLlJFQ09SRF9BVURJTycpXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGF0LnRvTHV5aW4oKTtcblx0XHRcdH0sXG5cdFx0XHR0b0x1eWluKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcilcblx0XHRcdFx0dGhhdC5pc1BsYXkgPSBmYWxzZTtcblx0XHRcdFx0dGltZXIgPSBzZXRJbnRlcnZhbCgoKT0+e1xuXHRcdFx0XHRcdHRoYXQuY291bnQrK1xuXHRcdFx0XHR9LDEwMDApXG5cdFx0XHRcdHJlY29yZGVyTWFuYWdlci5zdGFydCh7XG5cdFx0XHRcdFx0Zm9ybWF0OiBcIm1wM1wiXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0cmVjb3JkZXJBdXRoTW9kYWw6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiAn5rip6aao5o+Q56S6Jyxcblx0XHRcdFx0XHRjb250ZW50OiAn5Li65LqG6bqm5YWL6aOO55qE5Yqf6IO977yM5oiR5Lus6ZyA6KaB55Sz6K+36bqm5YWL6aOO5p2D6ZmQ77yM6K+35oKo56Gu6K6k5o6I5p2D77yM5ZCm5YiZ5peg5rOV5L2/55So6K+l5Yqf6IO9ficsXG5cdFx0XHRcdFx0Y2FuY2VsVGV4dDogJ+WFs+mXrScsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6ICfljrvmjojmnYMnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2Vcblx0XHRcdFx0XHRcdGlmIChyZXMuY29uZmlybSkge1xuXHRcdFx0XHRcdFx0XHRwZXJtaXNpb24uZ290b0FwcFBlcm1pc3Npb25TZXR0aW5nKClcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0cmVjb3JkZXJBdXRoTW9kYWwxOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogJ+a4qemmqOaPkOekuicsXG5cdFx0XHRcdFx0Y29udGVudDogJ+S4uuS6huaPkOS+m+WbvueJhy/op4bpopHkuIrkvKDnmoTlip/og73vvIzmiJHku6zpnIDopoHnlLPor7fnm7jmnLov5a2Y5YKo5p2D6ZmQ77yM6K+35oKo56Gu6K6k5o6I5p2D77yM5ZCm5YiZ5peg5rOV5L2/55So6K+l5Yqf6IO9ficsXG5cdFx0XHRcdFx0Y2FuY2VsVGV4dDogJ+WFs+mXrScsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6ICfljrvmjojmnYMnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2Vcblx0XHRcdFx0XHRcdGlmIChyZXMuY29uZmlybSkge1xuXHRcdFx0XHRcdFx0XHRwZXJtaXNpb24uZ290b0FwcFBlcm1pc3Npb25TZXR0aW5nKClcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgcmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKHBlcm1pc2lvbklEKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gYXdhaXQgcGVybWlzaW9uLnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbihwZXJtaXNpb25JRCk7XG5cdFx0XHRcdGlmKHJlc3VsdCAhPSAxKXtcblx0XHRcdFx0XHR0aGF0LnJlY29yZGVyQXV0aE1vZGFsKCk7XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHRoYXQuc2hvdyA9ZmFsc2Vcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8v5LiK5Lyg6K+t6Z+zXG5cdFx0XHR1cGxvYWRBdWRpbyhmaWxlUGF0aCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XG5cdFx0XHRcdFx0aWYodGhhdC5iYWxhbmNlSW5mby53b3JkQ29pbnMgPD0gMCl7XG5cdFx0XHRcdFx0XHR0aGF0LmlzQ29pbnM9dHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS51cGxvYWRGaWxlKHtcblx0XHRcdFx0XHRuYW1lOiAnZmlsZScsXG5cdFx0XHRcdFx0dXJsOiB0aGF0LiRiYXNlVXJsKycvcHJvZC1hcGkvY29tbW9uL3VwbG9hZCcsXG5cdFx0XHRcdFx0ZmlsZVBhdGgsXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qge2NvZGUsIGZpbGVOYW1lLCB1cmwsIG1zZ30gPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcblx0XHRcdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHRcdFx0dGhhdC5pbWcgPSB1cmxcblx0XHRcdFx0XHRcdFx0dGhhdC50b1NlbmQoMSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycilcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1x0XG5cdFx0XHR9LFxuXHRcdFx0Ly/kuIrkvKDop4bpopFcblx0XHRcdHVwbG9hZFZpZGVvKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHR1bmkuY2hvb3NlVmlkZW8oe1xuXHRcdFx0XHRcdGNvdW50OiAxLFxuXHRcdFx0XHRcdHNvdXJjZVR5cGU6IFtcImFsYnVtXCIsIFwiY2FtZXJhXCJdLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMxKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMxKVxuXHRcdFx0XHRcdFx0dGhhdC5jb3VudCA9IHJlczEuZHVyYXRpb247XG5cdFx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+aYr+m7keWQjeWNle+8jOW3sumZkOWItlwiLFxuXHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuc2V4ID09IDEpe1xuXHRcdFx0XHRcdFx0XHRpZih0aGF0LmJhbGFuY2VJbmZvLndvcmRDb2lucyA8PSAwKXtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzQ29pbnM9dHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1bmkudXBsb2FkRmlsZSh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdmaWxlJyxcblx0XHRcdFx0XHRcdFx0dXJsOiB0aGF0LiRiYXNlVXJsKycvcHJvZC1hcGkvY29tbW9uL3VwbG9hZCcsXG5cdFx0XHRcdFx0XHRcdGZpbGVQYXRoOiByZXMxLnRlbXBGaWxlUGF0aCxcblx0XHRcdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHtjb2RlLCBmaWxlTmFtZSwgdXJsLCBtc2d9ID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XG5cdFx0XHRcdFx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5pbWcgPSB1cmxcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMudG9TZW5kKDIpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcdFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbChlcnIpe1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCJmYWlsXCIsZXJyKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Ly9cblx0XHRcdGNob29zZUF2YXRhcihpbmRleCl7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHQvLyBBUFDmo4Dmn6XmnYPpmZBcblx0XHRcdFx0aWYodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gPT0gJ2FuZHJvaWQnKSB7XG5cdFx0XHRcdFx0cGx1cy5hbmRyb2lkLmNoZWNrUGVybWlzc2lvbihcblx0XHRcdFx0XHRcdCdhbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfRVhURVJOQUxfU1RPUkFHRScsXG5cdFx0XHRcdFx0XHRncmFudGVkID0+IHtcblx0XHRcdFx0XHRcdCAgaWYgKGdyYW50ZWQuY2hlY2tSZXN1bHQ9PS0xKXtcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93PXRydWVcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93VHlwZSA9IDFcblx0XHRcdFx0XHRcdCAgfWVsc2V7XG5cdFx0XHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGF0LnNob3dUeXBlID0gMTtcblx0XHRcdFx0XHRcdFx0aWYoaW5kZXggPT0gMSl7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC51cGxvYWRJbWcoKTtcblx0XHRcdFx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC51cGxvYWRWaWRlbygpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRlcnJvciA9PiB7XG5cdFx0XHRcdFx0XHQgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHBlcm1pc3Npb246JywgZXJyb3IubWVzc2FnZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ICApO1xuXHRcdFx0XHRcdCB0aGF0LnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbjEoJ2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9FWFRFUk5BTF9TVE9SQUdFJyxpbmRleClcblx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKGluZGV4ID09IDEpe1xuXHRcdFx0XHRcdHRoYXQudXBsb2FkSW1nKCk7XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHRoYXQudXBsb2FkVmlkZW8oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGFzeW5jIHJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbjEocGVybWlzaW9uSUQsaW5kZXgpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBhd2FpdCBwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKHBlcm1pc2lvbklEKTtcblx0XHRcdFx0aWYocmVzdWx0ICE9IDEpe1xuXHRcdFx0XHRcdHRoYXQucmVjb3JkZXJBdXRoTW9kYWwxKCk7XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdGlmKGluZGV4ID09IDEpe1xuXHRcdFx0XHRcdFx0dGhhdC51cGxvYWRJbWcoKTtcblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHRoYXQudXBsb2FkVmlkZW8oKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQvL+S4iuS8oOWbvueJh1xuXHRcdFx0dXBsb2FkSW1nKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpc1xuXHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLlvZPliY3nlKjmiLfmmK/pu5HlkI3ljZXvvIzlt7LpmZDliLZcIixcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5jaG9vc2VJbWFnZSh7XG5cdFx0XHRcdFx0Y291bnQ6IDEsIC8v5Y+v5Lul5oyH5a6a5piv5Y6f5Zu+6L+Y5piv5Y6L57yp5Zu+77yM6buY6K6k5LqM6ICF6YO95pyJXG5cdFx0XHRcdFx0c291cmNlVHlwZTogW1wiYWxidW1cIiwgXCJjYW1lcmFcIl0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlczEpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlczEpXG5cdFx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+aYr+m7keWQjeWNle+8jOW3sumZkOWItlwiLFxuXHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuc2V4ID09IDEpe1xuXHRcdFx0XHRcdFx0XHRpZih0aGF0LmJhbGFuY2VJbmZvLndvcmRDb2lucyA8PSAwKXtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzQ29pbnM9dHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1bmkudXBsb2FkRmlsZSh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdmaWxlJyxcblx0XHRcdFx0XHRcdFx0dXJsOiB0aGF0LiRiYXNlVXJsKycvcHJvZC1hcGkvY29tbW9uL3VwbG9hZCcsXG5cdFx0XHRcdFx0XHRcdGZpbGVQYXRoOiByZXMxLnRlbXBGaWxlUGF0aHNbMF0sXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQvLzEu6K+t6Z+zIDIu6KeG6aKRIDMu5paH5a2XIDTlm77niYcgNeekvOeJqVxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHtjb2RlLCBmaWxlTmFtZSwgdXJsLCBtc2d9ID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XG5cdFx0XHRcdFx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5pbWcgPSB1cmxcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQudG9TZW5kKDQpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcdFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbChlcnIpe1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCJmYWlsXCIsZXJyKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0XG5cdFx0XHR0b1NlbGVjdChtc2cpe1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgPSBtc2c7XG5cdFx0XHRcdHRoaXMudG9TZW5kKDMpO1xuXHRcdFx0fSxcblx0XHRcdC8vIOWPkemAgeW+l+WGheWuue+8jHR5cGU6MS7or63pn7MgMi7op4bpopEgMy7mloflrZcgNOWbvueJhyA156S854mpNuaQreiuqlxuXHRcdFx0YXN5bmMgdG9TZW5kKHR5cGUpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdGlmKHR5cGUgPT0gMyl7XG5cdFx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+aYr+m7keWQjeWNle+8jOW3sumZkOWItlwiLFxuXHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuc2V4ID09IDEpe1xuXHRcdFx0XHRcdFx0aWYodGhhdC5iYWxhbmNlSW5mby53b3JkQ29pbnMgPD0gMSl7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaXNDb2lucz10cnVlO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgc3ZnYVNyYyA9IG51bGxcblx0XHRcdFx0aWYodGhhdC5naWZ0TGlzdCAmJiB0aGF0LmdpZnRMaXN0Lmxlbmd0aCA+IDApe1xuXHRcdFx0XHRcdHN2Z2FTcmMgPSB0aGF0LmdpZnRMaXN0W3RoYXQudGFiSW5kZXhdLnNwZWNpYWxFZmZlY3RzXG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gY29uc29sZS5sb2codGhhdC5zdmdhU3JjKVxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdmdhU3JjKVxuXHRcdFx0XHQvLyB0aGF0LnN2Z2FTcmMgPSBzdmdhU3JjXG5cdFx0XHRcdC8vIHRoYXQuaXNTdmdhID0gdHJ1ZTtcblx0XHRcdFx0Ly8gcmV0dXJuIDtcblx0XHRcdFx0Y29uc3QgeyBjb2RlLCBkYXRhIH0gPSBhd2FpdCB0aGlzLiRhcGkuY2hhdCh7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0XHRzZWxsZXJJZDogdGhhdC5pZCxcblx0XHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRcdG51bTogdHlwZSA9PSA1P3RoYXQuY291bnQ6KHRoYXQuY291bnQrMSksXG5cdFx0XHRcdFx0bWVzc2FnZTogdHlwZSA9PSAzP3RoYXQuY29udGVudDogdGhhdC5pbWdcblx0XHRcdFx0fSkgXG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHRsZXQgc3ZnYVNyYyA9IG51bGxcblx0XHRcdFx0XHRpZih0eXBlPT01KXtcblx0XHRcdFx0XHRcdGlmKHRoYXQuZ2lmdExpc3QgJiYgdGhhdC5naWZ0TGlzdC5sZW5ndGggPiAwKXtcblx0XHRcdFx0XHRcdFx0c3ZnYVNyYyA9IHRoYXQuZ2lmdExpc3RbdGhhdC50YWJJbmRleF0uc3BlY2lhbEVmZmVjdHM7XG5cdFx0XHRcdFx0XHRcdHRoYXQuc3ZnYVNyYyA9IHN2Z2FTcmNcblx0XHRcdFx0XHRcdFx0dGhhdC5pc1N2Z2EgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHQvLyBpZih0aGF0LnN2Z2FTcmMgPT0gc3ZnYVNyYyl7XG5cdFx0XHRcdFx0XHRcdC8vIFx0Y29uc29sZS5sb2coMzMzMzMsdGhhdC5zdmdhU3JjID09IHN2Z2FTcmMsdGhhdC5zdmdhU3JjLCBzdmdhU3JjKVxuXHRcdFx0XHRcdFx0XHQvLyBcdHRoYXQuaXNTdmdhID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0Ly8gXHR0aGF0LiRyZWZzLmNTdmdhUmVmLmNhbGwoXCJzdGFydEFuaW1hdGlvblwiKVxuXHRcdFx0XHRcdFx0XHQvLyB9ZWxzZXtcblx0XHRcdFx0XHRcdFx0Ly8gXHRjb25zb2xlLmxvZyg0NDQ0LHRoYXQuc3ZnYVNyYyA9PSBzdmdhU3JjLHRoYXQuc3ZnYVNyYywgc3ZnYVNyYylcblx0XHRcdFx0XHRcdFx0Ly8gXHR0aGF0LnN2Z2FTcmMgPSBzdmdhU3JjXG5cdFx0XHRcdFx0XHRcdC8vIFx0dGhhdC5pc1N2Z2EgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHQvLyB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGF0LmdpZnRHaXZpbmcoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dW5pLnNlbmRTb2NrZXRNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0XHRcdFwidXNlcklkXCI6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRcdFx0c2VsbGVySWQ6dGhhdC5pZCwgXG5cdFx0XHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRcdFx0bnVtOiAodGhhdC5jb3VudCsxKSxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICh0eXBlID09IDM/dGhhdC5jb250ZW50OiB0aGF0LmltZyksXG5cdFx0XHRcdFx0XHRzdmdhU3JjOiBzdmdhU3JjP3N2Z2FTcmM6JycsXG5cdFx0XHRcdFx0XHRcInRvcGljXCI6XCJtZXNzYWdlXCJcblx0XHRcdFx0XHR9KX0pXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0dGhhdC5zb2NpYWxDb25zdW1wdGlvbih0eXBlKTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHR0aGF0LmlzT3BlbiA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoYXQuaXNCaWFvcWluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoYXQuc2hvdzEgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGF0LnVzZXJCYWxhbmNlKCk7XG5cdFx0XHRcdFx0dGhhdC5lZGl0b3JDdHguY2xlYXIoKTtcblx0XHRcdFx0XHR0aGF0LmNvbnRlbnQ9XCJcIlxuXHRcdFx0XHRcdHRoYXQuY291bnQgPSAwO1xuXHRcdFx0XHRcdHRoYXQubnVtID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8v5pWw57uE5a+56LGh5Y676YeNXG5cdFx0XHRhcnJheVVuaXF1ZSAoYXJyLCBuYW1lKSB7XG5cdFx0XHRcdHZhciBoYXNoID0ge307XG5cdFx0XHRcdHJldHVybiBhcnIucmVkdWNlKGZ1bmN0aW9uIChpdGVtLCBuZXh0KSB7XG5cdFx0XHRcdFx0aGFzaFtuZXh0W25hbWVdXVxuXHRcdFx0XHRcdFx0PyBcIlwiXG5cdFx0XHRcdFx0XHQ6IChoYXNoW25leHRbbmFtZV1dID0gdHJ1ZSAmJiBpdGVtLnB1c2gobmV4dCkpO1xuXHRcdFx0XHRcdHJldHVybiBpdGVtO1xuXHRcdFx0XHR9LCBbXSk7XG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgZ2V0Q2hhdExpc3QodHlwZSl7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2cgfSA9IGF3YWl0IHRoaXMuJGFwaS5maW5kQ2hhdExpc3Qoe1xuXHRcdFx0XHRcdGxpbWl0OiAxMCwgXG5cdFx0XHRcdFx0cGFnZTogdGhpcy5wYWdlLFxuXHRcdFx0XHRcdGZvcm1Vc2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRcdHRvVXNlcklkOiB0aGlzLmlkfSk7XG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHR0aGlzLnRvdGFsPSBkYXRhLnRvdGFsO1xuXHRcdFx0XHRcdGlmKHR5cGUgPT0gMSl7XG5cdFx0XHRcdFx0XHR0aGlzLmNoYXRMaXN0PSB0aGF0LmFycmF5VW5pcXVlKFsuLi5kYXRhLmxpc3QsLi4udGhpcy5jaGF0TGlzdF0sJ21zZ0lkJyk7XG5cdFx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0XHR0aGlzLmNoYXRMaXN0PSBkYXRhLmxpc3Rcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYodHlwZSA9PSAxKXtcblx0XHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdGxldCB3cmFwcGVyID0gdW5pLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKS5pbih0aGlzKS5zZWxlY3QoJyN3cmFwcGVyJyk7XG5cdFx0XHRcdFx0XHR3cmFwcGVyLmZpZWxkcyh7XG5cdFx0XHRcdFx0XHRcdHNpemU6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHNjcm9sbE9mZnNldDogdHJ1ZVxuXHRcdFx0XHRcdFx0fSwgZGF0YSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwid3JhcHBlclwiLGRhdGEpXG5cdFx0XHRcdFx0XHRcdHRoYXQud3JhcHBlclNjcm9sbEhlaWdodCA9IGRhdGEuc2Nyb2xsSGVpZ2h0KjZcblx0XHRcdFx0XHRcdH0pLmV4ZWMoKVxuXHRcdFx0XHRcdFx0Ly8gO1xuXHRcdFx0XHRcdH0sMTAwKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgZ2V0VXNlckluZm8oKSB7XG5cdFx0XHRcdGNvbnN0IHsgY29kZSwgZGF0YSAsIG1zZyB9ID0gYXdhaXQgdGhpcy4kYXBpLmZpbmRPdGhlclVzZXJJbmZvKHt1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLHNlbGxlcklkOiB0aGlzLmlkLH0pO1xuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dGhpcy51c2VySW5mbyA9IGRhdGE7XG5cdFx0XHRcdFx0dGhpcy51c2VySW5mby54aWFuZ2NlID0gW107XG5cdFx0XHRcdFx0aWYoZGF0YS5yZXNlcnZlZDEpe1xuXHRcdFx0XHRcdFx0dGhpcy51c2VySW5mby54aWFuZ2NlID0gZGF0YS5yZXNlcnZlZDEuc3BsaXQoXCIsXCIpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuaXRlbUxpc3QgPSBbXCLmn6XnnItUQeeahOS4u+mhtVwiLCAoZGF0YS5pc0NhcmUgPT0gMD9cIuWFs+azqFwiOlwi5Y+W5raI5YWz5rOoXCIpLCBcIuS4vuaKpVwiLCAoZGF0YS5pc0JsYWNrID09IDA/XCLliqDlhaXpu5HlkI3ljZVcIjpcIuenu+mZpOm7keWQjeWNlVwiKV07XG5cdFx0XHRcdFx0dGhpcy50aXRsZSA9IGRhdGEubmlja25hbWUrKGRhdGEuaXNPbmxpbmUgPT0gMT9cIl8o5Zyo57q/KVwiOlwiXyjnprvnur8pXCIpO1xuXHRcdFx0XHRcdGlmKGRhdGEub3BlcnJvbGUgPT0gMCl7XG5cdFx0XHRcdFx0XHR0aGlzLmdldENvbmZpZ0RhdGEoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IG1zZyxcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdFxuXHRcdFx0Ly/lrZflhbjmn6Xor6Jcblx0XHRcdGFzeW5jIGdldENvbmZpZ0RhdGEoKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHRsZXQgcmVzMSA9IGF3YWl0IHRoYXQuJGFwaS5nZXRDb25maWdEYXRhKHtkaWN0VHlwZTogJ0NPTkZJR19NRVNTQUdFX05PVElDRSd9KTtcblx0XHRcdFx0dGhhdC5saXN0ID0gW3JlczEuZGF0YS5jb250ZW50XVxuXHRcdFx0fSxcblx0XHRcdC8v5piv5ZCm5YWz5rOoXG5cdFx0XHRhc3luYyB0b0NhcmVPckNhbmNlbCgpIHtcblx0XHRcdFx0Y29uc3QgeyBjb2RlLCBkYXRhICwgbXNnIH0gPSBhd2FpdCB0aGlzLiRhcGkuY2FyZU9yQ2FuY2VsKHtcblx0XHRcdFx0XHR1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRcdHNlbGxlcklkOiB0aGlzLmlkLFxuXHRcdFx0XHRcdHR5cGU6IHRoaXMudXNlckluZm8uaXNDYXJlID09IDA/MToyXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogdGhpcy51c2VySW5mby5pc0NhcmUgPT0gMD9cIuWFs+azqOaIkOWKn1wiOlwi5Y+W5raI5YWz5rOoXCJcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdHRoaXMuZ2V0VXNlckluZm8oMSlcblx0XHRcdFx0XHR9LDIwMDApXG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IG1zZyxcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8v5piv5ZCm5Yqg5YWl6buR5ZCN5Y2VXG5cdFx0XHRhc3luYyB0b1lpY2h1KCkge1xuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgfSA9IGF3YWl0IHRoaXMuJGFwaS5hZGRPclJlbW92ZUJsYWNrbGlzdCh7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0XHRzZWxsZXJJZDogdGhpcy5pZCxcblx0XHRcdFx0XHR0eXBlOiB0aGlzLnVzZXJJbmZvLmlzQmxhY2sgPT0gMD8xOjJcblx0XHRcdFx0fSlcblx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6dGhpcy51c2VySW5mby5pc0JsYWNrID09IDE/XCLnp7vpmaTmiJDlip9cIjpcIuWKoOWFpeaIkOWKn1wiXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0XHR0aGlzLmdldEluZm8oKTtcblx0XHRcdFx0XHR9LDIwMDApXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRcblx0XHRcdC8v6KeG6aKR6K+t6Z+z6K+05piOXG5cdFx0XHRhc3luYyBvcGVuU2hpcGluZygpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdGNvbnN0IHtjb2RlLCBkYXRhIH0gPSBhd2FpdCB0aGF0LiRhcGkuY29zdERlc2NyaXB0aW9uKHt9KTtcblx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdHVuaS5zaG93QWN0aW9uU2hlZXQoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6K+t6Z+zL+inhumikemAmuivnVwiLFxuXHRcdFx0XHRcdFx0aXRlbUxpc3Q6IFtcIuivremfs+mAmuivne+8iFwiK2RhdGEudm9pY2VDb2lucytcIumHkeW4gS8x5YiG6ZKf77yJXCIsXCLop4bpopHpgJror53vvIhcIitkYXRhLnZpZGVvQ29pbnMrXCLph5HluIEvMeWIhumSn++8iVwiXSxcblx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzKXtcblx0XHRcdFx0XHRcdFx0aWYocmVzLnRhcEluZGV4ID09IDApe1xuXHRcdFx0XHRcdFx0XHRcdGlmKHRoYXQudXNlckluZm8uaXNPbmxpbmUgPT0gMCl7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35bey56a757q/XCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LmJhbGFuY2VJbmZvLnVzZXJCYWxhbmNlIDw9IDApe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzQ29pbnM9dHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pc1RvZ2dsZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pc09wZW4gPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzQmlhb3FpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2VuZFNvY2tldE1lc3NhZ2Uoe2RhdGE6SlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XCJ1c2VySWRcIjogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxsZXJJZDogdGhhdC5pZCxcblx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6IDE4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XCJ0b3BpY1wiOlwibWVzc2FnZVwiXG5cdFx0XHRcdFx0XHRcdFx0fSl9KVxuXHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGlwZWkvc2hpcGluL2RldGFpbD90eXBlPTMmaWQ9XCIrdGhhdC5pZFxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH1lbHNlIGlmKHJlcy50YXBJbmRleCA9PSAxKXtcblx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzT25saW5lID09IDApe1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+W3suemu+e6v1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+aYr+m7keWQjeWNle+8jOW3sumZkOWItlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuc2V4ID09IDEpe1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYodGhhdC5iYWxhbmNlSW5mby51c2VyQmFsYW5jZSA8PSAwKXtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5pc0NvaW5zPXRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNUb2dnbGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNPcGVuID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pc0JpYW9xaW5nID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNlbmRTb2NrZXRNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0XHRcdFx0XHRcdFwidXNlcklkXCI6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VsbGVySWQ6IHRoYXQuaWQsIFxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogMTksXG5cdFx0XHRcdFx0XHRcdFx0XHRcInRvcGljXCI6XCJtZXNzYWdlXCJcblx0XHRcdFx0XHRcdFx0XHR9KX0pXG5cdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9waXBlaS9zaGlwaW4vZGV0YWlsP3R5cGU9NCZpZD1cIit0aGF0LmlkXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHR9LFxuXHRcdFx0dG9TaGVldDEoKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR0aGF0LmdldGNvc3REZXNjcmlwdGlvbigpO1xuXHRcdFx0XHRcblx0XHRcdH0sXG5cdFx0XHR0b1NoZWV0KCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0dW5pLnNob3dBY3Rpb25TaGVldCh7XG5cdFx0XHRcdFx0aXRlbUxpc3Q6IHRoaXMuaXRlbUxpc3QsXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXMpe1xuXHRcdFx0XHRcdFx0aWYocmVzLnRhcEluZGV4ID09IDApe1xuXHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9wZWl3YW4vZGV0YWlsP2lkPVwiK3RoYXQuaWRcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1lbHNlIGlmKHJlcy50YXBJbmRleCA9PSAxKXtcblx0XHRcdFx0XHRcdFx0dGhhdC50b0NhcmVPckNhbmNlbCgpXG5cdFx0XHRcdFx0XHR9ZWxzZSBpZihyZXMudGFwSW5kZXggPT0gMil7XG5cdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3VzZXJzL2ZlZWRiYWNrL2luZGV4P3R5cGU9MiZpZD1cIit0aGF0LmlkXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9ZWxzZSBpZihyZXMudGFwSW5kZXggPT0gMyl7XG5cdFx0XHRcdFx0XHRcdHRoYXQudG9ZaWNodSgpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdGlucHV0VmFsdWUoZSkge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlKVxuXHRcdFx0fSxcblx0XHR9LFxuXHRcdGRlc3Ryb3llZCgpIHtcblx0XHRcdHVuaS4kb2ZmKFwidG9DaGF0T2JqXCIpXG5cdFx0fVxuXHR9XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///67\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 68));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/js_sdk/wa-permission/permission.js */ 74));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar systemInfoSync = uni.getSystemInfoSync();\nvar recorderManager = uni.getRecorderManager();\nvar innerAudioContext = uni.createInnerAudioContext();\ninnerAudioContext.autoplay = true;\nvar timer = 0;\nvar _default = {\n data: function data() {\n return {\n showType: 1,\n //1xiangce 2录音\n isSvga: false,\n canvasId: 'myCanvas',\n svgaSrcList: [],\n svgaSrc: \"https://api.lyiyuan.cn/profile/upload/2024/11/05/9284d0797a991ef130d9b06759ef9b30.svga\",\n isPlay1: false,\n videoUrl: \"\",\n wrapperScrollHeight: 0,\n tabIndex: 0,\n id: \"\",\n current: 1,\n show1: false,\n show2: false,\n isCoins: false,\n isToggle: true,\n isOpen: false,\n title: \"\",\n content: \"\",\n userInfo: {},\n list: [],\n itemList: [],\n chatList: [],\n userId: \"\",\n img: \"\",\n show: false,\n isPlay: true,\n count: 0,\n balanceInfo: {},\n num: 1,\n giftList: [],\n giftListNum: 1,\n statusBarHeight: 0,\n wrapperHeight: 0,\n total: 0,\n page: 1,\n editorCtx: \"\",\n isBiaoqing: false,\n winWidth: 1,\n winHeight: 1\n };\n },\n onLoad: function onLoad(o) {\n this.statusBarHeight = systemInfoSync.statusBarHeight;\n this.userId = uni.getStorageSync(\"userInfo\").id;\n this.id = o.id;\n this.winWidth = uni.getSystemInfoSync().windowWidth;\n this.winHeight = uni.getSystemInfoSync().windowHeight;\n this.getUserInfo();\n this.getChatList();\n this.userBalance();\n this.getGift();\n },\n onReady: function onReady() {\n var that = this;\n recorderManager.onStop(function (res) {\n that.uploadAudio(res.tempFilePath);\n clearInterval(timer);\n that.isPlay = true;\n });\n innerAudioContext.onEnded(function (res) {\n that.isPlay = false;\n });\n that.watchSocket();\n },\n methods: {\n onLoaded: function onLoaded() {\n // console.log(\"加载完了\")\n // this.$refs.cSvgaRef.call(\"startAnimation\")\n },\n onFinished: function onFinished() {\n this.isSvga = false;\n this.svgaSrc = \"\";\n // console.log(\"播放完了\")\n },\n toToggle1: function toToggle1() {\n this.isPlay1 = !this.isPlay1;\n if (this.isPlay1) {\n innerAudioContext.src = this.userInfo.voice;\n innerAudioContext.play();\n } else {\n innerAudioContext.pause();\n }\n },\n perviewImages: function perviewImages(url) {\n uni.previewImage({\n urls: this.userInfo.xiangce,\n count: url\n });\n },\n perviewImage: function perviewImage(url) {\n uni.previewImage({\n urls: [url]\n });\n },\n toClick: function toClick(idx) {\n this.editorCtx.insertImage({\n src: 'https://api.lyiyuan.cn/profile/upload/static/face/' + idx + '.gif',\n with: 30,\n height: 30,\n success: function success() {}\n });\n },\n imMessageInput: function imMessageInput(e) {\n __f__(\"log\", e, \" at pages/users/chat/index.vue:308\");\n this.content = e.detail.html.replace(/= 8) {\n if (uni.getStorageSync(\"userInfo\").id == obj.sellerId) {\n if (obj.type == 10) {\n setTimeout(function () {\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=2&id=\" + that.id\n });\n }, 500);\n }\n if (obj.type == 18) {\n if (obj.userMsgVoice == 1) {\n uni.$emit(\"playAudio\");\n }\n if (obj.userMsgShock == 1) {\n uni.vibrateLong({\n complete: function complete(res) {\n __f__(\"log\", 'success', res, \" at pages/users/chat/index.vue:375\");\n }\n });\n }\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=3&id=\" + obj.userId + '&fid=' + obj.sellerId\n });\n }\n if (obj.type == 19) {\n if (obj.userMsgVoice == 1) {\n uni.$emit(\"playAudio\");\n }\n if (obj.userMsgShock == 1) {\n uni.vibrateLong({\n complete: function complete(res) {\n __f__(\"log\", 'success', res, \" at pages/users/chat/index.vue:390\");\n }\n });\n }\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=4&id=\" + obj.userId + '&fid=' + obj.sellerId\n });\n }\n }\n }\n }\n });\n },\n toBiaoqing: function toBiaoqing(type) {\n if (type == 1) {\n this.isBiaoqing = false;\n this.isOpen = !this.isOpen;\n } else {\n this.isOpen = false;\n this.isBiaoqing = !this.isBiaoqing;\n }\n },\n scrolltoupper: function scrolltoupper(e) {\n if (this.chatList.length <= this.total) {\n this.page++;\n this.getChatList(1);\n }\n },\n toAudio: function toAudio(url) {\n innerAudioContext.src = url;\n innerAudioContext.play();\n },\n toPlay: function toPlay(url) {\n this.show2 = true;\n this.videoUrl = url;\n },\n // 将px转换为rpx\n pxToRpx: function pxToRpx(px) {\n return px * 750 / systemInfoSync.windowWidth;\n },\n //发送得内容,type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n giftGiving: function giftGiving() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.$api.giftGiving({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n //用户ID\n \"acceptUserId\": _this.id,\n //被送礼之人ID\n \"giftId\": _this.giftList[_this.tabIndex].id,\n //礼物ID\n \"num\": _this.num //礼物数量\n });\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n toZengsong: function toZengsong() {\n var that = this;\n if (this.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (this.balanceInfo.isBlack >= this.giftList[this.tabIndex].price * that.num) {\n that.isCoins = true;\n return;\n }\n that.img = this.giftList[this.tabIndex].id;\n that.count = that.num;\n that.toSend(5);\n },\n tabItem: function tabItem(index) {\n this.tabIndex = index;\n },\n getGift: function getGift() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var _yield$_this2$$api$gi, code, data;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.$api.giftList({\n userId: uni.getStorageSync(\"userInfo\").id,\n limit: 999,\n page: 1\n });\n case 2:\n _yield$_this2$$api$gi = _context2.sent;\n code = _yield$_this2$$api$gi.code;\n data = _yield$_this2$$api$gi.data;\n if (code == 200) {\n _this2.giftList = data.list;\n _this2.giftListNum = Math.ceil(data.total / 8);\n }\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n closeGift: function closeGift() {\n this.show1 = false;\n this.isOpen = false;\n this.isBiaoqing = false;\n },\n openGift: function openGift() {\n if (this.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n this.show1 = true;\n this.isOpen = false;\n this.isBiaoqing = false;\n },\n changeswiper: function changeswiper(e) {\n this.current = e.detail.current;\n },\n toEnd: function toEnd() {\n recorderManager.stop();\n },\n toToggle: function toToggle() {\n var that = this;\n this.isToggle = !this.isToggle;\n this.isOpen = false;\n },\n //检查次数\n userBalance: function userBalance() {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _yield$_this3$$api$us, code, data;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this3.$api.userBalance({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this3$$api$us = _context3.sent;\n code = _yield$_this3$$api$us.code;\n data = _yield$_this3$$api$us.data;\n if (code == 200) {\n _this3.balanceInfo = data;\n /***\n \"videoCoins\": 0, //视频可用时长:分钟\n \"wordVoiceDiscount\": 0, //语音视频文字折扣:0表示不打折\n \"voiceCoins\": 0, //语音可用时长:分钟\n \"wordCoins\": 0, //文字可发数量\n \"userBalance\": 1 //当前用户金币余额\n */\n }\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n //结算 type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n socialConsumption: function socialConsumption(type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _this4.$api.socialConsumption({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this4.id,\n type: type == 1 || type == 2 || type == 3 ? 3 : type,\n duration: \"\"\n });\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n toOpen: function toOpen() {\n var that = this;\n //{\"userId\":\"123\",\"sellerId\":\"4575676878\",\"type\":3} 发送得内容,type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n // console.log(111)\n // console.log(JSON.stringify({\"userId\": uni.getStorageSync(\"userInfo\").id,sellerId:this.id, type:3,\"topic\":\"message\"}))\n // uni.sendSocketMessage({data:JSON.stringify({\"userId\": uni.getStorageSync(\"userInfo\").id,sellerId:this.id, type:3,\"topic\":\"message\"})});\n\n // return ;\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.RECORD_AUDIO', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n that.showType = 2;\n } else {\n that.show = false;\n that.showType = 1;\n that.toLuyin();\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/users/chat/index.vue:549\");\n });\n that.requestAndroidPermission('android.permission.RECORD_AUDIO');\n return;\n }\n that.toLuyin();\n },\n toLuyin: function toLuyin() {\n var that = this;\n clearInterval(timer);\n that.isPlay = false;\n timer = setInterval(function () {\n that.count++;\n }, 1000);\n recorderManager.start({\n format: \"mp3\"\n });\n },\n recorderAuthModal: function recorderAuthModal() {\n var that = this;\n uni.showModal({\n title: '温馨提示',\n content: '为了麦克风的功能,我们需要申请麦克风权限,请您确认授权,否则无法使用该功能~',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n recorderAuthModal1: function recorderAuthModal1() {\n var that = this;\n uni.showModal({\n title: '温馨提示',\n content: '为了提供图片/视频上传的功能,我们需要申请相机/存储权限,请您确认授权,否则无法使用该功能~',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n requestAndroidPermission: function requestAndroidPermission(permisionID) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var that, result;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n that = _this5;\n _context5.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context5.sent;\n if (result != 1) {\n that.recorderAuthModal();\n } else {\n that.show = false;\n }\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n //上传语音\n uploadAudio: function uploadAudio(filePath) {\n var that = this;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.wordCoins <= 0) {\n that.isCoins = true;\n return;\n }\n }\n uni.uploadFile({\n name: 'file',\n url: that.$baseUrl + '/prod-api/common/upload',\n filePath: filePath,\n success: function success(res) {\n var _JSON$parse = JSON.parse(res.data),\n code = _JSON$parse.code,\n fileName = _JSON$parse.fileName,\n url = _JSON$parse.url,\n msg = _JSON$parse.msg;\n if (code == 200) {\n that.img = url;\n that.toSend(1);\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at pages/users/chat/index.vue:636\");\n }\n });\n },\n //上传视频\n uploadVideo: function uploadVideo() {\n var _this6 = this;\n var that = this;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n uni.chooseVideo({\n count: 1,\n sourceType: [\"album\", \"camera\"],\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/users/chat/index.vue:655\");\n that.count = res1.duration;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.wordCoins <= 0) {\n that.isCoins = true;\n return;\n }\n }\n uni.uploadFile({\n name: 'file',\n url: that.$baseUrl + '/prod-api/common/upload',\n filePath: res1.tempFilePath,\n success: function success(res) {\n var _JSON$parse2 = JSON.parse(res.data),\n code = _JSON$parse2.code,\n fileName = _JSON$parse2.fileName,\n url = _JSON$parse2.url,\n msg = _JSON$parse2.msg;\n if (code == 200) {\n that.img = url;\n _this6.toSend(2);\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at pages/users/chat/index.vue:683\");\n }\n });\n },\n fail: function fail(err) {\n __f__(\"log\", \"fail\", err, \" at pages/users/chat/index.vue:688\");\n }\n });\n },\n //\n chooseAvatar: function chooseAvatar(index) {\n var that = this;\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.WRITE_EXTERNAL_STORAGE', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n that.showType = 1;\n } else {\n that.show = false;\n that.showType = 1;\n if (index == 1) {\n that.uploadImg();\n } else {\n that.uploadVideo();\n }\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/users/chat/index.vue:714\");\n });\n that.requestAndroidPermission1('android.permission.WRITE_EXTERNAL_STORAGE', index);\n return;\n }\n if (index == 1) {\n that.uploadImg();\n } else {\n that.uploadVideo();\n }\n },\n requestAndroidPermission1: function requestAndroidPermission1(permisionID, index) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var that, result;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n that = _this7;\n _context6.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context6.sent;\n if (result != 1) {\n that.recorderAuthModal1();\n } else {\n if (index == 1) {\n that.uploadImg();\n } else {\n that.uploadVideo();\n }\n }\n case 5:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n //上传图片\n uploadImg: function uploadImg() {\n var that = this;\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n uni.chooseImage({\n count: 1,\n //可以指定是原图还是压缩图,默认二者都有\n sourceType: [\"album\", \"camera\"],\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/users/chat/index.vue:754\");\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.wordCoins <= 0) {\n that.isCoins = true;\n return;\n }\n }\n uni.uploadFile({\n name: 'file',\n url: that.$baseUrl + '/prod-api/common/upload',\n filePath: res1.tempFilePaths[0],\n success: function success(res) {\n //1.语音 2.视频 3.文字 4图片 5礼物\n var _JSON$parse3 = JSON.parse(res.data),\n code = _JSON$parse3.code,\n fileName = _JSON$parse3.fileName,\n url = _JSON$parse3.url,\n msg = _JSON$parse3.msg;\n if (code == 200) {\n that.img = url;\n that.toSend(4);\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at pages/users/chat/index.vue:782\");\n }\n });\n },\n fail: function fail(err) {\n __f__(\"log\", \"fail\", err, \" at pages/users/chat/index.vue:787\");\n }\n });\n },\n toSelect: function toSelect(msg) {\n this.content = msg;\n this.toSend(3);\n },\n // 发送得内容,type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n toSend: function toSend(type) {\n var _this8 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n var that, svgaSrc, _yield$_this8$$api$ch, code, data, _svgaSrc;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n that = _this8;\n if (!(type == 3)) {\n _context7.next = 9;\n break;\n }\n if (!(that.userInfo.isBlack == 1)) {\n _context7.next = 5;\n break;\n }\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return _context7.abrupt(\"return\");\n case 5:\n if (!(uni.getStorageSync(\"userInfo\").sex == 1)) {\n _context7.next = 9;\n break;\n }\n if (!(that.balanceInfo.wordCoins <= 1)) {\n _context7.next = 9;\n break;\n }\n that.isCoins = true;\n return _context7.abrupt(\"return\");\n case 9:\n svgaSrc = null;\n if (that.giftList && that.giftList.length > 0) {\n svgaSrc = that.giftList[that.tabIndex].specialEffects;\n }\n // console.log(that.svgaSrc)\n // console.log(svgaSrc)\n // that.svgaSrc = svgaSrc\n // that.isSvga = true;\n // return ;\n _context7.next = 13;\n return _this8.$api.chat({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: type,\n num: type == 5 ? that.count : that.count + 1,\n message: type == 3 ? that.content : that.img\n });\n case 13:\n _yield$_this8$$api$ch = _context7.sent;\n code = _yield$_this8$$api$ch.code;\n data = _yield$_this8$$api$ch.data;\n if (code == 200) {\n _svgaSrc = null;\n if (type == 5) {\n if (that.giftList && that.giftList.length > 0) {\n _svgaSrc = that.giftList[that.tabIndex].specialEffects;\n that.svgaSrc = _svgaSrc;\n that.isSvga = true;\n // if(that.svgaSrc == svgaSrc){\n // \tconsole.log(33333,that.svgaSrc == svgaSrc,that.svgaSrc, svgaSrc)\n // \tthat.isSvga = true;\n // \tthat.$refs.cSvgaRef.call(\"startAnimation\")\n // }else{\n // \tconsole.log(4444,that.svgaSrc == svgaSrc,that.svgaSrc, svgaSrc)\n // \tthat.svgaSrc = svgaSrc\n // \tthat.isSvga = true;\n // }\n }\n\n that.giftGiving();\n }\n uni.sendSocketMessage({\n data: JSON.stringify({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: type,\n num: that.count + 1,\n message: type == 3 ? that.content : that.img,\n svgaSrc: _svgaSrc ? _svgaSrc : '',\n \"topic\": \"message\"\n })\n });\n that.socialConsumption(type);\n that.isOpen = false;\n that.isBiaoqing = false;\n that.show1 = false;\n that.userBalance();\n that.editorCtx.clear();\n that.content = \"\";\n that.count = 0;\n that.num = 1;\n }\n case 17:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }))();\n },\n //数组对象去重\n arrayUnique: function arrayUnique(arr, name) {\n var hash = {};\n return arr.reduce(function (item, next) {\n hash[next[name]] ? \"\" : hash[next[name]] = true && item.push(next);\n return item;\n }, []);\n },\n getChatList: function getChatList(type) {\n var _this9 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var that, _yield$_this9$$api$fi, code, data, msg;\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n that = _this9;\n _context8.next = 3;\n return _this9.$api.findChatList({\n limit: 10,\n page: _this9.page,\n formUserId: uni.getStorageSync(\"userInfo\").id,\n toUserId: _this9.id\n });\n case 3:\n _yield$_this9$$api$fi = _context8.sent;\n code = _yield$_this9$$api$fi.code;\n data = _yield$_this9$$api$fi.data;\n msg = _yield$_this9$$api$fi.msg;\n if (!(code == 200)) {\n _context8.next = 13;\n break;\n }\n _this9.total = data.total;\n if (type == 1) {\n _this9.chatList = that.arrayUnique([].concat((0, _toConsumableArray2.default)(data.list), (0, _toConsumableArray2.default)(_this9.chatList)), 'msgId');\n } else {\n _this9.chatList = data.list;\n }\n if (!(type == 1)) {\n _context8.next = 12;\n break;\n }\n return _context8.abrupt(\"return\");\n case 12:\n setTimeout(function () {\n var wrapper = uni.createSelectorQuery().in(_this9).select('#wrapper');\n wrapper.fields({\n size: true,\n scrollOffset: true\n }, function (data) {\n // console.log(\"wrapper\",data)\n that.wrapperScrollHeight = data.scrollHeight * 6;\n }).exec();\n // ;\n }, 100);\n case 13:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }))();\n },\n getUserInfo: function getUserInfo() {\n var _this10 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n var _yield$_this10$$api$f, code, data, msg;\n return _regenerator.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return _this10.$api.findOtherUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this10.id\n });\n case 2:\n _yield$_this10$$api$f = _context9.sent;\n code = _yield$_this10$$api$f.code;\n data = _yield$_this10$$api$f.data;\n msg = _yield$_this10$$api$f.msg;\n if (code == 200) {\n _this10.userInfo = data;\n _this10.userInfo.xiangce = [];\n if (data.reserved1) {\n _this10.userInfo.xiangce = data.reserved1.split(\",\");\n }\n _this10.itemList = [\"查看TA的主页\", data.isCare == 0 ? \"关注\" : \"取消关注\", \"举报\", data.isBlack == 0 ? \"加入黑名单\" : \"移除黑名单\"];\n _this10.title = data.nickname + (data.isOnline == 1 ? \"_(在线)\" : \"_(离线)\");\n if (data.operrole == 0) {\n _this10.getConfigData();\n }\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }))();\n },\n //字典查询\n getConfigData: function getConfigData() {\n var _this11 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n var that, res1;\n return _regenerator.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n that = _this11;\n _context10.next = 3;\n return that.$api.getConfigData({\n dictType: 'CONFIG_MESSAGE_NOTICE'\n });\n case 3:\n res1 = _context10.sent;\n that.list = [res1.data.content];\n case 5:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n }))();\n },\n //是否关注\n toCareOrCancel: function toCareOrCancel() {\n var _this12 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var _yield$_this12$$api$c, code, data, msg;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return _this12.$api.careOrCancel({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this12.id,\n type: _this12.userInfo.isCare == 0 ? 1 : 2\n });\n case 2:\n _yield$_this12$$api$c = _context11.sent;\n code = _yield$_this12$$api$c.code;\n data = _yield$_this12$$api$c.data;\n msg = _yield$_this12$$api$c.msg;\n if (code == 200) {\n uni.showToast({\n title: _this12.userInfo.isCare == 0 ? \"关注成功\" : \"取消关注\"\n });\n setTimeout(function () {\n _this12.getUserInfo(1);\n }, 2000);\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11);\n }))();\n },\n //是否加入黑名单\n toYichu: function toYichu() {\n var _this13 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {\n var _yield$_this13$$api$a, code, data;\n return _regenerator.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return _this13.$api.addOrRemoveBlacklist({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this13.id,\n type: _this13.userInfo.isBlack == 0 ? 1 : 2\n });\n case 2:\n _yield$_this13$$api$a = _context12.sent;\n code = _yield$_this13$$api$a.code;\n data = _yield$_this13$$api$a.data;\n if (code == 200) {\n uni.showToast({\n title: _this13.userInfo.isBlack == 1 ? \"移除成功\" : \"加入成功\"\n });\n setTimeout(function () {\n _this13.getInfo();\n }, 2000);\n }\n case 6:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12);\n }))();\n },\n //视频语音说明\n openShiping: function openShiping() {\n var _this14 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {\n var that, _yield$that$$api$cost, code, data;\n return _regenerator.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n that = _this14;\n _context13.next = 3;\n return that.$api.costDescription({});\n case 3:\n _yield$that$$api$cost = _context13.sent;\n code = _yield$that$$api$cost.code;\n data = _yield$that$$api$cost.data;\n if (code == 200) {\n uni.showActionSheet({\n title: \"语音/视频通话\",\n itemList: [\"语音通话(\" + data.voiceCoins + \"金币/1分钟)\", \"视频通话(\" + data.videoCoins + \"金币/1分钟)\"],\n success: function success(res) {\n if (res.tapIndex == 0) {\n if (that.userInfo.isOnline == 0) {\n uni.showToast({\n title: \"当前用户已离线\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.userBalance <= 0) {\n that.isCoins = true;\n return;\n }\n }\n that.isToggle = true;\n that.isOpen = false;\n that.isBiaoqing = false;\n uni.sendSocketMessage({\n data: JSON.stringify({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: 18,\n \"topic\": \"message\"\n })\n });\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=3&id=\" + that.id\n });\n } else if (res.tapIndex == 1) {\n if (that.userInfo.isOnline == 0) {\n uni.showToast({\n title: \"当前用户已离线\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (that.userInfo.isBlack == 1) {\n uni.showToast({\n title: \"当前用户是黑名单,已限制\",\n position: \"bottom\",\n icon: \"none\"\n });\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.balanceInfo.userBalance <= 0) {\n that.isCoins = true;\n return;\n }\n }\n that.isToggle = true;\n that.isOpen = false;\n that.isBiaoqing = false;\n uni.sendSocketMessage({\n data: JSON.stringify({\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: that.id,\n type: 19,\n \"topic\": \"message\"\n })\n });\n uni.navigateTo({\n url: \"/pages/pipei/shipin/detail?type=4&id=\" + that.id\n });\n }\n }\n });\n }\n case 7:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13);\n }))();\n },\n toSheet1: function toSheet1() {\n var that = this;\n that.getcostDescription();\n },\n toSheet: function toSheet() {\n var that = this;\n uni.showActionSheet({\n itemList: this.itemList,\n success: function success(res) {\n if (res.tapIndex == 0) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + that.id\n });\n } else if (res.tapIndex == 1) {\n that.toCareOrCancel();\n } else if (res.tapIndex == 2) {\n uni.navigateTo({\n url: \"/pages/users/feedback/index?type=2&id=\" + that.id\n });\n } else if (res.tapIndex == 3) {\n that.toYichu();\n }\n }\n });\n },\n inputValue: function inputValue(e) {\n // console.log(e)\n }\n },\n destroyed: function destroyed() {\n uni.$off(\"toChatObj\");\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdXNlcnMvY2hhdC9pbmRleC52dWUiXSwibmFtZXMiOlsiaW5uZXJBdWRpb0NvbnRleHQiLCJkYXRhIiwic2hvd1R5cGUiLCJpc1N2Z2EiLCJjYW52YXNJZCIsInN2Z2FTcmNMaXN0Iiwic3ZnYVNyYyIsImlzUGxheTEiLCJ2aWRlb1VybCIsIndyYXBwZXJTY3JvbGxIZWlnaHQiLCJ0YWJJbmRleCIsImlkIiwiY3VycmVudCIsInNob3cxIiwic2hvdzIiLCJpc0NvaW5zIiwiaXNUb2dnbGUiLCJpc09wZW4iLCJ0aXRsZSIsImNvbnRlbnQiLCJ1c2VySW5mbyIsImxpc3QiLCJpdGVtTGlzdCIsImNoYXRMaXN0IiwidXNlcklkIiwiaW1nIiwic2hvdyIsImlzUGxheSIsImNvdW50IiwiYmFsYW5jZUluZm8iLCJudW0iLCJnaWZ0TGlzdCIsImdpZnRMaXN0TnVtIiwic3RhdHVzQmFySGVpZ2h0Iiwid3JhcHBlckhlaWdodCIsInRvdGFsIiwicGFnZSIsImVkaXRvckN0eCIsImlzQmlhb3FpbmciLCJ3aW5XaWR0aCIsIndpbkhlaWdodCIsIm9uTG9hZCIsIm9uUmVhZHkiLCJyZWNvcmRlck1hbmFnZXIiLCJ0aGF0IiwiY2xlYXJJbnRlcnZhbCIsIm1ldGhvZHMiLCJvbkxvYWRlZCIsIm9uRmluaXNoZWQiLCJ0b1RvZ2dsZTEiLCJwZXJ2aWV3SW1hZ2VzIiwidW5pIiwidXJscyIsInBlcnZpZXdJbWFnZSIsInRvQ2xpY2siLCJzcmMiLCJ3aXRoIiwiaGVpZ2h0Iiwic3VjY2VzcyIsImltTWVzc2FnZUlucHV0Iiwib25FZGl0b3JSZWFkeSIsIndhdGNoU29ja2V0Iiwic2V0VGltZW91dCIsInVybCIsImNvbXBsZXRlIiwidG9CaWFvcWluZyIsInNjcm9sbHRvdXBwZXIiLCJ0b0F1ZGlvIiwidG9QbGF5IiwicHhUb1JweCIsImdpZnRHaXZpbmciLCJ0b1plbmdzb25nIiwicG9zaXRpb24iLCJpY29uIiwidGFiSXRlbSIsImdldEdpZnQiLCJsaW1pdCIsImNvZGUiLCJjbG9zZUdpZnQiLCJvcGVuR2lmdCIsImNoYW5nZXN3aXBlciIsInRvRW5kIiwidG9Ub2dnbGUiLCJ1c2VyQmFsYW5jZSIsInNvY2lhbENvbnN1bXB0aW9uIiwic2VsbGVySWQiLCJ0eXBlIiwiZHVyYXRpb24iLCJ0b09wZW4iLCJwbHVzIiwidG9MdXlpbiIsInRpbWVyIiwiZm9ybWF0IiwicmVjb3JkZXJBdXRoTW9kYWwiLCJjYW5jZWxUZXh0IiwiY29uZmlybVRleHQiLCJwZXJtaXNpb24iLCJyZWNvcmRlckF1dGhNb2RhbDEiLCJyZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24iLCJyZXN1bHQiLCJ1cGxvYWRBdWRpbyIsIm5hbWUiLCJmaWxlUGF0aCIsImZpbGVOYW1lIiwibXNnIiwiZmFpbCIsInVwbG9hZFZpZGVvIiwic291cmNlVHlwZSIsImNob29zZUF2YXRhciIsInJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbjEiLCJ1cGxvYWRJbWciLCJ0b1NlbGVjdCIsInRvU2VuZCIsIm1lc3NhZ2UiLCJhcnJheVVuaXF1ZSIsImhhc2giLCJnZXRDaGF0TGlzdCIsImZvcm1Vc2VySWQiLCJ0b1VzZXJJZCIsIndyYXBwZXIiLCJzaXplIiwic2Nyb2xsT2Zmc2V0IiwiZ2V0VXNlckluZm8iLCJnZXRDb25maWdEYXRhIiwiZGljdFR5cGUiLCJyZXMxIiwidG9DYXJlT3JDYW5jZWwiLCJ0b1lpY2h1Iiwib3BlblNoaXBpbmciLCJ0b1NoZWV0MSIsInRvU2hlZXQiLCJpbnB1dFZhbHVlIiwiZGVzdHJveWVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBa01BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QkFDQXNEOzRCQUNBQzswQkFDQTswQkFDQTt3QkFDQTt3QkFDQTswQkFDQXRCOzRCQUNBakM7NEJBQ0FzRDs0QkFDQUM7MEJBQ0E7MEJBQ0E7d0JBQ0E7d0JBQ0E7MEJBQ0E7NEJBQ0E3Qjs0QkFDQTswQkFDQTt3QkFDQTt3QkFDQUE7d0JBQ0FBO3dCQUNBQTt3QkFDQU87MEJBQUFsRDs0QkFDQTs0QkFDQW9GOzRCQUNBQzs0QkFDQTswQkFDQTt3QkFBQTt3QkFDQW5DOzBCQUNBWTt3QkFDQTtzQkFDQTt3QkFDQTswQkFDQVo7NEJBQ0FqQzs0QkFDQXNEOzRCQUNBQzswQkFDQTswQkFDQTt3QkFDQTt3QkFDQTswQkFDQXRCOzRCQUNBakM7NEJBQ0FzRDs0QkFDQUM7MEJBQ0E7MEJBQ0E7d0JBQ0E7d0JBQ0E7MEJBQ0E7NEJBQ0E3Qjs0QkFDQTswQkFDQTt3QkFDQTt3QkFDQUE7d0JBQ0FBO3dCQUNBQTt3QkFDQU87MEJBQUFsRDs0QkFDQTs0QkFDQW9GOzRCQUNBQzs0QkFDQTswQkFDQTt3QkFBQTt3QkFDQW5DOzBCQUNBWTt3QkFDQTtzQkFDQTtvQkFDQTtrQkFDQTtnQkFDQTtjQUFBO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUVBO0lBQ0FrRTtNQUNBO01BQ0FyRjtJQUVBO0lBQ0FzRjtNQUNBO01BQ0EvRTtRQUNBN0I7UUFDQW9DO1VBQ0E7WUFDQVA7Y0FDQVk7WUFDQTtVQUNBO1lBQ0FuQjtVQUNBO1lBQ0FPO2NBQ0FZO1lBQ0E7VUFDQTtZQUNBbkI7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBdUY7TUFDQTtJQUFBO0VBRUE7RUFDQUM7SUFDQWpGO0VBQ0E7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjY3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8dmlldyBjbGFzcz1cImNoYXRcIj5cblx0XHQ8dmlldyBjbGFzcz1cImNoYXQtbmF2YmFyXCI+XG5cdFx0XHQ8dS1uYXZiYXIgOnRpdGxlPVwidGl0bGVcIiB0aXRsZVdpZHRoPVwiNTAwXCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwic2xvdC13cmFwXCIgdi1pZj1cInVzZXJJbmZvLm9wZXJyb2xlID09IDBcIiBzbG90PVwicmlnaHRcIiBAY2xpY2s9XCJ0b1NoZWV0KClcIj5cblx0XHRcdFx0XHQ8dS1pY29uIG5hbWU9XCJtb3JlLWRvdC1maWxsXCIgY29sb3I9XCIjMDAwMDAwXCIgc2l6ZT1cIjMwXCI+PC91LWljb24+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdS1uYXZiYXI+XG5cdFx0PC92aWV3PlxyXG5cdFx0PHRlbXBsYXRlIHYtaWY9XCJ1c2VySW5mby5vcGVycm9sZSA9PSAwXCI+XG5cdFx0XHQ8dmlldyBjbGFzcz1cImNoYXQtaGRcIiB2LWlmPVwibGlzdC5sZW5ndGg+MFwiPlxuXHRcdFx0XHQ8dS1ub3RpY2UtYmFyIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgOnZvbHVtZS1pY29uPVwiZmFsc2VcIiBtb2RlPVwiaG9yaXpvbnRhbFwiIDpsaXN0PVwibGlzdFwiPjwvdS1ub3RpY2UtYmFyPlxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC90ZW1wbGF0ZT5cblx0XHQ8c2Nyb2xsLXZpZXcgaWQ9XCJ3cmFwcGVyXCIgY2xhc3M9XCJjaGF0LWJkXCJcblx0XHRcdDpjbGFzcz1cImxpc3QubGVuZ3RoPT0wPygoaXNPcGVuIHx8IGlzQmlhb3FpbmcpPydjaGF0LWJkLWFjdGl2ZTEnOidjaGF0LWJkLWFjdGl2ZScpOihpc09wZW4gfHwgaXNCaWFvcWluZz8nY2hhdC1iZC1vbic6JycpXCJcblx0XHRcdDpzY3JvbGwteT1cInRydWVcIlxuXHRcdFx0QHNjcm9sbHRvdXBwZXI9XCJzY3JvbGx0b3VwcGVyXCJcblx0XHRcdDpzY3JvbGwtd2l0aC1hbmltYXRpb249XCJ0cnVlXCJcblx0XHRcdDpzY3JvbGwtdG9wPVwid3JhcHBlclNjcm9sbEhlaWdodFwiXG5cdFx0PlxuXHRcdFx0PHZpZXcgaWQ9XCJ3cmFwcGVyMVwiPlxyXG5cdFx0XHRcdDwhLS0g5Liq5Lq65L+h5oGvIC0tPlxyXG5cdFx0XHRcdDx0ZW1wbGF0ZSB2LWlmPVwidXNlckluZm8ub3BlcnJvbGUgPT0gMFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mb1wiIHYtaWY9XCJjaGF0TGlzdC5sZW5ndGg8PSAxMFwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJoZFwiPlxyXG5cdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJhdmF0YXJcIiA6c3JjPVwidXNlckluZm8uZmFjZUltYWdlP3VzZXJJbmZvLmZhY2VJbWFnZTp1c2VySW5mby5pbWdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVzZXJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9uZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aXRsZVwiPnt7dXNlckluZm8ucmVhbG5hbWU/dXNlckluZm8ubmlja25hbWU6dXNlckluZm8ubmlja25hbWV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidmlwXCIgdi1pZj1cInVzZXJJbmZvLm1lbWJlcmZsYWc+PTFcIj5WSVB7e3VzZXJJbmZvLm1lbWJlcmZsYWd9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicGVpd2FtXCIgdi1pZj1cInVzZXJJbmZvLnJvbGUgPT0gMlwiPumZqueOqeW4iDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cInNleFwiIHYtaWY9XCJ1c2VySW5mby5zZXggPT0yXCIgc3JjPVwiQC9zdGF0aWMvcGVpd2FuLW52LnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJzZXhcIiB2LWVsc2Ugc3JjPVwiQC9zdGF0aWMvcGVpd2FuLW5hbi5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInR3b1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWdcIiB2LWlmPVwidXNlckluZm8uYWdlXCI+e3t1c2VySW5mby5hZ2V9feWygTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidGFnXCIgdi1pZj1cInVzZXJJbmZvLmhlaWdodFwiPnt7dXNlckluZm8uaGVpZ2h0fX08L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInRhZ1wiIHYtaWY9XCJ1c2VySW5mby53ZWlnaHRcIj57e3VzZXJJbmZvLndlaWdodH19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWdcIiB2LWlmPVwidXNlckluZm8ucG9zdFwiPnt7dXNlckluZm8ucG9zdH19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNcIiA6Y2xhc3M9XCJpc1BsYXkxPydjLW9uJzonJ1wiIHYtaWY9XCJ1c2VySW5mby52b2ljZVwiIEBjbGljaz1cInRvVG9nZ2xlMSgpXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7e3VzZXJJbmZvLnZvaWNlVGltZX194oCzXHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJkXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZFwiIHYtaWY9XCJ1c2VySW5mby5kZWNsYXJhdGlvblwiPlxyXG5cdFx0XHRcdFx0XHRcdCPkuqTlj4vlrqPoqIDvvJp7e3VzZXJJbmZvLmRlY2xhcmF0aW9ufX1cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImxpc3RcIiB2LWlmPVwidXNlckluZm8ueGlhbmdjZSAmJiB1c2VySW5mby54aWFuZ2NlLmxlbmd0aCA+IDBcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugdi1mb3I9XCIoYSxpKSBpbiB1c2VySW5mby54aWFuZ2NlXCIgQGNsaWNrPVwicGVydmlld0ltYWdlcyhpKVwiIDprZXk9XCJpXCIgOnNyYz1cImFcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdGVtcGxhdGU+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiIDpjbGFzcz1cImEuc2VuZFR5cGUgPT0gMT8naXRlbS1vbic6JydcIiB2LWZvcj1cIihhLGluZGV4KSBpbiBjaGF0TGlzdFwiIDprZXk9XCJpbmRleFwiPlxuXHRcdFx0XHRcdDwhLS0g5aKe5Yqg5a2X5q6177yac2VuZFR5cGUgICAx5oiR5Y+R57uZ5L2gICAy5L2g5Y+R57uZ5oiRIC0tPlxuXHRcdFx0XHRcdDx0ZW1wbGF0ZSB2LWlmPVwiYS5zZW5kVHlwZSA9PSAxXCI+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZyXCI+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiIHYtaWY9XCJhLnR5cGUgPT0gNiB8fCBhLnR5cGU9PTNcIiB2LWh0bWw9XCJhLm1lc3NhZ2VcIj48L3ZpZXc+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZ2lmdFwiIHYtaWY9XCJhLnR5cGUgPT0gNVwiPumAgeWHuuekvOeJqTxpbWFnZSBtb2RlPVwid2lkdGhGaXhcIiA6c3JjPVwiYS5tZXNzYWdlXCI+PC9pbWFnZT57e2EuZ2lmdG5hbWV9fTx0ZXh0Plh7e2EubnVtfX08L3RleHQ+PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInlpbnBpbmdcIiB2LWlmPVwiYS50eXBlID09IDFcIiBAY2xpY2s9XCJ0b0F1ZGlvKGEubWVzc2FnZSlcIj5cblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiQC9zdGF0aWMvY2hhdC0wMy5wbmdcIj48L2ltYWdlPiB7e2EubnVtfX3igJ1cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInZpZGVvXCIgdi1pZj1cImEudHlwZSA9PSAyXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIEBjbGljaz1cInRvUGxheShhLm1lc3NhZ2UpXCIgc3JjPVwiQC9zdGF0aWMvdmlkZW9fYmcucG5nXCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImltZ1wiIHYtaWY9XCJhLnR5cGUgPT0gNFwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBAY2xpY2s9XCJwZXJ2aWV3SW1hZ2UoYS5tZXNzYWdlKVwiIDpzcmM9XCJhLm1lc3NhZ2VcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZsXCI+PGltYWdlIDpzcmM9XCJhLmxlZnRGYWNlSW1hZ2U/YS5sZWZ0RmFjZUltYWdlOmEubGVmdEltZ1wiPjwvaW1hZ2U+PC92aWV3PlxuXHRcdFx0XHRcdDwvdGVtcGxhdGU+XG5cdFx0XHRcdFx0PHRlbXBsYXRlIHYtZWxzZT5cblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmxcIj48aW1hZ2UgOnNyYz1cImEubGVmdEZhY2VJbWFnZT9hLmxlZnRGYWNlSW1hZ2U6YS5sZWZ0SW1nXCI+PC9pbWFnZT48L3ZpZXc+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZyXCI+XG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibmFtZVwiPnt7YS5sZWZ0Tmlja25hbWV9fTx0ZXh0IHYtaWY9XCJhLmxlZnRSb2xlID09IDJcIj7pmarnjqnluIg8L3RleHQ+PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIiB2LWlmPVwiYS50eXBlID09IDYgfHwgYS50eXBlPT0zXCIgdi1odG1sPVwiYS5tZXNzYWdlXCI+PC92aWV3PlxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImdpZnRcIiB2LWlmPVwiYS50eXBlID09IDVcIj7pgIHlh7rnpLzniak8aW1hZ2UgbW9kZT1cIndpZHRoRml4XCIgOnNyYz1cImEubWVzc2FnZVwiPjwvaW1hZ2U+e3thLmdpZnRuYW1lfX08dGV4dD5Ye3thLm51bX19PC90ZXh0Pjwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ5aW5waW5nXCIgdi1pZj1cImEudHlwZSA9PSAxXCIgQGNsaWNrPVwidG9BdWRpbyhhLm1lc3NhZ2UpXCI+XG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2NoYXQtMDMucG5nXCI+PC9pbWFnZT4ge3thLm51bX194oCdXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ2aWRlb1wiIHYtaWY9XCJhLnR5cGUgPT0gMlwiPlxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBAY2xpY2s9XCJ0b1BsYXkoYS5tZXNzYWdlKVwiIHNyYz1cIkAvc3RhdGljL3ZpZGVvX2JnLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbWdcIiB2LWlmPVwiYS50eXBlID09IDRcIj5cblx0XHRcdFx0XHRcdFx0XHQ8aW1hZ2UgQGNsaWNrPVwicGVydmlld0ltYWdlKGEubWVzc2FnZSlcIiA6c3JjPVwiYS5tZXNzYWdlXCI+PC9pbWFnZT5cblx0XHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHRcdDwvdGVtcGxhdGU+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhbmd5b25nXCIgdi1pZj1cImNoYXRMaXN0Lmxlbmd0aCA+IDBcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibGlcIiBAY2xpY2s9XCJ0b1NlbGVjdCgn5L2g5aW9JylcIj7kvaDlpb08L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImxpXCIgQGNsaWNrPVwidG9TZWxlY3QoJ+W+iOmrmOWFtOiupOivhuS9oCcpXCI+5b6I6auY5YW06K6k6K+G5L2gPC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJsaVwiIEBjbGljaz1cInRvU2VsZWN0KCflj6/ku6XorqTor4bkuIvlkJfvvJ8nKVwiPuWPr+S7peiupOivhuS4i+WQl++8nzwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cblx0XHQ8L3Njcm9sbC12aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwiY2hhdC1mZFwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJhXCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwibHV5aW5cIiB2LWlmPVwidXNlckluZm8ub3BlcnJvbGUgPT0gMFwiIEBjbGljaz1cInRvVG9nZ2xlKClcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cImlzVG9nZ2xlXCIgc3JjPVwiL3N0YXRpYy9jaGF0LTAxLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PGltYWdlIHYtZWxzZSBzcmM9XCIvc3RhdGljL2NoYXQtMDUucG5nXCI+PC9pbWFnZT5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCIgdi1pZj1cImlzVG9nZ2xlXCI+XG5cdFx0XHRcdFx0PCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiY29udGVudFwiIHBsYWNlaG9sZGVyPVwi5Y2V6KGM6L6T5YWlXCIgLz4gLS0+XHJcblx0XHRcdFx0XHQ8IS0tIDxlZGl0b3IgY2xhc3M9XCJib3hcIiBwbGFjZWhvbGRlcj1cIuWNleihjOi+k+WFpVwiPjwvZWRpdG9yPiAtLT5cclxuXHRcdFx0XHRcdDxlZGl0b3IgY2xhc3M9XCJib3hcIiBpZD1cImVkaXRvclwiIHBsYWNlaG9sZGVyPVwiXCIgQHJlYWR5PVwib25FZGl0b3JSZWFkeVwiIEBpbnB1dD1cImltTWVzc2FnZUlucHV0XCI+PC9lZGl0b3I+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtb3JlXCIgQGNsaWNrPVwidG9CaWFvcWluZygxKVwiPlxuXHRcdFx0XHRcdFx0PHUtaWNvbiBuYW1lPVwibW9yZS1kb3QtZmlsbFwiIGNvbG9yPVwiIzAwMDAwMFwiIHNpemU9XCIzMFwiPjwvdS1pY29uPlxuXHRcdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0XCIgdi1lbHNlPlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic3RhclwiIEBjbGljaz1cInRvT3BlbigpXCIgdi1pZj1cImlzUGxheVwiPuW8gOWni+W9lemfszwvdmlldz5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInN0YXJcIiBAY2xpY2s9XCJ0b0VuZCgpXCIgdi1lbHNlPuWBnOatouW9lemfszwvdmlldz5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJ0blwiIEBjbGljaz1cInRvU2VuZCgzKVwiPlxuXHRcdFx0XHRcdOWPkemAgVxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYmlhb3FpbmdcIiBAY2xpY2s9XCJ0b0JpYW9xaW5nKDIpXCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2Ugdi1pZj1cImlzQmlhb3FpbmcgPT0gZmFsc2VcIiBzcmM9XCIvc3RhdGljL2NoYXQtMDIucG5nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDxpbWFnZSB2LWVsc2Ugc3JjPVwiL3N0YXRpYy9jaGF0LTA1LnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHRcdDx2aWV3IGNsYXNzPVwiYlwiIHYtaWY9XCJpc09wZW5cIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdFwiIEBjbGljaz1cImNob29zZUF2YXRhcigxKVwiPlxyXG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2NoYXQtemhhb3BpYW4ucG5nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdFwiIEBjbGljaz1cImNob29zZUF2YXRhcigyKVwiPlxyXG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2NoYXQteGlhbmdqaS5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImR0XCIgdi1pZj1cInVzZXJJbmZvLm9wZXJyb2xlID09IDBcIiBAY2xpY2s9XCJvcGVuU2hpcGluZygpXCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiQC9zdGF0aWMvY2hhdC15aW5zaGlwaW4ucG5nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdFwiIHYtaWY9XCJ1c2VySW5mby5vcGVycm9sZSA9PSAwXCIgQGNsaWNrPVwib3BlbkdpZnQoKVwiPlxyXG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2NoYXQtbGl3dS5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJjXCIgdi1pZj1cImlzQmlhb3FpbmdcIj5cclxuXHRcdFx0XHQ8aW1hZ2UgQGNsaWNrPVwidG9DbGljayhpKVwiIHYtZm9yPVwiaSBpbiA3NVwiIDprZXk9XCJpXCIgOnNyYz1cIidodHRwczovL2FwaS5seWl5dWFuLmNuL3Byb2ZpbGUvdXBsb2FkL3N0YXRpYy9mYWNlLycraSsnLmdpZidcIj48L2ltYWdlPlxyXG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx1LXBvcHVwIHYtbW9kZWw9XCJzaG93XCIgbW9kZT1cInRvcFwiIDptYXNrLWNsb3NlLWFibGU9J2ZhbHNlJyA6ekluZGV4PVwiNVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJwZXJtaXNzaW9uc19ib3hcIiA6c3R5bGU9XCJ7J3BhZGRpbmctdG9wJzogKHN0YXR1c0JhckhlaWdodCs2NCkrJ3B4J31cIiB2LWlmPVwic2hvd1R5cGUgPT0gMlwiPlxuXHRcdFx0XHTlvZPmgqjkvb/nlKhBUFDml7bvvIzkuLrkuobkvb/nlKjlvZXpn7PnmoTlip/og73vvIzmiJHku6zpnIDopoHnlLPor7fpuqblhYvpo47mnYPpmZDjgIJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJwZXJtaXNzaW9uc19ib3hcIiA6c3R5bGU9XCJ7J3BhZGRpbmctdG9wJzogKHN0YXR1c0JhckhlaWdodCs2NCkrJ3B4J31cIiB2LWlmPVwic2hvd1R5cGUgPT0gMVwiPlxyXG5cdFx0XHRcdOW9k+aCqOS9v+eUqEFQUOaXtu+8jOS4uuS6huaPkOS+m+WbvueJhy/op4bpopHkuIrkvKDnmoTlip/og73vvIzmiJHku6zpnIDopoHnlLPor7fnm7jmnLov5a2Y5YKo5p2D6ZmQ44CCXHJcblx0XHRcdDwvdmlldz5cblx0XHQ8L3UtcG9wdXA+XG5cdFx0PHUtcG9wdXAgdi1tb2RlbD1cInNob3cxXCIgbW9kZT1cImJvdHRvbVwiIDptYXNrLWNsb3NlLWFibGU9J2ZhbHNlJz5cblx0XHRcdDx2aWV3IGNsYXNzPVwiZ2lmdFBvcHVwXCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGl0bGVcIj7npLzniak8aW1hZ2UgQGNsaWNrPVwiY2xvc2VHaWZ0KClcIiBzcmM9XCIvc3RhdGljL2NoYS5wbmdcIj48L2ltYWdlPjwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjb250ZW50XCI+XG5cdFx0XHRcdFx0PHN3aXBlciBjbGFzcz1cInN3aXBlclwiIEBjaGFuZ2U9XCJjaGFuZ2Vzd2lwZXJcIj5cblx0XHRcdFx0XHRcdDxzd2lwZXItaXRlbSB2LWZvcj1cImkgaW4gZ2lmdExpc3ROdW1cIiA6a2V5PVwiaVwiPlxuXHRcdFx0XHRcdFx0XHQ8dGVtcGxhdGUgdi1mb3I9XCIoYSxpZHgpIGluIGdpZnRMaXN0XCI+XG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCIgdi1pZj1cIig4KihpLTEpKTxpZHggPCA4KmlcIiA6a2V5PVwiaWR4XCIgQGNsaWNrPVwidGFiSXRlbShpZHgpXCIgOmNsYXNzPVwiaWR4ID09IHRhYkluZGV4PydpdGVtLW9uJzonJ1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGltYWdlIG1vZGU9XCJoZWlnaHRGaXhcIiA6c3JjPVwiYS5pbWd1cmxcIj48L2ltYWdlPlxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj57e2EubmFtZX19PC92aWV3PlxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJudW1cIj57e2EucHJpY2V9femHkeW4gTwvdmlldz5cblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHRcblx0XHRcdFx0XHRcdFx0PC90ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdDwvc3dpcGVyLWl0ZW0+XG5cdFx0XHRcdFx0PC9zd2lwZXI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmRpY2F0b3ItZG90c1wiIHYtaWY9XCJnaWZ0TGlzdE51bSA+PSAyXCI+XG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImluZGljYXRvci1kb3RzLWl0ZW1cIiB2LWZvcj1cImkgaW4gZ2lmdExpc3ROdW1cIiA6a2V5PVwiaVwiIDpjbGFzcz1cIltjdXJyZW50ID09IGkgPyAnaW5kaWNhdG9yLWRvdHMtYWN0aXZlJyA6ICcnXVwiPjwvdmlldz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmZFwiPlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYVwiPumHkeW4ge+8mnt7YmFsYW5jZUluZm8udXNlckJhbGFuY2V9fTwvdmlldz5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImJcIj7lhYXlgLw8aW1hZ2Ugc3JjPVwiQC9zdGF0aWMvaWNvbi1hcnJvdy5wbmdcIj48L2ltYWdlPjwvdmlldz5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImNcIj5cblx0XHRcdFx0XHRcdDxpbnB1dCB2LW1vZGVsPVwibnVtXCIgLz5cblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJidG5cIiBAY2xpY2s9XCJ0b1plbmdzb25nKClcIj7otaDpgIE8L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3UtcG9wdXA+XG5cdFx0PGluc3VmZmljaWVudCA6aXNDb2lucz1cImlzQ29pbnNcIiAvPlxuXHRcdDx1LXBvcHVwIHYtbW9kZWw9XCJzaG93MlwiIG1vZGU9XCJjZW50ZXJcIj5cblx0XHRcdDx2aWRlbyBzdHlsZT1cIndpZHRoOiA2ODBycHg7XCIgdi1pZj1cInZpZGVvVXJsXCIgOnNyYz1cInZpZGVvVXJsXCIgb2JqZWN0LWZpdD1cImNvbnRhaW5cIj48L3ZpZGVvPlxuXHRcdDwvdS1wb3B1cD5cclxuXHRcdDwhLS0gc3ZnYeaSreaUviAtLT5cclxuXHRcdDxjLXN2Z2EgcmVmPVwiY1N2Z2FSZWZcIlxyXG5cdFx0OnN0eWxlPVwieyd3aWR0aCc6IChpc1N2Z2EgPT0gZmFsc2U/MTp3aW5XaWR0aCkrJ3B4JywgJ2hlaWdodCc6IChpc1N2Z2E9PWZhbHNlPzE6d2luSGVpZ2h0KSsncHgnLCAncG9zaXRpb24nOiAnZml4ZWQnLCd0b3AnOicwJywgJ2xlZnQnOiAwLCd6LWluZGV4JzogJzk5OScsICdvdmVyZmxvdyc6ICdoaWRkZW4nfVwiIFxyXG5cdFx0OmNhbnZhc0lkPSdjYW52YXNJZCcgOnNyYz1cInN2Z2FTcmNcIiA6YXV0by1wbGF5PVwidHJ1ZVwiIDpsb29wcz0nMScgQGxvYWRlZD1cIm9uTG9hZGVkXCIgQGZpbmlzaGVkPSdvbkZpbmlzaGVkJz48L2Mtc3ZnYT5cblx0PC92aWV3PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cblx0Y29uc3Qgc3lzdGVtSW5mb1N5bmMgPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcblx0aW1wb3J0IHBlcm1pc2lvbiBmcm9tIFwiQC9qc19zZGsvd2EtcGVybWlzc2lvbi9wZXJtaXNzaW9uLmpzXCJcblx0Y29uc3QgcmVjb3JkZXJNYW5hZ2VyID0gdW5pLmdldFJlY29yZGVyTWFuYWdlcigpO1xuXHRjb25zdCBpbm5lckF1ZGlvQ29udGV4dCA9IHVuaS5jcmVhdGVJbm5lckF1ZGlvQ29udGV4dCgpO1xuXHRpbm5lckF1ZGlvQ29udGV4dC5hdXRvcGxheSA9IHRydWU7XG5cdGxldCB0aW1lciA9IDA7XG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRkYXRhKCkge1xuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRzaG93VHlwZTogMSwvLzF4aWFuZ2NlICAy5b2V6Z+zXHJcblx0XHRcdFx0aXNTdmdhOiBmYWxzZSxcclxuXHRcdFx0XHRjYW52YXNJZDonbXlDYW52YXMnLFxyXG5cdFx0XHRcdHN2Z2FTcmNMaXN0OiBbXSxcclxuXHRcdFx0XHRzdmdhU3JjOiBcImh0dHBzOi8vYXBpLmx5aXl1YW4uY24vcHJvZmlsZS91cGxvYWQvMjAyNC8xMS8wNS85Mjg0ZDA3OTdhOTkxZWYxMzBkOWIwNjc1OWVmOWIzMC5zdmdhXCIsXHJcblx0XHRcdFx0aXNQbGF5MTogZmFsc2UsXG5cdFx0XHRcdHZpZGVvVXJsOiBcIlwiLFxuXHRcdFx0XHR3cmFwcGVyU2Nyb2xsSGVpZ2h0OiAwLFxuXHRcdFx0XHR0YWJJbmRleDogMCxcblx0XHRcdFx0aWQ6IFwiXCIsXG5cdFx0XHRcdGN1cnJlbnQ6IDEsXG5cdFx0XHRcdHNob3cxOiBmYWxzZSxcblx0XHRcdFx0c2hvdzI6IGZhbHNlLFxuXHRcdFx0XHRpc0NvaW5zOiBmYWxzZSxcblx0XHRcdFx0aXNUb2dnbGU6IHRydWUsXG5cdFx0XHRcdGlzT3BlbjogZmFsc2UsXG5cdFx0XHRcdHRpdGxlOiBcIlwiLFxuXHRcdFx0XHRjb250ZW50OiBcIlwiLFxuXHRcdFx0XHR1c2VySW5mbzoge30sXG5cdFx0XHRcdGxpc3Q6IFtdLFxuXHRcdFx0XHRpdGVtTGlzdDogW10sXG5cdFx0XHRcdGNoYXRMaXN0OiBbXSxcblx0XHRcdFx0dXNlcklkOiBcIlwiLFxuXHRcdFx0XHRpbWc6IFwiXCIsXG5cdFx0XHRcdHNob3c6IGZhbHNlLFxuXHRcdFx0XHRpc1BsYXk6IHRydWUsXG5cdFx0XHRcdGNvdW50OiAwLFxuXHRcdFx0XHRiYWxhbmNlSW5mbzoge30sXG5cdFx0XHRcdG51bTogMSxcblx0XHRcdFx0Z2lmdExpc3Q6IFtdLFxuXHRcdFx0XHRnaWZ0TGlzdE51bTogMSxcblx0XHRcdFx0c3RhdHVzQmFySGVpZ2h0OiAwLFxuXHRcdFx0XHR3cmFwcGVySGVpZ2h0OiAwLFxuXHRcdFx0XHR0b3RhbDogMCxcblx0XHRcdFx0cGFnZTogMSxcclxuXHRcdFx0XHRlZGl0b3JDdHg6IFwiXCIsXHJcblx0XHRcdFx0aXNCaWFvcWluZzogZmFsc2UsXHJcblx0XHRcdFx0d2luV2lkdGg6IDEsXHJcblx0XHRcdFx0d2luSGVpZ2h0OiAxXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0b25Mb2FkKG8pIHtcblx0XHRcdHRoaXMuc3RhdHVzQmFySGVpZ2h0ID0gc3lzdGVtSW5mb1N5bmMuc3RhdHVzQmFySGVpZ2h0O1xuXHRcdFx0dGhpcy51c2VySWQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZDtcblx0XHRcdHRoaXMuaWQgPSBvLmlkO1xyXG5cdFx0XHR0aGlzLndpbldpZHRoID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkud2luZG93V2lkdGg7XHJcblx0XHRcdHRoaXMud2luSGVpZ2h0ID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkud2luZG93SGVpZ2h0O1xuXHRcdFx0dGhpcy5nZXRVc2VySW5mbygpO1xuXHRcdFx0dGhpcy5nZXRDaGF0TGlzdCgpO1xuXHRcdFx0dGhpcy51c2VyQmFsYW5jZSgpO1xyXG5cdFx0XHR0aGlzLmdldEdpZnQoKTtcblx0XHR9LFxuXHRcdG9uUmVhZHkoKSB7XG5cdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdHJlY29yZGVyTWFuYWdlci5vblN0b3AoZnVuY3Rpb24gKHJlcykge1xuXHRcdFx0XHR0aGF0LnVwbG9hZEF1ZGlvKHJlcy50ZW1wRmlsZVBhdGgpO1xyXG5cdFx0XHRcdGNsZWFySW50ZXJ2YWwodGltZXIpO1xyXG5cdFx0XHRcdHRoYXQuaXNQbGF5ID0gdHJ1ZVxuXHRcdFx0XHRcblx0XHRcdH0pO1xuXHRcdFx0aW5uZXJBdWRpb0NvbnRleHQub25FbmRlZChyZXM9Pntcblx0XHRcdFx0dGhhdC5pc1BsYXkgPSBmYWxzZVxuXHRcdFx0fSlcblx0XHRcdHRoYXQud2F0Y2hTb2NrZXQoKTtcblx0XHR9LFxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0b25Mb2FkZWQoKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCLliqDovb3lrozkuoZcIilcclxuXHRcdFx0XHQvLyB0aGlzLiRyZWZzLmNTdmdhUmVmLmNhbGwoXCJzdGFydEFuaW1hdGlvblwiKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbkZpbmlzaGVkKCkge1xyXG5cdFx0XHRcdHRoaXMuaXNTdmdhID0gZmFsc2VcclxuXHRcdFx0XHR0aGlzLnN2Z2FTcmMgPSBcIlwiXHJcbiBcdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwi5pKt5pS+5a6M5LqGXCIpXHJcblx0XHRcdH0sXHJcblx0XHRcdHRvVG9nZ2xlMSgpIHtcclxuXHRcdFx0XHR0aGlzLmlzUGxheTEgPSAhdGhpcy5pc1BsYXkxXHJcblx0XHRcdFx0aWYodGhpcy5pc1BsYXkxKXtcclxuXHRcdFx0XHRcdGlubmVyQXVkaW9Db250ZXh0LnNyYyA9IHRoaXMudXNlckluZm8udm9pY2U7XHJcblx0XHRcdFx0XHRpbm5lckF1ZGlvQ29udGV4dC5wbGF5KCk7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRpbm5lckF1ZGlvQ29udGV4dC5wYXVzZSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0cGVydmlld0ltYWdlcyh1cmwpe1xyXG5cdFx0XHRcdHVuaS5wcmV2aWV3SW1hZ2Uoe1xyXG5cdFx0XHRcdFx0dXJsczogdGhpcy51c2VySW5mby54aWFuZ2NlLFxyXG5cdFx0XHRcdFx0Y291bnQ6IHVybFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdHBlcnZpZXdJbWFnZSh1cmwpe1xyXG5cdFx0XHRcdHVuaS5wcmV2aWV3SW1hZ2Uoe1xyXG5cdFx0XHRcdFx0dXJsczogW3VybF1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR0b0NsaWNrIChpZHgpe1xyXG5cdFx0XHRcdHRoaXMuZWRpdG9yQ3R4Lmluc2VydEltYWdlKHtcclxuXHRcdFx0XHRcdHNyYzogJ2h0dHBzOi8vYXBpLmx5aXl1YW4uY24vcHJvZmlsZS91cGxvYWQvc3RhdGljL2ZhY2UvJytpZHgrJy5naWYnLFxyXG5cdFx0XHRcdFx0d2l0aDogMzAsXHJcblx0XHRcdFx0XHRoZWlnaHQ6IDMwLFxyXG5cdFx0XHRcdFx0c3VjY2Vzcygpe1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGltTWVzc2FnZUlucHV0KGUpe1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGUpXHJcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gZS5kZXRhaWwuaHRtbC5yZXBsYWNlKC88aW1nIC9nLCc8aW1nIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIiAnKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b25FZGl0b3JSZWFkeSgpIHtcclxuXHRcdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVMgfHwgSDUgfHxNUC1XRUlYSU5cclxuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdCgnI2VkaXRvcicpLmNvbnRleHQoKHJlcykgPT4ge1xyXG5cdFx0XHRcdCAgdGhhdC5lZGl0b3JDdHggPSByZXMuY29udGV4dFxyXG5cdFx0XHRcdH0pLmV4ZWMoKVxyXG5cdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHR9LFxuXHRcdFx0d2F0Y2hTb2NrZXQoKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR1bmkuJG9uKFwidG9DaGF0T2JqXCIsZnVuY3Rpb24gKHJlcykge1xuXHRcdFx0XHRcdGNvbnN0IG9iaiA9IHJlcy5kYXRhP0pTT04ucGFyc2UocmVzLmRhdGEpOnt9XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhvYmopXHJcblx0XHRcdFx0XHRpZihvYmoudG9waWMgPT0gJ21lc3NhZ2UnKXtcclxuXHRcdFx0XHRcdFx0aWYob2JqLnR5cGVcdCA9PSAxMil7XHJcblx0XHRcdFx0XHRcdFx0dW5pLiRlbWl0KFwid2F0Y2hFdmVudFwiLG9iailcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZihvYmoudHlwZSA9PSAyMCl7XHJcblx0XHRcdFx0XHRcdFx0dW5pLiRlbWl0KFwidG9KaWVzaG91WWluc2hpcFwiLG9iailcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZihvYmoudHlwZTw9Nyl7XHJcblx0XHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQgPT0gb2JqLnNlbGxlcklkKXtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQucGFnZSA9IDE7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldENoYXRMaXN0KCk7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihvYmoudHlwZSA9PSA1KXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cob2JqLnN2Z2FTcmMpXHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKG9iai5zdmdhU3JjKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LnN2Z2FTcmMgPT0gb2JqLnN2Z2FTcmMpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coMTExMjIsdGhhdC5zdmdhU3JjID09IG9iai5zdmdhU3JjLHRoYXQuc3ZnYVNyYyxvYmouc3ZnYVNyYylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNTdmdhID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuJHJlZnMuY1N2Z2FSZWYuY2FsbChcInN0YXJ0QW5pbWF0aW9uXCIpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygyMjIyMix0aGF0LnN2Z2FTcmMgPT0gb2JqLnN2Z2FTcmMsdGhhdC5zdmdhU3JjLCBvYmouc3ZnYVNyYylcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNTdmdhID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuc3ZnYVNyYyA9IG9iai5zdmdhU3JjO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyB0aGF0LiRyZWZzLmNTdmdhUmVmLmNhbGwoXCJjbGVhclwiKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyB0aGF0LiRyZWZzLmNTdmdhUmVmLmNhbGwoXCJzdGFydEFuaW1hdGlvblwiKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmKHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkID09IG9iai51c2VySWQpe1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5wYWdlID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0Q2hhdExpc3QoKTtcdFxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYob2JqLnR5cGU+PSA4KXtcclxuXHRcdFx0XHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCA9PSBvYmouc2VsbGVySWQpe1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYob2JqLnR5cGUgPT0gMTApe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9waXBlaS9zaGlwaW4vZGV0YWlsP3R5cGU9MiZpZD1cIit0aGF0LmlkXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSw1MDApXHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRpZihvYmoudHlwZSA9PSAxOCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKG9iai51c2VyTXNnVm9pY2UgPT0gMSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLiRlbWl0KFwicGxheUF1ZGlvXCIpXHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYob2JqLnVzZXJNc2dTaG9jayA9PSAxKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1bmkudmlicmF0ZUxvbmcoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uIChyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ3N1Y2Nlc3MnLHJlcyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGlwZWkvc2hpcGluL2RldGFpbD90eXBlPTMmaWQ9XCIrb2JqLnVzZXJJZCsnJmZpZD0nK29iai5zZWxsZXJJZFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0aWYob2JqLnR5cGUgPT0gMTkpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZihvYmoudXNlck1zZ1ZvaWNlID09IDEpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVuaS4kZW1pdChcInBsYXlBdWRpb1wiKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKG9iai51c2VyTXNnU2hvY2sgPT0gMSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLnZpYnJhdGVMb25nKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlOiBmdW5jdGlvbiAocmVzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdzdWNjZXNzJyxyZXMpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BpcGVpL3NoaXBpbi9kZXRhaWw/dHlwZT00JmlkPVwiK29iai51c2VySWQrJyZmaWQ9JytvYmouc2VsbGVySWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0dG9CaWFvcWluZyh0eXBlKSB7XHJcblx0XHRcdFx0aWYodHlwZT09MSl7XHJcblx0XHRcdFx0XHR0aGlzLmlzQmlhb3FpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuXHJcblx0XHRcdFx0fWVsc2Uge1xyXG5cdFx0XHRcdFx0dGhpcy5pc09wZW4gPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuaXNCaWFvcWluZyA9ICF0aGlzLmlzQmlhb3FpbmdcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXG5cdFx0XHRzY3JvbGx0b3VwcGVyKGUpIHtcblx0XHRcdFx0aWYodGhpcy5jaGF0TGlzdC5sZW5ndGggPD10aGlzLnRvdGFsKXtcblx0XHRcdFx0XHR0aGlzLnBhZ2UgKys7XG5cdFx0XHRcdFx0dGhpcy5nZXRDaGF0TGlzdCgxKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHRvQXVkaW8odXJsKSB7XG5cdFx0XHRcdGlubmVyQXVkaW9Db250ZXh0LnNyYyA9IHVybDtcblx0XHRcdFx0aW5uZXJBdWRpb0NvbnRleHQucGxheSgpO1xuXHRcdFx0fSxcblx0XHRcdHRvUGxheSh1cmwpe1xuXHRcdFx0XHR0aGlzLnNob3cyID0gdHJ1ZTtcblx0XHRcdFx0dGhpcy52aWRlb1VybCA9IHVybFxuXHRcdFx0fSxcblx0XHRcdC8vIOWwhnB46L2s5o2i5Li6cnB4XG5cdFx0XHRweFRvUnB4KHB4KSB7XG5cdFx0XHQgICAgcmV0dXJuIHB4ICogNzUwIC8gc3lzdGVtSW5mb1N5bmMud2luZG93V2lkdGg7XG5cdFx0XHR9LFxuXHRcdFx0Ly/lj5HpgIHlvpflhoXlrrnvvIx0eXBlOjEu6K+t6Z+zIDIu6KeG6aKRIDMu5paH5a2XIDTlm77niYcgNeekvOeJqTbmkK3orqpcblx0XHRcdGFzeW5jIGdpZnRHaXZpbmcoKSB7XG5cdFx0XHRcdGF3YWl0IHRoaXMuJGFwaS5naWZ0R2l2aW5nKHtcblx0XHRcdFx0XHRcInVzZXJJZFwiOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCwgLy/nlKjmiLdJRFxuXHRcdFx0XHRcdFwiYWNjZXB0VXNlcklkXCI6IHRoaXMuaWQsIC8v6KKr6YCB56S85LmL5Lq6SURcblx0XHRcdFx0XHRcImdpZnRJZFwiOiB0aGlzLmdpZnRMaXN0W3RoaXMudGFiSW5kZXhdLmlkLCAvL+ekvOeJqUlEXG5cdFx0XHRcdFx0XCJudW1cIjogdGhpcy5udW0gLy/npLznianmlbDph49cblx0XHRcdFx0fSkgXG5cdFx0XHR9LFxuXHRcdFx0dG9aZW5nc29uZygpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdGlmKHRoaXMudXNlckluZm8uaXNCbGFjayA9PSAxKXtcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+aYr+m7keWQjeWNle+8jOW3sumZkOWItlwiLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYodGhpcy5iYWxhbmNlSW5mby5pc0JsYWNrID49IHRoaXMuZ2lmdExpc3RbdGhpcy50YWJJbmRleF0ucHJpY2UqdGhhdC5udW0pe1xuXHRcdFx0XHRcdHRoYXQuaXNDb2lucyA9IHRydWU7XG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGF0LmltZyA9IHRoaXMuZ2lmdExpc3RbdGhpcy50YWJJbmRleF0uaWRcblx0XHRcdFx0dGhhdC5jb3VudCA9IHRoYXQubnVtXG5cdFx0XHRcdHRoYXQudG9TZW5kKDUpXG5cdFx0XHR9LFxuXHRcdFx0dGFiSXRlbShpbmRleCl7XG5cdFx0XHRcdHRoaXMudGFiSW5kZXggPSBpbmRleDtcblx0XHRcdH0sXG5cdFx0XHRhc3luYyBnZXRHaWZ0KCkge1xuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgfSA9IGF3YWl0IHRoaXMuJGFwaS5naWZ0TGlzdCh7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0XHRsaW1pdDogOTk5LFxuXHRcdFx0XHRcdHBhZ2U6IDFcblx0XHRcdFx0fSkgXG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHR0aGlzLmdpZnRMaXN0ID0gZGF0YS5saXN0O1xuXHRcdFx0XHRcdHRoaXMuZ2lmdExpc3ROdW0gPSBNYXRoLmNlaWwoZGF0YS50b3RhbC84KVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Y2xvc2VHaWZ0KCl7XG5cdFx0XHRcdHRoaXMuc2hvdzEgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5pc09wZW4gPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5pc0JpYW9xaW5nID0gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0b3BlbkdpZnQoKXtcblx0XHRcdFx0aWYodGhpcy51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnNob3cxID0gdHJ1ZTtcblx0XHRcdFx0XG5cdFx0XHRcdHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuaXNCaWFvcWluZyA9IGZhbHNlO1xuXHRcdFx0fSxcblx0XHRcdGNoYW5nZXN3aXBlcihlKXtcblx0XHRcdFx0dGhpcy5jdXJyZW50ID0gZS5kZXRhaWwuY3VycmVudFxuXHRcdFx0fSxcblx0XHRcdHRvRW5kKCkge1xuXHRcdFx0XHRyZWNvcmRlck1hbmFnZXIuc3RvcCgpO1xuXHRcdFx0fSxcblx0XHRcdHRvVG9nZ2xlKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0dGhpcy5pc1RvZ2dsZSA9ICF0aGlzLmlzVG9nZ2xlXG5cdFx0XHRcdHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cdFx0XHR9LFxuXHRcdFx0Ly/mo4Dmn6XmrKHmlbBcblx0XHRcdGFzeW5jIHVzZXJCYWxhbmNlKCkge1xuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgfSA9IGF3YWl0IHRoaXMuJGFwaS51c2VyQmFsYW5jZSh7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZFxuXHRcdFx0XHR9KSBcblx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdHRoaXMuYmFsYW5jZUluZm8gPSBkYXRhXG5cdFx0XHRcdFx0LyoqKlxuXHRcdFx0XHRcdFwidmlkZW9Db2luc1wiOiAwLCAvL+inhumikeWPr+eUqOaXtumVv++8muWIhumSn1xuXHRcdFx0XHRcdFwid29yZFZvaWNlRGlzY291bnRcIjogMCwgLy/or63pn7Pop4bpopHmloflrZfmipjmiaPvvJow6KGo56S65LiN5omT5oqYXG5cdFx0XHRcdFx0XCJ2b2ljZUNvaW5zXCI6IDAsIC8v6K+t6Z+z5Y+v55So5pe26ZW/77ya5YiG6ZKfXG5cdFx0XHRcdFx0XCJ3b3JkQ29pbnNcIjogMCwgLy/mloflrZflj6/lj5HmlbDph49cblx0XHRcdFx0XHRcInVzZXJCYWxhbmNlXCI6IDEgLy/lvZPliY3nlKjmiLfph5HluIHkvZnpop1cblx0XHRcdFx0XHQqL1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly/nu5PnrpcgdHlwZToxLuivremfsyAyLuinhumikSAzLuaWh+WtlyA05Zu+54mHIDXnpLzniak25pCt6K6qXG5cdFx0XHRhc3luYyBzb2NpYWxDb25zdW1wdGlvbih0eXBlKSB7XG5cdFx0XHRcdGF3YWl0IHRoaXMuJGFwaS5zb2NpYWxDb25zdW1wdGlvbih7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0XHRzZWxsZXJJZDogdGhpcy5pZCxcblx0XHRcdFx0XHR0eXBlOiAodHlwZSA9PSAxIHx8IHR5cGUgPT0gMiB8fCB0eXBlID09IDMpPzM6dHlwZSxcblx0XHRcdFx0XHRkdXJhdGlvbjogXCJcIlxuXHRcdFx0XHR9KSBcblx0XHRcdH0sXG5cdFx0XHR0b09wZW4oKXtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdC8ve1widXNlcklkXCI6XCIxMjNcIixcInNlbGxlcklkXCI6XCI0NTc1Njc2ODc4XCIsXCJ0eXBlXCI6M30gICDlj5HpgIHlvpflhoXlrrnvvIx0eXBlOjEu6K+t6Z+zIDIu6KeG6aKRIDMu5paH5a2XIDTlm77niYcgNeekvOeJqTbmkK3orqpcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coMTExKVxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7XCJ1c2VySWRcIjogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsc2VsbGVySWQ6dGhpcy5pZCwgdHlwZTozLFwidG9waWNcIjpcIm1lc3NhZ2VcIn0pKVxuXHRcdFx0XHQvLyB1bmkuc2VuZFNvY2tldE1lc3NhZ2Uoe2RhdGE6SlNPTi5zdHJpbmdpZnkoe1widXNlcklkXCI6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLHNlbGxlcklkOnRoaXMuaWQsIHR5cGU6MyxcInRvcGljXCI6XCJtZXNzYWdlXCJ9KX0pO1xuXHRcdFx0XHRcblx0XHRcdFx0Ly8gcmV0dXJuIDtcblx0XHRcdFx0Ly8gQVBQ5qOA5p+l5p2D6ZmQXG5cdFx0XHRcdGlmKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09ICdhbmRyb2lkJykge1xuXHRcdFx0XHRcdHBsdXMuYW5kcm9pZC5jaGVja1Blcm1pc3Npb24oXG5cdFx0XHRcdFx0XHQnYW5kcm9pZC5wZXJtaXNzaW9uLlJFQ09SRF9BVURJTycsXG5cdFx0XHRcdFx0XHRncmFudGVkID0+IHtcblx0XHRcdFx0XHRcdCAgaWYgKGdyYW50ZWQuY2hlY2tSZXN1bHQ9PS0xKXtcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93PXRydWVcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnNob3dUeXBlID0gMlxuXHRcdFx0XHRcdFx0ICB9ZWxzZXtcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93PWZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93VHlwZSA9IDFcblx0XHRcdFx0XHRcdFx0dGhhdC50b0x1eWluKCk7XG5cdFx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRlcnJvciA9PiB7XG5cdFx0XHRcdFx0XHQgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHBlcm1pc3Npb246JywgZXJyb3IubWVzc2FnZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ICApO1xuXHRcdFx0XHRcdCB0aGF0LnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbignYW5kcm9pZC5wZXJtaXNzaW9uLlJFQ09SRF9BVURJTycpXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGF0LnRvTHV5aW4oKTtcblx0XHRcdH0sXG5cdFx0XHR0b0x1eWluKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcilcblx0XHRcdFx0dGhhdC5pc1BsYXkgPSBmYWxzZTtcblx0XHRcdFx0dGltZXIgPSBzZXRJbnRlcnZhbCgoKT0+e1xuXHRcdFx0XHRcdHRoYXQuY291bnQrK1xuXHRcdFx0XHR9LDEwMDApXG5cdFx0XHRcdHJlY29yZGVyTWFuYWdlci5zdGFydCh7XG5cdFx0XHRcdFx0Zm9ybWF0OiBcIm1wM1wiXG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0cmVjb3JkZXJBdXRoTW9kYWw6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiAn5rip6aao5o+Q56S6Jyxcblx0XHRcdFx0XHRjb250ZW50OiAn5Li65LqG6bqm5YWL6aOO55qE5Yqf6IO977yM5oiR5Lus6ZyA6KaB55Sz6K+36bqm5YWL6aOO5p2D6ZmQ77yM6K+35oKo56Gu6K6k5o6I5p2D77yM5ZCm5YiZ5peg5rOV5L2/55So6K+l5Yqf6IO9ficsXG5cdFx0XHRcdFx0Y2FuY2VsVGV4dDogJ+WFs+mXrScsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6ICfljrvmjojmnYMnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2Vcblx0XHRcdFx0XHRcdGlmIChyZXMuY29uZmlybSkge1xuXHRcdFx0XHRcdFx0XHRwZXJtaXNpb24uZ290b0FwcFBlcm1pc3Npb25TZXR0aW5nKClcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxyXG5cdFx0XHRyZWNvcmRlckF1dGhNb2RhbDE6IGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdHRpdGxlOiAn5rip6aao5o+Q56S6JyxcclxuXHRcdFx0XHRcdGNvbnRlbnQ6ICfkuLrkuobmj5Dkvpvlm77niYcv6KeG6aKR5LiK5Lyg55qE5Yqf6IO977yM5oiR5Lus6ZyA6KaB55Sz6K+355u45py6L+WtmOWCqOadg+mZkO+8jOivt+aCqOehruiupOaOiOadg++8jOWQpuWImeaXoOazleS9v+eUqOivpeWKn+iDvX4nLFxyXG5cdFx0XHRcdFx0Y2FuY2VsVGV4dDogJ+WFs+mXrScsXHJcblx0XHRcdFx0XHRjb25maXJtVGV4dDogJ+WOu+aOiOadgycsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2VcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0XHRcdFx0cGVybWlzaW9uLmdvdG9BcHBQZXJtaXNzaW9uU2V0dGluZygpXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxuXHRcdFx0YXN5bmMgcmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKHBlcm1pc2lvbklEKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gYXdhaXQgcGVybWlzaW9uLnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbihwZXJtaXNpb25JRCk7XG5cdFx0XHRcdGlmKHJlc3VsdCAhPSAxKXtcblx0XHRcdFx0XHR0aGF0LnJlY29yZGVyQXV0aE1vZGFsKCk7XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHRoYXQuc2hvdyA9ZmFsc2Vcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8v5LiK5Lyg6K+t6Z+zXG5cdFx0XHR1cGxvYWRBdWRpbyhmaWxlUGF0aCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XG5cdFx0XHRcdFx0aWYodGhhdC5iYWxhbmNlSW5mby53b3JkQ29pbnMgPD0gMCl7XG5cdFx0XHRcdFx0XHR0aGF0LmlzQ29pbnM9dHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS51cGxvYWRGaWxlKHtcblx0XHRcdFx0XHRuYW1lOiAnZmlsZScsXG5cdFx0XHRcdFx0dXJsOiB0aGF0LiRiYXNlVXJsKycvcHJvZC1hcGkvY29tbW9uL3VwbG9hZCcsXG5cdFx0XHRcdFx0ZmlsZVBhdGgsXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3Qge2NvZGUsIGZpbGVOYW1lLCB1cmwsIG1zZ30gPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcblx0XHRcdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHRcdFx0dGhhdC5pbWcgPSB1cmxcblx0XHRcdFx0XHRcdFx0dGhhdC50b1NlbmQoMSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycilcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1x0XG5cdFx0XHR9LFxuXHRcdFx0Ly/kuIrkvKDop4bpopFcblx0XHRcdHVwbG9hZFZpZGVvKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHR1bmkuY2hvb3NlVmlkZW8oe1xuXHRcdFx0XHRcdGNvdW50OiAxLFxuXHRcdFx0XHRcdHNvdXJjZVR5cGU6IFtcImFsYnVtXCIsIFwiY2FtZXJhXCJdLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMxKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMxKVxuXHRcdFx0XHRcdFx0dGhhdC5jb3VudCA9IHJlczEuZHVyYXRpb247XG5cdFx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+aYr+m7keWQjeWNle+8jOW3sumZkOWItlwiLFxuXHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuc2V4ID09IDEpe1xuXHRcdFx0XHRcdFx0XHRpZih0aGF0LmJhbGFuY2VJbmZvLndvcmRDb2lucyA8PSAwKXtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzQ29pbnM9dHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR1bmkudXBsb2FkRmlsZSh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6ICdmaWxlJyxcblx0XHRcdFx0XHRcdFx0dXJsOiB0aGF0LiRiYXNlVXJsKycvcHJvZC1hcGkvY29tbW9uL3VwbG9hZCcsXG5cdFx0XHRcdFx0XHRcdGZpbGVQYXRoOiByZXMxLnRlbXBGaWxlUGF0aCxcblx0XHRcdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHtjb2RlLCBmaWxlTmFtZSwgdXJsLCBtc2d9ID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XG5cdFx0XHRcdFx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5pbWcgPSB1cmxcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMudG9TZW5kKDIpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcdFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbChlcnIpe1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCJmYWlsXCIsZXJyKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxyXG5cdFx0XHQvL1xyXG5cdFx0XHRjaG9vc2VBdmF0YXIoaW5kZXgpe1xyXG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xyXG5cdFx0XHRcdC8vIEFQUOajgOafpeadg+mZkFxyXG5cdFx0XHRcdGlmKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdFx0cGx1cy5hbmRyb2lkLmNoZWNrUGVybWlzc2lvbihcclxuXHRcdFx0XHRcdFx0J2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9FWFRFUk5BTF9TVE9SQUdFJyxcclxuXHRcdFx0XHRcdFx0Z3JhbnRlZCA9PiB7XHJcblx0XHRcdFx0XHRcdCAgaWYgKGdyYW50ZWQuY2hlY2tSZXN1bHQ9PS0xKXtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnNob3c9dHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdHRoYXQuc2hvd1R5cGUgPSAxXHJcblx0XHRcdFx0XHRcdCAgfWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93PWZhbHNlXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93VHlwZSA9IDE7XHJcblx0XHRcdFx0XHRcdFx0aWYoaW5kZXggPT0gMSl7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LnVwbG9hZEltZygpO1xyXG5cdFx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC51cGxvYWRWaWRlbygpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0ICB9XHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdGVycm9yID0+IHtcclxuXHRcdFx0XHRcdFx0ICBjb25zb2xlLmVycm9yKCdFcnJvciBjaGVja2luZyBwZXJtaXNzaW9uOicsIGVycm9yLm1lc3NhZ2UpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQgICk7XHJcblx0XHRcdFx0XHQgdGhhdC5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24xKCdhbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfRVhURVJOQUxfU1RPUkFHRScsaW5kZXgpXHJcblx0XHRcdFx0XHRyZXR1cm4gO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZihpbmRleCA9PSAxKXtcclxuXHRcdFx0XHRcdHRoYXQudXBsb2FkSW1nKCk7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR0aGF0LnVwbG9hZFZpZGVvKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRhc3luYyByZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24xKHBlcm1pc2lvbklELGluZGV4KSB7XHJcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IGF3YWl0IHBlcm1pc2lvbi5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24ocGVybWlzaW9uSUQpO1xyXG5cdFx0XHRcdGlmKHJlc3VsdCAhPSAxKXtcclxuXHRcdFx0XHRcdHRoYXQucmVjb3JkZXJBdXRoTW9kYWwxKCk7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRpZihpbmRleCA9PSAxKXtcclxuXHRcdFx0XHRcdFx0dGhhdC51cGxvYWRJbWcoKTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR0aGF0LnVwbG9hZFZpZGVvKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxuXHRcdFx0Ly/kuIrkvKDlm77niYdcblx0XHRcdHVwbG9hZEltZygpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXNcblx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fVxuXHRcdFx0XHR1bmkuY2hvb3NlSW1hZ2Uoe1xuXHRcdFx0XHRcdGNvdW50OiAxLCAvL+WPr+S7peaMh+WumuaYr+WOn+Wbvui/mOaYr+WOi+e8qeWbvu+8jOm7mOiupOS6jOiAhemDveaciVxuXHRcdFx0XHRcdHNvdXJjZVR5cGU6IFtcImFsYnVtXCIsIFwiY2FtZXJhXCJdLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMxKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMxKVxuXHRcdFx0XHRcdFx0aWYodGhhdC51c2VySW5mby5pc0JsYWNrID09IDEpe1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLlvZPliY3nlKjmiLfmmK/pu5HlkI3ljZXvvIzlt7LpmZDliLZcIixcblx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLnNleCA9PSAxKXtcblx0XHRcdFx0XHRcdFx0aWYodGhhdC5iYWxhbmNlSW5mby53b3JkQ29pbnMgPD0gMCl7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pc0NvaW5zPXRydWU7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dW5pLnVwbG9hZEZpbGUoe1xuXHRcdFx0XHRcdFx0XHRuYW1lOiAnZmlsZScsXG5cdFx0XHRcdFx0XHRcdHVybDogdGhhdC4kYmFzZVVybCsnL3Byb2QtYXBpL2NvbW1vbi91cGxvYWQnLFxuXHRcdFx0XHRcdFx0XHRmaWxlUGF0aDogcmVzMS50ZW1wRmlsZVBhdGhzWzBdLFxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8xLuivremfsyAyLuinhumikSAzLuaWh+WtlyA05Zu+54mHIDXnpLznialcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB7Y29kZSwgZmlsZU5hbWUsIHVybCwgbXNnfSA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xuXHRcdFx0XHRcdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuaW1nID0gdXJsXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnRvU2VuZCg0KVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycilcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XHRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWwoZXJyKXtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwiZmFpbFwiLGVycilcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdHRvU2VsZWN0KG1zZyl7XHJcblx0XHRcdFx0dGhpcy5jb250ZW50ID0gbXNnO1xyXG5cdFx0XHRcdHRoaXMudG9TZW5kKDMpO1xyXG5cdFx0XHR9LFxuXHRcdFx0Ly8g5Y+R6YCB5b6X5YaF5a6577yMdHlwZToxLuivremfsyAyLuinhumikSAzLuaWh+WtlyA05Zu+54mHIDXnpLzniak25pCt6K6qXG5cdFx0XHRhc3luYyB0b1NlbmQodHlwZSkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0aWYodHlwZSA9PSAzKXtcblx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XG5cdFx0XHRcdFx0XHRpZih0aGF0LmJhbGFuY2VJbmZvLndvcmRDb2lucyA8PSAxKXtcblx0XHRcdFx0XHRcdFx0dGhhdC5pc0NvaW5zPXRydWU7XG5cdFx0XHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGV0IHN2Z2FTcmMgPSBudWxsXHJcblx0XHRcdFx0aWYodGhhdC5naWZ0TGlzdCAmJiB0aGF0LmdpZnRMaXN0Lmxlbmd0aCA+IDApe1xyXG5cdFx0XHRcdFx0c3ZnYVNyYyA9IHRoYXQuZ2lmdExpc3RbdGhhdC50YWJJbmRleF0uc3BlY2lhbEVmZmVjdHNcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codGhhdC5zdmdhU3JjKVxyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN2Z2FTcmMpXHJcblx0XHRcdFx0Ly8gdGhhdC5zdmdhU3JjID0gc3ZnYVNyY1xyXG5cdFx0XHRcdC8vIHRoYXQuaXNTdmdhID0gdHJ1ZTtcblx0XHRcdFx0Ly8gcmV0dXJuIDtcblx0XHRcdFx0Y29uc3QgeyBjb2RlLCBkYXRhIH0gPSBhd2FpdCB0aGlzLiRhcGkuY2hhdCh7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0XHRzZWxsZXJJZDogdGhhdC5pZCxcblx0XHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRcdG51bTogdHlwZSA9PSA1P3RoYXQuY291bnQ6KHRoYXQuY291bnQrMSksXG5cdFx0XHRcdFx0bWVzc2FnZTogdHlwZSA9PSAzP3RoYXQuY29udGVudDogdGhhdC5pbWdcblx0XHRcdFx0fSkgXG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcclxuXHRcdFx0XHRcdGxldCBzdmdhU3JjID0gbnVsbFxyXG5cdFx0XHRcdFx0aWYodHlwZT09NSl7XHJcblx0XHRcdFx0XHRcdGlmKHRoYXQuZ2lmdExpc3QgJiYgdGhhdC5naWZ0TGlzdC5sZW5ndGggPiAwKXtcclxuXHRcdFx0XHRcdFx0XHRzdmdhU3JjID0gdGhhdC5naWZ0TGlzdFt0aGF0LnRhYkluZGV4XS5zcGVjaWFsRWZmZWN0cztcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnN2Z2FTcmMgPSBzdmdhU3JjXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5pc1N2Z2EgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRcdC8vIGlmKHRoYXQuc3ZnYVNyYyA9PSBzdmdhU3JjKXtcclxuXHRcdFx0XHRcdFx0XHQvLyBcdGNvbnNvbGUubG9nKDMzMzMzLHRoYXQuc3ZnYVNyYyA9PSBzdmdhU3JjLHRoYXQuc3ZnYVNyYywgc3ZnYVNyYylcclxuXHRcdFx0XHRcdFx0XHQvLyBcdHRoYXQuaXNTdmdhID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHQvLyBcdHRoYXQuJHJlZnMuY1N2Z2FSZWYuY2FsbChcInN0YXJ0QW5pbWF0aW9uXCIpXHJcblx0XHRcdFx0XHRcdFx0Ly8gfWVsc2V7XHJcblx0XHRcdFx0XHRcdFx0Ly8gXHRjb25zb2xlLmxvZyg0NDQ0LHRoYXQuc3ZnYVNyYyA9PSBzdmdhU3JjLHRoYXQuc3ZnYVNyYywgc3ZnYVNyYylcclxuXHRcdFx0XHRcdFx0XHQvLyBcdHRoYXQuc3ZnYVNyYyA9IHN2Z2FTcmNcclxuXHRcdFx0XHRcdFx0XHQvLyBcdHRoYXQuaXNTdmdhID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0dGhhdC5naWZ0R2l2aW5nKCk7XHJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dW5pLnNlbmRTb2NrZXRNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0XHRcdFwidXNlcklkXCI6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRcdFx0c2VsbGVySWQ6dGhhdC5pZCwgXG5cdFx0XHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRcdFx0bnVtOiAodGhhdC5jb3VudCsxKSxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICh0eXBlID09IDM/dGhhdC5jb250ZW50OiB0aGF0LmltZyksXHJcblx0XHRcdFx0XHRcdHN2Z2FTcmM6IHN2Z2FTcmM/c3ZnYVNyYzonJyxcblx0XHRcdFx0XHRcdFwidG9waWNcIjpcIm1lc3NhZ2VcIlxuXHRcdFx0XHRcdH0pfSlcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdHRoYXQuc29jaWFsQ29uc3VtcHRpb24odHlwZSk7XHJcblx0XHRcdFx0XHRcblx0XHRcdFx0XHR0aGF0LmlzT3BlbiA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoYXQuaXNCaWFvcWluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoYXQuc2hvdzEgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGF0LnVzZXJCYWxhbmNlKCk7XHJcblx0XHRcdFx0XHR0aGF0LmVkaXRvckN0eC5jbGVhcigpO1xuXHRcdFx0XHRcdHRoYXQuY29udGVudD1cIlwiXG5cdFx0XHRcdFx0dGhhdC5jb3VudCA9IDA7XG5cdFx0XHRcdFx0dGhhdC5udW0gPSAxO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly/mlbDnu4Tlr7nosaHljrvph41cblx0XHRcdGFycmF5VW5pcXVlIChhcnIsIG5hbWUpIHtcblx0XHRcdFx0dmFyIGhhc2ggPSB7fTtcblx0XHRcdFx0cmV0dXJuIGFyci5yZWR1Y2UoZnVuY3Rpb24gKGl0ZW0sIG5leHQpIHtcblx0XHRcdFx0XHRoYXNoW25leHRbbmFtZV1dXG5cdFx0XHRcdFx0XHQ/IFwiXCJcblx0XHRcdFx0XHRcdDogKGhhc2hbbmV4dFtuYW1lXV0gPSB0cnVlICYmIGl0ZW0ucHVzaChuZXh0KSk7XG5cdFx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHRcdH0sIFtdKTtcblx0XHRcdH0sXG5cdFx0XHRhc3luYyBnZXRDaGF0TGlzdCh0eXBlKXtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdGNvbnN0IHsgY29kZSwgZGF0YSAsIG1zZyB9ID0gYXdhaXQgdGhpcy4kYXBpLmZpbmRDaGF0TGlzdCh7XG5cdFx0XHRcdFx0bGltaXQ6IDEwLCBcblx0XHRcdFx0XHRwYWdlOiB0aGlzLnBhZ2UsXG5cdFx0XHRcdFx0Zm9ybVVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0dG9Vc2VySWQ6IHRoaXMuaWR9KTtcblx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdHRoaXMudG90YWw9IGRhdGEudG90YWw7XG5cdFx0XHRcdFx0aWYodHlwZSA9PSAxKXtcblx0XHRcdFx0XHRcdHRoaXMuY2hhdExpc3Q9IHRoYXQuYXJyYXlVbmlxdWUoWy4uLmRhdGEubGlzdCwuLi50aGlzLmNoYXRMaXN0XSwnbXNnSWQnKTtcblx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdHRoaXMuY2hhdExpc3Q9IGRhdGEubGlzdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZih0eXBlID09IDEpe1xuXHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0bGV0IHdyYXBwZXIgPSB1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLmluKHRoaXMpLnNlbGVjdCgnI3dyYXBwZXInKTtcblx0XHRcdFx0XHRcdHdyYXBwZXIuZmllbGRzKHtcblx0XHRcdFx0XHRcdFx0c2l6ZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0c2Nyb2xsT2Zmc2V0OiB0cnVlXG5cdFx0XHRcdFx0XHR9LCBkYXRhID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJ3cmFwcGVyXCIsZGF0YSlcblx0XHRcdFx0XHRcdFx0dGhhdC53cmFwcGVyU2Nyb2xsSGVpZ2h0ID0gZGF0YS5zY3JvbGxIZWlnaHQqNlxuXHRcdFx0XHRcdFx0fSkuZXhlYygpXG5cdFx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0fSwxMDApXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRhc3luYyBnZXRVc2VySW5mbygpIHtcblx0XHRcdFx0Y29uc3QgeyBjb2RlLCBkYXRhICwgbXNnIH0gPSBhd2FpdCB0aGlzLiRhcGkuZmluZE90aGVyVXNlckluZm8oe3VzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsc2VsbGVySWQ6IHRoaXMuaWQsfSk7XG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHR0aGlzLnVzZXJJbmZvID0gZGF0YTtcblx0XHRcdFx0XHR0aGlzLnVzZXJJbmZvLnhpYW5nY2UgPSBbXTtcclxuXHRcdFx0XHRcdGlmKGRhdGEucmVzZXJ2ZWQxKXtcclxuXHRcdFx0XHRcdFx0dGhpcy51c2VySW5mby54aWFuZ2NlID0gZGF0YS5yZXNlcnZlZDEuc3BsaXQoXCIsXCIpXHJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5pdGVtTGlzdCA9IFtcIuafpeeci1RB55qE5Li76aG1XCIsIChkYXRhLmlzQ2FyZSA9PSAwP1wi5YWz5rOoXCI6XCLlj5bmtojlhbPms6hcIiksIFwi5Li+5oqlXCIsIChkYXRhLmlzQmxhY2sgPT0gMD9cIuWKoOWFpem7keWQjeWNlVwiOlwi56e76Zmk6buR5ZCN5Y2VXCIpXTtcblx0XHRcdFx0XHR0aGlzLnRpdGxlID0gZGF0YS5uaWNrbmFtZSsoZGF0YS5pc09ubGluZSA9PSAxP1wiXyjlnKjnur8pXCI6XCJfKOemu+e6vylcIik7XHJcblx0XHRcdFx0XHRpZihkYXRhLm9wZXJyb2xlID09IDApe1xyXG5cdFx0XHRcdFx0XHR0aGlzLmdldENvbmZpZ0RhdGEoKTtcclxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogbXNnLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0XG5cdFx0XHQvL+Wtl+WFuOafpeivolxuXHRcdFx0YXN5bmMgZ2V0Q29uZmlnRGF0YSgpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdGxldCByZXMxID0gYXdhaXQgdGhhdC4kYXBpLmdldENvbmZpZ0RhdGEoe2RpY3RUeXBlOiAnQ09ORklHX01FU1NBR0VfTk9USUNFJ30pO1xuXHRcdFx0XHR0aGF0Lmxpc3QgPSBbcmVzMS5kYXRhLmNvbnRlbnRdXG5cdFx0XHR9LFxuXHRcdFx0Ly/mmK/lkKblhbPms6hcblx0XHRcdGFzeW5jIHRvQ2FyZU9yQ2FuY2VsKCkge1xuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2cgfSA9IGF3YWl0IHRoaXMuJGFwaS5jYXJlT3JDYW5jZWwoe1xuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0c2VsbGVySWQ6IHRoaXMuaWQsXG5cdFx0XHRcdFx0dHlwZTogdGhpcy51c2VySW5mby5pc0NhcmUgPT0gMD8xOjJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdHRpdGxlOiB0aGlzLnVzZXJJbmZvLmlzQ2FyZSA9PSAwP1wi5YWz5rOo5oiQ5YqfXCI6XCLlj5bmtojlhbPms6hcIlxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdFx0dGhpcy5nZXRVc2VySW5mbygxKVxuXHRcdFx0XHRcdH0sMjAwMClcblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogbXNnLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly/mmK/lkKbliqDlhaXpu5HlkI3ljZVcblx0XHRcdGFzeW5jIHRvWWljaHUoKSB7XG5cdFx0XHRcdGNvbnN0IHsgY29kZSwgZGF0YSB9ID0gYXdhaXQgdGhpcy4kYXBpLmFkZE9yUmVtb3ZlQmxhY2tsaXN0KHtcblx0XHRcdFx0XHR1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRcdHNlbGxlcklkOiB0aGlzLmlkLFxuXHRcdFx0XHRcdHR5cGU6IHRoaXMudXNlckluZm8uaXNCbGFjayA9PSAwPzE6MlxuXHRcdFx0XHR9KVxuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTp0aGlzLnVzZXJJbmZvLmlzQmxhY2sgPT0gMT9cIuenu+mZpOaIkOWKn1wiOlwi5Yqg5YWl5oiQ5YqfXCJcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdHRoaXMuZ2V0SW5mbygpO1xuXHRcdFx0XHRcdH0sMjAwMClcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdFxuXHRcdFx0Ly/op4bpopHor63pn7Por7TmmI5cblx0XHRcdGFzeW5jIG9wZW5TaGlwaW5nKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0Y29uc3Qge2NvZGUsIGRhdGEgfSA9IGF3YWl0IHRoYXQuJGFwaS5jb3N0RGVzY3JpcHRpb24oe30pO1xuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dW5pLnNob3dBY3Rpb25TaGVldCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLor63pn7Mv6KeG6aKR6YCa6K+dXCIsXG5cdFx0XHRcdFx0XHRpdGVtTGlzdDogW1wi6K+t6Z+z6YCa6K+d77yIXCIrZGF0YS52b2ljZUNvaW5zK1wi6YeR5biBLzHliIbpkp/vvIlcIixcIuinhumikemAmuivne+8iFwiK2RhdGEudmlkZW9Db2lucytcIumHkeW4gS8x5YiG6ZKf77yJXCJdLFxuXHRcdFx0XHRcdFx0c3VjY2VzcyhyZXMpe1xuXHRcdFx0XHRcdFx0XHRpZihyZXMudGFwSW5kZXggPT0gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzT25saW5lID09IDApe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLlvZPliY3nlKjmiLflt7Lnprvnur9cIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcclxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LnVzZXJJbmZvLmlzQmxhY2sgPT0gMSl7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5b2T5YmN55So5oi35piv6buR5ZCN5Y2V77yM5bey6ZmQ5Yi2XCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LmJhbGFuY2VJbmZvLnVzZXJCYWxhbmNlIDw9IDApe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzQ29pbnM9dHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzVG9nZ2xlID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNPcGVuID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmlzQmlhb3FpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zZW5kU29ja2V0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFwidXNlcklkXCI6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxsZXJJZDogdGhhdC5pZCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogMTgsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwidG9waWNcIjpcIm1lc3NhZ2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0fSl9KVxyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BpcGVpL3NoaXBpbi9kZXRhaWw/dHlwZT0zJmlkPVwiK3RoYXQuaWRcclxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdH1lbHNlIGlmKHJlcy50YXBJbmRleCA9PSAxKXtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKHRoYXQudXNlckluZm8uaXNPbmxpbmUgPT0gMCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuW9k+WJjeeUqOaIt+W3suemu+e6v1wiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmKHRoYXQudXNlckluZm8uaXNCbGFjayA9PSAxKXtcblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLlvZPliY3nlKjmiLfmmK/pu5HlkI3ljZXvvIzlt7LpmZDliLZcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmKHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLnNleCA9PSAxKXtcblx0XHRcdFx0XHRcdFx0XHRcdGlmKHRoYXQuYmFsYW5jZUluZm8udXNlckJhbGFuY2UgPD0gMCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNDb2lucz10cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNUb2dnbGUgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5pc09wZW4gPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuaXNCaWFvcWluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNlbmRTb2NrZXRNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XCJ1c2VySWRcIjogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGxlcklkOiB0aGF0LmlkLCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogMTksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwidG9waWNcIjpcIm1lc3NhZ2VcIlxyXG5cdFx0XHRcdFx0XHRcdFx0fSl9KVxuXHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9waXBlaS9zaGlwaW4vZGV0YWlsP3R5cGU9NCZpZD1cIit0aGF0LmlkXHJcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH0sXG5cdFx0XHR0b1NoZWV0MSgpIHtcblx0XHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRcdHRoYXQuZ2V0Y29zdERlc2NyaXB0aW9uKCk7XG5cdFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdHRvU2hlZXQoKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR1bmkuc2hvd0FjdGlvblNoZWV0KHtcblx0XHRcdFx0XHRpdGVtTGlzdDogdGhpcy5pdGVtTGlzdCxcblx0XHRcdFx0XHRzdWNjZXNzKHJlcyl7XG5cdFx0XHRcdFx0XHRpZihyZXMudGFwSW5kZXggPT0gMCl7XG5cdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BlaXdhbi9kZXRhaWw/aWQ9XCIrdGhhdC5pZFxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fWVsc2UgaWYocmVzLnRhcEluZGV4ID09IDEpe1xuXHRcdFx0XHRcdFx0XHR0aGF0LnRvQ2FyZU9yQ2FuY2VsKClcblx0XHRcdFx0XHRcdH1lbHNlIGlmKHJlcy50YXBJbmRleCA9PSAyKXtcblx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvdXNlcnMvZmVlZGJhY2svaW5kZXg/dHlwZT0yJmlkPVwiK3RoYXQuaWRcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1lbHNlIGlmKHJlcy50YXBJbmRleCA9PSAzKXtcblx0XHRcdFx0XHRcdFx0dGhhdC50b1lpY2h1KClcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0aW5wdXRWYWx1ZShlKSB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUpXG5cdFx0XHR9LFxuXHRcdH0sXHJcblx0XHRkZXN0cm95ZWQoKSB7XHJcblx0XHRcdHVuaS4kb2ZmKFwidG9DaGF0T2JqXCIpXHJcblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkIGxhbmc9XCJzY3NzXCI+XG4uY2hhdHtcblx0LmdpZnRQb3B1cHtcblx0XHRwYWRkaW5nOiA0MHJweCAyNXJweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHQudGl0bGV7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0Zm9udC1zaXplOiAzNnJweDtcblx0XHRcdGNvbG9yOiAjMzMzMzMzO1xuXHRcdFx0aW1hZ2V7XG5cdFx0XHRcdHdpZHRoOiA1MHJweDtcblx0XHRcdFx0aGVpZ2h0OiA1MHJweDtcblx0XHRcdFx0cmlnaHQ6IDIwcnB4O1xuXHRcdFx0XHR0b3A6IDQwcnB4O1xuXHRcdFx0XHR6LWluZGV4OiAyO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5jb250ZW50e1xuXHRcdFx0d2lkdGg6IDExMCU7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNDBycHg7XG5cdFx0XHRzd2lwZXJ7XG5cdFx0XHRcdGhlaWdodDogNDUwcnB4O1xuXHRcdFx0fVxuXHRcdFx0LmluZGljYXRvci1kb3Rze1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdC5pbmRpY2F0b3ItZG90cy1pdGVte1xuXHRcdFx0XHRcdHdpZHRoOiAxMnJweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDEycnB4O1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICMwMDAwMDA7XG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0XHRcdG9wYWNpdHk6IDAuNDtcblx0XHRcdFx0XHRtYXJnaW46IDAgNnJweDtcblx0XHRcdFx0XHQmLmluZGljYXRvci1kb3RzLWFjdGl2ZXtcblx0XHRcdFx0XHRcdHdpZHRoOiAzMHJweDtcblx0XHRcdFx0XHRcdGhlaWdodDogMTJycHg7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAjMDAwMDAwO1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNnJweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5pdGVte1xuXHRcdFx0XHR3aWR0aDogMTY2cnB4O1xuXHRcdFx0XHRoZWlnaHQ6IDE4MHJweDtcblx0XHRcdFx0YmFja2dyb3VuZDogI0Y1RjVGNTtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMjBycHg7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNGNUY1RjU7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0cGFkZGluZzogNXJweDtcblx0XHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMTNycHg7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDMwcnB4O1xuXHRcdFx0XHRpbWFnZXtcblx0XHRcdFx0XHRoZWlnaHQ6IDkwcnB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdC50eHR7XG5cdFx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAyNHJweDtcblx0XHRcdFx0XHRjb2xvcjogIzMzMzMzMztcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiA1cnB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdC5udW17XG5cdFx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjJycHg7XG5cdFx0XHRcdFx0Y29sb3I6ICM5OTk7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogNXJweDtcblx0XHRcdFx0fVxuXHRcdFx0XHQmLW9ue1xuXHRcdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0LmZke1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI0VBRUFFQTtcblx0XHRcdHBhZGRpbmctdG9wOiA0MHJweDtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdC5he1xuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRmb250LXNpemU6IDMwcnB4O1xuXHRcdFx0XHRjb2xvcjogIzMzMzMzMztcblx0XHRcdH1cblx0XHRcdC5ie1xuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRmb250LXNpemU6IDI0cnB4O1xuXHRcdFx0XHRjb2xvcjogIzMzMzMzMztcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDQwcnB4O1xuXHRcdFx0XHRcdGhlaWdodDogNDBycHg7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogLTFweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmN7XG5cdFx0XHRcdGlucHV0e1xuXHRcdFx0XHRcdHdpZHRoOiAxNjZycHg7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA4MHJweDtcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI0NDQ0NDQztcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRcdGhlaWdodDogODBycHg7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAzMHJweDtcblx0XHRcdFx0XHRjb2xvcjogIzMzMzMzMztcblx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmJ0bntcblx0XHRcdFx0d2lkdGg6IDE2NnJweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDgwcnB4O1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgIzAwMDAwMCwgIzNEM0IzOCk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDBweCA0cnB4IDE4cnB4IDBweCByZ2JhKDQyLDQxLDM5LDAuMzQpO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA4MHJweDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRoZWlnaHQ6IDgwcnB4O1xuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRmb250LXNpemU6IDMwcnB4O1xuXHRcdFx0XHRjb2xvcjogI0ZGRkZGRjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Ji1uYXZiYXJ7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0LnNsb3Qtd3JhcHtcblx0XHRcdG1hcmdpbi1yaWdodDogMzBycHg7XG5cdFx0fVxuXHR9XG5cdCYtaGR7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiA3MHJweDtcblx0XHRiYWNrZ3JvdW5kOiAjRkZFQkVCO1xuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0Zm9udC1zaXplOiAyNHJweDtcblx0XHRjb2xvcjogIzIyMjIyMjtcblx0XHRsaW5lLWhlaWdodDogNzBycHg7XG5cdFx0cGFkZGluZzogMCAxMHJweDtcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXHQmLWJke1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDAgMjVycHg7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdC8qICNpZmRlZiBBUFAtUExVUyAqL1xyXG5cdFx0LyogI2VuZGlmICovXG5cdFx0aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTkwcnB4IC0gODhycHggLSA3MHJweCk7XG5cdFx0Ji1vbntcblx0XHRcdGhlaWdodDogY2FsYygxMDB2aCAtIDE5MHJweCAtIDg4cnB4IC0gNzBycHggLSAyNjBycHgpO1xuXHRcdH1cblx0XHQmLWFjdGl2ZXtcblx0XHRcdGhlaWdodDogY2FsYygxMDB2aCAtIDEyMHJweCAtIDg4cnB4IC0gNzBycHgpO1xuXHRcdH1cblx0XHQmLWFjdGl2ZTF7XG5cdFx0XHRoZWlnaHQ6IGNhbGMoMTAwdmggLSAxMjBycHggLSA4OHJweCAtIDcwcnB4IC0gMjYwcnB4KTtcblx0XHR9XHJcblx0XHQuY2hhbmd5b25ne1xyXG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0XHQubGl7XHJcblx0XHRcdFx0cGFkZGluZzogMCAyMHJweDtcclxuXHRcdFx0XHRsaW5lLWhlaWdodDogNTBycHg7XHJcblx0XHRcdFx0YmFja2dyb3VuZDogIzAwMDAwMDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxMHJweDtcclxuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMjRycHg7XHJcblx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Ly8g5Liq5Lq65L+h5oGvXHJcblx0XHQuaW5mb3tcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdGJhY2tncm91bmQ6ICNGRkZGRkY7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcnB4O1xyXG5cdFx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdFx0bWFyZ2luLXRvcDogMjBycHg7XHJcblx0XHRcdC5oZHtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdFx0LmF2YXRhcntcclxuXHRcdFx0XHRcdHdpZHRoOiAxMDBycHg7XHJcblx0XHRcdFx0XHRoZWlnaHQ6IDEwMHJweDtcclxuXHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcclxuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMTVycHg7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC51c2Vye1xyXG5cdFx0XHRcdFx0ZmxleDogMTtcclxuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0XHRcdC5je1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogMTY1cnB4O1xyXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IDk1cnB4O1xyXG5cdFx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDI4cnB4O1xyXG5cdFx0XHRcdFx0XHRjb2xvcjogI0ZGRkZGRjtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogdXJsKEAvc3RhdGljL2ljb24tYm9mYW5nLnBuZykgY2VudGVyIHRvcCBuby1yZXBlYXQ7XHJcblx0XHRcdFx0XHRcdGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDg4cnB4O1xyXG5cdFx0XHRcdFx0XHR0ZXh0LWluZGVudDogOTBycHg7XHJcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0XHRcdFx0cmlnaHQ6IC0yMHJweDtcclxuXHRcdFx0XHRcdFx0dG9wOiAwO1xyXG5cdFx0XHRcdFx0XHR6LWluZGV4OiAyO1xyXG5cdFx0XHRcdFx0XHQmLW9ue1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6IHVybChAL3N0YXRpYy9pY29uLXphbnRpbmcucG5nKSBjZW50ZXIgdG9wIG5vLXJlcGVhdDtcclxuXHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC50d297XHJcblx0XHRcdFx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHRcdFx0XHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdFx0XHRcdFx0LnRhZ3tcclxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwIDIwcnB4O1xyXG5cdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblx0XHRcdFx0XHRcdFx0Zm9udC1zaXplOiAyMnJweDtcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogIzY2NjY2NjtcclxuXHRcdFx0XHRcdFx0XHRsaW5lLWhlaWdodDogNDBycHg7XHJcblx0XHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNDBycHg7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZDogI0YyRjJGMjtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcclxuXHRcdFx0XHRcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Lm9uZXtcclxuXHRcdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHRcdFx0LnRpdGxle1xyXG5cdFx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblx0XHRcdFx0XHRcdFx0Zm9udC1zaXplOiAzNnJweDtcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogIzIyMjIyMjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQudmlwe1xyXG5cdFx0XHRcdFx0XHRcdHdpZHRoOiA2MHJweDtcclxuXHRcdFx0XHRcdFx0XHRsaW5lLWhlaWdodDogMzJycHg7XHJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZDogdXJsKEAvc3RhdGljL3ZpcC1iZy5wbmcpIGNlbnRlciB0b3Agbm8tcmVwZWF0O1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuXHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHRcdFx0XHRcdFx0XHRmb250LXNpemU6IDIwcnB4O1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xyXG5cdFx0XHRcdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdC5wZWl3YW17XHJcblx0XHRcdFx0XHRcdFx0d2lkdGg6IDEwMHJweDtcclxuXHRcdFx0XHRcdFx0XHRsaW5lLWhlaWdodDogNDBycHg7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xyXG5cdFx0XHRcdFx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCAjMDAwMDAwLCAjM0QzQjM4KTtcclxuXHRcdFx0XHRcdFx0XHRib3gtc2hhZG93OiAwcHggNHJweCAxOHJweCAwcHggcmdiYSg0Miw0MSwzOSwwLjM0KTtcclxuXHRcdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAyMHJweDtcclxuXHRcdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHRcdFx0XHRcdFx0XHRmb250LXNpemU6IDIycnB4O1xyXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdC5zZXh7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xyXG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAzMHJweDtcclxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IDMwcnB4O1xyXG5cdFx0XHRcdFx0XHRcdGltYWdle1xyXG5cdFx0XHRcdFx0XHRcdFx0d2lkdGg6IDMwcnB4O1xyXG5cdFx0XHRcdFx0XHRcdFx0aGVpZ2h0OiAzMHJweDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0LmJke1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdFx0XHRcdC5ke1xyXG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjRycHg7XHJcblx0XHRcdFx0XHRjb2xvcjogIzIyMjIyMjtcclxuXHRcdFx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC5saXN0e1xyXG5cdFx0XHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHRcdGltYWdle1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogMTUwcnB4O1xyXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IDE1MHJweDtcclxuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBycHg7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcclxuXHRcdFx0XHRcdFx0bWFyZ2luLXRvcDogMjBycHg7XHJcblx0XHRcdFx0XHRcdCY6Zmlyc3QtY2hpbGR7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDA7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC50YWd7XHJcblx0XHRcdFx0XHRcdHBhZGRpbmc6IDAgMzBycHg7XHJcblx0XHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA1MHJweDtcclxuXHRcdFx0XHRcdFx0aGVpZ2h0OiA1MHJweDtcclxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogIzAwMDAwMDtcclxuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTBycHg7XHJcblx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMjRycHg7XHJcblx0XHRcdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xyXG5cdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMjBycHg7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdFx0XHRcdFx0XHQmOmZpcnN0LWNoaWxke1xyXG5cdFx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XG5cdFx0Lml0ZW17XG5cdFx0XHRwYWRkaW5nOiAyMHJweCAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRcdFx0LmZse1xuXHRcdFx0XHR3aWR0aDogODBycHg7XG5cdFx0XHRcdGhlaWdodDogODBycHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmZye1xuXHRcdFx0XHRmbGV4OiAxO1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHQubmFtZXtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0XHRcdFx0Y29sb3I6ICMyMjIyMjI7XG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRcdHRleHR7XG5cdFx0XHRcdFx0XHR3aWR0aDogMTAwcnB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDQwcnB4O1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsICMwMDAwMDAsICMzRDNCMzgpO1xuXHRcdFx0XHRcdFx0Ym94LXNoYWRvdzogMHB4IDRycHggMThycHggMHB4IHJnYmEoNDIsNDEsMzksMC4zNCk7XG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA0MHJweDtcblx0XHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDIycnB4O1xuXHRcdFx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAzMHJweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0LnZpZGVve1xuXHRcdFx0XHRcdHdpZHRoOiA0MDBycHg7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAyMHJweDtcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdFx0XHRwYWRkaW5nOiAyMHJweDtcblx0XHRcdFx0XHRpbWFnZXtcblx0XHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQuaW1ne1xuXHRcdFx0XHRcdHdpZHRoOiA0MDBycHg7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAyMHJweDtcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdFx0XHRwYWRkaW5nOiAyMHJweDtcblx0XHRcdFx0XHRpbWFnZXtcblx0XHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQueWlucGluZ3tcblx0XHRcdFx0XHR3aWR0aDogMjAwcnB4O1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICNGRkZGRkY7XG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBycHg7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMjBycHg7XG5cdFx0XHRcdFx0cGFkZGluZzogMjBycHg7XG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRcdGNvbG9yOiAjMDAwO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMzBycHg7XG5cdFx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0XHR3aWR0aDogNTBycHg7XG5cdFx0XHRcdFx0XHRoZWlnaHQ6IDUwcnB4O1xuXHRcdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0LmdpZnR7XG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdFx0XHRmb250LXNpemU6IDI0cnB4O1xuXHRcdFx0XHRcdGNvbG9yOiAjOTk5OTk5O1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA0NHB4O1xuXHRcdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdFx0XHRpbWFnZXtcblx0XHRcdFx0XHRcdHdpZHRoOiA2MHJweDtcblx0XHRcdFx0XHRcdG1hcmdpbjogMCAxMHJweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGV4dHtcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAxMHJweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0LmRlc2N7XG5cdFx0XHRcdFx0bWF4LXdpZHRoOiA0MDBycHg7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAzMHJweCAwcHggMzBycHggMzBycHg7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMjBycHg7XG5cdFx0XHRcdFx0cGFkZGluZzogMzBycHg7XG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdFx0XHRmb250LXNpemU6IDMwcnB4O1xuXHRcdFx0XHRcdGNvbG9yOiAjMjIyMjIyO1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA0OHJweDtcblx0XHRcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0Ji1vbntcblx0XHRcdFx0LmZse1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0XHRcdH1cblx0XHRcdFx0LmZye1xuXHRcdFx0XHRcdC5kZXNje1xuXHRcdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogI0VBRUJFQjtcblx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDBweCAzMHJweCAzMHJweCAzMHJweDtcblx0XHRcdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0LnZpZGVve1xuXHRcdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQuaW1ne1xuXHRcdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC55aW5waW5ne1xyXG5cdFx0XHRcdFx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0LnZpZGVve1xuXHRcdFx0XHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQuZ2lmdHtcblx0XHRcdFx0XHRcdGZsb2F0OiByaWdodDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Ji1mZHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtaW4taGVpZ2h0OiAxMjBycHg7XG5cdFx0YmFja2dyb3VuZDogI0Y2RjZGNjtcblx0XHQuYXtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiAxMjBycHg7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdHBhZGRpbmc6IDAgMjBycHg7XG5cdFx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdFx0Lmx1eWlue1xuXHRcdFx0XHR3aWR0aDogNTBycHg7XG5cdFx0XHRcdGhlaWdodDogNTBycHg7XG5cdFx0XHRcdGltYWdle1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdFx0fVxuXHRcdFx0fVxyXG5cdFx0XHQuYmlhb3Fpbmd7XHJcblx0XHRcdFx0d2lkdGg6IDUwcnB4O1xyXG5cdFx0XHRcdGhlaWdodDogNTBycHg7XHJcblx0XHRcdFx0aW1hZ2V7XHJcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0XHRcdGhlaWdodDogMTAwJTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cblx0XHRcdC5pbnB1dHtcblx0XHRcdFx0ZmxleDogMTtcclxuXHRcdFx0XHQvLyBtYXgtd2lkdGg6IDQwMHJweDtcblx0XHRcdFx0aGVpZ2h0OiA4MHJweDtcblx0XHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBycHg7XG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xuXHRcdFx0XHRmb250LXNpemU6IDMwcnB4O1xuXHRcdFx0XHQuc3Rhcntcblx0XHRcdFx0XHRmbGV4OiAxO1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA4MHJweDtcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdFx0fVxuXHRcdFx0XHRlZGl0b3IsaW5wdXR7XG5cdFx0XHRcdFx0ZmxleDogMTtcblx0XHRcdFx0XHRoZWlnaHQ6IDUwcnB4O1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiA1MHJweDtcblx0XHRcdFx0XHRtaW4taGVpZ2h0OiA1MHJweDtcblx0XHRcdFx0XHRmb250LXN0eWxlOiBub3JtYWwgIWltcG9ydGFudDsgXG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xuXHRcdFx0XHR9XG5cdFx0XHRcdC5tb3Jle1xuXHRcdFx0XHRcdG1hcmdpbjogMCAyMHJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmJ0bntcblx0XHRcdFx0d2lkdGg6IDEwMHJweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDcwcnB4O1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgIzAwMDAwMCwgIzNEM0IzOCk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDBweCA0cnB4IDE4cnB4IDBweCByZ2JhKDQyLDQxLDM5LDAuMzQpO1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MHJweDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRmb250LXNpemU6IDI4cnB4O1xuXHRcdFx0XHRjb2xvcjogI0ZGRkZGRjtcclxuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xuXHRcdFx0fVxuXHRcdH1cblx0XHQuYntcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiAyNjBycHg7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNFMkUyRTI7XG5cdFx0XHRwYWRkaW5nOiAwIDQ1cnB4O1xuXHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdC5kdHtcclxuXHRcdFx0XHRmbGV4OiAxO1xyXG5cdFx0XHRcdG1heC13aWR0aDogMjAwcnB4O1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiAzMHJweDtcclxuXHRcdFx0XHRpbWFnZXtcclxuXHRcdFx0XHRcdHdpZHRoOiAxMDBycHg7XHJcblx0XHRcdFx0XHRoZWlnaHQ6IDEwMHJweDtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxuXHRcdH1cclxuXHRcdC5je1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdFx0aGVpZ2h0OiAyNjBycHg7XHJcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XHJcblx0XHRcdG92ZXJmbG93LXg6IGhpZGRlbjtcclxuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNFMkUyRTI7XHJcblx0XHRcdHBhZGRpbmctbGVmdDogMzVycHg7XHJcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0XHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFye1xyXG5cdFx0XHRcdG9wYWNpdHk6IDA7XHJcblx0XHRcdH1cclxuXHRcdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7XHJcblx0XHRcdFx0b3BhY2l0eTogMDtcclxuXHRcdFx0fVxyXG5cdFx0XHRpbWFnZXtcclxuXHRcdFx0XHR3aWR0aDogMjRweDtcclxuXHRcdFx0XHRoZWlnaHQ6IDI0cHg7XHJcblx0XHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDogNXJweDtcclxuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiA1cnB4O1xyXG5cdFx0XHRcdG1hcmdpbi1yaWdodDogN3JweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxuXHR9XG59XG48L3N0eWxlPlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///67\n"); /***/ }), /* 68 */ @@ -4600,7 +4600,7 @@ var render = function () { attrs: { _i: 6 }, on: { click: function ($event) { - return _vm.getLocation() + return _vm.toGetLocation() }, }, }, @@ -5014,7 +5014,7 @@ var render = function () { attrs: { _i: 52 }, on: { click: function ($event) { - return _vm.getLocation() + return _vm.toGetLocation() }, }, }, @@ -5696,7 +5696,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rua /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 3));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 68));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/js_sdk/wa-permission/permission.js */ 74));\nvar _methods;\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 info: {},\n commentList1: [],\n commentList2: [],\n isCoins: false,\n isDashan: false,\n isPopup: false,\n current: 0,\n city: \"\",\n page1: 1,\n page2: 1,\n total1: 1,\n total2: 1,\n balanceInfo: {},\n show: false,\n list: [{\n 'name': '热门'\n }, {\n 'name': '附近'\n }],\n activeStyle: {\n 'fontSize': '35rpx'\n },\n userInfo: {},\n goldInfo: {}\n };\n },\n onPullDownRefresh: function onPullDownRefresh() {\n var that = this;\n if (uni.getStorageSync(\"userInfo\").id) {\n uni.$emit(\"openSocket\");\n }\n if (!that.city) {\n return;\n }\n setTimeout(function () {\n if (that.current == 0) {\n if (that.commentList1.length <= that.total1) {\n that.page1++;\n setTimeout(function () {\n that.customerRecommendList(1);\n }, 1000);\n }\n } else {\n if (that.commentList2.length <= that.total2) {\n that.page2++;\n setTimeout(function () {\n that.nearbyCustomerList(1);\n }, 1000);\n }\n }\n uni.stopPullDownRefresh();\n }, 2000);\n },\n onLoad: function onLoad() {},\n onReady: function onReady() {\n var that = this;\n uni.$on(\"clickTap\", function (res) {\n __f__(\"log\", res, \" at pages/index/index.vue:150\");\n that.city = res.name;\n if (that.current == 0) {\n that.page1 = 1;\n that.commentList1 = [];\n that.customerRecommendList();\n } else {\n that.page2 = 1;\n that.commentList2 = [];\n that.nearbyCustomerList();\n }\n });\n uni.$on(\"closeSharePopup\", function (res) {\n that.isPopup = false;\n that.isDashan = false;\n that.isCoins = false;\n });\n uni.$on(\"openCoinsPopup\", function (res) {\n that.isCoins = res;\n });\n uni.$on(\"onPopup\", function (res) {\n if (res == 1) {\n that.show = false;\n }\n });\n },\n onShow: function onShow() {\n this.getUserInfo();\n if (uni.getStorageSync(\"userInfo\").id) {\n if (!uni.getStorageSync(\"isOpen\")) {\n uni.$emit(\"openSocket\");\n }\n }\n },\n onReachBottom: function onReachBottom() {\n var that = this;\n uni.showLoading({\n title: \"加载中\"\n });\n if (that.current == 0) {\n if (that.commentList1.length <= that.total1) {\n that.page1++;\n setTimeout(function () {\n that.customerRecommendList(1);\n }, 1000);\n }\n } else {\n if (that.commentList2.length <= that.total2) {\n that.page2++;\n setTimeout(function () {\n that.nearbyCustomerList(1);\n }, 1000);\n }\n }\n },\n methods: (_methods = {\n getLocation: function getLocation() {\n var that = this;\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.ACCESS_FINE_LOCATION', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n uni.removeStorageSync(\"jingweiInfo\");\n // that.getLocation();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/index/index.vue:225\");\n });\n that.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');\n return;\n } else {\n that.getLocation();\n }\n },\n //实时上传轨迹\n trackUpload: function trackUpload(res, type) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _yield$_this$$api$tra, code, data;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.$api.trackUpload({\n userId: uni.getStorageSync(\"userInfo\").id,\n lat: res.latitude,\n lon: res.longitude\n });\n case 2:\n _yield$_this$$api$tra = _context.sent;\n code = _yield$_this$$api$tra.code;\n data = _yield$_this$$api$tra.data;\n if (code == 200) {\n if (type == 1) {\n uni.navigateTo({\n url: \"/pages/pipei/tongcheng/index\"\n });\n } else if (type == 2) {\n uni.navigateTo({\n url: \"/pages/pipei/yuyin/index\"\n });\n } else if (type == 3) {\n uni.navigateTo({\n url: \"/pages/pipei/shipin/index\"\n });\n }\n }\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n //检查次数\n userBalance: function userBalance() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var _yield$_this2$$api$us, code, data;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.$api.userBalance({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this2$$api$us = _context2.sent;\n code = _yield$_this2$$api$us.code;\n data = _yield$_this2$$api$us.data;\n if (code == 200) {\n _this2.balanceInfo = data;\n }\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n recorderAuthModal: function recorderAuthModal() {\n var that = this;\n uni.showModal({\n title: '定位权限说明',\n content: '便于您使用该功能在当前位置查询所在门店,请您确认授权,否则无法使用该功能。',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n requestAndroidPermission: function requestAndroidPermission(permisionID) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var that, result;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n that = _this3;\n _context3.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context3.sent;\n if (result != 1) {\n that.recorderAuthModal();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n //首页附近\n nearbyCustomerList: function nearbyCustomerList(type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var _yield$_this4$$api$ne, code, data, msg;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n __f__(\"log\", uni.getStorageSync(\"jingweiInfo\").new_city, \" at pages/index/index.vue:294\");\n _context4.next = 3;\n return _this4.$api.nearbyCustomerList({\n userId: uni.getStorageSync(\"userInfo\").id,\n nickname: \"\",\n startAge: \"\",\n endAge: \"\",\n city: uni.getStorageSync(\"jingweiInfo\").new_city ? uni.getStorageSync(\"jingweiInfo\").new_city : uni.getStorageSync(\"jingweiInfo\").city,\n lat: uni.getStorageSync(\"jingweiInfo\").latitude,\n lon: uni.getStorageSync(\"jingweiInfo\").longitude,\n page: _this4.page2,\n limit: 20\n });\n case 3:\n _yield$_this4$$api$ne = _context4.sent;\n code = _yield$_this4$$api$ne.code;\n data = _yield$_this4$$api$ne.data;\n msg = _yield$_this4$$api$ne.msg;\n if (type == 1) {\n uni.hideLoading();\n }\n if (code == 200) {\n _this4.total2 = data.total;\n _this4.commentList2 = _this4.arrayUnique([].concat((0, _toConsumableArray2.default)(_this4.commentList2), (0, _toConsumableArray2.default)(data.list)), 'id');\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n //首页推荐\n customerRecommendList: function customerRecommendList(type) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var _yield$_this5$$api$cu, code, data, msg;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return _this5.$api.customerRecommendList({\n userId: uni.getStorageSync(\"userInfo\").id,\n nickname: \"\",\n startAge: \"\",\n endAge: \"\",\n lat: uni.getStorageSync(\"jingweiInfo\").latitude,\n lon: uni.getStorageSync(\"jingweiInfo\").longitude,\n city: uni.getStorageSync(\"jingweiInfo\").new_city ? uni.getStorageSync(\"jingweiInfo\").new_city : uni.getStorageSync(\"jingweiInfo\").city,\n page: _this5.page1,\n limit: 20\n });\n case 2:\n _yield$_this5$$api$cu = _context5.sent;\n code = _yield$_this5$$api$cu.code;\n data = _yield$_this5$$api$cu.data;\n msg = _yield$_this5$$api$cu.msg;\n if (type == 1) {\n uni.hideLoading();\n }\n if (code == 200) {\n _this5.total1 = data.total;\n _this5.commentList1 = _this5.arrayUnique([].concat((0, _toConsumableArray2.default)(_this5.commentList1), (0, _toConsumableArray2.default)(data.list)), 'id');\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 8:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n //数组对象去重\n arrayUnique: function arrayUnique(arr, name) {\n var hash = {};\n return arr.reduce(function (item, next) {\n hash[next[name]] ? \"\" : hash[next[name]] = true && item.push(next);\n return item;\n }, []);\n },\n costDescription: function costDescription() {\n var _this6 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var _yield$_this6$$api$co, code, data;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this6.$api.costDescription({});\n case 2:\n _yield$_this6$$api$co = _context6.sent;\n code = _yield$_this6$$api$co.code;\n data = _yield$_this6$$api$co.data;\n if (code == 200) {\n _this6.goldInfo = data;\n }\n case 6:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n //获取用户信息\n getUserInfo: function getUserInfo() {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n var _yield$_this7$$api$fi, code, data, msg;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return _this7.$api.findUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this7$$api$fi = _context7.sent;\n code = _yield$_this7$$api$fi.code;\n data = _yield$_this7$$api$fi.data;\n msg = _yield$_this7$$api$fi.msg;\n if (code == 200) {\n _this7.userInfo = data;\n _this7.userBalance();\n _this7.costDescription();\n uni.setStorageSync(\"userInfo\", data);\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }))();\n }\n }, (0, _defineProperty2.default)(_methods, \"getLocation\", function getLocation() {\n var that = this;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/index/index.vue:385\");\n that.trackUpload(res1);\n var latitude = res1.latitude,\n longitude = res1.longitude;\n var url = \"https://restapi.amap.com/v3/geocode/regeo?output=json&location=\".concat(longitude, \",\").concat(latitude, \"&key=4a6e2ba8eac3864f0d88f9b5abd026e6&radius=1000\");\n uni.request({\n url: url,\n success: function success(res) {\n __f__(\"log\", res, \" at pages/index/index.vue:392\");\n var city = res.data.regeocode.addressComponent.city.length == 0 ? res.data.regeocode.addressComponent.province : res.data.regeocode.addressComponent.city;\n that.city = res.data.regeocode.formatted_address.split(res.data.regeocode.addressComponent.township)[1];\n uni.setStorageSync(\"jingweiInfo\", _objectSpread(_objectSpread(_objectSpread({}, res1), res.data.regeocode.addressComponent), {}, {\n formatted: that.city\n }));\n that.show = false;\n if (that.current == 0) {\n that.page1 = 1;\n that.commentList1 = [];\n that.customerRecommendList();\n } else {\n that.page2 = 1;\n that.commentList2 = [];\n that.nearbyCustomerList();\n }\n }\n });\n }\n });\n }), (0, _defineProperty2.default)(_methods, \"openPage\", function openPage(index, id) {\n var that = this;\n if (!that.city) {\n that.getLocation();\n return;\n }\n if (index == 1) {\n __f__(\"log\", this.userInfo.realnameFlag, \" at pages/index/index.vue:418\");\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n that.trackUpload(res, 1);\n }\n });\n } else if (index == 2) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (this.balanceInfo.voiceCoins * 60 <= 0) {\n uni.showModal({\n title: \"温馨提示\",\n content: \"当前账户金币不足,语音通话\" + this.goldInfo.voiceCoins + \"金币/1分钟,请前往充值\",\n confirmColor: \"#000000\",\n success: function success(res) {\n if (res.confirm) {\n uni.navigateTo({\n url: \"/pages/users/recharge/index\"\n });\n }\n }\n });\n return;\n }\n }\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n that.trackUpload(res, 2);\n }\n });\n } else if (index == 3) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (this.balanceInfo.videoCoins * 60 <= 0) {\n uni.showModal({\n title: \"温馨提示\",\n content: \"当前账户金币不足,语音通话\" + this.goldInfo.videoCoins + \"金币/1分钟,请前往充值\",\n confirmColor: \"#000000\",\n success: function success(res) {\n if (res.confirm) {\n uni.navigateTo({\n url: \"/pages/users/recharge/index\"\n });\n }\n }\n });\n return;\n }\n }\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n that.trackUpload(res, 3);\n }\n });\n } else if (index == 4) {\n uni.navigateTo({\n url: \"/pages/index/search?type=1\"\n });\n } else if (index == 5) {\n uni.navigateTo({\n url: \"/pages/index/city\"\n });\n } else if (index == 6) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + id\n });\n } else if (index == 7) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n this.info = id;\n this.info.userid = id.id;\n this.isDashan = true;\n }\n }), (0, _defineProperty2.default)(_methods, \"changeTabs\", function changeTabs(index) {\n this.current = index;\n this.commentList1 = [];\n this.page1 = 1;\n this.page2 = 1;\n this.commentList1 = [];\n this.commentList2 = [];\n if (index == 0) {\n this.customerRecommendList();\n } else {\n this.nearbyCustomerList();\n }\n }), _methods)\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJpbmZvIiwiY29tbWVudExpc3QxIiwiY29tbWVudExpc3QyIiwiaXNDb2lucyIsImlzRGFzaGFuIiwiaXNQb3B1cCIsImN1cnJlbnQiLCJjaXR5IiwicGFnZTEiLCJwYWdlMiIsInRvdGFsMSIsInRvdGFsMiIsImJhbGFuY2VJbmZvIiwic2hvdyIsImxpc3QiLCJhY3RpdmVTdHlsZSIsInVzZXJJbmZvIiwiZ29sZEluZm8iLCJvblB1bGxEb3duUmVmcmVzaCIsInVuaSIsInNldFRpbWVvdXQiLCJ0aGF0Iiwib25Mb2FkIiwib25SZWFkeSIsIm9uU2hvdyIsIm9uUmVhY2hCb3R0b20iLCJ0aXRsZSIsIm1ldGhvZHMiLCJnZXRMb2NhdGlvbiIsInBsdXMiLCJ0cmFja1VwbG9hZCIsInVzZXJJZCIsImxhdCIsImxvbiIsImNvZGUiLCJ1cmwiLCJ1c2VyQmFsYW5jZSIsInJlY29yZGVyQXV0aE1vZGFsIiwiY29udGVudCIsImNhbmNlbFRleHQiLCJjb25maXJtVGV4dCIsInN1Y2Nlc3MiLCJwZXJtaXNpb24iLCJyZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24iLCJyZXN1bHQiLCJuZWFyYnlDdXN0b21lckxpc3QiLCJuaWNrbmFtZSIsInN0YXJ0QWdlIiwiZW5kQWdlIiwicGFnZSIsImxpbWl0IiwibXNnIiwicG9zaXRpb24iLCJpY29uIiwiY3VzdG9tZXJSZWNvbW1lbmRMaXN0IiwiYXJyYXlVbmlxdWUiLCJoYXNoIiwiY29zdERlc2NyaXB0aW9uIiwiZ2V0VXNlckluZm8iLCJ0eXBlIiwibG9uZ2l0dWRlIiwiZm9ybWF0dGVkIiwiaW5kZXgiLCJjb25maXJtQ29sb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBOEZBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFDQTtFQUNBQTtJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FD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O1FBQ0F3QztRQUNBbEI7VUFDQXBCO1FBQ0E7TUFDQTtJQUVBO01BQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBO1VBQ0FGO1lBQ0FPO1lBQ0FZO1lBQ0F5QjtZQUNBdEI7Y0FDQTtnQkFDQXRCO2tCQUNBZ0I7Z0JBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7TUFDQWhCO1FBQ0F3QztRQUNBbEI7VUFDQXBCO1FBQ0E7TUFDQTtJQUVBO01BQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBO1VBQ0FGO1lBQ0FPO1lBQ0FZO1lBQ0F5QjtZQUNBdEI7Y0FDQTtnQkFDQXRCO2tCQUNBZ0I7Z0JBQ0E7Y0FDQTtZQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7TUFDQWhCO1FBQ0F3QztRQUNBbEI7VUFDQXBCO1FBQ0E7TUFDQTtJQUNBO01BQ0FGO1FBQ0FnQjtNQUNBO0lBQ0E7TUFDQWhCO1FBQ0FnQjtNQUNBO0lBQ0E7TUFDQWhCO1FBQ0FnQjtNQUNBO0lBQ0E7TUFDQTtRQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0VBQ0EsOEVBQ0EyQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO01BQ0E7SUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUVBO0FBQUEsMkIiLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDx2aWV3IGNsYXNzPVwiaG9tZVwiPlxuXHRcdDx2aWV3IGNsYXNzPVwiaG9tZS1uYXZiYXJcIj5cblx0XHRcdDx1LW5hdmJhciA6aXMtYmFjaz1cImZhbHNlXCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwic2xvdC13cmFwXCI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJhZGRyZXNzXCIgdi1pZj1cImNpdHlcIiBAY2xpY2s9XCJvcGVuUGFnZSg1KVwiPlxuXHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2Rpbmd3ZWkucG5nXCI+PC9pbWFnZT57e2NpdHl9fVxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYWRkcmVzc1wiIHYtZWxzZSBAY2xpY2s9XCJnZXRMb2NhdGlvbigpXCI+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCJAL3N0YXRpYy9kaW5nd2VpLnBuZ1wiPjwvaW1hZ2U+6I635Y+W5a6a5L2NXHJcblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzZWFyY2hcIiBAY2xpY2s9XCJvcGVuUGFnZSg0KVwiPlxuXHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2ljb24tc2VhcmNoLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHTor7fovpPlhaXlkI3np7DmkJzntKJcblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdS1uYXZiYXI+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwiaG9tZS1tZW51XCI+XG5cdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIiBAY2xpY2s9XCJvcGVuUGFnZSgxKVwiPlxuXHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiQC9zdGF0aWMvMS5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInR4dFwiPuWQjOWfjumAn+mFjTwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiIEBjbGljaz1cIm9wZW5QYWdlKDIpXCI+XG5cdFx0XHRcdDxpbWFnZSBzcmM9XCJAL3N0YXRpYy8yLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidHh0XCI+6K+t6Z+z6YCf6YWNPC92aWV3PlxuXHRcdFx0PC92aWV3PlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCIgQGNsaWNrPVwib3BlblBhZ2UoMylcIj5cblx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljLzMucG5nXCI+PC9pbWFnZT5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj7op4bpopHpgJ/phY08L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwiaG9tZS10YWJcIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiXCI+XG5cdFx0XHRcdDx1LXRhYnMgOmxpc3Q9XCJsaXN0XCIgYmctY29sb3I9XCJ0cmFuc3BhcmVudFwiIDppcy1zY3JvbGw9XCJmYWxzZVwiIGFjdGl2ZS1jb2xvcj1cIiMyMjIyMjJcIiBpbmFjdGl2ZS1jb2xvcj1cIiM2NjY2NjZcIiBmb250LXNpemU9XCIzMFwiIDphY3RpdmUtaXRlbS1zdHlsZT1cImFjdGl2ZVN0eWxlXCIgYmFyLWhlaWdodD1cIjEwXCIgYmFyLXdpZHRoPVwiNjBcIiB2LW1vZGVsPVwiY3VycmVudFwiIEBjaGFuZ2U9XCJjaGFuZ2VUYWJzXCI+PC91LXRhYnM+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwiaG9tZS1saXN0XCIgdi1pZj1cImN1cnJlbnQ9PTBcIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiIHYtZm9yPVwiKGEsaSkgaW4gY29tbWVudExpc3QxXCIgOmtleT1cImlcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaWNcIiBAY2xpY2s9XCJvcGVuUGFnZSg2LGEuaWQpXCI+XG5cdFx0XHRcdFx0PGltYWdlIDpzcmM9XCJhLmZhY2VJbWFnZT9hLmZhY2VJbWFnZTphLmltZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvXCIgQGNsaWNrPVwib3BlblBhZ2UoNixhLmlkKVwiPlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibmFtZVwiPnt7YS5uaWNrbmFtZX19PHZpZXcgY2xhc3M9XCJ2aXBcIiB2LWlmPVwiYS5tZW1iZXJmbGFnPj0xXCI+VklQe3thLm1lbWJlcmZsYWd9fTwvdmlldz48L3ZpZXc+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkZXNjXCI+e3thLmFnZX195bKBL3t7YS5oZWlnaHR9fTwvdmlldz5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImNoYXRcIiBAY2xpY2s9XCJvcGVuUGFnZSg3LGEpXCI+XG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL3hpbi5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHRcdOaQreiuqlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8dmlldyBjbGFzcz1cImVtcHR5XCIgdi1pZj1cInRvdGFsMSA9PSAwIFwiPlxuXHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiQC9zdGF0aWMvZW1wdHkucG5nXCI+PC9pbWFnZT5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj7mmoLml6DmlbDmja48L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwiaG9tZS1saXN0XCIgdi1lbHNlPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCIgdi1mb3I9XCIoYSxpKSBpbiBjb21tZW50TGlzdDJcIiA6a2V5PVwiaVwiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBpY1wiIEBjbGljaz1cIm9wZW5QYWdlKDYsYS5pZClcIj5cblx0XHRcdFx0XHQ8aW1hZ2UgOnNyYz1cImEuZmFjZUltYWdlP2EuZmFjZUltYWdlOmEuaW1nXCI+PC9pbWFnZT5cblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImluZm9cIiBAY2xpY2s9XCJvcGVuUGFnZSg2LGEuaWQpXCI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJuYW1lXCI+e3thLm5pY2tuYW1lfX08dmlldyBjbGFzcz1cInZpcFwiIHYtaWY9XCJhLm1lbWJlcmZsYWc+PTFcIj5WSVB7e2EubWVtYmVyZmxhZ319PC92aWV3Pjwvdmlldz5cblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImRlc2NcIj57e2EuYWdlfX3lsoEve3thLmhlaWdodH19PC92aWV3PlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiY2hhdFwiIEBjbGljaz1cIm9wZW5QYWdlKDcsYSlcIj5cblx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiQC9zdGF0aWMveGluLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx05pCt6K6qXG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHRcdDx2aWV3IGNsYXNzPVwiZW1wdHlcIiB2LWlmPVwidG90YWwyID09IDAgXCI+XG5cdFx0XHRcdDxpbWFnZSBzcmM9XCJAL3N0YXRpYy9lbXB0eS5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInR4dFwiPuaaguaXoOaVsOaNrjwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBzdHlsZT1cInBhZGRpbmc6IDI1MHJweCAwIDA7XCI+XHJcblx0XHRcdDx1LWVtcHR5IHYtaWY9XCIhY2l0eVwiIHRleHQ9XCLor7flvIDlkK/lrprkvY3mnYPpmZBcIiBtb2RlPVwiZGF0YVwiPlxyXG5cdFx0XHRcdDx2aWV3IHNsb3Q9XCJib3R0b21cIiBzdHlsZT1cIm1hcmdpbi10b3A6IDMwcnB4O1wiPlxyXG5cdFx0XHRcdFx0PHUtYnV0dG9uIEBjbGljaz1cImdldExvY2F0aW9uKClcIj7ojrflj5blrprkvY08L3UtYnV0dG9uPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC91LWVtcHR5PlxyXG5cdFx0PC92aWV3PlxuXHRcdDx1LXBvcHVwIHYtbW9kZWw9XCJzaG93XCIgbW9kZT1cInRvcFwiIDptYXNrLWNsb3NlLWFibGU9J2ZhbHNlJyA6ekluZGV4PVwiNVwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJwZXJtaXNzaW9uc19ib3hcIj5cblx0XHRcdFx05b2T5oKo5L2/55SoQVBQ5pe277yM5bqU55So56iL5bqP5Y+v5Lul5o+Q5L6b5Z+65LqO5L2N572u55qE5pyN5Yqh44CB5a6a5L2N5a+86Iiq44CB6ZmE6L+R5pCc57Si562J5Yqf6IO944CCXG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC91LXBvcHVwPlxuXHRcdDx1bnZlcmlmaWVkIDppc1BvcHVwPVwiaXNQb3B1cFwiIC8+XG5cdFx0PGluc3VmZmljaWVudCA6aXNDb2lucz1cImlzQ29pbnNcIiAvPlxuXHRcdDxkYXNoYW4gOmlzRGFzaGFuPVwiaXNEYXNoYW5cIiA6aW5mbz1cImluZm9cIj48L2Rhc2hhbj5cblx0PC92aWV3PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cclxuXHRpbXBvcnQgcGVybWlzaW9uIGZyb20gXCJAL2pzX3Nkay93YS1wZXJtaXNzaW9uL3Blcm1pc3Npb24uanNcIlxuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGluZm86IHt9LFxuXHRcdFx0XHRjb21tZW50TGlzdDE6IFtdLFxuXHRcdFx0XHRjb21tZW50TGlzdDI6IFtdLFxuXHRcdFx0XHRpc0NvaW5zOiBmYWxzZSxcblx0XHRcdFx0aXNEYXNoYW46IGZhbHNlLFxuXHRcdFx0XHRpc1BvcHVwOiBmYWxzZSxcblx0XHRcdFx0Y3VycmVudDogMCxcblx0XHRcdFx0Y2l0eTogXCJcIixcblx0XHRcdFx0cGFnZTE6IDEsXG5cdFx0XHRcdHBhZ2UyOiAxLFxuXHRcdFx0XHR0b3RhbDE6IDEsXG5cdFx0XHRcdHRvdGFsMjogMSxcclxuXHRcdFx0XHRiYWxhbmNlSW5mbzoge30sXG5cdFx0XHRcdHNob3c6IGZhbHNlLFxuXHRcdFx0XHRsaXN0Olt7J25hbWUnOiAn54Ot6ZeoJ30seyduYW1lJzogJ+mZhOi/kSd9XSxcblx0XHRcdFx0YWN0aXZlU3R5bGU6eydmb250U2l6ZSc6ICczNXJweCd9LFxuXHRcdFx0XHR1c2VySW5mbzoge30sXHJcblx0XHRcdFx0Z29sZEluZm86IHt9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvblB1bGxEb3duUmVmcmVzaCgpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xyXG5cdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCl7XHJcblx0XHRcdFx0dW5pLiRlbWl0KFwib3BlblNvY2tldFwiKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZighdGhhdC5jaXR5KXtcclxuXHRcdFx0XHRyZXR1cm4gO1xyXG5cdFx0XHR9XG5cdFx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdGlmKHRoYXQuY3VycmVudCA9PSAwKXtcblx0XHRcdFx0XHRpZih0aGF0LmNvbW1lbnRMaXN0MS5sZW5ndGggPD0gdGhhdC50b3RhbDEpe1xuXHRcdFx0XHRcdFx0dGhhdC5wYWdlMSArKztcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQuY3VzdG9tZXJSZWNvbW1lbmRMaXN0KDEpO1xuXHRcdFx0XHRcdFx0fSwgMTAwMCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRpZih0aGF0LmNvbW1lbnRMaXN0Mi5sZW5ndGggPD0gdGhhdC50b3RhbDIpe1xuXHRcdFx0XHRcdFx0dGhhdC5wYWdlMiArKztcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHRoYXQubmVhcmJ5Q3VzdG9tZXJMaXN0KDEpO1xuXHRcdFx0XHRcdFx0fSwgMTAwMCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5zdG9wUHVsbERvd25SZWZyZXNoKCk7XG5cdFx0XHR9LDIwMDApXG5cdFx0fSxcblx0XHRvbkxvYWQoKSB7fSxcblx0XHRvblJlYWR5KCkge1xuXHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHR1bmkuJG9uKFwiY2xpY2tUYXBcIiwgcmVzPT57XHJcblx0XHRcdFx0Y29uc29sZS5sb2cocmVzKVxuXHRcdFx0XHR0aGF0LmNpdHkgPSByZXMubmFtZTtcblx0XHRcdFx0aWYodGhhdC5jdXJyZW50ID09IDApe1xuXHRcdFx0XHRcdHRoYXQucGFnZTEgPSAxO1xuXHRcdFx0XHRcdHRoYXQuY29tbWVudExpc3QxID0gW107XG5cdFx0XHRcdFx0dGhhdC5jdXN0b21lclJlY29tbWVuZExpc3QoKTtcblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0dGhhdC5wYWdlMiA9IDE7XG5cdFx0XHRcdFx0dGhhdC5jb21tZW50TGlzdDIgPSBbXTtcblx0XHRcdFx0XHR0aGF0Lm5lYXJieUN1c3RvbWVyTGlzdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHVuaS4kb24oXCJjbG9zZVNoYXJlUG9wdXBcIixyZXM9Pntcblx0XHRcdFx0dGhhdC5pc1BvcHVwID0gZmFsc2U7XG5cdFx0XHRcdHRoYXQuaXNEYXNoYW49ICBmYWxzZTtcblx0XHRcdFx0dGhhdC5pc0NvaW5zPSAgZmFsc2U7XG5cdFx0XHR9KVxuXHRcdFx0XG5cdFx0XHR1bmkuJG9uKFwib3BlbkNvaW5zUG9wdXBcIixyZXM9Pntcblx0XHRcdFx0dGhhdC5pc0NvaW5zID0gcmVzXG5cdFx0XHR9KVxuXHRcdFx0dW5pLiRvbihcIm9uUG9wdXBcIixyZXM9Pntcblx0XHRcdFx0aWYocmVzID09IDEpe1xuXHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0b25TaG93KCkge1xuXHRcdFx0dGhpcy5nZXRVc2VySW5mbygpO1xyXG5cdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCl7XHJcblx0XHRcdFx0aWYoIXVuaS5nZXRTdG9yYWdlU3luYyhcImlzT3BlblwiKSl7XHJcblx0XHRcdFx0XHR1bmkuJGVtaXQoXCJvcGVuU29ja2V0XCIpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0b25SZWFjaEJvdHRvbSgpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcblx0XHRcdFx0dGl0bGU6IFwi5Yqg6L295LitXCJcblx0XHRcdH0pXG5cdFx0XHRpZih0aGF0LmN1cnJlbnQgPT0gMCl7XG5cdFx0XHRcdGlmKHRoYXQuY29tbWVudExpc3QxLmxlbmd0aCA8PSB0aGF0LnRvdGFsMSl7XG5cdFx0XHRcdFx0dGhhdC5wYWdlMSArKztcblx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0dGhhdC5jdXN0b21lclJlY29tbWVuZExpc3QoMSk7XG5cdFx0XHRcdFx0fSwgMTAwMCk7XG5cdFx0XHRcdH1cblx0XHRcdH1lbHNle1xuXHRcdFx0XHRpZih0aGF0LmNvbW1lbnRMaXN0Mi5sZW5ndGggPD0gdGhhdC50b3RhbDIpe1xuXHRcdFx0XHRcdHRoYXQucGFnZTIgKys7XG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHRoYXQubmVhcmJ5Q3VzdG9tZXJMaXN0KDEpO1xuXHRcdFx0XHRcdH0sIDEwMDApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGdldExvY2F0aW9uKCkge1xyXG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xyXG5cdFx0XHRcdC8vIEFQUOajgOafpeadg+mZkFxyXG5cdFx0XHRcdGlmKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdFx0cGx1cy5hbmRyb2lkLmNoZWNrUGVybWlzc2lvbihcclxuXHRcdFx0XHRcdFx0J2FuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfRklORV9MT0NBVElPTicsXHJcblx0XHRcdFx0XHRcdGdyYW50ZWQgPT4ge1xyXG5cdFx0XHRcdFx0XHQgIGlmIChncmFudGVkLmNoZWNrUmVzdWx0PT0tMSl7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5zaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdHVuaS5yZW1vdmVTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpXHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhhdC5nZXRMb2NhdGlvbigpO1xyXG5cdFx0XHRcdFx0XHQgIH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxyXG5cdFx0XHRcdFx0XHRcdC8vIOatpOS4unVWaWV355qE6Lez6L2s5pa55rOV77yM6K+m6KeBXCLmlofmoaMtSlNcIumDqOWIhu+8jOS5n+WPr+S7peeUqHVuaeeahHVuaS5uYXZpZ2F0ZVRvXHJcblx0XHRcdFx0XHRcdFx0dGhhdC5nZXRMb2NhdGlvbigpO1xyXG5cdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0ZXJyb3IgPT4ge1xyXG5cdFx0XHRcdFx0XHQgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHBlcm1pc3Npb246JywgZXJyb3IubWVzc2FnZSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCAgKTtcclxuXHRcdFx0XHRcdCB0aGF0LnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbignYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19GSU5FX0xPQ0FUSU9OJylcclxuXHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR0aGF0LmdldExvY2F0aW9uKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxuXHRcdFx0Ly/lrp7ml7bkuIrkvKDovajov7lcblx0XHRcdGFzeW5jIHRyYWNrVXBsb2FkKHJlcyx0eXBlKXtcblx0XHRcdFx0Y29uc3Qge2NvZGUsIGRhdGEsfSA9IGF3YWl0IHRoaXMuJGFwaS50cmFja1VwbG9hZCh7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0XHRsYXQ6IHJlcy5sYXRpdHVkZSxcblx0XHRcdFx0XHRsb246IHJlcy5sb25naXR1ZGUsXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcclxuXHRcdFx0XHRcdGlmKHR5cGU9PTEpe1xyXG5cdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9waXBlaS90b25nY2hlbmcvaW5kZXhcIlxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fWVsc2UgaWYodHlwZSA9PSAyKXtcclxuXHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGlwZWkveXV5aW4vaW5kZXhcIlxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fWVsc2UgaWYodHlwZSA9PSAzKXtcclxuXHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGlwZWkvc2hpcGluL2luZGV4XCJcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XG5cdFx0XHR9LFxyXG5cdFx0XHQvL+ajgOafpeasoeaVsFxyXG5cdFx0XHRhc3luYyB1c2VyQmFsYW5jZSgpIHtcclxuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgfSA9IGF3YWl0IHRoaXMuJGFwaS51c2VyQmFsYW5jZSh7XHJcblx0XHRcdFx0XHR1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkXHJcblx0XHRcdFx0fSkgXHJcblx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xyXG5cdFx0XHRcdFx0dGhpcy5iYWxhbmNlSW5mbyA9IGRhdGFcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXG5cdFx0XHRyZWNvcmRlckF1dGhNb2RhbDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6ICflrprkvY3mnYPpmZDor7TmmI4nLFxuXHRcdFx0XHRcdGNvbnRlbnQ6ICfkvr/kuo7mgqjkvb/nlKjor6Xlip/og73lnKjlvZPliY3kvY3nva7mn6Xor6LmiYDlnKjpl6jlupfvvIzor7fmgqjnoa7orqTmjojmnYPvvIzlkKbliJnml6Dms5Xkvb/nlKjor6Xlip/og73jgIInLFxuXHRcdFx0XHRcdGNhbmNlbFRleHQ6ICflhbPpl60nLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiAn5Y675o6I5p2DJyxcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xuXHRcdFx0XHRcdFx0dGhhdC5zaG93PWZhbHNlXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0pIHtcblx0XHRcdFx0XHRcdFx0cGVybWlzaW9uLmdvdG9BcHBQZXJtaXNzaW9uU2V0dGluZygpXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdGFzeW5jIHJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbihwZXJtaXNpb25JRCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0dmFyIHJlc3VsdCA9IGF3YWl0IHBlcm1pc2lvbi5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24ocGVybWlzaW9uSUQpO1xuXHRcdFx0XHRpZihyZXN1bHQgIT0gMSl7XG5cdFx0XHRcdFx0dGhhdC5yZWNvcmRlckF1dGhNb2RhbCgpO1xuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2Vcblx0XHRcdFx0XHQvLyDmraTkuLp1Vmlld+eahOi3s+i9rOaWueazle+8jOivpuingVwi5paH5qGjLUpTXCLpg6jliIbvvIzkuZ/lj6/ku6XnlKh1bmnnmoR1bmkubmF2aWdhdGVUb1xuXHRcdFx0XHRcdHRoYXQuZ2V0TG9jYXRpb24oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8v6aaW6aG16ZmE6L+RXG5cdFx0XHRhc3luYyBuZWFyYnlDdXN0b21lckxpc3QodHlwZSl7XHJcblx0XHRcdFx0Y29uc29sZS5sb2codW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHkpXG5cdFx0XHRcdGNvbnN0IHsgY29kZSwgZGF0YSAsIG1zZyB9ID0gYXdhaXQgdGhpcy4kYXBpLm5lYXJieUN1c3RvbWVyTGlzdCh7XG5cdFx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0XHRuaWNrbmFtZTogXCJcIixcblx0XHRcdFx0XHRzdGFydEFnZTogXCJcIixcblx0XHRcdFx0XHRlbmRBZ2U6IFwiXCIsXHJcblx0XHRcdFx0XHRjaXR5OiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiKS5uZXdfY2l0eT91bmkuZ2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiKS5uZXdfY2l0eTp1bmkuZ2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiKS5jaXR5LFxuXHRcdFx0XHRcdGxhdDogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubGF0aXR1ZGUsXG5cdFx0XHRcdFx0bG9uOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiKS5sb25naXR1ZGUsXG5cdFx0XHRcdFx0cGFnZTogdGhpcy5wYWdlMixcblx0XHRcdFx0XHRsaW1pdDogMjBcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmKHR5cGUgPT0gMSl7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKClcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dGhpcy50b3RhbDIgPSBkYXRhLnRvdGFsO1xuXHRcdFx0XHRcdHRoaXMuY29tbWVudExpc3QyID0gdGhpcy5hcnJheVVuaXF1ZShbLi4udGhpcy5jb21tZW50TGlzdDIsLi4uZGF0YS5saXN0XSwnaWQnKVxuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdHRpdGxlOiBtc2csXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQvL+mmlumhteaOqOiNkFxuXHRcdFx0YXN5bmMgY3VzdG9tZXJSZWNvbW1lbmRMaXN0KHR5cGUpe1xuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2cgfSA9IGF3YWl0IHRoaXMuJGFwaS5jdXN0b21lclJlY29tbWVuZExpc3Qoe1xuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0bmlja25hbWU6IFwiXCIsXG5cdFx0XHRcdFx0c3RhcnRBZ2U6IFwiXCIsXG5cdFx0XHRcdFx0ZW5kQWdlOiBcIlwiLFxyXG5cdFx0XHRcdFx0bGF0OiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiKS5sYXRpdHVkZSxcclxuXHRcdFx0XHRcdGxvbjogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubG9uZ2l0dWRlLFxyXG5cdFx0XHRcdFx0Y2l0eTogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk/dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk6dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikuY2l0eSxcblx0XHRcdFx0XHRwYWdlOiB0aGlzLnBhZ2UxLFxuXHRcdFx0XHRcdGxpbWl0OiAyMFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYodHlwZSA9PSAxKXtcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHR0aGlzLnRvdGFsMSA9IGRhdGEudG90YWw7XG5cdFx0XHRcdFx0dGhpcy5jb21tZW50TGlzdDEgPSB0aGlzLmFycmF5VW5pcXVlKFsuLi50aGlzLmNvbW1lbnRMaXN0MSwuLi5kYXRhLmxpc3RdLCdpZCcpXG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IG1zZyxcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdC8v5pWw57uE5a+56LGh5Y676YeNXG5cdFx0XHRhcnJheVVuaXF1ZSAoYXJyLCBuYW1lKSB7XG5cdFx0XHRcdHZhciBoYXNoID0ge307XG5cdFx0XHRcdHJldHVybiBhcnIucmVkdWNlKGZ1bmN0aW9uIChpdGVtLCBuZXh0KSB7XG5cdFx0XHRcdFx0aGFzaFtuZXh0W25hbWVdXVxuXHRcdFx0XHRcdFx0PyBcIlwiXG5cdFx0XHRcdFx0XHQ6IChoYXNoW25leHRbbmFtZV1dID0gdHJ1ZSAmJiBpdGVtLnB1c2gobmV4dCkpO1xuXHRcdFx0XHRcdHJldHVybiBpdGVtO1xuXHRcdFx0XHR9LCBbXSk7XG5cdFx0XHR9LFxyXG5cdFx0XHRhc3luYyBjb3N0RGVzY3JpcHRpb24oKSB7XHJcblx0XHRcdFx0Y29uc3Qge2NvZGUsIGRhdGEgfSA9IGF3YWl0IHRoaXMuJGFwaS5jb3N0RGVzY3JpcHRpb24oe30pO1xyXG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcclxuXHRcdFx0XHRcdHRoaXMuZ29sZEluZm8gPSBkYXRhXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcblx0XHRcdC8v6I635Y+W55So5oi35L+h5oGvXG5cdFx0XHRhc3luYyBnZXRVc2VySW5mbygpIHtcblx0XHRcdFx0Y29uc3QgeyBjb2RlLCBkYXRhICwgbXNnIH0gPSBhd2FpdCB0aGlzLiRhcGkuZmluZFVzZXJJbmZvKHt1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkfSk7XG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHR0aGlzLnVzZXJJbmZvID0gZGF0YTtcclxuXHRcdFx0XHRcdHRoaXMudXNlckJhbGFuY2UoKTtcclxuXHRcdFx0XHRcdHRoaXMuY29zdERlc2NyaXB0aW9uKCk7XG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIixkYXRhKTtcblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogbXNnLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Z2V0TG9jYXRpb24oKSB7XG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0XHR1bmkuZ2V0TG9jYXRpb24oe1xuXHRcdFx0XHRcdHR5cGU6ICdnY2owMicsXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXMxKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMxKVxuXHRcdFx0XHRcdFx0dGhhdC50cmFja1VwbG9hZChyZXMxKVxuXHRcdFx0XHRcdFx0bGV0IGxhdGl0dWRlID0gcmVzMS5sYXRpdHVkZSxsb25naXR1ZGUgPSByZXMxLmxvbmdpdHVkZTtcblx0XHRcdFx0XHRcdGxldCB1cmwgPSBgaHR0cHM6Ly9yZXN0YXBpLmFtYXAuY29tL3YzL2dlb2NvZGUvcmVnZW8/b3V0cHV0PWpzb24mbG9jYXRpb249JHtsb25naXR1ZGV9LCR7bGF0aXR1ZGV9JmtleT00YTZlMmJhOGVhYzM4NjRmMGQ4OGY5YjVhYmQwMjZlNiZyYWRpdXM9MTAwMGBcblx0XHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdFx0dXJsLFxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKVxuXHRcdFx0XHRcdFx0XHRcdGxldCBjaXR5ID0gcmVzLmRhdGEucmVnZW9jb2RlLmFkZHJlc3NDb21wb25lbnQuY2l0eS5sZW5ndGg9PTA/cmVzLmRhdGEucmVnZW9jb2RlLmFkZHJlc3NDb21wb25lbnQucHJvdmluY2U6cmVzLmRhdGEucmVnZW9jb2RlLmFkZHJlc3NDb21wb25lbnQuY2l0eVxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuY2l0eSA9IHJlcy5kYXRhLnJlZ2VvY29kZS5mb3JtYXR0ZWRfYWRkcmVzcy5zcGxpdChyZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC50b3duc2hpcClbMV1cblx0XHRcdFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiLHsuLi5yZXMxLC4uLnJlcy5kYXRhLnJlZ2VvY29kZS5hZGRyZXNzQ29tcG9uZW50LGZvcm1hdHRlZDogdGhhdC5jaXR5fSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5zaG93ID0gZmFsc2Vcblx0XHRcdFx0XHRcdFx0XHRpZih0aGF0LmN1cnJlbnQgPT0gMCl7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnBhZ2UxID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuY29tbWVudExpc3QxID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmN1c3RvbWVyUmVjb21tZW5kTGlzdCgpO1xuXHRcdFx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5wYWdlMiA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmNvbW1lbnRMaXN0MiA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5uZWFyYnlDdXN0b21lckxpc3QoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSxcblx0XHRcdG9wZW5QYWdlKGluZGV4LGlkKXtcclxuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHRpZighdGhhdC5jaXR5KXtcclxuXHRcdFx0XHRcdHRoYXQuZ2V0TG9jYXRpb24oKTtcclxuXHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihpbmRleCA9PSAxKXtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMudXNlckluZm8ucmVhbG5hbWVGbGFnKVxyXG5cdFx0XHRcdFx0aWYodGhpcy51c2VySW5mby5yZWFsbmFtZUZsYWcgPT0gMCB8fCB0aGlzLnVzZXJJbmZvLmZhY2VGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5waG9uZUZsYWcgPT0gMCl7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNQb3B1cCA9IHRydWVcclxuXHRcdFx0XHRcdFx0cmV0dXJuIDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHVuaS5nZXRMb2NhdGlvbih7XHJcblx0XHRcdFx0XHRcdHR5cGU6ICdnY2owMicsXHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC50cmFja1VwbG9hZChyZXMsMSlcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFxuXHRcdFx0XHR9ZWxzZSBpZihpbmRleCA9PSAyKXtcclxuXHRcdFx0XHRcdGlmKHRoaXMudXNlckluZm8ucmVhbG5hbWVGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5mYWNlRmxhZyA9PSAwIHx8IHRoaXMudXNlckluZm8ucGhvbmVGbGFnID09IDApe1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzUG9wdXAgPSB0cnVlXHJcblx0XHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XHJcblx0XHRcdFx0XHRcdGlmKHRoaXMuYmFsYW5jZUluZm8udm9pY2VDb2lucyo2MCA8PSAwKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIua4qemmqOaPkOekulwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogXCLlvZPliY3otKbmiLfph5HluIHkuI3otrPvvIzor63pn7PpgJror51cIit0aGlzLmdvbGRJbmZvLnZvaWNlQ29pbnMrXCLph5HluIEvMeWIhumSnyzor7fliY3lvoDlhYXlgLxcIixcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1Db2xvcjogXCIjMDAwMDAwXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZihyZXMuY29uZmlybSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy91c2Vycy9yZWNoYXJnZS9pbmRleFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dW5pLmdldExvY2F0aW9uKHtcclxuXHRcdFx0XHRcdFx0dHlwZTogJ2djajAyJyxcclxuXHRcdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LnRyYWNrVXBsb2FkKHJlcywyKVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFxuXHRcdFx0XHR9ZWxzZSBpZihpbmRleCA9PSAzKXtcclxuXHRcdFx0XHRcdGlmKHRoaXMudXNlckluZm8ucmVhbG5hbWVGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5mYWNlRmxhZyA9PSAwIHx8IHRoaXMudXNlckluZm8ucGhvbmVGbGFnID09IDApe1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzUG9wdXAgPSB0cnVlXHJcblx0XHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XHJcblx0XHRcdFx0XHRcdGlmKHRoaXMuYmFsYW5jZUluZm8udmlkZW9Db2lucyo2MCA8PSAwKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIua4qemmqOaPkOekulwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogXCLlvZPliY3otKbmiLfph5HluIHkuI3otrPvvIzor63pn7PpgJror51cIit0aGlzLmdvbGRJbmZvLnZpZGVvQ29pbnMrXCLph5HluIEvMeWIhumSnyzor7fliY3lvoDlhYXlgLxcIixcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1Db2xvcjogXCIjMDAwMDAwXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZihyZXMuY29uZmlybSl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy91c2Vycy9yZWNoYXJnZS9pbmRleFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIDtcclxuXHRcdFx0XHRcdFx0fVx0XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR1bmkuZ2V0TG9jYXRpb24oe1xyXG5cdFx0XHRcdFx0XHR0eXBlOiAnZ2NqMDInLFxyXG5cdFx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0XHRcdHRoYXQudHJhY2tVcGxvYWQocmVzLDMpXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1lbHNlIGlmKGluZGV4ID09IDQpe1xuXHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvaW5kZXgvc2VhcmNoP3R5cGU9MVwiXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gNSl7XG5cdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9pbmRleC9jaXR5XCJcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9ZWxzZSBpZihpbmRleCA9PSA2KXtcblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BlaXdhbi9kZXRhaWw/aWQ9XCIraWRcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9ZWxzZSBpZihpbmRleCA9PSA3KXtcblx0XHRcdFx0XHRpZih0aGlzLnVzZXJJbmZvLnJlYWxuYW1lRmxhZyA9PSAwIHx8IHRoaXMudXNlckluZm8uZmFjZUZsYWcgPT0gMCB8fCB0aGlzLnVzZXJJbmZvLnBob25lRmxhZyA9PSAwKXtcblx0XHRcdFx0XHRcdHRoaXMuaXNQb3B1cCA9IHRydWVcblx0XHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuaW5mbyA9IGlkXG5cdFx0XHRcdFx0dGhpcy5pbmZvLnVzZXJpZCA9IGlkLmlkXG5cdFx0XHRcdFx0dGhpcy5pc0Rhc2hhbiA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRjaGFuZ2VUYWJzKGluZGV4KXtcblx0XHRcdFx0dGhpcy5jdXJyZW50ID0gaW5kZXg7XHJcblx0XHRcdFx0dGhpcy5jb21tZW50TGlzdDEgPSBbXVxyXG5cdFx0XHRcdHRoaXMucGFnZTEgPSAxXHJcblx0XHRcdFx0dGhpcy5wYWdlMiA9IDFcclxuXHRcdFx0XHR0aGlzLmNvbW1lbnRMaXN0MSA9IFtdXHJcblx0XHRcdFx0dGhpcy5jb21tZW50TGlzdDIgPSBbXVxuXHRcdFx0XHRpZihpbmRleCA9PSAwKXtcblx0XHRcdFx0XHR0aGlzLmN1c3RvbWVyUmVjb21tZW5kTGlzdCgpO1xuXHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHR0aGlzLm5lYXJieUN1c3RvbWVyTGlzdCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdH1cblx0fVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQgbGFuZz1cInNjc3NcIj5cbi5ob21le1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHQucGVybWlzc2lvbnNfYm94e1xuXHRcdHBhZGRpbmctdG9wOiAxODBycHg7XG5cdH1cblx0LmVtcHR5e1xuXHRcdHBhZGRpbmc6IDE1MHJweCAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdGZvbnQtc2l6ZTogMjhycHg7XG5cdFx0Y29sb3I6ICMyMjIyMjI7XG5cdFx0aW1hZ2V7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHdpZHRoOiA0NjBycHg7XG5cdFx0XHRoZWlnaHQ6IDQwMHJweDtcblx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdH1cblx0fVxuXHQmLW5hdmJhcntcblx0XHR3aWR0aDogMTAwJTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdC5zbG90LXdyYXB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdHBhZGRpbmc6IDAgMjVycHg7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHQuYWRkcmVzc3tcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdFx0Zm9udC1zaXplOiAzMHJweDtcblx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdFx0Y29sb3I6ICMyMjIyMjI7XG5cdFx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDI1MHJweDtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDMwcnB4O1xuXHRcdFx0XHRcdGhlaWdodDogMzBycHg7XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA3cnB4O1xuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0XHR0b3A6IDVycHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5zZWFyY2h7XG5cdFx0XHRcdHdpZHRoOiA0MzZycHg7XG5cdFx0XHRcdGhlaWdodDogNzBycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNGNUY1RjU7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDcwcnB4O1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRmb250LXNpemU6IDI2cnB4O1xuXHRcdFx0XHRjb2xvcjogIzk5OTk5OTtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDMwcnB4O1xuXHRcdFx0XHRcdGhlaWdodDogMzBycHg7XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA3cnB4O1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAyNXJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQmLW1lbnV7XG5cdFx0cGFkZGluZzogMCAyNXJweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdG1hcmdpbi10b3A6IDIwcnB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Lml0ZW17XG5cdFx0XHR3aWR0aDogMjIwcnB4O1xuXHRcdFx0aGVpZ2h0OiAxNDBycHg7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRpbWFnZXtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdH1cblx0XHRcdC50eHR7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogMThycHg7XG5cdFx0XHRcdHRvcDogNTVycHg7XG5cdFx0XHRcdHotaW5kZXg6IDI7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMzBycHg7XG5cdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQmLXRhYntcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdG1hcmdpbi10b3A6IDEwcnB4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0LnRhYntcblx0XHRcdHdpZHRoOiAyNTBycHg7XG5cdFx0fVxuXHR9XG5cdCYtbGlzdHtcblx0XHRwYWRkaW5nOiAwIDI1cnB4IDI1cnB4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Lml0ZW17XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMjAwcnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdGJveC1zaGFkb3c6IDBweCA0cnB4IDEwcnB4IDBweCByZ2JhKDAsMCwwLDAuMDYpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBycHg7XG5cdFx0XHRwYWRkaW5nOiAzMHJweDtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xuXHRcdFx0LnBpY3tcblx0XHRcdFx0d2lkdGg6IDE0MHJweDtcblx0XHRcdFx0aGVpZ2h0OiAxNDBycHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDEwcnB4O1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xuXHRcdFx0XHRpbWFnZXtcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5pbmZve1xuXHRcdFx0XHRmbGV4OiAxO1xuXHRcdFx0XHQubmFtZXtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMzJycHg7XG5cdFx0XHRcdFx0Y29sb3I6ICMyMjIyMjI7XG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRcdC52aXB7XG5cdFx0XHRcdFx0XHR3aWR0aDogNjBycHg7XG5cdFx0XHRcdFx0XHRsaW5lLWhlaWdodDogMzJycHg7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kOiB1cmwoQC9zdGF0aWMvdmlwLWJnLnBuZykgY2VudGVyIHRvcCBuby1yZXBlYXQ7XG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAyMHJweDtcblx0XHRcdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xuXHRcdFx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0LmRlc2N7XG5cdFx0XHRcdFx0d2lkdGg6IDE4MHJweDtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogNDBycHg7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogI0YyRjJGMjtcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA0MHJweDtcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjRycHg7XG5cdFx0XHRcdFx0Y29sb3I6ICMwMDAwMDA7XG5cdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQuY2hhdHtcblx0XHRcdFx0d2lkdGg6IDE1MHJweDtcblx0XHRcdFx0aGVpZ2h0OiA5MHJweDtcblx0XHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsICMwMDAwMDAsICMzRDNCMzgpO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwcHggNHJweCAxOHJweCAwcHggcmdiYSg0Miw0MSwzOSwwLjM0KTtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogOTBycHg7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRmb250LXNpemU6IDI0cnB4O1xuXHRcdFx0XHRjb2xvcjogI0ZGRkZGRjtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDY1cnB4O1xuXHRcdFx0XHRcdGhlaWdodDogMzJycHg7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0bWFyZ2luOiAxNXJweCBhdXRvIDVycHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cdFxuPC9zdHlsZT5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///99\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 3));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 68));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/js_sdk/wa-permission/permission.js */ 74));\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 info: {},\n commentList1: [],\n commentList2: [],\n isCoins: false,\n isDashan: false,\n isPopup: false,\n current: 0,\n city: \"\",\n page1: 1,\n page2: 1,\n total1: 1,\n total2: 1,\n balanceInfo: {},\n show: false,\n list: [{\n 'name': '热门'\n }, {\n 'name': '附近'\n }],\n activeStyle: {\n 'fontSize': '35rpx'\n },\n userInfo: {},\n goldInfo: {}\n };\n },\n onPullDownRefresh: function onPullDownRefresh() {\n var that = this;\n if (uni.getStorageSync(\"userInfo\").id) {\n uni.$emit(\"openSocket\");\n }\n if (!that.city) {\n return;\n }\n setTimeout(function () {\n if (that.current == 0) {\n if (that.commentList1.length <= that.total1) {\n that.page1++;\n setTimeout(function () {\n that.customerRecommendList(1);\n }, 1000);\n }\n } else {\n if (that.commentList2.length <= that.total2) {\n that.page2++;\n setTimeout(function () {\n that.nearbyCustomerList(1);\n }, 1000);\n }\n }\n uni.stopPullDownRefresh();\n }, 2000);\n },\n onLoad: function onLoad() {\n if (uni.getSystemInfoSync().platform == 'ios') {\n this.getLocation();\n }\n },\n onReady: function onReady() {\n var that = this;\n uni.$on(\"clickTap\", function (res) {\n __f__(\"log\", res, \" at pages/index/index.vue:154\");\n that.city = res.name;\n if (that.current == 0) {\n that.page1 = 1;\n that.commentList1 = [];\n that.customerRecommendList();\n } else {\n that.page2 = 1;\n that.commentList2 = [];\n that.nearbyCustomerList();\n }\n });\n uni.$on(\"closeSharePopup\", function (res) {\n that.isPopup = false;\n that.isDashan = false;\n that.isCoins = false;\n });\n uni.$on(\"openCoinsPopup\", function (res) {\n that.isCoins = res;\n });\n uni.$on(\"onPopup\", function (res) {\n if (res == 1) {\n that.show = false;\n }\n });\n },\n onShow: function onShow() {\n this.getUserInfo();\n if (uni.getStorageSync(\"userInfo\").id) {\n if (!uni.getStorageSync(\"isOpen\")) {\n uni.$emit(\"openSocket\");\n }\n }\n },\n onReachBottom: function onReachBottom() {\n var that = this;\n uni.showLoading({\n title: \"加载中\"\n });\n if (that.current == 0) {\n if (that.commentList1.length <= that.total1) {\n that.page1++;\n setTimeout(function () {\n that.customerRecommendList(1);\n }, 1000);\n }\n } else {\n if (that.commentList2.length <= that.total2) {\n that.page2++;\n setTimeout(function () {\n that.nearbyCustomerList(1);\n }, 1000);\n }\n }\n },\n methods: {\n toGetLocation: function toGetLocation() {\n var that = this;\n __f__(\"log\", 111, \" at pages/index/index.vue:213\");\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.ACCESS_FINE_LOCATION', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n uni.removeStorageSync(\"jingweiInfo\");\n // that.getLocation();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/index/index.vue:230\");\n });\n that.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');\n return;\n } else {\n that.getLocation();\n }\n },\n //实时上传轨迹\n trackUpload: function trackUpload(res, type) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _yield$_this$$api$tra, code, data;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.$api.trackUpload({\n userId: uni.getStorageSync(\"userInfo\").id,\n lat: res.latitude,\n lon: res.longitude\n });\n case 2:\n _yield$_this$$api$tra = _context.sent;\n code = _yield$_this$$api$tra.code;\n data = _yield$_this$$api$tra.data;\n if (code == 200) {\n if (type == 1) {\n uni.navigateTo({\n url: \"/pages/pipei/tongcheng/index\"\n });\n } else if (type == 2) {\n uni.navigateTo({\n url: \"/pages/pipei/yuyin/index\"\n });\n } else if (type == 3) {\n uni.navigateTo({\n url: \"/pages/pipei/shipin/index\"\n });\n }\n }\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n //检查次数\n userBalance: function userBalance() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var _yield$_this2$$api$us, code, data;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.$api.userBalance({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this2$$api$us = _context2.sent;\n code = _yield$_this2$$api$us.code;\n data = _yield$_this2$$api$us.data;\n if (code == 200) {\n _this2.balanceInfo = data;\n }\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n recorderAuthModal: function recorderAuthModal() {\n var that = this;\n uni.showModal({\n title: '定位权限说明',\n content: '便于您使用该功能在当前位置查询所在门店,请您确认授权,否则无法使用该功能。',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n requestAndroidPermission: function requestAndroidPermission(permisionID) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var that, result;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n that = _this3;\n _context3.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context3.sent;\n if (result != 1) {\n that.recorderAuthModal();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n //首页附近\n nearbyCustomerList: function nearbyCustomerList(type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var _yield$_this4$$api$ne, code, data, msg;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n __f__(\"log\", uni.getStorageSync(\"jingweiInfo\").new_city, \" at pages/index/index.vue:299\");\n _context4.next = 3;\n return _this4.$api.nearbyCustomerList({\n userId: uni.getStorageSync(\"userInfo\").id,\n nickname: \"\",\n startAge: \"\",\n endAge: \"\",\n city: uni.getStorageSync(\"jingweiInfo\").new_city ? uni.getStorageSync(\"jingweiInfo\").new_city : uni.getStorageSync(\"jingweiInfo\").city,\n lat: uni.getStorageSync(\"jingweiInfo\").latitude,\n lon: uni.getStorageSync(\"jingweiInfo\").longitude,\n page: _this4.page2,\n limit: 20\n });\n case 3:\n _yield$_this4$$api$ne = _context4.sent;\n code = _yield$_this4$$api$ne.code;\n data = _yield$_this4$$api$ne.data;\n msg = _yield$_this4$$api$ne.msg;\n if (type == 1) {\n uni.hideLoading();\n }\n if (code == 200) {\n _this4.total2 = data.total;\n _this4.commentList2 = _this4.arrayUnique([].concat((0, _toConsumableArray2.default)(_this4.commentList2), (0, _toConsumableArray2.default)(data.list)), 'id');\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 9:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n //首页推荐\n customerRecommendList: function customerRecommendList(type) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var _yield$_this5$$api$cu, code, data, msg;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return _this5.$api.customerRecommendList({\n userId: uni.getStorageSync(\"userInfo\").id,\n nickname: \"\",\n startAge: \"\",\n endAge: \"\",\n lat: uni.getStorageSync(\"jingweiInfo\").latitude,\n lon: uni.getStorageSync(\"jingweiInfo\").longitude,\n city: uni.getStorageSync(\"jingweiInfo\").new_city ? uni.getStorageSync(\"jingweiInfo\").new_city : uni.getStorageSync(\"jingweiInfo\").city,\n page: _this5.page1,\n limit: 20\n });\n case 2:\n _yield$_this5$$api$cu = _context5.sent;\n code = _yield$_this5$$api$cu.code;\n data = _yield$_this5$$api$cu.data;\n msg = _yield$_this5$$api$cu.msg;\n if (type == 1) {\n uni.hideLoading();\n }\n if (code == 200) {\n _this5.total1 = data.total;\n _this5.commentList1 = _this5.arrayUnique([].concat((0, _toConsumableArray2.default)(_this5.commentList1), (0, _toConsumableArray2.default)(data.list)), 'id');\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 8:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n //数组对象去重\n arrayUnique: function arrayUnique(arr, name) {\n var hash = {};\n return arr.reduce(function (item, next) {\n hash[next[name]] ? \"\" : hash[next[name]] = true && item.push(next);\n return item;\n }, []);\n },\n costDescription: function costDescription() {\n var _this6 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var _yield$_this6$$api$co, code, data;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this6.$api.costDescription({});\n case 2:\n _yield$_this6$$api$co = _context6.sent;\n code = _yield$_this6$$api$co.code;\n data = _yield$_this6$$api$co.data;\n if (code == 200) {\n _this6.goldInfo = data;\n }\n case 6:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n //获取用户信息\n getUserInfo: function getUserInfo() {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n var _yield$_this7$$api$fi, code, data, msg;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return _this7.$api.findUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this7$$api$fi = _context7.sent;\n code = _yield$_this7$$api$fi.code;\n data = _yield$_this7$$api$fi.data;\n msg = _yield$_this7$$api$fi.msg;\n if (code == 200) {\n _this7.userInfo = data;\n _this7.userBalance();\n _this7.costDescription();\n uni.setStorageSync(\"userInfo\", data);\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }))();\n },\n getLocation: function getLocation() {\n var that = this;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/index/index.vue:390\");\n that.trackUpload(res1);\n var latitude = res1.latitude,\n longitude = res1.longitude;\n var url = \"https://restapi.amap.com/v3/geocode/regeo?output=json&location=\".concat(longitude, \",\").concat(latitude, \"&key=4a6e2ba8eac3864f0d88f9b5abd026e6&radius=1000\");\n uni.request({\n url: url,\n success: function success(res) {\n __f__(\"log\", res, \" at pages/index/index.vue:397\");\n var city = res.data.regeocode.addressComponent.city.length == 0 ? res.data.regeocode.addressComponent.province : res.data.regeocode.addressComponent.city;\n that.city = res.data.regeocode.formatted_address.split(res.data.regeocode.addressComponent.township)[1];\n uni.setStorageSync(\"jingweiInfo\", _objectSpread(_objectSpread(_objectSpread({}, res1), res.data.regeocode.addressComponent), {}, {\n formatted: that.city\n }));\n that.show = false;\n if (that.current == 0) {\n that.page1 = 1;\n that.commentList1 = [];\n that.customerRecommendList();\n } else {\n that.page2 = 1;\n that.commentList2 = [];\n that.nearbyCustomerList();\n }\n }\n });\n }\n });\n },\n openPage: function openPage(index, id) {\n var that = this;\n if (!that.city) {\n that.toGetLocation();\n return;\n }\n if (index == 1) {\n __f__(\"log\", this.userInfo.realnameFlag, \" at pages/index/index.vue:423\");\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n that.trackUpload(res, 1);\n }\n });\n } else if (index == 2) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (this.balanceInfo.voiceCoins * 60 <= 0) {\n uni.showModal({\n title: \"温馨提示\",\n content: \"当前账户金币不足,语音通话\" + this.goldInfo.voiceCoins + \"金币/1分钟,请前往充值\",\n confirmColor: \"#000000\",\n success: function success(res) {\n if (res.confirm) {\n uni.navigateTo({\n url: \"/pages/users/recharge/index\"\n });\n }\n }\n });\n return;\n }\n }\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n that.trackUpload(res, 2);\n }\n });\n } else if (index == 3) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (this.balanceInfo.videoCoins * 60 <= 0) {\n uni.showModal({\n title: \"温馨提示\",\n content: \"当前账户金币不足,语音通话\" + this.goldInfo.videoCoins + \"金币/1分钟,请前往充值\",\n confirmColor: \"#000000\",\n success: function success(res) {\n if (res.confirm) {\n uni.navigateTo({\n url: \"/pages/users/recharge/index\"\n });\n }\n }\n });\n return;\n }\n }\n uni.getLocation({\n type: 'gcj02',\n success: function success(res) {\n that.trackUpload(res, 3);\n }\n });\n } else if (index == 4) {\n uni.navigateTo({\n url: \"/pages/index/search?type=1\"\n });\n } else if (index == 5) {\n uni.navigateTo({\n url: \"/pages/index/city\"\n });\n } else if (index == 6) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + id\n });\n } else if (index == 7) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n this.info = id;\n this.info.userid = id.id;\n this.isDashan = true;\n }\n },\n changeTabs: function changeTabs(index) {\n this.current = index;\n this.commentList1 = [];\n this.page1 = 1;\n this.page2 = 1;\n this.commentList1 = [];\n this.commentList2 = [];\n if (index == 0) {\n this.customerRecommendList();\n } else {\n this.nearbyCustomerList();\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 */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIl0sIm5hbWVzIjpbImRhdGEiLCJpbmZvIiwiY29tbWVudExpc3QxIiwiY29tbWVudExpc3QyIiwiaXNDb2lucyIsImlzRGFzaGFuIiwiaXNQb3B1cCIsImN1cnJlbnQiLCJjaXR5IiwicGFnZTEiLCJwYWdlMiIsInRvdGFsMSIsInRvdGFsMiIsImJhbGFuY2VJbmZvIiwic2hvdyIsImxpc3QiLCJhY3RpdmVTdHlsZSIsInVzZXJJbmZvIiwiZ29sZEluZm8iLCJvblB1bGxEb3duUmVmcmVzaCIsInRoYXQiLCJ1bmkiLCJnZXRTdG9yYWdlU3luYyIsImlkIiwiJGVtaXQiLCJzZXRUaW1lb3V0IiwibGVuZ3RoIiwiY3VzdG9tZXJSZWNvbW1lbmRMaXN0IiwibmVhcmJ5Q3VzdG9tZXJMaXN0Iiwic3RvcFB1bGxEb3duUmVmcmVzaCIsIm9uTG9hZCIsImdldFN5c3RlbUluZm9TeW5jIiwicGxhdGZvcm0iLCJnZXRMb2NhdGlvbiIsIm9uUmVhZHkiLCIkb24iLCJyZXMiLCJuYW1lIiwib25TaG93IiwiZ2V0VXNlckluZm8iLCJvblJlYWNoQm90dG9tIiwic2hvd0xvYWRpbmciLCJ0aXRsZSIsIm1ldGhvZHMiLCJ0b0dldExvY2F0aW9uIiwicGx1cyIsImFuZHJvaWQiLCJjaGVja1Blcm1pc3Npb24iLCJncmFudGVkIiwiY2hlY2tSZXN1bHQiLCJyZW1vdmVTdG9yYWdlU3luYyIsImVycm9yIiwibWVzc2FnZSIsInJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbiIsInRyYWNrVXBsb2FkIiwidHlwZSIsIiRhcGkiLCJ1c2VySWQiLCJsYXQiLCJsYXRpdHVkZSIsImxvbiIsImxvbmdpdHVkZSIsImNvZGUiLCJuYXZpZ2F0ZVRvIiwidXJsIiwidXNlckJhbGFuY2UiLCJyZWNvcmRlckF1dGhNb2RhbCIsInNob3dNb2RhbCIsImNvbnRlbnQiLCJjYW5jZWxUZXh0IiwiY29uZmlybVRleHQiLCJzdWNjZXNzIiwiY29uZmlybSIsInBlcm1pc2lvbiIsImdvdG9BcHBQZXJtaXNzaW9uU2V0dGluZyIsInBlcm1pc2lvbklEIiwicmVzdWx0IiwibmV3X2NpdHkiLCJuaWNrbmFtZSIsInN0YXJ0QWdlIiwiZW5kQWdlIiwicGFnZSIsImxpbWl0IiwibXNnIiwiaGlkZUxvYWRpbmciLCJ0b3RhbCIsImFycmF5VW5pcXVlIiwic2hvd1RvYXN0IiwicG9zaXRpb24iLCJpY29uIiwiYXJyIiwiaGFzaCIsInJlZHVjZSIsIml0ZW0iLCJuZXh0IiwicHVzaCIsImNvc3REZXNjcmlwdGlvbiIsImZpbmRVc2VySW5mbyIsInNldFN0b3JhZ2VTeW5jIiwicmVzMSIsInJlcXVlc3QiLCJyZWdlb2NvZGUiLCJhZGRyZXNzQ29tcG9uZW50IiwicHJvdmluY2UiLCJmb3JtYXR0ZWRfYWRkcmVzcyIsInNwbGl0IiwidG93bnNoaXAiLCJmb3JtYXR0ZWQiLCJvcGVuUGFnZSIsImluZGV4IiwicmVhbG5hbWVGbGFnIiwiZmFjZUZsYWciLCJwaG9uZUZsYWciLCJzZXgiLCJ2b2ljZUNvaW5zIiwiY29uZmlybUNvbG9yIiwidmlkZW9Db2lucyIsInVzZXJpZCIsImNoYW5nZVRhYnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBOEZBO0FBQTREO0FBQUE7QUFBQSxlQUM3QztFQUNkQSxJQUFJLGtCQUFHO0lBQ04sT0FBTztNQUNOQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO01BQ1JDLFlBQVksRUFBRSxFQUFFO01BQ2hCQyxZQUFZLEVBQUUsRUFBRTtNQUNoQkMsT0FBTyxFQUFFLEtBQUs7TUFDZEMsUUFBUSxFQUFFLEtBQUs7TUFDZkMsT0FBTyxFQUFFLEtBQUs7TUFDZEMsT0FBTyxFQUFFLENBQUM7TUFDVkMsSUFBSSxFQUFFLEVBQUU7TUFDUkMsS0FBSyxFQUFFLENBQUM7TUFDUkMsS0FBSyxFQUFFLENBQUM7TUFDUkMsTUFBTSxFQUFFLENBQUM7TUFDVEMsTUFBTSxFQUFFLENBQUM7TUFDVEMsV0FBVyxFQUFFLENBQUMsQ0FBQztNQUNmQyxJQUFJ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QUM3RixRQUFRLENBQUM4RixRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQzlGLFFBQVEsQ0FBQytGLFNBQVMsSUFBSSxDQUFDLEVBQUM7VUFDakcsSUFBSSxDQUFDMUcsT0FBTyxHQUFHLElBQUk7VUFDbkI7UUFDRDtRQUNBLElBQUksQ0FBQ0wsSUFBSSxHQUFHc0IsRUFBRTtRQUNkLElBQUksQ0FBQ3RCLElBQUksQ0FBQ29ILE1BQU0sR0FBRzlGLEVBQUUsQ0FBQ0EsRUFBRTtRQUN4QixJQUFJLENBQUNsQixRQUFRLEdBQUcsSUFBSTtNQUNyQjtJQUNELENBQUM7SUFDRGlILFVBQVUsc0JBQUNULEtBQUssRUFBQztNQUNoQixJQUFJLENBQUN0RyxPQUFPLEdBQUdzRyxLQUFLO01BQ3BCLElBQUksQ0FBQzNHLFlBQVksR0FBRyxFQUFFO01BQ3RCLElBQUksQ0FBQ08sS0FBSyxHQUFHLENBQUM7TUFDZCxJQUFJLENBQUNDLEtBQUssR0FBRyxDQUFDO01BQ2QsSUFBSSxDQUFDUixZQUFZLEdBQUcsRUFBRTtNQUN0QixJQUFJLENBQUNDLFlBQVksR0FBRyxFQUFFO01BQ3RCLElBQUcwRyxLQUFLLElBQUksQ0FBQyxFQUFDO1FBQ2IsSUFBSSxDQUFDbEYscUJBQXFCLEVBQUU7TUFDN0IsQ0FBQyxNQUFJO1FBQ0osSUFBSSxDQUFDQyxrQkFBa0IsRUFBRTtNQUMxQjtJQUNEO0VBQ0Q7QUFDRCxDQUFDO0FBQUEsMkIiLCJmaWxlIjoiOTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmltcG9ydCBwZXJtaXNpb24gZnJvbSBcIkAvanNfc2RrL3dhLXBlcm1pc3Npb24vcGVybWlzc2lvbi5qc1wiXG5leHBvcnQgZGVmYXVsdCB7XG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGluZm86IHt9LFxuXHRcdFx0Y29tbWVudExpc3QxOiBbXSxcblx0XHRcdGNvbW1lbnRMaXN0MjogW10sXG5cdFx0XHRpc0NvaW5zOiBmYWxzZSxcblx0XHRcdGlzRGFzaGFuOiBmYWxzZSxcblx0XHRcdGlzUG9wdXA6IGZhbHNlLFxuXHRcdFx0Y3VycmVudDogMCxcblx0XHRcdGNpdHk6IFwiXCIsXG5cdFx0XHRwYWdlMTogMSxcblx0XHRcdHBhZ2UyOiAxLFxuXHRcdFx0dG90YWwxOiAxLFxuXHRcdFx0dG90YWwyOiAxLFxuXHRcdFx0YmFsYW5jZUluZm86IHt9LFxuXHRcdFx0c2hvdzogZmFsc2UsXG5cdFx0XHRsaXN0Olt7J25hbWUnOiAn54Ot6ZeoJ30seyduYW1lJzogJ+mZhOi/kSd9XSxcblx0XHRcdGFjdGl2ZVN0eWxlOnsnZm9udFNpemUnOiAnMzVycHgnfSxcblx0XHRcdHVzZXJJbmZvOiB7fSxcblx0XHRcdGdvbGRJbmZvOiB7fVxuXHRcdH1cblx0fSxcblx0b25QdWxsRG93blJlZnJlc2goKSB7XG5cdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQpe1xuXHRcdFx0dW5pLiRlbWl0KFwib3BlblNvY2tldFwiKTtcblx0XHR9XG5cdFx0aWYoIXRoYXQuY2l0eSl7XG5cdFx0XHRyZXR1cm4gO1xuXHRcdH1cblx0XHRzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRpZih0aGF0LmN1cnJlbnQgPT0gMCl7XG5cdFx0XHRcdGlmKHRoYXQuY29tbWVudExpc3QxLmxlbmd0aCA8PSB0aGF0LnRvdGFsMSl7XG5cdFx0XHRcdFx0dGhhdC5wYWdlMSArKztcblx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0dGhhdC5jdXN0b21lclJlY29tbWVuZExpc3QoMSk7XG5cdFx0XHRcdFx0fSwgMTAwMCk7XG5cdFx0XHRcdH1cblx0XHRcdH1lbHNle1xuXHRcdFx0XHRpZih0aGF0LmNvbW1lbnRMaXN0Mi5sZW5ndGggPD0gdGhhdC50b3RhbDIpe1xuXHRcdFx0XHRcdHRoYXQucGFnZTIgKys7XG5cdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHRoYXQubmVhcmJ5Q3VzdG9tZXJMaXN0KDEpO1xuXHRcdFx0XHRcdH0sIDEwMDApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR1bmkuc3RvcFB1bGxEb3duUmVmcmVzaCgpO1xuXHRcdH0sMjAwMClcblx0fSxcblx0b25Mb2FkKCkge1xuXHRcdGlmKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09ICdpb3MnKSB7XG5cdFx0XHR0aGlzLmdldExvY2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRvblJlYWR5KCkge1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdHVuaS4kb24oXCJjbGlja1RhcFwiLCByZXM9Pntcblx0XHRcdGNvbnNvbGUubG9nKHJlcylcblx0XHRcdHRoYXQuY2l0eSA9IHJlcy5uYW1lO1xuXHRcdFx0aWYodGhhdC5jdXJyZW50ID09IDApe1xuXHRcdFx0XHR0aGF0LnBhZ2UxID0gMTtcblx0XHRcdFx0dGhhdC5jb21tZW50TGlzdDEgPSBbXTtcblx0XHRcdFx0dGhhdC5jdXN0b21lclJlY29tbWVuZExpc3QoKTtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR0aGF0LnBhZ2UyID0gMTtcblx0XHRcdFx0dGhhdC5jb21tZW50TGlzdDIgPSBbXTtcblx0XHRcdFx0dGhhdC5uZWFyYnlDdXN0b21lckxpc3QoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR1bmkuJG9uKFwiY2xvc2VTaGFyZVBvcHVwXCIscmVzPT57XG5cdFx0XHR0aGF0LmlzUG9wdXAgPSBmYWxzZTtcblx0XHRcdHRoYXQuaXNEYXNoYW49ICBmYWxzZTtcblx0XHRcdHRoYXQuaXNDb2lucz0gIGZhbHNlO1xuXHRcdH0pXG5cdFx0XG5cdFx0dW5pLiRvbihcIm9wZW5Db2luc1BvcHVwXCIscmVzPT57XG5cdFx0XHR0aGF0LmlzQ29pbnMgPSByZXNcblx0XHR9KVxuXHRcdHVuaS4kb24oXCJvblBvcHVwXCIscmVzPT57XG5cdFx0XHRpZihyZXMgPT0gMSl7XG5cdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxuXHRcdFx0fVxuXHRcdH0pXG5cdH0sXG5cdG9uU2hvdygpIHtcblx0XHR0aGlzLmdldFVzZXJJbmZvKCk7XG5cdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQpe1xuXHRcdFx0aWYoIXVuaS5nZXRTdG9yYWdlU3luYyhcImlzT3BlblwiKSl7XG5cdFx0XHRcdHVuaS4kZW1pdChcIm9wZW5Tb2NrZXRcIik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRvblJlYWNoQm90dG9tKCkge1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdHVuaS5zaG93TG9hZGluZyh7XG5cdFx0XHR0aXRsZTogXCLliqDovb3kuK1cIlxuXHRcdH0pXG5cdFx0aWYodGhhdC5jdXJyZW50ID09IDApe1xuXHRcdFx0aWYodGhhdC5jb21tZW50TGlzdDEubGVuZ3RoIDw9IHRoYXQudG90YWwxKXtcblx0XHRcdFx0dGhhdC5wYWdlMSArKztcblx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHR0aGF0LmN1c3RvbWVyUmVjb21tZW5kTGlzdCgxKTtcblx0XHRcdFx0fSwgMTAwMCk7XG5cdFx0XHR9XG5cdFx0fWVsc2V7XG5cdFx0XHRpZih0aGF0LmNvbW1lbnRMaXN0Mi5sZW5ndGggPD0gdGhhdC50b3RhbDIpe1xuXHRcdFx0XHR0aGF0LnBhZ2UyICsrO1xuXHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdHRoYXQubmVhcmJ5Q3VzdG9tZXJMaXN0KDEpO1xuXHRcdFx0XHR9LCAxMDAwKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHR0b0dldExvY2F0aW9uKCkge1xuXHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRjb25zb2xlLmxvZygxMTEpXG5cdFx0XHQvLyBBUFDmo4Dmn6XmnYPpmZBcblx0XHRcdGlmKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09ICdhbmRyb2lkJykge1xuXHRcdFx0XHRwbHVzLmFuZHJvaWQuY2hlY2tQZXJtaXNzaW9uKFxuXHRcdFx0XHRcdCdhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX0ZJTkVfTE9DQVRJT04nLFxuXHRcdFx0XHRcdGdyYW50ZWQgPT4ge1xuXHRcdFx0XHRcdCAgaWYgKGdyYW50ZWQuY2hlY2tSZXN1bHQ9PS0xKXtcblx0XHRcdFx0XHRcdHRoYXQuc2hvdyA9IHRydWVcblx0XHRcdFx0XHRcdHVuaS5yZW1vdmVTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpXG5cdFx0XHRcdFx0XHQvLyB0aGF0LmdldExvY2F0aW9uKCk7XG5cdFx0XHRcdFx0ICB9ZWxzZXtcblx0XHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxuXHRcdFx0XHRcdFx0Ly8g5q2k5Li6dVZpZXfnmoTot7Povazmlrnms5XvvIzor6bop4FcIuaWh+ahoy1KU1wi6YOo5YiG77yM5Lmf5Y+v5Lul55SodW5p55qEdW5pLm5hdmlnYXRlVG9cblx0XHRcdFx0XHRcdHRoYXQuZ2V0TG9jYXRpb24oKTtcblx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGVycm9yID0+IHtcblx0XHRcdFx0XHQgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHBlcm1pc3Npb246JywgZXJyb3IubWVzc2FnZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQgICk7XG5cdFx0XHRcdCB0aGF0LnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbignYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19GSU5FX0xPQ0FUSU9OJylcblx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR0aGF0LmdldExvY2F0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvL+WunuaXtuS4iuS8oOi9qOi/uVxuXHRcdGFzeW5jIHRyYWNrVXBsb2FkKHJlcyx0eXBlKXtcblx0XHRcdGNvbnN0IHtjb2RlLCBkYXRhLH0gPSBhd2FpdCB0aGlzLiRhcGkudHJhY2tVcGxvYWQoe1xuXHRcdFx0XHR1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRsYXQ6IHJlcy5sYXRpdHVkZSxcblx0XHRcdFx0bG9uOiByZXMubG9uZ2l0dWRlLFxuXHRcdFx0fSk7XG5cdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdGlmKHR5cGU9PTEpe1xuXHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGlwZWkvdG9uZ2NoZW5nL2luZGV4XCJcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9ZWxzZSBpZih0eXBlID09IDIpe1xuXHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGlwZWkveXV5aW4vaW5kZXhcIlxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1lbHNlIGlmKHR5cGUgPT0gMyl7XG5cdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9waXBlaS9zaGlwaW4vaW5kZXhcIlxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdC8v5qOA5p+l5qyh5pWwXG5cdFx0YXN5bmMgdXNlckJhbGFuY2UoKSB7XG5cdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgfSA9IGF3YWl0IHRoaXMuJGFwaS51c2VyQmFsYW5jZSh7XG5cdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWRcblx0XHRcdH0pIFxuXHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHR0aGlzLmJhbGFuY2VJbmZvID0gZGF0YVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0cmVjb3JkZXJBdXRoTW9kYWw6IGZ1bmN0aW9uICgpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdHRpdGxlOiAn5a6a5L2N5p2D6ZmQ6K+05piOJyxcblx0XHRcdFx0Y29udGVudDogJ+S+v+S6juaCqOS9v+eUqOivpeWKn+iDveWcqOW9k+WJjeS9jee9ruafpeivouaJgOWcqOmXqOW6l++8jOivt+aCqOehruiupOaOiOadg++8jOWQpuWImeaXoOazleS9v+eUqOivpeWKn+iDveOAgicsXG5cdFx0XHRcdGNhbmNlbFRleHQ6ICflhbPpl60nLFxuXHRcdFx0XHRjb25maXJtVGV4dDogJ+WOu+aOiOadgycsXG5cdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0dGhhdC5zaG93PWZhbHNlXG5cdFx0XHRcdFx0aWYgKHJlcy5jb25maXJtKSB7XG5cdFx0XHRcdFx0XHRwZXJtaXNpb24uZ290b0FwcFBlcm1pc3Npb25TZXR0aW5nKClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRhc3luYyByZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24ocGVybWlzaW9uSUQpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0dmFyIHJlc3VsdCA9IGF3YWl0IHBlcm1pc2lvbi5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24ocGVybWlzaW9uSUQpO1xuXHRcdFx0aWYocmVzdWx0ICE9IDEpe1xuXHRcdFx0XHR0aGF0LnJlY29yZGVyQXV0aE1vZGFsKCk7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0dGhhdC5zaG93PWZhbHNlXG5cdFx0XHRcdC8vIOatpOS4unVWaWV355qE6Lez6L2s5pa55rOV77yM6K+m6KeBXCLmlofmoaMtSlNcIumDqOWIhu+8jOS5n+WPr+S7peeUqHVuaeeahHVuaS5uYXZpZ2F0ZVRvXG5cdFx0XHRcdHRoYXQuZ2V0TG9jYXRpb24oKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8v6aaW6aG16ZmE6L+RXG5cdFx0YXN5bmMgbmVhcmJ5Q3VzdG9tZXJMaXN0KHR5cGUpe1xuXHRcdFx0Y29uc29sZS5sb2codW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHkpXG5cdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2cgfSA9IGF3YWl0IHRoaXMuJGFwaS5uZWFyYnlDdXN0b21lckxpc3Qoe1xuXHRcdFx0XHR1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRuaWNrbmFtZTogXCJcIixcblx0XHRcdFx0c3RhcnRBZ2U6IFwiXCIsXG5cdFx0XHRcdGVuZEFnZTogXCJcIixcblx0XHRcdFx0Y2l0eTogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk/dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk6dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikuY2l0eSxcblx0XHRcdFx0bGF0OiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiKS5sYXRpdHVkZSxcblx0XHRcdFx0bG9uOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiKS5sb25naXR1ZGUsXG5cdFx0XHRcdHBhZ2U6IHRoaXMucGFnZTIsXG5cdFx0XHRcdGxpbWl0OiAyMFxuXHRcdFx0fSk7XG5cdFx0XHRpZih0eXBlID09IDEpe1xuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKVxuXHRcdFx0fVxuXHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHR0aGlzLnRvdGFsMiA9IGRhdGEudG90YWw7XG5cdFx0XHRcdHRoaXMuY29tbWVudExpc3QyID0gdGhpcy5hcnJheVVuaXF1ZShbLi4udGhpcy5jb21tZW50TGlzdDIsLi4uZGF0YS5saXN0XSwnaWQnKVxuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdHRpdGxlOiBtc2csXG5cdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdH0pXG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvL+mmlumhteaOqOiNkFxuXHRcdGFzeW5jIGN1c3RvbWVyUmVjb21tZW5kTGlzdCh0eXBlKXtcblx0XHRcdGNvbnN0IHsgY29kZSwgZGF0YSAsIG1zZyB9ID0gYXdhaXQgdGhpcy4kYXBpLmN1c3RvbWVyUmVjb21tZW5kTGlzdCh7XG5cdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdG5pY2tuYW1lOiBcIlwiLFxuXHRcdFx0XHRzdGFydEFnZTogXCJcIixcblx0XHRcdFx0ZW5kQWdlOiBcIlwiLFxuXHRcdFx0XHRsYXQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLmxhdGl0dWRlLFxuXHRcdFx0XHRsb246IHVuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLmxvbmdpdHVkZSxcblx0XHRcdFx0Y2l0eTogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk/dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk6dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikuY2l0eSxcblx0XHRcdFx0cGFnZTogdGhpcy5wYWdlMSxcblx0XHRcdFx0bGltaXQ6IDIwXG5cdFx0XHR9KTtcblx0XHRcdGlmKHR5cGUgPT0gMSl7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpXG5cdFx0XHR9XG5cdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdHRoaXMudG90YWwxID0gZGF0YS50b3RhbDtcblx0XHRcdFx0dGhpcy5jb21tZW50TGlzdDEgPSB0aGlzLmFycmF5VW5pcXVlKFsuLi50aGlzLmNvbW1lbnRMaXN0MSwuLi5kYXRhLmxpc3RdLCdpZCcpXG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IG1zZyxcblx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8v5pWw57uE5a+56LGh5Y676YeNXG5cdFx0YXJyYXlVbmlxdWUgKGFyciwgbmFtZSkge1xuXHRcdFx0dmFyIGhhc2ggPSB7fTtcblx0XHRcdHJldHVybiBhcnIucmVkdWNlKGZ1bmN0aW9uIChpdGVtLCBuZXh0KSB7XG5cdFx0XHRcdGhhc2hbbmV4dFtuYW1lXV1cblx0XHRcdFx0XHQ/IFwiXCJcblx0XHRcdFx0XHQ6IChoYXNoW25leHRbbmFtZV1dID0gdHJ1ZSAmJiBpdGVtLnB1c2gobmV4dCkpO1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH0sIFtdKTtcblx0XHR9LFxuXHRcdGFzeW5jIGNvc3REZXNjcmlwdGlvbigpIHtcblx0XHRcdGNvbnN0IHtjb2RlLCBkYXRhIH0gPSBhd2FpdCB0aGlzLiRhcGkuY29zdERlc2NyaXB0aW9uKHt9KTtcblx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0dGhpcy5nb2xkSW5mbyA9IGRhdGFcblx0XHRcdH1cblx0XHR9LFxuXHRcdFxuXHRcdC8v6I635Y+W55So5oi35L+h5oGvXG5cdFx0YXN5bmMgZ2V0VXNlckluZm8oKSB7XG5cdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2cgfSA9IGF3YWl0IHRoaXMuJGFwaS5maW5kVXNlckluZm8oe3VzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWR9KTtcblx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0dGhpcy51c2VySW5mbyA9IGRhdGE7XG5cdFx0XHRcdHRoaXMudXNlckJhbGFuY2UoKTtcblx0XHRcdFx0dGhpcy5jb3N0RGVzY3JpcHRpb24oKTtcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIixkYXRhKTtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHR0aXRsZTogbXNnLFxuXHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Z2V0TG9jYXRpb24oKSB7XG5cdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdHVuaS5nZXRMb2NhdGlvbih7XG5cdFx0XHRcdHR5cGU6ICdnY2owMicsXG5cdFx0XHRcdHN1Y2Nlc3MocmVzMSkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlczEpXG5cdFx0XHRcdFx0dGhhdC50cmFja1VwbG9hZChyZXMxKVxuXHRcdFx0XHRcdGxldCBsYXRpdHVkZSA9IHJlczEubGF0aXR1ZGUsbG9uZ2l0dWRlID0gcmVzMS5sb25naXR1ZGU7XG5cdFx0XHRcdFx0bGV0IHVybCA9IGBodHRwczovL3Jlc3RhcGkuYW1hcC5jb20vdjMvZ2VvY29kZS9yZWdlbz9vdXRwdXQ9anNvbiZsb2NhdGlvbj0ke2xvbmdpdHVkZX0sJHtsYXRpdHVkZX0ma2V5PTRhNmUyYmE4ZWFjMzg2NGYwZDg4ZjliNWFiZDAyNmU2JnJhZGl1cz0xMDAwYFxuXHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdHVybCxcblx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcylcblx0XHRcdFx0XHRcdFx0bGV0IGNpdHkgPSByZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC5jaXR5Lmxlbmd0aD09MD9yZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC5wcm92aW5jZTpyZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC5jaXR5XG5cdFx0XHRcdFx0XHRcdHRoYXQuY2l0eSA9IHJlcy5kYXRhLnJlZ2VvY29kZS5mb3JtYXR0ZWRfYWRkcmVzcy5zcGxpdChyZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC50b3duc2hpcClbMV1cblx0XHRcdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIix7Li4ucmVzMSwuLi5yZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudCxmb3JtYXR0ZWQ6IHRoYXQuY2l0eX0pO1xuXHRcdFx0XHRcdFx0XHR0aGF0LnNob3cgPSBmYWxzZVxuXHRcdFx0XHRcdFx0XHRpZih0aGF0LmN1cnJlbnQgPT0gMCl7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5wYWdlMSA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5jb21tZW50TGlzdDEgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmN1c3RvbWVyUmVjb21tZW5kTGlzdCgpO1xuXHRcdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LnBhZ2UyID0gMTtcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmNvbW1lbnRMaXN0MiA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdHRoYXQubmVhcmJ5Q3VzdG9tZXJMaXN0KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0b3BlblBhZ2UoaW5kZXgsaWQpe1xuXHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHRpZighdGhhdC5jaXR5KXtcblx0XHRcdFx0dGhhdC50b0dldExvY2F0aW9uKCk7XG5cdFx0XHRcdHJldHVybiA7XG5cdFx0XHR9XG5cdFx0XHRpZihpbmRleCA9PSAxKXtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy51c2VySW5mby5yZWFsbmFtZUZsYWcpXG5cdFx0XHRcdGlmKHRoaXMudXNlckluZm8ucmVhbG5hbWVGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5mYWNlRmxhZyA9PSAwIHx8IHRoaXMudXNlckluZm8ucGhvbmVGbGFnID09IDApe1xuXHRcdFx0XHRcdHRoaXMuaXNQb3B1cCA9IHRydWVcblx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5nZXRMb2NhdGlvbih7XG5cdFx0XHRcdFx0dHlwZTogJ2djajAyJyxcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xuXHRcdFx0XHRcdFx0dGhhdC50cmFja1VwbG9hZChyZXMsMSlcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdFxuXHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gMil7XG5cdFx0XHRcdGlmKHRoaXMudXNlckluZm8ucmVhbG5hbWVGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5mYWNlRmxhZyA9PSAwIHx8IHRoaXMudXNlckluZm8ucGhvbmVGbGFnID09IDApe1xuXHRcdFx0XHRcdHRoaXMuaXNQb3B1cCA9IHRydWVcblx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLnNleCA9PSAxKXtcblx0XHRcdFx0XHRpZih0aGlzLmJhbGFuY2VJbmZvLnZvaWNlQ29pbnMqNjAgPD0gMCl7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5rip6aao5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwi5b2T5YmN6LSm5oi36YeR5biB5LiN6Laz77yM6K+t6Z+z6YCa6K+dXCIrdGhpcy5nb2xkSW5mby52b2ljZUNvaW5zK1wi6YeR5biBLzHliIbpkp8s6K+35YmN5b6A5YWF5YC8XCIsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1Db2xvcjogXCIjMDAwMDAwXCIsXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYocmVzLmNvbmZpcm0pe1xuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3VzZXJzL3JlY2hhcmdlL2luZGV4XCJcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLmdldExvY2F0aW9uKHtcblx0XHRcdFx0XHR0eXBlOiAnZ2NqMDInLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHR0aGF0LnRyYWNrVXBsb2FkKHJlcywyKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0XG5cdFx0XHR9ZWxzZSBpZihpbmRleCA9PSAzKXtcblx0XHRcdFx0aWYodGhpcy51c2VySW5mby5yZWFsbmFtZUZsYWcgPT0gMCB8fCB0aGlzLnVzZXJJbmZvLmZhY2VGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5waG9uZUZsYWcgPT0gMCl7XG5cdFx0XHRcdFx0dGhpcy5pc1BvcHVwID0gdHJ1ZVxuXHRcdFx0XHRcdHJldHVybiA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuc2V4ID09IDEpe1xuXHRcdFx0XHRcdGlmKHRoaXMuYmFsYW5jZUluZm8udmlkZW9Db2lucyo2MCA8PSAwKXtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmuKnppqjmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogXCLlvZPliY3otKbmiLfph5HluIHkuI3otrPvvIzor63pn7PpgJror51cIit0aGlzLmdvbGRJbmZvLnZpZGVvQ29pbnMrXCLph5HluIEvMeWIhumSnyzor7fliY3lvoDlhYXlgLxcIixcblx0XHRcdFx0XHRcdFx0Y29uZmlybUNvbG9yOiBcIiMwMDAwMDBcIixcblx0XHRcdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcblx0XHRcdFx0XHRcdFx0XHRpZihyZXMuY29uZmlybSl7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvdXNlcnMvcmVjaGFyZ2UvaW5kZXhcIlxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdH1cdFxuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5nZXRMb2NhdGlvbih7XG5cdFx0XHRcdFx0dHlwZTogJ2djajAyJyxcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xuXHRcdFx0XHRcdFx0dGhhdC50cmFja1VwbG9hZChyZXMsMylcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9ZWxzZSBpZihpbmRleCA9PSA0KXtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDogXCIvcGFnZXMvaW5kZXgvc2VhcmNoP3R5cGU9MVwiXG5cdFx0XHRcdH0pXG5cdFx0XHR9ZWxzZSBpZihpbmRleCA9PSA1KXtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDogXCIvcGFnZXMvaW5kZXgvY2l0eVwiXG5cdFx0XHRcdH0pXG5cdFx0XHR9ZWxzZSBpZihpbmRleCA9PSA2KXtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGVpd2FuL2RldGFpbD9pZD1cIitpZFxuXHRcdFx0XHR9KVxuXHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gNyl7XG5cdFx0XHRcdGlmKHRoaXMudXNlckluZm8ucmVhbG5hbWVGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5mYWNlRmxhZyA9PSAwIHx8IHRoaXMudXNlckluZm8ucGhvbmVGbGFnID09IDApe1xuXHRcdFx0XHRcdHRoaXMuaXNQb3B1cCA9IHRydWVcblx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuaW5mbyA9IGlkXG5cdFx0XHRcdHRoaXMuaW5mby51c2VyaWQgPSBpZC5pZFxuXHRcdFx0XHR0aGlzLmlzRGFzaGFuID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNoYW5nZVRhYnMoaW5kZXgpe1xuXHRcdFx0dGhpcy5jdXJyZW50ID0gaW5kZXg7XG5cdFx0XHR0aGlzLmNvbW1lbnRMaXN0MSA9IFtdXG5cdFx0XHR0aGlzLnBhZ2UxID0gMVxuXHRcdFx0dGhpcy5wYWdlMiA9IDFcblx0XHRcdHRoaXMuY29tbWVudExpc3QxID0gW11cblx0XHRcdHRoaXMuY29tbWVudExpc3QyID0gW11cblx0XHRcdGlmKGluZGV4ID09IDApe1xuXHRcdFx0XHR0aGlzLmN1c3RvbWVyUmVjb21tZW5kTGlzdCgpO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHRoaXMubmVhcmJ5Q3VzdG9tZXJMaXN0KCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///99\n"); /***/ }), /* 100 */ @@ -7080,7 +7080,7 @@ var render = function () { attrs: { _i: 6 }, on: { click: function ($event) { - return _vm.getLocation() + return _vm.toGetLocation() }, }, }, @@ -7289,7 +7289,7 @@ var render = function () { attrs: { _i: 31 }, on: { click: function ($event) { - return _vm.getLocation() + return _vm.toGetLocation() }, }, }, @@ -7361,7 +7361,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rua /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 68));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 3));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/js_sdk/wa-permission/permission.js */ 74));\nvar _methods;\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; }\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar systemInfoSync = uni.getSystemInfoSync();\nvar _default = {\n data: function data() {\n return {\n isDashan: false,\n isShare: false,\n current: 0,\n list: [],\n activeStyle: {\n 'fontSize': '35rpx'\n },\n isShow: false,\n city: \"\",\n isPopup: false,\n info: {},\n page: 1,\n show: false,\n total: 1,\n sellerUserList: [],\n userInfo: {},\n statusBarHeight: 0\n };\n },\n onPullDownRefresh: function onPullDownRefresh() {\n var that = this;\n setTimeout(function () {\n that.page = 1;\n that.sellerUserList = [];\n that.getsellerUserList();\n uni.stopPullDownRefresh();\n }, 2000);\n },\n onLoad: function onLoad() {},\n onShow: function onShow() {\n if (uni.getStorageSync(\"userInfo\").id) {\n this.getUserInfo();\n }\n },\n onReady: function onReady() {\n var that = this;\n uni.$on(\"clickTap\", function (res) {\n that.city = res.name;\n that.page = 1;\n that.sellerUserList = [];\n that.getsellerUserList();\n });\n uni.$on(\"closeSharePopup\", function (res) {\n that.isShare = false;\n that.isPopup = false;\n that.isDashan = false;\n });\n uni.$on(\"onPopup\", function (res) {\n if (res == 1) {\n that.show = false;\n }\n });\n },\n onReachBottom: function onReachBottom() {\n var that = this;\n uni.showLoading({\n title: \"加载中\"\n });\n that.page++;\n setTimeout(function () {\n that.getsellerUserList(1);\n }, 1000);\n },\n methods: (_methods = {\n getLocation: function getLocation() {\n var that = this;\n that.statusBarHeight = systemInfoSync.statusBarHeight;\n that.city = uni.getStorageSync(\"jingweiInfo\") ? uni.getStorageSync(\"jingweiInfo\").formatted : \"\";\n if (!that.city) {\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.ACCESS_FINE_LOCATION', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n that.getLocation();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/peiwan/index.vue:152\");\n });\n that.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');\n return;\n } else {\n that.getLocation();\n }\n } else {\n that.getList();\n that.getsellerUserList();\n }\n },\n //实时上传轨迹\n trackUpload: function trackUpload(res) {\n this.$api.trackUpload({\n userId: uni.getStorageSync(\"userInfo\").id,\n lat: res.latitude,\n lon: res.longitude\n });\n },\n recorderAuthModal: function recorderAuthModal() {\n var that = this;\n uni.showModal({\n title: '定位权限说明',\n content: '便于您使用该功能在当前位置查询所在门店,请您确认授权,否则无法使用该功能。',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n requestAndroidPermission: function requestAndroidPermission(permisionID) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var that, result;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n that = _this;\n _context.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context.sent;\n if (result != 1) {\n that.recorderAuthModal();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n }\n }, (0, _defineProperty2.default)(_methods, \"getLocation\", function getLocation() {\n var that = this;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/peiwan/index.vue:204\");\n that.trackUpload(res1);\n var latitude = res1.latitude,\n longitude = res1.longitude;\n var url = \"https://restapi.amap.com/v3/geocode/regeo?output=json&location=\".concat(longitude, \",\").concat(latitude, \"&key=4a6e2ba8eac3864f0d88f9b5abd026e6&radius=1000\");\n uni.request({\n url: url,\n success: function success(res) {\n __f__(\"log\", res, \" at pages/peiwan/index.vue:211\");\n if (res.data.regeocode.addressComponent) {\n var city = res.data.regeocode.addressComponent.city.length == 0 ? res.data.regeocode.addressComponent.province : res.data.regeocode.addressComponent.city;\n that.city = res.data.regeocode.formatted_address.split(res.data.regeocode.addressComponent.township)[1];\n that.show = false;\n uni.setStorageSync(\"jingweiInfo\", _objectSpread(_objectSpread(_objectSpread({}, res1), res.data.regeocode.addressComponent), {}, {\n formatted: that.city\n }));\n that.getList();\n that.getUserInfo();\n }\n }\n });\n }\n });\n }), (0, _defineProperty2.default)(_methods, \"getUserInfo\", function getUserInfo() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var _yield$_this2$$api$fi, code, data, msg;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.$api.findUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this2$$api$fi = _context2.sent;\n code = _yield$_this2$$api$fi.code;\n data = _yield$_this2$$api$fi.data;\n msg = _yield$_this2$$api$fi.msg;\n if (code == 200) {\n _this2.userInfo = data;\n uni.setStorageSync(\"userInfo\", data);\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n }), (0, _defineProperty2.default)(_methods, \"arrayUnique\", function arrayUnique(arr, name) {\n var hash = {};\n return arr.reduce(function (item, next) {\n hash[next[name]] ? \"\" : hash[next[name]] = true && item.push(next);\n return item;\n }, []);\n }), (0, _defineProperty2.default)(_methods, \"getList\", function getList() {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _yield$_this3$$api$si, code, data;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this3.$api.sitterList({\n userId: uni.getStorageSync(\"userInfo\").id,\n page: 1,\n limit: 20\n });\n case 2:\n _yield$_this3$$api$si = _context3.sent;\n code = _yield$_this3$$api$si.code;\n data = _yield$_this3$$api$si.data;\n if (code == 200) {\n __f__(\"log\", data, \" at pages/peiwan/index.vue:256\");\n _this3.list = [{\n 'name': '全部'\n }].concat((0, _toConsumableArray2.default)(data.list));\n _this3.getsellerUserList();\n }\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n }), (0, _defineProperty2.default)(_methods, \"getsellerUserList\", function getsellerUserList(type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var _yield$_this4$$api$se, code, data;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _this4.$api.sellerUserList({\n userId: uni.getStorageSync(\"userInfo\").id,\n configid: _this4.current == 0 ? -1 : _this4.list[_this4.current].id,\n page: _this4.page,\n limit: 20,\n city: uni.getStorageSync(\"jingweiInfo\").new_city ? uni.getStorageSync(\"jingweiInfo\").new_city : uni.getStorageSync(\"jingweiInfo\").city,\n lat: uni.getStorageSync(\"jingweiInfo\").latitude,\n lon: uni.getStorageSync(\"jingweiInfo\").longitude\n });\n case 2:\n _yield$_this4$$api$se = _context4.sent;\n code = _yield$_this4$$api$se.code;\n data = _yield$_this4$$api$se.data;\n if (type == 1) {\n uni.hideLoading();\n }\n if (code == 200) {\n _this4.total = data.total;\n _this4.sellerUserList = _this4.arrayUnique([].concat((0, _toConsumableArray2.default)(_this4.sellerUserList), (0, _toConsumableArray2.default)(data.list)), 'id');\n }\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n }), (0, _defineProperty2.default)(_methods, \"openPage\", function openPage(index, id) {\n if (!that.city) {\n that.getLocation();\n return;\n }\n if (index == 1) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + id\n });\n } else if (index == 2) {\n uni.navigateTo({\n url: \"/pages/index/city\"\n });\n } else if (index == 3) {\n uni.navigateTo({\n url: \"/pages/index/search?type=2\"\n });\n } else if (index == 6) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n uni.navigateTo({\n url: \"/pages/peiwan/apply\"\n });\n } else if (index == 7) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + id\n });\n }\n }), (0, _defineProperty2.default)(_methods, \"changeTabs\", function changeTabs(index) {\n this.current = index;\n this.page = 1;\n this.sellerUserList = [];\n this.getsellerUserList();\n }), _methods)\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvcGVpd2FuL2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJkYXRhIiwiaXNEYXNoYW4iLCJpc1NoYXJlIiwiY3VycmVudCIsImxpc3QiLCJhY3RpdmVTdHlsZSIsImlzU2hvdyIsImNpdHkiLCJpc1BvcHVwIiwiaW5mbyIsInBhZ2UiLCJzaG93IiwidG90YWwiLCJzZWxsZXJVc2VyTGlzdCIsInVzZXJJbmZvIiwic3RhdHVzQmFySGVpZ2h0Iiwib25QdWxsRG93blJlZnJlc2giLCJzZXRUaW1lb3V0IiwidGhhdCIsInVuaSIsIm9uTG9hZCIsIm9uU2hvdyIsIm9uUmVhZHkiLCJvblJlYWNoQm90dG9tIiwidGl0bGUiLCJtZXRob2RzIiwiZ2V0TG9jYXRpb24iLCJwbHVzIiwidHJhY2tVcGxvYWQiLCJ1c2VySWQiLCJsYXQiLCJsb24iLCJyZWNvcmRlckF1dGhNb2RhbCIsImNvbnRlbnQiLCJjYW5jZWxUZXh0IiwiY29uZmlybVRleHQiLCJzdWNjZXNzIiwicGVybWlzaW9uIiwicmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uIiwicmVzdWx0IiwidHlwZSIsImxvbmdpdHVkZSIsInVybCIsImZvcm1hdHRlZCIsImNvZGUiLCJtc2ciLCJwb3NpdGlvbiIsImljb24iLCJhcnIiLCJoYXNoIiwibGltaXQiLCJjb25maWdpZCIsImluZGV4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWlFQTtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFEQTtBQUFBLGVBRUE7RUFDQUE7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUFBO01BQUE7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQUM7TUFDQUM7TUFDQUE7TUFDQUE7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0VBQ0FDO0lBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBSDtNQUNBRDtNQUNBQTtNQUNBQTtNQUNBQTtJQUNBO0lBQ0FDO01BQ0FEO01BQ0FBO01BQ0FBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBRDtNQUNBO0lBQ0E7RUFDQTtFQUNBSztJQUNBO0lBQ0FKO01BQ0FLO0lBQ0E7SUFDQU47SUFDQUQ7TUFDQUM7SUFDQTtFQUNBO0VBQ0FPO0lBQ0FDO01BQ0E7TUFDQVI7TUFDQUE7TUFDQTtRQUNBO1FBQ0E7VUFDQVMsNkJBQ0EsMkNBQ0E7WUFDQTtjQUNBVDtjQUNBQTtZQUNBO2NBQ0FBO2NBQ0E7Y0FDQUE7WUFDQTtVQUNBLEdBQ0E7WUFDQTtVQUNBLEVBQ0E7VUFDQUE7VUFDQTtRQUNBO1VBQ0FBO1FBQ0E7TUFDQTtRQUNBQTtRQUNBQTtNQUNBO0lBQ0E7SUFDQTtJQUNBVTtNQUNBO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0FiO1FBQ0FLO1FBQ0FTO1FBQ0FDO1FBQ0FDO1FBQ0FDO1VBQ0FsQjtVQUNBO1lBQ0FtQjtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFBQTtRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQ0FwQjtnQkFBQTtnQkFBQSxPQUNBbUI7Y0FBQTtnQkFBQUU7Z0JBQ0E7a0JBQ0FyQjtnQkFDQTtrQkFDQUE7a0JBQ0E7a0JBQ0FBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBQ0E7RUFBQSxpRkFDQTtJQUNBO0lBQ0FDO01BQ0FxQjtNQUNBSjtRQUNBO1FBQ0FsQjtRQUNBO1VBQUF1QjtRQUNBO1FBQ0F0QjtVQUNBdUI7VUFDQU47WUFDQTtZQUNBO2NBQ0E7Y0FDQWxCO2NBQ0FBO2NBQ0FDO2dCQUFBd0I7Y0FBQTtjQUNBekI7Y0FDQUE7WUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0Esa0ZBRUE7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2NBQUEsT0FDQTtnQkFBQVc7Y0FBQTtZQUFBO2NBQUE7Y0FBQWU7Y0FBQTVDO2NBQUE2QztjQUNBO2dCQUNBO2dCQUNBMUI7Y0FDQTtnQkFDQUE7a0JBQ0FLO2tCQUNBc0I7a0JBQ0FDO2dCQUNBO2NBQ0E7WUFBQTtZQUFBO2NBQUE7VUFBQTtRQUFBO01BQUE7SUFBQTtFQUNBLGdGQUVBQztJQUNBO0lBQ0E7TUFDQUMsbUJBQ0EsS0FDQUE7TUFDQTtJQUNBO0VBQ0EsMEVBQ0E7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2NBQUEsT0FDQTtnQkFDQXBCO2dCQUNBbkI7Z0JBQ0F3QztjQUNBO1lBQUE7Y0FBQTtjQUpBTjtjQUFBNUM7Y0FLQTtnQkFDQTtnQkFDQTtrQkFBQTtnQkFBQTtnQkFDQTtjQUNBO1lBQUE7WUFBQTtjQUFBO1VBQUE7UUFBQTtNQUFBO0lBQUE7RUFDQSw0RkFDQXdDO0lBQUE7SUFBQTtNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtjQUFBLE9BQ0E7Z0JBQ0FYO2dCQUNBc0I7Z0JBQ0F6QztnQkFDQXdDO2dCQUNBM0M7Z0JBQ0F1QjtnQkFDQUM7Y0FDQTtZQUFBO2NBQUE7Y0FSQWE7Y0FBQTVDO2NBU0E7Z0JBQ0FtQjtjQUNBO2NBQ0E7Z0JBQ0E7Z0JBQ0E7Y0FDQTtZQUFBO1lBQUE7Y0FBQTtVQUFBO1FBQUE7TUFBQTtJQUFBO0VBQ0EsMEVBQ0FpQztJQUNBO01BQ0FsQztNQUNBO0lBQ0E7SUFDQTtNQUNBQztRQUNBdUI7TUFDQTtJQUNBO01BQ0F2QjtRQUNBdUI7TUFDQTtJQUNBO01BQ0F2QjtRQUNBdUI7TUFDQTtJQUNBO01BQ0E7UUFDQTtRQUNBO01BQ0E7TUFDQXZCO1FBQ0F1QjtNQUNBO0lBQ0E7TUFDQXZCO1FBQ0F1QjtNQUNBO0lBQ0E7RUFDQSw4RUFDQVU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUNBO0FBRUE7QUFBQSwyQiIsImZpbGUiOiIxMjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDx2aWV3IGNsYXNzPVwiaG9tZVwiPlxuXHRcdDx2aWV3IGNsYXNzPVwiaG9tZS1uYXZiYXJcIj5cblx0XHRcdDx1LW5hdmJhciA6aXMtYmFjaz1cImZhbHNlXCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwic2xvdC13cmFwXCI+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJhZGRyZXNzXCIgdi1pZj1cImNpdHlcIiBAY2xpY2s9XCJvcGVuUGFnZSgyKVwiPlxuXHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2Rpbmd3ZWkucG5nXCI+PC9pbWFnZT57e2NpdHl9fVxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiYWRkcmVzc1wiIHYtZWxzZSBAY2xpY2s9XCJnZXRMb2NhdGlvbigpXCI+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSBzcmM9XCJAL3N0YXRpYy9kaW5nd2VpLnBuZ1wiPjwvaW1hZ2U+6I635Y+W5a6a5L2NXHJcblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzZWFyY2hcIiBAY2xpY2s9XCJvcGVuUGFnZSgzKVwiPlxuXHRcdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2ljb24tc2VhcmNoLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0XHTor7fovpPlhaXlkI3np7DmkJzntKJcblx0XHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdS1uYXZiYXI+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwiaG9tZS10YWJcIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiXCI+XG5cdFx0XHRcdDx1LXRhYnMgOmxpc3Q9XCJsaXN0XCIgYmctY29sb3I9XCJ0cmFuc3BhcmVudFwiIDppcy1zY3JvbGw9XCJ0cnVlXCIgYWN0aXZlLWNvbG9yPVwiIzIyMjIyMlwiIGluYWN0aXZlLWNvbG9yPVwiIzY2NjY2NlwiIGZvbnQtc2l6ZT1cIjMwXCIgOmFjdGl2ZS1pdGVtLXN0eWxlPVwiYWN0aXZlU3R5bGVcIiBiYXItaGVpZ2h0PVwiMTBcIiBiYXItd2lkdGg9XCI2MFwiIHYtbW9kZWw9XCJjdXJyZW50XCIgQGNoYW5nZT1cImNoYW5nZVRhYnNcIj48L3UtdGFicz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3ZpZXc+XG5cdFx0PHZpZXcgY2xhc3M9XCJob21lLWJhbm5lclwiPlxuXHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL2Jhbm5lcjEucG5nXCIgQGNsaWNrPVwib3BlblBhZ2UoNilcIj48L2ltYWdlPlxuXHRcdDwvdmlldz5cblx0XHQ8dmlldyBjbGFzcz1cImhvbWUtbGlzdFwiPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCIgdi1mb3I9XCIoYSxpKSBpbiBzZWxsZXJVc2VyTGlzdFwiIDprZXk9XCJpXCIgQGNsaWNrPVwib3BlblBhZ2UoNyxhLmlkKVwiPlxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBpY1wiPlxuXHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwiYS5mYWNlSW1hZ2U/YS5mYWNlSW1hZ2U6YS5pbWdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaW5mb1wiPlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwibmFtZVwiPnt7YS5uaWNrbmFtZX19PHZpZXcgY2xhc3M9XCJ2aXBcIiB2LWlmPVwiYS5tZW1iZXJmbGFnID49MVwiPlZJUHt7YS5tZW1iZXJmbGFnfX08L3ZpZXc+PC92aWV3PlxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY1wiPnt7YS5hZ2V9feWygS97e2EuZGlzdGFuY2V9fW08L3ZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJjaGF0XCI+XG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIkAvc3RhdGljL3hpbi5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHRcdOe6pueOqVxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwiZW1wdHlcIiB2LWlmPVwidG90YWwgPT0gMCBcIj5cblx0XHRcdDxpbWFnZSBzcmM9XCJAL3N0YXRpYy9lbXB0eS5wbmdcIj48L2ltYWdlPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj7mmoLml6DmlbDmja48L3ZpZXc+XG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXcgc3R5bGU9XCJwYWRkaW5nOiAyNTBycHggMCAwO1wiPlxyXG5cdFx0XHQ8dS1lbXB0eSB2LWlmPVwiIWNpdHlcIiB0ZXh0PVwi6K+35byA5ZCv5a6a5L2N5p2D6ZmQXCIgbW9kZT1cImRhdGFcIj5cclxuXHRcdFx0XHQ8dmlldyBzbG90PVwiYm90dG9tXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAzMHJweDtcIj5cclxuXHRcdFx0XHRcdDx1LWJ1dHRvbiBAY2xpY2s9XCJnZXRMb2NhdGlvbigpXCI+6I635Y+W5a6a5L2NPC91LWJ1dHRvbj5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdS1lbXB0eT5cclxuXHRcdDwvdmlldz5cblx0XHQ8dW52ZXJpZmllZCA6aXNQb3B1cD1cImlzUG9wdXBcIiAvPlxyXG5cdFx0PHUtcG9wdXAgdi1tb2RlbD1cInNob3dcIiBtb2RlPVwidG9wXCIgOm1hc2stY2xvc2UtYWJsZT0nZmFsc2UnIDp6SW5kZXg9XCI1XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwicGVybWlzc2lvbnNfYm94XCIgOnN0eWxlPVwieydwYWRkaW5nLXRvcCc6IChzdGF0dXNCYXJIZWlnaHQrNjQpKydweCd9XCI+XHJcblx0XHRcdFx05b2T5oKo5L2/55SoQVBQ5pe277yM5bqU55So56iL5bqP5Y+v5Lul5o+Q5L6b5Z+65LqO5L2N572u55qE5pyN5Yqh44CB5a6a5L2N5a+86Iiq44CB6ZmE6L+R5pCc57Si562J5Yqf6IO944CCXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdS1wb3B1cD5cclxuXHRcdDxkYXNoYW4gOmlzRGFzaGFuPVwiaXNEYXNoYW5cIiA6aW5mbz1cImluZm9cIj48L2Rhc2hhbj5cclxuXHRcdDxzaGFyZSA6aXNTaGFyZT1cImlzU2hhcmVcIiA6aW5mbz1cImluZm9cIiAvPlxuXHQ8L3ZpZXc+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxyXG5cdGNvbnN0IHN5c3RlbUluZm9TeW5jID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKClcclxuXHRpbXBvcnQgcGVybWlzaW9uIGZyb20gXCJAL2pzX3Nkay93YS1wZXJtaXNzaW9uL3Blcm1pc3Npb24uanNcIlxuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0ZGF0YSgpIHtcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0aXNEYXNoYW46IGZhbHNlLFxyXG5cdFx0XHRcdGlzU2hhcmU6IGZhbHNlLFxuXHRcdFx0XHRjdXJyZW50OiAwLFxuXHRcdFx0XHRsaXN0OltdLFxuXHRcdFx0XHRhY3RpdmVTdHlsZTp7J2ZvbnRTaXplJzogJzM1cnB4J30sXG5cdFx0XHRcdGlzU2hvdzogZmFsc2UsXG5cdFx0XHRcdGNpdHk6IFwiXCIsXG5cdFx0XHRcdGlzUG9wdXA6IGZhbHNlLFxuXHRcdFx0XHRpbmZvOiB7fSxcblx0XHRcdFx0cGFnZTogMSxcclxuXHRcdFx0XHRzaG93OiBmYWxzZSxcblx0XHRcdFx0dG90YWw6IDEsXG5cdFx0XHRcdHNlbGxlclVzZXJMaXN0OiBbXSxcclxuXHRcdFx0XHR1c2VySW5mbzoge30sXHJcblx0XHRcdFx0c3RhdHVzQmFySGVpZ2h0OiAwXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvblB1bGxEb3duUmVmcmVzaCgpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHR0aGF0LnBhZ2UgPSAxO1xuXHRcdFx0XHR0aGF0LnNlbGxlclVzZXJMaXN0ID0gW107XG5cdFx0XHRcdHRoYXQuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHRcdFx0dW5pLnN0b3BQdWxsRG93blJlZnJlc2goKTtcblx0XHRcdH0sMjAwMClcblx0XHR9LFxuXHRcdG9uTG9hZCgpIHt9LFxyXG5cdFx0b25TaG93KCkge1xyXG5cdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCl7XHJcblx0XHRcdFx0dGhpcy5nZXRVc2VySW5mbygpO1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25SZWFkeSgpIHtcclxuXHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XHJcblx0XHRcdHVuaS4kb24oXCJjbGlja1RhcFwiLCByZXM9PntcclxuXHRcdFx0XHR0aGF0LmNpdHkgPSByZXMubmFtZTtcclxuXHRcdFx0XHR0aGF0LnBhZ2UgPSAxO1xyXG5cdFx0XHRcdHRoYXQuc2VsbGVyVXNlckxpc3QgPSBbXTtcclxuXHRcdFx0XHR0aGF0LmdldHNlbGxlclVzZXJMaXN0KCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR1bmkuJG9uKFwiY2xvc2VTaGFyZVBvcHVwXCIscmVzPT57XHJcblx0XHRcdFx0dGhhdC5pc1NoYXJlID0gZmFsc2U7XHJcblx0XHRcdFx0dGhhdC5pc1BvcHVwID0gZmFsc2U7XHJcblx0XHRcdFx0dGhhdC5pc0Rhc2hhbj0gIGZhbHNlO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHR1bmkuJG9uKFwib25Qb3B1cFwiLHJlcz0+e1xyXG5cdFx0XHRcdGlmKHJlcyA9PSAxKXtcclxuXHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdH0sXG5cdFx0b25SZWFjaEJvdHRvbSgpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcblx0XHRcdFx0dGl0bGU6IFwi5Yqg6L295LitXCJcblx0XHRcdH0pXG5cdFx0XHR0aGF0LnBhZ2UgKys7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHR0aGF0LmdldHNlbGxlclVzZXJMaXN0KDEpO1xuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGdldExvY2F0aW9uKCkge1xyXG5cdFx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xyXG5cdFx0XHRcdHRoYXQuc3RhdHVzQmFySGVpZ2h0ID0gc3lzdGVtSW5mb1N5bmMuc3RhdHVzQmFySGVpZ2h0O1xyXG5cdFx0XHRcdHRoYXQuY2l0eSA9IHVuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpP3VuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLmZvcm1hdHRlZDpcIlwiXHJcblx0XHRcdFx0aWYoIXRoYXQuY2l0eSl7XHJcblx0XHRcdFx0XHQvLyBBUFDmo4Dmn6XmnYPpmZBcclxuXHRcdFx0XHRcdGlmKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdFx0XHRwbHVzLmFuZHJvaWQuY2hlY2tQZXJtaXNzaW9uKFxyXG5cdFx0XHRcdFx0XHRcdCdhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX0ZJTkVfTE9DQVRJT04nLFxyXG5cdFx0XHRcdFx0XHRcdGdyYW50ZWQgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdCAgaWYgKGdyYW50ZWQuY2hlY2tSZXN1bHQ9PS0xKXtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuc2hvdz10cnVlXHJcblx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldExvY2F0aW9uKCk7XHJcblx0XHRcdFx0XHRcdFx0ICB9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8g5q2k5Li6dVZpZXfnmoTot7Povazmlrnms5XvvIzor6bop4FcIuaWh+ahoy1KU1wi6YOo5YiG77yM5Lmf5Y+v5Lul55SodW5p55qEdW5pLm5hdmlnYXRlVG9cclxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuZ2V0TG9jYXRpb24oKTtcclxuXHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdGVycm9yID0+IHtcclxuXHRcdFx0XHRcdFx0XHQgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHBlcm1pc3Npb246JywgZXJyb3IubWVzc2FnZSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHQgICk7XHJcblx0XHRcdFx0XHRcdCB0aGF0LnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbignYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19GSU5FX0xPQ0FUSU9OJylcclxuXHRcdFx0XHRcdFx0cmV0dXJuIDtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR0aGF0LmdldExvY2F0aW9uKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR0aGF0LmdldExpc3QoKTtcclxuXHRcdFx0XHRcdHRoYXQuZ2V0c2VsbGVyVXNlckxpc3QoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8v5a6e5pe25LiK5Lyg6L2o6L+5XHJcblx0XHRcdHRyYWNrVXBsb2FkKHJlcyl7XHJcblx0XHRcdFx0dGhpcy4kYXBpLnRyYWNrVXBsb2FkKHtcclxuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXHJcblx0XHRcdFx0XHRsYXQ6IHJlcy5sYXRpdHVkZSxcclxuXHRcdFx0XHRcdGxvbjogcmVzLmxvbmdpdHVkZSxcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0cmVjb3JkZXJBdXRoTW9kYWw6IGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdHRpdGxlOiAn5a6a5L2N5p2D6ZmQ6K+05piOJyxcclxuXHRcdFx0XHRcdGNvbnRlbnQ6ICfkvr/kuo7mgqjkvb/nlKjor6Xlip/og73lnKjlvZPliY3kvY3nva7mn6Xor6LmiYDlnKjpl6jlupfvvIzor7fmgqjnoa7orqTmjojmnYPvvIzlkKbliJnml6Dms5Xkvb/nlKjor6Xlip/og73jgIInLFxyXG5cdFx0XHRcdFx0Y2FuY2VsVGV4dDogJ+WFs+mXrScsXHJcblx0XHRcdFx0XHRjb25maXJtVGV4dDogJ+WOu+aOiOadgycsXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xyXG5cdFx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2VcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0XHRcdFx0cGVybWlzaW9uLmdvdG9BcHBQZXJtaXNzaW9uU2V0dGluZygpXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRhc3luYyByZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24ocGVybWlzaW9uSUQpIHtcclxuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gYXdhaXQgcGVybWlzaW9uLnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbihwZXJtaXNpb25JRCk7XHJcblx0XHRcdFx0aWYocmVzdWx0ICE9IDEpe1xyXG5cdFx0XHRcdFx0dGhhdC5yZWNvcmRlckF1dGhNb2RhbCgpO1xyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dGhhdC5zaG93PWZhbHNlXHJcblx0XHRcdFx0XHQvLyDmraTkuLp1Vmlld+eahOi3s+i9rOaWueazle+8jOivpuingVwi5paH5qGjLUpTXCLpg6jliIbvvIzkuZ/lj6/ku6XnlKh1bmnnmoR1bmkubmF2aWdhdGVUb1xyXG5cdFx0XHRcdFx0dGhhdC5nZXRMb2NhdGlvbigpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcblx0XHRcdGdldExvY2F0aW9uKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0dW5pLmdldExvY2F0aW9uKHtcblx0XHRcdFx0XHR0eXBlOiAnZ2NqMDInLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzMSkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzMSlcclxuXHRcdFx0XHRcdFx0dGhhdC50cmFja1VwbG9hZChyZXMxKVxuXHRcdFx0XHRcdFx0bGV0IGxhdGl0dWRlID0gcmVzMS5sYXRpdHVkZSxsb25naXR1ZGUgPSByZXMxLmxvbmdpdHVkZTtcblx0XHRcdFx0XHRcdGxldCB1cmwgPSBgaHR0cHM6Ly9yZXN0YXBpLmFtYXAuY29tL3YzL2dlb2NvZGUvcmVnZW8/b3V0cHV0PWpzb24mbG9jYXRpb249JHtsb25naXR1ZGV9LCR7bGF0aXR1ZGV9JmtleT00YTZlMmJhOGVhYzM4NjRmMGQ4OGY5YjVhYmQwMjZlNiZyYWRpdXM9MTAwMGBcblx0XHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdFx0dXJsLFxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzKHJlcykge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcylcblx0XHRcdFx0XHRcdFx0XHRpZihyZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudCl7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgY2l0eSA9IHJlcy5kYXRhLnJlZ2VvY29kZS5hZGRyZXNzQ29tcG9uZW50LmNpdHkubGVuZ3RoPT0wP3Jlcy5kYXRhLnJlZ2VvY29kZS5hZGRyZXNzQ29tcG9uZW50LnByb3ZpbmNlOnJlcy5kYXRhLnJlZ2VvY29kZS5hZGRyZXNzQ29tcG9uZW50LmNpdHlcblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuY2l0eSA9IHJlcy5kYXRhLnJlZ2VvY29kZS5mb3JtYXR0ZWRfYWRkcmVzcy5zcGxpdChyZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC50b3duc2hpcClbMV1cblx0XHRcdFx0XHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIix7Li4ucmVzMSwuLi5yZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudCxmb3JtYXR0ZWQ6IHRoYXQuY2l0eX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXRMaXN0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LmdldFVzZXJJbmZvKCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHQvL+iOt+WPlueUqOaIt+S/oeaBr1xuXHRcdFx0YXN5bmMgZ2V0VXNlckluZm8oKSB7XG5cdFx0XHRcdGNvbnN0IHsgY29kZSwgZGF0YSAsIG1zZyB9ID0gYXdhaXQgdGhpcy4kYXBpLmZpbmRVc2VySW5mbyh7dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZH0pO1xuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dGhpcy51c2VySW5mbyA9IGRhdGE7XG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIixkYXRhKTtcblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogbXNnLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCIsXG5cdFx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly/mlbDnu4Tlr7nosaHljrvph41cblx0XHRcdGFycmF5VW5pcXVlIChhcnIsIG5hbWUpIHtcblx0XHRcdFx0dmFyIGhhc2ggPSB7fTtcblx0XHRcdFx0cmV0dXJuIGFyci5yZWR1Y2UoZnVuY3Rpb24gKGl0ZW0sIG5leHQpIHtcblx0XHRcdFx0XHRoYXNoW25leHRbbmFtZV1dXG5cdFx0XHRcdFx0XHQ/IFwiXCJcblx0XHRcdFx0XHRcdDogKGhhc2hbbmV4dFtuYW1lXV0gPSB0cnVlICYmIGl0ZW0ucHVzaChuZXh0KSk7XG5cdFx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHRcdH0sIFtdKTtcblx0XHRcdH0sXG5cdFx0XHRhc3luYyBnZXRMaXN0KCkge1xuXHRcdFx0XHRjb25zdCB7Y29kZSxkYXRhfSA9IGF3YWl0IHRoaXMuJGFwaS5zaXR0ZXJMaXN0KHtcblx0XHRcdFx0XHR1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkLFxuXHRcdFx0XHRcdHBhZ2U6IDEsXG5cdFx0XHRcdFx0bGltaXQ6IDIwXG5cdFx0XHRcdH0pXG5cdFx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpXG5cdFx0XHRcdFx0dGhpcy5saXN0ID0gW3snbmFtZSc6ICflhajpg6gnfSwuLi5kYXRhLmxpc3RdO1xuXHRcdFx0XHRcdHRoaXMuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGFzeW5jIGdldHNlbGxlclVzZXJMaXN0KHR5cGUpIHtcblx0XHRcdFx0Y29uc3Qge2NvZGUsZGF0YX0gPSBhd2FpdCB0aGlzLiRhcGkuc2VsbGVyVXNlckxpc3Qoe1xuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0Y29uZmlnaWQ6IHRoaXMuY3VycmVudD09MD8tMTp0aGlzLmxpc3RbdGhpcy5jdXJyZW50XS5pZCxcblx0XHRcdFx0XHRwYWdlOiB0aGlzLnBhZ2UsXG5cdFx0XHRcdFx0bGltaXQ6IDIwLFxyXG5cdFx0XHRcdFx0Y2l0eTogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk/dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubmV3X2NpdHk6dW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikuY2l0eSxcblx0XHRcdFx0XHRsYXQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLmxhdGl0dWRlLFxuXHRcdFx0XHRcdGxvbjogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubG9uZ2l0dWRlLFxuXHRcdFx0XHR9KVxuXHRcdFx0XHRpZih0eXBlID09IDEpe1xuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpXG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRcdHRoaXMudG90YWwgPSBkYXRhLnRvdGFsO1xuXHRcdFx0XHRcdHRoaXMuc2VsbGVyVXNlckxpc3QgPSB0aGlzLmFycmF5VW5pcXVlKFsuLi50aGlzLnNlbGxlclVzZXJMaXN0LC4uLmRhdGEubGlzdF0sJ2lkJylcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9wZW5QYWdlKGluZGV4LGlkKXtcclxuXHRcdFx0XHRpZighdGhhdC5jaXR5KXtcclxuXHRcdFx0XHRcdHRoYXQuZ2V0TG9jYXRpb24oKTtcclxuXHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihpbmRleCA9PSAxKXtcblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BlaXdhbi9kZXRhaWw/aWQ9XCIraWRcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9ZWxzZSBpZihpbmRleCA9PSAyKXtcblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL2luZGV4L2NpdHlcIlxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1lbHNlIGlmKGluZGV4ID09IDMpe1xuXHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvaW5kZXgvc2VhcmNoP3R5cGU9MlwiXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gNil7XG5cdFx0XHRcdFx0aWYodGhpcy51c2VySW5mby5yZWFsbmFtZUZsYWcgPT0gMCB8fCB0aGlzLnVzZXJJbmZvLmZhY2VGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5waG9uZUZsYWcgPT0gMCl7XG5cdFx0XHRcdFx0XHR0aGlzLmlzUG9wdXAgPSB0cnVlXG5cdFx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BlaXdhbi9hcHBseVwiXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gNyl7XG5cdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0dXJsOiBcIi9wYWdlcy9wZWl3YW4vZGV0YWlsP2lkPVwiK2lkXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGNoYW5nZVRhYnMoaW5kZXgpe1xuXHRcdFx0XHR0aGlzLmN1cnJlbnQgPSBpbmRleFxuXHRcdFx0XHR0aGlzLnBhZ2UgPSAxO1xuXHRcdFx0XHR0aGlzLnNlbGxlclVzZXJMaXN0ID0gW107XG5cdFx0XHRcdHRoaXMuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHRcdH0sXG5cdFx0fVxuXHR9XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZCBsYW5nPVwic2Nzc1wiPlxuLmhvbWV7XHJcblx0LmVtcHR5e1xyXG5cdFx0cGFkZGluZzogMTUwcnB4IDA7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0Zm9udC1zaXplOiAyOHJweDtcclxuXHRcdGNvbG9yOiAjMjIyMjIyO1xyXG5cdFx0aW1hZ2V7XHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHR3aWR0aDogNDYwcnB4O1xyXG5cdFx0XHRoZWlnaHQ6IDQwMHJweDtcclxuXHRcdFx0bWFyZ2luOiAwIGF1dG87XHJcblx0XHR9XHJcblx0fVxuXHQmLW5hdmJhcntcblx0XHR3aWR0aDogMTAwJTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdC5zbG90LXdyYXB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdHBhZGRpbmc6IDAgMjVycHg7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHQuYWRkcmVzc3tcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdFx0Zm9udC1zaXplOiAzMHJweDtcblx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdFx0Y29sb3I6ICMyMjIyMjI7XG5cdFx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDI1MHJweDtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDMwcnB4O1xuXHRcdFx0XHRcdGhlaWdodDogMzBycHg7XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA3cnB4O1xuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0XHR0b3A6IDVycHg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5zZWFyY2h7XG5cdFx0XHRcdHdpZHRoOiA0MzZycHg7XG5cdFx0XHRcdGhlaWdodDogNzBycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICNGNUY1RjU7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDcwcnB4O1xuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0XHRmb250LXNpemU6IDI2cnB4O1xuXHRcdFx0XHRjb2xvcjogIzk5OTk5OTtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDMwcnB4O1xuXHRcdFx0XHRcdGhlaWdodDogMzBycHg7XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA3cnB4O1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAyNXJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQmLWJhbm5lcntcblx0XHRwYWRkaW5nOiAwIDE1cnB4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0bWFyZ2luLXRvcDogMTBycHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGltYWdle1xuXHRcdFx0d2lkdGg6IDcyMHJweDtcblx0XHRcdGhlaWdodDogMjIwcnB4O1xuXHRcdH1cblx0fVxuXHQmLXRhYntcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cdCYtbGlzdHtcblx0XHRwYWRkaW5nOiAwIDI1cnB4IDI1cnB4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Lml0ZW17XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMjAwcnB4O1xuXHRcdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0XHRcdGJveC1zaGFkb3c6IDBweCA0cnB4IDEwcnB4IDBweCByZ2JhKDAsMCwwLDAuMDYpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBycHg7XG5cdFx0XHRwYWRkaW5nOiAzMHJweDtcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xuXHRcdFx0JjpmaXJzdC1jaGlsZHtcblx0XHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdH1cblx0XHRcdC5waWN7XG5cdFx0XHRcdHdpZHRoOiAxNDBycHg7XG5cdFx0XHRcdGhlaWdodDogMTQwcnB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxMHJweDtcblx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcblx0XHRcdFx0aW1hZ2V7XG5cdFx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQuaW5mb3tcblx0XHRcdFx0ZmxleDogMTtcblx0XHRcdFx0Lm5hbWV7XG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdFx0XHRmb250LXNpemU6IDMycnB4O1xuXHRcdFx0XHRcdGNvbG9yOiAjMjIyMjIyO1xuXHRcdFx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0XHQudmlwe1xuXHRcdFx0XHRcdFx0d2lkdGg6IDYwcnB4O1xuXHRcdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDMycnB4O1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZDogdXJsKEAvc3RhdGljL3ZpcC1iZy5wbmcpIGNlbnRlciB0b3Agbm8tcmVwZWF0O1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuXHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMjBycHg7XG5cdFx0XHRcdFx0XHRjb2xvcjogI0ZGRkZGRjtcblx0XHRcdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMjBycHg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC5kZXNje1xuXHRcdFx0XHRcdHdpZHRoOiAxODBycHg7XG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDQwcnB4O1xuXHRcdFx0XHRcdGJhY2tncm91bmQ6ICNGMkYyRjI7XG5cdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNDBycHg7XG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdFx0XHRmb250LXNpemU6IDI0cnB4O1xuXHRcdFx0XHRcdGNvbG9yOiAjMDAwMDAwO1xuXHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmNoYXR7XG5cdFx0XHRcdHdpZHRoOiAxNTBycHg7XG5cdFx0XHRcdGhlaWdodDogOTBycHg7XG5cdFx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCAjMDAwMDAwLCAjM0QzQjM4KTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMHB4IDRycHggMThycHggMHB4IHJnYmEoNDIsNDEsMzksMC4zNCk7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDkwcnB4O1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogMjBycHg7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdFx0Zm9udC1zaXplOiAyNHJweDtcblx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XG5cdFx0XHRcdGltYWdle1xuXHRcdFx0XHRcdHdpZHRoOiA2NXJweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDMycnB4O1xuXHRcdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRcdG1hcmdpbjogMTVycHggYXV0byA1cnB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XHRcbjwvc3R5bGU+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///129\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 19));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 68));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 3));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 21));\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/js_sdk/wa-permission/permission.js */ 74));\nvar _methods;\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; }\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar systemInfoSync = uni.getSystemInfoSync();\nvar _default = {\n data: function data() {\n return {\n isDashan: false,\n isShare: false,\n current: 0,\n list: [],\n activeStyle: {\n 'fontSize': '35rpx'\n },\n isShow: false,\n city: \"\",\n isPopup: false,\n info: {},\n page: 1,\n show: false,\n total: 1,\n sellerUserList: [],\n userInfo: {},\n statusBarHeight: 0\n };\n },\n onPullDownRefresh: function onPullDownRefresh() {\n var that = this;\n setTimeout(function () {\n that.page = 1;\n that.sellerUserList = [];\n that.getsellerUserList();\n uni.stopPullDownRefresh();\n }, 2000);\n },\n onLoad: function onLoad() {\n if (uni.getSystemInfoSync().platform == 'ios') {\n this.getLocation();\n }\n },\n onShow: function onShow() {\n if (uni.getStorageSync(\"userInfo\").id) {\n this.getUserInfo();\n }\n },\n onReady: function onReady() {\n var that = this;\n uni.$on(\"clickTap\", function (res) {\n that.city = res.name;\n that.page = 1;\n that.sellerUserList = [];\n that.getsellerUserList();\n });\n uni.$on(\"closeSharePopup\", function (res) {\n that.isShare = false;\n that.isPopup = false;\n that.isDashan = false;\n });\n uni.$on(\"onPopup\", function (res) {\n if (res == 1) {\n that.show = false;\n }\n });\n },\n onReachBottom: function onReachBottom() {\n var that = this;\n uni.showLoading({\n title: \"加载中\"\n });\n that.page++;\n setTimeout(function () {\n that.getsellerUserList(1);\n }, 1000);\n },\n methods: (_methods = {\n getLocation: function getLocation() {\n var that = this;\n that.statusBarHeight = systemInfoSync.statusBarHeight;\n that.city = uni.getStorageSync(\"jingweiInfo\") ? uni.getStorageSync(\"jingweiInfo\").formatted : \"\";\n if (!that.city) {\n // APP检查权限\n if (uni.getSystemInfoSync().platform == 'android') {\n plus.android.checkPermission('android.permission.ACCESS_FINE_LOCATION', function (granted) {\n if (granted.checkResult == -1) {\n that.show = true;\n that.getLocation();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n }, function (error) {\n __f__(\"error\", 'Error checking permission:', error.message, \" at pages/peiwan/index.vue:156\");\n });\n that.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');\n return;\n } else {\n that.getLocation();\n }\n } else {\n that.getList();\n that.getsellerUserList();\n }\n },\n //实时上传轨迹\n trackUpload: function trackUpload(res) {\n this.$api.trackUpload({\n userId: uni.getStorageSync(\"userInfo\").id,\n lat: res.latitude,\n lon: res.longitude\n });\n },\n recorderAuthModal: function recorderAuthModal() {\n var that = this;\n uni.showModal({\n title: '定位权限说明',\n content: '便于您使用该功能在当前位置查询所在门店,请您确认授权,否则无法使用该功能。',\n cancelText: '关闭',\n confirmText: '去授权',\n success: function success(res) {\n that.show = false;\n if (res.confirm) {\n _permission.default.gotoAppPermissionSetting();\n }\n }\n });\n },\n requestAndroidPermission: function requestAndroidPermission(permisionID) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var that, result;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n that = _this;\n _context.next = 3;\n return _permission.default.requestAndroidPermission(permisionID);\n case 3:\n result = _context.sent;\n if (result != 1) {\n that.recorderAuthModal();\n } else {\n that.show = false;\n // 此为uView的跳转方法,详见\"文档-JS\"部分,也可以用uni的uni.navigateTo\n that.getLocation();\n }\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n }\n }, (0, _defineProperty2.default)(_methods, \"getLocation\", function getLocation() {\n var that = this;\n uni.getLocation({\n type: 'gcj02',\n success: function success(res1) {\n __f__(\"log\", res1, \" at pages/peiwan/index.vue:208\");\n that.trackUpload(res1);\n var latitude = res1.latitude,\n longitude = res1.longitude;\n var url = \"https://restapi.amap.com/v3/geocode/regeo?output=json&location=\".concat(longitude, \",\").concat(latitude, \"&key=4a6e2ba8eac3864f0d88f9b5abd026e6&radius=1000\");\n uni.request({\n url: url,\n success: function success(res) {\n __f__(\"log\", res, \" at pages/peiwan/index.vue:215\");\n if (res.data.regeocode.addressComponent) {\n var city = res.data.regeocode.addressComponent.city.length == 0 ? res.data.regeocode.addressComponent.province : res.data.regeocode.addressComponent.city;\n that.city = res.data.regeocode.formatted_address.split(res.data.regeocode.addressComponent.township)[1];\n that.show = false;\n uni.setStorageSync(\"jingweiInfo\", _objectSpread(_objectSpread(_objectSpread({}, res1), res.data.regeocode.addressComponent), {}, {\n formatted: that.city\n }));\n that.getList();\n that.getUserInfo();\n }\n }\n });\n }\n });\n }), (0, _defineProperty2.default)(_methods, \"getUserInfo\", function getUserInfo() {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var _yield$_this2$$api$fi, code, data, msg;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.$api.findUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this2$$api$fi = _context2.sent;\n code = _yield$_this2$$api$fi.code;\n data = _yield$_this2$$api$fi.data;\n msg = _yield$_this2$$api$fi.msg;\n if (code == 200) {\n _this2.userInfo = data;\n uni.setStorageSync(\"userInfo\", data);\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n }), (0, _defineProperty2.default)(_methods, \"arrayUnique\", function arrayUnique(arr, name) {\n var hash = {};\n return arr.reduce(function (item, next) {\n hash[next[name]] ? \"\" : hash[next[name]] = true && item.push(next);\n return item;\n }, []);\n }), (0, _defineProperty2.default)(_methods, \"getList\", function getList() {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _yield$_this3$$api$si, code, data;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this3.$api.sitterList({\n userId: uni.getStorageSync(\"userInfo\").id,\n page: 1,\n limit: 20\n });\n case 2:\n _yield$_this3$$api$si = _context3.sent;\n code = _yield$_this3$$api$si.code;\n data = _yield$_this3$$api$si.data;\n if (code == 200) {\n __f__(\"log\", data, \" at pages/peiwan/index.vue:260\");\n _this3.list = [{\n 'name': '全部'\n }].concat((0, _toConsumableArray2.default)(data.list));\n _this3.getsellerUserList();\n }\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n }), (0, _defineProperty2.default)(_methods, \"getsellerUserList\", function getsellerUserList(type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var _yield$_this4$$api$se, code, data;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _this4.$api.sellerUserList({\n userId: uni.getStorageSync(\"userInfo\").id,\n configid: _this4.current == 0 ? -1 : _this4.list[_this4.current].id,\n page: _this4.page,\n limit: 20,\n city: uni.getStorageSync(\"jingweiInfo\").new_city ? uni.getStorageSync(\"jingweiInfo\").new_city : uni.getStorageSync(\"jingweiInfo\").city,\n lat: uni.getStorageSync(\"jingweiInfo\").latitude,\n lon: uni.getStorageSync(\"jingweiInfo\").longitude\n });\n case 2:\n _yield$_this4$$api$se = _context4.sent;\n code = _yield$_this4$$api$se.code;\n data = _yield$_this4$$api$se.data;\n if (type == 1) {\n uni.hideLoading();\n }\n if (code == 200) {\n _this4.total = data.total;\n _this4.sellerUserList = _this4.arrayUnique([].concat((0, _toConsumableArray2.default)(_this4.sellerUserList), (0, _toConsumableArray2.default)(data.list)), 'id');\n }\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n }), (0, _defineProperty2.default)(_methods, \"openPage\", function openPage(index, id) {\n if (!that.city) {\n that.toGetLocation();\n return;\n }\n if (index == 1) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + id\n });\n } else if (index == 2) {\n uni.navigateTo({\n url: \"/pages/index/city\"\n });\n } else if (index == 3) {\n uni.navigateTo({\n url: \"/pages/index/search?type=2\"\n });\n } else if (index == 6) {\n if (this.userInfo.realnameFlag == 0 || this.userInfo.faceFlag == 0 || this.userInfo.phoneFlag == 0) {\n this.isPopup = true;\n return;\n }\n uni.navigateTo({\n url: \"/pages/peiwan/apply\"\n });\n } else if (index == 7) {\n uni.navigateTo({\n url: \"/pages/peiwan/detail?id=\" + id\n });\n }\n }), (0, _defineProperty2.default)(_methods, \"changeTabs\", function changeTabs(index) {\n this.current = index;\n this.page = 1;\n this.sellerUserList = [];\n this.getsellerUserList();\n }), _methods)\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvcGVpd2FuL2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJzeXN0ZW1JbmZvU3luYyIsInVuaSIsImdldFN5c3RlbUluZm9TeW5jIiwiZGF0YSIsImlzRGFzaGFuIiwiaXNTaGFyZSIsImN1cnJlbnQiLCJsaXN0IiwiYWN0aXZlU3R5bGUiLCJpc1Nob3ciLCJjaXR5IiwiaXNQb3B1cCIsImluZm8iLCJwYWdlIiwic2hvdyIsInRvdGFsIiwic2VsbGVyVXNlckxpc3QiLCJ1c2VySW5mbyIsInN0YXR1c0JhckhlaWdodCIsIm9uUHVsbERvd25SZWZyZXNoIiwidGhhdCIsInNldFRpbWVvdXQiLCJnZXRzZWxsZXJVc2VyTGlzdCIsInN0b3BQdWxsRG93blJlZnJlc2giLCJvbkxvYWQiLCJwbGF0Zm9ybSIsImdldExvY2F0aW9uIiwib25TaG93IiwiZ2V0U3RvcmFnZVN5bmMiLCJpZCIsImdldFVzZXJJbmZvIiwib25SZWFkeSIsIiRvbiIsInJlcyIsIm5hbWUiLCJvblJlYWNoQm90dG9tIiwic2hvd0xvYWRpbmciLCJ0aXRsZSIsIm1ldGhvZHMiLCJmb3JtYXR0ZWQiLCJwbHVzIiwiYW5kcm9pZCIsImNoZWNrUGVybWlzc2lvbiIsImdyYW50ZWQiLCJjaGVja1Jlc3VsdCIsImVycm9yIiwibWVzc2FnZSIsInJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbiIsImdldExpc3QiLCJ0cmFja1VwbG9hZCIsIiRhcGkiLCJ1c2VySWQiLCJsYXQiLCJsYXRpdHVkZSIsImxvbiIsImxvbmdpdHVkZSIsInJlY29yZGVyQXV0aE1vZGFsIiwic2hvd01vZGFsIiwiY29udGVudCIsImNhbmNlbFRleHQiLCJjb25maXJtVGV4dCIsInN1Y2Nlc3MiLCJjb25maXJtIiwicGVybWlzaW9uIiwiZ290b0FwcFBlcm1pc3Npb25TZXR0aW5nIiwicGVybWlzaW9uSUQiLCJyZXN1bHQiLCJ0eXBlIiwicmVzMSIsInVybCIsInJlcXVlc3QiLCJyZWdlb2NvZGUiLCJhZGRyZXNzQ29tcG9uZW50IiwibGVuZ3RoIiwicHJvdmluY2UiLCJmb3JtYXR0ZWRfYWRkcmVzcyIsInNwbGl0IiwidG93bnNoaXAiLCJzZXRTdG9yYWdlU3luYyIsImZpbmRVc2VySW5mbyIsImNvZGUiLCJtc2ciLCJzaG93VG9hc3QiLCJwb3NpdGlvbiIsImljb24iLCJhcnIiLCJoYXNoIiwicmVkdWNlIiwiaXRlbSIsIm5leHQiLCJwdXNoIiwic2l0dGVyTGlzdCIsImxpbWl0IiwiY29uZmlnaWQiLCJuZXdfY2l0eSIsImhpZGVMb2FkaW5nIiwiYXJyYXlVbmlxdWUiLCJpbmRleCIsInRvR2V0TG9jYXRpb24iLCJuYXZpZ2F0ZVRvIiwicmVhbG5hbWVGbGFnIiwiZmFjZUZsYWciLCJwaG9uZUZsYWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBaUVBO0FBQTREO0FBQUE7QUFBQTtBQWpFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1BLGNBQWMsR0FBR0MsR0FBRyxDQUFDQyxpQkFBaUIsRUFBRTtBQUFBLGVBRS9CO0VBQ2RDLElBQUksa0JBQUc7SUFDTixPQUFPO01BQ05DLFFBQVEsRUFBRSxLQUFLO01BQ2ZDLE9BQU8sRUFBRSxLQUFLO01BQ2RDLE9BQU8sRUFBRSxDQUFDO01BQ1ZDLElBQUksRUFBQyxFQUFFO01BQ1BDLFdBQVcsRUFBQztRQUFDLFVBQVUsRUFBRTtNQUFPLENBQUM7TUFDakNDLE1BQU0sRUFBRSxLQUFLO01BQ2JDLElBQUksRUFBRSxFQUFFO01BQ1JDLE9BQU8sRUFBRSxLQUFLO01BQ2RDLElBQUksRUFBRSxDQUFDLENBQUM7TUFDUkMsSUFBSSxFQUFFLENBQUM7TUFDUEMsSUFBSSxFQUFFLEtBQUs7TUFDWEMsS0FBSyxFQUFFLENBQUM7TUFDUkMsY0FBYyxFQUFFLEVBQUU7TUFDbEJDLFFBQVEsRUFBRSxDQUFDLENBQUM7TUFDWkMsZUFBZSxFQUFFO0lBQ2xCLENBQUM7RUFDRixDQUFDO0VBQ0RDLGlCQUFpQiwrQkFBRztJQUNuQixJQUFNQyxJQUFJLEdBQUcsSUFBSTtJQUNqQkMsVUFBVSxDQUFDLFlBQUk7TUFDZEQsSUFBSSxDQUFDUCxJQUFJLEdBQUcsQ0FBQztNQUNiTyxJQUFJLENBQUNKLGNBQWMsR0FBRyxFQUFFO01BQ3hCSSxJQUFJLENBQUNFLGlCQUFpQixFQUFFO01BQ3hCckIsR0FBRyxDQUFDc0IsbUJBQW1CLEVBQUU7SUFDMUIsQ0FBQyxFQUFDLElBQUksQ0FBQztFQUNSLENBQUM7RUFDREMsTUFBTSxvQkFBRztJQUNSLElBQUd2QixHQUFHLENBQUNDLGlCQUFpQixFQUFFLENBQUN1QixRQUFRLElBQUksS0FBSyxFQUFFO01BQzdDLElBQUksQ0FBQ0MsV0FBVyxFQUFFO0lBQ25CO0VBQ0QsQ0FBQztFQUNEQyxNQUFNLG9CQUFHO0lBQ1IsSUFBRzFCLEdBQUcsQ0FBQzJCLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQ0MsRUFBRSxFQUFDO01BQ3BDLElBQUksQ0FBQ0MsV0FBVyxFQUFFO0lBQ25CO0VBQ0QsQ0FBQztFQUNEQyxPQUFPLHFCQUFHO0lBQ1QsSUFBTVgsSUFBSSxHQUFHLElBQUk7SUFDakJuQixHQUFHLENBQUMrQixHQUFHLENBQUMsVUFBVSxFQUFFLFVBQUFDLEdBQUcsRUFBRTtNQUN4QmIsSUFBSSxDQUFDVixJQUFJLEdBQUd1QixHQUFHLENBQUNDLElBQUk7TUFDcEJkLElBQUksQ0FBQ1AsSUFBSSxHQUFHLENBQUM7TUFDYk8sSUFBSSxDQUFDSixjQUFjLEdBQUcsRUFBRTtNQUN4QkksSUFBSSxDQUFDRSxpQkFBaUIsRUFBRTtJQUN6QixDQUFDLENBQUM7SUFDRnJCLEdBQUcsQ0FBQytCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQyxVQUFBQyxHQUFHLEVBQUU7TUFDOUJiLElBQUksQ0FBQ2YsT0FBTyxHQUFHLEtBQUs7TUFDcEJlLElBQUksQ0FBQ1QsT0FBTyxHQUFHLEtBQUs7TUFDcEJTLElBQUksQ0FBQ2hCLFFBQVEsR0FBRyxLQUFLO0lBQ3RCLENBQUMsQ0FBQztJQUNGSCxHQUFHLENBQUMrQixHQUFHLENBQUMsU0FBUyxFQUFDLFVBQUFDLEdBQUcsRUFBRTtNQUN0QixJQUFHQSxHQUFHLElBQUksQ0FBQyxFQUFDO1FBQ1hiLElBQUksQ0FBQ04sSUFBSSxHQUFDLEtBQUs7TUFDaEI7SUFDRCxDQUFDLENBQUM7RUFDSCxDQUFDO0VBQ0RxQixhQUFhLDJCQUFHO0lBQ2YsSUFBTWYsSUFBSSxHQUFHLElBQUk7SUFDakJuQixHQUFHLENBQUNtQyxXQUFXLENBQUM7TUFDZkMsS0FBSyxFQUFFO0lBQ1IsQ0FBQyxDQUFDO0lBQ0ZqQixJQUFJLENBQUNQLElBQUksRUFBRztJQUNaUSxVQUFVLENBQUMsWUFBVztNQUNyQkQsSUFBSSxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxFQUFFLElBQUksQ0FBQztFQUNULENBQUM7RUFDRGdCLE9BQU87SUFDTlosV0FBVyx5QkFBRztNQUNiLElBQU1OLElBQUksR0FBRyxJQUFJO01BQ2pCQSxJQUFJLENBQUNGLGVBQWUsR0FBR2xCLGNBQWMsQ0FBQ2tCLGVBQWU7TUFDckRFLElBQUksQ0FBQ1YsSUFBSSxHQUFHVCxHQUFHLENBQUMyQixjQUFjLENBQUMsYUFBYSxDQUFDLEdBQUMzQixHQUFHLENBQUMyQixjQUFjLENBQUMsYUFBYSxDQUFDLENBQUNXLFNBQVMsR0FBQyxFQUFFO01BQzVGLElBQUcsQ0FBQ25CLElBQUksQ0FBQ1YsSUFBSSxFQUFDO1FBQ2I7UUFDQSxJQUFHVCxHQUFHLENBQUNDLGlCQUFpQixFQUFFLENBQUN1QixRQUFRLElBQUksU0FBUyxFQUFFO1VBQ2pEZSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsZUFBZSxDQUMzQix5Q0FBeUMsRUFDekMsVUFBQUMsT0FBTyxFQUFJO1lBQ1QsSUFBSUEsT0FBTyxDQUFDQyxXQUFXLElBQUUsQ0FBQyxDQUFDLEVBQUM7Y0FDN0J4QixJQUFJLENBQUNOLElBQUksR0FBQyxJQUFJO2NBQ2RNLElBQUksQ0FBQ00sV0FBVyxFQUFFO1lBQ2pCLENBQUMsTUFBSTtjQUNOTixJQUFJLENBQUNOLElBQUksR0FBQyxLQUFLO2NBQ2Y7Y0FDQU0sSUFBSSxDQUFDTSxXQUFXLEVBQUU7WUFDakI7VUFDRixDQUFDLEVBQ0QsVUFBQW1CLEtBQUssRUFBSTtZQUNQLGVBQWMsNEJBQTRCLEVBQUVBLEtBQUssQ0FBQ0MsT0FBTztVQUMzRCxDQUFDLENBQ0M7VUFDRjFCLElBQUksQ0FBQzJCLHdCQUF3QixDQUFDLHlDQUF5QyxDQUFDO1VBQ3pFO1FBQ0QsQ0FBQyxNQUFJO1VBQ0ozQixJQUFJLENBQUNNLFdBQVcsRUFBRTtRQUNuQjtNQUNELENBQUMsTUFBSTtRQUNKTixJQUFJLENBQUM0QixPQUFPLEVBQUU7UUFDZDVCLElBQUksQ0FBQ0UsaUJBQWlCLEVBQUU7TUFDekI7SUFDRCxDQUFDO0lBQ0Q7SUFDQTJCLFdBQVcsdUJBQUNoQixHQUFHLEVBQUM7TUFDZixJQUFJLENBQUNpQixJQUFJLENBQUNELFdBQVcsQ0FBQztRQUNyQkUsTUFBTSxFQUFFbEQsR0FBRyxDQUFDMkIsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDQyxFQUFFO1FBQ3pDdUIsR0FBRyxFQUFFbkIsR0FBRyxDQUFDb0IsUUFBUTtRQUNqQkMsR0FBRyxFQUFFckIsR0FBRyxDQUFDc0I7TUFDVixDQUFDLENBQUM7SUFDSCxDQUFDO0lBQ0RDLGlCQUFpQixFQUFFLDZCQUFZO01BQzlCLElBQU1wQyxJQUFJLEdBQUcsSUFBSTtNQUNqQm5CLEdBQUcsQ0FBQ3dELFNBQVMsQ0FBQztRQUNicEIsS0FBSyxFQUFFLFFBQVE7UUFDZnFCLE9BQU8sRUFBRSx1Q0FBdUM7UUFDaERDLFVBQVUsRUFBRSxJQUFJO1FBQ2hCQyxXQUFXLEVBQUUsS0FBSztRQUNsQkMsT0FBTyxtQkFBQzVCLEdBQUcsRUFBRTtVQUNaYixJQUFJLENBQUNOLElBQUksR0FBQyxLQUFLO1VBQ2YsSUFBSW1CLEdBQUcsQ0FBQzZCLE9BQU8sRUFBRTtZQUNoQkMsbUJBQVMsQ0FBQ0Msd0JBQXdCLEVBQUU7VUFDckM7UUFDRDtNQUNELENBQUMsQ0FBQztJQUNILENBQUM7SUFDS2pCLHdCQUF3QixvQ0FBQ2tCLFdBQVcsRUFBRTtNQUFBO01BQUE7UUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUNyQzdDLElBQUksR0FBRyxLQUFJO2dCQUFBO2dCQUFBLE9BQ0UyQyxtQkFBUyxDQUFDaEIsd0JBQXdCLENBQUNrQixXQUFXLENBQUM7Y0FBQTtnQkFBOURDLE1BQU07Z0JBQ1YsSUFBR0EsTUFBTSxJQUFJLENBQUMsRUFBQztrQkFDZDlDLElBQUksQ0FBQ29DLGlCQUFpQixFQUFFO2dCQUN6QixDQUFDLE1BQUk7a0JBQ0pwQyxJQUFJLENBQUNOLElBQUksR0FBQyxLQUFLO2tCQUNmO2tCQUNBTSxJQUFJLENBQUNNLFdBQVcsRUFBRTtnQkFDbkI7Y0FBQztjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDRjtFQUFDLGlGQUNhO0lBQ2IsSUFBTU4sSUFBSSxHQUFHLElBQUk7SUFDakJuQixHQUFHLENBQUN5QixXQUFXLENBQUM7TUFDZnlDLElBQUksRUFBRSxPQUFPO01BQ2JOLE9BQU8sbUJBQUNPLElBQUksRUFBRTtRQUNiLGFBQVlBLElBQUk7UUFDaEJoRCxJQUFJLENBQUM2QixXQUFXLENBQUNtQixJQUFJLENBQUM7UUFDdEIsSUFBSWYsUUFBUSxHQUFHZSxJQUFJLENBQUNmLFFBQVE7VUFBQ0UsU0FBUyxHQUFHYSxJQUFJLENBQUNiLFNBQVM7UUFDdkQsSUFBSWMsR0FBRyw0RUFBcUVkLFNBQVMsY0FBSUYsUUFBUSxzREFBbUQ7UUFDcEpwRCxHQUFHLENBQUNxRSxPQUFPLENBQUM7VUFDWEQsR0FBRyxFQUFIQSxHQUFHO1VBQ0hSLE9BQU8sbUJBQUM1QixHQUFHLEVBQUU7WUFDWixhQUFZQSxHQUFHO1lBQ2YsSUFBR0EsR0FBRyxDQUFDOUIsSUFBSSxDQUFDb0UsU0FBUyxDQUFDQyxnQkFBZ0IsRUFBQztjQUN0QyxJQUFJOUQsSUFBSSxHQUFHdUIsR0FBRyxDQUFDOUIsSUFBSSxDQUFDb0UsU0FBUyxDQUFDQyxnQkFBZ0IsQ0FBQzlELElBQUksQ0FBQytELE1BQU0sSUFBRSxDQUFDLEdBQUN4QyxHQUFHLENBQUM5QixJQUFJLENBQUNvRSxTQUFTLENBQUNDLGdCQUFnQixDQUFDRSxRQUFRLEdBQUN6QyxHQUFHLENBQUM5QixJQUFJLENBQUNvRSxTQUFTLENBQUNDLGdCQUFnQixDQUFDOUQsSUFBSTtjQUNuSlUsSUFBSSxDQUFDVixJQUFJLEdBQUd1QixHQUFHLENBQUM5QixJQUFJLENBQUNvRSxTQUFTLENBQUNJLGlCQUFpQixDQUFDQyxLQUFLLENBQUMzQyxHQUFHLENBQUM5QixJQUFJLENBQUNvRSxTQUFTLENBQUNDLGdCQUFnQixDQUFDSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FDdkd6RCxJQUFJLENBQUNOLElBQUksR0FBQyxLQUFLO2NBQ2ZiLEdBQUcsQ0FBQzZFLGNBQWMsQ0FBQyxhQUFhLGdEQUFLVixJQUFJLEdBQUluQyxHQUFHLENBQUM5QixJQUFJLENBQUNvRSxTQUFTLENBQUNDLGdCQUFnQjtnQkFBQ2pDLFNBQVMsRUFBRW5CLElBQUksQ0FBQ1Y7Y0FBSSxHQUFFO2NBQ3ZHVSxJQUFJLENBQUM0QixPQUFPLEVBQUU7Y0FDZDVCLElBQUksQ0FBQ1UsV0FBVyxFQUFFO1lBQ25CO1VBQ0Q7UUFDRCxDQUFDLENBQUM7TUFDSDtJQUNELENBQUMsQ0FBQztFQUNILENBQUMsaUZBRW1CO0lBQUE7SUFBQTtNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtjQUFBLE9BQ2dCLE1BQUksQ0FBQ29CLElBQUksQ0FBQzZCLFlBQVksQ0FBQztnQkFBQzVCLE1BQU0sRUFBRWxELEdBQUcsQ0FBQzJCLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQ0M7Y0FBRSxDQUFDLENBQUM7WUFBQTtjQUFBO2NBQTlGbUQsSUFBSSx5QkFBSkEsSUFBSTtjQUFFN0UsSUFBSSx5QkFBSkEsSUFBSTtjQUFHOEUsR0FBRyx5QkFBSEEsR0FBRztjQUN4QixJQUFHRCxJQUFJLElBQUksR0FBRyxFQUFDO2dCQUNkLE1BQUksQ0FBQy9ELFFBQVEsR0FBR2QsSUFBSTtnQkFDcEJGLEdBQUcsQ0FBQzZFLGNBQWMsQ0FBQyxVQUFVLEVBQUMzRSxJQUFJLENBQUM7Y0FDcEMsQ0FBQyxNQUFJO2dCQUNKRixHQUFHLENBQUNpRixTQUFTLENBQUM7a0JBQ2I3QyxLQUFLLEVBQUU0QyxHQUFHO2tCQUNWRSxRQUFRLEVBQUUsUUFBUTtrQkFDbEJDLElBQUksRUFBRTtnQkFDUCxDQUFDLENBQUM7Y0FDSDtZQUFDO1lBQUE7Y0FBQTtVQUFBO1FBQUE7TUFBQTtJQUFBO0VBQ0YsQ0FBQywrRUFFWUMsR0FBRyxFQUFFbkQsSUFBSSxFQUFFO0lBQ3ZCLElBQUlvRCxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsT0FBT0QsR0FBRyxDQUFDRSxNQUFNLENBQUMsVUFBVUMsSUFBSSxFQUFFQyxJQUFJLEVBQUU7TUFDdkNILElBQUksQ0FBQ0csSUFBSSxDQUFDdkQsSUFBSSxDQUFDLENBQUMsR0FDYixFQUFFLEdBQ0RvRCxJQUFJLENBQUNHLElBQUksQ0FBQ3ZELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSSxJQUFJc0QsSUFBSSxDQUFDRSxJQUFJLENBQUNELElBQUksQ0FBRTtNQUMvQyxPQUFPRCxJQUFJO0lBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUNQLENBQUMseUVBQ2U7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2NBQUEsT0FDVyxNQUFJLENBQUN0QyxJQUFJLENBQUN5QyxVQUFVLENBQUM7Z0JBQzlDeEMsTUFBTSxFQUFFbEQsR0FBRyxDQUFDMkIsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDQyxFQUFFO2dCQUN6Q2hCLElBQUksRUFBRSxDQUFDO2dCQUNQK0UsS0FBSyxFQUFFO2NBQ1IsQ0FBQyxDQUFDO1lBQUE7Y0FBQTtjQUpLWixJQUFJLHlCQUFKQSxJQUFJO2NBQUM3RSxJQUFJLHlCQUFKQSxJQUFJO2NBS2hCLElBQUc2RSxJQUFJLElBQUksR0FBRyxFQUFDO2dCQUNkLGFBQVk3RSxJQUFJO2dCQUNoQixNQUFJLENBQUNJLElBQUksSUFBSTtrQkFBQyxNQUFNLEVBQUU7Z0JBQUksQ0FBQywwQ0FBSUosSUFBSSxDQUFDSSxJQUFJLEVBQUM7Z0JBQ3pDLE1BQUksQ0FBQ2UsaUJBQWlCLEVBQUU7Y0FDekI7WUFBQztZQUFBO2NBQUE7VUFBQTtRQUFBO01BQUE7SUFBQTtFQUNGLENBQUMsMkZBQ3VCNkMsSUFBSSxFQUFFO0lBQUE7SUFBQTtNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtjQUFBLE9BQ0gsTUFBSSxDQUFDakIsSUFBSSxDQUFDbEMsY0FBYyxDQUFDO2dCQUNsRG1DLE1BQU0sRUFBRWxELEdBQUcsQ0FBQzJCLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQ0MsRUFBRTtnQkFDekNnRSxRQUFRLEVBQUUsTUFBSSxDQUFDdkYsT0FBTyxJQUFFLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxNQUFJLENBQUNDLElBQUksQ0FBQyxNQUFJLENBQUNELE9BQU8sQ0FBQyxDQUFDdUIsRUFBRTtnQkFDdkRoQixJQUFJLEVBQUUsTUFBSSxDQUFDQSxJQUFJO2dCQUNmK0UsS0FBSyxFQUFFLEVBQUU7Z0JBQ1RsRixJQUFJLEVBQUVULEdBQUcsQ0FBQzJCLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQ2tFLFFBQVEsR0FBQzdGLEdBQUcsQ0FBQzJCLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQ2tFLFFBQVEsR0FBQzdGLEdBQUcsQ0FBQzJCLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQ2xCLElBQUk7Z0JBQ2xJMEMsR0FBRyxFQUFFbkQsR0FBRyxDQUFDMkIsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDeUIsUUFBUTtnQkFDL0NDLEdBQUcsRUFBRXJELEdBQUcsQ0FBQzJCLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQzJCO2NBQ3hDLENBQUMsQ0FBQztZQUFBO2NBQUE7Y0FSS3lCLElBQUkseUJBQUpBLElBQUk7Y0FBQzdFLElBQUkseUJBQUpBLElBQUk7Y0FTaEIsSUFBR2dFLElBQUksSUFBSSxDQUFDLEVBQUM7Z0JBQ1psRSxHQUFHLENBQUM4RixXQUFXLEVBQUU7Y0FDbEI7Y0FDQSxJQUFHZixJQUFJLElBQUksR0FBRyxFQUFDO2dCQUNkLE1BQUksQ0FBQ2pFLEtBQUssR0FBR1osSUFBSSxDQUFDWSxLQUFLO2dCQUN2QixNQUFJLENBQUNDLGNBQWMsR0FBRyxNQUFJLENBQUNnRixXQUFXLDRDQUFLLE1BQUksQ0FBQ2hGLGNBQWMsb0NBQUliLElBQUksQ0FBQ0ksSUFBSSxJQUFFLElBQUksQ0FBQztjQUNuRjtZQUFDO1lBQUE7Y0FBQTtVQUFBO1FBQUE7TUFBQTtJQUFBO0VBQ0YsQ0FBQyx5RUFDUTBGLEtBQUssRUFBQ3BFLEVBQUUsRUFBQztJQUNqQixJQUFHLENBQUNULElBQUksQ0FBQ1YsSUFBSSxFQUFDO01BQ2JVLElBQUksQ0FBQzhFLGFBQWEsRUFBRTtNQUNwQjtJQUNEO0lBQ0EsSUFBR0QsS0FBSyxJQUFJLENBQUMsRUFBQztNQUNiaEcsR0FBRyxDQUFDa0csVUFBVSxDQUFDO1FBQ2Q5QixHQUFHLEVBQUUsMEJBQTBCLEdBQUN4QztNQUNqQyxDQUFDLENBQUM7SUFDSCxDQUFDLE1BQUssSUFBR29FLEtBQUssSUFBSSxDQUFDLEVBQUM7TUFDbkJoRyxHQUFHLENBQUNrRyxVQUFVLENBQUM7UUFDZDlCLEdBQUcsRUFBRTtNQUNOLENBQUMsQ0FBQztJQUNILENBQUMsTUFBSyxJQUFHNEIsS0FBSyxJQUFJLENBQUMsRUFBQztNQUNuQmhHLEdBQUcsQ0FBQ2tHLFVBQVUsQ0FBQztRQUNkOUIsR0FBRyxFQUFFO01BQ04sQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxNQUFLLElBQUc0QixLQUFLLElBQUksQ0FBQyxFQUFDO01BQ25CLElBQUcsSUFBSSxDQUFDaEYsUUFBUSxDQUFDbUYsWUFBWSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUNuRixRQUFRLENBQUNvRixRQUFRLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQ3BGLFFBQVEsQ0FBQ3FGLFNBQVMsSUFBSSxDQUFDLEVBQUM7UUFDakcsSUFBSSxDQUFDM0YsT0FBTyxHQUFHLElBQUk7UUFDbkI7TUFDRDtNQUNBVixHQUFHLENBQUNrRyxVQUFVLENBQUM7UUFDZDlCLEdBQUcsRUFBRTtNQUNOLENBQUMsQ0FBQztJQUNILENBQUMsTUFBSyxJQUFHNEIsS0FBSyxJQUFJLENBQUMsRUFBQztNQUNuQmhHLEdBQUcsQ0FBQ2tHLFVBQVUsQ0FBQztRQUNkOUIsR0FBRyxFQUFFLDBCQUEwQixHQUFDeEM7TUFDakMsQ0FBQyxDQUFDO0lBQ0g7RUFDRCxDQUFDLDZFQUNVb0UsS0FBSyxFQUFDO0lBQ2hCLElBQUksQ0FBQzNGLE9BQU8sR0FBRzJGLEtBQUs7SUFDcEIsSUFBSSxDQUFDcEYsSUFBSSxHQUFHLENBQUM7SUFDYixJQUFJLENBQUNHLGNBQWMsR0FBRyxFQUFFO0lBQ3hCLElBQUksQ0FBQ00saUJBQWlCLEVBQUU7RUFDekIsQ0FBQztBQUVILENBQUM7QUFBQSwyQiIsImZpbGUiOiIxMjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmNvbnN0IHN5c3RlbUluZm9TeW5jID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKClcbmltcG9ydCBwZXJtaXNpb24gZnJvbSBcIkAvanNfc2RrL3dhLXBlcm1pc3Npb24vcGVybWlzc2lvbi5qc1wiXG5leHBvcnQgZGVmYXVsdCB7XG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGlzRGFzaGFuOiBmYWxzZSxcblx0XHRcdGlzU2hhcmU6IGZhbHNlLFxuXHRcdFx0Y3VycmVudDogMCxcblx0XHRcdGxpc3Q6W10sXG5cdFx0XHRhY3RpdmVTdHlsZTp7J2ZvbnRTaXplJzogJzM1cnB4J30sXG5cdFx0XHRpc1Nob3c6IGZhbHNlLFxuXHRcdFx0Y2l0eTogXCJcIixcblx0XHRcdGlzUG9wdXA6IGZhbHNlLFxuXHRcdFx0aW5mbzoge30sXG5cdFx0XHRwYWdlOiAxLFxuXHRcdFx0c2hvdzogZmFsc2UsXG5cdFx0XHR0b3RhbDogMSxcblx0XHRcdHNlbGxlclVzZXJMaXN0OiBbXSxcblx0XHRcdHVzZXJJbmZvOiB7fSxcblx0XHRcdHN0YXR1c0JhckhlaWdodDogMFxuXHRcdH1cblx0fSxcblx0b25QdWxsRG93blJlZnJlc2goKSB7XG5cdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0c2V0VGltZW91dCgoKT0+e1xuXHRcdFx0dGhhdC5wYWdlID0gMTtcblx0XHRcdHRoYXQuc2VsbGVyVXNlckxpc3QgPSBbXTtcblx0XHRcdHRoYXQuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHRcdHVuaS5zdG9wUHVsbERvd25SZWZyZXNoKCk7XG5cdFx0fSwyMDAwKVxuXHR9LFxuXHRvbkxvYWQoKSB7XG5cdFx0aWYodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gPT0gJ2lvcycpIHtcblx0XHRcdHRoaXMuZ2V0TG9jYXRpb24oKTtcblx0XHR9XG5cdH0sXG5cdG9uU2hvdygpIHtcblx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCl7XG5cdFx0XHR0aGlzLmdldFVzZXJJbmZvKCk7XG5cdFx0fVxuXHR9LFxuXHRvblJlYWR5KCkge1xuXHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdHVuaS4kb24oXCJjbGlja1RhcFwiLCByZXM9Pntcblx0XHRcdHRoYXQuY2l0eSA9IHJlcy5uYW1lO1xuXHRcdFx0dGhhdC5wYWdlID0gMTtcblx0XHRcdHRoYXQuc2VsbGVyVXNlckxpc3QgPSBbXTtcblx0XHRcdHRoYXQuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHR9KTtcblx0XHR1bmkuJG9uKFwiY2xvc2VTaGFyZVBvcHVwXCIscmVzPT57XG5cdFx0XHR0aGF0LmlzU2hhcmUgPSBmYWxzZTtcblx0XHRcdHRoYXQuaXNQb3B1cCA9IGZhbHNlO1xuXHRcdFx0dGhhdC5pc0Rhc2hhbj0gIGZhbHNlO1xuXHRcdH0pXG5cdFx0dW5pLiRvbihcIm9uUG9wdXBcIixyZXM9Pntcblx0XHRcdGlmKHJlcyA9PSAxKXtcblx0XHRcdFx0dGhhdC5zaG93PWZhbHNlXG5cdFx0XHR9XG5cdFx0fSlcblx0fSxcblx0b25SZWFjaEJvdHRvbSgpIHtcblx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0dGl0bGU6IFwi5Yqg6L295LitXCJcblx0XHR9KVxuXHRcdHRoYXQucGFnZSArKztcblx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhhdC5nZXRzZWxsZXJVc2VyTGlzdCgxKTtcblx0XHR9LCAxMDAwKTtcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdGdldExvY2F0aW9uKCkge1xuXHRcdFx0Y29uc3QgdGhhdCA9IHRoaXM7XG5cdFx0XHR0aGF0LnN0YXR1c0JhckhlaWdodCA9IHN5c3RlbUluZm9TeW5jLnN0YXR1c0JhckhlaWdodDtcblx0XHRcdHRoYXQuY2l0eSA9IHVuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpP3VuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLmZvcm1hdHRlZDpcIlwiXG5cdFx0XHRpZighdGhhdC5jaXR5KXtcblx0XHRcdFx0Ly8gQVBQ5qOA5p+l5p2D6ZmQXG5cdFx0XHRcdGlmKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09ICdhbmRyb2lkJykge1xuXHRcdFx0XHRcdHBsdXMuYW5kcm9pZC5jaGVja1Blcm1pc3Npb24oXG5cdFx0XHRcdFx0XHQnYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19GSU5FX0xPQ0FUSU9OJyxcblx0XHRcdFx0XHRcdGdyYW50ZWQgPT4ge1xuXHRcdFx0XHRcdFx0ICBpZiAoZ3JhbnRlZC5jaGVja1Jlc3VsdD09LTEpe1xuXHRcdFx0XHRcdFx0XHR0aGF0LnNob3c9dHJ1ZVxuXHRcdFx0XHRcdFx0XHR0aGF0LmdldExvY2F0aW9uKCk7XG5cdFx0XHRcdFx0XHQgIH1lbHNle1xuXHRcdFx0XHRcdFx0XHR0aGF0LnNob3c9ZmFsc2Vcblx0XHRcdFx0XHRcdFx0Ly8g5q2k5Li6dVZpZXfnmoTot7Povazmlrnms5XvvIzor6bop4FcIuaWh+ahoy1KU1wi6YOo5YiG77yM5Lmf5Y+v5Lul55SodW5p55qEdW5pLm5hdmlnYXRlVG9cblx0XHRcdFx0XHRcdFx0dGhhdC5nZXRMb2NhdGlvbigpO1xuXHRcdFx0XHRcdFx0ICB9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZXJyb3IgPT4ge1xuXHRcdFx0XHRcdFx0ICBjb25zb2xlLmVycm9yKCdFcnJvciBjaGVja2luZyBwZXJtaXNzaW9uOicsIGVycm9yLm1lc3NhZ2UpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCAgKTtcblx0XHRcdFx0XHQgdGhhdC5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24oJ2FuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfRklORV9MT0NBVElPTicpXG5cdFx0XHRcdFx0cmV0dXJuIDtcblx0XHRcdFx0fWVsc2V7XG5cdFx0XHRcdFx0dGhhdC5nZXRMb2NhdGlvbigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0dGhhdC5nZXRMaXN0KCk7XG5cdFx0XHRcdHRoYXQuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8v5a6e5pe25LiK5Lyg6L2o6L+5XG5cdFx0dHJhY2tVcGxvYWQocmVzKXtcblx0XHRcdHRoaXMuJGFwaS50cmFja1VwbG9hZCh7XG5cdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdGxhdDogcmVzLmxhdGl0dWRlLFxuXHRcdFx0XHRsb246IHJlcy5sb25naXR1ZGUsXG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHJlY29yZGVyQXV0aE1vZGFsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHR0aXRsZTogJ+WumuS9jeadg+mZkOivtOaYjicsXG5cdFx0XHRcdGNvbnRlbnQ6ICfkvr/kuo7mgqjkvb/nlKjor6Xlip/og73lnKjlvZPliY3kvY3nva7mn6Xor6LmiYDlnKjpl6jlupfvvIzor7fmgqjnoa7orqTmjojmnYPvvIzlkKbliJnml6Dms5Xkvb/nlKjor6Xlip/og73jgIInLFxuXHRcdFx0XHRjYW5jZWxUZXh0OiAn5YWz6ZetJyxcblx0XHRcdFx0Y29uZmlybVRleHQ6ICfljrvmjojmnYMnLFxuXHRcdFx0XHRzdWNjZXNzKHJlcykge1xuXHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxuXHRcdFx0XHRcdGlmIChyZXMuY29uZmlybSkge1xuXHRcdFx0XHRcdFx0cGVybWlzaW9uLmdvdG9BcHBQZXJtaXNzaW9uU2V0dGluZygpXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0YXN5bmMgcmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKHBlcm1pc2lvbklEKSB7XG5cdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdHZhciByZXN1bHQgPSBhd2FpdCBwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKHBlcm1pc2lvbklEKTtcblx0XHRcdGlmKHJlc3VsdCAhPSAxKXtcblx0XHRcdFx0dGhhdC5yZWNvcmRlckF1dGhNb2RhbCgpO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHRoYXQuc2hvdz1mYWxzZVxuXHRcdFx0XHQvLyDmraTkuLp1Vmlld+eahOi3s+i9rOaWueazle+8jOivpuingVwi5paH5qGjLUpTXCLpg6jliIbvvIzkuZ/lj6/ku6XnlKh1bmnnmoR1bmkubmF2aWdhdGVUb1xuXHRcdFx0XHR0aGF0LmdldExvY2F0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRnZXRMb2NhdGlvbigpIHtcblx0XHRcdGNvbnN0IHRoYXQgPSB0aGlzO1xuXHRcdFx0dW5pLmdldExvY2F0aW9uKHtcblx0XHRcdFx0dHlwZTogJ2djajAyJyxcblx0XHRcdFx0c3VjY2VzcyhyZXMxKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzMSlcblx0XHRcdFx0XHR0aGF0LnRyYWNrVXBsb2FkKHJlczEpXG5cdFx0XHRcdFx0bGV0IGxhdGl0dWRlID0gcmVzMS5sYXRpdHVkZSxsb25naXR1ZGUgPSByZXMxLmxvbmdpdHVkZTtcblx0XHRcdFx0XHRsZXQgdXJsID0gYGh0dHBzOi8vcmVzdGFwaS5hbWFwLmNvbS92My9nZW9jb2RlL3JlZ2VvP291dHB1dD1qc29uJmxvY2F0aW9uPSR7bG9uZ2l0dWRlfSwke2xhdGl0dWRlfSZrZXk9NGE2ZTJiYThlYWMzODY0ZjBkODhmOWI1YWJkMDI2ZTYmcmFkaXVzPTEwMDBgXG5cdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdFx0dXJsLFxuXHRcdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKVxuXHRcdFx0XHRcdFx0XHRpZihyZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudCl7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGNpdHkgPSByZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC5jaXR5Lmxlbmd0aD09MD9yZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC5wcm92aW5jZTpyZXMuZGF0YS5yZWdlb2NvZGUuYWRkcmVzc0NvbXBvbmVudC5jaXR5XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5jaXR5ID0gcmVzLmRhdGEucmVnZW9jb2RlLmZvcm1hdHRlZF9hZGRyZXNzLnNwbGl0KHJlcy5kYXRhLnJlZ2VvY29kZS5hZGRyZXNzQ29tcG9uZW50LnRvd25zaGlwKVsxXVxuXHRcdFx0XHRcdFx0XHRcdHRoYXQuc2hvdz1mYWxzZTtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoXCJqaW5nd2VpSW5mb1wiLHsuLi5yZXMxLC4uLnJlcy5kYXRhLnJlZ2VvY29kZS5hZGRyZXNzQ29tcG9uZW50LGZvcm1hdHRlZDogdGhhdC5jaXR5fSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXRMaXN0KCk7XG5cdFx0XHRcdFx0XHRcdFx0dGhhdC5nZXRVc2VySW5mbygpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdC8v6I635Y+W55So5oi35L+h5oGvXG5cdFx0YXN5bmMgZ2V0VXNlckluZm8oKSB7XG5cdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2cgfSA9IGF3YWl0IHRoaXMuJGFwaS5maW5kVXNlckluZm8oe3VzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWR9KTtcblx0XHRcdGlmKGNvZGUgPT0gMjAwKXtcblx0XHRcdFx0dGhpcy51c2VySW5mbyA9IGRhdGE7XG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIsZGF0YSk7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IG1zZyxcblx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcblx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8v5pWw57uE5a+56LGh5Y676YeNXG5cdFx0YXJyYXlVbmlxdWUgKGFyciwgbmFtZSkge1xuXHRcdFx0dmFyIGhhc2ggPSB7fTtcblx0XHRcdHJldHVybiBhcnIucmVkdWNlKGZ1bmN0aW9uIChpdGVtLCBuZXh0KSB7XG5cdFx0XHRcdGhhc2hbbmV4dFtuYW1lXV1cblx0XHRcdFx0XHQ/IFwiXCJcblx0XHRcdFx0XHQ6IChoYXNoW25leHRbbmFtZV1dID0gdHJ1ZSAmJiBpdGVtLnB1c2gobmV4dCkpO1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH0sIFtdKTtcblx0XHR9LFxuXHRcdGFzeW5jIGdldExpc3QoKSB7XG5cdFx0XHRjb25zdCB7Y29kZSxkYXRhfSA9IGF3YWl0IHRoaXMuJGFwaS5zaXR0ZXJMaXN0KHtcblx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0cGFnZTogMSxcblx0XHRcdFx0bGltaXQ6IDIwXG5cdFx0XHR9KVxuXHRcdFx0aWYoY29kZSA9PSAyMDApe1xuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKVxuXHRcdFx0XHR0aGlzLmxpc3QgPSBbeyduYW1lJzogJ+WFqOmDqCd9LC4uLmRhdGEubGlzdF07XG5cdFx0XHRcdHRoaXMuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFzeW5jIGdldHNlbGxlclVzZXJMaXN0KHR5cGUpIHtcblx0XHRcdGNvbnN0IHtjb2RlLGRhdGF9ID0gYXdhaXQgdGhpcy4kYXBpLnNlbGxlclVzZXJMaXN0KHtcblx0XHRcdFx0dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcblx0XHRcdFx0Y29uZmlnaWQ6IHRoaXMuY3VycmVudD09MD8tMTp0aGlzLmxpc3RbdGhpcy5jdXJyZW50XS5pZCxcblx0XHRcdFx0cGFnZTogdGhpcy5wYWdlLFxuXHRcdFx0XHRsaW1pdDogMjAsXG5cdFx0XHRcdGNpdHk6IHVuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLm5ld19jaXR5P3VuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLm5ld19jaXR5OnVuaS5nZXRTdG9yYWdlU3luYyhcImppbmd3ZWlJbmZvXCIpLmNpdHksXG5cdFx0XHRcdGxhdDogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubGF0aXR1ZGUsXG5cdFx0XHRcdGxvbjogdW5pLmdldFN0b3JhZ2VTeW5jKFwiamluZ3dlaUluZm9cIikubG9uZ2l0dWRlLFxuXHRcdFx0fSlcblx0XHRcdGlmKHR5cGUgPT0gMSl7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpXG5cdFx0XHR9XG5cdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdHRoaXMudG90YWwgPSBkYXRhLnRvdGFsO1xuXHRcdFx0XHR0aGlzLnNlbGxlclVzZXJMaXN0ID0gdGhpcy5hcnJheVVuaXF1ZShbLi4udGhpcy5zZWxsZXJVc2VyTGlzdCwuLi5kYXRhLmxpc3RdLCdpZCcpXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvcGVuUGFnZShpbmRleCxpZCl7XG5cdFx0XHRpZighdGhhdC5jaXR5KXtcblx0XHRcdFx0dGhhdC50b0dldExvY2F0aW9uKCk7XG5cdFx0XHRcdHJldHVybiA7XG5cdFx0XHR9XG5cdFx0XHRpZihpbmRleCA9PSAxKXtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGVpd2FuL2RldGFpbD9pZD1cIitpZFxuXHRcdFx0XHR9KVxuXHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gMil7XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL2luZGV4L2NpdHlcIlxuXHRcdFx0XHR9KVxuXHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gMyl7XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL2luZGV4L3NlYXJjaD90eXBlPTJcIlxuXHRcdFx0XHR9KVxuXHRcdFx0fWVsc2UgaWYoaW5kZXggPT0gNil7XG5cdFx0XHRcdGlmKHRoaXMudXNlckluZm8ucmVhbG5hbWVGbGFnID09IDAgfHwgdGhpcy51c2VySW5mby5mYWNlRmxhZyA9PSAwIHx8IHRoaXMudXNlckluZm8ucGhvbmVGbGFnID09IDApe1xuXHRcdFx0XHRcdHRoaXMuaXNQb3B1cCA9IHRydWVcblx0XHRcdFx0XHRyZXR1cm4gO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3BlaXdhbi9hcHBseVwiXG5cdFx0XHRcdH0pXG5cdFx0XHR9ZWxzZSBpZihpbmRleCA9PSA3KXtcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdHVybDogXCIvcGFnZXMvcGVpd2FuL2RldGFpbD9pZD1cIitpZFxuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Y2hhbmdlVGFicyhpbmRleCl7XG5cdFx0XHR0aGlzLmN1cnJlbnQgPSBpbmRleFxuXHRcdFx0dGhpcy5wYWdlID0gMTtcblx0XHRcdHRoaXMuc2VsbGVyVXNlckxpc3QgPSBbXTtcblx0XHRcdHRoaXMuZ2V0c2VsbGVyVXNlckxpc3QoKTtcblx0XHR9LFxuXHR9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///129\n"); /***/ }), /* 130 */ @@ -31990,7 +31990,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _rua /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n onLaunch: function onLaunch() {},\n onShow: function onShow() {},\n onHide: function onHide() {\n __f__(\"log\", 'App Hide', \" at App.vue:9\");\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsIm9uU2hvdyIsIm9uSGlkZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQ2U7RUFDZEEsUUFBUSxFQUFFLG9CQUFXLENBQ3JCLENBQUM7RUFDREMsTUFBTSxFQUFFLGtCQUFXLENBRW5CLENBQUM7RUFDREMsTUFBTSxFQUFFLGtCQUFXO0lBQ2xCLGFBQVksVUFBVTtFQUN2QjtBQUNELENBQUM7QUFBQSwyQiIsImZpbGUiOiI0OTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBkZWZhdWx0IHtcblx0b25MYXVuY2g6IGZ1bmN0aW9uKCkge1xuXHR9LFxuXHRvblNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdFxuXHR9LFxuXHRvbkhpZGU6IGZ1bmN0aW9uKCkge1xuXHRcdGNvbnNvbGUubG9nKCdBcHAgSGlkZScpXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///499\n"); +eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n onLaunch: function onLaunch() {},\n onShow: function onShow() {},\n onHide: function onHide() {\n __f__(\"log\", 'App Hide', \" at App.vue:9\");\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsIm9uU2hvdyIsIm9uSGlkZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQ0E7RUFDQUEsK0JBQ0E7RUFDQUMsMkJBRUE7RUFDQUM7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiI0OTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0PlxuXHRleHBvcnQgZGVmYXVsdCB7XG5cdFx0b25MYXVuY2g6IGZ1bmN0aW9uKCkge1xuXHRcdH0sXG5cdFx0b25TaG93OiBmdW5jdGlvbigpIHtcblx0XHRcdFxuXHRcdH0sXG5cdFx0b25IaWRlOiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdBcHAgSGlkZScpXG5cdFx0fVxuXHR9XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuXHQucGVybWlzc2lvbnNfYm94e1xuXHRcdHBhZGRpbmc6IDUwcnB4IDMwcnB4O1xuXHRcdGZvbnQtc2l6ZTogMzBycHg7XG5cdFx0bGluZS1oZWlnaHQ6IDUwcnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdH1cblx0Lyrmr4/kuKrpobXpnaLlhazlhbFjc3MgKi9cblx0cGFnZXtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRjNGNEY1O1xyXG5cdH1cbjwvc3R5bGU+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///499\n"); /***/ }), /* 500 */