nsc-react-component 1.3.5 → 1.3.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/cascader/index.d.ts +2 -2
- package/lib/cascader/index.js +3 -2
- package/lib/checkbox/CheckboxGroup.d.ts +2 -0
- package/lib/checkbox/CheckboxGroup.js +86 -11
- package/lib/input/index.js +2 -2
- package/lib/radio/RadioGroup.d.ts +2 -0
- package/lib/radio/RadioGroup.js +94 -22
- package/lib/select/index.d.ts +11 -3
- package/lib/select/index.js +212 -60
- package/lib/table/index.js +1 -2
- package/lib/tree/index.js +1 -2
- package/package.json +4 -3
package/lib/select/index.js
CHANGED
|
@@ -3,7 +3,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
|
3
3
|
import "antd/es/select/style/css";
|
|
4
4
|
import _Select from "antd/es/select";
|
|
5
5
|
var _excluded = ["url", "listeners", "viewname", "cached", "cacheKey"],
|
|
6
|
-
_excluded2 = ["children", "store", "data", "onChange", "options", "labelField", "valueField", "defaultStyle", "showGroup"];
|
|
6
|
+
_excluded2 = ["children", "store", "data", "onChange", "options", "labelField", "valueField", "defaultStyle", "showGroup", "addData", "deleteData"];
|
|
7
7
|
|
|
8
8
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
9
9
|
|
|
@@ -11,6 +11,18 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
11
11
|
|
|
12
12
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
13
13
|
|
|
14
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
15
|
+
|
|
16
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
21
|
+
|
|
22
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
14
26
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
15
27
|
|
|
16
28
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
@@ -43,6 +55,7 @@ import { utils } from "@bj-nsc/msn/lib/utils";
|
|
|
43
55
|
import config from "../config";
|
|
44
56
|
import styles from "./index.less";
|
|
45
57
|
import cls from "classnames";
|
|
58
|
+
import PinyinMatch from "pinyin-match";
|
|
46
59
|
var Option = _Select.Option,
|
|
47
60
|
OptGroup = _Select.OptGroup;
|
|
48
61
|
|
|
@@ -60,7 +73,10 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
60
73
|
|
|
61
74
|
_defineProperty(_assertThisInitialized(_this2), "state", {
|
|
62
75
|
dataSource: [],
|
|
63
|
-
selectValue: null
|
|
76
|
+
selectValue: null,
|
|
77
|
+
allDataSource: [],
|
|
78
|
+
children: null,
|
|
79
|
+
allChildren: null
|
|
64
80
|
});
|
|
65
81
|
|
|
66
82
|
_defineProperty(_assertThisInitialized(_this2), "store", {});
|
|
@@ -69,7 +85,13 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
69
85
|
_props$store = props.store,
|
|
70
86
|
store = _props$store === void 0 ? {} : _props$store,
|
|
71
87
|
children = props.children,
|
|
72
|
-
options = props.options
|
|
88
|
+
options = props.options,
|
|
89
|
+
_props$addData = props.addData,
|
|
90
|
+
addData = _props$addData === void 0 ? [] : _props$addData,
|
|
91
|
+
_props$deleteData = props.deleteData,
|
|
92
|
+
deleteData = _props$deleteData === void 0 ? [] : _props$deleteData,
|
|
93
|
+
_props$valueField = props.valueField,
|
|
94
|
+
valueField = _props$valueField === void 0 ? "value" : _props$valueField;
|
|
73
95
|
|
|
74
96
|
var url = store.url,
|
|
75
97
|
_store$listeners = store.listeners,
|
|
@@ -82,6 +104,30 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
82
104
|
var _config = config(),
|
|
83
105
|
viewUrl = _config.viewUrl;
|
|
84
106
|
|
|
107
|
+
var getAllData = function getAllData(data) {
|
|
108
|
+
var newData = _toConsumableArray(data);
|
|
109
|
+
|
|
110
|
+
if (addData.length > 0) {
|
|
111
|
+
newData = [].concat(_toConsumableArray(addData), _toConsumableArray(newData));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (deleteData.length > 0) {
|
|
115
|
+
var valueFields = valueField.split(",");
|
|
116
|
+
newData.map(function (item, i) {
|
|
117
|
+
var value = "";
|
|
118
|
+
valueFields.map(function (v, index) {
|
|
119
|
+
value = index == 0 ? value + item[v] : value + "," + item[v];
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
if (deleteData.indexOf(value) > -1) {
|
|
123
|
+
newData.splice(i, 1);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return newData;
|
|
129
|
+
};
|
|
130
|
+
|
|
85
131
|
if (!children) {
|
|
86
132
|
if (!(data || viewname || url || options)) {
|
|
87
133
|
throw new Error("url、viewname、data、options不能都为空!");
|
|
@@ -97,15 +143,21 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
97
143
|
utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);
|
|
98
144
|
},
|
|
99
145
|
load: function load(data, modelData, store) {
|
|
146
|
+
var newData = getAllData(data);
|
|
147
|
+
|
|
100
148
|
_this.setState({
|
|
101
|
-
dataSource:
|
|
149
|
+
dataSource: newData,
|
|
150
|
+
allDataSource: newData
|
|
102
151
|
});
|
|
103
152
|
|
|
104
153
|
utils.callback(listenersPops.load, _this, [data, modelData, store]);
|
|
105
154
|
},
|
|
106
155
|
dataChanged: function dataChanged(data, modelData, store) {
|
|
156
|
+
var newData = getAllData(data);
|
|
157
|
+
|
|
107
158
|
_this.setState({
|
|
108
|
-
dataSource:
|
|
159
|
+
dataSource: newData,
|
|
160
|
+
allDataSource: newData
|
|
109
161
|
});
|
|
110
162
|
|
|
111
163
|
utils.callback(listenersPops.dataChanged, _this, [data, modelData, store]);
|
|
@@ -142,7 +194,7 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
142
194
|
_createClass(NSCSelect, [{
|
|
143
195
|
key: "getData",
|
|
144
196
|
value: function getData() {
|
|
145
|
-
return this.state.
|
|
197
|
+
return this.state.allDataSource;
|
|
146
198
|
}
|
|
147
199
|
}, {
|
|
148
200
|
key: "getValue",
|
|
@@ -166,20 +218,137 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
166
218
|
|
|
167
219
|
if (!children && (data || options)) {
|
|
168
220
|
this.setState({
|
|
169
|
-
dataSource: data ? data : options
|
|
221
|
+
dataSource: data ? data : options,
|
|
222
|
+
allDataSource: data ? data : options
|
|
223
|
+
});
|
|
224
|
+
} else if (children) {
|
|
225
|
+
this.setState({
|
|
226
|
+
children: children,
|
|
227
|
+
allChildren: children
|
|
170
228
|
});
|
|
171
229
|
}
|
|
172
230
|
}
|
|
231
|
+
}, {
|
|
232
|
+
key: "componentDidUpdate",
|
|
233
|
+
value: function componentDidUpdate(newProps, newState, Snapshot) {
|
|
234
|
+
var _this$props2 = this.props,
|
|
235
|
+
data = _this$props2.data,
|
|
236
|
+
options = _this$props2.options,
|
|
237
|
+
children = _this$props2.children;
|
|
238
|
+
var _this$state = this.state,
|
|
239
|
+
allDataSource = _this$state.allDataSource,
|
|
240
|
+
allChildren = _this$state.allChildren;
|
|
241
|
+
|
|
242
|
+
if (!children && (data || options)) {
|
|
243
|
+
var newData = data ? data : options;
|
|
244
|
+
|
|
245
|
+
if (JSON.stringify(allDataSource) !== JSON.stringify(newData)) {
|
|
246
|
+
return {
|
|
247
|
+
dataSource: newData,
|
|
248
|
+
allDataSource: newData
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
} else if (children && Array.isArray(children)) {
|
|
252
|
+
var stateChildrenProps = [];
|
|
253
|
+
allChildren.map(function (s) {
|
|
254
|
+
stateChildrenProps.push(s.props);
|
|
255
|
+
});
|
|
256
|
+
var childrenProps = [];
|
|
257
|
+
children.map(function (c) {
|
|
258
|
+
childrenProps.push(c.props);
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
if (JSON.stringify(stateChildrenProps) !== JSON.stringify(childrenProps)) {
|
|
262
|
+
this.setState({
|
|
263
|
+
children: children,
|
|
264
|
+
allChildren: children
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}, {
|
|
270
|
+
key: "onSearch",
|
|
271
|
+
value: function onSearch(value) {
|
|
272
|
+
var _this$state2 = this.state,
|
|
273
|
+
allDataSource = _this$state2.allDataSource,
|
|
274
|
+
allChildren = _this$state2.allChildren;
|
|
275
|
+
var _this$props3 = this.props,
|
|
276
|
+
_this$props3$labelFie = _this$props3.labelField,
|
|
277
|
+
labelField = _this$props3$labelFie === void 0 ? "label" : _this$props3$labelFie,
|
|
278
|
+
_this$props3$filterOp = _this$props3.filterOption,
|
|
279
|
+
filterOption = _this$props3$filterOp === void 0 ? true : _this$props3$filterOp,
|
|
280
|
+
onSearch = _this$props3.onSearch,
|
|
281
|
+
children = _this$props3.children;
|
|
282
|
+
|
|
283
|
+
if (filterOption) {
|
|
284
|
+
var result = [];
|
|
285
|
+
|
|
286
|
+
if (!children) {
|
|
287
|
+
if (value) {
|
|
288
|
+
allDataSource.forEach(function (item) {
|
|
289
|
+
var label = "";
|
|
290
|
+
|
|
291
|
+
if (labelField.split(",").length == 1) {
|
|
292
|
+
label = item[labelField];
|
|
293
|
+
} else {
|
|
294
|
+
var labelFields = labelField.split(",");
|
|
295
|
+
labelFields.map(function (l, index) {
|
|
296
|
+
label = index == 0 ? label + item[l] : label + "-" + item[l];
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
var flag = PinyinMatch.match(label, value);
|
|
301
|
+
|
|
302
|
+
if (flag) {
|
|
303
|
+
result.push(item);
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
this.setState({
|
|
307
|
+
dataSource: result
|
|
308
|
+
});
|
|
309
|
+
} else {
|
|
310
|
+
this.setState({
|
|
311
|
+
dataSource: allDataSource
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
} else {
|
|
315
|
+
if (value) {
|
|
316
|
+
if (Array.isArray(allChildren)) {
|
|
317
|
+
allChildren.map(function (child, index) {
|
|
318
|
+
var _child$props;
|
|
319
|
+
|
|
320
|
+
var label = child === null || child === void 0 ? void 0 : (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children;
|
|
321
|
+
var flag = PinyinMatch.match(label, value);
|
|
322
|
+
|
|
323
|
+
if (flag) {
|
|
324
|
+
result.push(child);
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
this.setState({
|
|
330
|
+
children: result
|
|
331
|
+
});
|
|
332
|
+
} else {
|
|
333
|
+
this.setState({
|
|
334
|
+
children: children
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
onSearch && onSearch(value);
|
|
341
|
+
}
|
|
173
342
|
}, {
|
|
174
343
|
key: "renderOption",
|
|
175
344
|
value: function renderOption(optionData) {
|
|
176
|
-
var _this$
|
|
177
|
-
_this$
|
|
178
|
-
labelField = _this$
|
|
179
|
-
_this$
|
|
180
|
-
valueField = _this$
|
|
181
|
-
_this$
|
|
182
|
-
store = _this$
|
|
345
|
+
var _this$props4 = this.props,
|
|
346
|
+
_this$props4$labelFie = _this$props4.labelField,
|
|
347
|
+
labelField = _this$props4$labelFie === void 0 ? "label" : _this$props4$labelFie,
|
|
348
|
+
_this$props4$valueFie = _this$props4.valueField,
|
|
349
|
+
valueField = _this$props4$valueFie === void 0 ? "value" : _this$props4$valueFie,
|
|
350
|
+
_this$props4$store = _this$props4.store,
|
|
351
|
+
store = _this$props4$store === void 0 ? {} : _this$props4$store;
|
|
183
352
|
return optionData.map(function (item) {
|
|
184
353
|
var value = "";
|
|
185
354
|
|
|
@@ -217,11 +386,11 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
217
386
|
value: function renderChildren() {
|
|
218
387
|
var _this3 = this;
|
|
219
388
|
|
|
220
|
-
var _this$
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
389
|
+
var _this$props$showGroup = this.props.showGroup,
|
|
390
|
+
showGroup = _this$props$showGroup === void 0 ? true : _this$props$showGroup;
|
|
391
|
+
var _this$state3 = this.state,
|
|
392
|
+
dataSource = _this$state3.dataSource,
|
|
393
|
+
children = _this$state3.children;
|
|
225
394
|
|
|
226
395
|
if (children) {
|
|
227
396
|
return /*#__PURE__*/React.createElement(React.Fragment, null, children);
|
|
@@ -263,21 +432,24 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
263
432
|
}, {
|
|
264
433
|
key: "render",
|
|
265
434
|
value: function render() {
|
|
266
|
-
var _this$
|
|
267
|
-
children = _this$
|
|
268
|
-
store = _this$
|
|
269
|
-
data = _this$
|
|
270
|
-
onChange = _this$
|
|
271
|
-
options = _this$
|
|
272
|
-
labelField = _this$
|
|
273
|
-
valueField = _this$
|
|
274
|
-
_this$
|
|
275
|
-
defaultStyle = _this$
|
|
276
|
-
_this$
|
|
277
|
-
showGroup = _this$
|
|
278
|
-
|
|
435
|
+
var _this$props5 = this.props,
|
|
436
|
+
children = _this$props5.children,
|
|
437
|
+
store = _this$props5.store,
|
|
438
|
+
data = _this$props5.data,
|
|
439
|
+
onChange = _this$props5.onChange,
|
|
440
|
+
options = _this$props5.options,
|
|
441
|
+
labelField = _this$props5.labelField,
|
|
442
|
+
valueField = _this$props5.valueField,
|
|
443
|
+
_this$props5$defaultS = _this$props5.defaultStyle,
|
|
444
|
+
defaultStyle = _this$props5$defaultS === void 0 ? true : _this$props5$defaultS,
|
|
445
|
+
_this$props5$showGrou = _this$props5.showGroup,
|
|
446
|
+
showGroup = _this$props5$showGrou === void 0 ? true : _this$props5$showGrou,
|
|
447
|
+
addData = _this$props5.addData,
|
|
448
|
+
deleteData = _this$props5.deleteData,
|
|
449
|
+
params = _objectWithoutProperties(_this$props5, _excluded2);
|
|
279
450
|
|
|
280
451
|
var props = {
|
|
452
|
+
filterOption: false,
|
|
281
453
|
showSearch: true,
|
|
282
454
|
optionFilterProp: "label",
|
|
283
455
|
placeholder: "请选择",
|
|
@@ -288,38 +460,18 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
|
|
|
288
460
|
return /*#__PURE__*/React.createElement("div", {
|
|
289
461
|
className: cls(styles["nsc_select"], this.props.className)
|
|
290
462
|
}, /*#__PURE__*/React.createElement(_Select, _extends({
|
|
291
|
-
value: this.state.selectValue
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
}), this.renderChildren()));
|
|
463
|
+
value: this.state.selectValue,
|
|
464
|
+
onChange: this.onChange.bind(this),
|
|
465
|
+
onSearch: this.onSearch.bind(this)
|
|
466
|
+
}, props, params), this.renderChildren()));
|
|
295
467
|
} else {
|
|
296
468
|
return /*#__PURE__*/React.createElement(_Select, _extends({
|
|
297
|
-
value: this.state.selectValue
|
|
298
|
-
|
|
469
|
+
value: this.state.selectValue,
|
|
470
|
+
onSearch: this.onSearch.bind(this),
|
|
299
471
|
onChange: this.onChange.bind(this)
|
|
300
|
-
}), this.renderChildren());
|
|
472
|
+
}, props, params), this.renderChildren());
|
|
301
473
|
}
|
|
302
474
|
}
|
|
303
|
-
}], [{
|
|
304
|
-
key: "getDerivedStateFromProps",
|
|
305
|
-
value: function getDerivedStateFromProps(nextProps, prevState) {
|
|
306
|
-
var dataSource = prevState.dataSource;
|
|
307
|
-
var data = nextProps.data,
|
|
308
|
-
options = nextProps.options,
|
|
309
|
-
store = nextProps.store;
|
|
310
|
-
|
|
311
|
-
if (data || options) {
|
|
312
|
-
var newData = data ? data : options;
|
|
313
|
-
|
|
314
|
-
if (JSON.stringify(dataSource) !== JSON.stringify(newData)) {
|
|
315
|
-
return {
|
|
316
|
-
dataSource: newData
|
|
317
|
-
};
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
return null;
|
|
322
|
-
}
|
|
323
475
|
}]);
|
|
324
476
|
|
|
325
477
|
return NSCSelect;
|
|
@@ -330,4 +482,4 @@ _defineProperty(NSCSelect, "Option", Option);
|
|
|
330
482
|
_defineProperty(NSCSelect, "OptGroup", OptGroup);
|
|
331
483
|
|
|
332
484
|
export { NSCSelect as default };
|
|
333
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NlbGVjdC9pbmRleC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiU3RvcmUiLCJ1dGlscyIsImNvbmZpZyIsInN0eWxlcyIsImNscyIsIk9wdGlvbiIsIk9wdEdyb3VwIiwiTlNDU2VsZWN0IiwicHJvcHMiLCJkYXRhU291cmNlIiwic2VsZWN0VmFsdWUiLCJkYXRhIiwic3RvcmUiLCJjaGlsZHJlbiIsIm9wdGlvbnMiLCJ1cmwiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lcnNQb3BzIiwidmlld25hbWUiLCJjYWNoZWQiLCJjYWNoZUtleSIsInN0b3JlcyIsInZpZXdVcmwiLCJFcnJvciIsIl90aGlzIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJkYXRhQ2hhbmdlZCIsImlzQ2FjaGVkIiwiaXNDYWNoZUtleSIsImF1dG9Mb2FkIiwic3RhdGUiLCJ2YWx1ZSIsIm9wdGlvbkRhdGEiLCJsYWJlbEZpZWxkIiwidmFsdWVGaWVsZCIsIm1hcCIsIml0ZW0iLCJzcGxpdCIsImxlbmd0aCIsInZhbHVlRmllbGRzIiwidiIsImluZGV4Iiwia2V5IiwiaWQiLCJsYWJlbCIsImxhYmVsRmllbGRzIiwibCIsImRpc2FibGVkIiwic2hvd0dyb3VwIiwib3B0R3JvdXBEYXRhIiwiZm9yRWFjaCIsImdyb3VwTmFtZSIsInB1c2giLCJvcHRpb24iLCJyZW5kZXJPcHRpb24iLCJvcHRHcm91cCIsIk9iamVjdCIsImtleXMiLCJvbkNoYW5nZSIsImRlZmF1bHRTdHlsZSIsInBhcmFtcyIsInNob3dTZWFyY2giLCJvcHRpb25GaWx0ZXJQcm9wIiwicGxhY2Vob2xkZXIiLCJhbGxvd0NsZWFyIiwiY2xhc3NOYW1lIiwiYmluZCIsInJlbmRlckNoaWxkcmVuIiwibmV4dFByb3BzIiwicHJldlN0YXRlIiwi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S0MsY0FBTCxFQU5ILENBREYsQ0FERjtBQVlELE9BYkQsTUFhTztBQUNMLDRCQUNFO0FBQ0UsVUFBQSxLQUFLLEVBQUUsS0FBS3JDLEtBQUwsQ0FBVzNCO0FBRHBCLFdBRU1GLEtBRk4sRUFHTTJELE1BSE47QUFJRSxVQUFBLFFBQVEsRUFBRSxLQUFLRixRQUFMLENBQWNRLElBQWQsQ0FBbUIsSUFBbkI7QUFKWixZQU1HLEtBQUtDLGNBQUwsRUFOSCxDQURGO0FBVUQ7QUFDRjs7O1dBek5ELGtDQUFnQ0MsU0FBaEMsRUFBMkNDLFNBQTNDLEVBQTJEO0FBQ3pELFVBQVFuRSxVQUFSLEdBQXVCbUUsU0FBdkIsQ0FBUW5FLFVBQVI7QUFDQSxVQUFRRSxJQUFSLEdBQWlDZ0UsU0FBakMsQ0FBUWhFLElBQVI7QUFBQSxVQUFjRyxPQUFkLEdBQWlDNkQsU0FBakMsQ0FBYzdELE9BQWQ7QUFBQSxVQUF1QkYsS0FBdkIsR0FBaUMrRCxTQUFqQyxDQUF1Qi9ELEtBQXZCOztBQUNBLFVBQUlELElBQUksSUFBSUcsT0FBWixFQUFxQjtBQUNuQixZQUFNK0QsT0FBTyxHQUFHbEUsSUFBSSxHQUFHQSxJQUFILEdBQVVHLE9BQTlCOztBQUNBLFlBQUlnRSxJQUFJLENBQUNDLFNBQUwsQ0FBZXRFLFVBQWYsTUFBK0JxRSxJQUFJLENBQUNDLFNBQUwsQ0FBZUYsT0FBZixDQUFuQyxFQUE0RDtBQUMxRCxpQkFBTztBQUNMcEUsWUFBQUEsVUFBVSxFQUFFb0U7QUFEUCxXQUFQO0FBR0Q7QUFDRjs7QUFDRCxhQUFPLElBQVA7QUFDRDs7OztFQXBCb0M5RSxhOztnQkFBbEJRLFMsWUFDSEYsTTs7Z0JBREdFLFMsY0FFREQsUTs7U0FGQ0MsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0UHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vY29uZmlnXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmNvbnN0IHsgT3B0aW9uLCBPcHRHcm91cCB9ID0gU2VsZWN0O1xyXG5cclxuaW50ZXJmYWNlIElTZWxlY3RQcm9wcyBleHRlbmRzIFNlbGVjdFByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/pu5jorqTmlbDmja5cclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN0eWxlPzogYm9vbGVhbjtcclxuICBzaG93R3JvdXA/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIhue7hFxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5TQ1NlbGVjdCBleHRlbmRzIFB1cmVDb21wb25lbnQ8SVNlbGVjdFByb3BzPiB7XHJcbiAgc3RhdGljIE9wdGlvbiA9IE9wdGlvbjtcclxuICBzdGF0aWMgT3B0R3JvdXAgPSBPcHRHcm91cDtcclxuICBzdGF0ZSA9IHtcclxuICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgc2VsZWN0VmFsdWU6IG51bGwsXHJcbiAgfTtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZTogYW55KSB7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHByZXZTdGF0ZTtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgc3RvcmUgfSA9IG5leHRQcm9wcztcclxuICAgIGlmIChkYXRhIHx8IG9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgbmV3RGF0YSA9IGRhdGEgPyBkYXRhIDogb3B0aW9ucztcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGRhdGFTb3VyY2UpICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXRhKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3QgeyBkYXRhLCBzdG9yZSA9IHt9LCBjaGlsZHJlbiwgb3B0aW9ucyB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHVybCxcclxuICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgIHZpZXduYW1lLFxyXG4gICAgICBjYWNoZWQsXHJcbiAgICAgIGNhY2hlS2V5LFxyXG4gICAgICAuLi5zdG9yZXNcclxuICAgIH0gPSBzdG9yZTtcclxuICAgIGxldCB7IHZpZXdVcmwgfSA9IGNvbmZpZygpO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHZpZXduYW1lIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgXZpZXduYW1l44CBZGF0YeOAgW9wdGlvbnPkuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5kYXRhQ2hhbmdlZCwgX3RoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uc3RvcmVzLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoKHZpZXduYW1lIHx8IHVybCkgJiYgZGF0YSA9PSBudWxsICYmIG9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBpc0NhY2hlZCA9IGNhY2hlZDtcclxuICAgICAgICBsZXQgaXNDYWNoZUtleSA9IGNhY2hlS2V5O1xyXG4gICAgICAgIGlmICh2aWV3bmFtZSkge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZWQgIT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgaXNDYWNoZUtleSA9IGlzQ2FjaGVLZXkgPyBpc0NhY2hlS2V5IDogdmlld25hbWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgIGF1dG9Mb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICB1cmw6IHVybCB8fCB2aWV3VXJsICsgdmlld25hbWUsIC8v6K+75a2X5YW477yMdXJs5Zu65a6a77yMdmlld25hbWVcclxuICAgICAgICAgICAgY2FjaGVkOiBpc0NhY2hlZCxcclxuICAgICAgICAgICAgY2FjaGVLZXk6IGlzQ2FjaGVLZXksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4uc3RvcmVQcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgU3RvcmUoc3RvcmVQcm9wcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZGF0YVNvdXJjZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJPcHRpb24ob3B0aW9uRGF0YSkge1xyXG4gICAgbGV0IHsgbGFiZWxGaWVsZCA9IFwibGFiZWxcIiwgdmFsdWVGaWVsZCA9IFwidmFsdWVcIiwgc3RvcmUgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHJldHVybiBvcHRpb25EYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICBpZiAodmFsdWVGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB2YWx1ZSA9IGl0ZW1bdmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgaXRlbVt2XSA6IHZhbHVlICsgXCIsXCIgKyBpdGVtW3ZdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBrZXkgPSBpdGVtLmlkID8gKGl0ZW0uaWQgIT09IFwidW5kZWZpbmVkXCIgPyBpdGVtLmlkIDogdmFsdWUpIDogdmFsdWU7XHJcbiAgICAgIGxldCBsYWJlbCA9IFwiXCI7XHJcbiAgICAgIGlmIChsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGxhYmVsID0gaXRlbVtsYWJlbEZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBsYWJlbEZpZWxkczogYW55ID0gbGFiZWxGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgbGFiZWxGaWVsZHMubWFwKChsLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgbGFiZWwgPSBpbmRleCA9PSAwID8gbGFiZWwgKyBpdGVtW2xdIDogbGFiZWwgKyBcIi1cIiArIGl0ZW1bbF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8T3B0aW9uXHJcbiAgICAgICAgICBrZXk9e2tleX1cclxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cclxuICAgICAgICAgIGxhYmVsPXtsYWJlbH1cclxuICAgICAgICAgIGRpc2FibGVkPXtpdGVtLmRpc2FibGVkID8gdHJ1ZSA6IGZhbHNlfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtsYWJlbH1cclxuICAgICAgICA8L09wdGlvbj5cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXJDaGlsZHJlbigpIHtcclxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIHNob3dHcm91cCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcHRHcm91cERhdGEgPSB7fSxcclxuICAgICAgICBvcHRpb25EYXRhID0gW107XHJcbiAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbCA9IGl0ZW0uZ3JvdXBOYW1lO1xyXG4gICAgICAgIGlmIChsYWJlbCAmJiBzaG93R3JvdXApIHtcclxuICAgICAgICAgIGlmICghb3B0R3JvdXBEYXRhW2xhYmVsXSkgb3B0R3JvdXBEYXRhW2xhYmVsXSA9IFtdO1xyXG4gICAgICAgICAgb3B0R3JvdXBEYXRhW2xhYmVsXS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvcHRpb25EYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgbGV0IG9wdGlvbiA9IHRoaXMucmVuZGVyT3B0aW9uKG9wdGlvbkRhdGEpO1xyXG4gICAgICBsZXQgb3B0R3JvdXAgPSBPYmplY3Qua2V5cyhvcHRHcm91cERhdGEpLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxPcHRHcm91cCBrZXk9e2tleX0gbGFiZWw9e2tleX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnJlbmRlck9wdGlvbihvcHRHcm91cERhdGFba2V5XSl9XHJcbiAgICAgICAgICA8L09wdEdyb3VwPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICB7b3B0aW9ufVxyXG4gICAgICAgICAge29wdEdyb3VwfVxyXG4gICAgICAgIDwvPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbkNoYW5nZSh2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RWYWx1ZTogdmFsdWUsXHJcbiAgICB9KTtcclxuICAgIGlmIChvbkNoYW5nZSkge1xyXG4gICAgICBvbkNoYW5nZSh2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBvbkNoYW5nZSxcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgbGFiZWxGaWVsZCxcclxuICAgICAgdmFsdWVGaWVsZCxcclxuICAgICAgZGVmYXVsdFN0eWxlID0gdHJ1ZSxcclxuICAgICAgc2hvd0dyb3VwID0gdHJ1ZSxcclxuICAgICAgLi4ucGFyYW1zXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHByb3BzID0ge1xyXG4gICAgICBzaG93U2VhcmNoOiB0cnVlLFxyXG4gICAgICBvcHRpb25GaWx0ZXJQcm9wOiBcImxhYmVsXCIsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxyXG4gICAgICBhbGxvd0NsZWFyOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIGlmIChkZWZhdWx0U3R5bGUpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKHN0eWxlc1tcIm5zY19zZWxlY3RcIl0sIHRoaXMucHJvcHMuY2xhc3NOYW1lKX0+XHJcbiAgICAgICAgICA8U2VsZWN0XHJcbiAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlbGVjdFZhbHVlfVxyXG4gICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKCl9XHJcbiAgICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuc2VsZWN0VmFsdWV9XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7dGhpcy5yZW5kZXJDaGlsZHJlbigpfVxyXG4gICAgICAgIDwvU2VsZWN0PlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
485
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NlbGVjdC9pbmRleC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiU3RvcmUiLCJ1dGlscyIsImNvbmZpZyIsInN0eWxlcyIsImNscyIsIlBpbnlpbk1hdGNoIiwiT3B0aW9uIiwiT3B0R3JvdXAiLCJOU0NTZWxlY3QiLCJwcm9wcyIsImRhdGFTb3VyY2UiLCJzZWxlY3RWYWx1ZSIsImFsbERhdGFTb3VyY2UiLCJjaGlsZHJlbiIsImFsbENoaWxkcmVuIiwiZGF0YSIsInN0b3JlIiwib3B0aW9ucyIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidmFsdWVGaWVsZCIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJ2aWV3bmFtZSIsImNhY2hlZCIsImNhY2hlS2V5Iiwic3RvcmVzIiwidmlld1VybCIsImdldEFsbERhdGEiLCJuZXdEYXRhIiwibGVuZ3RoIiwidmFsdWVGaWVsZHMiLCJzcGxpdCIsIm1hcCIsIml0ZW0iLCJpIiwidmFsdWUiLCJ2IiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiRXJyb3IiLCJfdGhpcyIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9uQmVmb3JlTG9hZCIsImNhbGxiYWNrIiwibG9hZCIsIm1vZGVsRGF0YSIsInNldFN0YXRlIiwiZGF0YUNoYW5nZWQiLCJpc0NhY2hlZCIsImlzQ2FjaGVLZXkiLCJhdXRvTG9hZCIsInN0YXRlIiwibmV3UHJvcHMiLCJuZXdTdGF0ZSIsIlNuYXBzaG90IiwiSlNPTiIsInN0cmluZ2lmeSIsIkFycmF5IiwiaXNBcnJheSIsInN0YXRlQ2hpbGRyZW5Qcm9wcyIsInMiLCJwdXNoIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJsYWJlbEZpZWxkIiwiZmlsdGVyT3B0aW9uIiwib25TZWFyY2giLCJyZXN1bHQiLCJmb3JFYWNoIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJmbGFnIiwibWF0Y2giLCJjaGlsZCIsIm9wdGlvbkRhdGEiLCJrZXkiLCJpZCIsImRpc2FibGVkIiwic2hvd0dyb3VwIiwib3B0R3JvdXBEYXRhIiwiZ3JvdXBOYW1lIiwib3B0aW9uIiwicmVuZGVyT3B0aW9uIiwib3B0R3JvdXAiLCJPYmplY3QiLCJrZXlzIiwib25DaGFuZ2UiLCJkZWZhdWx0U3R5bGUiLCJwYXJhbXMiLCJzaG93U2VhcmNoIiwib3B0aW9uRmlsdGVyUHJvcCIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsImNsYXNzTmFtZSIsImJpbmQiLCJyZW5kZXJDaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBUCxJQUFnQkMsYUFBaEIsUUFBcUMsT0FBckM7QUFFQSxPQUFPQyxLQUFQLE1BQWtDLGFBQWxDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFdBQW5CO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLE9BQU9DLEdBQVAsTUFBZ0IsWUFBaEI7QUFFQSxPQUFPQyxXQUFQLE1BQXdCLGNBQXhCO0FBQ0EsSUFBUUMsTUFBUixXQUFRQSxNQUFSO0FBQUEsSUFBZ0JDLFFBQWhCLFdBQWdCQSxRQUFoQjs7SUFhcUJDLFM7Ozs7O0FBV25CLHFCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2pCLCtCQUFNQSxLQUFOOztBQURpQiw2REFSWDtBQUNOQyxNQUFBQSxVQUFVLEVBQUUsRUFETjtBQUVOQyxNQUFBQSxXQUFXLEVBQUUsSUFGUDtBQUdOQyxNQUFBQSxhQUFhLEVBQUUsRUFIVDtBQUlOQyxNQUFBQSxRQUFRLEVBQUUsSUFKSjtBQUtOQyxNQUFBQSxXQUFXLEVBQUU7QUFMUCxLQVFXOztBQUFBLDZEQURYLEVBQ1c7O0FBRWpCLFFBQ0VDLElBREYsR0FRSU4sS0FSSixDQUNFTSxJQURGO0FBQUEsdUJBUUlOLEtBUkosQ0FFRU8sS0FGRjtB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RixRQUFMLENBQWNRLElBQWQsQ0FBbUIsSUFBbkIsQ0FGWjtBQUdFLFVBQUEsUUFBUSxFQUFFLEtBQUs3QixRQUFMLENBQWM2QixJQUFkLENBQW1CLElBQW5CO0FBSFosV0FJTTNGLEtBSk4sRUFLTXFGLE1BTE4sR0FPRyxLQUFLTyxjQUFMLEVBUEgsQ0FERixDQURGO0FBYUQsT0FkRCxNQWNPO0FBQ0wsNEJBQ0U7QUFDRSxVQUFBLEtBQUssRUFBRSxLQUFLN0MsS0FBTCxDQUFXN0MsV0FEcEI7QUFFRSxVQUFBLFFBQVEsRUFBRSxLQUFLNEQsUUFBTCxDQUFjNkIsSUFBZCxDQUFtQixJQUFuQixDQUZaO0FBR0UsVUFBQSxRQUFRLEVBQUUsS0FBS1IsUUFBTCxDQUFjUSxJQUFkLENBQW1CLElBQW5CO0FBSFosV0FJTTNGLEtBSk4sRUFLTXFGLE1BTE4sR0FPRyxLQUFLTyxjQUFMLEVBUEgsQ0FERjtBQVdEO0FBQ0Y7Ozs7RUF0Vm9DdEcsYTs7Z0JBQWxCUyxTLFlBQ0hGLE07O2dCQURHRSxTLGNBRURELFE7O1NBRkNDLFMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgUGlueWluTWF0Y2ggZnJvbSBcInBpbnlpbi1tYXRjaFwiO1xyXG5jb25zdCB7IE9wdGlvbiwgT3B0R3JvdXAgfSA9IFNlbGVjdDtcclxuXHJcbmludGVyZmFjZSBJU2VsZWN0UHJvcHMgZXh0ZW5kcyBTZWxlY3RQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD47IC8v6buY6K6k5pWw5o2uXHJcbiAgbGFiZWxGaWVsZD86IHN0cmluZztcclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xyXG4gIGRlZmF1bHRTdHlsZT86IGJvb2xlYW47XHJcbiAgc2hvd0dyb3VwPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrliIbnu4RcclxuICBhZGREYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/phY3lkIhzdG9yZeS9v+eUqO+8jOS7juWinuWKoOmineWklueahOaVsOaNrlxyXG4gIGRlbGV0ZURhdGE/OiBBcnJheTxTdHJpbmc+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5Yig6Zmk5LuO5pWw5o2u5bqT5Lit6I635Y+W5Yiw55qE5oyH5a6a5pWw5o2uXHJcbiAgW3Byb05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOU0NTZWxlY3QgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElTZWxlY3RQcm9wcz4ge1xyXG4gIHN0YXRpYyBPcHRpb24gPSBPcHRpb247XHJcbiAgc3RhdGljIE9wdEdyb3VwID0gT3B0R3JvdXA7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIHNlbGVjdFZhbHVlOiBudWxsLFxyXG4gICAgYWxsRGF0YVNvdXJjZTogW10sXHJcbiAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgIGFsbENoaWxkcmVuOiBudWxsLFxyXG4gIH07XHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBhZGREYXRhID0gW10sXHJcbiAgICAgIGRlbGV0ZURhdGEgPSBbXSxcclxuICAgICAgdmFsdWVGaWVsZCA9IFwidmFsdWVcIixcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgdXJsLFxyXG4gICAgICBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSxcclxuICAgICAgdmlld25hbWUsXHJcbiAgICAgIGNhY2hlZCxcclxuICAgICAgY2FjaGVLZXksXHJcbiAgICAgIC4uLnN0b3Jlc1xyXG4gICAgfSA9IHN0b3JlO1xyXG4gICAgbGV0IHsgdmlld1VybCB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBnZXRBbGxEYXRhID0gKGRhdGEpID0+IHtcclxuICAgICAgbGV0IG5ld0RhdGEgPSBbLi4uZGF0YV07XHJcbiAgICAgIGlmIChhZGREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBuZXdEYXRhID0gWy4uLmFkZERhdGEsIC4uLm5ld0RhdGFdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkZWxldGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCB2YWx1ZUZpZWxkczogYW55ID0gdmFsdWVGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgbmV3RGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgaXRlbVt2XSA6IHZhbHVlICsgXCIsXCIgKyBpdGVtW3ZdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoZGVsZXRlRGF0YS5pbmRleE9mKHZhbHVlKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld0RhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdEYXRhO1xyXG4gICAgfTtcclxuICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgaWYgKCEoZGF0YSB8fCB2aWV3bmFtZSB8fCB1cmwgfHwgb3B0aW9ucykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzjgIF2aWV3bmFtZeOAgWRhdGHjgIFvcHRpb25z5LiN6IO96YO95Li656m677yBXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgIGxldCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiBmdW5jdGlvbiAoc3RvcmUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5vbkJlZm9yZUxvYWQsIF90aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICgodmlld25hbWUgfHwgdXJsKSAmJiBkYXRhID09IG51bGwgJiYgb3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVkID0gY2FjaGVkO1xyXG4gICAgICAgIGxldCBpc0NhY2hlS2V5ID0gY2FjaGVLZXk7XHJcbiAgICAgICAgaWYgKHZpZXduYW1lKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZCAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgaXNDYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpc0NhY2hlS2V5ID0gaXNDYWNoZUtleSA/IGlzQ2FjaGVLZXkgOiB2aWV3bmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsIHx8IHZpZXdVcmwgKyB2aWV3bmFtZSwgLy/or7vlrZflhbjvvIx1cmzlm7rlrprvvIx2aWV3bmFtZVxyXG4gICAgICAgICAgICBjYWNoZWQ6IGlzQ2FjaGVkLFxyXG4gICAgICAgICAgICBjYWNoZUtleTogaXNDYWNoZUtleSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5zdG9yZVByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBTdG9yZShzdG9yZVByb3BzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5hbGxEYXRhU291cmNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZTtcclxuICB9XHJcbiAgc2V0VmFsdWUodmFsdWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RWYWx1ZTogdmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghY2hpbGRyZW4gJiYgKGRhdGEgfHwgb3B0aW9ucykpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogZGF0YSA/IGRhdGEgOiBvcHRpb25zLFxyXG4gICAgICAgIGFsbERhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcclxuICAgICAgICBhbGxDaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUobmV3UHJvcHMsIG5ld1N0YXRlLCBTbmFwc2hvdCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBkYXRhID8gZGF0YSA6IG9wdGlvbnM7XHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhbGxEYXRhU291cmNlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGF0YVNvdXJjZTogbmV3RGF0YSxcclxuICAgICAgICAgIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBzdGF0ZUNoaWxkcmVuUHJvcHM6IGFueSA9IFtdO1xyXG4gICAgICBhbGxDaGlsZHJlbi5tYXAoKHM6IGFueSkgPT4ge1xyXG4gICAgICAgIHN0YXRlQ2hpbGRyZW5Qcm9wcy5wdXNoKHMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgY2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgY2hpbGRyZW5Qcm9wcy5wdXNoKGMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHN0YXRlQ2hpbGRyZW5Qcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGNoaWxkcmVuUHJvcHMpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uU2VhcmNoKHZhbHVlKSB7XHJcbiAgICBjb25zdCB7IGFsbERhdGFTb3VyY2UsIGFsbENoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBsYWJlbEZpZWxkID0gXCJsYWJlbFwiLFxyXG4gICAgICBmaWx0ZXJPcHRpb24gPSB0cnVlLFxyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChmaWx0ZXJPcHRpb24pIHtcclxuICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG4gICAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBhbGxEYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgICAgICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgbGFiZWwgPSBpdGVtW2xhYmVsRmllbGRdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGwsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IGluZGV4ID09IDAgPyBsYWJlbCArIGl0ZW1bbF0gOiBsYWJlbCArIFwiLVwiICsgaXRlbVtsXTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZmxhZyA9IFBpbnlpbk1hdGNoLm1hdGNoKGxhYmVsLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogYWxsRGF0YVNvdXJjZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFsbENoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBhbGxDaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGxhYmVsID0gY2hpbGQ/LnByb3BzPy5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICBsZXQgZmxhZyA9IFBpbnlpbk1hdGNoLm1hdGNoKGxhYmVsLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiByZXN1bHQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25TZWFyY2ggJiYgb25TZWFyY2godmFsdWUpO1xyXG4gIH1cclxuICByZW5kZXJPcHRpb24ob3B0aW9uRGF0YSkge1xyXG4gICAgbGV0IHsgbGFiZWxGaWVsZCA9IFwibGFiZWxcIiwgdmFsdWVGaWVsZCA9IFwidmFsdWVcIiwgc3RvcmUgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHJldHVybiBvcHRpb25EYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICBpZiAodmFsdWVGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB2YWx1ZSA9IGl0ZW1bdmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgaXRlbVt2XSA6IHZhbHVlICsgXCIsXCIgKyBpdGVtW3ZdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBrZXkgPSBpdGVtLmlkID8gKGl0ZW0uaWQgIT09IFwidW5kZWZpbmVkXCIgPyBpdGVtLmlkIDogdmFsdWUpIDogdmFsdWU7XHJcbiAgICAgIGxldCBsYWJlbCA9IFwiXCI7XHJcbiAgICAgIGlmIChsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGxhYmVsID0gaXRlbVtsYWJlbEZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBsYWJlbEZpZWxkczogYW55ID0gbGFiZWxGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgbGFiZWxGaWVsZHMubWFwKChsLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgbGFiZWwgPSBpbmRleCA9PSAwID8gbGFiZWwgKyBpdGVtW2xdIDogbGFiZWwgKyBcIi1cIiArIGl0ZW1bbF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8T3B0aW9uXHJcbiAgICAgICAgICBrZXk9e2tleX1cclxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cclxuICAgICAgICAgIGxhYmVsPXtsYWJlbH1cclxuICAgICAgICAgIGRpc2FibGVkPXtpdGVtLmRpc2FibGVkID8gdHJ1ZSA6IGZhbHNlfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtsYWJlbH1cclxuICAgICAgICA8L09wdGlvbj5cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXJDaGlsZHJlbigpIHtcclxuICAgIGNvbnN0IHsgc2hvd0dyb3VwID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZGF0YVNvdXJjZSwgY2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvcHRHcm91cERhdGEgPSB7fSxcclxuICAgICAgICBvcHRpb25EYXRhID0gW107XHJcbiAgICAgIGRhdGFTb3VyY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBsYWJlbCA9IGl0ZW0uZ3JvdXBOYW1lO1xyXG4gICAgICAgIGlmIChsYWJlbCAmJiBzaG93R3JvdXApIHtcclxuICAgICAgICAgIGlmICghb3B0R3JvdXBEYXRhW2xhYmVsXSkgb3B0R3JvdXBEYXRhW2xhYmVsXSA9IFtdO1xyXG4gICAgICAgICAgb3B0R3JvdXBEYXRhW2xhYmVsXS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvcHRpb25EYXRhLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgbGV0IG9wdGlvbiA9IHRoaXMucmVuZGVyT3B0aW9uKG9wdGlvbkRhdGEpO1xyXG4gICAgICBsZXQgb3B0R3JvdXAgPSBPYmplY3Qua2V5cyhvcHRHcm91cERhdGEpLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxPcHRHcm91cCBrZXk9e2tleX0gbGFiZWw9e2tleX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnJlbmRlck9wdGlvbihvcHRHcm91cERhdGFba2V5XSl9XHJcbiAgICAgICAgICA8L09wdEdyb3VwPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICB7b3B0aW9ufVxyXG4gICAgICAgICAge29wdEdyb3VwfVxyXG4gICAgICAgIDwvPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbkNoYW5nZSh2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RWYWx1ZTogdmFsdWUsXHJcbiAgICB9KTtcclxuICAgIGlmIChvbkNoYW5nZSkge1xyXG4gICAgICBvbkNoYW5nZSh2YWx1ZSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBvbkNoYW5nZSxcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgbGFiZWxGaWVsZCxcclxuICAgICAgdmFsdWVGaWVsZCxcclxuICAgICAgZGVmYXVsdFN0eWxlID0gdHJ1ZSxcclxuICAgICAgc2hvd0dyb3VwID0gdHJ1ZSxcclxuICAgICAgYWRkRGF0YSxcclxuICAgICAgZGVsZXRlRGF0YSxcclxuICAgICAgLi4ucGFyYW1zXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHByb3BzID0ge1xyXG4gICAgICBmaWx0ZXJPcHRpb246IGZhbHNlLFxyXG4gICAgICBzaG93U2VhcmNoOiB0cnVlLFxyXG4gICAgICBvcHRpb25GaWx0ZXJQcm9wOiBcImxhYmVsXCIsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBcIuivt+mAieaLqVwiLFxyXG4gICAgICBhbGxvd0NsZWFyOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIGlmIChkZWZhdWx0U3R5bGUpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKHN0eWxlc1tcIm5zY19zZWxlY3RcIl0sIHRoaXMucHJvcHMuY2xhc3NOYW1lKX0+XHJcbiAgICAgICAgICA8U2VsZWN0XHJcbiAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlbGVjdFZhbHVlfVxyXG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKCl9XHJcbiAgICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuc2VsZWN0VmFsdWV9XHJcbiAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|