提交 | 用户 | age
|
61abc9
|
1 |
"use strict";
|
S |
2 |
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3 |
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4 |
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5 |
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6 |
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
|
7 |
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8 |
});
|
|
9 |
};
|
|
10 |
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11 |
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12 |
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13 |
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14 |
function step(op) {
|
|
15 |
if (f) throw new TypeError("Generator is already executing.");
|
|
16 |
while (_) try {
|
|
17 |
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;
|
|
18 |
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19 |
switch (op[0]) {
|
|
20 |
case 0: case 1: t = op; break;
|
|
21 |
case 4: _.label++; return { value: op[1], done: false };
|
|
22 |
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23 |
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24 |
default:
|
|
25 |
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26 |
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27 |
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28 |
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29 |
if (t[2]) _.ops.pop();
|
|
30 |
_.trys.pop(); continue;
|
|
31 |
}
|
|
32 |
op = body.call(thisArg, _);
|
|
33 |
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34 |
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35 |
}
|
|
36 |
};
|
|
37 |
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38 |
var myValidator_1 = require("../../utils/myValidator");
|
|
39 |
var chooseLocation = requirePlugin('chooseLocation');
|
|
40 |
var validatorInstance;
|
|
41 |
Page({
|
|
42 |
data: {
|
|
43 |
doccode: null,
|
|
44 |
location: null,
|
|
45 |
street: '',
|
|
46 |
storeName: '',
|
|
47 |
images: '',
|
9d3461
|
48 |
phone: '',
|
S |
49 |
linkMan: '',
|
|
50 |
startTime: '00:00',
|
|
51 |
endTime: '24:00',
|
|
52 |
storeStatusList: []
|
61abc9
|
53 |
},
|
S |
54 |
onLoad: function (options) {
|
|
55 |
console.log(options);
|
|
56 |
var doccode = options.doccode;
|
|
57 |
if (doccode) {
|
|
58 |
this.setData({
|
|
59 |
doccode: doccode
|
|
60 |
});
|
|
61 |
this.getStoreData();
|
|
62 |
}
|
|
63 |
this.setData({
|
|
64 |
fileUploadUrl: "/shopping/customerStore.do?m=uploadAttachment",
|
|
65 |
fileDeleteUrl: "/shopping/customerStore.do?m=deleteAttachment",
|
|
66 |
});
|
|
67 |
},
|
|
68 |
onReady: function () {
|
|
69 |
validatorInstance = new myValidator_1.default({
|
|
70 |
rules: {
|
|
71 |
street: {
|
|
72 |
required: true,
|
|
73 |
},
|
|
74 |
storeName: {
|
|
75 |
required: true
|
|
76 |
},
|
9d3461
|
77 |
linkMan: {
|
S |
78 |
required: true
|
|
79 |
},
|
|
80 |
phone: {
|
|
81 |
required: true,
|
|
82 |
mobile: true
|
|
83 |
}
|
61abc9
|
84 |
},
|
S |
85 |
messages: {
|
|
86 |
street: {
|
|
87 |
required: '请输入门店详细地址'
|
|
88 |
},
|
|
89 |
storeName: {
|
|
90 |
required: '请输入门店名称'
|
9d3461
|
91 |
},
|
S |
92 |
linkMan: {
|
|
93 |
required: '请输入负责人姓名'
|
|
94 |
},
|
|
95 |
phone: {
|
|
96 |
required: '请输入门店联系方式',
|
|
97 |
mobile: '手机号格式不正确'
|
61abc9
|
98 |
},
|
S |
99 |
},
|
|
100 |
multiCheck: true
|
|
101 |
}, this);
|
|
102 |
},
|
|
103 |
getStoreData: function () {
|
|
104 |
return __awaiter(this, void 0, void 0, function () {
|
|
105 |
var _a, doccode, _b, error, result, data;
|
|
106 |
return __generator(this, function (_c) {
|
|
107 |
switch (_c.label) {
|
|
108 |
case 0:
|
|
109 |
doccode = this.data.doccode;
|
|
110 |
return [4, wx.$utils.to(wx.$http.request({
|
9d3461
|
111 |
url: "/shopping/customerStore.do?m=getCustomerStoreDetail",
|
61abc9
|
112 |
data: {
|
S |
113 |
doccode: doccode
|
|
114 |
}
|
|
115 |
}))];
|
|
116 |
case 1:
|
|
117 |
_b = _c.sent(), error = _b[0], result = _b[1];
|
|
118 |
if (error) {
|
|
119 |
console.log(error);
|
|
120 |
return [2];
|
|
121 |
}
|
|
122 |
console.log(result);
|
|
123 |
data = result.list[0];
|
|
124 |
this.setData((_a = {
|
|
125 |
street: data.street,
|
|
126 |
storeName: data.storeName,
|
|
127 |
imagesUrl: data.imagesUrl
|
|
128 |
},
|
|
129 |
_a["location.province"] = data.provinceName,
|
|
130 |
_a["location.city"] = data.cityName,
|
|
131 |
_a["location.district"] = data.countyName,
|
|
132 |
_a["location.address"] = data.address,
|
9d3461
|
133 |
_a["location.name"] = data.addressName,
|
61abc9
|
134 |
_a["location.longitude"] = data.longitude,
|
S |
135 |
_a["location.latitude"] = data.latitude,
|
9d3461
|
136 |
_a.status = data.status,
|
S |
137 |
_a.startTime = data.fromBusinessHours,
|
|
138 |
_a.endTime = data.toBusinessHours,
|
|
139 |
_a.phone = data.telephone,
|
|
140 |
_a.linkMan = data.linkMan,
|
|
141 |
_a.storeStatusList = result.storeStatusList,
|
61abc9
|
142 |
_a));
|
S |
143 |
return [2];
|
|
144 |
}
|
|
145 |
});
|
|
146 |
});
|
|
147 |
},
|
|
148 |
selectLocation: function () {
|
|
149 |
var key = wx.globalData.TengXunMapLocationServiceKey;
|
|
150 |
if (!key) {
|
|
151 |
wx.showModal({
|
|
152 |
title: '提示',
|
|
153 |
content: '请配置腾讯地图服务所需要的key',
|
|
154 |
showCancel: false
|
|
155 |
});
|
|
156 |
return;
|
|
157 |
}
|
|
158 |
var referer = 'miniApp';
|
|
159 |
wx.navigateTo({
|
|
160 |
url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer
|
|
161 |
});
|
|
162 |
},
|
|
163 |
checkStreet: function (e) {
|
|
164 |
var value = e.detail.value;
|
|
165 |
console.log(e);
|
9d3461
|
166 |
this.checkField("street", value);
|
S |
167 |
},
|
|
168 |
checkStoreName: function (e) {
|
|
169 |
var value = e.detail.value;
|
|
170 |
console.log(e);
|
|
171 |
this.checkField("storeName", value);
|
|
172 |
},
|
|
173 |
checkLinkMan: function (e) {
|
|
174 |
var value = e.detail.value;
|
|
175 |
console.log(e);
|
|
176 |
this.checkField("linkMan", value);
|
|
177 |
},
|
|
178 |
checkPhone: function (e) {
|
|
179 |
var value = e.detail.value;
|
|
180 |
console.log(e);
|
|
181 |
this.checkField("phone", value);
|
|
182 |
},
|
|
183 |
checkField: function (name, value) {
|
|
184 |
var _a, _b;
|
|
185 |
var errorMsg = validatorInstance.checkField("" + name, value);
|
61abc9
|
186 |
if (errorMsg === '') {
|
S |
187 |
this.setData((_a = {},
|
9d3461
|
188 |
_a["" + name] = value,
|
S |
189 |
_a[name + "Error"] = errorMsg,
|
61abc9
|
190 |
_a));
|
S |
191 |
}
|
|
192 |
else {
|
|
193 |
this.setData((_b = {},
|
9d3461
|
194 |
_b[name + "Name"] = value,
|
S |
195 |
_b[name + "Error"] = errorMsg,
|
61abc9
|
196 |
_b));
|
S |
197 |
}
|
|
198 |
},
|
9d3461
|
199 |
onDeleteStore: function () {
|
S |
200 |
var _this = this;
|
|
201 |
wx.pro.showModal({
|
|
202 |
title: '确定删除该门店吗?',
|
|
203 |
}).then(function (res) {
|
|
204 |
if (res.confirm) {
|
|
205 |
console.log('用户点击确定');
|
|
206 |
_this.deleteStore();
|
|
207 |
}
|
|
208 |
else if (res.cancel) {
|
|
209 |
console.log('用户点击取消');
|
|
210 |
}
|
|
211 |
});
|
|
212 |
},
|
|
213 |
deleteStore: function () {
|
|
214 |
return __awaiter(this, void 0, void 0, function () {
|
|
215 |
var doccode, _a, error, result;
|
|
216 |
return __generator(this, function (_b) {
|
|
217 |
switch (_b.label) {
|
|
218 |
case 0:
|
|
219 |
doccode = this.data.doccode;
|
|
220 |
return [4, wx.$utils.to(wx.$http.request({
|
|
221 |
url: "/shopping/customerStore.do?m=deleteCustomerStore",
|
|
222 |
data: {
|
|
223 |
doccode: doccode
|
|
224 |
}
|
|
225 |
}))];
|
|
226 |
case 1:
|
|
227 |
_a = _b.sent(), error = _a[0], result = _a[1];
|
|
228 |
if (error) {
|
|
229 |
console.log(error);
|
|
230 |
return [2];
|
|
231 |
}
|
|
232 |
console.log(result);
|
|
233 |
wx.showToast({
|
|
234 |
title: '删除成功'
|
|
235 |
});
|
|
236 |
setTimeout(function () { wx.navigateBack(); }, 1000);
|
|
237 |
return [2];
|
|
238 |
}
|
|
239 |
});
|
|
240 |
});
|
61abc9
|
241 |
},
|
S |
242 |
saveStore: function () {
|
|
243 |
return __awaiter(this, void 0, void 0, function () {
|
9d3461
|
244 |
var timeSelector, _a, startTime, endTime, storeStatus, status, _b, location, street, storeName, doccode, images, linkMan, phone, storeData, _c, error, result;
|
S |
245 |
return __generator(this, function (_d) {
|
|
246 |
switch (_d.label) {
|
61abc9
|
247 |
case 0:
|
9d3461
|
248 |
timeSelector = this.selectComponent('#time-selector');
|
S |
249 |
_a = timeSelector.getSelectedTime(), startTime = _a.startTime, endTime = _a.endTime;
|
|
250 |
storeStatus = this.selectComponent('#store-status');
|
|
251 |
status = storeStatus.getStoreStatusValue();
|
|
252 |
_b = this.data, location = _b.location, street = _b.street, storeName = _b.storeName, doccode = _b.doccode, images = _b.images, linkMan = _b.linkMan, phone = _b.phone;
|
61abc9
|
253 |
storeData = {
|
S |
254 |
countryName: '中国',
|
|
255 |
provinceName: location.province,
|
|
256 |
cityName: location.city,
|
|
257 |
countyName: location.district,
|
|
258 |
address: location.address,
|
|
259 |
addressName: location.name,
|
|
260 |
longitude: location.longitude,
|
|
261 |
latitude: location.latitude,
|
|
262 |
street: street,
|
|
263 |
storeName: storeName,
|
|
264 |
images: images,
|
9d3461
|
265 |
linkMan: linkMan,
|
S |
266 |
fromBusinessHours: startTime,
|
|
267 |
toBusinessHours: endTime,
|
|
268 |
telephone: phone,
|
|
269 |
docCode: doccode,
|
|
270 |
status: status
|
61abc9
|
271 |
};
|
S |
272 |
console.log('待保存的门店数据', storeData);
|
|
273 |
return [4, wx.$utils.to(wx.$http.request({
|
|
274 |
url: "/shopping/customerStore.do?m=saveCustomerStore",
|
|
275 |
data: storeData,
|
|
276 |
method: 'POST'
|
|
277 |
}))];
|
|
278 |
case 1:
|
9d3461
|
279 |
_c = _d.sent(), error = _c[0], result = _c[1];
|
61abc9
|
280 |
if (error) {
|
S |
281 |
console.log(error);
|
|
282 |
return [2];
|
|
283 |
}
|
|
284 |
console.log(result);
|
|
285 |
wx.showToast({
|
|
286 |
title: '保存成功'
|
|
287 |
});
|
9d3461
|
288 |
setTimeout(function () { wx.navigateBack(); }, 1500);
|
61abc9
|
289 |
return [2];
|
S |
290 |
}
|
|
291 |
});
|
|
292 |
});
|
|
293 |
},
|
3fc241
|
294 |
onSave: wx.$utils.debounce(function () {
|
61abc9
|
295 |
var location = this.data.location;
|
S |
296 |
if (!location) {
|
|
297 |
wx.showToast({
|
|
298 |
title: '请选择门店地址',
|
|
299 |
icon: 'none'
|
|
300 |
});
|
|
301 |
return;
|
|
302 |
}
|
|
303 |
var checkAllData = validatorInstance.checkAllData();
|
|
304 |
var fileUploaderMultiple = this.selectComponent('#file-uploader-multiple');
|
|
305 |
var checkImages = fileUploaderMultiple.checkImages("images", "请至少上传一张图片");
|
|
306 |
if (!checkAllData) {
|
|
307 |
console.log('还有错误未处理');
|
|
308 |
return;
|
|
309 |
}
|
|
310 |
if (!checkImages)
|
|
311 |
return;
|
|
312 |
var images = fileUploaderMultiple.getImagesUnid();
|
|
313 |
this.setData({
|
|
314 |
images: images
|
|
315 |
});
|
|
316 |
console.log('....提交成功');
|
|
317 |
this.saveStore();
|
3fc241
|
318 |
}),
|
61abc9
|
319 |
onShow: function () {
|
S |
320 |
var location = chooseLocation.getLocation();
|
|
321 |
console.log(location);
|
|
322 |
if (location) {
|
|
323 |
this.setData({
|
|
324 |
location: location
|
|
325 |
});
|
|
326 |
}
|
|
327 |
},
|
|
328 |
onUnload: function () {
|
|
329 |
chooseLocation.setLocation(null);
|
|
330 |
}
|
|
331 |
});
|
3fc241
|
332 |
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVFZGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RvcmVFZGl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1REFBa0Q7QUFFbEQsSUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkQsSUFBSSxpQkFBOEIsQ0FBQztBQUNuQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUMsSUFBVztRQUNuQixRQUFRLEVBQUMsSUFBVztRQUNwQixNQUFNLEVBQUMsRUFBRTtRQUNULFNBQVMsRUFBQyxFQUFFO1FBQ1osTUFBTSxFQUFDLEVBQUU7UUFDVCxLQUFLLEVBQUUsRUFBRTtRQUNULE9BQU8sRUFBQyxFQUFFO1FBQ1YsU0FBUyxFQUFDLE9BQU87UUFDakIsT0FBTyxFQUFDLE9BQU87UUFDZixlQUFlLEVBQUMsRUFBRTtLQUVuQjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzlCLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxPQUFPLFNBQUE7YUFDUixDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7U0FDcEI7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1gsYUFBYSxFQUFFLCtDQUErQztZQUM5RCxhQUFhLEVBQUUsK0NBQStDO1NBQy9ELENBQUMsQ0FBQztJQVVMLENBQUM7SUFDRCxPQUFPO1FBQ0wsaUJBQWlCLEdBQUcsSUFBSSxxQkFBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULFFBQVEs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Q0QsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQ3pCLElBQUksTUFBTSxHQUFHLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUM7WUFDWCxNQUFNLFFBQUE7U0FDUCxDQUFDLENBQUE7UUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixNQUFNO1FBQ0osSUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLFFBQVEsVUFBQTthQUNULENBQUMsQ0FBQTtTQUNIO0lBRUgsQ0FBQztJQUNELFFBQVE7UUFFTixjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FFRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTXlWYWxpZGF0b3IgZnJvbSBcIi4uLy4uL3V0aWxzL215VmFsaWRhdG9yXCI7XHJcbi8vIEB0cy1pZ25vcmVcclxuY29uc3QgY2hvb3NlTG9jYXRpb24gPSByZXF1aXJlUGx1Z2luKCdjaG9vc2VMb2NhdGlvbicpO1xyXG5sZXQgdmFsaWRhdG9ySW5zdGFuY2U6IE15VmFsaWRhdG9yO1xyXG5QYWdlKHtcclxuICBkYXRhOiB7XHJcbiAgICBkb2Njb2RlOm51bGwgYXMgYW55LFxyXG4gICAgbG9jYXRpb246bnVsbCBhcyBhbnksXHJcbiAgICBzdHJlZXQ6JycsXHJcbiAgICBzdG9yZU5hbWU6JycsXHJcbiAgICBpbWFnZXM6JycsXHJcbiAgICBwaG9uZTogJycsXHJcbiAgICBsaW5rTWFuOicnLFxyXG4gICAgc3RhcnRUaW1lOicwMDowMCcsXHJcbiAgICBlbmRUaW1lOicyNDowMCcsXHJcbiAgICBzdG9yZVN0YXR1c0xpc3Q6W11cclxuICAgIC8vIHNlbGVjdGVkU3RvcmVJZExpc3Q6W11cclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuICAgIGxldCBkb2Njb2RlID0gb3B0aW9ucy5kb2Njb2RlO1xyXG4gICAgaWYgKGRvY2NvZGUpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBkb2Njb2RlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZ2V0U3RvcmVEYXRhKClcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGZpbGVVcGxvYWRVcmw6IFwiL3Nob3BwaW5nL2N1c3RvbWVyU3RvcmUuZG8/bT11cGxvYWRBdHRhY2htZW50XCIsXHJcbiAgICAgIGZpbGVEZWxldGVVcmw6IFwiL3Nob3BwaW5nL2N1c3RvbWVyU3RvcmUuZG8/bT1kZWxldGVBdHRhY2htZW50XCIsXHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuZ2V0TXlGb290cHJpbnQoKTtcclxuICAgIC8vIGNvbnN0IGV2ZW50Q2hhbm5lbCA9IHRoaXMuZ2V0T3BlbmVyRXZlbnRDaGFubmVsKCk7XHJcbiAgICAvLyBldmVudENoYW5uZWwub24oJ2dldFN0b3JlTGlzdEZyb21TdG9yZUxpc3RQYWdlJywgKGRhdGE6YW55KT0+IHtcclxuICAgIC8vICAgY29uc29sZS5sb2coJ+iOt+WPluaWsOW7uua0u+WKqOaXtumAieS4reeahOmXqOW6lycsZGF0YSlcclxuICAgIC8vICAgdGhpcy5zZXREYXRhKHtcclxuICAgIC8vICAgICBzZWxlY3RlZFN0b3JlSWRMaXN0OmRhdGEuc2VsZWN0ZWRTdG9yZUlkTGlzdCxcclxuICAgIC8vICAgfSlcclxuICAgIC8vXHJcbiAgICAvLyB9KVxyXG4gIH0sXHJcbiAgb25SZWFkeSgpIHtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlID0gbmV3IE15VmFsaWRhdG9yKHtcclxuICAgICAgcnVsZXM6IHtcclxuICAgICAgICBzdHJlZXQ6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3RvcmVOYW1lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbGlua01hbjoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBob25lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG1vYmlsZTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBzdHJlZXQ6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6Zeo5bqX6K+m57uG5Zyw5Z2AJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3RvcmVOYW1lOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpemXqOW6l+WQjeensCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxpbmtNYW46IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6LSf6LSj5Lq65aeT5ZCNJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGhvbmU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl6Zeo5bqX6IGU57O75pa55byPJyxcclxuICAgICAgICAgIG1vYmlsZTogJ+aJi+acuuWPt+agvOW8j+S4jeato+ehridcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBtdWx0aUNoZWNrOnRydWVcclxuICAgIH0sdGhpcyk7XHJcbiAgfSxcclxuICBhc3luYyBnZXRTdG9yZURhdGEoKXtcclxuICAgIGxldCBkb2Njb2RlID0gdGhpcy5kYXRhLmRvY2NvZGU7XHJcbiAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6YC9zaG9wcGluZy9jdXN0b21lclN0b3JlLmRvP209Z2V0Q3VzdG9tZXJTdG9yZURldGFpbGAsXHJcbiAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICBkb2Njb2RlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgbGV0IGRhdGEgPSByZXN1bHQubGlzdFswXTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHN0cmVldDogZGF0YS5zdHJlZXQsXHJcbiAgICAgIHN0b3JlTmFtZTpkYXRhLnN0b3JlTmFtZSxcclxuICAgICAgaW1hZ2VzVXJsOmRhdGEuaW1hZ2VzVXJsLFxyXG4gICAgICBbXCJsb2NhdGlvbi5wcm92aW5jZVwiXTogZGF0YS5wcm92aW5jZU5hbWUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmNpdHlcIl06IGRhdGEuY2l0eU5hbWUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmRpc3RyaWN0XCJdOiBkYXRhLmNvdW50eU5hbWUsXHJcbiAgICAgIFtcImxvY2F0aW9uLmFkZHJlc3NcIl06IGRhdGEuYWRkcmVzcyxcclxuICAgICAgW1wibG9jYXRpb24ubmFtZVwiXTogZGF0YS5hZGRyZXNzTmFtZSxcclxuICAgICAgW1wibG9jYXRpb24ubG9uZ2l0dWRlXCJdOiBkYXRhLmxvbmdpdHVkZSxcclxuICAgICAgW1wibG9jYXRpb24ubGF0aXR1ZGVcIl06IGRhdGEubGF0aXR1ZGUsXHJcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXHJcbiAgICAgIHN0YXJ0VGltZTogZGF0YS5mcm9tQnVzaW5lc3NIb3VycyxcclxuICAgICAgZW5kVGltZTogZGF0YS50b0J1c2luZXNzSG91cnMsXHJcbiAgICAgIHBob25lOiBkYXRhLnRlbGVwaG9uZSxcclxuICAgICAgbGlua01hbjogZGF0YS5saW5rTWFuLFxyXG4gICAgICBzdG9yZVN0YXR1c0xpc3Q6cmVzdWx0LnN0b3JlU3RhdHVzTGlzdFxyXG4gICAgfSlcclxuICB9LFxyXG4gIHNlbGVjdExvY2F0aW9uKCl7XHJcbiAgICBjb25zdCBrZXkgPSB3eC5nbG9iYWxEYXRhLlRlbmdYdW5NYXBMb2NhdGlvblNlcnZpY2VLZXk7XHJcbiAgICBpZiAoIWtleSkge1xyXG4gICAgICB3eC5zaG93TW9kYWwoe1xyXG4gICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcclxuICAgICAgICBjb250ZW50OiAn6K+36YWN572u6IW+6K6v5Zyw5Zu+5pyN5Yqh5omA6ZyA6KaB55qEa2V5JyxcclxuICAgICAgICBzaG93Q2FuY2VsOmZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlZmVyZXIgPSAnbWluaUFwcCc7XHJcbiAgICB3eC5uYXZpZ2F0ZVRvKHtcclxuICAgICAgdXJsOiAncGx1Z2luOi8vY2hvb3NlTG9jYXRpb24vaW5kZXg/a2V5PScgKyBrZXkgKyAnJnJlZmVyZXI9JyArIHJlZmVyZXJcclxuICAgICAgLy8gICsgJyZsb2NhdGlvbj0nICsgbG9jYXRpb24gKyAnJmNhdGVnb3J5PScgKyBjYXRlZ29yeVxyXG4gICAgfSk7XHJcbiAgfSxcclxuICBjaGVja1N0cmVldChlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWw7XHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHRoaXMuY2hlY2tGaWVsZChgc3RyZWV0YCx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja1N0b3JlTmFtZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWw7XHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHRoaXMuY2hlY2tGaWVsZChgc3RvcmVOYW1lYCx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja0xpbmtNYW4oZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsO1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB0aGlzLmNoZWNrRmllbGQoYGxpbmtNYW5gLHZhbHVlKTtcclxuICB9LFxyXG4gIGNoZWNrUGhvbmUoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsO1xyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB0aGlzLmNoZWNrRmllbGQoYHBob25lYCx2YWx1ZSk7XHJcbiAgfSxcclxuICBjaGVja0ZpZWxkKG5hbWU6c3RyaW5nLHZhbHVlOnN0cmluZyl7XHJcbiAgICBsZXQgZXJyb3JNc2cgPSB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKGAke25hbWV9YCx2YWx1ZSk7XHJcbiAgICBpZiAoZXJyb3JNc2c9PT0nJyl7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgW2Ake25hbWV9YF06IHZhbHVlLFxyXG4gICAgICAgIFtgJHtuYW1lfUVycm9yYF06IGVycm9yTXNnLFxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBbYCR7bmFtZX1OYW1lYF06IHZhbHVlLFxyXG4gICAgICAgIFtgJHtuYW1lfUVycm9yYF06IGVycm9yTXNnLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgb25EZWxldGVTdG9yZSgpIHtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICB3eC5wcm8uc2hvd01vZGFsKHtcclxuICAgICAgdGl0bGU6ICfnoa7lrprliKDpmaTor6Xpl6jlupflkJfvvJ8nLFxyXG4gICAgfSkudGhlbigocmVzOmFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55So5oi354K55Ye756Gu5a6aJylcclxuICAgICAgICB0aGlzLmRlbGV0ZVN0b3JlKCk7XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55So5oi354K55Ye75Y+W5raIJylcclxuICAgICAgfVxyXG4gICAgICAvLyBpbnN0YW5jZS5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgfSxcclxuICBhc3luYyBkZWxldGVTdG9yZSgpe1xyXG4gICAgbGV0IGRvY2NvZGUgPSB0aGlzLmRhdGEuZG9jY29kZTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL2N1c3RvbWVyU3RvcmUuZG8/bT1kZWxldGVDdXN0b21lclN0b3JlYCxcclxuICAgICAgICBkYXRhOntcclxuICAgICAgICAgIGRvY2NvZGVcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTon5Yig6Zmk5oiQ5YqfJ1xyXG4gICAgfSlcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge3d4Lm5hdmlnYXRlQmFjaygpO30sMTAwMClcclxuICB9LFxyXG4gIGFzeW5jIHNhdmVTdG9yZSgpe1xyXG4gICAgbGV0IHRpbWVTZWxlY3RvciA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjdGltZS1zZWxlY3RvcicpO1xyXG4gICAgbGV0IHtzdGFydFRpbWUsZW5kVGltZX0gPSB0aW1lU2VsZWN0b3IuZ2V0U2VsZWN0ZWRUaW1lKCk7XHJcbiAgICBsZXQgc3RvcmVTdGF0dXMgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLXN0YXR1cycpO1xyXG4gICAgbGV0IHN0YXR1cyA9IHN0b3JlU3RhdHVzLmdldFN0b3JlU3RhdHVzVmFsdWUoKTtcclxuICAgIGxldCB7XHJcbiAgICAgIGxvY2F0aW9uLFxyXG4gICAgICBzdHJlZXQsXHJcbiAgICAgIHN0b3JlTmFtZSxcclxuICAgICAgZG9jY29kZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICBsaW5rTWFuLFxyXG4gICAgICBwaG9uZVxyXG4gICAgfSA9IHRoaXMuZGF0YTtcclxuICAgIGxldCBzdG9yZURhdGEgPSB7XHJcbiAgICAgIGNvdW50cnlOYW1lOifkuK3lm70nLFxyXG4gICAgICBwcm92aW5jZU5hbWU6IGxvY2F0aW9uLnByb3ZpbmNlLFxyXG4gICAgICBjaXR5TmFtZTogbG9jYXRpb24uY2l0eSxcclxuICAgICAgY291bnR5TmFtZTogbG9jYXRpb24uZGlzdHJpY3QsXHJcbiAgICAgIGFkZHJlc3M6IGxvY2F0aW9uLmFkZHJlc3MsXHJcbiAgICAgIGFkZHJlc3NOYW1lOiBsb2NhdGlvbi5uYW1lLFxyXG4gICAgICBsb25naXR1ZGU6IGxvY2F0aW9uLmxvbmdpdHVkZSxcclxuICAgICAgbGF0aXR1ZGU6IGxvY2F0aW9uLmxhdGl0dWRlLFxyXG4gICAgICBzdHJlZXQsXHJcbiAgICAgIHN0b3JlTmFtZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICBsaW5rTWFuLFxyXG4gICAgICBmcm9tQnVzaW5lc3NIb3VyczpzdGFydFRpbWUsXHJcbiAgICAgIHRvQnVzaW5lc3NIb3VyczplbmRUaW1lLFxyXG4gICAgICB0ZWxlcGhvbmU6cGhvbmUsXHJcbiAgICAgIGRvY0NvZGU6ZG9jY29kZSxcclxuICAgICAgc3RhdHVzXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y55qE6Zeo5bqX5pWw5o2uJyxzdG9yZURhdGEpO1xyXG4gICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOmAvc2hvcHBpbmcvY3VzdG9tZXJTdG9yZS5kbz9tPXNhdmVDdXN0b21lclN0b3JlYCxcclxuICAgICAgICBkYXRhOiBzdG9yZURhdGEsXHJcbiAgICAgICAgbWV0aG9kOidQT1NUJ1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgdGl0bGU6J+S/neWtmOaIkOWKnydcclxuICAgIH0pXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHt3eC5uYXZpZ2F0ZUJhY2soKTt9LDE1MDApXHJcbiAgfSxcclxuICAvLyBuYXZpZ2F0ZUJhY2sobW9kZT86YW55KXtcclxuICAvLyAgIGxldCB7c2VsZWN0ZWRTdG9yZUlkTGlzdCxkb2Njb2RlfSA9IHRoaXMuZGF0YTtcclxuICAvLyAgIGlmIChtb2RlID09J2RlbGV0ZScpe1xyXG4gIC8vICAgICAvLyBAdHMtaWdub3JlXHJcbiAgLy8gICAgIHNlbGVjdGVkU3RvcmVJZExpc3Quc3BsaWNlKHNlbGVjdGVkU3RvcmVJZExpc3QuaW5kZXhPZihkb2Njb2RlKSwxKVxyXG4gIC8vICAgICBjb25zb2xlLmxvZygn5Yig6Zmk6Zeo5bqX5ZCO55qEc2VsZWN0ZWRTdG9yZUlkTGlzdCcsc2VsZWN0ZWRTdG9yZUlkTGlzdCk7XHJcbiAgLy8gICB9XHJcbiAgLy9cclxuICAvLyAgIGxldCBldmVudENoYW5uZWwgPSB0aGlzLmdldE9wZW5lckV2ZW50Q2hhbm5lbCgpO1xyXG4gIC8vICAgZXZlbnRDaGFubmVsLmVtaXQoJ2dldFNlbGVjdGVkU3RvcmVJZExpc3RGcm9tU3RvcmVFZGl0UGFnZScsIHtcclxuICAvLyAgICAgc2VsZWN0ZWRTdG9yZUlkTGlzdCxcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgd3gubmF2aWdhdGVCYWNrKCk7XHJcbiAgLy8gfSxcclxuICBvblNhdmU6d3guJHV0aWxzLmRlYm91bmNlKGZ1bmN0aW9uKHRoaXM6YW55KXtcclxuICAgIGxldCBsb2NhdGlvbiA9IHRoaXMuZGF0YS5sb2NhdGlvbjtcclxuICAgIGlmICghbG9jYXRpb24pIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTon6K+36YCJ5oup6Zeo5bqX5Zyw5Z2AJyxcclxuICAgICAgICBpY29uOidub25lJ1xyXG4gICAgICB9KVxyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBsZXQgY2hlY2tBbGxEYXRhID0gdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tBbGxEYXRhKCk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuICAgIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gICAgaWYgKCFjaGVja0FsbERhdGEpe1xyXG4gICAgICBjb25zb2xlLmxvZygn6L+Y5pyJ6ZSZ6K+v5pyq5aSE55CGJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghY2hlY2tJbWFnZXMpIHJldHVybjtcclxuICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBpbWFnZXNcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgdGhpcy5zYXZlU3RvcmUoKTtcclxuICB9KSxcclxuICBvblNob3coKXtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gY2hvb3NlTG9jYXRpb24uZ2V0TG9jYXRpb24oKTsgLy8g5aaC5p6c54K55Ye756Gu6K6k6YCJ54K55oyJ6ZKu77yM5YiZ6L+U5Zue6YCJ54K557uT5p6c5a+56LGh77yM5ZCm5YiZ6L+U5ZuebnVsbFxyXG4gICAgY29uc29sZS5sb2cobG9jYXRpb24pO1xyXG4gICAgaWYgKGxvY2F0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgbG9jYXRpb25cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgfSxcclxuICBvblVubG9hZCAoKSB7XHJcbiAgICAvLyDpobXpnaLljbjovb3ml7borr7nva7mj5Lku7bpgInngrnmlbDmja7kuLpudWxs77yM6Ziy5q2i5YaN5qyh6L+b5YWl6aG16Z2i77yMZ2VMb2NhdGlvbui/lOWbnueahOaYr+S4iuasoemAieeCuee7k+aenFxyXG4gICAgY2hvb3NlTG9jYXRpb24uc2V0TG9jYXRpb24obnVsbCk7XHJcbiAgfVxyXG5cclxufSlcclxuZXhwb3J0IHt9XHJcbiJdfQ== |