merchi_checkout 1.2.6 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/area.js +298 -0
- package/lib/components/JobInfoContent.js +310 -103
- package/lib/styles/globals.css +8 -2
- package/lib/styles/globals.css.map +1 -1
- package/lib/styles/globals.scss +8 -1
- package/lib/utils.js +4 -2
- package/package.json +2 -2
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
5
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
7
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
8
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
9
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
10
|
+
import React, { useState } from 'react';
|
|
11
|
+
import { FaFilePdf, FaRegImage } from 'react-icons/fa';
|
|
5
12
|
import { formatCurrency, currencyTotalCostShowIncTax } from './currency';
|
|
6
13
|
import { isInstructionsType, isProductSupplierMOD, isSelectable, FieldType } from '../utils';
|
|
14
|
+
import { estimateAreaCosts, formatAreaSummary, localePrefersImperial } from '../area';
|
|
7
15
|
import { useMerchiCheckboutContext } from './MerchiCheckoutProvider';
|
|
8
16
|
import { SummaryAmountRow, SummaryFieldRow } from './CheckoutSummaryFields';
|
|
9
17
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -16,6 +24,37 @@ function formatCost(product, cost) {
|
|
|
16
24
|
showCodeIfNoSymbol: false
|
|
17
25
|
});
|
|
18
26
|
}
|
|
27
|
+
function parseCostAmount(value) {
|
|
28
|
+
var amount = parseFloat(value);
|
|
29
|
+
return Number.isFinite(amount) && amount > 0 ? amount : 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Match product-form wording: "+ $X once off" / "+ $Y per unit". */
|
|
33
|
+
function formatOnceOffUnitCostDetail(product, onceOffCost, unitCost) {
|
|
34
|
+
var currency = (product === null || product === void 0 ? void 0 : product.currency) || 'AUD';
|
|
35
|
+
var parts = [];
|
|
36
|
+
var onceOff = parseCostAmount(onceOffCost);
|
|
37
|
+
var unit = parseCostAmount(unitCost);
|
|
38
|
+
if (onceOff) {
|
|
39
|
+
parts.push(" + ".concat(formatCurrency(onceOff, {
|
|
40
|
+
currency: currency,
|
|
41
|
+
showCodeIfNoSymbol: false
|
|
42
|
+
}), " once off"));
|
|
43
|
+
}
|
|
44
|
+
if (unit) {
|
|
45
|
+
parts.push(" + ".concat(formatCurrency(unit, {
|
|
46
|
+
currency: currency,
|
|
47
|
+
showCodeIfNoSymbol: false
|
|
48
|
+
}), " per unit"));
|
|
49
|
+
}
|
|
50
|
+
return parts.join('');
|
|
51
|
+
}
|
|
52
|
+
function optionOnceOff(option) {
|
|
53
|
+
return parseCostAmount(option === null || option === void 0 ? void 0 : option.onceOffCost) || parseCostAmount(option === null || option === void 0 ? void 0 : option.variationCost) || 0;
|
|
54
|
+
}
|
|
55
|
+
function optionUnit(option) {
|
|
56
|
+
return parseCostAmount(option === null || option === void 0 ? void 0 : option.unitCost) || parseCostAmount(option === null || option === void 0 ? void 0 : option.variationUnitCost) || 0;
|
|
57
|
+
}
|
|
19
58
|
|
|
20
59
|
/** Product setup fee shown next to unit price, matching product-form wording. */
|
|
21
60
|
function productSetupSuffix(product) {
|
|
@@ -37,9 +76,24 @@ function isImageFile(file) {
|
|
|
37
76
|
var name = ((file === null || file === void 0 ? void 0 : file.name) || '').toLowerCase();
|
|
38
77
|
return /\.(jpe?g|png|gif|webp|svg|bmp)$/.test(name);
|
|
39
78
|
}
|
|
40
|
-
function
|
|
41
|
-
var
|
|
42
|
-
|
|
79
|
+
function absolutizeFileUrl(raw, urlApi) {
|
|
80
|
+
var url = (raw || '').trim();
|
|
81
|
+
if (!url || url === 'undefined' || url === 'null') return '';
|
|
82
|
+
if (/^(https?:|blob:|data:)/i.test(url)) return url;
|
|
83
|
+
if (!urlApi) return url;
|
|
84
|
+
try {
|
|
85
|
+
var base = new URL(urlApi);
|
|
86
|
+
return new URL(url, "".concat(base.origin, "/")).href;
|
|
87
|
+
} catch (_unused) {
|
|
88
|
+
return url;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function resolveFileUrl(file, urlApi) {
|
|
92
|
+
return absolutizeFileUrl((file === null || file === void 0 ? void 0 : file.viewUrl) || (file === null || file === void 0 ? void 0 : file.downloadUrl) || '', urlApi);
|
|
93
|
+
}
|
|
94
|
+
function optionImageUrl(option, urlApi) {
|
|
95
|
+
var _option$linkedFile, _option$linkedFile2;
|
|
96
|
+
return absolutizeFileUrl((option === null || option === void 0 || (_option$linkedFile = option.linkedFile) === null || _option$linkedFile === void 0 ? void 0 : _option$linkedFile.viewUrl) || (option === null || option === void 0 || (_option$linkedFile2 = option.linkedFile) === null || _option$linkedFile2 === void 0 ? void 0 : _option$linkedFile2.downloadUrl) || '', urlApi);
|
|
43
97
|
}
|
|
44
98
|
function findMatchingOption(option) {
|
|
45
99
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
@@ -60,24 +114,71 @@ function resolveOptionColour(option) {
|
|
|
60
114
|
function resolveOptionImageUrl(option) {
|
|
61
115
|
var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
62
116
|
var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
63
|
-
var
|
|
117
|
+
var urlApi = arguments.length > 3 ? arguments[3] : undefined;
|
|
118
|
+
var direct = optionImageUrl(option, urlApi);
|
|
64
119
|
if (direct) return direct;
|
|
65
|
-
var fromSelectable = optionImageUrl(findMatchingOption(option, selectableOptions));
|
|
120
|
+
var fromSelectable = optionImageUrl(findMatchingOption(option, selectableOptions), urlApi);
|
|
66
121
|
if (fromSelectable) return fromSelectable;
|
|
67
|
-
return optionImageUrl(findMatchingOption(option, fieldOptions));
|
|
122
|
+
return optionImageUrl(findMatchingOption(option, fieldOptions), urlApi);
|
|
68
123
|
}
|
|
69
124
|
function formatOptionCost(product, option, sellerProductEditable) {
|
|
70
|
-
if (
|
|
71
|
-
|
|
125
|
+
if (sellerProductEditable || !option) return null;
|
|
126
|
+
var onceOffUnit = formatOnceOffUnitCostDetail(product, optionOnceOff(option), optionUnit(option));
|
|
127
|
+
if (onceOffUnit) return onceOffUnit;
|
|
128
|
+
if (option.totalCost) {
|
|
129
|
+
return " + ".concat(formatCost(product, option.totalCost));
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
function variationCostDetail(product, variation, sellerProductEditable) {
|
|
134
|
+
var _variation$onceOffCos, _variation$unitCost;
|
|
135
|
+
var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
136
|
+
_ref$includeSelectedO = _ref.includeSelectedOptionCosts,
|
|
137
|
+
includeSelectedOptionCosts = _ref$includeSelectedO === void 0 ? true : _ref$includeSelectedO,
|
|
138
|
+
_ref$fieldCostsOnly = _ref.fieldCostsOnly,
|
|
139
|
+
fieldCostsOnly = _ref$fieldCostsOnly === void 0 ? false : _ref$fieldCostsOnly;
|
|
140
|
+
if (sellerProductEditable) return '';
|
|
141
|
+
var field = (variation === null || variation === void 0 ? void 0 : variation.variationField) || {};
|
|
142
|
+
var fieldType = Number(field.fieldType);
|
|
143
|
+
if (fieldType === FieldType.AREA) {
|
|
144
|
+
var areaCosts = estimateAreaCosts(field, variation === null || variation === void 0 ? void 0 : variation.value);
|
|
145
|
+
if (areaCosts) {
|
|
146
|
+
return formatOnceOffUnitCostDetail(product, areaCosts.onceOffCost, areaCosts.unitCost);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (fieldCostsOnly) {
|
|
150
|
+
return formatOnceOffUnitCostDetail(product, field.variationCost, field.variationUnitCost);
|
|
151
|
+
}
|
|
152
|
+
var selected = Array.isArray(variation === null || variation === void 0 ? void 0 : variation.selectedOptions) ? variation.selectedOptions : [];
|
|
153
|
+
if (includeSelectedOptionCosts && selected.length) {
|
|
154
|
+
var fieldOnce = fieldType === FieldType.COLOUR_EXTRACT ? parseCostAmount(field.variationCost) : 0;
|
|
155
|
+
var fieldUnit = fieldType === FieldType.COLOUR_EXTRACT ? parseCostAmount(field.variationUnitCost) : 0;
|
|
156
|
+
return formatOnceOffUnitCostDetail(product, fieldOnce + selected.reduce(function (sum, option) {
|
|
157
|
+
return sum + optionOnceOff(option);
|
|
158
|
+
}, 0), fieldUnit + selected.reduce(function (sum, option) {
|
|
159
|
+
return sum + optionUnit(option);
|
|
160
|
+
}, 0));
|
|
161
|
+
}
|
|
162
|
+
var onceOffUnit = formatOnceOffUnitCostDetail(product, (_variation$onceOffCos = variation === null || variation === void 0 ? void 0 : variation.onceOffCost) !== null && _variation$onceOffCos !== void 0 ? _variation$onceOffCos : field.variationCost, (_variation$unitCost = variation === null || variation === void 0 ? void 0 : variation.unitCost) !== null && _variation$unitCost !== void 0 ? _variation$unitCost : field.variationUnitCost);
|
|
163
|
+
if (onceOffUnit) return onceOffUnit;
|
|
164
|
+
if (variation !== null && variation !== void 0 && variation.cost) {
|
|
165
|
+
return " + ".concat(formatCost(product, variation.cost));
|
|
166
|
+
}
|
|
167
|
+
return '';
|
|
72
168
|
}
|
|
73
|
-
function VariationFilePreview(
|
|
74
|
-
var file =
|
|
75
|
-
|
|
169
|
+
function VariationFilePreview(_ref2) {
|
|
170
|
+
var file = _ref2.file,
|
|
171
|
+
urlApi = _ref2.urlApi;
|
|
172
|
+
var fileUrl = resolveFileUrl(file, urlApi);
|
|
76
173
|
var fileName = (file === null || file === void 0 ? void 0 : file.name) || 'File';
|
|
174
|
+
var _useState = useState(false),
|
|
175
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
176
|
+
imageFailed = _useState2[0],
|
|
177
|
+
setImageFailed = _useState2[1];
|
|
77
178
|
if (isPdf(file)) {
|
|
78
179
|
return /*#__PURE__*/_jsxs("a", {
|
|
79
180
|
className: "merchi-checkout-summary-file-link",
|
|
80
|
-
href: fileUrl,
|
|
181
|
+
href: fileUrl || undefined,
|
|
81
182
|
target: "_blank",
|
|
82
183
|
rel: "noopener noreferrer",
|
|
83
184
|
title: fileName,
|
|
@@ -88,12 +189,26 @@ function VariationFilePreview(_ref) {
|
|
|
88
189
|
})]
|
|
89
190
|
});
|
|
90
191
|
}
|
|
91
|
-
if (isImageFile(file) && fileUrl) {
|
|
192
|
+
if (isImageFile(file) && fileUrl && !imageFailed) {
|
|
92
193
|
return /*#__PURE__*/_jsx("img", {
|
|
93
194
|
className: "modal-merchi-checkout-job-info-content-img",
|
|
94
195
|
src: fileUrl,
|
|
95
196
|
alt: fileName,
|
|
96
|
-
title: fileName
|
|
197
|
+
title: fileName,
|
|
198
|
+
onError: function onError() {
|
|
199
|
+
return setImageFailed(true);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (isImageFile(file)) {
|
|
204
|
+
return /*#__PURE__*/_jsxs("span", {
|
|
205
|
+
className: "merchi-checkout-summary-file-fallback",
|
|
206
|
+
title: fileName,
|
|
207
|
+
children: [/*#__PURE__*/_jsx(FaRegImage, {
|
|
208
|
+
"aria-hidden": true
|
|
209
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
210
|
+
children: fileName
|
|
211
|
+
})]
|
|
97
212
|
});
|
|
98
213
|
}
|
|
99
214
|
if (fileUrl) {
|
|
@@ -110,15 +225,16 @@ function VariationFilePreview(_ref) {
|
|
|
110
225
|
children: fileName
|
|
111
226
|
});
|
|
112
227
|
}
|
|
113
|
-
function VariationInfoBody(
|
|
114
|
-
var
|
|
115
|
-
name =
|
|
116
|
-
product =
|
|
117
|
-
value =
|
|
118
|
-
files =
|
|
119
|
-
type =
|
|
228
|
+
function VariationInfoBody(_ref3) {
|
|
229
|
+
var costDetail = _ref3.costDetail,
|
|
230
|
+
name = _ref3.name,
|
|
231
|
+
product = _ref3.product,
|
|
232
|
+
value = _ref3.value,
|
|
233
|
+
files = _ref3.files,
|
|
234
|
+
type = _ref3.type,
|
|
235
|
+
urlApi = _ref3.urlApi;
|
|
120
236
|
var isColourPicker = type === FieldType.COLOUR_PICKER;
|
|
121
|
-
var isFileUpload = type === FieldType.FILE_UPLOAD;
|
|
237
|
+
var isFileUpload = type === FieldType.FILE_UPLOAD || type === FieldType.COLOUR_EXTRACT;
|
|
122
238
|
var hasFiles = Boolean(files === null || files === void 0 ? void 0 : files.length);
|
|
123
239
|
var displayValue = isColourPicker || isFileUpload && hasFiles ? null : value;
|
|
124
240
|
return /*#__PURE__*/_jsxs("div", {
|
|
@@ -132,7 +248,8 @@ function VariationInfoBody(_ref2) {
|
|
|
132
248
|
className: "merchi-checkout-summary-file-previews",
|
|
133
249
|
children: files.map(function (file, index) {
|
|
134
250
|
return /*#__PURE__*/_jsx(VariationFilePreview, {
|
|
135
|
-
file: file
|
|
251
|
+
file: file,
|
|
252
|
+
urlApi: urlApi
|
|
136
253
|
}, file.viewUrl || file.id || "".concat(name, "-file-").concat(index));
|
|
137
254
|
})
|
|
138
255
|
}), isColourPicker && value && /*#__PURE__*/_jsxs("div", {
|
|
@@ -145,15 +262,16 @@ function VariationInfoBody(_ref2) {
|
|
|
145
262
|
}), /*#__PURE__*/_jsx("span", {
|
|
146
263
|
children: value
|
|
147
264
|
})]
|
|
148
|
-
}), displayValue && displayValue,
|
|
265
|
+
}), displayValue && displayValue, costDetail || '', !hasFiles && !value && !costDetail && '-']
|
|
149
266
|
})]
|
|
150
267
|
});
|
|
151
268
|
}
|
|
152
|
-
function VariationInfo(
|
|
153
|
-
var product =
|
|
154
|
-
variation =
|
|
155
|
-
var
|
|
156
|
-
|
|
269
|
+
function VariationInfo(_ref4) {
|
|
270
|
+
var product = _ref4.product,
|
|
271
|
+
variation = _ref4.variation;
|
|
272
|
+
var _useMerchiCheckboutCo = useMerchiCheckboutContext(),
|
|
273
|
+
urlApi = _useMerchiCheckboutCo.urlApi;
|
|
274
|
+
var variationField = variation.variationField,
|
|
157
275
|
variationFiles = variation.variationFiles,
|
|
158
276
|
selectableOptions = variation.selectableOptions;
|
|
159
277
|
var fieldType = variationField.fieldType,
|
|
@@ -162,11 +280,38 @@ function VariationInfo(_ref3) {
|
|
|
162
280
|
fieldOptions = _variationField$optio === void 0 ? [] : _variationField$optio;
|
|
163
281
|
var isVariationSelectable = isSelectable(fieldType);
|
|
164
282
|
var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
|
|
165
|
-
var
|
|
283
|
+
var isColourExtract = fieldType === FieldType.COLOUR_EXTRACT;
|
|
284
|
+
var options = resolveSelectableSelectedOptions(variation, selectableOptions, fieldOptions);
|
|
166
285
|
var useSelectableDisplay = isVariationSelectable && (Boolean(options === null || options === void 0 ? void 0 : options.length) || isTurnaroundTime && variation.value);
|
|
167
286
|
return /*#__PURE__*/_jsx("div", {
|
|
168
287
|
className: "merchi-checkout-summary-variation",
|
|
169
|
-
children:
|
|
288
|
+
children: isColourExtract ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
289
|
+
children: [/*#__PURE__*/_jsx(VariationInfoBody, {
|
|
290
|
+
name: variationField.name,
|
|
291
|
+
type: fieldType,
|
|
292
|
+
value: null,
|
|
293
|
+
files: variationFiles,
|
|
294
|
+
product: product,
|
|
295
|
+
urlApi: urlApi,
|
|
296
|
+
costDetail: variationCostDetail(product, variation, sellerProductEditable,
|
|
297
|
+
// Options list shows each colour cost; keep field base cost here.
|
|
298
|
+
options !== null && options !== void 0 && options.length ? {
|
|
299
|
+
fieldCostsOnly: true
|
|
300
|
+
} : {
|
|
301
|
+
includeSelectedOptionCosts: false
|
|
302
|
+
})
|
|
303
|
+
}), options !== null && options !== void 0 && options.length ? /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
|
|
304
|
+
name: "".concat(variationField.name, " colours"),
|
|
305
|
+
fieldType: fieldType,
|
|
306
|
+
value: variation.value,
|
|
307
|
+
product: product,
|
|
308
|
+
selectedOptions: options,
|
|
309
|
+
variation: variation,
|
|
310
|
+
selectableOptions: selectableOptions,
|
|
311
|
+
fieldOptions: fieldOptions,
|
|
312
|
+
sellerProductEditable: sellerProductEditable
|
|
313
|
+
}) : null]
|
|
314
|
+
}) : useSelectableDisplay ? /*#__PURE__*/_jsx(VariationOptionsInfoBody, {
|
|
170
315
|
name: variationField.name,
|
|
171
316
|
fieldType: fieldType,
|
|
172
317
|
value: variation.value,
|
|
@@ -180,20 +325,26 @@ function VariationInfo(_ref3) {
|
|
|
180
325
|
}) : /*#__PURE__*/_jsx(VariationInfoBody, {
|
|
181
326
|
name: variationField.name,
|
|
182
327
|
type: variationField.fieldType,
|
|
183
|
-
value: variation.value,
|
|
328
|
+
value: fieldType === FieldType.AREA && variation.value ? formatAreaSummary(variation.value, localePrefersImperial() ? 'imperial' : 'metric', variationField.areaUnit || 'mm') || variation.value : variation.value,
|
|
184
329
|
files: variationFiles,
|
|
185
330
|
product: product,
|
|
186
|
-
|
|
331
|
+
urlApi: urlApi,
|
|
332
|
+
costDetail: variationCostDetail(product, variation, sellerProductEditable, {
|
|
333
|
+
includeSelectedOptionCosts: false
|
|
334
|
+
})
|
|
187
335
|
})
|
|
188
336
|
});
|
|
189
337
|
}
|
|
190
|
-
function ColourSelectOption(
|
|
338
|
+
function ColourSelectOption(_ref5) {
|
|
191
339
|
var _option$value;
|
|
192
|
-
var option =
|
|
193
|
-
selectableOptions =
|
|
194
|
-
fieldOptions =
|
|
340
|
+
var option = _ref5.option,
|
|
341
|
+
selectableOptions = _ref5.selectableOptions,
|
|
342
|
+
fieldOptions = _ref5.fieldOptions,
|
|
343
|
+
product = _ref5.product,
|
|
344
|
+
sellerProductEditable = _ref5.sellerProductEditable;
|
|
195
345
|
var label = (option === null || option === void 0 || (_option$value = option.value) === null || _option$value === void 0 ? void 0 : _option$value.trim()) || '';
|
|
196
346
|
var hex = resolveOptionColour(option, selectableOptions, fieldOptions);
|
|
347
|
+
var cost = formatOptionCost(product, option, Boolean(sellerProductEditable));
|
|
197
348
|
return /*#__PURE__*/_jsxs("span", {
|
|
198
349
|
className: "merchi-checkout-summary-colour-option",
|
|
199
350
|
children: [hex && /*#__PURE__*/_jsx("span", {
|
|
@@ -201,28 +352,37 @@ function ColourSelectOption(_ref4) {
|
|
|
201
352
|
backgroundColor: hex
|
|
202
353
|
},
|
|
203
354
|
className: "color-indicator"
|
|
204
|
-
}), /*#__PURE__*/
|
|
205
|
-
children: label || hex || '–'
|
|
355
|
+
}), /*#__PURE__*/_jsxs("span", {
|
|
356
|
+
children: [label || hex || '–', cost || '']
|
|
206
357
|
})]
|
|
207
358
|
});
|
|
208
359
|
}
|
|
209
|
-
function ImageSelectOption(
|
|
360
|
+
function ImageSelectOption(_ref6) {
|
|
210
361
|
var _option$value2;
|
|
211
|
-
var option =
|
|
212
|
-
selectableOptions =
|
|
213
|
-
fieldOptions =
|
|
214
|
-
product =
|
|
215
|
-
sellerProductEditable =
|
|
216
|
-
var
|
|
362
|
+
var option = _ref6.option,
|
|
363
|
+
selectableOptions = _ref6.selectableOptions,
|
|
364
|
+
fieldOptions = _ref6.fieldOptions,
|
|
365
|
+
product = _ref6.product,
|
|
366
|
+
sellerProductEditable = _ref6.sellerProductEditable;
|
|
367
|
+
var _useMerchiCheckboutCo2 = useMerchiCheckboutContext(),
|
|
368
|
+
urlApi = _useMerchiCheckboutCo2.urlApi;
|
|
369
|
+
var imageUrl = resolveOptionImageUrl(option, selectableOptions, fieldOptions, urlApi);
|
|
217
370
|
var label = (option === null || option === void 0 || (_option$value2 = option.value) === null || _option$value2 === void 0 ? void 0 : _option$value2.trim()) || '';
|
|
218
371
|
var cost = formatOptionCost(product, option, sellerProductEditable);
|
|
372
|
+
var _useState3 = useState(false),
|
|
373
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
374
|
+
imageFailed = _useState4[0],
|
|
375
|
+
setImageFailed = _useState4[1];
|
|
219
376
|
return /*#__PURE__*/_jsxs("span", {
|
|
220
377
|
className: "merchi-checkout-summary-image-select-option",
|
|
221
|
-
children: [imageUrl ? /*#__PURE__*/_jsx("img", {
|
|
378
|
+
children: [imageUrl && !imageFailed ? /*#__PURE__*/_jsx("img", {
|
|
222
379
|
className: "modal-merchi-checkout-job-info-content-img",
|
|
223
380
|
src: imageUrl,
|
|
224
381
|
alt: label || 'Selected option',
|
|
225
|
-
title: label || undefined
|
|
382
|
+
title: label || undefined,
|
|
383
|
+
onError: function onError() {
|
|
384
|
+
return setImageFailed(true);
|
|
385
|
+
}
|
|
226
386
|
}) : null, /*#__PURE__*/_jsxs("span", {
|
|
227
387
|
children: [label || '–', cost || '']
|
|
228
388
|
})]
|
|
@@ -232,27 +392,72 @@ function getOptionId(option) {
|
|
|
232
392
|
var _option$optionId;
|
|
233
393
|
return (_option$optionId = option === null || option === void 0 ? void 0 : option.optionId) !== null && _option$optionId !== void 0 ? _option$optionId : option === null || option === void 0 ? void 0 : option.id;
|
|
234
394
|
}
|
|
395
|
+
function splitSelectedOptionIds(value) {
|
|
396
|
+
if (Array.isArray(value)) {
|
|
397
|
+
return value.map(String).filter(Boolean);
|
|
398
|
+
}
|
|
399
|
+
if (value == null || value === '') return [];
|
|
400
|
+
return String(value).split(',').map(function (part) {
|
|
401
|
+
return part.trim();
|
|
402
|
+
}).filter(Boolean);
|
|
403
|
+
}
|
|
404
|
+
function resolveSelectableSelectedOptions(variation) {
|
|
405
|
+
var _variation$variationF;
|
|
406
|
+
var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
407
|
+
var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
408
|
+
var fieldType = variation === null || variation === void 0 || (_variation$variationF = variation.variationField) === null || _variation$variationF === void 0 ? void 0 : _variation$variationF.fieldType;
|
|
409
|
+
if (fieldType === FieldType.COLOUR_EXTRACT) {
|
|
410
|
+
return (variation === null || variation === void 0 ? void 0 : variation.selectedOptions) || [];
|
|
411
|
+
}
|
|
412
|
+
var selectedIds = splitSelectedOptionIds(variation === null || variation === void 0 ? void 0 : variation.value);
|
|
413
|
+
if (selectedIds.length > 0) {
|
|
414
|
+
var pools = [selectableOptions, fieldOptions];
|
|
415
|
+
var resolved = [];
|
|
416
|
+
var _iterator = _createForOfIteratorHelper(selectedIds),
|
|
417
|
+
_step;
|
|
418
|
+
try {
|
|
419
|
+
var _loop = function _loop() {
|
|
420
|
+
var id = _step.value;
|
|
421
|
+
for (var _i = 0, _pools = pools; _i < _pools.length; _i++) {
|
|
422
|
+
var pool = _pools[_i];
|
|
423
|
+
var match = pool.find(function (option) {
|
|
424
|
+
return String(getOptionId(option)) === id;
|
|
425
|
+
});
|
|
426
|
+
if (match) {
|
|
427
|
+
resolved.push(match);
|
|
428
|
+
break;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
433
|
+
_loop();
|
|
434
|
+
}
|
|
435
|
+
} catch (err) {
|
|
436
|
+
_iterator.e(err);
|
|
437
|
+
} finally {
|
|
438
|
+
_iterator.f();
|
|
439
|
+
}
|
|
440
|
+
if (resolved.length > 0) {
|
|
441
|
+
return resolved;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return (variation === null || variation === void 0 ? void 0 : variation.selectedOptions) || [];
|
|
445
|
+
}
|
|
235
446
|
function resolveTurnaroundSelectedOption(variation) {
|
|
236
447
|
var selectableOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
237
448
|
var fieldOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
238
|
-
var
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
if (selectedOptions.length > 0) {
|
|
242
|
-
return selectedOptions[0];
|
|
449
|
+
var resolved = resolveSelectableSelectedOptions(variation, selectableOptions, fieldOptions);
|
|
450
|
+
if (resolved.length > 0) {
|
|
451
|
+
return resolved[0];
|
|
243
452
|
}
|
|
244
|
-
var valueStr = value != null && value !== '' ? String(value).trim() : '';
|
|
453
|
+
var valueStr = (variation === null || variation === void 0 ? void 0 : variation.value) != null && (variation === null || variation === void 0 ? void 0 : variation.value) !== '' ? String(variation.value).trim() : '';
|
|
245
454
|
if (!valueStr) return null;
|
|
246
455
|
var pools = [selectableOptions, fieldOptions];
|
|
247
|
-
for (var
|
|
248
|
-
var pool =
|
|
249
|
-
var
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
if (byId) return byId;
|
|
253
|
-
var byValue = pool.find(function (o) {
|
|
254
|
-
var _o$value;
|
|
255
|
-
return String((_o$value = o.value) !== null && _o$value !== void 0 ? _o$value : '') === valueStr;
|
|
456
|
+
for (var _i2 = 0, _pools2 = pools; _i2 < _pools2.length; _i2++) {
|
|
457
|
+
var pool = _pools2[_i2];
|
|
458
|
+
var byValue = pool.find(function (option) {
|
|
459
|
+
var _option$value3;
|
|
460
|
+
return String((_option$value3 = option.value) !== null && _option$value3 !== void 0 ? _option$value3 : '') === valueStr;
|
|
256
461
|
});
|
|
257
462
|
if (byValue) return byValue;
|
|
258
463
|
}
|
|
@@ -269,13 +474,13 @@ function formatTurnaroundDeadline(userDeadline) {
|
|
|
269
474
|
day: 'numeric'
|
|
270
475
|
});
|
|
271
476
|
}
|
|
272
|
-
function TurnaroundOptionLabel(
|
|
273
|
-
var _option$
|
|
274
|
-
var option =
|
|
275
|
-
variationField =
|
|
276
|
-
product =
|
|
277
|
-
sellerProductEditable =
|
|
278
|
-
var days = parseInt(String((_option$
|
|
477
|
+
function TurnaroundOptionLabel(_ref7) {
|
|
478
|
+
var _option$value4, _option$value5;
|
|
479
|
+
var option = _ref7.option,
|
|
480
|
+
variationField = _ref7.variationField,
|
|
481
|
+
product = _ref7.product,
|
|
482
|
+
sellerProductEditable = _ref7.sellerProductEditable;
|
|
483
|
+
var days = parseInt(String((_option$value4 = option === null || option === void 0 ? void 0 : option.value) !== null && _option$value4 !== void 0 ? _option$value4 : ''), 10) || 0;
|
|
279
484
|
var deadline = formatTurnaroundDeadline(option === null || option === void 0 ? void 0 : option.userDeadline);
|
|
280
485
|
var shippingTimeIncluded = Boolean(variationField === null || variationField === void 0 ? void 0 : variationField.shippingTimeIncluded);
|
|
281
486
|
var deadlineLabel = shippingTimeIncluded ? 'Delivery by' : 'Produced by';
|
|
@@ -284,35 +489,35 @@ function TurnaroundOptionLabel(_ref6) {
|
|
|
284
489
|
className: "merchi-checkout-summary-turnaround-value",
|
|
285
490
|
children: [/*#__PURE__*/_jsx("span", {
|
|
286
491
|
className: "merchi-checkout-summary-turnaround-days",
|
|
287
|
-
children: days > 0 ? "".concat(days, " business day").concat(days !== 1 ? 's' : '') : (option === null || option === void 0 || (_option$
|
|
492
|
+
children: days > 0 ? "".concat(days, " business day").concat(days !== 1 ? 's' : '') : (option === null || option === void 0 || (_option$value5 = option.value) === null || _option$value5 === void 0 ? void 0 : _option$value5.trim()) || '–'
|
|
288
493
|
}), deadline && /*#__PURE__*/_jsxs("span", {
|
|
289
494
|
className: "merchi-checkout-summary-turnaround-deadline",
|
|
290
495
|
children: [deadlineLabel, " ", deadline]
|
|
291
496
|
}), cost || '']
|
|
292
497
|
});
|
|
293
498
|
}
|
|
294
|
-
function VariationOptionsInfoBody(
|
|
295
|
-
var _variation$
|
|
296
|
-
var name =
|
|
297
|
-
selectedOptions =
|
|
298
|
-
sellerProductEditable =
|
|
299
|
-
product =
|
|
300
|
-
fieldType =
|
|
301
|
-
variation =
|
|
302
|
-
|
|
303
|
-
selectableOptions =
|
|
304
|
-
|
|
305
|
-
fieldOptions =
|
|
499
|
+
function VariationOptionsInfoBody(_ref8) {
|
|
500
|
+
var _variation$variationF2;
|
|
501
|
+
var name = _ref8.name,
|
|
502
|
+
selectedOptions = _ref8.selectedOptions,
|
|
503
|
+
sellerProductEditable = _ref8.sellerProductEditable,
|
|
504
|
+
product = _ref8.product,
|
|
505
|
+
fieldType = _ref8.fieldType,
|
|
506
|
+
variation = _ref8.variation,
|
|
507
|
+
_ref8$selectableOptio = _ref8.selectableOptions,
|
|
508
|
+
selectableOptions = _ref8$selectableOptio === void 0 ? [] : _ref8$selectableOptio,
|
|
509
|
+
_ref8$fieldOptions = _ref8.fieldOptions,
|
|
510
|
+
fieldOptions = _ref8$fieldOptions === void 0 ? [] : _ref8$fieldOptions;
|
|
306
511
|
var isTurnaroundTime = fieldType === FieldType.TURNAROUND_TIME;
|
|
307
512
|
var firstOption = isTurnaroundTime ? resolveTurnaroundSelectedOption({
|
|
308
513
|
selectedOptions: selectedOptions,
|
|
309
514
|
value: variation === null || variation === void 0 ? void 0 : variation.value
|
|
310
515
|
}, selectableOptions, fieldOptions) : selectedOptions[0];
|
|
311
|
-
var isColourSelect = fieldType === FieldType.COLOUR_SELECT;
|
|
516
|
+
var isColourSelect = fieldType === FieldType.COLOUR_SELECT || fieldType === FieldType.COLOUR_EXTRACT;
|
|
312
517
|
var isImageSelect = fieldType === FieldType.IMAGE_SELECT;
|
|
313
|
-
var variationField = (_variation$
|
|
518
|
+
var variationField = (_variation$variationF2 = variation === null || variation === void 0 ? void 0 : variation.variationField) !== null && _variation$variationF2 !== void 0 ? _variation$variationF2 : {};
|
|
314
519
|
function renderOptionLabel(o) {
|
|
315
|
-
var _o$
|
|
520
|
+
var _o$value;
|
|
316
521
|
if (isTurnaroundTime) {
|
|
317
522
|
return /*#__PURE__*/_jsx(TurnaroundOptionLabel, {
|
|
318
523
|
option: o,
|
|
@@ -325,7 +530,9 @@ function VariationOptionsInfoBody(_ref7) {
|
|
|
325
530
|
return /*#__PURE__*/_jsx(ColourSelectOption, {
|
|
326
531
|
option: o,
|
|
327
532
|
selectableOptions: selectableOptions,
|
|
328
|
-
fieldOptions: fieldOptions
|
|
533
|
+
fieldOptions: fieldOptions,
|
|
534
|
+
product: product,
|
|
535
|
+
sellerProductEditable: sellerProductEditable
|
|
329
536
|
});
|
|
330
537
|
}
|
|
331
538
|
if (isImageSelect) {
|
|
@@ -338,7 +545,7 @@ function VariationOptionsInfoBody(_ref7) {
|
|
|
338
545
|
});
|
|
339
546
|
}
|
|
340
547
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
341
|
-
children: [((_o$
|
|
548
|
+
children: [((_o$value = o.value) === null || _o$value === void 0 ? void 0 : _o$value.trim()) || '–', formatOptionCost(product, o, sellerProductEditable) || '']
|
|
342
549
|
});
|
|
343
550
|
}
|
|
344
551
|
return /*#__PURE__*/_jsx(_Fragment, {
|
|
@@ -377,11 +584,11 @@ function VariationOptionsInfoBody(_ref7) {
|
|
|
377
584
|
})
|
|
378
585
|
});
|
|
379
586
|
}
|
|
380
|
-
function VariationsInfo(
|
|
381
|
-
var product =
|
|
382
|
-
quantity =
|
|
383
|
-
|
|
384
|
-
variations =
|
|
587
|
+
function VariationsInfo(_ref9) {
|
|
588
|
+
var product = _ref9.product,
|
|
589
|
+
quantity = _ref9.quantity,
|
|
590
|
+
_ref9$variations = _ref9.variations,
|
|
591
|
+
variations = _ref9$variations === void 0 ? [] : _ref9$variations;
|
|
385
592
|
return /*#__PURE__*/_jsx("div", {
|
|
386
593
|
className: "merchi-checkout-summary-variations",
|
|
387
594
|
children: variations.map(function (v, i) {
|
|
@@ -393,11 +600,11 @@ function VariationsInfo(_ref8) {
|
|
|
393
600
|
})
|
|
394
601
|
});
|
|
395
602
|
}
|
|
396
|
-
function VariationGroupInfo(
|
|
397
|
-
var group =
|
|
398
|
-
index =
|
|
399
|
-
product =
|
|
400
|
-
showSetupOnUnitPrice =
|
|
603
|
+
function VariationGroupInfo(_ref10) {
|
|
604
|
+
var group = _ref10.group,
|
|
605
|
+
index = _ref10.index,
|
|
606
|
+
product = _ref10.product,
|
|
607
|
+
showSetupOnUnitPrice = _ref10.showSetupOnUnitPrice;
|
|
401
608
|
var isResell = isProductSupplierMOD(product);
|
|
402
609
|
var quantity = group.quantity,
|
|
403
610
|
variations = group.variations;
|
|
@@ -429,8 +636,8 @@ function VariationGroupInfo(_ref9) {
|
|
|
429
636
|
});
|
|
430
637
|
}
|
|
431
638
|
export default function JobInfoContent() {
|
|
432
|
-
var
|
|
433
|
-
job =
|
|
639
|
+
var _useMerchiCheckboutCo3 = useMerchiCheckboutContext(),
|
|
640
|
+
job = _useMerchiCheckboutCo3.job;
|
|
434
641
|
var product = job.product,
|
|
435
642
|
_job$quantity = job.quantity,
|
|
436
643
|
quantity = _job$quantity === void 0 ? 0 : _job$quantity,
|
|
@@ -520,4 +727,4 @@ export default function JobInfoContent() {
|
|
|
520
727
|
})]
|
|
521
728
|
});
|
|
522
729
|
}
|
|
523
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkZhRmlsZVBkZiIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJGaWVsZFR5cGUiLCJ1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0IiwiU3VtbWFyeUFtb3VudFJvdyIsIlN1bW1hcnlGaWVsZFJvdyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImZvcm1hdENvc3QiLCJwcm9kdWN0IiwiY29zdCIsImN1cnJlbmN5Iiwic2hvd0NvZGVJZk5vU3ltYm9sIiwicHJvZHVjdFNldHVwU3VmZml4Iiwic2V0dXBQcmljZSIsIk51bWJlciIsImxhYmVsIiwic2V0dXBQZXJHcm91cCIsImNvbmNhdCIsImZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cCIsInVuaXRQcmljZSIsImlzUGRmIiwiZmlsZSIsIm1pbWV0eXBlIiwiaXNJbWFnZUZpbGUiLCJzdGFydHNXaXRoIiwibmFtZSIsInRvTG93ZXJDYXNlIiwidGVzdCIsIm9wdGlvbkltYWdlVXJsIiwib3B0aW9uIiwiX29wdGlvbiRsaW5rZWRGaWxlIiwibGlua2VkRmlsZSIsInZpZXdVcmwiLCJmaW5kTWF0Y2hpbmdPcHRpb24iLCJvcHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZmluZCIsIm8iLCJTdHJpbmciLCJvcHRpb25JZCIsInJlc29sdmVPcHRpb25Db2xvdXIiLCJfb3B0aW9uJGNvbG91ciIsIl9maW5kTWF0Y2hpbmdPcHRpb24iLCJfZmluZE1hdGNoaW5nT3B0aW9uMiIsInNlbGVjdGFibGVPcHRpb25zIiwiZmllbGRPcHRpb25zIiwiZGlyZWN0IiwiY29sb3VyIiwidHJpbSIsImZyb21TZWxlY3RhYmxlIiwicmVzb2x2ZU9wdGlvbkltYWdlVXJsIiwiZm9ybWF0T3B0aW9uQ29zdCIsInNlbGxlclByb2R1Y3RFZGl0YWJsZSIsInRvdGFsQ29zdCIsIlZhcmlhdGlvbkZpbGVQcmV2aWV3IiwiX3JlZiIsImZpbGVVcmwiLCJkb3dubG9hZFVybCIsImZpbGVOYW1lIiwiY2xhc3NOYW1lIiwiaHJlZiIsInRhcmdldCIsInJlbCIsInRpdGxlIiwiY2hpbGRyZW4iLCJzcmMiLCJhbHQiLCJWYXJpYXRpb25JbmZvQm9keSIsIl9yZWYyIiwidmFsdWUiLCJmaWxlcyIsInR5cGUiLCJpc0NvbG91clBpY2tlciIsIkNPTE9VUl9QSUNLRVIiLCJpc0ZpbGVVcGxvYWQiLCJGSUxFX1VQTE9BRCIsImhhc0ZpbGVzIiwiQm9vbGVhbiIsImRpc3BsYXlWYWx1ZSIsIm1hcCIsImluZGV4IiwiaWQiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsIlZhcmlhdGlvbkluZm8iLCJfcmVmMyIsInZhcmlhdGlvbiIsInNlbGVjdGVkT3B0aW9ucyIsInZhcmlhdGlvbkZpZWxkIiwidmFyaWF0aW9uRmlsZXMiLCJmaWVsZFR5cGUiLCJfdmFyaWF0aW9uRmllbGQkb3B0aW8iLCJpc1ZhcmlhdGlvblNlbGVjdGFibGUiLCJpc1R1cm5hcm91bmRUaW1lIiwiVFVSTkFST1VORF9USU1FIiwidXNlU2VsZWN0YWJsZURpc3BsYXkiLCJWYXJpYXRpb25PcHRpb25zSW5mb0JvZHkiLCJDb2xvdXJTZWxlY3RPcHRpb24iLCJfcmVmNCIsIl9vcHRpb24kdmFsdWUiLCJoZXgiLCJJbWFnZVNlbGVjdE9wdGlvbiIsIl9yZWY1IiwiX29wdGlvbiR2YWx1ZTIiLCJpbWFnZVVybCIsImdldE9wdGlvbklkIiwiX29wdGlvbiRvcHRpb25JZCIsInJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24iLCJfdmFyaWF0aW9uJHNlbGVjdGVkT3AiLCJ2YWx1ZVN0ciIsInBvb2xzIiwiX2kiLCJfcG9vbHMiLCJwb29sIiwiYnlJZCIsImJ5VmFsdWUiLCJfbyR2YWx1ZSIsImZvcm1hdFR1cm5hcm91bmREZWFkbGluZSIsInVzZXJEZWFkbGluZSIsInNlY29uZHMiLCJpc0Zpbml0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJ3ZWVrZGF5IiwieWVhciIsIm1vbnRoIiwiZGF5IiwiVHVybmFyb3VuZE9wdGlvbkxhYmVsIiwiX3JlZjYiLCJfb3B0aW9uJHZhbHVlMyIsIl9vcHRpb24kdmFsdWU0IiwiZGF5cyIsInBhcnNlSW50IiwiZGVhZGxpbmUiLCJzaGlwcGluZ1RpbWVJbmNsdWRlZCIsImRlYWRsaW5lTGFiZWwiLCJfcmVmNyIsIl92YXJpYXRpb24kdmFyaWF0aW9uRiIsIl9yZWY3JHNlbGVjdGFibGVPcHRpbyIsIl9yZWY3JGZpZWxkT3B0aW9ucyIsImZpcnN0T3B0aW9uIiwiaXNDb2xvdXJTZWxlY3QiLCJDT0xPVVJfU0VMRUNUIiwiaXNJbWFnZVNlbGVjdCIsIklNQUdFX1NFTEVDVCIsInJlbmRlck9wdGlvbkxhYmVsIiwiX28kdmFsdWUyIiwiaSIsIl9vJG9wdGlvbklkIiwiVmFyaWF0aW9uc0luZm8iLCJfcmVmOCIsInF1YW50aXR5IiwiX3JlZjgkdmFyaWF0aW9ucyIsInZhcmlhdGlvbnMiLCJ2IiwiVmFyaWF0aW9uR3JvdXBJbmZvIiwiX3JlZjkiLCJncm91cCIsInNob3dTZXR1cE9uVW5pdFByaWNlIiwiaXNSZXNlbGwiLCJ2aXNpYmxlVmFyaWF0aW9ucyIsImZpbHRlciIsIl92JHZhcmlhdGlvbkZpZWxkIiwiY29zdExhYmVsIiwidW5pdFByaWNlVmFsdWUiLCJncm91cENvc3QiLCJKb2JJbmZvQ29udGVudCIsIl91c2VNZXJjaGlDaGVja2JvdXRDbyIsImpvYiIsIl9qb2IkcXVhbnRpdHkiLCJfam9iJHZhcmlhdGlvbnMiLCJfam9iJHZhcmlhdGlvbnNHcm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwibmVlZHNTaGlwcGluZyIsImhhc0dyb3VwcyIsImpvYkxldmVsVmFyaWF0aW9ucyIsIl92JHZhcmlhdGlvbkZpZWxkMiIsInRvdGFsUXVhbnRpdHkiLCJyZWR1Y2UiLCJzdW0iLCJnIiwiaGFzU2V0dXBQcmljZSIsImFtb3VudCIsImxhYmVsRXh0cmEiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9Kb2JJbmZvQ29udGVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBGYUZpbGVQZGYgfSBmcm9tICdyZWFjdC1pY29ucy9mYSc7XHJcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5LCBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXggfSBmcm9tICcuL2N1cnJlbmN5JztcclxuaW1wb3J0IHtcclxuICBpc0luc3RydWN0aW9uc1R5cGUsXHJcbiAgaXNQcm9kdWN0U3VwcGxpZXJNT0QsXHJcbiAgaXNTZWxlY3RhYmxlLFxyXG4gIEZpZWxkVHlwZSxcclxufSBmcm9tICcuLi91dGlscyc7XHJcbmltcG9ydCB7IHVzZU1lcmNoaUNoZWNrYm91dENvbnRleHQgfSBmcm9tICcuL01lcmNoaUNoZWNrb3V0UHJvdmlkZXInO1xyXG5pbXBvcnQge1xyXG4gIFN1bW1hcnlBbW91bnRSb3csXHJcbiAgU3VtbWFyeUZpZWxkUm93LFxyXG59IGZyb20gJy4vQ2hlY2tvdXRTdW1tYXJ5RmllbGRzJztcclxuXHJcbmZ1bmN0aW9uIGZvcm1hdENvc3QocHJvZHVjdDogYW55LCBjb3N0OiBudW1iZXIpIHtcclxuICBjb25zdCBjdXJyZW5jeSA9IHByb2R1Y3QuY3VycmVuY3kgPyBwcm9kdWN0LmN1cnJlbmN5IDogJ0FVRCc7XHJcbiAgcmV0dXJuIGZvcm1hdEN1cnJlbmN5KGNvc3QsIHtcclxuICAgIGN1cnJlbmN5LFxyXG4gICAgc2hvd0NvZGVJZk5vU3ltYm9sOiBmYWxzZSxcclxuICB9KTtcclxufVxyXG5cclxuLyoqIFByb2R1Y3Qgc2V0dXAgZmVlIHNob3duIG5leHQgdG8gdW5pdCBwcmljZSwgbWF0Y2hpbmcgcHJvZHVjdC1mb3JtIHdvcmRpbmcuICovXHJcbmZ1bmN0aW9uIHByb2R1Y3RTZXR1cFN1ZmZpeChwcm9kdWN0OiBhbnkpIHtcclxuICBjb25zdCBzZXR1cFByaWNlID0gTnVtYmVyKHByb2R1Y3Q/LnNldHVwUHJpY2UpO1xyXG4gIGlmICghc2V0dXBQcmljZSkgcmV0dXJuICcnO1xyXG4gIGNvbnN0IGxhYmVsID0gcHJvZHVjdC5zZXR1cFBlckdyb3VwID8gJ3NldHVwIHBlciBncm91cCcgOiAnc2V0dXAnO1xyXG4gIHJldHVybiBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIHNldHVwUHJpY2UpfSAke2xhYmVsfWA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cChwcm9kdWN0OiBhbnkpIHtcclxuICByZXR1cm4gYCR7Zm9ybWF0Q29zdChwcm9kdWN0LCBOdW1iZXIocHJvZHVjdD8udW5pdFByaWNlKSB8fCAwKX0ke3Byb2R1Y3RTZXR1cFN1ZmZpeChwcm9kdWN0KX1gO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1BkZihmaWxlOiBhbnkpIHtcclxuICBjb25zdCBtaW1ldHlwZSA9IGZpbGU/Lm1pbWV0eXBlIHx8ICcnO1xyXG4gIHJldHVybiBtaW1ldHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicgfHwgbWltZXR5cGUgPT09ICdhcHBsaWNhdGlvbi94LXBkZic7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSW1hZ2VGaWxlKGZpbGU6IGFueSkge1xyXG4gIGNvbnN0IG1pbWV0eXBlID0gZmlsZT8ubWltZXR5cGUgfHwgJyc7XHJcbiAgaWYgKG1pbWV0eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSByZXR1cm4gdHJ1ZTtcclxuICBjb25zdCBuYW1lID0gKGZpbGU/Lm5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgcmV0dXJuIC9cXC4oanBlP2d8cG5nfGdpZnx3ZWJwfHN2Z3xibXApJC8udGVzdChuYW1lKTtcclxufVxyXG5cclxuZnVuY3Rpb24gb3B0aW9uSW1hZ2VVcmwob3B0aW9uOiBhbnkpIHtcclxuICByZXR1cm4gb3B0aW9uPy5saW5rZWRGaWxlPy52aWV3VXJsIHx8ICcnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kTWF0Y2hpbmdPcHRpb24ob3B0aW9uOiBhbnksIG9wdGlvbnM6IGFueVtdID0gW10pIHtcclxuICByZXR1cm4gb3B0aW9ucy5maW5kKChvKSA9PiBTdHJpbmcoby5vcHRpb25JZCkgPT09IFN0cmluZyhvcHRpb24/Lm9wdGlvbklkKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmVPcHRpb25Db2xvdXIoXHJcbiAgb3B0aW9uOiBhbnksXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM6IGFueVtdID0gW10sXHJcbiAgZmllbGRPcHRpb25zOiBhbnlbXSA9IFtdXHJcbikge1xyXG4gIGNvbnN0IGRpcmVjdCA9IG9wdGlvbj8uY29sb3VyPy50cmltKCk7XHJcbiAgaWYgKGRpcmVjdCkgcmV0dXJuIGRpcmVjdDtcclxuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKT8uY29sb3VyPy50cmltKCk7XHJcbiAgaWYgKGZyb21TZWxlY3RhYmxlKSByZXR1cm4gZnJvbVNlbGVjdGFibGU7XHJcbiAgcmV0dXJuIGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIGZpZWxkT3B0aW9ucyk/LmNvbG91cj8udHJpbSgpIHx8ICcnO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZXNvbHZlT3B0aW9uSW1hZ2VVcmwoXHJcbiAgb3B0aW9uOiBhbnksXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM6IGFueVtdID0gW10sXHJcbiAgZmllbGRPcHRpb25zOiBhbnlbXSA9IFtdXHJcbikge1xyXG4gIGNvbnN0IGRpcmVjdCA9IG9wdGlvbkltYWdlVXJsKG9wdGlvbik7XHJcbiAgaWYgKGRpcmVjdCkgcmV0dXJuIGRpcmVjdDtcclxuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9IG9wdGlvbkltYWdlVXJsKFxyXG4gICAgZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgc2VsZWN0YWJsZU9wdGlvbnMpXHJcbiAgKTtcclxuICBpZiAoZnJvbVNlbGVjdGFibGUpIHJldHVybiBmcm9tU2VsZWN0YWJsZTtcclxuICByZXR1cm4gb3B0aW9uSW1hZ2VVcmwoZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbiwgZmllbGRPcHRpb25zKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdE9wdGlvbkNvc3QoXHJcbiAgcHJvZHVjdDogYW55LFxyXG4gIG9wdGlvbjogYW55LFxyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZTogYm9vbGVhblxyXG4pIHtcclxuICBpZiAoIW9wdGlvbj8udG90YWxDb3N0IHx8IHNlbGxlclByb2R1Y3RFZGl0YWJsZSkgcmV0dXJuIG51bGw7XHJcbiAgcmV0dXJuIGAgKyAke2Zvcm1hdENvc3QocHJvZHVjdCwgb3B0aW9uLnRvdGFsQ29zdCl9YDtcclxufVxyXG5cclxuZnVuY3Rpb24gVmFyaWF0aW9uRmlsZVByZXZpZXcoeyBmaWxlIH06IHsgZmlsZTogYW55IH0pIHtcclxuICBjb25zdCBmaWxlVXJsID0gZmlsZT8udmlld1VybCB8fCBmaWxlPy5kb3dubG9hZFVybCB8fCAnJztcclxuICBjb25zdCBmaWxlTmFtZSA9IGZpbGU/Lm5hbWUgfHwgJ0ZpbGUnO1xyXG5cclxuICBpZiAoaXNQZGYoZmlsZSkpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxhXHJcbiAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1maWxlLWxpbmsnXHJcbiAgICAgICAgaHJlZj17ZmlsZVVybH1cclxuICAgICAgICB0YXJnZXQ9J19ibGFuaydcclxuICAgICAgICByZWw9J25vb3BlbmVyIG5vcmVmZXJyZXInXHJcbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxyXG4gICAgICA+XHJcbiAgICAgICAgPEZhRmlsZVBkZiBhcmlhLWhpZGRlbiAvPlxyXG4gICAgICAgIDxzcGFuPntmaWxlTmFtZX08L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNJbWFnZUZpbGUoZmlsZSkgJiYgZmlsZVVybCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGltZ1xyXG4gICAgICAgIGNsYXNzTmFtZT0nbW9kYWwtbWVyY2hpLWNoZWNrb3V0LWpvYi1pbmZvLWNvbnRlbnQtaW1nJ1xyXG4gICAgICAgIHNyYz17ZmlsZVVybH1cclxuICAgICAgICBhbHQ9e2ZpbGVOYW1lfVxyXG4gICAgICAgIHRpdGxlPXtmaWxlTmFtZX1cclxuICAgICAgLz5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoZmlsZVVybCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGFcclxuICAgICAgICBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtbGluaydcclxuICAgICAgICBocmVmPXtmaWxlVXJsfVxyXG4gICAgICAgIHRhcmdldD0nX2JsYW5rJ1xyXG4gICAgICAgIHJlbD0nbm9vcGVuZXIgbm9yZWZlcnJlcidcclxuICAgICAgICB0aXRsZT17ZmlsZU5hbWV9XHJcbiAgICAgID5cclxuICAgICAgICB7ZmlsZU5hbWV9XHJcbiAgICAgIDwvYT5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm9Cb2R5KHsgY29zdCwgbmFtZSwgcHJvZHVjdCwgdmFsdWUsIGZpbGVzLCB0eXBlIH06IGFueSkge1xyXG4gIGNvbnN0IGlzQ29sb3VyUGlja2VyID0gdHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9QSUNLRVI7XHJcbiAgY29uc3QgaXNGaWxlVXBsb2FkID0gdHlwZSA9PT0gRmllbGRUeXBlLkZJTEVfVVBMT0FEO1xyXG4gIGNvbnN0IGhhc0ZpbGVzID0gQm9vbGVhbihmaWxlcz8ubGVuZ3RoKTtcclxuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBpc0NvbG91clBpY2tlciB8fCAoaXNGaWxlVXBsb2FkICYmIGhhc0ZpbGVzKSA/IG51bGwgOiB2YWx1ZTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1sYWJlbCc+e25hbWV9PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPlxyXG4gICAgICAgIHtoYXNGaWxlcyAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZmlsZS1wcmV2aWV3cyc+XHJcbiAgICAgICAgICAgIHtmaWxlcy5tYXAoKGZpbGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKFxyXG4gICAgICAgICAgICAgIDxWYXJpYXRpb25GaWxlUHJldmlld1xyXG4gICAgICAgICAgICAgICAga2V5PXtmaWxlLnZpZXdVcmwgfHwgZmlsZS5pZCB8fCBgJHtuYW1lfS1maWxlLSR7aW5kZXh9YH1cclxuICAgICAgICAgICAgICAgIGZpbGU9e2ZpbGV9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtpc0NvbG91clBpY2tlciAmJiB2YWx1ZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktY29sb3VyLXZhbHVlJz5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlIH19XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuPnt2YWx1ZX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtkaXNwbGF5VmFsdWUgJiYgZGlzcGxheVZhbHVlfVxyXG4gICAgICAgIHtjb3N0ID8gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBjb3N0KX1gIDogJyd9XHJcbiAgICAgICAgeyFoYXNGaWxlcyAmJiAhdmFsdWUgJiYgJy0nfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm8oeyBwcm9kdWN0LCB2YXJpYXRpb24gfTogYW55KSB7XHJcbiAgY29uc3QgeyBzZWxlY3RlZE9wdGlvbnMsIHZhcmlhdGlvbkZpZWxkLCB2YXJpYXRpb25GaWxlcywgc2VsZWN0YWJsZU9wdGlvbnMgfSA9XHJcbiAgICB2YXJpYXRpb247XHJcbiAgY29uc3QgeyBmaWVsZFR5cGUsIHNlbGxlclByb2R1Y3RFZGl0YWJsZSwgb3B0aW9uczogZmllbGRPcHRpb25zID0gW10gfSA9XHJcbiAgICB2YXJpYXRpb25GaWVsZDtcclxuICBjb25zdCBpc1ZhcmlhdGlvblNlbGVjdGFibGUgPSBpc1NlbGVjdGFibGUoZmllbGRUeXBlKTtcclxuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xyXG4gIGNvbnN0IG9wdGlvbnMgPSBzZWxlY3RlZE9wdGlvbnM7XHJcbiAgY29uc3QgdXNlU2VsZWN0YWJsZURpc3BsYXkgPVxyXG4gICAgaXNWYXJpYXRpb25TZWxlY3RhYmxlICYmXHJcbiAgICAoQm9vbGVhbihvcHRpb25zPy5sZW5ndGgpIHx8IChpc1R1cm5hcm91bmRUaW1lICYmIHZhcmlhdGlvbi52YWx1ZSkpO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uJz5cclxuICAgICAge3VzZVNlbGVjdGFibGVEaXNwbGF5ID8gKFxyXG4gICAgICAgIDxWYXJpYXRpb25PcHRpb25zSW5mb0JvZHlcclxuICAgICAgICAgIG5hbWU9e3ZhcmlhdGlvbkZpZWxkLm5hbWV9XHJcbiAgICAgICAgICBmaWVsZFR5cGU9e2ZpZWxkVHlwZX1cclxuICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XHJcbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxyXG4gICAgICAgICAgc2VsZWN0ZWRPcHRpb25zPXtvcHRpb25zfVxyXG4gICAgICAgICAgdmFyaWF0aW9uPXt2YXJpYXRpb259XHJcbiAgICAgICAgICBzZWxlY3RhYmxlT3B0aW9ucz17c2VsZWN0YWJsZU9wdGlvbnN9XHJcbiAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cclxuICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICkgOiAoXHJcbiAgICAgICAgPFZhcmlhdGlvbkluZm9Cb2R5XHJcbiAgICAgICAgICBuYW1lPXt2YXJpYXRpb25GaWVsZC5uYW1lfVxyXG4gICAgICAgICAgdHlwZT17dmFyaWF0aW9uRmllbGQuZmllbGRUeXBlfVxyXG4gICAgICAgICAgdmFsdWU9e3ZhcmlhdGlvbi52YWx1ZX1cclxuICAgICAgICAgIGZpbGVzPXt2YXJpYXRpb25GaWxlc31cclxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XHJcbiAgICAgICAgICBjb3N0PXtzZWxsZXJQcm9kdWN0RWRpdGFibGUgPyAwIDogdmFyaWF0aW9uLmNvc3R9XHJcbiAgICAgICAgLz5cclxuICAgICAgKX1cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIENvbG91clNlbGVjdE9wdGlvbih7XHJcbiAgb3B0aW9uLFxyXG4gIHNlbGVjdGFibGVPcHRpb25zLFxyXG4gIGZpZWxkT3B0aW9ucyxcclxufToge1xyXG4gIG9wdGlvbjogYW55O1xyXG4gIHNlbGVjdGFibGVPcHRpb25zPzogYW55W107XHJcbiAgZmllbGRPcHRpb25zPzogYW55W107XHJcbn0pIHtcclxuICBjb25zdCBsYWJlbCA9IG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAnJztcclxuICBjb25zdCBoZXggPSByZXNvbHZlT3B0aW9uQ29sb3VyKG9wdGlvbiwgc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9ucyk7XHJcbiAgcmV0dXJuIChcclxuICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktY29sb3VyLW9wdGlvbic+XHJcbiAgICAgIHtoZXggJiYgKFxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGhleCB9fVxyXG4gICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXHJcbiAgICAgICAgLz5cclxuICAgICAgKX1cclxuICAgICAgPHNwYW4+e2xhYmVsIHx8IGhleCB8fCAn4oCTJ308L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gSW1hZ2VTZWxlY3RPcHRpb24oe1xyXG4gIG9wdGlvbixcclxuICBzZWxlY3RhYmxlT3B0aW9ucyxcclxuICBmaWVsZE9wdGlvbnMsXHJcbiAgcHJvZHVjdCxcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXHJcbn06IHtcclxuICBvcHRpb246IGFueTtcclxuICBzZWxlY3RhYmxlT3B0aW9ucz86IGFueVtdO1xyXG4gIGZpZWxkT3B0aW9ucz86IGFueVtdO1xyXG4gIHByb2R1Y3Q6IGFueTtcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW47XHJcbn0pIHtcclxuICBjb25zdCBpbWFnZVVybCA9IHJlc29sdmVPcHRpb25JbWFnZVVybChvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zLCBmaWVsZE9wdGlvbnMpO1xyXG4gIGNvbnN0IGxhYmVsID0gb3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICcnO1xyXG4gIGNvbnN0IGNvc3QgPSBmb3JtYXRPcHRpb25Db3N0KHByb2R1Y3QsIG9wdGlvbiwgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktaW1hZ2Utc2VsZWN0LW9wdGlvbic+XHJcbiAgICAgIHtpbWFnZVVybCA/IChcclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50LWltZydcclxuICAgICAgICAgIHNyYz17aW1hZ2VVcmx9XHJcbiAgICAgICAgICBhbHQ9e2xhYmVsIHx8ICdTZWxlY3RlZCBvcHRpb24nfVxyXG4gICAgICAgICAgdGl0bGU9e2xhYmVsIHx8IHVuZGVmaW5lZH1cclxuICAgICAgICAvPlxyXG4gICAgICApIDogbnVsbH1cclxuICAgICAgPHNwYW4+e2xhYmVsIHx8ICfigJMnfXtjb3N0IHx8ICcnfTwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRPcHRpb25JZChvcHRpb246IGFueSkge1xyXG4gIHJldHVybiBvcHRpb24/Lm9wdGlvbklkID8/IG9wdGlvbj8uaWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24oXHJcbiAgdmFyaWF0aW9uOiBhbnksXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM6IGFueVtdID0gW10sXHJcbiAgZmllbGRPcHRpb25zOiBhbnlbXSA9IFtdXHJcbikge1xyXG4gIGNvbnN0IHsgc2VsZWN0ZWRPcHRpb25zID0gW10sIHZhbHVlIH0gPSB2YXJpYXRpb247XHJcbiAgaWYgKHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zWzBdO1xyXG4gIH1cclxuICBjb25zdCB2YWx1ZVN0ciA9IHZhbHVlICE9IG51bGwgJiYgdmFsdWUgIT09ICcnID8gU3RyaW5nKHZhbHVlKS50cmltKCkgOiAnJztcclxuICBpZiAoIXZhbHVlU3RyKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgY29uc3QgcG9vbHMgPSBbc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9uc107XHJcbiAgZm9yIChjb25zdCBwb29sIG9mIHBvb2xzKSB7XHJcbiAgICBjb25zdCBieUlkID0gcG9vbC5maW5kKFxyXG4gICAgICAobzogYW55KSA9PiBTdHJpbmcoZ2V0T3B0aW9uSWQobykpID09PSB2YWx1ZVN0clxyXG4gICAgKTtcclxuICAgIGlmIChieUlkKSByZXR1cm4gYnlJZDtcclxuICAgIGNvbnN0IGJ5VmFsdWUgPSBwb29sLmZpbmQoXHJcbiAgICAgIChvOiBhbnkpID0+IFN0cmluZyhvLnZhbHVlID8/ICcnKSA9PT0gdmFsdWVTdHJcclxuICAgICk7XHJcbiAgICBpZiAoYnlWYWx1ZSkgcmV0dXJuIGJ5VmFsdWU7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmb3JtYXRUdXJuYXJvdW5kRGVhZGxpbmUodXNlckRlYWRsaW5lOiBhbnkpIHtcclxuICBpZiAoIXVzZXJEZWFkbGluZSkgcmV0dXJuIG51bGw7XHJcbiAgY29uc3Qgc2Vjb25kcyA9IE51bWJlcih1c2VyRGVhZGxpbmUpO1xyXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHNlY29uZHMpIHx8IHNlY29uZHMgPD0gMCkgcmV0dXJuIG51bGw7XHJcbiAgcmV0dXJuIG5ldyBEYXRlKHNlY29uZHMgKiAxMDAwKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUFVJywge1xyXG4gICAgd2Vla2RheTogJ2xvbmcnLFxyXG4gICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgbW9udGg6ICdsb25nJyxcclxuICAgIGRheTogJ251bWVyaWMnLFxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBUdXJuYXJvdW5kT3B0aW9uTGFiZWwoe1xyXG4gIG9wdGlvbixcclxuICB2YXJpYXRpb25GaWVsZCxcclxuICBwcm9kdWN0LFxyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZSxcclxufToge1xyXG4gIG9wdGlvbjogYW55O1xyXG4gIHZhcmlhdGlvbkZpZWxkOiBhbnk7XHJcbiAgcHJvZHVjdDogYW55O1xyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZTogYm9vbGVhbjtcclxufSkge1xyXG4gIGNvbnN0IGRheXMgPSBwYXJzZUludChTdHJpbmcob3B0aW9uPy52YWx1ZSA/PyAnJyksIDEwKSB8fCAwO1xyXG4gIGNvbnN0IGRlYWRsaW5lID0gZm9ybWF0VHVybmFyb3VuZERlYWRsaW5lKG9wdGlvbj8udXNlckRlYWRsaW5lKTtcclxuICBjb25zdCBzaGlwcGluZ1RpbWVJbmNsdWRlZCA9IEJvb2xlYW4odmFyaWF0aW9uRmllbGQ/LnNoaXBwaW5nVGltZUluY2x1ZGVkKTtcclxuICBjb25zdCBkZWFkbGluZUxhYmVsID0gc2hpcHBpbmdUaW1lSW5jbHVkZWQgPyAnRGVsaXZlcnkgYnknIDogJ1Byb2R1Y2VkIGJ5JztcclxuICBjb25zdCBjb3N0ID0gZm9ybWF0T3B0aW9uQ29zdChwcm9kdWN0LCBvcHRpb24sIHNlbGxlclByb2R1Y3RFZGl0YWJsZSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8c3BhbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXR1cm5hcm91bmQtdmFsdWUnPlxyXG4gICAgICA8c3BhbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXR1cm5hcm91bmQtZGF5cyc+XHJcbiAgICAgICAge2RheXMgPiAwXHJcbiAgICAgICAgICA/IGAke2RheXN9IGJ1c2luZXNzIGRheSR7ZGF5cyAhPT0gMSA/ICdzJyA6ICcnfWBcclxuICAgICAgICAgIDogKG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAn4oCTJyl9XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAge2RlYWRsaW5lICYmIChcclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXR1cm5hcm91bmQtZGVhZGxpbmUnPlxyXG4gICAgICAgICAge2RlYWRsaW5lTGFiZWx9IHtkZWFkbGluZX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICl9XHJcbiAgICAgIHtjb3N0IHx8ICcnfVxyXG4gICAgPC9zcGFuPlxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keSh7XHJcbiAgbmFtZSxcclxuICBzZWxlY3RlZE9wdGlvbnMsXHJcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxyXG4gIHByb2R1Y3QsXHJcbiAgZmllbGRUeXBlLFxyXG4gIHZhcmlhdGlvbixcclxuICBzZWxlY3RhYmxlT3B0aW9ucyA9IFtdLFxyXG4gIGZpZWxkT3B0aW9ucyA9IFtdLFxyXG59OiBhbnkpIHtcclxuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xyXG4gIGNvbnN0IGZpcnN0T3B0aW9uID0gaXNUdXJuYXJvdW5kVGltZVxyXG4gICAgPyByZXNvbHZlVHVybmFyb3VuZFNlbGVjdGVkT3B0aW9uKFxyXG4gICAgICAgIHsgc2VsZWN0ZWRPcHRpb25zLCB2YWx1ZTogdmFyaWF0aW9uPy52YWx1ZSB9LFxyXG4gICAgICAgIHNlbGVjdGFibGVPcHRpb25zLFxyXG4gICAgICAgIGZpZWxkT3B0aW9uc1xyXG4gICAgICApXHJcbiAgICA6IHNlbGVjdGVkT3B0aW9uc1swXTtcclxuICBjb25zdCBpc0NvbG91clNlbGVjdCA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1Q7XHJcbiAgY29uc3QgaXNJbWFnZVNlbGVjdCA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLklNQUdFX1NFTEVDVDtcclxuICBjb25zdCB2YXJpYXRpb25GaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQgPz8ge307XHJcblxyXG4gIGZ1bmN0aW9uIHJlbmRlck9wdGlvbkxhYmVsKG86IGFueSkge1xyXG4gICAgaWYgKGlzVHVybmFyb3VuZFRpbWUpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8VHVybmFyb3VuZE9wdGlvbkxhYmVsXHJcbiAgICAgICAgICBvcHRpb249e299XHJcbiAgICAgICAgICB2YXJpYXRpb25GaWVsZD17dmFyaWF0aW9uRmllbGR9XHJcbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XHJcbiAgICAgICAgLz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChpc0NvbG91clNlbGVjdCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxDb2xvdXJTZWxlY3RPcHRpb25cclxuICAgICAgICAgIG9wdGlvbj17b31cclxuICAgICAgICAgIHNlbGVjdGFibGVPcHRpb25zPXtzZWxlY3RhYmxlT3B0aW9uc31cclxuICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNJbWFnZVNlbGVjdCkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxJbWFnZVNlbGVjdE9wdGlvblxyXG4gICAgICAgICAgb3B0aW9uPXtvfVxyXG4gICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxyXG4gICAgICAgICAgZmllbGRPcHRpb25zPXtmaWVsZE9wdGlvbnN9XHJcbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlPXtzZWxsZXJQcm9kdWN0RWRpdGFibGV9XHJcbiAgICAgICAgLz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAge28udmFsdWU/LnRyaW0oKSB8fCAn4oCTJ31cclxuICAgICAgICB7Zm9ybWF0T3B0aW9uQ29zdChwcm9kdWN0LCBvLCBzZWxsZXJQcm9kdWN0RWRpdGFibGUpIHx8ICcnfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAge3NlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAxICYmICFpc1R1cm5hcm91bmRUaW1lID8gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tbGFiZWwnPntuYW1lfTwvZGl2PlxyXG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlIGxpc3QtdW5zdHlsZWQgbS0wJz5cclxuICAgICAgICAgICAge3NlbGVjdGVkT3B0aW9ucy5tYXAoKG86IGFueSwgaTogbnVtYmVyKSA9PiAoXHJcbiAgICAgICAgICAgICAgPGxpIGtleT17YCR7aX0tb3B0aW9uLWtleS0ke28ub3B0aW9uSWQgPz8gaX1gfT5cclxuICAgICAgICAgICAgICAgIHtyZW5kZXJPcHRpb25MYWJlbChvKX1cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICApKX1cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICkgOiBmaXJzdE9wdGlvbiA/IChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXJvdyc+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tdmFsdWUnPlxyXG4gICAgICAgICAgICB7cmVuZGVyT3B0aW9uTGFiZWwoZmlyc3RPcHRpb24pfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICkgOiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1yb3cnPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1sYWJlbCc+e25hbWV9PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz4tPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICA8Lz5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBWYXJpYXRpb25zSW5mbyh7IHByb2R1Y3QsIHF1YW50aXR5LCB2YXJpYXRpb25zID0gW10gfTogYW55KSB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb25zJz5cclxuICAgICAge3ZhcmlhdGlvbnMubWFwKCh2OiBhbnksIGk6IG51bWJlcikgPT5cclxuICAgICAgICAhaXNJbnN0cnVjdGlvbnNUeXBlKHYudmFyaWF0aW9uRmllbGQuZmllbGRUeXBlKSA/IChcclxuICAgICAgICAgIDxWYXJpYXRpb25JbmZvXHJcbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cclxuICAgICAgICAgICAgdmFyaWF0aW9uPXt2fVxyXG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgICBrZXk9e2l9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICkgOiBudWxsXHJcbiAgICAgICl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBWYXJpYXRpb25Hcm91cEluZm8oe1xyXG4gIGdyb3VwLFxyXG4gIGluZGV4LFxyXG4gIHByb2R1Y3QsXHJcbiAgc2hvd1NldHVwT25Vbml0UHJpY2UsXHJcbn06IGFueSkge1xyXG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XHJcbiAgY29uc3QgeyBxdWFudGl0eSwgdmFyaWF0aW9ucyB9ID0gZ3JvdXA7XHJcbiAgY29uc3QgdmlzaWJsZVZhcmlhdGlvbnMgPSAodmFyaWF0aW9ucyA/PyBbXSkuZmlsdGVyKFxyXG4gICAgKHY6IGFueSkgPT4gIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2Py52YXJpYXRpb25GaWVsZD8uZmllbGRUeXBlKVxyXG4gICk7XHJcbiAgY29uc3QgY29zdExhYmVsID0gaXNSZXNlbGwgPyAnVW5pdCBDb3N0JyA6ICdHcm91cCBDb3N0JztcclxuICBjb25zdCB1bml0UHJpY2VWYWx1ZSA9IHNob3dTZXR1cE9uVW5pdFByaWNlXHJcbiAgICA/IGZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cChwcm9kdWN0KVxyXG4gICAgOiBmb3JtYXRDb3N0KHByb2R1Y3QsIE51bWJlcihwcm9kdWN0Py51bml0UHJpY2UpIHx8IDApO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1ncm91cCc+XHJcbiAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1vcmRlci1kZXRhaWwtdGl0bGUnPlxyXG4gICAgICAgIEdyb3VwIHtpbmRleCArIDF9IEluZm9ybWF0aW9uXHJcbiAgICAgIDwvc3Ryb25nPlxyXG4gICAgICB7IWlzUmVzZWxsICYmIHF1YW50aXR5ID4gMCAmJiAoXHJcbiAgICAgICAgPFN1bW1hcnlGaWVsZFJvdyBsYWJlbD0nUXVhbnRpdHknIHZhbHVlPXtxdWFudGl0eX0gLz5cclxuICAgICAgKX1cclxuICAgICAgPFN1bW1hcnlGaWVsZFJvdyBsYWJlbD0nVW5pdCBQcmljZScgdmFsdWU9e3VuaXRQcmljZVZhbHVlfSAvPlxyXG4gICAgICB7dmlzaWJsZVZhcmlhdGlvbnMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgPFZhcmlhdGlvbnNJbmZvXHJcbiAgICAgICAgICBxdWFudGl0eT17cXVhbnRpdHl9XHJcbiAgICAgICAgICB2YXJpYXRpb25zPXt2YXJpYXRpb25zfVxyXG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAvPlxyXG4gICAgICApfVxyXG4gICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZ3JvdXAtY29zdCc+XHJcbiAgICAgICAge2Nvc3RMYWJlbH06IHtmb3JtYXRDb3N0KHByb2R1Y3QsIGdyb3VwLmdyb3VwQ29zdCl9XHJcbiAgICAgIDwvc3Ryb25nPlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEpvYkluZm9Db250ZW50KCkge1xyXG4gIGNvbnN0IHsgam9iIH0gPSB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0KCk7XHJcbiAgY29uc3QgeyBwcm9kdWN0LCBxdWFudGl0eSA9IDAsIHZhcmlhdGlvbnMgPSBbXSwgdmFyaWF0aW9uc0dyb3VwcyA9IFtdIH0gPSBqb2I7XHJcbiAgY29uc3QgeyBuZWVkc1NoaXBwaW5nIH0gPSBwcm9kdWN0O1xyXG4gIGNvbnN0IHRvdGFsQ29zdCA9IGN1cnJlbmN5VG90YWxDb3N0U2hvd0luY1RheChqb2IpO1xyXG4gIGNvbnN0IGlzUmVzZWxsID0gaXNQcm9kdWN0U3VwcGxpZXJNT0QocHJvZHVjdCk7XHJcbiAgY29uc3QgaGFzR3JvdXBzID0gdmFyaWF0aW9uc0dyb3Vwcy5sZW5ndGggPiAwO1xyXG4gIGNvbnN0IGpvYkxldmVsVmFyaWF0aW9ucyA9ICh2YXJpYXRpb25zID8/IFtdKS5maWx0ZXIoXHJcbiAgICAodjogYW55KSA9PiAhaXNJbnN0cnVjdGlvbnNUeXBlKHY/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGUpXHJcbiAgKTtcclxuICBjb25zdCB0b3RhbFF1YW50aXR5ID0gaGFzR3JvdXBzXHJcbiAgICA/IHZhcmlhdGlvbnNHcm91cHMucmVkdWNlKFxyXG4gICAgICAgIChzdW06IG51bWJlciwgZzogYW55KSA9PiBzdW0gKyAoTnVtYmVyKGcucXVhbnRpdHkpIHx8IDApLFxyXG4gICAgICAgIDBcclxuICAgICAgKVxyXG4gICAgOiBOdW1iZXIocXVhbnRpdHkpIHx8IDA7XHJcbiAgY29uc3Qgc2V0dXBQZXJHcm91cCA9IEJvb2xlYW4ocHJvZHVjdD8uc2V0dXBQZXJHcm91cCk7XHJcbiAgY29uc3QgaGFzU2V0dXBQcmljZSA9IE51bWJlcihwcm9kdWN0Py5zZXR1cFByaWNlKSA+IDA7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbW9kYWwtbWVyY2hpLWNoZWNrb3V0LWpvYi1pbmZvLWNvbnRlbnQgbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnknPlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktc2VjdGlvbi10aXRsZSc+e3Byb2R1Y3QubmFtZX08L2Rpdj5cclxuICAgICAge2hhc0dyb3VwcyAmJiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWdyb3Vwcyc+XHJcbiAgICAgICAgICB7dmFyaWF0aW9uc0dyb3Vwcy5tYXAoKGc6IGFueSwgaTogbnVtYmVyKSA9PlxyXG4gICAgICAgICAgICBnLnF1YW50aXR5ID8gKFxyXG4gICAgICAgICAgICAgIDxWYXJpYXRpb25Hcm91cEluZm9cclxuICAgICAgICAgICAgICAgIGdyb3VwPXtnfVxyXG4gICAgICAgICAgICAgICAga2V5PXtgJHtpfS1qb2ItaW5mby1jb250ZW50YH1cclxuICAgICAgICAgICAgICAgIGluZGV4PXtpfVxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgICAgICAgIHNob3dTZXR1cE9uVW5pdFByaWNlPXtzZXR1cFBlckdyb3VwfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICkgOiBudWxsXHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgICB7IWhhc0dyb3VwcyAmJiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXN0YW5kYWxvbmUnPlxyXG4gICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LW9yZGVyLWRldGFpbC10aXRsZSc+XHJcbiAgICAgICAgICAgIE9yZGVyIEluZm9ybWF0aW9uXHJcbiAgICAgICAgICA8L3N0cm9uZz5cclxuICAgICAgICAgIHtxdWFudGl0eSA+IDAgJiYgKFxyXG4gICAgICAgICAgICA8U3VtbWFyeUZpZWxkUm93IGxhYmVsPSdRdWFudGl0eScgdmFsdWU9e3F1YW50aXR5fSAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxTdW1tYXJ5RmllbGRSb3dcclxuICAgICAgICAgICAgbGFiZWw9J1VuaXQgUHJpY2UnXHJcbiAgICAgICAgICAgIHZhbHVlPXtmb3JtYXRVbml0UHJpY2VXaXRoU2V0dXAocHJvZHVjdCl9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAge2pvYkxldmVsVmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgPFZhcmlhdGlvbnNJbmZvXHJcbiAgICAgICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxyXG4gICAgICAgICAgICAgIHZhcmlhdGlvbnM9e3ZhcmlhdGlvbnN9XHJcbiAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHtoYXNHcm91cHMgJiYgam9iTGV2ZWxWYXJpYXRpb25zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cclxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1vcmRlci1kZXRhaWwtdGl0bGUnPlxyXG4gICAgICAgICAgICBPcmRlciBJbmZvcm1hdGlvblxyXG4gICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICA8VmFyaWF0aW9uc0luZm9cclxuICAgICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxyXG4gICAgICAgICAgICB2YXJpYXRpb25zPXt2YXJpYXRpb25zfVxyXG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKX1cclxuICAgICAgeyFpc1Jlc2VsbCAmJiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXRvdGFsJz5cclxuICAgICAgICAgIHt0b3RhbFF1YW50aXR5ID4gMCAmJiAoXHJcbiAgICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbC1xdWFudGl0eSdcclxuICAgICAgICAgICAgICBsYWJlbD0nVG90YWwgUXVhbnRpdHknXHJcbiAgICAgICAgICAgICAgYW1vdW50PXt0b3RhbFF1YW50aXR5fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIHtoYXNHcm91cHMgJiYgaGFzU2V0dXBQcmljZSAmJiAhc2V0dXBQZXJHcm91cCAmJiAoXHJcbiAgICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XHJcbiAgICAgICAgICAgICAgbGFiZWw9J1NldHVwJ1xyXG4gICAgICAgICAgICAgIGFtb3VudD17Zm9ybWF0Q29zdChwcm9kdWN0LCBOdW1iZXIocHJvZHVjdC5zZXR1cFByaWNlKSl9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPFN1bW1hcnlBbW91bnRSb3dcclxuICAgICAgICAgICAgbGFiZWw9J1RvdGFsIE9yZGVyIENvc3QnXHJcbiAgICAgICAgICAgIGxhYmVsRXh0cmE9e1xyXG4gICAgICAgICAgICAgIG5lZWRzU2hpcHBpbmcgPyAoXHJcbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbC1ub3RlJz4gZXggU2hpcG1lbnQ8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICkgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhbW91bnQ9e3RvdGFsQ29zdH1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHshIShpc1Jlc2VsbCAmJiAhaGFzR3JvdXBzKSAmJiAoXHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wJz5cclxuICAgICAgICAgICAge2lzUmVzZWxsID8gJ0FwcHJveGltYXRlIFVuaXQnIDogJ1RvdGFsJ30gQ29zdFxyXG4gICAgICAgICAgPC9zdHJvbmc+eycgJ31cclxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtYi0wIGQtYmxvY2snPnt0b3RhbENvc3R9PC9zdHJvbmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWixPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixTQUFTQyxTQUFTLFFBQVEsZ0JBQWdCO0FBQzFDLFNBQVNDLGNBQWMsRUFBRUMsMkJBQTJCLFFBQVEsWUFBWTtBQUN4RSxTQUNFQyxrQkFBa0IsRUFDbEJDLG9CQUFvQixFQUNwQkMsWUFBWSxFQUNaQyxTQUFTLFFBQ0osVUFBVTtBQUNqQixTQUFTQyx5QkFBeUIsUUFBUSwwQkFBMEI7QUFDcEUsU0FDRUMsZ0JBQWdCLEVBQ2hCQyxlQUFlLFFBQ1YseUJBQXlCO0FBQUMsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBQUEsU0FBQUMsSUFBQSxJQUFBQyxLQUFBO0FBQUEsU0FBQUMsUUFBQSxJQUFBQyxTQUFBO0FBRWpDLFNBQVNDLFVBQVVBLENBQUNDLE9BQVksRUFBRUMsSUFBWSxFQUFFO0VBQzlDLElBQU1DLFFBQVEsR0FBR0YsT0FBTyxDQUFDRSxRQUFRLEdBQUdGLE9BQU8sQ0FBQ0UsUUFBUSxHQUFHLEtBQUs7RUFDNUQsT0FBT2xCLGNBQWMsQ0FBQ2lCLElBQUksRUFBRTtJQUMxQkMsUUFBUSxFQUFSQSxRQUFRO0lBQ1JDLGtCQUFrQixFQUFFO0VBQ3RCLENBQUMsQ0FBQztBQUNKOztBQUVBO0FBQ0EsU0FBU0Msa0JBQWtCQSxDQUFDSixPQUFZLEVBQUU7RUFDeEMsSUFBTUssVUFBVSxHQUFHQyxNQUFNLENBQUNOLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFSyxVQUFVLENBQUM7RUFDOUMsSUFBSSxDQUFDQSxVQUFVLEVBQUUsT0FBTyxFQUFFO0VBQzFCLElBQU1FLEtBQUssR0FBR1AsT0FBTyxDQUFDUSxhQUFhLEdBQUcsaUJBQWlCLEdBQUcsT0FBTztFQUNqRSxhQUFBQyxNQUFBLENBQWFWLFVBQVUsQ0FBQ0MsT0FBTyxFQUFFSyxVQUFVLENBQUMsT0FBQUksTUFBQSxDQUFJRixLQUFLO0FBQ3ZEO0FBRUEsU0FBU0csd0JBQXdCQSxDQUFDVixPQUFZLEVBQUU7RUFDOUMsVUFBQVMsTUFBQSxDQUFVVixVQUFVLENBQUNDLE9BQU8sRUFBRU0sTUFBTSxDQUFDTixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRVcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUFGLE1BQUEsQ0FBR0wsa0JBQWtCLENBQUNKLE9BQU8sQ0FBQztBQUM5RjtBQUVBLFNBQVNZLEtBQUtBLENBQUNDLElBQVMsRUFBRTtFQUN4QixJQUFNQyxRQUFRLEdBQUcsQ0FBQUQsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVDLFFBQVEsS0FBSSxFQUFFO0VBQ3JDLE9BQU9BLFFBQVEsS0FBSyxpQkFBaUIsSUFBSUEsUUFBUSxLQUFLLG1CQUFtQjtBQUMzRTtBQUVBLFNBQVNDLFdBQVdBLENBQUNGLElBQVMsRUFBRTtFQUM5QixJQUFNQyxRQUFRLEdBQUcsQ0FBQUQsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVDLFFBQVEsS0FBSSxFQUFFO0VBQ3JDLElBQUlBLFFBQVEsQ0FBQ0UsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUM5QyxJQUFNQyxJQUFJLEdBQUcsQ0FBQyxDQUFBSixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRUksSUFBSSxLQUFJLEVBQUUsRUFBRUMsV0FBVyxDQUFDLENBQUM7RUFDN0MsT0FBTyxpQ0FBaUMsQ0FBQ0MsSUFBSSxDQUFDRixJQUFJLENBQUM7QUFDckQ7QUFFQSxTQUFTRyxjQUFjQSxDQUFDQyxNQUFXLEVBQUU7RUFBQSxJQUFBQyxrQkFBQTtFQUNuQyxPQUFPLENBQUFELE1BQU0sYUFBTkEsTUFBTSxnQkFBQUMsa0JBQUEsR0FBTkQsTUFBTSxDQUFFRSxVQUFVLGNBQUFELGtCQUFBLHVCQUFsQkEsa0JBQUEsQ0FBb0JFLE9BQU8sS0FBSSxFQUFFO0FBQzFDO0FBRUEsU0FBU0Msa0JBQWtCQSxDQUFDSixNQUFXLEVBQXVCO0VBQUEsSUFBckJLLE9BQWMsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsRUFBRTtFQUMxRCxPQUFPRCxPQUFPLENBQUNJLElBQUksQ0FBQyxVQUFDQyxDQUFDO0lBQUEsT0FBS0MsTUFBTSxDQUFDRCxDQUFDLENBQUNFLFFBQVEsQ0FBQyxLQUFLRCxNQUFNLENBQUNYLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFWSxRQUFRLENBQUM7RUFBQSxFQUFDO0FBQzdFO0FBRUEsU0FBU0MsbUJBQW1CQSxDQUMxQmIsTUFBVyxFQUdYO0VBQUEsSUFBQWMsY0FBQSxFQUFBQyxtQkFBQSxFQUFBQyxvQkFBQTtFQUFBLElBRkFDLGlCQUF3QixHQUFBWCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxFQUFFO0VBQUEsSUFDN0JZLFlBQW1CLEdBQUFaLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEVBQUU7RUFFeEIsSUFBTWEsTUFBTSxHQUFHbkIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBYyxjQUFBLEdBQU5kLE1BQU0sQ0FBRW9CLE1BQU0sY0FBQU4sY0FBQSx1QkFBZEEsY0FBQSxDQUFnQk8sSUFBSSxDQUFDLENBQUM7RUFDckMsSUFBSUYsTUFBTSxFQUFFLE9BQU9BLE1BQU07RUFDekIsSUFBTUcsY0FBYyxJQUFBUCxtQkFBQSxHQUFHWCxrQkFBa0IsQ0FBQ0osTUFBTSxFQUFFaUIsaUJBQWlCLENBQUMsY0FBQUYsbUJBQUEsZ0JBQUFBLG1CQUFBLEdBQTdDQSxtQkFBQSxDQUErQ0ssTUFBTSxjQUFBTCxtQkFBQSx1QkFBckRBLG1CQUFBLENBQXVETSxJQUFJLENBQUMsQ0FBQztFQUNwRixJQUFJQyxjQUFjLEVBQUUsT0FBT0EsY0FBYztFQUN6QyxPQUFPLEVBQUFOLG9CQUFBLEdBQUFaLGtCQUFrQixDQUFDSixNQUFNLEVBQUVrQixZQUFZLENBQUMsY0FBQUYsb0JBQUEsZ0JBQUFBLG9CQUFBLEdBQXhDQSxvQkFBQSxDQUEwQ0ksTUFBTSxjQUFBSixvQkFBQSx1QkFBaERBLG9CQUFBLENBQWtESyxJQUFJLENBQUMsQ0FBQyxLQUFJLEVBQUU7QUFDdkU7QUFFQSxTQUFTRSxxQkFBcUJBLENBQzVCdkIsTUFBVyxFQUdYO0VBQUEsSUFGQWlCLGlCQUF3QixHQUFBWCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxFQUFFO0VBQUEsSUFDN0JZLFlBQW1CLEdBQUFaLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEVBQUU7RUFFeEIsSUFBTWEsTUFBTSxHQUFHcEIsY0FBYyxDQUFDQyxNQUFNLENBQUM7RUFDckMsSUFBSW1CLE1BQU0sRUFBRSxPQUFPQSxNQUFNO0VBQ3pCLElBQU1HLGNBQWMsR0FBR3ZCLGNBQWMsQ0FDbkNLLGtCQUFrQixDQUFDSixNQUFNLEVBQUVpQixpQkFBaUIsQ0FDOUMsQ0FBQztFQUNELElBQUlLLGNBQWMsRUFBRSxPQUFPQSxjQUFjO0VBQ3pDLE9BQU92QixjQUFjLENBQUNLLGtCQUFrQixDQUFDSixNQUFNLEVBQUVrQixZQUFZLENBQUMsQ0FBQztBQUNqRTtBQUVBLFNBQVNNLGdCQUFnQkEsQ0FDdkI3QyxPQUFZLEVBQ1pxQixNQUFXLEVBQ1h5QixxQkFBOEIsRUFDOUI7RUFDQSxJQUFJLEVBQUN6QixNQUFNLGFBQU5BLE1BQU0sZUFBTkEsTUFBTSxDQUFFMEIsU0FBUyxLQUFJRCxxQkFBcUIsRUFBRSxPQUFPLElBQUk7RUFDNUQsYUFBQXJDLE1BQUEsQ0FBYVYsVUFBVSxDQUFDQyxPQUFPLEVBQUVxQixNQUFNLENBQUMwQixTQUFTLENBQUM7QUFDcEQ7QUFFQSxTQUFTQyxvQkFBb0JBLENBQUFDLElBQUEsRUFBMEI7RUFBQSxJQUF2QnBDLElBQUksR0FBQW9DLElBQUEsQ0FBSnBDLElBQUk7RUFDbEMsSUFBTXFDLE9BQU8sR0FBRyxDQUFBckMsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVXLE9BQU8sTUFBSVgsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVzQyxXQUFXLEtBQUksRUFBRTtFQUN4RCxJQUFNQyxRQUFRLEdBQUcsQ0FBQXZDLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFSSxJQUFJLEtBQUksTUFBTTtFQUVyQyxJQUFJTCxLQUFLLENBQUNDLElBQUksQ0FBQyxFQUFFO0lBQ2Ysb0JBQ0VqQixLQUFBO01BQ0V5RCxTQUFTLEVBQUMsbUNBQW1DO01BQzdDQyxJQUFJLEVBQUVKLE9BQVE7TUFDZEssTUFBTSxFQUFDLFFBQVE7TUFDZkMsR0FBRyxFQUFDLHFCQUFxQjtNQUN6QkMsS0FBSyxFQUFFTCxRQUFTO01BQUFNLFFBQUEsZ0JBRWhCaEUsSUFBQSxDQUFDWCxTQUFTO1FBQUM7TUFBVyxDQUFFLENBQUMsZUFDekJXLElBQUE7UUFBQWdFLFFBQUEsRUFBT047TUFBUSxDQUFPLENBQUM7SUFBQSxDQUN0QixDQUFDO0VBRVI7RUFFQSxJQUFJckMsV0FBVyxDQUFDRixJQUFJLENBQUMsSUFBSXFDLE9BQU8sRUFBRTtJQUNoQyxvQkFDRXhELElBQUE7TUFDRTJELFNBQVMsRUFBQyw0Q0FBNEM7TUFDdERNLEdBQUcsRUFBRVQsT0FBUTtNQUNiVSxHQUFHLEVBQUVSLFFBQVM7TUFDZEssS0FBSyxFQUFFTDtJQUFTLENBQ2pCLENBQUM7RUFFTjtFQUVBLElBQUlGLE9BQU8sRUFBRTtJQUNYLG9CQUNFeEQsSUFBQTtNQUNFMkQsU0FBUyxFQUFDLG1DQUFtQztNQUM3Q0MsSUFBSSxFQUFFSixPQUFRO01BQ2RLLE1BQU0sRUFBQyxRQUFRO01BQ2ZDLEdBQUcsRUFBQyxxQkFBcUI7TUFDekJDLEtBQUssRUFBRUwsUUFBUztNQUFBTSxRQUFBLEVBRWZOO0lBQVEsQ0FDUixDQUFDO0VBRVI7RUFFQSxvQkFBTzFELElBQUE7SUFBQWdFLFFBQUEsRUFBT047RUFBUSxDQUFPLENBQUM7QUFDaEM7QUFFQSxTQUFTUyxpQkFBaUJBLENBQUFDLEtBQUEsRUFBbUQ7RUFBQSxJQUFoRDdELElBQUksR0FBQTZELEtBQUEsQ0FBSjdELElBQUk7SUFBRWdCLElBQUksR0FBQTZDLEtBQUEsQ0FBSjdDLElBQUk7SUFBRWpCLE9BQU8sR0FBQThELEtBQUEsQ0FBUDlELE9BQU87SUFBRStELEtBQUssR0FBQUQsS0FBQSxDQUFMQyxLQUFLO0lBQUVDLEtBQUssR0FBQUYsS0FBQSxDQUFMRSxLQUFLO0lBQUVDLElBQUksR0FBQUgsS0FBQSxDQUFKRyxJQUFJO0VBQ2xFLElBQU1DLGNBQWMsR0FBR0QsSUFBSSxLQUFLNUUsU0FBUyxDQUFDOEUsYUFBYTtFQUN2RCxJQUFNQyxZQUFZLEdBQUdILElBQUksS0FBSzVFLFNBQVMsQ0FBQ2dGLFdBQVc7RUFDbkQsSUFBTUMsUUFBUSxHQUFHQyxPQUFPLENBQUNQLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFcEMsTUFBTSxDQUFDO0VBQ3ZDLElBQU00QyxZQUFZLEdBQUdOLGNBQWMsSUFBS0UsWUFBWSxJQUFJRSxRQUFTLEdBQUcsSUFBSSxHQUFHUCxLQUFLO0VBRWhGLG9CQUNFbkUsS0FBQTtJQUFLeUQsU0FBUyxFQUFDLHVDQUF1QztJQUFBSyxRQUFBLGdCQUNwRGhFLElBQUE7TUFBSzJELFNBQVMsRUFBQyx5Q0FBeUM7TUFBQUssUUFBQSxFQUFFekM7SUFBSSxDQUFNLENBQUMsZUFDckVyQixLQUFBO01BQUt5RCxTQUFTLEVBQUMseUNBQXlDO01BQUFLLFFBQUEsR0FDckRZLFFBQVEsaUJBQ1A1RSxJQUFBO1FBQUsyRCxTQUFTLEVBQUMsdUNBQXVDO1FBQUFLLFFBQUEsRUFDbkRNLEtBQUssQ0FBQ1MsR0FBRyxDQUFDLFVBQUM1RCxJQUFTLEVBQUU2RCxLQUFhO1VBQUEsb0JBQ2xDaEYsSUFBQSxDQUFDc0Qsb0JBQW9CO1lBRW5CbkMsSUFBSSxFQUFFQTtVQUFLLEdBRE5BLElBQUksQ0FBQ1csT0FBTyxJQUFJWCxJQUFJLENBQUM4RCxFQUFFLE9BQUFsRSxNQUFBLENBQU9RLElBQUksWUFBQVIsTUFBQSxDQUFTaUUsS0FBSyxDQUV0RCxDQUFDO1FBQUEsQ0FDSDtNQUFDLENBQ0MsQ0FDTixFQUNBUixjQUFjLElBQUlILEtBQUssaUJBQ3RCbkUsS0FBQTtRQUFLeUQsU0FBUyxFQUFDLHNDQUFzQztRQUFBSyxRQUFBLGdCQUNuRGhFLElBQUE7VUFDRWtGLEtBQUssRUFBRTtZQUFFQyxlQUFlLEVBQUVkO1VBQU0sQ0FBRTtVQUNsQ1YsU0FBUyxFQUFDO1FBQWlCLENBQzVCLENBQUMsZUFDRjNELElBQUE7VUFBQWdFLFFBQUEsRUFBT0s7UUFBSyxDQUFPLENBQUM7TUFBQSxDQUNqQixDQUNOLEVBQ0FTLFlBQVksSUFBSUEsWUFBWSxFQUM1QnZFLElBQUksU0FBQVEsTUFBQSxDQUFTVixVQUFVLENBQUNDLE9BQU8sRUFBRUMsSUFBSSxDQUFDLElBQUssRUFBRSxFQUM3QyxDQUFDcUUsUUFBUSxJQUFJLENBQUNQLEtBQUssSUFBSSxHQUFHO0lBQUEsQ0FDeEIsQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVWO0FBRUEsU0FBU2UsYUFBYUEsQ0FBQUMsS0FBQSxFQUE4QjtFQUFBLElBQTNCL0UsT0FBTyxHQUFBK0UsS0FBQSxDQUFQL0UsT0FBTztJQUFFZ0YsU0FBUyxHQUFBRCxLQUFBLENBQVRDLFNBQVM7RUFDekMsSUFBUUMsZUFBZSxHQUNyQkQsU0FBUyxDQURIQyxlQUFlO0lBQUVDLGNBQWMsR0FDckNGLFNBQVMsQ0FEY0UsY0FBYztJQUFFQyxjQUFjLEdBQ3JESCxTQUFTLENBRDhCRyxjQUFjO0lBQUU3QyxpQkFBaUIsR0FDeEUwQyxTQUFTLENBRDhDMUMsaUJBQWlCO0VBRTFFLElBQVE4QyxTQUFTLEdBQ2ZGLGNBQWMsQ0FEUkUsU0FBUztJQUFFdEMscUJBQXFCLEdBQ3RDb0MsY0FBYyxDQURHcEMscUJBQXFCO0lBQUF1QyxxQkFBQSxHQUN0Q0gsY0FBYyxDQUQwQnhELE9BQU87SUFBRWEsWUFBWSxHQUFBOEMscUJBQUEsY0FBRyxFQUFFLEdBQUFBLHFCQUFBO0VBRXBFLElBQU1DLHFCQUFxQixHQUFHbEcsWUFBWSxDQUFDZ0csU0FBUyxDQUFDO0VBQ3JELElBQU1HLGdCQUFnQixHQUFHSCxTQUFTLEtBQUsvRixTQUFTLENBQUNtRyxlQUFlO0VBQ2hFLElBQU05RCxPQUFPLEdBQUd1RCxlQUFlO0VBQy9CLElBQU1RLG9CQUFvQixHQUN4QkgscUJBQXFCLEtBQ3BCZixPQUFPLENBQUM3QyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRUUsTUFBTSxDQUFDLElBQUsyRCxnQkFBZ0IsSUFBSVAsU0FBUyxDQUFDakIsS0FBTSxDQUFDO0VBQ3JFLG9CQUNFckUsSUFBQTtJQUFLMkQsU0FBUyxFQUFDLG1DQUFtQztJQUFBSyxRQUFBLEVBQy9DK0Isb0JBQW9CLGdCQUNuQi9GLElBQUEsQ0FBQ2dHLHdCQUF3QjtNQUN2QnpFLElBQUksRUFBRWlFLGNBQWMsQ0FBQ2pFLElBQUs7TUFDMUJtRSxTQUFTLEVBQUVBLFNBQVU7TUFDckJyQixLQUFLLEVBQUVpQixTQUFTLENBQUNqQixLQUFNO01BQ3ZCL0QsT0FBTyxFQUFFQSxPQUFRO01BQ2pCZ0UsS0FBSyxFQUFFbUIsY0FBZTtNQUN0QkYsZUFBZSxFQUFFdkQsT0FBUTtNQUN6QnNELFNBQVMsRUFBRUEsU0FBVTtNQUNyQjFDLGlCQUFpQixFQUFFQSxpQkFBa0I7TUFDckNDLFlBQVksRUFBRUEsWUFBYTtNQUMzQk8scUJBQXFCLEVBQUVBO0lBQXNCLENBQzlDLENBQUMsZ0JBRUZwRCxJQUFBLENBQUNtRSxpQkFBaUI7TUFDaEI1QyxJQUFJLEVBQUVpRSxjQUFjLENBQUNqRSxJQUFLO01BQzFCZ0QsSUFBSSxFQUFFaUIsY0FBYyxDQUFDRSxTQUFVO01BQy9CckIsS0FBSyxFQUFFaUIsU0FBUyxDQUFDakIsS0FBTTtNQUN2QkMsS0FBSyxFQUFFbUIsY0FBZTtNQUN0Qm5GLE9BQU8sRUFBRUEsT0FBUTtNQUNqQkMsSUFBSSxFQUFFNkMscUJBQXFCLEdBQUcsQ0FBQyxHQUFHa0MsU0FBUyxDQUFDL0U7SUFBSyxDQUNsRDtFQUNGLENBQ0UsQ0FBQztBQUVWO0FBRUEsU0FBUzBGLGtCQUFrQkEsQ0FBQUMsS0FBQSxFQVF4QjtFQUFBLElBQUFDLGFBQUE7RUFBQSxJQVBEeEUsTUFBTSxHQUFBdUUsS0FBQSxDQUFOdkUsTUFBTTtJQUNOaUIsaUJBQWlCLEdBQUFzRCxLQUFBLENBQWpCdEQsaUJBQWlCO0lBQ2pCQyxZQUFZLEdBQUFxRCxLQUFBLENBQVpyRCxZQUFZO0VBTVosSUFBTWhDLEtBQUssR0FBRyxDQUFBYyxNQUFNLGFBQU5BLE1BQU0sZ0JBQUF3RSxhQUFBLEdBQU54RSxNQUFNLENBQUUwQyxLQUFLLGNBQUE4QixhQUFBLHVCQUFiQSxhQUFBLENBQWVuRCxJQUFJLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFDekMsSUFBTW9ELEdBQUcsR0FBRzVELG1CQUFtQixDQUFDYixNQUFNLEVBQUVpQixpQkFBaUIsRUFBRUMsWUFBWSxDQUFDO0VBQ3hFLG9CQUNFM0MsS0FBQTtJQUFNeUQsU0FBUyxFQUFDLHVDQUF1QztJQUFBSyxRQUFBLEdBQ3BEb0MsR0FBRyxpQkFDRnBHLElBQUE7TUFDRWtGLEtBQUssRUFBRTtRQUFFQyxlQUFlLEVBQUVpQjtNQUFJLENBQUU7TUFDaEN6QyxTQUFTLEVBQUM7SUFBaUIsQ0FDNUIsQ0FDRixlQUNEM0QsSUFBQTtNQUFBZ0UsUUFBQSxFQUFPbkQsS0FBSyxJQUFJdUYsR0FBRyxJQUFJO0lBQUcsQ0FBTyxDQUFDO0VBQUEsQ0FDOUIsQ0FBQztBQUVYO0FBRUEsU0FBU0MsaUJBQWlCQSxDQUFBQyxLQUFBLEVBWXZCO0VBQUEsSUFBQUMsY0FBQTtFQUFBLElBWEQ1RSxNQUFNLEdBQUEyRSxLQUFBLENBQU4zRSxNQUFNO0lBQ05pQixpQkFBaUIsR0FBQTBELEtBQUEsQ0FBakIxRCxpQkFBaUI7SUFDakJDLFlBQVksR0FBQXlELEtBQUEsQ0FBWnpELFlBQVk7SUFDWnZDLE9BQU8sR0FBQWdHLEtBQUEsQ0FBUGhHLE9BQU87SUFDUDhDLHFCQUFxQixHQUFBa0QsS0FBQSxDQUFyQmxELHFCQUFxQjtFQVFyQixJQUFNb0QsUUFBUSxHQUFHdEQscUJBQXFCLENBQUN2QixNQUFNLEVBQUVpQixpQkFBaUIsRUFBRUMsWUFBWSxDQUFDO0VBQy9FLElBQU1oQyxLQUFLLEdBQUcsQ0FBQWMsTUFBTSxhQUFOQSxNQUFNLGdCQUFBNEUsY0FBQSxHQUFONUUsTUFBTSxDQUFFMEMsS0FBSyxjQUFBa0MsY0FBQSx1QkFBYkEsY0FBQSxDQUFldkQsSUFBSSxDQUFDLENBQUMsS0FBSSxFQUFFO0VBQ3pDLElBQU16QyxJQUFJLEdBQUc0QyxnQkFBZ0IsQ0FBQzdDLE9BQU8sRUFBRXFCLE1BQU0sRUFBRXlCLHFCQUFxQixDQUFDO0VBRXJFLG9CQUNFbEQsS0FBQTtJQUFNeUQsU0FBUyxFQUFDLDZDQUE2QztJQUFBSyxRQUFBLEdBQzFEd0MsUUFBUSxnQkFDUHhHLElBQUE7TUFDRTJELFNBQVMsRUFBQyw0Q0FBNEM7TUFDdERNLEdBQUcsRUFBRXVDLFFBQVM7TUFDZHRDLEdBQUcsRUFBRXJELEtBQUssSUFBSSxpQkFBa0I7TUFDaENrRCxLQUFLLEVBQUVsRCxLQUFLLElBQUlzQjtJQUFVLENBQzNCLENBQUMsR0FDQSxJQUFJLGVBQ1JqQyxLQUFBO01BQUE4RCxRQUFBLEdBQU9uRCxLQUFLLElBQUksR0FBRyxFQUFFTixJQUFJLElBQUksRUFBRTtJQUFBLENBQU8sQ0FBQztFQUFBLENBQ25DLENBQUM7QUFFWDtBQUVBLFNBQVNrRyxXQUFXQSxDQUFDOUUsTUFBVyxFQUFFO0VBQUEsSUFBQStFLGdCQUFBO0VBQ2hDLFFBQUFBLGdCQUFBLEdBQU8vRSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRVksUUFBUSxjQUFBbUUsZ0JBQUEsY0FBQUEsZ0JBQUEsR0FBSS9FLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFc0QsRUFBRTtBQUN2QztBQUVBLFNBQVMwQiwrQkFBK0JBLENBQ3RDckIsU0FBYyxFQUdkO0VBQUEsSUFGQTFDLGlCQUF3QixHQUFBWCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxFQUFFO0VBQUEsSUFDN0JZLFlBQW1CLEdBQUFaLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEVBQUU7RUFFeEIsSUFBQTJFLHFCQUFBLEdBQXdDdEIsU0FBUyxDQUF6Q0MsZUFBZTtJQUFmQSxlQUFlLEdBQUFxQixxQkFBQSxjQUFHLEVBQUUsR0FBQUEscUJBQUE7SUFBRXZDLEtBQUssR0FBS2lCLFNBQVMsQ0FBbkJqQixLQUFLO0VBQ25DLElBQUlrQixlQUFlLENBQUNyRCxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQzlCLE9BQU9xRCxlQUFlLENBQUMsQ0FBQyxDQUFDO0VBQzNCO0VBQ0EsSUFBTXNCLFFBQVEsR0FBR3hDLEtBQUssSUFBSSxJQUFJLElBQUlBLEtBQUssS0FBSyxFQUFFLEdBQUcvQixNQUFNLENBQUMrQixLQUFLLENBQUMsQ0FBQ3JCLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRTtFQUMxRSxJQUFJLENBQUM2RCxRQUFRLEVBQUUsT0FBTyxJQUFJO0VBRTFCLElBQU1DLEtBQUssR0FBRyxDQUFDbEUsaUJBQWlCLEVBQUVDLFlBQVksQ0FBQztFQUMvQyxTQUFBa0UsRUFBQSxNQUFBQyxNQUFBLEdBQW1CRixLQUFLLEVBQUFDLEVBQUEsR0FBQUMsTUFBQSxDQUFBOUUsTUFBQSxFQUFBNkUsRUFBQSxJQUFFO0lBQXJCLElBQU1FLElBQUksR0FBQUQsTUFBQSxDQUFBRCxFQUFBO0lBQ2IsSUFBTUcsSUFBSSxHQUFHRCxJQUFJLENBQUM3RSxJQUFJLENBQ3BCLFVBQUNDLENBQU07TUFBQSxPQUFLQyxNQUFNLENBQUNtRSxXQUFXLENBQUNwRSxDQUFDLENBQUMsQ0FBQyxLQUFLd0UsUUFBUTtJQUFBLENBQ2pELENBQUM7SUFDRCxJQUFJSyxJQUFJLEVBQUUsT0FBT0EsSUFBSTtJQUNyQixJQUFNQyxPQUFPLEdBQUdGLElBQUksQ0FBQzdFLElBQUksQ0FDdkIsVUFBQ0MsQ0FBTTtNQUFBLElBQUErRSxRQUFBO01BQUEsT0FBSzlFLE1BQU0sRUFBQThFLFFBQUEsR0FBQy9FLENBQUMsQ0FBQ2dDLEtBQUssY0FBQStDLFFBQUEsY0FBQUEsUUFBQSxHQUFJLEVBQUUsQ0FBQyxLQUFLUCxRQUFRO0lBQUEsQ0FDaEQsQ0FBQztJQUNELElBQUlNLE9BQU8sRUFBRSxPQUFPQSxPQUFPO0VBQzdCO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7QUFFQSxTQUFTRSx3QkFBd0JBLENBQUNDLFlBQWlCLEVBQUU7RUFDbkQsSUFBSSxDQUFDQSxZQUFZLEVBQUUsT0FBTyxJQUFJO0VBQzlCLElBQU1DLE9BQU8sR0FBRzNHLE1BQU0sQ0FBQzBHLFlBQVksQ0FBQztFQUNwQyxJQUFJLENBQUMxRyxNQUFNLENBQUM0RyxRQUFRLENBQUNELE9BQU8sQ0FBQyxJQUFJQSxPQUFPLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUMxRCxPQUFPLElBQUlFLElBQUksQ0FBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDRyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7SUFDMURDLE9BQU8sRUFBRSxNQUFNO0lBQ2ZDLElBQUksRUFBRSxTQUFTO0lBQ2ZDLEtBQUssRUFBRSxNQUFNO0lBQ2JDLEdBQUcsRUFBRTtFQUNQLENBQUMsQ0FBQztBQUNKO0FBRUEsU0FBU0MscUJBQXFCQSxDQUFBQyxLQUFBLEVBVTNCO0VBQUEsSUFBQUMsY0FBQSxFQUFBQyxjQUFBO0VBQUEsSUFURHZHLE1BQU0sR0FBQXFHLEtBQUEsQ0FBTnJHLE1BQU07SUFDTjZELGNBQWMsR0FBQXdDLEtBQUEsQ0FBZHhDLGNBQWM7SUFDZGxGLE9BQU8sR0FBQTBILEtBQUEsQ0FBUDFILE9BQU87SUFDUDhDLHFCQUFxQixHQUFBNEUsS0FBQSxDQUFyQjVFLHFCQUFxQjtFQU9yQixJQUFNK0UsSUFBSSxHQUFHQyxRQUFRLENBQUM5RixNQUFNLEVBQUEyRixjQUFBLEdBQUN0RyxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRTBDLEtBQUssY0FBQTRELGNBQUEsY0FBQUEsY0FBQSxHQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7RUFDM0QsSUFBTUksUUFBUSxHQUFHaEIsd0JBQXdCLENBQUMxRixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRTJGLFlBQVksQ0FBQztFQUMvRCxJQUFNZ0Isb0JBQW9CLEdBQUd6RCxPQUFPLENBQUNXLGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFOEMsb0JBQW9CLENBQUM7RUFDMUUsSUFBTUMsYUFBYSxHQUFHRCxvQkFBb0IsR0FBRyxhQUFhLEdBQUcsYUFBYTtFQUMxRSxJQUFNL0gsSUFBSSxHQUFHNEMsZ0JBQWdCLENBQUM3QyxPQUFPLEVBQUVxQixNQUFNLEVBQUV5QixxQkFBcUIsQ0FBQztFQUVyRSxvQkFDRWxELEtBQUE7SUFBTXlELFNBQVMsRUFBQywwQ0FBMEM7SUFBQUssUUFBQSxnQkFDeERoRSxJQUFBO01BQU0yRCxTQUFTLEVBQUMseUNBQXlDO01BQUFLLFFBQUEsRUFDdERtRSxJQUFJLEdBQUcsQ0FBQyxNQUFBcEgsTUFBQSxDQUNGb0gsSUFBSSxtQkFBQXBILE1BQUEsQ0FBZ0JvSCxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQzNDLENBQUF4RyxNQUFNLGFBQU5BLE1BQU0sZ0JBQUF1RyxjQUFBLEdBQU52RyxNQUFNLENBQUUwQyxLQUFLLGNBQUE2RCxjQUFBLHVCQUFiQSxjQUFBLENBQWVsRixJQUFJLENBQUMsQ0FBQyxLQUFJO0lBQUksQ0FDOUIsQ0FBQyxFQUNOcUYsUUFBUSxpQkFDUG5JLEtBQUE7TUFBTXlELFNBQVMsRUFBQyw2Q0FBNkM7TUFBQUssUUFBQSxHQUMxRHVFLGFBQWEsRUFBQyxHQUFDLEVBQUNGLFFBQVE7SUFBQSxDQUNyQixDQUNQLEVBQ0E5SCxJQUFJLElBQUksRUFBRTtFQUFBLENBQ1AsQ0FBQztBQUVYO0FBRUEsU0FBU3lGLHdCQUF3QkEsQ0FBQXdDLEtBQUEsRUFTekI7RUFBQSxJQUFBQyxxQkFBQTtFQUFBLElBUk5sSCxJQUFJLEdBQUFpSCxLQUFBLENBQUpqSCxJQUFJO0lBQ0pnRSxlQUFlLEdBQUFpRCxLQUFBLENBQWZqRCxlQUFlO0lBQ2ZuQyxxQkFBcUIsR0FBQW9GLEtBQUEsQ0FBckJwRixxQkFBcUI7SUFDckI5QyxPQUFPLEdBQUFrSSxLQUFBLENBQVBsSSxPQUFPO0lBQ1BvRixTQUFTLEdBQUE4QyxLQUFBLENBQVQ5QyxTQUFTO0lBQ1RKLFNBQVMsR0FBQWtELEtBQUEsQ0FBVGxELFNBQVM7SUFBQW9ELHFCQUFBLEdBQUFGLEtBQUEsQ0FDVDVGLGlCQUFpQjtJQUFqQkEsaUJBQWlCLEdBQUE4RixxQkFBQSxjQUFHLEVBQUUsR0FBQUEscUJBQUE7SUFBQUMsa0JBQUEsR0FBQUgsS0FBQSxDQUN0QjNGLFlBQVk7SUFBWkEsWUFBWSxHQUFBOEYsa0JBQUEsY0FBRyxFQUFFLEdBQUFBLGtCQUFBO0VBRWpCLElBQU05QyxnQkFBZ0IsR0FBR0gsU0FBUyxLQUFLL0YsU0FBUyxDQUFDbUcsZUFBZTtFQUNoRSxJQUFNOEMsV0FBVyxHQUFHL0MsZ0JBQWdCLEdBQ2hDYywrQkFBK0IsQ0FDN0I7SUFBRXBCLGVBQWUsRUFBZkEsZUFBZTtJQUFFbEIsS0FBSyxFQUFFaUIsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVqQjtFQUFNLENBQUMsRUFDNUN6QixpQkFBaUIsRUFDakJDLFlBQ0YsQ0FBQyxHQUNEMEMsZUFBZSxDQUFDLENBQUMsQ0FBQztFQUN0QixJQUFNc0QsY0FBYyxHQUFHbkQsU0FBUyxLQUFLL0YsU0FBUyxDQUFDbUosYUFBYTtFQUM1RCxJQUFNQyxhQUFhLEdBQUdyRCxTQUFTLEtBQUsvRixTQUFTLENBQUNxSixZQUFZO0VBQzFELElBQU14RCxjQUFjLElBQUFpRCxxQkFBQSxHQUFHbkQsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVFLGNBQWMsY0FBQWlELHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQyxDQUFDO0VBRXRELFNBQVNRLGlCQUFpQkEsQ0FBQzVHLENBQU0sRUFBRTtJQUFBLElBQUE2RyxTQUFBO0lBQ2pDLElBQUlyRCxnQkFBZ0IsRUFBRTtNQUNwQixvQkFDRTdGLElBQUEsQ0FBQytILHFCQUFxQjtRQUNwQnBHLE1BQU0sRUFBRVUsQ0FBRTtRQUNWbUQsY0FBYyxFQUFFQSxjQUFlO1FBQy9CbEYsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCOEMscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDLENBQUM7SUFFTjtJQUNBLElBQUl5RixjQUFjLEVBQUU7TUFDbEIsb0JBQ0U3SSxJQUFBLENBQUNpRyxrQkFBa0I7UUFDakJ0RSxNQUFNLEVBQUVVLENBQUU7UUFDVk8saUJBQWlCLEVBQUVBLGlCQUFrQjtRQUNyQ0MsWUFBWSxFQUFFQTtNQUFhLENBQzVCLENBQUM7SUFFTjtJQUNBLElBQUlrRyxhQUFhLEVBQUU7TUFDakIsb0JBQ0UvSSxJQUFBLENBQUNxRyxpQkFBaUI7UUFDaEIxRSxNQUFNLEVBQUVVLENBQUU7UUFDVk8saUJBQWlCLEVBQUVBLGlCQUFrQjtRQUNyQ0MsWUFBWSxFQUFFQSxZQUFhO1FBQzNCdkMsT0FBTyxFQUFFQSxPQUFRO1FBQ2pCOEMscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDLENBQUM7SUFFTjtJQUNBLG9CQUNFbEQsS0FBQSxDQUFBRSxTQUFBO01BQUE0RCxRQUFBLEdBQ0csRUFBQWtGLFNBQUEsR0FBQTdHLENBQUMsQ0FBQ2dDLEtBQUssY0FBQTZFLFNBQUEsdUJBQVBBLFNBQUEsQ0FBU2xHLElBQUksQ0FBQyxDQUFDLEtBQUksR0FBRyxFQUN0QkcsZ0JBQWdCLENBQUM3QyxPQUFPLEVBQUUrQixDQUFDLEVBQUVlLHFCQUFxQixDQUFDLElBQUksRUFBRTtJQUFBLENBQzFELENBQUM7RUFFUDtFQUVBLG9CQUNFcEQsSUFBQSxDQUFBSSxTQUFBO0lBQUE0RCxRQUFBLEVBQ0d1QixlQUFlLENBQUNyRCxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMyRCxnQkFBZ0IsZ0JBQzlDM0YsS0FBQTtNQUFLeUQsU0FBUyxFQUFDLHVDQUF1QztNQUFBSyxRQUFBLGdCQUNwRGhFLElBQUE7UUFBSzJELFNBQVMsRUFBQyx5Q0FBeUM7UUFBQUssUUFBQSxFQUFFekM7TUFBSSxDQUFNLENBQUMsZUFDckV2QixJQUFBO1FBQUkyRCxTQUFTLEVBQUMsMkRBQTJEO1FBQUFLLFFBQUEsRUFDdEV1QixlQUFlLENBQUNSLEdBQUcsQ0FBQyxVQUFDMUMsQ0FBTSxFQUFFOEcsQ0FBUztVQUFBLElBQUFDLFdBQUE7VUFBQSxvQkFDckNwSixJQUFBO1lBQUFnRSxRQUFBLEVBQ0dpRixpQkFBaUIsQ0FBQzVHLENBQUM7VUFBQyxNQUFBdEIsTUFBQSxDQURYb0ksQ0FBQyxrQkFBQXBJLE1BQUEsRUFBQXFJLFdBQUEsR0FBZS9HLENBQUMsQ0FBQ0UsUUFBUSxjQUFBNkcsV0FBQSxjQUFBQSxXQUFBLEdBQUlELENBQUMsQ0FFdkMsQ0FBQztRQUFBLENBQ047TUFBQyxDQUNBLENBQUM7SUFBQSxDQUNGLENBQUMsR0FDSlAsV0FBVyxnQkFDYjFJLEtBQUE7TUFBS3lELFNBQVMsRUFBQyx1Q0FBdUM7TUFBQUssUUFBQSxnQkFDcERoRSxJQUFBO1FBQUsyRCxTQUFTLEVBQUMseUNBQXlDO1FBQUFLLFFBQUEsRUFBRXpDO01BQUksQ0FBTSxDQUFDLGVBQ3JFdkIsSUFBQTtRQUFLMkQsU0FBUyxFQUFDLHlDQUF5QztRQUFBSyxRQUFBLEVBQ3JEaUYsaUJBQWlCLENBQUNMLFdBQVc7TUFBQyxDQUM1QixDQUFDO0lBQUEsQ0FDSCxDQUFDLGdCQUVOMUksS0FBQTtNQUFLeUQsU0FBUyxFQUFDLHVDQUF1QztNQUFBSyxRQUFBLGdCQUNwRGhFLElBQUE7UUFBSzJELFNBQVMsRUFBQyx5Q0FBeUM7UUFBQUssUUFBQSxFQUFFekM7TUFBSSxDQUFNLENBQUMsZUFDckV2QixJQUFBO1FBQUsyRCxTQUFTLEVBQUMseUNBQXlDO1FBQUFLLFFBQUEsRUFBQztNQUFDLENBQUssQ0FBQztJQUFBLENBQzdEO0VBQ04sQ0FDRCxDQUFDO0FBRVA7QUFFQSxTQUFTcUYsY0FBY0EsQ0FBQUMsS0FBQSxFQUE4QztFQUFBLElBQTNDaEosT0FBTyxHQUFBZ0osS0FBQSxDQUFQaEosT0FBTztJQUFFaUosUUFBUSxHQUFBRCxLQUFBLENBQVJDLFFBQVE7SUFBQUMsZ0JBQUEsR0FBQUYsS0FBQSxDQUFFRyxVQUFVO0lBQVZBLFVBQVUsR0FBQUQsZ0JBQUEsY0FBRyxFQUFFLEdBQUFBLGdCQUFBO0VBQzFELG9CQUNFeEosSUFBQTtJQUFLMkQsU0FBUyxFQUFDLG9DQUFvQztJQUFBSyxRQUFBLEVBQ2hEeUYsVUFBVSxDQUFDMUUsR0FBRyxDQUFDLFVBQUMyRSxDQUFNLEVBQUVQLENBQVM7TUFBQSxPQUNoQyxDQUFDM0osa0JBQWtCLENBQUNrSyxDQUFDLENBQUNsRSxjQUFjLENBQUNFLFNBQVMsQ0FBQyxnQkFDN0MxRixJQUFBLENBQUNvRixhQUFhO1FBQ1ptRSxRQUFRLEVBQUVBLFFBQVM7UUFDbkJqRSxTQUFTLEVBQUVvRSxDQUFFO1FBQ2JwSixPQUFPLEVBQUVBO01BQVEsR0FDWjZJLENBQ04sQ0FBQyxHQUNBLElBQUk7SUFBQSxDQUNWO0VBQUMsQ0FDRSxDQUFDO0FBRVY7QUFFQSxTQUFTUSxrQkFBa0JBLENBQUFDLEtBQUEsRUFLbkI7RUFBQSxJQUpOQyxLQUFLLEdBQUFELEtBQUEsQ0FBTEMsS0FBSztJQUNMN0UsS0FBSyxHQUFBNEUsS0FBQSxDQUFMNUUsS0FBSztJQUNMMUUsT0FBTyxHQUFBc0osS0FBQSxDQUFQdEosT0FBTztJQUNQd0osb0JBQW9CLEdBQUFGLEtBQUEsQ0FBcEJFLG9CQUFvQjtFQUVwQixJQUFNQyxRQUFRLEdBQUd0SyxvQkFBb0IsQ0FBQ2EsT0FBTyxDQUFDO0VBQzlDLElBQVFpSixRQUFRLEdBQWlCTSxLQUFLLENBQTlCTixRQUFRO0lBQUVFLFVBQVUsR0FBS0ksS0FBSyxDQUFwQkosVUFBVTtFQUM1QixJQUFNTyxpQkFBaUIsR0FBRyxDQUFDUCxVQUFVLGFBQVZBLFVBQVUsY0FBVkEsVUFBVSxHQUFJLEVBQUUsRUFBRVEsTUFBTSxDQUNqRCxVQUFDUCxDQUFNO0lBQUEsSUFBQVEsaUJBQUE7SUFBQSxPQUFLLENBQUMxSyxrQkFBa0IsQ0FBQ2tLLENBQUMsYUFBREEsQ0FBQyxnQkFBQVEsaUJBQUEsR0FBRFIsQ0FBQyxDQUFFbEUsY0FBYyxjQUFBMEUsaUJBQUEsdUJBQWpCQSxpQkFBQSxDQUFtQnhFLFNBQVMsQ0FBQztFQUFBLENBQy9ELENBQUM7RUFDRCxJQUFNeUUsU0FBUyxHQUFHSixRQUFRLEdBQUcsV0FBVyxHQUFHLFlBQVk7RUFDdkQsSUFBTUssY0FBYyxHQUFHTixvQkFBb0IsR0FDdkM5SSx3QkFBd0IsQ0FBQ1YsT0FBTyxDQUFDLEdBQ2pDRCxVQUFVLENBQUNDLE9BQU8sRUFBRU0sTUFBTSxDQUFDTixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRVcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBRXhELG9CQUNFZixLQUFBO0lBQVN5RCxTQUFTLEVBQUMsK0JBQStCO0lBQUFLLFFBQUEsZ0JBQ2hEOUQsS0FBQTtNQUFReUQsU0FBUyxFQUFDLDRDQUE0QztNQUFBSyxRQUFBLEdBQUMsUUFDdkQsRUFBQ2dCLEtBQUssR0FBRyxDQUFDLEVBQUMsY0FDbkI7SUFBQSxDQUFRLENBQUMsRUFDUixDQUFDK0UsUUFBUSxJQUFJUixRQUFRLEdBQUcsQ0FBQyxpQkFDeEJ2SixJQUFBLENBQUNGLGVBQWU7TUFBQ2UsS0FBSyxFQUFDLFVBQVU7TUFBQ3dELEtBQUssRUFBRWtGO0lBQVMsQ0FBRSxDQUNyRCxlQUNEdkosSUFBQSxDQUFDRixlQUFlO01BQUNlLEtBQUssRUFBQyxZQUFZO01BQUN3RCxLQUFLLEVBQUUrRjtJQUFlLENBQUUsQ0FBQyxFQUM1REosaUJBQWlCLENBQUM5SCxNQUFNLEdBQUcsQ0FBQyxpQkFDM0JsQyxJQUFBLENBQUNxSixjQUFjO01BQ2JFLFFBQVEsRUFBRUEsUUFBUztNQUNuQkUsVUFBVSxFQUFFQSxVQUFXO01BQ3ZCbkosT0FBTyxFQUFFQTtJQUFRLENBQ2xCLENBQ0YsZUFDREosS0FBQTtNQUFReUQsU0FBUyxFQUFDLG9DQUFvQztNQUFBSyxRQUFBLEdBQ25EbUcsU0FBUyxFQUFDLElBQUUsRUFBQzlKLFVBQVUsQ0FBQ0MsT0FBTyxFQUFFdUosS0FBSyxDQUFDUSxTQUFTLENBQUM7SUFBQSxDQUM1QyxDQUFDO0VBQUEsQ0FDRixDQUFDO0FBRWQ7QUFFQSxlQUFlLFNBQVNDLGNBQWNBLENBQUEsRUFBRztFQUN2QyxJQUFBQyxxQkFBQSxHQUFnQjNLLHlCQUF5QixDQUFDLENBQUM7SUFBbkM0SyxHQUFHLEdBQUFELHFCQUFBLENBQUhDLEdBQUc7RUFDWCxJQUFRbEssT0FBTyxHQUEyRGtLLEdBQUcsQ0FBckVsSyxPQUFPO0lBQUFtSyxhQUFBLEdBQTJERCxHQUFHLENBQTVEakIsUUFBUTtJQUFSQSxRQUFRLEdBQUFrQixhQUFBLGNBQUcsQ0FBQyxHQUFBQSxhQUFBO0lBQUFDLGVBQUEsR0FBNkNGLEdBQUcsQ0FBOUNmLFVBQVU7SUFBVkEsVUFBVSxHQUFBaUIsZUFBQSxjQUFHLEVBQUUsR0FBQUEsZUFBQTtJQUFBQyxxQkFBQSxHQUE0QkgsR0FBRyxDQUE3QkksZ0JBQWdCO0lBQWhCQSxnQkFBZ0IsR0FBQUQscUJBQUEsY0FBRyxFQUFFLEdBQUFBLHFCQUFBO0VBQ3JFLElBQVFFLGFBQWEsR0FBS3ZLLE9BQU8sQ0FBekJ1SyxhQUFhO0VBQ3JCLElBQU14SCxTQUFTLEdBQUc5RCwyQkFBMkIsQ0FBQ2lMLEdBQUcsQ0FBQztFQUNsRCxJQUFNVCxRQUFRLEdBQUd0SyxvQkFBb0IsQ0FBQ2EsT0FBTyxDQUFDO0VBQzlDLElBQU13SyxTQUFTLEdBQUdGLGdCQUFnQixDQUFDMUksTUFBTSxHQUFHLENBQUM7RUFDN0MsSUFBTTZJLGtCQUFrQixHQUFHLENBQUN0QixVQUFVLGFBQVZBLFVBQVUsY0FBVkEsVUFBVSxHQUFJLEVBQUUsRUFBRVEsTUFBTSxDQUNsRCxVQUFDUCxDQUFNO0lBQUEsSUFBQXNCLGtCQUFBO0lBQUEsT0FBSyxDQUFDeEwsa0JBQWtCLENBQUNrSyxDQUFDLGFBQURBLENBQUMsZ0JBQUFzQixrQkFBQSxHQUFEdEIsQ0FBQyxDQUFFbEUsY0FBYyxjQUFBd0Ysa0JBQUEsdUJBQWpCQSxrQkFBQSxDQUFtQnRGLFNBQVMsQ0FBQztFQUFBLENBQy9ELENBQUM7RUFDRCxJQUFNdUYsYUFBYSxHQUFHSCxTQUFTLEdBQzNCRixnQkFBZ0IsQ0FBQ00sTUFBTSxDQUNyQixVQUFDQyxHQUFXLEVBQUVDLENBQU07SUFBQSxPQUFLRCxHQUFHLElBQUl2SyxNQUFNLENBQUN3SyxDQUFDLENBQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7RUFBQSxHQUN4RCxDQUNGLENBQUMsR0FDRDNJLE1BQU0sQ0FBQzJJLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFDekIsSUFBTXpJLGFBQWEsR0FBRytELE9BQU8sQ0FBQ3ZFLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFUSxhQUFhLENBQUM7RUFDckQsSUFBTXVLLGFBQWEsR0FBR3pLLE1BQU0sQ0FBQ04sT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVLLFVBQVUsQ0FBQyxHQUFHLENBQUM7RUFFckQsb0JBQ0VULEtBQUE7SUFBS3lELFNBQVMsRUFBQyxnRUFBZ0U7SUFBQUssUUFBQSxnQkFDN0VoRSxJQUFBO01BQUsyRCxTQUFTLEVBQUMsdUNBQXVDO01BQUFLLFFBQUEsRUFBRTFELE9BQU8sQ0FBQ2lCO0lBQUksQ0FBTSxDQUFDLEVBQzFFdUosU0FBUyxpQkFDUjlLLElBQUE7TUFBSzJELFNBQVMsRUFBQyxnQ0FBZ0M7TUFBQUssUUFBQSxFQUM1QzRHLGdCQUFnQixDQUFDN0YsR0FBRyxDQUFDLFVBQUNxRyxDQUFNLEVBQUVqQyxDQUFTO1FBQUEsT0FDdENpQyxDQUFDLENBQUM3QixRQUFRLGdCQUNSdkosSUFBQSxDQUFDMkosa0JBQWtCO1VBQ2pCRSxLQUFLLEVBQUV1QixDQUFFO1VBRVRwRyxLQUFLLEVBQUVtRSxDQUFFO1VBQ1Q3SSxPQUFPLEVBQUVBLE9BQVE7VUFDakJ3SixvQkFBb0IsRUFBRWhKO1FBQWMsTUFBQUMsTUFBQSxDQUg1Qm9JLENBQUMsc0JBSVYsQ0FBQyxHQUNBLElBQUk7TUFBQSxDQUNWO0lBQUMsQ0FDRSxDQUNOLEVBQ0EsQ0FBQzJCLFNBQVMsaUJBQ1Q1SyxLQUFBO01BQUt5RCxTQUFTLEVBQUMsb0NBQW9DO01BQUFLLFFBQUEsZ0JBQ2pEaEUsSUFBQTtRQUFRMkQsU0FBUyxFQUFDLDRDQUE0QztRQUFBSyxRQUFBLEVBQUM7TUFFL0QsQ0FBUSxDQUFDLEVBQ1J1RixRQUFRLEdBQUcsQ0FBQyxpQkFDWHZKLElBQUEsQ0FBQ0YsZUFBZTtRQUFDZSxLQUFLLEVBQUMsVUFBVTtRQUFDd0QsS0FBSyxFQUFFa0Y7TUFBUyxDQUFFLENBQ3JELGVBQ0R2SixJQUFBLENBQUNGLGVBQWU7UUFDZGUsS0FBSyxFQUFDLFlBQVk7UUFDbEJ3RCxLQUFLLEVBQUVyRCx3QkFBd0IsQ0FBQ1YsT0FBTztNQUFFLENBQzFDLENBQUMsRUFDRHlLLGtCQUFrQixDQUFDN0ksTUFBTSxHQUFHLENBQUMsaUJBQzVCbEMsSUFBQSxDQUFDcUosY0FBYztRQUNiRSxRQUFRLEVBQUVBLFFBQVM7UUFDbkJFLFVBQVUsRUFBRUEsVUFBVztRQUN2Qm5KLE9BQU8sRUFBRUE7TUFBUSxDQUNsQixDQUNGO0lBQUEsQ0FDRSxDQUNOLEVBQ0F3SyxTQUFTLElBQUlDLGtCQUFrQixDQUFDN0ksTUFBTSxHQUFHLENBQUMsaUJBQ3pDaEMsS0FBQTtNQUFLeUQsU0FBUyxFQUFDLG9DQUFvQztNQUFBSyxRQUFBLGdCQUNqRGhFLElBQUE7UUFBUTJELFNBQVMsRUFBQyw0Q0FBNEM7UUFBQUssUUFBQSxFQUFDO01BRS9ELENBQVEsQ0FBQyxlQUNUaEUsSUFBQSxDQUFDcUosY0FBYztRQUNiRSxRQUFRLEVBQUVBLFFBQVM7UUFDbkJFLFVBQVUsRUFBRUEsVUFBVztRQUN2Qm5KLE9BQU8sRUFBRUE7TUFBUSxDQUNsQixDQUFDO0lBQUEsQ0FDQyxDQUNOLEVBQ0EsQ0FBQ3lKLFFBQVEsaUJBQ1I3SixLQUFBO01BQUt5RCxTQUFTLEVBQUMsK0JBQStCO01BQUFLLFFBQUEsR0FDM0NpSCxhQUFhLEdBQUcsQ0FBQyxpQkFDaEJqTCxJQUFBLENBQUNILGdCQUFnQjtRQUNmOEQsU0FBUyxFQUFDLHdDQUF3QztRQUNsRDlDLEtBQUssRUFBQyxnQkFBZ0I7UUFDdEJ5SyxNQUFNLEVBQUVMO01BQWMsQ0FDdkIsQ0FDRixFQUNBSCxTQUFTLElBQUlPLGFBQWEsSUFBSSxDQUFDdkssYUFBYSxpQkFDM0NkLElBQUEsQ0FBQ0gsZ0JBQWdCO1FBQ2ZnQixLQUFLLEVBQUMsT0FBTztRQUNieUssTUFBTSxFQUFFakwsVUFBVSxDQUFDQyxPQUFPLEVBQUVNLE1BQU0sQ0FBQ04sT0FBTyxDQUFDSyxVQUFVLENBQUM7TUFBRSxDQUN6RCxDQUNGLGVBQ0RYLElBQUEsQ0FBQ0gsZ0JBQWdCO1FBQ2ZnQixLQUFLLEVBQUMsa0JBQWtCO1FBQ3hCMEssVUFBVSxFQUNSVixhQUFhLGdCQUNYN0ssSUFBQTtVQUFPMkQsU0FBUyxFQUFDLG9DQUFvQztVQUFBSyxRQUFBLEVBQUM7UUFBWSxDQUFPLENBQUMsR0FDeEU3QixTQUNMO1FBQ0RtSixNQUFNLEVBQUVqSTtNQUFVLENBQ25CLENBQUM7SUFBQSxDQUNDLENBQ04sRUFDQSxDQUFDLEVBQUUwRyxRQUFRLElBQUksQ0FBQ2UsU0FBUyxDQUFDLGlCQUN6QjVLLEtBQUE7TUFBQThELFFBQUEsZ0JBQ0U5RCxLQUFBO1FBQVF5RCxTQUFTLEVBQUMsTUFBTTtRQUFBSyxRQUFBLEdBQ3JCK0YsUUFBUSxHQUFHLGtCQUFrQixHQUFHLE9BQU8sRUFBQyxPQUMzQztNQUFBLENBQVEsQ0FBQyxFQUFDLEdBQUcsZUFDYi9KLElBQUE7UUFBUTJELFNBQVMsRUFBQyxjQUFjO1FBQUFLLFFBQUEsRUFBRVg7TUFBUyxDQUFTLENBQUM7SUFBQSxDQUNsRCxDQUNOO0VBQUEsQ0FDRSxDQUFDO0FBRVYifQ==
|
|
730
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIm8iLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJpIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZSIsIl9lIiwiZiIsIlR5cGVFcnJvciIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJjYWxsIiwic3RlcCIsIm5leHQiLCJfZTIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJyIiwibCIsInQiLCJ1IiwiYSIsInB1c2giLCJSZWFjdCIsInVzZVN0YXRlIiwiRmFGaWxlUGRmIiwiRmFSZWdJbWFnZSIsImZvcm1hdEN1cnJlbmN5IiwiY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiaXNQcm9kdWN0U3VwcGxpZXJNT0QiLCJpc1NlbGVjdGFibGUiLCJGaWVsZFR5cGUiLCJlc3RpbWF0ZUFyZWFDb3N0cyIsImZvcm1hdEFyZWFTdW1tYXJ5IiwibG9jYWxlUHJlZmVyc0ltcGVyaWFsIiwidXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCIsIlN1bW1hcnlBbW91bnRSb3ciLCJTdW1tYXJ5RmllbGRSb3ciLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJmb3JtYXRDb3N0IiwicHJvZHVjdCIsImNvc3QiLCJjdXJyZW5jeSIsInNob3dDb2RlSWZOb1N5bWJvbCIsInBhcnNlQ29zdEFtb3VudCIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImZvcm1hdE9uY2VPZmZVbml0Q29zdERldGFpbCIsIm9uY2VPZmZDb3N0IiwidW5pdENvc3QiLCJwYXJ0cyIsIm9uY2VPZmYiLCJ1bml0IiwiY29uY2F0Iiwiam9pbiIsIm9wdGlvbk9uY2VPZmYiLCJvcHRpb24iLCJ2YXJpYXRpb25Db3N0Iiwib3B0aW9uVW5pdCIsInZhcmlhdGlvblVuaXRDb3N0IiwicHJvZHVjdFNldHVwU3VmZml4Iiwic2V0dXBQcmljZSIsImxhYmVsIiwic2V0dXBQZXJHcm91cCIsImZvcm1hdFVuaXRQcmljZVdpdGhTZXR1cCIsInVuaXRQcmljZSIsImlzUGRmIiwiZmlsZSIsIm1pbWV0eXBlIiwiaXNJbWFnZUZpbGUiLCJzdGFydHNXaXRoIiwidG9Mb3dlckNhc2UiLCJhYnNvbHV0aXplRmlsZVVybCIsInJhdyIsInVybEFwaSIsInVybCIsInRyaW0iLCJiYXNlIiwiVVJMIiwib3JpZ2luIiwiaHJlZiIsIl91bnVzZWQiLCJyZXNvbHZlRmlsZVVybCIsInZpZXdVcmwiLCJkb3dubG9hZFVybCIsIm9wdGlvbkltYWdlVXJsIiwiX29wdGlvbiRsaW5rZWRGaWxlIiwiX29wdGlvbiRsaW5rZWRGaWxlMiIsImxpbmtlZEZpbGUiLCJmaW5kTWF0Y2hpbmdPcHRpb24iLCJvcHRpb25zIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZmluZCIsIlN0cmluZyIsIm9wdGlvbklkIiwicmVzb2x2ZU9wdGlvbkNvbG91ciIsIl9vcHRpb24kY29sb3VyIiwiX2ZpbmRNYXRjaGluZ09wdGlvbiIsIl9maW5kTWF0Y2hpbmdPcHRpb24yIiwic2VsZWN0YWJsZU9wdGlvbnMiLCJmaWVsZE9wdGlvbnMiLCJkaXJlY3QiLCJjb2xvdXIiLCJmcm9tU2VsZWN0YWJsZSIsInJlc29sdmVPcHRpb25JbWFnZVVybCIsImZvcm1hdE9wdGlvbkNvc3QiLCJzZWxsZXJQcm9kdWN0RWRpdGFibGUiLCJvbmNlT2ZmVW5pdCIsInRvdGFsQ29zdCIsInZhcmlhdGlvbkNvc3REZXRhaWwiLCJ2YXJpYXRpb24iLCJfdmFyaWF0aW9uJG9uY2VPZmZDb3MiLCJfdmFyaWF0aW9uJHVuaXRDb3N0IiwiX3JlZiIsIl9yZWYkaW5jbHVkZVNlbGVjdGVkTyIsImluY2x1ZGVTZWxlY3RlZE9wdGlvbkNvc3RzIiwiX3JlZiRmaWVsZENvc3RzT25seSIsImZpZWxkQ29zdHNPbmx5IiwiZmllbGQiLCJ2YXJpYXRpb25GaWVsZCIsImZpZWxkVHlwZSIsIkFSRUEiLCJhcmVhQ29zdHMiLCJzZWxlY3RlZCIsInNlbGVjdGVkT3B0aW9ucyIsImZpZWxkT25jZSIsIkNPTE9VUl9FWFRSQUNUIiwiZmllbGRVbml0IiwicmVkdWNlIiwic3VtIiwiVmFyaWF0aW9uRmlsZVByZXZpZXciLCJfcmVmMiIsImZpbGVVcmwiLCJmaWxlTmFtZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJpbWFnZUZhaWxlZCIsInNldEltYWdlRmFpbGVkIiwiY2xhc3NOYW1lIiwidGFyZ2V0IiwicmVsIiwidGl0bGUiLCJjaGlsZHJlbiIsInNyYyIsImFsdCIsIm9uRXJyb3IiLCJWYXJpYXRpb25JbmZvQm9keSIsIl9yZWYzIiwiY29zdERldGFpbCIsImZpbGVzIiwidHlwZSIsImlzQ29sb3VyUGlja2VyIiwiQ09MT1VSX1BJQ0tFUiIsImlzRmlsZVVwbG9hZCIsIkZJTEVfVVBMT0FEIiwiaGFzRmlsZXMiLCJCb29sZWFuIiwiZGlzcGxheVZhbHVlIiwibWFwIiwiaW5kZXgiLCJpZCIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiVmFyaWF0aW9uSW5mbyIsIl9yZWY0IiwiX3VzZU1lcmNoaUNoZWNrYm91dENvIiwidmFyaWF0aW9uRmlsZXMiLCJfdmFyaWF0aW9uRmllbGQkb3B0aW8iLCJpc1ZhcmlhdGlvblNlbGVjdGFibGUiLCJpc1R1cm5hcm91bmRUaW1lIiwiVFVSTkFST1VORF9USU1FIiwiaXNDb2xvdXJFeHRyYWN0IiwicmVzb2x2ZVNlbGVjdGFibGVTZWxlY3RlZE9wdGlvbnMiLCJ1c2VTZWxlY3RhYmxlRGlzcGxheSIsIlZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keSIsImFyZWFVbml0IiwiQ29sb3VyU2VsZWN0T3B0aW9uIiwiX3JlZjUiLCJfb3B0aW9uJHZhbHVlIiwiaGV4IiwiSW1hZ2VTZWxlY3RPcHRpb24iLCJfcmVmNiIsIl9vcHRpb24kdmFsdWUyIiwiX3VzZU1lcmNoaUNoZWNrYm91dENvMiIsImltYWdlVXJsIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJnZXRPcHRpb25JZCIsIl9vcHRpb24kb3B0aW9uSWQiLCJzcGxpdFNlbGVjdGVkT3B0aW9uSWRzIiwiZmlsdGVyIiwic3BsaXQiLCJwYXJ0IiwiX3ZhcmlhdGlvbiR2YXJpYXRpb25GIiwic2VsZWN0ZWRJZHMiLCJwb29scyIsInJlc29sdmVkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfbG9vcCIsIl9pIiwiX3Bvb2xzIiwicG9vbCIsIm1hdGNoIiwicmVzb2x2ZVR1cm5hcm91bmRTZWxlY3RlZE9wdGlvbiIsInZhbHVlU3RyIiwiX2kyIiwiX3Bvb2xzMiIsImJ5VmFsdWUiLCJfb3B0aW9uJHZhbHVlMyIsImZvcm1hdFR1cm5hcm91bmREZWFkbGluZSIsInVzZXJEZWFkbGluZSIsInNlY29uZHMiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwid2Vla2RheSIsInllYXIiLCJtb250aCIsImRheSIsIlR1cm5hcm91bmRPcHRpb25MYWJlbCIsIl9yZWY3IiwiX29wdGlvbiR2YWx1ZTQiLCJfb3B0aW9uJHZhbHVlNSIsImRheXMiLCJwYXJzZUludCIsImRlYWRsaW5lIiwic2hpcHBpbmdUaW1lSW5jbHVkZWQiLCJkZWFkbGluZUxhYmVsIiwiX3JlZjgiLCJfdmFyaWF0aW9uJHZhcmlhdGlvbkYyIiwiX3JlZjgkc2VsZWN0YWJsZU9wdGlvIiwiX3JlZjgkZmllbGRPcHRpb25zIiwiZmlyc3RPcHRpb24iLCJpc0NvbG91clNlbGVjdCIsIkNPTE9VUl9TRUxFQ1QiLCJpc0ltYWdlU2VsZWN0IiwiSU1BR0VfU0VMRUNUIiwicmVuZGVyT3B0aW9uTGFiZWwiLCJfbyR2YWx1ZSIsIl9vJG9wdGlvbklkIiwiVmFyaWF0aW9uc0luZm8iLCJfcmVmOSIsInF1YW50aXR5IiwiX3JlZjkkdmFyaWF0aW9ucyIsInZhcmlhdGlvbnMiLCJ2IiwiVmFyaWF0aW9uR3JvdXBJbmZvIiwiX3JlZjEwIiwiZ3JvdXAiLCJzaG93U2V0dXBPblVuaXRQcmljZSIsImlzUmVzZWxsIiwidmlzaWJsZVZhcmlhdGlvbnMiLCJfdiR2YXJpYXRpb25GaWVsZCIsImNvc3RMYWJlbCIsInVuaXRQcmljZVZhbHVlIiwiZ3JvdXBDb3N0IiwiSm9iSW5mb0NvbnRlbnQiLCJfdXNlTWVyY2hpQ2hlY2tib3V0Q28zIiwiam9iIiwiX2pvYiRxdWFudGl0eSIsIl9qb2IkdmFyaWF0aW9ucyIsIl9qb2IkdmFyaWF0aW9uc0dyb3VwcyIsInZhcmlhdGlvbnNHcm91cHMiLCJuZWVkc1NoaXBwaW5nIiwiaGFzR3JvdXBzIiwiam9iTGV2ZWxWYXJpYXRpb25zIiwiX3YkdmFyaWF0aW9uRmllbGQyIiwidG90YWxRdWFudGl0eSIsImciLCJoYXNTZXR1cFByaWNlIiwibGFiZWxFeHRyYSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0pvYkluZm9Db250ZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XHJcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgRmFGaWxlUGRmLCBGYVJlZ0ltYWdlIH0gZnJvbSAncmVhY3QtaWNvbnMvZmEnO1xyXG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSwgY3VycmVuY3lUb3RhbENvc3RTaG93SW5jVGF4IH0gZnJvbSAnLi9jdXJyZW5jeSc7XHJcbmltcG9ydCB7XHJcbiAgaXNJbnN0cnVjdGlvbnNUeXBlLFxyXG4gIGlzUHJvZHVjdFN1cHBsaWVyTU9ELFxyXG4gIGlzU2VsZWN0YWJsZSxcclxuICBGaWVsZFR5cGUsXHJcbn0gZnJvbSAnLi4vdXRpbHMnO1xyXG5pbXBvcnQge1xyXG4gIGVzdGltYXRlQXJlYUNvc3RzLFxyXG4gIGZvcm1hdEFyZWFTdW1tYXJ5LFxyXG4gIGxvY2FsZVByZWZlcnNJbXBlcmlhbCxcclxufSBmcm9tICcuLi9hcmVhJztcclxuaW1wb3J0IHsgdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCB9IGZyb20gJy4vTWVyY2hpQ2hlY2tvdXRQcm92aWRlcic7XHJcbmltcG9ydCB7XHJcbiAgU3VtbWFyeUFtb3VudFJvdyxcclxuICBTdW1tYXJ5RmllbGRSb3csXHJcbn0gZnJvbSAnLi9DaGVja291dFN1bW1hcnlGaWVsZHMnO1xyXG5cclxuZnVuY3Rpb24gZm9ybWF0Q29zdChwcm9kdWN0OiBhbnksIGNvc3Q6IG51bWJlcikge1xyXG4gIGNvbnN0IGN1cnJlbmN5ID0gcHJvZHVjdC5jdXJyZW5jeSA/IHByb2R1Y3QuY3VycmVuY3kgOiAnQVVEJztcclxuICByZXR1cm4gZm9ybWF0Q3VycmVuY3koY29zdCwge1xyXG4gICAgY3VycmVuY3ksXHJcbiAgICBzaG93Q29kZUlmTm9TeW1ib2w6IGZhbHNlLFxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUNvc3RBbW91bnQodmFsdWU6IGFueSk6IG51bWJlciB7XHJcbiAgY29uc3QgYW1vdW50ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShhbW91bnQpICYmIGFtb3VudCA+IDAgPyBhbW91bnQgOiAwO1xyXG59XHJcblxyXG4vKiogTWF0Y2ggcHJvZHVjdC1mb3JtIHdvcmRpbmc6IFwiKyAkWCBvbmNlIG9mZlwiIC8gXCIrICRZIHBlciB1bml0XCIuICovXHJcbmZ1bmN0aW9uIGZvcm1hdE9uY2VPZmZVbml0Q29zdERldGFpbChcclxuICBwcm9kdWN0OiBhbnksXHJcbiAgb25jZU9mZkNvc3Q6IGFueSxcclxuICB1bml0Q29zdDogYW55XHJcbikge1xyXG4gIGNvbnN0IGN1cnJlbmN5ID0gcHJvZHVjdD8uY3VycmVuY3kgfHwgJ0FVRCc7XHJcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgY29uc3Qgb25jZU9mZiA9IHBhcnNlQ29zdEFtb3VudChvbmNlT2ZmQ29zdCk7XHJcbiAgY29uc3QgdW5pdCA9IHBhcnNlQ29zdEFtb3VudCh1bml0Q29zdCk7XHJcbiAgaWYgKG9uY2VPZmYpIHtcclxuICAgIHBhcnRzLnB1c2goXHJcbiAgICAgIGAgKyAke2Zvcm1hdEN1cnJlbmN5KG9uY2VPZmYsIHsgY3VycmVuY3ksIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UgfSl9IG9uY2Ugb2ZmYFxyXG4gICAgKTtcclxuICB9XHJcbiAgaWYgKHVuaXQpIHtcclxuICAgIHBhcnRzLnB1c2goXHJcbiAgICAgIGAgKyAke2Zvcm1hdEN1cnJlbmN5KHVuaXQsIHsgY3VycmVuY3ksIHNob3dDb2RlSWZOb1N5bWJvbDogZmFsc2UgfSl9IHBlciB1bml0YFxyXG4gICAgKTtcclxuICB9XHJcbiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBvcHRpb25PbmNlT2ZmKG9wdGlvbjogYW55KTogbnVtYmVyIHtcclxuICByZXR1cm4gKFxyXG4gICAgcGFyc2VDb3N0QW1vdW50KG9wdGlvbj8ub25jZU9mZkNvc3QpIHx8XHJcbiAgICBwYXJzZUNvc3RBbW91bnQob3B0aW9uPy52YXJpYXRpb25Db3N0KSB8fFxyXG4gICAgMFxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9wdGlvblVuaXQob3B0aW9uOiBhbnkpOiBudW1iZXIge1xyXG4gIHJldHVybiAoXHJcbiAgICBwYXJzZUNvc3RBbW91bnQob3B0aW9uPy51bml0Q29zdCkgfHxcclxuICAgIHBhcnNlQ29zdEFtb3VudChvcHRpb24/LnZhcmlhdGlvblVuaXRDb3N0KSB8fFxyXG4gICAgMFxyXG4gICk7XHJcbn1cclxuXHJcbi8qKiBQcm9kdWN0IHNldHVwIGZlZSBzaG93biBuZXh0IHRvIHVuaXQgcHJpY2UsIG1hdGNoaW5nIHByb2R1Y3QtZm9ybSB3b3JkaW5nLiAqL1xyXG5mdW5jdGlvbiBwcm9kdWN0U2V0dXBTdWZmaXgocHJvZHVjdDogYW55KSB7XHJcbiAgY29uc3Qgc2V0dXBQcmljZSA9IE51bWJlcihwcm9kdWN0Py5zZXR1cFByaWNlKTtcclxuICBpZiAoIXNldHVwUHJpY2UpIHJldHVybiAnJztcclxuICBjb25zdCBsYWJlbCA9IHByb2R1Y3Quc2V0dXBQZXJHcm91cCA/ICdzZXR1cCBwZXIgZ3JvdXAnIDogJ3NldHVwJztcclxuICByZXR1cm4gYCArICR7Zm9ybWF0Q29zdChwcm9kdWN0LCBzZXR1cFByaWNlKX0gJHtsYWJlbH1gO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmb3JtYXRVbml0UHJpY2VXaXRoU2V0dXAocHJvZHVjdDogYW55KSB7XHJcbiAgcmV0dXJuIGAke2Zvcm1hdENvc3QocHJvZHVjdCwgTnVtYmVyKHByb2R1Y3Q/LnVuaXRQcmljZSkgfHwgMCl9JHtwcm9kdWN0U2V0dXBTdWZmaXgocHJvZHVjdCl9YDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNQZGYoZmlsZTogYW55KSB7XHJcbiAgY29uc3QgbWltZXR5cGUgPSBmaWxlPy5taW1ldHlwZSB8fCAnJztcclxuICByZXR1cm4gbWltZXR5cGUgPT09ICdhcHBsaWNhdGlvbi9wZGYnIHx8IG1pbWV0eXBlID09PSAnYXBwbGljYXRpb24veC1wZGYnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0ltYWdlRmlsZShmaWxlOiBhbnkpIHtcclxuICBjb25zdCBtaW1ldHlwZSA9IGZpbGU/Lm1pbWV0eXBlIHx8ICcnO1xyXG4gIGlmIChtaW1ldHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkgcmV0dXJuIHRydWU7XHJcbiAgY29uc3QgbmFtZSA9IChmaWxlPy5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gIHJldHVybiAvXFwuKGpwZT9nfHBuZ3xnaWZ8d2VicHxzdmd8Ym1wKSQvLnRlc3QobmFtZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFic29sdXRpemVGaWxlVXJsKHJhdzogc3RyaW5nLCB1cmxBcGk/OiBzdHJpbmcpIHtcclxuICBjb25zdCB1cmwgPSAocmF3IHx8ICcnKS50cmltKCk7XHJcbiAgaWYgKCF1cmwgfHwgdXJsID09PSAndW5kZWZpbmVkJyB8fCB1cmwgPT09ICdudWxsJykgcmV0dXJuICcnO1xyXG4gIGlmICgvXihodHRwcz86fGJsb2I6fGRhdGE6KS9pLnRlc3QodXJsKSkgcmV0dXJuIHVybDtcclxuICBpZiAoIXVybEFwaSkgcmV0dXJuIHVybDtcclxuICB0cnkge1xyXG4gICAgY29uc3QgYmFzZSA9IG5ldyBVUkwodXJsQXBpKTtcclxuICAgIHJldHVybiBuZXcgVVJMKHVybCwgYCR7YmFzZS5vcmlnaW59L2ApLmhyZWY7XHJcbiAgfSBjYXRjaCB7XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVzb2x2ZUZpbGVVcmwoZmlsZTogYW55LCB1cmxBcGk/OiBzdHJpbmcpIHtcclxuICByZXR1cm4gYWJzb2x1dGl6ZUZpbGVVcmwoXHJcbiAgICBmaWxlPy52aWV3VXJsIHx8IGZpbGU/LmRvd25sb2FkVXJsIHx8ICcnLFxyXG4gICAgdXJsQXBpXHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gb3B0aW9uSW1hZ2VVcmwob3B0aW9uOiBhbnksIHVybEFwaT86IHN0cmluZykge1xyXG4gIHJldHVybiBhYnNvbHV0aXplRmlsZVVybChcclxuICAgIG9wdGlvbj8ubGlua2VkRmlsZT8udmlld1VybCB8fCBvcHRpb24/LmxpbmtlZEZpbGU/LmRvd25sb2FkVXJsIHx8ICcnLFxyXG4gICAgdXJsQXBpXHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZE1hdGNoaW5nT3B0aW9uKG9wdGlvbjogYW55LCBvcHRpb25zOiBhbnlbXSA9IFtdKSB7XHJcbiAgcmV0dXJuIG9wdGlvbnMuZmluZCgobykgPT4gU3RyaW5nKG8ub3B0aW9uSWQpID09PSBTdHJpbmcob3B0aW9uPy5vcHRpb25JZCkpO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZXNvbHZlT3B0aW9uQ29sb3VyKFxyXG4gIG9wdGlvbjogYW55LFxyXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxyXG4gIGZpZWxkT3B0aW9uczogYW55W10gPSBbXVxyXG4pIHtcclxuICBjb25zdCBkaXJlY3QgPSBvcHRpb24/LmNvbG91cj8udHJpbSgpO1xyXG4gIGlmIChkaXJlY3QpIHJldHVybiBkaXJlY3Q7XHJcbiAgY29uc3QgZnJvbVNlbGVjdGFibGUgPSBmaW5kTWF0Y2hpbmdPcHRpb24ob3B0aW9uLCBzZWxlY3RhYmxlT3B0aW9ucyk/LmNvbG91cj8udHJpbSgpO1xyXG4gIGlmIChmcm9tU2VsZWN0YWJsZSkgcmV0dXJuIGZyb21TZWxlY3RhYmxlO1xyXG4gIHJldHVybiBmaW5kTWF0Y2hpbmdPcHRpb24ob3B0aW9uLCBmaWVsZE9wdGlvbnMpPy5jb2xvdXI/LnRyaW0oKSB8fCAnJztcclxufVxyXG5cclxuZnVuY3Rpb24gcmVzb2x2ZU9wdGlvbkltYWdlVXJsKFxyXG4gIG9wdGlvbjogYW55LFxyXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxyXG4gIGZpZWxkT3B0aW9uczogYW55W10gPSBbXSxcclxuICB1cmxBcGk/OiBzdHJpbmdcclxuKSB7XHJcbiAgY29uc3QgZGlyZWN0ID0gb3B0aW9uSW1hZ2VVcmwob3B0aW9uLCB1cmxBcGkpO1xyXG4gIGlmIChkaXJlY3QpIHJldHVybiBkaXJlY3Q7XHJcbiAgY29uc3QgZnJvbVNlbGVjdGFibGUgPSBvcHRpb25JbWFnZVVybChcclxuICAgIGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIHNlbGVjdGFibGVPcHRpb25zKSxcclxuICAgIHVybEFwaVxyXG4gICk7XHJcbiAgaWYgKGZyb21TZWxlY3RhYmxlKSByZXR1cm4gZnJvbVNlbGVjdGFibGU7XHJcbiAgcmV0dXJuIG9wdGlvbkltYWdlVXJsKGZpbmRNYXRjaGluZ09wdGlvbihvcHRpb24sIGZpZWxkT3B0aW9ucyksIHVybEFwaSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdE9wdGlvbkNvc3QoXHJcbiAgcHJvZHVjdDogYW55LFxyXG4gIG9wdGlvbjogYW55LFxyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZTogYm9vbGVhblxyXG4pIHtcclxuICBpZiAoc2VsbGVyUHJvZHVjdEVkaXRhYmxlIHx8ICFvcHRpb24pIHJldHVybiBudWxsO1xyXG4gIGNvbnN0IG9uY2VPZmZVbml0ID0gZm9ybWF0T25jZU9mZlVuaXRDb3N0RGV0YWlsKFxyXG4gICAgcHJvZHVjdCxcclxuICAgIG9wdGlvbk9uY2VPZmYob3B0aW9uKSxcclxuICAgIG9wdGlvblVuaXQob3B0aW9uKVxyXG4gICk7XHJcbiAgaWYgKG9uY2VPZmZVbml0KSByZXR1cm4gb25jZU9mZlVuaXQ7XHJcbiAgaWYgKG9wdGlvbi50b3RhbENvc3QpIHtcclxuICAgIHJldHVybiBgICsgJHtmb3JtYXRDb3N0KHByb2R1Y3QsIG9wdGlvbi50b3RhbENvc3QpfWA7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5mdW5jdGlvbiB2YXJpYXRpb25Db3N0RGV0YWlsKFxyXG4gIHByb2R1Y3Q6IGFueSxcclxuICB2YXJpYXRpb246IGFueSxcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW4sXHJcbiAge1xyXG4gICAgaW5jbHVkZVNlbGVjdGVkT3B0aW9uQ29zdHMgPSB0cnVlLFxyXG4gICAgZmllbGRDb3N0c09ubHkgPSBmYWxzZSxcclxuICB9OiB7XHJcbiAgICBpbmNsdWRlU2VsZWN0ZWRPcHRpb25Db3N0cz86IGJvb2xlYW47XHJcbiAgICBmaWVsZENvc3RzT25seT86IGJvb2xlYW47XHJcbiAgfSA9IHt9XHJcbikge1xyXG4gIGlmIChzZWxsZXJQcm9kdWN0RWRpdGFibGUpIHJldHVybiAnJztcclxuXHJcbiAgY29uc3QgZmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkIHx8IHt9O1xyXG4gIGNvbnN0IGZpZWxkVHlwZSA9IE51bWJlcihmaWVsZC5maWVsZFR5cGUpO1xyXG5cclxuICBpZiAoZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQVJFQSkge1xyXG4gICAgY29uc3QgYXJlYUNvc3RzID0gZXN0aW1hdGVBcmVhQ29zdHMoZmllbGQsIHZhcmlhdGlvbj8udmFsdWUpO1xyXG4gICAgaWYgKGFyZWFDb3N0cykge1xyXG4gICAgICByZXR1cm4gZm9ybWF0T25jZU9mZlVuaXRDb3N0RGV0YWlsKFxyXG4gICAgICAgIHByb2R1Y3QsXHJcbiAgICAgICAgYXJlYUNvc3RzLm9uY2VPZmZDb3N0LFxyXG4gICAgICAgIGFyZWFDb3N0cy51bml0Q29zdFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGZpZWxkQ29zdHNPbmx5KSB7XHJcbiAgICByZXR1cm4gZm9ybWF0T25jZU9mZlVuaXRDb3N0RGV0YWlsKFxyXG4gICAgICBwcm9kdWN0LFxyXG4gICAgICBmaWVsZC52YXJpYXRpb25Db3N0LFxyXG4gICAgICBmaWVsZC52YXJpYXRpb25Vbml0Q29zdFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2YXJpYXRpb24/LnNlbGVjdGVkT3B0aW9ucylcclxuICAgID8gdmFyaWF0aW9uLnNlbGVjdGVkT3B0aW9uc1xyXG4gICAgOiBbXTtcclxuICBpZiAoaW5jbHVkZVNlbGVjdGVkT3B0aW9uQ29zdHMgJiYgc2VsZWN0ZWQubGVuZ3RoKSB7XHJcbiAgICBjb25zdCBmaWVsZE9uY2UgPVxyXG4gICAgICBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfRVhUUkFDVFxyXG4gICAgICAgID8gcGFyc2VDb3N0QW1vdW50KGZpZWxkLnZhcmlhdGlvbkNvc3QpXHJcbiAgICAgICAgOiAwO1xyXG4gICAgY29uc3QgZmllbGRVbml0ID1cclxuICAgICAgZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX0VYVFJBQ1RcclxuICAgICAgICA/IHBhcnNlQ29zdEFtb3VudChmaWVsZC52YXJpYXRpb25Vbml0Q29zdClcclxuICAgICAgICA6IDA7XHJcbiAgICByZXR1cm4gZm9ybWF0T25jZU9mZlVuaXRDb3N0RGV0YWlsKFxyXG4gICAgICBwcm9kdWN0LFxyXG4gICAgICBmaWVsZE9uY2UgK1xyXG4gICAgICAgIHNlbGVjdGVkLnJlZHVjZShcclxuICAgICAgICAgIChzdW06IG51bWJlciwgb3B0aW9uOiBhbnkpID0+IHN1bSArIG9wdGlvbk9uY2VPZmYob3B0aW9uKSxcclxuICAgICAgICAgIDBcclxuICAgICAgICApLFxyXG4gICAgICBmaWVsZFVuaXQgK1xyXG4gICAgICAgIHNlbGVjdGVkLnJlZHVjZShcclxuICAgICAgICAgIChzdW06IG51bWJlciwgb3B0aW9uOiBhbnkpID0+IHN1bSArIG9wdGlvblVuaXQob3B0aW9uKSxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgb25jZU9mZlVuaXQgPSBmb3JtYXRPbmNlT2ZmVW5pdENvc3REZXRhaWwoXHJcbiAgICBwcm9kdWN0LFxyXG4gICAgdmFyaWF0aW9uPy5vbmNlT2ZmQ29zdCA/PyBmaWVsZC52YXJpYXRpb25Db3N0LFxyXG4gICAgdmFyaWF0aW9uPy51bml0Q29zdCA/PyBmaWVsZC52YXJpYXRpb25Vbml0Q29zdFxyXG4gICk7XHJcbiAgaWYgKG9uY2VPZmZVbml0KSByZXR1cm4gb25jZU9mZlVuaXQ7XHJcbiAgaWYgKHZhcmlhdGlvbj8uY29zdCkge1xyXG4gICAgcmV0dXJuIGAgKyAke2Zvcm1hdENvc3QocHJvZHVjdCwgdmFyaWF0aW9uLmNvc3QpfWA7XHJcbiAgfVxyXG4gIHJldHVybiAnJztcclxufVxyXG5cclxuZnVuY3Rpb24gVmFyaWF0aW9uRmlsZVByZXZpZXcoe1xyXG4gIGZpbGUsXHJcbiAgdXJsQXBpLFxyXG59OiB7XHJcbiAgZmlsZTogYW55O1xyXG4gIHVybEFwaT86IHN0cmluZztcclxufSkge1xyXG4gIGNvbnN0IGZpbGVVcmwgPSByZXNvbHZlRmlsZVVybChmaWxlLCB1cmxBcGkpO1xyXG4gIGNvbnN0IGZpbGVOYW1lID0gZmlsZT8ubmFtZSB8fCAnRmlsZSc7XHJcbiAgY29uc3QgW2ltYWdlRmFpbGVkLCBzZXRJbWFnZUZhaWxlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gIGlmIChpc1BkZihmaWxlKSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGFcclxuICAgICAgICBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtbGluaydcclxuICAgICAgICBocmVmPXtmaWxlVXJsIHx8IHVuZGVmaW5lZH1cclxuICAgICAgICB0YXJnZXQ9J19ibGFuaydcclxuICAgICAgICByZWw9J25vb3BlbmVyIG5vcmVmZXJyZXInXHJcbiAgICAgICAgdGl0bGU9e2ZpbGVOYW1lfVxyXG4gICAgICA+XHJcbiAgICAgICAgPEZhRmlsZVBkZiBhcmlhLWhpZGRlbiAvPlxyXG4gICAgICAgIDxzcGFuPntmaWxlTmFtZX08L3NwYW4+XHJcbiAgICAgIDwvYT5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNJbWFnZUZpbGUoZmlsZSkgJiYgZmlsZVVybCAmJiAhaW1hZ2VGYWlsZWQpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxpbWdcclxuICAgICAgICBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50LWltZydcclxuICAgICAgICBzcmM9e2ZpbGVVcmx9XHJcbiAgICAgICAgYWx0PXtmaWxlTmFtZX1cclxuICAgICAgICB0aXRsZT17ZmlsZU5hbWV9XHJcbiAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SW1hZ2VGYWlsZWQodHJ1ZSl9XHJcbiAgICAgIC8+XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzSW1hZ2VGaWxlKGZpbGUpKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZmlsZS1mYWxsYmFjaydcclxuICAgICAgICB0aXRsZT17ZmlsZU5hbWV9XHJcbiAgICAgID5cclxuICAgICAgICA8RmFSZWdJbWFnZSBhcmlhLWhpZGRlbiAvPlxyXG4gICAgICAgIDxzcGFuPntmaWxlTmFtZX08L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoZmlsZVVybCkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGFcclxuICAgICAgICBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtbGluaydcclxuICAgICAgICBocmVmPXtmaWxlVXJsfVxyXG4gICAgICAgIHRhcmdldD0nX2JsYW5rJ1xyXG4gICAgICAgIHJlbD0nbm9vcGVuZXIgbm9yZWZlcnJlcidcclxuICAgICAgICB0aXRsZT17ZmlsZU5hbWV9XHJcbiAgICAgID5cclxuICAgICAgICB7ZmlsZU5hbWV9XHJcbiAgICAgIDwvYT5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gPHNwYW4+e2ZpbGVOYW1lfTwvc3Bhbj47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFZhcmlhdGlvbkluZm9Cb2R5KHtcclxuICBjb3N0RGV0YWlsLFxyXG4gIG5hbWUsXHJcbiAgcHJvZHVjdCxcclxuICB2YWx1ZSxcclxuICBmaWxlcyxcclxuICB0eXBlLFxyXG4gIHVybEFwaSxcclxufTogYW55KSB7XHJcbiAgY29uc3QgaXNDb2xvdXJQaWNrZXIgPSB0eXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX1BJQ0tFUjtcclxuICBjb25zdCBpc0ZpbGVVcGxvYWQgPVxyXG4gICAgdHlwZSA9PT0gRmllbGRUeXBlLkZJTEVfVVBMT0FEIHx8IHR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfRVhUUkFDVDtcclxuICBjb25zdCBoYXNGaWxlcyA9IEJvb2xlYW4oZmlsZXM/Lmxlbmd0aCk7XHJcbiAgY29uc3QgZGlzcGxheVZhbHVlID0gaXNDb2xvdXJQaWNrZXIgfHwgKGlzRmlsZVVwbG9hZCAmJiBoYXNGaWxlcykgPyBudWxsIDogdmFsdWU7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXJvdyc+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tbGFiZWwnPntuYW1lfTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz5cclxuICAgICAgICB7aGFzRmlsZXMgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWZpbGUtcHJldmlld3MnPlxyXG4gICAgICAgICAgICB7ZmlsZXMubWFwKChmaWxlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IChcclxuICAgICAgICAgICAgICA8VmFyaWF0aW9uRmlsZVByZXZpZXdcclxuICAgICAgICAgICAgICAgIGtleT17ZmlsZS52aWV3VXJsIHx8IGZpbGUuaWQgfHwgYCR7bmFtZX0tZmlsZS0ke2luZGV4fWB9XHJcbiAgICAgICAgICAgICAgICBmaWxlPXtmaWxlfVxyXG4gICAgICAgICAgICAgICAgdXJsQXBpPXt1cmxBcGl9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtpc0NvbG91clBpY2tlciAmJiB2YWx1ZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktY29sb3VyLXZhbHVlJz5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IHZhbHVlIH19XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdjb2xvci1pbmRpY2F0b3InXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuPnt2YWx1ZX08L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtkaXNwbGF5VmFsdWUgJiYgZGlzcGxheVZhbHVlfVxyXG4gICAgICAgIHtjb3N0RGV0YWlsIHx8ICcnfVxyXG4gICAgICAgIHshaGFzRmlsZXMgJiYgIXZhbHVlICYmICFjb3N0RGV0YWlsICYmICctJ31cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBWYXJpYXRpb25JbmZvKHsgcHJvZHVjdCwgdmFyaWF0aW9uIH06IGFueSkge1xyXG4gIGNvbnN0IHsgdXJsQXBpIH0gPSB1c2VNZXJjaGlDaGVja2JvdXRDb250ZXh0KCk7XHJcbiAgY29uc3QgeyB2YXJpYXRpb25GaWVsZCwgdmFyaWF0aW9uRmlsZXMsIHNlbGVjdGFibGVPcHRpb25zIH0gPSB2YXJpYXRpb247XHJcbiAgY29uc3QgeyBmaWVsZFR5cGUsIHNlbGxlclByb2R1Y3RFZGl0YWJsZSwgb3B0aW9uczogZmllbGRPcHRpb25zID0gW10gfSA9XHJcbiAgICB2YXJpYXRpb25GaWVsZDtcclxuICBjb25zdCBpc1ZhcmlhdGlvblNlbGVjdGFibGUgPSBpc1NlbGVjdGFibGUoZmllbGRUeXBlKTtcclxuICBjb25zdCBpc1R1cm5hcm91bmRUaW1lID0gZmllbGRUeXBlID09PSBGaWVsZFR5cGUuVFVSTkFST1VORF9USU1FO1xyXG4gIGNvbnN0IGlzQ29sb3VyRXh0cmFjdCA9IGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9FWFRSQUNUO1xyXG4gIGNvbnN0IG9wdGlvbnMgPSByZXNvbHZlU2VsZWN0YWJsZVNlbGVjdGVkT3B0aW9ucyhcclxuICAgIHZhcmlhdGlvbixcclxuICAgIHNlbGVjdGFibGVPcHRpb25zLFxyXG4gICAgZmllbGRPcHRpb25zXHJcbiAgKTtcclxuICBjb25zdCB1c2VTZWxlY3RhYmxlRGlzcGxheSA9XHJcbiAgICBpc1ZhcmlhdGlvblNlbGVjdGFibGUgJiZcclxuICAgIChCb29sZWFuKG9wdGlvbnM/Lmxlbmd0aCkgfHwgKGlzVHVybmFyb3VuZFRpbWUgJiYgdmFyaWF0aW9uLnZhbHVlKSk7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24nPlxyXG4gICAgICB7aXNDb2xvdXJFeHRyYWN0ID8gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8VmFyaWF0aW9uSW5mb0JvZHlcclxuICAgICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cclxuICAgICAgICAgICAgdHlwZT17ZmllbGRUeXBlfVxyXG4gICAgICAgICAgICB2YWx1ZT17bnVsbH1cclxuICAgICAgICAgICAgZmlsZXM9e3ZhcmlhdGlvbkZpbGVzfVxyXG4gICAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgICB1cmxBcGk9e3VybEFwaX1cclxuICAgICAgICAgICAgY29zdERldGFpbD17dmFyaWF0aW9uQ29zdERldGFpbChcclxuICAgICAgICAgICAgICBwcm9kdWN0LFxyXG4gICAgICAgICAgICAgIHZhcmlhdGlvbixcclxuICAgICAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXHJcbiAgICAgICAgICAgICAgLy8gT3B0aW9ucyBsaXN0IHNob3dzIGVhY2ggY29sb3VyIGNvc3Q7IGtlZXAgZmllbGQgYmFzZSBjb3N0IGhlcmUuXHJcbiAgICAgICAgICAgICAgb3B0aW9ucz8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICA/IHsgZmllbGRDb3N0c09ubHk6IHRydWUgfVxyXG4gICAgICAgICAgICAgICAgOiB7IGluY2x1ZGVTZWxlY3RlZE9wdGlvbkNvc3RzOiBmYWxzZSB9XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAge29wdGlvbnM/Lmxlbmd0aCA/IChcclxuICAgICAgICAgICAgPFZhcmlhdGlvbk9wdGlvbnNJbmZvQm9keVxyXG4gICAgICAgICAgICAgIG5hbWU9e2Ake3ZhcmlhdGlvbkZpZWxkLm5hbWV9IGNvbG91cnNgfVxyXG4gICAgICAgICAgICAgIGZpZWxkVHlwZT17ZmllbGRUeXBlfVxyXG4gICAgICAgICAgICAgIHZhbHVlPXt2YXJpYXRpb24udmFsdWV9XHJcbiAgICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnM9e29wdGlvbnN9XHJcbiAgICAgICAgICAgICAgdmFyaWF0aW9uPXt2YXJpYXRpb259XHJcbiAgICAgICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxyXG4gICAgICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxyXG4gICAgICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICkgOiB1c2VTZWxlY3RhYmxlRGlzcGxheSA/IChcclxuICAgICAgICA8VmFyaWF0aW9uT3B0aW9uc0luZm9Cb2R5XHJcbiAgICAgICAgICBuYW1lPXt2YXJpYXRpb25GaWVsZC5uYW1lfVxyXG4gICAgICAgICAgZmllbGRUeXBlPXtmaWVsZFR5cGV9XHJcbiAgICAgICAgICB2YWx1ZT17dmFyaWF0aW9uLnZhbHVlfVxyXG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgIGZpbGVzPXt2YXJpYXRpb25GaWxlc31cclxuICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucz17b3B0aW9uc31cclxuICAgICAgICAgIHZhcmlhdGlvbj17dmFyaWF0aW9ufVxyXG4gICAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnM9e3NlbGVjdGFibGVPcHRpb25zfVxyXG4gICAgICAgICAgZmllbGRPcHRpb25zPXtmaWVsZE9wdGlvbnN9XHJcbiAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGU9e3NlbGxlclByb2R1Y3RFZGl0YWJsZX1cclxuICAgICAgICAvPlxyXG4gICAgICApIDogKFxyXG4gICAgICAgIDxWYXJpYXRpb25JbmZvQm9keVxyXG4gICAgICAgICAgbmFtZT17dmFyaWF0aW9uRmllbGQubmFtZX1cclxuICAgICAgICAgIHR5cGU9e3ZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZX1cclxuICAgICAgICAgIHZhbHVlPXtcclxuICAgICAgICAgICAgZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQVJFQSAmJiB2YXJpYXRpb24udmFsdWVcclxuICAgICAgICAgICAgICA/IGZvcm1hdEFyZWFTdW1tYXJ5KFxyXG4gICAgICAgICAgICAgICAgICB2YXJpYXRpb24udmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgIGxvY2FsZVByZWZlcnNJbXBlcmlhbCgpID8gJ2ltcGVyaWFsJyA6ICdtZXRyaWMnLFxyXG4gICAgICAgICAgICAgICAgICB2YXJpYXRpb25GaWVsZC5hcmVhVW5pdCB8fCAnbW0nXHJcbiAgICAgICAgICAgICAgICApIHx8IHZhcmlhdGlvbi52YWx1ZVxyXG4gICAgICAgICAgICAgIDogdmFyaWF0aW9uLnZhbHVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmaWxlcz17dmFyaWF0aW9uRmlsZXN9XHJcbiAgICAgICAgICBwcm9kdWN0PXtwcm9kdWN0fVxyXG4gICAgICAgICAgdXJsQXBpPXt1cmxBcGl9XHJcbiAgICAgICAgICBjb3N0RGV0YWlsPXt2YXJpYXRpb25Db3N0RGV0YWlsKFxyXG4gICAgICAgICAgICBwcm9kdWN0LFxyXG4gICAgICAgICAgICB2YXJpYXRpb24sXHJcbiAgICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZSxcclxuICAgICAgICAgICAgeyBpbmNsdWRlU2VsZWN0ZWRPcHRpb25Db3N0czogZmFsc2UgfVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAvPlxyXG4gICAgICApfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gQ29sb3VyU2VsZWN0T3B0aW9uKHtcclxuICBvcHRpb24sXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnMsXHJcbiAgZmllbGRPcHRpb25zLFxyXG4gIHByb2R1Y3QsXHJcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxyXG59OiB7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM/OiBhbnlbXTtcclxuICBmaWVsZE9wdGlvbnM/OiBhbnlbXTtcclxuICBwcm9kdWN0PzogYW55O1xyXG4gIHNlbGxlclByb2R1Y3RFZGl0YWJsZT86IGJvb2xlYW47XHJcbn0pIHtcclxuICBjb25zdCBsYWJlbCA9IG9wdGlvbj8udmFsdWU/LnRyaW0oKSB8fCAnJztcclxuICBjb25zdCBoZXggPSByZXNvbHZlT3B0aW9uQ29sb3VyKG9wdGlvbiwgc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9ucyk7XHJcbiAgY29uc3QgY29zdCA9IGZvcm1hdE9wdGlvbkNvc3QoXHJcbiAgICBwcm9kdWN0LFxyXG4gICAgb3B0aW9uLFxyXG4gICAgQm9vbGVhbihzZWxsZXJQcm9kdWN0RWRpdGFibGUpXHJcbiAgKTtcclxuICByZXR1cm4gKFxyXG4gICAgPHNwYW4gY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1jb2xvdXItb3B0aW9uJz5cclxuICAgICAge2hleCAmJiAoXHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogaGV4IH19XHJcbiAgICAgICAgICBjbGFzc05hbWU9J2NvbG9yLWluZGljYXRvcidcclxuICAgICAgICAvPlxyXG4gICAgICApfVxyXG4gICAgICA8c3Bhbj5cclxuICAgICAgICB7bGFiZWwgfHwgaGV4IHx8ICfigJMnfVxyXG4gICAgICAgIHtjb3N0IHx8ICcnfVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gSW1hZ2VTZWxlY3RPcHRpb24oe1xyXG4gIG9wdGlvbixcclxuICBzZWxlY3RhYmxlT3B0aW9ucyxcclxuICBmaWVsZE9wdGlvbnMsXHJcbiAgcHJvZHVjdCxcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXHJcbn06IHtcclxuICBvcHRpb246IGFueTtcclxuICBzZWxlY3RhYmxlT3B0aW9ucz86IGFueVtdO1xyXG4gIGZpZWxkT3B0aW9ucz86IGFueVtdO1xyXG4gIHByb2R1Y3Q6IGFueTtcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGU6IGJvb2xlYW47XHJcbn0pIHtcclxuICBjb25zdCB7IHVybEFwaSB9ID0gdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCgpO1xyXG4gIGNvbnN0IGltYWdlVXJsID0gcmVzb2x2ZU9wdGlvbkltYWdlVXJsKFxyXG4gICAgb3B0aW9uLFxyXG4gICAgc2VsZWN0YWJsZU9wdGlvbnMsXHJcbiAgICBmaWVsZE9wdGlvbnMsXHJcbiAgICB1cmxBcGlcclxuICApO1xyXG4gIGNvbnN0IGxhYmVsID0gb3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICcnO1xyXG4gIGNvbnN0IGNvc3QgPSBmb3JtYXRPcHRpb25Db3N0KHByb2R1Y3QsIG9wdGlvbiwgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKTtcclxuICBjb25zdCBbaW1hZ2VGYWlsZWQsIHNldEltYWdlRmFpbGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktaW1hZ2Utc2VsZWN0LW9wdGlvbic+XHJcbiAgICAgIHtpbWFnZVVybCAmJiAhaW1hZ2VGYWlsZWQgPyAoXHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgY2xhc3NOYW1lPSdtb2RhbC1tZXJjaGktY2hlY2tvdXQtam9iLWluZm8tY29udGVudC1pbWcnXHJcbiAgICAgICAgICBzcmM9e2ltYWdlVXJsfVxyXG4gICAgICAgICAgYWx0PXtsYWJlbCB8fCAnU2VsZWN0ZWQgb3B0aW9uJ31cclxuICAgICAgICAgIHRpdGxlPXtsYWJlbCB8fCB1bmRlZmluZWR9XHJcbiAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRJbWFnZUZhaWxlZCh0cnVlKX1cclxuICAgICAgICAvPlxyXG4gICAgICApIDogbnVsbH1cclxuICAgICAgPHNwYW4+XHJcbiAgICAgICAge2xhYmVsIHx8ICfigJMnfVxyXG4gICAgICAgIHtjb3N0IHx8ICcnfVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0T3B0aW9uSWQob3B0aW9uOiBhbnkpIHtcclxuICByZXR1cm4gb3B0aW9uPy5vcHRpb25JZCA/PyBvcHRpb24/LmlkO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzcGxpdFNlbGVjdGVkT3B0aW9uSWRzKHZhbHVlOiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICByZXR1cm4gdmFsdWUubWFwKFN0cmluZykuZmlsdGVyKEJvb2xlYW4pO1xyXG4gIH1cclxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcclxuICByZXR1cm4gU3RyaW5nKHZhbHVlKVxyXG4gICAgLnNwbGl0KCcsJylcclxuICAgIC5tYXAoKHBhcnQpID0+IHBhcnQudHJpbSgpKVxyXG4gICAgLmZpbHRlcihCb29sZWFuKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVzb2x2ZVNlbGVjdGFibGVTZWxlY3RlZE9wdGlvbnMoXHJcbiAgdmFyaWF0aW9uOiBhbnksXHJcbiAgc2VsZWN0YWJsZU9wdGlvbnM6IGFueVtdID0gW10sXHJcbiAgZmllbGRPcHRpb25zOiBhbnlbXSA9IFtdXHJcbik6IGFueVtdIHtcclxuICBjb25zdCBmaWVsZFR5cGUgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkPy5maWVsZFR5cGU7XHJcbiAgaWYgKGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9FWFRSQUNUKSB7XHJcbiAgICByZXR1cm4gdmFyaWF0aW9uPy5zZWxlY3RlZE9wdGlvbnMgfHwgW107XHJcbiAgfVxyXG5cclxuICBjb25zdCBzZWxlY3RlZElkcyA9IHNwbGl0U2VsZWN0ZWRPcHRpb25JZHModmFyaWF0aW9uPy52YWx1ZSk7XHJcbiAgaWYgKHNlbGVjdGVkSWRzLmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnN0IHBvb2xzID0gW3NlbGVjdGFibGVPcHRpb25zLCBmaWVsZE9wdGlvbnNdO1xyXG4gICAgY29uc3QgcmVzb2x2ZWQ6IGFueVtdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGlkIG9mIHNlbGVjdGVkSWRzKSB7XHJcbiAgICAgIGZvciAoY29uc3QgcG9vbCBvZiBwb29scykge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoID0gcG9vbC5maW5kKChvcHRpb246IGFueSkgPT4gU3RyaW5nKGdldE9wdGlvbklkKG9wdGlvbikpID09PSBpZCk7XHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICByZXNvbHZlZC5wdXNoKG1hdGNoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJlc29sdmVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHJlc29sdmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHZhcmlhdGlvbj8uc2VsZWN0ZWRPcHRpb25zIHx8IFtdO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZXNvbHZlVHVybmFyb3VuZFNlbGVjdGVkT3B0aW9uKFxyXG4gIHZhcmlhdGlvbjogYW55LFxyXG4gIHNlbGVjdGFibGVPcHRpb25zOiBhbnlbXSA9IFtdLFxyXG4gIGZpZWxkT3B0aW9uczogYW55W10gPSBbXVxyXG4pIHtcclxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVTZWxlY3RhYmxlU2VsZWN0ZWRPcHRpb25zKFxyXG4gICAgdmFyaWF0aW9uLFxyXG4gICAgc2VsZWN0YWJsZU9wdGlvbnMsXHJcbiAgICBmaWVsZE9wdGlvbnNcclxuICApO1xyXG4gIGlmIChyZXNvbHZlZC5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gcmVzb2x2ZWRbMF07XHJcbiAgfVxyXG5cclxuICBjb25zdCB2YWx1ZVN0ciA9XHJcbiAgICB2YXJpYXRpb24/LnZhbHVlICE9IG51bGwgJiYgdmFyaWF0aW9uPy52YWx1ZSAhPT0gJydcclxuICAgICAgPyBTdHJpbmcodmFyaWF0aW9uLnZhbHVlKS50cmltKClcclxuICAgICAgOiAnJztcclxuICBpZiAoIXZhbHVlU3RyKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgY29uc3QgcG9vbHMgPSBbc2VsZWN0YWJsZU9wdGlvbnMsIGZpZWxkT3B0aW9uc107XHJcbiAgZm9yIChjb25zdCBwb29sIG9mIHBvb2xzKSB7XHJcbiAgICBjb25zdCBieVZhbHVlID0gcG9vbC5maW5kKFxyXG4gICAgICAob3B0aW9uOiBhbnkpID0+IFN0cmluZyhvcHRpb24udmFsdWUgPz8gJycpID09PSB2YWx1ZVN0clxyXG4gICAgKTtcclxuICAgIGlmIChieVZhbHVlKSByZXR1cm4gYnlWYWx1ZTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZvcm1hdFR1cm5hcm91bmREZWFkbGluZSh1c2VyRGVhZGxpbmU6IGFueSkge1xyXG4gIGlmICghdXNlckRlYWRsaW5lKSByZXR1cm4gbnVsbDtcclxuICBjb25zdCBzZWNvbmRzID0gTnVtYmVyKHVzZXJEZWFkbGluZSk7XHJcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoc2Vjb25kcykgfHwgc2Vjb25kcyA8PSAwKSByZXR1cm4gbnVsbDtcclxuICByZXR1cm4gbmV3IERhdGUoc2Vjb25kcyAqIDEwMDApLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQVUnLCB7XHJcbiAgICB3ZWVrZGF5OiAnbG9uZycsXHJcbiAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICBtb250aDogJ2xvbmcnLFxyXG4gICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIFR1cm5hcm91bmRPcHRpb25MYWJlbCh7XHJcbiAgb3B0aW9uLFxyXG4gIHZhcmlhdGlvbkZpZWxkLFxyXG4gIHByb2R1Y3QsXHJcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlLFxyXG59OiB7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgdmFyaWF0aW9uRmllbGQ6IGFueTtcclxuICBwcm9kdWN0OiBhbnk7XHJcbiAgc2VsbGVyUHJvZHVjdEVkaXRhYmxlOiBib29sZWFuO1xyXG59KSB7XHJcbiAgY29uc3QgZGF5cyA9IHBhcnNlSW50KFN0cmluZyhvcHRpb24/LnZhbHVlID8/ICcnKSwgMTApIHx8IDA7XHJcbiAgY29uc3QgZGVhZGxpbmUgPSBmb3JtYXRUdXJuYXJvdW5kRGVhZGxpbmUob3B0aW9uPy51c2VyRGVhZGxpbmUpO1xyXG4gIGNvbnN0IHNoaXBwaW5nVGltZUluY2x1ZGVkID0gQm9vbGVhbih2YXJpYXRpb25GaWVsZD8uc2hpcHBpbmdUaW1lSW5jbHVkZWQpO1xyXG4gIGNvbnN0IGRlYWRsaW5lTGFiZWwgPSBzaGlwcGluZ1RpbWVJbmNsdWRlZCA/ICdEZWxpdmVyeSBieScgOiAnUHJvZHVjZWQgYnknO1xyXG4gIGNvbnN0IGNvc3QgPSBmb3JtYXRPcHRpb25Db3N0KHByb2R1Y3QsIG9wdGlvbiwgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC12YWx1ZSc+XHJcbiAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kYXlzJz5cclxuICAgICAgICB7ZGF5cyA+IDBcclxuICAgICAgICAgID8gYCR7ZGF5c30gYnVzaW5lc3MgZGF5JHtkYXlzICE9PSAxID8gJ3MnIDogJyd9YFxyXG4gICAgICAgICAgOiAob3B0aW9uPy52YWx1ZT8udHJpbSgpIHx8ICfigJMnKX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICB7ZGVhZGxpbmUgJiYgKFxyXG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdHVybmFyb3VuZC1kZWFkbGluZSc+XHJcbiAgICAgICAgICB7ZGVhZGxpbmVMYWJlbH0ge2RlYWRsaW5lfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgKX1cclxuICAgICAge2Nvc3QgfHwgJyd9XHJcbiAgICA8L3NwYW4+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gVmFyaWF0aW9uT3B0aW9uc0luZm9Cb2R5KHtcclxuICBuYW1lLFxyXG4gIHNlbGVjdGVkT3B0aW9ucyxcclxuICBzZWxsZXJQcm9kdWN0RWRpdGFibGUsXHJcbiAgcHJvZHVjdCxcclxuICBmaWVsZFR5cGUsXHJcbiAgdmFyaWF0aW9uLFxyXG4gIHNlbGVjdGFibGVPcHRpb25zID0gW10sXHJcbiAgZmllbGRPcHRpb25zID0gW10sXHJcbn06IGFueSkge1xyXG4gIGNvbnN0IGlzVHVybmFyb3VuZFRpbWUgPSBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5UVVJOQVJPVU5EX1RJTUU7XHJcbiAgY29uc3QgZmlyc3RPcHRpb24gPSBpc1R1cm5hcm91bmRUaW1lXHJcbiAgICA/IHJlc29sdmVUdXJuYXJvdW5kU2VsZWN0ZWRPcHRpb24oXHJcbiAgICAgICAgeyBzZWxlY3RlZE9wdGlvbnMsIHZhbHVlOiB2YXJpYXRpb24/LnZhbHVlIH0sXHJcbiAgICAgICAgc2VsZWN0YWJsZU9wdGlvbnMsXHJcbiAgICAgICAgZmllbGRPcHRpb25zXHJcbiAgICAgIClcclxuICAgIDogc2VsZWN0ZWRPcHRpb25zWzBdO1xyXG4gIGNvbnN0IGlzQ29sb3VyU2VsZWN0ID1cclxuICAgIGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1QgfHxcclxuICAgIGZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkNPTE9VUl9FWFRSQUNUO1xyXG4gIGNvbnN0IGlzSW1hZ2VTZWxlY3QgPSBmaWVsZFR5cGUgPT09IEZpZWxkVHlwZS5JTUFHRV9TRUxFQ1Q7XHJcbiAgY29uc3QgdmFyaWF0aW9uRmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkID8/IHt9O1xyXG5cclxuICBmdW5jdGlvbiByZW5kZXJPcHRpb25MYWJlbChvOiBhbnkpIHtcclxuICAgIGlmIChpc1R1cm5hcm91bmRUaW1lKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPFR1cm5hcm91bmRPcHRpb25MYWJlbFxyXG4gICAgICAgICAgb3B0aW9uPXtvfVxyXG4gICAgICAgICAgdmFyaWF0aW9uRmllbGQ9e3ZhcmlhdGlvbkZpZWxkfVxyXG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXNDb2xvdXJTZWxlY3QpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8Q29sb3VyU2VsZWN0T3B0aW9uXHJcbiAgICAgICAgICBvcHRpb249e299XHJcbiAgICAgICAgICBzZWxlY3RhYmxlT3B0aW9ucz17c2VsZWN0YWJsZU9wdGlvbnN9XHJcbiAgICAgICAgICBmaWVsZE9wdGlvbnM9e2ZpZWxkT3B0aW9uc31cclxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XHJcbiAgICAgICAgICBzZWxsZXJQcm9kdWN0RWRpdGFibGU9e3NlbGxlclByb2R1Y3RFZGl0YWJsZX1cclxuICAgICAgICAvPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzSW1hZ2VTZWxlY3QpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8SW1hZ2VTZWxlY3RPcHRpb25cclxuICAgICAgICAgIG9wdGlvbj17b31cclxuICAgICAgICAgIHNlbGVjdGFibGVPcHRpb25zPXtzZWxlY3RhYmxlT3B0aW9uc31cclxuICAgICAgICAgIGZpZWxkT3B0aW9ucz17ZmllbGRPcHRpb25zfVxyXG4gICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgIHNlbGxlclByb2R1Y3RFZGl0YWJsZT17c2VsbGVyUHJvZHVjdEVkaXRhYmxlfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIHtvLnZhbHVlPy50cmltKCkgfHwgJ+KAkyd9XHJcbiAgICAgICAge2Zvcm1hdE9wdGlvbkNvc3QocHJvZHVjdCwgbywgc2VsbGVyUHJvZHVjdEVkaXRhYmxlKSB8fCAnJ31cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDw+XHJcbiAgICAgIHtzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMSAmJiAhaXNUdXJuYXJvdW5kVGltZSA/IChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXJvdyc+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLWxhYmVsJz57bmFtZX08L2Rpdj5cclxuICAgICAgICAgIDx1bCBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi12YWx1ZSBsaXN0LXVuc3R5bGVkIG0tMCc+XHJcbiAgICAgICAgICAgIHtzZWxlY3RlZE9wdGlvbnMubWFwKChvOiBhbnksIGk6IG51bWJlcikgPT4gKFxyXG4gICAgICAgICAgICAgIDxsaSBrZXk9e2Ake2l9LW9wdGlvbi1rZXktJHtvLm9wdGlvbklkID8/IGl9YH0+XHJcbiAgICAgICAgICAgICAgICB7cmVuZGVyT3B0aW9uTGFiZWwobyl9XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApIDogZmlyc3RPcHRpb24gPyAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1yb3cnPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi1sYWJlbCc+e25hbWV9PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9uLXZhbHVlJz5cclxuICAgICAgICAgICAge3JlbmRlck9wdGlvbkxhYmVsKGZpcnN0T3B0aW9uKX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApIDogKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tcm93Jz5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS12YXJpYXRpb24tbGFiZWwnPntuYW1lfTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXZhcmlhdGlvbi12YWx1ZSc+LTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgPC8+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gVmFyaWF0aW9uc0luZm8oeyBwcm9kdWN0LCBxdWFudGl0eSwgdmFyaWF0aW9ucyA9IFtdIH06IGFueSkge1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdmFyaWF0aW9ucyc+XHJcbiAgICAgIHt2YXJpYXRpb25zLm1hcCgodjogYW55LCBpOiBudW1iZXIpID0+XHJcbiAgICAgICAgIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2LnZhcmlhdGlvbkZpZWxkLmZpZWxkVHlwZSkgPyAoXHJcbiAgICAgICAgICA8VmFyaWF0aW9uSW5mb1xyXG4gICAgICAgICAgICBxdWFudGl0eT17cXVhbnRpdHl9XHJcbiAgICAgICAgICAgIHZhcmlhdGlvbj17dn1cclxuICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgICAga2V5PXtpfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApIDogbnVsbFxyXG4gICAgICApfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gVmFyaWF0aW9uR3JvdXBJbmZvKHtcclxuICBncm91cCxcclxuICBpbmRleCxcclxuICBwcm9kdWN0LFxyXG4gIHNob3dTZXR1cE9uVW5pdFByaWNlLFxyXG59OiBhbnkpIHtcclxuICBjb25zdCBpc1Jlc2VsbCA9IGlzUHJvZHVjdFN1cHBsaWVyTU9EKHByb2R1Y3QpO1xyXG4gIGNvbnN0IHsgcXVhbnRpdHksIHZhcmlhdGlvbnMgfSA9IGdyb3VwO1xyXG4gIGNvbnN0IHZpc2libGVWYXJpYXRpb25zID0gKHZhcmlhdGlvbnMgPz8gW10pLmZpbHRlcihcclxuICAgICh2OiBhbnkpID0+ICFpc0luc3RydWN0aW9uc1R5cGUodj8udmFyaWF0aW9uRmllbGQ/LmZpZWxkVHlwZSlcclxuICApO1xyXG4gIGNvbnN0IGNvc3RMYWJlbCA9IGlzUmVzZWxsID8gJ1VuaXQgQ29zdCcgOiAnR3JvdXAgQ29zdCc7XHJcbiAgY29uc3QgdW5pdFByaWNlVmFsdWUgPSBzaG93U2V0dXBPblVuaXRQcmljZVxyXG4gICAgPyBmb3JtYXRVbml0UHJpY2VXaXRoU2V0dXAocHJvZHVjdClcclxuICAgIDogZm9ybWF0Q29zdChwcm9kdWN0LCBOdW1iZXIocHJvZHVjdD8udW5pdFByaWNlKSB8fCAwKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktZ3JvdXAnPlxyXG4gICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktb3JkZXItZGV0YWlsLXRpdGxlJz5cclxuICAgICAgICBHcm91cCB7aW5kZXggKyAxfSBJbmZvcm1hdGlvblxyXG4gICAgICA8L3N0cm9uZz5cclxuICAgICAgeyFpc1Jlc2VsbCAmJiBxdWFudGl0eSA+IDAgJiYgKFxyXG4gICAgICAgIDxTdW1tYXJ5RmllbGRSb3cgbGFiZWw9J1F1YW50aXR5JyB2YWx1ZT17cXVhbnRpdHl9IC8+XHJcbiAgICAgICl9XHJcbiAgICAgIDxTdW1tYXJ5RmllbGRSb3cgbGFiZWw9J1VuaXQgUHJpY2UnIHZhbHVlPXt1bml0UHJpY2VWYWx1ZX0gLz5cclxuICAgICAge3Zpc2libGVWYXJpYXRpb25zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgIDxWYXJpYXRpb25zSW5mb1xyXG4gICAgICAgICAgcXVhbnRpdHk9e3F1YW50aXR5fVxyXG4gICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cclxuICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XHJcbiAgICAgICAgLz5cclxuICAgICAgKX1cclxuICAgICAgPHN0cm9uZyBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LWdyb3VwLWNvc3QnPlxyXG4gICAgICAgIHtjb3N0TGFiZWx9OiB7Zm9ybWF0Q29zdChwcm9kdWN0LCBncm91cC5ncm91cENvc3QpfVxyXG4gICAgICA8L3N0cm9uZz5cclxuICAgIDwvc2VjdGlvbj5cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBKb2JJbmZvQ29udGVudCgpIHtcclxuICBjb25zdCB7IGpvYiB9ID0gdXNlTWVyY2hpQ2hlY2tib3V0Q29udGV4dCgpO1xyXG4gIGNvbnN0IHsgcHJvZHVjdCwgcXVhbnRpdHkgPSAwLCB2YXJpYXRpb25zID0gW10sIHZhcmlhdGlvbnNHcm91cHMgPSBbXSB9ID0gam9iO1xyXG4gIGNvbnN0IHsgbmVlZHNTaGlwcGluZyB9ID0gcHJvZHVjdDtcclxuICBjb25zdCB0b3RhbENvc3QgPSBjdXJyZW5jeVRvdGFsQ29zdFNob3dJbmNUYXgoam9iKTtcclxuICBjb25zdCBpc1Jlc2VsbCA9IGlzUHJvZHVjdFN1cHBsaWVyTU9EKHByb2R1Y3QpO1xyXG4gIGNvbnN0IGhhc0dyb3VwcyA9IHZhcmlhdGlvbnNHcm91cHMubGVuZ3RoID4gMDtcclxuICBjb25zdCBqb2JMZXZlbFZhcmlhdGlvbnMgPSAodmFyaWF0aW9ucyA/PyBbXSkuZmlsdGVyKFxyXG4gICAgKHY6IGFueSkgPT4gIWlzSW5zdHJ1Y3Rpb25zVHlwZSh2Py52YXJpYXRpb25GaWVsZD8uZmllbGRUeXBlKVxyXG4gICk7XHJcbiAgY29uc3QgdG90YWxRdWFudGl0eSA9IGhhc0dyb3Vwc1xyXG4gICAgPyB2YXJpYXRpb25zR3JvdXBzLnJlZHVjZShcclxuICAgICAgICAoc3VtOiBudW1iZXIsIGc6IGFueSkgPT4gc3VtICsgKE51bWJlcihnLnF1YW50aXR5KSB8fCAwKSxcclxuICAgICAgICAwXHJcbiAgICAgIClcclxuICAgIDogTnVtYmVyKHF1YW50aXR5KSB8fCAwO1xyXG4gIGNvbnN0IHNldHVwUGVyR3JvdXAgPSBCb29sZWFuKHByb2R1Y3Q/LnNldHVwUGVyR3JvdXApO1xyXG4gIGNvbnN0IGhhc1NldHVwUHJpY2UgPSBOdW1iZXIocHJvZHVjdD8uc2V0dXBQcmljZSkgPiAwO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9J21vZGFsLW1lcmNoaS1jaGVja291dC1qb2ItaW5mby1jb250ZW50IG1lcmNoaS1jaGVja291dC1zdW1tYXJ5Jz5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9J21lcmNoaS1jaGVja291dC1zdW1tYXJ5LXNlY3Rpb24tdGl0bGUnPntwcm9kdWN0Lm5hbWV9PC9kaXY+XHJcbiAgICAgIHtoYXNHcm91cHMgJiYgKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1ncm91cHMnPlxyXG4gICAgICAgICAge3ZhcmlhdGlvbnNHcm91cHMubWFwKChnOiBhbnksIGk6IG51bWJlcikgPT5cclxuICAgICAgICAgICAgZy5xdWFudGl0eSA/IChcclxuICAgICAgICAgICAgICA8VmFyaWF0aW9uR3JvdXBJbmZvXHJcbiAgICAgICAgICAgICAgICBncm91cD17Z31cclxuICAgICAgICAgICAgICAgIGtleT17YCR7aX0tam9iLWluZm8tY29udGVudGB9XHJcbiAgICAgICAgICAgICAgICBpbmRleD17aX1cclxuICAgICAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XHJcbiAgICAgICAgICAgICAgICBzaG93U2V0dXBPblVuaXRQcmljZT17c2V0dXBQZXJHcm91cH1cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApIDogbnVsbFxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKX1cclxuICAgICAgeyFoYXNHcm91cHMgJiYgKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1zdGFuZGFsb25lJz5cclxuICAgICAgICAgIDxzdHJvbmcgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS1vcmRlci1kZXRhaWwtdGl0bGUnPlxyXG4gICAgICAgICAgICBPcmRlciBJbmZvcm1hdGlvblxyXG4gICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICB7cXVhbnRpdHkgPiAwICYmIChcclxuICAgICAgICAgICAgPFN1bW1hcnlGaWVsZFJvdyBsYWJlbD0nUXVhbnRpdHknIHZhbHVlPXtxdWFudGl0eX0gLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8U3VtbWFyeUZpZWxkUm93XHJcbiAgICAgICAgICAgIGxhYmVsPSdVbml0IFByaWNlJ1xyXG4gICAgICAgICAgICB2YWx1ZT17Zm9ybWF0VW5pdFByaWNlV2l0aFNldHVwKHByb2R1Y3QpfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIHtqb2JMZXZlbFZhcmlhdGlvbnMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgIDxWYXJpYXRpb25zSW5mb1xyXG4gICAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cclxuICAgICAgICAgICAgICB2YXJpYXRpb25zPXt2YXJpYXRpb25zfVxyXG4gICAgICAgICAgICAgIHByb2R1Y3Q9e3Byb2R1Y3R9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgICB7aGFzR3JvdXBzICYmIGpvYkxldmVsVmFyaWF0aW9ucy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktc3RhbmRhbG9uZSc+XHJcbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktb3JkZXItZGV0YWlsLXRpdGxlJz5cclxuICAgICAgICAgICAgT3JkZXIgSW5mb3JtYXRpb25cclxuICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgICAgPFZhcmlhdGlvbnNJbmZvXHJcbiAgICAgICAgICAgIHF1YW50aXR5PXtxdWFudGl0eX1cclxuICAgICAgICAgICAgdmFyaWF0aW9ucz17dmFyaWF0aW9uc31cclxuICAgICAgICAgICAgcHJvZHVjdD17cHJvZHVjdH1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHshaXNSZXNlbGwgJiYgKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPSdtZXJjaGktY2hlY2tvdXQtc3VtbWFyeS10b3RhbCc+XHJcbiAgICAgICAgICB7dG90YWxRdWFudGl0eSA+IDAgJiYgKFxyXG4gICAgICAgICAgICA8U3VtbWFyeUFtb3VudFJvd1xyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdG90YWwtcXVhbnRpdHknXHJcbiAgICAgICAgICAgICAgbGFiZWw9J1RvdGFsIFF1YW50aXR5J1xyXG4gICAgICAgICAgICAgIGFtb3VudD17dG90YWxRdWFudGl0eX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7aGFzR3JvdXBzICYmIGhhc1NldHVwUHJpY2UgJiYgIXNldHVwUGVyR3JvdXAgJiYgKFxyXG4gICAgICAgICAgICA8U3VtbWFyeUFtb3VudFJvd1xyXG4gICAgICAgICAgICAgIGxhYmVsPSdTZXR1cCdcclxuICAgICAgICAgICAgICBhbW91bnQ9e2Zvcm1hdENvc3QocHJvZHVjdCwgTnVtYmVyKHByb2R1Y3Quc2V0dXBQcmljZSkpfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxTdW1tYXJ5QW1vdW50Um93XHJcbiAgICAgICAgICAgIGxhYmVsPSdUb3RhbCBPcmRlciBDb3N0J1xyXG4gICAgICAgICAgICBsYWJlbEV4dHJhPXtcclxuICAgICAgICAgICAgICBuZWVkc1NoaXBwaW5nID8gKFxyXG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzTmFtZT0nbWVyY2hpLWNoZWNrb3V0LXN1bW1hcnktdG90YWwtbm90ZSc+IGV4IFNoaXBtZW50PC9zbWFsbD5cclxuICAgICAgICAgICAgICApIDogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYW1vdW50PXt0b3RhbENvc3R9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgICB7ISEoaXNSZXNlbGwgJiYgIWhhc0dyb3VwcykgJiYgKFxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWItMCc+XHJcbiAgICAgICAgICAgIHtpc1Jlc2VsbCA/ICdBcHByb3hpbWF0ZSBVbml0JyA6ICdUb3RhbCd9IENvc3RcclxuICAgICAgICAgIDwvc3Ryb25nPnsnICd9XHJcbiAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT0nbWItMCBkLWJsb2NrJz57dG90YWxDb3N0fTwvc3Ryb25nPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBQUMsU0FBQUEsMkJBQUFDLENBQUEsRUFBQUMsY0FBQSxRQUFBQyxFQUFBLFVBQUFDLE1BQUEsb0JBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEscUJBQUFFLEVBQUEsUUFBQUcsS0FBQSxDQUFBQyxPQUFBLENBQUFOLENBQUEsTUFBQUUsRUFBQSxHQUFBSywyQkFBQSxDQUFBUCxDQUFBLE1BQUFDLGNBQUEsSUFBQUQsQ0FBQSxXQUFBQSxDQUFBLENBQUFRLE1BQUEscUJBQUFOLEVBQUEsRUFBQUYsQ0FBQSxHQUFBRSxFQUFBLE1BQUFPLENBQUEsVUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUFDLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFBLEVBQUEsUUFBQUgsQ0FBQSxJQUFBVCxDQUFBLENBQUFRLE1BQUEsV0FBQUssSUFBQSxtQkFBQUEsSUFBQSxTQUFBQyxLQUFBLEVBQUFkLENBQUEsQ0FBQVMsQ0FBQSxVQUFBTSxDQUFBLFdBQUFBLEVBQUFDLEVBQUEsVUFBQUEsRUFBQSxLQUFBQyxDQUFBLEVBQUFQLENBQUEsZ0JBQUFRLFNBQUEsaUpBQUFDLGdCQUFBLFNBQUFDLE1BQUEsVUFBQUMsR0FBQSxXQUFBVixDQUFBLFdBQUFBLEVBQUEsSUFBQVQsRUFBQSxHQUFBQSxFQUFBLENBQUFvQixJQUFBLENBQUF0QixDQUFBLE1BQUFZLENBQUEsV0FBQUEsRUFBQSxRQUFBVyxJQUFBLEdB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
|