@kepler.gl/utils 3.1.3 → 3.1.4

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.
@@ -57,8 +57,8 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
57
57
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
58
58
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
59
59
  var _keymirror = _interopRequireDefault(require("keymirror"));
60
- var _lodash = _interopRequireDefault(require("lodash.get"));
61
- var _lodash2 = _interopRequireDefault(require("lodash.isequal"));
60
+ var _get = _interopRequireDefault(require("lodash/get"));
61
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
62
62
  var _d3Array = require("d3-array");
63
63
  var _booleanWithin = _interopRequireDefault(require("@turf/boolean-within"));
64
64
  var _helpers = require("@turf/helpers");
@@ -450,7 +450,7 @@ function getFilterFunction(field, dataId, filter, layers, dataContainer) {
450
450
  if (!field) {
451
451
  return defaultFunc;
452
452
  }
453
- var mappedValue = (0, _lodash["default"])(field, ['filterProps', 'mappedValue']);
453
+ var mappedValue = (0, _get["default"])(field, ['filterProps', 'mappedValue']);
454
454
  var accessor = Array.isArray(mappedValue) ? function (data) {
455
455
  return mappedValue[data.index];
456
456
  } : function (data) {
@@ -791,7 +791,7 @@ function isValidFilterValue(type, value) {
791
791
  return Boolean(value.length);
792
792
  case _constants.FILTER_TYPES.polygon:
793
793
  {
794
- var coordinates = (0, _lodash["default"])(value, ['geometry', 'coordinates']);
794
+ var coordinates = (0, _get["default"])(value, ['geometry', 'coordinates']);
795
795
  return Boolean(value && value.id && coordinates);
796
796
  }
797
797
  default:
@@ -1009,7 +1009,7 @@ var featureToFilterValue = exports.featureToFilterValue = function featureToFilt
1009
1009
  });
1010
1010
  };
1011
1011
  var getFilterIdInFeature = exports.getFilterIdInFeature = function getFilterIdInFeature(f) {
1012
- return (0, _lodash["default"])(f, ['properties', 'filterId']);
1012
+ return (0, _get["default"])(f, ['properties', 'filterId']);
1013
1013
  };
1014
1014
 
1015
1015
  /**
@@ -1104,7 +1104,7 @@ function validateFiltersUpdateDatasets(state) {
1104
1104
  validatedFilter = _datasetIds$reduce.validatedFilter,
1105
1105
  applyToDatasets = _datasetIds$reduce.applyToDatasets,
1106
1106
  augmentedDatasets = _datasetIds$reduce.augmentedDatasets;
1107
- if (validatedFilter && (0, _lodash2["default"])(datasetIds, applyToDatasets)) {
1107
+ if (validatedFilter && (0, _isEqual["default"])(datasetIds, applyToDatasets)) {
1108
1108
  var domain = validatedFilter.domain;
1109
1109
  if (validatedFilter.syncedWithLayerTimeline) {
1110
1110
  var animatableLayers = getAnimatableVisibleLayers(layers);
@@ -1247,4 +1247,4 @@ function getFilterScaledTimeline(filter, animationConfig) {
1247
1247
  }
1248
1248
  return scaleSourceDomainToDestination(animationConfig.domain, filter.domain);
1249
1249
  }
1250
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2xvZGFzaDIiLCJfZDNBcnJheSIsIl9ib29sZWFuV2l0aGluIiwiX2hlbHBlcnMiLCJfZGVjaW1hbCIsIl9jb25zdGFudHMiLCJTY2FsZVV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfaDNKcyIsIl9jb21tb25VdGlscyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfcGxvdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkdXJhdGlvblNlY29uZCIsImV4cG9ydHMiLCJkdXJhdGlvbk1pbnV0ZSIsImR1cmF0aW9uSG91ciIsImR1cmF0aW9uRGF5IiwiZHVyYXRpb25XZWVrIiwiZHVyYXRpb25ZZWFyIiwiVGltZXN0YW1wU3RlcE1hcCIsIm1heCIsInN0ZXAiLCJQT1NJVElWRV9JTkZJTklUWSIsIkZJTFRFUl9VUERBVEVSX1BST1BTIiwia2V5TWlycm9yIiwiZGF0YUlkIiwibmFtZSIsImxheWVySWQiLCJGSUxURVJfQ09NUE9ORU5UUyIsIkZJTFRFUl9UWVBFUyIsInNlbGVjdCIsIm11bHRpU2VsZWN0IiwidGltZVJhbmdlIiwicmFuZ2UiLCJwb2x5Z29uIiwiREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFIiwiaWQiLCJlbmFibGVkIiwiZml4ZWREb21haW4iLCJ2aWV3IiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJzaWRlIiwiaXNBbmltYXRpbmciLCJhbmltYXRpb25XaW5kb3ciLCJBTklNQVRJT05fV0lORE9XIiwiZnJlZSIsInNwZWVkIiwidHlwZSIsImZpZWxkSWR4IiwiZG9tYWluIiwidmFsdWUiLCJwbG90VHlwZSIsIlBMT1RfVFlQRVMiLCJoaXN0b2dyYW0iLCJ5QXhpcyIsImdwdSIsIkZJTFRFUl9JRF9MRU5HVEgiLCJMQVlFUl9GSUxURVJTIiwiZ2V0RGVmYXVsdEZpbHRlciIsIl9yZWYiLCJ1bmRlZmluZWQiLCJ0b0FycmF5IiwiZ2VuZXJhdGVIYXNoSWQiLCJzaG91bGRBcHBseUZpbHRlciIsImRhdGFzZXRJZCIsImRhdGFJZHMiLCJpbmNsdWRlcyIsInZhbGlkYXRlUG9seWdvbkZpbHRlciIsImRhdGFzZXQiLCJsYXllcnMiLCJmYWlsZWQiLCJpc1ZhbGlkRmlsdGVyVmFsdWUiLCJpc1ZhbGlkRGF0YXNldCIsImxheWVyIiwiZmluZCIsImwiLCJmaWx0ZXJWYWxpZGF0b3JzIiwidmFsaWRhdGVGaWx0ZXIiLCJkYXRhc2V0cyIsIl9maWx0ZXIkdmlldyIsImZpbHRlckRhdGFJZCIsImZpbHRlckRhdGFzZXRJbmRleCIsImluZGV4T2YiLCJpbml0aWFsaXplRmlsdGVyIiwiZmllbGROYW1lIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJ1cGRhdGVkRGF0YXNldCIsInZhbGlkYXRlRmlsdGVyWUF4aXMiLCJ2YWxpZGF0ZUZpbHRlcldpdGhEYXRhIiwicHJvdG90eXBlIiwiZmllbGRzIiwiX2ZpbHRlciIsIm1hdGNoZWRBeGlzIiwiX3JlZjIiLCJnZXRGaWx0ZXJQcm9wcyIsImZpZWxkIiwiZmllbGREb21haW4iLCJmaWx0ZXJQcm9wcyIsImZpZWxkVHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInJlYWwiLCJpbnRlZ2VyIiwidHlwZU9wdGlvbnMiLCJzdHJpbmciLCJoMyIsImRhdGUiLCJ0aW1lc3RhbXAiLCJlbmxhcmdlZCIsImdldFBvbHlnb25GaWx0ZXJGdW5jdG9yIiwiZGF0YUNvbnRhaW5lciIsImdldFBvc2l0aW9uIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJpY29uIiwiZGF0YSIsInBvcyIsImV2ZXJ5IiwiaXNGaW5pdGUiLCJpc0luUG9seWdvbiIsImFyYyIsImxpbmUiLCJoZXhhZ29uSWQiLCJkYXRhVG9GZWF0dXJlIiwiY2VudHJvaWRzIiwiY2VudHJvaWQiLCJpbmRleCIsImgzSXNWYWxpZCIsImdldENlbnRyb2lkIiwiZ2VvanNvbiIsImNhbkFwcGx5RmVhdHVyZUZpbHRlciIsImZlYXR1cmUiLCJCb29sZWFuIiwiZ2VvbWV0cnkiLCJnZXRGaWx0ZXJGdW5jdGlvbiIsInZhbHVlQWNjZXNzb3IiLCJkZWZhdWx0RnVuYyIsImlzSW5SYW5nZSIsIm1hcHBlZFZhbHVlIiwiYWNjZXNzb3IiLCJBcnJheSIsImlzQXJyYXkiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJsYXllckZpbHRlckZ1bmN0aW9ucyIsIm1hcCIsImNvbmZpZyIsImZpbHRlckZ1bmMiLCJ1cGRhdGVGaWx0ZXJEYXRhSWQiLCJmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyIsIl9yZWYzIiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRJbmRleCIsImZpbHRlckNvbnRleHQiLCJmaWx0ZXJGdW5jQ2FsbGVyIiwibnVtUm93cyIsIm1hdGNoRm9yRG9tYWluIiwibWF0Y2hGb3JSZW5kZXIiLCJnZXRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJzIiwib3B0IiwiZmlsdGVyUmVjb3JkIiwiZHluYW1pY0RvbWFpbiIsImNwdSIsImYiLCJpZ25vcmVEb21haW4iLCJjcHVPbmx5IiwiZGlmZkZpbHRlcnMiLCJvbGRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJDaGFuZ2VkIiwiZW50cmllcyIsIl9yZWY0IiwiX3JlZjUiLCJfc2xpY2VkVG9BcnJheTIiLCJyZWNvcmQiLCJpdGVtcyIsIm9sZEZpbHRlciIsInByb3AiLCJjb25jYXQiLCJhZGp1c3RWYWx1ZVRvRmlsdGVyRG9tYWluIiwiX3JlZjYiLCJkIiwibm90TnVsbG9yVW5kZWZpbmVkIiwiZmlsdGVyZWRWYWx1ZSIsImdldE51bWVyaWNGaWVsZERvbWFpbiIsIm1hcEluZGV4IiwiZ2V0TGluZWFyRG9tYWluIiwiZGlmZiIsImdldE51bWVyaWNTdGVwU2l6ZSIsImZvcm1hdE51bWJlckJ5U3RlcCIsIk1hdGgiLCJhYnMiLCJ4IiwiZXhwb25lbnRpYWxGb3JtIiwidG9FeHBvbmVudGlhbCIsImV4cG9uZW50IiwicGFyc2VGbG9hdCIsInNwbGl0IiwiRGVjaW1hbCIsInBvdyIsInRvTnVtYmVyIiwiZ2V0VGltZXN0YW1wRmllbGREb21haW4iLCJkZWZhdWx0VGltZUZvcm1hdCIsImdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlciIsImVudHJ5IiwidmFsIiwiYm91bmQiLCJmbG9vciIsImNlaWwiLCJib29sZWFuV2l0aGluIiwidHVyZlBvaW50IiwiaXNWYWxpZFRpbWVEb21haW4iLCJpc0ZpbHRlclZhbGlkVG9TYXZlIiwidiIsImlzTmFOIiwiaW5wdXQiLCJjb29yZGluYXRlcyIsImdldENvbHVtbkZpbHRlclByb3BzIiwiX2ZpbHRlciRwbG90VHlwZSIsIl9maWx0ZXIkbWFwcGVkVmFsdWUiLCJnZXRDb2x1bW5GaWVsZElkeCIsImxpbmVDaGFydCIsInNlcmllcyIsInJvdyIsInJvd0luZGV4IiwieSIsInZhbHVlQXQiLCJfcmVmNyIsInNvcnQiLCJiIiwiYXNjZW5kaW5nIiwieURvbWFpbiIsImV4dGVudCIsInhEb21haW4iLCJ1cGRhdGVGaWx0ZXJQbG90IiwicmVtb3ZlRmlsdGVyUGxvdCIsInVwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZSIsInVwZGF0ZVJhbmdlRmlsdGVyUGxvdFR5cGUiLCJhcHBseUZpbHRlcnNUb0RhdGFzZXRzIiwiZGF0YXNldElkcyIsInJlZHVjZSIsImFjYyIsImxheWVyc1RvRmlsdGVyIiwiYXBwbGllZEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlclRhYmxlIiwib3B0aW9uIiwiZmllbGRJbmRleCIsIm5ld0ZpbHRlciIsImFzc2lnbiIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJfbWVyZ2VGaWx0ZXJEb21haW4iLCJkb21haW5TdGVwcyIsIm1lcmdlRmlsdGVyRG9tYWluIiwiX2ZpbHRlciRkYXRhSWQiLCJpZHgiLCJfZG9tYWluU3RlcHMiLCJtZXJnZUZpbHRlckRvbWFpblN0ZXAiLCJzb3J0ZWREb21haW4iLCJ1bmlxdWUiLCJmZWF0dXJlVG9GaWx0ZXJWYWx1ZSIsImZpbHRlcklkIiwicHJvcGVydGllcyIsImdldEZpbHRlcklkSW5GZWF0dXJlIiwiZ2VuZXJhdGVQb2x5Z29uRmlsdGVyIiwibGFiZWwiLCJpc1Zpc2libGUiLCJmaWx0ZXJEYXRhc2V0Q1BVIiwic3RhdGUiLCJkYXRhc2V0RmlsdGVycyIsImNwdUZpbHRlcmVkRGF0YXNldCIsImZpbHRlclRhYmxlQ1BVIiwidmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHMiLCJmaWx0ZXJzVG9WYWxpZGF0ZSIsInZhbGlkYXRlZCIsInVwZGF0ZWREYXRhc2V0cyIsImZpbHRlclRvVmFsaWRhdGUiLCJpc01lcmdpbmdEYXRhc2V0cyIsIl9kYXRhc2V0SWRzJHJlZHVjZSIsImRhdGFzZXRMYXllcnMiLCJ0b1ZhbGlkYXRlIiwidmFsaWRhdGVkRmlsdGVyIiwiX3ZhbGlkYXRlRmlsdGVyV2l0aERhIiwiYXVnbWVudGVkRGF0YXNldHMiLCJhcHBseVRvRGF0YXNldHMiLCJpc0VxdWFsIiwic3luY2VkV2l0aExheWVyVGltZWxpbmUiLCJhbmltYXRhYmxlTGF5ZXJzIiwiZ2V0QW5pbWF0YWJsZVZpc2libGVMYXllcnMiLCJtZXJnZVRpbWVEb21haW5zIiwiYW5pbWF0aW9uIiwibmV4dEZpbHRlciIsInJhbmdlRmlsdGVyIiwiYmlucyIsIl9yYW5nZUZpbHRlciRiaW5zIiwiX2RlbGV0ZSIsIm5leHRCaW5zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInRpbWVGaWx0ZXIiLCJ0aW1lQmlucyIsIl90aW1lRmlsdGVyJHRpbWVCaW5zIiwiX19kZWxldGUiLCJuZXh0VGltZUJpbnMiLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsImlzU2lkZUZpbHRlciIsImRvbWFpbnMiLCJfZG9tYWluJCIsIl9kb21haW4kMiIsIm1pbiIsIkluZmluaXR5IiwiaXNMYXllckFuaW1hdGFibGUiLCJfbGF5ZXIkY29uZmlnJGFuaW1hdGkiLCJnZXRBbmltYXRhYmxlVmlzaWJsZUxheWVyc0J5VHlwZSIsImdldEludGVydmFsQmFzZWRBbmltYXRpb25MYXllcnMiLCJfbCRjb25maWckYW5pbWF0aW9uIiwidGltZVN0ZXBzIiwibWVyZ2VGaWx0ZXJXaXRoVGltZWxpbmUiLCJhbmltYXRpb25Db25maWciLCJzY2FsZVNvdXJjZURvbWFpblRvRGVzdGluYXRpb24iLCJzb3VyY2VEb21haW4iLCJkZXN0aW5hdGlvbkRvbWFpbiIsInNvdXJjZURvbWFpblNpemUiLCJkZXN0aW5hdGlvbkRvbWFpblNpemUiLCJzY2FsZWRTb3VyY2VEb21haW5TaXplIiwib2Zmc2V0Iiwic2NhbGVkT2Zmc2V0IiwiZ2V0RmlsdGVyU2NhbGVkVGltZWxpbmUiXSwic291cmNlcyI6WyIuLi9zcmMvZmlsdGVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2guaXNlcXVhbCc7XG5pbXBvcnQge2FzY2VuZGluZywgZXh0ZW50fSBmcm9tICdkMy1hcnJheSc7XG5cbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7RGVjaW1hbH0gZnJvbSAnZGVjaW1hbC5qcyc7XG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgQU5JTUFUSU9OX1dJTkRPVyxcbiAgUExPVF9UWVBFUyxcbiAgTEFZRVJfVFlQRVMsXG4gIEZJTFRFUl9WSUVXX1RZUEVTXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbi8vIGltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQgKiBhcyBTY2FsZVV0aWxzIGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5pbXBvcnQge2gzSXNWYWxpZH0gZnJvbSAnaDMtanMnO1xuXG5pbXBvcnQge1xuICBFbnRyaWVzLFxuICBGaWVsZCxcbiAgUGFyc2VkRmlsdGVyLFxuICBGaWx0ZXIsXG4gIEZpbHRlckJhc2UsXG4gIFBvbHlnb25GaWx0ZXIsXG4gIEZpZWxkRG9tYWluLFxuICBUaW1lUmFuZ2VGaWVsZERvbWFpbixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVZhbHVlLFxuICBMaW5lQ2hhcnQsXG4gIFJhbmdlRmlsdGVyLFxuICBUaW1lUmFuZ2VGaWx0ZXIsXG4gIFJhbmdlRmllbGREb21haW4sXG4gIEZpbHRlckRhdGFzZXRPcHQsXG4gIEZpbHRlclJlY29yZCxcbiAgQW5pbWF0aW9uQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCB0b0FycmF5LCBub3ROdWxsb3JVbmRlZmluZWQsIGdldENlbnRyb2lkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4vZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7c2V0fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7dGltZVRvVW5peE1pbGxpLCB1bmlxdWV9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge3VwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZSwgdXBkYXRlUmFuZ2VGaWx0ZXJQbG90VHlwZX0gZnJvbSAnLi9wbG90JztcbmltcG9ydCB7S2VwbGVyVGFibGVNb2RlbH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkdXJhdGlvblNlY29uZCA9IDEwMDA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25NaW51dGUgPSBkdXJhdGlvblNlY29uZCAqIDYwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uSG91ciA9IGR1cmF0aW9uTWludXRlICogNjA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25EYXkgPSBkdXJhdGlvbkhvdXIgKiAyNDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbldlZWsgPSBkdXJhdGlvbkRheSAqIDc7XG5leHBvcnQgY29uc3QgZHVyYXRpb25ZZWFyID0gZHVyYXRpb25EYXkgKiAzNjU7XG5cbi8vIFRPRE8gaXNvbGF0ZSB0eXBlcyAtIGRlcGVuZHMgb24gQGtlcGxlci5nbC9zY2hlbWFzXG50eXBlIFZpc1N0YXRlID0gYW55O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJSZXN1bHQgPSB7XG4gIGZpbHRlcmVkSW5kZXhGb3JEb21haW4/OiBudW1iZXJbXTtcbiAgZmlsdGVyZWRJbmRleD86IG51bWJlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyQ2hhbmdlZCA9IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIFtrZXkgaW4ga2V5b2YgRmlsdGVyUmVjb3JkXToge1xuICAgIFtrZXk6IHN0cmluZ106ICdhZGRlZCcgfCAnZGVsZXRlZCcgfCAnbmFtZV9jaGFuZ2VkJyB8ICd2YWx1ZV9jaGFuZ2VkJyB8ICdkYXRhSWRfY2hhbmdlZCc7XG4gIH0gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBudW1iZXIgfCBudWxsO1xuXG5leHBvcnQgY29uc3QgVGltZXN0YW1wU3RlcE1hcCA9IFtcbiAge21heDogMSwgc3RlcDogMC4wNX0sXG4gIHttYXg6IDEwLCBzdGVwOiAwLjF9LFxuICB7bWF4OiAxMDAsIHN0ZXA6IDF9LFxuICB7bWF4OiA1MDAsIHN0ZXA6IDV9LFxuICB7bWF4OiAxMDAwLCBzdGVwOiAxMH0sXG4gIHttYXg6IDUwMDAsIHN0ZXA6IDUwfSxcbiAge21heDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBzdGVwOiAxMDAwfVxuXTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9VUERBVEVSX1BST1BTID0ga2V5TWlycm9yKHtcbiAgZGF0YUlkOiBudWxsLFxuICBuYW1lOiBudWxsLFxuICBsYXllcklkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9DT01QT05FTlRTID0ge1xuICBbRklMVEVSX1RZUEVTLnNlbGVjdF06ICdTaW5nbGVTZWxlY3RGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0XTogJ011bHRpU2VsZWN0RmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy50aW1lUmFuZ2VdOiAnVGltZVJhbmdlRmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy5yYW5nZV06ICdSYW5nZUZpbHRlcicsXG4gIFtGSUxURVJfVFlQRVMucG9seWdvbl06ICdQb2x5Z29uRmlsdGVyJ1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1NUUlVDVFVSRSA9IHtcbiAgZGF0YUlkOiBbXSwgLy8gW3N0cmluZ11cbiAgaWQ6IG51bGwsXG4gIGVuYWJsZWQ6IHRydWUsXG5cbiAgLy8gdGltZSByYW5nZSBmaWx0ZXIgc3BlY2lmaWNcbiAgZml4ZWREb21haW46IGZhbHNlLFxuICB2aWV3OiBGSUxURVJfVklFV19UWVBFUy5zaWRlLFxuICBpc0FuaW1hdGluZzogZmFsc2UsXG4gIGFuaW1hdGlvbldpbmRvdzogQU5JTUFUSU9OX1dJTkRPVy5mcmVlLFxuICBzcGVlZDogMSxcblxuICAvLyBmaWVsZCBzcGVjaWZpY1xuICBuYW1lOiBbXSwgLy8gc3RyaW5nXG4gIHR5cGU6IG51bGwsXG4gIGZpZWxkSWR4OiBbXSwgLy8gW2ludGVnZXJdXG4gIGRvbWFpbjogbnVsbCxcbiAgdmFsdWU6IG51bGwsXG5cbiAgLy8gcGxvdFxuICBwbG90VHlwZToge1xuICAgIHR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtXG4gIH0sXG4gIHlBeGlzOiBudWxsLFxuXG4gIC8vIG1vZGVcbiAgZ3B1OiBmYWxzZVxufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9JRF9MRU5HVEggPSA0O1xuXG5leHBvcnQgY29uc3QgTEFZRVJfRklMVEVSUyA9IFtGSUxURVJfVFlQRVMucG9seWdvbl07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZmlsdGVyIHdpdGggYSBkYXRhc2V0IGlkIGFzIGRhdGFJZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEZpbHRlcih7XG4gIGRhdGFJZCxcbiAgaWRcbn06IHtcbiAgZGF0YUlkPzogc3RyaW5nIHwgbnVsbCB8IHN0cmluZ1tdO1xuICBpZD86IHN0cmluZztcbn0gPSB7fSk6IEZpbHRlckJhc2U8TGluZUNoYXJ0PiB7XG4gIHJldHVybiB7XG4gICAgLi4uREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFLFxuICAgIC8vIHN0b3JlIGl0IGFzIGRhdGFJZCBhbmQgaXQgY291bGQgYmUgb25lIG9yIG1hbnlcbiAgICBkYXRhSWQ6IGRhdGFJZCA/IHRvQXJyYXkoZGF0YUlkKSA6IFtdLFxuICAgIGlkOiBpZCB8fCBnZW5lcmF0ZUhhc2hJZChGSUxURVJfSURfTEVOR1RIKVxuICB9O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmlsdGVyIGlzIHZhbGlkIGJhc2VkIG9uIHRoZSBnaXZlbiBkYXRhSWRcbiAqIEBwYXJhbSAgZmlsdGVyIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gIGRhdGFzZXRJZCBpZCB0byB2YWxpZGF0ZSBmaWx0ZXIgYWdhaW5zdFxuICogQHJldHVybiB0cnVlIGlmIGEgZmlsdGVyIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEFwcGx5RmlsdGVyKGZpbHRlcjogRmlsdGVyLCBkYXRhc2V0SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBkYXRhSWRzID0gdG9BcnJheShmaWx0ZXIuZGF0YUlkKTtcbiAgcmV0dXJuIGRhdGFJZHMuaW5jbHVkZXMoZGF0YXNldElkKSAmJiBmaWx0ZXIudmFsdWUgIT09IG51bGw7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFuZCBtb2RpZmllcyBwb2x5Z29uIGZpbHRlciBzdHJ1Y3R1cmVcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gbGF5ZXJzXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUG9seWdvbkZpbHRlcjxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTCBleHRlbmRzIHtpZDogc3RyaW5nfT4oXG4gIGRhdGFzZXQ6IEssXG4gIGZpbHRlcjogUG9seWdvbkZpbHRlcixcbiAgbGF5ZXJzOiBMW11cbik6IHtmaWx0ZXI6IFBvbHlnb25GaWx0ZXIgfCBudWxsOyBkYXRhc2V0OiBLfSB7XG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCB7dmFsdWUsIGxheWVySWQsIHR5cGUsIGRhdGFJZH0gPSBmaWx0ZXI7XG5cbiAgaWYgKCFsYXllcklkIHx8ICFpc1ZhbGlkRmlsdGVyVmFsdWUodHlwZSwgdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWREYXRhc2V0ID0gZGF0YUlkLmluY2x1ZGVzKGRhdGFzZXQuaWQpO1xuXG4gIGlmICghaXNWYWxpZERhdGFzZXQpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgY29uc3QgbGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGxheWVySWQuaW5jbHVkZXMobC5pZCkpO1xuXG4gIGlmICghbGF5ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHtcbiAgICAgIC4uLmZpbHRlcixcbiAgICAgIGZpZWxkSWR4OiBbXVxuICAgIH0sXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIEN1c3RvbSBmaWx0ZXIgdmFsaWRhdG9yc1xuICovXG5jb25zdCBmaWx0ZXJWYWxpZGF0b3JzID0ge1xuICBbRklMVEVSX1RZUEVTLnBvbHlnb25dOiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXJcbn07XG5cbi8qKlxuICogRGVmYXVsdCB2YWxpZGF0ZSBmaWx0ZXIgZnVuY3Rpb25cbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIGRhdGFzZXRJZFxuICogQHBhcmFtIGZpbHRlclxuICogQHJldHVybiAtIHtmaWx0ZXIsIGRhdGFzZXR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcjxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGRhdGFzZXRzOiBSZWNvcmQ8c3RyaW5nLCBLPixcbiAgZGF0YXNldElkOiBzdHJpbmcsXG4gIGZpbHRlcjogUGFyc2VkRmlsdGVyXG4pOiB7ZmlsdGVyOiBGaWx0ZXIgfCBudWxsOyBkYXRhc2V0OiBLfSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhc2V0SWRdO1xuICAvLyBtYXRjaCBmaWx0ZXIuZGF0YUlkXG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCBmaWx0ZXJEYXRhSWQgPSB0b0FycmF5KGZpbHRlci5kYXRhSWQpO1xuXG4gIGNvbnN0IGZpbHRlckRhdGFzZXRJbmRleCA9IGZpbHRlckRhdGFJZC5pbmRleE9mKGRhdGFzZXQuaWQpO1xuICBpZiAoZmlsdGVyRGF0YXNldEluZGV4IDwgMCB8fCAhdG9BcnJheShmaWx0ZXIubmFtZSlbZmlsdGVyRGF0YXNldEluZGV4XSkge1xuICAgIC8vIHRoZSBjdXJyZW50IGZpbHRlciBpcyBub3QgbWFwcGVkIGFnYWluc3QgdGhlIGN1cnJlbnQgZGF0YXNldFxuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICBjb25zdCBpbml0aWFsaXplRmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgLi4uZ2V0RGVmYXVsdEZpbHRlcih7ZGF0YUlkOiBmaWx0ZXIuZGF0YUlkfSksXG4gICAgLi4uZmlsdGVyLFxuICAgIGRhdGFJZDogZmlsdGVyRGF0YUlkLFxuICAgIG5hbWU6IHRvQXJyYXkoZmlsdGVyLm5hbWUpXG4gIH07XG5cbiAgY29uc3QgZmllbGROYW1lID0gaW5pdGlhbGl6ZUZpbHRlci5uYW1lW2ZpbHRlckRhdGFzZXRJbmRleF07XG4gIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IGFwcGx5RmlsdGVyRmllbGROYW1lKFxuICAgIGluaXRpYWxpemVGaWx0ZXIsXG4gICAgZGF0YXNldHMsXG4gICAgZGF0YXNldElkLFxuICAgIGZpZWxkTmFtZSxcbiAgICBmaWx0ZXJEYXRhc2V0SW5kZXgsXG4gICAge21lcmdlRG9tYWluOiB0cnVlfVxuICApO1xuXG4gIGlmICghdXBkYXRlZEZpbHRlcikge1xuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICAvLyBkb24ndCBhZGp1c3QgdmFsdWUgeWV0IGJlZm9yZSBhbGwgZGF0YXNldHMgYXJlIGxvYWRlZFxuICB1cGRhdGVkRmlsdGVyLnZpZXcgPSBmaWx0ZXIudmlldyA/PyB1cGRhdGVkRmlsdGVyLnZpZXc7XG5cbiAgaWYgKHVwZGF0ZWRGaWx0ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAvLyBjYW5ub3QgYWRqdXN0IHNhdmVkIHZhbHVlIHRvIGZpbHRlclxuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpbHRlcjogdmFsaWRhdGVGaWx0ZXJZQXhpcyh1cGRhdGVkRmlsdGVyLCB1cGRhdGVkRGF0YXNldCksXG4gICAgZGF0YXNldDogdXBkYXRlZERhdGFzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBmaWx0ZXIgY29uZmlnIHdpdGggbmV3IGRhdGFcbiAqXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBkYXRhc2V0SWRcbiAqIEBwYXJhbSBmaWx0ZXIgLSBmaWx0ZXIgdG8gYmUgdmFsaWRhdGVcbiAqIEBwYXJhbSBsYXllcnMgLSBsYXllcnNcbiAqIEByZXR1cm4gdmFsaWRhdGVkIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXJXaXRoRGF0YTxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGRhdGFzZXRzOiBSZWNvcmQ8c3RyaW5nLCBLPixcbiAgZGF0YXNldElkOiBzdHJpbmcsXG4gIGZpbHRlcjogUGFyc2VkRmlsdGVyLFxuICBsYXllcnM6IExbXVxuKToge2ZpbHRlcjogRmlsdGVyOyBkYXRhc2V0OiBLfSB7XG4gIHJldHVybiBmaWx0ZXIudHlwZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmlsdGVyVmFsaWRhdG9ycywgZmlsdGVyLnR5cGUpXG4gICAgPyBmaWx0ZXJWYWxpZGF0b3JzW2ZpbHRlci50eXBlXShkYXRhc2V0c1tkYXRhc2V0SWRdLCBmaWx0ZXIsIGxheWVycylcbiAgICA6IHZhbGlkYXRlRmlsdGVyKGRhdGFzZXRzLCBkYXRhc2V0SWQsIGZpbHRlcik7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgWUF4aXNcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcllBeGlzKGZpbHRlciwgZGF0YXNldCkge1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG5cbiAgY29uc3Qge2ZpZWxkc30gPSBkYXRhc2V0O1xuICBjb25zdCB7eUF4aXN9ID0gZmlsdGVyO1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG4gIGlmICh5QXhpcykge1xuICAgIGNvbnN0IG1hdGNoZWRBeGlzID0gZmllbGRzLmZpbmQoKHtuYW1lLCB0eXBlfSkgPT4gbmFtZSA9PT0geUF4aXMubmFtZSAmJiB0eXBlID09PSB5QXhpcy50eXBlKTtcblxuICAgIGZpbHRlciA9IG1hdGNoZWRBeGlzXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgeUF4aXM6IG1hdGNoZWRBeGlzXG4gICAgICAgIH1cbiAgICAgIDogZmlsdGVyO1xuICB9XG5cbiAgcmV0dXJuIGZpbHRlcjtcbn1cblxuLyoqXG4gKiBHZXQgZGVmYXVsdCBmaWx0ZXIgcHJvcCBiYXNlZCBvbiBmaWVsZCB0eXBlXG4gKlxuICogQHBhcmFtIGZpZWxkXG4gKiBAcGFyYW0gZmllbGREb21haW5cbiAqIEByZXR1cm5zIGRlZmF1bHQgZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJQcm9wcyhcbiAgZmllbGQ6IEZpZWxkLFxuICBmaWVsZERvbWFpbjogRmllbGREb21haW5cbik6IFBhcnRpYWw8RmlsdGVyPiAmIHtmaWVsZFR5cGU6IHN0cmluZ30ge1xuICBjb25zdCBmaWx0ZXJQcm9wcyA9IHtcbiAgICAuLi5maWVsZERvbWFpbixcbiAgICBmaWVsZFR5cGU6IGZpZWxkLnR5cGUsXG4gICAgdmlldzogRklMVEVSX1ZJRVdfVFlQRVMuc2lkZVxuICB9O1xuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB2YWx1ZTogZmllbGREb21haW4uZG9tYWluLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2UsXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgdHlwZU9wdGlvbnM6IFtGSUxURVJfVFlQRVMucmFuZ2VdLFxuICAgICAgICBncHU6IHRydWVcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5ib29sZWFuOlxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5zZWxlY3QsXG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICBncHU6IGZhbHNlXG4gICAgICB9O1xuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuc3RyaW5nOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmgzOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0LFxuICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgIGdwdTogZmFsc2VcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLnRpbWVSYW5nZSxcbiAgICAgICAgdmlldzogRklMVEVSX1ZJRVdfVFlQRVMuZW5sYXJnZWQsXG4gICAgICAgIGZpeGVkRG9tYWluOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZmlsdGVyUHJvcHMuZG9tYWluLFxuICAgICAgICBncHU6IHRydWUsXG4gICAgICAgIHBsb3RUeXBlOiB7fVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFBvbHlnb25GaWx0ZXJGdW5jdG9yID0gKGxheWVyLCBmaWx0ZXIsIGRhdGFDb250YWluZXIpID0+IHtcbiAgY29uc3QgZ2V0UG9zaXRpb24gPSBsYXllci5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gIHN3aXRjaCAobGF5ZXIudHlwZSkge1xuICAgIGNhc2UgTEFZRVJfVFlQRVMucG9pbnQ6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5pY29uOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIGlzSW5Qb2x5Z29uKHBvcywgZmlsdGVyLnZhbHVlKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5hcmM6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5saW5lOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFtwb3NbMF0sIHBvc1sxXV0sXG4gICAgICAgICAgICBbcG9zWzNdLCBwb3NbNF1dXG4gICAgICAgICAgXS5ldmVyeShwb2ludCA9PiBpc0luUG9seWdvbihwb2ludCwgZmlsdGVyLnZhbHVlKSlcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5oZXhhZ29uSWQ6XG4gICAgICBpZiAobGF5ZXIuZGF0YVRvRmVhdHVyZSAmJiBsYXllci5kYXRhVG9GZWF0dXJlLmNlbnRyb2lkcykge1xuICAgICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgICAgLy8gbnVsbCBvciBnZXRDZW50cm9pZCh7aWR9KVxuICAgICAgICAgIGNvbnN0IGNlbnRyb2lkID0gbGF5ZXIuZGF0YVRvRmVhdHVyZS5jZW50cm9pZHNbZGF0YS5pbmRleF07XG4gICAgICAgICAgcmV0dXJuIGNlbnRyb2lkICYmIGlzSW5Qb2x5Z29uKGNlbnRyb2lkLCBmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICBpZiAoIWgzSXNWYWxpZChpZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9zID0gZ2V0Q2VudHJvaWQoe2lkfSk7XG4gICAgICAgIHJldHVybiBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiBpc0luUG9seWdvbihwb3MsIGZpbHRlci52YWx1ZSk7XG4gICAgICB9O1xuICAgIGNhc2UgTEFZRVJfVFlQRVMuZ2VvanNvbjpcbiAgICAgIHJldHVybiBkYXRhID0+IHtcbiAgICAgICAgcmV0dXJuIGxheWVyLmlzSW5Qb2x5Z29uKGRhdGEsIGRhdGEuaW5kZXgsIGZpbHRlci52YWx1ZSk7XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKCkgPT4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIEdlb0pTT04gZmVhdHVyZSBmaWx0ZXIgY2FuIGJlIGFwcGxpZWQgdG8gYSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQXBwbHlGZWF0dXJlRmlsdGVyKGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKGZlYXR1cmU/Lmdlb21ldHJ5ICYmIFsnUG9seWdvbicsICdNdWx0aVBvbHlnb24nXS5pbmNsdWRlcyhmZWF0dXJlLmdlb21ldHJ5LnR5cGUpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcGFyYW0gQW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHJvdyByZWNvcmQuXG4gKiBAcGFyYW0gcGFyYW0uaW5kZXggSW5kZXggb2YgdGhlIHJvdyBpbiBkYXRhIGNvbnRhaW5lci5cbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSB0byBrZWVwIHRoZSBlbGVtZW50LCBvciBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbnR5cGUgZmlsdGVyRnVuY3Rpb24gPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBib29sZWFuO1xuXG4vKipcbiAqIEBwYXJhbSBmaWVsZCBkYXRhc2V0IEZpZWxkXG4gKiBAcGFyYW0gZGF0YUlkIERhdGFzZXQgaWRcbiAqIEBwYXJhbSBmaWx0ZXIgRmlsdGVyIG9iamVjdFxuICogQHBhcmFtIGxheWVycyBsaXN0IG9mIGxheWVycyB0byBmaWx0ZXIgdXBvblxuICogQHBhcmFtIGRhdGFDb250YWluZXIgRGF0YSBjb250YWluZXJcbiAqIEByZXR1cm4gZmlsdGVyRnVuY3Rpb25cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckZ1bmN0aW9uPEwgZXh0ZW5kcyB7Y29uZmlnOiB7ZGF0YUlkOiBzdHJpbmcgfCBudWxsfTsgaWQ6IHN0cmluZ30+KFxuICBmaWVsZDogRmllbGQgfCBudWxsLFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgZmlsdGVyOiBGaWx0ZXIsXG4gIGxheWVyczogTFtdLFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlXG4pOiBmaWx0ZXJGdW5jdGlvbiB7XG4gIC8vIGZpZWxkIGNvdWxkIGJlIG51bGwgaW4gcG9seWdvbiBmaWx0ZXJcbiAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IGZpZWxkID8gZmllbGQudmFsdWVBY2Nlc3NvciA6ICgpID0+IG51bGw7XG4gIGNvbnN0IGRlZmF1bHRGdW5jID0gKCkgPT4gdHJ1ZTtcblxuICBpZiAoZmlsdGVyLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRGdW5jO1xuICB9XG5cbiAgc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnJhbmdlOlxuICAgICAgcmV0dXJuIGRhdGEgPT4gaXNJblJhbmdlKHZhbHVlQWNjZXNzb3IoZGF0YSksIGZpbHRlci52YWx1ZSk7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMubXVsdGlTZWxlY3Q6XG4gICAgICByZXR1cm4gZGF0YSA9PiBmaWx0ZXIudmFsdWUuaW5jbHVkZXModmFsdWVBY2Nlc3NvcihkYXRhKSk7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMuc2VsZWN0OlxuICAgICAgcmV0dXJuIGRhdGEgPT4gdmFsdWVBY2Nlc3NvcihkYXRhKSA9PT0gZmlsdGVyLnZhbHVlO1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnRpbWVSYW5nZToge1xuICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldChmaWVsZCwgWydmaWx0ZXJQcm9wcycsICdtYXBwZWRWYWx1ZSddKTtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gQXJyYXkuaXNBcnJheShtYXBwZWRWYWx1ZSlcbiAgICAgICAgPyBkYXRhID0+IG1hcHBlZFZhbHVlW2RhdGEuaW5kZXhdXG4gICAgICAgIDogZGF0YSA9PiB0aW1lVG9Vbml4TWlsbGkodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmllbGQuZm9ybWF0KTtcbiAgICAgIHJldHVybiBkYXRhID0+IGlzSW5SYW5nZShhY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICB9XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucG9seWdvbjoge1xuICAgICAgaWYgKCFsYXllcnMgfHwgIWxheWVycy5sZW5ndGggfHwgIWZpbHRlci5sYXllcklkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RnVuYztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxheWVyRmlsdGVyRnVuY3Rpb25zID0gZmlsdGVyLmxheWVySWRcbiAgICAgICAgLm1hcChpZCA9PiBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGlkKSlcbiAgICAgICAgLmZpbHRlcihsID0+IGwgJiYgbC5jb25maWcuZGF0YUlkID09PSBkYXRhSWQpXG4gICAgICAgIC5tYXAobGF5ZXIgPT4gZ2V0UG9seWdvbkZpbHRlckZ1bmN0b3IobGF5ZXIsIGZpbHRlciwgZGF0YUNvbnRhaW5lcikpO1xuXG4gICAgICByZXR1cm4gZGF0YSA9PiBsYXllckZpbHRlckZ1bmN0aW9ucy5ldmVyeShmaWx0ZXJGdW5jID0+IGZpbHRlckZ1bmMoZGF0YSkpO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGdW5jO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVGaWx0ZXJEYXRhSWQoZGF0YUlkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IEZpbHRlckJhc2U8TGluZUNoYXJ0PiB7XG4gIHJldHVybiBnZXREZWZhdWx0RmlsdGVyKHtkYXRhSWR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckRhdGFCeUZpbHRlclR5cGVzKFxuICB7XG4gICAgZHluYW1pY0RvbWFpbkZpbHRlcnMsXG4gICAgY3B1RmlsdGVycyxcbiAgICBmaWx0ZXJGdW5jc1xuICB9OiB7XG4gICAgZHluYW1pY0RvbWFpbkZpbHRlcnM6IEZpbHRlcltdIHwgbnVsbDtcbiAgICBjcHVGaWx0ZXJzOiBGaWx0ZXJbXSB8IG51bGw7XG4gICAgZmlsdGVyRnVuY3M6IHtcbiAgICAgIFtrZXk6IHN0cmluZ106IGZpbHRlckZ1bmN0aW9uO1xuICAgIH07XG4gIH0sXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2Vcbik6IEZpbHRlclJlc3VsdCB7XG4gIGNvbnN0IGZpbHRlcmVkSW5kZXhGb3JEb21haW46IG51bWJlcltdID0gW107XG4gIGNvbnN0IGZpbHRlcmVkSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgY29uc3QgZmlsdGVyQ29udGV4dCA9IHtpbmRleDogLTEsIGRhdGFDb250YWluZXJ9O1xuICBjb25zdCBmaWx0ZXJGdW5jQ2FsbGVyID0gKGZpbHRlcjogRmlsdGVyKSA9PiBmaWx0ZXJGdW5jc1tmaWx0ZXIuaWRdKGZpbHRlckNvbnRleHQpO1xuXG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Sb3dzOyArK2kpIHtcbiAgICBmaWx0ZXJDb250ZXh0LmluZGV4ID0gaTtcblxuICAgIGNvbnN0IG1hdGNoRm9yRG9tYWluID0gZHluYW1pY0RvbWFpbkZpbHRlcnMgJiYgZHluYW1pY0RvbWFpbkZpbHRlcnMuZXZlcnkoZmlsdGVyRnVuY0NhbGxlcik7XG4gICAgaWYgKG1hdGNoRm9yRG9tYWluKSB7XG4gICAgICBmaWx0ZXJlZEluZGV4Rm9yRG9tYWluLnB1c2goZmlsdGVyQ29udGV4dC5pbmRleCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hGb3JSZW5kZXIgPSBjcHVGaWx0ZXJzICYmIGNwdUZpbHRlcnMuZXZlcnkoZmlsdGVyRnVuY0NhbGxlcik7XG4gICAgaWYgKG1hdGNoRm9yUmVuZGVyKSB7XG4gICAgICBmaWx0ZXJlZEluZGV4LnB1c2goZmlsdGVyQ29udGV4dC5pbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oZHluYW1pY0RvbWFpbkZpbHRlcnMgPyB7ZmlsdGVyZWRJbmRleEZvckRvbWFpbn0gOiB7fSksXG4gICAgLi4uKGNwdUZpbHRlcnMgPyB7ZmlsdGVyZWRJbmRleH0gOiB7fSlcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWNvcmQgb2YgZmlsdGVycyBiYXNlZCBvbiBkb21haW4gdHlwZSBhbmQgZ3B1IC8gY3B1XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJSZWNvcmQoXG4gIGRhdGFJZDogc3RyaW5nLFxuICBmaWx0ZXJzOiBGaWx0ZXJbXSxcbiAgb3B0OiBGaWx0ZXJEYXRhc2V0T3B0ID0ge31cbik6IEZpbHRlclJlY29yZCB7XG4gIGNvbnN0IGZpbHRlclJlY29yZDogRmlsdGVyUmVjb3JkID0ge1xuICAgIGR5bmFtaWNEb21haW46IFtdLFxuICAgIGZpeGVkRG9tYWluOiBbXSxcbiAgICBjcHU6IFtdLFxuICAgIGdwdTogW11cbiAgfTtcblxuICBmaWx0ZXJzLmZvckVhY2goZiA9PiB7XG4gICAgaWYgKGlzVmFsaWRGaWx0ZXJWYWx1ZShmLnR5cGUsIGYudmFsdWUpICYmIHRvQXJyYXkoZi5kYXRhSWQpLmluY2x1ZGVzKGRhdGFJZCkpIHtcbiAgICAgIChmLmZpeGVkRG9tYWluIHx8IG9wdC5pZ25vcmVEb21haW5cbiAgICAgICAgPyBmaWx0ZXJSZWNvcmQuZml4ZWREb21haW5cbiAgICAgICAgOiBmaWx0ZXJSZWNvcmQuZHluYW1pY0RvbWFpblxuICAgICAgKS5wdXNoKGYpO1xuXG4gICAgICAoZi5ncHUgJiYgIW9wdC5jcHVPbmx5ID8gZmlsdGVyUmVjb3JkLmdwdSA6IGZpbHRlclJlY29yZC5jcHUpLnB1c2goZik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZmlsdGVyUmVjb3JkO1xufVxuXG4vKipcbiAqIENvbXBhcmUgZmlsdGVyIHJlY29yZHMgdG8gZ2V0IHdoYXQgaGFzIGNoYW5nZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZGaWx0ZXJzKFxuICBmaWx0ZXJSZWNvcmQ6IEZpbHRlclJlY29yZCxcbiAgb2xkRmlsdGVyUmVjb3JkOiBGaWx0ZXJSZWNvcmQgfCBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fVxuKTogRmlsdGVyQ2hhbmdlZCB7XG4gIGxldCBmaWx0ZXJDaGFuZ2VkOiBQYXJ0aWFsPEZpbHRlckNoYW5nZWQ+ID0ge307XG5cbiAgKE9iamVjdC5lbnRyaWVzKGZpbHRlclJlY29yZCkgYXMgRW50cmllczxGaWx0ZXJSZWNvcmQ+KS5mb3JFYWNoKChbcmVjb3JkLCBpdGVtc10pID0+IHtcbiAgICBpdGVtcy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICBjb25zdCBvbGRGaWx0ZXI6IEZpbHRlciB8IHVuZGVmaW5lZCA9IChvbGRGaWx0ZXJSZWNvcmRbcmVjb3JkXSB8fCBbXSkuZmluZChcbiAgICAgICAgKGY6IEZpbHRlcikgPT4gZi5pZCA9PT0gZmlsdGVyLmlkXG4gICAgICApO1xuXG4gICAgICBpZiAoIW9sZEZpbHRlcikge1xuICAgICAgICAvLyBhZGRlZFxuICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sICdhZGRlZCcsIGZpbHRlckNoYW5nZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY2hlY2sgIHdoYXQgaGFzIGNoYW5nZWRcbiAgICAgICAgWyduYW1lJywgJ3ZhbHVlJywgJ2RhdGFJZCddLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgaWYgKGZpbHRlcltwcm9wXSAhPT0gb2xkRmlsdGVyW3Byb3BdKSB7XG4gICAgICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sIGAke3Byb3B9X2NoYW5nZWRgLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgKG9sZEZpbHRlclJlY29yZFtyZWNvcmRdIHx8IFtdKS5mb3JFYWNoKChvbGRGaWx0ZXI6IEZpbHRlcikgPT4ge1xuICAgICAgLy8gZGVsZXRlZFxuICAgICAgaWYgKCFpdGVtcy5maW5kKGYgPT4gZi5pZCA9PT0gb2xkRmlsdGVyLmlkKSkge1xuICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIG9sZEZpbHRlci5pZF0sICdkZWxldGVkJywgZmlsdGVyQ2hhbmdlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7Li4ue2R5bmFtaWNEb21haW46IG51bGwsIGZpeGVkRG9tYWluOiBudWxsLCBjcHU6IG51bGwsIGdwdTogbnVsbH0sIC4uLmZpbHRlckNoYW5nZWR9O1xufVxuXG4vKipcbiAqIENhbGwgYnkgcGFyc2luZyBmaWx0ZXJzIGZyb20gVVJMXG4gKiBDaGVjayBpZiB2YWx1ZSBvZiBmaWx0ZXIgd2l0aGluIGZpbHRlciBkb21haW4sIGlmIG5vdCBhZGp1c3QgaXQgdG8gbWF0Y2hcbiAqIGZpbHRlciBkb21haW5cbiAqXG4gKiBAcmV0dXJucyB2YWx1ZSAtIGFkanVzdGVkIHZhbHVlIHRvIG1hdGNoIGZpbHRlciBvciBudWxsIHRvIHJlbW92ZSBmaWx0ZXJcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RWYWx1ZVRvRmlsdGVyRG9tYWluKHZhbHVlOiBGaWx0ZXJbJ3ZhbHVlJ10sIHtkb21haW4sIHR5cGV9KSB7XG4gIGlmICghdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBpZiB0aGUgY3VycmVudCBmaWx0ZXIgaXMgYSBwb2x5Z29uIGl0IHdpbGwgbm90IGhhdmUgYW55IGRvbWFpblxuICAvLyBhbGwgb3RoZXIgZmlsdGVyIHR5cGVzIHJlcXVpcmUgZG9tYWluXG4gIGlmICh0eXBlICE9PSBGSUxURVJfVFlQRVMucG9seWdvbiAmJiAhZG9tYWluKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGRvbWFpbi5tYXAoZCA9PiBkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoZCwgaSkgPT4gKG5vdE51bGxvclVuZGVmaW5lZChkKSAmJiBpc0luUmFuZ2UoZCwgZG9tYWluKSA/IGQgOiBkb21haW5baV0pKTtcblxuICAgIGNhc2UgRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0OiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlcmVkVmFsdWUgPSB2YWx1ZS5maWx0ZXIoZCA9PiBkb21haW4uaW5jbHVkZXMoZCkpO1xuICAgICAgcmV0dXJuIGZpbHRlcmVkVmFsdWUubGVuZ3RoID8gZmlsdGVyZWRWYWx1ZSA6IFtdO1xuICAgIH1cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZG9tYWluLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdHJ1ZTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgcmV0dXJuIHZhbHVlO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIG51bWVyaWMgZG9tYWluIGFuZCBzdWl0YWJsZSBzdGVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1lcmljRmllbGREb21haW4oXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHZhbHVlQWNjZXNzb3I6IGRhdGFWYWx1ZUFjY2Vzc29yXG4pOiBSYW5nZUZpZWxkRG9tYWluIHtcbiAgbGV0IGRvbWFpbjogW251bWJlciwgbnVtYmVyXSA9IFswLCAxXTtcbiAgbGV0IHN0ZXAgPSAwLjE7XG5cbiAgY29uc3QgbWFwcGVkVmFsdWUgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIGlmIChkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA+IDEpIHtcbiAgICBkb21haW4gPSBTY2FsZVV0aWxzLmdldExpbmVhckRvbWFpbihtYXBwZWRWYWx1ZSk7XG4gICAgY29uc3QgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcblxuICAgIC8vIGluIGNhc2UgZXF1YWwgZG9tYWluLCBbOTYsIDk2XSwgd2hpY2ggd2lsbCBicmVhayBxdWFudGl6ZSBzY2FsZVxuICAgIGlmICghZGlmZikge1xuICAgICAgZG9tYWluWzFdID0gZG9tYWluWzBdICsgMTtcbiAgICB9XG5cbiAgICBzdGVwID0gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmYpIHx8IHN0ZXA7XG4gICAgZG9tYWluWzBdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblswXSwgc3RlcCwgJ2Zsb29yJyk7XG4gICAgZG9tYWluWzFdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblsxXSwgc3RlcCwgJ2NlaWwnKTtcbiAgfVxuXG4gIHJldHVybiB7ZG9tYWluLCBzdGVwfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgc3RlcCBzaXplIGZvciByYW5nZSBhbmQgdGltZXJhbmdlIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmY6IG51bWJlcik6IG51bWJlciB7XG4gIGRpZmYgPSBNYXRoLmFicyhkaWZmKTtcblxuICBpZiAoZGlmZiA+IDEwMCkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAzKSB7XG4gICAgcmV0dXJuIDAuMDE7XG4gIH0gZWxzZSBpZiAoZGlmZiA+IDEpIHtcbiAgICByZXR1cm4gMC4wMDE7XG4gIH1cbiAgLy8gVHJ5IHRvIGdldCBhdCBsZWFzdCAxMDAwIHN0ZXBzIC0gYW5kIGtlZXAgdGhlIHN0ZXAgc2l6ZSBiZWxvdyB0aGF0IG9mXG4gIC8vIHRoZSAoZGlmZiA+IDEpIGNhc2UuXG4gIGNvbnN0IHggPSBkaWZmIC8gMTAwMDtcbiAgLy8gRmluZCB0aGUgZXhwb25lbnQgYW5kIHRydW5jYXRlIHRvIDEwIHRvIHRoZSBwb3dlciBvZiB0aGF0IGV4cG9uZW50XG5cbiAgY29uc3QgZXhwb25lbnRpYWxGb3JtID0geC50b0V4cG9uZW50aWFsKCk7XG4gIGNvbnN0IGV4cG9uZW50ID0gcGFyc2VGbG9hdChleHBvbmVudGlhbEZvcm0uc3BsaXQoJ2UnKVsxXSk7XG5cbiAgLy8gR2V0dGluZyByZWFkeSBmb3Igbm9kZSAxMlxuICAvLyB0aGlzIGlzIHdoeSB3ZSBuZWVkIGRlY2ltYWwuanNcbiAgLy8gTWF0aC5wb3coMTAsIC01KSA9IDAuMDAwMDA5OTk5OTk5OTk5OTk5OTk5XG4gIC8vIHRoZSBhYm92ZSByZXN1bHQgc2hvd3MgaW4gYnJvd3NlciBhbmQgbm9kZSAxMFxuICAvLyBub2RlIDEyIGJlaGF2ZXMgY29ycmVjdGx5XG4gIHJldHVybiBuZXcgRGVjaW1hbCgxMCkucG93KGV4cG9uZW50KS50b051bWJlcigpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aW1lc3RhbXAgZG9tYWluIGFuZCBzdWl0YWJsZSBzdGVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lc3RhbXBGaWVsZERvbWFpbihcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgdmFsdWVBY2Nlc3NvcjogZGF0YVZhbHVlQWNjZXNzb3Jcbik6IFRpbWVSYW5nZUZpZWxkRG9tYWluIHtcbiAgLy8gdG8gYXZvaWQgY29udmVydGluZyBzdHJpbmcgZm9ybWF0IHRpbWUgdG8gZXBvY2hcbiAgLy8gZXZlcnkgdGltZSB3ZSBjb21wYXJlIHdlIHN0b3JlIGEgdmFsdWUgbWFwcGVkIHRvIGludCBpbiBmaWx0ZXIgZG9tYWluXG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZGF0YUNvbnRhaW5lci5tYXBJbmRleCh2YWx1ZUFjY2Vzc29yKTtcblxuICBjb25zdCBkb21haW4gPSBTY2FsZVV0aWxzLmdldExpbmVhckRvbWFpbihtYXBwZWRWYWx1ZSk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0VGltZVdpZGdldFRpdGxlRm9ybWF0dGVyKGRvbWFpbik7XG5cbiAgbGV0IHN0ZXAgPSAwLjAxO1xuXG4gIGNvbnN0IGRpZmYgPSBkb21haW5bMV0gLSBkb21haW5bMF07XG4gIC8vIGluIGNhc2UgZXF1YWwgdGltZXN0YW1wIGFkZCAxIHNlY29uZCBwYWRkaW5nIHRvIHByZXZlbnQgYnJlYWtcbiAgaWYgKCFkaWZmKSB7XG4gICAgZG9tYWluWzFdID0gZG9tYWluWzBdICsgMTAwMDtcbiAgfVxuICBjb25zdCBlbnRyeSA9IFRpbWVzdGFtcFN0ZXBNYXAuZmluZChmID0+IGYubWF4ID49IGRpZmYpO1xuICBpZiAoZW50cnkpIHtcbiAgICBzdGVwID0gZW50cnkuc3RlcDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZG9tYWluLFxuICAgIHN0ZXAsXG4gICAgbWFwcGVkVmFsdWUsXG4gICAgZGVmYXVsdFRpbWVGb3JtYXRcbiAgfTtcbn1cblxuLyoqXG4gKiByb3VuZCBudW1iZXIgYmFzZWQgb24gc3RlcFxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB2YWxcbiAqIEBwYXJhbSB7TnVtYmVyfSBzdGVwXG4gKiBAcGFyYW0ge3N0cmluZ30gYm91bmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXJCeVN0ZXAodmFsOiBudW1iZXIsIHN0ZXA6IG51bWJlciwgYm91bmQ6ICdmbG9vcicgfCAnY2VpbCcpOiBudW1iZXIge1xuICBpZiAoYm91bmQgPT09ICdmbG9vcicpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwgKiAoMSAvIHN0ZXApKSAvICgxIC8gc3RlcCk7XG4gIH1cblxuICByZXR1cm4gTWF0aC5jZWlsKHZhbCAqICgxIC8gc3RlcCkpIC8gKDEgLyBzdGVwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5SYW5nZSh2YWw6IGFueSwgZG9tYWluOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZG9tYWluKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICByZXR1cm4gZG9tYWluWzBdIDw9IHZhbFswXSAmJiB2YWxbMV0gPD0gZG9tYWluWzFdO1xuICB9XG5cbiAgcmV0dXJuIHZhbCA+PSBkb21haW5bMF0gJiYgdmFsIDw9IGRvbWFpblsxXTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwb2ludCBpcyB3aXRoaW4gdGhlIHByb3ZpZGVkIHBvbHlnb25cbiAqXG4gKiBAcGFyYW0gcG9pbnQgYXMgaW5wdXQgc2VhcmNoIFtsYXQsIGxuZ11cbiAqIEBwYXJhbSBwb2x5Z29uIFBvaW50cyBtdXN0IGJlIHdpdGhpbiB0aGVzZSAoTXVsdGkpUG9seWdvbihzKVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50OiBudW1iZXJbXSwgcG9seWdvbjogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBib29sZWFuV2l0aGluKHR1cmZQb2ludChwb2ludCksIHBvbHlnb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcihkb21haW46IFtudW1iZXIsIG51bWJlcl0pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFpc1ZhbGlkVGltZURvbWFpbihkb21haW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuXG4gIC8vIExvY2FsIGF3YXJlIGZvcm1hdHNcbiAgLy8gaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL3BhcnNpbmcvc3RyaW5nLWZvcm1hdFxuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uWWVhciA/ICdMJyA6IGRpZmYgPiBkdXJhdGlvbkRheSA/ICdMIExUJyA6ICdMIExUUyc7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNGaWx0ZXJWYWxpZFRvU2F2ZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsdGVyVmFsaWRUb1NhdmUoZmlsdGVyOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBmaWx0ZXI/LnR5cGUgJiYgQXJyYXkuaXNBcnJheShmaWx0ZXI/Lm5hbWUpICYmIChmaWx0ZXI/Lm5hbWUubGVuZ3RoIHx8IGZpbHRlcj8ubGF5ZXJJZC5sZW5ndGgpXG4gICk7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNWYWxpZEZpbHRlclZhbHVlfVxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZpbHRlclZhbHVlKHR5cGU6IHN0cmluZyB8IG51bGwsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKCF0eXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnNlbGVjdDpcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5yYW5nZTpcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy50aW1lUmFuZ2U6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkodiA9PiB2ICE9PSBudWxsICYmICFpc05hTih2KSk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5pbnB1dDpcbiAgICAgIHJldHVybiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOiB7XG4gICAgICBjb25zdCBjb29yZGluYXRlcyA9IGdldCh2YWx1ZSwgWydnZW9tZXRyeScsICdjb29yZGluYXRlcyddKTtcbiAgICAgIHJldHVybiBCb29sZWFuKHZhbHVlICYmIHZhbHVlLmlkICYmIGNvb3JkaW5hdGVzKTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5GaWx0ZXJQcm9wczxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0OiBLXG4pOiB7bGluZUNoYXJ0OiBMaW5lQ2hhcnQ7IHlBeHM6IEZpZWxkfSB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICBpZiAoZmlsdGVyLnBsb3RUeXBlPy50eXBlID09PSBQTE9UX1RZUEVTLmhpc3RvZ3JhbSB8fCAhZmlsdGVyLnlBeGlzKSB7XG4gICAgLy8gaGlzdG9ncmFtIHNob3VsZCBiZSBjYWxjdWxhdGVkIHdoZW4gY3JlYXRlIGZpbHRlclxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHttYXBwZWRWYWx1ZSA9IFtdfSA9IGZpbHRlcjtcbiAgY29uc3Qge3lBeGlzfSA9IGZpbHRlcjtcbiAgY29uc3QgZmllbGRJZHggPSBkYXRhc2V0LmdldENvbHVtbkZpZWxkSWR4KHlBeGlzLm5hbWUpO1xuICBpZiAoZmllbGRJZHggPCAwKSB7XG4gICAgLy8gQ29uc29sZS53YXJuKGB5QXhpcyAke3lBeGlzLm5hbWV9IGRvZXMgbm90IGV4aXN0IGluIGRhdGFzZXRgKTtcbiAgICByZXR1cm4ge2xpbmVDaGFydDoge30sIHlBeGlzfTtcbiAgfVxuXG4gIC8vIHJldHVybiBsaW5lQ2hhcnRcbiAgY29uc3Qgc2VyaWVzID0gZGF0YXNldC5kYXRhQ29udGFpbmVyXG4gICAgLm1hcChcbiAgICAgIChyb3csIHJvd0luZGV4KSA9PiAoe1xuICAgICAgICB4OiBtYXBwZWRWYWx1ZVtyb3dJbmRleF0sXG4gICAgICAgIHk6IHJvdy52YWx1ZUF0KGZpZWxkSWR4KVxuICAgICAgfSksXG4gICAgICB0cnVlXG4gICAgKVxuICAgIC5maWx0ZXIoKHt4LCB5fSkgPT4gTnVtYmVyLmlzRmluaXRlKHgpICYmIE51bWJlci5pc0Zpbml0ZSh5KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYXNjZW5kaW5nKGEueCwgYi54KSk7XG5cbiAgY29uc3QgeURvbWFpbiA9IGV4dGVudChzZXJpZXMsIGQgPT4gZC55KSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICBjb25zdCB4RG9tYWluID0gW3Nlcmllc1swXS54LCBzZXJpZXNbc2VyaWVzLmxlbmd0aCAtIDFdLnhdIGFzIFtudW1iZXIsIG51bWJlcl07XG5cbiAgcmV0dXJuIHtsaW5lQ2hhcnQ6IHtzZXJpZXMsIHlEb21haW4sIHhEb21haW59LCB5QXhpc307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVGaWx0ZXJQbG90PEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIGFueT4+KFxuICBkYXRhc2V0czoge1tpZDogc3RyaW5nXTogS30sXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuKSB7XG4gIGlmIChkYXRhSWQpIHtcbiAgICBmaWx0ZXIgPSByZW1vdmVGaWx0ZXJQbG90KGZpbHRlciwgZGF0YUlkKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXIudHlwZSA9PT0gRklMVEVSX1RZUEVTLnRpbWVSYW5nZSkge1xuICAgIHJldHVybiB1cGRhdGVUaW1lRmlsdGVyUGxvdFR5cGUoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlciwgZmlsdGVyLnBsb3RUeXBlLCBkYXRhc2V0cyk7XG4gIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09IEZJTFRFUl9UWVBFUy5yYW5nZSkge1xuICAgIHJldHVybiB1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlKGZpbHRlciBhcyBSYW5nZUZpbHRlciwgZmlsdGVyLnBsb3RUeXBlLCBkYXRhc2V0cyk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFzZXRJZHMgbGlzdCBvZiBkYXRhc2V0IGlkcyB0byBiZSBmaWx0ZXJlZFxuICogQHBhcmFtIGRhdGFzZXRzIGFsbCBkYXRhc2V0c1xuICogQHBhcmFtIGZpbHRlcnMgYWxsIGZpbHRlcnMgdG8gYmUgYXBwbGllZCB0byBkYXRhc2V0c1xuICogQHJldHVybiBkYXRhc2V0cyAtIG5ldyB1cGRhdGVkIGRhdGFzZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlcnNUb0RhdGFzZXRzPFxuICBLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPixcbiAgTCBleHRlbmRzIHtjb25maWc6IHtkYXRhSWQ6IHN0cmluZyB8IG51bGx9fVxuPihcbiAgZGF0YXNldElkczogc3RyaW5nW10sXG4gIGRhdGFzZXRzOiB7W2lkOiBzdHJpbmddOiBLfSxcbiAgZmlsdGVyczogRmlsdGVyW10sXG4gIGxheWVycz86IExbXVxuKToge1tpZDogc3RyaW5nXTogS30ge1xuICBjb25zdCBkYXRhSWRzID0gdG9BcnJheShkYXRhc2V0SWRzKTtcbiAgcmV0dXJuIGRhdGFJZHMucmVkdWNlKChhY2MsIGRhdGFJZCkgPT4ge1xuICAgIGNvbnN0IGxheWVyc1RvRmlsdGVyID0gKGxheWVycyB8fCBbXSkuZmlsdGVyKGwgPT4gbC5jb25maWcuZGF0YUlkID09PSBkYXRhSWQpO1xuICAgIGNvbnN0IGFwcGxpZWRGaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoZCA9PiBzaG91bGRBcHBseUZpbHRlcihkLCBkYXRhSWQpKTtcbiAgICBjb25zdCB0YWJsZSA9IGRhdGFzZXRzW2RhdGFJZF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWNjLFxuICAgICAgW2RhdGFJZF06IHRhYmxlLmZpbHRlclRhYmxlKGFwcGxpZWRGaWx0ZXJzLCBsYXllcnNUb0ZpbHRlciwge30pXG4gICAgfTtcbiAgfSwgZGF0YXNldHMpO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBuZXcgZmllbGQgbmFtZSB2YWx1ZSB0byBmaWx0ZXIgYW5kIHVwZGF0ZSBib3RoIGZpbHRlciBhbmQgZGF0YXNldFxuICogQHBhcmFtIGZpbHRlciAtIHRvIGJlIGFwcGxpZWQgdGhlIG5ldyBmaWVsZCBuYW1lIG9uXG4gKiBAcGFyYW0gZGF0YXNldHMgLSBBbGwgZGF0YXNldHNcbiAqIEBwYXJhbSBkYXRhc2V0SWQgLSBJZCBvZiB0aGUgZGF0YXNldCB0aGUgZmllbGQgYmVsb25ncyB0b1xuICogQHBhcmFtIGZpZWxkTmFtZSAtIGZpZWxkLm5hbWVcbiAqIEBwYXJhbSBmaWx0ZXJEYXRhc2V0SW5kZXggLSBmaWVsZC5uYW1lXG4gKiBAcGFyYW0gb3B0aW9uXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlckZpZWxkTmFtZTxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0czogUmVjb3JkPHN0cmluZywgSz4sXG4gIGRhdGFzZXRJZDogc3RyaW5nLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgZmlsdGVyRGF0YXNldEluZGV4ID0gMCxcbiAgb3B0aW9uPzoge21lcmdlRG9tYWluOiBib29sZWFufVxuKToge1xuICBmaWx0ZXI6IEZpbHRlciB8IG51bGw7XG4gIGRhdGFzZXQ6IEs7XG59IHtcbiAgLy8gdXNpbmcgZmlsdGVyRGF0YXNldEluZGV4IHdlIGNhbiBmaWx0ZXIgb25seSB0aGUgc3BlY2lmaWVkIGRhdGFzZXRcbiAgY29uc3QgbWVyZ2VEb21haW4gPVxuICAgIG9wdGlvbiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9uLCAnbWVyZ2VEb21haW4nKVxuICAgICAgPyBvcHRpb24ubWVyZ2VEb21haW5cbiAgICAgIDogZmFsc2U7XG5cbiAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFzZXRJZF07XG4gIGNvbnN0IGZpZWxkSW5kZXggPSBkYXRhc2V0Py5nZXRDb2x1bW5GaWVsZElkeChmaWVsZE5hbWUpO1xuICAvLyBpZiBubyBmaWVsZCB3aXRoIHNhbWUgbmFtZSBpcyBmb3VuZCwgbW92ZSB0byB0aGUgbmV4dCBkYXRhc2V0c1xuICBpZiAoIWRhdGFzZXQgfHwgZmllbGRJbmRleCA9PT0gLTEpIHtcbiAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYGZpZWxkSW5kZXggbm90IGZvdW5kLiBEYXRhc2V0IG11c3QgY29udGFpbiBhIHByb3BlcnR5IHdpdGggbmFtZTogJHtmaWVsZE5hbWV9YCk7XG4gICAgcmV0dXJuIHtmaWx0ZXI6IG51bGwsIGRhdGFzZXR9O1xuICB9XG5cbiAgLy8gVE9ETzogdmFsaWRhdGUgZmllbGQgdHlwZVxuICBjb25zdCBmaWx0ZXJQcm9wcyA9IGRhdGFzZXQuZ2V0Q29sdW1uRmlsdGVyUHJvcHMoZmllbGROYW1lKTtcblxuICBsZXQgbmV3RmlsdGVyID0ge1xuICAgIC4uLmZpbHRlcixcbiAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICBuYW1lOiBPYmplY3QuYXNzaWduKFsuLi50b0FycmF5KGZpbHRlci5uYW1lKV0sIHtbZmlsdGVyRGF0YXNldEluZGV4XTogZmllbGROYW1lfSksXG4gICAgZmllbGRJZHg6IE9iamVjdC5hc3NpZ24oWy4uLnRvQXJyYXkoZmlsdGVyLmZpZWxkSWR4KV0sIHtcbiAgICAgIFtmaWx0ZXJEYXRhc2V0SW5kZXhdOiBmaWVsZEluZGV4XG4gICAgfSksXG4gICAgLy8gTWFrZSBzdXJlIHBsb3RUeXBlIGlzIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUgZGVmYXVsdCBlbXB0eSBwbG90VHlwZVxuICAgIC4uLihmaWx0ZXIucGxvdFR5cGUgPyB7cGxvdFR5cGU6IGZpbHRlci5wbG90VHlwZX0gOiB7fSlcbiAgfTtcblxuICBpZiAobWVyZ2VEb21haW4pIHtcbiAgICBjb25zdCBkb21haW5TdGVwczogKEZpbHRlciAmIHtzdGVwPzogbnVtYmVyfSkgfCBudWxsID1cbiAgICAgIG1lcmdlRmlsdGVyRG9tYWluKG5ld0ZpbHRlciwgZGF0YXNldHMpID8/ICh7fSBhcyBGaWx0ZXIpO1xuICAgIGlmIChkb21haW5TdGVwcykge1xuICAgICAgY29uc3Qge2RvbWFpbiwgc3RlcH0gPSBkb21haW5TdGVwcztcbiAgICAgIG5ld0ZpbHRlci5kb21haW4gPSBkb21haW47XG4gICAgICBpZiAobmV3RmlsdGVyLnN0ZXAgIT09IHN0ZXApIHtcbiAgICAgICAgbmV3RmlsdGVyLnN0ZXAgPSBzdGVwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IGlmIHdlIGRvbid0IHNldCBmaWx0ZXIgdmFsdWUgaW4gZmlsdGVyUHJvcHMsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhpc1xuICBpZiAoZmlsdGVyRGF0YXNldEluZGV4ID4gMCkge1xuICAgIC8vIGRvbid0IHJlc2V0IHRoZSBmaWx0ZXIgdmFsdWUgaWYgd2UgYXJlIGp1c3QgYWRkaW5nIGEgc3luY2VkIGRhdGFzZXRcbiAgICBuZXdGaWx0ZXIgPSB7XG4gICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICB2YWx1ZTogZmlsdGVyLnZhbHVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmlsdGVyOiBuZXdGaWx0ZXIsXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIHRoZSBkb21haW5zIG9mIGEgZmlsdGVyIGluIGNhc2UgaXQgYXBwbGllcyB0byBtdWx0aXBsZSBkYXRhc2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWx0ZXJEb21haW4oXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0czogUmVjb3JkPHN0cmluZywgS2VwbGVyVGFibGVNb2RlbDxhbnksIGFueT4+XG4pOiAoRmlsdGVyICYge3N0ZXA/OiBudW1iZXJ9KSB8IG51bGwge1xuICBsZXQgZG9tYWluU3RlcHM6IChGaWx0ZXIgJiB7c3RlcD86IG51bWJlcn0pIHwgbnVsbCA9IG51bGw7XG4gIGlmICghZmlsdGVyPy5kYXRhSWQ/Lmxlbmd0aCkge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cbiAgZmlsdGVyLmRhdGFJZC5mb3JFYWNoKChmaWx0ZXJEYXRhSWQsIGlkeCkgPT4ge1xuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tmaWx0ZXJEYXRhSWRdO1xuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZGF0YXNldC5nZXRDb2x1bW5GaWx0ZXJQcm9wcyhmaWx0ZXIubmFtZVtpZHhdKTtcbiAgICBkb21haW5TdGVwcyA9IG1lcmdlRmlsdGVyRG9tYWluU3RlcChkb21haW5TdGVwcyA/PyAoe30gYXMgRmlsdGVyKSwgZmlsdGVyUHJvcHMpO1xuICB9KTtcbiAgcmV0dXJuIGRvbWFpblN0ZXBzO1xufVxuXG4vKipcbiAqIE1lcmdlIG9uZSBmaWx0ZXIgd2l0aCBvdGhlciBmaWx0ZXIgcHJvcCBkb21haW5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVyRG9tYWluU3RlcChcbiAgZmlsdGVyOiBGaWx0ZXIgfCBudWxsLFxuICBmaWx0ZXJQcm9wcz86IFBhcnRpYWw8RmlsdGVyPlxuKTogKEZpbHRlciAmIHtzdGVwPzogbnVtYmVyfSkgfCBudWxsIHtcbiAgaWYgKCFmaWx0ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICghZmlsdGVyUHJvcHMpIHtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgaWYgKChmaWx0ZXIuZmllbGRUeXBlICYmIGZpbHRlci5maWVsZFR5cGUgIT09IGZpbHRlclByb3BzLmZpZWxkVHlwZSkgfHwgIWZpbHRlclByb3BzLmRvbWFpbikge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjb25zdCBzb3J0ZWREb21haW4gPSAhZmlsdGVyLmRvbWFpblxuICAgID8gZmlsdGVyUHJvcHMuZG9tYWluXG4gICAgOiBbLi4uKGZpbHRlci5kb21haW4gfHwgW10pLCAuLi4oZmlsdGVyUHJvcHMuZG9tYWluIHx8IFtdKV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgLy8gdXNlIG1pbiBtYXggYXMgZGVmYXVsdCBkb21haW5cbiAgICBkb21haW46IFtzb3J0ZWREb21haW5bMF0sIHNvcnRlZERvbWFpbltzb3J0ZWREb21haW4ubGVuZ3RoIC0gMV1dXG4gIH07XG5cbiAgc3dpdGNoIChmaWx0ZXJQcm9wcy5maWVsZFR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaDM6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZGF0ZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5ld0ZpbHRlcixcbiAgICAgICAgZG9tYWluOiB1bmlxdWUoc29ydGVkRG9tYWluKVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDoge1xuICAgICAgY29uc3Qgc3RlcCA9XG4gICAgICAgIChmaWx0ZXIgYXMgVGltZVJhbmdlRmlsdGVyKS5zdGVwIDwgKGZpbHRlclByb3BzIGFzIFRpbWVSYW5nZUZpZWxkRG9tYWluKS5zdGVwXG4gICAgICAgICAgPyAoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikuc3RlcFxuICAgICAgICAgIDogKGZpbHRlclByb3BzIGFzIFRpbWVSYW5nZUZpZWxkRG9tYWluKS5zdGVwO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIHN0ZXBcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5ld0ZpbHRlcjtcbiAgfVxufVxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogR2VuZXJhdGVzIHBvbHlnb24gZmlsdGVyXG4gKi9cbmV4cG9ydCBjb25zdCBmZWF0dXJlVG9GaWx0ZXJWYWx1ZSA9IChcbiAgZmVhdHVyZTogRmVhdHVyZSxcbiAgZmlsdGVySWQ6IHN0cmluZyxcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IEZlYXR1cmVWYWx1ZSA9PiAoe1xuICAuLi5mZWF0dXJlLFxuICBpZDogZmVhdHVyZS5pZCxcbiAgcHJvcGVydGllczoge1xuICAgIC4uLmZlYXR1cmUucHJvcGVydGllcyxcbiAgICAuLi5wcm9wZXJ0aWVzLFxuICAgIGZpbHRlcklkXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsdGVySWRJbkZlYXR1cmUgPSAoZjogRmVhdHVyZVZhbHVlKTogc3RyaW5nID0+IGdldChmLCBbJ3Byb3BlcnRpZXMnLCAnZmlsdGVySWQnXSk7XG5cbi8qKlxuICogR2VuZXJhdGVzIHBvbHlnb24gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBvbHlnb25GaWx0ZXI8XG4gIEwgZXh0ZW5kcyB7Y29uZmlnOiB7ZGF0YUlkOiBzdHJpbmcgfCBudWxsOyBsYWJlbDogc3RyaW5nfTsgaWQ6IHN0cmluZ31cbj4obGF5ZXJzOiBMW10sIGZlYXR1cmU6IEZlYXR1cmUpOiBQb2x5Z29uRmlsdGVyIHtcbiAgY29uc3QgZGF0YUlkID0gbGF5ZXJzLm1hcChsID0+IGwuY29uZmlnLmRhdGFJZCkuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCk7XG4gIGNvbnN0IGxheWVySWQgPSBsYXllcnMubWFwKGwgPT4gbC5pZCk7XG4gIGNvbnN0IG5hbWUgPSBsYXllcnMubWFwKGwgPT4gbC5jb25maWcubGFiZWwpO1xuICBjb25zdCBmaWx0ZXIgPSBnZXREZWZhdWx0RmlsdGVyKHtkYXRhSWR9KTtcbiAgcmV0dXJuIHtcbiAgICAuLi5maWx0ZXIsXG4gICAgZml4ZWREb21haW46IHRydWUsXG4gICAgdHlwZTogRklMVEVSX1RZUEVTLnBvbHlnb24sXG4gICAgbmFtZSxcbiAgICBsYXllcklkLFxuICAgIHZhbHVlOiBmZWF0dXJlVG9GaWx0ZXJWYWx1ZShmZWF0dXJlLCBmaWx0ZXIuaWQsIHtpc1Zpc2libGU6IHRydWV9KVxuICB9O1xufVxuXG4vKipcbiAqIFJ1biBmaWx0ZXIgZW50aXJlbHkgb24gQ1BVXG4gKi9cbmludGVyZmFjZSBTdGF0ZVR5cGU8SyBleHRlbmRzIEtlcGxlclRhYmxlTW9kZWw8SywgTD4sIEw+IHtcbiAgbGF5ZXJzOiBMW107XG4gIGZpbHRlcnM6IEZpbHRlcltdO1xuICBkYXRhc2V0czoge1tpZDogc3RyaW5nXTogS307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJEYXRhc2V0Q1BVPFQgZXh0ZW5kcyBTdGF0ZVR5cGU8SywgTD4sIEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIEw+LCBMPihcbiAgc3RhdGU6IFQsXG4gIGRhdGFJZDogc3RyaW5nXG4pOiBUIHtcbiAgY29uc3QgZGF0YXNldEZpbHRlcnMgPSBzdGF0ZS5maWx0ZXJzLmZpbHRlcihmID0+IGYuZGF0YUlkLmluY2x1ZGVzKGRhdGFJZCkpO1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcblxuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBjcHVGaWx0ZXJlZERhdGFzZXQgPSBkYXRhc2V0LmZpbHRlclRhYmxlQ1BVKGRhdGFzZXRGaWx0ZXJzLCBzdGF0ZS5sYXllcnMpO1xuXG4gIHJldHVybiBzZXQoWydkYXRhc2V0cycsIGRhdGFJZF0sIGNwdUZpbHRlcmVkRGF0YXNldCwgc3RhdGUpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHBhcnNlZCBmaWx0ZXJzIHdpdGggZGF0YXNldHMgYW5kIGFkZCBmaWx0ZXJQcm9wcyB0byBmaWVsZFxuICovXG50eXBlIE1pblZpc1N0YXRlRm9yRmlsdGVyID0gUGljazxWaXNTdGF0ZSwgJ2xheWVycycgfCAnZGF0YXNldHMnIHwgJ2lzTWVyZ2luZ0RhdGFzZXRzJz47XG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHM8XG4gIFMgZXh0ZW5kcyBNaW5WaXNTdGF0ZUZvckZpbHRlcixcbiAgSyBleHRlbmRzIEtlcGxlclRhYmxlTW9kZWw8SywgTD4sXG4gIEwgZXh0ZW5kcyB7Y29uZmlnOiB7ZGF0YUlkOiBzdHJpbmcgfCBudWxsOyBsYWJlbDogc3RyaW5nfTsgaWQ6IHN0cmluZ31cbj4oXG4gIHN0YXRlOiBTLFxuICBmaWx0ZXJzVG9WYWxpZGF0ZTogUGFyc2VkRmlsdGVyW10gPSBbXVxuKToge1xuICB2YWxpZGF0ZWQ6IEZpbHRlcltdO1xuICBmYWlsZWQ6IEZpbHRlcltdO1xuICB1cGRhdGVkRGF0YXNldHM6IFNbJ2RhdGFzZXRzJ107XG59IHtcbiAgLy8gVE9ETyBCZXR0ZXIgVHlwaW5ncyBoZXJlXG4gIGNvbnN0IHZhbGlkYXRlZDogYW55W10gPSBbXTtcbiAgY29uc3QgZmFpbGVkOiBhbnlbXSA9IFtdO1xuICBjb25zdCB7ZGF0YXNldHMsIGxheWVyc30gPSBzdGF0ZTtcbiAgbGV0IHVwZGF0ZWREYXRhc2V0cyA9IGRhdGFzZXRzO1xuXG4gIC8vIG1lcmdlIGZpbHRlcnNcbiAgZmlsdGVyc1RvVmFsaWRhdGUuZm9yRWFjaChmaWx0ZXJUb1ZhbGlkYXRlID0+IHtcbiAgICAvLyB3ZSBjYW4gb25seSBsb29rIGZvciBkYXRhc2V0cyBkZWZpbmUgaW4gdGhlIGZpbHRlciBkYXRhSWRcbiAgICBjb25zdCBkYXRhc2V0SWRzID0gdG9BcnJheShmaWx0ZXJUb1ZhbGlkYXRlLmRhdGFJZCk7XG5cbiAgICAvLyB3ZSBjYW4gbWVyZ2UgYSBmaWx0ZXIgb25seSBpZiBhbGwgZGF0YXNldHMgaW4gZmlsdGVyLmRhdGFJZCBhcmUgbG9hZGVkXG4gICAgaWYgKGRhdGFzZXRJZHMuZXZlcnkoZCA9PiBkYXRhc2V0c1tkXSAmJiAhc3RhdGUuaXNNZXJnaW5nRGF0YXNldHNbZF0pKSB7XG4gICAgICAvLyBhbGwgZGF0YXNldElkcyBpbiBmaWx0ZXIgbXVzdCBiZSBwcmVzZW50IHRoZSBzdGF0ZSBkYXRhc2V0c1xuICAgICAgY29uc3Qge3ZhbGlkYXRlZEZpbHRlciwgYXBwbHlUb0RhdGFzZXRzLCBhdWdtZW50ZWREYXRhc2V0c30gPSBkYXRhc2V0SWRzLnJlZHVjZTx7XG4gICAgICAgIHZhbGlkYXRlZEZpbHRlcjogRmlsdGVyIHwgbnVsbDtcbiAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBzdHJpbmdbXTtcbiAgICAgICAgYXVnbWVudGVkRGF0YXNldHM6IHtbZGF0YXNldElkOiBzdHJpbmddOiBhbnl9O1xuICAgICAgfT4oXG4gICAgICAgIChhY2MsIGRhdGFzZXRJZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFzZXQgPSB1cGRhdGVkRGF0YXNldHNbZGF0YXNldElkXTtcbiAgICAgICAgICBjb25zdCBkYXRhc2V0TGF5ZXJzID0gbGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YXNldC5pZCk7XG4gICAgICAgICAgY29uc3QgdG9WYWxpZGF0ZSA9IGFjYy52YWxpZGF0ZWRGaWx0ZXIgfHwgZmlsdGVyVG9WYWxpZGF0ZTtcblxuICAgICAgICAgIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IHZhbGlkYXRlRmlsdGVyV2l0aERhdGEoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnVwZGF0ZWREYXRhc2V0cyxcbiAgICAgICAgICAgICAgLi4uYWNjLmF1Z21lbnRlZERhdGFzZXRzLFxuICAgICAgICAgICAgICBbZGF0YXNldElkXTogYWNjLmF1Z21lbnRlZERhdGFzZXRzW2RhdGFzZXRJZF0gfHwgZGF0YXNldFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGFzZXRJZCxcbiAgICAgICAgICAgIHRvVmFsaWRhdGUsXG4gICAgICAgICAgICBkYXRhc2V0TGF5ZXJzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh1cGRhdGVkRmlsdGVyKSB7XG4gICAgICAgICAgICAvLyBtZXJnZSBmaWx0ZXIgZG9tYWluIHN0ZXBcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlZEZpbHRlcjogdXBkYXRlZEZpbHRlcixcblxuICAgICAgICAgICAgICBhcHBseVRvRGF0YXNldHM6IFsuLi5hY2MuYXBwbHlUb0RhdGFzZXRzLCBkYXRhc2V0SWRdLFxuXG4gICAgICAgICAgICAgIGF1Z21lbnRlZERhdGFzZXRzOiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLmF1Z21lbnRlZERhdGFzZXRzLFxuICAgICAgICAgICAgICAgIFtkYXRhc2V0SWRdOiB1cGRhdGVkRGF0YXNldFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWxpZGF0ZWRGaWx0ZXI6IG51bGwsXG4gICAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBbXSxcbiAgICAgICAgICBhdWdtZW50ZWREYXRhc2V0czoge31cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHZhbGlkYXRlZEZpbHRlciAmJiBpc0VxdWFsKGRhdGFzZXRJZHMsIGFwcGx5VG9EYXRhc2V0cykpIHtcbiAgICAgICAgbGV0IGRvbWFpbiA9IHZhbGlkYXRlZEZpbHRlci5kb21haW47XG4gICAgICAgIGlmICgodmFsaWRhdGVkRmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikuc3luY2VkV2l0aExheWVyVGltZWxpbmUpIHtcbiAgICAgICAgICBjb25zdCBhbmltYXRhYmxlTGF5ZXJzID0gZ2V0QW5pbWF0YWJsZVZpc2libGVMYXllcnMobGF5ZXJzKTtcbiAgICAgICAgICBkb21haW4gPSBtZXJnZVRpbWVEb21haW5zKFtcbiAgICAgICAgICAgIC4uLmFuaW1hdGFibGVMYXllcnMubWFwKGwgPT4gbC5jb25maWcuYW5pbWF0aW9uLmRvbWFpbiB8fCBbMCwgMF0pLFxuICAgICAgICAgICAgdmFsaWRhdGVkRmlsdGVyLmRvbWFpblxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsaWRhdGVkRmlsdGVyLnZhbHVlID0gYWRqdXN0VmFsdWVUb0ZpbHRlckRvbWFpbihmaWx0ZXJUb1ZhbGlkYXRlLnZhbHVlLCB7XG4gICAgICAgICAgLi4udmFsaWRhdGVkRmlsdGVyLFxuICAgICAgICAgIGRvbWFpblxuICAgICAgICB9KTtcblxuICAgICAgICB2YWxpZGF0ZWQucHVzaCh1cGRhdGVGaWx0ZXJQbG90KGRhdGFzZXRzLCB2YWxpZGF0ZWRGaWx0ZXIpKTtcbiAgICAgICAgdXBkYXRlZERhdGFzZXRzID0ge1xuICAgICAgICAgIC4uLnVwZGF0ZWREYXRhc2V0cyxcbiAgICAgICAgICAuLi5hdWdtZW50ZWREYXRhc2V0c1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbGVkLnB1c2goZmlsdGVyVG9WYWxpZGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZhaWxlZC5wdXNoKGZpbHRlclRvVmFsaWRhdGUpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHt2YWxpZGF0ZWQsIGZhaWxlZCwgdXBkYXRlZERhdGFzZXRzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZpbHRlclBsb3QoZmlsdGVyOiBGaWx0ZXIsIGRhdGFJZDogc3RyaW5nKSB7XG4gIGxldCBuZXh0RmlsdGVyID0gZmlsdGVyO1xuXG4gIGNvbnN0IHJhbmdlRmlsdGVyID0gZmlsdGVyIGFzIFJhbmdlRmlsdGVyO1xuICBpZiAocmFuZ2VGaWx0ZXIuYmlucyAmJiByYW5nZUZpbHRlci5iaW5zW2RhdGFJZF0pIHtcbiAgICBjb25zdCB7W2RhdGFJZF06IF9kZWxldGUsIC4uLm5leHRCaW5zfSA9IHJhbmdlRmlsdGVyLmJpbnM7XG4gICAgbmV4dEZpbHRlciA9IHtcbiAgICAgIC4uLnJhbmdlRmlsdGVyLFxuICAgICAgYmluczogbmV4dEJpbnNcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdGltZUZpbHRlciA9IGZpbHRlciBhcyBUaW1lUmFuZ2VGaWx0ZXI7XG4gIGlmICh0aW1lRmlsdGVyLnRpbWVCaW5zICYmIHRpbWVGaWx0ZXIudGltZUJpbnNbZGF0YUlkXSkge1xuICAgIGNvbnN0IHtbZGF0YUlkXTogX19kZWxldGUsIC4uLm5leHRUaW1lQmluc30gPSB0aW1lRmlsdGVyLnRpbWVCaW5zO1xuICAgIG5leHRGaWx0ZXIgPSB7XG4gICAgICAuLi5uZXh0RmlsdGVyLFxuICAgICAgdGltZUJpbnM6IG5leHRUaW1lQmluc1xuICAgIH0gYXMgRmlsdGVyO1xuICB9XG5cbiAgcmV0dXJuIG5leHRGaWx0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVGltZURvbWFpbihkb21haW4pIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZG9tYWluKSAmJiBkb21haW4uZXZlcnkoTnVtYmVyLmlzRmluaXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRIaW50Rm9ybWF0dGVyKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghaXNWYWxpZFRpbWVEb21haW4oZG9tYWluKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uV2Vla1xuICAgID8gJ0wnXG4gICAgOiBkaWZmID4gZHVyYXRpb25EYXlcbiAgICA/ICdMIExUJ1xuICAgIDogZGlmZiA+IGR1cmF0aW9uSG91clxuICAgID8gJ0xUJ1xuICAgIDogJ0xUUyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NpZGVGaWx0ZXIoZmlsdGVyOiBGaWx0ZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpbHRlci52aWV3ID09PSBGSUxURVJfVklFV19UWVBFUy5zaWRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VUaW1lRG9tYWlucyhkb21haW5zOiAoW251bWJlciwgbnVtYmVyXSB8IG51bGwpW10pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgcmV0dXJuIGRvbWFpbnMucmVkdWNlKFxuICAgIChhY2M6IFtudW1iZXIsIG51bWJlcl0sIGRvbWFpbikgPT4gW1xuICAgICAgTWF0aC5taW4oYWNjWzBdLCBkb21haW4/LlswXSA/PyBJbmZpbml0eSksXG4gICAgICBNYXRoLm1heChhY2NbMV0sIGRvbWFpbj8uWzFdID8/IC1JbmZpbml0eSlcbiAgICBdLFxuICAgIFtOdW1iZXIoSW5maW5pdHkpLCAtSW5maW5pdHldXG4gICkgYXMgW251bWJlciwgbnVtYmVyXTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0xheWVyfSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllckFuaW1hdGFibGUobGF5ZXI6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gbGF5ZXIuY29uZmlnLmFuaW1hdGlvbj8uZW5hYmxlZCAmJiBBcnJheS5pc0FycmF5KGxheWVyLmNvbmZpZy5hbmltYXRpb24uZG9tYWluKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0xheWVyW119IGxheWVyc1xuICogQHJldHVybnMge0xheWVyW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmltYXRhYmxlVmlzaWJsZUxheWVycyhsYXllcnM6IGFueVtdKTogYW55W10ge1xuICByZXR1cm4gbGF5ZXJzLmZpbHRlcihsID0+IGlzTGF5ZXJBbmltYXRhYmxlKGwpICYmIGwuY29uZmlnLmlzVmlzaWJsZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtMYXllcltdfSBsYXllcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJucyB7TGF5ZXJbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuaW1hdGFibGVWaXNpYmxlTGF5ZXJzQnlUeXBlKGxheWVyczogYW55W10sIHR5cGU6IHN0cmluZyk6IGFueVtdIHtcbiAgcmV0dXJuIGdldEFuaW1hdGFibGVWaXNpYmxlTGF5ZXJzKGxheWVycykuZmlsdGVyKGwgPT4gbC50eXBlID09PSB0eXBlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0xheWVyW119IGxheWVyc1xuICogQHJldHVybnMge0xheWVyW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcnZhbEJhc2VkQW5pbWF0aW9uTGF5ZXJzKGxheWVyczogYW55W10pOiBhbnlbXSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGdldEFuaW1hdGFibGVWaXNpYmxlTGF5ZXJzKGxheWVycykuZmlsdGVyKGwgPT4gbC5jb25maWcuYW5pbWF0aW9uPy50aW1lU3RlcHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWx0ZXJXaXRoVGltZWxpbmUoXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyLFxuICBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZ1xuKToge2ZpbHRlcjogVGltZVJhbmdlRmlsdGVyOyBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZ30ge1xuICBpZiAoXG4gICAgZmlsdGVyPy50eXBlID09PSBGSUxURVJfVFlQRVMudGltZVJhbmdlICYmXG4gICAgZmlsdGVyLnN5bmNlZFdpdGhMYXllclRpbWVsaW5lICYmXG4gICAgYW5pbWF0aW9uQ29uZmlnICYmXG4gICAgQXJyYXkuaXNBcnJheShhbmltYXRpb25Db25maWcuZG9tYWluKVxuICApIHtcbiAgICBjb25zdCBkb21haW4gPSBtZXJnZVRpbWVEb21haW5zKFtmaWx0ZXIuZG9tYWluLCBhbmltYXRpb25Db25maWcuZG9tYWluIGFzIFtudW1iZXIsIG51bWJlcl1dKTtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgZG9tYWluXG4gICAgICB9LFxuICAgICAgYW5pbWF0aW9uQ29uZmlnOiB7XG4gICAgICAgIC4uLmFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgZG9tYWluXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4ge2ZpbHRlciwgYW5pbWF0aW9uQ29uZmlnfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlU291cmNlRG9tYWluVG9EZXN0aW5hdGlvbihcbiAgc291cmNlRG9tYWluOiBbbnVtYmVyLCBudW1iZXJdLFxuICBkZXN0aW5hdGlvbkRvbWFpbjogW251bWJlciwgbnVtYmVyXVxuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIC8vIDAgLT4gMTAwOiBtZXJnZWQgZG9tYWlucyB0MSAtIHQwID09PSAxMDAlIGZpbHRlciBtYXkgYWxyZWFkeSBoYXZlIHRoaXMgaW5mbyB3aGljaCBpcyBnb29kXG4gIGNvbnN0IHNvdXJjZURvbWFpblNpemUgPSBzb3VyY2VEb21haW5bMV0gLSBzb3VyY2VEb21haW5bMF07XG4gIC8vIDEwIC0+IDIwOiBhbmltYXRpb25Db25maWcgZG9tYWluIGQxIC0gZDAgPT09IGFuaW1hdGlvbkNvbmZpZyBzaXplXG4gIGNvbnN0IGRlc3RpbmF0aW9uRG9tYWluU2l6ZSA9IGRlc3RpbmF0aW9uRG9tYWluWzFdIC0gZGVzdGluYXRpb25Eb21haW5bMF07XG4gIC8vIHNjYWxlIGFuaW1hdGlvbkNvbmZpZyBzaXplIHVzaW5nIGRvbWFpbiBzaXplXG4gIGNvbnN0IHNjYWxlZFNvdXJjZURvbWFpblNpemUgPSAoc291cmNlRG9tYWluU2l6ZSAvIGRlc3RpbmF0aW9uRG9tYWluU2l6ZSkgKiAxMDA7XG4gIC8vIHNjYWxlIGQwIC0gdDAgdXNpbmcgZG9tYWluIHNpemUgdG8gZmluZCBzdGFydGluZyBwb2ludFxuICBjb25zdCBvZmZzZXQgPSBzb3VyY2VEb21haW5bMF0gLSBkZXN0aW5hdGlvbkRvbWFpblswXTtcbiAgY29uc3Qgc2NhbGVkT2Zmc2V0ID0gKG9mZnNldCAvIGRlc3RpbmF0aW9uRG9tYWluU2l6ZSkgKiAxMDA7XG4gIHJldHVybiBbc2NhbGVkT2Zmc2V0LCBzY2FsZWRTb3VyY2VEb21haW5TaXplICsgc2NhbGVkT2Zmc2V0XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclNjYWxlZFRpbWVsaW5lKGZpbHRlciwgYW5pbWF0aW9uQ29uZmlnKTogW251bWJlciwgbnVtYmVyXSB8IFtdIHtcbiAgaWYgKCEoZmlsdGVyLnN5bmNlZFdpdGhMYXllclRpbWVsaW5lICYmIGFuaW1hdGlvbkNvbmZpZz8uZG9tYWluKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBzY2FsZVNvdXJjZURvbWFpblRvRGVzdGluYXRpb24oYW5pbWF0aW9uQ29uZmlnLmRvbWFpbiwgZmlsdGVyLmRvbWFpbik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxjQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFB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
1250
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZ2V0IiwiX2lzRXF1YWwiLCJfZDNBcnJheSIsIl9ib29sZWFuV2l0aGluIiwiX2hlbHBlcnMiLCJfZGVjaW1hbCIsIl9jb25zdGFudHMiLCJTY2FsZVV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfaDNKcyIsIl9jb21tb25VdGlscyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfcGxvdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkdXJhdGlvblNlY29uZCIsImV4cG9ydHMiLCJkdXJhdGlvbk1pbnV0ZSIsImR1cmF0aW9uSG91ciIsImR1cmF0aW9uRGF5IiwiZHVyYXRpb25XZWVrIiwiZHVyYXRpb25ZZWFyIiwiVGltZXN0YW1wU3RlcE1hcCIsIm1heCIsInN0ZXAiLCJQT1NJVElWRV9JTkZJTklUWSIsIkZJTFRFUl9VUERBVEVSX1BST1BTIiwia2V5TWlycm9yIiwiZGF0YUlkIiwibmFtZSIsImxheWVySWQiLCJGSUxURVJfQ09NUE9ORU5UUyIsIkZJTFRFUl9UWVBFUyIsInNlbGVjdCIsIm11bHRpU2VsZWN0IiwidGltZVJhbmdlIiwicmFuZ2UiLCJwb2x5Z29uIiwiREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFIiwiaWQiLCJlbmFibGVkIiwiZml4ZWREb21haW4iLCJ2aWV3IiwiRklMVEVSX1ZJRVdfVFlQRVMiLCJzaWRlIiwiaXNBbmltYXRpbmciLCJhbmltYXRpb25XaW5kb3ciLCJBTklNQVRJT05fV0lORE9XIiwiZnJlZSIsInNwZWVkIiwidHlwZSIsImZpZWxkSWR4IiwiZG9tYWluIiwidmFsdWUiLCJwbG90VHlwZSIsIlBMT1RfVFlQRVMiLCJoaXN0b2dyYW0iLCJ5QXhpcyIsImdwdSIsIkZJTFRFUl9JRF9MRU5HVEgiLCJMQVlFUl9GSUxURVJTIiwiZ2V0RGVmYXVsdEZpbHRlciIsIl9yZWYiLCJ1bmRlZmluZWQiLCJ0b0FycmF5IiwiZ2VuZXJhdGVIYXNoSWQiLCJzaG91bGRBcHBseUZpbHRlciIsImRhdGFzZXRJZCIsImRhdGFJZHMiLCJpbmNsdWRlcyIsInZhbGlkYXRlUG9seWdvbkZpbHRlciIsImRhdGFzZXQiLCJsYXllcnMiLCJmYWlsZWQiLCJpc1ZhbGlkRmlsdGVyVmFsdWUiLCJpc1ZhbGlkRGF0YXNldCIsImxheWVyIiwiZmluZCIsImwiLCJmaWx0ZXJWYWxpZGF0b3JzIiwidmFsaWRhdGVGaWx0ZXIiLCJkYXRhc2V0cyIsIl9maWx0ZXIkdmlldyIsImZpbHRlckRhdGFJZCIsImZpbHRlckRhdGFzZXRJbmRleCIsImluZGV4T2YiLCJpbml0aWFsaXplRmlsdGVyIiwiZmllbGROYW1lIiwiX2FwcGx5RmlsdGVyRmllbGROYW1lIiwiYXBwbHlGaWx0ZXJGaWVsZE5hbWUiLCJtZXJnZURvbWFpbiIsInVwZGF0ZWRGaWx0ZXIiLCJ1cGRhdGVkRGF0YXNldCIsInZhbGlkYXRlRmlsdGVyWUF4aXMiLCJ2YWxpZGF0ZUZpbHRlcldpdGhEYXRhIiwicHJvdG90eXBlIiwiZmllbGRzIiwiX2ZpbHRlciIsIm1hdGNoZWRBeGlzIiwiX3JlZjIiLCJnZXRGaWx0ZXJQcm9wcyIsImZpZWxkIiwiZmllbGREb21haW4iLCJmaWx0ZXJQcm9wcyIsImZpZWxkVHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsInJlYWwiLCJpbnRlZ2VyIiwidHlwZU9wdGlvbnMiLCJzdHJpbmciLCJoMyIsImRhdGUiLCJ0aW1lc3RhbXAiLCJlbmxhcmdlZCIsImdldFBvbHlnb25GaWx0ZXJGdW5jdG9yIiwiZGF0YUNvbnRhaW5lciIsImdldFBvc2l0aW9uIiwiZ2V0UG9zaXRpb25BY2Nlc3NvciIsIkxBWUVSX1RZUEVTIiwicG9pbnQiLCJpY29uIiwiZGF0YSIsInBvcyIsImV2ZXJ5IiwiaXNGaW5pdGUiLCJpc0luUG9seWdvbiIsImFyYyIsImxpbmUiLCJoZXhhZ29uSWQiLCJkYXRhVG9GZWF0dXJlIiwiY2VudHJvaWRzIiwiY2VudHJvaWQiLCJpbmRleCIsImgzSXNWYWxpZCIsImdldENlbnRyb2lkIiwiZ2VvanNvbiIsImNhbkFwcGx5RmVhdHVyZUZpbHRlciIsImZlYXR1cmUiLCJCb29sZWFuIiwiZ2VvbWV0cnkiLCJnZXRGaWx0ZXJGdW5jdGlvbiIsInZhbHVlQWNjZXNzb3IiLCJkZWZhdWx0RnVuYyIsImlzSW5SYW5nZSIsIm1hcHBlZFZhbHVlIiwiYWNjZXNzb3IiLCJBcnJheSIsImlzQXJyYXkiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJsYXllckZpbHRlckZ1bmN0aW9ucyIsIm1hcCIsImNvbmZpZyIsImZpbHRlckZ1bmMiLCJ1cGRhdGVGaWx0ZXJEYXRhSWQiLCJmaWx0ZXJEYXRhQnlGaWx0ZXJUeXBlcyIsIl9yZWYzIiwiZHluYW1pY0RvbWFpbkZpbHRlcnMiLCJjcHVGaWx0ZXJzIiwiZmlsdGVyRnVuY3MiLCJmaWx0ZXJlZEluZGV4Rm9yRG9tYWluIiwiZmlsdGVyZWRJbmRleCIsImZpbHRlckNvbnRleHQiLCJmaWx0ZXJGdW5jQ2FsbGVyIiwibnVtUm93cyIsIm1hdGNoRm9yRG9tYWluIiwibWF0Y2hGb3JSZW5kZXIiLCJnZXRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJzIiwib3B0IiwiZmlsdGVyUmVjb3JkIiwiZHluYW1pY0RvbWFpbiIsImNwdSIsImYiLCJpZ25vcmVEb21haW4iLCJjcHVPbmx5IiwiZGlmZkZpbHRlcnMiLCJvbGRGaWx0ZXJSZWNvcmQiLCJmaWx0ZXJDaGFuZ2VkIiwiZW50cmllcyIsIl9yZWY0IiwiX3JlZjUiLCJfc2xpY2VkVG9BcnJheTIiLCJyZWNvcmQiLCJpdGVtcyIsIm9sZEZpbHRlciIsInByb3AiLCJjb25jYXQiLCJhZGp1c3RWYWx1ZVRvRmlsdGVyRG9tYWluIiwiX3JlZjYiLCJkIiwibm90TnVsbG9yVW5kZWZpbmVkIiwiZmlsdGVyZWRWYWx1ZSIsImdldE51bWVyaWNGaWVsZERvbWFpbiIsIm1hcEluZGV4IiwiZ2V0TGluZWFyRG9tYWluIiwiZGlmZiIsImdldE51bWVyaWNTdGVwU2l6ZSIsImZvcm1hdE51bWJlckJ5U3RlcCIsIk1hdGgiLCJhYnMiLCJ4IiwiZXhwb25lbnRpYWxGb3JtIiwidG9FeHBvbmVudGlhbCIsImV4cG9uZW50IiwicGFyc2VGbG9hdCIsInNwbGl0IiwiRGVjaW1hbCIsInBvdyIsInRvTnVtYmVyIiwiZ2V0VGltZXN0YW1wRmllbGREb21haW4iLCJkZWZhdWx0VGltZUZvcm1hdCIsImdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlciIsImVudHJ5IiwidmFsIiwiYm91bmQiLCJmbG9vciIsImNlaWwiLCJib29sZWFuV2l0aGluIiwidHVyZlBvaW50IiwiaXNWYWxpZFRpbWVEb21haW4iLCJpc0ZpbHRlclZhbGlkVG9TYXZlIiwidiIsImlzTmFOIiwiaW5wdXQiLCJjb29yZGluYXRlcyIsImdldENvbHVtbkZpbHRlclByb3BzIiwiX2ZpbHRlciRwbG90VHlwZSIsIl9maWx0ZXIkbWFwcGVkVmFsdWUiLCJnZXRDb2x1bW5GaWVsZElkeCIsImxpbmVDaGFydCIsInNlcmllcyIsInJvdyIsInJvd0luZGV4IiwieSIsInZhbHVlQXQiLCJfcmVmNyIsInNvcnQiLCJiIiwiYXNjZW5kaW5nIiwieURvbWFpbiIsImV4dGVudCIsInhEb21haW4iLCJ1cGRhdGVGaWx0ZXJQbG90IiwicmVtb3ZlRmlsdGVyUGxvdCIsInVwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZSIsInVwZGF0ZVJhbmdlRmlsdGVyUGxvdFR5cGUiLCJhcHBseUZpbHRlcnNUb0RhdGFzZXRzIiwiZGF0YXNldElkcyIsInJlZHVjZSIsImFjYyIsImxheWVyc1RvRmlsdGVyIiwiYXBwbGllZEZpbHRlcnMiLCJ0YWJsZSIsImZpbHRlclRhYmxlIiwib3B0aW9uIiwiZmllbGRJbmRleCIsIm5ld0ZpbHRlciIsImFzc2lnbiIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJfbWVyZ2VGaWx0ZXJEb21haW4iLCJkb21haW5TdGVwcyIsIm1lcmdlRmlsdGVyRG9tYWluIiwiX2ZpbHRlciRkYXRhSWQiLCJpZHgiLCJfZG9tYWluU3RlcHMiLCJtZXJnZUZpbHRlckRvbWFpblN0ZXAiLCJzb3J0ZWREb21haW4iLCJ1bmlxdWUiLCJmZWF0dXJlVG9GaWx0ZXJWYWx1ZSIsImZpbHRlcklkIiwicHJvcGVydGllcyIsImdldEZpbHRlcklkSW5GZWF0dXJlIiwiZ2VuZXJhdGVQb2x5Z29uRmlsdGVyIiwibGFiZWwiLCJpc1Zpc2libGUiLCJmaWx0ZXJEYXRhc2V0Q1BVIiwic3RhdGUiLCJkYXRhc2V0RmlsdGVycyIsImNwdUZpbHRlcmVkRGF0YXNldCIsImZpbHRlclRhYmxlQ1BVIiwidmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHMiLCJmaWx0ZXJzVG9WYWxpZGF0ZSIsInZhbGlkYXRlZCIsInVwZGF0ZWREYXRhc2V0cyIsImZpbHRlclRvVmFsaWRhdGUiLCJpc01lcmdpbmdEYXRhc2V0cyIsIl9kYXRhc2V0SWRzJHJlZHVjZSIsImRhdGFzZXRMYXllcnMiLCJ0b1ZhbGlkYXRlIiwidmFsaWRhdGVkRmlsdGVyIiwiX3ZhbGlkYXRlRmlsdGVyV2l0aERhIiwiYXVnbWVudGVkRGF0YXNldHMiLCJhcHBseVRvRGF0YXNldHMiLCJpc0VxdWFsIiwic3luY2VkV2l0aExheWVyVGltZWxpbmUiLCJhbmltYXRhYmxlTGF5ZXJzIiwiZ2V0QW5pbWF0YWJsZVZpc2libGVMYXllcnMiLCJtZXJnZVRpbWVEb21haW5zIiwiYW5pbWF0aW9uIiwibmV4dEZpbHRlciIsInJhbmdlRmlsdGVyIiwiYmlucyIsIl9yYW5nZUZpbHRlciRiaW5zIiwiX2RlbGV0ZSIsIm5leHRCaW5zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsInRpbWVGaWx0ZXIiLCJ0aW1lQmlucyIsIl90aW1lRmlsdGVyJHRpbWVCaW5zIiwiX19kZWxldGUiLCJuZXh0VGltZUJpbnMiLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsImlzU2lkZUZpbHRlciIsImRvbWFpbnMiLCJfZG9tYWluJCIsIl9kb21haW4kMiIsIm1pbiIsIkluZmluaXR5IiwiaXNMYXllckFuaW1hdGFibGUiLCJfbGF5ZXIkY29uZmlnJGFuaW1hdGkiLCJnZXRBbmltYXRhYmxlVmlzaWJsZUxheWVyc0J5VHlwZSIsImdldEludGVydmFsQmFzZWRBbmltYXRpb25MYXllcnMiLCJfbCRjb25maWckYW5pbWF0aW9uIiwidGltZVN0ZXBzIiwibWVyZ2VGaWx0ZXJXaXRoVGltZWxpbmUiLCJhbmltYXRpb25Db25maWciLCJzY2FsZVNvdXJjZURvbWFpblRvRGVzdGluYXRpb24iLCJzb3VyY2VEb21haW4iLCJkZXN0aW5hdGlvbkRvbWFpbiIsInNvdXJjZURvbWFpblNpemUiLCJkZXN0aW5hdGlvbkRvbWFpblNpemUiLCJzY2FsZWRTb3VyY2VEb21haW5TaXplIiwib2Zmc2V0Iiwic2NhbGVkT2Zmc2V0IiwiZ2V0RmlsdGVyU2NhbGVkVGltZWxpbmUiXSwic291cmNlcyI6WyIuLi9zcmMvZmlsdGVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBrZXlNaXJyb3IgZnJvbSAna2V5bWlycm9yJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQge2FzY2VuZGluZywgZXh0ZW50fSBmcm9tICdkMy1hcnJheSc7XG5cbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7cG9pbnQgYXMgdHVyZlBvaW50fSBmcm9tICdAdHVyZi9oZWxwZXJzJztcbmltcG9ydCB7RGVjaW1hbH0gZnJvbSAnZGVjaW1hbC5qcyc7XG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIEZJTFRFUl9UWVBFUyxcbiAgQU5JTUFUSU9OX1dJTkRPVyxcbiAgUExPVF9UWVBFUyxcbiAgTEFZRVJfVFlQRVMsXG4gIEZJTFRFUl9WSUVXX1RZUEVTXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbi8vIGltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQgKiBhcyBTY2FsZVV0aWxzIGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5pbXBvcnQge2gzSXNWYWxpZH0gZnJvbSAnaDMtanMnO1xuXG5pbXBvcnQge1xuICBFbnRyaWVzLFxuICBGaWVsZCxcbiAgUGFyc2VkRmlsdGVyLFxuICBGaWx0ZXIsXG4gIEZpbHRlckJhc2UsXG4gIFBvbHlnb25GaWx0ZXIsXG4gIEZpZWxkRG9tYWluLFxuICBUaW1lUmFuZ2VGaWVsZERvbWFpbixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVZhbHVlLFxuICBMaW5lQ2hhcnQsXG4gIFJhbmdlRmlsdGVyLFxuICBUaW1lUmFuZ2VGaWx0ZXIsXG4gIFJhbmdlRmllbGREb21haW4sXG4gIEZpbHRlckRhdGFzZXRPcHQsXG4gIEZpbHRlclJlY29yZCxcbiAgQW5pbWF0aW9uQ29uZmlnXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCB0b0FycmF5LCBub3ROdWxsb3JVbmRlZmluZWQsIGdldENlbnRyb2lkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4vZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7c2V0fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7dGltZVRvVW5peE1pbGxpLCB1bmlxdWV9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge3VwZGF0ZVRpbWVGaWx0ZXJQbG90VHlwZSwgdXBkYXRlUmFuZ2VGaWx0ZXJQbG90VHlwZX0gZnJvbSAnLi9wbG90JztcbmltcG9ydCB7S2VwbGVyVGFibGVNb2RlbH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkdXJhdGlvblNlY29uZCA9IDEwMDA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25NaW51dGUgPSBkdXJhdGlvblNlY29uZCAqIDYwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uSG91ciA9IGR1cmF0aW9uTWludXRlICogNjA7XG5leHBvcnQgY29uc3QgZHVyYXRpb25EYXkgPSBkdXJhdGlvbkhvdXIgKiAyNDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbldlZWsgPSBkdXJhdGlvbkRheSAqIDc7XG5leHBvcnQgY29uc3QgZHVyYXRpb25ZZWFyID0gZHVyYXRpb25EYXkgKiAzNjU7XG5cbi8vIFRPRE8gaXNvbGF0ZSB0eXBlcyAtIGRlcGVuZHMgb24gQGtlcGxlci5nbC9zY2hlbWFzXG50eXBlIFZpc1N0YXRlID0gYW55O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJSZXN1bHQgPSB7XG4gIGZpbHRlcmVkSW5kZXhGb3JEb21haW4/OiBudW1iZXJbXTtcbiAgZmlsdGVyZWRJbmRleD86IG51bWJlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyQ2hhbmdlZCA9IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIFtrZXkgaW4ga2V5b2YgRmlsdGVyUmVjb3JkXToge1xuICAgIFtrZXk6IHN0cmluZ106ICdhZGRlZCcgfCAnZGVsZXRlZCcgfCAnbmFtZV9jaGFuZ2VkJyB8ICd2YWx1ZV9jaGFuZ2VkJyB8ICdkYXRhSWRfY2hhbmdlZCc7XG4gIH0gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBudW1iZXIgfCBudWxsO1xuXG5leHBvcnQgY29uc3QgVGltZXN0YW1wU3RlcE1hcCA9IFtcbiAge21heDogMSwgc3RlcDogMC4wNX0sXG4gIHttYXg6IDEwLCBzdGVwOiAwLjF9LFxuICB7bWF4OiAxMDAsIHN0ZXA6IDF9LFxuICB7bWF4OiA1MDAsIHN0ZXA6IDV9LFxuICB7bWF4OiAxMDAwLCBzdGVwOiAxMH0sXG4gIHttYXg6IDUwMDAsIHN0ZXA6IDUwfSxcbiAge21heDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBzdGVwOiAxMDAwfVxuXTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9VUERBVEVSX1BST1BTID0ga2V5TWlycm9yKHtcbiAgZGF0YUlkOiBudWxsLFxuICBuYW1lOiBudWxsLFxuICBsYXllcklkOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9DT01QT05FTlRTID0ge1xuICBbRklMVEVSX1RZUEVTLnNlbGVjdF06ICdTaW5nbGVTZWxlY3RGaWx0ZXInLFxuICBbRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0XTogJ011bHRpU2VsZWN0RmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy50aW1lUmFuZ2VdOiAnVGltZVJhbmdlRmlsdGVyJyxcbiAgW0ZJTFRFUl9UWVBFUy5yYW5nZV06ICdSYW5nZUZpbHRlcicsXG4gIFtGSUxURVJfVFlQRVMucG9seWdvbl06ICdQb2x5Z29uRmlsdGVyJ1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRklMVEVSX1NUUlVDVFVSRSA9IHtcbiAgZGF0YUlkOiBbXSwgLy8gW3N0cmluZ11cbiAgaWQ6IG51bGwsXG4gIGVuYWJsZWQ6IHRydWUsXG5cbiAgLy8gdGltZSByYW5nZSBmaWx0ZXIgc3BlY2lmaWNcbiAgZml4ZWREb21haW46IGZhbHNlLFxuICB2aWV3OiBGSUxURVJfVklFV19UWVBFUy5zaWRlLFxuICBpc0FuaW1hdGluZzogZmFsc2UsXG4gIGFuaW1hdGlvbldpbmRvdzogQU5JTUFUSU9OX1dJTkRPVy5mcmVlLFxuICBzcGVlZDogMSxcblxuICAvLyBmaWVsZCBzcGVjaWZpY1xuICBuYW1lOiBbXSwgLy8gc3RyaW5nXG4gIHR5cGU6IG51bGwsXG4gIGZpZWxkSWR4OiBbXSwgLy8gW2ludGVnZXJdXG4gIGRvbWFpbjogbnVsbCxcbiAgdmFsdWU6IG51bGwsXG5cbiAgLy8gcGxvdFxuICBwbG90VHlwZToge1xuICAgIHR5cGU6IFBMT1RfVFlQRVMuaGlzdG9ncmFtXG4gIH0sXG4gIHlBeGlzOiBudWxsLFxuXG4gIC8vIG1vZGVcbiAgZ3B1OiBmYWxzZVxufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9JRF9MRU5HVEggPSA0O1xuXG5leHBvcnQgY29uc3QgTEFZRVJfRklMVEVSUyA9IFtGSUxURVJfVFlQRVMucG9seWdvbl07XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZmlsdGVyIHdpdGggYSBkYXRhc2V0IGlkIGFzIGRhdGFJZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdEZpbHRlcih7XG4gIGRhdGFJZCxcbiAgaWRcbn06IHtcbiAgZGF0YUlkPzogc3RyaW5nIHwgbnVsbCB8IHN0cmluZ1tdO1xuICBpZD86IHN0cmluZztcbn0gPSB7fSk6IEZpbHRlckJhc2U8TGluZUNoYXJ0PiB7XG4gIHJldHVybiB7XG4gICAgLi4uREVGQVVMVF9GSUxURVJfU1RSVUNUVVJFLFxuICAgIC8vIHN0b3JlIGl0IGFzIGRhdGFJZCBhbmQgaXQgY291bGQgYmUgb25lIG9yIG1hbnlcbiAgICBkYXRhSWQ6IGRhdGFJZCA/IHRvQXJyYXkoZGF0YUlkKSA6IFtdLFxuICAgIGlkOiBpZCB8fCBnZW5lcmF0ZUhhc2hJZChGSUxURVJfSURfTEVOR1RIKVxuICB9O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgZmlsdGVyIGlzIHZhbGlkIGJhc2VkIG9uIHRoZSBnaXZlbiBkYXRhSWRcbiAqIEBwYXJhbSAgZmlsdGVyIHRvIHZhbGlkYXRlXG4gKiBAcGFyYW0gIGRhdGFzZXRJZCBpZCB0byB2YWxpZGF0ZSBmaWx0ZXIgYWdhaW5zdFxuICogQHJldHVybiB0cnVlIGlmIGEgZmlsdGVyIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEFwcGx5RmlsdGVyKGZpbHRlcjogRmlsdGVyLCBkYXRhc2V0SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBkYXRhSWRzID0gdG9BcnJheShmaWx0ZXIuZGF0YUlkKTtcbiAgcmV0dXJuIGRhdGFJZHMuaW5jbHVkZXMoZGF0YXNldElkKSAmJiBmaWx0ZXIudmFsdWUgIT09IG51bGw7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGFuZCBtb2RpZmllcyBwb2x5Z29uIGZpbHRlciBzdHJ1Y3R1cmVcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcGFyYW0gZmlsdGVyXG4gKiBAcGFyYW0gbGF5ZXJzXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUG9seWdvbkZpbHRlcjxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTCBleHRlbmRzIHtpZDogc3RyaW5nfT4oXG4gIGRhdGFzZXQ6IEssXG4gIGZpbHRlcjogUG9seWdvbkZpbHRlcixcbiAgbGF5ZXJzOiBMW11cbik6IHtmaWx0ZXI6IFBvbHlnb25GaWx0ZXIgfCBudWxsOyBkYXRhc2V0OiBLfSB7XG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCB7dmFsdWUsIGxheWVySWQsIHR5cGUsIGRhdGFJZH0gPSBmaWx0ZXI7XG5cbiAgaWYgKCFsYXllcklkIHx8ICFpc1ZhbGlkRmlsdGVyVmFsdWUodHlwZSwgdmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhaWxlZDtcbiAgfVxuXG4gIGNvbnN0IGlzVmFsaWREYXRhc2V0ID0gZGF0YUlkLmluY2x1ZGVzKGRhdGFzZXQuaWQpO1xuXG4gIGlmICghaXNWYWxpZERhdGFzZXQpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgY29uc3QgbGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGxheWVySWQuaW5jbHVkZXMobC5pZCkpO1xuXG4gIGlmICghbGF5ZXIpIHtcbiAgICByZXR1cm4gZmFpbGVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmaWx0ZXI6IHtcbiAgICAgIC4uLmZpbHRlcixcbiAgICAgIGZpZWxkSWR4OiBbXVxuICAgIH0sXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIEN1c3RvbSBmaWx0ZXIgdmFsaWRhdG9yc1xuICovXG5jb25zdCBmaWx0ZXJWYWxpZGF0b3JzID0ge1xuICBbRklMVEVSX1RZUEVTLnBvbHlnb25dOiB2YWxpZGF0ZVBvbHlnb25GaWx0ZXJcbn07XG5cbi8qKlxuICogRGVmYXVsdCB2YWxpZGF0ZSBmaWx0ZXIgZnVuY3Rpb25cbiAqIEBwYXJhbSBkYXRhc2V0c1xuICogQHBhcmFtIGRhdGFzZXRJZFxuICogQHBhcmFtIGZpbHRlclxuICogQHJldHVybiAtIHtmaWx0ZXIsIGRhdGFzZXR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcjxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGRhdGFzZXRzOiBSZWNvcmQ8c3RyaW5nLCBLPixcbiAgZGF0YXNldElkOiBzdHJpbmcsXG4gIGZpbHRlcjogUGFyc2VkRmlsdGVyXG4pOiB7ZmlsdGVyOiBGaWx0ZXIgfCBudWxsOyBkYXRhc2V0OiBLfSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhc2V0SWRdO1xuICAvLyBtYXRjaCBmaWx0ZXIuZGF0YUlkXG4gIGNvbnN0IGZhaWxlZCA9IHtkYXRhc2V0LCBmaWx0ZXI6IG51bGx9O1xuICBjb25zdCBmaWx0ZXJEYXRhSWQgPSB0b0FycmF5KGZpbHRlci5kYXRhSWQpO1xuXG4gIGNvbnN0IGZpbHRlckRhdGFzZXRJbmRleCA9IGZpbHRlckRhdGFJZC5pbmRleE9mKGRhdGFzZXQuaWQpO1xuICBpZiAoZmlsdGVyRGF0YXNldEluZGV4IDwgMCB8fCAhdG9BcnJheShmaWx0ZXIubmFtZSlbZmlsdGVyRGF0YXNldEluZGV4XSkge1xuICAgIC8vIHRoZSBjdXJyZW50IGZpbHRlciBpcyBub3QgbWFwcGVkIGFnYWluc3QgdGhlIGN1cnJlbnQgZGF0YXNldFxuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICBjb25zdCBpbml0aWFsaXplRmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgLi4uZ2V0RGVmYXVsdEZpbHRlcih7ZGF0YUlkOiBmaWx0ZXIuZGF0YUlkfSksXG4gICAgLi4uZmlsdGVyLFxuICAgIGRhdGFJZDogZmlsdGVyRGF0YUlkLFxuICAgIG5hbWU6IHRvQXJyYXkoZmlsdGVyLm5hbWUpXG4gIH07XG5cbiAgY29uc3QgZmllbGROYW1lID0gaW5pdGlhbGl6ZUZpbHRlci5uYW1lW2ZpbHRlckRhdGFzZXRJbmRleF07XG4gIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IGFwcGx5RmlsdGVyRmllbGROYW1lKFxuICAgIGluaXRpYWxpemVGaWx0ZXIsXG4gICAgZGF0YXNldHMsXG4gICAgZGF0YXNldElkLFxuICAgIGZpZWxkTmFtZSxcbiAgICBmaWx0ZXJEYXRhc2V0SW5kZXgsXG4gICAge21lcmdlRG9tYWluOiB0cnVlfVxuICApO1xuXG4gIGlmICghdXBkYXRlZEZpbHRlcikge1xuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICAvLyBkb24ndCBhZGp1c3QgdmFsdWUgeWV0IGJlZm9yZSBhbGwgZGF0YXNldHMgYXJlIGxvYWRlZFxuICB1cGRhdGVkRmlsdGVyLnZpZXcgPSBmaWx0ZXIudmlldyA/PyB1cGRhdGVkRmlsdGVyLnZpZXc7XG5cbiAgaWYgKHVwZGF0ZWRGaWx0ZXIudmFsdWUgPT09IG51bGwpIHtcbiAgICAvLyBjYW5ub3QgYWRqdXN0IHNhdmVkIHZhbHVlIHRvIGZpbHRlclxuICAgIHJldHVybiBmYWlsZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpbHRlcjogdmFsaWRhdGVGaWx0ZXJZQXhpcyh1cGRhdGVkRmlsdGVyLCB1cGRhdGVkRGF0YXNldCksXG4gICAgZGF0YXNldDogdXBkYXRlZERhdGFzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBzYXZlZCBmaWx0ZXIgY29uZmlnIHdpdGggbmV3IGRhdGFcbiAqXG4gKiBAcGFyYW0gZGF0YXNldHNcbiAqIEBwYXJhbSBkYXRhc2V0SWRcbiAqIEBwYXJhbSBmaWx0ZXIgLSBmaWx0ZXIgdG8gYmUgdmFsaWRhdGVcbiAqIEBwYXJhbSBsYXllcnMgLSBsYXllcnNcbiAqIEByZXR1cm4gdmFsaWRhdGVkIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXJXaXRoRGF0YTxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGRhdGFzZXRzOiBSZWNvcmQ8c3RyaW5nLCBLPixcbiAgZGF0YXNldElkOiBzdHJpbmcsXG4gIGZpbHRlcjogUGFyc2VkRmlsdGVyLFxuICBsYXllcnM6IExbXVxuKToge2ZpbHRlcjogRmlsdGVyOyBkYXRhc2V0OiBLfSB7XG4gIHJldHVybiBmaWx0ZXIudHlwZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZmlsdGVyVmFsaWRhdG9ycywgZmlsdGVyLnR5cGUpXG4gICAgPyBmaWx0ZXJWYWxpZGF0b3JzW2ZpbHRlci50eXBlXShkYXRhc2V0c1tkYXRhc2V0SWRdLCBmaWx0ZXIsIGxheWVycylcbiAgICA6IHZhbGlkYXRlRmlsdGVyKGRhdGFzZXRzLCBkYXRhc2V0SWQsIGZpbHRlcik7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgWUF4aXNcbiAqIEBwYXJhbSBmaWx0ZXJcbiAqIEBwYXJhbSBkYXRhc2V0XG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUZpbHRlcllBeGlzKGZpbHRlciwgZGF0YXNldCkge1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG5cbiAgY29uc3Qge2ZpZWxkc30gPSBkYXRhc2V0O1xuICBjb25zdCB7eUF4aXN9ID0gZmlsdGVyO1xuICAvLyBUT0RPOiB2YWxpZGF0ZSB5QXhpcyBhZ2FpbnN0IG90aGVyIGRhdGFzZXRzXG4gIGlmICh5QXhpcykge1xuICAgIGNvbnN0IG1hdGNoZWRBeGlzID0gZmllbGRzLmZpbmQoKHtuYW1lLCB0eXBlfSkgPT4gbmFtZSA9PT0geUF4aXMubmFtZSAmJiB0eXBlID09PSB5QXhpcy50eXBlKTtcblxuICAgIGZpbHRlciA9IG1hdGNoZWRBeGlzXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgeUF4aXM6IG1hdGNoZWRBeGlzXG4gICAgICAgIH1cbiAgICAgIDogZmlsdGVyO1xuICB9XG5cbiAgcmV0dXJuIGZpbHRlcjtcbn1cblxuLyoqXG4gKiBHZXQgZGVmYXVsdCBmaWx0ZXIgcHJvcCBiYXNlZCBvbiBmaWVsZCB0eXBlXG4gKlxuICogQHBhcmFtIGZpZWxkXG4gKiBAcGFyYW0gZmllbGREb21haW5cbiAqIEByZXR1cm5zIGRlZmF1bHQgZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJQcm9wcyhcbiAgZmllbGQ6IEZpZWxkLFxuICBmaWVsZERvbWFpbjogRmllbGREb21haW5cbik6IFBhcnRpYWw8RmlsdGVyPiAmIHtmaWVsZFR5cGU6IHN0cmluZ30ge1xuICBjb25zdCBmaWx0ZXJQcm9wcyA9IHtcbiAgICAuLi5maWVsZERvbWFpbixcbiAgICBmaWVsZFR5cGU6IGZpZWxkLnR5cGUsXG4gICAgdmlldzogRklMVEVSX1ZJRVdfVFlQRVMuc2lkZVxuICB9O1xuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICB2YWx1ZTogZmllbGREb21haW4uZG9tYWluLFxuICAgICAgICB0eXBlOiBGSUxURVJfVFlQRVMucmFuZ2UsXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgdHlwZU9wdGlvbnM6IFtGSUxURVJfVFlQRVMucmFuZ2VdLFxuICAgICAgICBncHU6IHRydWVcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5ib29sZWFuOlxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9UWVBFUy5zZWxlY3QsXG4gICAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgICBncHU6IGZhbHNlXG4gICAgICB9O1xuXG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuc3RyaW5nOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmgzOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0LFxuICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgIGdwdTogZmFsc2VcbiAgICAgIH07XG5cbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXA6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICAgICAgdHlwZTogRklMVEVSX1RZUEVTLnRpbWVSYW5nZSxcbiAgICAgICAgdmlldzogRklMVEVSX1ZJRVdfVFlQRVMuZW5sYXJnZWQsXG4gICAgICAgIGZpeGVkRG9tYWluOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZmlsdGVyUHJvcHMuZG9tYWluLFxuICAgICAgICBncHU6IHRydWUsXG4gICAgICAgIHBsb3RUeXBlOiB7fVxuICAgICAgfTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFBvbHlnb25GaWx0ZXJGdW5jdG9yID0gKGxheWVyLCBmaWx0ZXIsIGRhdGFDb250YWluZXIpID0+IHtcbiAgY29uc3QgZ2V0UG9zaXRpb24gPSBsYXllci5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gIHN3aXRjaCAobGF5ZXIudHlwZSkge1xuICAgIGNhc2UgTEFZRVJfVFlQRVMucG9pbnQ6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5pY29uOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmIGlzSW5Qb2x5Z29uKHBvcywgZmlsdGVyLnZhbHVlKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5hcmM6XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5saW5lOlxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihkYXRhKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFtwb3NbMF0sIHBvc1sxXV0sXG4gICAgICAgICAgICBbcG9zWzNdLCBwb3NbNF1dXG4gICAgICAgICAgXS5ldmVyeShwb2ludCA9PiBpc0luUG9seWdvbihwb2ludCwgZmlsdGVyLnZhbHVlKSlcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgY2FzZSBMQVlFUl9UWVBFUy5oZXhhZ29uSWQ6XG4gICAgICBpZiAobGF5ZXIuZGF0YVRvRmVhdHVyZSAmJiBsYXllci5kYXRhVG9GZWF0dXJlLmNlbnRyb2lkcykge1xuICAgICAgICByZXR1cm4gZGF0YSA9PiB7XG4gICAgICAgICAgLy8gbnVsbCBvciBnZXRDZW50cm9pZCh7aWR9KVxuICAgICAgICAgIGNvbnN0IGNlbnRyb2lkID0gbGF5ZXIuZGF0YVRvRmVhdHVyZS5jZW50cm9pZHNbZGF0YS5pbmRleF07XG4gICAgICAgICAgcmV0dXJuIGNlbnRyb2lkICYmIGlzSW5Qb2x5Z29uKGNlbnRyb2lkLCBmaWx0ZXIudmFsdWUpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGEgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGdldFBvc2l0aW9uKGRhdGEpO1xuICAgICAgICBpZiAoIWgzSXNWYWxpZChpZCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9zID0gZ2V0Q2VudHJvaWQoe2lkfSk7XG4gICAgICAgIHJldHVybiBwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiBpc0luUG9seWdvbihwb3MsIGZpbHRlci52YWx1ZSk7XG4gICAgICB9O1xuICAgIGNhc2UgTEFZRVJfVFlQRVMuZ2VvanNvbjpcbiAgICAgIHJldHVybiBkYXRhID0+IHtcbiAgICAgICAgcmV0dXJuIGxheWVyLmlzSW5Qb2x5Z29uKGRhdGEsIGRhdGEuaW5kZXgsIGZpbHRlci52YWx1ZSk7XG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gKCkgPT4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIEdlb0pTT04gZmVhdHVyZSBmaWx0ZXIgY2FuIGJlIGFwcGxpZWQgdG8gYSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQXBwbHlGZWF0dXJlRmlsdGVyKGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKGZlYXR1cmU/Lmdlb21ldHJ5ICYmIFsnUG9seWdvbicsICdNdWx0aVBvbHlnb24nXS5pbmNsdWRlcyhmZWF0dXJlLmdlb21ldHJ5LnR5cGUpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gcGFyYW0gQW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHJvdyByZWNvcmQuXG4gKiBAcGFyYW0gcGFyYW0uaW5kZXggSW5kZXggb2YgdGhlIHJvdyBpbiBkYXRhIGNvbnRhaW5lci5cbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSB0byBrZWVwIHRoZSBlbGVtZW50LCBvciBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbnR5cGUgZmlsdGVyRnVuY3Rpb24gPSAoZGF0YToge2luZGV4OiBudW1iZXJ9KSA9PiBib29sZWFuO1xuXG4vKipcbiAqIEBwYXJhbSBmaWVsZCBkYXRhc2V0IEZpZWxkXG4gKiBAcGFyYW0gZGF0YUlkIERhdGFzZXQgaWRcbiAqIEBwYXJhbSBmaWx0ZXIgRmlsdGVyIG9iamVjdFxuICogQHBhcmFtIGxheWVycyBsaXN0IG9mIGxheWVycyB0byBmaWx0ZXIgdXBvblxuICogQHBhcmFtIGRhdGFDb250YWluZXIgRGF0YSBjb250YWluZXJcbiAqIEByZXR1cm4gZmlsdGVyRnVuY3Rpb25cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlckZ1bmN0aW9uPEwgZXh0ZW5kcyB7Y29uZmlnOiB7ZGF0YUlkOiBzdHJpbmcgfCBudWxsfTsgaWQ6IHN0cmluZ30+KFxuICBmaWVsZDogRmllbGQgfCBudWxsLFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgZmlsdGVyOiBGaWx0ZXIsXG4gIGxheWVyczogTFtdLFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlXG4pOiBmaWx0ZXJGdW5jdGlvbiB7XG4gIC8vIGZpZWxkIGNvdWxkIGJlIG51bGwgaW4gcG9seWdvbiBmaWx0ZXJcbiAgY29uc3QgdmFsdWVBY2Nlc3NvciA9IGZpZWxkID8gZmllbGQudmFsdWVBY2Nlc3NvciA6ICgpID0+IG51bGw7XG4gIGNvbnN0IGRlZmF1bHRGdW5jID0gKCkgPT4gdHJ1ZTtcblxuICBpZiAoZmlsdGVyLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRGdW5jO1xuICB9XG5cbiAgc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnJhbmdlOlxuICAgICAgcmV0dXJuIGRhdGEgPT4gaXNJblJhbmdlKHZhbHVlQWNjZXNzb3IoZGF0YSksIGZpbHRlci52YWx1ZSk7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMubXVsdGlTZWxlY3Q6XG4gICAgICByZXR1cm4gZGF0YSA9PiBmaWx0ZXIudmFsdWUuaW5jbHVkZXModmFsdWVBY2Nlc3NvcihkYXRhKSk7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMuc2VsZWN0OlxuICAgICAgcmV0dXJuIGRhdGEgPT4gdmFsdWVBY2Nlc3NvcihkYXRhKSA9PT0gZmlsdGVyLnZhbHVlO1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnRpbWVSYW5nZToge1xuICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEZ1bmM7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXBwZWRWYWx1ZSA9IGdldChmaWVsZCwgWydmaWx0ZXJQcm9wcycsICdtYXBwZWRWYWx1ZSddKTtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gQXJyYXkuaXNBcnJheShtYXBwZWRWYWx1ZSlcbiAgICAgICAgPyBkYXRhID0+IG1hcHBlZFZhbHVlW2RhdGEuaW5kZXhdXG4gICAgICAgIDogZGF0YSA9PiB0aW1lVG9Vbml4TWlsbGkodmFsdWVBY2Nlc3NvcihkYXRhKSwgZmllbGQuZm9ybWF0KTtcbiAgICAgIHJldHVybiBkYXRhID0+IGlzSW5SYW5nZShhY2Nlc3NvcihkYXRhKSwgZmlsdGVyLnZhbHVlKTtcbiAgICB9XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucG9seWdvbjoge1xuICAgICAgaWYgKCFsYXllcnMgfHwgIWxheWVycy5sZW5ndGggfHwgIWZpbHRlci5sYXllcklkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RnVuYztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxheWVyRmlsdGVyRnVuY3Rpb25zID0gZmlsdGVyLmxheWVySWRcbiAgICAgICAgLm1hcChpZCA9PiBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IGlkKSlcbiAgICAgICAgLmZpbHRlcihsID0+IGwgJiYgbC5jb25maWcuZGF0YUlkID09PSBkYXRhSWQpXG4gICAgICAgIC5tYXAobGF5ZXIgPT4gZ2V0UG9seWdvbkZpbHRlckZ1bmN0b3IobGF5ZXIsIGZpbHRlciwgZGF0YUNvbnRhaW5lcikpO1xuXG4gICAgICByZXR1cm4gZGF0YSA9PiBsYXllckZpbHRlckZ1bmN0aW9ucy5ldmVyeShmaWx0ZXJGdW5jID0+IGZpbHRlckZ1bmMoZGF0YSkpO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGdW5jO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVGaWx0ZXJEYXRhSWQoZGF0YUlkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IEZpbHRlckJhc2U8TGluZUNoYXJ0PiB7XG4gIHJldHVybiBnZXREZWZhdWx0RmlsdGVyKHtkYXRhSWR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckRhdGFCeUZpbHRlclR5cGVzKFxuICB7XG4gICAgZHluYW1pY0RvbWFpbkZpbHRlcnMsXG4gICAgY3B1RmlsdGVycyxcbiAgICBmaWx0ZXJGdW5jc1xuICB9OiB7XG4gICAgZHluYW1pY0RvbWFpbkZpbHRlcnM6IEZpbHRlcltdIHwgbnVsbDtcbiAgICBjcHVGaWx0ZXJzOiBGaWx0ZXJbXSB8IG51bGw7XG4gICAgZmlsdGVyRnVuY3M6IHtcbiAgICAgIFtrZXk6IHN0cmluZ106IGZpbHRlckZ1bmN0aW9uO1xuICAgIH07XG4gIH0sXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2Vcbik6IEZpbHRlclJlc3VsdCB7XG4gIGNvbnN0IGZpbHRlcmVkSW5kZXhGb3JEb21haW46IG51bWJlcltdID0gW107XG4gIGNvbnN0IGZpbHRlcmVkSW5kZXg6IG51bWJlcltdID0gW107XG5cbiAgY29uc3QgZmlsdGVyQ29udGV4dCA9IHtpbmRleDogLTEsIGRhdGFDb250YWluZXJ9O1xuICBjb25zdCBmaWx0ZXJGdW5jQ2FsbGVyID0gKGZpbHRlcjogRmlsdGVyKSA9PiBmaWx0ZXJGdW5jc1tmaWx0ZXIuaWRdKGZpbHRlckNvbnRleHQpO1xuXG4gIGNvbnN0IG51bVJvd3MgPSBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Sb3dzOyArK2kpIHtcbiAgICBmaWx0ZXJDb250ZXh0LmluZGV4ID0gaTtcblxuICAgIGNvbnN0IG1hdGNoRm9yRG9tYWluID0gZHluYW1pY0RvbWFpbkZpbHRlcnMgJiYgZHluYW1pY0RvbWFpbkZpbHRlcnMuZXZlcnkoZmlsdGVyRnVuY0NhbGxlcik7XG4gICAgaWYgKG1hdGNoRm9yRG9tYWluKSB7XG4gICAgICBmaWx0ZXJlZEluZGV4Rm9yRG9tYWluLnB1c2goZmlsdGVyQ29udGV4dC5pbmRleCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hGb3JSZW5kZXIgPSBjcHVGaWx0ZXJzICYmIGNwdUZpbHRlcnMuZXZlcnkoZmlsdGVyRnVuY0NhbGxlcik7XG4gICAgaWYgKG1hdGNoRm9yUmVuZGVyKSB7XG4gICAgICBmaWx0ZXJlZEluZGV4LnB1c2goZmlsdGVyQ29udGV4dC5pbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oZHluYW1pY0RvbWFpbkZpbHRlcnMgPyB7ZmlsdGVyZWRJbmRleEZvckRvbWFpbn0gOiB7fSksXG4gICAgLi4uKGNwdUZpbHRlcnMgPyB7ZmlsdGVyZWRJbmRleH0gOiB7fSlcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWNvcmQgb2YgZmlsdGVycyBiYXNlZCBvbiBkb21haW4gdHlwZSBhbmQgZ3B1IC8gY3B1XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWx0ZXJSZWNvcmQoXG4gIGRhdGFJZDogc3RyaW5nLFxuICBmaWx0ZXJzOiBGaWx0ZXJbXSxcbiAgb3B0OiBGaWx0ZXJEYXRhc2V0T3B0ID0ge31cbik6IEZpbHRlclJlY29yZCB7XG4gIGNvbnN0IGZpbHRlclJlY29yZDogRmlsdGVyUmVjb3JkID0ge1xuICAgIGR5bmFtaWNEb21haW46IFtdLFxuICAgIGZpeGVkRG9tYWluOiBbXSxcbiAgICBjcHU6IFtdLFxuICAgIGdwdTogW11cbiAgfTtcblxuICBmaWx0ZXJzLmZvckVhY2goZiA9PiB7XG4gICAgaWYgKGlzVmFsaWRGaWx0ZXJWYWx1ZShmLnR5cGUsIGYudmFsdWUpICYmIHRvQXJyYXkoZi5kYXRhSWQpLmluY2x1ZGVzKGRhdGFJZCkpIHtcbiAgICAgIChmLmZpeGVkRG9tYWluIHx8IG9wdC5pZ25vcmVEb21haW5cbiAgICAgICAgPyBmaWx0ZXJSZWNvcmQuZml4ZWREb21haW5cbiAgICAgICAgOiBmaWx0ZXJSZWNvcmQuZHluYW1pY0RvbWFpblxuICAgICAgKS5wdXNoKGYpO1xuXG4gICAgICAoZi5ncHUgJiYgIW9wdC5jcHVPbmx5ID8gZmlsdGVyUmVjb3JkLmdwdSA6IGZpbHRlclJlY29yZC5jcHUpLnB1c2goZik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZmlsdGVyUmVjb3JkO1xufVxuXG4vKipcbiAqIENvbXBhcmUgZmlsdGVyIHJlY29yZHMgdG8gZ2V0IHdoYXQgaGFzIGNoYW5nZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZGaWx0ZXJzKFxuICBmaWx0ZXJSZWNvcmQ6IEZpbHRlclJlY29yZCxcbiAgb2xkRmlsdGVyUmVjb3JkOiBGaWx0ZXJSZWNvcmQgfCBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fVxuKTogRmlsdGVyQ2hhbmdlZCB7XG4gIGxldCBmaWx0ZXJDaGFuZ2VkOiBQYXJ0aWFsPEZpbHRlckNoYW5nZWQ+ID0ge307XG5cbiAgKE9iamVjdC5lbnRyaWVzKGZpbHRlclJlY29yZCkgYXMgRW50cmllczxGaWx0ZXJSZWNvcmQ+KS5mb3JFYWNoKChbcmVjb3JkLCBpdGVtc10pID0+IHtcbiAgICBpdGVtcy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICBjb25zdCBvbGRGaWx0ZXI6IEZpbHRlciB8IHVuZGVmaW5lZCA9IChvbGRGaWx0ZXJSZWNvcmRbcmVjb3JkXSB8fCBbXSkuZmluZChcbiAgICAgICAgKGY6IEZpbHRlcikgPT4gZi5pZCA9PT0gZmlsdGVyLmlkXG4gICAgICApO1xuXG4gICAgICBpZiAoIW9sZEZpbHRlcikge1xuICAgICAgICAvLyBhZGRlZFxuICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sICdhZGRlZCcsIGZpbHRlckNoYW5nZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY2hlY2sgIHdoYXQgaGFzIGNoYW5nZWRcbiAgICAgICAgWyduYW1lJywgJ3ZhbHVlJywgJ2RhdGFJZCddLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgICAgaWYgKGZpbHRlcltwcm9wXSAhPT0gb2xkRmlsdGVyW3Byb3BdKSB7XG4gICAgICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIGZpbHRlci5pZF0sIGAke3Byb3B9X2NoYW5nZWRgLCBmaWx0ZXJDaGFuZ2VkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgKG9sZEZpbHRlclJlY29yZFtyZWNvcmRdIHx8IFtdKS5mb3JFYWNoKChvbGRGaWx0ZXI6IEZpbHRlcikgPT4ge1xuICAgICAgLy8gZGVsZXRlZFxuICAgICAgaWYgKCFpdGVtcy5maW5kKGYgPT4gZi5pZCA9PT0gb2xkRmlsdGVyLmlkKSkge1xuICAgICAgICBmaWx0ZXJDaGFuZ2VkID0gc2V0KFtyZWNvcmQsIG9sZEZpbHRlci5pZF0sICdkZWxldGVkJywgZmlsdGVyQ2hhbmdlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7Li4ue2R5bmFtaWNEb21haW46IG51bGwsIGZpeGVkRG9tYWluOiBudWxsLCBjcHU6IG51bGwsIGdwdTogbnVsbH0sIC4uLmZpbHRlckNoYW5nZWR9O1xufVxuXG4vKipcbiAqIENhbGwgYnkgcGFyc2luZyBmaWx0ZXJzIGZyb20gVVJMXG4gKiBDaGVjayBpZiB2YWx1ZSBvZiBmaWx0ZXIgd2l0aGluIGZpbHRlciBkb21haW4sIGlmIG5vdCBhZGp1c3QgaXQgdG8gbWF0Y2hcbiAqIGZpbHRlciBkb21haW5cbiAqXG4gKiBAcmV0dXJucyB2YWx1ZSAtIGFkanVzdGVkIHZhbHVlIHRvIG1hdGNoIGZpbHRlciBvciBudWxsIHRvIHJlbW92ZSBmaWx0ZXJcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RWYWx1ZVRvRmlsdGVyRG9tYWluKHZhbHVlOiBGaWx0ZXJbJ3ZhbHVlJ10sIHtkb21haW4sIHR5cGV9KSB7XG4gIGlmICghdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBpZiB0aGUgY3VycmVudCBmaWx0ZXIgaXMgYSBwb2x5Z29uIGl0IHdpbGwgbm90IGhhdmUgYW55IGRvbWFpblxuICAvLyBhbGwgb3RoZXIgZmlsdGVyIHR5cGVzIHJlcXVpcmUgZG9tYWluXG4gIGlmICh0eXBlICE9PSBGSUxURVJfVFlQRVMucG9seWdvbiAmJiAhZG9tYWluKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBGSUxURVJfVFlQRVMucmFuZ2U6XG4gICAgY2FzZSBGSUxURVJfVFlQRVMudGltZVJhbmdlOlxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgcmV0dXJuIGRvbWFpbi5tYXAoZCA9PiBkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoZCwgaSkgPT4gKG5vdE51bGxvclVuZGVmaW5lZChkKSAmJiBpc0luUmFuZ2UoZCwgZG9tYWluKSA/IGQgOiBkb21haW5baV0pKTtcblxuICAgIGNhc2UgRklMVEVSX1RZUEVTLm11bHRpU2VsZWN0OiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlcmVkVmFsdWUgPSB2YWx1ZS5maWx0ZXIoZCA9PiBkb21haW4uaW5jbHVkZXMoZCkpO1xuICAgICAgcmV0dXJuIGZpbHRlcmVkVmFsdWUubGVuZ3RoID8gZmlsdGVyZWRWYWx1ZSA6IFtdO1xuICAgIH1cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5zZWxlY3Q6XG4gICAgICByZXR1cm4gZG9tYWluLmluY2x1ZGVzKHZhbHVlKSA/IHZhbHVlIDogdHJ1ZTtcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOlxuICAgICAgcmV0dXJuIHZhbHVlO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIG51bWVyaWMgZG9tYWluIGFuZCBzdWl0YWJsZSBzdGVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROdW1lcmljRmllbGREb21haW4oXG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UsXG4gIHZhbHVlQWNjZXNzb3I6IGRhdGFWYWx1ZUFjY2Vzc29yXG4pOiBSYW5nZUZpZWxkRG9tYWluIHtcbiAgbGV0IGRvbWFpbjogW251bWJlciwgbnVtYmVyXSA9IFswLCAxXTtcbiAgbGV0IHN0ZXAgPSAwLjE7XG5cbiAgY29uc3QgbWFwcGVkVmFsdWUgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIGlmIChkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA+IDEpIHtcbiAgICBkb21haW4gPSBTY2FsZVV0aWxzLmdldExpbmVhckRvbWFpbihtYXBwZWRWYWx1ZSk7XG4gICAgY29uc3QgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcblxuICAgIC8vIGluIGNhc2UgZXF1YWwgZG9tYWluLCBbOTYsIDk2XSwgd2hpY2ggd2lsbCBicmVhayBxdWFudGl6ZSBzY2FsZVxuICAgIGlmICghZGlmZikge1xuICAgICAgZG9tYWluWzFdID0gZG9tYWluWzBdICsgMTtcbiAgICB9XG5cbiAgICBzdGVwID0gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmYpIHx8IHN0ZXA7XG4gICAgZG9tYWluWzBdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblswXSwgc3RlcCwgJ2Zsb29yJyk7XG4gICAgZG9tYWluWzFdID0gZm9ybWF0TnVtYmVyQnlTdGVwKGRvbWFpblsxXSwgc3RlcCwgJ2NlaWwnKTtcbiAgfVxuXG4gIHJldHVybiB7ZG9tYWluLCBzdGVwfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgc3RlcCBzaXplIGZvciByYW5nZSBhbmQgdGltZXJhbmdlIGZpbHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TnVtZXJpY1N0ZXBTaXplKGRpZmY6IG51bWJlcik6IG51bWJlciB7XG4gIGRpZmYgPSBNYXRoLmFicyhkaWZmKTtcblxuICBpZiAoZGlmZiA+IDEwMCkge1xuICAgIHJldHVybiAxO1xuICB9IGVsc2UgaWYgKGRpZmYgPiAzKSB7XG4gICAgcmV0dXJuIDAuMDE7XG4gIH0gZWxzZSBpZiAoZGlmZiA+IDEpIHtcbiAgICByZXR1cm4gMC4wMDE7XG4gIH1cbiAgLy8gVHJ5IHRvIGdldCBhdCBsZWFzdCAxMDAwIHN0ZXBzIC0gYW5kIGtlZXAgdGhlIHN0ZXAgc2l6ZSBiZWxvdyB0aGF0IG9mXG4gIC8vIHRoZSAoZGlmZiA+IDEpIGNhc2UuXG4gIGNvbnN0IHggPSBkaWZmIC8gMTAwMDtcbiAgLy8gRmluZCB0aGUgZXhwb25lbnQgYW5kIHRydW5jYXRlIHRvIDEwIHRvIHRoZSBwb3dlciBvZiB0aGF0IGV4cG9uZW50XG5cbiAgY29uc3QgZXhwb25lbnRpYWxGb3JtID0geC50b0V4cG9uZW50aWFsKCk7XG4gIGNvbnN0IGV4cG9uZW50ID0gcGFyc2VGbG9hdChleHBvbmVudGlhbEZvcm0uc3BsaXQoJ2UnKVsxXSk7XG5cbiAgLy8gR2V0dGluZyByZWFkeSBmb3Igbm9kZSAxMlxuICAvLyB0aGlzIGlzIHdoeSB3ZSBuZWVkIGRlY2ltYWwuanNcbiAgLy8gTWF0aC5wb3coMTAsIC01KSA9IDAuMDAwMDA5OTk5OTk5OTk5OTk5OTk5XG4gIC8vIHRoZSBhYm92ZSByZXN1bHQgc2hvd3MgaW4gYnJvd3NlciBhbmQgbm9kZSAxMFxuICAvLyBub2RlIDEyIGJlaGF2ZXMgY29ycmVjdGx5XG4gIHJldHVybiBuZXcgRGVjaW1hbCgxMCkucG93KGV4cG9uZW50KS50b051bWJlcigpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aW1lc3RhbXAgZG9tYWluIGFuZCBzdWl0YWJsZSBzdGVwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lc3RhbXBGaWVsZERvbWFpbihcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSxcbiAgdmFsdWVBY2Nlc3NvcjogZGF0YVZhbHVlQWNjZXNzb3Jcbik6IFRpbWVSYW5nZUZpZWxkRG9tYWluIHtcbiAgLy8gdG8gYXZvaWQgY29udmVydGluZyBzdHJpbmcgZm9ybWF0IHRpbWUgdG8gZXBvY2hcbiAgLy8gZXZlcnkgdGltZSB3ZSBjb21wYXJlIHdlIHN0b3JlIGEgdmFsdWUgbWFwcGVkIHRvIGludCBpbiBmaWx0ZXIgZG9tYWluXG4gIGNvbnN0IG1hcHBlZFZhbHVlID0gZGF0YUNvbnRhaW5lci5tYXBJbmRleCh2YWx1ZUFjY2Vzc29yKTtcblxuICBjb25zdCBkb21haW4gPSBTY2FsZVV0aWxzLmdldExpbmVhckRvbWFpbihtYXBwZWRWYWx1ZSk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lRm9ybWF0ID0gZ2V0VGltZVdpZGdldFRpdGxlRm9ybWF0dGVyKGRvbWFpbik7XG5cbiAgbGV0IHN0ZXAgPSAwLjAxO1xuXG4gIGNvbnN0IGRpZmYgPSBkb21haW5bMV0gLSBkb21haW5bMF07XG4gIC8vIGluIGNhc2UgZXF1YWwgdGltZXN0YW1wIGFkZCAxIHNlY29uZCBwYWRkaW5nIHRvIHByZXZlbnQgYnJlYWtcbiAgaWYgKCFkaWZmKSB7XG4gICAgZG9tYWluWzFdID0gZG9tYWluWzBdICsgMTAwMDtcbiAgfVxuICBjb25zdCBlbnRyeSA9IFRpbWVzdGFtcFN0ZXBNYXAuZmluZChmID0+IGYubWF4ID49IGRpZmYpO1xuICBpZiAoZW50cnkpIHtcbiAgICBzdGVwID0gZW50cnkuc3RlcDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZG9tYWluLFxuICAgIHN0ZXAsXG4gICAgbWFwcGVkVmFsdWUsXG4gICAgZGVmYXVsdFRpbWVGb3JtYXRcbiAgfTtcbn1cblxuLyoqXG4gKiByb3VuZCBudW1iZXIgYmFzZWQgb24gc3RlcFxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSB2YWxcbiAqIEBwYXJhbSB7TnVtYmVyfSBzdGVwXG4gKiBAcGFyYW0ge3N0cmluZ30gYm91bmRcbiAqIEByZXR1cm5zIHtOdW1iZXJ9IHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXJCeVN0ZXAodmFsOiBudW1iZXIsIHN0ZXA6IG51bWJlciwgYm91bmQ6ICdmbG9vcicgfCAnY2VpbCcpOiBudW1iZXIge1xuICBpZiAoYm91bmQgPT09ICdmbG9vcicpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwgKiAoMSAvIHN0ZXApKSAvICgxIC8gc3RlcCk7XG4gIH1cblxuICByZXR1cm4gTWF0aC5jZWlsKHZhbCAqICgxIC8gc3RlcCkpIC8gKDEgLyBzdGVwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5SYW5nZSh2YWw6IGFueSwgZG9tYWluOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZG9tYWluKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICByZXR1cm4gZG9tYWluWzBdIDw9IHZhbFswXSAmJiB2YWxbMV0gPD0gZG9tYWluWzFdO1xuICB9XG5cbiAgcmV0dXJuIHZhbCA+PSBkb21haW5bMF0gJiYgdmFsIDw9IGRvbWFpblsxXTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBwb2ludCBpcyB3aXRoaW4gdGhlIHByb3ZpZGVkIHBvbHlnb25cbiAqXG4gKiBAcGFyYW0gcG9pbnQgYXMgaW5wdXQgc2VhcmNoIFtsYXQsIGxuZ11cbiAqIEBwYXJhbSBwb2x5Z29uIFBvaW50cyBtdXN0IGJlIHdpdGhpbiB0aGVzZSAoTXVsdGkpUG9seWdvbihzKVxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5Qb2x5Z29uKHBvaW50OiBudW1iZXJbXSwgcG9seWdvbjogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBib29sZWFuV2l0aGluKHR1cmZQb2ludChwb2ludCksIHBvbHlnb24pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRUaXRsZUZvcm1hdHRlcihkb21haW46IFtudW1iZXIsIG51bWJlcl0pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKCFpc1ZhbGlkVGltZURvbWFpbihkb21haW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuXG4gIC8vIExvY2FsIGF3YXJlIGZvcm1hdHNcbiAgLy8gaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL3BhcnNpbmcvc3RyaW5nLWZvcm1hdFxuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uWWVhciA/ICdMJyA6IGRpZmYgPiBkdXJhdGlvbkRheSA/ICdMIExUJyA6ICdMIExUUyc7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNGaWx0ZXJWYWxpZFRvU2F2ZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsdGVyVmFsaWRUb1NhdmUoZmlsdGVyOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBmaWx0ZXI/LnR5cGUgJiYgQXJyYXkuaXNBcnJheShmaWx0ZXI/Lm5hbWUpICYmIChmaWx0ZXI/Lm5hbWUubGVuZ3RoIHx8IGZpbHRlcj8ubGF5ZXJJZC5sZW5ndGgpXG4gICk7XG59XG5cbi8qKlxuICogU2FuaXR5IGNoZWNrIG9uIGZpbHRlcnMgdG8gcHJlcGFyZSBmb3Igc2F2ZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vZmlsdGVyLXV0aWxzJykuaXNWYWxpZEZpbHRlclZhbHVlfVxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEZpbHRlclZhbHVlKHR5cGU6IHN0cmluZyB8IG51bGwsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKCF0eXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgRklMVEVSX1RZUEVTLnNlbGVjdDpcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2U7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5yYW5nZTpcbiAgICBjYXNlIEZJTFRFUl9UWVBFUy50aW1lUmFuZ2U6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkodiA9PiB2ICE9PSBudWxsICYmICFpc05hTih2KSk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5tdWx0aVNlbGVjdDpcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5pbnB1dDpcbiAgICAgIHJldHVybiBCb29sZWFuKHZhbHVlLmxlbmd0aCk7XG5cbiAgICBjYXNlIEZJTFRFUl9UWVBFUy5wb2x5Z29uOiB7XG4gICAgICBjb25zdCBjb29yZGluYXRlcyA9IGdldCh2YWx1ZSwgWydnZW9tZXRyeScsICdjb29yZGluYXRlcyddKTtcbiAgICAgIHJldHVybiBCb29sZWFuKHZhbHVlICYmIHZhbHVlLmlkICYmIGNvb3JkaW5hdGVzKTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5GaWx0ZXJQcm9wczxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0OiBLXG4pOiB7bGluZUNoYXJ0OiBMaW5lQ2hhcnQ7IHlBeHM6IEZpZWxkfSB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICBpZiAoZmlsdGVyLnBsb3RUeXBlPy50eXBlID09PSBQTE9UX1RZUEVTLmhpc3RvZ3JhbSB8fCAhZmlsdGVyLnlBeGlzKSB7XG4gICAgLy8gaGlzdG9ncmFtIHNob3VsZCBiZSBjYWxjdWxhdGVkIHdoZW4gY3JlYXRlIGZpbHRlclxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHttYXBwZWRWYWx1ZSA9IFtdfSA9IGZpbHRlcjtcbiAgY29uc3Qge3lBeGlzfSA9IGZpbHRlcjtcbiAgY29uc3QgZmllbGRJZHggPSBkYXRhc2V0LmdldENvbHVtbkZpZWxkSWR4KHlBeGlzLm5hbWUpO1xuICBpZiAoZmllbGRJZHggPCAwKSB7XG4gICAgLy8gQ29uc29sZS53YXJuKGB5QXhpcyAke3lBeGlzLm5hbWV9IGRvZXMgbm90IGV4aXN0IGluIGRhdGFzZXRgKTtcbiAgICByZXR1cm4ge2xpbmVDaGFydDoge30sIHlBeGlzfTtcbiAgfVxuXG4gIC8vIHJldHVybiBsaW5lQ2hhcnRcbiAgY29uc3Qgc2VyaWVzID0gZGF0YXNldC5kYXRhQ29udGFpbmVyXG4gICAgLm1hcChcbiAgICAgIChyb3csIHJvd0luZGV4KSA9PiAoe1xuICAgICAgICB4OiBtYXBwZWRWYWx1ZVtyb3dJbmRleF0sXG4gICAgICAgIHk6IHJvdy52YWx1ZUF0KGZpZWxkSWR4KVxuICAgICAgfSksXG4gICAgICB0cnVlXG4gICAgKVxuICAgIC5maWx0ZXIoKHt4LCB5fSkgPT4gTnVtYmVyLmlzRmluaXRlKHgpICYmIE51bWJlci5pc0Zpbml0ZSh5KSlcbiAgICAuc29ydCgoYSwgYikgPT4gYXNjZW5kaW5nKGEueCwgYi54KSk7XG5cbiAgY29uc3QgeURvbWFpbiA9IGV4dGVudChzZXJpZXMsIGQgPT4gZC55KSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICBjb25zdCB4RG9tYWluID0gW3Nlcmllc1swXS54LCBzZXJpZXNbc2VyaWVzLmxlbmd0aCAtIDFdLnhdIGFzIFtudW1iZXIsIG51bWJlcl07XG5cbiAgcmV0dXJuIHtsaW5lQ2hhcnQ6IHtzZXJpZXMsIHlEb21haW4sIHhEb21haW59LCB5QXhpc307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVGaWx0ZXJQbG90PEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIGFueT4+KFxuICBkYXRhc2V0czoge1tpZDogc3RyaW5nXTogS30sXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuKSB7XG4gIGlmIChkYXRhSWQpIHtcbiAgICBmaWx0ZXIgPSByZW1vdmVGaWx0ZXJQbG90KGZpbHRlciwgZGF0YUlkKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXIudHlwZSA9PT0gRklMVEVSX1RZUEVTLnRpbWVSYW5nZSkge1xuICAgIHJldHVybiB1cGRhdGVUaW1lRmlsdGVyUGxvdFR5cGUoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlciwgZmlsdGVyLnBsb3RUeXBlLCBkYXRhc2V0cyk7XG4gIH0gZWxzZSBpZiAoZmlsdGVyLnR5cGUgPT09IEZJTFRFUl9UWVBFUy5yYW5nZSkge1xuICAgIHJldHVybiB1cGRhdGVSYW5nZUZpbHRlclBsb3RUeXBlKGZpbHRlciBhcyBSYW5nZUZpbHRlciwgZmlsdGVyLnBsb3RUeXBlLCBkYXRhc2V0cyk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFzZXRJZHMgbGlzdCBvZiBkYXRhc2V0IGlkcyB0byBiZSBmaWx0ZXJlZFxuICogQHBhcmFtIGRhdGFzZXRzIGFsbCBkYXRhc2V0c1xuICogQHBhcmFtIGZpbHRlcnMgYWxsIGZpbHRlcnMgdG8gYmUgYXBwbGllZCB0byBkYXRhc2V0c1xuICogQHJldHVybiBkYXRhc2V0cyAtIG5ldyB1cGRhdGVkIGRhdGFzZXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlcnNUb0RhdGFzZXRzPFxuICBLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPixcbiAgTCBleHRlbmRzIHtjb25maWc6IHtkYXRhSWQ6IHN0cmluZyB8IG51bGx9fVxuPihcbiAgZGF0YXNldElkczogc3RyaW5nW10sXG4gIGRhdGFzZXRzOiB7W2lkOiBzdHJpbmddOiBLfSxcbiAgZmlsdGVyczogRmlsdGVyW10sXG4gIGxheWVycz86IExbXVxuKToge1tpZDogc3RyaW5nXTogS30ge1xuICBjb25zdCBkYXRhSWRzID0gdG9BcnJheShkYXRhc2V0SWRzKTtcbiAgcmV0dXJuIGRhdGFJZHMucmVkdWNlKChhY2MsIGRhdGFJZCkgPT4ge1xuICAgIGNvbnN0IGxheWVyc1RvRmlsdGVyID0gKGxheWVycyB8fCBbXSkuZmlsdGVyKGwgPT4gbC5jb25maWcuZGF0YUlkID09PSBkYXRhSWQpO1xuICAgIGNvbnN0IGFwcGxpZWRGaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoZCA9PiBzaG91bGRBcHBseUZpbHRlcihkLCBkYXRhSWQpKTtcbiAgICBjb25zdCB0YWJsZSA9IGRhdGFzZXRzW2RhdGFJZF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWNjLFxuICAgICAgW2RhdGFJZF06IHRhYmxlLmZpbHRlclRhYmxlKGFwcGxpZWRGaWx0ZXJzLCBsYXllcnNUb0ZpbHRlciwge30pXG4gICAgfTtcbiAgfSwgZGF0YXNldHMpO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgYSBuZXcgZmllbGQgbmFtZSB2YWx1ZSB0byBmaWx0ZXIgYW5kIHVwZGF0ZSBib3RoIGZpbHRlciBhbmQgZGF0YXNldFxuICogQHBhcmFtIGZpbHRlciAtIHRvIGJlIGFwcGxpZWQgdGhlIG5ldyBmaWVsZCBuYW1lIG9uXG4gKiBAcGFyYW0gZGF0YXNldHMgLSBBbGwgZGF0YXNldHNcbiAqIEBwYXJhbSBkYXRhc2V0SWQgLSBJZCBvZiB0aGUgZGF0YXNldCB0aGUgZmllbGQgYmVsb25ncyB0b1xuICogQHBhcmFtIGZpZWxkTmFtZSAtIGZpZWxkLm5hbWVcbiAqIEBwYXJhbSBmaWx0ZXJEYXRhc2V0SW5kZXggLSBmaWVsZC5uYW1lXG4gKiBAcGFyYW0gb3B0aW9uXG4gKiBAcmV0dXJuIC0ge2ZpbHRlciwgZGF0YXNldHN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlckZpZWxkTmFtZTxLIGV4dGVuZHMgS2VwbGVyVGFibGVNb2RlbDxLLCBMPiwgTD4oXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0czogUmVjb3JkPHN0cmluZywgSz4sXG4gIGRhdGFzZXRJZDogc3RyaW5nLFxuICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgZmlsdGVyRGF0YXNldEluZGV4ID0gMCxcbiAgb3B0aW9uPzoge21lcmdlRG9tYWluOiBib29sZWFufVxuKToge1xuICBmaWx0ZXI6IEZpbHRlciB8IG51bGw7XG4gIGRhdGFzZXQ6IEs7XG59IHtcbiAgLy8gdXNpbmcgZmlsdGVyRGF0YXNldEluZGV4IHdlIGNhbiBmaWx0ZXIgb25seSB0aGUgc3BlY2lmaWVkIGRhdGFzZXRcbiAgY29uc3QgbWVyZ2VEb21haW4gPVxuICAgIG9wdGlvbiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9uLCAnbWVyZ2VEb21haW4nKVxuICAgICAgPyBvcHRpb24ubWVyZ2VEb21haW5cbiAgICAgIDogZmFsc2U7XG5cbiAgY29uc3QgZGF0YXNldCA9IGRhdGFzZXRzW2RhdGFzZXRJZF07XG4gIGNvbnN0IGZpZWxkSW5kZXggPSBkYXRhc2V0Py5nZXRDb2x1bW5GaWVsZElkeChmaWVsZE5hbWUpO1xuICAvLyBpZiBubyBmaWVsZCB3aXRoIHNhbWUgbmFtZSBpcyBmb3VuZCwgbW92ZSB0byB0aGUgbmV4dCBkYXRhc2V0c1xuICBpZiAoIWRhdGFzZXQgfHwgZmllbGRJbmRleCA9PT0gLTEpIHtcbiAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYGZpZWxkSW5kZXggbm90IGZvdW5kLiBEYXRhc2V0IG11c3QgY29udGFpbiBhIHByb3BlcnR5IHdpdGggbmFtZTogJHtmaWVsZE5hbWV9YCk7XG4gICAgcmV0dXJuIHtmaWx0ZXI6IG51bGwsIGRhdGFzZXR9O1xuICB9XG5cbiAgLy8gVE9ETzogdmFsaWRhdGUgZmllbGQgdHlwZVxuICBjb25zdCBmaWx0ZXJQcm9wcyA9IGRhdGFzZXQuZ2V0Q29sdW1uRmlsdGVyUHJvcHMoZmllbGROYW1lKTtcblxuICBsZXQgbmV3RmlsdGVyID0ge1xuICAgIC4uLmZpbHRlcixcbiAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICBuYW1lOiBPYmplY3QuYXNzaWduKFsuLi50b0FycmF5KGZpbHRlci5uYW1lKV0sIHtbZmlsdGVyRGF0YXNldEluZGV4XTogZmllbGROYW1lfSksXG4gICAgZmllbGRJZHg6IE9iamVjdC5hc3NpZ24oWy4uLnRvQXJyYXkoZmlsdGVyLmZpZWxkSWR4KV0sIHtcbiAgICAgIFtmaWx0ZXJEYXRhc2V0SW5kZXhdOiBmaWVsZEluZGV4XG4gICAgfSksXG4gICAgLy8gTWFrZSBzdXJlIHBsb3RUeXBlIGlzIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUgZGVmYXVsdCBlbXB0eSBwbG90VHlwZVxuICAgIC4uLihmaWx0ZXIucGxvdFR5cGUgPyB7cGxvdFR5cGU6IGZpbHRlci5wbG90VHlwZX0gOiB7fSlcbiAgfTtcblxuICBpZiAobWVyZ2VEb21haW4pIHtcbiAgICBjb25zdCBkb21haW5TdGVwczogKEZpbHRlciAmIHtzdGVwPzogbnVtYmVyfSkgfCBudWxsID1cbiAgICAgIG1lcmdlRmlsdGVyRG9tYWluKG5ld0ZpbHRlciwgZGF0YXNldHMpID8/ICh7fSBhcyBGaWx0ZXIpO1xuICAgIGlmIChkb21haW5TdGVwcykge1xuICAgICAgY29uc3Qge2RvbWFpbiwgc3RlcH0gPSBkb21haW5TdGVwcztcbiAgICAgIG5ld0ZpbHRlci5kb21haW4gPSBkb21haW47XG4gICAgICBpZiAobmV3RmlsdGVyLnN0ZXAgIT09IHN0ZXApIHtcbiAgICAgICAgbmV3RmlsdGVyLnN0ZXAgPSBzdGVwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IGlmIHdlIGRvbid0IHNldCBmaWx0ZXIgdmFsdWUgaW4gZmlsdGVyUHJvcHMsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhpc1xuICBpZiAoZmlsdGVyRGF0YXNldEluZGV4ID4gMCkge1xuICAgIC8vIGRvbid0IHJlc2V0IHRoZSBmaWx0ZXIgdmFsdWUgaWYgd2UgYXJlIGp1c3QgYWRkaW5nIGEgc3luY2VkIGRhdGFzZXRcbiAgICBuZXdGaWx0ZXIgPSB7XG4gICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICB2YWx1ZTogZmlsdGVyLnZhbHVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmlsdGVyOiBuZXdGaWx0ZXIsXG4gICAgZGF0YXNldFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlIHRoZSBkb21haW5zIG9mIGEgZmlsdGVyIGluIGNhc2UgaXQgYXBwbGllcyB0byBtdWx0aXBsZSBkYXRhc2V0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWx0ZXJEb21haW4oXG4gIGZpbHRlcjogRmlsdGVyLFxuICBkYXRhc2V0czogUmVjb3JkPHN0cmluZywgS2VwbGVyVGFibGVNb2RlbDxhbnksIGFueT4+XG4pOiAoRmlsdGVyICYge3N0ZXA/OiBudW1iZXJ9KSB8IG51bGwge1xuICBsZXQgZG9tYWluU3RlcHM6IChGaWx0ZXIgJiB7c3RlcD86IG51bWJlcn0pIHwgbnVsbCA9IG51bGw7XG4gIGlmICghZmlsdGVyPy5kYXRhSWQ/Lmxlbmd0aCkge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cbiAgZmlsdGVyLmRhdGFJZC5mb3JFYWNoKChmaWx0ZXJEYXRhSWQsIGlkeCkgPT4ge1xuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tmaWx0ZXJEYXRhSWRdO1xuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZGF0YXNldC5nZXRDb2x1bW5GaWx0ZXJQcm9wcyhmaWx0ZXIubmFtZVtpZHhdKTtcbiAgICBkb21haW5TdGVwcyA9IG1lcmdlRmlsdGVyRG9tYWluU3RlcChkb21haW5TdGVwcyA/PyAoe30gYXMgRmlsdGVyKSwgZmlsdGVyUHJvcHMpO1xuICB9KTtcbiAgcmV0dXJuIGRvbWFpblN0ZXBzO1xufVxuXG4vKipcbiAqIE1lcmdlIG9uZSBmaWx0ZXIgd2l0aCBvdGhlciBmaWx0ZXIgcHJvcCBkb21haW5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRmlsdGVyRG9tYWluU3RlcChcbiAgZmlsdGVyOiBGaWx0ZXIgfCBudWxsLFxuICBmaWx0ZXJQcm9wcz86IFBhcnRpYWw8RmlsdGVyPlxuKTogKEZpbHRlciAmIHtzdGVwPzogbnVtYmVyfSkgfCBudWxsIHtcbiAgaWYgKCFmaWx0ZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICghZmlsdGVyUHJvcHMpIHtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgaWYgKChmaWx0ZXIuZmllbGRUeXBlICYmIGZpbHRlci5maWVsZFR5cGUgIT09IGZpbHRlclByb3BzLmZpZWxkVHlwZSkgfHwgIWZpbHRlclByb3BzLmRvbWFpbikge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjb25zdCBzb3J0ZWREb21haW4gPSAhZmlsdGVyLmRvbWFpblxuICAgID8gZmlsdGVyUHJvcHMuZG9tYWluXG4gICAgOiBbLi4uKGZpbHRlci5kb21haW4gfHwgW10pLCAuLi4oZmlsdGVyUHJvcHMuZG9tYWluIHx8IFtdKV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAuLi5maWx0ZXIsXG4gICAgLi4uZmlsdGVyUHJvcHMsXG4gICAgLy8gdXNlIG1pbiBtYXggYXMgZGVmYXVsdCBkb21haW5cbiAgICBkb21haW46IFtzb3J0ZWREb21haW5bMF0sIHNvcnRlZERvbWFpbltzb3J0ZWREb21haW4ubGVuZ3RoIC0gMV1dXG4gIH07XG5cbiAgc3dpdGNoIChmaWx0ZXJQcm9wcy5maWVsZFR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5zdHJpbmc6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaDM6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuZGF0ZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5ld0ZpbHRlcixcbiAgICAgICAgZG9tYWluOiB1bmlxdWUoc29ydGVkRG9tYWluKVxuICAgICAgfTtcblxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDoge1xuICAgICAgY29uc3Qgc3RlcCA9XG4gICAgICAgIChmaWx0ZXIgYXMgVGltZVJhbmdlRmlsdGVyKS5zdGVwIDwgKGZpbHRlclByb3BzIGFzIFRpbWVSYW5nZUZpZWxkRG9tYWluKS5zdGVwXG4gICAgICAgICAgPyAoZmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikuc3RlcFxuICAgICAgICAgIDogKGZpbHRlclByb3BzIGFzIFRpbWVSYW5nZUZpZWxkRG9tYWluKS5zdGVwO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXdGaWx0ZXIsXG4gICAgICAgIHN0ZXBcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5ld0ZpbHRlcjtcbiAgfVxufVxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogR2VuZXJhdGVzIHBvbHlnb24gZmlsdGVyXG4gKi9cbmV4cG9ydCBjb25zdCBmZWF0dXJlVG9GaWx0ZXJWYWx1ZSA9IChcbiAgZmVhdHVyZTogRmVhdHVyZSxcbiAgZmlsdGVySWQ6IHN0cmluZyxcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IEZlYXR1cmVWYWx1ZSA9PiAoe1xuICAuLi5mZWF0dXJlLFxuICBpZDogZmVhdHVyZS5pZCxcbiAgcHJvcGVydGllczoge1xuICAgIC4uLmZlYXR1cmUucHJvcGVydGllcyxcbiAgICAuLi5wcm9wZXJ0aWVzLFxuICAgIGZpbHRlcklkXG4gIH1cbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsdGVySWRJbkZlYXR1cmUgPSAoZjogRmVhdHVyZVZhbHVlKTogc3RyaW5nID0+IGdldChmLCBbJ3Byb3BlcnRpZXMnLCAnZmlsdGVySWQnXSk7XG5cbi8qKlxuICogR2VuZXJhdGVzIHBvbHlnb24gZmlsdGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBvbHlnb25GaWx0ZXI8XG4gIEwgZXh0ZW5kcyB7Y29uZmlnOiB7ZGF0YUlkOiBzdHJpbmcgfCBudWxsOyBsYWJlbDogc3RyaW5nfTsgaWQ6IHN0cmluZ31cbj4obGF5ZXJzOiBMW10sIGZlYXR1cmU6IEZlYXR1cmUpOiBQb2x5Z29uRmlsdGVyIHtcbiAgY29uc3QgZGF0YUlkID0gbGF5ZXJzLm1hcChsID0+IGwuY29uZmlnLmRhdGFJZCkuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCk7XG4gIGNvbnN0IGxheWVySWQgPSBsYXllcnMubWFwKGwgPT4gbC5pZCk7XG4gIGNvbnN0IG5hbWUgPSBsYXllcnMubWFwKGwgPT4gbC5jb25maWcubGFiZWwpO1xuICBjb25zdCBmaWx0ZXIgPSBnZXREZWZhdWx0RmlsdGVyKHtkYXRhSWR9KTtcbiAgcmV0dXJuIHtcbiAgICAuLi5maWx0ZXIsXG4gICAgZml4ZWREb21haW46IHRydWUsXG4gICAgdHlwZTogRklMVEVSX1RZUEVTLnBvbHlnb24sXG4gICAgbmFtZSxcbiAgICBsYXllcklkLFxuICAgIHZhbHVlOiBmZWF0dXJlVG9GaWx0ZXJWYWx1ZShmZWF0dXJlLCBmaWx0ZXIuaWQsIHtpc1Zpc2libGU6IHRydWV9KVxuICB9O1xufVxuXG4vKipcbiAqIFJ1biBmaWx0ZXIgZW50aXJlbHkgb24gQ1BVXG4gKi9cbmludGVyZmFjZSBTdGF0ZVR5cGU8SyBleHRlbmRzIEtlcGxlclRhYmxlTW9kZWw8SywgTD4sIEw+IHtcbiAgbGF5ZXJzOiBMW107XG4gIGZpbHRlcnM6IEZpbHRlcltdO1xuICBkYXRhc2V0czoge1tpZDogc3RyaW5nXTogS307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJEYXRhc2V0Q1BVPFQgZXh0ZW5kcyBTdGF0ZVR5cGU8SywgTD4sIEsgZXh0ZW5kcyBLZXBsZXJUYWJsZU1vZGVsPEssIEw+LCBMPihcbiAgc3RhdGU6IFQsXG4gIGRhdGFJZDogc3RyaW5nXG4pOiBUIHtcbiAgY29uc3QgZGF0YXNldEZpbHRlcnMgPSBzdGF0ZS5maWx0ZXJzLmZpbHRlcihmID0+IGYuZGF0YUlkLmluY2x1ZGVzKGRhdGFJZCkpO1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbZGF0YUlkXTtcblxuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBjcHVGaWx0ZXJlZERhdGFzZXQgPSBkYXRhc2V0LmZpbHRlclRhYmxlQ1BVKGRhdGFzZXRGaWx0ZXJzLCBzdGF0ZS5sYXllcnMpO1xuXG4gIHJldHVybiBzZXQoWydkYXRhc2V0cycsIGRhdGFJZF0sIGNwdUZpbHRlcmVkRGF0YXNldCwgc3RhdGUpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHBhcnNlZCBmaWx0ZXJzIHdpdGggZGF0YXNldHMgYW5kIGFkZCBmaWx0ZXJQcm9wcyB0byBmaWVsZFxuICovXG50eXBlIE1pblZpc1N0YXRlRm9yRmlsdGVyID0gUGljazxWaXNTdGF0ZSwgJ2xheWVycycgfCAnZGF0YXNldHMnIHwgJ2lzTWVyZ2luZ0RhdGFzZXRzJz47XG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGaWx0ZXJzVXBkYXRlRGF0YXNldHM8XG4gIFMgZXh0ZW5kcyBNaW5WaXNTdGF0ZUZvckZpbHRlcixcbiAgSyBleHRlbmRzIEtlcGxlclRhYmxlTW9kZWw8SywgTD4sXG4gIEwgZXh0ZW5kcyB7Y29uZmlnOiB7ZGF0YUlkOiBzdHJpbmcgfCBudWxsOyBsYWJlbDogc3RyaW5nfTsgaWQ6IHN0cmluZ31cbj4oXG4gIHN0YXRlOiBTLFxuICBmaWx0ZXJzVG9WYWxpZGF0ZTogUGFyc2VkRmlsdGVyW10gPSBbXVxuKToge1xuICB2YWxpZGF0ZWQ6IEZpbHRlcltdO1xuICBmYWlsZWQ6IEZpbHRlcltdO1xuICB1cGRhdGVkRGF0YXNldHM6IFNbJ2RhdGFzZXRzJ107XG59IHtcbiAgLy8gVE9ETyBCZXR0ZXIgVHlwaW5ncyBoZXJlXG4gIGNvbnN0IHZhbGlkYXRlZDogYW55W10gPSBbXTtcbiAgY29uc3QgZmFpbGVkOiBhbnlbXSA9IFtdO1xuICBjb25zdCB7ZGF0YXNldHMsIGxheWVyc30gPSBzdGF0ZTtcbiAgbGV0IHVwZGF0ZWREYXRhc2V0cyA9IGRhdGFzZXRzO1xuXG4gIC8vIG1lcmdlIGZpbHRlcnNcbiAgZmlsdGVyc1RvVmFsaWRhdGUuZm9yRWFjaChmaWx0ZXJUb1ZhbGlkYXRlID0+IHtcbiAgICAvLyB3ZSBjYW4gb25seSBsb29rIGZvciBkYXRhc2V0cyBkZWZpbmUgaW4gdGhlIGZpbHRlciBkYXRhSWRcbiAgICBjb25zdCBkYXRhc2V0SWRzID0gdG9BcnJheShmaWx0ZXJUb1ZhbGlkYXRlLmRhdGFJZCk7XG5cbiAgICAvLyB3ZSBjYW4gbWVyZ2UgYSBmaWx0ZXIgb25seSBpZiBhbGwgZGF0YXNldHMgaW4gZmlsdGVyLmRhdGFJZCBhcmUgbG9hZGVkXG4gICAgaWYgKGRhdGFzZXRJZHMuZXZlcnkoZCA9PiBkYXRhc2V0c1tkXSAmJiAhc3RhdGUuaXNNZXJnaW5nRGF0YXNldHNbZF0pKSB7XG4gICAgICAvLyBhbGwgZGF0YXNldElkcyBpbiBmaWx0ZXIgbXVzdCBiZSBwcmVzZW50IHRoZSBzdGF0ZSBkYXRhc2V0c1xuICAgICAgY29uc3Qge3ZhbGlkYXRlZEZpbHRlciwgYXBwbHlUb0RhdGFzZXRzLCBhdWdtZW50ZWREYXRhc2V0c30gPSBkYXRhc2V0SWRzLnJlZHVjZTx7XG4gICAgICAgIHZhbGlkYXRlZEZpbHRlcjogRmlsdGVyIHwgbnVsbDtcbiAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBzdHJpbmdbXTtcbiAgICAgICAgYXVnbWVudGVkRGF0YXNldHM6IHtbZGF0YXNldElkOiBzdHJpbmddOiBhbnl9O1xuICAgICAgfT4oXG4gICAgICAgIChhY2MsIGRhdGFzZXRJZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGFzZXQgPSB1cGRhdGVkRGF0YXNldHNbZGF0YXNldElkXTtcbiAgICAgICAgICBjb25zdCBkYXRhc2V0TGF5ZXJzID0gbGF5ZXJzLmZpbHRlcihsID0+IGwuY29uZmlnLmRhdGFJZCA9PT0gZGF0YXNldC5pZCk7XG4gICAgICAgICAgY29uc3QgdG9WYWxpZGF0ZSA9IGFjYy52YWxpZGF0ZWRGaWx0ZXIgfHwgZmlsdGVyVG9WYWxpZGF0ZTtcblxuICAgICAgICAgIGNvbnN0IHtmaWx0ZXI6IHVwZGF0ZWRGaWx0ZXIsIGRhdGFzZXQ6IHVwZGF0ZWREYXRhc2V0fSA9IHZhbGlkYXRlRmlsdGVyV2l0aERhdGEoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnVwZGF0ZWREYXRhc2V0cyxcbiAgICAgICAgICAgICAgLi4uYWNjLmF1Z21lbnRlZERhdGFzZXRzLFxuICAgICAgICAgICAgICBbZGF0YXNldElkXTogYWNjLmF1Z21lbnRlZERhdGFzZXRzW2RhdGFzZXRJZF0gfHwgZGF0YXNldFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGFzZXRJZCxcbiAgICAgICAgICAgIHRvVmFsaWRhdGUsXG4gICAgICAgICAgICBkYXRhc2V0TGF5ZXJzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh1cGRhdGVkRmlsdGVyKSB7XG4gICAgICAgICAgICAvLyBtZXJnZSBmaWx0ZXIgZG9tYWluIHN0ZXBcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlZEZpbHRlcjogdXBkYXRlZEZpbHRlcixcblxuICAgICAgICAgICAgICBhcHBseVRvRGF0YXNldHM6IFsuLi5hY2MuYXBwbHlUb0RhdGFzZXRzLCBkYXRhc2V0SWRdLFxuXG4gICAgICAgICAgICAgIGF1Z21lbnRlZERhdGFzZXRzOiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLmF1Z21lbnRlZERhdGFzZXRzLFxuICAgICAgICAgICAgICAgIFtkYXRhc2V0SWRdOiB1cGRhdGVkRGF0YXNldFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWxpZGF0ZWRGaWx0ZXI6IG51bGwsXG4gICAgICAgICAgYXBwbHlUb0RhdGFzZXRzOiBbXSxcbiAgICAgICAgICBhdWdtZW50ZWREYXRhc2V0czoge31cbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHZhbGlkYXRlZEZpbHRlciAmJiBpc0VxdWFsKGRhdGFzZXRJZHMsIGFwcGx5VG9EYXRhc2V0cykpIHtcbiAgICAgICAgbGV0IGRvbWFpbiA9IHZhbGlkYXRlZEZpbHRlci5kb21haW47XG4gICAgICAgIGlmICgodmFsaWRhdGVkRmlsdGVyIGFzIFRpbWVSYW5nZUZpbHRlcikuc3luY2VkV2l0aExheWVyVGltZWxpbmUpIHtcbiAgICAgICAgICBjb25zdCBhbmltYXRhYmxlTGF5ZXJzID0gZ2V0QW5pbWF0YWJsZVZpc2libGVMYXllcnMobGF5ZXJzKTtcbiAgICAgICAgICBkb21haW4gPSBtZXJnZVRpbWVEb21haW5zKFtcbiAgICAgICAgICAgIC4uLmFuaW1hdGFibGVMYXllcnMubWFwKGwgPT4gbC5jb25maWcuYW5pbWF0aW9uLmRvbWFpbiB8fCBbMCwgMF0pLFxuICAgICAgICAgICAgdmFsaWRhdGVkRmlsdGVyLmRvbWFpblxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsaWRhdGVkRmlsdGVyLnZhbHVlID0gYWRqdXN0VmFsdWVUb0ZpbHRlckRvbWFpbihmaWx0ZXJUb1ZhbGlkYXRlLnZhbHVlLCB7XG4gICAgICAgICAgLi4udmFsaWRhdGVkRmlsdGVyLFxuICAgICAgICAgIGRvbWFpblxuICAgICAgICB9KTtcblxuICAgICAgICB2YWxpZGF0ZWQucHVzaCh1cGRhdGVGaWx0ZXJQbG90KGRhdGFzZXRzLCB2YWxpZGF0ZWRGaWx0ZXIpKTtcbiAgICAgICAgdXBkYXRlZERhdGFzZXRzID0ge1xuICAgICAgICAgIC4uLnVwZGF0ZWREYXRhc2V0cyxcbiAgICAgICAgICAuLi5hdWdtZW50ZWREYXRhc2V0c1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbGVkLnB1c2goZmlsdGVyVG9WYWxpZGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZhaWxlZC5wdXNoKGZpbHRlclRvVmFsaWRhdGUpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHt2YWxpZGF0ZWQsIGZhaWxlZCwgdXBkYXRlZERhdGFzZXRzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZpbHRlclBsb3QoZmlsdGVyOiBGaWx0ZXIsIGRhdGFJZDogc3RyaW5nKSB7XG4gIGxldCBuZXh0RmlsdGVyID0gZmlsdGVyO1xuXG4gIGNvbnN0IHJhbmdlRmlsdGVyID0gZmlsdGVyIGFzIFJhbmdlRmlsdGVyO1xuICBpZiAocmFuZ2VGaWx0ZXIuYmlucyAmJiByYW5nZUZpbHRlci5iaW5zW2RhdGFJZF0pIHtcbiAgICBjb25zdCB7W2RhdGFJZF06IF9kZWxldGUsIC4uLm5leHRCaW5zfSA9IHJhbmdlRmlsdGVyLmJpbnM7XG4gICAgbmV4dEZpbHRlciA9IHtcbiAgICAgIC4uLnJhbmdlRmlsdGVyLFxuICAgICAgYmluczogbmV4dEJpbnNcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdGltZUZpbHRlciA9IGZpbHRlciBhcyBUaW1lUmFuZ2VGaWx0ZXI7XG4gIGlmICh0aW1lRmlsdGVyLnRpbWVCaW5zICYmIHRpbWVGaWx0ZXIudGltZUJpbnNbZGF0YUlkXSkge1xuICAgIGNvbnN0IHtbZGF0YUlkXTogX19kZWxldGUsIC4uLm5leHRUaW1lQmluc30gPSB0aW1lRmlsdGVyLnRpbWVCaW5zO1xuICAgIG5leHRGaWx0ZXIgPSB7XG4gICAgICAuLi5uZXh0RmlsdGVyLFxuICAgICAgdGltZUJpbnM6IG5leHRUaW1lQmluc1xuICAgIH0gYXMgRmlsdGVyO1xuICB9XG5cbiAgcmV0dXJuIG5leHRGaWx0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVGltZURvbWFpbihkb21haW4pIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZG9tYWluKSAmJiBkb21haW4uZXZlcnkoTnVtYmVyLmlzRmluaXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVXaWRnZXRIaW50Rm9ybWF0dGVyKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghaXNWYWxpZFRpbWVEb21haW4oZG9tYWluKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZG9tYWluWzFdIC0gZG9tYWluWzBdO1xuICByZXR1cm4gZGlmZiA+IGR1cmF0aW9uV2Vla1xuICAgID8gJ0wnXG4gICAgOiBkaWZmID4gZHVyYXRpb25EYXlcbiAgICA/ICdMIExUJ1xuICAgIDogZGlmZiA+IGR1cmF0aW9uSG91clxuICAgID8gJ0xUJ1xuICAgIDogJ0xUUyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NpZGVGaWx0ZXIoZmlsdGVyOiBGaWx0ZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpbHRlci52aWV3ID09PSBGSUxURVJfVklFV19UWVBFUy5zaWRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VUaW1lRG9tYWlucyhkb21haW5zOiAoW251bWJlciwgbnVtYmVyXSB8IG51bGwpW10pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgcmV0dXJuIGRvbWFpbnMucmVkdWNlKFxuICAgIChhY2M6IFtudW1iZXIsIG51bWJlcl0sIGRvbWFpbikgPT4gW1xuICAgICAgTWF0aC5taW4oYWNjWzBdLCBkb21haW4/LlswXSA/PyBJbmZpbml0eSksXG4gICAgICBNYXRoLm1heChhY2NbMV0sIGRvbWFpbj8uWzFdID8/IC1JbmZpbml0eSlcbiAgICBdLFxuICAgIFtOdW1iZXIoSW5maW5pdHkpLCAtSW5maW5pdHldXG4gICkgYXMgW251bWJlciwgbnVtYmVyXTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0xheWVyfSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllckFuaW1hdGFibGUobGF5ZXI6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gbGF5ZXIuY29uZmlnLmFuaW1hdGlvbj8uZW5hYmxlZCAmJiBBcnJheS5pc0FycmF5KGxheWVyLmNvbmZpZy5hbmltYXRpb24uZG9tYWluKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0xheWVyW119IGxheWVyc1xuICogQHJldHVybnMge0xheWVyW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbmltYXRhYmxlVmlzaWJsZUxheWVycyhsYXllcnM6IGFueVtdKTogYW55W10ge1xuICByZXR1cm4gbGF5ZXJzLmZpbHRlcihsID0+IGlzTGF5ZXJBbmltYXRhYmxlKGwpICYmIGwuY29uZmlnLmlzVmlzaWJsZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtMYXllcltdfSBsYXllcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJucyB7TGF5ZXJbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuaW1hdGFibGVWaXNpYmxlTGF5ZXJzQnlUeXBlKGxheWVyczogYW55W10sIHR5cGU6IHN0cmluZyk6IGFueVtdIHtcbiAgcmV0dXJuIGdldEFuaW1hdGFibGVWaXNpYmxlTGF5ZXJzKGxheWVycykuZmlsdGVyKGwgPT4gbC50eXBlID09PSB0eXBlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0xheWVyW119IGxheWVyc1xuICogQHJldHVybnMge0xheWVyW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcnZhbEJhc2VkQW5pbWF0aW9uTGF5ZXJzKGxheWVyczogYW55W10pOiBhbnlbXSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIGdldEFuaW1hdGFibGVWaXNpYmxlTGF5ZXJzKGxheWVycykuZmlsdGVyKGwgPT4gbC5jb25maWcuYW5pbWF0aW9uPy50aW1lU3RlcHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VGaWx0ZXJXaXRoVGltZWxpbmUoXG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyLFxuICBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZ1xuKToge2ZpbHRlcjogVGltZVJhbmdlRmlsdGVyOyBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZ30ge1xuICBpZiAoXG4gICAgZmlsdGVyPy50eXBlID09PSBGSUxURVJfVFlQRVMudGltZVJhbmdlICYmXG4gICAgZmlsdGVyLnN5bmNlZFdpdGhMYXllclRpbWVsaW5lICYmXG4gICAgYW5pbWF0aW9uQ29uZmlnICYmXG4gICAgQXJyYXkuaXNBcnJheShhbmltYXRpb25Db25maWcuZG9tYWluKVxuICApIHtcbiAgICBjb25zdCBkb21haW4gPSBtZXJnZVRpbWVEb21haW5zKFtmaWx0ZXIuZG9tYWluLCBhbmltYXRpb25Db25maWcuZG9tYWluIGFzIFtudW1iZXIsIG51bWJlcl1dKTtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgZG9tYWluXG4gICAgICB9LFxuICAgICAgYW5pbWF0aW9uQ29uZmlnOiB7XG4gICAgICAgIC4uLmFuaW1hdGlvbkNvbmZpZyxcbiAgICAgICAgZG9tYWluXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4ge2ZpbHRlciwgYW5pbWF0aW9uQ29uZmlnfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlU291cmNlRG9tYWluVG9EZXN0aW5hdGlvbihcbiAgc291cmNlRG9tYWluOiBbbnVtYmVyLCBudW1iZXJdLFxuICBkZXN0aW5hdGlvbkRvbWFpbjogW251bWJlciwgbnVtYmVyXVxuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIC8vIDAgLT4gMTAwOiBtZXJnZWQgZG9tYWlucyB0MSAtIHQwID09PSAxMDAlIGZpbHRlciBtYXkgYWxyZWFkeSBoYXZlIHRoaXMgaW5mbyB3aGljaCBpcyBnb29kXG4gIGNvbnN0IHNvdXJjZURvbWFpblNpemUgPSBzb3VyY2VEb21haW5bMV0gLSBzb3VyY2VEb21haW5bMF07XG4gIC8vIDEwIC0+IDIwOiBhbmltYXRpb25Db25maWcgZG9tYWluIGQxIC0gZDAgPT09IGFuaW1hdGlvbkNvbmZpZyBzaXplXG4gIGNvbnN0IGRlc3RpbmF0aW9uRG9tYWluU2l6ZSA9IGRlc3RpbmF0aW9uRG9tYWluWzFdIC0gZGVzdGluYXRpb25Eb21haW5bMF07XG4gIC8vIHNjYWxlIGFuaW1hdGlvbkNvbmZpZyBzaXplIHVzaW5nIGRvbWFpbiBzaXplXG4gIGNvbnN0IHNjYWxlZFNvdXJjZURvbWFpblNpemUgPSAoc291cmNlRG9tYWluU2l6ZSAvIGRlc3RpbmF0aW9uRG9tYWluU2l6ZSkgKiAxMDA7XG4gIC8vIHNjYWxlIGQwIC0gdDAgdXNpbmcgZG9tYWluIHNpemUgdG8gZmluZCBzdGFydGluZyBwb2ludFxuICBjb25zdCBvZmZzZXQgPSBzb3VyY2VEb21haW5bMF0gLSBkZXN0aW5hdGlvbkRvbWFpblswXTtcbiAgY29uc3Qgc2NhbGVkT2Zmc2V0ID0gKG9mZnNldCAvIGRlc3RpbmF0aW9uRG9tYWluU2l6ZSkgKiAxMDA7XG4gIHJldHVybiBbc2NhbGVkT2Zmc2V0LCBzY2FsZWRTb3VyY2VEb21haW5TaXplICsgc2NhbGVkT2Zmc2V0XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclNjYWxlZFRpbWVsaW5lKGZpbHRlciwgYW5pbWF0aW9uQ29uZmlnKTogW251bWJlciwgbnVtYmVyXSB8IFtdIHtcbiAgaWYgKCEoZmlsdGVyLnN5bmNlZFdpdGhMYXllclRpbWVsaW5lICYmIGFuaW1hdGlvbkNvbmZpZz8uZG9tYWluKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBzY2FsZVNvdXJjZURvbWFpblRvRGVzdGluYXRpb24oYW5pbWF0aW9uQ29uZmlnLmRvbWFpbiwgZmlsdGVyLmRvbWFpbik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxJQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxjQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxR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