@agilemotion/oui-react-js 2.0.21 → 2.0.23

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.
@@ -34,6 +34,11 @@ var _CursorOverlay = _interopRequireDefault(require("../interaction/CursorOverla
34
34
  var _reactHtmlRenderer = _interopRequireDefault(require("react-html-renderer"));
35
35
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
36
36
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
37
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
38
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
39
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
40
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
41
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
37
42
  const Handlebars = require('handlebars');
38
43
 
39
44
  // Register the same convenience helpers HtmlPanel exposes so a
@@ -129,7 +134,7 @@ const useStyles = (0, _styles.makeStyles)(theme => ({
129
134
  }
130
135
  }));
131
136
  const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
132
- var _config$attributes, _props$config$attribu, _props$config$attribu2, _props$config$attribu3;
137
+ var _config$attributes, _props$config2, _props$config$attribu, _props$config$attribu2, _props$config$attribu3;
133
138
  const classes = useStyles();
134
139
  const [order, setOrder] = _react.default.useState('desc');
135
140
  const [config] = _react.default.useState(_Utils.default.parseConfig(props.config, props.viewId));
@@ -930,6 +935,7 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
930
935
  display: 'flex',
931
936
  alignItems: 'center',
932
937
  justifyContent: 'center',
938
+ height: '100%',
933
939
  minHeight: '120px',
934
940
  color: '#9e9e9e',
935
941
  fontSize: '0.875rem',
@@ -963,11 +969,17 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
963
969
  return visible && /*#__PURE__*/_react.default.createElement("div", {
964
970
  id: props.config.id,
965
971
  className: _Utils.default.getComponentAttribute(props.config, 'className', null),
966
- style: _Utils.default.isNull(props.hasBorder) || props.hasBorder === true ? _Utils.default.mergeStyles({
972
+ style: _Utils.default.isNull(props.hasBorder) || props.hasBorder === true ? _Utils.default.mergeStyles(_objectSpread({
967
973
  margin: '0',
968
974
  border: '1px solid #e2e2e2',
969
975
  borderRadius: '4px'
970
- }, props.config) : _Utils.default.mergeStyles({}, props.config)
976
+ }, props.config.gridType === 'TILE' ? {
977
+ display: 'flex',
978
+ flexDirection: 'column'
979
+ } : {}), props.config) : _Utils.default.mergeStyles(_objectSpread({}, props.config.gridType === 'TILE' ? {
980
+ display: 'flex',
981
+ flexDirection: 'column'
982
+ } : {}), props.config)
971
983
  }, !_Utils.default.isNull(props.config.notes) ? props.config.notes.map(note => {
972
984
  return /*#__PURE__*/_react.default.createElement("div", {
973
985
  key: noteKey++,
@@ -987,7 +999,12 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
987
999
  }, note.message)));
988
1000
  }) : null, rowsPerPageOptions.includes(props.config.pageSize) ? config.gridType === 'TILE' ? /*#__PURE__*/_react.default.createElement("div", {
989
1001
  style: {
990
- padding: '16px'
1002
+ padding: '16px',
1003
+ flex: '1 1 auto',
1004
+ minHeight: 0,
1005
+ boxSizing: 'border-box',
1006
+ display: 'flex',
1007
+ flexDirection: 'column'
991
1008
  }
992
1009
  }, /*#__PURE__*/_react.default.createElement("div", null, isFilterable() ? /*#__PURE__*/_react.default.createElement(_DataGridFilter.default, {
993
1010
  handle: filterHandle,
@@ -998,8 +1015,32 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
998
1015
  onFilterSubmit: search,
999
1016
  onRequestSort: handleRequestSort
1000
1017
  }) : null), /*#__PURE__*/_react.default.createElement("div", {
1001
- className: classes.root
1002
- }, /*#__PURE__*/_react.default.createElement(_Grid.default, {
1018
+ className: classes.root,
1019
+ style: {
1020
+ flex: '1 1 auto',
1021
+ minHeight: 0,
1022
+ display: !rows || rows.length === 0 ? 'flex' : null,
1023
+ alignItems: !rows || rows.length === 0 ? 'center' : null,
1024
+ justifyContent: !rows || rows.length === 0 ? 'center' : null
1025
+ }
1026
+ }, !rows || rows.length === 0 ?
1027
+ /*#__PURE__*/
1028
+ // Fill the (now full-height) grid and centre the empty
1029
+ // message vertically instead of pinning it to the top.
1030
+ _react.default.createElement("div", {
1031
+ style: {
1032
+ height: '100%',
1033
+ display: 'flex',
1034
+ alignItems: 'center',
1035
+ justifyContent: 'center',
1036
+ color: '#9e9e9e',
1037
+ fontSize: '0.875rem',
1038
+ fontStyle: 'italic'
1039
+ }
1040
+ }, ((_props$config2 = props.config) === null || _props$config2 === void 0 ? void 0 : _props$config2.emptyMessage) || 'No items to show') :
1041
+ /*#__PURE__*/
1042
+ // spacing={2} = 16px gap between tile cards (MUI 1 unit = 8px).
1043
+ _react.default.createElement(_Grid.default, {
1003
1044
  container: true,
1004
1045
  spacing: 2
1005
1046
  }, /*#__PURE__*/_react.default.createElement(_Grid.default, {
@@ -1162,4 +1203,4 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
1162
1203
  onRowsPerPageChange: handleChangeRowsPerPage
1163
1204
  })) : null) : null);
1164
1205
  });
1165
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJfcmVhY3RIdG1sUmVuZGVyZXIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJIYW5kbGViYXJzIiwicmVnaXN0ZXJIZWxwZXIiLCJlcSIsInYxIiwidjIiLCJuZSIsImx0IiwiZ3QiLCJsdGUiLCJndGUiLCJhbmQiLCJBcnJheSIsInByb3RvdHlwZSIsImV2ZXJ5IiwiYXJndW1lbnRzIiwiQm9vbGVhbiIsIm9yIiwic2xpY2UiLCJzb21lIiwiTVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCIsImV4cG9ydHMiLCJldmFsdWF0ZVRhYmxlQ2VsbFdpZHRoIiwibXVsdGlTZWxlY3QiLCJjb2x1bW4iLCJjb2x1bW5Db3VudCIsIndpZHRoIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNFeHByZXNzaW9uIiwiYXR0cmlidXRlcyIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHQiLCJjb25jYXQiLCJpZCIsIlV0aWxzIiwiaXNOdWxsIiwiZGVzYyIsImEiLCJiIiwib3JkZXJCeSIsInN0YWJsZVNvcnQiLCJhcnJheSIsImNtcCIsInN0YWJpbGl6ZWRUaGlzIiwibWFwIiwiZWwiLCJpbmRleCIsInNvcnQiLCJvcmRlciIsImdldFNvcnRpbmciLCJ1c2VTdHlsZXMiLCJtYWtlU3R5bGVzIiwidGhlbWUiLCJyb290IiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1IiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJjbGFzc2VzIiwic2V0T3JkZXIiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwic2V0T3JkZXJCeSIsInNlbGVjdGVkIiwic2V0U2VsZWN0ZWQiLCJ0b3RhbE51bWJlck9mUm93cyIsInNldFRvdGFsTnVtYmVyT2ZSb3dzIiwiY3JpdGVyaWEiLCJwYWdlIiwic2V0UGFnZSIsInJvd3MiLCJzZXRSb3dzIiwiZGVsZXRlZFJvd3MiLCJzZXREZWxldGVkUm93cyIsImVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJzY3JvbGxXaWR0aCIsInNldFNjcm9sbFdpZHRoIiwicm93c1BlclBhZ2VPcHRpb25zIiwicm93c1BlclBhZ2VMb2FkaW5nIiwic2V0Um93c1BlclBhZ2VMb2FkaW5nIiwicm93c1BlclBhZ2UiLCJzZXRSb3dzUGVyUGFnZSIsInBhZ2VTaXplIiwiaGlnaGxpZ2h0Um93U2VsZWN0aW9uIiwidXNlUmVmIiwiZGlzYWJsZVJvd1NlbGVjdGlvbiIsImNlbGxzIiwiaGVhZGluZ0hhbmRsZSIsImZpbHRlckhhbmRsZSIsImNvbHVtbkxheW91dEhhbmRsZXMiLCJlZGl0b3JIYW5kbGVzIiwicm93RXJyb3JNYXAiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsIndyYXAiLCJzZXRXcmFwIiwicm93Q291bnQiLCJyb3dzUmVmIiwibm90ZUtleSIsImNvbHVtbldpZHRocyIsImRyYWdTcGVjIiwicm93R3JhYlNwZWMiLCJyb3ciLCJyb3dzR3JhYmJhYmxlIiwiZW5hYmxlZCIsImFwaSIsInBhcmFtZXRlcnMiLCJpc0ZpbHRlcmFibGUiLCJnZXRQYXJhbWV0ZXJzIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRSb3dzIiwibGVuZ3RoIiwiaiIsInB1c2giLCJjb2x1bW5EYXRhQmluZGluZ3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtbnMiLCJkYXRhQmluZGluZyIsImdldENoaWxkcmVuIiwiY2hpbGRyZW4iLCJjaGlsZCIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb2x1bW5MYXlvdXRIYW5kbGUiLCJtb3JlQ2hpbGRyZW4iLCJlZGl0b3JIYW5kbGUiLCJsb2FkRGF0YSIsImFjdGlvbkNvbmZpZyIsImV2ZW50Iiwic2VhcmNoIiwiZGVsZXRlU2VsZWN0ZWRSb3dzIiwibmV3Um93cyIsImZpbHRlciIsImlzU2VsZWN0ZWQiLCJnZXRTZWxlY3RlZFJvd3MiLCJzcGxpY2UiLCJuZXdSb3ciLCJvblNlbGVjdGlvbkNoYW5nZSIsInVwZGF0ZVNjcm9sbEJhclBhZGRpbmciLCJjdXJyZW50IiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImNsZWFyIiwiRXZlbnQiLCJoYW5kbGUiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJTRUxFQ1RJT05fQ0hBTkdFIiwiZGVsZXRlUm93cyIsInJvd0lkcyIsImlkU2V0IiwiU2V0IiwicmVtYWluaW5nIiwic2VsZWN0IiwiYWRkUm93cyIsIm9ic2VydmVSb3ciLCJuZXdTZWxlY3Rpb24iLCJudW1iZXJPZlBhZ2VzIiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJmb3JtQXBpIiwiaGFuZGxlUm93R3JhYlRvZ2dsZSIsImlzUm93R3JhYmJhYmxlIiwiR3JhYkNvbnRleHQiLCJpc0FjdGl2ZSIsImdyYWIiLCJyb3dJbmRleCIsImNvbXBvbmVudElkIiwiQ3Vyc29yT3ZlcmxheSIsInNob3ciLCJST1dfR1JBQl9TVEFSVCIsInRib2R5IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm9mZnNldFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ3aW5kb3ciLCJvbnJlc2l6ZSIsImhhbmRsZVJlcXVlc3RTb3J0IiwiaXNEZXNjIiwiaGFuZGxlU2VsZWN0QWxsQ2xpY2siLCJ0YXJnZXQiLCJjaGVja2VkIiwibmV3U2VsZWN0ZWRzIiwibmFtZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiZG9IYW5kbGVDbGljayIsImV4aXN0aW5nSW5kZXgiLCJpbmRleE9mIiwibmV3U2VsZWN0ZWQiLCJmaXJlU2VsZWN0aW9uRXZlbnQiLCJncmlkVHlwZSIsImlzUm93RHJhZ0Rpc2FibGVkIiwiZGlzYWJsZWRXaGVuIiwiZXhlY3V0ZVNjcmlwdE9iamVjdCIsInNldEN1cnNvciIsImN1cnNvciIsImJvZHkiLCJzdHlsZSIsImhhbmRsZVJvd01vdXNlRW50ZXIiLCJoYW5kbGVSb3dNb3VzZUxlYXZlIiwiaGFuZGxlQ2xpY2siLCJjbG9zZXN0Iiwic3RvcFByb3BhZ2F0aW9uIiwib25DZWxsU2VsZWN0aW9uQ2hhbmdlIiwiaGFuZGxlQ2VsbENsaWNrIiwiZmllbGRUeXBlIiwiaGFuZGxlQ2hhbmdlUGFnZSIsIm5ld1BhZ2UiLCJjdXJyZW50UGFnZSIsImhhbmRsZUNoYW5nZVJvd3NQZXJQYWdlIiwidmFsdWUiLCJwcm9jZXNzRGF0YSIsImRhdGEiLCJjb25mIiwidG90YWxOdW1iZXJPZlJlY29yZHMiLCJyZWNvcmRzIiwidXBkYXRlUm93Q2xhc3NlcyIsInRhYmxlUm93cyIsInVuZGVmaW5lZCIsInNlcnZpY2UiLCJkYXRhU2VydmljZSIsInNlcnZpY2VUeXBlIiwidHlwZSIsIm1ldGhvZCIsImludm9rZVJwYyIsImludm9rZVJlc3QiLCJjb21wb25lbnQiLCJ0aGVuIiwicmVzdWx0IiwiY2F0Y2giLCJjb25zb2xlIiwiZXJyb3IiLCJlcnJvclR5cGUiLCJwdWJsaXNoRXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJyZXNvbHZlUGFyYW1ldGVyQ29uZmlnVmFsdWUiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwic3Vic2NyaXB0aW9ucyIsImFkZFN1YnNjcmlwdGlvbnMiLCJhZGRTeXN0ZW1TdWJzY3JpcHRpb25zIiwiaXNFZGl0YWJsZSIsInZpc2libGVDb2x1bW5Db3VudCIsImhpZGRlbiIsImdldENvbXBvbmVudEF0dHJpYnV0ZSIsInNlbGVjdGlvbk1vZGUiLCJlZGl0b3IiLCJkZWZhdWx0RWRpdG9yIiwiZGF0YVF1ZXJ5TmFtZSIsImhhc0xvYWRFdmVudCIsImxvYWRTdWJzY3JpcHRpb25zIiwic3Vic2NyaXB0aW9uIiwiZXZlbnRUeXBlIiwibG9hZFN1YnNjcmlwdGlvbiIsImFjdGlvbnMiLCJhY3Rpb24iLCJhY3Rpb25UeXBlIiwiYXV0b0xvYWREYXRhIiwiQ09NUE9ORU5UX0xPQUQiLCJhZGRSb3dGb2N1c0xpc3RlbmVyIiwiZm9jdXNvdXQiLCJzZWxlY3RlZEVsZW1lbnQiLCJyb3dBdHRyaWJ1dGVzIiwiY2xhc3NFdmFsdWF0b3IiLCJjbGFzc05hbWUiLCJ1cGRhdGVSb3dSZWFkT25seVN0YXR1cyIsInJlYWRPbmx5RXZhbHVhdG9yIiwicmVhZE9ubHkiLCJ1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyIsImNvbHVtblJlYWRPbmx5IiwicHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMiLCJEQVRBX0FSUklWRUQiLCJvblJvd3NMb2FkZWQiLCJhdXRvU2VsZWN0IiwidGlsZUF1dG9TZWxlY3QiLCJmaXJzdFJvd0lkIiwiZmlyc3RSb3dMaXN0Iiwic2VsZWN0aW9uRXZlbnQiLCJST1dfREVMRVRFRCIsInJvd1ZhbHVlcyIsImVkaXRvckNoYW5nZUhhbmRsZXIiLCJyb3dJZCIsImZpZWxkIiwidXBkYXRlTmVzdGVkUHJvcGVydHkiLCJjcmVhdGVDZWxsIiwiY29sdW1uTmFtZSIsImNlbGxIYW5kbGUiLCJyb3dDZWxscyIsImNlbGxzRW50cnkiLCJyZWZyZXNoQ2VsbCIsImNlbGwiLCJyZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbiIsInJvd0Vycm9ycyIsInJvd0Vycm9ySGFuZGxlciIsImtleXMiLCJmaW5kIiwicm93RXJyb3IiLCJpc1Jvd0Vycm9yc0VtcHR5Iiwia2V5IiwidmFsdWVSb3dzIiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwidGlsZVRlbXBsYXRlQ2FjaGVSZWYiLCJmbiIsImdldFRpbGVMYWJlbCIsInRpbGVEaXNwbGF5VGVtcGxhdGUiLCJjb21waWxlIiwiaHRtbCIsImNyZWF0ZUVsZW1lbnQiLCJjb3VudGVyIiwicmVhZE5lc3RlZFByb3BlcnR5IiwicmVuZGVyVGlsZSIsImlzSXRlbVNlbGVjdGVkIiwiaXRlbSIsInhzIiwibWVyZ2VPYmplY3RzIiwidGlsZVN0eWxlIiwibWluV2lkdGgiLCJ2YXJpYW50IiwiY29sb3IiLCJvbkNsaWNrIiwicmVuZGVyVGlsZXMiLCJfcHJvcHMkY29uZmlnIiwibWVzc2FnZSIsImVtcHR5TWVzc2FnZSIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsIm1pbkhlaWdodCIsImZvbnRTaXplIiwiZm9udFN0eWxlIiwiRnJhZ21lbnQiLCJsYWJlbElkIiwiY3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlIiwiY3JlYXRlQ2VsbEVkaXRvckhhbmRsZSIsImhhc0JvcmRlciIsIm1lcmdlU3R5bGVzIiwiYm9yZGVyUmFkaXVzIiwibm90ZXMiLCJub3RlIiwibWFyZ2luQm90dG9tIiwibWVzc2FnZVR5cGUiLCJpbmNsdWRlcyIsImZpbHRlcldyYXBwZXJDbGFzcyIsIm9uRmlsdGVyU3VibWl0Iiwib25SZXF1ZXN0U29ydCIsImNvbnRhaW5lciIsInNwYWNpbmciLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImxhYmVsIiwiVGFibGUiLCJjZWxsU3BhY2luZyIsIm51bVNlbGVjdGVkIiwib25TZWxlY3RBbGxDbGljayIsInJlc2l6ZUhhbmRsZXIiLCJUYm9keSIsIm1heEhlaWdodCIsImJvZHlNYXhIZWlnaHQiLCJkZWZhdWx0Um93U3R5bGUiLCJmbGV4V3JhcCIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Eb3VibGVDbGljayIsIm9uUm93RG91YmxlQ2xpY2siLCJyb2xlIiwidGFiSW5kZXgiLCJUZCIsImlucHV0UHJvcHMiLCJfcm93JGNvbHVtblJlYWRPbmx5IiwiX2NvbHVtbiRlZGl0b3IiLCJsYXlvdXQiLCJhbGlnbiIsImRpc2FibGVkIiwiZm9ybSIsIkxheW91dCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbCIsInBhcmVudCIsIm9uUm93RXJyb3IiLCJyZWZDYWxsYmFjayIsInZhbGlkYXRvciIsImNvbHVtbkNvbmZpZyIsImNvbnRlbnRUeXBlIiwiY2VsbEZvcm1hdHRlciIsInBhZ2luYXRpb24iLCJwYWduYXRpb24iLCJjb3VudCIsImJhY2tJY29uQnV0dG9uUHJvcHMiLCJuZXh0SWNvbkJ1dHRvblByb3BzIiwib25QYWdlQ2hhbmdlIiwib25Sb3dzUGVyUGFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9EYXRhR3JpZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSAnQG11aS9zdHlsZXMnO1xuaW1wb3J0IHtUYWJsZSwgVGJvZHksIFRkLCBUcn0gZnJvbSAncmVhY3Qtc3VwZXItcmVzcG9uc2l2ZS10YWJsZSc7XG5pbXBvcnQgJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUvZGlzdC9TdXBlclJlc3BvbnNpdmVUYWJsZVN0eWxlLmNzcyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG11aS9tYXRlcmlhbC9DaGVja2JveCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0ICcuL0RhdGFHcmlkLmNzcyc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IERhdGFHcmlkRmlsdGVyIGZyb20gJy4vRGF0YUdyaWRGaWx0ZXInO1xuaW1wb3J0IERhdGFHcmlkSGVhZGluZyBmcm9tICcuL0RhdGFHcmlkSGVhZGluZyc7XG5pbXBvcnQgVGFibGVDZWxsQ29udGVudCBmcm9tICcuL1RhYmxlQ2VsbENvbnRlbnQnO1xuaW1wb3J0IFRhYmxlUGFnaW5hdGlvbiBmcm9tICdAbXVpL21hdGVyaWFsL1RhYmxlUGFnaW5hdGlvbic7XG5pbXBvcnQge2dyZXkzMDB9IGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnMnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgR3JpZCBmcm9tICdAbXVpL21hdGVyaWFsL0dyaWQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQWxlcnQgZnJvbSAncmVhY3QtYm9vdHN0cmFwL0FsZXJ0JztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ0BtdWkvbWF0ZXJpYWwvU3dpdGNoJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtdWkvbWF0ZXJpYWwvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgR3JhYkNvbnRleHQgZnJvbSAnLi4vaW50ZXJhY3Rpb24vR3JhYkNvbnRleHQnO1xuaW1wb3J0IEN1cnNvck92ZXJsYXkgZnJvbSBcIi4uL2ludGVyYWN0aW9uL0N1cnNvck92ZXJsYXlcIjtcbmltcG9ydCBIVE1MUmVuZGVyZXIgZnJvbSAncmVhY3QtaHRtbC1yZW5kZXJlcic7XG5cbmNvbnN0IEhhbmRsZWJhcnMgPSByZXF1aXJlKCdoYW5kbGViYXJzJyk7XG5cbi8vIFJlZ2lzdGVyIHRoZSBzYW1lIGNvbnZlbmllbmNlIGhlbHBlcnMgSHRtbFBhbmVsIGV4cG9zZXMgc28gYVxuLy8gdGlsZURpc3BsYXlUZW1wbGF0ZSBoYXMgYWNjZXNzIHRvIHt7I2lmIChlcSAuLi4pfX0gLyB7eyNpZiAoZ3QgLi4uKX19IGV0Yy5cbi8vIElkZW1wb3RlbnQgb24gbXVsdGlwbGUgaW1wb3J0cyDigJQgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlciBqdXN0IG92ZXJ3cml0ZXMuXG5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKHtcbiAgICBlcTogKHYxLCB2MikgPT4gdjEgPT09IHYyLFxuICAgIG5lOiAodjEsIHYyKSA9PiB2MSAhPT0gdjIsXG4gICAgbHQ6ICh2MSwgdjIpID0+IHYxIDwgdjIsXG4gICAgZ3Q6ICh2MSwgdjIpID0+IHYxID4gdjIsXG4gICAgbHRlOiAodjEsIHYyKSA9PiB2MSA8PSB2MixcbiAgICBndGU6ICh2MSwgdjIpID0+IHYxID49IHYyLFxuICAgIGFuZCgpIHsgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGFyZ3VtZW50cywgQm9vbGVhbik7IH0sXG4gICAgb3IoKSB7IHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKS5zb21lKEJvb2xlYW4pOyB9XG59KTtcblxuZXhwb3J0IGNvbnN0IE1VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggPSA2NDtcblxuZnVuY3Rpb24gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChtdWx0aVNlbGVjdCwgY29sdW1uLCBjb2x1bW5Db3VudCkge1xuXG4gICAgbGV0IHdpZHRoID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSkgP1xuICAgICAgICBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChgcG9wdXBUaXRsZV8ke2NvbHVtbi5pZH1gLGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddLCBjb2x1bW4pIDogY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ107XG5cbiAgICByZXR1cm4gbXVsdGlTZWxlY3QgPT09IHRydWUgP1xuICAgICAgICAnY2FsYygnICsgKCFVdGlscy5pc051bGwod2lkdGgpID8gd2lkdGggOlxuICAgICAgICAgICAgKDEwMCAvIGNvbHVtbkNvdW50KSArICclJykgKyAnIC0gJyArIChNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIC8gY29sdW1uQ291bnQpICsgJ3B4KSdcbiAgICAgICAgOlxuICAgICAgICAodHlwZW9mIHdpZHRoICE9PSAndW5kZWZpbmVkJyA/IHdpZHRoIDogKDEwMCAvIGNvbHVtbkNvdW50KSArICclJyk7XG59XG5cbmZ1bmN0aW9uIGRlc2MoYSwgYiwgb3JkZXJCeSkge1xuICAgIGlmIChiW29yZGVyQnldIDwgYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiW29yZGVyQnldID4gYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIHN0YWJsZVNvcnQoYXJyYXksIGNtcCkge1xuICAgIGNvbnN0IHN0YWJpbGl6ZWRUaGlzID0gYXJyYXkubWFwKChlbCwgaW5kZXgpID0+IFtlbCwgaW5kZXhdKTtcbiAgICBzdGFiaWxpemVkVGhpcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gY21wKGFbMF0sIGJbMF0pO1xuICAgICAgICBpZiAob3JkZXIgIT09IDApIHJldHVybiBvcmRlcjtcbiAgICAgICAgcmV0dXJuIGFbMV0gLSBiWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGFiaWxpemVkVGhpcy5tYXAoZWwgPT4gZWxbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0aW5nKG9yZGVyLCBvcmRlckJ5KSB7XG4gICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyAoYSwgYikgPT4gZGVzYyhhLCBiLCBvcmRlckJ5KSA6IChhLCBiKSA9PiAtZGVzYyhhLCBiLCBvcmRlckJ5KTtcbn1cblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJ1xuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICB9LFxuICAgIHNjcm9sbFBhZGRpbmc6IHtcbiAgICAgICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgbm9TY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgICB3aWR0aDogJzFweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgdGFibGVCb2R5OiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgfSxcbiAgICB0YWJsZVNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JleTMwMCxcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVSb3c6IHtcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVXcmFwcGVyOiB7XG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9LFxuICAgIHZpc3VhbGx5SGlkZGVuOiB7XG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDIwLFxuICAgICAgICB3aWR0aDogMSxcbiAgICB9XG59KSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhR3JpZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gUmVhY3QudXNlU3RhdGUoJ2Rlc2MnKTtcbiAgICBjb25zdCBbY29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKSk7XG4gICAgY29uc3QgW29yZGVyQnksIHNldE9yZGVyQnldID0gUmVhY3QudXNlU3RhdGUoJ2lkJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RvdGFsTnVtYmVyT2ZSb3dzLCBzZXRUb3RhbE51bWJlck9mUm93c10gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3JpdGVyaWFdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGVsZXRlZFJvd3MsIHNldERlbGV0ZWRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZWRpdGFibGUsIHNldEVkaXRhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsV2lkdGgsIHNldFNjcm9sbFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZU9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoWzE1LCAzMCwgNDUsIDYwLCA3NSwgMTUwLCAzMDBdKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VMb2FkaW5nLCBzZXRSb3dzUGVyUGFnZUxvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlLCBzZXRSb3dzUGVyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGFnZVNpemUpO1xuICAgIGNvbnN0IGhpZ2hsaWdodFJvd1NlbGVjdGlvbiA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24pXG4gICAgICAgID8gcHJvcHMuY29uZmlnLmhpZ2hsaWdodFJvd1NlbGVjdGlvbiA6ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pID8gIXByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uIDogdHJ1ZSk7XG4gICAgY29uc3QgW2NlbGxzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGVhZGluZ0hhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlckhhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2NvbHVtbkxheW91dEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtlZGl0b3JIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcm93RXJyb3JNYXBdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt3cmFwLCBzZXRXcmFwXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCByb3dDb3VudCA9IFJlYWN0LnVzZVJlZigtMSk7XG4gICAgY29uc3Qgcm93c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgbGV0IG5vdGVLZXkgPSAwO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgICBjb25zdCBkcmFnU3BlYyA9IGNvbmZpZy5hdHRyaWJ1dGVzPy5kcmFnU3BlYyB8fCB7fTtcbiAgICBjb25zdCByb3dHcmFiU3BlYyA9IGRyYWdTcGVjLnJvdyB8fCB7fTtcbiAgICBjb25zdCByb3dzR3JhYmJhYmxlID0gcm93R3JhYlNwZWMuZW5hYmxlZCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBjcml0ZXJpYSgpIHtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYXJhbWV0ZXJzID0gaXNGaWx0ZXJhYmxlKCkgPyBmaWx0ZXJIYW5kbGUuYXBpLmdldFBhcmFtZXRlcnMoKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNyaXRlcmlhLnBhZ2VTaXplID0gcm93c1BlclBhZ2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFtpXSA9PT0gcm93c1tqXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvd3Nbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29sdW1uRGF0YUJpbmRpbmdzKCkge1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKCFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaGVhZGluZ0hhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWx0ZXJIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZpbHRlckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbHVtbkxheW91dEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTGF5b3V0SGFuZGxlID0gY29sdW1uTGF5b3V0SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29sdW1uTGF5b3V0SGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGNvbHVtbkxheW91dEhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZWRpdG9ySGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3JIYW5kbGUgPSBlZGl0b3JIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlZGl0b3JIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpKSAmJiAhVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUNoaWxkcmVuID0gZWRpdG9ySGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9yZUNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbW9yZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goYWN0aW9uQ29uZmlnLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRSb3dzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIGxldCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXdSb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBTeW5jIHRoZSByZWYgdGhhdCBiYWNrcyB0aGUgYGdldCByb3dzYCBnZXR0ZXIg4oCUIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgIC8vIGFwaS5yb3dzIHJldHVybnMgd2hhdGV2ZXIgcm93c1JlZiB3YXMgYXQgbGFzdCBzeW5jIChvZnRlblxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IGFmdGVyIGEgcHJldmlvdXMgY2xlYXIoKSksIGV2ZW4gdGhvdWdoIHRoZSBsb2NhbFxuICAgICAgICAgICAgICAgIC8vIGByb3dzYCBhcnJheSBoYXMgYmVlbiBtdXRhdGVkLiBjbGVhcigpIGRvZXMgdGhpczsgZGF0YSBsb2FkXG4gICAgICAgICAgICAgICAgLy8gZG9lcyB0aGlzOyBhZGRSb3dzL2RlbGV0ZVNlbGVjdGVkUm93cyBkaWRuJ3Qg4oCUIGxlYWRpbmcgdG9cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zlckxpc3QncyB0cmFuc2Zlci1hbGwtYmFjayBmYWlsaW5nIGJlY2F1c2UgYXBpLnJvd3NcbiAgICAgICAgICAgICAgICAvLyBzaG93ZWQgZW1wdHkgcmlnaHQgYWZ0ZXIgYSB0cmFuc2Zlci1hbGwtb3V0LlxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU3VyZ2ljYWwgZGVsZXRlIGJ5IHJvdyBpZHMg4oCUIGRvZXMgTk9UIHRvdWNoIHRoZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAgICAgICAgICAvLyBDb3VudGVycGFydCB0byBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIGNhc2VzIChUcmFuc2Zlckxpc3QgZG91YmxlLVxuICAgICAgICAgICAgLy8gY2xpY2spIHdoZXJlIHRoZSBjYWxsZXIgd2FudHMgdG8gcmVtb3ZlIHNwZWNpZmljIHJvd3Mgd2l0aG91dFxuICAgICAgICAgICAgLy8gaGlqYWNraW5nIHRoZSB1c2VyJ3MgY3VycmVudCBncmlkIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIGRlbGV0ZVJvd3M6IChyb3dJZHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvd0lkcyB8fCByb3dJZHMubGVuZ3RoID09PSAwKSByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQocm93SWRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSByb3dzLmZpbHRlcigocm93KSA9PiAhaWRTZXQuaGFzKHJvdy5pZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogKHJvd3MpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQocm93cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93czogKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChvYnNlcnZlUm93KG5ld1JvdykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKG5ld1Jvdy5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1Jvd3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU2VlIGRlbGV0ZVNlbGVjdGVkUm93cyBmb3IgdGhlIHJhdGlvbmFsZSDigJQga2VlcCByb3dzUmVmIGluXG4gICAgICAgICAgICAgICAgLy8gc3luYyB3aXRoIHRoZSBtdXRhdGVkIGxvY2FsIHJvd3MgYXJyYXkgc28gdGhlIGBnZXQgcm93c2BcbiAgICAgICAgICAgICAgICAvLyBnZXR0ZXIgcmV0dXJucyBjdXJyZW50IGRhdGEgYWZ0ZXIgYWRkUm93cy5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgbnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxOdW1iZXJPZlJvd3MgLyByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckhhbmRsZSAmJiBmaWx0ZXJIYW5kbGUuYXBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBmb3JtQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQgKyBcIl9lZGl0X2Zvcm1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkgcmV0dXJuO1xuICAgICAgICBpZiAoR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAgIEdyYWJDb250ZXh0LmdyYWIocHJvcHMuaGFuZGxlLCB7XG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICByb3dJbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb21wb25lbnRJZDogcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgQ3Vyc29yT3ZlcmxheS5zaG93KCk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChcbiAgICAgICAgICAgIEV2ZW50VHlwZS5ST1dfR1JBQl9TVEFSVCxcbiAgICAgICAgICAgIG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKSB7XG4gICAgICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVGFibGVCb2R5Jyk7XG4gICAgICAgIGlmICh0Ym9keSAhPT0gbnVsbCAmJiB0eXBlb2YgdGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxXaWR0aCh0Ym9keS5vZmZzZXRXaWR0aCAtIHRib2R5LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uIG9ucmVzaXplKCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlcXVlc3RTb3J0ID0gKGV2ZW50LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBpc0Rlc2MgPSBvcmRlckJ5ID09PSBwcm9wZXJ0eSAmJiBvcmRlciA9PT0gJ2Rlc2MnO1xuICAgICAgICBzZXRPcmRlcihpc0Rlc2MgPyAnYXNjJyA6ICdkZXNjJyk7XG4gICAgICAgIHNldE9yZGVyQnkocHJvcGVydHkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkcyA9IHJvd3MubWFwKG4gPT4gbi5uYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1NlbGVjdGVkcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gc2VsZWN0ZWRbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gc2VsZWN0ZWQuaW5kZXhPZihpZCk7XG4gICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIGlmIChwcm9wcy5tdWx0aVNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBiZWhhdmlvdXI6IGNsaWNraW5nIGFuIGFscmVhZHktc2VsZWN0ZWQgcm93IHJlbW92ZXNcbiAgICAgICAgICAgICAgICAvLyBpdDsgb3RoZXJ3aXNlIGFkZCBpdCB0byB0aGUgc2VsZWN0aW9uLiBXaXRob3V0IHRoaXMsIHRoZVxuICAgICAgICAgICAgICAgIC8vIG11bHRpLXNlbGVjdCBwaWNrZXIgKGUuZy4gTXVsdGlMb29rdXBGaWVsZCkgbGVhdmVzIHVzZXJzXG4gICAgICAgICAgICAgICAgLy8gdW5hYmxlIHRvIGJhY2sgb3V0IGEgcm93IHRoZXkgdGlja2VkIGJ5IGFjY2lkZW50LlxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQuc2xpY2UoMCwgZXhpc3RpbmdJbmRleCksIC4uLnNlbGVjdGVkLnNsaWNlKGV4aXN0aW5nSW5kZXggKyAxKV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQsIGlkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpbmdsZS1zZWxlY3Q6IG5vLW9wIG9uIHJlLWNsaWNrIChwcmVzZXJ2ZWQgZnJvbSBwcmlvclxuICAgICAgICAgICAgICAgIC8vIGJlaGF2aW91ciDigJQgc2luZ2xlLXJvdyBncmlkcyByZWx5IG9uIHRoaXMgdG8gYXZvaWRcbiAgICAgICAgICAgICAgICAvLyBhY2NpZGVudGFsIGRlc2VsZWN0IGR1cmluZyBjZWxsIGVkaXRzKS5cbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbaWRdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKG5ld1NlbGVjdGVkKTtcblxuICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpcmVTZWxlY3Rpb25FdmVudCgpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZykgJiYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZSkgfHwgY29uZmlnLmdyaWRUeXBlID09PSAnVElMRScpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jvd0dyYWJiYWJsZShyb3cpIHtcbiAgICAgICAgcmV0dXJuIHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dEcmFnRGlzYWJsZWQocm93KSB7XG4gICAgICAgIGlmICghZHJhZ1NwZWMuZGlzYWJsZWRXaGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoXG4gICAgICAgICAgICAnUk9XLScgKyByb3cuaWQgKyAnLWRyYWctZGlzYWJsZWQnLFxuICAgICAgICAgICAgZHJhZ1NwZWMuZGlzYWJsZWRXaGVuLFxuICAgICAgICAgICAgcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAge3Jvdzogcm93fSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0Q3Vyc29yKGN1cnNvcikge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvciB8fCAnZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VFbnRlcihyb3cpIHtcbiAgICAgICAgaWYgKCFpc1Jvd0dyYWJiYWJsZShyb3cpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHNob3cgZ3JhYiBjdXJzb3IgaWYgbm90IGFscmVhZHkgaG9sZGluZyBzb21ldGhpbmdcbiAgICAgICAgaWYgKCFHcmFiQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBzZXRDdXJzb3Iocm93R3JhYlNwZWMuY3Vyc29yIHx8ICdncmFiJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVSb3dNb3VzZUxlYXZlKCkge1xuICAgICAgICBzZXRDdXJzb3IoJ2RlZmF1bHQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCwgcm93LCBpbmRleCkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5lZGl0Q2VsbCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdykpIHtcbiAgICAgICAgICAgIGhhbmRsZVJvd0dyYWJUb2dnbGUocm93LCBpbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCByb3cuaWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNlbGxDbGljayhldmVudCwgaWQsIGNvbHVtbikge1xuICAgICAgICBpZiAoY29sdW1uLmZpZWxkVHlwZSAhPT0gJ2RvY3VtZW50Jykge1xuICAgICAgICAgICAgLy8gVE9ETyA6IEV2YWx1YXRlIGlmIHRoaXMgY2FsbCBpcyBuZWNlc3NhcnlcbiAgICAgICAgICAgIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgIHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZShpZCwgY29sdW1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVBhZ2UoZXZlbnQsIG5ld1BhZ2UpIHtcbiAgICAgICAgY3JpdGVyaWEuY3VycmVudFBhZ2UgPSBuZXdQYWdlICsgMTtcbiAgICAgICAgc2V0UGFnZShuZXdQYWdlKTtcbiAgICAgICAgc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UoZXZlbnQpIHtcbiAgICAgICAgc2V0Um93c1BlclBhZ2Uocm93c1BlclBhZ2UgPT4gZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgc2V0UGFnZSgwKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlUm93ID0gKHJvdykgPT4ge1xuICAgICAgICAvKmxldCBvYnNlcnZhYmxlUm93ID0gb2JzZXJ2YWJsZShyb3cpO1xuICAgICAgICBvYnNlcnZlKFxuICAgICAgICAgICAgb2JzZXJ2YWJsZVJvdyxcbiAgICAgICAgICAgIGNoYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IGNoYW5nZS5vbGRWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaENlbGwocm93LmlkLCBjaGFuZ2UubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlUm93OyovXG5cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0RhdGEoZGF0YSwgY29uZikge1xuICAgICAgICBzZXRUb3RhbE51bWJlck9mUm93cyhkYXRhLnRvdGFsTnVtYmVyT2ZSZWNvcmRzID8gZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA6IGRhdGEucmVjb3Jkcy5sZW5ndGgpO1xuXG4gICAgICAgIHJvd3NSZWYuY3VycmVudCA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgdXBkYXRlUm93Q2xhc3NlcyhkYXRhLnJlY29yZHMpO1xuICAgICAgICBsZXQgdGFibGVSb3dzID0gW107XG4gICAgICAgIGxldCByZWNvcmRzID0gZGF0YS5yZWNvcmRzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlUm93cy5wdXNoKG9ic2VydmVSb3cocmVjb3Jkc1tpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Um93cyh0YWJsZVJvd3MpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IChhY3Rpb25Db25maWcgPSBudWxsLCBldmVudCkgPT4ge1xuICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgY29uZiA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZXJ2aWNlID0gIVV0aWxzLmlzTnVsbChjb25mLmRhdGFTZXJ2aWNlKSA/IGNvbmYuZGF0YVNlcnZpY2UgOiAhVXRpbHMuaXNOdWxsKGFjdGlvbkNvbmZpZykgPyBhY3Rpb25Db25maWcuZGF0YVNlcnZpY2UgOiBudWxsO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzZXJ2aWNlKSkge1xuICAgICAgICAgICAgbGV0IHNlcnZpY2VUeXBlID0gc2VydmljZS50eXBlO1xuICAgICAgICAgICAgaWYgKCFzZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlID0gJ3JwYyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgfHwgc2VydmljZVR5cGUgPT09ICdyZXN0Jykge1xuICAgICAgICAgICAgICAgIGxldCBtZXRob2QgPSBzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgPyBpbnZva2VScGMgOiBpbnZva2VSZXN0O1xuICAgICAgICAgICAgICAgIG1ldGhvZCh7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogcHJvcHMuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ6IHByb3BzLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGEocmVzdWx0LCBjb25mKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBpZihlLmVycm9yVHlwZSAhPT0gJ0lOVkFMSURfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucHVibGlzaEVycm9yTWVzc2FnZShlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHNlcnZpY2UgdHlwZSA6ICcgKyBzZXJ2aWNlVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uQ29uZmlnICYmIGFjdGlvbkNvbmZpZy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZShhY3Rpb25Db25maWcudmFsdWUpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgaWYgKCFyb3dzUGVyUGFnZUxvYWRpbmcpIHtcbiAgICAgICAgICAgIHNldFJvd3NQZXJQYWdlTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzUGVyUGFnZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBldmVudEhhbmRsaW5nQ29uZmlnID0gVXRpbHMuaXNOdWxsKGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnKSA/IHt9IDogY29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWc7XG4gICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIGNvbmZpZyk7XG4gICAgICAgIGxldCBpc0VkaXRhYmxlID0gZmFsc2U7XG4gICAgICAgIGxldCB2aXNpYmxlQ29sdW1uQ291bnQgPSAwO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICBsZXQgaGlkZGVuID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKGNvbHVtbiwgJ2hpZGRlbicsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihoaWRkZW4sIHByb3BzLmNvbmZpZy5pZCkpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlQ29sdW1uQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSBjb25maWcuY29sdW1uc1tpXTtcblxuICAgICAgICAgICAgaWYgKCFpc0VkaXRhYmxlICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaXNFZGl0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0RWRpdGFibGUodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCFjb2x1bW4uYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID0gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChwcm9wcy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnLCBjb2x1bW4sIHZpc2libGVDb2x1bW5Db3VudCk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb2x1bW4uYXR0cmlidXRlcykgJiYgY29sdW1uLmF0dHJpYnV0ZXNbJ2VkaXRhYmxlJ10gPT09IHRydWUgJiYgVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRFZGl0b3IgPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmZpZWxkVHlwZSA9ICdURVhUX0ZJRUxEJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmlkID0gY29sdW1uLmlkICsgJ0VkaXRvcic7XG5cbiAgICAgICAgICAgICAgICBjb2x1bW4uZWRpdG9yID0gZGVmYXVsdEVkaXRvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgY3JpdGVyaWEuZGF0YVF1ZXJ5TmFtZSA9IGNvbmZpZy5kYXRhUXVlcnlOYW1lO1xuXG4gICAgICAgIGxldCBoYXNMb2FkRXZlbnQ7XG4gICAgICAgIGxldCBsb2FkU3Vic2NyaXB0aW9ucyA9IGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucy5maWx0ZXIoKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uLmV2ZW50VHlwZSA9PT0gJ0NPTVBPTkVOVF9MT0FEJyk7XG4gICAgICAgIGZvciAoY29uc3QgbG9hZFN1YnNjcmlwdGlvbiBvZiBsb2FkU3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgaWYgKGxvYWRTdWJzY3JpcHRpb24uYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmFjdGlvblR5cGUgPT09ICdsb2FkRGF0YScpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNMb2FkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGF1dG9Mb2FkRGF0YSA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdhdXRvTG9hZERhdGEnLCBudWxsKTtcbiAgICAgICAgaWYgKCFoYXNMb2FkRXZlbnQgJiYgKGF1dG9Mb2FkRGF0YSA9PT0gbnVsbCB8fCBhdXRvTG9hZERhdGEgPT09IHRydWUpKSB7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbnVsbCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBldmVudCk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgIGxldCBjb25mID0gY29uZmlnO1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb2Nlc3NEYXRhKHByb3BzLmRhdGEsIGNvbmYpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLmRhdGFdKTtcblxuICAgIGZ1bmN0aW9uIGFkZFJvd0ZvY3VzTGlzdGVuZXIocm93KSB7XG4gICAgICAgICQoJyNST1ctJyArIHJvdy5pZClcbiAgICAgICAgICAgIC5mb2N1c291dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVsZW1lbnQgb2Ygc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCAhPT0gcm93LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZC5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd0NsYXNzZXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jbGFzc05hbWUgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAnY2xhc3NFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuY2xhc3NFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5yZWFkT25seSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdST1ctJyArIHJvdy5pZCArICdyZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyA9IChjb2x1bW4sIG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzICYmIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgIGlmICghcm93LmNvbHVtblJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seVtjb2x1bW4uaWRdID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ0NPTC0nICsgcm93LmlkICsgJy0nICsgY29sdW1uLmlkICsgJy1yZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5wcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyhwcm9wcy5jb25maWcuaWQpO1xuICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCByb3dzKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgLy8gUGxhaW4gUmVhY3QtcHJvcCBjYWxsYmFjayBmb3IgY29uc3VtZXJzIHRoYXQgd2FudCB0byByZWFjdCB0byBhXG4gICAgICAgIC8vIGRhdGEgbG9hZCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV2ZW50TWFuYWdlciBzdWJzY3JpcHRpb25cbiAgICAgICAgLy8gZGFuY2UuIFJlY2VpdmVzIHRoZSBmcmVzaGx5LXJlbmRlcmVkIHJvd3MgYXJyYXkuIFVzZWQgYnlcbiAgICAgICAgLy8gTXVsdGlMb29rdXBGaWVsZCB0byBwcmUtc2VsZWN0IHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGVcbiAgICAgICAgLy8gZmllbGQncyB2YWx1ZSwgc28gdGhlIG9wZXJhdG9yIGNhbiBzZWUgd2hpY2ggcmVzdWx0cyB0aGV5IGhhdmVcbiAgICAgICAgLy8gYWxyZWFkeSBhZGRlZC5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25Sb3dzTG9hZGVkKSkge1xuICAgICAgICAgICAgcHJvcHMub25Sb3dzTG9hZGVkKHJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGlsZSBncmlkcyBhdXRvLXNlbGVjdCB0aGUgZmlyc3Qgcm93IGFmdGVyIGEgbG9hZCB3aGVuIG5vXG4gICAgICAgIC8vIHNlbGVjdGlvbiBpcyBpbiBwbGFjZSB5ZXQsIHNvIHRoZSBjb25zdW1lciB2aWV3IGFsd2F5cyBoYXMgYVxuICAgICAgICAvLyBjdXJyZW50bHktc2VsZWN0ZWQgaXRlbSB0byByZW5kZXIgZGV0YWlscyBmb3IuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIENvbmZpZ3VyYWJsZSBwZXItaW5zdGFuY2UgdmlhIGB0aWxlQXV0b1NlbGVjdGAuIERlZmF1bHRzIHRvXG4gICAgICAgIC8vIHRydWUgKGV4aXN0aW5nIGJlaGF2aW91cikuIFZpZXdzIGxpa2UgdGhlIHJlZ2lzdHJhdGlvblxuICAgICAgICAvLyBwcmltYXJ5LWNvbnRhY3QgcGlja2VyIHNldCBpdCB0byBmYWxzZSBiZWNhdXNlIGF1dG8tc2VsZWN0aW5nXG4gICAgICAgIC8vIHdvdWxkIGNyZWF0ZSBhIG1pc2xlYWRpbmcgZGVmYXVsdCDigJQgdGhlIHVzZXIgbXVzdCBhY3RpdmVseVxuICAgICAgICAvLyBjaG9vc2UuIFRoZSBEQVRBX0FSUklWRUQtZHJpdmVuIHJlYmluZCBvbiBiYWNrLW5hdiAoc2VlXG4gICAgICAgIC8vIHByaW1hcnktY29udGFjdC5qc29uKSBzdGlsbCB3b3JrcyBiZWNhdXNlIGl0IHNldHMgdGhlXG4gICAgICAgIC8vIHNlbGVjdGlvbiBleHBsaWNpdGx5IHZpYSBhcGkuc2VsZWN0KCkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEZpcmluZyBTRUxFQ1RJT05fQ0hBTkdFIGlubGluZSAobm90IHZpYSBmaXJlU2VsZWN0aW9uRXZlbnQsXG4gICAgICAgIC8vIHdoaWNoIHdvdWxkIHJlYWQgdGhlIHN0aWxsLXN0YWxlIGBzZWxlY3RlZGAgc3RhdGUgb24gdGhpc1xuICAgICAgICAvLyB0aWNrKSBzbyB0aGUgZG93bnN0cmVhbSBzdWJzY3JpYmVyIHdha2VzIHVwIG9uIHRoZSBzYW1lIHRpY2tcbiAgICAgICAgLy8gYXMgdGhlIGRhdGEgYXJyaXZhbC5cbiAgICAgICAgY29uc3QgYXV0b1NlbGVjdCA9IFV0aWxzLmlzTnVsbChjb25maWc/LnRpbGVBdXRvU2VsZWN0KSA/IHRydWUgOiBjb25maWcudGlsZUF1dG9TZWxlY3QgPT09IHRydWU7XG4gICAgICAgIGlmIChhdXRvU2VsZWN0ICYmIGNvbmZpZz8uZ3JpZFR5cGUgPT09ICdUSUxFJyAmJiByb3dzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0lkID0gcm93c1swXS5pZDtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93TGlzdCA9IFtmaXJzdFJvd0lkXTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKGZpcnN0Um93TGlzdCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSBnZXRTZWxlY3RlZFJvd3MoZmlyc3RSb3dMaXN0KTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBzZWxlY3Rpb25FdmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGVsZXRlZFJvd3MpICYmIGRlbGV0ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZGVsZXRlZFJvd3MpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuUk9XX0RFTEVURUQsIGV2ZW50KTtcbiAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuICAgIH0sIFtkZWxldGVkUm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMucm93cykpIHtcbiAgICAgICAgICAgIGxldCByb3dWYWx1ZXMgPSBbXTtcblxuICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcHJvcHMucm93cztcbiAgICAgICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwcm9wcy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcm93VmFsdWVzLnB1c2gob2JzZXJ2ZVJvdyhyb3cpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzKGNvbHVtbiwgcHJvcHMucm93cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd1ZhbHVlcztcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgIHNldFJvd3Mocm93VmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5yb3dzXSk7XG5cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzKHJvd3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMoY29sdW1uLCByb3dzKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBmaXJlU2VsZWN0aW9uRXZlbnQoKTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBpZCA9PiBzZWxlY3RlZC5pbmRleE9mKGlkKSAhPT0gLTE7XG4gICAgY29uc3QgZWRpdG9yQ2hhbmdlSGFuZGxlciA9IChyb3dJZCwgZmllbGQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGlmIChyb3cuaWQgPT09IHJvd0lkKSB7XG4gICAgICAgICAgICAgICAgVXRpbHMudXBkYXRlTmVzdGVkUHJvcGVydHkocm93LCBmaWVsZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gcHJvcHMuY29uZmlnLmNvbHVtbnNbaV07XG4gICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXNbJ2ZpbHRlcmFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVDZWxsID0gKHJvdywgY29sdW1uTmFtZSwgY2VsbEhhbmRsZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGxzRW50cnkgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsc0VudHJ5LnJvd0lkID09PSByb3cuaWQpIHtcbiAgICAgICAgICAgICAgICByb3dDZWxscyA9IGNlbGxzRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSB8fCByb3dDZWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJvd0NlbGxzID0ge307XG4gICAgICAgICAgICByb3dDZWxscy5yb3dJZCA9IHJvdy5pZDtcbiAgICAgICAgICAgIGNlbGxzLnB1c2gocm93Q2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q2VsbHNbY29sdW1uTmFtZV0gPSBjZWxsSGFuZGxlO1xuICAgIH07XG5cbiAgICBjb25zdCByZWZyZXNoQ2VsbCA9IChyb3dJZCwgY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsLnJvd0lkID09PSByb3dJZCkge1xuICAgICAgICAgICAgICAgIHJvd0NlbGxzID0gY2VsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSkge1xuICAgICAgICAgICAgbGV0IGNlbGwgPSByb3dDZWxsc1tjb2x1bW5OYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY2VsbCkpIHtcbiAgICAgICAgICAgICAgICBjZWxsLmFwaS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlQWxsUm93RXJyb3JzQnlDb2x1bW4gPSAoY29sdW1uTmFtZSwgcm93RXJyb3JzKSA9PiB7XG4gICAgICAgIGlmIChyb3dFcnJvcnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSByb3dFcnJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93RXJyb3JzW2ldLmNvbHVtbiA9PT0gY29sdW1uTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByb3dFcnJvcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJvd0Vycm9ySGFuZGxlciA9IChyb3dJZCwgZXJyb3IsIGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCB8fCAhcm93RXJyb3JNYXBbcm93SWRdKSB7XG4gICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCFyb3dFcnJvck1hcFtyb3dJZF0uZmluZChyb3dFcnJvciA9PiByb3dFcnJvci5jb2x1bW4gPT09IGNvbHVtbikpIHtcbiAgICAgICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0ucHVzaChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbihjb2x1bW4sIHJvd0Vycm9yTWFwW3Jvd0lkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc1Jvd0Vycm9yc0VtcHR5ID0gKCkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkpIHtcbiAgICAgICAgICAgIGlmIChyb3dFcnJvck1hcFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUNoYW5nZUNhbGxiYWNrID0gKHZhbHVlUm93cykgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIodmFsdWVSb3dzLCAhaXNSb3dFcnJvcnNFbXB0eSgpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBDYWNoZSB0aGUgY29tcGlsZWQgSGFuZGxlYmFycyB0ZW1wbGF0ZSBhY3Jvc3MgdGlsZSByZW5kZXJzIHNvIGEgNzUtcm93XG4gICAgLy8gZ3JpZCBkb2Vzbid0IHJlY29tcGlsZSB0aGUgc2FtZSBzdHJpbmcgNzUgdGltZXMgcGVyIHJlbmRlciBwYXNzLiBLZXllZFxuICAgIC8vIGJ5IHRoZSByYXcgdGVtcGxhdGUgc3RyaW5nIHNvIGEgY29uZmlnIHN3YXAgcmVidWlsZHMgYXV0b21hdGljYWxseS5cbiAgICBjb25zdCB0aWxlVGVtcGxhdGVDYWNoZVJlZiA9IFJlYWN0LnVzZVJlZih7a2V5OiBudWxsLCBmbjogbnVsbH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0VGlsZUxhYmVsKHJvdykge1xuICAgICAgICAvLyBXaGVuIHRpbGVEaXNwbGF5VGVtcGxhdGUgaXMgc2V0LCByZW5kZXIgcmljaCBIVE1MIOKAlCB0aGUgY29sdW1uXG4gICAgICAgIC8vIGxpc3QgYmVjb21lcyBhIG5vLW9wIGZvciB0aGUgdGlsZSBib2R5IChjb2x1bW5zIHN0aWxsIGRyaXZlIHRhYmxlXG4gICAgICAgIC8vIG1vZGUgKyB0aGUgY29sdW1uLWNvbmZpZyBtZXRhZGF0YTsgdGhleSdyZSBub3QgZHVwbGljYXRlZCBhc1xuICAgICAgICAvLyB0ZXh0KS4gT3RoZXJ3aXNlIHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgY29sdW1uIGl0ZXJhdGlvbiwgd2hpY2hcbiAgICAgICAgLy8gaXMgdGhlIGxlZ2FjeSBkZWZhdWx0LiBNaXJyb3JzIEh0bWxQYW5lbDogSGFuZGxlYmFycyBjb21waWxlLFxuICAgICAgICAvLyBhcHBseSBhZ2FpbnN0IHRoZSByb3csIHJlbmRlciB2aWEgSFRNTFJlbmRlcmVyLiBTdXBwb3J0cyBuZXN0ZWRcbiAgICAgICAgLy8gcGF0aHMgKHt7cGVyc29uLm5hbWVzfX0pIGFuZCB0aGUgc3RhbmRhcmQgaGVscGVyIHNldFxuICAgICAgICAvLyAoZXEgLyBuZSAvIGx0IC8gZ3QgLyBsdGUgLyBndGUgLyBhbmQgLyBvcikgcmVnaXN0ZXJlZCBhYm92ZS5cbiAgICAgICAgY29uc3QgdGlsZURpc3BsYXlUZW1wbGF0ZSA9IGNvbmZpZy50aWxlRGlzcGxheVRlbXBsYXRlO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh0aWxlRGlzcGxheVRlbXBsYXRlKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGlsZVRlbXBsYXRlQ2FjaGVSZWYuY3VycmVudC5rZXkgIT09IHRpbGVEaXNwbGF5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGlsZVRlbXBsYXRlQ2FjaGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdGlsZURpc3BsYXlUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBIYW5kbGViYXJzLmNvbXBpbGUodGlsZURpc3BsYXlUZW1wbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IHRpbGVUZW1wbGF0ZUNhY2hlUmVmLmN1cnJlbnQuZm4ocm93KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEhUTUxSZW5kZXJlciBodG1sPXtodG1sfS8+O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IGJsYW5rIHRoZSB3aG9sZSBncmlkIGJlY2F1c2Ugb25lIHRpbGUncyB0ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYSBtaXNzaW5nIG5lc3RlZCBrZXk7IGxvZyArIGZhbGwgdGhyb3VnaCB0b1xuICAgICAgICAgICAgICAgIC8vIHRoZSBsZWdhY3kgcmVuZGVyZXIgc28gdGhlIHVzZXIgc2VlcyAqc29tZXRoaW5nKi5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbRGF0YUdyaWRdIHRpbGVEaXNwbGF5VGVtcGxhdGUgcmVuZGVyIGZhaWxlZCBmb3Igcm93Jywgcm93LCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtjb25maWcuY29sdW1ucy5tYXAoY29sdW1uID0+IChcbiAgICAgICAgICAgICAgICAgICAgIWNvbHVtbi5hdHRyaWJ1dGVzLmhpZGRlbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2NvdW50ZXIrK30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWROZXN0ZWRQcm9wZXJ0eSBoYW5kbGVzIGRvdHRlZCBpZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2UgXCJwZXJzb24ubmFtZXNcIiDigJQgZGlyZWN0IHJvd1tpZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJyYWNrZXQgYWNjZXNzIG9ubHkgd29ya2VkIGZvciBmbGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZHMgYW5kIHNpbGVudGx5IHJlbmRlcmVkIGJsYW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBsaXZlZCB1bmRlciBhIHN1Yi1vYmplY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXJyb3JzIHRoZSBTVEFOREFSRC1tb2RlIHJlc29sdXRpb24gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhYmxlQ2VsbENvbnRlbnQuanN4LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucmVhZE5lc3RlZFByb3BlcnR5KHJvdywgIVV0aWxzLmlzTnVsbChjb2x1bW4uZGF0YUJpbmRpbmcpID8gY29sdW1uLmRhdGFCaW5kaW5nIDogY29sdW1uLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW5kZXJUaWxlKHJvdywga2V5KSB7XG4gICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICByZXR1cm4gKDxHcmlkIGl0ZW0geHMgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyhwcm9wcy5jb25maWcudGlsZVN0eWxlLCB7XG4gICAgICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzIwMHB4J1xuICAgICAgICB9KX0ga2V5PXtrZXl9PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBjb2xvcj17XCJzZWNvbmRhcnlcIn1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogaXNJdGVtU2VsZWN0ZWQgPyAnMXB4IHNvbGlkIDFweCBzb2xpZCAjZjJhOTAwJyA6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBpc0l0ZW1TZWxlY3RlZCA/ICcjZmZmOGUxJyA6ICcjZmFmYWZhJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdldFRpbGVMYWJlbChyb3cpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvR3JpZD4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlclRpbGVzKCkge1xuICAgICAgICBpZiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIFRpbGUgZ3JpZCBoYXMgbm8gbmF0aXZlIGVtcHR5LXJvdyBhZmZvcmRhbmNlIGxpa2UgdGhlIHRhYmxlXG4gICAgICAgICAgICAvLyBwYXRoIChgb3VpVGFibGUtZW1wdHlgIENTUyksIHNvIHBhaW50IHRoZSBtZXNzYWdlIGlubGluZS5cbiAgICAgICAgICAgIC8vIENhbGxlciBjYW4gb3ZlcnJpZGUgdmlhIGBjb25maWcuZW1wdHlNZXNzYWdlYCBmb3Igdmlldy1cbiAgICAgICAgICAgIC8vIHNwZWNpZmljIGNvcHkgKFwiTm8gcHJvY3VyZW1lbnRzIHlldFwiLCBldGMpLlxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHByb3BzLmNvbmZpZz8uZW1wdHlNZXNzYWdlIHx8ICdObyBpdGVtcyB0byBzaG93JztcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTIwcHgnLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyM5ZTllOWUnLFxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuODc1cmVtJyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFN0eWxlOiAnaXRhbGljJyxcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAge21lc3NhZ2V9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNJdGVtU2VsZWN0ZWQgPSBpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbElkID0gYGVuaGFuY2VkLXRhYmxlLWNoZWNrYm94LSR7aW5kZXh9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5pbmRleCA9IGluZGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGUocm93LCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVDb2x1bW5MYXlvdXRIYW5kbGUoY29sdW1uLCBpbmRleCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUoY29sdW1uKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgdmlzaWJsZSAmJlxuICAgICAgICA8ZGl2IGlkPXtwcm9wcy5jb25maWcuaWR9IGNsYXNzTmFtZT17VXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ2NsYXNzTmFtZScsIG51bGwpfSBzdHlsZT17KFV0aWxzLmlzTnVsbChwcm9wcy5oYXNCb3JkZXIpIHx8IHByb3BzLmhhc0JvcmRlciA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgVXRpbHMubWVyZ2VTdHlsZXMoe1xuICAgICAgICAgICAgICAgIG1hcmdpbjogJzAnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnXG4gICAgICAgICAgICB9LCBwcm9wcy5jb25maWcpIDogVXRpbHMubWVyZ2VTdHlsZXMoe30sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLm5vdGVzKSA/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5ub3Rlcy5tYXAoKG5vdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17bm90ZUtleSsrfSBzdHlsZT17e3BhZGRpbmc6ICc4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luQm90dG9tOiAnMCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtub3RlLm1lc3NhZ2VUeXBlID09PSAnV0FSTicgPyAnd2FybmluZycgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZS5tZXNzYWdlVHlwZSA9PT0gJ0lORk8nID8gJycgOiAnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e25vdGUubWVzc2FnZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm93c1BlclBhZ2VPcHRpb25zLmluY2x1ZGVzKHByb3BzLmNvbmZpZy5wYWdlU2l6ZSkgP1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuZ3JpZFR5cGUgPT09ICdUSUxFJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7cGFkZGluZzogJzE2cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaWx0ZXJhYmxlKCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2ZpbHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtwcm9wcy5jb25maWd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJXcmFwcGVyQ2xhc3M9e3Byb3BzLmZpbHRlcldyYXBwZXJDbGFzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclN1Ym1pdD17c2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIHNwYWNpbmc9ezJ9ID0gMTZweCBnYXAgYmV0d2VlbiB0aWxlIGNhcmRzIChNVUkgMSB1bml0ID0gOHB4KS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dGVyIHdyYXBwZXIgbm93IHVzZXMgdW5pZm9ybSBwYWRkaW5nIGluc3RlYWQgb2YgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXJsaWVyIGFzeW1tZXRyaWMgYG1hcmdpbjogMCAwIDhweCA4cHhgIHNvIGNhcmRzIGFyZW4ndFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2ggYWdhaW5zdCB0aGUgdG9wICsgcmlnaHQgb2YgdGhlIGdyaWQgY29udGFpbmVyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIGl0ZW0geHM9ezEyfSBzcGFjaW5nPXsyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc0cHggOHB4IDAgOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFdyYXAoZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4PXt7ICcmIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsJzogeyBmb250U2l6ZTogJzAuNzVyZW0nIH0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiV3JhcCB0YWJsZSB0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ge2ByZXNwb25zaXZlLXRhYmxlYH0gc3R5bGU9e3toZWlnaHQ6IHByb3BzLmhlaWdodH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPXtgJHsnb3VpVGFibGUnICsgKHJvd3MubGVuZ3RoID09PSAwID8gJyBvdWlUYWJsZS1lbXB0eScgOiAnJyl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTcGFjaW5nPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJ0YWJsZVRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzc05hbWU9eydmaWx0ZXJIZWFkJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAnY2FsYygxMDAlIC0gJyArIHByb3BzLnNjcm9sbFdpZHRoICsgJ3B4KSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlcmFibGUoKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtmaWx0ZXJIYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyV3JhcHBlckNsYXNzPXtwcm9wcy5maWx0ZXJXcmFwcGVyQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclN1Ym1pdD17c2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXF1ZXN0U29ydD17aGFuZGxlUmVxdWVzdFNvcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17aGVhZGluZ0hhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1TZWxlY3RlZD17c2VsZWN0ZWQubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdEFsbENsaWNrPXtoYW5kbGVTZWxlY3RBbGxDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dDb3VudD17dG90YWxOdW1iZXJPZlJvd3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSb3dzKFsuLi5yb3dzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRib2R5IGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZUJvZHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXhIZWlnaHQ6IFV0aWxzLmlzTnVsbChwcm9wcy5ib2R5TWF4SGVpZ2h0KSA/IHByb3BzLmJvZHlNYXhIZWlnaHQgOiAnNDJ2aCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWFpblRhYmxlQm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxJZCA9IGBlbmhhbmNlZC10YWJsZS1jaGVja2JveC0ke2luZGV4fWA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRSb3dTdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnN0eWxlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1lcmdlT2JqZWN0cyhwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5zdHlsZSwgZGVmYXVsdFJvd1N0eWxlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Um93U3R5bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBoYW5kbGVSb3dNb3VzZUVudGVyKHJvdyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXtoYW5kbGVSb3dNb3VzZUxlYXZlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZUNsaWNrKGV2ZW50LCByb3csIGluZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvdWJsZUNsaWNrPXtldmVudCA9PiBwcm9wcy5vblJvd0RvdWJsZUNsaWNrICYmIHByb3BzLm9uUm93RG91YmxlQ2xpY2socm93LCBldmVudCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNoZWNrZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsnUk9XLScgKyByb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J291aS10YWJsZS1yb3cgJyArICgoaGlnaGxpZ2h0Um93U2VsZWN0aW9uLmN1cnJlbnQgPyBpc0l0ZW1TZWxlY3RlZCA/IGNsYXNzZXMudGFibGVTZWxlY3RlZCA6IGNsYXNzZXMudGFibGVSb3cgOiAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAocm93LmNsYXNzTmFtZSA/ICgnICcgKyByb3cuY2xhc3NOYW1lKSA6ICcnKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc2VsZWN0aW9uTW9kZSA9PT0gJ01VTFRJUExFJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGQgcGFkZGluZz1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17TVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCArICdweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnc2VsZWN0Q2VsbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17eydhcmlhLWxhYmVsbGVkYnknOiBsYWJlbElkfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD4gOiBudWxsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbmZpZy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKGNvbHVtbi5hdHRyaWJ1dGVzWydoaWRkZW4nXSwgcHJvcHMuY29uZmlnLmlkKSA9PT0gdHJ1ZSA/IG51bGwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmxheW91dCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID8gY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggOiAoMTAwIC8gY29uZmlnLmNvbHVtbnMubGVuZ3RoKSArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IXByb3BzLmRpc2FibGVkICYmIGlzSXRlbVNlbGVjdGVkICYmICFVdGlscy5pc051bGwocHJvcHMuZm9ybSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW4uZWRpdG9yKSA/ICdlZGl0Q2VsbCcgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4ICsgXCJfXCIgKyBjb2x1bW4uaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGF5b3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2NyZWF0ZUNvbHVtbkxheW91dEhhbmRsZShjb2x1bW4sIGluZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZCArIFwiX2xheW91dFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVSb3c9e3Jvd3MuZmluZCgocikgPT4gci5pZCA9PT0gcm93LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9wcy5jb25maWcuY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5pZCA9PT0gY29sdW1uLmlkKS5sYXlvdXQpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfSBwYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGQ+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA/IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoIDogKDEwMCAvIGNvbmZpZy5jb2x1bW5zLmxlbmd0aCkgKyAnJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbj1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyFwcm9wcy5kaXNhYmxlZCAmJiBpc0l0ZW1TZWxlY3RlZCAmJiAhVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpID8gJ2VkaXRDZWxsJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlQ2VsbENsaWNrKGV2ZW50LCByb3cuaWQsIGNvbHVtbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcD17d3JhcH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93RXJyb3I9e3Jvd0Vycm9ySGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ2VsbEVkaXRvckhhbmRsZShjb2x1bW4pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3I9eyFwcm9wcy5kaXNhYmxlZCAmJiAhcm93LnJlYWRPbmx5ICYmICFyb3cuY29sdW1uUmVhZE9ubHk/Lltjb2x1bW4/LmlkXSA/IGNvbHVtbi5lZGl0b3IgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmQ2FsbGJhY2s9e2NyZWF0ZUNlbGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3I9e2NvbHVtbi52YWxpZGF0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUhhbmRsZXI9e2VkaXRvckNoYW5nZUhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db25maWc9e2NvbHVtbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFCaW5kaW5nPXshVXRpbHMuaXNOdWxsKGNvbHVtbi5kYXRhQmluZGluZykgPyBjb2x1bW4uZGF0YUJpbmRpbmcgOiBjb2x1bW4uaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3c9e3Jvd31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlPXtjb2x1bW4uZmllbGRUeXBlIHx8IGNvbHVtbi5lZGl0b3I/LmZpZWxkVHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxGb3JtYXR0ZXI9e2NvbHVtbi5jZWxsRm9ybWF0dGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpdGVyaWE9e2NyaXRlcmlhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuYXR0cmlidXRlcz8ucGFnaW5hdGlvbikgJiYgKFV0aWxzLmlzTnVsbChwcm9wcy5wYWdpbmF0aW9uKSB8fCBwcm9wcy5wYWdpbmF0aW9uID09PSB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uICYmIHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWduYXRpb24gPT09IHRydWUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVQYWdpbmF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJncmlkLXRhYmxlLXBhZ2luYXRpb25cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1BlclBhZ2VPcHRpb25zPXtyb3dzUGVyUGFnZU9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cImRpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50PXt0b3RhbE51bWJlck9mUm93c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1BlclBhZ2U9e3Jvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlPXtwYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrSWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICdwcmV2aW91cyBwYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEljb25CdXR0b25Qcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiAnbmV4dCBwYWdlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYWdlQ2hhbmdlPXtoYW5kbGVDaGFuZ2VQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJvd3NQZXJQYWdlQ2hhbmdlPXtoYW5kbGVDaGFuZ2VSb3dzUGVyUGFnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLDBCQUFBLEdBQUFGLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sZUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLGlCQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsT0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsTUFBQSxHQUFBWixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVksV0FBQSxHQUFBYixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWEsVUFBQSxHQUFBZCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWMsS0FBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWUsT0FBQSxHQUFBaEIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFnQixDQUFBLEdBQUFDLHVCQUFBLENBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLE1BQUEsR0FBQW5CLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBbUIsbUJBQUEsR0FBQXBCLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBb0IsT0FBQSxHQUFBcEIsT0FBQTtBQUNBLElBQUFxQixVQUFBLEdB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
1206
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJfcmVhY3RIdG1sUmVuZGVyZXIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJIYW5kbGViYXJzIiwicmVnaXN0ZXJIZWxwZXIiLCJlcSIsInYxIiwidjIiLCJuZSIsImx0IiwiZ3QiLCJsdGUiLCJndGUiLCJhbmQiLCJBcnJheSIsInByb3RvdHlwZSIsImV2ZXJ5IiwiQm9vbGVhbiIsIm9yIiwic2xpY2UiLCJzb21lIiwiTVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCIsImV4cG9ydHMiLCJldmFsdWF0ZVRhYmxlQ2VsbFdpZHRoIiwibXVsdGlTZWxlY3QiLCJjb2x1bW4iLCJjb2x1bW5Db3VudCIsIndpZHRoIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNFeHByZXNzaW9uIiwiYXR0cmlidXRlcyIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHQiLCJjb25jYXQiLCJpZCIsIlV0aWxzIiwiaXNOdWxsIiwiZGVzYyIsImEiLCJiIiwib3JkZXJCeSIsInN0YWJsZVNvcnQiLCJhcnJheSIsImNtcCIsInN0YWJpbGl6ZWRUaGlzIiwibWFwIiwiZWwiLCJpbmRleCIsInNvcnQiLCJvcmRlciIsImdldFNvcnRpbmciLCJ1c2VTdHlsZXMiLCJtYWtlU3R5bGVzIiwidGhlbWUiLCJyb290IiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZzIiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUyIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MyIsImNsYXNzZXMiLCJzZXRPcmRlciIsInVzZVN0YXRlIiwiY29uZmlnIiwicGFyc2VDb25maWciLCJ2aWV3SWQiLCJzZXRPcmRlckJ5Iiwic2VsZWN0ZWQiLCJzZXRTZWxlY3RlZCIsInRvdGFsTnVtYmVyT2ZSb3dzIiwic2V0VG90YWxOdW1iZXJPZlJvd3MiLCJjcml0ZXJpYSIsInBhZ2UiLCJzZXRQYWdlIiwicm93cyIsInNldFJvd3MiLCJkZWxldGVkUm93cyIsInNldERlbGV0ZWRSb3dzIiwiZWRpdGFibGUiLCJzZXRFZGl0YWJsZSIsInNjcm9sbFdpZHRoIiwic2V0U2Nyb2xsV2lkdGgiLCJyb3dzUGVyUGFnZU9wdGlvbnMiLCJyb3dzUGVyUGFnZUxvYWRpbmciLCJzZXRSb3dzUGVyUGFnZUxvYWRpbmciLCJyb3dzUGVyUGFnZSIsInNldFJvd3NQZXJQYWdlIiwicGFnZVNpemUiLCJoaWdobGlnaHRSb3dTZWxlY3Rpb24iLCJ1c2VSZWYiLCJkaXNhYmxlUm93U2VsZWN0aW9uIiwiY2VsbHMiLCJoZWFkaW5nSGFuZGxlIiwiZmlsdGVySGFuZGxlIiwiY29sdW1uTGF5b3V0SGFuZGxlcyIsImVkaXRvckhhbmRsZXMiLCJyb3dFcnJvck1hcCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwid3JhcCIsInNldFdyYXAiLCJyb3dDb3VudCIsInJvd3NSZWYiLCJub3RlS2V5IiwiY29sdW1uV2lkdGhzIiwiZHJhZ1NwZWMiLCJyb3dHcmFiU3BlYyIsInJvdyIsInJvd3NHcmFiYmFibGUiLCJlbmFibGVkIiwiYXBpIiwicGFyYW1ldGVycyIsImlzRmlsdGVyYWJsZSIsImdldFBhcmFtZXRlcnMiLCJzZWxlY3Rpb24iLCJzZWxlY3RlZFJvd3MiLCJqIiwiY29sdW1uRGF0YUJpbmRpbmdzIiwiY29sdW1uTmFtZXMiLCJjb2x1bW5zIiwiZGF0YUJpbmRpbmciLCJnZXRDaGlsZHJlbiIsImNoaWxkcmVuIiwiY2hpbGQiLCJwcm9wZXJ0aWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInByb3BlcnR5IiwiY29sdW1uTGF5b3V0SGFuZGxlIiwibW9yZUNoaWxkcmVuIiwiZWRpdG9ySGFuZGxlIiwibG9hZERhdGEiLCJhY3Rpb25Db25maWciLCJldmVudCIsInNlYXJjaCIsImRlbGV0ZVNlbGVjdGVkUm93cyIsIm5ld1Jvd3MiLCJpc1NlbGVjdGVkIiwiZ2V0U2VsZWN0ZWRSb3dzIiwic3BsaWNlIiwibmV3Um93Iiwib25TZWxlY3Rpb25DaGFuZ2UiLCJ1cGRhdGVTY3JvbGxCYXJQYWRkaW5nIiwiY3VycmVudCIsInZhbHVlQ2hhbmdlQ2FsbGJhY2siLCJjbGVhciIsIkV2ZW50IiwiaGFuZGxlIiwiZXZlbnRNYW5hZ2VyIiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiU0VMRUNUSU9OX0NIQU5HRSIsImRlbGV0ZVJvd3MiLCJyb3dJZHMiLCJpZFNldCIsIlNldCIsInJlbWFpbmluZyIsInNlbGVjdCIsImFkZFJvd3MiLCJvYnNlcnZlUm93IiwibmV3U2VsZWN0aW9uIiwibnVtYmVyT2ZQYWdlcyIsInJlZnJlc2giLCJwYXJzZWRDb25maWciLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiZm9ybUFwaSIsImhhbmRsZVJvd0dyYWJUb2dnbGUiLCJpc1Jvd0dyYWJiYWJsZSIsIkdyYWJDb250ZXh0IiwiaXNBY3RpdmUiLCJncmFiIiwicm93SW5kZXgiLCJjb21wb25lbnRJZCIsIkN1cnNvck92ZXJsYXkiLCJzaG93IiwiUk9XX0dSQUJfU1RBUlQiLCJ0Ym9keSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJvZmZzZXRXaWR0aCIsImNsaWVudFdpZHRoIiwid2luZG93Iiwib25yZXNpemUiLCJoYW5kbGVSZXF1ZXN0U29ydCIsImlzRGVzYyIsImhhbmRsZVNlbGVjdEFsbENsaWNrIiwidGFyZ2V0IiwiY2hlY2tlZCIsIm5ld1NlbGVjdGVkcyIsIm5hbWUiLCJlbmFibGVGb3JtTWFya2VycyIsImRvSGFuZGxlQ2xpY2siLCJleGlzdGluZ0luZGV4IiwiaW5kZXhPZiIsIm5ld1NlbGVjdGVkIiwiZmlyZVNlbGVjdGlvbkV2ZW50IiwiZ3JpZFR5cGUiLCJpc1Jvd0RyYWdEaXNhYmxlZCIsImRpc2FibGVkV2hlbiIsImV4ZWN1dGVTY3JpcHRPYmplY3QiLCJzZXRDdXJzb3IiLCJjdXJzb3IiLCJib2R5Iiwic3R5bGUiLCJoYW5kbGVSb3dNb3VzZUVudGVyIiwiaGFuZGxlUm93TW91c2VMZWF2ZSIsImhhbmRsZUNsaWNrIiwiY2xvc2VzdCIsInN0b3BQcm9wYWdhdGlvbiIsIm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSIsImhhbmRsZUNlbGxDbGljayIsImZpZWxkVHlwZSIsImhhbmRsZUNoYW5nZVBhZ2UiLCJuZXdQYWdlIiwiY3VycmVudFBhZ2UiLCJoYW5kbGVDaGFuZ2VSb3dzUGVyUGFnZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsIm9uUm93c0xvYWRlZCIsImF1dG9TZWxlY3QiLCJ0aWxlQXV0b1NlbGVjdCIsImZpcnN0Um93SWQiLCJmaXJzdFJvd0xpc3QiLCJzZWxlY3Rpb25FdmVudCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwiZmluZCIsInJvd0Vycm9yIiwiaXNSb3dFcnJvcnNFbXB0eSIsImtleSIsInZhbHVlUm93cyIsInZhbHVlQ2hhbmdlSGFuZGxlciIsInRpbGVUZW1wbGF0ZUNhY2hlUmVmIiwiZm4iLCJnZXRUaWxlTGFiZWwiLCJ0aWxlRGlzcGxheVRlbXBsYXRlIiwiY29tcGlsZSIsImh0bWwiLCJjcmVhdGVFbGVtZW50IiwiY291bnRlciIsInJlYWROZXN0ZWRQcm9wZXJ0eSIsInJlbmRlclRpbGUiLCJpc0l0ZW1TZWxlY3RlZCIsIml0ZW0iLCJ4cyIsIm1lcmdlT2JqZWN0cyIsInRpbGVTdHlsZSIsIm1pbldpZHRoIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiX3Byb3BzJGNvbmZpZyIsIm1lc3NhZ2UiLCJlbXB0eU1lc3NhZ2UiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJtaW5IZWlnaHQiLCJmb250U2l6ZSIsImZvbnRTdHlsZSIsIkZyYWdtZW50IiwibGFiZWxJZCIsImNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZSIsImNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUiLCJoYXNCb3JkZXIiLCJtZXJnZVN0eWxlcyIsImJvcmRlclJhZGl1cyIsImZsZXhEaXJlY3Rpb24iLCJub3RlcyIsIm5vdGUiLCJtYXJnaW5Cb3R0b20iLCJtZXNzYWdlVHlwZSIsImluY2x1ZGVzIiwiZmxleCIsImJveFNpemluZyIsImZpbHRlcldyYXBwZXJDbGFzcyIsIm9uRmlsdGVyU3VibWl0Iiwib25SZXF1ZXN0U29ydCIsImNvbnRhaW5lciIsInNwYWNpbmciLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImxhYmVsIiwiVGFibGUiLCJjZWxsU3BhY2luZyIsIm51bVNlbGVjdGVkIiwib25TZWxlY3RBbGxDbGljayIsInJlc2l6ZUhhbmRsZXIiLCJUYm9keSIsIm1heEhlaWdodCIsImJvZHlNYXhIZWlnaHQiLCJkZWZhdWx0Um93U3R5bGUiLCJmbGV4V3JhcCIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Eb3VibGVDbGljayIsIm9uUm93RG91YmxlQ2xpY2siLCJyb2xlIiwidGFiSW5kZXgiLCJUZCIsImlucHV0UHJvcHMiLCJfcm93JGNvbHVtblJlYWRPbmx5IiwiX2NvbHVtbiRlZGl0b3IiLCJsYXlvdXQiLCJhbGlnbiIsImRpc2FibGVkIiwiZm9ybSIsIkxheW91dCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbCIsInBhcmVudCIsIm9uUm93RXJyb3IiLCJyZWZDYWxsYmFjayIsInZhbGlkYXRvciIsImNvbHVtbkNvbmZpZyIsImNvbnRlbnRUeXBlIiwiY2VsbEZvcm1hdHRlciIsInBhZ2luYXRpb24iLCJwYWduYXRpb24iLCJjb3VudCIsImJhY2tJY29uQnV0dG9uUHJvcHMiLCJuZXh0SWNvbkJ1dHRvblByb3BzIiwib25QYWdlQ2hhbmdlIiwib25Sb3dzUGVyUGFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9EYXRhR3JpZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSAnQG11aS9zdHlsZXMnO1xuaW1wb3J0IHtUYWJsZSwgVGJvZHksIFRkLCBUcn0gZnJvbSAncmVhY3Qtc3VwZXItcmVzcG9uc2l2ZS10YWJsZSc7XG5pbXBvcnQgJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUvZGlzdC9TdXBlclJlc3BvbnNpdmVUYWJsZVN0eWxlLmNzcyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG11aS9tYXRlcmlhbC9DaGVja2JveCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0ICcuL0RhdGFHcmlkLmNzcyc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IERhdGFHcmlkRmlsdGVyIGZyb20gJy4vRGF0YUdyaWRGaWx0ZXInO1xuaW1wb3J0IERhdGFHcmlkSGVhZGluZyBmcm9tICcuL0RhdGFHcmlkSGVhZGluZyc7XG5pbXBvcnQgVGFibGVDZWxsQ29udGVudCBmcm9tICcuL1RhYmxlQ2VsbENvbnRlbnQnO1xuaW1wb3J0IFRhYmxlUGFnaW5hdGlvbiBmcm9tICdAbXVpL21hdGVyaWFsL1RhYmxlUGFnaW5hdGlvbic7XG5pbXBvcnQge2dyZXkzMDB9IGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnMnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgR3JpZCBmcm9tICdAbXVpL21hdGVyaWFsL0dyaWQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQWxlcnQgZnJvbSAncmVhY3QtYm9vdHN0cmFwL0FsZXJ0JztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ0BtdWkvbWF0ZXJpYWwvU3dpdGNoJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtdWkvbWF0ZXJpYWwvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgR3JhYkNvbnRleHQgZnJvbSAnLi4vaW50ZXJhY3Rpb24vR3JhYkNvbnRleHQnO1xuaW1wb3J0IEN1cnNvck92ZXJsYXkgZnJvbSBcIi4uL2ludGVyYWN0aW9uL0N1cnNvck92ZXJsYXlcIjtcbmltcG9ydCBIVE1MUmVuZGVyZXIgZnJvbSAncmVhY3QtaHRtbC1yZW5kZXJlcic7XG5cbmNvbnN0IEhhbmRsZWJhcnMgPSByZXF1aXJlKCdoYW5kbGViYXJzJyk7XG5cbi8vIFJlZ2lzdGVyIHRoZSBzYW1lIGNvbnZlbmllbmNlIGhlbHBlcnMgSHRtbFBhbmVsIGV4cG9zZXMgc28gYVxuLy8gdGlsZURpc3BsYXlUZW1wbGF0ZSBoYXMgYWNjZXNzIHRvIHt7I2lmIChlcSAuLi4pfX0gLyB7eyNpZiAoZ3QgLi4uKX19IGV0Yy5cbi8vIElkZW1wb3RlbnQgb24gbXVsdGlwbGUgaW1wb3J0cyDigJQgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlciBqdXN0IG92ZXJ3cml0ZXMuXG5IYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKHtcbiAgICBlcTogKHYxLCB2MikgPT4gdjEgPT09IHYyLFxuICAgIG5lOiAodjEsIHYyKSA9PiB2MSAhPT0gdjIsXG4gICAgbHQ6ICh2MSwgdjIpID0+IHYxIDwgdjIsXG4gICAgZ3Q6ICh2MSwgdjIpID0+IHYxID4gdjIsXG4gICAgbHRlOiAodjEsIHYyKSA9PiB2MSA8PSB2MixcbiAgICBndGU6ICh2MSwgdjIpID0+IHYxID49IHYyLFxuICAgIGFuZCgpIHsgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGFyZ3VtZW50cywgQm9vbGVhbik7IH0sXG4gICAgb3IoKSB7IHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKS5zb21lKEJvb2xlYW4pOyB9XG59KTtcblxuZXhwb3J0IGNvbnN0IE1VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggPSA2NDtcblxuZnVuY3Rpb24gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChtdWx0aVNlbGVjdCwgY29sdW1uLCBjb2x1bW5Db3VudCkge1xuXG4gICAgbGV0IHdpZHRoID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSkgP1xuICAgICAgICBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChgcG9wdXBUaXRsZV8ke2NvbHVtbi5pZH1gLGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddLCBjb2x1bW4pIDogY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ107XG5cbiAgICByZXR1cm4gbXVsdGlTZWxlY3QgPT09IHRydWUgP1xuICAgICAgICAnY2FsYygnICsgKCFVdGlscy5pc051bGwod2lkdGgpID8gd2lkdGggOlxuICAgICAgICAgICAgKDEwMCAvIGNvbHVtbkNvdW50KSArICclJykgKyAnIC0gJyArIChNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIC8gY29sdW1uQ291bnQpICsgJ3B4KSdcbiAgICAgICAgOlxuICAgICAgICAodHlwZW9mIHdpZHRoICE9PSAndW5kZWZpbmVkJyA/IHdpZHRoIDogKDEwMCAvIGNvbHVtbkNvdW50KSArICclJyk7XG59XG5cbmZ1bmN0aW9uIGRlc2MoYSwgYiwgb3JkZXJCeSkge1xuICAgIGlmIChiW29yZGVyQnldIDwgYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiW29yZGVyQnldID4gYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIHN0YWJsZVNvcnQoYXJyYXksIGNtcCkge1xuICAgIGNvbnN0IHN0YWJpbGl6ZWRUaGlzID0gYXJyYXkubWFwKChlbCwgaW5kZXgpID0+IFtlbCwgaW5kZXhdKTtcbiAgICBzdGFiaWxpemVkVGhpcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gY21wKGFbMF0sIGJbMF0pO1xuICAgICAgICBpZiAob3JkZXIgIT09IDApIHJldHVybiBvcmRlcjtcbiAgICAgICAgcmV0dXJuIGFbMV0gLSBiWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGFiaWxpemVkVGhpcy5tYXAoZWwgPT4gZWxbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0aW5nKG9yZGVyLCBvcmRlckJ5KSB7XG4gICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyAoYSwgYikgPT4gZGVzYyhhLCBiLCBvcmRlckJ5KSA6IChhLCBiKSA9PiAtZGVzYyhhLCBiLCBvcmRlckJ5KTtcbn1cblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJ1xuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICB9LFxuICAgIHNjcm9sbFBhZGRpbmc6IHtcbiAgICAgICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgbm9TY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgICB3aWR0aDogJzFweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgdGFibGVCb2R5OiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgfSxcbiAgICB0YWJsZVNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JleTMwMCxcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVSb3c6IHtcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVXcmFwcGVyOiB7XG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9LFxuICAgIHZpc3VhbGx5SGlkZGVuOiB7XG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDIwLFxuICAgICAgICB3aWR0aDogMSxcbiAgICB9XG59KSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhR3JpZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gUmVhY3QudXNlU3RhdGUoJ2Rlc2MnKTtcbiAgICBjb25zdCBbY29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKSk7XG4gICAgY29uc3QgW29yZGVyQnksIHNldE9yZGVyQnldID0gUmVhY3QudXNlU3RhdGUoJ2lkJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RvdGFsTnVtYmVyT2ZSb3dzLCBzZXRUb3RhbE51bWJlck9mUm93c10gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3JpdGVyaWFdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGVsZXRlZFJvd3MsIHNldERlbGV0ZWRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZWRpdGFibGUsIHNldEVkaXRhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsV2lkdGgsIHNldFNjcm9sbFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZU9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoWzE1LCAzMCwgNDUsIDYwLCA3NSwgMTUwLCAzMDBdKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VMb2FkaW5nLCBzZXRSb3dzUGVyUGFnZUxvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlLCBzZXRSb3dzUGVyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGFnZVNpemUpO1xuICAgIGNvbnN0IGhpZ2hsaWdodFJvd1NlbGVjdGlvbiA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24pXG4gICAgICAgID8gcHJvcHMuY29uZmlnLmhpZ2hsaWdodFJvd1NlbGVjdGlvbiA6ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pID8gIXByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uIDogdHJ1ZSk7XG4gICAgY29uc3QgW2NlbGxzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGVhZGluZ0hhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlckhhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2NvbHVtbkxheW91dEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtlZGl0b3JIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcm93RXJyb3JNYXBdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt3cmFwLCBzZXRXcmFwXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCByb3dDb3VudCA9IFJlYWN0LnVzZVJlZigtMSk7XG4gICAgY29uc3Qgcm93c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgbGV0IG5vdGVLZXkgPSAwO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgICBjb25zdCBkcmFnU3BlYyA9IGNvbmZpZy5hdHRyaWJ1dGVzPy5kcmFnU3BlYyB8fCB7fTtcbiAgICBjb25zdCByb3dHcmFiU3BlYyA9IGRyYWdTcGVjLnJvdyB8fCB7fTtcbiAgICBjb25zdCByb3dzR3JhYmJhYmxlID0gcm93R3JhYlNwZWMuZW5hYmxlZCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBjcml0ZXJpYSgpIHtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYXJhbWV0ZXJzID0gaXNGaWx0ZXJhYmxlKCkgPyBmaWx0ZXJIYW5kbGUuYXBpLmdldFBhcmFtZXRlcnMoKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNyaXRlcmlhLnBhZ2VTaXplID0gcm93c1BlclBhZ2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFtpXSA9PT0gcm93c1tqXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvd3Nbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29sdW1uRGF0YUJpbmRpbmdzKCkge1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKCFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaGVhZGluZ0hhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWx0ZXJIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZpbHRlckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbHVtbkxheW91dEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTGF5b3V0SGFuZGxlID0gY29sdW1uTGF5b3V0SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29sdW1uTGF5b3V0SGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGNvbHVtbkxheW91dEhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZWRpdG9ySGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3JIYW5kbGUgPSBlZGl0b3JIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlZGl0b3JIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpKSAmJiAhVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUNoaWxkcmVuID0gZWRpdG9ySGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9yZUNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbW9yZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goYWN0aW9uQ29uZmlnLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRSb3dzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIGxldCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXdSb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBTeW5jIHRoZSByZWYgdGhhdCBiYWNrcyB0aGUgYGdldCByb3dzYCBnZXR0ZXIg4oCUIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgIC8vIGFwaS5yb3dzIHJldHVybnMgd2hhdGV2ZXIgcm93c1JlZiB3YXMgYXQgbGFzdCBzeW5jIChvZnRlblxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IGFmdGVyIGEgcHJldmlvdXMgY2xlYXIoKSksIGV2ZW4gdGhvdWdoIHRoZSBsb2NhbFxuICAgICAgICAgICAgICAgIC8vIGByb3dzYCBhcnJheSBoYXMgYmVlbiBtdXRhdGVkLiBjbGVhcigpIGRvZXMgdGhpczsgZGF0YSBsb2FkXG4gICAgICAgICAgICAgICAgLy8gZG9lcyB0aGlzOyBhZGRSb3dzL2RlbGV0ZVNlbGVjdGVkUm93cyBkaWRuJ3Qg4oCUIGxlYWRpbmcgdG9cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zlckxpc3QncyB0cmFuc2Zlci1hbGwtYmFjayBmYWlsaW5nIGJlY2F1c2UgYXBpLnJvd3NcbiAgICAgICAgICAgICAgICAvLyBzaG93ZWQgZW1wdHkgcmlnaHQgYWZ0ZXIgYSB0cmFuc2Zlci1hbGwtb3V0LlxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU3VyZ2ljYWwgZGVsZXRlIGJ5IHJvdyBpZHMg4oCUIGRvZXMgTk9UIHRvdWNoIHRoZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAgICAgICAgICAvLyBDb3VudGVycGFydCB0byBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIGNhc2VzIChUcmFuc2Zlckxpc3QgZG91YmxlLVxuICAgICAgICAgICAgLy8gY2xpY2spIHdoZXJlIHRoZSBjYWxsZXIgd2FudHMgdG8gcmVtb3ZlIHNwZWNpZmljIHJvd3Mgd2l0aG91dFxuICAgICAgICAgICAgLy8gaGlqYWNraW5nIHRoZSB1c2VyJ3MgY3VycmVudCBncmlkIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIGRlbGV0ZVJvd3M6IChyb3dJZHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvd0lkcyB8fCByb3dJZHMubGVuZ3RoID09PSAwKSByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQocm93SWRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSByb3dzLmZpbHRlcigocm93KSA9PiAhaWRTZXQuaGFzKHJvdy5pZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogKHJvd3MpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQocm93cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93czogKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChvYnNlcnZlUm93KG5ld1JvdykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKG5ld1Jvdy5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1Jvd3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU2VlIGRlbGV0ZVNlbGVjdGVkUm93cyBmb3IgdGhlIHJhdGlvbmFsZSDigJQga2VlcCByb3dzUmVmIGluXG4gICAgICAgICAgICAgICAgLy8gc3luYyB3aXRoIHRoZSBtdXRhdGVkIGxvY2FsIHJvd3MgYXJyYXkgc28gdGhlIGBnZXQgcm93c2BcbiAgICAgICAgICAgICAgICAvLyBnZXR0ZXIgcmV0dXJucyBjdXJyZW50IGRhdGEgYWZ0ZXIgYWRkUm93cy5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgbnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxOdW1iZXJPZlJvd3MgLyByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckhhbmRsZSAmJiBmaWx0ZXJIYW5kbGUuYXBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBmb3JtQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQgKyBcIl9lZGl0X2Zvcm1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkgcmV0dXJuO1xuICAgICAgICBpZiAoR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAgIEdyYWJDb250ZXh0LmdyYWIocHJvcHMuaGFuZGxlLCB7XG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICByb3dJbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb21wb25lbnRJZDogcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgQ3Vyc29yT3ZlcmxheS5zaG93KCk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChcbiAgICAgICAgICAgIEV2ZW50VHlwZS5ST1dfR1JBQl9TVEFSVCxcbiAgICAgICAgICAgIG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKSB7XG4gICAgICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVGFibGVCb2R5Jyk7XG4gICAgICAgIGlmICh0Ym9keSAhPT0gbnVsbCAmJiB0eXBlb2YgdGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxXaWR0aCh0Ym9keS5vZmZzZXRXaWR0aCAtIHRib2R5LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uIG9ucmVzaXplKCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlcXVlc3RTb3J0ID0gKGV2ZW50LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBpc0Rlc2MgPSBvcmRlckJ5ID09PSBwcm9wZXJ0eSAmJiBvcmRlciA9PT0gJ2Rlc2MnO1xuICAgICAgICBzZXRPcmRlcihpc0Rlc2MgPyAnYXNjJyA6ICdkZXNjJyk7XG4gICAgICAgIHNldE9yZGVyQnkocHJvcGVydHkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkcyA9IHJvd3MubWFwKG4gPT4gbi5uYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1NlbGVjdGVkcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gc2VsZWN0ZWRbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gc2VsZWN0ZWQuaW5kZXhPZihpZCk7XG4gICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIGlmIChwcm9wcy5tdWx0aVNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIC8vIFRvZ2dsZSBiZWhhdmlvdXI6IGNsaWNraW5nIGFuIGFscmVhZHktc2VsZWN0ZWQgcm93IHJlbW92ZXNcbiAgICAgICAgICAgICAgICAvLyBpdDsgb3RoZXJ3aXNlIGFkZCBpdCB0byB0aGUgc2VsZWN0aW9uLiBXaXRob3V0IHRoaXMsIHRoZVxuICAgICAgICAgICAgICAgIC8vIG11bHRpLXNlbGVjdCBwaWNrZXIgKGUuZy4gTXVsdGlMb29rdXBGaWVsZCkgbGVhdmVzIHVzZXJzXG4gICAgICAgICAgICAgICAgLy8gdW5hYmxlIHRvIGJhY2sgb3V0IGEgcm93IHRoZXkgdGlja2VkIGJ5IGFjY2lkZW50LlxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQuc2xpY2UoMCwgZXhpc3RpbmdJbmRleCksIC4uLnNlbGVjdGVkLnNsaWNlKGV4aXN0aW5nSW5kZXggKyAxKV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWQsIGlkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFNpbmdsZS1zZWxlY3Q6IG5vLW9wIG9uIHJlLWNsaWNrIChwcmVzZXJ2ZWQgZnJvbSBwcmlvclxuICAgICAgICAgICAgICAgIC8vIGJlaGF2aW91ciDigJQgc2luZ2xlLXJvdyBncmlkcyByZWx5IG9uIHRoaXMgdG8gYXZvaWRcbiAgICAgICAgICAgICAgICAvLyBhY2NpZGVudGFsIGRlc2VsZWN0IGR1cmluZyBjZWxsIGVkaXRzKS5cbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBbaWRdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKG5ld1NlbGVjdGVkKTtcblxuICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpcmVTZWxlY3Rpb25FdmVudCgpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZykgJiYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZSkgfHwgY29uZmlnLmdyaWRUeXBlID09PSAnVElMRScpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jvd0dyYWJiYWJsZShyb3cpIHtcbiAgICAgICAgcmV0dXJuIHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dEcmFnRGlzYWJsZWQocm93KSB7XG4gICAgICAgIGlmICghZHJhZ1NwZWMuZGlzYWJsZWRXaGVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoXG4gICAgICAgICAgICAnUk9XLScgKyByb3cuaWQgKyAnLWRyYWctZGlzYWJsZWQnLFxuICAgICAgICAgICAgZHJhZ1NwZWMuZGlzYWJsZWRXaGVuLFxuICAgICAgICAgICAgcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAge3Jvdzogcm93fSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0Q3Vyc29yKGN1cnNvcikge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvciB8fCAnZGVmYXVsdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VFbnRlcihyb3cpIHtcbiAgICAgICAgaWYgKCFpc1Jvd0dyYWJiYWJsZShyb3cpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPbmx5IHNob3cgZ3JhYiBjdXJzb3IgaWYgbm90IGFscmVhZHkgaG9sZGluZyBzb21ldGhpbmdcbiAgICAgICAgaWYgKCFHcmFiQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBzZXRDdXJzb3Iocm93R3JhYlNwZWMuY3Vyc29yIHx8ICdncmFiJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVSb3dNb3VzZUxlYXZlKCkge1xuICAgICAgICBzZXRDdXJzb3IoJ2RlZmF1bHQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCwgcm93LCBpbmRleCkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNsb3Nlc3QoJy5lZGl0Q2VsbCcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHJvd3NHcmFiYmFibGUgJiYgIWlzUm93RHJhZ0Rpc2FibGVkKHJvdykpIHtcbiAgICAgICAgICAgIGhhbmRsZVJvd0dyYWJUb2dnbGUocm93LCBpbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCByb3cuaWQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNlbGxDbGljayhldmVudCwgaWQsIGNvbHVtbikge1xuICAgICAgICBpZiAoY29sdW1uLmZpZWxkVHlwZSAhPT0gJ2RvY3VtZW50Jykge1xuICAgICAgICAgICAgLy8gVE9ETyA6IEV2YWx1YXRlIGlmIHRoaXMgY2FsbCBpcyBuZWNlc3NhcnlcbiAgICAgICAgICAgIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgIHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZShpZCwgY29sdW1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVBhZ2UoZXZlbnQsIG5ld1BhZ2UpIHtcbiAgICAgICAgY3JpdGVyaWEuY3VycmVudFBhZ2UgPSBuZXdQYWdlICsgMTtcbiAgICAgICAgc2V0UGFnZShuZXdQYWdlKTtcbiAgICAgICAgc2VhcmNoKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UoZXZlbnQpIHtcbiAgICAgICAgc2V0Um93c1BlclBhZ2Uocm93c1BlclBhZ2UgPT4gZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgc2V0UGFnZSgwKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlUm93ID0gKHJvdykgPT4ge1xuICAgICAgICAvKmxldCBvYnNlcnZhYmxlUm93ID0gb2JzZXJ2YWJsZShyb3cpO1xuICAgICAgICBvYnNlcnZlKFxuICAgICAgICAgICAgb2JzZXJ2YWJsZVJvdyxcbiAgICAgICAgICAgIGNoYW5nZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IGNoYW5nZS5vbGRWYWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaENlbGwocm93LmlkLCBjaGFuZ2UubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlUm93OyovXG5cbiAgICAgICAgcmV0dXJuIHJvdztcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc0RhdGEoZGF0YSwgY29uZikge1xuICAgICAgICBzZXRUb3RhbE51bWJlck9mUm93cyhkYXRhLnRvdGFsTnVtYmVyT2ZSZWNvcmRzID8gZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA6IGRhdGEucmVjb3Jkcy5sZW5ndGgpO1xuXG4gICAgICAgIHJvd3NSZWYuY3VycmVudCA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgdXBkYXRlUm93Q2xhc3NlcyhkYXRhLnJlY29yZHMpO1xuICAgICAgICBsZXQgdGFibGVSb3dzID0gW107XG4gICAgICAgIGxldCByZWNvcmRzID0gZGF0YS5yZWNvcmRzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRhYmxlUm93cy5wdXNoKG9ic2VydmVSb3cocmVjb3Jkc1tpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Um93cyh0YWJsZVJvd3MpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IChhY3Rpb25Db25maWcgPSBudWxsLCBldmVudCkgPT4ge1xuICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgY29uZiA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZXJ2aWNlID0gIVV0aWxzLmlzTnVsbChjb25mLmRhdGFTZXJ2aWNlKSA/IGNvbmYuZGF0YVNlcnZpY2UgOiAhVXRpbHMuaXNOdWxsKGFjdGlvbkNvbmZpZykgPyBhY3Rpb25Db25maWcuZGF0YVNlcnZpY2UgOiBudWxsO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzZXJ2aWNlKSkge1xuICAgICAgICAgICAgbGV0IHNlcnZpY2VUeXBlID0gc2VydmljZS50eXBlO1xuICAgICAgICAgICAgaWYgKCFzZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlID0gJ3JwYyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgfHwgc2VydmljZVR5cGUgPT09ICdyZXN0Jykge1xuICAgICAgICAgICAgICAgIGxldCBtZXRob2QgPSBzZXJ2aWNlVHlwZSA9PT0gJ3JwYycgPyBpbnZva2VScGMgOiBpbnZva2VSZXN0O1xuICAgICAgICAgICAgICAgIG1ldGhvZCh7XG4gICAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogcHJvcHMuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICB2aWV3SWQ6IHByb3BzLnZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGEocmVzdWx0LCBjb25mKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBpZihlLmVycm9yVHlwZSAhPT0gJ0lOVkFMSURfUEFSQU1FVEVSJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucHVibGlzaEVycm9yTWVzc2FnZShlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHNlcnZpY2UgdHlwZSA6ICcgKyBzZXJ2aWNlVHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uQ29uZmlnICYmIGFjdGlvbkNvbmZpZy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gYXBwbGljYXRpb25NYW5hZ2VyLnJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZShhY3Rpb25Db25maWcudmFsdWUpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgaWYgKCFyb3dzUGVyUGFnZUxvYWRpbmcpIHtcbiAgICAgICAgICAgIHNldFJvd3NQZXJQYWdlTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzUGVyUGFnZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBldmVudEhhbmRsaW5nQ29uZmlnID0gVXRpbHMuaXNOdWxsKGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnKSA/IHt9IDogY29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWc7XG4gICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIGNvbmZpZyk7XG4gICAgICAgIGxldCBpc0VkaXRhYmxlID0gZmFsc2U7XG4gICAgICAgIGxldCB2aXNpYmxlQ29sdW1uQ291bnQgPSAwO1xuXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICBsZXQgaGlkZGVuID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKGNvbHVtbiwgJ2hpZGRlbicsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihoaWRkZW4sIHByb3BzLmNvbmZpZy5pZCkpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlQ29sdW1uQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSBjb25maWcuY29sdW1uc1tpXTtcblxuICAgICAgICAgICAgaWYgKCFpc0VkaXRhYmxlICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgaXNFZGl0YWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2V0RWRpdGFibGUodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKCFjb2x1bW4uYXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID0gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChwcm9wcy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnLCBjb2x1bW4sIHZpc2libGVDb2x1bW5Db3VudCk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb2x1bW4uYXR0cmlidXRlcykgJiYgY29sdW1uLmF0dHJpYnV0ZXNbJ2VkaXRhYmxlJ10gPT09IHRydWUgJiYgVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRFZGl0b3IgPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmZpZWxkVHlwZSA9ICdURVhUX0ZJRUxEJztcbiAgICAgICAgICAgICAgICBkZWZhdWx0RWRpdG9yLmlkID0gY29sdW1uLmlkICsgJ0VkaXRvcic7XG5cbiAgICAgICAgICAgICAgICBjb2x1bW4uZWRpdG9yID0gZGVmYXVsdEVkaXRvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgY3JpdGVyaWEuZGF0YVF1ZXJ5TmFtZSA9IGNvbmZpZy5kYXRhUXVlcnlOYW1lO1xuXG4gICAgICAgIGxldCBoYXNMb2FkRXZlbnQ7XG4gICAgICAgIGxldCBsb2FkU3Vic2NyaXB0aW9ucyA9IGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucy5maWx0ZXIoKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uLmV2ZW50VHlwZSA9PT0gJ0NPTVBPTkVOVF9MT0FEJyk7XG4gICAgICAgIGZvciAoY29uc3QgbG9hZFN1YnNjcmlwdGlvbiBvZiBsb2FkU3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgaWYgKGxvYWRTdWJzY3JpcHRpb24uYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmFjdGlvblR5cGUgPT09ICdsb2FkRGF0YScpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNMb2FkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGF1dG9Mb2FkRGF0YSA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdhdXRvTG9hZERhdGEnLCBudWxsKTtcbiAgICAgICAgaWYgKCFoYXNMb2FkRXZlbnQgJiYgKGF1dG9Mb2FkRGF0YSA9PT0gbnVsbCB8fCBhdXRvTG9hZERhdGEgPT09IHRydWUpKSB7XG4gICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbnVsbCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBldmVudCk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuZGF0YSkpIHtcbiAgICAgICAgICAgIGxldCBjb25mID0gY29uZmlnO1xuICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb25mKSkge1xuICAgICAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb2Nlc3NEYXRhKHByb3BzLmRhdGEsIGNvbmYpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLmRhdGFdKTtcblxuICAgIGZ1bmN0aW9uIGFkZFJvd0ZvY3VzTGlzdGVuZXIocm93KSB7XG4gICAgICAgICQoJyNST1ctJyArIHJvdy5pZClcbiAgICAgICAgICAgIC5mb2N1c291dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZEVsZW1lbnQgb2Ygc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudCAhPT0gcm93LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZC5wdXNoKHNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd0NsYXNzZXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jbGFzc05hbWUgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAnY2xhc3NFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuY2xhc3NFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMgPSAobmV3Um93cykgPT4ge1xuICAgICAgICBpZiAobmV3Um93cykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5yZWFkT25seSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdST1ctJyArIHJvdy5pZCArICdyZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyA9IChjb2x1bW4sIG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGVzICYmIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yKSB7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgIGlmICghcm93LmNvbHVtblJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvdy5jb2x1bW5SZWFkT25seVtjb2x1bW4uaWRdID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ0NPTC0nICsgcm93LmlkICsgJy0nICsgY29sdW1uLmlkICsgJy1yZWFkT25seUV2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5wcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyhwcm9wcy5jb25maWcuaWQpO1xuICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCByb3dzKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuREFUQV9BUlJJVkVELCBldmVudCk7XG5cbiAgICAgICAgLy8gUGxhaW4gUmVhY3QtcHJvcCBjYWxsYmFjayBmb3IgY29uc3VtZXJzIHRoYXQgd2FudCB0byByZWFjdCB0byBhXG4gICAgICAgIC8vIGRhdGEgbG9hZCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV2ZW50TWFuYWdlciBzdWJzY3JpcHRpb25cbiAgICAgICAgLy8gZGFuY2UuIFJlY2VpdmVzIHRoZSBmcmVzaGx5LXJlbmRlcmVkIHJvd3MgYXJyYXkuIFVzZWQgYnlcbiAgICAgICAgLy8gTXVsdGlMb29rdXBGaWVsZCB0byBwcmUtc2VsZWN0IHJvd3MgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGVcbiAgICAgICAgLy8gZmllbGQncyB2YWx1ZSwgc28gdGhlIG9wZXJhdG9yIGNhbiBzZWUgd2hpY2ggcmVzdWx0cyB0aGV5IGhhdmVcbiAgICAgICAgLy8gYWxyZWFkeSBhZGRlZC5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25Sb3dzTG9hZGVkKSkge1xuICAgICAgICAgICAgcHJvcHMub25Sb3dzTG9hZGVkKHJvd3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGlsZSBncmlkcyBhdXRvLXNlbGVjdCB0aGUgZmlyc3Qgcm93IGFmdGVyIGEgbG9hZCB3aGVuIG5vXG4gICAgICAgIC8vIHNlbGVjdGlvbiBpcyBpbiBwbGFjZSB5ZXQsIHNvIHRoZSBjb25zdW1lciB2aWV3IGFsd2F5cyBoYXMgYVxuICAgICAgICAvLyBjdXJyZW50bHktc2VsZWN0ZWQgaXRlbSB0byByZW5kZXIgZGV0YWlscyBmb3IuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIENvbmZpZ3VyYWJsZSBwZXItaW5zdGFuY2UgdmlhIGB0aWxlQXV0b1NlbGVjdGAuIERlZmF1bHRzIHRvXG4gICAgICAgIC8vIHRydWUgKGV4aXN0aW5nIGJlaGF2aW91cikuIFZpZXdzIGxpa2UgdGhlIHJlZ2lzdHJhdGlvblxuICAgICAgICAvLyBwcmltYXJ5LWNvbnRhY3QgcGlja2VyIHNldCBpdCB0byBmYWxzZSBiZWNhdXNlIGF1dG8tc2VsZWN0aW5nXG4gICAgICAgIC8vIHdvdWxkIGNyZWF0ZSBhIG1pc2xlYWRpbmcgZGVmYXVsdCDigJQgdGhlIHVzZXIgbXVzdCBhY3RpdmVseVxuICAgICAgICAvLyBjaG9vc2UuIFRoZSBEQVRBX0FSUklWRUQtZHJpdmVuIHJlYmluZCBvbiBiYWNrLW5hdiAoc2VlXG4gICAgICAgIC8vIHByaW1hcnktY29udGFjdC5qc29uKSBzdGlsbCB3b3JrcyBiZWNhdXNlIGl0IHNldHMgdGhlXG4gICAgICAgIC8vIHNlbGVjdGlvbiBleHBsaWNpdGx5IHZpYSBhcGkuc2VsZWN0KCkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEZpcmluZyBTRUxFQ1RJT05fQ0hBTkdFIGlubGluZSAobm90IHZpYSBmaXJlU2VsZWN0aW9uRXZlbnQsXG4gICAgICAgIC8vIHdoaWNoIHdvdWxkIHJlYWQgdGhlIHN0aWxsLXN0YWxlIGBzZWxlY3RlZGAgc3RhdGUgb24gdGhpc1xuICAgICAgICAvLyB0aWNrKSBzbyB0aGUgZG93bnN0cmVhbSBzdWJzY3JpYmVyIHdha2VzIHVwIG9uIHRoZSBzYW1lIHRpY2tcbiAgICAgICAgLy8gYXMgdGhlIGRhdGEgYXJyaXZhbC5cbiAgICAgICAgY29uc3QgYXV0b1NlbGVjdCA9IFV0aWxzLmlzTnVsbChjb25maWc/LnRpbGVBdXRvU2VsZWN0KSA/IHRydWUgOiBjb25maWcudGlsZUF1dG9TZWxlY3QgPT09IHRydWU7XG4gICAgICAgIGlmIChhdXRvU2VsZWN0ICYmIGNvbmZpZz8uZ3JpZFR5cGUgPT09ICdUSUxFJyAmJiByb3dzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJvd0lkID0gcm93c1swXS5pZDtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Um93TGlzdCA9IFtmaXJzdFJvd0lkXTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKGZpcnN0Um93TGlzdCk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3MgPSBnZXRTZWxlY3RlZFJvd3MoZmlyc3RSb3dMaXN0KTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBzZWxlY3Rpb25FdmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGVsZXRlZFJvd3MpICYmIGRlbGV0ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZGVsZXRlZFJvd3MpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuUk9XX0RFTEVURUQsIGV2ZW50KTtcbiAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuICAgIH0sIFtkZWxldGVkUm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMucm93cykpIHtcbiAgICAgICAgICAgIGxldCByb3dWYWx1ZXMgPSBbXTtcblxuICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcHJvcHMucm93cztcbiAgICAgICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwcm9wcy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcm93VmFsdWVzLnB1c2gob2JzZXJ2ZVJvdyhyb3cpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzKGNvbHVtbiwgcHJvcHMucm93cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd1ZhbHVlcztcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgIHNldFJvd3Mocm93VmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5yb3dzXSk7XG5cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzKHJvd3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMoY29sdW1uLCByb3dzKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBmaXJlU2VsZWN0aW9uRXZlbnQoKTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBpZCA9PiBzZWxlY3RlZC5pbmRleE9mKGlkKSAhPT0gLTE7XG4gICAgY29uc3QgZWRpdG9yQ2hhbmdlSGFuZGxlciA9IChyb3dJZCwgZmllbGQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGlmIChyb3cuaWQgPT09IHJvd0lkKSB7XG4gICAgICAgICAgICAgICAgVXRpbHMudXBkYXRlTmVzdGVkUHJvcGVydHkocm93LCBmaWVsZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gcHJvcHMuY29uZmlnLmNvbHVtbnNbaV07XG4gICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXNbJ2ZpbHRlcmFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVDZWxsID0gKHJvdywgY29sdW1uTmFtZSwgY2VsbEhhbmRsZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGxzRW50cnkgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsc0VudHJ5LnJvd0lkID09PSByb3cuaWQpIHtcbiAgICAgICAgICAgICAgICByb3dDZWxscyA9IGNlbGxzRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSB8fCByb3dDZWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJvd0NlbGxzID0ge307XG4gICAgICAgICAgICByb3dDZWxscy5yb3dJZCA9IHJvdy5pZDtcbiAgICAgICAgICAgIGNlbGxzLnB1c2gocm93Q2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q2VsbHNbY29sdW1uTmFtZV0gPSBjZWxsSGFuZGxlO1xuICAgIH07XG5cbiAgICBjb25zdCByZWZyZXNoQ2VsbCA9IChyb3dJZCwgY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsLnJvd0lkID09PSByb3dJZCkge1xuICAgICAgICAgICAgICAgIHJvd0NlbGxzID0gY2VsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSkge1xuICAgICAgICAgICAgbGV0IGNlbGwgPSByb3dDZWxsc1tjb2x1bW5OYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY2VsbCkpIHtcbiAgICAgICAgICAgICAgICBjZWxsLmFwaS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlQWxsUm93RXJyb3JzQnlDb2x1bW4gPSAoY29sdW1uTmFtZSwgcm93RXJyb3JzKSA9PiB7XG4gICAgICAgIGlmIChyb3dFcnJvcnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSByb3dFcnJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93RXJyb3JzW2ldLmNvbHVtbiA9PT0gY29sdW1uTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByb3dFcnJvcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJvd0Vycm9ySGFuZGxlciA9IChyb3dJZCwgZXJyb3IsIGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCB8fCAhcm93RXJyb3JNYXBbcm93SWRdKSB7XG4gICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCFyb3dFcnJvck1hcFtyb3dJZF0uZmluZChyb3dFcnJvciA9PiByb3dFcnJvci5jb2x1bW4gPT09IGNvbHVtbikpIHtcbiAgICAgICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0ucHVzaChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbihjb2x1bW4sIHJvd0Vycm9yTWFwW3Jvd0lkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc1Jvd0Vycm9yc0VtcHR5ID0gKCkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkpIHtcbiAgICAgICAgICAgIGlmIChyb3dFcnJvck1hcFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUNoYW5nZUNhbGxiYWNrID0gKHZhbHVlUm93cykgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIodmFsdWVSb3dzLCAhaXNSb3dFcnJvcnNFbXB0eSgpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBDYWNoZSB0aGUgY29tcGlsZWQgSGFuZGxlYmFycyB0ZW1wbGF0ZSBhY3Jvc3MgdGlsZSByZW5kZXJzIHNvIGEgNzUtcm93XG4gICAgLy8gZ3JpZCBkb2Vzbid0IHJlY29tcGlsZSB0aGUgc2FtZSBzdHJpbmcgNzUgdGltZXMgcGVyIHJlbmRlciBwYXNzLiBLZXllZFxuICAgIC8vIGJ5IHRoZSByYXcgdGVtcGxhdGUgc3RyaW5nIHNvIGEgY29uZmlnIHN3YXAgcmVidWlsZHMgYXV0b21hdGljYWxseS5cbiAgICBjb25zdCB0aWxlVGVtcGxhdGVDYWNoZVJlZiA9IFJlYWN0LnVzZVJlZih7a2V5OiBudWxsLCBmbjogbnVsbH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0VGlsZUxhYmVsKHJvdykge1xuICAgICAgICAvLyBXaGVuIHRpbGVEaXNwbGF5VGVtcGxhdGUgaXMgc2V0LCByZW5kZXIgcmljaCBIVE1MIOKAlCB0aGUgY29sdW1uXG4gICAgICAgIC8vIGxpc3QgYmVjb21lcyBhIG5vLW9wIGZvciB0aGUgdGlsZSBib2R5IChjb2x1bW5zIHN0aWxsIGRyaXZlIHRhYmxlXG4gICAgICAgIC8vIG1vZGUgKyB0aGUgY29sdW1uLWNvbmZpZyBtZXRhZGF0YTsgdGhleSdyZSBub3QgZHVwbGljYXRlZCBhc1xuICAgICAgICAvLyB0ZXh0KS4gT3RoZXJ3aXNlIHdlIGZhbGwgdGhyb3VnaCB0byB0aGUgY29sdW1uIGl0ZXJhdGlvbiwgd2hpY2hcbiAgICAgICAgLy8gaXMgdGhlIGxlZ2FjeSBkZWZhdWx0LiBNaXJyb3JzIEh0bWxQYW5lbDogSGFuZGxlYmFycyBjb21waWxlLFxuICAgICAgICAvLyBhcHBseSBhZ2FpbnN0IHRoZSByb3csIHJlbmRlciB2aWEgSFRNTFJlbmRlcmVyLiBTdXBwb3J0cyBuZXN0ZWRcbiAgICAgICAgLy8gcGF0aHMgKHt7cGVyc29uLm5hbWVzfX0pIGFuZCB0aGUgc3RhbmRhcmQgaGVscGVyIHNldFxuICAgICAgICAvLyAoZXEgLyBuZSAvIGx0IC8gZ3QgLyBsdGUgLyBndGUgLyBhbmQgLyBvcikgcmVnaXN0ZXJlZCBhYm92ZS5cbiAgICAgICAgY29uc3QgdGlsZURpc3BsYXlUZW1wbGF0ZSA9IGNvbmZpZy50aWxlRGlzcGxheVRlbXBsYXRlO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh0aWxlRGlzcGxheVRlbXBsYXRlKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAodGlsZVRlbXBsYXRlQ2FjaGVSZWYuY3VycmVudC5rZXkgIT09IHRpbGVEaXNwbGF5VGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGlsZVRlbXBsYXRlQ2FjaGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogdGlsZURpc3BsYXlUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZuOiBIYW5kbGViYXJzLmNvbXBpbGUodGlsZURpc3BsYXlUZW1wbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IHRpbGVUZW1wbGF0ZUNhY2hlUmVmLmN1cnJlbnQuZm4ocm93KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEhUTUxSZW5kZXJlciBodG1sPXtodG1sfS8+O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IGJsYW5rIHRoZSB3aG9sZSBncmlkIGJlY2F1c2Ugb25lIHRpbGUncyB0ZW1wbGF0ZVxuICAgICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYSBtaXNzaW5nIG5lc3RlZCBrZXk7IGxvZyArIGZhbGwgdGhyb3VnaCB0b1xuICAgICAgICAgICAgICAgIC8vIHRoZSBsZWdhY3kgcmVuZGVyZXIgc28gdGhlIHVzZXIgc2VlcyAqc29tZXRoaW5nKi5cbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbRGF0YUdyaWRdIHRpbGVEaXNwbGF5VGVtcGxhdGUgcmVuZGVyIGZhaWxlZCBmb3Igcm93Jywgcm93LCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtjb25maWcuY29sdW1ucy5tYXAoY29sdW1uID0+IChcbiAgICAgICAgICAgICAgICAgICAgIWNvbHVtbi5hdHRyaWJ1dGVzLmhpZGRlbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2NvdW50ZXIrK30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYWROZXN0ZWRQcm9wZXJ0eSBoYW5kbGVzIGRvdHRlZCBpZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpa2UgXCJwZXJzb24ubmFtZXNcIiDigJQgZGlyZWN0IHJvd1tpZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJyYWNrZXQgYWNjZXNzIG9ubHkgd29ya2VkIGZvciBmbGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZHMgYW5kIHNpbGVudGx5IHJlbmRlcmVkIGJsYW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBsaXZlZCB1bmRlciBhIHN1Yi1vYmplY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNaXJyb3JzIHRoZSBTVEFOREFSRC1tb2RlIHJlc29sdXRpb24gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhYmxlQ2VsbENvbnRlbnQuanN4LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMucmVhZE5lc3RlZFByb3BlcnR5KHJvdywgIVV0aWxzLmlzTnVsbChjb2x1bW4uZGF0YUJpbmRpbmcpID8gY29sdW1uLmRhdGFCaW5kaW5nIDogY29sdW1uLmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW5kZXJUaWxlKHJvdywga2V5KSB7XG4gICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICByZXR1cm4gKDxHcmlkIGl0ZW0geHMgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyhwcm9wcy5jb25maWcudGlsZVN0eWxlLCB7XG4gICAgICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXG4gICAgICAgICAgICBtaW5XaWR0aDogJzIwMHB4J1xuICAgICAgICB9KX0ga2V5PXtrZXl9PlxuICAgICAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBjb2xvcj17XCJzZWNvbmRhcnlcIn1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogaXNJdGVtU2VsZWN0ZWQgPyAnMXB4IHNvbGlkIDFweCBzb2xpZCAjZjJhOTAwJyA6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBpc0l0ZW1TZWxlY3RlZCA/ICcjZmZmOGUxJyA6ICcjZmFmYWZhJyxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGdldFRpbGVMYWJlbChyb3cpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvR3JpZD4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlclRpbGVzKCkge1xuICAgICAgICBpZiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8vIFRpbGUgZ3JpZCBoYXMgbm8gbmF0aXZlIGVtcHR5LXJvdyBhZmZvcmRhbmNlIGxpa2UgdGhlIHRhYmxlXG4gICAgICAgICAgICAvLyBwYXRoIChgb3VpVGFibGUtZW1wdHlgIENTUyksIHNvIHBhaW50IHRoZSBtZXNzYWdlIGlubGluZS5cbiAgICAgICAgICAgIC8vIENhbGxlciBjYW4gb3ZlcnJpZGUgdmlhIGBjb25maWcuZW1wdHlNZXNzYWdlYCBmb3Igdmlldy1cbiAgICAgICAgICAgIC8vIHNwZWNpZmljIGNvcHkgKFwiTm8gcHJvY3VyZW1lbnRzIHlldFwiLCBldGMpLlxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHByb3BzLmNvbmZpZz8uZW1wdHlNZXNzYWdlIHx8ICdObyBpdGVtcyB0byBzaG93JztcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEdyaWQgaXRlbSB4cz17MTJ9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogJzEyMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjOWU5ZTllJyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6ICcwLjg3NXJlbScsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTdHlsZTogJ2l0YWxpYycsXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIHttZXNzYWdlfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5tYXAoKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxJZCA9IGBlbmhhbmNlZC10YWJsZS1jaGVja2JveC0ke2luZGV4fWA7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3cuaW5kZXggPSBpbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJUaWxlKHJvdywgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlKGNvbHVtbiwgaW5kZXgpIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGVzW2NvbHVtbi5pZCArIGluZGV4XSkpIHtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSB7fTtcbiAgICAgICAgICAgIGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdID0gaGFuZGxlO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb2x1bW5MYXlvdXRIYW5kbGVzW2NvbHVtbi5pZCArIGluZGV4XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVDZWxsRWRpdG9ySGFuZGxlKGNvbHVtbikge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZXNbY29sdW1uLmlkICsgXCJfZWRpdG9yXCJdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVkaXRvckhhbmRsZXNbY29sdW1uLmlkICsgXCJfZWRpdG9yXCJdO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIHZpc2libGUgJiZcbiAgICAgICAgPGRpdiBpZD17cHJvcHMuY29uZmlnLmlkfSBjbGFzc05hbWU9e1V0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICdjbGFzc05hbWUnLCBudWxsKX0gc3R5bGU9eyhVdGlscy5pc051bGwocHJvcHMuaGFzQm9yZGVyKSB8fCBwcm9wcy5oYXNCb3JkZXIgPT09IHRydWUpID9cbiAgICAgICAgICAgIFV0aWxzLm1lcmdlU3R5bGVzKHtcbiAgICAgICAgICAgICAgICBtYXJnaW46ICcwJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAvLyBUSUxFIGdyaWRzIGZpbGwgdGhlaXIgc2xvdCB2aWEgZmxleCBzbyBhIDEwMCUtaGVpZ2h0IGdyaWQgY2FuXG4gICAgICAgICAgICAgICAgLy8gY2VudHJlIGl0cyBlbXB0eSBtZXNzYWdlIChwZXJjZW50YWdlIGhlaWdodHMgZG9uJ3QgcmVzb2x2ZSBvZmZcbiAgICAgICAgICAgICAgICAvLyBhIG1pbi1oZWlnaHQtb25seSBhbmNlc3RvcikuXG4gICAgICAgICAgICAgICAgLi4uKHByb3BzLmNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnID8ge2Rpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbid9IDoge30pXG4gICAgICAgICAgICB9LCBwcm9wcy5jb25maWcpIDogVXRpbHMubWVyZ2VTdHlsZXMoe1xuICAgICAgICAgICAgICAgIC4uLihwcm9wcy5jb25maWcuZ3JpZFR5cGUgPT09ICdUSUxFJyA/IHtkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nfSA6IHt9KVxuICAgICAgICAgICAgfSwgcHJvcHMuY29uZmlnKX0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcubm90ZXMpID9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLm5vdGVzLm1hcCgobm90ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtub3RlS2V5Kyt9IHN0eWxlPXt7cGFkZGluZzogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5Cb3R0b206ICcwJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e25vdGUubWVzc2FnZVR5cGUgPT09ICdXQVJOJyA/ICd3YXJuaW5nJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlLm1lc3NhZ2VUeXBlID09PSAnSU5GTycgPyAnJyA6ICdkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57bm90ZS5tZXNzYWdlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXMocHJvcHMuY29uZmlnLnBhZ2VTaXplKSA/XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3twYWRkaW5nOiAnMTZweCcsIGZsZXg6ICcxIDEgYXV0bycsIG1pbkhlaWdodDogMCwgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbid9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlcmFibGUoKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17ZmlsdGVySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e3Byb3BzLmNvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcldyYXBwZXJDbGFzcz17cHJvcHMuZmlsdGVyV3JhcHBlckNsYXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXg6ICcxIDEgYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogKCFyb3dzIHx8IHJvd3MubGVuZ3RoID09PSAwKSA/ICdmbGV4JyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICghcm93cyB8fCByb3dzLmxlbmd0aCA9PT0gMCkgPyAnY2VudGVyJyA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAoIXJvd3MgfHwgcm93cy5sZW5ndGggPT09IDApID8gJ2NlbnRlcicgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghcm93cyB8fCByb3dzLmxlbmd0aCA9PT0gMCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbGwgdGhlIChub3cgZnVsbC1oZWlnaHQpIGdyaWQgYW5kIGNlbnRyZSB0aGUgZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXNzYWdlIHZlcnRpY2FsbHkgaW5zdGVhZCBvZiBwaW5uaW5nIGl0IHRvIHRoZSB0b3AuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyM5ZTllOWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzAuODc1cmVtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFN0eWxlOiAnaXRhbGljJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY29uZmlnPy5lbXB0eU1lc3NhZ2UgfHwgJ05vIGl0ZW1zIHRvIHNob3cnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGFjaW5nPXsyfSA9IDE2cHggZ2FwIGJldHdlZW4gdGlsZSBjYXJkcyAoTVVJIDEgdW5pdCA9IDhweCkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgaXRlbSB4cz17MTJ9IHNwYWNpbmc9ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzRweCA4cHggMCA4cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3dyYXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0V3JhcChlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3sgJyYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWwnOiB7IGZvbnRTaXplOiAnMC43NXJlbScgfSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJXcmFwIHRhYmxlIHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSB7YHJlc3BvbnNpdmUtdGFibGVgfSBzdHlsZT17e2hlaWdodDogcHJvcHMuaGVpZ2h0fX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZSBjbGFzc05hbWU9e2AkeydvdWlUYWJsZScgKyAocm93cy5sZW5ndGggPT09IDAgPyAnIG91aVRhYmxlLWVtcHR5JyA6ICcnKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFNwYWNpbmc9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cInRhYmxlVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzEwMCUnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzTmFtZT17J2ZpbHRlckhlYWQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICdjYWxjKDEwMCUgLSAnICsgcHJvcHMuc2Nyb2xsV2lkdGggKyAncHgpJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmlsdGVyYWJsZSgpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2ZpbHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJXcmFwcGVyQ2xhc3M9e3Byb3BzLmZpbHRlcldyYXBwZXJDbGFzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtoZWFkaW5nSGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVNlbGVjdGVkPXtzZWxlY3RlZC5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0QWxsQ2xpY2s9e2hhbmRsZVNlbGVjdEFsbENsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50PXt0b3RhbE51bWJlck9mUm93c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVIYW5kbGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJvd3MoWy4uLnJvd3NdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGJvZHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlQm9keX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21heEhlaWdodDogVXRpbHMuaXNOdWxsKHByb3BzLmJvZHlNYXhIZWlnaHQpID8gcHJvcHMuYm9keU1heEhlaWdodCA6ICc0MnZoJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtYWluVGFibGVCb2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbElkID0gYGVuaGFuY2VkLXRhYmxlLWNoZWNrYm94LSR7aW5kZXh9YDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFJvd1N0eWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMgJiYgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuc3R5bGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWVyZ2VPYmplY3RzKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnN0eWxlLCBkZWZhdWx0Um93U3R5bGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSb3dTdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IGhhbmRsZVJvd01vdXNlRW50ZXIocm93KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9e2hhbmRsZVJvd01vdXNlTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e2V2ZW50ID0+IHByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiYgcHJvcHMub25Sb3dEb3VibGVDbGljayhyb3csIGV2ZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY2hlY2tlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9eydST1ctJyArIHJvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnb3VpLXRhYmxlLXJvdyAnICsgKChoaWdobGlnaHRSb3dTZWxlY3Rpb24uY3VycmVudCA/IGlzSXRlbVNlbGVjdGVkID8gY2xhc3Nlcy50YWJsZVNlbGVjdGVkIDogY2xhc3Nlcy50YWJsZVJvdyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChyb3cuY2xhc3NOYW1lID8gKCcgJyArIHJvdy5jbGFzc05hbWUpIDogJycpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZCBwYWRkaW5nPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIICsgJ3B4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydzZWxlY3RDZWxsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7J2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RkPiA6IG51bGxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLmNvbHVtbnMubWFwKGNvbHVtbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oY29sdW1uLmF0dHJpYnV0ZXNbJ2hpZGRlbiddLCBwcm9wcy5jb25maWcuaWQpID09PSB0cnVlID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubGF5b3V0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggPyBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA6ICgxMDAgLyBjb25maWcuY29sdW1ucy5sZW5ndGgpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXshcHJvcHMuZGlzYWJsZWQgJiYgaXNJdGVtU2VsZWN0ZWQgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5mb3JtKSAmJiAhVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpID8gJ2VkaXRDZWxsJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlKGNvbHVtbiwgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkICsgXCJfbGF5b3V0XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvdz17cm93cy5maW5kKChyKSA9PiByLmlkID09PSByb3cuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb3BzLmNvbmZpZy5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmlkID09PSBjb2x1bW4uaWQpLmxheW91dCkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9IHBhcmVudD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID8gY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggOiAoMTAwIC8gY29uZmlnLmNvbHVtbnMubGVuZ3RoKSArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IXByb3BzLmRpc2FibGVkICYmIGlzSXRlbVNlbGVjdGVkICYmICFVdGlscy5pc051bGwoY29sdW1uLmVkaXRvcikgPyAnZWRpdENlbGwnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIHJvdy5pZCwgY29sdW1uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Sb3dFcnJvcj17cm93RXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDZWxsRWRpdG9ySGFuZGxlKGNvbHVtbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcj17IXByb3BzLmRpc2FibGVkICYmICFyb3cucmVhZE9ubHkgJiYgIXJvdy5jb2x1bW5SZWFkT25seT8uW2NvbHVtbj8uaWRdID8gY29sdW1uLmVkaXRvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZDYWxsYmFjaz17Y3JlYXRlQ2VsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17Y29sdW1uLnZhbGlkYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17ZWRpdG9yQ2hhbmdlSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbmZpZz17Y29sdW1ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUJpbmRpbmc9eyFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdz17cm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU9e2NvbHVtbi5maWVsZFR5cGUgfHwgY29sdW1uLmVkaXRvcj8uZmllbGRUeXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbEZvcm1hdHRlcj17Y29sdW1uLmNlbGxGb3JtYXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcml0ZXJpYT17Y3JpdGVyaWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ucj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uKSAmJiAoVXRpbHMuaXNOdWxsKHByb3BzLnBhZ2luYXRpb24pIHx8IHByb3BzLnBhZ2luYXRpb24gPT09IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ2luYXRpb24gJiYgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ25hdGlvbiA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcImdyaWQtdGFibGUtcGFnaW5hdGlvblwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnM9e3Jvd3NQZXJQYWdlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9e3RvdGFsTnVtYmVyT2ZSb3dzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZT17cm93c1BlclBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U9e3BhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tJY29uQnV0dG9uUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogJ3ByZXZpb3VzIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0SWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICduZXh0IHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93c1BlclBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVJvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsMEJBQUEsR0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFB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