"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Page({ data: { liveRoomData: {}, imagesUrl: [], doccode: '', roomid: '', liveStatus: { 101: "直播中", 102: "未开始", 103: "回放", 104: "禁播", 105: "暂停中", 106: "异常", 107: "已过期", }, showDialog: false, isShowSubAnchorDialog: false, wechatName: '', wechatNumber: '', subAnchorWechat: '', }, getImagesUrl: function () { var liveRoomData = this.data.liveRoomData; var imagesUrl = [ { url: liveRoomData.ShareImgUnidUrl, name: '分享卡片封面', }, { url: liveRoomData.FeedsImgUnidUrl, name: '购物直播频道封面', }, { url: liveRoomData.CoverImgUnidUrl, name: '直播间背景墙', } ]; this.setData({ imagesUrl: imagesUrl }); }, onLoad: function (options) { return __awaiter(this, void 0, void 0, function () { var doccode, roomid; return __generator(this, function (_a) { doccode = options.doccode, roomid = options.roomid; this.setData({ doccode: doccode, roomid: roomid, }); this.getLiveRoomDetail(); return [2]; }); }); }, onShow: function () { this.getGoodsListInRoom(); this.getAssistantList(); }, getLiveRoomDetail: function () { return __awaiter(this, void 0, void 0, function () { var doccode, _a, error, result; return __generator(this, function (_b) { switch (_b.label) { case 0: doccode = this.data.doccode; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/panicBuyingLive/getLiveRoomDetailByDocCode.do", data: { doccode: doccode, } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error) { console.log(error); return [2]; } console.log(result); this.setData({ liveRoomData: result.list[0], subAnchorWechat: result.list[0].SubAnchorWechat }); this.getImagesUrl(); return [2]; } }); }); }, closeSubAnchorDialog: function () { this.setData({ isShowSubAnchorDialog: false, }); }, showSubAnchorDialog: function () { this.setData({ isShowSubAnchorDialog: true }); }, checkSubAnchorWechat: function (event) { console.log(event); var value = event.detail.value.trim(); this.setData({ subAnchorWechat: value }); this.checkFieldValue('subAnchorWechat', '请输入主播副微信号'); }, saveSubAnchorWechat: function () { return __awaiter(this, void 0, void 0, function () { var _a, _b, roomid, subAnchorWechat, _c, error, result, authentication; return __generator(this, function (_d) { switch (_d.label) { case 0: if (!this.checkFieldValue('subAnchorWechat', '请输入主播副微信号')) return [2]; _b = this.data, roomid = _b.roomid, subAnchorWechat = _b.subAnchorWechat; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/live/addSubAnchor.do", data: { roomid: roomid, userName: subAnchorWechat } }))]; case 1: _c = _d.sent(), error = _c[0], result = _c[1]; if (error) { console.log(error); return [2]; } console.log(result); if (result.qrcodeImg) { authentication = this.selectComponent('#my-anchor-authentication'); authentication.showQrCodeDialog(); return [2]; } if (result.state == 'success') { this.closeSubAnchorDialog(); this.setData((_a = {}, _a["liveRoomData.SubAnchorWechat"] = subAnchorWechat, _a)); } return [2]; } }); }); }, deleteSubAnchorWechat: function () { return __awaiter(this, void 0, void 0, function () { var _this = this; return __generator(this, function (_a) { wx.pro.showModal({ title: '提示', content: '确定要删除主播副号吗?', }).then(function (res) { console.log(res); if (res.confirm) { console.log('确认'); _this.deleteSubAnchorWechatRequest(); } }); return [2]; }); }); }, deleteSubAnchorWechatRequest: function () { return __awaiter(this, void 0, void 0, function () { var _a, roomid, _b, error, result; return __generator(this, function (_c) { switch (_c.label) { case 0: roomid = this.data.roomid; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/live/deleteSubAnchor.do", data: { roomid: roomid, } }))]; case 1: _b = _c.sent(), error = _b[0], result = _b[1]; if (error) { console.log(error); return [2]; } console.log(result); if (result.state == 'success') { this.closeSubAnchorDialog(); this.setData((_a = { subAnchorWechat: '' }, _a["liveRoomData.SubAnchorWechat"] = '', _a)); } return [2]; } }); }); }, createPoster: function () { return __awaiter(this, void 0, void 0, function () { var poster; return __generator(this, function (_a) { poster = this.selectComponent('#my-poster-creator'); poster.drawPic(); return [2]; }); }); }, getGoodsListInRoom: function () { return __awaiter(this, void 0, void 0, function () { var roomid, _a, error, result; return __generator(this, function (_b) { switch (_b.label) { case 0: roomid = this.data.roomid; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/panicBuyingLive/goodsListInRoom.do", data: { roomid: roomid, } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error) { console.log(error); return [2]; } console.log(result); this.setData({ goodsList: result.list }); return [2]; } }); }); }, pushGoodsInLive: function (event) { return __awaiter(this, void 0, void 0, function () { var roomid, goodsid, _a, error, result; return __generator(this, function (_b) { switch (_b.label) { case 0: roomid = this.data.roomid; goodsid = event.currentTarget.dataset.goodsid; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/live/goodsPushInRoom.do", data: { roomid: roomid, goodsid: goodsid } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error) { console.log(error); return [2]; } console.log(result); if (result.state == 'success') { wx.showToast({ title: '推送成功' }); } return [2]; } }); }); }, onChangeFeedsPublic: function (_a) { var detail = _a.detail; return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_b) { console.log('是否开启官方收录:', detail); this.sendChangesSwitchRequest('/shopping/live/updateFeedPublic.do', ['isFeedsPublic', detail]); return [2]; }); }); }, onChangeCloseReplay: function (_a) { var detail = _a.detail; console.log('是否关闭回放:', detail); this.sendChangesSwitchRequest('/shopping/live/updateReplay.do', ['isCloseReplay', !detail]); }, onChangeCloseComment: function (_a) { var detail = _a.detail; console.log('是否关闭禁言', detail); this.sendChangesSwitchRequest('/shopping/live/updateComment.do', ['isCloseComment', detail]); }, sendChangesSwitchRequest: function (url, value) { return __awaiter(this, void 0, void 0, function () { var _a, _b, roomid, _c, error, result; return __generator(this, function (_d) { switch (_d.label) { case 0: roomid = this.data.roomid; return [4, wx.$utils.to(wx.$http.request({ url: url, data: (_a = { roomid: roomid }, _a[value[0]] = value[1] ? '1' : '0', _a) }))]; case 1: _c = _d.sent(), error = _c[0], result = _c[1]; if (error) { console.log(error); return [2, false]; } console.log(result); if (result.state == 'success') { console.log('请求成功', [value[0]], value[1]); this.setData((_b = {}, _b["liveRoomData." + value[0]] = value[1], _b)); return [2, true]; } return [2, false]; } }); }); }, getAssistantList: function () { return __awaiter(this, void 0, void 0, function () { var roomid, _a, error, result; return __generator(this, function (_b) { switch (_b.label) { case 0: roomid = this.data.roomid; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/live/getAssistantList.do", data: { roomid: roomid, } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error) { console.log(error); return [2]; } console.log(result); this.setData({ assistantList: result.list, maxAssistantCount: result.maxCount, currentAssistantCount: result.count, }); return [2]; } }); }); }, deleteAssistant: function (event) { var _this = this; var alias = event.currentTarget.dataset.alias; wx.pro.showModal({ title: '提示', content: '确定要移除该助手吗?', }).then(function (res) { console.log(res); if (res.confirm) { console.log('确认'); _this.deleteAssistantRequest(alias); } }); }, deleteAssistantRequest: function (data) { return __awaiter(this, void 0, void 0, function () { var roomid, _a, error, result; return __generator(this, function (_b) { switch (_b.label) { case 0: roomid = this.data.roomid; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/live/removeAssistant.do", data: { roomid: roomid, userName: data } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error) { console.log(error); return [2]; } console.log(result); if (result.state == 'success') { this.getAssistantList(); } return [2]; } }); }); }, checkWechatName: function (event) { var value = event.detail.value.trim(); this.setData({ wechatName: value }); this.checkFieldValue('wechatName', '请输入微信昵称'); }, checkWechatNumber: function (event) { console.log(event); var value = event.detail.value.trim(); this.setData({ wechatNumber: value }); this.checkFieldValue('wechatNumber', '请输入微信号'); }, handleSaveAssistant: function () { return __awaiter(this, void 0, void 0, function () { var _a, roomid, wechatName, wechatNumber, _b, error, result; return __generator(this, function (_c) { switch (_c.label) { case 0: if (!this.checkFieldValue('wechatName', '请输入微信昵称')) return [2]; if (!this.checkFieldValue('wechatNumber', '请输入微信号')) return [2]; _a = this.data, roomid = _a.roomid, wechatName = _a.wechatName, wechatNumber = _a.wechatNumber; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/live/addAssistant.do", data: { roomid: roomid, nickName: wechatName, userName: wechatNumber } }))]; case 1: _b = _c.sent(), error = _b[0], result = _b[1]; if (error) { console.log(error); return [2]; } console.log(result); if (result.state == 'success') { this.closeDialog(); this.setData({ wechatName: '', wechatNumber: '' }); this.getAssistantList(); } return [2]; } }); }); }, checkFieldValue: function (value, msg) { var _a, _b; if (!this.data[value]) { this.setData((_a = {}, _a[value + "Error"] = msg, _a)); return false; } this.setData((_b = {}, _b[value + "Error"] = "", _b)); return true; }, closeDialog: function () { this.setData({ showDialog: false, }); }, showAssistantDialog: function () { this.setData({ showDialog: true }); } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZVJvb21NYW5hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsaXZlUm9vbU1hbmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixZQUFZLEVBQUUsRUFBUztRQUN2QixTQUFTLEVBQUMsRUFBUztRQUNuQixPQUFPLEVBQUMsRUFBRTtRQUNWLE1BQU0sRUFBQyxFQUFFO1FBQ1QsVUFBVSxFQUFFO1lBQ1YsR0FBRyxFQUFFLEtBQUs7WUFDVixHQUFHLEVBQUUsS0FBSztZQUNWLEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsS0FBSztZQUNWLEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLEtBQUs7U0FDWDtRQUNELFVBQVUsRUFBQyxLQUFLO1FBQ2hCLHFCQUFxQixFQUFDLEtBQUs7UUFDM0IsVUFBVSxFQUFDLEVBQUU7UUFDYixZQUFZLEVBQUMsRUFBRTtRQUNmLGVBQWUsRUFBQyxFQUFFO0tBQ25CO0lBRUQsWUFBWTtRQUNMLElBQUEscUNBQVksQ0FBYztRQUMvQixJQUFJLFNBQVMsR0FBSTtZQUNmO2dCQUNFLEdBQUcsRUFBQyxZQUFZLENBQUMsZUFBZTtnQkFDaEMsSUFBSSxFQUFDLFFBQVE7YUFDZDtZQUNEO2dCQUNFLEdBQUcsRUFBQyxZQUFZLENBQUMsZUFBZTtnQkFDaEMsSUFBSSxFQUFDLFVBQVU7YUFDaEI7WUFDRDtnQkFDRSxHQUFHLEVBQUMsWUFBWSxDQUFDLGVBQWU7Z0JBQ2hDLElBQUksRUFBQyxRQUFRO2FBQ2Q7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLFNBQVMsV0FBQTtTQUNWLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFSyxNQUFNLFlBQUMsT0FBTzs7OztnQkFDYixPQUFPLEdBQVcsT0FBTyxRQUFsQixFQUFD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Q0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLE9BQU87Z0JBQ1YsR0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFHLEdBQUc7b0JBQ3RCLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxDQUFDLE9BQU87WUFDVixHQUFDLEtBQUssR0FBRyxPQUFPLElBQUcsRUFBRTtnQkFDckIsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsVUFBVSxFQUFDLEtBQUs7U0FDakIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsVUFBVSxFQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgQ2hlY2tGaWVsZCA9ICd3ZWNoYXROYW1lJ3wnd2VjaGF0TnVtYmVyJ3wnc3ViQW5jaG9yV2VjaGF0Jztcbi8vIOiOt+WPluW6lOeUqOWunuS+i1xuLy8gaW1wb3J0IGFwcE1vZHVsZSBmcm9tICcuLi8uLi9tb2R1bGVzL2FwcCc7XG5QYWdlKHtcbiAgZGF0YToge1xuICAgIGxpdmVSb29tRGF0YToge30gYXMgYW55LFxuICAgIGltYWdlc1VybDpbXSBhcyBhbnksXG4gICAgZG9jY29kZTonJyxcbiAgICByb29taWQ6JycsXG4gICAgbGl2ZVN0YXR1czoge1xuICAgICAgMTAxOiBcIuebtOaSreS4rVwiLFxuICAgICAgMTAyOiBcIuacquW8gOWni1wiLFxuICAgICAgMTAzOiBcIuWbnuaUvlwiLFxuICAgICAgMTA0OiBcIuemgeaSrVwiLFxuICAgICAgMTA1OiBcIuaaguWBnOS4rVwiLFxuICAgICAgMTA2OiBcIuW8guW4uFwiLFxuICAgICAgMTA3OiBcIuW3sui/h+acn1wiLFxuICAgIH0sXG4gICAgc2hvd0RpYWxvZzpmYWxzZSxcbiAgICBpc1Nob3dTdWJBbmNob3JEaWFsb2c6ZmFsc2UsXG4gICAgd2VjaGF0TmFtZTonJyxcbiAgICB3ZWNoYXROdW1iZXI6JycsXG4gICAgc3ViQW5jaG9yV2VjaGF0OicnLFxuICB9LFxuXG4gIGdldEltYWdlc1VybCgpe1xuICAgIGxldCB7bGl2ZVJvb21EYXRhfSA9IHRoaXMuZGF0YTtcbiAgICBsZXQgaW1hZ2VzVXJsID0gIFtcbiAgICAgIHtcbiAgICAgICAgdXJsOmxpdmVSb29tRGF0YS5TaGFyZUltZ1VuaWRVcmwsXG4gICAgICAgIG5hbWU6J+WIhuS6q+WNoeeJh+WwgemdoicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB1cmw6bGl2ZVJvb21EYXRhLkZlZWRzSW1nVW5pZFVybCxcbiAgICAgICAgbmFtZTon6LSt54mp55u05pKt6aKR6YGT5bCB6Z2iJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHVybDpsaXZlUm9vbURhdGEuQ292ZXJJbWdVbmlkVXJsLFxuICAgICAgICBuYW1lOifnm7Tmkq3pl7Tog4zmma/lopknLFxuICAgICAgfVxuICAgIF07XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGltYWdlc1VybFxuICAgIH0pXG4gIH0sXG5cbiAgYXN5bmMgb25Mb2FkKG9wdGlvbnMpIHtcbiAgICBsZXQge2RvY2NvZGUscm9vbWlkfSA9IG9wdGlvbnM7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGRvY2NvZGUsXG4gICAgICByb29taWQsXG4gICAgfSlcbiAgICB0aGlzLmdldExpdmVSb29tRGV0YWlsKCk7XG5cbiAgfSxcbiAgb25TaG93KCkge1xuICAgIHRoaXMuZ2V0R29vZHNMaXN0SW5Sb29tKCk7XG4gICAgdGhpcy5nZXRBc3Npc3RhbnRMaXN0KCk7XG4gIH0sXG4gIGFzeW5jIGdldExpdmVSb29tRGV0YWlsKCl7XG4gICAgbGV0IHtkb2Njb2RlfSA9IHRoaXMuZGF0YTtcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nTGl2ZS9nZXRMaXZlUm9vbURldGFpbEJ5RG9jQ29kZS5kb2AsXG4gICAgICAgIGRhdGE6e1xuICAgICAgICAgIGRvY2NvZGUsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGxpdmVSb29tRGF0YTpyZXN1bHQubGlzdFswXSxcbiAgICAgIHN1YkFuY2hvcldlY2hhdDpyZXN1bHQubGlzdFswXS5TdWJBbmNob3JXZWNoYXRcbiAgICB9KVxuICAgIHRoaXMuZ2V0SW1hZ2VzVXJsKCk7XG4gIH0sXG5cbiAgLy8g5Li75pKt5Ymv5Y+355u45YWzXG4gIGNsb3NlU3ViQW5jaG9yRGlhbG9nKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd1N1YkFuY2hvckRpYWxvZzpmYWxzZSxcbiAgICB9KVxuICB9LFxuICBzaG93U3ViQW5jaG9yRGlhbG9nKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIGlzU2hvd1N1YkFuY2hvckRpYWxvZzp0cnVlXG4gICAgfSlcbiAgfSxcbiAgY2hlY2tTdWJBbmNob3JXZWNoYXQoZXZlbnQ6YW55KXtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlLnRyaW0oKTtcbiAgICB0aGlzLnNldERhdGEoe3N1YkFuY2hvcldlY2hhdDp2YWx1ZX0pXG4gICAgdGhpcy5jaGVja0ZpZWxkVmFsdWUoJ3N1YkFuY2hvcldlY2hhdCcsJ+ivt+i+k+WFpeS4u+aSreWJr+W+ruS/oeWPtycpO1xuICB9LFxuICBhc3luYyBzYXZlU3ViQW5jaG9yV2VjaGF0KCl7XG4gICAgaWYoIXRoaXMuY2hlY2tGaWVsZFZhbHVlKCdzdWJBbmNob3JXZWNoYXQnLCfor7fovpPlhaXkuLvmkq3lia/lvq7kv6Hlj7cnKSkgcmV0dXJuO1xuICAgIGxldCB7cm9vbWlkLHN1YkFuY2hvcldlY2hhdH0gPSB0aGlzLmRhdGFcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2xpdmUvYWRkU3ViQW5jaG9yLmRvYCxcbiAgICAgICAgZGF0YTp7XG4gICAgICAgICAgcm9vbWlkLFxuICAgICAgICAgIHVzZXJOYW1lOnN1YkFuY2hvcldlY2hhdFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgIGlmIChyZXN1bHQucXJjb2RlSW1nKXtcbiAgICAgIGxldCBhdXRoZW50aWNhdGlvbiA9dGhpcy5zZWxlY3RDb21wb25lbnQoJyNteS1hbmNob3ItYXV0aGVudGljYXRpb24nKTtcbiAgICAgIGF1dGhlbnRpY2F0aW9uLnNob3dRckNvZGVEaWFsb2coKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5zdGF0ZT09J3N1Y2Nlc3MnKXtcbiAgICAgIHRoaXMuY2xvc2VTdWJBbmNob3JEaWFsb2coKVxuICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgW2BsaXZlUm9vbURhdGEuU3ViQW5jaG9yV2VjaGF0YF06c3ViQW5jaG9yV2VjaGF0XG4gICAgICB9KVxuICAgIH1cbiAgfSxcbiAgYXN5bmMgZGVsZXRlU3ViQW5jaG9yV2VjaGF0KCl7XG4gICAgd3gucHJvLnNob3dNb2RhbCh7XG4gICAgICB0aXRsZTogJ+aPkOekuicsXG4gICAgICBjb250ZW50OiAn56Gu5a6a6KaB5Yig6Zmk5Li75pKt5Ymv5Y+35ZCX77yfJyxcbiAgICB9KS50aGVuKChyZXM6YW55KSA9PiB7XG4gICAgICAvLyBvbiBjbG9zZVxuICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgIGlmIChyZXMuY29uZmlybSl7XG4gICAgICAgIGNvbnNvbGUubG9nKCfnoa7orqQnKTtcbiAgICAgICAgdGhpcy5kZWxldGVTdWJBbmNob3JXZWNoYXRSZXF1ZXN0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgfSxcbiAgYXN5bmMgZGVsZXRlU3ViQW5jaG9yV2VjaGF0UmVxdWVzdCgpe1xuICAgIGxldCB7cm9vbWlkfSA9IHRoaXMuZGF0YVxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvbGl2ZS9kZWxldGVTdWJBbmNob3IuZG9gLFxuICAgICAgICBkYXRhOntcbiAgICAgICAgICByb29taWQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICAgIGlmIChlcnJvcil7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XG4gICAgaWYgKHJlc3VsdC5zdGF0ZT09J3N1Y2Nlc3MnKXtcbiAgICAgIHRoaXMuY2xvc2VTdWJBbmNob3JEaWFsb2coKVxuICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgc3ViQW5jaG9yV2VjaGF0OicnLFxuICAgICAgICBbYGxpdmVSb29tRGF0YS5TdWJBbmNob3JXZWNoYXRgXTonJ1xuICAgICAgfSlcbiAgICB9XG4gIH0sXG5cbiAgLy8g5rW35oql55u45YWzXG4gIGFzeW5jIGNyZWF0ZVBvc3Rlcigpe1xuICAgIC8vIGxldCB7cm9vbWlkfSA9IHRoaXMuZGF0YTtcbiAgICAvLyBhd2FpdCB0aGlzLmdldFNoYXJlZENvZGUoKTtcbiAgICBsZXQgcG9zdGVyID10aGlzLnNlbGVjdENvbXBvbmVudCgnI215LXBvc3Rlci1jcmVhdG9yJyk7XG4gICAgcG9zdGVyLmRyYXdQaWMoKTtcbiAgfSxcblxuICAvLyDnm7Tmkq3pl7TllYblk4Hnm7jlhbNcbiAgYXN5bmMgZ2V0R29vZHNMaXN0SW5Sb29tKCl7XG4gICAgbGV0IHtyb29taWR9ID0gdGhpcy5kYXRhO1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvcGFuaWNCdXlpbmdMaXZlL2dvb2RzTGlzdEluUm9vbS5kb2AsXG4gICAgICAgIGRhdGE6e1xuICAgICAgICAgIHJvb21pZCxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgZ29vZHNMaXN0OnJlc3VsdC5saXN0XG4gICAgfSlcbiAgfSxcblxuICBhc3luYyBwdXNoR29vZHNJbkxpdmUoZXZlbnQ6YW55KXtcbiAgICBsZXQge3Jvb21pZH0gPSB0aGlzLmRhdGE7XG4gICAgbGV0IHtnb29kc2lkfSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuZGF0YXNldDtcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2xpdmUvZ29vZHNQdXNoSW5Sb29tLmRvYCxcbiAgICAgICAgZGF0YTp7XG4gICAgICAgICAgcm9vbWlkLFxuICAgICAgICAgIGdvb2RzaWRcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICBpZiAocmVzdWx0LnN0YXRlPT0nc3VjY2Vzcycpe1xuICAgICAgd3guc2hvd1RvYXN0KHt0aXRsZTon5o6o6YCB5oiQ5YqfJ30pXG4gICAgfVxuICB9LFxuXG4gIC8vIOW8gOWFs+ebuOWFs1xuICBhc3luYyBvbkNoYW5nZUZlZWRzUHVibGljKHtkZXRhaWx9OmFueSl7XG4gICAgY29uc29sZS5sb2coJ+aYr+WQpuW8gOWQr+WumOaWueaUtuW9le+8micsZGV0YWlsKTtcbiAgICAvLyB0aGlzLnNldERhdGEoeyBpc0ZlZWRzUHVibGljOiBkZXRhaWwgfSk7XG4gICAgdGhpcy5zZW5kQ2hhbmdlc1N3aXRjaFJlcXVlc3QoJy9zaG9wcGluZy9saXZlL3VwZGF0ZUZlZWRQdWJsaWMuZG8nLFsnaXNGZWVkc1B1YmxpYycsZGV0YWlsXSk7XG4gIH0sXG4gIG9uQ2hhbmdlQ2xvc2VSZXBsYXkoe2RldGFpbH06YW55KXtcbiAgICBjb25zb2xlLmxvZygn5piv5ZCm5YWz6Zet5Zue5pS+77yaJyxkZXRhaWwpO1xuICAgIC8vIHRoaXMuc2V0RGF0YSh7IGlzRmVlZHNQdWJsaWM6IGRldGFpbCB9KTtcbiAgICB0aGlzLnNlbmRDaGFuZ2VzU3dpdGNoUmVxdWVzdCgnL3Nob3BwaW5nL2xpdmUvdXBkYXRlUmVwbGF5LmRvJyxbJ2lzQ2xvc2VSZXBsYXknLCFkZXRhaWxdKTtcbiAgfSxcbiAgLy8gb25DaGFuZ2VDbG9zZUtmKHtkZXRhaWx9OmFueSl7XG4gIC8vICAgY29uc29sZS5sb2coJ+aYr+WQpuWFs+mXreWuouacje+8micsZGV0YWlsKTtcbiAgLy8gICAvLyB0aGlzLnNldERhdGEoeyBpc0ZlZWRzUHVibGljOiBkZXRhaWwgfSk7XG4gIC8vICAgdGhpcy5zZW5kQ2hhbmdlc1N3aXRjaFJlcXVlc3QoJy9zaG9wcGluZy9saXZlL3VwZGF0ZUtmLmRvJyxbJ2lzQ2xvc2VLZicsZGV0YWlsXSk7XG4gIC8vIH0sXG4gIG9uQ2hhbmdlQ2xvc2VDb21tZW50KHtkZXRhaWx9OmFueSl7XG4gICAgY29uc29sZS5sb2coJ+aYr+WQpuWFs+mXreemgeiogCcsZGV0YWlsKTtcbiAgICAvLyB0aGlzLnNldERhdGEoeyBpc0ZlZWRzUHVibGljOiBkZXRhaWwgfSk7XG4gICAgdGhpcy5zZW5kQ2hhbmdlc1N3aXRjaFJlcXVlc3QoJy9zaG9wcGluZy9saXZlL3VwZGF0ZUNvbW1lbnQuZG8nLFsnaXNDbG9zZUNvbW1lbnQnLGRldGFpbF0pO1xuICB9LFxuICAvLyBvbkNoYW5nZUNsb3NlR29vZHMoe2RldGFpbH06YW55KXtcbiAgLy8gICBjb25zb2xlLmxvZygn5piv5ZCm5YWz6Zet5ZWG5ZOB6LSn5p6277yaJyxkZXRhaWwpO1xuICAvLyAgIC8vIHRoaXMuc2V0RGF0YSh7IGlzRmVlZHNQdWJsaWM6IGRldGFpbCB9KTtcbiAgLy8gICB0aGlzLnNlbmRDaGFuZ2VzU3dpdGNoUmVxdWVzdCgnL3Nob3BwaW5nL2xpdmUvdXBkYXRlR29vZHNUb09uU2FsZUluUm9vbS5kbycsWydpc0ZlZWRzUHVibGljJyxkZXRhaWxdKTtcbiAgLy8gfSxcblxuICBhc3luYyBzZW5kQ2hhbmdlc1N3aXRjaFJlcXVlc3QodXJsOnN0cmluZyx2YWx1ZTphbnkpe1xuICAgIGxldCB7cm9vbWlkfSA9IHRoaXMuZGF0YTtcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XG4gICAgICAgIHVybCxcbiAgICAgICAgZGF0YTp7XG4gICAgICAgICAgcm9vbWlkLFxuICAgICAgICAgIFt2YWx1ZVswXV06dmFsdWVbMV0/JzEnOicwJyxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICBpZiAocmVzdWx0LnN0YXRlPT0nc3VjY2Vzcycpe1xuICAgICAgY29uc29sZS5sb2coJ+ivt+axguaIkOWKnycsW3ZhbHVlWzBdXSx2YWx1ZVsxXSk7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBbYGxpdmVSb29tRGF0YS4ke3ZhbHVlWzBdfWBdOnZhbHVlWzFdLFxuICAgICAgfSlcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cblxuICAvL+ebtOaSreWwj+WKqeaJi+ebuOWFs1xuICBhc3luYyBnZXRBc3Npc3RhbnRMaXN0KCl7XG4gICAgbGV0IHtyb29taWR9ID0gdGhpcy5kYXRhO1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvbGl2ZS9nZXRBc3Npc3RhbnRMaXN0LmRvYCxcbiAgICAgICAgZGF0YTp7XG4gICAgICAgICAgcm9vbWlkLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBhc3Npc3RhbnRMaXN0OnJlc3VsdC5saXN0LFxuICAgICAgbWF4QXNzaXN0YW50Q291bnQ6IHJlc3VsdC5tYXhDb3VudCxcbiAgICAgIGN1cnJlbnRBc3Npc3RhbnRDb3VudDogcmVzdWx0LmNvdW50LFxuICAgIH0pXG4gIH0sXG4gIGRlbGV0ZUFzc2lzdGFudChldmVudDphbnkpe1xuICAgIGxldCB7YWxpYXN9ID0gZXZlbnQuY3VycmVudFRhcmdldC5kYXRhc2V0O1xuICAgIHd4LnByby5zaG93TW9kYWwoe1xuICAgICAgdGl0bGU6ICfmj5DnpLonLFxuICAgICAgY29udGVudDogJ+ehruWumuimgeenu+mZpOivpeWKqeaJi+WQl++8nycsXG4gICAgfSkudGhlbigocmVzOmFueSkgPT4ge1xuICAgICAgLy8gb24gY2xvc2VcbiAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICBpZiAocmVzLmNvbmZpcm0pe1xuICAgICAgICBjb25zb2xlLmxvZygn56Gu6K6kJyk7XG4gICAgICAgIHRoaXMuZGVsZXRlQXNzaXN0YW50UmVxdWVzdChhbGlhcylcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgYXN5bmMgZGVsZXRlQXNzaXN0YW50UmVxdWVzdChkYXRhOnN0cmluZyl7XG4gICAgbGV0IHtyb29taWR9ID0gdGhpcy5kYXRhO1xuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvbGl2ZS9yZW1vdmVBc3Npc3RhbnQuZG9gLFxuICAgICAgICBkYXRhOntcbiAgICAgICAgICByb29taWQsXG4gICAgICAgICAgdXNlck5hbWU6ZGF0YVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgICBpZiAoZXJyb3Ipe1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xuICAgIGlmIChyZXN1bHQuc3RhdGU9PSdzdWNjZXNzJyl7XG4gICAgICB0aGlzLmdldEFzc2lzdGFudExpc3QoKVxuICAgIH1cbiAgfSxcbiAgY2hlY2tXZWNoYXROYW1lKGV2ZW50OmFueSl7XG4gICAgbGV0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlLnRyaW0oKTtcbiAgICB0aGlzLnNldERhdGEoe3dlY2hhdE5hbWU6dmFsdWV9KVxuICAgIHRoaXMuY2hlY2tGaWVsZFZhbHVlKCd3ZWNoYXROYW1lJywn6K+36L6T5YWl5b6u5L+h5pi156ewJyk7XG4gIH0sXG4gIGNoZWNrV2VjaGF0TnVtYmVyKGV2ZW50OmFueSl7XG4gICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgIGxldCB2YWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZS50cmltKCk7XG4gICAgdGhpcy5zZXREYXRhKHt3ZWNoYXROdW1iZXI6dmFsdWV9KVxuICAgIHRoaXMuY2hlY2tGaWVsZFZhbHVlKCd3ZWNoYXROdW1iZXInLCfor7fovpPlhaXlvq7kv6Hlj7cnKTtcbiAgfSxcbiAgYXN5bmMgaGFuZGxlU2F2ZUFzc2lzdGFudCgpe1xuICAgIGlmKCF0aGlzLmNoZWNrRmllbGRWYWx1ZSgnd2VjaGF0TmFtZScsJ+ivt+i+k+WFpeW+ruS/oeaYteensCcpKSByZXR1cm47XG4gICAgaWYoIXRoaXMuY2hlY2tGaWVsZFZhbHVlKCd3ZWNoYXROdW1iZXInLCfor7fovpPlhaXlvq7kv6Hlj7cnKSkgcmV0dXJuO1xuICAgIGxldCB7cm9vbWlkLHdlY2hhdE5hbWUsd2VjaGF0TnVtYmVyfSA9IHRoaXMuZGF0YVxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvbGl2ZS9hZGRBc3Npc3RhbnQuZG9gLFxuICAgICAgICBkYXRhOntcbiAgICAgICAgICByb29taWQsXG4gICAgICAgICAgbmlja05hbWU6d2VjaGF0TmFtZSxcbiAgICAgICAgICB1c2VyTmFtZTp3ZWNoYXROdW1iZXJcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICAgaWYgKGVycm9yKXtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcbiAgICBpZiAocmVzdWx0LnN0YXRlPT0nc3VjY2Vzcycpe1xuICAgICAgdGhpcy5jbG9zZURpYWxvZygpXG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICB3ZWNoYXROYW1lOicnLFxuICAgICAgICB3ZWNoYXROdW1iZXI6JydcbiAgICAgIH0pXG4gICAgICB0aGlzLmdldEFzc2lzdGFudExpc3QoKVxuICAgIH1cbiAgfSxcbiAgY2hlY2tGaWVsZFZhbHVlKHZhbHVlOkNoZWNrRmllbGQsbXNnOnN0cmluZyl7XG4gICAgaWYgKCF0aGlzLmRhdGFbdmFsdWVdKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBbdmFsdWUgKyBcIkVycm9yXCJdOiBtc2csXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIFt2YWx1ZSArIFwiRXJyb3JcIl06IFwiXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGNsb3NlRGlhbG9nKCl7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIHNob3dEaWFsb2c6ZmFsc2UsXG4gICAgfSlcbiAgfSxcbiAgc2hvd0Fzc2lzdGFudERpYWxvZygpe1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBzaG93RGlhbG9nOnRydWVcbiAgICB9KVxuICB9XG59KVxuIl19