@carto/kepler.gl 0.0.84 → 0.0.85

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.
@@ -60,7 +60,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
60
60
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
61
61
  var _window = require("global/window");
62
62
  var _index = require("react-palm/tasks/index.js");
63
- var _clonedeep = _interopRequireDefault(require("lodash/clonedeep"));
63
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
64
64
  var _uniq = _interopRequireDefault(require("lodash/uniq"));
65
65
  var _get = _interopRequireDefault(require("lodash/get"));
66
66
  var _xor = _interopRequireDefault(require("lodash/xor"));
@@ -1255,7 +1255,7 @@ function interactionConfigChangeUpdater(state, action) {
1255
1255
  var layerClickUpdater = exports.layerClickUpdater = function layerClickUpdater(state, action) {
1256
1256
  return _objectSpread(_objectSpread({}, state), {}, {
1257
1257
  mousePos: state.interactionConfig.coordinate.enabled ? _objectSpread(_objectSpread({}, state.mousePos), {}, {
1258
- pinned: state.mousePos.pinned ? null : (0, _clonedeep["default"])(state.mousePos)
1258
+ pinned: state.mousePos.pinned ? null : (0, _cloneDeep["default"])(state.mousePos)
1259
1259
  }) : state.mousePos,
1260
1260
  clicked: action.info && action.info.picked ? action.info : null
1261
1261
  });
@@ -2099,4 +2099,4 @@ function setLayerAnimationTimeConfigUpdater(state, _ref30) {
2099
2099
  var updates = checkTimeConfigArgs(config);
2100
2100
  return (0, _composerHelpers.pick_)('animationConfig')((0, _composerHelpers.merge_)(updates))(state);
2101
2101
  }
2102
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwicmVxdWlyZSIsIl9pbmRleCIsIl9jbG9uZWRlZXAiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VuaXEiLCJfZ2V0IiwiX3hvciIsIl9jb3B5VG9DbGlwYm9hcmQiLCJfZGF0YVV0aWxzIiwiX3Rhc2tzIiwiX3Zpc1N0YXRlQWN0aW9ucyIsIl9pbnRlcmFjdGlvblV0aWxzIiwiX2ZpbHRlclV0aWxzIiwiX2dwdUZpbHRlclV0aWxzIiwiX2RhdGFzZXRVdGlscyIsIl9rZXBsZXJUYWJsZSIsIl91dGlscyIsIl9sYXllclV0aWxzIiwiX3Zpc1N0YXRlTWVyZ2VyIiwiX3NwbGl0TWFwVXRpbHMiLCJfbGF5ZXJzIiwiX2xheWVyRmFjdG9yeSIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfY29tcG9zZXJIZWxwZXJzIiwiX3NjaGVtYXMiLCJfY29sb3JVdGlscyIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl90b1Byb3BlcnR5S2V5IiwiaSIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkaXNhYmxlU3RhY2tDYXB0dXJpbmciLCJ2aXNTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9BTklNQVRJT05fQ09ORklHIiwiZXhwb3J0cyIsImRvbWFpbiIsImN1cnJlbnRUaW1lIiwic3BlZWQiLCJpc0FuaW1hdGluZyIsInRpbWVGb3JtYXQiLCJ0aW1lem9uZSIsImRlZmF1bHRUaW1lRm9ybWF0IiwiREVGQVVMVF9FRElUT1IiLCJtb2RlIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiZmVhdHVyZXMiLCJzZWxlY3RlZEZlYXR1cmUiLCJ2aXNpYmxlIiwiSU5JVElBTF9WSVNfU1RBVEUiLCJtYXBJbmZvIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImxheWVycyIsImxheWVyRGF0YSIsImxheWVyVG9CZU1lcmdlZCIsImxheWVyT3JkZXIiLCJmaWx0ZXJzIiwiZmlsdGVyVG9CZU1lcmdlZCIsImRhdGFzZXRzIiwiZWRpdGluZ0RhdGFzZXQiLCJ1bmRlZmluZWQiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImdldERlZmF1bHRJbnRlcmFjdGlvbiIsImludGVyYWN0aW9uVG9CZU1lcmdlZCIsImxheWVyQmxlbmRpbmciLCJob3ZlckluZm8iLCJjbGlja2VkIiwibW91c2VQb3MiLCJtYXhEZWZhdWx0VG9vbHRpcHMiLCJNQVhfREVGQVVMVF9UT09MVElQUyIsInNwbGl0TWFwcyIsInNwbGl0TWFwc1RvQmVNZXJnZWQiLCJsYXllckNsYXNzZXMiLCJMYXllckNsYXNzZXMiLCJhbmltYXRpb25Db25maWciLCJlZGl0b3IiLCJmaWxlTG9hZGluZyIsImZpbGVMb2FkaW5nUHJvZ3Jlc3MiLCJsb2FkZXJzIiwibG9hZE9wdGlvbnMiLCJtZXJnZXJzIiwiVklTX1NUQVRFX01FUkdFUlMiLCJzY2hlbWEiLCJLZXBsZXJHTFNjaGVtYSIsInVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YSIsInN0YXRlIiwiX3JlZiIsImxheWVyIiwiaWR4IiwibWFwIiwibHlyIiwiZCIsInVwZGF0ZVN0YXRlT25MYXllclZpc2liaWxpdHlDaGFuZ2UiLCJuZXdTdGF0ZSIsImNvbmZpZyIsImlzVmlzaWJsZSIsImFkZE5ld0xheWVyc1RvU3BsaXRNYXAiLCJyZW1vdmVMYXllckZyb21TcGxpdE1hcHMiLCJhbmltYXRpb24iLCJlbmFibGVkIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2VVcGRhdGVyIiwiYWN0aW9uIiwib2xkTGF5ZXIiLCJmaW5kSW5kZXgiLCJsIiwiaWQiLCJwcm9wcyIsIm5ld0NvbmZpZyIsImRhdGFJZCIsIl9hY3Rpb24kbmV3Q29uZmlnIiwicmVzdENvbmZpZyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJzdGF0ZVdpdGhEYXRhSWQiLCJsYXllckRhdGFJZENoYW5nZVVwZGF0ZXIiLCJuZXh0TGF5ZXIiLCJmaW5kIiwibmV3TGF5ZXIiLCJ1cGRhdGVMYXllckNvbmZpZyIsInNob3VsZENhbGN1bGF0ZUxheWVyRGF0YSIsIm9sZExheWVyRGF0YSIsInVwZGF0ZUxheWVyRGF0YVJlc3VsdCIsImNhbGN1bGF0ZUxheWVyRGF0YSIsImFkZE9yUmVtb3ZlVGV4dExhYmVscyIsIm5ld0ZpZWxkcyIsInRleHRMYWJlbCIsIm5ld1RleHRMYWJlbCIsImN1cnJlbnRGaWVsZHMiLCJ0bCIsImZpZWxkIiwiYWRkRmllbGRzIiwiaW5jbHVkZXMiLCJkZWxldGVGaWVsZHMiLCJmZCIsImRlZmF1bHRMYWJlbCIsIkRFRkFVTFRfU0VDT05EQVJZX1RFWFRfTEFCRUwiLCJERUZBVUxUX1RFWFRfTEFCRUwiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiYWYiLCJ1cGRhdGVUZXh0TGFiZWxQcm9wQW5kVmFsdWUiLCJwcm9wIiwiaGFzT3duUHJvcGVydHkiLCJzcGxpY2UiLCJsYXllclRleHRMYWJlbENoYW5nZVVwZGF0ZXIiLCJ2YWxpZGF0ZUV4aXN0aW5nTGF5ZXJXaXRoRGF0YSIsImRhdGFzZXQiLCJsb2FkZWRMYXllciIsInNlcmlhbGl6ZUxheWVyIiwidmFsaWRhdGVMYXllcldpdGhEYXRhIiwiYWxsb3dFbXB0eUNvbHVtbiIsImlzVmFsaWRUb1NhdmUiLCJ2YWxpZGF0ZWQiLCJ0eXBlIiwiaXNDb25maWdBY3RpdmUiLCJ1cGRhdGVMYXllckRvbWFpbiIsIl9jYWxjdWxhdGVMYXllckRhdGEiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwibmV3VHlwZSIsIm9sZElkIiwiQ29uc29sZSIsImVycm9yIiwiYXNzaWduQ29uZmlnVG9MYXllciIsInZpc0NvbmZpZ1NldHRpbmdzIiwiX2NhbGN1bGF0ZUxheWVyRGF0YTIiLCJzZXR0aW5ncyIsIl9zZXR0aW5ncyRsYXllcnMiLCJvbGRMYXllck1hcCIsIm90aGVyTGF5ZXJzIiwibGF5ZXJWaXN1YWxDaGFubmVsQ2hhbmdlVXBkYXRlciIsImNoYW5uZWwiLCJ1cGRhdGVMYXllclZpc3VhbENoYW5uZWwiLCJfY2FsY3VsYXRlTGF5ZXJEYXRhMyIsImxheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlciIsIm5ld1Zpc0NvbmZpZyIsInZpc0NvbmZpZyIsIl9jYWxjdWxhdGVMYXllckRhdGE0Iiwic2V0RmlsdGVyQW5pbWF0aW9uVGltZVVwZGF0ZXIiLCJzZXRGaWx0ZXJVcGRhdGVyIiwic2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlciIsIl9yZWYyIiwiYW5pbWF0aW9uV2luZG93IiwiX2FjdGlvbiR2YWx1ZUluZGV4IiwidmFsdWVJbmRleCIsIm9sZEZpbHRlciIsIm5ld0ZpbHRlciIsInNldCIsIl9uZXdGaWx0ZXIiLCJkYXRhc2V0SWRzIiwidG9BcnJheSIsIkZJTFRFUl9VUERBVEVSX1BST1BTIiwidXBkYXRlRmlsdGVyRGF0YUlkIiwiZGF0YXNldElkIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJuZXdEYXRhc2V0IiwiZ3B1Iiwic2V0RmlsdGVyR3B1TW9kZSIsImFzc2lnbkdwdUNoYW5uZWwiLCJsYXllcklkIiwibGF5ZXJJZERpZmZlcmVuY2UiLCJ4b3IiLCJsYXllckRhdGFJZHMiLCJ1bmlxIiwibGlkIiwiZ2V0IiwibmV3RGF0YUlkcyIsImVubGFyZ2VkRmlsdGVyIiwiZW5sYXJnZWQiLCJkYXRhc2V0SWRzVG9GaWx0ZXIiLCJMSU1JVEVEX0ZJTFRFUl9FRkZFQ1RfUFJPUFMiLCJmaWx0ZXJlZERhdGFzZXRzIiwiYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyIsInVwZGF0ZUFsbExheWVyRG9tYWluRGF0YSIsInNldEZpbHRlclBsb3RVcGRhdGVyIiwiX3JlZjMiLCJuZXdQcm9wIiwiX3JlZjMkdmFsdWVJbmRleCIsInBsb3RUeXBlIiwiZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlIiwiZ2V0RmlsdGVyUGxvdCIsImFkZEZpbHRlclVwZGF0ZXIiLCJnZXREZWZhdWx0RmlsdGVyIiwibGF5ZXJDb2xvclVJQ2hhbmdlVXBkYXRlciIsIl9yZWY0Iiwib2xkVml4Q29uZmlnIiwidXBkYXRlTGF5ZXJDb2xvclVJIiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uVXBkYXRlciIsInRvZ2dsZUxheWVyQW5pbWF0aW9uVXBkYXRlciIsInRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbFVwZGF0ZXIiLCJoaWRlQ29udHJvbCIsInVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkVXBkYXRlciIsInNldExheWVyQW5pbWF0aW9uVGltZVVwZGF0ZXIiLCJfcmVmNSIsInVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyIiwiX3JlZjYiLCJlbmxhcmdlRmlsdGVyVXBkYXRlciIsInRvZ2dsZUZpbHRlckZlYXR1cmVVcGRhdGVyIiwiZmVhdHVyZVRvRmlsdGVyVmFsdWUiLCJhc3NpZ24iLCJyZW1vdmVGaWx0ZXJVcGRhdGVyIiwiX3N0YXRlJGZpbHRlcnMkaWR4IiwibmV3RmlsdGVycyIsIm5ld0VkaXRvciIsImdldEZpbHRlcklkSW5GZWF0dXJlIiwiYWRkTGF5ZXJVcGRhdGVyIiwibmV3TGF5ZXJEYXRhIiwiY3JlYXRlTGF5ZXJGcm9tQ29uZmlnIiwid2FybiIsInJlc3VsdCIsIl9hY3Rpb24kZGF0YXNldElkIiwiZGVmYXVsdERhdGFzZXQiLCJMYXllciIsInJlbW92ZUxheWVyVXBkYXRlciIsIl9yZWY3IiwibGF5ZXJUb1JlbW92ZSIsIm5ld01hcHMiLCJwaWQiLCJpc0xheWVySG92ZXJlZCIsImR1cGxpY2F0ZUxheWVyVXBkYXRlciIsIl9yZWY4Iiwib3JpZ2luYWwiLCJvcmlnaW5hbExheWVyT3JkZXJJZHgiLCJuZXdMYWJlbCIsImxhYmVsIiwicG9zdGZpeCIsImdlbmVyYXRlSGFzaElkIiwiTEFZRVJfSURfTEVOR1RIIiwibmV4dFN0YXRlIiwibmV3TGF5ZXJPcmRlcklkeCIsIm5ld0xheWVyT3JkZXIiLCJhcnJheUluc2VydCIsInJlb3JkZXJMYXllclVwZGF0ZXIiLCJfcmVmOSIsIm9yZGVyIiwicmVtb3ZlRGF0YXNldFVwZGF0ZXIiLCJkYXRhc2V0S2V5IiwiX3N0YXRlJGRhdGFzZXRzIiwibmV3RGF0YXNldHMiLCJpbmRleGVzIiwicmVkdWNlIiwibGlzdE9mSW5kZXhlcyIsImluZGV4IiwiX2luZGV4ZXMkcmVkdWNlIiwiX3JlZjEwIiwiY3VycmVudFN0YXRlIiwiaW5kZXhDb3VudGVyIiwiY3VycmVudEluZGV4IiwiX2ludGVyYWN0aW9uQ29uZmlnIiwidG9vbHRpcCIsIl9jb25maWckZmllbGRzVG9TaG93IiwiZmllbGRzVG9TaG93IiwiZmllbGRzIiwidXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXIiLCJzaG93RGF0YXNldFRhYmxlVXBkYXRlciIsInVwZGF0ZVRhYmxlQ29sb3JVcGRhdGVyIiwibmV3Q29sb3IiLCJpc1JnYkNvbG9yIiwiZXhpc3RpbmciLCJ1cGRhdGVUYWJsZUNvbG9yIiwiY29weVRhYmxlQW5kVXBkYXRlIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiaW5pdGlhbFN0YXRlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMTEiLCJfcmVmMTEkcGF5bG9hZCIsInBheWxvYWQiLCJfcmVmMTEkcGF5bG9hZCRjb25maWciLCJ2ZXJzaW9uIiwiX3JlZjExJHBheWxvYWQkb3B0aW9uIiwib3B0aW9ucyIsInZpc1N0YXRlIiwia2VlcEV4aXN0aW5nQ29uZmlnIiwibWVyZ2VkU3RhdGUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsIm1lcmdlciIsImlzVmFsaWRNZXJnZXIiLCJtZXJnZSIsImVyciIsImxheWVySG92ZXJVcGRhdGVyIiwiaW5mbyIsImludGVyYWN0aW9uQ29uZmlnQ2hhbmdlVXBkYXRlciIsImNvbnRyYWRpY3QiLCJrIiwibGF5ZXJDbGlja1VwZGF0ZXIiLCJjb29yZGluYXRlIiwicGlubmVkIiwiY2xvbmVEZWVwIiwicGlja2VkIiwibWFwQ2xpY2tVcGRhdGVyIiwibW91c2VNb3ZlVXBkYXRlciIsIl9yZWYxMiIsImV2dCIsInZhbHVlcyIsInNvbWUiLCJtb3VzZVBvc2l0aW9uIiwicG9pbnQiLCJsbmdMYXQiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJjb21wdXRlU3BsaXRNYXBMYXllcnMiLCJjbG9zZVNwZWNpZmljTWFwQXRJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwVXBkYXRlciIsIl9yZWYxMyIsIm1hcEluZGV4Iiwic20iLCJ1cGRhdGVWaXNEYXRhVXBkYXRlciIsIm5ld0RhdGFFbnRyaWVzIiwiYWNjdSIsIl9yZWYxNCIsIl9yZWYxNCRpbmZvIiwicmVzdCIsImNyZWF0ZU5ld0RhdGFFbnRyeSIsImRhdGFFbXB0eSIsInByZXZpb3VzU3RhdGUiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwidG9NZXJnZVByb3AiLCJ0b01lcmdlIiwibmV3TGF5ZXJzIiwiYXV0b0NyZWF0ZUxheWVycyIsImFkZERlZmF1bHRMYXllcnMiLCJ0b29sdGlwRmllbGRzIiwiYWRkRGVmYXVsdFRvb2x0aXBzIiwidXBkYXRlZFN0YXRlIiwicmVuYW1lRGF0YXNldFVwZGF0ZXIiLCJpbmRleFRvUmV0cmlldmUiLCJtYXBMYXllcnMiLCJsb2FkRmlsZXNVcGRhdGVyIiwiZmlsZXMiLCJfYWN0aW9uJG9uRmluaXNoIiwib25GaW5pc2giLCJsb2FkRmlsZXNTdWNjZXNzIiwibWVyZ2VfIiwiaW5pdGlhbEZpbGVMb2FkaW5nUHJvZ3Jlc3MiLCJmaWxlQ2FjaGUiLCJmaWxlc1RvTG9hZCIsImxvYWROZXh0RmlsZVVwZGF0ZXIiLCJsb2FkRmlsZVN0ZXBTdWNjZXNzVXBkYXRlciIsImZpbGVOYW1lIiwiX3N0YXRlJGZpbGVMb2FkaW5nIiwic3RhdGVXaXRoUHJvZ3Jlc3MiLCJ1cGRhdGVGaWxlTG9hZGluZ1Byb2dyZXNzVXBkYXRlciIsInByb2dyZXNzIiwicGVyY2VudCIsIm1lc3NhZ2UiLCJzdGF0ZVdpdGhDYWNoZSIsInBpY2tfIiwid2l0aFRhc2siLCJERUxBWV9UQVNLIiwibG9hZE5leHRGaWxlIiwiX2ZpbGVzVG9Mb2FkIiwiX3RvQXJyYXkyIiwiZmlsZSIsInJlbWFpbmluZ0ZpbGVzVG9Mb2FkIiwibWFrZUxvYWRGaWxlVGFzayIsIkxPQURfRklMRV9UQVNLIiwiYmltYXAiLCJnZW4iLCJuZXh0RmlsZUJhdGNoIiwicHJvY2Vzc0ZpbGVDb250ZW50IiwiY29udGVudCIsImxvYWRGaWxlc0VyciIsInByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXIiLCJfYWN0aW9uJHBheWxvYWQiLCJQUk9DRVNTX0ZJTEVfREFUQSIsImxvYWRGaWxlU3RlcFN1Y2Nlc3MiLCJwYXJzZVByb2dyZXNzIiwicHJldlByb2dyZXNzIiwibmV4dEZpbGVCYXRjaFVwZGF0ZXIiLCJfcmVmMTUiLCJfcmVmMTUkcGF5bG9hZCIsImFjY3VtdWxhdGVkIiwiVU5XUkFQX1RBU0siLCJfcmVmMTYiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjE3IiwiX3N0YXRlJGZpbGVMb2FkaW5nMiIsImFwcGx5Q1BVRmlsdGVyVXBkYXRlciIsIl9yZWYxOCIsImRhdGFJZHMiLCJmaWx0ZXJEYXRhc2V0Q1BVIiwic2V0TWFwSW5mb1VwZGF0ZXIiLCJlbXB0eSIsImRlZmF1bHRMYXllcnMiLCJmb3VuZExheWVycyIsImZpbmREZWZhdWx0TGF5ZXIiLCJfIiwibWV0YWRhdGEiLCJpc0R5bmFtaWNTcGF0aWFsSW5kZXgiLCJmaW5kRmllbGRzVG9TaG93IiwibWVyZ2VkIiwiX3JlZjIxIiwiZml4ZWREb21haW4iLCJfY2FsY3VsYXRlTGF5ZXJEYXRhNSIsImFuaW1hdGFibGVMYXllcnMiLCJhbmltYXRpb25Eb21haW4iLCJtZXJnZWREb21haW4iLCJNYXRoIiwibWluIiwibWF4IiwiSW5maW5pdHkiLCJnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIiLCJpc0luUmFuZ2UiLCJzZXRFZGl0b3JNb2RlVXBkYXRlciIsIl9yZWYyMiIsInNldEZlYXR1cmVzVXBkYXRlciIsIl9yZWYyMyIsIl9yZWYyMyRmZWF0dXJlcyIsImxhc3RGZWF0dXJlIiwicHJvcGVydGllcyIsImlzQ2xvc2VkIiwiRURJVCIsImZlYXR1cmUiLCJmaWx0ZXJJZCIsImZlYXR1cmVWYWx1ZSIsImZpbHRlcklkeCIsImZpbCIsInNldFNlbGVjdGVkRmVhdHVyZVVwZGF0ZXIiLCJfcmVmMjQiLCJkZWxldGVGZWF0dXJlVXBkYXRlciIsIl9yZWYyNSIsInNldFBvbHlnb25GaWx0ZXJMYXllclVwZGF0ZXIiLCJuZXdMYXllcklkIiwibm9uZUZpbHRlckZlYXR1cmUiLCJfZmlsdGVyJGxheWVySWQiLCJpc0xheWVySW5jbHVkZWQiLCJnZW5lcmF0ZVBvbHlnb25GaWx0ZXIiLCJzb3J0VGFibGVDb2x1bW5VcGRhdGVyIiwiX3JlZjI2IiwiY29sdW1uIiwic29ydE1vZGUiLCJjdXJyZW50TW9kZSIsIlNPUlRfT1JERVIiLCJtIiwiQVNDRU5ESU5HIiwic29ydGVkIiwic29ydERhdGFzZXRCeUNvbHVtbiIsInBpblRhYmxlQ29sdW1uVXBkYXRlciIsIl9yZWYyNyIsInBpblRhYmxlQ29sdW1ucyIsImNvcHlUYWJsZUNvbHVtblVwZGF0ZXIiLCJfcmVmMjgiLCJmaWVsZElkeCIsInRleHQiLCJkYXRhQ29udGFpbmVyIiwicm93IiwicGFyc2VGaWVsZFZhbHVlIiwidmFsdWVBdCIsImpvaW4iLCJjb3B5IiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eVVwZGF0ZXIiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnVXBkYXRlciIsIl9yZWYyOSIsIkZJTFRFUl9UWVBFUyIsInRpbWVSYW5nZSIsInVwZGF0ZXMiLCJjaGVja1RpbWVDb25maWdBcmdzIiwic3dhcF8iLCJhbGxvd2VkIiwic2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnVXBkYXRlciIsIl9yZWYzMCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy92aXMtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuaW1wb3J0IHtkaXNhYmxlU3RhY2tDYXB0dXJpbmcsIHdpdGhUYXNrfSBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzL2luZGV4LmpzJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lZGVlcCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHhvciBmcm9tICdsb2Rhc2gveG9yJztcbmltcG9ydCBjb3B5IGZyb20gJ2NvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7cGFyc2VGaWVsZFZhbHVlfSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbi8vIFRhc2tzXG5pbXBvcnQge0xPQURfRklMRV9UQVNLLCBVTldSQVBfVEFTSywgUFJPQ0VTU19GSUxFX0RBVEEsIERFTEFZX1RBU0t9IGZyb20gJ3Rhc2tzL3Rhc2tzJztcbi8vIEFjdGlvbnNcbmltcG9ydCB7XG4gIGxvYWRGaWxlc0VycixcbiAgbG9hZEZpbGVzU3VjY2VzcyxcbiAgbG9hZEZpbGVTdGVwU3VjY2VzcyxcbiAgbG9hZE5leHRGaWxlLFxuICBuZXh0RmlsZUJhdGNoXG59IGZyb20gJ2FjdGlvbnMvdmlzLXN0YXRlLWFjdGlvbnMnO1xuLy8gVXRpbHNcbmltcG9ydCB7ZmluZEZpZWxkc1RvU2hvdywgZ2V0RGVmYXVsdEludGVyYWN0aW9ufSBmcm9tICd1dGlscy9pbnRlcmFjdGlvbi11dGlscyc7XG5pbXBvcnQge1xuICBhcHBseUZpbHRlckZpZWxkTmFtZSxcbiAgYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyxcbiAgZmVhdHVyZVRvRmlsdGVyVmFsdWUsXG4gIEZJTFRFUl9VUERBVEVSX1BST1BTLFxuICBmaWx0ZXJEYXRhc2V0Q1BVLFxuICBnZW5lcmF0ZVBvbHlnb25GaWx0ZXIsXG4gIGdldERlZmF1bHRGaWx0ZXIsXG4gIGdldERlZmF1bHRGaWx0ZXJQbG90VHlwZSxcbiAgZ2V0RmlsdGVySWRJbkZlYXR1cmUsXG4gIGdldEZpbHRlclBsb3QsXG4gIGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcixcbiAgaXNJblJhbmdlLFxuICBMSU1JVEVEX0ZJTFRFUl9FRkZFQ1RfUFJPUFMsXG4gIHVwZGF0ZUZpbHRlckRhdGFJZFxufSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHthc3NpZ25HcHVDaGFubmVsLCBzZXRGaWx0ZXJHcHVNb2RlfSBmcm9tICd1dGlscy9ncHUtZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7Y3JlYXRlTmV3RGF0YUVudHJ5fSBmcm9tICd1dGlscy9kYXRhc2V0LXV0aWxzJztcbmltcG9ydCB7XG4gIHBpblRhYmxlQ29sdW1ucyxcbiAgc29ydERhdGFzZXRCeUNvbHVtbixcbiAgY29weVRhYmxlQW5kVXBkYXRlLFxuICBGaWVsZFxufSBmcm9tICd1dGlscy90YWJsZS11dGlscy9rZXBsZXItdGFibGUnO1xuaW1wb3J0IHtzZXQsIHRvQXJyYXksIGFycmF5SW5zZXJ0LCBnZW5lcmF0ZUhhc2hJZH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuXG5pbXBvcnQge2NhbGN1bGF0ZUxheWVyRGF0YSwgZmluZERlZmF1bHRMYXllcn0gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuXG5pbXBvcnQge1xuICBpc1ZhbGlkTWVyZ2VyLFxuICBWSVNfU1RBVEVfTUVSR0VSUyxcbiAgdmFsaWRhdGVMYXllcldpdGhEYXRhLFxuICBjcmVhdGVMYXllckZyb21Db25maWcsXG4gIHNlcmlhbGl6ZUxheWVyLFxuICBWaXNTdGF0ZU1lcmdlcnNcbn0gZnJvbSAnLi92aXMtc3RhdGUtbWVyZ2VyJztcblxuaW1wb3J0IHtcbiAgYWRkTmV3TGF5ZXJzVG9TcGxpdE1hcCxcbiAgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzLFxuICByZW1vdmVMYXllckZyb21TcGxpdE1hcHNcbn0gZnJvbSAndXRpbHMvc3BsaXQtbWFwLXV0aWxzJztcblxuaW1wb3J0IHtMYXllciwgTGF5ZXJDbGFzc2VzLCBMYXllckNsYXNzZXNUeXBlLCBMQVlFUl9JRF9MRU5HVEh9IGZyb20gJ2xheWVycyc7XG5pbXBvcnQge0RFRkFVTFRfVEVYVF9MQUJFTCwgREVGQVVMVF9TRUNPTkRBUllfVEVYVF9MQUJFTH0gZnJvbSAnbGF5ZXJzL2xheWVyLWZhY3RvcnknO1xuaW1wb3J0IHtcbiAgRURJVE9SX01PREVTLFxuICBTT1JUX09SREVSLFxuICBGSUxURVJfVFlQRVMsXG4gIE1BWF9ERUZBVUxUX1RPT0xUSVBTXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7cGlja18sIG1lcmdlXywgc3dhcF99IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge3Byb2Nlc3NGaWxlQ29udGVudH0gZnJvbSAnYWN0aW9ucy92aXMtc3RhdGUtYWN0aW9ucyc7XG5cbmltcG9ydCBLZXBsZXJHTFNjaGVtYSBmcm9tICdzY2hlbWFzJztcbmltcG9ydCB7aXNSZ2JDb2xvcn0gZnJvbSAndXRpbHMvY29sb3ItdXRpbHMnO1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7UmVjZWl2ZU1hcENvbmZpZ1BheWxvYWR9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBWaXNTdGF0ZUFjdGlvbnMgZnJvbSAnYWN0aW9ucy92aXMtc3RhdGUtYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBNYXBTdGF0ZUFjdGlvbnMgZnJvbSAnYWN0aW9ucy9tYXAtc3RhdGUtYWN0aW9ucyc7XG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQge0xvYWRlck9iamVjdH0gZnJvbSAnQGxvYWRlcnMuZ2wvbG9hZGVyLXV0aWxzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgSGlzdG9ncmFtQmluID0ge1xuICB4MDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB4MTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUmFuZ2VGaWVsZERvbWFpbiA9IHtcbiAgZG9tYWluOiBbbnVtYmVyLCBudW1iZXJdO1xuICBzdGVwOiBudW1iZXI7XG4gIGhpc3RvZ3JhbTogSGlzdG9ncmFtQmluW107XG4gIGVubGFyZ2VkSGlzdG9ncmFtOiBIaXN0b2dyYW1CaW5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpZWxkRG9tYWluID0ge1xuICBkb21haW46IFt0cnVlLCBmYWxzZV07XG59O1xuZXhwb3J0IHR5cGUgTXVsdGlTZWxlY3RGaWVsZERvbWFpbiA9IHtcbiAgZG9tYWluOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFRpbWVSYW5nZUZpZWxkRG9tYWluID0ge1xuICBkb21haW46IFtudW1iZXIsIG51bWJlcl07XG4gIHN0ZXA6IG51bWJlcjtcbiAgaGlzdG9ncmFtOiBIaXN0b2dyYW1CaW5bXTtcbiAgZW5sYXJnZWRIaXN0b2dyYW06IEhpc3RvZ3JhbUJpbltdO1xuICBtYXBwZWRWYWx1ZTogKE1pbGxpc2Vjb25kIHwgbnVsbClbXTtcbiAgLy8gYXV0byBnZW5lcmF0ZWQgYmFzZWQgb24gdGltZSBkb21haW5cbiAgZGVmYXVsdFRpbWVGb3JtYXQ/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBjdXN0b20gdWkgaW5wdXRcbiAgdGltZUZvcm1hdD86IHN0cmluZyB8IG51bGw7XG4gIC8vIGN1c3RvbSB1aSBpbnB1dFxuICB0aW1lem9uZT86IHN0cmluZyB8IG51bGw7XG59O1xuZXhwb3J0IHR5cGUgRmllbGREb21haW4gPVxuICB8IFJhbmdlRmllbGREb21haW5cbiAgfCBUaW1lUmFuZ2VGaWVsZERvbWFpblxuICB8IFNlbGVjdEZpZWxkRG9tYWluXG4gIHwgTXVsdGlTZWxlY3RGaWVsZERvbWFpbjtcblxuZXhwb3J0IHR5cGUgTGluZUNoYXJ0ID0ge1xuICBzZXJpZXM6IHt4OiBudW1iZXI7IHk6IG51bWJlcn1bXTtcbiAgeURvbWFpbjogW251bWJlciwgbnVtYmVyXTtcbiAgeERvbWFpbjogW251bWJlciwgbnVtYmVyXTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckJhc2UgPSB7XG4gIGRhdGFJZDogc3RyaW5nW107XG4gIGlkOiBzdHJpbmc7XG5cbiAgZnJlZXplOiBib29sZWFuO1xuXG4gIC8vIHRpbWUgcmFuZ2UgZmlsdGVyIHNwZWNpZmljXG4gIGZpeGVkRG9tYWluOiBib29sZWFuO1xuICBlbmxhcmdlZDogYm9vbGVhbjtcbiAgaXNBbmltYXRpbmc6IGJvb2xlYW47XG4gIHNwZWVkOiBudW1iZXI7XG4gIHNob3dUaW1lRGlzcGxheT86IGJvb2xlYW47XG5cbiAgLy8gZmllbGQgc3BlY2lmaWNcbiAgbmFtZTogc3RyaW5nW107IC8vIHN0cmluZ1xuICB0eXBlOiBzdHJpbmcgfCBudWxsO1xuICBmaWVsZElkeDogbnVtYmVyW107IC8vIFtpbnRlZ2VyXVxuICBkb21haW46IGFueVtdIHwgbnVsbDtcbiAgdmFsdWU6IGFueTtcbiAgbWFwcGVkVmFsdWU/OiBudW1iZXJbXTtcblxuICAvLyBwbG90XG4gIHlBeGlzOiBGaWVsZCB8IG51bGw7XG4gIHBsb3RUeXBlOiBzdHJpbmc7XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgLy8gZ3B1IGZpbHRlclxuICBncHU6IGJvb2xlYW47XG4gIGdwdUNoYW5uZWw/OiBudW1iZXJbXTtcbiAgZmllbGRUeXBlPzogc3RyaW5nO1xuXG4gIC8vIHBvbHlnb25cbiAgbGF5ZXJJZD86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgUmFuZ2VGaWx0ZXIgPSBGaWx0ZXJCYXNlICZcbiAgUmFuZ2VGaWVsZERvbWFpbiAmIHtcbiAgICB0eXBlOiAncmFuZ2UnO1xuICAgIGZpZWxkVHlwZTogJ3JlYWwnIHwgJ2ludGVnZXInO1xuICAgIHZhbHVlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIGZpeGVkRG9tYWluOiB0cnVlO1xuICAgIHR5cGVPcHRpb25zOiBbJ3JhbmdlJ107XG4gIH07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpbHRlciA9IEZpbHRlckJhc2UgJlxuICBTZWxlY3RGaWVsZERvbWFpbiAmIHtcbiAgICB0eXBlOiAnc2VsZWN0JztcbiAgICBmaWVsZFR5cGU6ICdib29sZWFuJztcbiAgICB2YWx1ZTogYm9vbGVhbjtcbiAgfTtcblxuZXhwb3J0IHR5cGUgTXVsdGlTZWxlY3RGaWx0ZXIgPSBGaWx0ZXJCYXNlICZcbiAgTXVsdGlTZWxlY3RGaWVsZERvbWFpbiAmIHtcbiAgICB0eXBlOiAncmFuZ2UnO1xuICAgIGZpZWxkVHlwZTogJ3N0cmluZycgfCAnZGF0ZSc7XG4gICAgdmFsdWU6IHN0cmluZ1tdO1xuICB9O1xuZXhwb3J0IHR5cGUgVGltZVJhbmdlRmlsdGVyID0gRmlsdGVyQmFzZSAmXG4gIFRpbWVSYW5nZUZpZWxkRG9tYWluICYge1xuICAgIHR5cGU6ICd0aW1lUmFuZ2UnO1xuICAgIGZpZWxkVHlwZTogJ3RpbWVzdGFtcCc7XG4gICAgZml4ZWREb21haW46IHRydWU7XG4gICAgdmFsdWU6IFtudW1iZXIsIG51bWJlcl07XG4gICAgYmlucz86IE9iamVjdDtcbiAgICBwbG90VHlwZToge1xuICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIH07XG4gICAgYW5pbWF0aW9uV2luZG93OiBzdHJpbmc7XG4gIH07XG5cbmV4cG9ydCB0eXBlIFBvbHlnb25GaWx0ZXIgPSBGaWx0ZXJCYXNlICYge1xuICBsYXllcklkOiBzdHJpbmdbXTtcbiAgdHlwZTogJ3BvbHlnb24nO1xuICBmaXhlZERvbWFpbjogdHJ1ZTtcbiAgdmFsdWU6IEZlYXR1cmU7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXIgPVxuICB8IEZpbHRlckJhc2VcbiAgfCBSYW5nZUZpbHRlclxuICB8IFRpbWVSYW5nZUZpbHRlclxuICB8IFNlbGVjdEZpbHRlclxuICB8IE11bHRpU2VsZWN0RmlsdGVyXG4gIHwgUG9seWdvbkZpbHRlcjtcblxuZXhwb3J0IHR5cGUgRGF0YXNldHMgPSB7XG4gIFtrZXk6IHN0cmluZ106IEtlcGxlclRhYmxlO1xufTtcblxuZXhwb3J0IHR5cGUgRmVhdHVyZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvcGVydGllczogYW55O1xuICBnZW9tZXRyeToge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBjb29yZGluYXRlczogYW55O1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIEZlYXR1cmVWYWx1ZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvcGVydGllczoge1xuICAgIGZpbHRlcklkOiBzdHJpbmc7XG4gIH07XG4gIGdlb21ldHJ5OiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGNvb3JkaW5hdGVzOiBhbnk7XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgRWRpdG9yID0ge1xuICBtb2RlOiBzdHJpbmc7XG4gIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gIHNlbGVjdGVkRmVhdHVyZTogYW55O1xuICB2aXNpYmxlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU3BsaXRNYXBMYXllcnMgPSB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG5leHBvcnQgdHlwZSBTcGxpdE1hcCA9IHtcbiAgbGF5ZXJzOiBTcGxpdE1hcExheWVycztcbn07XG5leHBvcnQgdHlwZSBBbmltYXRpb25Db25maWcgPSB7XG4gIGRvbWFpbjogbnVtYmVyW10gfCBudWxsO1xuICBjdXJyZW50VGltZTogbnVtYmVyIHwgbnVsbDtcbiAgc3BlZWQ6IG51bWJlcjtcbiAgaXNBbmltYXRpbmc/OiBib29sZWFuO1xuICAvLyBhdXRvIGdlbmVyYXRlZCBiYXNlZCBvbiB0aW1lIGRvbWFpblxuICBkZWZhdWx0VGltZUZvcm1hdD86IHN0cmluZyB8IG51bGw7XG4gIC8vIGN1c3RvbSB1aSBpbnB1dFxuICB0aW1lRm9ybWF0Pzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gY3VzdG9tIHVpIGlucHV0XG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gaGlkZSBvciBzaG93IGNvbnRyb2xcbiAgaGlkZUNvbnRyb2w/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQmFzZUludGVyYWN0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBpY29uQ29tcG9uZW50OiBhbnk7XG59O1xuZXhwb3J0IHR5cGUgVG9vbHRpcEZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZvcm1hdDogc3RyaW5nIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBDb21wYXJlVHlwZSA9IHN0cmluZyB8IG51bGw7XG5leHBvcnQgdHlwZSBUb29sdGlwSW5mbyA9IEJhc2VJbnRlcmFjdGlvbiAmIHtcbiAgY29uZmlnOiB7XG4gICAgZmllbGRzVG9TaG93OiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBUb29sdGlwRmllbGRbXTtcbiAgICB9O1xuICAgIGNvbXBhcmVNb2RlOiBib29sZWFuO1xuICAgIGNvbXBhcmVUeXBlOiBDb21wYXJlVHlwZTtcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBHZW9jb2RlciA9IEJhc2VJbnRlcmFjdGlvbiAmIHtcbiAgcG9zaXRpb246IG51bWJlcltdIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBCcnVzaCA9IEJhc2VJbnRlcmFjdGlvbiAmIHtcbiAgY29uZmlnOiB7XG4gICAgc2l6ZTogbnVtYmVyO1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIENvb3JkaW5hdGUgPSBCYXNlSW50ZXJhY3Rpb24gJiB7XG4gIHBvc2l0aW9uOiBudW1iZXJbXSB8IG51bGw7XG59O1xuZXhwb3J0IHR5cGUgSW50ZXJhY3Rpb25Db25maWcgPSB7XG4gIHRvb2x0aXA6IFRvb2x0aXBJbmZvO1xuICBnZW9jb2RlcjogR2VvY29kZXI7XG4gIGJydXNoOiBCcnVzaDtcbiAgY29vcmRpbmF0ZTogQ29vcmRpbmF0ZTtcbn07XG5leHBvcnQgdHlwZSBNYXBJbmZvID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEZpbGVMb2FkaW5nID0ge1xuICBmaWxlc1RvTG9hZDogRmlsZUxpc3Q7XG4gIG9uRmluaXNoOiAocGF5bG9hZDogYW55KSA9PiBhbnk7XG4gIGZpbGVDYWNoZTogYW55W107XG59O1xuZXhwb3J0IHR5cGUgRmlsZUxvYWRpbmdQcm9ncmVzcyA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIHBlcmNlbnQ6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgZmlsZU5hbWU6IHN0cmluZztcbiAgICBlcnJvcjogYW55O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVmlzU3RhdGUgPSB7XG4gIG1hcEluZm86IE1hcEluZm87XG4gIGxheWVyczogTGF5ZXJbXTtcbiAgbGF5ZXJEYXRhOiBhbnlbXTtcbiAgbGF5ZXJUb0JlTWVyZ2VkOiBhbnlbXTtcbiAgbGF5ZXJPcmRlcjogbnVtYmVyW107XG4gIGZpbHRlcnM6IEZpbHRlcltdO1xuICBmaWx0ZXJUb0JlTWVyZ2VkOiBhbnlbXTtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICBlZGl0aW5nRGF0YXNldDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbnRlcmFjdGlvbkNvbmZpZzogSW50ZXJhY3Rpb25Db25maWc7XG4gIGludGVyYWN0aW9uVG9CZU1lcmdlZDogYW55O1xuICBsYXllckJsZW5kaW5nOiBzdHJpbmc7XG4gIGhvdmVySW5mbzogYW55O1xuICBjbGlja2VkOiBhbnk7XG4gIG1vdXNlUG9zOiBhbnk7XG4gIG1heERlZmF1bHRUb29sdGlwczogbnVtYmVyO1xuICBsYXllckNsYXNzZXM6IExheWVyQ2xhc3Nlc1R5cGU7XG4gIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnO1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgc3BsaXRNYXBzOiBTcGxpdE1hcFtdO1xuICBzcGxpdE1hcHNUb0JlTWVyZ2VkOiBTcGxpdE1hcFtdO1xuICBmaWxlTG9hZGluZzogRmlsZUxvYWRpbmcgfCBmYWxzZTtcbiAgZmlsZUxvYWRpbmdQcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcztcbiAgbG9hZGVyczogTG9hZGVyT2JqZWN0W107XG4gIGxvYWRPcHRpb25zOiBvYmplY3Q7XG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8VmlzU3RhdGU+O1xuICBtZXJnZXJzOiBWaXNTdGF0ZU1lcmdlcnM7XG4gIHNjaGVtYTogdHlwZW9mIEtlcGxlckdMU2NoZW1hO1xuICBwcmVzZXJ2ZUxheWVyT3JkZXI/OiBudW1iZXJbXTtcbn07XG5cbi8vIHJlYWN0LXBhbG1cbi8vIGRpc2FibGUgY2FwdHVyZSBleGNlcHRpb24gZm9yIHJlYWN0LXBhbG0gY2FsbCB0byB3aXRoVGFza1xuZGlzYWJsZVN0YWNrQ2FwdHVyaW5nKCk7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGB2aXNTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dmlzU3RhdGVVcGRhdGVyc30gZnJvbSAna2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIGNhc2UgJ0NMSUNLX0JVVFRPTic6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgZm9vOiB7XG4gKiAgICAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbC5mb28sXG4gKiAgICAgICAgICAgICB2aXNTdGF0ZTogdmlzU3RhdGVVcGRhdGVycy5lbmxhcmdlRmlsdGVyVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgc3RhdGUua2VwbGVyR2wuZm9vLnZpc1N0YXRlLFxuICogICAgICAgICAgICAgICB7aWR4OiAwfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCB2aXNTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQU5JTUFUSU9OX0NPTkZJRzogQW5pbWF0aW9uQ29uZmlnID0ge1xuICBkb21haW46IG51bGwsXG4gIGN1cnJlbnRUaW1lOiBudWxsLFxuICBzcGVlZDogMSxcbiAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICB0aW1lRm9ybWF0OiBudWxsLFxuICB0aW1lem9uZTogbnVsbCxcbiAgZGVmYXVsdFRpbWVGb3JtYXQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VESVRPUjogRWRpdG9yID0ge1xuICBtb2RlOiBFRElUT1JfTU9ERVMuRFJBV19QT0xZR09OLFxuICBmZWF0dXJlczogW10sXG4gIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgdmlzaWJsZTogdHJ1ZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYHZpc1N0YXRlYFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9WSVNfU1RBVEU6IFZpc1N0YXRlID0ge1xuICAvLyBtYXAgaW5mb1xuICBtYXBJbmZvOiB7XG4gICAgdGl0bGU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJ1xuICB9LFxuICAvLyBsYXllcnNcbiAgbGF5ZXJzOiBbXSxcbiAgbGF5ZXJEYXRhOiBbXSxcbiAgbGF5ZXJUb0JlTWVyZ2VkOiBbXSxcbiAgbGF5ZXJPcmRlcjogW10sXG5cbiAgLy8gZmlsdGVyc1xuICBmaWx0ZXJzOiBbXSxcbiAgZmlsdGVyVG9CZU1lcmdlZDogW10sXG5cbiAgLy8gYSBjb2xsZWN0aW9uIG9mIG11bHRpcGxlIGRhdGFzZXRcbiAgZGF0YXNldHM6IHt9LFxuICBlZGl0aW5nRGF0YXNldDogdW5kZWZpbmVkLFxuXG4gIGludGVyYWN0aW9uQ29uZmlnOiBnZXREZWZhdWx0SW50ZXJhY3Rpb24oKSxcbiAgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkOiB1bmRlZmluZWQsXG5cbiAgbGF5ZXJCbGVuZGluZzogJ25vcm1hbCcsXG4gIGhvdmVySW5mbzogdW5kZWZpbmVkLFxuICBjbGlja2VkOiB1bmRlZmluZWQsXG4gIG1vdXNlUG9zOiB7fSxcbiAgbWF4RGVmYXVsdFRvb2x0aXBzOiBNQVhfREVGQVVMVF9UT09MVElQUyxcblxuICAvLyB0aGlzIGlzIHVzZWQgd2hlbiB1c2VyIHNwbGl0IG1hcHNcbiAgc3BsaXRNYXBzOiBbXG4gICAgLy8gdGhpcyB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIG9iamVjdHMgdG9cbiAgICAvLyBkZXNjcmliZSB0aGUgc3RhdGUgb2YgbGF5ZXIgYXZhaWxhYmlsaXR5IGFuZCB2aXNpYmlsaXR5IGZvciBlYWNoIG1hcFxuICAgIC8vIFtcbiAgICAvLyAgIHtcbiAgICAvLyAgICAgIGxheWVyczoge2xheWVyX2lkOiB0cnVlIHwgZmFsc2V9XG4gICAgLy8gICB9XG4gICAgLy8gXVxuICBdLFxuICBzcGxpdE1hcHNUb0JlTWVyZ2VkOiBbXSxcblxuICAvLyBkZWZhdWx0cyBsYXllciBjbGFzc2VzXG4gIGxheWVyQ2xhc3NlczogTGF5ZXJDbGFzc2VzLFxuXG4gIC8vIGRlZmF1bHQgYW5pbWF0aW9uXG4gIC8vIHRpbWUgaW4gdW5peCB0aW1lc3RhbXAgKG1pbGxpc2Vjb25kcykgKHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgVW5peCBFcG9jaClcbiAgYW5pbWF0aW9uQ29uZmlnOiBERUZBVUxUX0FOSU1BVElPTl9DT05GSUcsXG5cbiAgZWRpdG9yOiBERUZBVUxUX0VESVRPUixcblxuICBmaWxlTG9hZGluZzogZmFsc2UsXG4gIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9LFxuXG4gIGxvYWRlcnM6IFtdLFxuICBsb2FkT3B0aW9uczoge30sXG5cbiAgLy8gdmlzU3RhdGVNZXJnZXJzXG4gIG1lcmdlcnM6IFZJU19TVEFURV9NRVJHRVJTLFxuXG4gIC8vIGtlcGxlciBzY2hlbWFzXG4gIHNjaGVtYTogS2VwbGVyR0xTY2hlbWFcbn07XG5cbi8qKlxuICogVXBkYXRlIHN0YXRlIHdpdGggdXBkYXRlZCBsYXllciBhbmQgbGF5ZXJEYXRhXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoTGF5ZXJBbmREYXRhKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtsYXllckRhdGEsIGxheWVyLCBpZHh9OiB7bGF5ZXJEYXRhPzogYW55OyBsYXllcjogTGF5ZXI7IGlkeDogbnVtYmVyfVxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGxheWVyczogc3RhdGUubGF5ZXJzLm1hcCgobHlyLCBpKSA9PiAoaSA9PT0gaWR4ID8gbGF5ZXIgOiBseXIpKSxcbiAgICBsYXllckRhdGE6IGxheWVyRGF0YVxuICAgICAgPyBzdGF0ZS5sYXllckRhdGEubWFwKChkLCBpKSA9PiAoaSA9PT0gaWR4ID8gbGF5ZXJEYXRhIDogZCkpXG4gICAgICA6IHN0YXRlLmxheWVyRGF0YVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVPbkxheWVyVmlzaWJpbGl0eUNoYW5nZShzdGF0ZTogVmlzU3RhdGUsIGxheWVyOiBMYXllcik6IFZpc1N0YXRlIHtcbiAgbGV0IG5ld1N0YXRlID0gc3RhdGU7XG4gIGlmIChzdGF0ZS5zcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNwbGl0TWFwczogbGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgICA/IGFkZE5ld0xheWVyc1RvU3BsaXRNYXAoc3RhdGUuc3BsaXRNYXBzLCBsYXllcilcbiAgICAgICAgOiByZW1vdmVMYXllckZyb21TcGxpdE1hcHMoc3RhdGUuc3BsaXRNYXBzLCBsYXllcilcbiAgICB9O1xuICB9XG5cbiAgaWYgKGxheWVyLmNvbmZpZy5hbmltYXRpb24uZW5hYmxlZCkge1xuICAgIG5ld1N0YXRlID0gdXBkYXRlQW5pbWF0aW9uRG9tYWluKHN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgYmFzZSBjb25maWc6IGRhdGFJZCwgbGFiZWwsIGNvbHVtbiwgaXNWaXNpYmxlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllckNvbmZpZ0NoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTGF5ZXJDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IHtvbGRMYXllcn0gPSBhY3Rpb247XG4gIGNvbnN0IGlkeCA9IHN0YXRlLmxheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBvbGRMYXllci5pZCk7XG4gIGNvbnN0IHByb3BzID0gT2JqZWN0LmtleXMoYWN0aW9uLm5ld0NvbmZpZyk7XG4gIGlmICh0eXBlb2YgYWN0aW9uLm5ld0NvbmZpZy5kYXRhSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3Qge2RhdGFJZCwgLi4ucmVzdENvbmZpZ30gPSBhY3Rpb24ubmV3Q29uZmlnO1xuICAgIGNvbnN0IHN0YXRlV2l0aERhdGFJZCA9IGxheWVyRGF0YUlkQ2hhbmdlVXBkYXRlcihzdGF0ZSwge1xuICAgICAgb2xkTGF5ZXIsXG4gICAgICBuZXdDb25maWc6IHtkYXRhSWR9XG4gICAgfSk7XG4gICAgY29uc3QgbmV4dExheWVyID0gc3RhdGVXaXRoRGF0YUlkLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gb2xkTGF5ZXIuaWQpO1xuICAgIHJldHVybiBuZXh0TGF5ZXIgJiYgT2JqZWN0LmtleXMocmVzdENvbmZpZykubGVuZ3RoXG4gICAgICA/IGxheWVyQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZVdpdGhEYXRhSWQsIHtvbGRMYXllcjogbmV4dExheWVyLCBuZXdDb25maWc6IHJlc3RDb25maWd9KVxuICAgICAgOiBzdGF0ZVdpdGhEYXRhSWQ7XG4gIH1cblxuICBsZXQgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyhhY3Rpb24ubmV3Q29uZmlnKTtcblxuICBsZXQgbGF5ZXJEYXRhO1xuXG4gIC8vIGxldCBuZXdMYXllcjtcbiAgaWYgKG5ld0xheWVyLnNob3VsZENhbGN1bGF0ZUxheWVyRGF0YShwcm9wcykpIHtcbiAgICBjb25zdCBvbGRMYXllckRhdGEgPSBzdGF0ZS5sYXllckRhdGFbaWR4XTtcbiAgICBjb25zdCB1cGRhdGVMYXllckRhdGFSZXN1bHQgPSBjYWxjdWxhdGVMYXllckRhdGEobmV3TGF5ZXIsIHN0YXRlLCBvbGRMYXllckRhdGEpO1xuXG4gICAgbGF5ZXJEYXRhID0gdXBkYXRlTGF5ZXJEYXRhUmVzdWx0LmxheWVyRGF0YTtcbiAgICBuZXdMYXllciA9IHVwZGF0ZUxheWVyRGF0YVJlc3VsdC5sYXllcjtcbiAgfVxuXG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuICBpZiAoJ2lzVmlzaWJsZScgaW4gYWN0aW9uLm5ld0NvbmZpZykge1xuICAgIG5ld1N0YXRlID0gdXBkYXRlU3RhdGVPbkxheWVyVmlzaWJpbGl0eUNoYW5nZShzdGF0ZSwgbmV3TGF5ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShuZXdTdGF0ZSwge1xuICAgIGxheWVyOiBuZXdMYXllcixcbiAgICBsYXllckRhdGEsXG4gICAgaWR4XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRPclJlbW92ZVRleHRMYWJlbHMobmV3RmllbGRzLCB0ZXh0TGFiZWwpIHtcbiAgbGV0IG5ld1RleHRMYWJlbCA9IHRleHRMYWJlbC5zbGljZSgpO1xuXG4gIGNvbnN0IGN1cnJlbnRGaWVsZHMgPSB0ZXh0TGFiZWwubWFwKHRsID0+IHRsLmZpZWxkICYmIHRsLmZpZWxkLm5hbWUpLmZpbHRlcihkID0+IGQpO1xuXG4gIGNvbnN0IGFkZEZpZWxkcyA9IG5ld0ZpZWxkcy5maWx0ZXIoZiA9PiAhY3VycmVudEZpZWxkcy5pbmNsdWRlcyhmLm5hbWUpKTtcbiAgY29uc3QgZGVsZXRlRmllbGRzID0gY3VycmVudEZpZWxkcy5maWx0ZXIoZiA9PiAhbmV3RmllbGRzLmZpbmQoZmQgPT4gZmQubmFtZSA9PT0gZikpO1xuXG4gIC8vIGRlbGV0ZVxuICBuZXdUZXh0TGFiZWwgPSBuZXdUZXh0TGFiZWwuZmlsdGVyKHRsID0+IHRsLmZpZWxkICYmICFkZWxldGVGaWVsZHMuaW5jbHVkZXModGwuZmllbGQubmFtZSkpO1xuXG4gIC8vIGFkZFxuICBuZXdUZXh0TGFiZWwgPSBuZXdUZXh0TGFiZWwuZmlsdGVyKHRsID0+IHRsLmZpZWxkKTtcbiAgY29uc3QgZGVmYXVsdExhYmVsID0gbmV3VGV4dExhYmVsLmxlbmd0aCA/IERFRkFVTFRfU0VDT05EQVJZX1RFWFRfTEFCRUwgOiBERUZBVUxUX1RFWFRfTEFCRUw7XG4gIG5ld1RleHRMYWJlbCA9IFsuLi5uZXdUZXh0TGFiZWwsIC4uLmFkZEZpZWxkcy5tYXAoYWYgPT4gKHsuLi5kZWZhdWx0TGFiZWwsIGZpZWxkOiBhZn0pKV07XG5cbiAgLy8gbGltaXQgdG8gMiBsYWJlbHMgKG92ZXJ3cml0ZSAybmQgbGFiZWwgd2l0aCAzcmQpXG4gIGlmIChuZXdUZXh0TGFiZWwubGVuZ3RoID4gMikge1xuICAgIG5ld1RleHRMYWJlbCA9IFtuZXdUZXh0TGFiZWxbMF0sIG5ld1RleHRMYWJlbFsyXV07XG4gIH1cblxuICAvLyBkZWZhdWx0XG4gIG5ld1RleHRMYWJlbCA9ICFuZXdUZXh0TGFiZWwubGVuZ3RoID8gW0RFRkFVTFRfVEVYVF9MQUJFTF0gOiBuZXdUZXh0TGFiZWw7XG5cbiAgcmV0dXJuIG5ld1RleHRMYWJlbDtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVGV4dExhYmVsUHJvcEFuZFZhbHVlKGlkeCwgcHJvcCwgdmFsdWUsIHRleHRMYWJlbCkge1xuICBpZiAoIXRleHRMYWJlbFtpZHhdLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgcmV0dXJuIHRleHRMYWJlbDtcbiAgfVxuXG4gIGxldCBuZXdUZXh0TGFiZWwgPSB0ZXh0TGFiZWwuc2xpY2UoKTtcblxuICBpZiAocHJvcCAmJiAodmFsdWUgfHwgdGV4dExhYmVsLmxlbmd0aCA9PT0gMSkpIHtcbiAgICBuZXdUZXh0TGFiZWwgPSB0ZXh0TGFiZWwubWFwKCh0bCwgaSkgPT4gKGkgPT09IGlkeCA/IHsuLi50bCwgW3Byb3BdOiB2YWx1ZX0gOiB0bCkpO1xuICB9IGVsc2UgaWYgKHByb3AgPT09ICdmaWVsZCcgJiYgdmFsdWUgPT09IG51bGwgJiYgdGV4dExhYmVsLmxlbmd0aCA+IDEpIHtcbiAgICAvLyByZW1vdmUgbGFiZWwgd2hlbiBmaWVsZCB2YWx1ZSBpcyBzZXQgdG8gbnVsbFxuICAgIG5ld1RleHRMYWJlbC5zcGxpY2UoaWR4LCAxKTtcbiAgfVxuXG4gIHJldHVybiBuZXdUZXh0TGFiZWw7XG59XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIGJhc2UgY29uZmlnOiBkYXRhSWQsIGxhYmVsLCBjb2x1bW4sIGlzVmlzaWJsZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJUZXh0TGFiZWxDaGFuZ2VVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkxheWVyVGV4dExhYmVsQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIGlkeCwgcHJvcCwgdmFsdWV9ID0gYWN0aW9uO1xuICBjb25zdCB7dGV4dExhYmVsfSA9IG9sZExheWVyLmNvbmZpZztcblxuICBsZXQgbmV3VGV4dExhYmVsID0gdGV4dExhYmVsLnNsaWNlKCk7XG4gIGlmICghdGV4dExhYmVsW2lkeF0gJiYgaWR4ID09PSB0ZXh0TGFiZWwubGVuZ3RoKSB7XG4gICAgLy8gaWYgaWR4IGlzIHNldCB0byBsZW5ndGgsIGFkZCBlbXB0eSB0ZXh0IGxhYmVsXG4gICAgbmV3VGV4dExhYmVsID0gWy4uLnRleHRMYWJlbCwgaWR4ID09PSAwID8gREVGQVVMVF9URVhUX0xBQkVMIDogREVGQVVMVF9TRUNPTkRBUllfVEVYVF9MQUJFTF07XG4gIH1cblxuICBpZiAoaWR4ID09PSAnYWxsJyAmJiBwcm9wID09PSAnZmllbGRzJykge1xuICAgIG5ld1RleHRMYWJlbCA9IGFkZE9yUmVtb3ZlVGV4dExhYmVscyh2YWx1ZSwgdGV4dExhYmVsKTtcbiAgfSBlbHNlIHtcbiAgICBuZXdUZXh0TGFiZWwgPSB1cGRhdGVUZXh0TGFiZWxQcm9wQW5kVmFsdWUoaWR4LCBwcm9wLCB2YWx1ZSwgbmV3VGV4dExhYmVsKTtcbiAgfVxuICAvLyB1cGRhdGUgdGV4dCBsYWJlbCBwcm9wIGFuZCB2YWx1ZVxuICByZXR1cm4gbGF5ZXJDb25maWdDaGFuZ2VVcGRhdGVyKHN0YXRlLCB7XG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3Q29uZmlnOiB7dGV4dExhYmVsOiBuZXdUZXh0TGFiZWx9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUV4aXN0aW5nTGF5ZXJXaXRoRGF0YShkYXRhc2V0LCBsYXllckNsYXNzZXMsIGxheWVyKSB7XG4gIGNvbnN0IGxvYWRlZExheWVyID0gc2VyaWFsaXplTGF5ZXIobGF5ZXIpO1xuICByZXR1cm4gdmFsaWRhdGVMYXllcldpdGhEYXRhKGRhdGFzZXQsIGxvYWRlZExheWVyLCBsYXllckNsYXNzZXMsIHtcbiAgICBhbGxvd0VtcHR5Q29sdW1uOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBsYXllciBjb25maWcgZGF0YUlkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllckRhdGFJZENoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgb2xkTGF5ZXI6IExheWVyO1xuICAgIG5ld0NvbmZpZzoge1xuICAgICAgZGF0YUlkOiBzdHJpbmc7XG4gICAgfTtcbiAgfVxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIG5ld0NvbmZpZ30gPSBhY3Rpb247XG4gIGNvbnN0IHtkYXRhSWR9ID0gbmV3Q29uZmlnO1xuXG4gIGlmICghb2xkTGF5ZXIgfHwgIXN0YXRlLmRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3QgaWR4ID0gc3RhdGUubGF5ZXJzLmZpbmRJbmRleChsID0+IGwuaWQgPT09IG9sZExheWVyLmlkKTtcblxuICBsZXQgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyh7ZGF0YUlkfSk7XG4gIC8vIHRoaXMgbWF5IGhhcHBlbiB3aGVuIGEgbGF5ZXIgaXMgbmV3ICh0eXBlOiBudWxsIGFuZCBubyBjb2x1bW5zKSBidXQgaXQncyBub3QgcmVhZHkgdG8gYmUgc2F2ZWRcbiAgaWYgKG5ld0xheWVyLmlzVmFsaWRUb1NhdmUoKSkge1xuICAgIGNvbnN0IHZhbGlkYXRlZCA9IHZhbGlkYXRlRXhpc3RpbmdMYXllcldpdGhEYXRhKFxuICAgICAgc3RhdGUuZGF0YXNldHNbZGF0YUlkXSxcbiAgICAgIHN0YXRlLmxheWVyQ2xhc3NlcyxcbiAgICAgIG5ld0xheWVyXG4gICAgKTtcbiAgICAvLyBpZiBjYW50IHZhbGlkYXRlIGl0IHdpdGggZGF0YSBjcmVhdGUgYSBuZXcgb25lXG4gICAgaWYgKCF2YWxpZGF0ZWQpIHtcbiAgICAgIG5ld0xheWVyID0gbmV3IHN0YXRlLmxheWVyQ2xhc3Nlc1tvbGRMYXllci50eXBlXSh7ZGF0YUlkLCBpZDogb2xkTGF5ZXIuaWR9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3TGF5ZXIgPSB2YWxpZGF0ZWQ7XG4gICAgfVxuICB9XG5cbiAgbmV3TGF5ZXIgPSBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgaXNWaXNpYmxlOiBvbGRMYXllci5jb25maWcuaXNWaXNpYmxlLFxuICAgIGlzQ29uZmlnQWN0aXZlOiB0cnVlXG4gIH0pO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyRG9tYWluKHN0YXRlLmRhdGFzZXRzKTtcbiAgY29uc3Qge2xheWVyRGF0YSwgbGF5ZXJ9ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSwgdW5kZWZpbmVkKTtcblxuICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoTGF5ZXJBbmREYXRhKHN0YXRlLCB7bGF5ZXJEYXRhLCBsYXllciwgaWR4fSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIHR5cGUuIFByZXZpZXdzIGxheWVyIGNvbmZpZyB3aWxsIGJlIGNvcGllZCBpZiBhcHBsaWNhYmxlLlxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIG5ld1R5cGV9ID0gYWN0aW9uO1xuICBpZiAoIW9sZExheWVyKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IG9sZElkID0gb2xkTGF5ZXIuaWQ7XG4gIGNvbnN0IGlkeCA9IHN0YXRlLmxheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBvbGRJZCk7XG5cbiAgaWYgKCFzdGF0ZS5sYXllckNsYXNzZXNbbmV3VHlwZV0pIHtcbiAgICBDb25zb2xlLmVycm9yKGAke25ld1R5cGV9IGlzIG5vdCBhIHZhbGlkIGxheWVyIHR5cGVgKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBnZXQgYSBtaW50IGxheWVyLCB3aXRoIG5ldyBpZCBhbmQgdHlwZVxuICAvLyBiZWNhdXNlIGRlY2suZ2wgdXNlcyBpZCB0byBtYXRjaCBiZXR3ZWVuIG5ldyBhbmQgb2xkIGxheWVyLlxuICAvLyBJZiB0eXBlIGhhcyBjaGFuZ2VkIGJ1dCBpZCBpcyB0aGUgc2FtZSwgaXQgd2lsbCBicmVha1xuICBjb25zdCBuZXdMYXllciA9IG5ldyBzdGF0ZS5sYXllckNsYXNzZXNbbmV3VHlwZV0oKTtcblxuICBuZXdMYXllci5hc3NpZ25Db25maWdUb0xheWVyKG9sZExheWVyLmNvbmZpZywgb2xkTGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MpO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyRG9tYWluKHN0YXRlLmRhdGFzZXRzKTtcbiAgY29uc3Qge2xheWVyRGF0YSwgbGF5ZXJ9ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSk7XG4gIGxldCBuZXdTdGF0ZSA9IHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShzdGF0ZSwge2xheWVyRGF0YSwgbGF5ZXIsIGlkeH0pO1xuXG4gIGlmIChsYXllci5jb25maWcuYW5pbWF0aW9uLmVuYWJsZWQgfHwgb2xkTGF5ZXIuY29uZmlnLmFuaW1hdGlvbi5lbmFibGVkKSB7XG4gICAgbmV3U3RhdGUgPSB1cGRhdGVBbmltYXRpb25Eb21haW4obmV3U3RhdGUpO1xuICB9XG5cbiAgLy8gdXBkYXRlIHNwbGl0TWFwIGxheWVyIGlkXG4gIGlmIChzdGF0ZS5zcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIHNwbGl0TWFwczogbmV3U3RhdGUuc3BsaXRNYXBzLm1hcChzZXR0aW5ncyA9PiB7XG4gICAgICAgIGNvbnN0IHtbb2xkSWRdOiBvbGRMYXllck1hcCwgLi4ub3RoZXJMYXllcnN9ID0gc2V0dGluZ3MubGF5ZXJzO1xuICAgICAgICByZXR1cm4gb2xkSWQgaW4gc2V0dGluZ3MubGF5ZXJzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICAgICAgICBsYXllcnM6IHtcbiAgICAgICAgICAgICAgICAuLi5vdGhlckxheWVycyxcbiAgICAgICAgICAgICAgICBbbGF5ZXIuaWRdOiBvbGRMYXllck1hcFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBzZXR0aW5ncztcbiAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdmlzdWFsIGNoYW5uZWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVmlzdWFsQ2hhbm5lbENoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIG5ld0NvbmZpZywgY2hhbm5lbH0gPSBhY3Rpb247XG4gIGlmICghb2xkTGF5ZXIuY29uZmlnLmRhdGFJZCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbb2xkTGF5ZXIuY29uZmlnLmRhdGFJZF07XG5cbiAgY29uc3QgaWR4ID0gc3RhdGUubGF5ZXJzLmZpbmRJbmRleChsID0+IGwuaWQgPT09IG9sZExheWVyLmlkKTtcbiAgY29uc3QgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyhuZXdDb25maWcpO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCBjaGFubmVsKTtcblxuICBjb25zdCBvbGRMYXllckRhdGEgPSBzdGF0ZS5sYXllckRhdGFbaWR4XTtcbiAgY29uc3Qge2xheWVyRGF0YSwgbGF5ZXJ9ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSwgb2xkTGF5ZXJEYXRhKTtcblxuICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoTGF5ZXJBbmREYXRhKHN0YXRlLCB7bGF5ZXJEYXRhLCBsYXllciwgaWR4fSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIGB2aXNDb25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJWaXNDb25maWdDaGFuZ2VVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkxheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXJ9ID0gYWN0aW9uO1xuICBjb25zdCBpZHggPSBzdGF0ZS5sYXllcnMuZmluZEluZGV4KGwgPT4gbC5pZCA9PT0gb2xkTGF5ZXIuaWQpO1xuICBjb25zdCBwcm9wcyA9IE9iamVjdC5rZXlzKGFjdGlvbi5uZXdWaXNDb25maWcpO1xuICBjb25zdCBuZXdWaXNDb25maWcgPSB7XG4gICAgLi4ub2xkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICAuLi5hY3Rpb24ubmV3VmlzQ29uZmlnXG4gIH07XG5cbiAgY29uc3QgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyh7dmlzQ29uZmlnOiBuZXdWaXNDb25maWd9KTtcblxuICBpZiAobmV3TGF5ZXIuc2hvdWxkQ2FsY3VsYXRlTGF5ZXJEYXRhKHByb3BzKSkge1xuICAgIGNvbnN0IG9sZExheWVyRGF0YSA9IHN0YXRlLmxheWVyRGF0YVtpZHhdO1xuICAgIGNvbnN0IHtsYXllckRhdGEsIGxheWVyfSA9IGNhbGN1bGF0ZUxheWVyRGF0YShuZXdMYXllciwgc3RhdGUsIG9sZExheWVyRGF0YSk7XG4gICAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShzdGF0ZSwge2xheWVyRGF0YSwgbGF5ZXIsIGlkeH0pO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShzdGF0ZSwge2xheWVyOiBuZXdMYXllciwgaWR4fSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGZpbHRlciBwcm9wZXJ0eVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiBzZXRGaWx0ZXJVcGRhdGVyKHN0YXRlLCBhY3Rpb24pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBmaWx0ZXIgYW5pbWF0aW9uIHdpbmRvd1xuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2lkLCBhbmltYXRpb25XaW5kb3d9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbHRlcnM6IHN0YXRlLmZpbHRlcnMubWFwKGYgPT5cbiAgICAgIGYuaWQgPT09IGlkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIGFuaW1hdGlvbldpbmRvd1xuICAgICAgICAgIH1cbiAgICAgICAgOiBmXG4gICAgKVxuICB9O1xufVxuLyoqXG4gKiBVcGRhdGUgZmlsdGVyIHByb3BlcnR5XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRGaWx0ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IHtpZHgsIHByb3AsIHZhbHVlLCB2YWx1ZUluZGV4ID0gMH0gPSBhY3Rpb247XG4gIGNvbnN0IG9sZEZpbHRlciA9IHN0YXRlLmZpbHRlcnNbaWR4XTtcblxuICBpZiAoIW9sZEZpbHRlcikge1xuICAgIENvbnNvbGUuZXJyb3IoYGZpbHRlcnMuJHtpZHh9IGlzIHVuZGVmaW5lZGApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsZXQgbmV3RmlsdGVyID0gc2V0KFtwcm9wXSwgdmFsdWUsIG9sZEZpbHRlcik7XG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuXG4gIGNvbnN0IHtkYXRhSWR9ID0gbmV3RmlsdGVyO1xuXG4gIC8vIEVuc3VyaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgbGV0IGRhdGFzZXRJZHMgPSB0b0FycmF5KGRhdGFJZCk7XG5cbiAgc3dpdGNoIChwcm9wKSB7XG4gICAgLy8gVE9ETzogTmV4dCBQUiBmb3IgVUkgaWYgd2UgdXBkYXRlIGRhdGFJZCwgd2UgbmVlZCB0byBjb25zaWRlciB0d28gY2FzZXM6XG4gICAgLy8gMS4gZGF0YUlkIGlzIGVtcHR5OiBjcmVhdGUgYSBkZWZhdWx0IGZpbHRlclxuICAgIC8vIDIuIEFkZCBhIG5ldyBkYXRhc2V0IGlkXG4gICAgY2FzZSBGSUxURVJfVVBEQVRFUl9QUk9QUy5kYXRhSWQ6XG4gICAgICAvLyBpZiB0cnlpbmcgdG8gdXBkYXRlIGZpbHRlciBkYXRhSWQuIGNyZWF0ZSBhbiBlbXB0eSBuZXcgZmlsdGVyXG4gICAgICBuZXdGaWx0ZXIgPSB1cGRhdGVGaWx0ZXJEYXRhSWQoZGF0YUlkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBGSUxURVJfVVBEQVRFUl9QUk9QUy5uYW1lOlxuICAgICAgLy8gd2UgYXJlIHN1cHBvcnRpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb25hbGl0eVxuICAgICAgLy8gVE9ETzogTmV4dCBQUiBmb3IgVUkgZmlsdGVyIG5hbWUgd2lsbCBvbmx5IHVwZGF0ZSBmaWx0ZXIgbmFtZSBidXQgaXQgd29uJ3QgaGF2ZSBzaWRlIGVmZmVjdHNcbiAgICAgIC8vIHdlIGFyZSBnb25uYSB1c2UgcGFpciBvZiBkYXRhc2V0cyBhbmQgZmllbGRJZHggdG8gdXBkYXRlIHRoZSBmaWx0ZXJcbiAgICAgIGNvbnN0IGRhdGFzZXRJZCA9IG5ld0ZpbHRlci5kYXRhSWRbdmFsdWVJbmRleF07XG4gICAgICBjb25zdCB7ZmlsdGVyOiB1cGRhdGVkRmlsdGVyLCBkYXRhc2V0OiBuZXdEYXRhc2V0fSA9IGFwcGx5RmlsdGVyRmllbGROYW1lKFxuICAgICAgICBuZXdGaWx0ZXIsXG4gICAgICAgIHN0YXRlLmRhdGFzZXRzW2RhdGFzZXRJZF0sXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB2YWx1ZUluZGV4LFxuICAgICAgICB7bWVyZ2VEb21haW46IGZhbHNlfVxuICAgICAgKTtcbiAgICAgIGlmICghdXBkYXRlZEZpbHRlcikge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIG5ld0ZpbHRlciA9IHVwZGF0ZWRGaWx0ZXI7XG5cbiAgICAgIGlmIChuZXdGaWx0ZXIuZ3B1KSB7XG4gICAgICAgIG5ld0ZpbHRlciA9IHNldEZpbHRlckdwdU1vZGUobmV3RmlsdGVyLCBzdGF0ZS5maWx0ZXJzKTtcbiAgICAgICAgbmV3RmlsdGVyID0gYXNzaWduR3B1Q2hhbm5lbChuZXdGaWx0ZXIsIHN0YXRlLmZpbHRlcnMpO1xuICAgICAgfVxuXG4gICAgICBuZXdTdGF0ZSA9IHNldChbJ2RhdGFzZXRzJywgZGF0YXNldElkXSwgbmV3RGF0YXNldCwgc3RhdGUpO1xuXG4gICAgICAvLyBvbmx5IGZpbHRlciB0aGUgY3VycmVudCBkYXRhc2V0XG4gICAgICBicmVhaztcbiAgICBjYXNlIEZJTFRFUl9VUERBVEVSX1BST1BTLmxheWVySWQ6XG4gICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSBvbmx5IGRhdGFzZXRJZC9zIGlmIHdlIGhhdmUgYWRkZWQvcmVtb3ZlZCBsYXllcnNcbiAgICAgIC8vIC0gY2hlY2sgZm9yIGxheWVySWQgY2hhbmdlcyAoWE9SIHdvcmtzIGJlY2F1c2Ugb2Ygc3RyaW5nIHZhbHVlcylcbiAgICAgIC8vIGlmIG5vIGRpZmZlcmVuY2VzIGJldHdlZW4gbGF5ZXJJZHMsIGRvbid0IGRvIGFueSBmaWx0ZXJpbmdcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGxheWVySWREaWZmZXJlbmNlID0geG9yKG5ld0ZpbHRlci5sYXllcklkLCBvbGRGaWx0ZXIubGF5ZXJJZCk7XG5cbiAgICAgIGNvbnN0IGxheWVyRGF0YUlkcyA9IHVuaXEoXG4gICAgICAgIGxheWVySWREaWZmZXJlbmNlXG4gICAgICAgICAgLm1hcChsaWQgPT5cbiAgICAgICAgICAgIGdldChcbiAgICAgICAgICAgICAgc3RhdGUubGF5ZXJzLmZpbmQobCA9PiBsLmlkID09PSBsaWQpLFxuICAgICAgICAgICAgICBbJ2NvbmZpZycsICdkYXRhSWQnXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKGQgPT4gZClcbiAgICAgICk7XG5cbiAgICAgIC8vIG9ubHkgZmlsdGVyIGRhdGFzZXRzSWRzXG4gICAgICBkYXRhc2V0SWRzID0gbGF5ZXJEYXRhSWRzO1xuXG4gICAgICAvLyBVcGRhdGUgbmV3RmlsdGVyIGRhdGFJZHNcbiAgICAgIGNvbnN0IG5ld0RhdGFJZHMgPSB1bmlxKFxuICAgICAgICBuZXdGaWx0ZXIubGF5ZXJJZFxuICAgICAgICAgIC5tYXAobGlkID0+XG4gICAgICAgICAgICBnZXQoXG4gICAgICAgICAgICAgIHN0YXRlLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gbGlkKSxcbiAgICAgICAgICAgICAgWydjb25maWcnLCAnZGF0YUlkJ11cbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcihkID0+IGQpXG4gICAgICApO1xuXG4gICAgICBuZXdGaWx0ZXIgPSB7XG4gICAgICAgIC4uLm5ld0ZpbHRlcixcbiAgICAgICAgZGF0YUlkOiBuZXdEYXRhSWRzXG4gICAgICB9O1xuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCBlbmxhcmdlZEZpbHRlciA9IHN0YXRlLmZpbHRlcnMuZmluZChmID0+IGYuZW5sYXJnZWQpO1xuXG4gIGlmIChlbmxhcmdlZEZpbHRlciAmJiBlbmxhcmdlZEZpbHRlci5pZCAhPT0gbmV3RmlsdGVyLmlkKSB7XG4gICAgLy8gdGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIGVubGFyZ2VkIGZpbHRlclxuICAgIG5ld0ZpbHRlci5lbmxhcmdlZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gc2F2ZSBuZXcgZmlsdGVycyB0byBuZXdTdGF0ZVxuICBuZXdTdGF0ZSA9IHNldChbJ2ZpbHRlcnMnLCBpZHhdLCBuZXdGaWx0ZXIsIG5ld1N0YXRlKTtcblxuICAvLyBpZiB3ZSBhcmUgY3VycmVudGx5IHNldHRpbmcgYSBwcm9wIHRoYXQgb25seSByZXF1aXJlcyB0byBmaWx0ZXIgdGhlIGN1cnJlbnRcbiAgLy8gZGF0YXNldCB3ZSB3aWxsIHBhc3Mgb25seSB0aGUgY3VycmVudCBkYXRhc2V0IHRvIGFwcGx5RmlsdGVyc1RvRGF0YXNldHMgYW5kXG4gIC8vIHVwZGF0ZUFsbExheWVyRG9tYWluRGF0YSBvdGhlcndpc2Ugd2UgcGFzcyB0aGUgYWxsIGxpc3Qgb2YgZGF0YXNldHMgYXMgZGVmaW5lZCBpbiBkYXRhSWRcbiAgY29uc3QgZGF0YXNldElkc1RvRmlsdGVyID0gTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTW3Byb3BdXG4gICAgPyBbZGF0YXNldElkc1t2YWx1ZUluZGV4XV1cbiAgICA6IGRhdGFzZXRJZHM7XG5cbiAgLy8gZmlsdGVyIGRhdGFcbiAgY29uc3QgZmlsdGVyZWREYXRhc2V0cyA9IGFwcGx5RmlsdGVyc1RvRGF0YXNldHMoXG4gICAgZGF0YXNldElkc1RvRmlsdGVyLFxuICAgIG5ld1N0YXRlLmRhdGFzZXRzLFxuICAgIG5ld1N0YXRlLmZpbHRlcnMsXG4gICAgbmV3U3RhdGUubGF5ZXJzXG4gICk7XG5cbiAgbmV3U3RhdGUgPSBzZXQoWydkYXRhc2V0cyddLCBmaWx0ZXJlZERhdGFzZXRzLCBuZXdTdGF0ZSk7XG4gIC8vIGRhdGFJZCBpcyBhbiBhcnJheVxuICAvLyBwYXNzIG9ubHkgdGhlIGRhdGFzZXQgd2UgbmVlZCB0byB1cGRhdGVcbiAgbmV3U3RhdGUgPSB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGEobmV3U3RhdGUsIGRhdGFzZXRJZHNUb0ZpbHRlciwgbmV3RmlsdGVyKTtcblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbi8qKlxuICogU2V0IHRoZSBwcm9wZXJ0eSBvZiBhIGZpbHRlciBwbG90XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RmlsdGVyUGxvdFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2lkeCwgbmV3UHJvcCwgdmFsdWVJbmRleCA9IDB9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0RmlsdGVyUGxvdFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+IHtcbiAgbGV0IG5ld0ZpbHRlciA9IHsuLi5zdGF0ZS5maWx0ZXJzW2lkeF0sIC4uLm5ld1Byb3B9O1xuICBjb25zdCBwcm9wID0gT2JqZWN0LmtleXMobmV3UHJvcClbMF07XG4gIGlmIChwcm9wID09PSAneUF4aXMnKSB7XG4gICAgY29uc3QgcGxvdFR5cGUgPSBnZXREZWZhdWx0RmlsdGVyUGxvdFR5cGUobmV3RmlsdGVyKTtcbiAgICAvLyBUT0RPOiBwbG90IGlzIG5vdCBzdXBwb3J0ZWQgaW4gbXVsdGkgZGF0YXNldCBmaWx0ZXIgZm9yIG5vd1xuICAgIGlmIChwbG90VHlwZSkge1xuICAgICAgbmV3RmlsdGVyID0ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIC4uLmdldEZpbHRlclBsb3Qoey4uLm5ld0ZpbHRlciwgcGxvdFR5cGV9LCBzdGF0ZS5kYXRhc2V0c1tuZXdGaWx0ZXIuZGF0YUlkW3ZhbHVlSW5kZXhdXSksXG4gICAgICAgIHBsb3RUeXBlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsdGVyczogc3RhdGUuZmlsdGVycy5tYXAoKGYsIGkpID0+IChpID09PSBpZHggPyBuZXdGaWx0ZXIgOiBmKSlcbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIGEgbmV3IGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEZpbHRlclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuQWRkRmlsdGVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT5cbiAgIWFjdGlvbi5kYXRhSWRcbiAgICA/IHN0YXRlXG4gICAgOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXJzOiBbLi4uc3RhdGUuZmlsdGVycywgZ2V0RGVmYXVsdEZpbHRlcihhY3Rpb24uZGF0YUlkKV1cbiAgICAgIH07XG5cbi8qKlxuICogU2V0IGxheWVyIGNvbG9yIHBhbGV0dGUgdWkgc3RhdGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBsYXllckNvbG9yVUlDaGFuZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtvbGRMYXllciwgcHJvcCwgbmV3Q29uZmlnfTogVmlzU3RhdGVBY3Rpb25zLkxheWVyQ29sb3JVSUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+IHtcbiAgY29uc3Qgb2xkVml4Q29uZmlnID0gb2xkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wXTtcbiAgY29uc3QgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbG9yVUkocHJvcCwgbmV3Q29uZmlnKTtcbiAgY29uc3QgbmV3VmlzQ29uZmlnID0gbmV3TGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wXTtcbiAgaWYgKG9sZFZpeENvbmZpZyAhPT0gbmV3VmlzQ29uZmlnKSB7XG4gICAgcmV0dXJuIGxheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZSwge1xuICAgICAgb2xkTGF5ZXIsXG4gICAgICBuZXdWaXNDb25maWc6IHtcbiAgICAgICAgW3Byb3BdOiBuZXdWaXNDb25maWdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGxheWVyczogc3RhdGUubGF5ZXJzLm1hcChsID0+IChsLmlkID09PSBvbGRMYXllci5pZCA/IG5ld0xheWVyIDogbCkpXG4gIH07XG59O1xuXG4vKipcbiAqIFN0YXJ0IGFuZCBlbmQgZmlsdGVyIGFuaW1hdGlvblxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUZpbHRlckFuaW1hdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuVG9nZ2xlRmlsdGVyQW5pbWF0aW9uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGZpbHRlcnM6IHN0YXRlLmZpbHRlcnMubWFwKChmLCBpKSA9PiAoaSA9PT0gYWN0aW9uLmlkeCA/IHsuLi5mLCBpc0FuaW1hdGluZzogIWYuaXNBbmltYXRpbmd9IDogZikpXG59KTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJBbmltYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlRvZ2dsZUxheWVyQW5pbWF0aW9uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgIC4uLnN0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgICBpc0FuaW1hdGluZzogIXN0YXRlLmFuaW1hdGlvbkNvbmZpZy5pc0FuaW1hdGluZ1xuICB9XG59KTtcblxuLyoqXG4gKiBIaWRlIGFuZCBzaG93IGxheWVyIGFuaW1hdGlvbiBjb250cm9sXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5Ub2dnbGVMYXllckFuaW1hdGlvbkNvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgYW5pbWF0aW9uQ29uZmlnOiB7XG4gICAgLi4uc3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICAgIGhpZGVDb250cm9sOiAhc3RhdGUuYW5pbWF0aW9uQ29uZmlnLmhpZGVDb250cm9sXG4gIH1cbn0pO1xuXG4vKipcbiAqIENoYW5nZSBmaWx0ZXIgYW5pbWF0aW9uIHNwZWVkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGZpbHRlcnM6IHN0YXRlLmZpbHRlcnMubWFwKChmLCBpKSA9PiAoaSA9PT0gYWN0aW9uLmlkeCA/IHsuLi5mLCBzcGVlZDogYWN0aW9uLnNwZWVkfSA6IGYpKVxufSk7XG5cbi8qKlxuICogUmVzZXQgYW5pbWF0aW9uIGNvbmZpZyBjdXJyZW50IHRpbWUgdG8gYSBzcGVjaWZpZWQgdmFsdWVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKlxuICovXG5leHBvcnQgY29uc3Qgc2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7dmFsdWV9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgIC4uLnN0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgICBjdXJyZW50VGltZTogdmFsdWVcbiAgfVxufSk7XG5cbi8qKlxuICogVXBkYXRlIGFuaW1hdGlvbiBzcGVlZCB3aXRoIHRoZSB2ZXJ0aWNhbCBzcGVlZCBzbGlkZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKlxuICovXG5leHBvcnQgY29uc3QgdXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge3NwZWVkfTogVmlzU3RhdGVBY3Rpb25zLlVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgYW5pbWF0aW9uQ29uZmlnOiB7XG4gICAgICAuLi5zdGF0ZS5hbmltYXRpb25Db25maWcsXG4gICAgICBzcGVlZFxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBsYXJnZXIgdGltZSBmaWx0ZXIgYXQgYm90dG9tIGZvciB0aW1lIHBsYXliYWNrIChhcHBseSB0byB0aW1lIGZpbHRlciBvbmx5KVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGVubGFyZ2VGaWx0ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkVubGFyZ2VGaWx0ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsdGVyczogc3RhdGUuZmlsdGVycy5tYXAoKGYsIGkpID0+XG4gICAgICBpID09PSBhY3Rpb24uaWR4XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIGVubGFyZ2VkOiAhZi5lbmxhcmdlZFxuICAgICAgICAgIH1cbiAgICAgICAgOiBmXG4gICAgKVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGVzIGZpbHRlciBmZWF0dXJlIHZpc2liaWxpdHlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVGaWx0ZXJGZWF0dXJlVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5Ub2dnbGVGaWx0ZXJGZWF0dXJlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBzdGF0ZS5maWx0ZXJzW2FjdGlvbi5pZHhdO1xuICBjb25zdCBpc1Zpc2libGUgPSBnZXQoZmlsdGVyLCBbJ3ZhbHVlJywgJ3Byb3BlcnRpZXMnLCAnaXNWaXNpYmxlJ10pO1xuICBjb25zdCBuZXdGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHZhbHVlOiBmZWF0dXJlVG9GaWx0ZXJWYWx1ZShmaWx0ZXIudmFsdWUsIGZpbHRlci5pZCwge1xuICAgICAgaXNWaXNpYmxlOiAhaXNWaXNpYmxlXG4gICAgfSlcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbHRlcnM6IE9iamVjdC5hc3NpZ24oWy4uLnN0YXRlLmZpbHRlcnNdLCB7W2FjdGlvbi5pZHhdOiBuZXdGaWx0ZXJ9KVxuICB9O1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYSBmaWx0ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVGaWx0ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlJlbW92ZUZpbHRlclVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+IHtcbiAgY29uc3Qge2lkeH0gPSBhY3Rpb247XG4gIGNvbnN0IHtkYXRhSWQsIGlkfSA9IHN0YXRlLmZpbHRlcnNbaWR4XTtcblxuICBjb25zdCBuZXdGaWx0ZXJzID0gW1xuICAgIC4uLnN0YXRlLmZpbHRlcnMuc2xpY2UoMCwgaWR4KSxcbiAgICAuLi5zdGF0ZS5maWx0ZXJzLnNsaWNlKGlkeCArIDEsIHN0YXRlLmZpbHRlcnMubGVuZ3RoKVxuICBdO1xuXG4gIGNvbnN0IGZpbHRlcmVkRGF0YXNldHMgPSBhcHBseUZpbHRlcnNUb0RhdGFzZXRzKGRhdGFJZCwgc3RhdGUuZGF0YXNldHMsIG5ld0ZpbHRlcnMsIHN0YXRlLmxheWVycyk7XG4gIGNvbnN0IG5ld0VkaXRvciA9XG4gICAgZ2V0RmlsdGVySWRJbkZlYXR1cmUoc3RhdGUuZWRpdG9yLnNlbGVjdGVkRmVhdHVyZSkgPT09IGlkXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBudWxsXG4gICAgICAgIH1cbiAgICAgIDogc3RhdGUuZWRpdG9yO1xuXG4gIGxldCBuZXdTdGF0ZSA9IHNldChbJ2ZpbHRlcnMnXSwgbmV3RmlsdGVycywgc3RhdGUpO1xuICBuZXdTdGF0ZSA9IHNldChbJ2RhdGFzZXRzJ10sIGZpbHRlcmVkRGF0YXNldHMsIG5ld1N0YXRlKTtcbiAgbmV3U3RhdGUgPSBzZXQoWydlZGl0b3InXSwgbmV3RWRpdG9yLCBuZXdTdGF0ZSk7XG5cbiAgcmV0dXJuIHVwZGF0ZUFsbExheWVyRG9tYWluRGF0YShuZXdTdGF0ZSwgZGF0YUlkLCB1bmRlZmluZWQpO1xufTtcblxuLyoqXG4gKiBBZGQgYSBuZXcgbGF5ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRMYXllclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuQWRkTGF5ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGxldCBuZXdMYXllcjtcbiAgbGV0IG5ld0xheWVyRGF0YTtcbiAgaWYgKGFjdGlvbi5jb25maWcpIHtcbiAgICBuZXdMYXllciA9IGNyZWF0ZUxheWVyRnJvbUNvbmZpZyhzdGF0ZSwgYWN0aW9uLmNvbmZpZyk7XG4gICAgaWYgKCFuZXdMYXllcikge1xuICAgICAgQ29uc29sZS53YXJuKFxuICAgICAgICAnRmFpbGVkIHRvIGNyZWF0ZSBsYXllciBmcm9tIGNvbmZpZywgaXQgdXN1YWxseSBtZWFucyB0aGUgY29uZmlnIGlzIG5vdCBiZSBpbiBjb3JyZWN0IGZvcm1hdCcsXG4gICAgICAgIGFjdGlvbi5jb25maWdcbiAgICAgICk7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSk7XG4gICAgbmV3TGF5ZXIgPSByZXN1bHQubGF5ZXI7XG4gICAgbmV3TGF5ZXJEYXRhID0gcmVzdWx0LmxheWVyRGF0YTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjcmVhdGUgYW4gZW1wdHkgbGF5ZXIgd2l0aCBhIHNwZWNpZmljIGRhdGFzZXQgb3IgYSBkZWZhdWx0IG9uZVxuICAgIGNvbnN0IGRlZmF1bHREYXRhc2V0ID0gYWN0aW9uLmRhdGFzZXRJZCA/PyBPYmplY3Qua2V5cyhzdGF0ZS5kYXRhc2V0cylbMF07XG4gICAgbmV3TGF5ZXIgPSBuZXcgTGF5ZXIoe1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgICBkYXRhSWQ6IGRlZmF1bHREYXRhc2V0XG4gICAgfSk7XG4gICAgbmV3TGF5ZXJEYXRhID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IFsuLi5zdGF0ZS5sYXllcnMsIG5ld0xheWVyXSxcbiAgICBsYXllckRhdGE6IFsuLi5zdGF0ZS5sYXllckRhdGEsIG5ld0xheWVyRGF0YV0sXG4gICAgbGF5ZXJPcmRlcjogWy4uLnN0YXRlLmxheWVyT3JkZXIsIHN0YXRlLmxheWVyT3JkZXIubGVuZ3RoXSxcbiAgICBzcGxpdE1hcHM6IGFkZE5ld0xheWVyc1RvU3BsaXRNYXAoc3RhdGUuc3BsaXRNYXBzLCBuZXdMYXllcilcbiAgfTtcbn07XG5cbi8qKlxuICogcmVtb3ZlIGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTGF5ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtpZHh9OiBWaXNTdGF0ZUFjdGlvbnMuUmVtb3ZlTGF5ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGNvbnN0IHtsYXllcnMsIGxheWVyRGF0YSwgY2xpY2tlZCwgaG92ZXJJbmZvfSA9IHN0YXRlO1xuICBjb25zdCBsYXllclRvUmVtb3ZlID0gc3RhdGUubGF5ZXJzW2lkeF07XG4gIGNvbnN0IG5ld01hcHMgPSByZW1vdmVMYXllckZyb21TcGxpdE1hcHMoc3RhdGUuc3BsaXRNYXBzLCBsYXllclRvUmVtb3ZlKTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IFsuLi5sYXllcnMuc2xpY2UoMCwgaWR4KSwgLi4ubGF5ZXJzLnNsaWNlKGlkeCArIDEsIGxheWVycy5sZW5ndGgpXSxcbiAgICBsYXllckRhdGE6IFsuLi5sYXllckRhdGEuc2xpY2UoMCwgaWR4KSwgLi4ubGF5ZXJEYXRhLnNsaWNlKGlkeCArIDEsIGxheWVyRGF0YS5sZW5ndGgpXSxcbiAgICBsYXllck9yZGVyOiBzdGF0ZS5sYXllck9yZGVyLmZpbHRlcihpID0+IGkgIT09IGlkeCkubWFwKHBpZCA9PiAocGlkID4gaWR4ID8gcGlkIC0gMSA6IHBpZCkpLFxuICAgIGNsaWNrZWQ6IGxheWVyVG9SZW1vdmUuaXNMYXllckhvdmVyZWQoY2xpY2tlZCkgPyB1bmRlZmluZWQgOiBjbGlja2VkLFxuICAgIGhvdmVySW5mbzogbGF5ZXJUb1JlbW92ZS5pc0xheWVySG92ZXJlZChob3ZlckluZm8pID8gdW5kZWZpbmVkIDogaG92ZXJJbmZvLFxuICAgIHNwbGl0TWFwczogbmV3TWFwc1xuICAgIC8vIFRPRE86IHVwZGF0ZSBmaWx0ZXJzLCBjcmVhdGUgaGVscGVyIHRvIHJlbW92ZSBsYXllciBmb3JtIGZpbHRlciAocmVtb3ZlIGxheWVyaWQgYW5kIGRhdGFpZCkgaWYgbWFwcGVkXG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihuZXdTdGF0ZSk7XG59O1xuXG4vKipcbiAqIGR1cGxpY2F0ZSBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGR1cGxpY2F0ZUxheWVyVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7aWR4fTogVmlzU3RhdGVBY3Rpb25zLkR1cGxpY2F0ZUxheWVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCB7bGF5ZXJzfSA9IHN0YXRlO1xuICBjb25zdCBvcmlnaW5hbCA9IHN0YXRlLmxheWVyc1tpZHhdO1xuICBjb25zdCBvcmlnaW5hbExheWVyT3JkZXJJZHggPSBzdGF0ZS5sYXllck9yZGVyLmZpbmRJbmRleChpID0+IGkgPT09IGlkeCk7XG5cbiAgaWYgKCFvcmlnaW5hbCkge1xuICAgIENvbnNvbGUud2FybihgbGF5ZXIuJHtpZHh9IGlzIHVuZGVmaW5lZGApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsZXQgbmV3TGFiZWwgPSBgQ29weSBvZiAke29yaWdpbmFsLmNvbmZpZy5sYWJlbH1gO1xuICBsZXQgcG9zdGZpeCA9IDA7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb29wLWZ1bmNcbiAgd2hpbGUgKGxheWVycy5maW5kKGwgPT4gbC5jb25maWcubGFiZWwgPT09IG5ld0xhYmVsKSkge1xuICAgIG5ld0xhYmVsID0gYENvcHkgb2YgJHtvcmlnaW5hbC5jb25maWcubGFiZWx9ICR7Kytwb3N0Zml4fWA7XG4gIH1cblxuICAvLyBjb2xsZWN0IGxheWVyIGNvbmZpZyBmcm9tIG9yaWdpbmFsXG4gIGNvbnN0IGxvYWRlZExheWVyID0gc2VyaWFsaXplTGF5ZXIob3JpZ2luYWwpO1xuXG4gIC8vIGFzc2lnbiBuZXcgaWQgYW5kIGxhYmVsIHRvIGNvcGllZCBsYXllclxuICBpZiAoIWxvYWRlZExheWVyLmNvbmZpZykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsb2FkZWRMYXllci5jb25maWcubGFiZWwgPSBuZXdMYWJlbDtcbiAgbG9hZGVkTGF5ZXIuaWQgPSBnZW5lcmF0ZUhhc2hJZChMQVlFUl9JRF9MRU5HVEgpO1xuXG4gIC8vIGFkZCBsYXllciB0byBzdGF0ZVxuICBsZXQgbmV4dFN0YXRlID0gYWRkTGF5ZXJVcGRhdGVyKHN0YXRlLCB7Y29uZmlnOiBsb2FkZWRMYXllcn0pO1xuXG4gIC8vIG5ldyBhZGRlZCBsYXllciBhcmUgYXQgdGhlIGVuZCwgbW92ZSBpdCB0byBiZSBvbiB0b3Agb2Ygb3JpZ2luYWwgbGF5ZXJcbiAgY29uc3QgbmV3TGF5ZXJPcmRlcklkeCA9IG5leHRTdGF0ZS5sYXllck9yZGVyLmxlbmd0aCAtIDE7XG4gIGNvbnN0IG5ld0xheWVyT3JkZXIgPSBhcnJheUluc2VydChcbiAgICBuZXh0U3RhdGUubGF5ZXJPcmRlci5zbGljZSgwLCBuZXdMYXllck9yZGVySWR4KSxcbiAgICBvcmlnaW5hbExheWVyT3JkZXJJZHgsXG4gICAgbmV3TGF5ZXJPcmRlcklkeFxuICApO1xuXG4gIG5leHRTdGF0ZSA9IHtcbiAgICAuLi5uZXh0U3RhdGUsXG4gICAgbGF5ZXJPcmRlcjogbmV3TGF5ZXJPcmRlclxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVBbmltYXRpb25Eb21haW4obmV4dFN0YXRlKTtcbn07XG5cbi8qKlxuICogUmVvcmRlciBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlb3JkZXJMYXllclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge29yZGVyfTogVmlzU3RhdGVBY3Rpb25zLlJlb3JkZXJMYXllclVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsYXllck9yZGVyOiBvcmRlclxufSk7XG5cbi8qKlxuICogUmVtb3ZlIGEgZGF0YXNldCBhbmQgYWxsIGxheWVycywgZmlsdGVycywgdG9vbHRpcCBjb25maWdzIHRoYXQgYmFzZWQgb24gaXRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVEYXRhc2V0VXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SZW1vdmVEYXRhc2V0VXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICAvLyBleHRyYWN0IGRhdGFzZXQga2V5XG4gIGNvbnN0IHtkYXRhSWQ6IGRhdGFzZXRLZXl9ID0gYWN0aW9uO1xuICBjb25zdCB7ZGF0YXNldHN9ID0gc3RhdGU7XG5cbiAgLy8gY2hlY2sgaWYgZGF0YXNldCBpcyBwcmVzZW50XG4gIGlmICghZGF0YXNldHNbZGF0YXNldEtleV0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICBjb25zdCB7XG4gICAgbGF5ZXJzLFxuICAgIGRhdGFzZXRzOiB7W2RhdGFzZXRLZXldOiBkYXRhc2V0LCAuLi5uZXdEYXRhc2V0c31cbiAgfSA9IHN0YXRlO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5cbiAgY29uc3QgaW5kZXhlcyA9IGxheWVycy5yZWR1Y2UoKGxpc3RPZkluZGV4ZXMsIGxheWVyLCBpbmRleCkgPT4ge1xuICAgIGlmIChsYXllci5jb25maWcuZGF0YUlkID09PSBkYXRhc2V0S2V5KSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsaXN0T2ZJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdE9mSW5kZXhlcztcbiAgfSwgW10pO1xuXG4gIC8vIHJlbW92ZSBsYXllcnMgYW5kIGRhdGFzZXRzXG4gIGNvbnN0IHtuZXdTdGF0ZX0gPSBpbmRleGVzLnJlZHVjZShcbiAgICAoe25ld1N0YXRlOiBjdXJyZW50U3RhdGUsIGluZGV4Q291bnRlcn0sIGlkeCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gaWR4IC0gaW5kZXhDb3VudGVyO1xuICAgICAgY3VycmVudFN0YXRlID0gcmVtb3ZlTGF5ZXJVcGRhdGVyKGN1cnJlbnRTdGF0ZSwge2lkeDogY3VycmVudEluZGV4fSk7XG4gICAgICBpbmRleENvdW50ZXIrKztcbiAgICAgIHJldHVybiB7bmV3U3RhdGU6IGN1cnJlbnRTdGF0ZSwgaW5kZXhDb3VudGVyfTtcbiAgICB9LFxuICAgIHtuZXdTdGF0ZTogey4uLnN0YXRlLCBkYXRhc2V0czogbmV3RGF0YXNldHN9LCBpbmRleENvdW50ZXI6IDB9XG4gICk7XG5cbiAgLy8gcmVtb3ZlIGZpbHRlcnNcbiAgY29uc3QgZmlsdGVycyA9IHN0YXRlLmZpbHRlcnMuZmlsdGVyKGZpbHRlciA9PiAhZmlsdGVyLmRhdGFJZC5pbmNsdWRlcyhkYXRhc2V0S2V5KSk7XG5cbiAgLy8gdXBkYXRlIGludGVyYWN0aW9uQ29uZmlnXG4gIGxldCB7aW50ZXJhY3Rpb25Db25maWd9ID0gc3RhdGU7XG4gIGNvbnN0IHt0b29sdGlwfSA9IGludGVyYWN0aW9uQ29uZmlnO1xuICBpZiAodG9vbHRpcCkge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdG9vbHRpcDtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgIGNvbnN0IHtbZGF0YXNldEtleV06IGZpZWxkcywgLi4uZmllbGRzVG9TaG93fSA9IGNvbmZpZy5maWVsZHNUb1Nob3c7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgIGludGVyYWN0aW9uQ29uZmlnID0ge1xuICAgICAgLi4uaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICB0b29sdGlwOiB7Li4udG9vbHRpcCwgY29uZmlnOiB7Li4uY29uZmlnLCBmaWVsZHNUb1Nob3d9fVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gey4uLm5ld1N0YXRlLCBmaWx0ZXJzLCBpbnRlcmFjdGlvbkNvbmZpZ307XG59O1xuXG4vKipcbiAqIHVwZGF0ZSBsYXllciBibGVuZGluZyBtb2RlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuVXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsYXllckJsZW5kaW5nOiBhY3Rpb24ubW9kZVxufSk7XG5cbi8qKlxuICogRGlzcGxheSBkYXRhc2V0IHRhYmxlIGluIGEgbW9kYWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzaG93RGF0YXNldFRhYmxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TaG93RGF0YXNldFRhYmxlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRpbmdEYXRhc2V0OiBhY3Rpb24uZGF0YUlkXG4gIH07XG59O1xuXG4vKipcbiAqIEFkZCBjdXN0b20gY29sb3IgZm9yIGRhdGFzZXRzIGFuZCBsYXllcnNcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVUYWJsZUNvbG9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5VcGRhdGVEYXRhc2V0Q29sb3JVcGRhdGVyXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhSWQsIG5ld0NvbG9yfSA9IGFjdGlvbjtcbiAgY29uc3Qge2RhdGFzZXRzfSA9IHN0YXRlO1xuXG4gIGlmIChpc1JnYkNvbG9yKG5ld0NvbG9yKSkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICBleGlzdGluZy51cGRhdGVUYWJsZUNvbG9yKG5ld0NvbG9yKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRhdGFzZXRzOiB7XG4gICAgICAgIC4uLnN0YXRlLmRhdGFzZXRzLFxuICAgICAgICBbZGF0YUlkXTogY29weVRhYmxlQW5kVXBkYXRlKGV4aXN0aW5nLCB7fSlcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbi8qKlxuICogcmVzZXQgdmlzU3RhdGUgdG8gaW5pdGlhbCBTdGF0ZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnVXBkYXRlciA9IChzdGF0ZTogVmlzU3RhdGUpOiBWaXNTdGF0ZSA9PiAoe1xuICAuLi5JTklUSUFMX1ZJU19TVEFURSxcbiAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxufSk7XG5cbi8qKlxuICogUHJvcGFnYXRlIGB2aXNTdGF0ZWAgcmVkdWNlciB3aXRoIGEgbmV3IGNvbmZpZ3VyYXRpb24uIEN1cnJlbnQgY29uZmlnIHdpbGwgYmUgb3ZlcnJpZGUuXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge1xuICAgIHBheWxvYWQ6IHtjb25maWcgPSB7dmVyc2lvbjogJyd9LCBvcHRpb25zID0ge319XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogVmlzU3RhdGUgPT4ge1xuICBpZiAoIWNvbmZpZy52aXNTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHtrZWVwRXhpc3RpbmdDb25maWd9ID0gb3B0aW9ucztcblxuICAvLyByZXNldCBjb25maWcgaWYga2VlcEV4aXN0aW5nQ29uZmlnIGlzIGZhbHN5XG4gIGxldCBtZXJnZWRTdGF0ZSA9ICFrZWVwRXhpc3RpbmdDb25maWcgPyByZXNldE1hcENvbmZpZ1VwZGF0ZXIoc3RhdGUpIDogc3RhdGU7XG4gIGZvciAoY29uc3QgbWVyZ2VyIG9mIHN0YXRlLm1lcmdlcnMpIHtcbiAgICBpZiAoaXNWYWxpZE1lcmdlcihtZXJnZXIpICYmIGNvbmZpZy52aXNTdGF0ZVttZXJnZXIucHJvcF0pIHtcbiAgICAgIG1lcmdlZFN0YXRlID0gbWVyZ2VyLm1lcmdlKG1lcmdlZFN0YXRlLCBjb25maWcudmlzU3RhdGVbbWVyZ2VyLnByb3BdLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkU3RhdGU7XG59O1xuXG4vKipcbiAqIFRyaWdnZXIgbGF5ZXIgaG92ZXIgZXZlbnQgd2l0aCBob3ZlcmVkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxheWVySG92ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLk9uTGF5ZXJIb3ZlclVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBob3ZlckluZm86IGFjdGlvbi5pbmZvXG59KTtcblxuLyogZXNsaW50LWVuYWJsZSBtYXgtc3RhdGVtZW50cyAqL1xuXG4vKipcbiAqIFVwZGF0ZSBgaW50ZXJhY3Rpb25Db25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJhY3Rpb25Db25maWdDaGFuZ2VVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkludGVyYWN0aW9uQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7Y29uZmlnfSA9IGFjdGlvbjtcblxuICBjb25zdCBpbnRlcmFjdGlvbkNvbmZpZyA9IHtcbiAgICAuLi5zdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAuLi57W2NvbmZpZy5pZF06IGNvbmZpZ31cbiAgfTtcblxuICAvLyBEb24ndCBlbmFibGUgdG9vbHRpcCBhbmQgYnJ1c2ggYXQgdGhlIHNhbWUgdGltZVxuICAvLyBidXQgY29vcmRpbmF0ZXMgY2FuIGJlIHNob3duIGF0IGFsbCB0aW1lXG4gIGNvbnN0IGNvbnRyYWRpY3QgPSBbJ2JydXNoJywgJ3Rvb2x0aXAnXTtcblxuICBpZiAoXG4gICAgY29udHJhZGljdC5pbmNsdWRlcyhjb25maWcuaWQpICYmXG4gICAgY29uZmlnLmVuYWJsZWQgJiZcbiAgICAhc3RhdGUuaW50ZXJhY3Rpb25Db25maWdbY29uZmlnLmlkXS5lbmFibGVkXG4gICkge1xuICAgIC8vIG9ubHkgZW5hYmxlIG9uZSBpbnRlcmFjdGlvbiBhdCBhIHRpbWVcbiAgICBjb250cmFkaWN0LmZvckVhY2goayA9PiB7XG4gICAgICBpZiAoayAhPT0gY29uZmlnLmlkKSB7XG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnW2tdID0gey4uLmludGVyYWN0aW9uQ29uZmlnW2tdLCBlbmFibGVkOiBmYWxzZX07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZ1xuICB9O1xuXG4gIGlmIChjb25maWcuaWQgPT09ICdnZW9jb2RlcicgJiYgIWNvbmZpZy5lbmFibGVkKSB7XG4gICAgcmV0dXJuIHJlbW92ZURhdGFzZXRVcGRhdGVyKG5ld1N0YXRlLCB7ZGF0YUlkOiAnZ2VvY29kZXJfZGF0YXNldCd9KTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuLyoqXG4gKiBUcmlnZ2VyIGxheWVyIGNsaWNrIGV2ZW50IHdpdGggY2xpY2tlZCBvYmplY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsYXllckNsaWNrVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5PbkxheWVyQ2xpY2tVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbW91c2VQb3M6IHN0YXRlLmludGVyYWN0aW9uQ29uZmlnLmNvb3JkaW5hdGUuZW5hYmxlZFxuICAgID8ge1xuICAgICAgICAuLi5zdGF0ZS5tb3VzZVBvcyxcbiAgICAgICAgcGlubmVkOiBzdGF0ZS5tb3VzZVBvcy5waW5uZWQgPyBudWxsIDogY2xvbmVEZWVwKHN0YXRlLm1vdXNlUG9zKVxuICAgICAgfVxuICAgIDogc3RhdGUubW91c2VQb3MsXG4gIGNsaWNrZWQ6IGFjdGlvbi5pbmZvICYmIGFjdGlvbi5pbmZvLnBpY2tlZCA/IGFjdGlvbi5pbmZvIDogbnVsbFxufSk7XG5cbi8qKlxuICogVHJpZ2dlciBtYXAgY2xpY2sgZXZlbnQsIHVuc2VsZWN0IGNsaWNrZWQgb2JqZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwQ2xpY2tVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLk9uTWFwQ2xpY2tVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgY2xpY2tlZDogbnVsbFxuICB9O1xufTtcblxuLyoqXG4gKiBUcmlnZ2VyIG1hcCBtb3ZlIGV2ZW50XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbW91c2VNb3ZlVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZXZ0fTogVmlzU3RhdGVBY3Rpb25zLk9uTW91c2VNb3ZlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBpZiAoT2JqZWN0LnZhbHVlcyhzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZykuc29tZShjb25maWcgPT4gY29uZmlnLmVuYWJsZWQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbW91c2VQb3M6IHtcbiAgICAgICAgLi4uc3RhdGUubW91c2VQb3MsXG4gICAgICAgIG1vdXNlUG9zaXRpb246IFsuLi5ldnQucG9pbnRdLFxuICAgICAgICBjb29yZGluYXRlOiBbLi4uZXZ0LmxuZ0xhdF1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcbi8qKlxuICogVG9nZ2xlIHZpc2liaWxpdHkgb2YgYSBsYXllciBmb3IgYSBzcGxpdCBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PlxuICBzdGF0ZS5zcGxpdE1hcHMgJiYgc3RhdGUuc3BsaXRNYXBzLmxlbmd0aCA9PT0gMFxuICAgID8ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgLy8gbWF5YmUgd2Ugc2hvdWxkIHVzZSBhbiBhcnJheSB0byBzdG9yZSBzdGF0ZSBmb3IgYSBzaW5nbGUgbWFwIGFzIHdlbGxcbiAgICAgICAgLy8gaWYgY3VycmVudCBtYXBzIGxlbmd0aCBpcyBlcXVhbCB0byAwIGl0IG1lYW5zIHRoYXQgd2UgYXJlIGFib3V0IHRvIHNwbGl0IHRoZSB2aWV3XG4gICAgICAgIHNwbGl0TWFwczogY29tcHV0ZVNwbGl0TWFwTGF5ZXJzKHN0YXRlLmxheWVycylcbiAgICAgIH1cbiAgICA6IGNsb3NlU3BlY2lmaWNNYXBBdEluZGV4KHN0YXRlLCBhY3Rpb24pO1xuXG4vKipcbiAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9mIGEgbGF5ZXIgaW4gYSBzcGxpdCBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVMYXllckZvck1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge21hcEluZGV4LCBsYXllcklkfTogVmlzU3RhdGVBY3Rpb25zLlRvZ2dsZUxheWVyRm9yTWFwVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCB7c3BsaXRNYXBzfSA9IHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3BsaXRNYXBzOiBzcGxpdE1hcHMubWFwKChzbSwgaSkgPT5cbiAgICAgIGkgPT09IG1hcEluZGV4XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uc3BsaXRNYXBzW2ldLFxuICAgICAgICAgICAgbGF5ZXJzOiB7XG4gICAgICAgICAgICAgIC4uLnNwbGl0TWFwc1tpXS5sYXllcnMsXG4gICAgICAgICAgICAgIC8vIGlmIGxheWVySWQgbm90IGluIGxheWVycywgc2V0IGl0IHRvIHZpc2libGVcbiAgICAgICAgICAgICAgW2xheWVySWRdOiAhc3BsaXRNYXBzW2ldLmxheWVyc1tsYXllcklkXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgOiBzbVxuICAgIClcbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIG5ldyBkYXRhc2V0IHRvIGB2aXNTdGF0ZWAsIHdpdGggb3B0aW9uIHRvIGxvYWQgYSBtYXAgY29uZmlnIGFsb25nIHdpdGggdGhlIGRhdGFzZXRzXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cyAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBjb25zdCB1cGRhdGVWaXNEYXRhVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5VcGRhdGVWaXNEYXRhVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICAvLyBkYXRhc2V0cyBjYW4gYmUgYSBzaW5nbGUgZGF0YSBlbnRyaWVzIG9yIGFuIGFycmF5IG9mIG11bHRpcGxlIGRhdGEgZW50cmllc1xuICBjb25zdCB7Y29uZmlnLCBvcHRpb25zfSA9IGFjdGlvbjtcbiAgY29uc3QgZGF0YXNldHMgPSB0b0FycmF5KGFjdGlvbi5kYXRhc2V0cyk7XG5cbiAgY29uc3QgbmV3RGF0YUVudHJpZXMgPSBkYXRhc2V0cy5yZWR1Y2UoXG4gICAgKGFjY3UsIHtpbmZvID0ge30sIC4uLnJlc3R9ID0ge30pID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKGNyZWF0ZU5ld0RhdGFFbnRyeSh7aW5mbywgLi4ucmVzdH0sIHN0YXRlLmRhdGFzZXRzKSB8fCB7fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIGNvbnN0IGRhdGFFbXB0eSA9IE9iamVjdC5rZXlzKG5ld0RhdGFFbnRyaWVzKS5sZW5ndGggPCAxO1xuXG4gIC8vIGFwcGx5IGNvbmZpZyBpZiBwYXNzZWQgZnJvbSBhY3Rpb25cbiAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IGNvbmZpZ1xuICAgID8gcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIoc3RhdGUsIHtcbiAgICAgICAgcGF5bG9hZDoge2NvbmZpZywgb3B0aW9uc31cbiAgICAgIH0pXG4gICAgOiBzdGF0ZTtcblxuICBsZXQgbWVyZ2VkU3RhdGUgPSB7XG4gICAgLi4ucHJldmlvdXNTdGF0ZSxcbiAgICBkYXRhc2V0czoge1xuICAgICAgLi4ucHJldmlvdXNTdGF0ZS5kYXRhc2V0cyxcbiAgICAgIC4uLm5ld0RhdGFFbnRyaWVzXG4gICAgfVxuICB9O1xuXG4gIC8vIG1lcmdlIHN0YXRlIHdpdGggY29uZmlnIHRvIGJlIG1lcmdlZFxuICBmb3IgKGNvbnN0IG1lcmdlciBvZiBtZXJnZWRTdGF0ZS5tZXJnZXJzKSB7XG4gICAgaWYgKGlzVmFsaWRNZXJnZXIobWVyZ2VyKSAmJiBtZXJnZXIudG9NZXJnZVByb3AgJiYgbWVyZ2VkU3RhdGVbbWVyZ2VyLnRvTWVyZ2VQcm9wXSkge1xuICAgICAgY29uc3QgdG9NZXJnZSA9IG1lcmdlZFN0YXRlW21lcmdlci50b01lcmdlUHJvcF07XG4gICAgICBtZXJnZWRTdGF0ZVttZXJnZXIudG9NZXJnZVByb3BdID0gSU5JVElBTF9WSVNfU1RBVEVbbWVyZ2VyLnRvTWVyZ2VQcm9wXTtcbiAgICAgIG1lcmdlZFN0YXRlID0gbWVyZ2VyLm1lcmdlKG1lcmdlZFN0YXRlLCB0b01lcmdlKTtcbiAgICB9XG4gIH1cblxuICBsZXQgbmV3TGF5ZXJzID0gIWRhdGFFbXB0eVxuICAgID8gbWVyZ2VkU3RhdGUubGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCAmJiBsLmNvbmZpZy5kYXRhSWQgaW4gbmV3RGF0YUVudHJpZXMpXG4gICAgOiBbXTtcblxuICBpZiAoIW5ld0xheWVycy5sZW5ndGggJiYgKG9wdGlvbnMgfHwge30pLmF1dG9DcmVhdGVMYXllcnMgIT09IGZhbHNlKSB7XG4gICAgLy8gbm8gbGF5ZXIgbWVyZ2VkLCBmaW5kIGRlZmF1bHRzXG4gICAgY29uc3QgcmVzdWx0ID0gYWRkRGVmYXVsdExheWVycyhtZXJnZWRTdGF0ZSwgbmV3RGF0YUVudHJpZXMpO1xuICAgIG1lcmdlZFN0YXRlID0gcmVzdWx0LnN0YXRlO1xuICAgIG5ld0xheWVycyA9IHJlc3VsdC5uZXdMYXllcnM7XG4gIH1cblxuICBpZiAobWVyZ2VkU3RhdGUuc3BsaXRNYXBzLmxlbmd0aCkge1xuICAgIC8vIGlmIG1hcCBpcyBzcGxpdCwgYWRkIG5ldyBsYXllcnMgdG8gc3BsaXRNYXBzXG4gICAgbmV3TGF5ZXJzID0gbWVyZ2VkU3RhdGUubGF5ZXJzLmZpbHRlcihcbiAgICAgIGwgPT4gbC5jb25maWcuZGF0YUlkICYmIGwuY29uZmlnLmRhdGFJZCBpbiBuZXdEYXRhRW50cmllc1xuICAgICk7XG4gICAgbWVyZ2VkU3RhdGUgPSB7XG4gICAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAgIHNwbGl0TWFwczogYWRkTmV3TGF5ZXJzVG9TcGxpdE1hcChtZXJnZWRTdGF0ZS5zcGxpdE1hcHMsIG5ld0xheWVycylcbiAgICB9O1xuICB9XG5cbiAgLy8gaWYgbm8gdG9vbHRpcHMgbWVyZ2VkIGFkZCBkZWZhdWx0IHRvb2x0aXBzXG4gIE9iamVjdC5rZXlzKG5ld0RhdGFFbnRyaWVzKS5mb3JFYWNoKGRhdGFJZCA9PiB7XG4gICAgY29uc3QgdG9vbHRpcEZpZWxkcyA9IG1lcmdlZFN0YXRlLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0b29sdGlwRmllbGRzKSB8fCAhdG9vbHRpcEZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIG1lcmdlZFN0YXRlID0gYWRkRGVmYXVsdFRvb2x0aXBzKG1lcmdlZFN0YXRlLCBuZXdEYXRhRW50cmllc1tkYXRhSWRdKTtcbiAgICB9XG4gIH0pO1xuXG4gIGxldCB1cGRhdGVkU3RhdGUgPSB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGEoXG4gICAgbWVyZ2VkU3RhdGUsXG4gICAgZGF0YUVtcHR5ID8gT2JqZWN0LmtleXMobWVyZ2VkU3RhdGUuZGF0YXNldHMpIDogT2JqZWN0LmtleXMobmV3RGF0YUVudHJpZXMpLFxuICAgIHVuZGVmaW5lZFxuICApO1xuXG4gIC8vIHJlZ2lzdGVyIGxheWVyIGFuaW1hdGlvbiBkb21haW4sXG4gIC8vIG5lZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGxheWVyIGRhdGEgaXMgY2FsY3VsYXRlZFxuICB1cGRhdGVkU3RhdGUgPSB1cGRhdGVBbmltYXRpb25Eb21haW4odXBkYXRlZFN0YXRlKTtcblxuICByZXR1cm4gdXBkYXRlZFN0YXRlO1xufTtcbi8qIGVzbGludC1lbmFibGUgbWF4LXN0YXRlbWVudHMgKi9cblxuLyoqXG4gKiBSZW5hbWUgYW4gZXhpc3RpbmcgZGF0YXNldCBpbiBgdmlzU3RhdGVgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuYW1lRGF0YXNldFVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuUmVuYW1lRGF0YXNldFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3Qge2RhdGFJZCwgbGFiZWx9ID0gYWN0aW9uO1xuICBjb25zdCB7ZGF0YXNldHN9ID0gc3RhdGU7XG4gIGNvbnN0IGV4aXN0aW5nID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gZXhpc3RpbmdcbiAgICA/IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGRhdGFzZXRzOiB7XG4gICAgICAgICAgLi4uZGF0YXNldHMsXG4gICAgICAgICAgW2RhdGFJZF06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA6IC8vIE5vLW9wIGlmIHRoZSBkYXRhc2V0IGRvZXNuJ3QgZXhpc3RcbiAgICAgIHN0YXRlO1xufVxuXG4vKipcbiAqIFdoZW4gYSB1c2VyIGNsaWNrcyBvbiB0aGUgc3BlY2lmaWMgbWFwIGNsb3NpbmcgaWNvblxuICogdGhlIGFwcGxpY2F0aW9uIHdpbGwgY2xvc2UgdGhlIHNlbGVjdGVkIG1hcFxuICogYW5kIHdpbGwgbWVyZ2UgdGhlIHJlbWFpbmluZyBvbmUgd2l0aCB0aGUgZ2xvYmFsIHN0YXRlXG4gKiBUT0RPOiBpIHRoaW5rIGluIHRoZSBmdXR1cmUgdGhpcyBhY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBtZXJnZSBtYXAgbGF5ZXJzIHdpdGggZ2xvYmFsIHNldHRpbmdzXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhdGUgYHZpc1N0YXRlYFxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiBhY3Rpb25cbiAqIEByZXR1cm5zIHtPYmplY3R9IG5leHRTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VTcGVjaWZpY01hcEF0SW5kZXgoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIC8vIHJldHJpZXZlIGxheWVycyBtZXRhIGRhdGEgZnJvbSB0aGUgcmVtYWluaW5nIG1hcCB0aGF0IHdlIG5lZWQgdG8ga2VlcFxuICBjb25zdCBpbmRleFRvUmV0cmlldmUgPSAxIC0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IG1hcExheWVycyA9IHN0YXRlLnNwbGl0TWFwc1tpbmRleFRvUmV0cmlldmVdLmxheWVycztcbiAgY29uc3Qge2xheWVyc30gPSBzdGF0ZTtcblxuICAvLyB1cGRhdGUgbGF5ZXIgdmlzaWJpbGl0eVxuICBjb25zdCBuZXdMYXllcnMgPSBsYXllcnMubWFwKGxheWVyID0+XG4gICAgIW1hcExheWVyc1tsYXllci5pZF0gJiYgbGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgPyBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgLy8gaWYgbGF5ZXIuaWQgaXMgbm90IGluIG1hcExheWVycywgaXQgc2hvdWxkIGJlIGluVmlzaWJsZVxuICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIDogbGF5ZXJcbiAgKTtcblxuICAvLyBkZWxldGUgbWFwXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF5ZXJzOiBuZXdMYXllcnMsXG4gICAgc3BsaXRNYXBzOiBbXVxuICB9O1xufVxuXG4vKipcbiAqIFRyaWdnZXIgZmlsZSBsb2FkaW5nIGRpc3BhdGNoIGBhZGREYXRhVG9NYXBgIGlmIHN1Y2NlZWQsIG9yIGBsb2FkRmlsZXNFcnJgIGlmIGZhaWxlZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTG9hZEZpbGVzVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCB7ZmlsZXMsIG9uRmluaXNoID0gbG9hZEZpbGVzU3VjY2Vzc30gPSBhY3Rpb247XG4gIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgZmlsZUxvYWRpbmdQcm9ncmVzcyA9IEFycmF5LmZyb20oZmlsZXMpLnJlZHVjZShcbiAgICAoYWNjdSwgZiwgaSkgPT4gbWVyZ2VfKGluaXRpYWxGaWxlTG9hZGluZ1Byb2dyZXNzKGYsIGkpKShhY2N1KSxcbiAgICB7fVxuICApO1xuXG4gIGNvbnN0IGZpbGVMb2FkaW5nID0ge1xuICAgIGZpbGVDYWNoZTogW10sXG4gICAgZmlsZXNUb0xvYWQ6IGZpbGVzLFxuICAgIG9uRmluaXNoXG4gIH07XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gbWVyZ2VfKHtmaWxlTG9hZGluZ1Byb2dyZXNzLCBmaWxlTG9hZGluZ30pKHN0YXRlKTtcblxuICByZXR1cm4gbG9hZE5leHRGaWxlVXBkYXRlcihuZXh0U3RhdGUpO1xufTtcblxuLyoqXG4gKiBTdWNlc3NmdWxseSBsb2FkZWQgb25lIGZpbGUsIG1vdmUgb24gdG8gdGhlIG5leHQgb25lXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVTdGVwU3VjY2Vzc1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTG9hZEZpbGVTdGVwU3VjY2Vzc0FjdGlvblxuKTogVmlzU3RhdGUge1xuICBpZiAoIXN0YXRlLmZpbGVMb2FkaW5nKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IHtmaWxlTmFtZSwgZmlsZUNhY2hlfSA9IGFjdGlvbjtcbiAgY29uc3Qge2ZpbGVzVG9Mb2FkLCBvbkZpbmlzaH0gPSBzdGF0ZS5maWxlTG9hZGluZztcbiAgY29uc3Qgc3RhdGVXaXRoUHJvZ3Jlc3MgPSB1cGRhdGVGaWxlTG9hZGluZ1Byb2dyZXNzVXBkYXRlcihzdGF0ZSwge1xuICAgIGZpbGVOYW1lLFxuICAgIHByb2dyZXNzOiB7cGVyY2VudDogMSwgbWVzc2FnZTogJ0RvbmUnfVxuICB9KTtcblxuICAvLyBzYXZlIHByb2Nlc3NlZCBmaWxlIHRvIGZpbGVDYWNoZVxuICBjb25zdCBzdGF0ZVdpdGhDYWNoZSA9IHBpY2tfKCdmaWxlTG9hZGluZycpKG1lcmdlXyh7ZmlsZUNhY2hlfSkpKHN0YXRlV2l0aFByb2dyZXNzKTtcblxuICByZXR1cm4gd2l0aFRhc2soXG4gICAgc3RhdGVXaXRoQ2FjaGUsXG4gICAgREVMQVlfVEFTSygyMDApLm1hcChmaWxlc1RvTG9hZC5sZW5ndGggPyBsb2FkTmV4dEZpbGUgOiAoKSA9PiBvbkZpbmlzaChmaWxlQ2FjaGUpKVxuICApO1xufVxuXG4vLyB3aXRoVGFzazxUPihzdGF0ZTogVCwgdGFzazogYW55KTogVFxuXG4vKipcbiAqXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE5leHRGaWxlVXBkYXRlcihzdGF0ZTogVmlzU3RhdGUpOiBWaXNTdGF0ZSB7XG4gIGlmICghc3RhdGUuZmlsZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3Qge2ZpbGVzVG9Mb2FkfSA9IHN0YXRlLmZpbGVMb2FkaW5nO1xuICBjb25zdCBbZmlsZSwgLi4ucmVtYWluaW5nRmlsZXNUb0xvYWRdID0gZmlsZXNUb0xvYWQ7XG5cbiAgLy8gc2F2ZSBmaWxlc1RvTG9hZCB0byBzdGF0ZVxuICBjb25zdCBuZXh0U3RhdGUgPSBwaWNrXygnZmlsZUxvYWRpbmcnKShtZXJnZV8oe2ZpbGVzVG9Mb2FkOiByZW1haW5pbmdGaWxlc1RvTG9hZH0pKShzdGF0ZSk7XG5cbiAgY29uc3Qgc3RhdGVXaXRoUHJvZ3Jlc3MgPSB1cGRhdGVGaWxlTG9hZGluZ1Byb2dyZXNzVXBkYXRlcihuZXh0U3RhdGUsIHtcbiAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxuICAgIHByb2dyZXNzOiB7cGVyY2VudDogMCwgbWVzc2FnZTogJ2xvYWRpbmcuLi4nfVxuICB9KTtcblxuICBjb25zdCB7bG9hZGVycywgbG9hZE9wdGlvbnN9ID0gc3RhdGU7XG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBzdGF0ZVdpdGhQcm9ncmVzcyxcbiAgICBtYWtlTG9hZEZpbGVUYXNrKFxuICAgICAgZmlsZSxcbiAgICAgIG5leHRTdGF0ZS5maWxlTG9hZGluZyAmJiBuZXh0U3RhdGUuZmlsZUxvYWRpbmcuZmlsZUNhY2hlLFxuICAgICAgbG9hZGVycyxcbiAgICAgIGxvYWRPcHRpb25zXG4gICAgKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUxvYWRGaWxlVGFzayhmaWxlLCBmaWxlQ2FjaGUsIGxvYWRlcnM6IExvYWRlck9iamVjdFtdID0gW10sIGxvYWRPcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIExPQURfRklMRV9UQVNLKHtmaWxlLCBmaWxlQ2FjaGUsIGxvYWRlcnMsIGxvYWRPcHRpb25zfSkuYmltYXAoXG4gICAgLy8gcHJldHRpZXIgaWdub3JlXG4gICAgLy8gc3VjY2Vzc1xuICAgIGdlbiA9PlxuICAgICAgbmV4dEZpbGVCYXRjaCh7XG4gICAgICAgIGdlbixcbiAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgb25GaW5pc2g6IHJlc3VsdCA9PlxuICAgICAgICAgIHByb2Nlc3NGaWxlQ29udGVudCh7XG4gICAgICAgICAgICBjb250ZW50OiByZXN1bHQsXG4gICAgICAgICAgICBmaWxlQ2FjaGVcbiAgICAgICAgICB9KVxuICAgICAgfSksXG5cbiAgICAvLyBlcnJvclxuICAgIGVyciA9PiBsb2FkRmlsZXNFcnIoZmlsZS5uYW1lLCBlcnIpXG4gICk7XG59XG5cbi8qKlxuICpcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzRmlsZUNvbnRlbnRVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3Qge2NvbnRlbnQsIGZpbGVDYWNoZX0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBzdGF0ZVdpdGhQcm9ncmVzcyA9IHVwZGF0ZUZpbGVMb2FkaW5nUHJvZ3Jlc3NVcGRhdGVyKHN0YXRlLCB7XG4gICAgZmlsZU5hbWU6IGNvbnRlbnQuZmlsZU5hbWUsXG4gICAgcHJvZ3Jlc3M6IHtwZXJjZW50OiAxLCBtZXNzYWdlOiAncHJvY2Vzc2luZy4uLid9XG4gIH0pO1xuXG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBzdGF0ZVdpdGhQcm9ncmVzcyxcbiAgICBQUk9DRVNTX0ZJTEVfREFUQSh7Y29udGVudCwgZmlsZUNhY2hlfSkuYmltYXAoXG4gICAgICByZXN1bHQgPT4gbG9hZEZpbGVTdGVwU3VjY2Vzcyh7ZmlsZU5hbWU6IGNvbnRlbnQuZmlsZU5hbWUsIGZpbGVDYWNoZTogcmVzdWx0fSksXG4gICAgICBlcnIgPT4gbG9hZEZpbGVzRXJyKGNvbnRlbnQuZmlsZU5hbWUsIGVycilcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVByb2dyZXNzKHByZXZQcm9ncmVzcyA9IHt9LCBwcm9ncmVzcykge1xuICAvLyBUaGlzIGhhcHBlbnMgd2hlbiByZWNlaXZpbmcgcXVlcnkgbWV0YWRhdGEgb3Igb3RoZXIgY2FzZXMgd2UgZG9uJ3RcbiAgLy8gaGF2ZSBhbiB1cGRhdGUgZm9yIHRoZSB1c2VyLlxuICBpZiAoIXByb2dyZXNzIHx8ICFwcm9ncmVzcy5wZXJjZW50KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwZXJjZW50OiBwcm9ncmVzcy5wZXJjZW50XG4gIH07XG59XG5cbi8qKlxuICogZ2V0cyBjYWxsZWQgd2l0aCBwYXlsb2FkID0gQXN5bmNHZW5lcmF0b3I8Pz8/PlxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG5leHRGaWxlQmF0Y2hVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Z2VuLCBmaWxlTmFtZSwgcHJvZ3Jlc3MsIGFjY3VtdWxhdGVkLCBvbkZpbmlzaH1cbiAgfTogVmlzU3RhdGVBY3Rpb25zLk5leHRGaWxlQmF0Y2hVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlV2l0aFByb2dyZXNzID0gdXBkYXRlRmlsZUxvYWRpbmdQcm9ncmVzc1VwZGF0ZXIoc3RhdGUsIHtcbiAgICBmaWxlTmFtZSxcbiAgICBwcm9ncmVzczogcGFyc2VQcm9ncmVzcyhzdGF0ZS5maWxlTG9hZGluZ1Byb2dyZXNzW2ZpbGVOYW1lXSwgcHJvZ3Jlc3MpXG4gIH0pO1xuICByZXR1cm4gd2l0aFRhc2soXG4gICAgc3RhdGVXaXRoUHJvZ3Jlc3MsXG4gICAgVU5XUkFQX1RBU0soZ2VuLm5leHQoKSkuYmltYXAoXG4gICAgICAoe3ZhbHVlLCBkb25lfSkgPT4ge1xuICAgICAgICByZXR1cm4gZG9uZVxuICAgICAgICAgID8gb25GaW5pc2goYWNjdW11bGF0ZWQpXG4gICAgICAgICAgOiBuZXh0RmlsZUJhdGNoKHtcbiAgICAgICAgICAgICAgZ2VuLFxuICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHZhbHVlLnByb2dyZXNzLFxuICAgICAgICAgICAgICBhY2N1bXVsYXRlZDogdmFsdWUsXG4gICAgICAgICAgICAgIG9uRmluaXNoXG4gICAgICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4gbG9hZEZpbGVzRXJyKGZpbGVOYW1lLCBlcnIpXG4gICAgKVxuICApO1xufTtcblxuLyoqXG4gKiBUcmlnZ2VyIGxvYWRpbmcgZmlsZSBlcnJvclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc0VyclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2Vycm9yLCBmaWxlTmFtZX06IFZpc1N0YXRlQWN0aW9ucy5Mb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIC8vIHVwZGF0ZSB1aSB3aXRoIGVycm9yIG1lc3NhZ2VcbiAgQ29uc29sZS53YXJuKGVycm9yKTtcbiAgaWYgKCFzdGF0ZS5maWxlTG9hZGluZykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCB7ZmlsZXNUb0xvYWQsIG9uRmluaXNoLCBmaWxlQ2FjaGV9ID0gc3RhdGUuZmlsZUxvYWRpbmc7XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gdXBkYXRlRmlsZUxvYWRpbmdQcm9ncmVzc1VwZGF0ZXIoc3RhdGUsIHtcbiAgICBmaWxlTmFtZSxcbiAgICBwcm9ncmVzczoge2Vycm9yfVxuICB9KTtcblxuICAvLyBraWNrIG9mZiBuZXh0IGZpbGUgb3IgZmluaXNoXG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBuZXh0U3RhdGUsXG4gICAgREVMQVlfVEFTSygyMDApLm1hcChmaWxlc1RvTG9hZC5sZW5ndGggPyBsb2FkTmV4dEZpbGUgOiAoKSA9PiBvbkZpbmlzaChmaWxlQ2FjaGUpKVxuICApO1xufTtcblxuLyoqXG4gKiBXaGVuIHNlbGVjdCBkYXRhc2V0IGZvciBleHBvcnQsIGFwcGx5IGNwdSBmaWx0ZXIgdG8gc2VsZWN0ZWQgZGF0YXNldFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFwcGx5Q1BVRmlsdGVyVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZGF0YUlkfTogVmlzU3RhdGVBY3Rpb25zLkFwcGx5Q1BVRmlsdGVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICAvLyBhcHBseSBjcHVGaWx0ZXJcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZGF0YUlkKTtcblxuICByZXR1cm4gZGF0YUlkcy5yZWR1Y2UoKGFjY3UsIGlkKSA9PiBmaWx0ZXJEYXRhc2V0Q1BVKGFjY3UsIGlkKSwgc3RhdGUpO1xufTtcblxuLyoqXG4gKiBVc2VyIGlucHV0IHRvIHVwZGF0ZSB0aGUgaW5mbyBvZiB0aGUgbWFwXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwSW5mb1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuU2V0TWFwSW5mb1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBtYXBJbmZvOiB7XG4gICAgLi4uc3RhdGUubWFwSW5mbyxcbiAgICAuLi5hY3Rpb24uaW5mb1xuICB9XG59KTtcbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHVwZGF0ZSBBbGwgbGF5ZXIgZG9tYWluIGFuZCBsYXllciBkYXRhIG9mIHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREZWZhdWx0TGF5ZXJzKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGRhdGFzZXRzOiBEYXRhc2V0c1xuKToge3N0YXRlOiBWaXNTdGF0ZTsgbmV3TGF5ZXJzOiBMYXllcltdfSB7XG4gIGNvbnN0IGVtcHR5OiBMYXllcltdID0gW107XG4gIGNvbnN0IGRlZmF1bHRMYXllcnMgPSBPYmplY3QudmFsdWVzKGRhdGFzZXRzKS5yZWR1Y2UoKGFjY3UsIGRhdGFzZXQpID0+IHtcbiAgICBjb25zdCBmb3VuZExheWVycyA9IGZpbmREZWZhdWx0TGF5ZXIoZGF0YXNldCwgc3RhdGUubGF5ZXJDbGFzc2VzKTtcbiAgICByZXR1cm4gZm91bmRMYXllcnMgJiYgZm91bmRMYXllcnMubGVuZ3RoID8gYWNjdS5jb25jYXQoZm91bmRMYXllcnMpIDogYWNjdTtcbiAgfSwgZW1wdHkpO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbGF5ZXJzOiBbLi4uc3RhdGUubGF5ZXJzLCAuLi5kZWZhdWx0TGF5ZXJzXSxcbiAgICAgIGxheWVyT3JkZXI6IFtcbiAgICAgICAgLy8gcHV0IG5ldyBsYXllcnMgb24gdG9wIG9mIG9sZCBvbmVzXG4gICAgICAgIC4uLmRlZmF1bHRMYXllcnMubWFwKChfLCBpKSA9PiBzdGF0ZS5sYXllcnMubGVuZ3RoICsgaSksXG4gICAgICAgIC4uLnN0YXRlLmxheWVyT3JkZXJcbiAgICAgIF1cbiAgICB9LFxuICAgIG5ld0xheWVyczogZGVmYXVsdExheWVyc1xuICB9O1xufVxuXG4vKipcbiAqIGhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGRlZmF1bHQgdG9vbHRpcHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFzZXRcbiAqIEByZXR1cm5zIHtPYmplY3R9IG5leHRTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGVmYXVsdFRvb2x0aXBzKHN0YXRlLCBkYXRhc2V0KSB7XG4gIGNvbnN0IHRvb2x0aXBGaWVsZHMgPSBkYXRhc2V0Lm1ldGFkYXRhLmlzRHluYW1pY1NwYXRpYWxJbmRleFxuICAgID8ge1tkYXRhc2V0LmlkXTogW119XG4gICAgOiBmaW5kRmllbGRzVG9TaG93KHtcbiAgICAgICAgLi4uZGF0YXNldCxcbiAgICAgICAgbWF4RGVmYXVsdFRvb2x0aXBzOiBzdGF0ZS5tYXhEZWZhdWx0VG9vbHRpcHNcbiAgICAgIH0pO1xuICBjb25zdCBtZXJnZWQgPSB7XG4gICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93LFxuICAgIC4uLnRvb2x0aXBGaWVsZHNcbiAgfTtcblxuICByZXR1cm4gc2V0KFsnaW50ZXJhY3Rpb25Db25maWcnLCAndG9vbHRpcCcsICdjb25maWcnLCAnZmllbGRzVG9TaG93J10sIG1lcmdlZCwgc3RhdGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbEZpbGVMb2FkaW5nUHJvZ3Jlc3MoZmlsZSwgaW5kZXgpIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBmaWxlLm5hbWUgfHwgYFVudGl0bGVkIEZpbGUgJHtpbmRleH1gO1xuICByZXR1cm4ge1xuICAgIFtmaWxlTmFtZV06IHtcbiAgICAgIC8vIHBlcmNlbnQgb2YgY3VycmVudCBmaWxlXG4gICAgICBwZXJjZW50OiAwLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIGVycm9yOiBudWxsXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsZUxvYWRpbmdQcm9ncmVzc1VwZGF0ZXIoc3RhdGUsIHtmaWxlTmFtZSwgcHJvZ3Jlc3N9KSB7XG4gIHJldHVybiBwaWNrXygnZmlsZUxvYWRpbmdQcm9ncmVzcycpKHBpY2tfKGZpbGVOYW1lKShtZXJnZV8ocHJvZ3Jlc3MpKSkoc3RhdGUpO1xufVxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gdXBkYXRlIGxheWVyIGRvbWFpbnMgZm9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGEoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgZGF0YUlkOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdXBkYXRlZEZpbHRlcj86IEZpbHRlclxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhSWRzID0gdHlwZW9mIGRhdGFJZCA9PT0gJ3N0cmluZycgPyBbZGF0YUlkXSA6IGRhdGFJZDtcbiAgY29uc3QgbmV3TGF5ZXJzOiBMYXllcltdID0gW107XG4gIGNvbnN0IG5ld0xheWVyRGF0YTogYW55W10gPSBbXTtcblxuICBzdGF0ZS5sYXllcnMuZm9yRWFjaCgob2xkTGF5ZXIsIGkpID0+IHtcbiAgICBpZiAob2xkTGF5ZXIuY29uZmlnLmRhdGFJZCAmJiBkYXRhSWRzLmluY2x1ZGVzKG9sZExheWVyLmNvbmZpZy5kYXRhSWQpKSB7XG4gICAgICAvLyBObyBuZWVkIHRvIHJlY2FsY3VsYXRlIGxheWVyIGRvbWFpbiBpZiBmaWx0ZXIgaGFzIGZpeGVkIGRvbWFpblxuICAgICAgY29uc3QgbmV3TGF5ZXIgPVxuICAgICAgICB1cGRhdGVkRmlsdGVyICYmIHVwZGF0ZWRGaWx0ZXIuZml4ZWREb21haW5cbiAgICAgICAgICA/IG9sZExheWVyXG4gICAgICAgICAgOiBvbGRMYXllci51cGRhdGVMYXllckRvbWFpbihzdGF0ZS5kYXRhc2V0cywgdXBkYXRlZEZpbHRlcik7XG5cbiAgICAgIGNvbnN0IHtsYXllckRhdGEsIGxheWVyfSA9IGNhbGN1bGF0ZUxheWVyRGF0YShuZXdMYXllciwgc3RhdGUsIHN0YXRlLmxheWVyRGF0YVtpXSk7XG5cbiAgICAgIG5ld0xheWVycy5wdXNoKGxheWVyKTtcbiAgICAgIG5ld0xheWVyRGF0YS5wdXNoKGxheWVyRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0xheWVycy5wdXNoKG9sZExheWVyKTtcbiAgICAgIG5ld0xheWVyRGF0YS5wdXNoKHN0YXRlLmxheWVyRGF0YVtpXSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IG5ld0xheWVycyxcbiAgICBsYXllckRhdGE6IG5ld0xheWVyRGF0YVxuICB9O1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihzdGF0ZTogVmlzU3RhdGUpOiBWaXNTdGF0ZSB7XG4gIC8vIG1lcmdlIGFsbCBhbmltYXRhYmxlIGxheWVyIGRvbWFpbiBhbmQgdXBkYXRlIGdsb2JhbCBjb25maWdcbiAgY29uc3QgYW5pbWF0YWJsZUxheWVycyA9IHN0YXRlLmxheWVycy5maWx0ZXIoXG4gICAgbCA9PlxuICAgICAgbC5jb25maWcuaXNWaXNpYmxlICYmXG4gICAgICBsLmNvbmZpZy5hbmltYXRpb24gJiZcbiAgICAgIGwuY29uZmlnLmFuaW1hdGlvbi5lbmFibGVkICYmXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBBcnJheS5pc0FycmF5KGwuYW5pbWF0aW9uRG9tYWluKVxuICApO1xuXG4gIGlmICghYW5pbWF0YWJsZUxheWVycy5sZW5ndGgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgICAgLi4uc3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICBkb21haW46IG51bGwsXG4gICAgICAgIGRlZmF1bHRUaW1lRm9ybWF0OiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1lcmdlZERvbWFpbjogW251bWJlciwgbnVtYmVyXSA9IGFuaW1hdGFibGVMYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gW1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgTWF0aC5taW4oYWNjdVswXSwgbGF5ZXIuYW5pbWF0aW9uRG9tYWluWzBdKSxcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIE1hdGgubWF4KGFjY3VbMV0sIGxheWVyLmFuaW1hdGlvbkRvbWFpblsxXSlcbiAgICBdLFxuICAgIFtOdW1iZXIoSW5maW5pdHkpLCAtSW5maW5pdHldXG4gICk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0VGltZVdpZGdldFRpdGxlRm9ybWF0dGVyKG1lcmdlZERvbWFpbik7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgIC4uLnN0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgICAgIGN1cnJlbnRUaW1lOiBpc0luUmFuZ2Uoc3RhdGUuYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lLCBtZXJnZWREb21haW4pXG4gICAgICAgID8gc3RhdGUuYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lXG4gICAgICAgIDogbWVyZ2VkRG9tYWluWzBdLFxuICAgICAgZG9tYWluOiBtZXJnZWREb21haW4sXG4gICAgICBkZWZhdWx0VGltZUZvcm1hdFxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHN0YXR1cyBvZiB0aGUgZWRpdG9yXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3Qgc2V0RWRpdG9yTW9kZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge21vZGV9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0RWRpdG9yTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBlZGl0b3I6IHtcbiAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgbW9kZSxcbiAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGxcbiAgfVxufSk7XG5cbi8vIGNvbnN0IGZlYXR1cmVUb0ZpbHRlclZhbHVlID0gKGZlYXR1cmUpID0+ICh7Li4uZmVhdHVyZSwgaWQ6IGZlYXR1cmUuaWR9KTtcbi8qKlxuICogVXBkYXRlIGVkaXRvciBmZWF0dXJlc1xuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZlYXR1cmVzVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZmVhdHVyZXMgPSBbXX06IFZpc1N0YXRlQWN0aW9ucy5TZXRGZWF0dXJlc1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgbGFzdEZlYXR1cmUgPSBmZWF0dXJlcy5sZW5ndGggJiYgZmVhdHVyZXNbZmVhdHVyZXMubGVuZ3RoIC0gMV07XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgZWRpdG9yOiB7XG4gICAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgICAvLyBvbmx5IHNhdmUgbm9uZSBmaWx0ZXIgZmVhdHVyZXMgdG8gZWRpdG9yXG4gICAgICBmZWF0dXJlczogZmVhdHVyZXMuZmlsdGVyKGYgPT4gIWdldEZpbHRlcklkSW5GZWF0dXJlKGYpKSxcbiAgICAgIG1vZGU6IGxhc3RGZWF0dXJlICYmIGxhc3RGZWF0dXJlLnByb3BlcnRpZXMuaXNDbG9zZWQgPyBFRElUT1JfTU9ERVMuRURJVCA6IHN0YXRlLmVkaXRvci5tb2RlXG4gICAgfVxuICB9O1xuXG4gIC8vIFJldHJpZXZlIGV4aXN0aW5nIGZlYXR1cmVcbiAgY29uc3Qge3NlbGVjdGVkRmVhdHVyZX0gPSBzdGF0ZS5lZGl0b3I7XG5cbiAgLy8gSWYgbm8gZmVhdHVyZSBpcyBzZWxlY3RlZCB3ZSBjYW4gc2ltcGx5IHJldHVybiBzaW5jZSBubyBvcGVyYXRpb25zXG4gIGlmICghc2VsZWN0ZWRGZWF0dXJlKSB7XG4gICAgcmV0dXJuIG5ld1N0YXRlO1xuICB9XG5cbiAgLy8gVE9ETzogY2hlY2sgaWYgdGhlIGZlYXR1cmUgaGFzIGNoYW5nZWRcbiAgY29uc3QgZmVhdHVyZSA9IGZlYXR1cmVzLmZpbmQoZiA9PiBmLmlkID09PSBzZWxlY3RlZEZlYXR1cmUuaWQpO1xuXG4gIC8vIGlmIGZlYXR1cmUgaXMgcGFydCBvZiBhIGZpbHRlclxuICBjb25zdCBmaWx0ZXJJZCA9IGZlYXR1cmUgJiYgZ2V0RmlsdGVySWRJbkZlYXR1cmUoZmVhdHVyZSk7XG4gIGlmIChmaWx0ZXJJZCAmJiBmZWF0dXJlKSB7XG4gICAgY29uc3QgZmVhdHVyZVZhbHVlID0gZmVhdHVyZVRvRmlsdGVyVmFsdWUoZmVhdHVyZSwgZmlsdGVySWQpO1xuICAgIGNvbnN0IGZpbHRlcklkeCA9IHN0YXRlLmZpbHRlcnMuZmluZEluZGV4KGZpbCA9PiBmaWwuaWQgPT09IGZpbHRlcklkKTtcbiAgICByZXR1cm4gc2V0RmlsdGVyVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgaWR4OiBmaWx0ZXJJZHgsXG4gICAgICBwcm9wOiAndmFsdWUnLFxuICAgICAgdmFsdWU6IGZlYXR1cmVWYWx1ZVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY3VycmVudCBzZWxlY3RlZCBmZWF0dXJlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTZWxlY3RlZEZlYXR1cmVVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtmZWF0dXJlfTogVmlzU3RhdGVBY3Rpb25zLlNldFNlbGVjdGVkRmVhdHVyZVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBlZGl0b3I6IHtcbiAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgc2VsZWN0ZWRGZWF0dXJlOiBmZWF0dXJlXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBleGlzdGluZyBmZWF0dXJlIGZyb20gZmlsdGVyc1xuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUZlYXR1cmVVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtmZWF0dXJlfTogVmlzU3RhdGVBY3Rpb25zLkRlbGV0ZUZlYXR1cmVVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGlmICghZmVhdHVyZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRvcjoge1xuICAgICAgLi4uc3RhdGUuZWRpdG9yLFxuICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBudWxsXG4gICAgfVxuICB9O1xuXG4gIGlmIChnZXRGaWx0ZXJJZEluRmVhdHVyZShmZWF0dXJlKSkge1xuICAgIGNvbnN0IGZpbHRlcklkeCA9IG5ld1N0YXRlLmZpbHRlcnMuZmluZEluZGV4KGYgPT4gZi5pZCA9PT0gZ2V0RmlsdGVySWRJbkZlYXR1cmUoZmVhdHVyZSkpO1xuXG4gICAgcmV0dXJuIGZpbHRlcklkeCA+IC0xID8gcmVtb3ZlRmlsdGVyVXBkYXRlcihuZXdTdGF0ZSwge2lkeDogZmlsdGVySWR4fSkgOiBuZXdTdGF0ZTtcbiAgfVxuXG4gIC8vIG1vZGlmeSBlZGl0b3Igb2JqZWN0XG4gIGNvbnN0IG5ld0VkaXRvciA9IHtcbiAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgZmVhdHVyZXM6IHN0YXRlLmVkaXRvci5mZWF0dXJlcy5maWx0ZXIoZiA9PiBmLmlkICE9PSBmZWF0dXJlLmlkKSxcbiAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRvcjogbmV3RWRpdG9yXG4gIH07XG59XG5cbi8qKlxuICogVG9nZ2xlIGZlYXR1cmUgYXMgbGF5ZXIgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBwYXlsb2FkOiBWaXNTdGF0ZUFjdGlvbnMuU2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7bGF5ZXIsIGZlYXR1cmV9ID0gcGF5bG9hZDtcbiAgY29uc3QgZmlsdGVySWQgPSBnZXRGaWx0ZXJJZEluRmVhdHVyZShmZWF0dXJlKTtcblxuICAvLyBsZXQgbmV3RmlsdGVyID0gbnVsbDtcbiAgbGV0IGZpbHRlcklkeDtcbiAgbGV0IG5ld0xheWVySWQgPSBbbGF5ZXIuaWRdO1xuICBsZXQgbmV3U3RhdGUgPSBzdGF0ZTtcbiAgLy8gSWYgcG9seWdvbiBmaWx0ZXIgYWxyZWFkeSBleGlzdHMsIHdlIG5lZWQgdG8gZmluZCBvdXQgaWYgdGhlIGN1cnJlbnQgbGF5ZXIgaXMgYWxyZWFkeSBpbmNsdWRlZFxuICBpZiAoZmlsdGVySWQpIHtcbiAgICBmaWx0ZXJJZHggPSBzdGF0ZS5maWx0ZXJzLmZpbmRJbmRleChmID0+IGYuaWQgPT09IGZpbHRlcklkKTtcblxuICAgIGlmICghc3RhdGUuZmlsdGVyc1tmaWx0ZXJJZHhdKSB7XG4gICAgICAvLyB3aGF0IGlmIGZpbHRlciBkb2Vzbid0IGV4aXN0Py4uLiBub3QgcG9zc2libGUuXG4gICAgICAvLyBiZWNhdXNlIGZlYXR1cmVzIGluIHRoZSBlZGl0b3IgaXMgcGFzc2VkIGluIGZyb20gZmlsdGVycyBhbmQgZWRpdG9ycy5cbiAgICAgIC8vIGJ1dCB3ZSB3aWxsIG1vdmUgdGhpcyBmZWF0dXJlIGJhY2sgdG8gZWRpdG9yIGp1c3QgaW4gY2FzZVxuICAgICAgY29uc3Qgbm9uZUZpbHRlckZlYXR1cmUgPSB7XG4gICAgICAgIC4uLmZlYXR1cmUsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgICAgICAgZmlsdGVySWQ6IG51bGxcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIC4uLnN0YXRlLmVkaXRvcixcbiAgICAgICAgICBmZWF0dXJlczogWy4uLnN0YXRlLmVkaXRvci5mZWF0dXJlcywgbm9uZUZpbHRlckZlYXR1cmVdLFxuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbm9uZUZpbHRlckZlYXR1cmVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1tmaWx0ZXJJZHhdO1xuICAgIGNvbnN0IHtsYXllcklkID0gW119ID0gZmlsdGVyO1xuICAgIGNvbnN0IGlzTGF5ZXJJbmNsdWRlZCA9IGxheWVySWQuaW5jbHVkZXMobGF5ZXIuaWQpO1xuXG4gICAgbmV3TGF5ZXJJZCA9IGlzTGF5ZXJJbmNsdWRlZFxuICAgICAgPyAvLyBpZiBsYXllciBpcyBpbmNsdWRlZCwgcmVtb3ZlIGl0XG4gICAgICAgIGxheWVySWQuZmlsdGVyKGwgPT4gbCAhPT0gbGF5ZXIuaWQpXG4gICAgICA6IFsuLi5sYXllcklkLCBsYXllci5pZF07XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgd2UgaGF2ZW4ndCBjcmVhdGUgdGhlIHBvbHlnb24gZmlsdGVyLCBjcmVhdGUgaXRcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSBnZW5lcmF0ZVBvbHlnb25GaWx0ZXIoW10sIGZlYXR1cmUpO1xuICAgIGZpbHRlcklkeCA9IHN0YXRlLmZpbHRlcnMubGVuZ3RoO1xuXG4gICAgLy8gYWRkIGZlYXR1cmUsIHJlbW92ZSBmZWF0dXJlIGZyb20gZWlkdG9yXG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGZpbHRlcnM6IFsuLi5zdGF0ZS5maWx0ZXJzLCBuZXdGaWx0ZXJdLFxuICAgICAgZWRpdG9yOiB7XG4gICAgICAgIC4uLnN0YXRlLmVkaXRvcixcbiAgICAgICAgZmVhdHVyZXM6IHN0YXRlLmVkaXRvci5mZWF0dXJlcy5maWx0ZXIoZiA9PiBmLmlkICE9PSBmZWF0dXJlLmlkKSxcbiAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBuZXdGaWx0ZXIudmFsdWVcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHNldEZpbHRlclVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICBpZHg6IGZpbHRlcklkeCxcbiAgICBwcm9wOiAnbGF5ZXJJZCcsXG4gICAgdmFsdWU6IG5ld0xheWVySWRcbiAgfSk7XG59XG5cbi8qKlxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRUYWJsZUNvbHVtblVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2RhdGFJZCwgY29sdW1uLCBtb2RlfTogVmlzU3RhdGVBY3Rpb25zLlNvcnRUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgZGF0YXNldCA9IHN0YXRlLmRhdGFzZXRzW2RhdGFJZF07XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsZXQgc29ydE1vZGUgPSBtb2RlO1xuICBpZiAoIXNvcnRNb2RlKSB7XG4gICAgY29uc3QgY3VycmVudE1vZGUgPSBnZXQoZGF0YXNldCwgWydzb3J0Q29sdW1uJywgY29sdW1uXSk7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNob3VsZCBiZSBmaXhhYmxlIGluIGEgVFMgZmlsZVxuICAgIHNvcnRNb2RlID0gY3VycmVudE1vZGVcbiAgICAgID8gT2JqZWN0LmtleXMoU09SVF9PUkRFUikuZmluZChtID0+IG0gIT09IGN1cnJlbnRNb2RlKVxuICAgICAgOiBTT1JUX09SREVSLkFTQ0VORElORztcbiAgfVxuXG4gIGNvbnN0IHNvcnRlZCA9IHNvcnREYXRhc2V0QnlDb2x1bW4oZGF0YXNldCwgY29sdW1uLCBzb3J0TW9kZSk7XG4gIHJldHVybiBzZXQoWydkYXRhc2V0cycsIGRhdGFJZF0sIHNvcnRlZCwgc3RhdGUpO1xufVxuXG4vKipcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaW5UYWJsZUNvbHVtblVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2RhdGFJZCwgY29sdW1ufTogVmlzU3RhdGVBY3Rpb25zLlBpblRhYmxlQ29sdW1uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IG5ld0RhdGFzZXQgPSBwaW5UYWJsZUNvbHVtbnMoZGF0YXNldCwgY29sdW1uKTtcblxuICByZXR1cm4gc2V0KFsnZGF0YXNldHMnLCBkYXRhSWRdLCBuZXdEYXRhc2V0LCBzdGF0ZSk7XG59XG5cbi8qKlxuICogQ29weSBjb2x1bW4gY29udGVudCBhcyBzdHJpbmdzXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlQ29sdW1uVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZGF0YUlkLCBjb2x1bW59OiBWaXNTdGF0ZUFjdGlvbnMuQ29weVRhYmxlQ29sdW1uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IGZpZWxkSWR4ID0gZGF0YXNldC5maWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBjb2x1bW4pO1xuICBpZiAoZmllbGRJZHggPCAwKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IHt0eXBlfSA9IGRhdGFzZXQuZmllbGRzW2ZpZWxkSWR4XTtcbiAgY29uc3QgdGV4dCA9IGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgIC5tYXAocm93ID0+IHBhcnNlRmllbGRWYWx1ZShyb3cudmFsdWVBdChmaWVsZElkeCksIHR5cGUpLCB0cnVlKVxuICAgIC5qb2luKCdcXG4nKTtcblxuICBjb3B5KHRleHQpO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVFZGl0b3JWaXNpYmlsaXR5VXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5VXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRvcjoge1xuICAgICAgLi4uc3RhdGUuZWRpdG9yLFxuICAgICAgdmlzaWJsZTogIXN0YXRlLmVkaXRvci52aXNpYmxlXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZ1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2lkeCwgY29uZmlnfTogVmlzU3RhdGVBY3Rpb25zLlNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3Qgb2xkRmlsdGVyID0gc3RhdGUuZmlsdGVyc1tpZHhdO1xuICBpZiAoIW9sZEZpbHRlcikge1xuICAgIENvbnNvbGUuZXJyb3IoYGZpbHRlcnMuJHtpZHh9IGlzIHVuZGVmaW5lZGApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBpZiAob2xkRmlsdGVyLnR5cGUgIT09IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UpIHtcbiAgICBDb25zb2xlLmVycm9yKFxuICAgICAgYHNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWcgY2FuIG9ubHkgYmUgY2FsbGVkIHRvIHVwZGF0ZSBhIHRpbWUgZmlsdGVyLiBjaGVjayBmaWx0ZXIudHlwZSA9PT0gJ3RpbWVSYW5nZSdgXG4gICAgKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCB1cGRhdGVzID0gY2hlY2tUaW1lQ29uZmlnQXJncyhjb25maWcpO1xuXG4gIHJldHVybiBwaWNrXygnZmlsdGVycycpKHN3YXBfKG1lcmdlXyh1cGRhdGVzKShvbGRGaWx0ZXIpKSkoc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBjaGVja1RpbWVDb25maWdBcmdzKGNvbmZpZykge1xuICBjb25zdCBhbGxvd2VkID0gWyd0aW1lRm9ybWF0JywgJ3RpbWV6b25lJ107XG4gIHJldHVybiBPYmplY3Qua2V5cyhjb25maWcpLnJlZHVjZSgoYWNjdSwgcHJvcCkgPT4ge1xuICAgIGlmICghYWxsb3dlZC5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgQ29uc29sZS5lcnJvcihcbiAgICAgICAgYHNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZyB0YWtlcyB0aW1lRm9ybWF0IGFuZC9vciB0aW1lem9uZSBhcyBvcHRpb25zLCBmb3VuZCAke3Byb3B9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiBhY2N1O1xuICAgIH1cblxuICAgIC8vIGhlcmUgd2UgYXJlIE5PVCBjaGVja2luZyBpZiB0aW1lem9uZSBvciB0aW1lRm9ybWF0IGlucHV0IGlzIHZhbGlkXG4gICAgYWNjdVtwcm9wXSA9IGNvbmZpZ1twcm9wXTtcbiAgICByZXR1cm4gYWNjdTtcbiAgfSwge30pO1xufVxuLyoqXG4gKiBVcGRhdGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRMYXllckFuaW1hdGlvblRpbWVDb25maWdVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtjb25maWd9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IHVwZGF0ZXMgPSBjaGVja1RpbWVDb25maWdBcmdzKGNvbmZpZyk7XG4gIHJldHVybiBwaWNrXygnYW5pbWF0aW9uQ29uZmlnJykobWVyZ2VfKHVwZGF0ZXMpKShzdGF0ZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
2102
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwicmVxdWlyZSIsIl9pbmRleCIsIl9jbG9uZURlZXAiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VuaXEiLCJfZ2V0IiwiX3hvciIsIl9jb3B5VG9DbGlwYm9hcmQiLCJfZGF0YVV0aWxzIiwiX3Rhc2tzIiwiX3Zpc1N0YXRlQWN0aW9ucyIsIl9pbnRlcmFjdGlvblV0aWxzIiwiX2ZpbHRlclV0aWxzIiwiX2dwdUZpbHRlclV0aWxzIiwiX2RhdGFzZXRVdGlscyIsIl9rZXBsZXJUYWJsZSIsIl91dGlscyIsIl9sYXllclV0aWxzIiwiX3Zpc1N0YXRlTWVyZ2VyIiwiX3NwbGl0TWFwVXRpbHMiLCJfbGF5ZXJzIiwiX2xheWVyRmFjdG9yeSIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfY29tcG9zZXJIZWxwZXJzIiwiX3NjaGVtYXMiLCJfY29sb3JVdGlscyIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl90b1Byb3BlcnR5S2V5IiwiaSIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIm93bktleXMiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJkaXNhYmxlU3RhY2tDYXB0dXJpbmciLCJ2aXNTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9BTklNQVRJT05fQ09ORklHIiwiZXhwb3J0cyIsImRvbWFpbiIsImN1cnJlbnRUaW1lIiwic3BlZWQiLCJpc0FuaW1hdGluZyIsInRpbWVGb3JtYXQiLCJ0aW1lem9uZSIsImRlZmF1bHRUaW1lRm9ybWF0IiwiREVGQVVMVF9FRElUT1IiLCJtb2RlIiwiRURJVE9SX01PREVTIiwiRFJBV19QT0xZR09OIiwiZmVhdHVyZXMiLCJzZWxlY3RlZEZlYXR1cmUiLCJ2aXNpYmxlIiwiSU5JVElBTF9WSVNfU1RBVEUiLCJtYXBJbmZvIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImxheWVycyIsImxheWVyRGF0YSIsImxheWVyVG9CZU1lcmdlZCIsImxheWVyT3JkZXIiLCJmaWx0ZXJzIiwiZmlsdGVyVG9CZU1lcmdlZCIsImRhdGFzZXRzIiwiZWRpdGluZ0RhdGFzZXQiLCJ1bmRlZmluZWQiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImdldERlZmF1bHRJbnRlcmFjdGlvbiIsImludGVyYWN0aW9uVG9CZU1lcmdlZCIsImxheWVyQmxlbmRpbmciLCJob3ZlckluZm8iLCJjbGlja2VkIiwibW91c2VQb3MiLCJtYXhEZWZhdWx0VG9vbHRpcHMiLCJNQVhfREVGQVVMVF9UT09MVElQUyIsInNwbGl0TWFwcyIsInNwbGl0TWFwc1RvQmVNZXJnZWQiLCJsYXllckNsYXNzZXMiLCJMYXllckNsYXNzZXMiLCJhbmltYXRpb25Db25maWciLCJlZGl0b3IiLCJmaWxlTG9hZGluZyIsImZpbGVMb2FkaW5nUHJvZ3Jlc3MiLCJsb2FkZXJzIiwibG9hZE9wdGlvbnMiLCJtZXJnZXJzIiwiVklTX1NUQVRFX01FUkdFUlMiLCJzY2hlbWEiLCJLZXBsZXJHTFNjaGVtYSIsInVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YSIsInN0YXRlIiwiX3JlZiIsImxheWVyIiwiaWR4IiwibWFwIiwibHlyIiwiZCIsInVwZGF0ZVN0YXRlT25MYXllclZpc2liaWxpdHlDaGFuZ2UiLCJuZXdTdGF0ZSIsImNvbmZpZyIsImlzVmlzaWJsZSIsImFkZE5ld0xheWVyc1RvU3BsaXRNYXAiLCJyZW1vdmVMYXllckZyb21TcGxpdE1hcHMiLCJhbmltYXRpb24iLCJlbmFibGVkIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2VVcGRhdGVyIiwiYWN0aW9uIiwib2xkTGF5ZXIiLCJmaW5kSW5kZXgiLCJsIiwiaWQiLCJwcm9wcyIsIm5ld0NvbmZpZyIsImRhdGFJZCIsIl9hY3Rpb24kbmV3Q29uZmlnIiwicmVzdENvbmZpZyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJzdGF0ZVdpdGhEYXRhSWQiLCJsYXllckRhdGFJZENoYW5nZVVwZGF0ZXIiLCJuZXh0TGF5ZXIiLCJmaW5kIiwibmV3TGF5ZXIiLCJ1cGRhdGVMYXllckNvbmZpZyIsInNob3VsZENhbGN1bGF0ZUxheWVyRGF0YSIsIm9sZExheWVyRGF0YSIsInVwZGF0ZUxheWVyRGF0YVJlc3VsdCIsImNhbGN1bGF0ZUxheWVyRGF0YSIsImFkZE9yUmVtb3ZlVGV4dExhYmVscyIsIm5ld0ZpZWxkcyIsInRleHRMYWJlbCIsIm5ld1RleHRMYWJlbCIsImN1cnJlbnRGaWVsZHMiLCJ0bCIsImZpZWxkIiwiYWRkRmllbGRzIiwiaW5jbHVkZXMiLCJkZWxldGVGaWVsZHMiLCJmZCIsImRlZmF1bHRMYWJlbCIsIkRFRkFVTFRfU0VDT05EQVJZX1RFWFRfTEFCRUwiLCJERUZBVUxUX1RFWFRfTEFCRUwiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiYWYiLCJ1cGRhdGVUZXh0TGFiZWxQcm9wQW5kVmFsdWUiLCJwcm9wIiwiaGFzT3duUHJvcGVydHkiLCJzcGxpY2UiLCJsYXllclRleHRMYWJlbENoYW5nZVVwZGF0ZXIiLCJ2YWxpZGF0ZUV4aXN0aW5nTGF5ZXJXaXRoRGF0YSIsImRhdGFzZXQiLCJsb2FkZWRMYXllciIsInNlcmlhbGl6ZUxheWVyIiwidmFsaWRhdGVMYXllcldpdGhEYXRhIiwiYWxsb3dFbXB0eUNvbHVtbiIsImlzVmFsaWRUb1NhdmUiLCJ2YWxpZGF0ZWQiLCJ0eXBlIiwiaXNDb25maWdBY3RpdmUiLCJ1cGRhdGVMYXllckRvbWFpbiIsIl9jYWxjdWxhdGVMYXllckRhdGEiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwibmV3VHlwZSIsIm9sZElkIiwiQ29uc29sZSIsImVycm9yIiwiYXNzaWduQ29uZmlnVG9MYXllciIsInZpc0NvbmZpZ1NldHRpbmdzIiwiX2NhbGN1bGF0ZUxheWVyRGF0YTIiLCJzZXR0aW5ncyIsIl9zZXR0aW5ncyRsYXllcnMiLCJvbGRMYXllck1hcCIsIm90aGVyTGF5ZXJzIiwibGF5ZXJWaXN1YWxDaGFubmVsQ2hhbmdlVXBkYXRlciIsImNoYW5uZWwiLCJ1cGRhdGVMYXllclZpc3VhbENoYW5uZWwiLCJfY2FsY3VsYXRlTGF5ZXJEYXRhMyIsImxheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlciIsIm5ld1Zpc0NvbmZpZyIsInZpc0NvbmZpZyIsIl9jYWxjdWxhdGVMYXllckRhdGE0Iiwic2V0RmlsdGVyQW5pbWF0aW9uVGltZVVwZGF0ZXIiLCJzZXRGaWx0ZXJVcGRhdGVyIiwic2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlciIsIl9yZWYyIiwiYW5pbWF0aW9uV2luZG93IiwiX2FjdGlvbiR2YWx1ZUluZGV4IiwidmFsdWVJbmRleCIsIm9sZEZpbHRlciIsIm5ld0ZpbHRlciIsInNldCIsIl9uZXdGaWx0ZXIiLCJkYXRhc2V0SWRzIiwidG9BcnJheSIsIkZJTFRFUl9VUERBVEVSX1BST1BTIiwidXBkYXRlRmlsdGVyRGF0YUlkIiwiZGF0YXNldElkIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJuZXdEYXRhc2V0IiwiZ3B1Iiwic2V0RmlsdGVyR3B1TW9kZSIsImFzc2lnbkdwdUNoYW5uZWwiLCJsYXllcklkIiwibGF5ZXJJZERpZmZlcmVuY2UiLCJ4b3IiLCJsYXllckRhdGFJZHMiLCJ1bmlxIiwibGlkIiwiZ2V0IiwibmV3RGF0YUlkcyIsImVubGFyZ2VkRmlsdGVyIiwiZW5sYXJnZWQiLCJkYXRhc2V0SWRzVG9GaWx0ZXIiLCJMSU1JVEVEX0ZJTFRFUl9FRkZFQ1RfUFJPUFMiLCJmaWx0ZXJlZERhdGFzZXRzIiwiYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyIsInVwZGF0ZUFsbExheWVyRG9tYWluRGF0YSIsInNldEZpbHRlclBsb3RVcGRhdGVyIiwiX3JlZjMiLCJuZXdQcm9wIiwiX3JlZjMkdmFsdWVJbmRleCIsInBsb3RUeXBlIiwiZ2V0RGVmYXVsdEZpbHRlclBsb3RUeXBlIiwiZ2V0RmlsdGVyUGxvdCIsImFkZEZpbHRlclVwZGF0ZXIiLCJnZXREZWZhdWx0RmlsdGVyIiwibGF5ZXJDb2xvclVJQ2hhbmdlVXBkYXRlciIsIl9yZWY0Iiwib2xkVml4Q29uZmlnIiwidXBkYXRlTGF5ZXJDb2xvclVJIiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uVXBkYXRlciIsInRvZ2dsZUxheWVyQW5pbWF0aW9uVXBkYXRlciIsInRvZ2dsZUxheWVyQW5pbWF0aW9uQ29udHJvbFVwZGF0ZXIiLCJoaWRlQ29udHJvbCIsInVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkVXBkYXRlciIsInNldExheWVyQW5pbWF0aW9uVGltZVVwZGF0ZXIiLCJfcmVmNSIsInVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyIiwiX3JlZjYiLCJlbmxhcmdlRmlsdGVyVXBkYXRlciIsInRvZ2dsZUZpbHRlckZlYXR1cmVVcGRhdGVyIiwiZmVhdHVyZVRvRmlsdGVyVmFsdWUiLCJhc3NpZ24iLCJyZW1vdmVGaWx0ZXJVcGRhdGVyIiwiX3N0YXRlJGZpbHRlcnMkaWR4IiwibmV3RmlsdGVycyIsIm5ld0VkaXRvciIsImdldEZpbHRlcklkSW5GZWF0dXJlIiwiYWRkTGF5ZXJVcGRhdGVyIiwibmV3TGF5ZXJEYXRhIiwiY3JlYXRlTGF5ZXJGcm9tQ29uZmlnIiwid2FybiIsInJlc3VsdCIsIl9hY3Rpb24kZGF0YXNldElkIiwiZGVmYXVsdERhdGFzZXQiLCJMYXllciIsInJlbW92ZUxheWVyVXBkYXRlciIsIl9yZWY3IiwibGF5ZXJUb1JlbW92ZSIsIm5ld01hcHMiLCJwaWQiLCJpc0xheWVySG92ZXJlZCIsImR1cGxpY2F0ZUxheWVyVXBkYXRlciIsIl9yZWY4Iiwib3JpZ2luYWwiLCJvcmlnaW5hbExheWVyT3JkZXJJZHgiLCJuZXdMYWJlbCIsImxhYmVsIiwicG9zdGZpeCIsImdlbmVyYXRlSGFzaElkIiwiTEFZRVJfSURfTEVOR1RIIiwibmV4dFN0YXRlIiwibmV3TGF5ZXJPcmRlcklkeCIsIm5ld0xheWVyT3JkZXIiLCJhcnJheUluc2VydCIsInJlb3JkZXJMYXllclVwZGF0ZXIiLCJfcmVmOSIsIm9yZGVyIiwicmVtb3ZlRGF0YXNldFVwZGF0ZXIiLCJkYXRhc2V0S2V5IiwiX3N0YXRlJGRhdGFzZXRzIiwibmV3RGF0YXNldHMiLCJpbmRleGVzIiwicmVkdWNlIiwibGlzdE9mSW5kZXhlcyIsImluZGV4IiwiX2luZGV4ZXMkcmVkdWNlIiwiX3JlZjEwIiwiY3VycmVudFN0YXRlIiwiaW5kZXhDb3VudGVyIiwiY3VycmVudEluZGV4IiwiX2ludGVyYWN0aW9uQ29uZmlnIiwidG9vbHRpcCIsIl9jb25maWckZmllbGRzVG9TaG93IiwiZmllbGRzVG9TaG93IiwiZmllbGRzIiwidXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXIiLCJzaG93RGF0YXNldFRhYmxlVXBkYXRlciIsInVwZGF0ZVRhYmxlQ29sb3JVcGRhdGVyIiwibmV3Q29sb3IiLCJpc1JnYkNvbG9yIiwiZXhpc3RpbmciLCJ1cGRhdGVUYWJsZUNvbG9yIiwiY29weVRhYmxlQW5kVXBkYXRlIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiaW5pdGlhbFN0YXRlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMTEiLCJfcmVmMTEkcGF5bG9hZCIsInBheWxvYWQiLCJfcmVmMTEkcGF5bG9hZCRjb25maWciLCJ2ZXJzaW9uIiwiX3JlZjExJHBheWxvYWQkb3B0aW9uIiwib3B0aW9ucyIsInZpc1N0YXRlIiwia2VlcEV4aXN0aW5nQ29uZmlnIiwibWVyZ2VkU3RhdGUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsIm1lcmdlciIsImlzVmFsaWRNZXJnZXIiLCJtZXJnZSIsImVyciIsImxheWVySG92ZXJVcGRhdGVyIiwiaW5mbyIsImludGVyYWN0aW9uQ29uZmlnQ2hhbmdlVXBkYXRlciIsImNvbnRyYWRpY3QiLCJrIiwibGF5ZXJDbGlja1VwZGF0ZXIiLCJjb29yZGluYXRlIiwicGlubmVkIiwiY2xvbmVEZWVwIiwicGlja2VkIiwibWFwQ2xpY2tVcGRhdGVyIiwibW91c2VNb3ZlVXBkYXRlciIsIl9yZWYxMiIsImV2dCIsInZhbHVlcyIsInNvbWUiLCJtb3VzZVBvc2l0aW9uIiwicG9pbnQiLCJsbmdMYXQiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJjb21wdXRlU3BsaXRNYXBMYXllcnMiLCJjbG9zZVNwZWNpZmljTWFwQXRJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwVXBkYXRlciIsIl9yZWYxMyIsIm1hcEluZGV4Iiwic20iLCJ1cGRhdGVWaXNEYXRhVXBkYXRlciIsIm5ld0RhdGFFbnRyaWVzIiwiYWNjdSIsIl9yZWYxNCIsIl9yZWYxNCRpbmZvIiwicmVzdCIsImNyZWF0ZU5ld0RhdGFFbnRyeSIsImRhdGFFbXB0eSIsInByZXZpb3VzU3RhdGUiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwidG9NZXJnZVByb3AiLCJ0b01lcmdlIiwibmV3TGF5ZXJzIiwiYXV0b0NyZWF0ZUxheWVycyIsImFkZERlZmF1bHRMYXllcnMiLCJ0b29sdGlwRmllbGRzIiwiYWRkRGVmYXVsdFRvb2x0aXBzIiwidXBkYXRlZFN0YXRlIiwicmVuYW1lRGF0YXNldFVwZGF0ZXIiLCJpbmRleFRvUmV0cmlldmUiLCJtYXBMYXllcnMiLCJsb2FkRmlsZXNVcGRhdGVyIiwiZmlsZXMiLCJfYWN0aW9uJG9uRmluaXNoIiwib25GaW5pc2giLCJsb2FkRmlsZXNTdWNjZXNzIiwibWVyZ2VfIiwiaW5pdGlhbEZpbGVMb2FkaW5nUHJvZ3Jlc3MiLCJmaWxlQ2FjaGUiLCJmaWxlc1RvTG9hZCIsImxvYWROZXh0RmlsZVVwZGF0ZXIiLCJsb2FkRmlsZVN0ZXBTdWNjZXNzVXBkYXRlciIsImZpbGVOYW1lIiwiX3N0YXRlJGZpbGVMb2FkaW5nIiwic3RhdGVXaXRoUHJvZ3Jlc3MiLCJ1cGRhdGVGaWxlTG9hZGluZ1Byb2dyZXNzVXBkYXRlciIsInByb2dyZXNzIiwicGVyY2VudCIsIm1lc3NhZ2UiLCJzdGF0ZVdpdGhDYWNoZSIsInBpY2tfIiwid2l0aFRhc2siLCJERUxBWV9UQVNLIiwibG9hZE5leHRGaWxlIiwiX2ZpbGVzVG9Mb2FkIiwiX3RvQXJyYXkyIiwiZmlsZSIsInJlbWFpbmluZ0ZpbGVzVG9Mb2FkIiwibWFrZUxvYWRGaWxlVGFzayIsIkxPQURfRklMRV9UQVNLIiwiYmltYXAiLCJnZW4iLCJuZXh0RmlsZUJhdGNoIiwicHJvY2Vzc0ZpbGVDb250ZW50IiwiY29udGVudCIsImxvYWRGaWxlc0VyciIsInByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXIiLCJfYWN0aW9uJHBheWxvYWQiLCJQUk9DRVNTX0ZJTEVfREFUQSIsImxvYWRGaWxlU3RlcFN1Y2Nlc3MiLCJwYXJzZVByb2dyZXNzIiwicHJldlByb2dyZXNzIiwibmV4dEZpbGVCYXRjaFVwZGF0ZXIiLCJfcmVmMTUiLCJfcmVmMTUkcGF5bG9hZCIsImFjY3VtdWxhdGVkIiwiVU5XUkFQX1RBU0siLCJfcmVmMTYiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjE3IiwiX3N0YXRlJGZpbGVMb2FkaW5nMiIsImFwcGx5Q1BVRmlsdGVyVXBkYXRlciIsIl9yZWYxOCIsImRhdGFJZHMiLCJmaWx0ZXJEYXRhc2V0Q1BVIiwic2V0TWFwSW5mb1VwZGF0ZXIiLCJlbXB0eSIsImRlZmF1bHRMYXllcnMiLCJmb3VuZExheWVycyIsImZpbmREZWZhdWx0TGF5ZXIiLCJfIiwibWV0YWRhdGEiLCJpc0R5bmFtaWNTcGF0aWFsSW5kZXgiLCJmaW5kRmllbGRzVG9TaG93IiwibWVyZ2VkIiwiX3JlZjIxIiwiZml4ZWREb21haW4iLCJfY2FsY3VsYXRlTGF5ZXJEYXRhNSIsImFuaW1hdGFibGVMYXllcnMiLCJhbmltYXRpb25Eb21haW4iLCJtZXJnZWREb21haW4iLCJNYXRoIiwibWluIiwibWF4IiwiSW5maW5pdHkiLCJnZXRUaW1lV2lkZ2V0VGl0bGVGb3JtYXR0ZXIiLCJpc0luUmFuZ2UiLCJzZXRFZGl0b3JNb2RlVXBkYXRlciIsIl9yZWYyMiIsInNldEZlYXR1cmVzVXBkYXRlciIsIl9yZWYyMyIsIl9yZWYyMyRmZWF0dXJlcyIsImxhc3RGZWF0dXJlIiwicHJvcGVydGllcyIsImlzQ2xvc2VkIiwiRURJVCIsImZlYXR1cmUiLCJmaWx0ZXJJZCIsImZlYXR1cmVWYWx1ZSIsImZpbHRlcklkeCIsImZpbCIsInNldFNlbGVjdGVkRmVhdHVyZVVwZGF0ZXIiLCJfcmVmMjQiLCJkZWxldGVGZWF0dXJlVXBkYXRlciIsIl9yZWYyNSIsInNldFBvbHlnb25GaWx0ZXJMYXllclVwZGF0ZXIiLCJuZXdMYXllcklkIiwibm9uZUZpbHRlckZlYXR1cmUiLCJfZmlsdGVyJGxheWVySWQiLCJpc0xheWVySW5jbHVkZWQiLCJnZW5lcmF0ZVBvbHlnb25GaWx0ZXIiLCJzb3J0VGFibGVDb2x1bW5VcGRhdGVyIiwiX3JlZjI2IiwiY29sdW1uIiwic29ydE1vZGUiLCJjdXJyZW50TW9kZSIsIlNPUlRfT1JERVIiLCJtIiwiQVNDRU5ESU5HIiwic29ydGVkIiwic29ydERhdGFzZXRCeUNvbHVtbiIsInBpblRhYmxlQ29sdW1uVXBkYXRlciIsIl9yZWYyNyIsInBpblRhYmxlQ29sdW1ucyIsImNvcHlUYWJsZUNvbHVtblVwZGF0ZXIiLCJfcmVmMjgiLCJmaWVsZElkeCIsInRleHQiLCJkYXRhQ29udGFpbmVyIiwicm93IiwicGFyc2VGaWVsZFZhbHVlIiwidmFsdWVBdCIsImpvaW4iLCJjb3B5IiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eVVwZGF0ZXIiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnVXBkYXRlciIsIl9yZWYyOSIsIkZJTFRFUl9UWVBFUyIsInRpbWVSYW5nZSIsInVwZGF0ZXMiLCJjaGVja1RpbWVDb25maWdBcmdzIiwic3dhcF8iLCJhbGxvd2VkIiwic2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnVXBkYXRlciIsIl9yZWYzMCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy92aXMtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtjb25zb2xlIGFzIENvbnNvbGV9IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuaW1wb3J0IHtkaXNhYmxlU3RhY2tDYXB0dXJpbmcsIHdpdGhUYXNrfSBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzL2luZGV4LmpzJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHhvciBmcm9tICdsb2Rhc2gveG9yJztcbmltcG9ydCBjb3B5IGZyb20gJ2NvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCB7cGFyc2VGaWVsZFZhbHVlfSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbi8vIFRhc2tzXG5pbXBvcnQge0xPQURfRklMRV9UQVNLLCBVTldSQVBfVEFTSywgUFJPQ0VTU19GSUxFX0RBVEEsIERFTEFZX1RBU0t9IGZyb20gJ3Rhc2tzL3Rhc2tzJztcbi8vIEFjdGlvbnNcbmltcG9ydCB7XG4gIGxvYWRGaWxlc0VycixcbiAgbG9hZEZpbGVzU3VjY2VzcyxcbiAgbG9hZEZpbGVTdGVwU3VjY2VzcyxcbiAgbG9hZE5leHRGaWxlLFxuICBuZXh0RmlsZUJhdGNoXG59IGZyb20gJ2FjdGlvbnMvdmlzLXN0YXRlLWFjdGlvbnMnO1xuLy8gVXRpbHNcbmltcG9ydCB7ZmluZEZpZWxkc1RvU2hvdywgZ2V0RGVmYXVsdEludGVyYWN0aW9ufSBmcm9tICd1dGlscy9pbnRlcmFjdGlvbi11dGlscyc7XG5pbXBvcnQge1xuICBhcHBseUZpbHRlckZpZWxkTmFtZSxcbiAgYXBwbHlGaWx0ZXJzVG9EYXRhc2V0cyxcbiAgZmVhdHVyZVRvRmlsdGVyVmFsdWUsXG4gIEZJTFRFUl9VUERBVEVSX1BST1BTLFxuICBmaWx0ZXJEYXRhc2V0Q1BVLFxuICBnZW5lcmF0ZVBvbHlnb25GaWx0ZXIsXG4gIGdldERlZmF1bHRGaWx0ZXIsXG4gIGdldERlZmF1bHRGaWx0ZXJQbG90VHlwZSxcbiAgZ2V0RmlsdGVySWRJbkZlYXR1cmUsXG4gIGdldEZpbHRlclBsb3QsXG4gIGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcixcbiAgaXNJblJhbmdlLFxuICBMSU1JVEVEX0ZJTFRFUl9FRkZFQ1RfUFJPUFMsXG4gIHVwZGF0ZUZpbHRlckRhdGFJZFxufSBmcm9tICd1dGlscy9maWx0ZXItdXRpbHMnO1xuaW1wb3J0IHthc3NpZ25HcHVDaGFubmVsLCBzZXRGaWx0ZXJHcHVNb2RlfSBmcm9tICd1dGlscy9ncHUtZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7Y3JlYXRlTmV3RGF0YUVudHJ5fSBmcm9tICd1dGlscy9kYXRhc2V0LXV0aWxzJztcbmltcG9ydCB7XG4gIHBpblRhYmxlQ29sdW1ucyxcbiAgc29ydERhdGFzZXRCeUNvbHVtbixcbiAgY29weVRhYmxlQW5kVXBkYXRlLFxuICBGaWVsZFxufSBmcm9tICd1dGlscy90YWJsZS11dGlscy9rZXBsZXItdGFibGUnO1xuaW1wb3J0IHtzZXQsIHRvQXJyYXksIGFycmF5SW5zZXJ0LCBnZW5lcmF0ZUhhc2hJZH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuXG5pbXBvcnQge2NhbGN1bGF0ZUxheWVyRGF0YSwgZmluZERlZmF1bHRMYXllcn0gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuXG5pbXBvcnQge1xuICBpc1ZhbGlkTWVyZ2VyLFxuICBWSVNfU1RBVEVfTUVSR0VSUyxcbiAgdmFsaWRhdGVMYXllcldpdGhEYXRhLFxuICBjcmVhdGVMYXllckZyb21Db25maWcsXG4gIHNlcmlhbGl6ZUxheWVyLFxuICBWaXNTdGF0ZU1lcmdlcnNcbn0gZnJvbSAnLi92aXMtc3RhdGUtbWVyZ2VyJztcblxuaW1wb3J0IHtcbiAgYWRkTmV3TGF5ZXJzVG9TcGxpdE1hcCxcbiAgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzLFxuICByZW1vdmVMYXllckZyb21TcGxpdE1hcHNcbn0gZnJvbSAndXRpbHMvc3BsaXQtbWFwLXV0aWxzJztcblxuaW1wb3J0IHtMYXllciwgTGF5ZXJDbGFzc2VzLCBMYXllckNsYXNzZXNUeXBlLCBMQVlFUl9JRF9MRU5HVEh9IGZyb20gJ2xheWVycyc7XG5pbXBvcnQge0RFRkFVTFRfVEVYVF9MQUJFTCwgREVGQVVMVF9TRUNPTkRBUllfVEVYVF9MQUJFTH0gZnJvbSAnbGF5ZXJzL2xheWVyLWZhY3RvcnknO1xuaW1wb3J0IHtcbiAgRURJVE9SX01PREVTLFxuICBTT1JUX09SREVSLFxuICBGSUxURVJfVFlQRVMsXG4gIE1BWF9ERUZBVUxUX1RPT0xUSVBTXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7cGlja18sIG1lcmdlXywgc3dhcF99IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge3Byb2Nlc3NGaWxlQ29udGVudH0gZnJvbSAnYWN0aW9ucy92aXMtc3RhdGUtYWN0aW9ucyc7XG5cbmltcG9ydCBLZXBsZXJHTFNjaGVtYSBmcm9tICdzY2hlbWFzJztcbmltcG9ydCB7aXNSZ2JDb2xvcn0gZnJvbSAndXRpbHMvY29sb3ItdXRpbHMnO1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7UmVjZWl2ZU1hcENvbmZpZ1BheWxvYWR9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBWaXNTdGF0ZUFjdGlvbnMgZnJvbSAnYWN0aW9ucy92aXMtc3RhdGUtYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBNYXBTdGF0ZUFjdGlvbnMgZnJvbSAnYWN0aW9ucy9tYXAtc3RhdGUtYWN0aW9ucyc7XG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQge0xvYWRlck9iamVjdH0gZnJvbSAnQGxvYWRlcnMuZ2wvbG9hZGVyLXV0aWxzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgSGlzdG9ncmFtQmluID0ge1xuICB4MDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICB4MTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBjb3VudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUmFuZ2VGaWVsZERvbWFpbiA9IHtcbiAgZG9tYWluOiBbbnVtYmVyLCBudW1iZXJdO1xuICBzdGVwOiBudW1iZXI7XG4gIGhpc3RvZ3JhbTogSGlzdG9ncmFtQmluW107XG4gIGVubGFyZ2VkSGlzdG9ncmFtOiBIaXN0b2dyYW1CaW5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpZWxkRG9tYWluID0ge1xuICBkb21haW46IFt0cnVlLCBmYWxzZV07XG59O1xuZXhwb3J0IHR5cGUgTXVsdGlTZWxlY3RGaWVsZERvbWFpbiA9IHtcbiAgZG9tYWluOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFRpbWVSYW5nZUZpZWxkRG9tYWluID0ge1xuICBkb21haW46IFtudW1iZXIsIG51bWJlcl07XG4gIHN0ZXA6IG51bWJlcjtcbiAgaGlzdG9ncmFtOiBIaXN0b2dyYW1CaW5bXTtcbiAgZW5sYXJnZWRIaXN0b2dyYW06IEhpc3RvZ3JhbUJpbltdO1xuICBtYXBwZWRWYWx1ZTogKE1pbGxpc2Vjb25kIHwgbnVsbClbXTtcbiAgLy8gYXV0byBnZW5lcmF0ZWQgYmFzZWQgb24gdGltZSBkb21haW5cbiAgZGVmYXVsdFRpbWVGb3JtYXQ/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBjdXN0b20gdWkgaW5wdXRcbiAgdGltZUZvcm1hdD86IHN0cmluZyB8IG51bGw7XG4gIC8vIGN1c3RvbSB1aSBpbnB1dFxuICB0aW1lem9uZT86IHN0cmluZyB8IG51bGw7XG59O1xuZXhwb3J0IHR5cGUgRmllbGREb21haW4gPVxuICB8IFJhbmdlRmllbGREb21haW5cbiAgfCBUaW1lUmFuZ2VGaWVsZERvbWFpblxuICB8IFNlbGVjdEZpZWxkRG9tYWluXG4gIHwgTXVsdGlTZWxlY3RGaWVsZERvbWFpbjtcblxuZXhwb3J0IHR5cGUgTGluZUNoYXJ0ID0ge1xuICBzZXJpZXM6IHt4OiBudW1iZXI7IHk6IG51bWJlcn1bXTtcbiAgeURvbWFpbjogW251bWJlciwgbnVtYmVyXTtcbiAgeERvbWFpbjogW251bWJlciwgbnVtYmVyXTtcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckJhc2UgPSB7XG4gIGRhdGFJZDogc3RyaW5nW107XG4gIGlkOiBzdHJpbmc7XG5cbiAgZnJlZXplOiBib29sZWFuO1xuXG4gIC8vIHRpbWUgcmFuZ2UgZmlsdGVyIHNwZWNpZmljXG4gIGZpeGVkRG9tYWluOiBib29sZWFuO1xuICBlbmxhcmdlZDogYm9vbGVhbjtcbiAgaXNBbmltYXRpbmc6IGJvb2xlYW47XG4gIHNwZWVkOiBudW1iZXI7XG4gIHNob3dUaW1lRGlzcGxheT86IGJvb2xlYW47XG5cbiAgLy8gZmllbGQgc3BlY2lmaWNcbiAgbmFtZTogc3RyaW5nW107IC8vIHN0cmluZ1xuICB0eXBlOiBzdHJpbmcgfCBudWxsO1xuICBmaWVsZElkeDogbnVtYmVyW107IC8vIFtpbnRlZ2VyXVxuICBkb21haW46IGFueVtdIHwgbnVsbDtcbiAgdmFsdWU6IGFueTtcbiAgbWFwcGVkVmFsdWU/OiBudW1iZXJbXTtcblxuICAvLyBwbG90XG4gIHlBeGlzOiBGaWVsZCB8IG51bGw7XG4gIHBsb3RUeXBlOiBzdHJpbmc7XG4gIGxpbmVDaGFydD86IExpbmVDaGFydDtcbiAgLy8gZ3B1IGZpbHRlclxuICBncHU6IGJvb2xlYW47XG4gIGdwdUNoYW5uZWw/OiBudW1iZXJbXTtcbiAgZmllbGRUeXBlPzogc3RyaW5nO1xuXG4gIC8vIHBvbHlnb25cbiAgbGF5ZXJJZD86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgUmFuZ2VGaWx0ZXIgPSBGaWx0ZXJCYXNlICZcbiAgUmFuZ2VGaWVsZERvbWFpbiAmIHtcbiAgICB0eXBlOiAncmFuZ2UnO1xuICAgIGZpZWxkVHlwZTogJ3JlYWwnIHwgJ2ludGVnZXInO1xuICAgIHZhbHVlOiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIGZpeGVkRG9tYWluOiB0cnVlO1xuICAgIHR5cGVPcHRpb25zOiBbJ3JhbmdlJ107XG4gIH07XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpbHRlciA9IEZpbHRlckJhc2UgJlxuICBTZWxlY3RGaWVsZERvbWFpbiAmIHtcbiAgICB0eXBlOiAnc2VsZWN0JztcbiAgICBmaWVsZFR5cGU6ICdib29sZWFuJztcbiAgICB2YWx1ZTogYm9vbGVhbjtcbiAgfTtcblxuZXhwb3J0IHR5cGUgTXVsdGlTZWxlY3RGaWx0ZXIgPSBGaWx0ZXJCYXNlICZcbiAgTXVsdGlTZWxlY3RGaWVsZERvbWFpbiAmIHtcbiAgICB0eXBlOiAncmFuZ2UnO1xuICAgIGZpZWxkVHlwZTogJ3N0cmluZycgfCAnZGF0ZSc7XG4gICAgdmFsdWU6IHN0cmluZ1tdO1xuICB9O1xuZXhwb3J0IHR5cGUgVGltZVJhbmdlRmlsdGVyID0gRmlsdGVyQmFzZSAmXG4gIFRpbWVSYW5nZUZpZWxkRG9tYWluICYge1xuICAgIHR5cGU6ICd0aW1lUmFuZ2UnO1xuICAgIGZpZWxkVHlwZTogJ3RpbWVzdGFtcCc7XG4gICAgZml4ZWREb21haW46IHRydWU7XG4gICAgdmFsdWU6IFtudW1iZXIsIG51bWJlcl07XG4gICAgYmlucz86IE9iamVjdDtcbiAgICBwbG90VHlwZToge1xuICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIH07XG4gICAgYW5pbWF0aW9uV2luZG93OiBzdHJpbmc7XG4gIH07XG5cbmV4cG9ydCB0eXBlIFBvbHlnb25GaWx0ZXIgPSBGaWx0ZXJCYXNlICYge1xuICBsYXllcklkOiBzdHJpbmdbXTtcbiAgdHlwZTogJ3BvbHlnb24nO1xuICBmaXhlZERvbWFpbjogdHJ1ZTtcbiAgdmFsdWU6IEZlYXR1cmU7XG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXIgPVxuICB8IEZpbHRlckJhc2VcbiAgfCBSYW5nZUZpbHRlclxuICB8IFRpbWVSYW5nZUZpbHRlclxuICB8IFNlbGVjdEZpbHRlclxuICB8IE11bHRpU2VsZWN0RmlsdGVyXG4gIHwgUG9seWdvbkZpbHRlcjtcblxuZXhwb3J0IHR5cGUgRGF0YXNldHMgPSB7XG4gIFtrZXk6IHN0cmluZ106IEtlcGxlclRhYmxlO1xufTtcblxuZXhwb3J0IHR5cGUgRmVhdHVyZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvcGVydGllczogYW55O1xuICBnZW9tZXRyeToge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBjb29yZGluYXRlczogYW55O1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIEZlYXR1cmVWYWx1ZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvcGVydGllczoge1xuICAgIGZpbHRlcklkOiBzdHJpbmc7XG4gIH07XG4gIGdlb21ldHJ5OiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGNvb3JkaW5hdGVzOiBhbnk7XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgRWRpdG9yID0ge1xuICBtb2RlOiBzdHJpbmc7XG4gIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gIHNlbGVjdGVkRmVhdHVyZTogYW55O1xuICB2aXNpYmxlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgU3BsaXRNYXBMYXllcnMgPSB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG5leHBvcnQgdHlwZSBTcGxpdE1hcCA9IHtcbiAgbGF5ZXJzOiBTcGxpdE1hcExheWVycztcbn07XG5leHBvcnQgdHlwZSBBbmltYXRpb25Db25maWcgPSB7XG4gIGRvbWFpbjogbnVtYmVyW10gfCBudWxsO1xuICBjdXJyZW50VGltZTogbnVtYmVyIHwgbnVsbDtcbiAgc3BlZWQ6IG51bWJlcjtcbiAgaXNBbmltYXRpbmc/OiBib29sZWFuO1xuICAvLyBhdXRvIGdlbmVyYXRlZCBiYXNlZCBvbiB0aW1lIGRvbWFpblxuICBkZWZhdWx0VGltZUZvcm1hdD86IHN0cmluZyB8IG51bGw7XG4gIC8vIGN1c3RvbSB1aSBpbnB1dFxuICB0aW1lRm9ybWF0Pzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gY3VzdG9tIHVpIGlucHV0XG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gaGlkZSBvciBzaG93IGNvbnRyb2xcbiAgaGlkZUNvbnRyb2w/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQmFzZUludGVyYWN0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBpY29uQ29tcG9uZW50OiBhbnk7XG59O1xuZXhwb3J0IHR5cGUgVG9vbHRpcEZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZvcm1hdDogc3RyaW5nIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBDb21wYXJlVHlwZSA9IHN0cmluZyB8IG51bGw7XG5leHBvcnQgdHlwZSBUb29sdGlwSW5mbyA9IEJhc2VJbnRlcmFjdGlvbiAmIHtcbiAgY29uZmlnOiB7XG4gICAgZmllbGRzVG9TaG93OiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBUb29sdGlwRmllbGRbXTtcbiAgICB9O1xuICAgIGNvbXBhcmVNb2RlOiBib29sZWFuO1xuICAgIGNvbXBhcmVUeXBlOiBDb21wYXJlVHlwZTtcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBHZW9jb2RlciA9IEJhc2VJbnRlcmFjdGlvbiAmIHtcbiAgcG9zaXRpb246IG51bWJlcltdIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBCcnVzaCA9IEJhc2VJbnRlcmFjdGlvbiAmIHtcbiAgY29uZmlnOiB7XG4gICAgc2l6ZTogbnVtYmVyO1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIENvb3JkaW5hdGUgPSBCYXNlSW50ZXJhY3Rpb24gJiB7XG4gIHBvc2l0aW9uOiBudW1iZXJbXSB8IG51bGw7XG59O1xuZXhwb3J0IHR5cGUgSW50ZXJhY3Rpb25Db25maWcgPSB7XG4gIHRvb2x0aXA6IFRvb2x0aXBJbmZvO1xuICBnZW9jb2RlcjogR2VvY29kZXI7XG4gIGJydXNoOiBCcnVzaDtcbiAgY29vcmRpbmF0ZTogQ29vcmRpbmF0ZTtcbn07XG5leHBvcnQgdHlwZSBNYXBJbmZvID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEZpbGVMb2FkaW5nID0ge1xuICBmaWxlc1RvTG9hZDogRmlsZUxpc3Q7XG4gIG9uRmluaXNoOiAocGF5bG9hZDogYW55KSA9PiBhbnk7XG4gIGZpbGVDYWNoZTogYW55W107XG59O1xuZXhwb3J0IHR5cGUgRmlsZUxvYWRpbmdQcm9ncmVzcyA9IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIHBlcmNlbnQ6IG51bWJlcjtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgZmlsZU5hbWU6IHN0cmluZztcbiAgICBlcnJvcjogYW55O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVmlzU3RhdGUgPSB7XG4gIG1hcEluZm86IE1hcEluZm87XG4gIGxheWVyczogTGF5ZXJbXTtcbiAgbGF5ZXJEYXRhOiBhbnlbXTtcbiAgbGF5ZXJUb0JlTWVyZ2VkOiBhbnlbXTtcbiAgbGF5ZXJPcmRlcjogbnVtYmVyW107XG4gIGZpbHRlcnM6IEZpbHRlcltdO1xuICBmaWx0ZXJUb0JlTWVyZ2VkOiBhbnlbXTtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICBlZGl0aW5nRGF0YXNldDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbnRlcmFjdGlvbkNvbmZpZzogSW50ZXJhY3Rpb25Db25maWc7XG4gIGludGVyYWN0aW9uVG9CZU1lcmdlZDogYW55O1xuICBsYXllckJsZW5kaW5nOiBzdHJpbmc7XG4gIGhvdmVySW5mbzogYW55O1xuICBjbGlja2VkOiBhbnk7XG4gIG1vdXNlUG9zOiBhbnk7XG4gIG1heERlZmF1bHRUb29sdGlwczogbnVtYmVyO1xuICBsYXllckNsYXNzZXM6IExheWVyQ2xhc3Nlc1R5cGU7XG4gIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnO1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgc3BsaXRNYXBzOiBTcGxpdE1hcFtdO1xuICBzcGxpdE1hcHNUb0JlTWVyZ2VkOiBTcGxpdE1hcFtdO1xuICBmaWxlTG9hZGluZzogRmlsZUxvYWRpbmcgfCBmYWxzZTtcbiAgZmlsZUxvYWRpbmdQcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcztcbiAgbG9hZGVyczogTG9hZGVyT2JqZWN0W107XG4gIGxvYWRPcHRpb25zOiBvYmplY3Q7XG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8VmlzU3RhdGU+O1xuICBtZXJnZXJzOiBWaXNTdGF0ZU1lcmdlcnM7XG4gIHNjaGVtYTogdHlwZW9mIEtlcGxlckdMU2NoZW1hO1xuICBwcmVzZXJ2ZUxheWVyT3JkZXI/OiBudW1iZXJbXTtcbn07XG5cbi8vIHJlYWN0LXBhbG1cbi8vIGRpc2FibGUgY2FwdHVyZSBleGNlcHRpb24gZm9yIHJlYWN0LXBhbG0gY2FsbCB0byB3aXRoVGFza1xuZGlzYWJsZVN0YWNrQ2FwdHVyaW5nKCk7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGB2aXNTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dmlzU3RhdGVVcGRhdGVyc30gZnJvbSAna2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIGNhc2UgJ0NMSUNLX0JVVFRPTic6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgZm9vOiB7XG4gKiAgICAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbC5mb28sXG4gKiAgICAgICAgICAgICB2aXNTdGF0ZTogdmlzU3RhdGVVcGRhdGVycy5lbmxhcmdlRmlsdGVyVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgc3RhdGUua2VwbGVyR2wuZm9vLnZpc1N0YXRlLFxuICogICAgICAgICAgICAgICB7aWR4OiAwfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCB2aXNTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQU5JTUFUSU9OX0NPTkZJRzogQW5pbWF0aW9uQ29uZmlnID0ge1xuICBkb21haW46IG51bGwsXG4gIGN1cnJlbnRUaW1lOiBudWxsLFxuICBzcGVlZDogMSxcbiAgaXNBbmltYXRpbmc6IGZhbHNlLFxuICB0aW1lRm9ybWF0OiBudWxsLFxuICB0aW1lem9uZTogbnVsbCxcbiAgZGVmYXVsdFRpbWVGb3JtYXQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VESVRPUjogRWRpdG9yID0ge1xuICBtb2RlOiBFRElUT1JfTU9ERVMuRFJBV19QT0xZR09OLFxuICBmZWF0dXJlczogW10sXG4gIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgdmlzaWJsZTogdHJ1ZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYHZpc1N0YXRlYFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9WSVNfU1RBVEU6IFZpc1N0YXRlID0ge1xuICAvLyBtYXAgaW5mb1xuICBtYXBJbmZvOiB7XG4gICAgdGl0bGU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJ1xuICB9LFxuICAvLyBsYXllcnNcbiAgbGF5ZXJzOiBbXSxcbiAgbGF5ZXJEYXRhOiBbXSxcbiAgbGF5ZXJUb0JlTWVyZ2VkOiBbXSxcbiAgbGF5ZXJPcmRlcjogW10sXG5cbiAgLy8gZmlsdGVyc1xuICBmaWx0ZXJzOiBbXSxcbiAgZmlsdGVyVG9CZU1lcmdlZDogW10sXG5cbiAgLy8gYSBjb2xsZWN0aW9uIG9mIG11bHRpcGxlIGRhdGFzZXRcbiAgZGF0YXNldHM6IHt9LFxuICBlZGl0aW5nRGF0YXNldDogdW5kZWZpbmVkLFxuXG4gIGludGVyYWN0aW9uQ29uZmlnOiBnZXREZWZhdWx0SW50ZXJhY3Rpb24oKSxcbiAgaW50ZXJhY3Rpb25Ub0JlTWVyZ2VkOiB1bmRlZmluZWQsXG5cbiAgbGF5ZXJCbGVuZGluZzogJ25vcm1hbCcsXG4gIGhvdmVySW5mbzogdW5kZWZpbmVkLFxuICBjbGlja2VkOiB1bmRlZmluZWQsXG4gIG1vdXNlUG9zOiB7fSxcbiAgbWF4RGVmYXVsdFRvb2x0aXBzOiBNQVhfREVGQVVMVF9UT09MVElQUyxcblxuICAvLyB0aGlzIGlzIHVzZWQgd2hlbiB1c2VyIHNwbGl0IG1hcHNcbiAgc3BsaXRNYXBzOiBbXG4gICAgLy8gdGhpcyB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIG9iamVjdHMgdG9cbiAgICAvLyBkZXNjcmliZSB0aGUgc3RhdGUgb2YgbGF5ZXIgYXZhaWxhYmlsaXR5IGFuZCB2aXNpYmlsaXR5IGZvciBlYWNoIG1hcFxuICAgIC8vIFtcbiAgICAvLyAgIHtcbiAgICAvLyAgICAgIGxheWVyczoge2xheWVyX2lkOiB0cnVlIHwgZmFsc2V9XG4gICAgLy8gICB9XG4gICAgLy8gXVxuICBdLFxuICBzcGxpdE1hcHNUb0JlTWVyZ2VkOiBbXSxcblxuICAvLyBkZWZhdWx0cyBsYXllciBjbGFzc2VzXG4gIGxheWVyQ2xhc3NlczogTGF5ZXJDbGFzc2VzLFxuXG4gIC8vIGRlZmF1bHQgYW5pbWF0aW9uXG4gIC8vIHRpbWUgaW4gdW5peCB0aW1lc3RhbXAgKG1pbGxpc2Vjb25kcykgKHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgVW5peCBFcG9jaClcbiAgYW5pbWF0aW9uQ29uZmlnOiBERUZBVUxUX0FOSU1BVElPTl9DT05GSUcsXG5cbiAgZWRpdG9yOiBERUZBVUxUX0VESVRPUixcblxuICBmaWxlTG9hZGluZzogZmFsc2UsXG4gIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9LFxuXG4gIGxvYWRlcnM6IFtdLFxuICBsb2FkT3B0aW9uczoge30sXG5cbiAgLy8gdmlzU3RhdGVNZXJnZXJzXG4gIG1lcmdlcnM6IFZJU19TVEFURV9NRVJHRVJTLFxuXG4gIC8vIGtlcGxlciBzY2hlbWFzXG4gIHNjaGVtYTogS2VwbGVyR0xTY2hlbWFcbn07XG5cbi8qKlxuICogVXBkYXRlIHN0YXRlIHdpdGggdXBkYXRlZCBsYXllciBhbmQgbGF5ZXJEYXRhXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoTGF5ZXJBbmREYXRhKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtsYXllckRhdGEsIGxheWVyLCBpZHh9OiB7bGF5ZXJEYXRhPzogYW55OyBsYXllcjogTGF5ZXI7IGlkeDogbnVtYmVyfVxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGxheWVyczogc3RhdGUubGF5ZXJzLm1hcCgobHlyLCBpKSA9PiAoaSA9PT0gaWR4ID8gbGF5ZXIgOiBseXIpKSxcbiAgICBsYXllckRhdGE6IGxheWVyRGF0YVxuICAgICAgPyBzdGF0ZS5sYXllckRhdGEubWFwKChkLCBpKSA9PiAoaSA9PT0gaWR4ID8gbGF5ZXJEYXRhIDogZCkpXG4gICAgICA6IHN0YXRlLmxheWVyRGF0YVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVPbkxheWVyVmlzaWJpbGl0eUNoYW5nZShzdGF0ZTogVmlzU3RhdGUsIGxheWVyOiBMYXllcik6IFZpc1N0YXRlIHtcbiAgbGV0IG5ld1N0YXRlID0gc3RhdGU7XG4gIGlmIChzdGF0ZS5zcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNwbGl0TWFwczogbGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgICA/IGFkZE5ld0xheWVyc1RvU3BsaXRNYXAoc3RhdGUuc3BsaXRNYXBzLCBsYXllcilcbiAgICAgICAgOiByZW1vdmVMYXllckZyb21TcGxpdE1hcHMoc3RhdGUuc3BsaXRNYXBzLCBsYXllcilcbiAgICB9O1xuICB9XG5cbiAgaWYgKGxheWVyLmNvbmZpZy5hbmltYXRpb24uZW5hYmxlZCkge1xuICAgIG5ld1N0YXRlID0gdXBkYXRlQW5pbWF0aW9uRG9tYWluKHN0YXRlKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgYmFzZSBjb25maWc6IGRhdGFJZCwgbGFiZWwsIGNvbHVtbiwgaXNWaXNpYmxlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllckNvbmZpZ0NoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTGF5ZXJDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IHtvbGRMYXllcn0gPSBhY3Rpb247XG4gIGNvbnN0IGlkeCA9IHN0YXRlLmxheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBvbGRMYXllci5pZCk7XG4gIGNvbnN0IHByb3BzID0gT2JqZWN0LmtleXMoYWN0aW9uLm5ld0NvbmZpZyk7XG4gIGlmICh0eXBlb2YgYWN0aW9uLm5ld0NvbmZpZy5kYXRhSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3Qge2RhdGFJZCwgLi4ucmVzdENvbmZpZ30gPSBhY3Rpb24ubmV3Q29uZmlnO1xuICAgIGNvbnN0IHN0YXRlV2l0aERhdGFJZCA9IGxheWVyRGF0YUlkQ2hhbmdlVXBkYXRlcihzdGF0ZSwge1xuICAgICAgb2xkTGF5ZXIsXG4gICAgICBuZXdDb25maWc6IHtkYXRhSWR9XG4gICAgfSk7XG4gICAgY29uc3QgbmV4dExheWVyID0gc3RhdGVXaXRoRGF0YUlkLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gb2xkTGF5ZXIuaWQpO1xuICAgIHJldHVybiBuZXh0TGF5ZXIgJiYgT2JqZWN0LmtleXMocmVzdENvbmZpZykubGVuZ3RoXG4gICAgICA/IGxheWVyQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZVdpdGhEYXRhSWQsIHtvbGRMYXllcjogbmV4dExheWVyLCBuZXdDb25maWc6IHJlc3RDb25maWd9KVxuICAgICAgOiBzdGF0ZVdpdGhEYXRhSWQ7XG4gIH1cblxuICBsZXQgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyhhY3Rpb24ubmV3Q29uZmlnKTtcblxuICBsZXQgbGF5ZXJEYXRhO1xuXG4gIC8vIGxldCBuZXdMYXllcjtcbiAgaWYgKG5ld0xheWVyLnNob3VsZENhbGN1bGF0ZUxheWVyRGF0YShwcm9wcykpIHtcbiAgICBjb25zdCBvbGRMYXllckRhdGEgPSBzdGF0ZS5sYXllckRhdGFbaWR4XTtcbiAgICBjb25zdCB1cGRhdGVMYXllckRhdGFSZXN1bHQgPSBjYWxjdWxhdGVMYXllckRhdGEobmV3TGF5ZXIsIHN0YXRlLCBvbGRMYXllckRhdGEpO1xuXG4gICAgbGF5ZXJEYXRhID0gdXBkYXRlTGF5ZXJEYXRhUmVzdWx0LmxheWVyRGF0YTtcbiAgICBuZXdMYXllciA9IHVwZGF0ZUxheWVyRGF0YVJlc3VsdC5sYXllcjtcbiAgfVxuXG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuICBpZiAoJ2lzVmlzaWJsZScgaW4gYWN0aW9uLm5ld0NvbmZpZykge1xuICAgIG5ld1N0YXRlID0gdXBkYXRlU3RhdGVPbkxheWVyVmlzaWJpbGl0eUNoYW5nZShzdGF0ZSwgbmV3TGF5ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShuZXdTdGF0ZSwge1xuICAgIGxheWVyOiBuZXdMYXllcixcbiAgICBsYXllckRhdGEsXG4gICAgaWR4XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRPclJlbW92ZVRleHRMYWJlbHMobmV3RmllbGRzLCB0ZXh0TGFiZWwpIHtcbiAgbGV0IG5ld1RleHRMYWJlbCA9IHRleHRMYWJlbC5zbGljZSgpO1xuXG4gIGNvbnN0IGN1cnJlbnRGaWVsZHMgPSB0ZXh0TGFiZWwubWFwKHRsID0+IHRsLmZpZWxkICYmIHRsLmZpZWxkLm5hbWUpLmZpbHRlcihkID0+IGQpO1xuXG4gIGNvbnN0IGFkZEZpZWxkcyA9IG5ld0ZpZWxkcy5maWx0ZXIoZiA9PiAhY3VycmVudEZpZWxkcy5pbmNsdWRlcyhmLm5hbWUpKTtcbiAgY29uc3QgZGVsZXRlRmllbGRzID0gY3VycmVudEZpZWxkcy5maWx0ZXIoZiA9PiAhbmV3RmllbGRzLmZpbmQoZmQgPT4gZmQubmFtZSA9PT0gZikpO1xuXG4gIC8vIGRlbGV0ZVxuICBuZXdUZXh0TGFiZWwgPSBuZXdUZXh0TGFiZWwuZmlsdGVyKHRsID0+IHRsLmZpZWxkICYmICFkZWxldGVGaWVsZHMuaW5jbHVkZXModGwuZmllbGQubmFtZSkpO1xuXG4gIC8vIGFkZFxuICBuZXdUZXh0TGFiZWwgPSBuZXdUZXh0TGFiZWwuZmlsdGVyKHRsID0+IHRsLmZpZWxkKTtcbiAgY29uc3QgZGVmYXVsdExhYmVsID0gbmV3VGV4dExhYmVsLmxlbmd0aCA/IERFRkFVTFRfU0VDT05EQVJZX1RFWFRfTEFCRUwgOiBERUZBVUxUX1RFWFRfTEFCRUw7XG4gIG5ld1RleHRMYWJlbCA9IFsuLi5uZXdUZXh0TGFiZWwsIC4uLmFkZEZpZWxkcy5tYXAoYWYgPT4gKHsuLi5kZWZhdWx0TGFiZWwsIGZpZWxkOiBhZn0pKV07XG5cbiAgLy8gbGltaXQgdG8gMiBsYWJlbHMgKG92ZXJ3cml0ZSAybmQgbGFiZWwgd2l0aCAzcmQpXG4gIGlmIChuZXdUZXh0TGFiZWwubGVuZ3RoID4gMikge1xuICAgIG5ld1RleHRMYWJlbCA9IFtuZXdUZXh0TGFiZWxbMF0sIG5ld1RleHRMYWJlbFsyXV07XG4gIH1cblxuICAvLyBkZWZhdWx0XG4gIG5ld1RleHRMYWJlbCA9ICFuZXdUZXh0TGFiZWwubGVuZ3RoID8gW0RFRkFVTFRfVEVYVF9MQUJFTF0gOiBuZXdUZXh0TGFiZWw7XG5cbiAgcmV0dXJuIG5ld1RleHRMYWJlbDtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVGV4dExhYmVsUHJvcEFuZFZhbHVlKGlkeCwgcHJvcCwgdmFsdWUsIHRleHRMYWJlbCkge1xuICBpZiAoIXRleHRMYWJlbFtpZHhdLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgcmV0dXJuIHRleHRMYWJlbDtcbiAgfVxuXG4gIGxldCBuZXdUZXh0TGFiZWwgPSB0ZXh0TGFiZWwuc2xpY2UoKTtcblxuICBpZiAocHJvcCAmJiAodmFsdWUgfHwgdGV4dExhYmVsLmxlbmd0aCA9PT0gMSkpIHtcbiAgICBuZXdUZXh0TGFiZWwgPSB0ZXh0TGFiZWwubWFwKCh0bCwgaSkgPT4gKGkgPT09IGlkeCA/IHsuLi50bCwgW3Byb3BdOiB2YWx1ZX0gOiB0bCkpO1xuICB9IGVsc2UgaWYgKHByb3AgPT09ICdmaWVsZCcgJiYgdmFsdWUgPT09IG51bGwgJiYgdGV4dExhYmVsLmxlbmd0aCA+IDEpIHtcbiAgICAvLyByZW1vdmUgbGFiZWwgd2hlbiBmaWVsZCB2YWx1ZSBpcyBzZXQgdG8gbnVsbFxuICAgIG5ld1RleHRMYWJlbC5zcGxpY2UoaWR4LCAxKTtcbiAgfVxuXG4gIHJldHVybiBuZXdUZXh0TGFiZWw7XG59XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIGJhc2UgY29uZmlnOiBkYXRhSWQsIGxhYmVsLCBjb2x1bW4sIGlzVmlzaWJsZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJUZXh0TGFiZWxDaGFuZ2VVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkxheWVyVGV4dExhYmVsQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIGlkeCwgcHJvcCwgdmFsdWV9ID0gYWN0aW9uO1xuICBjb25zdCB7dGV4dExhYmVsfSA9IG9sZExheWVyLmNvbmZpZztcblxuICBsZXQgbmV3VGV4dExhYmVsID0gdGV4dExhYmVsLnNsaWNlKCk7XG4gIGlmICghdGV4dExhYmVsW2lkeF0gJiYgaWR4ID09PSB0ZXh0TGFiZWwubGVuZ3RoKSB7XG4gICAgLy8gaWYgaWR4IGlzIHNldCB0byBsZW5ndGgsIGFkZCBlbXB0eSB0ZXh0IGxhYmVsXG4gICAgbmV3VGV4dExhYmVsID0gWy4uLnRleHRMYWJlbCwgaWR4ID09PSAwID8gREVGQVVMVF9URVhUX0xBQkVMIDogREVGQVVMVF9TRUNPTkRBUllfVEVYVF9MQUJFTF07XG4gIH1cblxuICBpZiAoaWR4ID09PSAnYWxsJyAmJiBwcm9wID09PSAnZmllbGRzJykge1xuICAgIG5ld1RleHRMYWJlbCA9IGFkZE9yUmVtb3ZlVGV4dExhYmVscyh2YWx1ZSwgdGV4dExhYmVsKTtcbiAgfSBlbHNlIHtcbiAgICBuZXdUZXh0TGFiZWwgPSB1cGRhdGVUZXh0TGFiZWxQcm9wQW5kVmFsdWUoaWR4LCBwcm9wLCB2YWx1ZSwgbmV3VGV4dExhYmVsKTtcbiAgfVxuICAvLyB1cGRhdGUgdGV4dCBsYWJlbCBwcm9wIGFuZCB2YWx1ZVxuICByZXR1cm4gbGF5ZXJDb25maWdDaGFuZ2VVcGRhdGVyKHN0YXRlLCB7XG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3Q29uZmlnOiB7dGV4dExhYmVsOiBuZXdUZXh0TGFiZWx9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUV4aXN0aW5nTGF5ZXJXaXRoRGF0YShkYXRhc2V0LCBsYXllckNsYXNzZXMsIGxheWVyKSB7XG4gIGNvbnN0IGxvYWRlZExheWVyID0gc2VyaWFsaXplTGF5ZXIobGF5ZXIpO1xuICByZXR1cm4gdmFsaWRhdGVMYXllcldpdGhEYXRhKGRhdGFzZXQsIGxvYWRlZExheWVyLCBsYXllckNsYXNzZXMsIHtcbiAgICBhbGxvd0VtcHR5Q29sdW1uOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBsYXllciBjb25maWcgZGF0YUlkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllckRhdGFJZENoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgb2xkTGF5ZXI6IExheWVyO1xuICAgIG5ld0NvbmZpZzoge1xuICAgICAgZGF0YUlkOiBzdHJpbmc7XG4gICAgfTtcbiAgfVxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIG5ld0NvbmZpZ30gPSBhY3Rpb247XG4gIGNvbnN0IHtkYXRhSWR9ID0gbmV3Q29uZmlnO1xuXG4gIGlmICghb2xkTGF5ZXIgfHwgIXN0YXRlLmRhdGFzZXRzW2RhdGFJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3QgaWR4ID0gc3RhdGUubGF5ZXJzLmZpbmRJbmRleChsID0+IGwuaWQgPT09IG9sZExheWVyLmlkKTtcblxuICBsZXQgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyh7ZGF0YUlkfSk7XG4gIC8vIHRoaXMgbWF5IGhhcHBlbiB3aGVuIGEgbGF5ZXIgaXMgbmV3ICh0eXBlOiBudWxsIGFuZCBubyBjb2x1bW5zKSBidXQgaXQncyBub3QgcmVhZHkgdG8gYmUgc2F2ZWRcbiAgaWYgKG5ld0xheWVyLmlzVmFsaWRUb1NhdmUoKSkge1xuICAgIGNvbnN0IHZhbGlkYXRlZCA9IHZhbGlkYXRlRXhpc3RpbmdMYXllcldpdGhEYXRhKFxuICAgICAgc3RhdGUuZGF0YXNldHNbZGF0YUlkXSxcbiAgICAgIHN0YXRlLmxheWVyQ2xhc3NlcyxcbiAgICAgIG5ld0xheWVyXG4gICAgKTtcbiAgICAvLyBpZiBjYW50IHZhbGlkYXRlIGl0IHdpdGggZGF0YSBjcmVhdGUgYSBuZXcgb25lXG4gICAgaWYgKCF2YWxpZGF0ZWQpIHtcbiAgICAgIG5ld0xheWVyID0gbmV3IHN0YXRlLmxheWVyQ2xhc3Nlc1tvbGRMYXllci50eXBlXSh7ZGF0YUlkLCBpZDogb2xkTGF5ZXIuaWR9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3TGF5ZXIgPSB2YWxpZGF0ZWQ7XG4gICAgfVxuICB9XG5cbiAgbmV3TGF5ZXIgPSBuZXdMYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgaXNWaXNpYmxlOiBvbGRMYXllci5jb25maWcuaXNWaXNpYmxlLFxuICAgIGlzQ29uZmlnQWN0aXZlOiB0cnVlXG4gIH0pO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyRG9tYWluKHN0YXRlLmRhdGFzZXRzKTtcbiAgY29uc3Qge2xheWVyRGF0YSwgbGF5ZXJ9ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSwgdW5kZWZpbmVkKTtcblxuICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoTGF5ZXJBbmREYXRhKHN0YXRlLCB7bGF5ZXJEYXRhLCBsYXllciwgaWR4fSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIHR5cGUuIFByZXZpZXdzIGxheWVyIGNvbmZpZyB3aWxsIGJlIGNvcGllZCBpZiBhcHBsaWNhYmxlLlxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIG5ld1R5cGV9ID0gYWN0aW9uO1xuICBpZiAoIW9sZExheWVyKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IG9sZElkID0gb2xkTGF5ZXIuaWQ7XG4gIGNvbnN0IGlkeCA9IHN0YXRlLmxheWVycy5maW5kSW5kZXgobCA9PiBsLmlkID09PSBvbGRJZCk7XG5cbiAgaWYgKCFzdGF0ZS5sYXllckNsYXNzZXNbbmV3VHlwZV0pIHtcbiAgICBDb25zb2xlLmVycm9yKGAke25ld1R5cGV9IGlzIG5vdCBhIHZhbGlkIGxheWVyIHR5cGVgKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBnZXQgYSBtaW50IGxheWVyLCB3aXRoIG5ldyBpZCBhbmQgdHlwZVxuICAvLyBiZWNhdXNlIGRlY2suZ2wgdXNlcyBpZCB0byBtYXRjaCBiZXR3ZWVuIG5ldyBhbmQgb2xkIGxheWVyLlxuICAvLyBJZiB0eXBlIGhhcyBjaGFuZ2VkIGJ1dCBpZCBpcyB0aGUgc2FtZSwgaXQgd2lsbCBicmVha1xuICBjb25zdCBuZXdMYXllciA9IG5ldyBzdGF0ZS5sYXllckNsYXNzZXNbbmV3VHlwZV0oKTtcblxuICBuZXdMYXllci5hc3NpZ25Db25maWdUb0xheWVyKG9sZExheWVyLmNvbmZpZywgb2xkTGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MpO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyRG9tYWluKHN0YXRlLmRhdGFzZXRzKTtcbiAgY29uc3Qge2xheWVyRGF0YSwgbGF5ZXJ9ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSk7XG4gIGxldCBuZXdTdGF0ZSA9IHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShzdGF0ZSwge2xheWVyRGF0YSwgbGF5ZXIsIGlkeH0pO1xuXG4gIGlmIChsYXllci5jb25maWcuYW5pbWF0aW9uLmVuYWJsZWQgfHwgb2xkTGF5ZXIuY29uZmlnLmFuaW1hdGlvbi5lbmFibGVkKSB7XG4gICAgbmV3U3RhdGUgPSB1cGRhdGVBbmltYXRpb25Eb21haW4obmV3U3RhdGUpO1xuICB9XG5cbiAgLy8gdXBkYXRlIHNwbGl0TWFwIGxheWVyIGlkXG4gIGlmIChzdGF0ZS5zcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIHNwbGl0TWFwczogbmV3U3RhdGUuc3BsaXRNYXBzLm1hcChzZXR0aW5ncyA9PiB7XG4gICAgICAgIGNvbnN0IHtbb2xkSWRdOiBvbGRMYXllck1hcCwgLi4ub3RoZXJMYXllcnN9ID0gc2V0dGluZ3MubGF5ZXJzO1xuICAgICAgICByZXR1cm4gb2xkSWQgaW4gc2V0dGluZ3MubGF5ZXJzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICAgICAgICBsYXllcnM6IHtcbiAgICAgICAgICAgICAgICAuLi5vdGhlckxheWVycyxcbiAgICAgICAgICAgICAgICBbbGF5ZXIuaWRdOiBvbGRMYXllck1hcFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBzZXR0aW5ncztcbiAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdmlzdWFsIGNoYW5uZWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVmlzdWFsQ2hhbm5lbENoYW5nZVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXIsIG5ld0NvbmZpZywgY2hhbm5lbH0gPSBhY3Rpb247XG4gIGlmICghb2xkTGF5ZXIuY29uZmlnLmRhdGFJZCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbb2xkTGF5ZXIuY29uZmlnLmRhdGFJZF07XG5cbiAgY29uc3QgaWR4ID0gc3RhdGUubGF5ZXJzLmZpbmRJbmRleChsID0+IGwuaWQgPT09IG9sZExheWVyLmlkKTtcbiAgY29uc3QgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyhuZXdDb25maWcpO1xuXG4gIG5ld0xheWVyLnVwZGF0ZUxheWVyVmlzdWFsQ2hhbm5lbChkYXRhc2V0LCBjaGFubmVsKTtcblxuICBjb25zdCBvbGRMYXllckRhdGEgPSBzdGF0ZS5sYXllckRhdGFbaWR4XTtcbiAgY29uc3Qge2xheWVyRGF0YSwgbGF5ZXJ9ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSwgb2xkTGF5ZXJEYXRhKTtcblxuICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoTGF5ZXJBbmREYXRhKHN0YXRlLCB7bGF5ZXJEYXRhLCBsYXllciwgaWR4fSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIGB2aXNDb25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJWaXNDb25maWdDaGFuZ2VVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkxheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7b2xkTGF5ZXJ9ID0gYWN0aW9uO1xuICBjb25zdCBpZHggPSBzdGF0ZS5sYXllcnMuZmluZEluZGV4KGwgPT4gbC5pZCA9PT0gb2xkTGF5ZXIuaWQpO1xuICBjb25zdCBwcm9wcyA9IE9iamVjdC5rZXlzKGFjdGlvbi5uZXdWaXNDb25maWcpO1xuICBjb25zdCBuZXdWaXNDb25maWcgPSB7XG4gICAgLi4ub2xkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZyxcbiAgICAuLi5hY3Rpb24ubmV3VmlzQ29uZmlnXG4gIH07XG5cbiAgY29uc3QgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbmZpZyh7dmlzQ29uZmlnOiBuZXdWaXNDb25maWd9KTtcblxuICBpZiAobmV3TGF5ZXIuc2hvdWxkQ2FsY3VsYXRlTGF5ZXJEYXRhKHByb3BzKSkge1xuICAgIGNvbnN0IG9sZExheWVyRGF0YSA9IHN0YXRlLmxheWVyRGF0YVtpZHhdO1xuICAgIGNvbnN0IHtsYXllckRhdGEsIGxheWVyfSA9IGNhbGN1bGF0ZUxheWVyRGF0YShuZXdMYXllciwgc3RhdGUsIG9sZExheWVyRGF0YSk7XG4gICAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShzdGF0ZSwge2xheWVyRGF0YSwgbGF5ZXIsIGlkeH0pO1xuICB9XG5cbiAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aExheWVyQW5kRGF0YShzdGF0ZSwge2xheWVyOiBuZXdMYXllciwgaWR4fSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGZpbHRlciBwcm9wZXJ0eVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiBzZXRGaWx0ZXJVcGRhdGVyKHN0YXRlLCBhY3Rpb24pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBmaWx0ZXIgYW5pbWF0aW9uIHdpbmRvd1xuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2lkLCBhbmltYXRpb25XaW5kb3d9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbHRlcnM6IHN0YXRlLmZpbHRlcnMubWFwKGYgPT5cbiAgICAgIGYuaWQgPT09IGlkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIGFuaW1hdGlvbldpbmRvd1xuICAgICAgICAgIH1cbiAgICAgICAgOiBmXG4gICAgKVxuICB9O1xufVxuLyoqXG4gKiBVcGRhdGUgZmlsdGVyIHByb3BlcnR5XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRGaWx0ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IHtpZHgsIHByb3AsIHZhbHVlLCB2YWx1ZUluZGV4ID0gMH0gPSBhY3Rpb247XG4gIGNvbnN0IG9sZEZpbHRlciA9IHN0YXRlLmZpbHRlcnNbaWR4XTtcblxuICBpZiAoIW9sZEZpbHRlcikge1xuICAgIENvbnNvbGUuZXJyb3IoYGZpbHRlcnMuJHtpZHh9IGlzIHVuZGVmaW5lZGApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsZXQgbmV3RmlsdGVyID0gc2V0KFtwcm9wXSwgdmFsdWUsIG9sZEZpbHRlcik7XG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuXG4gIGNvbnN0IHtkYXRhSWR9ID0gbmV3RmlsdGVyO1xuXG4gIC8vIEVuc3VyaW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgbGV0IGRhdGFzZXRJZHMgPSB0b0FycmF5KGRhdGFJZCk7XG5cbiAgc3dpdGNoIChwcm9wKSB7XG4gICAgLy8gVE9ETzogTmV4dCBQUiBmb3IgVUkgaWYgd2UgdXBkYXRlIGRhdGFJZCwgd2UgbmVlZCB0byBjb25zaWRlciB0d28gY2FzZXM6XG4gICAgLy8gMS4gZGF0YUlkIGlzIGVtcHR5OiBjcmVhdGUgYSBkZWZhdWx0IGZpbHRlclxuICAgIC8vIDIuIEFkZCBhIG5ldyBkYXRhc2V0IGlkXG4gICAgY2FzZSBGSUxURVJfVVBEQVRFUl9QUk9QUy5kYXRhSWQ6XG4gICAgICAvLyBpZiB0cnlpbmcgdG8gdXBkYXRlIGZpbHRlciBkYXRhSWQuIGNyZWF0ZSBhbiBlbXB0eSBuZXcgZmlsdGVyXG4gICAgICBuZXdGaWx0ZXIgPSB1cGRhdGVGaWx0ZXJEYXRhSWQoZGF0YUlkKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBGSUxURVJfVVBEQVRFUl9QUk9QUy5uYW1lOlxuICAgICAgLy8gd2UgYXJlIHN1cHBvcnRpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb25hbGl0eVxuICAgICAgLy8gVE9ETzogTmV4dCBQUiBmb3IgVUkgZmlsdGVyIG5hbWUgd2lsbCBvbmx5IHVwZGF0ZSBmaWx0ZXIgbmFtZSBidXQgaXQgd29uJ3QgaGF2ZSBzaWRlIGVmZmVjdHNcbiAgICAgIC8vIHdlIGFyZSBnb25uYSB1c2UgcGFpciBvZiBkYXRhc2V0cyBhbmQgZmllbGRJZHggdG8gdXBkYXRlIHRoZSBmaWx0ZXJcbiAgICAgIGNvbnN0IGRhdGFzZXRJZCA9IG5ld0ZpbHRlci5kYXRhSWRbdmFsdWVJbmRleF07XG4gICAgICBjb25zdCB7ZmlsdGVyOiB1cGRhdGVkRmlsdGVyLCBkYXRhc2V0OiBuZXdEYXRhc2V0fSA9IGFwcGx5RmlsdGVyRmllbGROYW1lKFxuICAgICAgICBuZXdGaWx0ZXIsXG4gICAgICAgIHN0YXRlLmRhdGFzZXRzW2RhdGFzZXRJZF0sXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB2YWx1ZUluZGV4LFxuICAgICAgICB7bWVyZ2VEb21haW46IGZhbHNlfVxuICAgICAgKTtcbiAgICAgIGlmICghdXBkYXRlZEZpbHRlcikge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIG5ld0ZpbHRlciA9IHVwZGF0ZWRGaWx0ZXI7XG5cbiAgICAgIGlmIChuZXdGaWx0ZXIuZ3B1KSB7XG4gICAgICAgIG5ld0ZpbHRlciA9IHNldEZpbHRlckdwdU1vZGUobmV3RmlsdGVyLCBzdGF0ZS5maWx0ZXJzKTtcbiAgICAgICAgbmV3RmlsdGVyID0gYXNzaWduR3B1Q2hhbm5lbChuZXdGaWx0ZXIsIHN0YXRlLmZpbHRlcnMpO1xuICAgICAgfVxuXG4gICAgICBuZXdTdGF0ZSA9IHNldChbJ2RhdGFzZXRzJywgZGF0YXNldElkXSwgbmV3RGF0YXNldCwgc3RhdGUpO1xuXG4gICAgICAvLyBvbmx5IGZpbHRlciB0aGUgY3VycmVudCBkYXRhc2V0XG4gICAgICBicmVhaztcbiAgICBjYXNlIEZJTFRFUl9VUERBVEVSX1BST1BTLmxheWVySWQ6XG4gICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSBvbmx5IGRhdGFzZXRJZC9zIGlmIHdlIGhhdmUgYWRkZWQvcmVtb3ZlZCBsYXllcnNcbiAgICAgIC8vIC0gY2hlY2sgZm9yIGxheWVySWQgY2hhbmdlcyAoWE9SIHdvcmtzIGJlY2F1c2Ugb2Ygc3RyaW5nIHZhbHVlcylcbiAgICAgIC8vIGlmIG5vIGRpZmZlcmVuY2VzIGJldHdlZW4gbGF5ZXJJZHMsIGRvbid0IGRvIGFueSBmaWx0ZXJpbmdcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGxheWVySWREaWZmZXJlbmNlID0geG9yKG5ld0ZpbHRlci5sYXllcklkLCBvbGRGaWx0ZXIubGF5ZXJJZCk7XG5cbiAgICAgIGNvbnN0IGxheWVyRGF0YUlkcyA9IHVuaXEoXG4gICAgICAgIGxheWVySWREaWZmZXJlbmNlXG4gICAgICAgICAgLm1hcChsaWQgPT5cbiAgICAgICAgICAgIGdldChcbiAgICAgICAgICAgICAgc3RhdGUubGF5ZXJzLmZpbmQobCA9PiBsLmlkID09PSBsaWQpLFxuICAgICAgICAgICAgICBbJ2NvbmZpZycsICdkYXRhSWQnXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICAuZmlsdGVyKGQgPT4gZClcbiAgICAgICk7XG5cbiAgICAgIC8vIG9ubHkgZmlsdGVyIGRhdGFzZXRzSWRzXG4gICAgICBkYXRhc2V0SWRzID0gbGF5ZXJEYXRhSWRzO1xuXG4gICAgICAvLyBVcGRhdGUgbmV3RmlsdGVyIGRhdGFJZHNcbiAgICAgIGNvbnN0IG5ld0RhdGFJZHMgPSB1bmlxKFxuICAgICAgICBuZXdGaWx0ZXIubGF5ZXJJZFxuICAgICAgICAgIC5tYXAobGlkID0+XG4gICAgICAgICAgICBnZXQoXG4gICAgICAgICAgICAgIHN0YXRlLmxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gbGlkKSxcbiAgICAgICAgICAgICAgWydjb25maWcnLCAnZGF0YUlkJ11cbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcihkID0+IGQpXG4gICAgICApO1xuXG4gICAgICBuZXdGaWx0ZXIgPSB7XG4gICAgICAgIC4uLm5ld0ZpbHRlcixcbiAgICAgICAgZGF0YUlkOiBuZXdEYXRhSWRzXG4gICAgICB9O1xuXG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCBlbmxhcmdlZEZpbHRlciA9IHN0YXRlLmZpbHRlcnMuZmluZChmID0+IGYuZW5sYXJnZWQpO1xuXG4gIGlmIChlbmxhcmdlZEZpbHRlciAmJiBlbmxhcmdlZEZpbHRlci5pZCAhPT0gbmV3RmlsdGVyLmlkKSB7XG4gICAgLy8gdGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIGVubGFyZ2VkIGZpbHRlclxuICAgIG5ld0ZpbHRlci5lbmxhcmdlZCA9IGZhbHNlO1xuICB9XG5cbiAgLy8gc2F2ZSBuZXcgZmlsdGVycyB0byBuZXdTdGF0ZVxuICBuZXdTdGF0ZSA9IHNldChbJ2ZpbHRlcnMnLCBpZHhdLCBuZXdGaWx0ZXIsIG5ld1N0YXRlKTtcblxuICAvLyBpZiB3ZSBhcmUgY3VycmVudGx5IHNldHRpbmcgYSBwcm9wIHRoYXQgb25seSByZXF1aXJlcyB0byBmaWx0ZXIgdGhlIGN1cnJlbnRcbiAgLy8gZGF0YXNldCB3ZSB3aWxsIHBhc3Mgb25seSB0aGUgY3VycmVudCBkYXRhc2V0IHRvIGFwcGx5RmlsdGVyc1RvRGF0YXNldHMgYW5kXG4gIC8vIHVwZGF0ZUFsbExheWVyRG9tYWluRGF0YSBvdGhlcndpc2Ugd2UgcGFzcyB0aGUgYWxsIGxpc3Qgb2YgZGF0YXNldHMgYXMgZGVmaW5lZCBpbiBkYXRhSWRcbiAgY29uc3QgZGF0YXNldElkc1RvRmlsdGVyID0gTElNSVRFRF9GSUxURVJfRUZGRUNUX1BST1BTW3Byb3BdXG4gICAgPyBbZGF0YXNldElkc1t2YWx1ZUluZGV4XV1cbiAgICA6IGRhdGFzZXRJZHM7XG5cbiAgLy8gZmlsdGVyIGRhdGFcbiAgY29uc3QgZmlsdGVyZWREYXRhc2V0cyA9IGFwcGx5RmlsdGVyc1RvRGF0YXNldHMoXG4gICAgZGF0YXNldElkc1RvRmlsdGVyLFxuICAgIG5ld1N0YXRlLmRhdGFzZXRzLFxuICAgIG5ld1N0YXRlLmZpbHRlcnMsXG4gICAgbmV3U3RhdGUubGF5ZXJzXG4gICk7XG5cbiAgbmV3U3RhdGUgPSBzZXQoWydkYXRhc2V0cyddLCBmaWx0ZXJlZERhdGFzZXRzLCBuZXdTdGF0ZSk7XG4gIC8vIGRhdGFJZCBpcyBhbiBhcnJheVxuICAvLyBwYXNzIG9ubHkgdGhlIGRhdGFzZXQgd2UgbmVlZCB0byB1cGRhdGVcbiAgbmV3U3RhdGUgPSB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGEobmV3U3RhdGUsIGRhdGFzZXRJZHNUb0ZpbHRlciwgbmV3RmlsdGVyKTtcblxuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbi8qKlxuICogU2V0IHRoZSBwcm9wZXJ0eSBvZiBhIGZpbHRlciBwbG90XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RmlsdGVyUGxvdFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2lkeCwgbmV3UHJvcCwgdmFsdWVJbmRleCA9IDB9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0RmlsdGVyUGxvdFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+IHtcbiAgbGV0IG5ld0ZpbHRlciA9IHsuLi5zdGF0ZS5maWx0ZXJzW2lkeF0sIC4uLm5ld1Byb3B9O1xuICBjb25zdCBwcm9wID0gT2JqZWN0LmtleXMobmV3UHJvcClbMF07XG4gIGlmIChwcm9wID09PSAneUF4aXMnKSB7XG4gICAgY29uc3QgcGxvdFR5cGUgPSBnZXREZWZhdWx0RmlsdGVyUGxvdFR5cGUobmV3RmlsdGVyKTtcbiAgICAvLyBUT0RPOiBwbG90IGlzIG5vdCBzdXBwb3J0ZWQgaW4gbXVsdGkgZGF0YXNldCBmaWx0ZXIgZm9yIG5vd1xuICAgIGlmIChwbG90VHlwZSkge1xuICAgICAgbmV3RmlsdGVyID0ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIC4uLmdldEZpbHRlclBsb3Qoey4uLm5ld0ZpbHRlciwgcGxvdFR5cGV9LCBzdGF0ZS5kYXRhc2V0c1tuZXdGaWx0ZXIuZGF0YUlkW3ZhbHVlSW5kZXhdXSksXG4gICAgICAgIHBsb3RUeXBlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsdGVyczogc3RhdGUuZmlsdGVycy5tYXAoKGYsIGkpID0+IChpID09PSBpZHggPyBuZXdGaWx0ZXIgOiBmKSlcbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIGEgbmV3IGZpbHRlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEZpbHRlclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuQWRkRmlsdGVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT5cbiAgIWFjdGlvbi5kYXRhSWRcbiAgICA/IHN0YXRlXG4gICAgOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXJzOiBbLi4uc3RhdGUuZmlsdGVycywgZ2V0RGVmYXVsdEZpbHRlcihhY3Rpb24uZGF0YUlkKV1cbiAgICAgIH07XG5cbi8qKlxuICogU2V0IGxheWVyIGNvbG9yIHBhbGV0dGUgdWkgc3RhdGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBsYXllckNvbG9yVUlDaGFuZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtvbGRMYXllciwgcHJvcCwgbmV3Q29uZmlnfTogVmlzU3RhdGVBY3Rpb25zLkxheWVyQ29sb3JVSUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+IHtcbiAgY29uc3Qgb2xkVml4Q29uZmlnID0gb2xkTGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wXTtcbiAgY29uc3QgbmV3TGF5ZXIgPSBvbGRMYXllci51cGRhdGVMYXllckNvbG9yVUkocHJvcCwgbmV3Q29uZmlnKTtcbiAgY29uc3QgbmV3VmlzQ29uZmlnID0gbmV3TGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1twcm9wXTtcbiAgaWYgKG9sZFZpeENvbmZpZyAhPT0gbmV3VmlzQ29uZmlnKSB7XG4gICAgcmV0dXJuIGxheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlcihzdGF0ZSwge1xuICAgICAgb2xkTGF5ZXIsXG4gICAgICBuZXdWaXNDb25maWc6IHtcbiAgICAgICAgW3Byb3BdOiBuZXdWaXNDb25maWdcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGxheWVyczogc3RhdGUubGF5ZXJzLm1hcChsID0+IChsLmlkID09PSBvbGRMYXllci5pZCA/IG5ld0xheWVyIDogbCkpXG4gIH07XG59O1xuXG4vKipcbiAqIFN0YXJ0IGFuZCBlbmQgZmlsdGVyIGFuaW1hdGlvblxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZUZpbHRlckFuaW1hdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuVG9nZ2xlRmlsdGVyQW5pbWF0aW9uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGZpbHRlcnM6IHN0YXRlLmZpbHRlcnMubWFwKChmLCBpKSA9PiAoaSA9PT0gYWN0aW9uLmlkeCA/IHsuLi5mLCBpc0FuaW1hdGluZzogIWYuaXNBbmltYXRpbmd9IDogZikpXG59KTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJBbmltYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlRvZ2dsZUxheWVyQW5pbWF0aW9uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgIC4uLnN0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgICBpc0FuaW1hdGluZzogIXN0YXRlLmFuaW1hdGlvbkNvbmZpZy5pc0FuaW1hdGluZ1xuICB9XG59KTtcblxuLyoqXG4gKiBIaWRlIGFuZCBzaG93IGxheWVyIGFuaW1hdGlvbiBjb250cm9sXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5Ub2dnbGVMYXllckFuaW1hdGlvbkNvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgYW5pbWF0aW9uQ29uZmlnOiB7XG4gICAgLi4uc3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICAgIGhpZGVDb250cm9sOiAhc3RhdGUuYW5pbWF0aW9uQ29uZmlnLmhpZGVDb250cm9sXG4gIH1cbn0pO1xuXG4vKipcbiAqIENoYW5nZSBmaWx0ZXIgYW5pbWF0aW9uIHNwZWVkXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlVwZGF0ZUZpbHRlckFuaW1hdGlvblNwZWVkVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGZpbHRlcnM6IHN0YXRlLmZpbHRlcnMubWFwKChmLCBpKSA9PiAoaSA9PT0gYWN0aW9uLmlkeCA/IHsuLi5mLCBzcGVlZDogYWN0aW9uLnNwZWVkfSA6IGYpKVxufSk7XG5cbi8qKlxuICogUmVzZXQgYW5pbWF0aW9uIGNvbmZpZyBjdXJyZW50IHRpbWUgdG8gYSBzcGVjaWZpZWQgdmFsdWVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKlxuICovXG5leHBvcnQgY29uc3Qgc2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7dmFsdWV9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGFuaW1hdGlvbkNvbmZpZzoge1xuICAgIC4uLnN0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgICBjdXJyZW50VGltZTogdmFsdWVcbiAgfVxufSk7XG5cbi8qKlxuICogVXBkYXRlIGFuaW1hdGlvbiBzcGVlZCB3aXRoIHRoZSB2ZXJ0aWNhbCBzcGVlZCBzbGlkZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKlxuICovXG5leHBvcnQgY29uc3QgdXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge3NwZWVkfTogVmlzU3RhdGVBY3Rpb25zLlVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgYW5pbWF0aW9uQ29uZmlnOiB7XG4gICAgICAuLi5zdGF0ZS5hbmltYXRpb25Db25maWcsXG4gICAgICBzcGVlZFxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBsYXJnZXIgdGltZSBmaWx0ZXIgYXQgYm90dG9tIGZvciB0aW1lIHBsYXliYWNrIChhcHBseSB0byB0aW1lIGZpbHRlciBvbmx5KVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGVubGFyZ2VGaWx0ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkVubGFyZ2VGaWx0ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZmlsdGVyczogc3RhdGUuZmlsdGVycy5tYXAoKGYsIGkpID0+XG4gICAgICBpID09PSBhY3Rpb24uaWR4XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIGVubGFyZ2VkOiAhZi5lbmxhcmdlZFxuICAgICAgICAgIH1cbiAgICAgICAgOiBmXG4gICAgKVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGVzIGZpbHRlciBmZWF0dXJlIHZpc2liaWxpdHlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVGaWx0ZXJGZWF0dXJlVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5Ub2dnbGVGaWx0ZXJGZWF0dXJlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBzdGF0ZS5maWx0ZXJzW2FjdGlvbi5pZHhdO1xuICBjb25zdCBpc1Zpc2libGUgPSBnZXQoZmlsdGVyLCBbJ3ZhbHVlJywgJ3Byb3BlcnRpZXMnLCAnaXNWaXNpYmxlJ10pO1xuICBjb25zdCBuZXdGaWx0ZXIgPSB7XG4gICAgLi4uZmlsdGVyLFxuICAgIHZhbHVlOiBmZWF0dXJlVG9GaWx0ZXJWYWx1ZShmaWx0ZXIudmFsdWUsIGZpbHRlci5pZCwge1xuICAgICAgaXNWaXNpYmxlOiAhaXNWaXNpYmxlXG4gICAgfSlcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGZpbHRlcnM6IE9iamVjdC5hc3NpZ24oWy4uLnN0YXRlLmZpbHRlcnNdLCB7W2FjdGlvbi5pZHhdOiBuZXdGaWx0ZXJ9KVxuICB9O1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYSBmaWx0ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVGaWx0ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlJlbW92ZUZpbHRlclVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+IHtcbiAgY29uc3Qge2lkeH0gPSBhY3Rpb247XG4gIGNvbnN0IHtkYXRhSWQsIGlkfSA9IHN0YXRlLmZpbHRlcnNbaWR4XTtcblxuICBjb25zdCBuZXdGaWx0ZXJzID0gW1xuICAgIC4uLnN0YXRlLmZpbHRlcnMuc2xpY2UoMCwgaWR4KSxcbiAgICAuLi5zdGF0ZS5maWx0ZXJzLnNsaWNlKGlkeCArIDEsIHN0YXRlLmZpbHRlcnMubGVuZ3RoKVxuICBdO1xuXG4gIGNvbnN0IGZpbHRlcmVkRGF0YXNldHMgPSBhcHBseUZpbHRlcnNUb0RhdGFzZXRzKGRhdGFJZCwgc3RhdGUuZGF0YXNldHMsIG5ld0ZpbHRlcnMsIHN0YXRlLmxheWVycyk7XG4gIGNvbnN0IG5ld0VkaXRvciA9XG4gICAgZ2V0RmlsdGVySWRJbkZlYXR1cmUoc3RhdGUuZWRpdG9yLnNlbGVjdGVkRmVhdHVyZSkgPT09IGlkXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBudWxsXG4gICAgICAgIH1cbiAgICAgIDogc3RhdGUuZWRpdG9yO1xuXG4gIGxldCBuZXdTdGF0ZSA9IHNldChbJ2ZpbHRlcnMnXSwgbmV3RmlsdGVycywgc3RhdGUpO1xuICBuZXdTdGF0ZSA9IHNldChbJ2RhdGFzZXRzJ10sIGZpbHRlcmVkRGF0YXNldHMsIG5ld1N0YXRlKTtcbiAgbmV3U3RhdGUgPSBzZXQoWydlZGl0b3InXSwgbmV3RWRpdG9yLCBuZXdTdGF0ZSk7XG5cbiAgcmV0dXJuIHVwZGF0ZUFsbExheWVyRG9tYWluRGF0YShuZXdTdGF0ZSwgZGF0YUlkLCB1bmRlZmluZWQpO1xufTtcblxuLyoqXG4gKiBBZGQgYSBuZXcgbGF5ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRMYXllclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuQWRkTGF5ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGxldCBuZXdMYXllcjtcbiAgbGV0IG5ld0xheWVyRGF0YTtcbiAgaWYgKGFjdGlvbi5jb25maWcpIHtcbiAgICBuZXdMYXllciA9IGNyZWF0ZUxheWVyRnJvbUNvbmZpZyhzdGF0ZSwgYWN0aW9uLmNvbmZpZyk7XG4gICAgaWYgKCFuZXdMYXllcikge1xuICAgICAgQ29uc29sZS53YXJuKFxuICAgICAgICAnRmFpbGVkIHRvIGNyZWF0ZSBsYXllciBmcm9tIGNvbmZpZywgaXQgdXN1YWxseSBtZWFucyB0aGUgY29uZmlnIGlzIG5vdCBiZSBpbiBjb3JyZWN0IGZvcm1hdCcsXG4gICAgICAgIGFjdGlvbi5jb25maWdcbiAgICAgICk7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY2FsY3VsYXRlTGF5ZXJEYXRhKG5ld0xheWVyLCBzdGF0ZSk7XG4gICAgbmV3TGF5ZXIgPSByZXN1bHQubGF5ZXI7XG4gICAgbmV3TGF5ZXJEYXRhID0gcmVzdWx0LmxheWVyRGF0YTtcbiAgfSBlbHNlIHtcbiAgICAvLyBjcmVhdGUgYW4gZW1wdHkgbGF5ZXIgd2l0aCBhIHNwZWNpZmljIGRhdGFzZXQgb3IgYSBkZWZhdWx0IG9uZVxuICAgIGNvbnN0IGRlZmF1bHREYXRhc2V0ID0gYWN0aW9uLmRhdGFzZXRJZCA/PyBPYmplY3Qua2V5cyhzdGF0ZS5kYXRhc2V0cylbMF07XG4gICAgbmV3TGF5ZXIgPSBuZXcgTGF5ZXIoe1xuICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgICBkYXRhSWQ6IGRlZmF1bHREYXRhc2V0XG4gICAgfSk7XG4gICAgbmV3TGF5ZXJEYXRhID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IFsuLi5zdGF0ZS5sYXllcnMsIG5ld0xheWVyXSxcbiAgICBsYXllckRhdGE6IFsuLi5zdGF0ZS5sYXllckRhdGEsIG5ld0xheWVyRGF0YV0sXG4gICAgbGF5ZXJPcmRlcjogWy4uLnN0YXRlLmxheWVyT3JkZXIsIHN0YXRlLmxheWVyT3JkZXIubGVuZ3RoXSxcbiAgICBzcGxpdE1hcHM6IGFkZE5ld0xheWVyc1RvU3BsaXRNYXAoc3RhdGUuc3BsaXRNYXBzLCBuZXdMYXllcilcbiAgfTtcbn07XG5cbi8qKlxuICogcmVtb3ZlIGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTGF5ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtpZHh9OiBWaXNTdGF0ZUFjdGlvbnMuUmVtb3ZlTGF5ZXJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGNvbnN0IHtsYXllcnMsIGxheWVyRGF0YSwgY2xpY2tlZCwgaG92ZXJJbmZvfSA9IHN0YXRlO1xuICBjb25zdCBsYXllclRvUmVtb3ZlID0gc3RhdGUubGF5ZXJzW2lkeF07XG4gIGNvbnN0IG5ld01hcHMgPSByZW1vdmVMYXllckZyb21TcGxpdE1hcHMoc3RhdGUuc3BsaXRNYXBzLCBsYXllclRvUmVtb3ZlKTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IFsuLi5sYXllcnMuc2xpY2UoMCwgaWR4KSwgLi4ubGF5ZXJzLnNsaWNlKGlkeCArIDEsIGxheWVycy5sZW5ndGgpXSxcbiAgICBsYXllckRhdGE6IFsuLi5sYXllckRhdGEuc2xpY2UoMCwgaWR4KSwgLi4ubGF5ZXJEYXRhLnNsaWNlKGlkeCArIDEsIGxheWVyRGF0YS5sZW5ndGgpXSxcbiAgICBsYXllck9yZGVyOiBzdGF0ZS5sYXllck9yZGVyLmZpbHRlcihpID0+IGkgIT09IGlkeCkubWFwKHBpZCA9PiAocGlkID4gaWR4ID8gcGlkIC0gMSA6IHBpZCkpLFxuICAgIGNsaWNrZWQ6IGxheWVyVG9SZW1vdmUuaXNMYXllckhvdmVyZWQoY2xpY2tlZCkgPyB1bmRlZmluZWQgOiBjbGlja2VkLFxuICAgIGhvdmVySW5mbzogbGF5ZXJUb1JlbW92ZS5pc0xheWVySG92ZXJlZChob3ZlckluZm8pID8gdW5kZWZpbmVkIDogaG92ZXJJbmZvLFxuICAgIHNwbGl0TWFwczogbmV3TWFwc1xuICAgIC8vIFRPRE86IHVwZGF0ZSBmaWx0ZXJzLCBjcmVhdGUgaGVscGVyIHRvIHJlbW92ZSBsYXllciBmb3JtIGZpbHRlciAocmVtb3ZlIGxheWVyaWQgYW5kIGRhdGFpZCkgaWYgbWFwcGVkXG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihuZXdTdGF0ZSk7XG59O1xuXG4vKipcbiAqIGR1cGxpY2F0ZSBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGR1cGxpY2F0ZUxheWVyVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7aWR4fTogVmlzU3RhdGVBY3Rpb25zLkR1cGxpY2F0ZUxheWVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCB7bGF5ZXJzfSA9IHN0YXRlO1xuICBjb25zdCBvcmlnaW5hbCA9IHN0YXRlLmxheWVyc1tpZHhdO1xuICBjb25zdCBvcmlnaW5hbExheWVyT3JkZXJJZHggPSBzdGF0ZS5sYXllck9yZGVyLmZpbmRJbmRleChpID0+IGkgPT09IGlkeCk7XG5cbiAgaWYgKCFvcmlnaW5hbCkge1xuICAgIENvbnNvbGUud2FybihgbGF5ZXIuJHtpZHh9IGlzIHVuZGVmaW5lZGApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsZXQgbmV3TGFiZWwgPSBgQ29weSBvZiAke29yaWdpbmFsLmNvbmZpZy5sYWJlbH1gO1xuICBsZXQgcG9zdGZpeCA9IDA7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb29wLWZ1bmNcbiAgd2hpbGUgKGxheWVycy5maW5kKGwgPT4gbC5jb25maWcubGFiZWwgPT09IG5ld0xhYmVsKSkge1xuICAgIG5ld0xhYmVsID0gYENvcHkgb2YgJHtvcmlnaW5hbC5jb25maWcubGFiZWx9ICR7Kytwb3N0Zml4fWA7XG4gIH1cblxuICAvLyBjb2xsZWN0IGxheWVyIGNvbmZpZyBmcm9tIG9yaWdpbmFsXG4gIGNvbnN0IGxvYWRlZExheWVyID0gc2VyaWFsaXplTGF5ZXIob3JpZ2luYWwpO1xuXG4gIC8vIGFzc2lnbiBuZXcgaWQgYW5kIGxhYmVsIHRvIGNvcGllZCBsYXllclxuICBpZiAoIWxvYWRlZExheWVyLmNvbmZpZykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsb2FkZWRMYXllci5jb25maWcubGFiZWwgPSBuZXdMYWJlbDtcbiAgbG9hZGVkTGF5ZXIuaWQgPSBnZW5lcmF0ZUhhc2hJZChMQVlFUl9JRF9MRU5HVEgpO1xuXG4gIC8vIGFkZCBsYXllciB0byBzdGF0ZVxuICBsZXQgbmV4dFN0YXRlID0gYWRkTGF5ZXJVcGRhdGVyKHN0YXRlLCB7Y29uZmlnOiBsb2FkZWRMYXllcn0pO1xuXG4gIC8vIG5ldyBhZGRlZCBsYXllciBhcmUgYXQgdGhlIGVuZCwgbW92ZSBpdCB0byBiZSBvbiB0b3Agb2Ygb3JpZ2luYWwgbGF5ZXJcbiAgY29uc3QgbmV3TGF5ZXJPcmRlcklkeCA9IG5leHRTdGF0ZS5sYXllck9yZGVyLmxlbmd0aCAtIDE7XG4gIGNvbnN0IG5ld0xheWVyT3JkZXIgPSBhcnJheUluc2VydChcbiAgICBuZXh0U3RhdGUubGF5ZXJPcmRlci5zbGljZSgwLCBuZXdMYXllck9yZGVySWR4KSxcbiAgICBvcmlnaW5hbExheWVyT3JkZXJJZHgsXG4gICAgbmV3TGF5ZXJPcmRlcklkeFxuICApO1xuXG4gIG5leHRTdGF0ZSA9IHtcbiAgICAuLi5uZXh0U3RhdGUsXG4gICAgbGF5ZXJPcmRlcjogbmV3TGF5ZXJPcmRlclxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVBbmltYXRpb25Eb21haW4obmV4dFN0YXRlKTtcbn07XG5cbi8qKlxuICogUmVvcmRlciBsYXllclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlb3JkZXJMYXllclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge29yZGVyfTogVmlzU3RhdGVBY3Rpb25zLlJlb3JkZXJMYXllclVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsYXllck9yZGVyOiBvcmRlclxufSk7XG5cbi8qKlxuICogUmVtb3ZlIGEgZGF0YXNldCBhbmQgYWxsIGxheWVycywgZmlsdGVycywgdG9vbHRpcCBjb25maWdzIHRoYXQgYmFzZWQgb24gaXRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVEYXRhc2V0VXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SZW1vdmVEYXRhc2V0VXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICAvLyBleHRyYWN0IGRhdGFzZXQga2V5XG4gIGNvbnN0IHtkYXRhSWQ6IGRhdGFzZXRLZXl9ID0gYWN0aW9uO1xuICBjb25zdCB7ZGF0YXNldHN9ID0gc3RhdGU7XG5cbiAgLy8gY2hlY2sgaWYgZGF0YXNldCBpcyBwcmVzZW50XG4gIGlmICghZGF0YXNldHNbZGF0YXNldEtleV0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICBjb25zdCB7XG4gICAgbGF5ZXJzLFxuICAgIGRhdGFzZXRzOiB7W2RhdGFzZXRLZXldOiBkYXRhc2V0LCAuLi5uZXdEYXRhc2V0c31cbiAgfSA9IHN0YXRlO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5cbiAgY29uc3QgaW5kZXhlcyA9IGxheWVycy5yZWR1Y2UoKGxpc3RPZkluZGV4ZXMsIGxheWVyLCBpbmRleCkgPT4ge1xuICAgIGlmIChsYXllci5jb25maWcuZGF0YUlkID09PSBkYXRhc2V0S2V5KSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsaXN0T2ZJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdE9mSW5kZXhlcztcbiAgfSwgW10pO1xuXG4gIC8vIHJlbW92ZSBsYXllcnMgYW5kIGRhdGFzZXRzXG4gIGNvbnN0IHtuZXdTdGF0ZX0gPSBpbmRleGVzLnJlZHVjZShcbiAgICAoe25ld1N0YXRlOiBjdXJyZW50U3RhdGUsIGluZGV4Q291bnRlcn0sIGlkeCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gaWR4IC0gaW5kZXhDb3VudGVyO1xuICAgICAgY3VycmVudFN0YXRlID0gcmVtb3ZlTGF5ZXJVcGRhdGVyKGN1cnJlbnRTdGF0ZSwge2lkeDogY3VycmVudEluZGV4fSk7XG4gICAgICBpbmRleENvdW50ZXIrKztcbiAgICAgIHJldHVybiB7bmV3U3RhdGU6IGN1cnJlbnRTdGF0ZSwgaW5kZXhDb3VudGVyfTtcbiAgICB9LFxuICAgIHtuZXdTdGF0ZTogey4uLnN0YXRlLCBkYXRhc2V0czogbmV3RGF0YXNldHN9LCBpbmRleENvdW50ZXI6IDB9XG4gICk7XG5cbiAgLy8gcmVtb3ZlIGZpbHRlcnNcbiAgY29uc3QgZmlsdGVycyA9IHN0YXRlLmZpbHRlcnMuZmlsdGVyKGZpbHRlciA9PiAhZmlsdGVyLmRhdGFJZC5pbmNsdWRlcyhkYXRhc2V0S2V5KSk7XG5cbiAgLy8gdXBkYXRlIGludGVyYWN0aW9uQ29uZmlnXG4gIGxldCB7aW50ZXJhY3Rpb25Db25maWd9ID0gc3RhdGU7XG4gIGNvbnN0IHt0b29sdGlwfSA9IGludGVyYWN0aW9uQ29uZmlnO1xuICBpZiAodG9vbHRpcCkge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdG9vbHRpcDtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgIGNvbnN0IHtbZGF0YXNldEtleV06IGZpZWxkcywgLi4uZmllbGRzVG9TaG93fSA9IGNvbmZpZy5maWVsZHNUb1Nob3c7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgIGludGVyYWN0aW9uQ29uZmlnID0ge1xuICAgICAgLi4uaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICB0b29sdGlwOiB7Li4udG9vbHRpcCwgY29uZmlnOiB7Li4uY29uZmlnLCBmaWVsZHNUb1Nob3d9fVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gey4uLm5ld1N0YXRlLCBmaWx0ZXJzLCBpbnRlcmFjdGlvbkNvbmZpZ307XG59O1xuXG4vKipcbiAqIHVwZGF0ZSBsYXllciBibGVuZGluZyBtb2RlXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuVXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsYXllckJsZW5kaW5nOiBhY3Rpb24ubW9kZVxufSk7XG5cbi8qKlxuICogRGlzcGxheSBkYXRhc2V0IHRhYmxlIGluIGEgbW9kYWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzaG93RGF0YXNldFRhYmxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TaG93RGF0YXNldFRhYmxlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRpbmdEYXRhc2V0OiBhY3Rpb24uZGF0YUlkXG4gIH07XG59O1xuXG4vKipcbiAqIEFkZCBjdXN0b20gY29sb3IgZm9yIGRhdGFzZXRzIGFuZCBsYXllcnNcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVUYWJsZUNvbG9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5VcGRhdGVEYXRhc2V0Q29sb3JVcGRhdGVyXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhSWQsIG5ld0NvbG9yfSA9IGFjdGlvbjtcbiAgY29uc3Qge2RhdGFzZXRzfSA9IHN0YXRlO1xuXG4gIGlmIChpc1JnYkNvbG9yKG5ld0NvbG9yKSkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICBleGlzdGluZy51cGRhdGVUYWJsZUNvbG9yKG5ld0NvbG9yKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRhdGFzZXRzOiB7XG4gICAgICAgIC4uLnN0YXRlLmRhdGFzZXRzLFxuICAgICAgICBbZGF0YUlkXTogY29weVRhYmxlQW5kVXBkYXRlKGV4aXN0aW5nLCB7fSlcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbi8qKlxuICogcmVzZXQgdmlzU3RhdGUgdG8gaW5pdGlhbCBTdGF0ZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnVXBkYXRlciA9IChzdGF0ZTogVmlzU3RhdGUpOiBWaXNTdGF0ZSA9PiAoe1xuICAuLi5JTklUSUFMX1ZJU19TVEFURSxcbiAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxufSk7XG5cbi8qKlxuICogUHJvcGFnYXRlIGB2aXNTdGF0ZWAgcmVkdWNlciB3aXRoIGEgbmV3IGNvbmZpZ3VyYXRpb24uIEN1cnJlbnQgY29uZmlnIHdpbGwgYmUgb3ZlcnJpZGUuXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge1xuICAgIHBheWxvYWQ6IHtjb25maWcgPSB7dmVyc2lvbjogJyd9LCBvcHRpb25zID0ge319XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogVmlzU3RhdGUgPT4ge1xuICBpZiAoIWNvbmZpZy52aXNTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IHtrZWVwRXhpc3RpbmdDb25maWd9ID0gb3B0aW9ucztcblxuICAvLyByZXNldCBjb25maWcgaWYga2VlcEV4aXN0aW5nQ29uZmlnIGlzIGZhbHN5XG4gIGxldCBtZXJnZWRTdGF0ZSA9ICFrZWVwRXhpc3RpbmdDb25maWcgPyByZXNldE1hcENvbmZpZ1VwZGF0ZXIoc3RhdGUpIDogc3RhdGU7XG4gIGZvciAoY29uc3QgbWVyZ2VyIG9mIHN0YXRlLm1lcmdlcnMpIHtcbiAgICBpZiAoaXNWYWxpZE1lcmdlcihtZXJnZXIpICYmIGNvbmZpZy52aXNTdGF0ZVttZXJnZXIucHJvcF0pIHtcbiAgICAgIG1lcmdlZFN0YXRlID0gbWVyZ2VyLm1lcmdlKG1lcmdlZFN0YXRlLCBjb25maWcudmlzU3RhdGVbbWVyZ2VyLnByb3BdLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkU3RhdGU7XG59O1xuXG4vKipcbiAqIFRyaWdnZXIgbGF5ZXIgaG92ZXIgZXZlbnQgd2l0aCBob3ZlcmVkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxheWVySG92ZXJVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLk9uTGF5ZXJIb3ZlclVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBob3ZlckluZm86IGFjdGlvbi5pbmZvXG59KTtcblxuLyogZXNsaW50LWVuYWJsZSBtYXgtc3RhdGVtZW50cyAqL1xuXG4vKipcbiAqIFVwZGF0ZSBgaW50ZXJhY3Rpb25Db25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJhY3Rpb25Db25maWdDaGFuZ2VVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkludGVyYWN0aW9uQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7Y29uZmlnfSA9IGFjdGlvbjtcblxuICBjb25zdCBpbnRlcmFjdGlvbkNvbmZpZyA9IHtcbiAgICAuLi5zdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAuLi57W2NvbmZpZy5pZF06IGNvbmZpZ31cbiAgfTtcblxuICAvLyBEb24ndCBlbmFibGUgdG9vbHRpcCBhbmQgYnJ1c2ggYXQgdGhlIHNhbWUgdGltZVxuICAvLyBidXQgY29vcmRpbmF0ZXMgY2FuIGJlIHNob3duIGF0IGFsbCB0aW1lXG4gIGNvbnN0IGNvbnRyYWRpY3QgPSBbJ2JydXNoJywgJ3Rvb2x0aXAnXTtcblxuICBpZiAoXG4gICAgY29udHJhZGljdC5pbmNsdWRlcyhjb25maWcuaWQpICYmXG4gICAgY29uZmlnLmVuYWJsZWQgJiZcbiAgICAhc3RhdGUuaW50ZXJhY3Rpb25Db25maWdbY29uZmlnLmlkXS5lbmFibGVkXG4gICkge1xuICAgIC8vIG9ubHkgZW5hYmxlIG9uZSBpbnRlcmFjdGlvbiBhdCBhIHRpbWVcbiAgICBjb250cmFkaWN0LmZvckVhY2goayA9PiB7XG4gICAgICBpZiAoayAhPT0gY29uZmlnLmlkKSB7XG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnW2tdID0gey4uLmludGVyYWN0aW9uQ29uZmlnW2tdLCBlbmFibGVkOiBmYWxzZX07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZ1xuICB9O1xuXG4gIGlmIChjb25maWcuaWQgPT09ICdnZW9jb2RlcicgJiYgIWNvbmZpZy5lbmFibGVkKSB7XG4gICAgcmV0dXJuIHJlbW92ZURhdGFzZXRVcGRhdGVyKG5ld1N0YXRlLCB7ZGF0YUlkOiAnZ2VvY29kZXJfZGF0YXNldCd9KTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuLyoqXG4gKiBUcmlnZ2VyIGxheWVyIGNsaWNrIGV2ZW50IHdpdGggY2xpY2tlZCBvYmplY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsYXllckNsaWNrVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5PbkxheWVyQ2xpY2tVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbW91c2VQb3M6IHN0YXRlLmludGVyYWN0aW9uQ29uZmlnLmNvb3JkaW5hdGUuZW5hYmxlZFxuICAgID8ge1xuICAgICAgICAuLi5zdGF0ZS5tb3VzZVBvcyxcbiAgICAgICAgcGlubmVkOiBzdGF0ZS5tb3VzZVBvcy5waW5uZWQgPyBudWxsIDogY2xvbmVEZWVwKHN0YXRlLm1vdXNlUG9zKVxuICAgICAgfVxuICAgIDogc3RhdGUubW91c2VQb3MsXG4gIGNsaWNrZWQ6IGFjdGlvbi5pbmZvICYmIGFjdGlvbi5pbmZvLnBpY2tlZCA/IGFjdGlvbi5pbmZvIDogbnVsbFxufSk7XG5cbi8qKlxuICogVHJpZ2dlciBtYXAgY2xpY2sgZXZlbnQsIHVuc2VsZWN0IGNsaWNrZWQgb2JqZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwQ2xpY2tVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLk9uTWFwQ2xpY2tVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgY2xpY2tlZDogbnVsbFxuICB9O1xufTtcblxuLyoqXG4gKiBUcmlnZ2VyIG1hcCBtb3ZlIGV2ZW50XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbW91c2VNb3ZlVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZXZ0fTogVmlzU3RhdGVBY3Rpb25zLk9uTW91c2VNb3ZlVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBpZiAoT2JqZWN0LnZhbHVlcyhzdGF0ZS5pbnRlcmFjdGlvbkNvbmZpZykuc29tZShjb25maWcgPT4gY29uZmlnLmVuYWJsZWQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbW91c2VQb3M6IHtcbiAgICAgICAgLi4uc3RhdGUubW91c2VQb3MsXG4gICAgICAgIG1vdXNlUG9zaXRpb246IFsuLi5ldnQucG9pbnRdLFxuICAgICAgICBjb29yZGluYXRlOiBbLi4uZXZ0LmxuZ0xhdF1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcbi8qKlxuICogVG9nZ2xlIHZpc2liaWxpdHkgb2YgYSBsYXllciBmb3IgYSBzcGxpdCBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PlxuICBzdGF0ZS5zcGxpdE1hcHMgJiYgc3RhdGUuc3BsaXRNYXBzLmxlbmd0aCA9PT0gMFxuICAgID8ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgLy8gbWF5YmUgd2Ugc2hvdWxkIHVzZSBhbiBhcnJheSB0byBzdG9yZSBzdGF0ZSBmb3IgYSBzaW5nbGUgbWFwIGFzIHdlbGxcbiAgICAgICAgLy8gaWYgY3VycmVudCBtYXBzIGxlbmd0aCBpcyBlcXVhbCB0byAwIGl0IG1lYW5zIHRoYXQgd2UgYXJlIGFib3V0IHRvIHNwbGl0IHRoZSB2aWV3XG4gICAgICAgIHNwbGl0TWFwczogY29tcHV0ZVNwbGl0TWFwTGF5ZXJzKHN0YXRlLmxheWVycylcbiAgICAgIH1cbiAgICA6IGNsb3NlU3BlY2lmaWNNYXBBdEluZGV4KHN0YXRlLCBhY3Rpb24pO1xuXG4vKipcbiAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9mIGEgbGF5ZXIgaW4gYSBzcGxpdCBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVMYXllckZvck1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge21hcEluZGV4LCBsYXllcklkfTogVmlzU3RhdGVBY3Rpb25zLlRvZ2dsZUxheWVyRm9yTWFwVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCB7c3BsaXRNYXBzfSA9IHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3BsaXRNYXBzOiBzcGxpdE1hcHMubWFwKChzbSwgaSkgPT5cbiAgICAgIGkgPT09IG1hcEluZGV4XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uc3BsaXRNYXBzW2ldLFxuICAgICAgICAgICAgbGF5ZXJzOiB7XG4gICAgICAgICAgICAgIC4uLnNwbGl0TWFwc1tpXS5sYXllcnMsXG4gICAgICAgICAgICAgIC8vIGlmIGxheWVySWQgbm90IGluIGxheWVycywgc2V0IGl0IHRvIHZpc2libGVcbiAgICAgICAgICAgICAgW2xheWVySWRdOiAhc3BsaXRNYXBzW2ldLmxheWVyc1tsYXllcklkXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgOiBzbVxuICAgIClcbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIG5ldyBkYXRhc2V0IHRvIGB2aXNTdGF0ZWAsIHdpdGggb3B0aW9uIHRvIGxvYWQgYSBtYXAgY29uZmlnIGFsb25nIHdpdGggdGhlIGRhdGFzZXRzXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cyAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBjb25zdCB1cGRhdGVWaXNEYXRhVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5VcGRhdGVWaXNEYXRhVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICAvLyBkYXRhc2V0cyBjYW4gYmUgYSBzaW5nbGUgZGF0YSBlbnRyaWVzIG9yIGFuIGFycmF5IG9mIG11bHRpcGxlIGRhdGEgZW50cmllc1xuICBjb25zdCB7Y29uZmlnLCBvcHRpb25zfSA9IGFjdGlvbjtcbiAgY29uc3QgZGF0YXNldHMgPSB0b0FycmF5KGFjdGlvbi5kYXRhc2V0cyk7XG5cbiAgY29uc3QgbmV3RGF0YUVudHJpZXMgPSBkYXRhc2V0cy5yZWR1Y2UoXG4gICAgKGFjY3UsIHtpbmZvID0ge30sIC4uLnJlc3R9ID0ge30pID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKGNyZWF0ZU5ld0RhdGFFbnRyeSh7aW5mbywgLi4ucmVzdH0sIHN0YXRlLmRhdGFzZXRzKSB8fCB7fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIGNvbnN0IGRhdGFFbXB0eSA9IE9iamVjdC5rZXlzKG5ld0RhdGFFbnRyaWVzKS5sZW5ndGggPCAxO1xuXG4gIC8vIGFwcGx5IGNvbmZpZyBpZiBwYXNzZWQgZnJvbSBhY3Rpb25cbiAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IGNvbmZpZ1xuICAgID8gcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIoc3RhdGUsIHtcbiAgICAgICAgcGF5bG9hZDoge2NvbmZpZywgb3B0aW9uc31cbiAgICAgIH0pXG4gICAgOiBzdGF0ZTtcblxuICBsZXQgbWVyZ2VkU3RhdGUgPSB7XG4gICAgLi4ucHJldmlvdXNTdGF0ZSxcbiAgICBkYXRhc2V0czoge1xuICAgICAgLi4ucHJldmlvdXNTdGF0ZS5kYXRhc2V0cyxcbiAgICAgIC4uLm5ld0RhdGFFbnRyaWVzXG4gICAgfVxuICB9O1xuXG4gIC8vIG1lcmdlIHN0YXRlIHdpdGggY29uZmlnIHRvIGJlIG1lcmdlZFxuICBmb3IgKGNvbnN0IG1lcmdlciBvZiBtZXJnZWRTdGF0ZS5tZXJnZXJzKSB7XG4gICAgaWYgKGlzVmFsaWRNZXJnZXIobWVyZ2VyKSAmJiBtZXJnZXIudG9NZXJnZVByb3AgJiYgbWVyZ2VkU3RhdGVbbWVyZ2VyLnRvTWVyZ2VQcm9wXSkge1xuICAgICAgY29uc3QgdG9NZXJnZSA9IG1lcmdlZFN0YXRlW21lcmdlci50b01lcmdlUHJvcF07XG4gICAgICBtZXJnZWRTdGF0ZVttZXJnZXIudG9NZXJnZVByb3BdID0gSU5JVElBTF9WSVNfU1RBVEVbbWVyZ2VyLnRvTWVyZ2VQcm9wXTtcbiAgICAgIG1lcmdlZFN0YXRlID0gbWVyZ2VyLm1lcmdlKG1lcmdlZFN0YXRlLCB0b01lcmdlKTtcbiAgICB9XG4gIH1cblxuICBsZXQgbmV3TGF5ZXJzID0gIWRhdGFFbXB0eVxuICAgID8gbWVyZ2VkU3RhdGUubGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCAmJiBsLmNvbmZpZy5kYXRhSWQgaW4gbmV3RGF0YUVudHJpZXMpXG4gICAgOiBbXTtcblxuICBpZiAoIW5ld0xheWVycy5sZW5ndGggJiYgKG9wdGlvbnMgfHwge30pLmF1dG9DcmVhdGVMYXllcnMgIT09IGZhbHNlKSB7XG4gICAgLy8gbm8gbGF5ZXIgbWVyZ2VkLCBmaW5kIGRlZmF1bHRzXG4gICAgY29uc3QgcmVzdWx0ID0gYWRkRGVmYXVsdExheWVycyhtZXJnZWRTdGF0ZSwgbmV3RGF0YUVudHJpZXMpO1xuICAgIG1lcmdlZFN0YXRlID0gcmVzdWx0LnN0YXRlO1xuICAgIG5ld0xheWVycyA9IHJlc3VsdC5uZXdMYXllcnM7XG4gIH1cblxuICBpZiAobWVyZ2VkU3RhdGUuc3BsaXRNYXBzLmxlbmd0aCkge1xuICAgIC8vIGlmIG1hcCBpcyBzcGxpdCwgYWRkIG5ldyBsYXllcnMgdG8gc3BsaXRNYXBzXG4gICAgbmV3TGF5ZXJzID0gbWVyZ2VkU3RhdGUubGF5ZXJzLmZpbHRlcihcbiAgICAgIGwgPT4gbC5jb25maWcuZGF0YUlkICYmIGwuY29uZmlnLmRhdGFJZCBpbiBuZXdEYXRhRW50cmllc1xuICAgICk7XG4gICAgbWVyZ2VkU3RhdGUgPSB7XG4gICAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAgIHNwbGl0TWFwczogYWRkTmV3TGF5ZXJzVG9TcGxpdE1hcChtZXJnZWRTdGF0ZS5zcGxpdE1hcHMsIG5ld0xheWVycylcbiAgICB9O1xuICB9XG5cbiAgLy8gaWYgbm8gdG9vbHRpcHMgbWVyZ2VkIGFkZCBkZWZhdWx0IHRvb2x0aXBzXG4gIE9iamVjdC5rZXlzKG5ld0RhdGFFbnRyaWVzKS5mb3JFYWNoKGRhdGFJZCA9PiB7XG4gICAgY29uc3QgdG9vbHRpcEZpZWxkcyA9IG1lcmdlZFN0YXRlLmludGVyYWN0aW9uQ29uZmlnLnRvb2x0aXAuY29uZmlnLmZpZWxkc1RvU2hvd1tkYXRhSWRdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0b29sdGlwRmllbGRzKSB8fCAhdG9vbHRpcEZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIG1lcmdlZFN0YXRlID0gYWRkRGVmYXVsdFRvb2x0aXBzKG1lcmdlZFN0YXRlLCBuZXdEYXRhRW50cmllc1tkYXRhSWRdKTtcbiAgICB9XG4gIH0pO1xuXG4gIGxldCB1cGRhdGVkU3RhdGUgPSB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGEoXG4gICAgbWVyZ2VkU3RhdGUsXG4gICAgZGF0YUVtcHR5ID8gT2JqZWN0LmtleXMobWVyZ2VkU3RhdGUuZGF0YXNldHMpIDogT2JqZWN0LmtleXMobmV3RGF0YUVudHJpZXMpLFxuICAgIHVuZGVmaW5lZFxuICApO1xuXG4gIC8vIHJlZ2lzdGVyIGxheWVyIGFuaW1hdGlvbiBkb21haW4sXG4gIC8vIG5lZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGxheWVyIGRhdGEgaXMgY2FsY3VsYXRlZFxuICB1cGRhdGVkU3RhdGUgPSB1cGRhdGVBbmltYXRpb25Eb21haW4odXBkYXRlZFN0YXRlKTtcblxuICByZXR1cm4gdXBkYXRlZFN0YXRlO1xufTtcbi8qIGVzbGludC1lbmFibGUgbWF4LXN0YXRlbWVudHMgKi9cblxuLyoqXG4gKiBSZW5hbWUgYW4gZXhpc3RpbmcgZGF0YXNldCBpbiBgdmlzU3RhdGVgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuYW1lRGF0YXNldFVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuUmVuYW1lRGF0YXNldFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3Qge2RhdGFJZCwgbGFiZWx9ID0gYWN0aW9uO1xuICBjb25zdCB7ZGF0YXNldHN9ID0gc3RhdGU7XG4gIGNvbnN0IGV4aXN0aW5nID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gZXhpc3RpbmdcbiAgICA/IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGRhdGFzZXRzOiB7XG4gICAgICAgICAgLi4uZGF0YXNldHMsXG4gICAgICAgICAgW2RhdGFJZF06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA6IC8vIE5vLW9wIGlmIHRoZSBkYXRhc2V0IGRvZXNuJ3QgZXhpc3RcbiAgICAgIHN0YXRlO1xufVxuXG4vKipcbiAqIFdoZW4gYSB1c2VyIGNsaWNrcyBvbiB0aGUgc3BlY2lmaWMgbWFwIGNsb3NpbmcgaWNvblxuICogdGhlIGFwcGxpY2F0aW9uIHdpbGwgY2xvc2UgdGhlIHNlbGVjdGVkIG1hcFxuICogYW5kIHdpbGwgbWVyZ2UgdGhlIHJlbWFpbmluZyBvbmUgd2l0aCB0aGUgZ2xvYmFsIHN0YXRlXG4gKiBUT0RPOiBpIHRoaW5rIGluIHRoZSBmdXR1cmUgdGhpcyBhY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBtZXJnZSBtYXAgbGF5ZXJzIHdpdGggZ2xvYmFsIHNldHRpbmdzXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhdGUgYHZpc1N0YXRlYFxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiBhY3Rpb25cbiAqIEByZXR1cm5zIHtPYmplY3R9IG5leHRTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VTcGVjaWZpY01hcEF0SW5kZXgoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIC8vIHJldHJpZXZlIGxheWVycyBtZXRhIGRhdGEgZnJvbSB0aGUgcmVtYWluaW5nIG1hcCB0aGF0IHdlIG5lZWQgdG8ga2VlcFxuICBjb25zdCBpbmRleFRvUmV0cmlldmUgPSAxIC0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IG1hcExheWVycyA9IHN0YXRlLnNwbGl0TWFwc1tpbmRleFRvUmV0cmlldmVdLmxheWVycztcbiAgY29uc3Qge2xheWVyc30gPSBzdGF0ZTtcblxuICAvLyB1cGRhdGUgbGF5ZXIgdmlzaWJpbGl0eVxuICBjb25zdCBuZXdMYXllcnMgPSBsYXllcnMubWFwKGxheWVyID0+XG4gICAgIW1hcExheWVyc1tsYXllci5pZF0gJiYgbGF5ZXIuY29uZmlnLmlzVmlzaWJsZVxuICAgICAgPyBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICAgICAgLy8gaWYgbGF5ZXIuaWQgaXMgbm90IGluIG1hcExheWVycywgaXQgc2hvdWxkIGJlIGluVmlzaWJsZVxuICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIDogbGF5ZXJcbiAgKTtcblxuICAvLyBkZWxldGUgbWFwXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF5ZXJzOiBuZXdMYXllcnMsXG4gICAgc3BsaXRNYXBzOiBbXVxuICB9O1xufVxuXG4vKipcbiAqIFRyaWdnZXIgZmlsZSBsb2FkaW5nIGRpc3BhdGNoIGBhZGREYXRhVG9NYXBgIGlmIHN1Y2NlZWQsIG9yIGBsb2FkRmlsZXNFcnJgIGlmIGZhaWxlZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTG9hZEZpbGVzVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICBjb25zdCB7ZmlsZXMsIG9uRmluaXNoID0gbG9hZEZpbGVzU3VjY2Vzc30gPSBhY3Rpb247XG4gIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgZmlsZUxvYWRpbmdQcm9ncmVzcyA9IEFycmF5LmZyb20oZmlsZXMpLnJlZHVjZShcbiAgICAoYWNjdSwgZiwgaSkgPT4gbWVyZ2VfKGluaXRpYWxGaWxlTG9hZGluZ1Byb2dyZXNzKGYsIGkpKShhY2N1KSxcbiAgICB7fVxuICApO1xuXG4gIGNvbnN0IGZpbGVMb2FkaW5nID0ge1xuICAgIGZpbGVDYWNoZTogW10sXG4gICAgZmlsZXNUb0xvYWQ6IGZpbGVzLFxuICAgIG9uRmluaXNoXG4gIH07XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gbWVyZ2VfKHtmaWxlTG9hZGluZ1Byb2dyZXNzLCBmaWxlTG9hZGluZ30pKHN0YXRlKTtcblxuICByZXR1cm4gbG9hZE5leHRGaWxlVXBkYXRlcihuZXh0U3RhdGUpO1xufTtcblxuLyoqXG4gKiBTdWNlc3NmdWxseSBsb2FkZWQgb25lIGZpbGUsIG1vdmUgb24gdG8gdGhlIG5leHQgb25lXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVTdGVwU3VjY2Vzc1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuTG9hZEZpbGVTdGVwU3VjY2Vzc0FjdGlvblxuKTogVmlzU3RhdGUge1xuICBpZiAoIXN0YXRlLmZpbGVMb2FkaW5nKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IHtmaWxlTmFtZSwgZmlsZUNhY2hlfSA9IGFjdGlvbjtcbiAgY29uc3Qge2ZpbGVzVG9Mb2FkLCBvbkZpbmlzaH0gPSBzdGF0ZS5maWxlTG9hZGluZztcbiAgY29uc3Qgc3RhdGVXaXRoUHJvZ3Jlc3MgPSB1cGRhdGVGaWxlTG9hZGluZ1Byb2dyZXNzVXBkYXRlcihzdGF0ZSwge1xuICAgIGZpbGVOYW1lLFxuICAgIHByb2dyZXNzOiB7cGVyY2VudDogMSwgbWVzc2FnZTogJ0RvbmUnfVxuICB9KTtcblxuICAvLyBzYXZlIHByb2Nlc3NlZCBmaWxlIHRvIGZpbGVDYWNoZVxuICBjb25zdCBzdGF0ZVdpdGhDYWNoZSA9IHBpY2tfKCdmaWxlTG9hZGluZycpKG1lcmdlXyh7ZmlsZUNhY2hlfSkpKHN0YXRlV2l0aFByb2dyZXNzKTtcblxuICByZXR1cm4gd2l0aFRhc2soXG4gICAgc3RhdGVXaXRoQ2FjaGUsXG4gICAgREVMQVlfVEFTSygyMDApLm1hcChmaWxlc1RvTG9hZC5sZW5ndGggPyBsb2FkTmV4dEZpbGUgOiAoKSA9PiBvbkZpbmlzaChmaWxlQ2FjaGUpKVxuICApO1xufVxuXG4vLyB3aXRoVGFzazxUPihzdGF0ZTogVCwgdGFzazogYW55KTogVFxuXG4vKipcbiAqXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZE5leHRGaWxlVXBkYXRlcihzdGF0ZTogVmlzU3RhdGUpOiBWaXNTdGF0ZSB7XG4gIGlmICghc3RhdGUuZmlsZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3Qge2ZpbGVzVG9Mb2FkfSA9IHN0YXRlLmZpbGVMb2FkaW5nO1xuICBjb25zdCBbZmlsZSwgLi4ucmVtYWluaW5nRmlsZXNUb0xvYWRdID0gZmlsZXNUb0xvYWQ7XG5cbiAgLy8gc2F2ZSBmaWxlc1RvTG9hZCB0byBzdGF0ZVxuICBjb25zdCBuZXh0U3RhdGUgPSBwaWNrXygnZmlsZUxvYWRpbmcnKShtZXJnZV8oe2ZpbGVzVG9Mb2FkOiByZW1haW5pbmdGaWxlc1RvTG9hZH0pKShzdGF0ZSk7XG5cbiAgY29uc3Qgc3RhdGVXaXRoUHJvZ3Jlc3MgPSB1cGRhdGVGaWxlTG9hZGluZ1Byb2dyZXNzVXBkYXRlcihuZXh0U3RhdGUsIHtcbiAgICBmaWxlTmFtZTogZmlsZS5uYW1lLFxuICAgIHByb2dyZXNzOiB7cGVyY2VudDogMCwgbWVzc2FnZTogJ2xvYWRpbmcuLi4nfVxuICB9KTtcblxuICBjb25zdCB7bG9hZGVycywgbG9hZE9wdGlvbnN9ID0gc3RhdGU7XG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBzdGF0ZVdpdGhQcm9ncmVzcyxcbiAgICBtYWtlTG9hZEZpbGVUYXNrKFxuICAgICAgZmlsZSxcbiAgICAgIG5leHRTdGF0ZS5maWxlTG9hZGluZyAmJiBuZXh0U3RhdGUuZmlsZUxvYWRpbmcuZmlsZUNhY2hlLFxuICAgICAgbG9hZGVycyxcbiAgICAgIGxvYWRPcHRpb25zXG4gICAgKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUxvYWRGaWxlVGFzayhmaWxlLCBmaWxlQ2FjaGUsIGxvYWRlcnM6IExvYWRlck9iamVjdFtdID0gW10sIGxvYWRPcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIExPQURfRklMRV9UQVNLKHtmaWxlLCBmaWxlQ2FjaGUsIGxvYWRlcnMsIGxvYWRPcHRpb25zfSkuYmltYXAoXG4gICAgLy8gcHJldHRpZXIgaWdub3JlXG4gICAgLy8gc3VjY2Vzc1xuICAgIGdlbiA9PlxuICAgICAgbmV4dEZpbGVCYXRjaCh7XG4gICAgICAgIGdlbixcbiAgICAgICAgZmlsZU5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgb25GaW5pc2g6IHJlc3VsdCA9PlxuICAgICAgICAgIHByb2Nlc3NGaWxlQ29udGVudCh7XG4gICAgICAgICAgICBjb250ZW50OiByZXN1bHQsXG4gICAgICAgICAgICBmaWxlQ2FjaGVcbiAgICAgICAgICB9KVxuICAgICAgfSksXG5cbiAgICAvLyBlcnJvclxuICAgIGVyciA9PiBsb2FkRmlsZXNFcnIoZmlsZS5uYW1lLCBlcnIpXG4gICk7XG59XG5cbi8qKlxuICpcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzRmlsZUNvbnRlbnRVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3Qge2NvbnRlbnQsIGZpbGVDYWNoZX0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBzdGF0ZVdpdGhQcm9ncmVzcyA9IHVwZGF0ZUZpbGVMb2FkaW5nUHJvZ3Jlc3NVcGRhdGVyKHN0YXRlLCB7XG4gICAgZmlsZU5hbWU6IGNvbnRlbnQuZmlsZU5hbWUsXG4gICAgcHJvZ3Jlc3M6IHtwZXJjZW50OiAxLCBtZXNzYWdlOiAncHJvY2Vzc2luZy4uLid9XG4gIH0pO1xuXG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBzdGF0ZVdpdGhQcm9ncmVzcyxcbiAgICBQUk9DRVNTX0ZJTEVfREFUQSh7Y29udGVudCwgZmlsZUNhY2hlfSkuYmltYXAoXG4gICAgICByZXN1bHQgPT4gbG9hZEZpbGVTdGVwU3VjY2Vzcyh7ZmlsZU5hbWU6IGNvbnRlbnQuZmlsZU5hbWUsIGZpbGVDYWNoZTogcmVzdWx0fSksXG4gICAgICBlcnIgPT4gbG9hZEZpbGVzRXJyKGNvbnRlbnQuZmlsZU5hbWUsIGVycilcbiAgICApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVByb2dyZXNzKHByZXZQcm9ncmVzcyA9IHt9LCBwcm9ncmVzcykge1xuICAvLyBUaGlzIGhhcHBlbnMgd2hlbiByZWNlaXZpbmcgcXVlcnkgbWV0YWRhdGEgb3Igb3RoZXIgY2FzZXMgd2UgZG9uJ3RcbiAgLy8gaGF2ZSBhbiB1cGRhdGUgZm9yIHRoZSB1c2VyLlxuICBpZiAoIXByb2dyZXNzIHx8ICFwcm9ncmVzcy5wZXJjZW50KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwZXJjZW50OiBwcm9ncmVzcy5wZXJjZW50XG4gIH07XG59XG5cbi8qKlxuICogZ2V0cyBjYWxsZWQgd2l0aCBwYXlsb2FkID0gQXN5bmNHZW5lcmF0b3I8Pz8/PlxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG5leHRGaWxlQmF0Y2hVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Z2VuLCBmaWxlTmFtZSwgcHJvZ3Jlc3MsIGFjY3VtdWxhdGVkLCBvbkZpbmlzaH1cbiAgfTogVmlzU3RhdGVBY3Rpb25zLk5leHRGaWxlQmF0Y2hVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlV2l0aFByb2dyZXNzID0gdXBkYXRlRmlsZUxvYWRpbmdQcm9ncmVzc1VwZGF0ZXIoc3RhdGUsIHtcbiAgICBmaWxlTmFtZSxcbiAgICBwcm9ncmVzczogcGFyc2VQcm9ncmVzcyhzdGF0ZS5maWxlTG9hZGluZ1Byb2dyZXNzW2ZpbGVOYW1lXSwgcHJvZ3Jlc3MpXG4gIH0pO1xuICByZXR1cm4gd2l0aFRhc2soXG4gICAgc3RhdGVXaXRoUHJvZ3Jlc3MsXG4gICAgVU5XUkFQX1RBU0soZ2VuLm5leHQoKSkuYmltYXAoXG4gICAgICAoe3ZhbHVlLCBkb25lfSkgPT4ge1xuICAgICAgICByZXR1cm4gZG9uZVxuICAgICAgICAgID8gb25GaW5pc2goYWNjdW11bGF0ZWQpXG4gICAgICAgICAgOiBuZXh0RmlsZUJhdGNoKHtcbiAgICAgICAgICAgICAgZ2VuLFxuICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHZhbHVlLnByb2dyZXNzLFxuICAgICAgICAgICAgICBhY2N1bXVsYXRlZDogdmFsdWUsXG4gICAgICAgICAgICAgIG9uRmluaXNoXG4gICAgICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4gbG9hZEZpbGVzRXJyKGZpbGVOYW1lLCBlcnIpXG4gICAgKVxuICApO1xufTtcblxuLyoqXG4gKiBUcmlnZ2VyIGxvYWRpbmcgZmlsZSBlcnJvclxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc0VyclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2Vycm9yLCBmaWxlTmFtZX06IFZpc1N0YXRlQWN0aW9ucy5Mb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSA9PiB7XG4gIC8vIHVwZGF0ZSB1aSB3aXRoIGVycm9yIG1lc3NhZ2VcbiAgQ29uc29sZS53YXJuKGVycm9yKTtcbiAgaWYgKCFzdGF0ZS5maWxlTG9hZGluZykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCB7ZmlsZXNUb0xvYWQsIG9uRmluaXNoLCBmaWxlQ2FjaGV9ID0gc3RhdGUuZmlsZUxvYWRpbmc7XG5cbiAgY29uc3QgbmV4dFN0YXRlID0gdXBkYXRlRmlsZUxvYWRpbmdQcm9ncmVzc1VwZGF0ZXIoc3RhdGUsIHtcbiAgICBmaWxlTmFtZSxcbiAgICBwcm9ncmVzczoge2Vycm9yfVxuICB9KTtcblxuICAvLyBraWNrIG9mZiBuZXh0IGZpbGUgb3IgZmluaXNoXG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBuZXh0U3RhdGUsXG4gICAgREVMQVlfVEFTSygyMDApLm1hcChmaWxlc1RvTG9hZC5sZW5ndGggPyBsb2FkTmV4dEZpbGUgOiAoKSA9PiBvbkZpbmlzaChmaWxlQ2FjaGUpKVxuICApO1xufTtcblxuLyoqXG4gKiBXaGVuIHNlbGVjdCBkYXRhc2V0IGZvciBleHBvcnQsIGFwcGx5IGNwdSBmaWx0ZXIgdG8gc2VsZWN0ZWQgZGF0YXNldFxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFwcGx5Q1BVRmlsdGVyVXBkYXRlciA9IChcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZGF0YUlkfTogVmlzU3RhdGVBY3Rpb25zLkFwcGx5Q1BVRmlsdGVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUgPT4ge1xuICAvLyBhcHBseSBjcHVGaWx0ZXJcbiAgY29uc3QgZGF0YUlkcyA9IHRvQXJyYXkoZGF0YUlkKTtcblxuICByZXR1cm4gZGF0YUlkcy5yZWR1Y2UoKGFjY3UsIGlkKSA9PiBmaWx0ZXJEYXRhc2V0Q1BVKGFjY3UsIGlkKSwgc3RhdGUpO1xufTtcblxuLyoqXG4gKiBVc2VyIGlucHV0IHRvIHVwZGF0ZSB0aGUgaW5mbyBvZiB0aGUgbWFwXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwSW5mb1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuU2V0TWFwSW5mb1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBtYXBJbmZvOiB7XG4gICAgLi4uc3RhdGUubWFwSW5mbyxcbiAgICAuLi5hY3Rpb24uaW5mb1xuICB9XG59KTtcbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHVwZGF0ZSBBbGwgbGF5ZXIgZG9tYWluIGFuZCBsYXllciBkYXRhIG9mIHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREZWZhdWx0TGF5ZXJzKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGRhdGFzZXRzOiBEYXRhc2V0c1xuKToge3N0YXRlOiBWaXNTdGF0ZTsgbmV3TGF5ZXJzOiBMYXllcltdfSB7XG4gIGNvbnN0IGVtcHR5OiBMYXllcltdID0gW107XG4gIGNvbnN0IGRlZmF1bHRMYXllcnMgPSBPYmplY3QudmFsdWVzKGRhdGFzZXRzKS5yZWR1Y2UoKGFjY3UsIGRhdGFzZXQpID0+IHtcbiAgICBjb25zdCBmb3VuZExheWVycyA9IGZpbmREZWZhdWx0TGF5ZXIoZGF0YXNldCwgc3RhdGUubGF5ZXJDbGFzc2VzKTtcbiAgICByZXR1cm4gZm91bmRMYXllcnMgJiYgZm91bmRMYXllcnMubGVuZ3RoID8gYWNjdS5jb25jYXQoZm91bmRMYXllcnMpIDogYWNjdTtcbiAgfSwgZW1wdHkpO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGU6IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbGF5ZXJzOiBbLi4uc3RhdGUubGF5ZXJzLCAuLi5kZWZhdWx0TGF5ZXJzXSxcbiAgICAgIGxheWVyT3JkZXI6IFtcbiAgICAgICAgLy8gcHV0IG5ldyBsYXllcnMgb24gdG9wIG9mIG9sZCBvbmVzXG4gICAgICAgIC4uLmRlZmF1bHRMYXllcnMubWFwKChfLCBpKSA9PiBzdGF0ZS5sYXllcnMubGVuZ3RoICsgaSksXG4gICAgICAgIC4uLnN0YXRlLmxheWVyT3JkZXJcbiAgICAgIF1cbiAgICB9LFxuICAgIG5ld0xheWVyczogZGVmYXVsdExheWVyc1xuICB9O1xufVxuXG4vKipcbiAqIGhlbHBlciBmdW5jdGlvbiB0byBmaW5kIGRlZmF1bHQgdG9vbHRpcHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFzZXRcbiAqIEByZXR1cm5zIHtPYmplY3R9IG5leHRTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGVmYXVsdFRvb2x0aXBzKHN0YXRlLCBkYXRhc2V0KSB7XG4gIGNvbnN0IHRvb2x0aXBGaWVsZHMgPSBkYXRhc2V0Lm1ldGFkYXRhLmlzRHluYW1pY1NwYXRpYWxJbmRleFxuICAgID8ge1tkYXRhc2V0LmlkXTogW119XG4gICAgOiBmaW5kRmllbGRzVG9TaG93KHtcbiAgICAgICAgLi4uZGF0YXNldCxcbiAgICAgICAgbWF4RGVmYXVsdFRvb2x0aXBzOiBzdGF0ZS5tYXhEZWZhdWx0VG9vbHRpcHNcbiAgICAgIH0pO1xuICBjb25zdCBtZXJnZWQgPSB7XG4gICAgLi4uc3RhdGUuaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93LFxuICAgIC4uLnRvb2x0aXBGaWVsZHNcbiAgfTtcblxuICByZXR1cm4gc2V0KFsnaW50ZXJhY3Rpb25Db25maWcnLCAndG9vbHRpcCcsICdjb25maWcnLCAnZmllbGRzVG9TaG93J10sIG1lcmdlZCwgc3RhdGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbEZpbGVMb2FkaW5nUHJvZ3Jlc3MoZmlsZSwgaW5kZXgpIHtcbiAgY29uc3QgZmlsZU5hbWUgPSBmaWxlLm5hbWUgfHwgYFVudGl0bGVkIEZpbGUgJHtpbmRleH1gO1xuICByZXR1cm4ge1xuICAgIFtmaWxlTmFtZV06IHtcbiAgICAgIC8vIHBlcmNlbnQgb2YgY3VycmVudCBmaWxlXG4gICAgICBwZXJjZW50OiAwLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIGVycm9yOiBudWxsXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsZUxvYWRpbmdQcm9ncmVzc1VwZGF0ZXIoc3RhdGUsIHtmaWxlTmFtZSwgcHJvZ3Jlc3N9KSB7XG4gIHJldHVybiBwaWNrXygnZmlsZUxvYWRpbmdQcm9ncmVzcycpKHBpY2tfKGZpbGVOYW1lKShtZXJnZV8ocHJvZ3Jlc3MpKSkoc3RhdGUpO1xufVxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gdXBkYXRlIGxheWVyIGRvbWFpbnMgZm9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBbGxMYXllckRvbWFpbkRhdGEoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgZGF0YUlkOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdXBkYXRlZEZpbHRlcj86IEZpbHRlclxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhSWRzID0gdHlwZW9mIGRhdGFJZCA9PT0gJ3N0cmluZycgPyBbZGF0YUlkXSA6IGRhdGFJZDtcbiAgY29uc3QgbmV3TGF5ZXJzOiBMYXllcltdID0gW107XG4gIGNvbnN0IG5ld0xheWVyRGF0YTogYW55W10gPSBbXTtcblxuICBzdGF0ZS5sYXllcnMuZm9yRWFjaCgob2xkTGF5ZXIsIGkpID0+IHtcbiAgICBpZiAob2xkTGF5ZXIuY29uZmlnLmRhdGFJZCAmJiBkYXRhSWRzLmluY2x1ZGVzKG9sZExheWVyLmNvbmZpZy5kYXRhSWQpKSB7XG4gICAgICAvLyBObyBuZWVkIHRvIHJlY2FsY3VsYXRlIGxheWVyIGRvbWFpbiBpZiBmaWx0ZXIgaGFzIGZpeGVkIGRvbWFpblxuICAgICAgY29uc3QgbmV3TGF5ZXIgPVxuICAgICAgICB1cGRhdGVkRmlsdGVyICYmIHVwZGF0ZWRGaWx0ZXIuZml4ZWREb21haW5cbiAgICAgICAgICA/IG9sZExheWVyXG4gICAgICAgICAgOiBvbGRMYXllci51cGRhdGVMYXllckRvbWFpbihzdGF0ZS5kYXRhc2V0cywgdXBkYXRlZEZpbHRlcik7XG5cbiAgICAgIGNvbnN0IHtsYXllckRhdGEsIGxheWVyfSA9IGNhbGN1bGF0ZUxheWVyRGF0YShuZXdMYXllciwgc3RhdGUsIHN0YXRlLmxheWVyRGF0YVtpXSk7XG5cbiAgICAgIG5ld0xheWVycy5wdXNoKGxheWVyKTtcbiAgICAgIG5ld0xheWVyRGF0YS5wdXNoKGxheWVyRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0xheWVycy5wdXNoKG9sZExheWVyKTtcbiAgICAgIG5ld0xheWVyRGF0YS5wdXNoKHN0YXRlLmxheWVyRGF0YVtpXSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXllcnM6IG5ld0xheWVycyxcbiAgICBsYXllckRhdGE6IG5ld0xheWVyRGF0YVxuICB9O1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihzdGF0ZTogVmlzU3RhdGUpOiBWaXNTdGF0ZSB7XG4gIC8vIG1lcmdlIGFsbCBhbmltYXRhYmxlIGxheWVyIGRvbWFpbiBhbmQgdXBkYXRlIGdsb2JhbCBjb25maWdcbiAgY29uc3QgYW5pbWF0YWJsZUxheWVycyA9IHN0YXRlLmxheWVycy5maWx0ZXIoXG4gICAgbCA9PlxuICAgICAgbC5jb25maWcuaXNWaXNpYmxlICYmXG4gICAgICBsLmNvbmZpZy5hbmltYXRpb24gJiZcbiAgICAgIGwuY29uZmlnLmFuaW1hdGlvbi5lbmFibGVkICYmXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBBcnJheS5pc0FycmF5KGwuYW5pbWF0aW9uRG9tYWluKVxuICApO1xuXG4gIGlmICghYW5pbWF0YWJsZUxheWVycy5sZW5ndGgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgICAgLi4uc3RhdGUuYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICBkb21haW46IG51bGwsXG4gICAgICAgIGRlZmF1bHRUaW1lRm9ybWF0OiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1lcmdlZERvbWFpbjogW251bWJlciwgbnVtYmVyXSA9IGFuaW1hdGFibGVMYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllcikgPT4gW1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgTWF0aC5taW4oYWNjdVswXSwgbGF5ZXIuYW5pbWF0aW9uRG9tYWluWzBdKSxcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIE1hdGgubWF4KGFjY3VbMV0sIGxheWVyLmFuaW1hdGlvbkRvbWFpblsxXSlcbiAgICBdLFxuICAgIFtOdW1iZXIoSW5maW5pdHkpLCAtSW5maW5pdHldXG4gICk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0VGltZVdpZGdldFRpdGxlRm9ybWF0dGVyKG1lcmdlZERvbWFpbik7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhbmltYXRpb25Db25maWc6IHtcbiAgICAgIC4uLnN0YXRlLmFuaW1hdGlvbkNvbmZpZyxcbiAgICAgIGN1cnJlbnRUaW1lOiBpc0luUmFuZ2Uoc3RhdGUuYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lLCBtZXJnZWREb21haW4pXG4gICAgICAgID8gc3RhdGUuYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lXG4gICAgICAgIDogbWVyZ2VkRG9tYWluWzBdLFxuICAgICAgZG9tYWluOiBtZXJnZWREb21haW4sXG4gICAgICBkZWZhdWx0VGltZUZvcm1hdFxuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIHN0YXR1cyBvZiB0aGUgZWRpdG9yXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3Qgc2V0RWRpdG9yTW9kZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge21vZGV9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0RWRpdG9yTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBlZGl0b3I6IHtcbiAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgbW9kZSxcbiAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGxcbiAgfVxufSk7XG5cbi8vIGNvbnN0IGZlYXR1cmVUb0ZpbHRlclZhbHVlID0gKGZlYXR1cmUpID0+ICh7Li4uZmVhdHVyZSwgaWQ6IGZlYXR1cmUuaWR9KTtcbi8qKlxuICogVXBkYXRlIGVkaXRvciBmZWF0dXJlc1xuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZlYXR1cmVzVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZmVhdHVyZXMgPSBbXX06IFZpc1N0YXRlQWN0aW9ucy5TZXRGZWF0dXJlc1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgbGFzdEZlYXR1cmUgPSBmZWF0dXJlcy5sZW5ndGggJiYgZmVhdHVyZXNbZmVhdHVyZXMubGVuZ3RoIC0gMV07XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgZWRpdG9yOiB7XG4gICAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgICAvLyBvbmx5IHNhdmUgbm9uZSBmaWx0ZXIgZmVhdHVyZXMgdG8gZWRpdG9yXG4gICAgICBmZWF0dXJlczogZmVhdHVyZXMuZmlsdGVyKGYgPT4gIWdldEZpbHRlcklkSW5GZWF0dXJlKGYpKSxcbiAgICAgIG1vZGU6IGxhc3RGZWF0dXJlICYmIGxhc3RGZWF0dXJlLnByb3BlcnRpZXMuaXNDbG9zZWQgPyBFRElUT1JfTU9ERVMuRURJVCA6IHN0YXRlLmVkaXRvci5tb2RlXG4gICAgfVxuICB9O1xuXG4gIC8vIFJldHJpZXZlIGV4aXN0aW5nIGZlYXR1cmVcbiAgY29uc3Qge3NlbGVjdGVkRmVhdHVyZX0gPSBzdGF0ZS5lZGl0b3I7XG5cbiAgLy8gSWYgbm8gZmVhdHVyZSBpcyBzZWxlY3RlZCB3ZSBjYW4gc2ltcGx5IHJldHVybiBzaW5jZSBubyBvcGVyYXRpb25zXG4gIGlmICghc2VsZWN0ZWRGZWF0dXJlKSB7XG4gICAgcmV0dXJuIG5ld1N0YXRlO1xuICB9XG5cbiAgLy8gVE9ETzogY2hlY2sgaWYgdGhlIGZlYXR1cmUgaGFzIGNoYW5nZWRcbiAgY29uc3QgZmVhdHVyZSA9IGZlYXR1cmVzLmZpbmQoZiA9PiBmLmlkID09PSBzZWxlY3RlZEZlYXR1cmUuaWQpO1xuXG4gIC8vIGlmIGZlYXR1cmUgaXMgcGFydCBvZiBhIGZpbHRlclxuICBjb25zdCBmaWx0ZXJJZCA9IGZlYXR1cmUgJiYgZ2V0RmlsdGVySWRJbkZlYXR1cmUoZmVhdHVyZSk7XG4gIGlmIChmaWx0ZXJJZCAmJiBmZWF0dXJlKSB7XG4gICAgY29uc3QgZmVhdHVyZVZhbHVlID0gZmVhdHVyZVRvRmlsdGVyVmFsdWUoZmVhdHVyZSwgZmlsdGVySWQpO1xuICAgIGNvbnN0IGZpbHRlcklkeCA9IHN0YXRlLmZpbHRlcnMuZmluZEluZGV4KGZpbCA9PiBmaWwuaWQgPT09IGZpbHRlcklkKTtcbiAgICByZXR1cm4gc2V0RmlsdGVyVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgaWR4OiBmaWx0ZXJJZHgsXG4gICAgICBwcm9wOiAndmFsdWUnLFxuICAgICAgdmFsdWU6IGZlYXR1cmVWYWx1ZVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY3VycmVudCBzZWxlY3RlZCBmZWF0dXJlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTZWxlY3RlZEZlYXR1cmVVcGRhdGVyID0gKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtmZWF0dXJlfTogVmlzU3RhdGVBY3Rpb25zLlNldFNlbGVjdGVkRmVhdHVyZVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBlZGl0b3I6IHtcbiAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgc2VsZWN0ZWRGZWF0dXJlOiBmZWF0dXJlXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBleGlzdGluZyBmZWF0dXJlIGZyb20gZmlsdGVyc1xuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUZlYXR1cmVVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtmZWF0dXJlfTogVmlzU3RhdGVBY3Rpb25zLkRlbGV0ZUZlYXR1cmVVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGlmICghZmVhdHVyZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRvcjoge1xuICAgICAgLi4uc3RhdGUuZWRpdG9yLFxuICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBudWxsXG4gICAgfVxuICB9O1xuXG4gIGlmIChnZXRGaWx0ZXJJZEluRmVhdHVyZShmZWF0dXJlKSkge1xuICAgIGNvbnN0IGZpbHRlcklkeCA9IG5ld1N0YXRlLmZpbHRlcnMuZmluZEluZGV4KGYgPT4gZi5pZCA9PT0gZ2V0RmlsdGVySWRJbkZlYXR1cmUoZmVhdHVyZSkpO1xuXG4gICAgcmV0dXJuIGZpbHRlcklkeCA+IC0xID8gcmVtb3ZlRmlsdGVyVXBkYXRlcihuZXdTdGF0ZSwge2lkeDogZmlsdGVySWR4fSkgOiBuZXdTdGF0ZTtcbiAgfVxuXG4gIC8vIG1vZGlmeSBlZGl0b3Igb2JqZWN0XG4gIGNvbnN0IG5ld0VkaXRvciA9IHtcbiAgICAuLi5zdGF0ZS5lZGl0b3IsXG4gICAgZmVhdHVyZXM6IHN0YXRlLmVkaXRvci5mZWF0dXJlcy5maWx0ZXIoZiA9PiBmLmlkICE9PSBmZWF0dXJlLmlkKSxcbiAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRvcjogbmV3RWRpdG9yXG4gIH07XG59XG5cbi8qKlxuICogVG9nZ2xlIGZlYXR1cmUgYXMgbGF5ZXIgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBwYXlsb2FkOiBWaXNTdGF0ZUFjdGlvbnMuU2V0UG9seWdvbkZpbHRlckxheWVyVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCB7bGF5ZXIsIGZlYXR1cmV9ID0gcGF5bG9hZDtcbiAgY29uc3QgZmlsdGVySWQgPSBnZXRGaWx0ZXJJZEluRmVhdHVyZShmZWF0dXJlKTtcblxuICAvLyBsZXQgbmV3RmlsdGVyID0gbnVsbDtcbiAgbGV0IGZpbHRlcklkeDtcbiAgbGV0IG5ld0xheWVySWQgPSBbbGF5ZXIuaWRdO1xuICBsZXQgbmV3U3RhdGUgPSBzdGF0ZTtcbiAgLy8gSWYgcG9seWdvbiBmaWx0ZXIgYWxyZWFkeSBleGlzdHMsIHdlIG5lZWQgdG8gZmluZCBvdXQgaWYgdGhlIGN1cnJlbnQgbGF5ZXIgaXMgYWxyZWFkeSBpbmNsdWRlZFxuICBpZiAoZmlsdGVySWQpIHtcbiAgICBmaWx0ZXJJZHggPSBzdGF0ZS5maWx0ZXJzLmZpbmRJbmRleChmID0+IGYuaWQgPT09IGZpbHRlcklkKTtcblxuICAgIGlmICghc3RhdGUuZmlsdGVyc1tmaWx0ZXJJZHhdKSB7XG4gICAgICAvLyB3aGF0IGlmIGZpbHRlciBkb2Vzbid0IGV4aXN0Py4uLiBub3QgcG9zc2libGUuXG4gICAgICAvLyBiZWNhdXNlIGZlYXR1cmVzIGluIHRoZSBlZGl0b3IgaXMgcGFzc2VkIGluIGZyb20gZmlsdGVycyBhbmQgZWRpdG9ycy5cbiAgICAgIC8vIGJ1dCB3ZSB3aWxsIG1vdmUgdGhpcyBmZWF0dXJlIGJhY2sgdG8gZWRpdG9yIGp1c3QgaW4gY2FzZVxuICAgICAgY29uc3Qgbm9uZUZpbHRlckZlYXR1cmUgPSB7XG4gICAgICAgIC4uLmZlYXR1cmUsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgICAgICAgZmlsdGVySWQ6IG51bGxcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIC4uLnN0YXRlLmVkaXRvcixcbiAgICAgICAgICBmZWF0dXJlczogWy4uLnN0YXRlLmVkaXRvci5mZWF0dXJlcywgbm9uZUZpbHRlckZlYXR1cmVdLFxuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbm9uZUZpbHRlckZlYXR1cmVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gc3RhdGUuZmlsdGVyc1tmaWx0ZXJJZHhdO1xuICAgIGNvbnN0IHtsYXllcklkID0gW119ID0gZmlsdGVyO1xuICAgIGNvbnN0IGlzTGF5ZXJJbmNsdWRlZCA9IGxheWVySWQuaW5jbHVkZXMobGF5ZXIuaWQpO1xuXG4gICAgbmV3TGF5ZXJJZCA9IGlzTGF5ZXJJbmNsdWRlZFxuICAgICAgPyAvLyBpZiBsYXllciBpcyBpbmNsdWRlZCwgcmVtb3ZlIGl0XG4gICAgICAgIGxheWVySWQuZmlsdGVyKGwgPT4gbCAhPT0gbGF5ZXIuaWQpXG4gICAgICA6IFsuLi5sYXllcklkLCBsYXllci5pZF07XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgd2UgaGF2ZW4ndCBjcmVhdGUgdGhlIHBvbHlnb24gZmlsdGVyLCBjcmVhdGUgaXRcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSBnZW5lcmF0ZVBvbHlnb25GaWx0ZXIoW10sIGZlYXR1cmUpO1xuICAgIGZpbHRlcklkeCA9IHN0YXRlLmZpbHRlcnMubGVuZ3RoO1xuXG4gICAgLy8gYWRkIGZlYXR1cmUsIHJlbW92ZSBmZWF0dXJlIGZyb20gZWlkdG9yXG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGZpbHRlcnM6IFsuLi5zdGF0ZS5maWx0ZXJzLCBuZXdGaWx0ZXJdLFxuICAgICAgZWRpdG9yOiB7XG4gICAgICAgIC4uLnN0YXRlLmVkaXRvcixcbiAgICAgICAgZmVhdHVyZXM6IHN0YXRlLmVkaXRvci5mZWF0dXJlcy5maWx0ZXIoZiA9PiBmLmlkICE9PSBmZWF0dXJlLmlkKSxcbiAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBuZXdGaWx0ZXIudmFsdWVcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHNldEZpbHRlclVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICBpZHg6IGZpbHRlcklkeCxcbiAgICBwcm9wOiAnbGF5ZXJJZCcsXG4gICAgdmFsdWU6IG5ld0xheWVySWRcbiAgfSk7XG59XG5cbi8qKlxuICogQG1lbWJlcm9mIHZpc1N0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRUYWJsZUNvbHVtblVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2RhdGFJZCwgY29sdW1uLCBtb2RlfTogVmlzU3RhdGVBY3Rpb25zLlNvcnRUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgZGF0YXNldCA9IHN0YXRlLmRhdGFzZXRzW2RhdGFJZF07XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBsZXQgc29ydE1vZGUgPSBtb2RlO1xuICBpZiAoIXNvcnRNb2RlKSB7XG4gICAgY29uc3QgY3VycmVudE1vZGUgPSBnZXQoZGF0YXNldCwgWydzb3J0Q29sdW1uJywgY29sdW1uXSk7XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNob3VsZCBiZSBmaXhhYmxlIGluIGEgVFMgZmlsZVxuICAgIHNvcnRNb2RlID0gY3VycmVudE1vZGVcbiAgICAgID8gT2JqZWN0LmtleXMoU09SVF9PUkRFUikuZmluZChtID0+IG0gIT09IGN1cnJlbnRNb2RlKVxuICAgICAgOiBTT1JUX09SREVSLkFTQ0VORElORztcbiAgfVxuXG4gIGNvbnN0IHNvcnRlZCA9IHNvcnREYXRhc2V0QnlDb2x1bW4oZGF0YXNldCwgY29sdW1uLCBzb3J0TW9kZSk7XG4gIHJldHVybiBzZXQoWydkYXRhc2V0cycsIGRhdGFJZF0sIHNvcnRlZCwgc3RhdGUpO1xufVxuXG4vKipcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaW5UYWJsZUNvbHVtblVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2RhdGFJZCwgY29sdW1ufTogVmlzU3RhdGVBY3Rpb25zLlBpblRhYmxlQ29sdW1uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IG5ld0RhdGFzZXQgPSBwaW5UYWJsZUNvbHVtbnMoZGF0YXNldCwgY29sdW1uKTtcblxuICByZXR1cm4gc2V0KFsnZGF0YXNldHMnLCBkYXRhSWRdLCBuZXdEYXRhc2V0LCBzdGF0ZSk7XG59XG5cbi8qKlxuICogQ29weSBjb2x1bW4gY29udGVudCBhcyBzdHJpbmdzXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlQ29sdW1uVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICB7ZGF0YUlkLCBjb2x1bW59OiBWaXNTdGF0ZUFjdGlvbnMuQ29weVRhYmxlQ29sdW1uVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcbiAgaWYgKCFkYXRhc2V0KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IGZpZWxkSWR4ID0gZGF0YXNldC5maWVsZHMuZmluZEluZGV4KGYgPT4gZi5uYW1lID09PSBjb2x1bW4pO1xuICBpZiAoZmllbGRJZHggPCAwKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IHt0eXBlfSA9IGRhdGFzZXQuZmllbGRzW2ZpZWxkSWR4XTtcbiAgY29uc3QgdGV4dCA9IGRhdGFzZXQuZGF0YUNvbnRhaW5lclxuICAgIC5tYXAocm93ID0+IHBhcnNlRmllbGRWYWx1ZShyb3cudmFsdWVBdChmaWVsZElkeCksIHR5cGUpLCB0cnVlKVxuICAgIC5qb2luKCdcXG4nKTtcblxuICBjb3B5KHRleHQpO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVFZGl0b3JWaXNpYmlsaXR5VXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5VXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkaXRvcjoge1xuICAgICAgLi4uc3RhdGUuZWRpdG9yLFxuICAgICAgdmlzaWJsZTogIXN0YXRlLmVkaXRvci52aXNpYmxlXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZ1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAge2lkeCwgY29uZmlnfTogVmlzU3RhdGVBY3Rpb25zLlNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3Qgb2xkRmlsdGVyID0gc3RhdGUuZmlsdGVyc1tpZHhdO1xuICBpZiAoIW9sZEZpbHRlcikge1xuICAgIENvbnNvbGUuZXJyb3IoYGZpbHRlcnMuJHtpZHh9IGlzIHVuZGVmaW5lZGApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBpZiAob2xkRmlsdGVyLnR5cGUgIT09IEZJTFRFUl9UWVBFUy50aW1lUmFuZ2UpIHtcbiAgICBDb25zb2xlLmVycm9yKFxuICAgICAgYHNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWcgY2FuIG9ubHkgYmUgY2FsbGVkIHRvIHVwZGF0ZSBhIHRpbWUgZmlsdGVyLiBjaGVjayBmaWx0ZXIudHlwZSA9PT0gJ3RpbWVSYW5nZSdgXG4gICAgKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCB1cGRhdGVzID0gY2hlY2tUaW1lQ29uZmlnQXJncyhjb25maWcpO1xuXG4gIHJldHVybiBwaWNrXygnZmlsdGVycycpKHN3YXBfKG1lcmdlXyh1cGRhdGVzKShvbGRGaWx0ZXIpKSkoc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBjaGVja1RpbWVDb25maWdBcmdzKGNvbmZpZykge1xuICBjb25zdCBhbGxvd2VkID0gWyd0aW1lRm9ybWF0JywgJ3RpbWV6b25lJ107XG4gIHJldHVybiBPYmplY3Qua2V5cyhjb25maWcpLnJlZHVjZSgoYWNjdSwgcHJvcCkgPT4ge1xuICAgIGlmICghYWxsb3dlZC5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgQ29uc29sZS5lcnJvcihcbiAgICAgICAgYHNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZyB0YWtlcyB0aW1lRm9ybWF0IGFuZC9vciB0aW1lem9uZSBhcyBvcHRpb25zLCBmb3VuZCAke3Byb3B9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiBhY2N1O1xuICAgIH1cblxuICAgIC8vIGhlcmUgd2UgYXJlIE5PVCBjaGVja2luZyBpZiB0aW1lem9uZSBvciB0aW1lRm9ybWF0IGlucHV0IGlzIHZhbGlkXG4gICAgYWNjdVtwcm9wXSA9IGNvbmZpZ1twcm9wXTtcbiAgICByZXR1cm4gYWNjdTtcbiAgfSwge30pO1xufVxuLyoqXG4gKiBVcGRhdGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRMYXllckFuaW1hdGlvblRpbWVDb25maWdVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIHtjb25maWd9OiBWaXNTdGF0ZUFjdGlvbnMuU2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IHVwZGF0ZXMgPSBjaGVja1RpbWVDb25maWdBcmdzKGNvbmZpZyk7XG4gIHJldHVybiBwaWNrXygnYW5pbWF0aW9uQ29uZmlnJykobWVyZ2VfKHVwZGF0ZXMpKShzdGF0ZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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