nsc-react-component 4.1.19 → 4.1.20
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.
|
@@ -269,7 +269,7 @@ class BasePage extends PureComponent {
|
|
|
269
269
|
tableProps = {}
|
|
270
270
|
} = this.props;
|
|
271
271
|
const {
|
|
272
|
-
store: tableStore
|
|
272
|
+
store: tableStore = {}
|
|
273
273
|
} = tableProps;
|
|
274
274
|
let queryParams = this.convertQueryParams();
|
|
275
275
|
let data = queryParams.data || queryParams.params || {};
|
|
@@ -281,6 +281,9 @@ class BasePage extends PureComponent {
|
|
|
281
281
|
params: storeParams = {}
|
|
282
282
|
} = storeConfig,
|
|
283
283
|
otherStoreConfig = _objectWithoutProperties(storeConfig, _excluded2);
|
|
284
|
+
console.log(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultRequestConfig), otherStoreConfig), requestConfig), {}, {
|
|
285
|
+
params: _objectSpread(_objectSpread({}, storeParams), finalParams)
|
|
286
|
+
}), 'ccc');
|
|
284
287
|
(_this$tableRef$curren3 = this.tableRef.current) === null || _this$tableRef$curren3 === void 0 || _this$tableRef$curren3.store.load(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultRequestConfig), otherStoreConfig), requestConfig), {}, {
|
|
285
288
|
params: _objectSpread(_objectSpread({}, storeParams), finalParams)
|
|
286
289
|
}));
|
|
@@ -1166,4 +1169,4 @@ class BasePage extends PureComponent {
|
|
|
1166
1169
|
}
|
|
1167
1170
|
_defineProperty(BasePage, "convertColumns", convertColumns);
|
|
1168
1171
|
export default BasePage;
|
|
1169
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJidXR0b25zTG9hZGluZyIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZUNvbnRlbnRSZWYkIiwiaW5pdERhdGEiLCJwZXJtaXNzb24iLCJwYWdlQ29udGVudFJlZiIsImNsaWVudEhlaWdodCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic2V0VGltZW91dCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIl90aGlzJHBhZ2VSZWYkY3VycmVudCIsInBhZ2VSZWYiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRTZWFyY2hQYXJhbXMiLCJwYXJhbXMiLCJjYWxsQmFjayIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZSIsInNlYXJjaFJlZiIsImRvU3VibWl0IiwiZGF0YSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImxhYmVsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZWRpdG9yUmVmIiwic2hvd0Zvcm0iLCJfdGhpcyRlZGl0b3JSZWYiLCJlZGl0b3JmbGFnIiwibmV3VmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwic2hvdyIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZvcm1WYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZvcm1WYWx1ZSIsIm9uRGVsZXRlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImRlbGV0ZVBvc2l0aW9uIiwiYnV0dG9uQ2xpY2siLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdFVybHMiLCJyZXF1ZXN0Q29uZmlnIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJ1cmwiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJyZWNvcmQiLCJpZHMiLCJpZCIsImZ1bmNzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsImZ1bmMiLCJGdW5jdGlvbiIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiY29udmVyUGFyYW1zIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsImZvcm1QYWdlUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJuZXdUYWJsZVN0b3JlIiwiX25ld1RhYmxlU3RvcmUkcmVxdWVzIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJkZWZhdWx0VmFsdWUiLCJtZW51Q29kZSIsInBlcm1pc3NvbnMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJ0b29sQnV0dG9ucyIsImJ1dHRvbk1hcCIsImVkaXRvciIsImRlbGV0ZSIsInNlYXJjaCIsInJldHVybkJ1dHRvbiIsIl9idXR0b25NYXAkY29kZSIsImRlZmF1bHRQcm9wcyIsIm9uRWRpdG9yIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhMiIsIm9uRWRpdG9yQ2FsbEJhY2siLCJvblNlYXJjaENhbGxCYWNrIiwiY2hlY2tQZXJzc2lvbiIsImluZGV4T2YiLCJvbkFkZCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM3Iiwib25BZGRDYWxsQmFjayIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2NoaWxkJHByb3BzNCIsIl9jaGlsZCRwcm9wczUiLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJfaXRlbSRwcm9wczciLCJfaXRlbSRwcm9wczgiLCJfaXRlbSRwcm9wczkiLCJkYXRhSW5kZXgiLCJhbGlnbiIsInRleHRBbGlnbiIsIndpZHRoIiwiZml4ZWQiLCJyZWFjb3JkIiwiRnJhZ21lbnQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyIiwidG9vbHMiLCJ0b29sSGVpZ2h0IiwicGFkZGluZ0hlaWdodCIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJzZWFyY2hGb3JtUHJvcHMiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29sdW1ucywgZ2V0TmV3Q29sdW1ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xyXG50eXBlIEJ1dHRvbkl0ZW0gPVxyXG4gIHwgc3RyaW5nXHJcbiAgfCB7XHJcbiAgICAgIGNvZGU6IHN0cmluZztcclxuICAgICAgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG4gICAgICBwcm9wcz86IGFueTtcclxuICAgIH07XHJcblxyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1ucz86IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQb3NpdGlvbj86IFwidG9vbGJhclwiIHwgXCJyb3dcIjtcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQnV0dG9uSXRlbVtdOyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgc3RhdGljIGNvbnZlcnRDb2x1bW5zID0gY29udmVydENvbHVtbnM7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgZWxlbWVudEhlaWdodDogMCxcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnM6IFtdLFxyXG4gICAgICBxdWVyeVBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiAwLCAvLyDmt7vliqDooajlpLTpq5jluqbliLBzdGF0ZVxyXG4gICAgICBidXR0b25zTG9hZGluZzp7fSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEsIHBlcm1pc3NvbiA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG5cclxuICAgIC8vIOa3u+WKoOeql+WPo3Jlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy50aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0KTtcclxuXHJcbiAgICAvLyDliJ3lp4vorqHnrpfooajlpLTpq5jluqZcclxuICAgIHNldFRpbWVvdXQodGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCwgMCk7XHJcblxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICB9KTtcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgLy8g56e76ZmkcmVzaXpl55uR5ZCsXHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcclxuICAgICAgXCJyZXNpemVcIixcclxuICAgICAgdGhpcy50aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0XHJcbiAgICApO1xyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICBsZXQgbmV3VmFsdWUgPSB2YWx1ZSA/IHsgLi4udmFsdWUgfSA6IG51bGw7XHJcbiAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSwgdHlwZSA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGb3JtVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMgPSB7fSxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dEYXRhcyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gICAgbGV0IHVybCA9IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA/IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA6IGRlbGV0ZVVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgID8gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgOiBkZWxldGVQYXJhbXM7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGJ1dHRvbkNsaWNrLm9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25EZWxldGUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93RGF0YXMgOiBkYXRhLFxyXG4gICAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhPy5pZCxcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGRhdGE6IGRhdGFQYXJhbXMgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhUGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZmluYWxQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgZmluYWxQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMsIC4uLm90aGVyUGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcclxuICAgICAgICAgIC4uLmZpbmFsUGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25pZzogc3RvcmVDb25maWcgPSB7fSB9ID0gdGFibGVTdG9yZTtcclxuICAgIGNvbnN0IHsgcGFyYW1zOiBzdG9yZVBhcmFtcyA9IHt9LCAuLi5vdGhlclN0b3JlQ29uZmlnIH0gPSBzdG9yZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBwYXJhbXM6IHBhcmFtcyB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdHJlZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGtleSA9IHJvd0tleShpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAga2V5ID0gaXRlbVtyb3dLZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogMTIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLm1vcmVPcGVufVxyXG4gICAgICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAvLyBvcGVuPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiBpbmRleCA9PSB0b29sYnV0dG9ucy5sZW5ndGggLSAxID8gMCA6IDEyLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByb3dSZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qcm9wcywgdGFibGVQcm9wcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGtleSA9IHJvd0tleShyb3dSZWNvcmQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAga2V5ID0gcm93UmVjb3JkW3Jvd0tleV07XHJcbiAgICB9XHJcbiAgICBsZXQgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IHRydWUgfHwgYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gdHJ1ZSlcclxuICAgICAgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHJlY29yZDogcm93UmVjb3JkLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfTtcclxuICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvbixVdGlsc1wiLCByZWNvcmRTaG93KTtcclxuICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSByb3dSZWNvcmQ7XHJcbiAgICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3Jvd1JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBzZWxlY3RlZEtleXM6IHNlbGVjdGVkS2V5cywgb2JqOiBvYmogfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgICAvLyB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgIC8vICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgLy8gICBvYmosXHJcbiAgICAvLyBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRRdWVyeVBhcmFtcygpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zICYmIHR5cGVvZiBxdWVyeVBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHF1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X6KGo5aS06auY5bqm55qE5pa55rOVXHJcbiAgY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBjb25zdCB0YWJsZUhlYWRlciA9XHJcbiAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgXCJhbnQtdGFibGUtdGhlYWRcIlxyXG4gICAgICAgIClbMF07XHJcbiAgICAgIGlmICh0YWJsZUhlYWRlcikge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRhYmxlSGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgICBpZiAoaGVhZGVySGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9IHRocm90dGxlKFxyXG4gICAgdGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCxcclxuICAgIDUwMFxyXG4gICk7XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHBlcm1pc3Npb24gPSB7IGhhczogZmFsc2UgfSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0YWJsZVN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld1RhYmxlU3RvcmUgPSB7IC4uLnRhYmxlU3RvcmUgfTtcclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHsgLi4ubmV3VGFibGVTdG9yZSB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zID0gb2JqLnNlYXJjaEZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb25zdCBidXR0b25NYXAgPSB7XHJcbiAgICAgIGVkaXRvcjogeyBuYW1lOiBcIue8lui+kVwiLCBjb2RlOiBcImVkaXRvclwiLCBpY29uOiA8RWRpdE91dGxpbmVkIC8+IH0sXHJcbiAgICAgIGRlbGV0ZTogeyBuYW1lOiBcIuWIoOmZpFwiLCBjb2RlOiBcImRlbGV0ZVwiLCBpY29uOiA8RGVsZXRlT3V0bGluZWQgLz4gfSxcclxuICAgICAgc2VhcmNoOiB7IG5hbWU6IFwi5p+l55yLXCIsIGNvZGU6IFwic2VhcmNoXCIsIGljb246IDxFeWVPdXRsaW5lZCAvPiB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJldHVybkJ1dHRvbiA9IChjb2RlLCBzaG93ID0gXCJcIiwgZGVmYXVsdFByb3BzID0ge30pID0+IHtcclxuICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgIGljb246IHNob3dJY29uID8gYnV0dG9uTWFwW2NvZGVdLmljb24gOiBudWxsLFxyXG4gICAgICAgIHR5cGU6IFwibGlua1wiLFxyXG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgfSBhcyBhbnk7XHJcblxyXG4gICAgICBpZiAoc2hvdykge1xyXG4gICAgICAgIHByb3BzID0geyAuLi5wcm9wcywgcmVjb3JkU2hvdzogc2hvdyB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJlZGl0b3JcIiAmJiBidXR0b25DbGljay5vbkVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRWRpdG9yLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFwic2VhcmNoXCIgJiYgYnV0dG9uQ2xpY2sub25TZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vblNlYXJjaCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2FsbEJhY2sgPVxyXG4gICAgICAgICAgICAgICAgICBjb2RlID09IFwiZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2tcclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2s7XHJcbiAgICAgICAgICAgICAgICBjYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICBjYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2J1dHRvbk1hcFtjb2RlXT8ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjaGVja1BlcnNzaW9uID0gKGNvZGUpID0+IHtcclxuICAgICAgaWYgKCFwZXJtaXNzaW9uLmhhcykge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uQnV0dG9ucy5pbmRleE9mKGNvZGUpID4gLTE7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBidXR0b25zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmICgoaXRlbSA9PSBcImFkZFwiIHx8IGl0ZW0uY29kZSA9PSBcImFkZFwiKSAmJiBjaGVja1BlcnNzaW9uKFwiYWRkXCIpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0sIGJ1dHRvbkNsaWNrID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgICAgaWYgKGJ1dHRvbkNsaWNrPy5vbkFkZCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uQWRkLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShudWxsLCBudWxsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkFkZENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoaXRlbSA9PSBcImRlbGV0ZVwiIHx8IGl0ZW0uY29kZSA9PSBcImRlbGV0ZVwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgICAgcmV0dXJuQnV0dG9uKGl0ZW0uY29kZSB8fCBpdGVtLCBpdGVtLnJlY29yZFNob3csIGl0ZW0ucHJvcHMgfHwge30pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICByZXR1cm5CdXR0b24oXHJcbiAgICAgICAgICAgICAgaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSxcclxuICAgICAgICAgICAgICBpdGVtLnJlY29yZFNob3csXHJcbiAgICAgICAgICAgICAgaXRlbS5wcm9wcyB8fCB7fVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihpdGVtPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJiBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgcHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHRvb2xCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGxldCBoZWFkZXJIZWlnaHQgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgPyAxMDQgOiAwOyAvL+WktOmDqOaQnOe0ouagj+mrmOW6plxyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNTAgOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyMCAqIDI7IC8v5LiK5LiL6Ze06LedXHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0IC0gaGVhZGVySGVpZ2h0O1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gMzIgKyAxNiA6IDA7IC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPVxyXG4gICAgICB0YWJsZUNvbnRlbnRIZWlnaHQgLVxyXG4gICAgICAodGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCA+IDAgPyB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0IDogNTUpIC1cclxuICAgICAgUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIC8vIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlV3JhcHBlclJlZn1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUHJvcHN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQXlCLG1CQUFt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
|
|
1172
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInRocm90dGxlIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJ0YWJsZVdyYXBwZXJSZWYiLCJjdXJyZW50IiwidGFibGVIZWFkZXIiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGVhZGVySGVpZ2h0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwidGFibGVIZWFkZXJIZWlnaHQiLCJzZXRTdGF0ZSIsImNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJidXR0b25zTG9hZGluZyIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZUNvbnRlbnRSZWYkIiwiaW5pdERhdGEiLCJwZXJtaXNzb24iLCJwYWdlQ29udGVudFJlZiIsImNsaWVudEhlaWdodCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0Iiwic2V0VGltZW91dCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIl90aGlzJHBhZ2VSZWYkY3VycmVudCIsInBhZ2VSZWYiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRTZWFyY2hQYXJhbXMiLCJwYXJhbXMiLCJjYWxsQmFjayIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZSIsInNlYXJjaFJlZiIsImRvU3VibWl0IiwiZGF0YSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImxhYmVsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZWRpdG9yUmVmIiwic2hvd0Zvcm0iLCJfdGhpcyRlZGl0b3JSZWYiLCJlZGl0b3JmbGFnIiwibmV3VmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwic2hvdyIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZvcm1WYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZvcm1WYWx1ZSIsIm9uRGVsZXRlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImRlbGV0ZVBvc2l0aW9uIiwiYnV0dG9uQ2xpY2siLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdFVybHMiLCJyZXF1ZXN0Q29uZmlnIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJ1cmwiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJyZWNvcmQiLCJpZHMiLCJpZCIsImZ1bmNzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsImZ1bmMiLCJGdW5jdGlvbiIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiY29udmVyUGFyYW1zIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsImZvcm1QYWdlUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJuZXdUYWJsZVN0b3JlIiwiX25ld1RhYmxlU3RvcmUkcmVxdWVzIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJkZWZhdWx0VmFsdWUiLCJtZW51Q29kZSIsInBlcm1pc3NvbnMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJ0b29sQnV0dG9ucyIsImJ1dHRvbk1hcCIsImVkaXRvciIsImRlbGV0ZSIsInNlYXJjaCIsInJldHVybkJ1dHRvbiIsIl9idXR0b25NYXAkY29kZSIsImRlZmF1bHRQcm9wcyIsIm9uRWRpdG9yIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhMiIsIm9uRWRpdG9yQ2FsbEJhY2siLCJvblNlYXJjaENhbGxCYWNrIiwiY2hlY2tQZXJzc2lvbiIsImluZGV4T2YiLCJvbkFkZCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM3Iiwib25BZGRDYWxsQmFjayIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2NoaWxkJHByb3BzNCIsIl9jaGlsZCRwcm9wczUiLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJfaXRlbSRwcm9wczciLCJfaXRlbSRwcm9wczgiLCJfaXRlbSRwcm9wczkiLCJkYXRhSW5kZXgiLCJhbGlnbiIsInRleHRBbGlnbiIsIndpZHRoIiwiZml4ZWQiLCJyZWFjb3JkIiwiRnJhZ21lbnQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyIiwidG9vbHMiLCJ0b29sSGVpZ2h0IiwicGFkZGluZ0hlaWdodCIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJzZWFyY2hGb3JtUHJvcHMiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29sdW1ucywgZ2V0TmV3Q29sdW1ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xyXG50eXBlIEJ1dHRvbkl0ZW0gPVxyXG4gIHwgc3RyaW5nXHJcbiAgfCB7XHJcbiAgICAgIGNvZGU6IHN0cmluZztcclxuICAgICAgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG4gICAgICBwcm9wcz86IGFueTtcclxuICAgIH07XHJcblxyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1ucz86IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQb3NpdGlvbj86IFwidG9vbGJhclwiIHwgXCJyb3dcIjtcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQnV0dG9uSXRlbVtdOyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgc3RhdGljIGNvbnZlcnRDb2x1bW5zID0gY29udmVydENvbHVtbnM7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgZWxlbWVudEhlaWdodDogMCxcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnM6IFtdLFxyXG4gICAgICBxdWVyeVBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiAwLCAvLyDmt7vliqDooajlpLTpq5jluqbliLBzdGF0ZVxyXG4gICAgICBidXR0b25zTG9hZGluZzoge30sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhLCBwZXJtaXNzb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VDb250ZW50UmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAvLyDmt7vliqDnqpflj6NyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCk7XHJcblxyXG4gICAgLy8g5Yid5aeL6K6h566X6KGo5aS06auY5bqmXHJcbiAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsIDApO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIC8vIOenu+mZpHJlc2l6ZeebkeWQrFxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwicmVzaXplXCIsXHJcbiAgICAgIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodFxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnkpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVsZXRlVXJsLFxyXG4gICAgICBvbkRlbGV0ZSxcclxuICAgICAgZGVsZXRlUGFyYW1zID0ge30sXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93RGF0YXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICAgIGxldCB1cmwgPSByZXF1ZXN0VXJscy5kZWxldGVVcmwgPyByZXF1ZXN0VXJscy5kZWxldGVVcmwgOiBkZWxldGVVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA/IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgIDogZGVsZXRlUGFyYW1zO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChidXR0b25DbGljay5vbkRlbGV0ZSkge1xyXG4gICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRGVsZXRlLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIHJlY29yZDogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0RhdGFzIDogZGF0YSxcclxuICAgICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YT8uaWQsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF1cmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBkYXRhOiBkYXRhUGFyYW1zID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgICAgLi4uZGF0YVBhcmFtcyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGZpbmFsUGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGZpbmFsUGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zLCAuLi5vdGhlclBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QodXJsLCB7XHJcbiAgICAgICAgICAuLi5maW5hbFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSA9IHt9IH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuXHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uaWc6IHN0b3JlQ29uZmlnID0ge30gfSA9IHRhYmxlU3RvcmU7XHJcbiAgICBjb25zdCB7IHBhcmFtczogc3RvcmVQYXJhbXMgPSB7fSwgLi4ub3RoZXJTdG9yZUNvbmZpZyB9ID0gc3RvcmVDb25maWc7XHJcbiAgICBjb25zb2xlLmxvZyh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9LCdjY2MnKVxyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLm90aGVyU3RvcmVDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogeyAuLi5zdG9yZVBhcmFtcywgLi4uZmluYWxQYXJhbXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgb25DYWxsQmFja3MsXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHBhcmFtczogcGFyYW1zIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0cmVlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93S2V5cyhkYXRhKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAga2V5ID0gcm93S2V5KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBrZXkgPSBpdGVtW3Jvd0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAga2V5ID0gcm93S2V5KHJvd1JlY29yZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrZXkgPSByb3dSZWNvcmRbcm93S2V5XTtcclxuICAgIH1cclxuICAgIGxldCBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gdHJ1ZSB8fCBiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSB0cnVlKVxyXG4gICAgICBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7XHJcbiAgICAgICAgICAgICAgcmVjb3JkOiByb3dSZWNvcmQsXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBVdGlscyA9IHsgLi4udGhpcy5wcm9wcy5VaXRscyB9O1xyXG4gICAgICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcImV2ZW50T3B0aW9uLFV0aWxzXCIsIHJlY29yZFNob3cpO1xyXG4gICAgICAgICAgICBjb25zdCBzaG93ID0gZnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgbGV0IHJlY29yZCA9IHJvd1JlY29yZDtcclxuICAgICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocm93UmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogMztcclxuICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICBpZiAobnVtYmVyID09IFwiYWxsXCIpIHtcclxuICAgICAgZmxhZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gTnVtYmVyKG51bWJlcikgLSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcm93UmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBpY29uPXtpY29ufVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUucG9wb3BlbnNba2V5XSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHNlbGVjdGVkS2V5czogc2VsZWN0ZWRLZXlzLCBvYmo6IG9iaiB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICAgIC8vIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgLy8gICBzZWxlY3RlZEtleXMsXHJcbiAgICAvLyAgIG9iaixcclxuICAgIC8vIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgY29udmVydFF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvLyDorqHnrpfooajlpLTpq5jluqbnmoTmlrnms5VcclxuICBjYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnRhYmxlV3JhcHBlclJlZi5jdXJyZW50KSB7XHJcbiAgICAgIGNvbnN0IHRhYmxlSGVhZGVyID1cclxuICAgICAgICB0aGlzLnRhYmxlV3JhcHBlclJlZi5jdXJyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICAgICAgICBcImFudC10YWJsZS10aGVhZFwiXHJcbiAgICAgICAgKVswXTtcclxuICAgICAgaWYgKHRhYmxlSGVhZGVyKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVySGVpZ2h0ID0gdGFibGVIZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xyXG4gICAgICAgIGlmIChoZWFkZXJIZWlnaHQgIT09IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICB0YWJsZUhlYWRlckhlaWdodDogaGVhZGVySGVpZ2h0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICB0aHJvdHRsZUNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0ID0gdGhyb3R0bGUoXHJcbiAgICB0aGlzLmNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0LFxyXG4gICAgNTAwXHJcbiAgKTtcclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1QYWdlUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qcm9wcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcGVybWlzc2lvbiA9IHsgaGFzOiBmYWxzZSB9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICB0aXRsZTogdGFibGVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgbmV3VGFibGVTdG9yZSA9IHsgLi4udGFibGVTdG9yZSB9O1xyXG4gICAgaWYgKHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXMpIHtcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zPy5kYXRhIHx8IHF1ZXJ5UGFyYW1zPy5wYXJhbXMgfHwge307XHJcbiAgICAgIG5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZyA9IHtcclxuICAgICAgICBwYXJhbXM6IHsgLi4uZGF0YSwgLi4ubmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgZmlsdGVyQ29sdW1uLFxyXG4gICAgICBzdG9yZTogeyAuLi5uZXdUYWJsZVN0b3JlIH0sXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgZWxlbWVudEhlaWdodCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBwZXJtaXNzaW9uQnV0dG9ucyA9IFtdO1xyXG4gICAgaWYgKHBlcm1pc3Npb24uaGFzICYmIHBlcm1pc3Npb24ubWVudUNvZGUpIHtcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnMgPVxyXG4gICAgICAgIGdldEJ1dHRvblBlcm1pc3NvbnMocGVybWlzc2lvbi5tZW51Q29kZSkucGVybWlzc29ucyB8fCBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9iaiA9IGNvbnZlcnRDb2x1bW5zKGNvbHVtbnMsIHt9KTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBnZXROZXdDb2x1bW5zKGNvbHVtbnMsIHRoaXMucHJvcHMpO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXMgPSBvYmouc2VhcmNoRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtcyA9IG9iai5lZGl0b3JGb3JtcyB8fCBbXTtcclxuICAgIGNvbnN0IHRvb2xCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiLCBkZWZhdWx0UHJvcHMgPSB7fSkgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgaWNvbjogc2hvd0ljb24gPyBidXR0b25NYXBbY29kZV0uaWNvbiA6IG51bGwsXHJcbiAgICAgICAgdHlwZTogXCJsaW5rXCIsXHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICB9IGFzIGFueTtcclxuXHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IC4uLnByb3BzLCByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9XHJcbiAgICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaztcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChpdGVtID09IFwiZGVsZXRlXCIgfHwgaXRlbS5jb2RlID09IFwiZGVsZXRlXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZVwiKVxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICByZXR1cm5CdXR0b24oaXRlbS5jb2RlIHx8IGl0ZW0sIGl0ZW0ucmVjb3JkU2hvdywgaXRlbS5wcm9wcyB8fCB7fSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihcclxuICAgICAgICAgICAgICBpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLFxyXG4gICAgICAgICAgICAgIGl0ZW0ucmVjb3JkU2hvdyxcclxuICAgICAgICAgICAgICBpdGVtLnByb3BzIHx8IHt9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICBwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgdG9vbEJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCA/IDEwNCA6IDA7IC8v5aS06YOo5pCc57Si5qCP6auY5bqmXHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA1MCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDIwICogMjsgLy/kuIrkuIvpl7Tot51cclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPVxyXG4gICAgICBlbGVtZW50SGVpZ2h0IC0gdG9vbEhlaWdodCAtIHBhZGRpbmdIZWlnaHQgLSBoZWFkZXJIZWlnaHQ7XHJcbiAgICBsZXQgUGFnaW5hdGlvbkhlaWdodCA9IHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAzMiArIDE2IDogMDsgLy8zMiDkuLrliIbpobXlmajpq5jluqYsMTbkuLptYXJnaW7pl7Tot51cclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9XHJcbiAgICAgIHRhYmxlQ29udGVudEhlaWdodCAtXHJcbiAgICAgICh0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0ID4gMCA/IHRoaXMuc3RhdGUudGFibGVIZWFkZXJIZWlnaHQgOiA1NSkgLVxyXG4gICAgICBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgLy8gaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRyZWVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1yaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2Utbm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaGVhZGVyc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgb25SZXNldD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHt9KTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5wYWdlQ29udGVudFJlZn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnModG9vbEJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVXcmFwcGVyUmVmfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUNvbnRlbnRIZWlnaHQgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVIZWlnaHQgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybXM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgVXRpbHM9e3RoaXMucHJvcHMuVXRpbHN9XHJcbiAgICAgICAgICAgICAgcmVxdWVzdE9iamVjdD17e1xyXG4gICAgICAgICAgICAgICAgYWRkVXJsOiByZXF1ZXN0VXJscy5hZGRVcmwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JVcmw6IHJlcXVlc3RVcmxzLmVkaXRvclVybCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogcmVxdWVzdFBhcmFtcy5hZGRQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHJlcXVlc3RQYXJhbXMuZWRpdG9yUGFyYW1zLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZnVuY3M9e3RoaXMucHJvcHMuZnVuY3N9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1Qcm9wc31cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9D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
|