"use strict";
|
var __assign = (this && this.__assign) || function () {
|
__assign = Object.assign || function(t) {
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
s = arguments[i];
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
t[p] = s[p];
|
}
|
return t;
|
};
|
return __assign.apply(this, arguments);
|
};
|
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 };
|
}
|
};
|
Object.defineProperty(exports, "__esModule", { value: true });
|
var myValidator_1 = require("../../utils/myValidator");
|
var validatorInstance;
|
Page({
|
data: {
|
autosize: { maxHeight: 120, minHeight: 50 },
|
validatorInstance: {},
|
freeId: 0,
|
formId: 710803,
|
formData: {},
|
doccode: '',
|
fromPage: '',
|
delivery: {},
|
feeRateForPay: 1,
|
sellerUnCheckedNames: '',
|
coverImageUrl: '',
|
isShowDialog: false
|
},
|
onLoad: function (options) {
|
var doccode = options.doccode || '';
|
var fromPage = options.fromPage || '';
|
var settings = wx.globalData.settings;
|
this.setData({
|
fileUploadUrl: "/shopping/panicBuying.do?m=uploadAttachment&formid=" + this.data.formId,
|
doccode: doccode,
|
fromPage: fromPage,
|
feeRateForPay: (settings.feeRateForWxPay + settings.platformOperatorCommissionRatio) * 100
|
});
|
if (doccode) {
|
this.getSaveData();
|
}
|
},
|
getSaveData: function () {
|
return __awaiter(this, void 0, void 0, function () {
|
var doccode, _a, error, result, data, formData;
|
return __generator(this, function (_b) {
|
switch (_b.label) {
|
case 0:
|
doccode = this.data.doccode;
|
return [4, wx.$utils.to(wx.$http.request({
|
url: "/shopping/panicBuying.do?m=getPanicBuyingDetail",
|
data: {
|
doccode: doccode,
|
isEdit: true,
|
RefOpenId: wx.globalData.OpenId
|
}
|
}))];
|
case 1:
|
_a = _b.sent(), error = _a[0], result = _a[1];
|
if (error) {
|
console.log(error);
|
return [2];
|
}
|
console.log(result);
|
data = result.list[0];
|
formData = {
|
promotionsTitle: data.title,
|
originalPrice: data.salesPrice,
|
promotionDescription: data.description,
|
startTime: data.effectiveStartDate,
|
endTime: data.effectiveEndDate,
|
coverImageList: (data.coverImageUrl && this.getCoverImageList(data)) || [],
|
imagesList: data.imagesUrl,
|
coverImage: data.coverImage,
|
images: data.images,
|
freeId: data.freeId,
|
};
|
this.setData(__assign({}, formData, { coverImageUrl: data.coverImageUrl, sellerList: result.sellerList, status: data.panicBuyingStatus, delivery: {
|
freeId: data.freeId,
|
freeName: data.freeName,
|
isRequiredAddress: data.isRequiredAddress,
|
transCosts: data.transCosts,
|
} }));
|
console.log('配送数据。。。', this.data.delivery);
|
wx.setNavigationBarTitle({
|
title: data.title
|
});
|
return [2];
|
}
|
});
|
});
|
},
|
getCoverImageList: function (data) {
|
var _a = data.coverImage.split(";"), unid = _a[0], seq = _a[1];
|
return [{
|
url: data.coverImageUrl || '',
|
unid: unid,
|
seq: seq
|
}];
|
},
|
onReady: function () {
|
this.initValidator();
|
},
|
selectedStartTime: function (event) {
|
console.log('开始', event);
|
this.setData({
|
startTime: event.detail.startTime,
|
});
|
},
|
selectedEndTime: function (event) {
|
console.log('结束', event);
|
this.setData({
|
endTime: event.detail.endTime,
|
});
|
},
|
checkPromotionsTitle: function (e) {
|
var value = e.detail.value;
|
console.log(e);
|
validatorInstance.checkField('promotionsTitle', value);
|
this.setData({
|
promotionsTitle: value.trim()
|
});
|
},
|
checkOriginalPrice: function (e) {
|
var value = e.detail.value;
|
console.log(e);
|
validatorInstance.checkField('originalPrice', value);
|
this.setData({
|
originalPrice: value.trim()
|
});
|
},
|
checkPromotionDescription: function (e) {
|
var value = e.detail.value;
|
console.log(e);
|
validatorInstance.checkField('promotionDescription', value);
|
this.setData({
|
promotionDescription: value.trim()
|
});
|
},
|
postFormData: function (data) {
|
return __awaiter(this, void 0, void 0, function () {
|
var _a, error, res;
|
return __generator(this, function (_b) {
|
switch (_b.label) {
|
case 0: return [4, wx.$utils.to(wx.$http.request({
|
url: '/shopping/panicBuying.do?m=saveDocCode',
|
data: data,
|
method: 'POST'
|
}))];
|
case 1:
|
_a = _b.sent(), error = _a[0], res = _a[1];
|
if (error) {
|
console.log(error);
|
return [2, false];
|
}
|
console.log(res);
|
if (res.state === 'success') {
|
wx.showToast({
|
title: '成功',
|
duration: 2000
|
});
|
}
|
if (res.state === 'failed' && res.sellerCheckedBalance > 0) {
|
this.setData({
|
sellerUnCheckedNames: res.sellerUnCheckedNames,
|
isShowDialog: true
|
});
|
}
|
return [2, res.state === 'success'];
|
}
|
});
|
});
|
},
|
onSubmit: function () {
|
return __awaiter(this, void 0, void 0, function () {
|
var timeQuantum, sellerEdit, fileUploader, fileUploaderMultiple, checkStartTime, checkEndTime, checkCoverImage, checkAllData, sellerList, checkDefaultSeller, checkArr, data, coverImage, coverImageUrl, images, formData;
|
return __generator(this, function (_a) {
|
switch (_a.label) {
|
case 0:
|
timeQuantum = this.selectComponent('#time-quantum');
|
sellerEdit = this.selectComponent('#seller-edit');
|
fileUploader = this.selectComponent('#file-uploader');
|
fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
|
console.log('sellerEdit');
|
console.log(timeQuantum);
|
checkStartTime = timeQuantum.checkTime("startTime", "请选择计划开始时间");
|
checkEndTime = timeQuantum.checkTime("endTime", "请选择计划结束时间");
|
checkCoverImage = fileUploader.checkImages("coverImage", "请上传一张封面图");
|
checkAllData = validatorInstance.checkAllData();
|
sellerList = sellerEdit.getSellerList();
|
if (sellerList.length < 1) {
|
wx.showToast({
|
title: '请选择营销人员',
|
icon: 'none',
|
duration: 2000
|
});
|
return [2];
|
}
|
checkDefaultSeller = sellerEdit.checkDefaultSeller();
|
if (!checkDefaultSeller) {
|
wx.showToast({
|
title: '请选择默认营销人员',
|
icon: 'none',
|
duration: 2000
|
});
|
return [2];
|
}
|
console.log('checkDefaultSeller', checkDefaultSeller);
|
checkArr = [checkStartTime, checkEndTime, checkCoverImage, checkAllData];
|
data = {};
|
if (!checkArr.every(function (item) {
|
return item;
|
})) return [3, 2];
|
console.log('....提交成功');
|
coverImage = fileUploader.getCoverImageUnid();
|
coverImageUrl = fileUploader.getImgList()[0].url || '';
|
this.setData({
|
coverImageUrl: coverImageUrl
|
});
|
images = fileUploaderMultiple.getImagesUnid();
|
console.log(coverImage, images);
|
formData = this.data;
|
data = {
|
docCode: formData.doccode,
|
formId: formData.formId,
|
docStatus: 100,
|
coverImage: coverImage,
|
images: images,
|
effectiveStartDate: formData.startTime,
|
effectiveEndDate: formData.endTime,
|
freeId: formData.freeId,
|
title: formData.promotionsTitle,
|
salesPrice: Number(formData.originalPrice),
|
description: formData.promotionDescription,
|
sellerList: sellerList,
|
};
|
console.log('待发布数据', data);
|
return [4, this.postFormData(data)];
|
case 1:
|
if (!(_a.sent()))
|
return [2];
|
if (this.data.fromPage == 'edit') {
|
wx.navigateBack();
|
}
|
else {
|
wx.redirectTo({
|
url: '../promotionsManageList/promotionsManageList?tab=2'
|
});
|
}
|
return [3, 3];
|
case 2:
|
wx.showToast({
|
title: '页面还有错误未处理',
|
icon: 'none',
|
duration: 2000
|
});
|
console.log('还有错误未处理');
|
_a.label = 3;
|
case 3: return [2];
|
}
|
});
|
});
|
},
|
onSave: function () {
|
var sellerEdit = this.selectComponent('#seller-edit');
|
var sellerList = sellerEdit.getSellerList();
|
var fileUploader = this.selectComponent('#file-uploader');
|
var fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
|
console.log('....提交成功');
|
var coverImage = fileUploader.getCoverImageUnid();
|
var images = fileUploaderMultiple.getImagesUnid();
|
console.log(coverImage, images);
|
var formData = this.data;
|
var data = {
|
docCode: formData.doccode,
|
formId: formData.formId,
|
docStatus: 0,
|
coverImage: coverImage,
|
images: images,
|
effectiveStartDate: formData.startTime,
|
effectiveEndDate: formData.endTime,
|
freeId: formData.freeId,
|
title: formData.promotionsTitle,
|
salesPrice: Number(formData.originalPrice),
|
description: formData.promotionDescription,
|
sellerList: sellerList,
|
};
|
console.log('待保存数据', data);
|
this.postFormData(data);
|
},
|
initValidator: function () {
|
validatorInstance = new myValidator_1.default({
|
rules: {
|
promotionsTitle: {
|
required: true,
|
rangelength: [3, 14]
|
},
|
originalPrice: {
|
required: true,
|
number: true
|
},
|
},
|
messages: {
|
promotionsTitle: {
|
required: '请输入活动标题',
|
rangelength: '文字长度请控制在3到14之间'
|
},
|
originalPrice: {
|
required: '请输入活动报名费',
|
number: '价格必须为数字'
|
},
|
},
|
multiCheck: true
|
}, this);
|
console.log('hhhh,', validatorInstance);
|
},
|
onShareAppMessage: function () {
|
var doccode = this.data.doccode || '';
|
var imageUrl = this.data.coverImageUrl || '';
|
var sellerUnCheckedNames = this.data.sellerUnCheckedNames || '';
|
return {
|
title: "\u8BF7\u8425\u9500\u4EBA\u5458[" + sellerUnCheckedNames + "]\u9A8C\u8BC1\u8EAB\u4EFD",
|
imageUrl: imageUrl,
|
path: "pages/sellerVerify/sellerVerify?doccode=" + doccode,
|
};
|
}
|
});
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblVwQ3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2lnblVwQ3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHVEQUFrRDtBQUVsRCxJQUFJLGlCQUE2QixDQUFDO0FBRWxDLElBQUksQ0FBQztJQUNILElBQUksRUFBRTtRQUNKLFFBQVEsRUFBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtRQUMxQyxpQkFBaUIsRUFBQyxFQUFFO1FBQ3BCLE1BQU0sRUFBQyxDQUFDO1FBQ1IsTUFBTSxFQUFDLE1BQU07UUFDYixRQUFRLEVBQUUsRUFBRTtRQUNaLE9BQU8sRUFBQyxFQUFFO1FBQ1YsUUFBUSxFQUFDLEVBQUU7UUFDWCxRQUFRLEVBQUMsRUFBRTtRQUNYLGFBQWEsRUFBQyxDQUFDO1FBQ2Ysb0JBQW9CLEVBQUMsRUFBRTtRQUN2QixhQUFhLEVBQUMsRUFBRTtRQUNoQixZQUFZLEVBQUMsS0FBSztLQUNuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBRVosSUFBSSxPQUFPLEdBQUUsT0FBTyxDQUFDLE9BQU8sSUFBRSxFQUFFLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUUsT0FBTyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLGFBQWEsRUFBRSx3REFBc0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFRO1lBQ3ZGLE9BQU8sU0FBQTtZQUNQLFFBQVEsVUFBQTtZQUNSLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLEdBQUMsR0FBRztTQUN2RixDQUFDLENBQUE7UUFDRixJQUFJLE9BQU8sRUFBRTtZ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TyxJQUFJLEVBQUUsQ0FBQztRQUU3QyxJQUFJLFFBQVEsR0FBVSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDcEQsSUFBSSxvQkFBb0IsR0FBVSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztRQUN2RSxPQUFPO1lBRUwsS0FBSyxFQUFFLG9DQUFTLG9CQUFvQiw4QkFBTztZQUMzQyxRQUFRLFVBQUE7WUFDUixJQUFJLEVBQUUsNkNBQTJDLE9BQVM7U0FDM0QsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgKiBhcyBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IE15VmFsaWRhdG9yIGZyb20gXCIuLi8uLi91dGlscy9teVZhbGlkYXRvclwiO1xyXG5cclxubGV0IHZhbGlkYXRvckluc3RhbmNlOk15VmFsaWRhdG9yO1xyXG4vLyBjb25zdCBhcHAgPSBnZXRBcHA8SUFwcE9wdGlvbj4oKTtcclxuUGFnZSh7XHJcbiAgZGF0YToge1xyXG4gICAgYXV0b3NpemU6eyBtYXhIZWlnaHQ6IDEyMCwgbWluSGVpZ2h0OiA1MCB9LFxyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2U6e30sXHJcbiAgICBmcmVlSWQ6MCxcclxuICAgIGZvcm1JZDo3MTA4MDMsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICBmb3JtRGF0YToge30sXHJcbiAgICBkb2Njb2RlOicnLFxyXG4gICAgZnJvbVBhZ2U6JycsXHJcbiAgICBkZWxpdmVyeTp7fSxcclxuICAgIGZlZVJhdGVGb3JQYXk6MSxcclxuICAgIHNlbGxlclVuQ2hlY2tlZE5hbWVzOicnLFxyXG4gICAgY292ZXJJbWFnZVVybDonJyxcclxuICAgIGlzU2hvd0RpYWxvZzpmYWxzZVxyXG4gIH0sXHJcbiAgb25Mb2FkKG9wdGlvbnMpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGFwcCk7XHJcbiAgICBsZXQgZG9jY29kZSA9b3B0aW9ucy5kb2Njb2RlfHwnJztcclxuICAgIGxldCBmcm9tUGFnZSA9b3B0aW9ucy5mcm9tUGFnZXx8Jyc7XHJcbiAgICBsZXQgc2V0dGluZ3MgPSB3eC5nbG9iYWxEYXRhLnNldHRpbmdzO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmlsZVVwbG9hZFVybDogYC9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXVwbG9hZEF0dGFjaG1lbnQmZm9ybWlkPSR7dGhpcy5kYXRhLmZvcm1JZH1gLFxyXG4gICAgICBkb2Njb2RlLFxyXG4gICAgICBmcm9tUGFnZSxcclxuICAgICAgZmVlUmF0ZUZvclBheTogKHNldHRpbmdzLmZlZVJhdGVGb3JXeFBheStzZXR0aW5ncy5wbGF0Zm9ybU9wZXJhdG9yQ29tbWlzc2lvblJhdGlvKSoxMDBcclxuICAgIH0pXHJcbiAgICBpZiAoZG9jY29kZSkge1xyXG4gICAgICB0aGlzLmdldFNhdmVEYXRhKCk7XHJcbiAgICB9XHJcbiAgfSxcclxuICBhc3luYyBnZXRTYXZlRGF0YSgpIHtcclxuICAgIGxldCBkb2Njb2RlID0gdGhpcy5kYXRhLmRvY2NvZGU7XHJcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6YC9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPWdldFBhbmljQnV5aW5nRGV0YWlsYCxcclxuICAgICAgICBkYXRhOntcclxuICAgICAgICAgIGRvY2NvZGUsXHJcbiAgICAgICAgICBpc0VkaXQ6dHJ1ZSxcclxuICAgICAgICAgIFJlZk9wZW5JZDp3eC5nbG9iYWxEYXRhLk9wZW5JZFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICAgIGlmIChlcnJvcil7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgIGxldCBkYXRhID0gcmVzdWx0Lmxpc3RbMF07XHJcbiAgICBsZXQgZm9ybURhdGEgPSB7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTogZGF0YS50aXRsZSxcclxuICAgICAgb3JpZ2luYWxQcmljZTogZGF0YS5zYWxlc1ByaWNlLFxyXG4gICAgICBwcm9tb3Rpb25EZXNjcmlwdGlvbjogZGF0YS5kZXNjcmlwdGlvbixcclxuICAgICAgc3RhcnRUaW1lOiBkYXRhLmVmZmVjdGl2ZVN0YXJ0RGF0ZSxcclxuICAgICAgZW5kVGltZTogZGF0YS5lZmZlY3RpdmVFbmREYXRlLFxyXG4gICAgICBjb3ZlckltYWdlTGlzdDogKGRhdGEuY292ZXJJbWFnZVVybCYmdGhpcy5nZXRDb3ZlckltYWdlTGlzdChkYXRhKSl8fFtdLFxyXG4gICAgICAvLyBpbWFnZXNMaXN0OiAoZGF0YS5pbWFnZXNVcmwubGVuZ3RoPjAmJnRoaXMuZ2V0SW1hZ2VzTGlzdChkYXRhKSl8fFtdLFxyXG4gICAgICBpbWFnZXNMaXN0OiBkYXRhLmltYWdlc1VybCxcclxuICAgICAgY292ZXJJbWFnZTogZGF0YS5jb3ZlckltYWdlLFxyXG4gICAgICBpbWFnZXM6IGRhdGEuaW1hZ2VzLFxyXG4gICAgICBmcmVlSWQ6ZGF0YS5mcmVlSWQsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgLi4uZm9ybURhdGEsXHJcbiAgICAgIGNvdmVySW1hZ2VVcmw6ZGF0YS5jb3ZlckltYWdlVXJsLFxyXG4gICAgICBzZWxsZXJMaXN0OnJlc3VsdC5zZWxsZXJMaXN0LFxyXG4gICAgICBzdGF0dXM6ZGF0YS5wYW5pY0J1eWluZ1N0YXR1cyxcclxuICAgICAgZGVsaXZlcnk6e1xyXG4gICAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgICAgICBmcmVlTmFtZTpkYXRhLmZyZWVOYW1lLFxyXG4gICAgICAgIGlzUmVxdWlyZWRBZGRyZXNzOmRhdGEuaXNSZXF1aXJlZEFkZHJlc3MsXHJcbiAgICAgICAgdHJhbnNDb3N0czpkYXRhLnRyYW5zQ29zdHMsXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc29sZS5sb2coJ+mFjemAgeaVsOaNruOAguOAguOAgicsdGhpcy5kYXRhLmRlbGl2ZXJ5KTtcclxuICAgIHd4LnNldE5hdmlnYXRpb25CYXJUaXRsZSh7XHJcbiAgICAgIHRpdGxlOiBkYXRhLnRpdGxlXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGdldENvdmVySW1hZ2VMaXN0KGRhdGE6YW55KXtcclxuICAgIGxldCBbdW5pZCxzZXFdID0gZGF0YS5jb3ZlckltYWdlLnNwbGl0KFwiO1wiKTtcclxuICAgIHJldHVybiBbe1xyXG4gICAgICB1cmw6IGRhdGEuY292ZXJJbWFnZVVybHx8JycsXHJcbiAgICAgIHVuaWQsXHJcbiAgICAgIHNlcVxyXG4gICAgfV1cclxuICB9LFxyXG5cclxuICBvblJlYWR5KCkge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdG9yKClcclxuICB9LFxyXG4gIHNlbGVjdGVkU3RhcnRUaW1lKGV2ZW50OmFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ+W8gOWniycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgc3RhcnRUaW1lOiBldmVudC5kZXRhaWwuc3RhcnRUaW1lLFxyXG4gICAgfSlcclxuICB9LFxyXG4gIHNlbGVjdGVkRW5kVGltZShldmVudDphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ+e7k+adnycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZW5kVGltZTogZXZlbnQuZGV0YWlsLmVuZFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcblxyXG4gIGNoZWNrUHJvbW90aW9uc1RpdGxlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdwcm9tb3Rpb25zVGl0bGUnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbnNUaXRsZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja09yaWdpbmFsUHJpY2UoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ29yaWdpbmFsUHJpY2UnLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIG9yaWdpbmFsUHJpY2U6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tQcm9tb3Rpb25EZXNjcmlwdGlvbihlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgncHJvbW90aW9uRGVzY3JpcHRpb24nLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBhc3luYyBwb3N0Rm9ybURhdGEoZGF0YTpvYmplY3Qpe1xyXG4gICAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOicvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1zYXZlRG9jQ29kZScsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBtZXRob2Q6J1BPU1QnXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgaWYgKHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfmiJDlip8nLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAocmVzLnN0YXRlID09PSAnZmFpbGVkJyYmcmVzLnNlbGxlckNoZWNrZWRCYWxhbmNlPjApIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBzZWxsZXJVbkNoZWNrZWROYW1lczogcmVzLnNlbGxlclVuQ2hlY2tlZE5hbWVzLFxyXG4gICAgICAgIGlzU2hvd0RpYWxvZzogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnO1xyXG4gIH0sXHJcbiAgYXN5bmMgb25TdWJtaXQoKSB7XHJcbiAgICBsZXQgdGltZVF1YW50dW0gPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3RpbWUtcXVhbnR1bScpO1xyXG4gICAgbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuXHJcblxyXG4gICAgY29uc29sZS5sb2coJ3NlbGxlckVkaXQnLCk7XHJcbiAgICBjb25zb2xlLmxvZyh0aW1lUXVhbnR1bSk7XHJcblxyXG4gICAgbGV0IGNoZWNrU3RhcnRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIsIFwi6K+36YCJ5oup6K6h5YiS5byA5aeL5pe26Ze0XCIpO1xyXG4gICAgbGV0IGNoZWNrRW5kVGltZSA9IHRpbWVRdWFudHVtLmNoZWNrVGltZShcImVuZFRpbWVcIiwgXCLor7fpgInmi6norqHliJLnu5PmnZ/ml7bpl7RcIik7XHJcbiAgICBsZXQgY2hlY2tDb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmNoZWNrSW1hZ2VzKFwiY292ZXJJbWFnZVwiLCBcIuivt+S4iuS8oOS4gOW8oOWwgemdouWbvlwiKTtcclxuICAgIC8vIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gICAgbGV0IGNoZWNrQWxsRGF0YSA9IHZhbGlkYXRvckluc3RhbmNlLmNoZWNrQWxsRGF0YSgpO1xyXG4gICAgLy8gaWYgKHRoaXMuZGF0YS5nb29kc0ltZ0xpc3QubGVuZ3RoIDwgMSkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygn6K+35LiK5Lyg5Lqn5ZOB5Zu+54mHJyk7XHJcbiAgICAvLyB9XHJcbiAgICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgaWYgKHNlbGxlckxpc3QubGVuZ3RoPDEpIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+ivt+mAieaLqeiQpemUgOS6uuWRmCcsXHJcbiAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IGNoZWNrRGVmYXVsdFNlbGxlciA9IHNlbGxlckVkaXQuY2hlY2tEZWZhdWx0U2VsbGVyKCk7XHJcbiAgICBpZiAoIWNoZWNrRGVmYXVsdFNlbGxlcikge1xyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn6K+36YCJ5oup6buY6K6k6JCl6ZSA5Lq65ZGYJyxcclxuICAgICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygnY2hlY2tEZWZhdWx0U2VsbGVyJyxjaGVja0RlZmF1bHRTZWxsZXIpO1xyXG5cclxuICAgIGxldCBjaGVja0FyciA9IFtjaGVja1N0YXJ0VGltZSxjaGVja0VuZFRpbWUsY2hlY2tDb3ZlckltYWdlLGNoZWNrQWxsRGF0YV07XHJcbiAgICBsZXQgZGF0YSA9IHt9O1xyXG4gICAgaWYgKGNoZWNrQXJyLmV2ZXJ5KChpdGVtKT0+e1xyXG4gICAgICByZXR1cm4gaXRlbVxyXG4gICAgfSkpe1xyXG4gICAgICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgICBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgICBsZXQgY292ZXJJbWFnZVVybCA9IGZpbGVVcGxvYWRlci5nZXRJbWdMaXN0KClbMF0udXJsfHwnJztcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBjb3ZlckltYWdlVXJsXHJcbiAgICAgIH0pXHJcbiAgICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgICAgbGV0IGZvcm1EYXRhOiBhbnkgPSB0aGlzLmRhdGE7XHJcbiAgICAgIGRhdGEgPSB7XHJcbiAgICAgICAgZG9jQ29kZTogZm9ybURhdGEuZG9jY29kZSwgLy/mtLvliqjljZXlj7fvvIzmlrDlu7rmtLvliqjml7bkuLrnqbrlgLzvvIznvJbovpHml7bpnIDopoFkb2Njb2Rl5YC8XHJcbiAgICAgICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAgICAgZG9jU3RhdHVzOjEwMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgICAgICBjb3ZlckltYWdlLFxyXG4gICAgICAgIGltYWdlcyxcclxuICAgICAgICAvLyAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcblxyXG4gICAgICAgIGVmZmVjdGl2ZVN0YXJ0RGF0ZTogZm9ybURhdGEuc3RhcnRUaW1lLFxyXG4gICAgICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAgICAgZnJlZUlkOiBmb3JtRGF0YS5mcmVlSWQsXHJcbiAgICAgICAgdGl0bGU6IGZvcm1EYXRhLnByb21vdGlvbnNUaXRsZSxcclxuICAgICAgICAvLyBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAgICAgc2FsZXNQcmljZTogTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5wcm9tb3Rpb25EZXNjcmlwdGlvbixcclxuICAgICAgICBzZWxsZXJMaXN0LFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKCflvoXlj5HluIPmlbDmja4nLGRhdGEpO1xyXG4gICAgICBpZiAoIWF3YWl0IHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuZnJvbVBhZ2U9PSdlZGl0Jyl7XHJcbiAgICAgICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgICAgIH0gZWxzZXtcclxuICAgICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICAgIHVybDonLi4vcHJvbW90aW9uc01hbmFnZUxpc3QvcHJvbW90aW9uc01hbmFnZUxpc3Q/dGFiPTInXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6ICfpobXpnaLov5jmnInplJnor6/mnKrlpITnkIYnLFxyXG4gICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICB9KVxyXG4gICAgICBjb25zb2xlLmxvZygn6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9LFxyXG5cclxuICBvblNhdmUoKXtcclxuICAgIGxldCBzZWxsZXJFZGl0ID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzZWxsZXItZWRpdCcpO1xyXG4gICAgbGV0IHNlbGxlckxpc3QgPSBzZWxsZXJFZGl0LmdldFNlbGxlckxpc3QoKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXIgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXInKTtcclxuICAgIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG4gICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgIGxldCBjb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmdldENvdmVySW1hZ2VVbmlkKCk7XHJcbiAgICBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKGNvdmVySW1hZ2UsaW1hZ2VzKTtcclxuICAgIGxldCBmb3JtRGF0YTogYW55ID0gdGhpcy5kYXRhO1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgICAgZG9jU3RhdHVzOiAwLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgICBjb3ZlckltYWdlLFxyXG4gICAgICBpbWFnZXMsXHJcbiAgICAgIC8vIC4uLnRoaXMuZGF0YS5mb3JtRGF0YSxcclxuXHJcbiAgICAgIGVmZmVjdGl2ZVN0YXJ0RGF0ZTogZm9ybURhdGEuc3RhcnRUaW1lLFxyXG4gICAgICBlZmZlY3RpdmVFbmREYXRlOiBmb3JtRGF0YS5lbmRUaW1lLFxyXG4gICAgICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgICAgdGl0bGU6IGZvcm1EYXRhLnByb21vdGlvbnNUaXRsZSxcclxuICAgICAgLy8gb3JpZ2luYWxQcmljZTogTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpfHwwLFxyXG4gICAgICBzYWxlc1ByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSksXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBmb3JtRGF0YS5wcm9tb3Rpb25EZXNjcmlwdGlvbixcclxuXHJcbiAgICAgIHNlbGxlckxpc3QsXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICAgIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xyXG4gIH0sXHJcbiAgLy8gb25JbnB1dFN0YXJ0RGF0ZSgpIHt9LFxyXG4gIC8vIG9uSW5wdXRFbmREYXRlKCkge30sXHJcbiAgaW5pdFZhbGlkYXRvcigpe1xyXG4gICAgLy8g5a6e5L6L5YyWXHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZSA9IG5ldyBNeVZhbGlkYXRvcih7XHJcbiAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgcHJvbW90aW9uc1RpdGxlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIHJhbmdlbGVuZ3RoOiBbMywxNF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG9yaWdpbmFsUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbnVtYmVyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBwcm9tb3Rpb25EZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIC8vICAgcmVxdWlyZWQ6IHRydWVcclxuICAgICAgICAvLyB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtZXNzYWdlczoge1xyXG4gICAgICAgIHByb21vdGlvbnNUaXRsZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmtLvliqjmoIfpopgnLFxyXG4gICAgICAgICAgcmFuZ2VsZW5ndGg6ICfmloflrZfplb/luqbor7fmjqfliLblnKgz5YiwMTTkuYvpl7QnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmlnaW5hbFByaWNlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpea0u+WKqOaKpeWQjei0uScsXHJcbiAgICAgICAgICBudW1iZXI6ICfku7fmoLzlv4XpobvkuLrmlbDlrZcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBwcm9tb3Rpb25EZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIC8vICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmtLvliqjmj4/ov7AnXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgfSxcclxuICAgICAgbXVsdGlDaGVjazp0cnVlXHJcbiAgICB9LHRoaXMpXHJcbiAgICAvLyB0aGlzLnNldERhdGEoe1xyXG4gICAgLy8gICB2YWxpZGF0b3JJbnN0YW5jZVxyXG4gICAgLy8gfSlcclxuICAgIGNvbnNvbGUubG9nKCdoaGhoLCcsdmFsaWRhdG9ySW5zdGFuY2UpO1xyXG4gIH0sXHJcbiAgb25TaGFyZUFwcE1lc3NhZ2UoKSB7XHJcbiAgICBsZXQgZG9jY29kZTpzdHJpbmcgPSB0aGlzLmRhdGEuZG9jY29kZSB8fCAnJztcclxuICAgIC8vIGxldCB0aXRsZTpzdHJpbmcgPSB0aGlzLmRhdGEucHJvbW90aW9uc0RhdGEudGl0bGUgfHwgJyc7XHJcbiAgICBsZXQgaW1hZ2VVcmw6c3RyaW5nID0gdGhpcy5kYXRhLmNvdmVySW1hZ2VVcmwgfHwgJyc7XHJcbiAgICBsZXQgc2VsbGVyVW5DaGVja2VkTmFtZXM6c3RyaW5nID0gdGhpcy5kYXRhLnNlbGxlclVuQ2hlY2tlZE5hbWVzIHx8ICcnO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gdGl0bGU6IHV0aWxzLmdldFNoYXJlVGl0bGUoKSxcclxuICAgICAgdGl0bGU6IGDor7fokKXplIDkurrlkZhbJHtzZWxsZXJVbkNoZWNrZWROYW1lc31d6aqM6K+B6Lqr5Lu9YCxcclxuICAgICAgaW1hZ2VVcmwsXHJcbiAgICAgIHBhdGg6IGBwYWdlcy9zZWxsZXJWZXJpZnkvc2VsbGVyVmVyaWZ5P2RvY2NvZGU9JHtkb2Njb2RlfWAsXHJcbiAgICB9XHJcbiAgfVxyXG59KVxyXG5leHBvcnQge31cclxuIl19
|