"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 }; } }; Component({ options: { addGlobalClass: true, multipleSlots: true }, properties: { liveRoom: { type: Object, value: {}, observer: function (newVal) { console.log('监听liveRoom的newVal', newVal); if (JSON.stringify(newVal) != '{}') { this.setData({ isLive: true }); } } }, detail: { type: Object, value: {}, observer: function (newVal) { console.log('监听detail的newVal', newVal); if (JSON.stringify(newVal) != '{}') { this.setData({ isDetail: true }); } } }, sellerList: { type: Array, value: [] }, }, data: { imgDraw: {}, sharePath: '', visible: false, qrCodeUrl: '', isLive: false, isDetail: false }, lifetimes: { ready: function () { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { return [2]; }); }); } }, pageLifetimes: { show: function () { }, hide: function () { } }, methods: { getLiveRoomQrCode: 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.liveRoom.RoomId; console.log(roomid); return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/live/getSharedCode.do", data: { roomid: roomid } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error || result.state !== 'success') { console.log(error); wx.showToast({ title: '获取二维码失败,请稍后再试', icon: 'none', }); return [2, false]; } console.log(result); this.setData({ qrCodeUrl: result.cdnUrl }); return [2, true]; } }); }); }, getQrCode: function () { return __awaiter(this, void 0, void 0, function () { var _a, error, result; return __generator(this, function (_b) { switch (_b.label) { case 0: return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/poster/getQrCodeForPoster.do", data: { QrCodeType: 80, doccode: this.data.detail.doccode, SellerOpenId: wx.globalData.FromOpenId } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error || result.state !== 'success') { console.log(error); wx.showToast({ title: '获取二维码失败,请稍后再试', icon: 'none', }); return [2, false]; } console.log(result); this.setData({ qrCodeUrl: result.QrCode }); return [2, true]; } }); }); }, handleClose: function () { this.setData({ visible: false }); this.triggerEvent('close'); }, clearPoster: function () { this.setData({ sharePath: '' }); }, drawPic: function () { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (this.data.sharePath) { this.setData({ visible: true }); this.triggerEvent('initData'); return [2]; } if (!this.data.isDetail) return [3, 2]; return [4, this.getQrCode()]; case 1: if (!(_a.sent())) return [2]; _a.label = 2; case 2: if (!this.data.isLive) return [3, 4]; return [4, this.getLiveRoomQrCode()]; case 3: if (!(_a.sent())) return [2]; _a.label = 4; case 4: if (!this.data.qrCodeUrl) { wx.showToast({ title: '获取二维码失败,请稍后再试', icon: 'none', }); return [2]; } wx.showLoading({ title: '生成中' }); this.setData({ imgDraw: this.getImgDraw() }); return [2]; } }); }); }, getImgDraw: function () { var _a = this.data, detail = _a.detail, liveRoom = _a.liveRoom, sellerList = _a.sellerList, qrCodeUrl = _a.qrCodeUrl; var isLive = this.data.isLive; var isDetail = this.data.isDetail; var promotionsType = { 710802: '秒杀价', 710803: '报名价', 710804: '团购价', }; console.log(detail, liveRoom, sellerList, qrCodeUrl, isLive); var imgDraw = {}; var imgDrawPromotions = { "width": "750rpx", "height": "1196rpx", "background": "#fff", "views": [ { "type": "image", "url": "/assets/images/promotions-poster-bg.jpg", "css": { "width": "750rpx", "height": "1196rpx", "top": "0px", "left": "0px" } }, { "type": "image", "url": sellerList[0].sellerWeiXinAvatarUrl || '/assets/images/default-avatar.png', "css": { "width": "100rpx", "height": "100rpx", "top": "22rpx", "left": "36rpx", "borderRadius": "100rpx" } }, { "type": "text", "text": sellerList[0].sellerName || '昵称', "css": { "color": "#fff", "top": "34rpx", "left": "160rpx", "fontSize": "32rpx", "fontWeight": "bold", "textAlign": "left" } }, { "type": "text", "text": "邀请您参与活动", "css": { "color": "#fff", "top": "80rpx", "left": "160rpx", "fontSize": "28rpx", "textAlign": "left" } }, { "type": "image", "url": detail.coverImageUrl[0] || '', "css": { "width": "600rpx", "height": "600rpx", "top": "182rpx", "left": "76rpx", "borderRadius": "10rpx", } }, { "type": "text", "text": "¥", "css": { "color": "#f23232", "top": "820rpx", "left": "76rpx", "fontSize": "28rpx", "textAlign": "left" } }, { "type": "text", "text": detail.salesPrice || 0, "css": { "color": "#f23232", "top": "808rpx", "left": "108rpx", "fontSize": "44rpx", "fontWeight": "bold", "textAlign": "left" } }, { "type": "text", "text": promotionsType[detail.formId] || '', "css": { "color": "#f23232", "background": "rgb(249, 230, 231)", "width": "110rpx", "height": "35rpx", "top": "820rpx", "left": 130 + (detail.salesPrice.toString().length * 25) + "rpx", "borderRadius": "20rpx", "padding": "5rpx", "fontSize": "28rpx", "lineHeight": "35rpx", "textAlign": "center" } }, { "type": "text", "text": detail.formId == 710803 ? '' : '价格', "css": { "color": "#999", "top": "884rpx", "left": "84rpx", "fontSize": "28rpx", "textAlign": "left" } }, { "type": "text", "text": detail.formId == 710803 ? '' : "\uFFE5" + (detail.originalPrice || 0), "css": { "color": "#999", "top": "885rpx", "left": "150rpx", "fontSize": "24rpx", "textDecoration": "line-through", "textAlign": "left" } }, { "type": "text", "text": "限时优惠", "css": { "color": "#f23232", "width": "135rpx", "height": "40rpx", "top": detail.formId == 710803 ? '885rpx' : "946rpx", "left": "88rpx", "padding": "6rpx", "borderRadius": "5rpx", "borderWidth": "2rpx", "borderColor": "#fde4e7", "fontSize": "28rpx", "lineHeight": "40rpx", "textAlign": "center" } }, { "type": "text", "text": "\u5DF2\u552E " + (detail.orderTimes || 0), "css": { "color": "#999", "width": "200rpx", "top": "820rpx", "left": "476rpx", "fontSize": "28rpx", "textAlign": "right" } }, { "type": "text", "text": "\u3010" + wx.globalData.settings.name + "\u3011" + detail.title || '活动标题', "css": { "color": "#333", "width": "360rpx", "top": detail.formId == 710803 ? '980rpx' : "1020rpx", "left": "76rpx", "fontSize": "36rpx", "maxLines": "2", "lineHeight": '50rpx', "textAlign": "left" } }, { "type": "image", "url": qrCodeUrl, "css": { "width": "200rpx", "height": "100px", "top": "888rpx", "left": "476rpx", } }, { "type": "text", "text": "长按扫码识别参与~", "css": { "color": "#666", "top": "1105rpx", "left": "476rpx", "fontSize": "24rpx", "textAlign": "left" } } ] }; var imgDrawLive = { width: '750rpx', height: '1334rpx', background: '#f5f5f5', views: [ { "type": "image", "url": "/assets/images/poster-bg.png", "css": { "width": "750rpx", "height": "1334rpx", "top": "0px", "left": "0px", "rotate": "0", } }, { type: 'image', url: liveRoom.ShareImgUnidUrl, css: { top: '10rpx', left: '10rpx', right: '10rpx', width: '730rpx', height: '630rpx', borderRadius: '16rpx' }, }, { type: 'image', url: liveRoom.AnchorImgUnidUrl || '/assets/images/default-avatar.png', css: { top: '594rpx', left: '328rpx', width: '96rpx', height: '96rpx', borderWidth: '6rpx', borderColor: '#FFF', borderRadius: '96rpx' } }, { type: 'text', text: liveRoom.AnchorName || '昵称', css: { top: '722rpx', fontSize: '28rpx', left: '375rpx', align: 'center', color: '#3c3c3c' } }, { type: 'text', text: "\u9080\u8BF7\u60A8\u53C2\u4E0E\u76F4\u64AD", css: { top: '766rpx', left: '375rpx', align: 'center', fontSize: '28rpx', color: '#3c3c3c' } }, { type: 'text', text: ((liveRoom.RoomName) || '活动标题') + " ", css: { top: '820rpx', left: '375rpx', maxLines: 1, align: 'center', fontWeight: 'bold', fontSize: '44rpx', color: '#3c3c3c' } }, { type: 'text', text: "", css: { top: '765rpx', left: '375rpx', maxLines: 1, align: 'center', fontWeight: 'bold', fontSize: '44rpx', color: '#f23232' } }, { type: 'image', url: qrCodeUrl, css: { top: '970rpx', left: '390rpx', width: '300rpx', height: '300rpx' } }, { type: 'text', text: "\u957F\u6309\u4E8C\u7EF4\u7801\u8BC6\u522B\u53C2\u4E0E", css: { top: '1100rpx', left: '55rpx', fontSize: '32rpx', color: '#3c3c3c' } }, ] }; if (isLive) { imgDraw = imgDrawLive; } if (isDetail) { imgDraw = imgDrawPromotions; } return imgDraw; }, onImgErr: function () { wx.hideLoading(); wx.showToast({ title: '生成分享图失败,请刷新页面重试' }); }, onImgOK: function (e) { wx.hideLoading(); this.setData({ sharePath: e.detail.path, visible: true, }); this.triggerEvent('initData'); }, preventDefault: function () { }, handleSavePhoto: function () { var _this = this; wx.showLoading({ title: '正在保存...', mask: true }); wx.saveImageToPhotosAlbum({ filePath: this.data.sharePath, success: function () { wx.showToast({ title: '保存成功' }); setTimeout(function () { _this.setData({ visible: false }); _this.triggerEvent('close'); }, 300); }, fail: function () { wx.getSetting({ success: function (res) { var authSetting = res.authSetting; if (!authSetting['scope.writePhotosAlbum']) { wx.showModal({ title: '提示', content: '您未开启保存图片到相册的权限,请点击确定去开启权限!', success: function (res) { if (res.confirm) { wx.openSetting(); } } }); } } }); setTimeout(function () { wx.hideLoading(); _this.setData({ visible: false }); _this.triggerEvent('close'); }, 300); } }); } } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLENBQUM7SUFDUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUVWLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLE1BQU0sRUFBQyxJQUFJO3FCQUNaLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELE1BQU0sRUFBQztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELFVBQVUsRUFBQztZQUNULElBQUksRUFBRSxLQUFLO1lBQ1gsS0FBSyxFQUFFLEVBQUU7U0FDVjtLQU1GO0lBQ0QsSUFBSSxFQUFFO1FBQ0osT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFL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Q0FDZixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7eUNBQ2pCO29DQUNILENBQUM7aUNBQ0YsQ0FBQyxDQUFBOzZCQUNIO3dCQUNILENBQUM7cUJBQ0YsQ0FBQyxDQUFBO29CQUNGLFVBQVUsQ0FBQzt3QkFDVCxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7d0JBQ2hCLEtBQUksQ0FBQyxPQUFPLENBQUM7NEJBQ1gsT0FBTyxFQUFFLEtBQUs7eUJBQ2YsQ0FBQyxDQUFBO3dCQUNGLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7b0JBQzVCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDVCxDQUFDO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUNGO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiQ29tcG9uZW50KHtcclxuICBvcHRpb25zOiB7XHJcbiAgICBhZGRHbG9iYWxDbGFzczp0cnVlLFxyXG4gICAgbXVsdGlwbGVTbG90czogdHJ1ZSAvLyDlnKjnu4Tku7blrprkuYnml7bnmoTpgInpobnkuK3lkK/nlKjlpJpzbG905pSv5oyBXHJcbiAgfSxcclxuICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAvL+WxnuaAp+WAvOWPr+S7peWcqOe7hOS7tuS9v+eUqOaXtuaMh+WumlxyXG4gICAgbGl2ZVJvb206IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICB2YWx1ZToge30sXHJcbiAgICAgIG9ic2VydmVyKG5ld1ZhbCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCfnm5HlkKxsaXZlUm9vbeeahG5ld1ZhbCcsbmV3VmFsKTtcclxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobmV3VmFsKSAhPSAne30nKXtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIGlzTGl2ZTp0cnVlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGRldGFpbDp7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgdmFsdWU6IHt9LFxyXG4gICAgICBvYnNlcnZlcihuZXdWYWwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55uR5ZCsZGV0YWls55qEbmV3VmFsJyxuZXdWYWwpO1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdWYWwpICE9ICd7fScpe1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgaXNEZXRhaWw6IHRydWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2VsbGVyTGlzdDp7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICB2YWx1ZTogW11cclxuICAgIH0sXHJcblxyXG4gICAgLy8gdmlzaWJsZToge1xyXG4gICAgLy8gICB0eXBlOiBCb29sZWFuLFxyXG4gICAgLy8gICB2YWx1ZTogZmFsc2UsXHJcbiAgICAvLyB9XHJcbiAgfSxcclxuICBkYXRhOiB7XHJcbiAgICBpbWdEcmF3OiB7fSwgLy/nu5jliLblm77niYfnmoTlpKflr7nosaFcclxuICAgIHNoYXJlUGF0aDogJycsIC8v55Sf5oiQ55qE5YiG5Lqr5Zu+XHJcbiAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgIHFyQ29kZVVybDonJyxcclxuICAgIGlzTGl2ZTpmYWxzZSwgLy/mmK/lkKbnm7Tmkq1cclxuICAgIGlzRGV0YWlsOmZhbHNlIC8v5piv5ZCm55u05pKtXHJcbiAgfSxcclxuICBsaWZldGltZXM6e1xyXG4gICAgYXN5bmMgcmVhZHkoKXtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICBwYWdlTGlmZXRpbWVzOiB7XHJcbiAgICBzaG93OiBmdW5jdGlvbigpIHtcclxuICAgICAgLy8g6aG16Z2i6KKr5bGV56S6XHJcblxyXG4gICAgfSxcclxuICAgIGhpZGUoKSB7XHJcblxyXG4gICAgfVxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgYXN5bmMgZ2V0TGl2ZVJvb21RckNvZGUoKXtcclxuICAgICAgbGV0IHJvb21pZCA9IHRoaXMuZGF0YS5saXZlUm9vbS5Sb29tSWQ7XHJcbiAgICAgIGNvbnNvbGUubG9nKHJvb21pZCk7XHJcbiAgICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgICB1cmw6YC9zaG9wcGluZy9saXZlL2dldFNoYXJlZENvZGUuZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIHJvb21pZFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgaWYgKGVycm9yfHxyZXN1bHQuc3RhdGUhPT0nc3VjY2Vzcycpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgdGl0bGU6ICfojrflj5bkuoznu7TnoIHlpLHotKXvvIzor7fnqI3lkI7lho3or5UnLFxyXG4gICAgICAgICAgaWNvbjonbm9uZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBxckNvZGVVcmw6cmVzdWx0LmNkblVybFxyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICBhc3luYyBnZXRRckNvZGUoKXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL3Bvc3Rlci9nZXRRckNvZGVGb3JQb3N0ZXIuZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFFyQ29kZVR5cGU6ODAsXHJcbiAgICAgICAgICAgIGRvY2NvZGU6dGhpcy5kYXRhLmRldGFpbC5kb2Njb2RlLFxyXG4gICAgICAgICAgICBTZWxsZXJPcGVuSWQ6d3guZ2xvYmFsRGF0YS5Gcm9tT3BlbklkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBpZiAoZXJyb3J8fHJlc3VsdC5zdGF0ZSE9PSdzdWNjZXNzJyl7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHFyQ29kZVVybDpyZXN1bHQuUXJDb2RlXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGhhbmRsZUNsb3NlKCkge1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHZpc2libGU6IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdjbG9zZScpXHJcbiAgICB9LFxyXG4gICAgY2xlYXJQb3N0ZXIoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2hhcmVQYXRoOicnXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgYXN5bmMgZHJhd1BpYygpIHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5zaGFyZVBhdGgpIHsgLy/lpoLmnpzlt7Lnu4/nu5jliLbov4fkuobmnKzlnLDkv53lrZjmnInlm77niYfkuI3pnIDopoHph43mlrDnu5jliLZcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgdmlzaWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2luaXREYXRhJylcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXRhLmlzRGV0YWlsKXtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuZ2V0UXJDb2RlKCkpIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5kYXRhLmlzTGl2ZSl7XHJcbiAgICAgICAgaWYgKCFhd2FpdCB0aGlzLmdldExpdmVSb29tUXJDb2RlKCkpIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuZGF0YS5xckNvZGVVcmwpIHtcclxuICAgICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgdGl0bGU6ICfojrflj5bkuoznu7TnoIHlpLHotKXvvIzor7fnqI3lkI7lho3or5UnLFxyXG4gICAgICAgICAgaWNvbjonbm9uZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgd3guc2hvd0xvYWRpbmcoe1xyXG4gICAgICAgIHRpdGxlOiAn55Sf5oiQ5LitJ1xyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpbWdEcmF3OiB0aGlzLmdldEltZ0RyYXcoKVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuXHJcbiAgICAgZ2V0SW1nRHJhdygpIHtcclxuICAgICAgbGV0IHtkZXRhaWwsbGl2ZVJvb20sc2VsbGVyTGlzdCxxckNvZGVVcmx9ID0gdGhpcy5kYXRhO1xyXG4gICAgICBsZXQgaXNMaXZlID0gdGhpcy5kYXRhLmlzTGl2ZTtcclxuICAgICAgbGV0IGlzRGV0YWlsID0gdGhpcy5kYXRhLmlzRGV0YWlsO1xyXG4gICAgICBsZXQgcHJvbW90aW9uc1R5cGU6YW55ID0ge1xyXG4gICAgICAgIDcxMDgwMjogJ+enkuadgOS7tycsIC8v56eS5p2AXHJcbiAgICAgICAgNzEwODAzOiAn5oql5ZCN5Lu3JywgLy/miqXlkI1cclxuICAgICAgICA3MTA4MDQ6ICflm6LotK3ku7cnLCAvL+Wboui0rVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKGRldGFpbCxsaXZlUm9vbSxzZWxsZXJMaXN0LHFyQ29kZVVybCxpc0xpdmUpO1xyXG4gICAgICBsZXQgaW1nRHJhdyA9IHt9O1xyXG4gICAgICBsZXQgaW1nRHJhd1Byb21vdGlvbnMgPSB7XHJcbiAgICAgICAgXCJ3aWR0aFwiOiBcIjc1MHJweFwiLFxyXG4gICAgICAgIFwiaGVpZ2h0XCI6IFwiMTE5NnJweFwiLFxyXG4gICAgICAgIFwiYmFja2dyb3VuZFwiOiBcIiNmZmZcIixcclxuICAgICAgICBcInZpZXdzXCI6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogXCIvYXNzZXRzL2ltYWdlcy9wcm9tb3Rpb25zLXBvc3Rlci1iZy5qcGdcIixcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCI3NTBycHhcIixcclxuICAgICAgICAgICAgICBcImhlaWdodFwiOiBcIjExOTZycHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjBweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjBweFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlXCIsXHJcbiAgICAgICAgICAgIFwidXJsXCI6IHNlbGxlckxpc3RbMF0uc2VsbGVyV2VpWGluQXZhdGFyVXJsfHwnL2Fzc2V0cy9pbWFnZXMvZGVmYXVsdC1hdmF0YXIucG5nJyxcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIxMDBycHhcIixcclxuICAgICAgICAgICAgICBcImhlaWdodFwiOiBcIjEwMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidG9wXCI6IFwiMjJycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCIzNnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiMTAwcnB4XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICBcInRleHRcIjogc2VsbGVyTGlzdFswXS5zZWxsZXJOYW1lfHwn5pi156ewJyxcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjZmZmXCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIzNHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjE2MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIzMnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFdlaWdodFwiOiBcImJvbGRcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImxlZnRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBcIumCgOivt+aCqOWPguS4jua0u+WKqFwiLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiNmZmZcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjgwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiMTYwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJmb250U2l6ZVwiOiBcIjI4cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogZGV0YWlsLmNvdmVySW1hZ2VVcmxbMF18fCcnLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjYwMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiNjAwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIxODJycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCI3NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiMTBycHhcIixcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICBcInRleHRcIjogXCLvv6VcIixcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjZjIzMjMyXCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCI4MjBycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCI3NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwibGVmdFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcclxuICAgICAgICAgICAgXCJ0ZXh0XCI6IGRldGFpbC5zYWxlc1ByaWNlfHwwLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiNmMjMyMzJcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjgwOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjEwOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCI0NHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFdlaWdodFwiOiBcImJvbGRcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImxlZnRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBwcm9tb3Rpb25zVHlwZVtkZXRhaWwuZm9ybUlkXXx8JycsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiI2YyMzIzMlwiLFxyXG4gICAgICAgICAgICAgIFwiYmFja2dyb3VuZFwiOiBcInJnYigyNDksIDIzMCwgMjMxKVwiLFxyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIxMTBycHhcIixcclxuICAgICAgICAgICAgICBcImhlaWdodFwiOiBcIjM1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCI4MjBycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogYCR7MTMwICsgKGRldGFpbC5zYWxlc1ByaWNlLnRvU3RyaW5nKCkubGVuZ3RoKjI1KX1ycHhgLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiMjBycHhcIixcclxuICAgICAgICAgICAgICBcInBhZGRpbmdcIjogXCI1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJmb250U2l6ZVwiOiBcIjI4cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsaW5lSGVpZ2h0XCI6IFwiMzVycHhcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImNlbnRlclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcclxuICAgICAgICAgICAgXCJ0ZXh0XCI6IGRldGFpbC5mb3JtSWQ9PTcxMDgwMz8nJzon5Lu35qC8JyxcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjOTk5XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCI4ODRycHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCI4NHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwibGVmdFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcclxuICAgICAgICAgICAgXCJ0ZXh0XCI6IGRldGFpbC5mb3JtSWQ9PTcxMDgwMz8nJzpg77+lJHtkZXRhaWwub3JpZ2luYWxQcmljZXx8MH1gLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiM5OTlcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjg4NXJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjE1MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyNHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dERlY29yYXRpb25cIjogXCJsaW5lLXRocm91Z2hcIixcclxuICAgICAgICAgICAgICBcInRleHRBbGlnblwiOiBcImxlZnRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBcIumZkOaXtuS8mOaDoFwiLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjb2xvclwiOiBcIiNmMjMyMzJcIixcclxuICAgICAgICAgICAgICBcIndpZHRoXCI6IFwiMTM1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogXCI0MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidG9wXCI6IGRldGFpbC5mb3JtSWQ9PTcxMDgwMz8nODg1cnB4JzpcIjk0NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjg4cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJwYWRkaW5nXCI6IFwiNnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyUmFkaXVzXCI6IFwiNXJweFwiLFxyXG4gICAgICAgICAgICAgIFwiYm9yZGVyV2lkdGhcIjogXCIycnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJib3JkZXJDb2xvclwiOiBcIiNmZGU0ZTdcIixcclxuICAgICAgICAgICAgICBcImZvbnRTaXplXCI6IFwiMjhycHhcIixcclxuICAgICAgICAgICAgICBcImxpbmVIZWlnaHRcIjogXCI0MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwiY2VudGVyXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICBcInRleHRcIjogYOW3suWUriAke2RldGFpbC5vcmRlclRpbWVzfHwwfWAsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiIzk5OVwiLFxyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIyMDBycHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjgyMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjQ3NnJweFwiLFxyXG4gICAgICAgICAgICAgIFwiZm9udFNpemVcIjogXCIyOHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidGV4dEFsaWduXCI6IFwicmlnaHRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBg44CQJHt3eC5nbG9iYWxEYXRhLnNldHRpbmdzLm5hbWV944CRJHtkZXRhaWwudGl0bGV9YHx8J+a0u+WKqOagh+mimCcsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcImNvbG9yXCI6IFwiIzMzM1wiLFxyXG4gICAgICAgICAgICAgIFwid2lkdGhcIjogXCIzNjBycHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBkZXRhaWwuZm9ybUlkPT03MTA4MDM/Jzk4MHJweCc6XCIxMDIwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiNzZycHhcIixcclxuICAgICAgICAgICAgICBcImZvbnRTaXplXCI6IFwiMzZycHhcIixcclxuICAgICAgICAgICAgICBcIm1heExpbmVzXCI6IFwiMlwiLFxyXG4gICAgICAgICAgICAgIFwibGluZUhlaWdodFwiOic1MHJweCcsXHJcbiAgICAgICAgICAgICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogcXJDb2RlVXJsLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjIwMHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTAwcHhcIixcclxuICAgICAgICAgICAgICBcInRvcFwiOiBcIjg4OHJweFwiLFxyXG4gICAgICAgICAgICAgIFwibGVmdFwiOiBcIjQ3NnJweFwiLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCIsXHJcbiAgICAgICAgICAgIFwidGV4dFwiOiBcIumVv+aMieaJq+eggeivhuWIq+WPguS4jn5cIixcclxuICAgICAgICAgICAgXCJjc3NcIjoge1xyXG4gICAgICAgICAgICAgIFwiY29sb3JcIjogXCIjNjY2XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIxMTA1cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiNDc2cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJmb250U2l6ZVwiOiBcIjI0cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0ZXh0QWxpZ25cIjogXCJsZWZ0XCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgbGV0IGltZ0RyYXdMaXZlID0ge1xyXG4gICAgICAgIHdpZHRoOiAnNzUwcnB4JyxcclxuICAgICAgICBoZWlnaHQ6ICcxMzM0cnB4JyxcclxuICAgICAgICBiYWNrZ3JvdW5kOiAnI2Y1ZjVmNScsXHJcbiAgICAgICAgdmlld3M6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgXCJ1cmxcIjogXCIvYXNzZXRzL2ltYWdlcy9wb3N0ZXItYmcucG5nXCIsXHJcbiAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICBcIndpZHRoXCI6IFwiNzUwcnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJoZWlnaHRcIjogXCIxMzM0cnB4XCIsXHJcbiAgICAgICAgICAgICAgXCJ0b3BcIjogXCIwcHhcIixcclxuICAgICAgICAgICAgICBcImxlZnRcIjogXCIwcHhcIixcclxuICAgICAgICAgICAgICBcInJvdGF0ZVwiOiBcIjBcIixcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBsaXZlUm9vbS5TaGFyZUltZ1VuaWRVcmwsXHJcbiAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgIHRvcDogJzEwcnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgIHJpZ2h0OiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnNzMwcnB4JyxcclxuICAgICAgICAgICAgICBoZWlnaHQ6ICc2MzBycHgnLFxyXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzE2cnB4J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBsaXZlUm9vbS5BbmNob3JJbWdVbmlkVXJsIHx8ICcvYXNzZXRzL2ltYWdlcy9kZWZhdWx0LWF2YXRhci5wbmcnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc1OTRycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczMjhycHgnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTZycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzk2cnB4JyxcclxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogJzZycHgnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI0ZGRicsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOTZycHgnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogbGl2ZVJvb20uQW5jaG9yTmFtZSB8fCAn5pi156ewJyxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNzIycnB4JyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjM2MzYzNjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgIHRleHQ6IGDpgoDor7fmgqjlj4LkuI7nm7Tmkq1gLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc3NjZycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczNzVycHgnLFxyXG4gICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYCR7KGxpdmVSb29tLlJvb21OYW1lKSB8fCAn5rS75Yqo5qCH6aKYJ30gYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnODIwcnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBgYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNzY1cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2YyMzIzMidcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBxckNvZGVVcmwsXHJcbiAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgIHRvcDogJzk3MHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzM5MHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICczMDBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzMwMHJweCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBg6ZW/5oyJ5LqM57u056CB6K+G5Yir5Y+C5LiOYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTEwMHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzU1cnB4JyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzMycnB4JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoaXNMaXZlKXtcclxuICAgICAgICBpbWdEcmF3ID0gaW1nRHJhd0xpdmU7XHJcbiAgICAgIH1cclxuICAgICAgaWYoaXNEZXRhaWwpIHtcclxuICAgICAgICBpbWdEcmF3ID0gaW1nRHJhd1Byb21vdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGltZ0RyYXc7XHJcbiAgICB9LFxyXG4gICAgb25JbWdFcnIoKSB7XHJcbiAgICAgIHd4LmhpZGVMb2FkaW5nKClcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+eUn+aIkOWIhuS6q+WbvuWksei0pe+8jOivt+WIt+aWsOmhtemdoumHjeivlSdcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvbkltZ09LKGUpIHtcclxuICAgICAgd3guaGlkZUxvYWRpbmcoKVxyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHNoYXJlUGF0aDogZS5kZXRhaWwucGF0aCxcclxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxyXG4gICAgICB9KVxyXG4gICAgICAvL+mAmuefpeWklumDqOe7mOWItuWujOaIkO+8jOmHjee9rmlzQ2FuRHJhd+S4umZhbHNlXHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdpbml0RGF0YScpXHJcbiAgICB9LFxyXG4gICAgcHJldmVudERlZmF1bHQoKSB7IH0sXHJcbiAgICAvLyDkv53lrZjlm77niYdcclxuICAgIGhhbmRsZVNhdmVQaG90bygpIHtcclxuICAgICAgd3guc2hvd0xvYWRpbmcoe1xyXG4gICAgICAgIHRpdGxlOiAn5q2j5Zyo5L+d5a2YLi4uJyxcclxuICAgICAgICBtYXNrOiB0cnVlXHJcbiAgICAgIH0pXHJcbiAgICAgIHd4LnNhdmVJbWFnZVRvUGhvdG9zQWxidW0oe1xyXG4gICAgICAgIGZpbGVQYXRoOiB0aGlzLmRhdGEuc2hhcmVQYXRoLFxyXG4gICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgIHRpdGxlOiAn5L+d5a2Y5oiQ5YqfJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdjbG9zZScpXHJcbiAgICAgICAgICB9LCAzMDApXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiAoKSA9PiB7XHJcbiAgICAgICAgICB3eC5nZXRTZXR0aW5nKHtcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICBsZXQgYXV0aFNldHRpbmcgPSByZXMuYXV0aFNldHRpbmdcclxuICAgICAgICAgICAgICBpZiAoIWF1dGhTZXR0aW5nWydzY29wZS53cml0ZVBob3Rvc0FsYnVtJ10pIHtcclxuICAgICAgICAgICAgICAgIHd4LnNob3dNb2RhbCh7XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcclxuICAgICAgICAgICAgICAgICAgY29udGVudDogJ+aCqOacquW8gOWQr+S/neWtmOWbvueJh+WIsOebuOWGjOeahOadg+mZkO+8jOivt+eCueWHu+ehruWumuWOu+W8gOWQr+adg+mZkO+8gScsXHJcbiAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb25maXJtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB3eC5vcGVuU2V0dGluZygpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB3eC5oaWRlTG9hZGluZygpXHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgICAgICAgIH0sIDMwMClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59KVxyXG4iXX0=