@kepler.gl/deckgl-layers 3.1.0-alpha.2 → 3.1.0-alpha.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.
@@ -83,10 +83,16 @@ function getDimensionValueDomain(step, props, dimensionUpdater) {
83
83
  // the previous step should set sortedBins, if not, something went wrong
84
84
  return;
85
85
  }
86
-
86
+ var valueDomain =
87
87
  // for log and sqrt scale, returns linear domain by default
88
88
  // TODO: support other scale function domain in bin sorter
89
- var valueDomain = this.state.dimensions[key].sortedBins.getValueDomainByScale(props[scaleType.prop], [props[lowerPercentile.prop], props[upperPercentile.prop]]);
89
+ this.state.dimensions[key].sortedBins.getValueDomainByScale(props[scaleType.prop], [props[lowerPercentile.prop], props[upperPercentile.prop]]);
90
+ if (props.colorScaleType === 'custom' && props.colorMap) {
91
+ // for custom scale, return custom breaks as value domain directly
92
+ valueDomain = props.colorMap.reduce(function (prev, cur) {
93
+ return Number.isFinite(cur[0]) ? prev.concat(cur[0]) : prev;
94
+ }, []);
95
+ }
90
96
  this._setDimensionState(key, {
91
97
  valueDomain: valueDomain
92
98
  });
@@ -109,7 +115,11 @@ function getDimensionScale(step, props, dimensionUpdater) {
109
115
  var scaleFunctor = getScaleFunctor(scaleType && props[scaleType.prop])();
110
116
  var scaleFunc = scaleFunctor.domain(dimensionDomain).range(dimensionFixed ? dimensionDomain : dimensionRange);
111
117
  if ((0, _typeof2["default"])(onSet) === 'object' && typeof props[onSet.props] === 'function') {
112
- props[onSet.props](scaleFunc.domain());
118
+ var sortedBins = this.state.dimensions[key].sortedBins;
119
+ props[onSet.props]({
120
+ domain: scaleFunc.domain(),
121
+ aggregatedBins: sortedBins.binMap
122
+ });
113
123
  }
114
124
  this._setDimensionState(key, {
115
125
  scaleFunc: scaleFunc
@@ -170,7 +180,7 @@ function getSubLayerAccessor(dimensionState, dimension) {
170
180
  }
171
181
  var cv = bin && bin.value;
172
182
  var domain = scaleFunc.domain();
173
- var isValueInDomain = cv >= domain[0] && cv <= domain[domain.length - 1];
183
+ var isValueInDomain = scaleFunc.scaleType === 'custom' ? cv >= sortedBins.minValue && cv <= sortedBins.maxValue : cv >= domain[0] && cv <= domain[domain.length - 1];
174
184
 
175
185
  // if cell value is outside domain, set alpha to 0
176
186
  return isValueInDomain ? scaleFunc(cv) : dimension.nullValue;
@@ -579,4 +589,4 @@ var CPUAggregator = exports["default"] = /*#__PURE__*/function () {
579
589
  }();
580
590
  (0, _defineProperty2["default"])(CPUAggregator, "getDimensionScale", void 0);
581
591
  CPUAggregator.getDimensionScale = getDimensionScale;
582
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWdncmVnYXRpb25MYXllcnMiLCJyZXF1aXJlIiwiX3dpbmRvdyIsIl91dGlscyIsIl9jb25zdGFudHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIkRFQ0tfQUdHUkVHQVRJT05fTUFQIiwiZXhwb3J0cyIsIkFHR1JFR0FUSU9OX09QRVJBVElPTiIsIlNVTSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwic3VtIiwiTUVBTiIsImF2ZXJhZ2UiLCJNSU4iLCJtaW5pbXVtIiwiTUFYIiwibWF4aW11bSIsImdldFZhbHVlRnVuYyIsImFnZ3JlZ2F0aW9uIiwiYWNjZXNzb3IiLCJ0b1VwcGVyQ2FzZSIsIkNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0Iiwib3AiLCJrZXBsZXJPcCIsInB0cyIsImFnZ3JlZ2F0ZSIsIm1hcCIsImdldFNjYWxlRnVuY3RvciIsInNjYWxlVHlwZSIsIlNDQUxFX0ZVTkMiLCJxdWFudGl6ZSIsIm5vcCIsImdldEdldFZhbHVlIiwic3RlcCIsInByb3BzIiwiZGltZW5zaW9uVXBkYXRlciIsImtleSIsIl9zdGVwJHRyaWdnZXJzIiwidHJpZ2dlcnMiLCJ2YWx1ZSIsIndlaWdodCIsImdldFZhbHVlIiwicHJvcCIsIl9zZXREaW1lbnNpb25TdGF0ZSIsImdldERpbWVuc2lvblNvcnRlZEJpbnMiLCJzdGF0ZSIsImRpbWVuc2lvbnMiLCJzb3J0ZWRCaW5zIiwiQmluU29ydGVyIiwibGF5ZXJEYXRhIiwiZGF0YSIsImZpbHRlckRhdGEiLCJfZmlsdGVyRGF0YSIsImdldERpbWVuc2lvblZhbHVlRG9tYWluIiwiX3N0ZXAkdHJpZ2dlcnMyIiwibG93ZXJQZXJjZW50aWxlIiwidXBwZXJQZXJjZW50aWxlIiwidmFsdWVEb21haW4iLCJnZXRWYWx1ZURvbWFpbkJ5U2NhbGUiLCJnZXREaW1lbnNpb25TY2FsZSIsIl9zdGVwJHRyaWdnZXJzMyIsImRvbWFpbiIsInJhbmdlIiwiZml4ZWQiLCJvblNldCIsImRpbWVuc2lvblJhbmdlIiwiZGltZW5zaW9uRG9tYWluIiwiZGltZW5zaW9uRml4ZWQiLCJCb29sZWFuIiwic2NhbGVGdW5jdG9yIiwic2NhbGVGdW5jIiwiX3R5cGVvZjIiLCJub3JtYWxpemVSZXN1bHQiLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJoZXhhZ29ucyIsImFzc2lnbiIsImdldEFnZ3JlZ2F0ZWREYXRhIiwiYWdncmVnYXRpb25QYXJhbXMiLCJhZ2dyIiwiYWdncmVnYXRvciIsInNldFN0YXRlIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwidXBkYXRlU3RlcHMiLCJjZWxsU2l6ZSIsInBvc2l0aW9uIiwidXBkYXRlVHJpZ2dlciIsInVwZGF0ZXIiLCJnZXRTdWJMYXllckFjY2Vzc29yIiwiZGltZW5zaW9uU3RhdGUiLCJkaW1lbnNpb24iLCJjZWxsIiwiYmluIiwiYmluTWFwIiwiaW5kZXgiLCJjb3VudHMiLCJudWxsVmFsdWUiLCJjdiIsImlzVmFsdWVJbkRvbWFpbiIsImRlZmF1bHRDb2xvckRpbWVuc2lvbiIsImdldFBpY2tpbmdJbmZvIiwiY29sb3JWYWx1ZSIsImRlZmF1bHRFbGV2YXRpb25EaW1lbnNpb24iLCJlbGV2YXRpb25WYWx1ZSIsImRlZmF1bHREaW1lbnNpb25zIiwiQ1BVQWdncmVnYXRvciIsIm9wdHMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiaW5pdGlhbFN0YXRlIiwiZGltZW5zaW9uVXBkYXRlcnMiLCJhZ2dyZWdhdGlvblVwZGF0ZXIiLCJfYWRkRGltZW5zaW9uIiwiX2NyZWF0ZUNsYXNzMiIsInVwZGF0ZUFsbERpbWVuc2lvbnMiLCJkaW1lbnNpb25DaGFuZ2VzIiwiZGltIiwidXBkYXRlcnMiLCJfYWNjdW11bGF0ZVVwZGF0ZXJzIiwiZiIsInVwZGF0ZUFnZ3JlZ2F0aW9uIiwidXBkYXRlU3RhdGUiLCJvbGRQcm9wcyIsImNoYW5nZUZsYWdzIiwiZGF0YUNoYW5nZWQiLCJhZ2dyZWdhdGlvbkNoYW5nZXMiLCJfZ2V0QWdncmVnYXRpb25DaGFuZ2VzIiwiX2dldERpbWVuc2lvbkNoYW5nZXMiLCJ1cGRhdGVPYmplY3QiLCJfYWRkQWdncmVnYXRpb24iLCJfdGhpcyIsIl9uZWVkVXBkYXRlU3RlcCIsImRpbWVuc2lvblN0ZXAiLCJ2YWx1ZXMiLCJzb21lIiwiaXRlbSIsInVwZGF0ZVRyaWdnZXJzQ2hhbmdlZCIsImFsbCIsImkiLCJiaW5kIiwiX2dldEFsbFVwZGF0ZXJzIiwiX3RoaXMyIiwibmVlZFVwZGF0ZVN0ZXAiLCJmaW5kSW5kZXgiLCJnZXRVcGRhdGVUcmlnZ2VycyIsIl90aGlzMyIsIl91cGRhdGVUcmlnZ2VycyIsInVwZGF0ZVRyaWdnZXJzIiwiX2xvb3AiLCJfdGhpczMkZGltZW5zaW9uVXBkYXQiLCJfcmVmIiwiZnJvbVByb3AiLCJBcnJheSIsImlzQXJyYXkiLCJfcmVmMiIsImxheWVyUHJvcHMiLCJpbmZvIiwiaXNQaWNrZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJiaW5JbmZvIiwicG9pbnRzIiwiZmlsdGVyZWRQb2ludHMiLCJnZXRBY2Nlc3NvciIsImRpbWVuc2lvbktleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYXllci11dGlscy9jcHUtYWdncmVnYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vKiBlc2xpbnQtZGlzYWJsZSBndWFyZC1mb3ItaW4gKi9cbmltcG9ydCB7QUdHUkVHQVRJT05fT1BFUkFUSU9OLCBfQmluU29ydGVyIGFzIEJpblNvcnRlcn0gZnJvbSAnQGRlY2suZ2wvYWdncmVnYXRpb24tbGF5ZXJzJztcbmltcG9ydCB7Y29uc29sZSBhcyBDb25zb2xlfSBmcm9tICdnbG9iYWwvd2luZG93JztcblxuaW1wb3J0IHthZ2dyZWdhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtBR0dSRUdBVElPTl9UWVBFUywgU0NBTEVfRlVOQ30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtSR0JBQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBVcGRhdGVyVHlwZSA9ICh0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgZGltZW5zaW9uVXBkYXRlcikgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEJpbmRlZFVwZGF0ZXJUeXBlID0gKCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZSA9IChcbiAgdGhpczogQ1BVQWdncmVnYXRvcixcbiAgc3RlcCxcbiAgcHJvcHMsXG4gIGFnZ3JlZ2F0aW9uLFxuICBhZ2dyZWdhdGlvblBhcmFtc1xuKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgQmluZGVkQWdncmVnYXRlZFVwZGF0ZXJUeXBlID0gKGFnZ3JlZ2F0aW9uUGFyYW1zKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBVcGRhdGVTdGVwc1R5cGUgPSB7XG4gIGtleTogc3RyaW5nO1xuICB0cmlnZ2Vyczoge1xuICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgIHByb3A6IHN0cmluZztcbiAgICAgIHVwZGF0ZVRyaWdnZXI/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgb25TZXQ/OiB7XG4gICAgcHJvcHM6IHN0cmluZztcbiAgfTtcbiAgdXBkYXRlcjogVXBkYXRlclR5cGU7XG59O1xuXG5leHBvcnQgdHlwZSBEaW1lbnNpb25UeXBlPFZhbHVlVHlwZSA9IGFueT4gPSB7XG4gIGtleTogc3RyaW5nO1xuICBhY2Nlc3Nvcjogc3RyaW5nO1xuICBnZXRQaWNraW5nSW5mbzogKGRpbWVuc2lvblN0YXRlLCBjZWxsLCBsYXllclByb3BzPykgPT4gYW55O1xuICBudWxsVmFsdWU6IFZhbHVlVHlwZTtcbiAgdXBkYXRlU3RlcHM6IFVwZGF0ZVN0ZXBzVHlwZVtdO1xuICBnZXRTdWJMYXllckFjY2Vzc29yO1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25VcGRhdGVTdGVwc1R5cGUgPSB7XG4gIGtleTogc3RyaW5nO1xuICB0cmlnZ2Vyczoge1xuICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgIHByb3A6IHN0cmluZztcbiAgICAgIHVwZGF0ZVRyaWdnZXI/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgdXBkYXRlcjogQWdncmVnYXRlZFVwZGF0ZXJUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25UeXBlID0ge1xuICBrZXk6IHN0cmluZztcbiAgdXBkYXRlU3RlcHM6IEFnZ3JlZ2F0aW9uVXBkYXRlU3RlcHNUeXBlW107XG59O1xuXG5leHBvcnQgY29uc3QgREVDS19BR0dSRUdBVElPTl9NQVAgPSB7XG4gIFtBR0dSRUdBVElPTl9PUEVSQVRJT04uU1VNXTogQUdHUkVHQVRJT05fVFlQRVMuc3VtLFxuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLk1FQU5dOiBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLk1JTl06IEFHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW0sXG4gIFtBR0dSRUdBVElPTl9PUEVSQVRJT04uTUFYXTogQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlRnVuYyhhZ2dyZWdhdGlvbiwgYWNjZXNzb3IpIHtcbiAgaWYgKCFhZ2dyZWdhdGlvbiB8fCAhQUdHUkVHQVRJT05fT1BFUkFUSU9OW2FnZ3JlZ2F0aW9uLnRvVXBwZXJDYXNlKCldKSB7XG4gICAgQ29uc29sZS53YXJuKGBBZ2dyZWdhdGlvbiAke2FnZ3JlZ2F0aW9ufSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cblxuICBjb25zdCBvcCA9IEFHR1JFR0FUSU9OX09QRVJBVElPTlthZ2dyZWdhdGlvbi50b1VwcGVyQ2FzZSgpXSB8fCBBR0dSRUdBVElPTl9PUEVSQVRJT04uU1VNO1xuICBjb25zdCBrZXBsZXJPcCA9IERFQ0tfQUdHUkVHQVRJT05fTUFQW29wXTtcblxuICByZXR1cm4gcHRzID0+IGFnZ3JlZ2F0ZShwdHMubWFwKGFjY2Vzc29yKSwga2VwbGVyT3ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVGdW5jdG9yKHNjYWxlVHlwZSkge1xuICBpZiAoIXNjYWxlVHlwZSB8fCAhU0NBTEVfRlVOQ1tzY2FsZVR5cGVdKSB7XG4gICAgQ29uc29sZS53YXJuKGBTY2FsZSAke3NjYWxlVHlwZX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBTQ0FMRV9GVU5DW3NjYWxlVHlwZV0gfHwgU0NBTEVfRlVOQy5xdWFudGl6ZTtcbn1cblxuZnVuY3Rpb24gbm9wKCkge1xuICByZXR1cm47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHZXRWYWx1ZSh0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgZGltZW5zaW9uVXBkYXRlcikge1xuICBjb25zdCB7a2V5fSA9IGRpbWVuc2lvblVwZGF0ZXI7XG4gIGNvbnN0IHt2YWx1ZSwgd2VpZ2h0LCBhZ2dyZWdhdGlvbn0gPSBzdGVwLnRyaWdnZXJzO1xuXG4gIGxldCBnZXRWYWx1ZSA9IHByb3BzW3ZhbHVlLnByb3BdO1xuXG4gIGlmIChnZXRWYWx1ZSA9PT0gbnVsbCkge1xuICAgIC8vIElmIGBnZXRWYWx1ZWAgaXMgbm90IHByb3ZpZGVkIGZyb20gcHJvcHMsIGJ1aWxkIGl0IHdpdGggYWdncmVnYXRpb24gYW5kIHdlaWdodC5cbiAgICBnZXRWYWx1ZSA9IGdldFZhbHVlRnVuYyhwcm9wc1thZ2dyZWdhdGlvbi5wcm9wXSwgcHJvcHNbd2VpZ2h0LnByb3BdKTtcbiAgfVxuXG4gIGlmIChnZXRWYWx1ZSkge1xuICAgIHRoaXMuX3NldERpbWVuc2lvblN0YXRlKGtleSwge2dldFZhbHVlfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpbWVuc2lvblNvcnRlZEJpbnModGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7Z2V0VmFsdWV9ID0gdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV07XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3Qgc29ydGVkQmlucyA9IG5ldyBCaW5Tb3J0ZXIodGhpcy5zdGF0ZS5sYXllckRhdGEuZGF0YSB8fCBbXSwge1xuICAgIGdldFZhbHVlLFxuICAgIGZpbHRlckRhdGE6IHByb3BzLl9maWx0ZXJEYXRhXG4gIH0pO1xuICB0aGlzLl9zZXREaW1lbnNpb25TdGF0ZShrZXksIHtzb3J0ZWRCaW5zfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaW1lbnNpb25WYWx1ZURvbWFpbih0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgZGltZW5zaW9uVXBkYXRlcikge1xuICBjb25zdCB7a2V5fSA9IGRpbWVuc2lvblVwZGF0ZXI7XG4gIGNvbnN0IHtcbiAgICB0cmlnZ2Vyczoge2xvd2VyUGVyY2VudGlsZSwgdXBwZXJQZXJjZW50aWxlLCBzY2FsZVR5cGV9XG4gIH0gPSBzdGVwO1xuXG4gIGlmICghdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0uc29ydGVkQmlucykge1xuICAgIC8vIHRoZSBwcmV2aW91cyBzdGVwIHNob3VsZCBzZXQgc29ydGVkQmlucywgaWYgbm90LCBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGZvciBsb2cgYW5kIHNxcnQgc2NhbGUsIHJldHVybnMgbGluZWFyIGRvbWFpbiBieSBkZWZhdWx0XG4gIC8vIFRPRE86IHN1cHBvcnQgb3RoZXIgc2NhbGUgZnVuY3Rpb24gZG9tYWluIGluIGJpbiBzb3J0ZXJcbiAgY29uc3QgdmFsdWVEb21haW4gPSB0aGlzLnN0YXRlLmRpbWVuc2lvbnNba2V5XS5zb3J0ZWRCaW5zLmdldFZhbHVlRG9tYWluQnlTY2FsZShcbiAgICBwcm9wc1tzY2FsZVR5cGUucHJvcF0sXG4gICAgW3Byb3BzW2xvd2VyUGVyY2VudGlsZS5wcm9wXSwgcHJvcHNbdXBwZXJQZXJjZW50aWxlLnByb3BdXVxuICApO1xuXG4gIHRoaXMuX3NldERpbWVuc2lvblN0YXRlKGtleSwge3ZhbHVlRG9tYWlufSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaW1lbnNpb25TY2FsZSh0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgZGltZW5zaW9uVXBkYXRlcikge1xuICBjb25zdCB7a2V5fSA9IGRpbWVuc2lvblVwZGF0ZXI7XG4gIGNvbnN0IHtkb21haW4sIHJhbmdlLCBzY2FsZVR5cGUsIGZpeGVkfSA9IHN0ZXAudHJpZ2dlcnM7XG4gIGNvbnN0IHtvblNldH0gPSBzdGVwO1xuICBpZiAoIXRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnZhbHVlRG9tYWluKSB7XG4gICAgLy8gdGhlIHByZXZpb3VzIHN0ZXAgc2hvdWxkIHNldCB2YWx1ZURvbWFpbiwgaWYgbm90LCBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGRpbWVuc2lvblJhbmdlID0gcHJvcHNbcmFuZ2UucHJvcF07XG4gIGNvbnN0IGRpbWVuc2lvbkRvbWFpbiA9IHByb3BzW2RvbWFpbi5wcm9wXSB8fCB0aGlzLnN0YXRlLmRpbWVuc2lvbnNba2V5XS52YWx1ZURvbWFpbjtcbiAgY29uc3QgZGltZW5zaW9uRml4ZWQgPSBCb29sZWFuKGZpeGVkICYmIHByb3BzW2ZpeGVkLnByb3BdKTtcblxuICBjb25zdCBzY2FsZUZ1bmN0b3IgPSBnZXRTY2FsZUZ1bmN0b3Ioc2NhbGVUeXBlICYmIHByb3BzW3NjYWxlVHlwZS5wcm9wXSkoKTtcblxuICBjb25zdCBzY2FsZUZ1bmMgPSBzY2FsZUZ1bmN0b3JcbiAgICAuZG9tYWluKGRpbWVuc2lvbkRvbWFpbilcbiAgICAucmFuZ2UoZGltZW5zaW9uRml4ZWQgPyBkaW1lbnNpb25Eb21haW4gOiBkaW1lbnNpb25SYW5nZSk7XG5cbiAgaWYgKHR5cGVvZiBvblNldCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHByb3BzW29uU2V0LnByb3BzXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb3BzW29uU2V0LnByb3BzXShzY2FsZUZ1bmMuZG9tYWluKCkpO1xuICB9XG4gIHRoaXMuX3NldERpbWVuc2lvblN0YXRlKGtleSwge3NjYWxlRnVuY30pO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVSZXN1bHQocmVzdWx0OiB7aGV4YWdvbnM/OyBsYXllckRhdGE/fSA9IHt9KSB7XG4gIC8vIHN1cHBvcnQgcHJldmlvdXMgaGV4YWdvbkFnZ3JlZ2F0b3IgQVBJXG4gIGlmIChyZXN1bHQuaGV4YWdvbnMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGF0YTogcmVzdWx0LmhleGFnb25zfSwgcmVzdWx0KTtcbiAgfSBlbHNlIGlmIChyZXN1bHQubGF5ZXJEYXRhKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe2RhdGE6IHJlc3VsdC5sYXllckRhdGF9LCByZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFnZ3JlZ2F0ZWREYXRhKFxuICB0aGlzOiBDUFVBZ2dyZWdhdG9yLFxuICBzdGVwLFxuICBwcm9wcyxcbiAgYWdncmVnYXRpb24sXG4gIGFnZ3JlZ2F0aW9uUGFyYW1zXG4pIHtcbiAgY29uc3Qge1xuICAgIHRyaWdnZXJzOiB7YWdncmVnYXRvcjogYWdncn1cbiAgfSA9IHN0ZXA7XG4gIGNvbnN0IGFnZ3JlZ2F0b3IgPSBwcm9wc1thZ2dyLnByb3BdO1xuXG4gIC8vIHJlc3VsdCBzaG91bGQgY29udGFpbiBhIGRhdGEgYXJyYXkgYW5kIG90aGVyIHByb3BzXG4gIC8vIHJlc3VsdCA9IHtkYXRhOiBbXSwgLi4ub3RoZXIgcHJvcHN9XG4gIGNvbnN0IHJlc3VsdCA9IGFnZ3JlZ2F0b3IocHJvcHMsIGFnZ3JlZ2F0aW9uUGFyYW1zKTtcbiAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgbGF5ZXJEYXRhOiBub3JtYWxpemVSZXN1bHQocmVzdWx0KVxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRBZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlID0ge1xuICBrZXk6ICdwb3NpdGlvbicsXG4gIHVwZGF0ZVN0ZXBzOiBbXG4gICAge1xuICAgICAga2V5OiAnYWdncmVnYXRlJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGNlbGxTaXplOiB7XG4gICAgICAgICAgcHJvcDogJ2NlbGxTaXplJ1xuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHByb3A6ICdnZXRQb3NpdGlvbicsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldFBvc2l0aW9uJ1xuICAgICAgICB9LFxuICAgICAgICBhZ2dyZWdhdG9yOiB7XG4gICAgICAgICAgcHJvcDogJ2dyaWRBZ2dyZWdhdG9yJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0QWdncmVnYXRlZERhdGFcbiAgICB9XG4gIF1cbn07XG5cbmZ1bmN0aW9uIGdldFN1YkxheWVyQWNjZXNzb3IoZGltZW5zaW9uU3RhdGUsIGRpbWVuc2lvbikge1xuICByZXR1cm4gY2VsbCA9PiB7XG4gICAgY29uc3Qge3NvcnRlZEJpbnMsIHNjYWxlRnVuY30gPSBkaW1lbnNpb25TdGF0ZTtcbiAgICBjb25zdCBiaW4gPSBzb3J0ZWRCaW5zLmJpbk1hcFtjZWxsLmluZGV4XTtcblxuICAgIGlmIChiaW4gJiYgYmluLmNvdW50cyA9PT0gMCkge1xuICAgICAgLy8gbm8gcG9pbnRzIGxlZnQgaW4gYmluIGFmdGVyIGZpbHRlcmluZ1xuICAgICAgcmV0dXJuIGRpbWVuc2lvbi5udWxsVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3YgPSBiaW4gJiYgYmluLnZhbHVlO1xuICAgIGNvbnN0IGRvbWFpbiA9IHNjYWxlRnVuYy5kb21haW4oKTtcblxuICAgIGNvbnN0IGlzVmFsdWVJbkRvbWFpbiA9IGN2ID49IGRvbWFpblswXSAmJiBjdiA8PSBkb21haW5bZG9tYWluLmxlbmd0aCAtIDFdO1xuXG4gICAgLy8gaWYgY2VsbCB2YWx1ZSBpcyBvdXRzaWRlIGRvbWFpbiwgc2V0IGFscGhhIHRvIDBcbiAgICByZXR1cm4gaXNWYWx1ZUluRG9tYWluID8gc2NhbGVGdW5jKGN2KSA6IGRpbWVuc2lvbi5udWxsVmFsdWU7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q29sb3JEaW1lbnNpb246IERpbWVuc2lvblR5cGU8UkdCQUNvbG9yPiA9IHtcbiAga2V5OiAnZmlsbENvbG9yJyxcbiAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICBnZXRQaWNraW5nSW5mbzogKGRpbWVuc2lvblN0YXRlLCBjZWxsKSA9PiB7XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHtzb3J0ZWRCaW5zfSA9IGRpbWVuc2lvblN0YXRlO1xuICAgIGNvbnN0IGNvbG9yVmFsdWUgPSBzb3J0ZWRCaW5zLmJpbk1hcFtjZWxsLmluZGV4XSAmJiBzb3J0ZWRCaW5zLmJpbk1hcFtjZWxsLmluZGV4XS52YWx1ZTtcbiAgICByZXR1cm4ge2NvbG9yVmFsdWV9O1xuICB9LFxuICBudWxsVmFsdWU6IFswLCAwLCAwLCAwXSxcbiAgdXBkYXRlU3RlcHM6IFtcbiAgICB7XG4gICAgICBrZXk6ICdnZXRWYWx1ZScsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHByb3A6ICdnZXRDb2xvclZhbHVlJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0Q29sb3JWYWx1ZSdcbiAgICAgICAgfSxcbiAgICAgICAgd2VpZ2h0OiB7XG4gICAgICAgICAgcHJvcDogJ2dldENvbG9yV2VpZ2h0JyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0Q29sb3JXZWlnaHQnXG4gICAgICAgIH0sXG4gICAgICAgIGFnZ3JlZ2F0aW9uOiB7XG4gICAgICAgICAgcHJvcDogJ2NvbG9yQWdncmVnYXRpb24nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXRHZXRWYWx1ZVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ2V0QmlucycsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBfZmlsdGVyRGF0YToge1xuICAgICAgICAgIHByb3A6ICdfZmlsdGVyRGF0YScsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ19maWx0ZXJEYXRhJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uU29ydGVkQmluc1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ2V0RG9tYWluJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGxvd2VyUGVyY2VudGlsZToge1xuICAgICAgICAgIHByb3A6ICdsb3dlclBlcmNlbnRpbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHVwcGVyUGVyY2VudGlsZToge1xuICAgICAgICAgIHByb3A6ICd1cHBlclBlcmNlbnRpbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHNjYWxlVHlwZToge3Byb3A6ICdjb2xvclNjYWxlVHlwZSd9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uVmFsdWVEb21haW5cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dldFNjYWxlRnVuYycsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBkb21haW46IHtwcm9wOiAnY29sb3JEb21haW4nfSxcbiAgICAgICAgcmFuZ2U6IHtwcm9wOiAnY29sb3JSYW5nZSd9LFxuICAgICAgICBzY2FsZVR5cGU6IHtwcm9wOiAnY29sb3JTY2FsZVR5cGUnfVxuICAgICAgfSxcbiAgICAgIG9uU2V0OiB7XG4gICAgICAgIHByb3BzOiAnb25TZXRDb2xvckRvbWFpbidcbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25TY2FsZVxuICAgIH1cbiAgXSxcbiAgZ2V0U3ViTGF5ZXJBY2Nlc3NvclxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRFbGV2YXRpb25EaW1lbnNpb246IERpbWVuc2lvblR5cGU8bnVtYmVyPiA9IHtcbiAga2V5OiAnZWxldmF0aW9uJyxcbiAgYWNjZXNzb3I6ICdnZXRFbGV2YXRpb24nLFxuICBnZXRQaWNraW5nSW5mbzogKGRpbWVuc2lvblN0YXRlLCBjZWxsKSA9PiB7XG4gICAgaWYgKCFjZWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHtzb3J0ZWRCaW5zfSA9IGRpbWVuc2lvblN0YXRlO1xuICAgIGNvbnN0IGVsZXZhdGlvblZhbHVlID0gc29ydGVkQmlucy5iaW5NYXBbY2VsbC5pbmRleF0gJiYgc29ydGVkQmlucy5iaW5NYXBbY2VsbC5pbmRleF0udmFsdWU7XG4gICAgcmV0dXJuIHtlbGV2YXRpb25WYWx1ZX07XG4gIH0sXG4gIG51bGxWYWx1ZTogLTEsXG4gIHVwZGF0ZVN0ZXBzOiBbXG4gICAge1xuICAgICAga2V5OiAnZ2V0VmFsdWUnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0RWxldmF0aW9uVmFsdWUnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRFbGV2YXRpb25WYWx1ZSdcbiAgICAgICAgfSxcbiAgICAgICAgd2VpZ2h0OiB7XG4gICAgICAgICAgcHJvcDogJ2dldEVsZXZhdGlvbldlaWdodCcsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldEVsZXZhdGlvbldlaWdodCdcbiAgICAgICAgfSxcbiAgICAgICAgYWdncmVnYXRpb246IHtcbiAgICAgICAgICBwcm9wOiAnZWxldmF0aW9uQWdncmVnYXRpb24nXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXRHZXRWYWx1ZVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ2V0QmlucycsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBfZmlsdGVyRGF0YToge1xuICAgICAgICAgIHByb3A6ICdfZmlsdGVyRGF0YScsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ19maWx0ZXJEYXRhJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uU29ydGVkQmluc1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ2V0RG9tYWluJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGxvd2VyUGVyY2VudGlsZToge1xuICAgICAgICAgIHByb3A6ICdlbGV2YXRpb25Mb3dlclBlcmNlbnRpbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHVwcGVyUGVyY2VudGlsZToge1xuICAgICAgICAgIHByb3A6ICdlbGV2YXRpb25VcHBlclBlcmNlbnRpbGUnXG4gICAgICAgIH0sXG4gICAgICAgIHNjYWxlVHlwZToge3Byb3A6ICdlbGV2YXRpb25TY2FsZVR5cGUnfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblZhbHVlRG9tYWluXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXRTY2FsZUZ1bmMnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgZml4ZWQ6IHtwcm9wOiAnZWxldmF0aW9uRml4ZWQnfSxcbiAgICAgICAgZG9tYWluOiB7cHJvcDogJ2VsZXZhdGlvbkRvbWFpbid9LFxuICAgICAgICByYW5nZToge3Byb3A6ICdlbGV2YXRpb25SYW5nZSd9LFxuICAgICAgICBzY2FsZVR5cGU6IHtwcm9wOiAnZWxldmF0aW9uU2NhbGVUeXBlJ31cbiAgICAgIH0sXG4gICAgICBvblNldDoge1xuICAgICAgICBwcm9wczogJ29uU2V0RWxldmF0aW9uRG9tYWluJ1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblNjYWxlXG4gICAgfVxuICBdLFxuICBnZXRTdWJMYXllckFjY2Vzc29yXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdERpbWVuc2lvbnMgPSBbZGVmYXVsdENvbG9yRGltZW5zaW9uLCBkZWZhdWx0RWxldmF0aW9uRGltZW5zaW9uXTtcblxuZXhwb3J0IHR5cGUgQ1BVQWdncmVnYXRvclN0YXRlID0ge1xuICBsYXllckRhdGE6IHtkYXRhP307XG4gIGRpbWVuc2lvbnM6IG9iamVjdDtcbiAgZ2VvSlNPTj87XG4gIGNsdXN0ZXJCdWlsZGVyPztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENQVUFnZ3JlZ2F0b3Ige1xuICBzdGF0aWMgZ2V0RGltZW5zaW9uU2NhbGU6IGFueTtcbiAgc3RhdGU6IENQVUFnZ3JlZ2F0b3JTdGF0ZTtcbiAgZGltZW5zaW9uVXBkYXRlcnM6IHtba2V5OiBzdHJpbmddOiBEaW1lbnNpb25UeXBlfTtcbiAgYWdncmVnYXRpb25VcGRhdGVyOiBBZ2dyZWdhdGlvblR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3B0czoge1xuICAgICAgaW5pdGlhbFN0YXRlPzogQ1BVQWdncmVnYXRvclN0YXRlO1xuICAgICAgZGltZW5zaW9ucz86IERpbWVuc2lvblR5cGVbXTtcbiAgICAgIGFnZ3JlZ2F0aW9uPzogQWdncmVnYXRpb25UeXBlO1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbGF5ZXJEYXRhOiB7fSxcbiAgICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgICAgLy8gY29sb3I6IHtcbiAgICAgICAgLy8gICBnZXRWYWx1ZTogbnVsbCxcbiAgICAgICAgLy8gICBkb21haW46IG51bGwsXG4gICAgICAgIC8vICAgc29ydGVkQmluczogbnVsbCxcbiAgICAgICAgLy8gICBzY2FsZUZ1bmM6IG5vcFxuICAgICAgICAvLyB9LFxuICAgICAgICAvLyBlbGV2YXRpb246IHtcbiAgICAgICAgLy8gICBnZXRWYWx1ZTogbnVsbCxcbiAgICAgICAgLy8gICBkb21haW46IG51bGwsXG4gICAgICAgIC8vICAgc29ydGVkQmluczogbnVsbCxcbiAgICAgICAgLy8gICBzY2FsZUZ1bmM6IG5vcFxuICAgICAgICAvLyB9XG4gICAgICB9LFxuICAgICAgLi4ub3B0cy5pbml0aWFsU3RhdGVcbiAgICB9O1xuXG4gICAgdGhpcy5kaW1lbnNpb25VcGRhdGVycyA9IHt9O1xuICAgIHRoaXMuYWdncmVnYXRpb25VcGRhdGVyID0gb3B0cy5hZ2dyZWdhdGlvbiB8fCBkZWZhdWx0QWdncmVnYXRpb247XG5cbiAgICB0aGlzLl9hZGREaW1lbnNpb24ob3B0cy5kaW1lbnNpb25zIHx8IGRlZmF1bHREaW1lbnNpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBkZWZhdWx0RGltZW5zaW9ucygpIHtcbiAgICByZXR1cm4gZGVmYXVsdERpbWVuc2lvbnM7XG4gIH1cblxuICB1cGRhdGVBbGxEaW1lbnNpb25zKHByb3BzKSB7XG4gICAgbGV0IGRpbWVuc2lvbkNoYW5nZXM6IEJpbmRlZFVwZGF0ZXJUeXBlW10gPSBbXTtcbiAgICAvLyB1cGRhdGUgYWxsIGRpbWVuc2lvbnNcbiAgICBmb3IgKGNvbnN0IGRpbSBpbiB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzKSB7XG4gICAgICBjb25zdCB1cGRhdGVycyA9IHRoaXMuX2FjY3VtdWxhdGVVcGRhdGVycygwLCBwcm9wcywgdGhpcy5kaW1lbnNpb25VcGRhdGVyc1tkaW1dKTtcbiAgICAgIGRpbWVuc2lvbkNoYW5nZXMgPSBkaW1lbnNpb25DaGFuZ2VzLmNvbmNhdCh1cGRhdGVycyk7XG4gICAgfVxuXG4gICAgZGltZW5zaW9uQ2hhbmdlcy5mb3JFYWNoKGYgPT4gdHlwZW9mIGYgPT09ICdmdW5jdGlvbicgJiYgZigpKTtcbiAgfVxuXG4gIHVwZGF0ZUFnZ3JlZ2F0aW9uKHByb3BzLCBhZ2dyZWdhdGlvblBhcmFtcykge1xuICAgIGNvbnN0IHVwZGF0ZXJzID0gdGhpcy5fYWNjdW11bGF0ZVVwZGF0ZXJzKDAsIHByb3BzLCB0aGlzLmFnZ3JlZ2F0aW9uVXBkYXRlcik7XG4gICAgdXBkYXRlcnMuZm9yRWFjaChmID0+IHR5cGVvZiBmID09PSAnZnVuY3Rpb24nICYmIGYoYWdncmVnYXRpb25QYXJhbXMpKTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKG9wdHMsIGFnZ3JlZ2F0aW9uUGFyYW1zKSB7XG4gICAgY29uc3Qge29sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3N9ID0gb3B0cztcbiAgICBsZXQgZGltZW5zaW9uQ2hhbmdlczogQmluZGVkVXBkYXRlclR5cGVbXSA9IFtdO1xuXG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkKSB7XG4gICAgICAvLyBpZiBkYXRhIGNoYW5nZWQgdXBkYXRlIGV2ZXJ5dGhpbmdcbiAgICAgIHRoaXMudXBkYXRlQWdncmVnYXRpb24ocHJvcHMsIGFnZ3JlZ2F0aW9uUGFyYW1zKTtcbiAgICAgIHRoaXMudXBkYXRlQWxsRGltZW5zaW9ucyhwcm9wcyk7XG5cbiAgICAgIHJldHVybiB0aGlzLnN0YXRlO1xuICAgIH1cblxuICAgIGNvbnN0IGFnZ3JlZ2F0aW9uQ2hhbmdlcyA9IHRoaXMuX2dldEFnZ3JlZ2F0aW9uQ2hhbmdlcyhvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKTtcblxuICAgIGlmIChhZ2dyZWdhdGlvbkNoYW5nZXMgJiYgYWdncmVnYXRpb25DaGFuZ2VzLmxlbmd0aCkge1xuICAgICAgLy8gZ2V0IGFnZ3JlZ2F0ZWREYXRhXG4gICAgICBhZ2dyZWdhdGlvbkNoYW5nZXMuZm9yRWFjaChmID0+IHR5cGVvZiBmID09PSAnZnVuY3Rpb24nICYmIGYoYWdncmVnYXRpb25QYXJhbXMpKTtcbiAgICAgIHRoaXMudXBkYXRlQWxsRGltZW5zaW9ucyhwcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG9ubHkgdXBkYXRlIGRpbWVuc2lvbnNcbiAgICAgIGRpbWVuc2lvbkNoYW5nZXMgPSB0aGlzLl9nZXREaW1lbnNpb25DaGFuZ2VzKG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpIHx8IFtdO1xuICAgICAgZGltZW5zaW9uQ2hhbmdlcy5mb3JFYWNoKGYgPT4gdHlwZW9mIGYgPT09ICdmdW5jdGlvbicgJiYgZigpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgfVxuXG4gIC8vIFVwZGF0ZSBwcml2YXRlIHN0YXRlXG4gIHNldFN0YXRlKHVwZGF0ZU9iamVjdCkge1xuICAgIHRoaXMuc3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0YXRlLCB1cGRhdGVPYmplY3QpO1xuICB9XG5cbiAgLy8gVXBkYXRlIHByaXZhdGUgc3RhdGUuZGltZW5zaW9uc1xuICBfc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB1cGRhdGVPYmplY3QpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRpbWVuc2lvbnM6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RhdGUuZGltZW5zaW9ucywge1xuICAgICAgICBba2V5XTogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0sIHVwZGF0ZU9iamVjdClcbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICBfYWRkQWdncmVnYXRpb24oYWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZSkge1xuICAgIHRoaXMuYWdncmVnYXRpb25VcGRhdGVyID0gYWdncmVnYXRpb247XG4gIH1cblxuICBfYWRkRGltZW5zaW9uKGRpbWVuc2lvbnM6IERpbWVuc2lvblR5cGVbXSA9IFtdKSB7XG4gICAgZGltZW5zaW9ucy5mb3JFYWNoKGRpbWVuc2lvbiA9PiB7XG4gICAgICBjb25zdCB7a2V5fSA9IGRpbWVuc2lvbjtcbiAgICAgIHRoaXMuZGltZW5zaW9uVXBkYXRlcnNba2V5XSA9IGRpbWVuc2lvbjtcbiAgICB9KTtcbiAgfVxuXG4gIF9uZWVkVXBkYXRlU3RlcChcbiAgICBkaW1lbnNpb25TdGVwOiBVcGRhdGVTdGVwc1R5cGUgfCBBZ2dyZWdhdGlvblVwZGF0ZVN0ZXBzVHlwZSxcbiAgICBvbGRQcm9wcyxcbiAgICBwcm9wcyxcbiAgICBjaGFuZ2VGbGFnc1xuICApIHtcbiAgICAvLyB3aGV0aGVyIG5lZWQgdG8gdXBkYXRlIGN1cnJlbnQgZGltZW5zaW9uIHN0ZXBcbiAgICAvLyBkaW1lbnNpb24gc3RlcCBpcyB0aGUgdmFsdWUsIGRvbWFpbiwgc2NhbGVGdW5jdGlvbiBvZiBlYWNoIGRpbWVuc2lvblxuICAgIC8vIGVhY2ggc3RlcCBpcyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGxpbmtzIHRvIGxheWVyIHByb3AgYW5kIHdoZXRoZXIgdGhlIHByb3AgaXNcbiAgICAvLyBjb250cm9sbGVkIGJ5IHVwZGF0ZVRyaWdnZXJzXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoZGltZW5zaW9uU3RlcC50cmlnZ2Vycykuc29tZShpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLnVwZGF0ZVRyaWdnZXIpIHtcbiAgICAgICAgLy8gY2hlY2sgYmFzZWQgb24gdXBkYXRlVHJpZ2dlcnMgY2hhbmdlIGZpcnN0XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY2hhbmdlRmxhZ3MudXBkYXRlVHJpZ2dlcnNDaGFuZ2VkICYmXG4gICAgICAgICAgKGNoYW5nZUZsYWdzLnVwZGF0ZVRyaWdnZXJzQ2hhbmdlZC5hbGwgfHxcbiAgICAgICAgICAgIGNoYW5nZUZsYWdzLnVwZGF0ZVRyaWdnZXJzQ2hhbmdlZFtpdGVtLnVwZGF0ZVRyaWdnZXJdKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gZmFsbGJhY2sgdG8gZGlyZWN0IGNvbXBhcmlzb25cbiAgICAgIHJldHVybiBvbGRQcm9wc1tpdGVtLnByb3BdICE9PSBwcm9wc1tpdGVtLnByb3BdO1xuICAgIH0pO1xuICB9XG5cbiAgX2FjY3VtdWxhdGVVcGRhdGVyczxVcGRhdGVyT2JqZWN0VHlwZSBleHRlbmRzIERpbWVuc2lvblR5cGUgfCBBZ2dyZWdhdGlvblR5cGU+KFxuICAgIHN0ZXAsXG4gICAgcHJvcHMsXG4gICAgZGltZW5zaW9uOiBVcGRhdGVyT2JqZWN0VHlwZVxuICApIHtcbiAgICB0eXBlIExvY2FsVXBkYXRlclR5cGUgPSBVcGRhdGVyT2JqZWN0VHlwZSBleHRlbmRzIERpbWVuc2lvblR5cGVcbiAgICAgID8gQmluZGVkVXBkYXRlclR5cGVcbiAgICAgIDogQmluZGVkQWdncmVnYXRlZFVwZGF0ZXJUeXBlO1xuICAgIGNvbnN0IHVwZGF0ZXJzOiBMb2NhbFVwZGF0ZXJUeXBlW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gc3RlcDsgaSA8IGRpbWVuc2lvbi51cGRhdGVTdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXBkYXRlciA9IGRpbWVuc2lvbi51cGRhdGVTdGVwc1tpXS51cGRhdGVyO1xuICAgICAgaWYgKHR5cGVvZiB1cGRhdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHVwZGF0ZXJzLnB1c2goXG4gICAgICAgICAgdXBkYXRlci5iaW5kKHRoaXMsIGRpbWVuc2lvbi51cGRhdGVTdGVwc1tpXSwgcHJvcHMsIGRpbWVuc2lvbikgYXMgTG9jYWxVcGRhdGVyVHlwZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1cGRhdGVycztcbiAgfVxuXG4gIF9nZXRBbGxVcGRhdGVyczxVcGRhdGVyT2JqZWN0VHlwZSBleHRlbmRzIERpbWVuc2lvblR5cGUgfCBBZ2dyZWdhdGlvblR5cGU+KFxuICAgIGRpbWVuc2lvbjogVXBkYXRlck9iamVjdFR5cGUsXG4gICAgb2xkUHJvcHMsXG4gICAgcHJvcHMsXG4gICAgY2hhbmdlRmxhZ3NcbiAgKSB7XG4gICAgdHlwZSBMb2NhbFVwZGF0ZXJUeXBlID0gVXBkYXRlck9iamVjdFR5cGUgZXh0ZW5kcyBEaW1lbnNpb25UeXBlXG4gICAgICA/IEJpbmRlZFVwZGF0ZXJUeXBlXG4gICAgICA6IEJpbmRlZEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZTtcbiAgICBsZXQgdXBkYXRlcnM6IExvY2FsVXBkYXRlclR5cGVbXSA9IFtdO1xuICAgIGNvbnN0IG5lZWRVcGRhdGVTdGVwID0gZGltZW5zaW9uLnVwZGF0ZVN0ZXBzLmZpbmRJbmRleChzdGVwID0+XG4gICAgICB0aGlzLl9uZWVkVXBkYXRlU3RlcChzdGVwLCBvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKVxuICAgICk7XG5cbiAgICBpZiAobmVlZFVwZGF0ZVN0ZXAgPiAtMSkge1xuICAgICAgdXBkYXRlcnMgPSB1cGRhdGVycy5jb25jYXQodGhpcy5fYWNjdW11bGF0ZVVwZGF0ZXJzKG5lZWRVcGRhdGVTdGVwLCBwcm9wcywgZGltZW5zaW9uKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZXJzO1xuICB9XG5cbiAgX2dldEFnZ3JlZ2F0aW9uQ2hhbmdlcyhvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKSB7XG4gICAgY29uc3QgdXBkYXRlcnMgPSB0aGlzLl9nZXRBbGxVcGRhdGVycyh0aGlzLmFnZ3JlZ2F0aW9uVXBkYXRlciwgb2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncyk7XG4gICAgcmV0dXJuIHVwZGF0ZXJzLmxlbmd0aCA/IHVwZGF0ZXJzIDogbnVsbDtcbiAgfVxuXG4gIF9nZXREaW1lbnNpb25DaGFuZ2VzKG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpIHtcbiAgICBsZXQgdXBkYXRlcnM6IEJpbmRlZFVwZGF0ZXJUeXBlW10gPSBbXTtcblxuICAgIC8vIGdldCBkaW1lbnNpb24gdG8gYmUgdXBkYXRlZFxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZGltZW5zaW9uVXBkYXRlcnMpIHtcbiAgICAgIC8vIHJldHVybiB0aGUgZmlyc3QgdHJpZ2dlcmVkIHVwZGF0ZXIgZm9yIGVhY2ggZGltZW5zaW9uXG4gICAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2tleV07XG4gICAgICBjb25zdCBkaW1lbnNpb25VcGRhdGVycyA9IHRoaXMuX2dldEFsbFVwZGF0ZXJzKGRpbWVuc2lvbiwgb2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncyk7XG4gICAgICB1cGRhdGVycyA9IHVwZGF0ZXJzLmNvbmNhdChkaW1lbnNpb25VcGRhdGVycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZXJzLmxlbmd0aCA/IHVwZGF0ZXJzIDogbnVsbDtcbiAgfVxuXG4gIGdldFVwZGF0ZVRyaWdnZXJzKHByb3BzKSB7XG4gICAgY29uc3QgX3VwZGF0ZVRyaWdnZXJzID0gcHJvcHMudXBkYXRlVHJpZ2dlcnMgfHwge307XG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZGltZW5zaW9uVXBkYXRlcnMpIHtcbiAgICAgIGNvbnN0IHthY2Nlc3NvciwgdXBkYXRlU3RlcHN9OiB7YWNjZXNzb3I7IHVwZGF0ZVN0ZXBzOiBVcGRhdGVTdGVwc1R5cGVbXX0gPVxuICAgICAgICB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2tleV07XG4gICAgICAvLyBmb2xkIGRpbWVuc2lvbiB0cmlnZ2VycyBpbnRvIGVhY2ggYWNjZXNzb3JcbiAgICAgIHVwZGF0ZVRyaWdnZXJzW2FjY2Vzc29yXSA9IHt9O1xuXG4gICAgICB1cGRhdGVTdGVwcy5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgICBPYmplY3QudmFsdWVzKHN0ZXAudHJpZ2dlcnMgfHwgW10pLmZvckVhY2goKHtwcm9wLCB1cGRhdGVUcmlnZ2VyfSkgPT4ge1xuICAgICAgICAgIGlmICh1cGRhdGVUcmlnZ2VyKSB7XG4gICAgICAgICAgICAvLyBpZiBwcm9wIGlzIGJhc2VkIG9uIHVwZGF0ZVRyaWdnZXIgZS5nLiBnZXRDb2xvclZhbHVlLCBnZXRDb2xvcldlaWdodFxuICAgICAgICAgICAgLy8gYW5kIHVwZGF0ZVRyaWdnZXJzIGlzIHBhc3NlZCBpbiBmcm9tIGxheWVyIHByb3BcbiAgICAgICAgICAgIC8vIGZvbGQgdGhlIHVwZGF0ZVRyaWdnZXJzIGludG8gYWNjZXNzb3JcbiAgICAgICAgICAgIGNvbnN0IGZyb21Qcm9wID0gX3VwZGF0ZVRyaWdnZXJzW3VwZGF0ZVRyaWdnZXJdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBmcm9tUHJvcCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZnJvbVByb3ApKSB7XG4gICAgICAgICAgICAgIC8vIGlmIHVwZGF0ZVRyaWdnZXIgaXMgYW4gb2JqZWN0IHNwcmVhZCBpdFxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHVwZGF0ZVRyaWdnZXJzW2FjY2Vzc29yXSwgZnJvbVByb3ApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmcm9tUHJvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzW2FjY2Vzc29yXVtwcm9wXSA9IGZyb21Qcm9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBwcm9wIGlzIG5vdCBiYXNlZCBvbiB1cGRhdGVUcmlnZ2VyXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2Vyc1thY2Nlc3Nvcl1bcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZVRyaWdnZXJzO1xuICB9XG5cbiAgZ2V0UGlja2luZ0luZm8oe2luZm99LCBsYXllclByb3BzKSB7XG4gICAgY29uc3QgaXNQaWNrZWQgPSBpbmZvLnBpY2tlZCAmJiBpbmZvLmluZGV4ID4gLTE7XG4gICAgbGV0IG9iamVjdCA9IG51bGw7XG4gICAgY29uc3QgY2VsbCA9IGlzUGlja2VkID8gdGhpcy5zdGF0ZS5sYXllckRhdGEuZGF0YVtpbmZvLmluZGV4XSA6IG51bGw7XG4gICAgaWYgKGNlbGwpIHtcbiAgICAgIGxldCBiaW5JbmZvID0ge307XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzKSB7XG4gICAgICAgIGNvbnN0IHtnZXRQaWNraW5nSW5mb30gPSB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgZ2V0UGlja2luZ0luZm8gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBiaW5JbmZvID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgYmluSW5mbyxcbiAgICAgICAgICAgIGdldFBpY2tpbmdJbmZvKHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLCBjZWxsLCBsYXllclByb3BzKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb2JqZWN0ID0gT2JqZWN0LmFzc2lnbihiaW5JbmZvLCBjZWxsLCB7XG4gICAgICAgIHBvaW50czogY2VsbC5maWx0ZXJlZFBvaW50cyB8fCBjZWxsLnBvaW50c1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gYWRkIGJpbiAgYW5kICB0byBpbmZvXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oaW5mbywge1xuICAgICAgcGlja2VkOiBCb29sZWFuKG9iamVjdCksXG4gICAgICAvLyBvdmVycmlkZSBvYmplY3Qgd2l0aCBwaWNrZWQgY2VsbFxuICAgICAgb2JqZWN0XG4gICAgfSk7XG4gIH1cblxuICBnZXRBY2Nlc3NvcihkaW1lbnNpb25LZXksIGxheWVyUHJvcHMpIHtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmRpbWVuc2lvblVwZGF0ZXJzLCBkaW1lbnNpb25LZXkpKSB7XG4gICAgICByZXR1cm4gbm9wO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kaW1lbnNpb25VcGRhdGVyc1tkaW1lbnNpb25LZXldLmdldFN1YkxheWVyQWNjZXNzb3IoXG4gICAgICB0aGlzLnN0YXRlLmRpbWVuc2lvbnNbZGltZW5zaW9uS2V5XSxcbiAgICAgIHRoaXMuZGltZW5zaW9uVXBkYXRlcnNbZGltZW5zaW9uS2V5XSxcbiAgICAgIGxheWVyUHJvcHNcbiAgICApO1xuICB9XG59XG5cbkNQVUFnZ3JlZ2F0b3IuZ2V0RGltZW5zaW9uU2NhbGUgPSBnZXREaW1lbnNpb25TY2FsZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsa0JBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUFtRSxTQUFBSSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFBZCxDQUFBLFFBQUFlLGdCQUFBLGFBQUFoQixDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFB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
592
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWdncmVnYXRpb25MYXllcnMiLCJyZXF1aXJlIiwiX3dpbmRvdyIsIl91dGlscyIsIl9jb25zdGFudHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIkRFQ0tfQUdHUkVHQVRJT05fTUFQIiwiZXhwb3J0cyIsIkFHR1JFR0FUSU9OX09QRVJBVElPTiIsIlNVTSIsIkFHR1JFR0FUSU9OX1RZUEVTIiwic3VtIiwiTUVBTiIsImF2ZXJhZ2UiLCJNSU4iLCJtaW5pbXVtIiwiTUFYIiwibWF4aW11bSIsImdldFZhbHVlRnVuYyIsImFnZ3JlZ2F0aW9uIiwiYWNjZXNzb3IiLCJ0b1VwcGVyQ2FzZSIsIkNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0Iiwib3AiLCJrZXBsZXJPcCIsInB0cyIsImFnZ3JlZ2F0ZSIsIm1hcCIsImdldFNjYWxlRnVuY3RvciIsInNjYWxlVHlwZSIsIlNDQUxFX0ZVTkMiLCJxdWFudGl6ZSIsIm5vcCIsImdldEdldFZhbHVlIiwic3RlcCIsInByb3BzIiwiZGltZW5zaW9uVXBkYXRlciIsImtleSIsIl9zdGVwJHRyaWdnZXJzIiwidHJpZ2dlcnMiLCJ2YWx1ZSIsIndlaWdodCIsImdldFZhbHVlIiwicHJvcCIsIl9zZXREaW1lbnNpb25TdGF0ZSIsImdldERpbWVuc2lvblNvcnRlZEJpbnMiLCJzdGF0ZSIsImRpbWVuc2lvbnMiLCJzb3J0ZWRCaW5zIiwiQmluU29ydGVyIiwibGF5ZXJEYXRhIiwiZGF0YSIsImZpbHRlckRhdGEiLCJfZmlsdGVyRGF0YSIsImdldERpbWVuc2lvblZhbHVlRG9tYWluIiwiX3N0ZXAkdHJpZ2dlcnMyIiwibG93ZXJQZXJjZW50aWxlIiwidXBwZXJQZXJjZW50aWxlIiwidmFsdWVEb21haW4iLCJnZXRWYWx1ZURvbWFpbkJ5U2NhbGUiLCJjb2xvclNjYWxlVHlwZSIsImNvbG9yTWFwIiwicmVkdWNlIiwicHJldiIsImN1ciIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0RGltZW5zaW9uU2NhbGUiLCJfc3RlcCR0cmlnZ2VyczMiLCJkb21haW4iLCJyYW5nZSIsImZpeGVkIiwib25TZXQiLCJkaW1lbnNpb25SYW5nZSIsImRpbWVuc2lvbkRvbWFpbiIsImRpbWVuc2lvbkZpeGVkIiwiQm9vbGVhbiIsInNjYWxlRnVuY3RvciIsInNjYWxlRnVuYyIsIl90eXBlb2YyIiwiYWdncmVnYXRlZEJpbnMiLCJiaW5NYXAiLCJub3JtYWxpemVSZXN1bHQiLCJyZXN1bHQiLCJ1bmRlZmluZWQiLCJoZXhhZ29ucyIsImFzc2lnbiIsImdldEFnZ3JlZ2F0ZWREYXRhIiwiYWdncmVnYXRpb25QYXJhbXMiLCJhZ2dyIiwiYWdncmVnYXRvciIsInNldFN0YXRlIiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwidXBkYXRlU3RlcHMiLCJjZWxsU2l6ZSIsInBvc2l0aW9uIiwidXBkYXRlVHJpZ2dlciIsInVwZGF0ZXIiLCJnZXRTdWJMYXllckFjY2Vzc29yIiwiZGltZW5zaW9uU3RhdGUiLCJkaW1lbnNpb24iLCJjZWxsIiwiYmluIiwiaW5kZXgiLCJjb3VudHMiLCJudWxsVmFsdWUiLCJjdiIsImlzVmFsdWVJbkRvbWFpbiIsIm1pblZhbHVlIiwibWF4VmFsdWUiLCJkZWZhdWx0Q29sb3JEaW1lbnNpb24iLCJnZXRQaWNraW5nSW5mbyIsImNvbG9yVmFsdWUiLCJkZWZhdWx0RWxldmF0aW9uRGltZW5zaW9uIiwiZWxldmF0aW9uVmFsdWUiLCJkZWZhdWx0RGltZW5zaW9ucyIsIkNQVUFnZ3JlZ2F0b3IiLCJvcHRzIiwiX2NsYXNzQ2FsbENoZWNrMiIsImluaXRpYWxTdGF0ZSIsImRpbWVuc2lvblVwZGF0ZXJzIiwiYWdncmVnYXRpb25VcGRhdGVyIiwiX2FkZERpbWVuc2lvbiIsIl9jcmVhdGVDbGFzczIiLCJ1cGRhdGVBbGxEaW1lbnNpb25zIiwiZGltZW5zaW9uQ2hhbmdlcyIsImRpbSIsInVwZGF0ZXJzIiwiX2FjY3VtdWxhdGVVcGRhdGVycyIsImYiLCJ1cGRhdGVBZ2dyZWdhdGlvbiIsInVwZGF0ZVN0YXRlIiwib2xkUHJvcHMiLCJjaGFuZ2VGbGFncyIsImRhdGFDaGFuZ2VkIiwiYWdncmVnYXRpb25DaGFuZ2VzIiwiX2dldEFnZ3JlZ2F0aW9uQ2hhbmdlcyIsIl9nZXREaW1lbnNpb25DaGFuZ2VzIiwidXBkYXRlT2JqZWN0IiwiX2FkZEFnZ3JlZ2F0aW9uIiwiX3RoaXMiLCJfbmVlZFVwZGF0ZVN0ZXAiLCJkaW1lbnNpb25TdGVwIiwidmFsdWVzIiwic29tZSIsIml0ZW0iLCJ1cGRhdGVUcmlnZ2Vyc0NoYW5nZWQiLCJhbGwiLCJpIiwiYmluZCIsIl9nZXRBbGxVcGRhdGVycyIsIl90aGlzMiIsIm5lZWRVcGRhdGVTdGVwIiwiZmluZEluZGV4IiwiZ2V0VXBkYXRlVHJpZ2dlcnMiLCJfdGhpczMiLCJfdXBkYXRlVHJpZ2dlcnMiLCJ1cGRhdGVUcmlnZ2VycyIsIl9sb29wIiwiX3RoaXMzJGRpbWVuc2lvblVwZGF0IiwiX3JlZiIsImZyb21Qcm9wIiwiQXJyYXkiLCJpc0FycmF5IiwiX3JlZjIiLCJsYXllclByb3BzIiwiaW5mbyIsImlzUGlja2VkIiwicGlja2VkIiwib2JqZWN0IiwiYmluSW5mbyIsInBvaW50cyIsImZpbHRlcmVkUG9pbnRzIiwiZ2V0QWNjZXNzb3IiLCJkaW1lbnNpb25LZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGF5ZXItdXRpbHMvY3B1LWFnZ3JlZ2F0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLyogZXNsaW50LWRpc2FibGUgZ3VhcmQtZm9yLWluICovXG5pbXBvcnQge0FHR1JFR0FUSU9OX09QRVJBVElPTiwgX0JpblNvcnRlciBhcyBCaW5Tb3J0ZXJ9IGZyb20gJ0BkZWNrLmdsL2FnZ3JlZ2F0aW9uLWxheWVycyc7XG5pbXBvcnQge2NvbnNvbGUgYXMgQ29uc29sZX0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5cbmltcG9ydCB7YWdncmVnYXRlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7QUdHUkVHQVRJT05fVFlQRVMsIFNDQUxFX0ZVTkN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7UkdCQUNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgVXBkYXRlclR5cGUgPSAodGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBCaW5kZWRVcGRhdGVyVHlwZSA9ICgpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBBZ2dyZWdhdGVkVXBkYXRlclR5cGUgPSAoXG4gIHRoaXM6IENQVUFnZ3JlZ2F0b3IsXG4gIHN0ZXAsXG4gIHByb3BzLFxuICBhZ2dyZWdhdGlvbixcbiAgYWdncmVnYXRpb25QYXJhbXNcbikgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEJpbmRlZEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZSA9IChhZ2dyZWdhdGlvblBhcmFtcykgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgVXBkYXRlU3RlcHNUeXBlID0ge1xuICBrZXk6IHN0cmluZztcbiAgdHJpZ2dlcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBzdHJpbmc7XG4gICAgICB1cGRhdGVUcmlnZ2VyPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIG9uU2V0Pzoge1xuICAgIHByb3BzOiBzdHJpbmc7XG4gIH07XG4gIHVwZGF0ZXI6IFVwZGF0ZXJUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgRGltZW5zaW9uVHlwZTxWYWx1ZVR5cGUgPSBhbnk+ID0ge1xuICBrZXk6IHN0cmluZztcbiAgYWNjZXNzb3I6IHN0cmluZztcbiAgZ2V0UGlja2luZ0luZm86IChkaW1lbnNpb25TdGF0ZSwgY2VsbCwgbGF5ZXJQcm9wcz8pID0+IGFueTtcbiAgbnVsbFZhbHVlOiBWYWx1ZVR5cGU7XG4gIHVwZGF0ZVN0ZXBzOiBVcGRhdGVTdGVwc1R5cGVbXTtcbiAgZ2V0U3ViTGF5ZXJBY2Nlc3Nvcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uVXBkYXRlU3RlcHNUeXBlID0ge1xuICBrZXk6IHN0cmluZztcbiAgdHJpZ2dlcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBzdHJpbmc7XG4gICAgICB1cGRhdGVUcmlnZ2VyPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHVwZGF0ZXI6IEFnZ3JlZ2F0ZWRVcGRhdGVyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uVHlwZSA9IHtcbiAga2V5OiBzdHJpbmc7XG4gIHVwZGF0ZVN0ZXBzOiBBZ2dyZWdhdGlvblVwZGF0ZVN0ZXBzVHlwZVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IERFQ0tfQUdHUkVHQVRJT05fTUFQID0ge1xuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLlNVTV06IEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgW0FHR1JFR0FUSU9OX09QRVJBVElPTi5NRUFOXTogQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSxcbiAgW0FHR1JFR0FUSU9OX09QRVJBVElPTi5NSU5dOiBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICBbQUdHUkVHQVRJT05fT1BFUkFUSU9OLk1BWF06IEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZUZ1bmMoYWdncmVnYXRpb24sIGFjY2Vzc29yKSB7XG4gIGlmICghYWdncmVnYXRpb24gfHwgIUFHR1JFR0FUSU9OX09QRVJBVElPTlthZ2dyZWdhdGlvbi50b1VwcGVyQ2FzZSgpXSkge1xuICAgIENvbnNvbGUud2FybihgQWdncmVnYXRpb24gJHthZ2dyZWdhdGlvbn0gaXMgbm90IHN1cHBvcnRlZGApO1xuICB9XG5cbiAgY29uc3Qgb3AgPSBBR0dSRUdBVElPTl9PUEVSQVRJT05bYWdncmVnYXRpb24udG9VcHBlckNhc2UoKV0gfHwgQUdHUkVHQVRJT05fT1BFUkFUSU9OLlNVTTtcbiAgY29uc3Qga2VwbGVyT3AgPSBERUNLX0FHR1JFR0FUSU9OX01BUFtvcF07XG5cbiAgcmV0dXJuIHB0cyA9PiBhZ2dyZWdhdGUocHRzLm1hcChhY2Nlc3NvciksIGtlcGxlck9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlRnVuY3RvcihzY2FsZVR5cGUpIHtcbiAgaWYgKCFzY2FsZVR5cGUgfHwgIVNDQUxFX0ZVTkNbc2NhbGVUeXBlXSkge1xuICAgIENvbnNvbGUud2FybihgU2NhbGUgJHtzY2FsZVR5cGV9IGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gU0NBTEVfRlVOQ1tzY2FsZVR5cGVdIHx8IFNDQUxFX0ZVTkMucXVhbnRpemU7XG59XG5cbmZ1bmN0aW9uIG5vcCgpIHtcbiAgcmV0dXJuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2V0VmFsdWUodGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7dmFsdWUsIHdlaWdodCwgYWdncmVnYXRpb259ID0gc3RlcC50cmlnZ2VycztcblxuICBsZXQgZ2V0VmFsdWUgPSBwcm9wc1t2YWx1ZS5wcm9wXTtcblxuICBpZiAoZ2V0VmFsdWUgPT09IG51bGwpIHtcbiAgICAvLyBJZiBgZ2V0VmFsdWVgIGlzIG5vdCBwcm92aWRlZCBmcm9tIHByb3BzLCBidWlsZCBpdCB3aXRoIGFnZ3JlZ2F0aW9uIGFuZCB3ZWlnaHQuXG4gICAgZ2V0VmFsdWUgPSBnZXRWYWx1ZUZ1bmMocHJvcHNbYWdncmVnYXRpb24ucHJvcF0sIHByb3BzW3dlaWdodC5wcm9wXSk7XG4gIH1cblxuICBpZiAoZ2V0VmFsdWUpIHtcbiAgICB0aGlzLl9zZXREaW1lbnNpb25TdGF0ZShrZXksIHtnZXRWYWx1ZX0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaW1lbnNpb25Tb3J0ZWRCaW5zKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBkaW1lbnNpb25VcGRhdGVyKSB7XG4gIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uVXBkYXRlcjtcbiAgY29uc3Qge2dldFZhbHVlfSA9IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IHNvcnRlZEJpbnMgPSBuZXcgQmluU29ydGVyKHRoaXMuc3RhdGUubGF5ZXJEYXRhLmRhdGEgfHwgW10sIHtcbiAgICBnZXRWYWx1ZSxcbiAgICBmaWx0ZXJEYXRhOiBwcm9wcy5fZmlsdGVyRGF0YVxuICB9KTtcbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7c29ydGVkQmluc30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGltZW5zaW9uVmFsdWVEb21haW4odGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGRpbWVuc2lvblVwZGF0ZXIpIHtcbiAgY29uc3Qge2tleX0gPSBkaW1lbnNpb25VcGRhdGVyO1xuICBjb25zdCB7XG4gICAgdHJpZ2dlcnM6IHtsb3dlclBlcmNlbnRpbGUsIHVwcGVyUGVyY2VudGlsZSwgc2NhbGVUeXBlfVxuICB9ID0gc3RlcDtcblxuICBpZiAoIXRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnMpIHtcbiAgICAvLyB0aGUgcHJldmlvdXMgc3RlcCBzaG91bGQgc2V0IHNvcnRlZEJpbnMsIGlmIG5vdCwgc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgdmFsdWVEb21haW4gPVxuICAgIC8vIGZvciBsb2cgYW5kIHNxcnQgc2NhbGUsIHJldHVybnMgbGluZWFyIGRvbWFpbiBieSBkZWZhdWx0XG4gICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBzY2FsZSBmdW5jdGlvbiBkb21haW4gaW4gYmluIHNvcnRlclxuICAgIHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnMuZ2V0VmFsdWVEb21haW5CeVNjYWxlKHByb3BzW3NjYWxlVHlwZS5wcm9wXSwgW1xuICAgICAgcHJvcHNbbG93ZXJQZXJjZW50aWxlLnByb3BdLFxuICAgICAgcHJvcHNbdXBwZXJQZXJjZW50aWxlLnByb3BdXG4gICAgXSk7XG5cbiAgaWYgKHByb3BzLmNvbG9yU2NhbGVUeXBlID09PSAnY3VzdG9tJyAmJiBwcm9wcy5jb2xvck1hcCkge1xuICAgIC8vIGZvciBjdXN0b20gc2NhbGUsIHJldHVybiBjdXN0b20gYnJlYWtzIGFzIHZhbHVlIGRvbWFpbiBkaXJlY3RseVxuICAgIHZhbHVlRG9tYWluID0gcHJvcHMuY29sb3JNYXAucmVkdWNlKFxuICAgICAgKHByZXYsIGN1cikgPT4gKE51bWJlci5pc0Zpbml0ZShjdXJbMF0pID8gcHJldi5jb25jYXQoY3VyWzBdKSA6IHByZXYpLFxuICAgICAgW11cbiAgICApO1xuICB9XG5cbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7dmFsdWVEb21haW59KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpbWVuc2lvblNjYWxlKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBkaW1lbnNpb25VcGRhdGVyKSB7XG4gIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uVXBkYXRlcjtcbiAgY29uc3Qge2RvbWFpbiwgcmFuZ2UsIHNjYWxlVHlwZSwgZml4ZWR9ID0gc3RlcC50cmlnZ2VycztcbiAgY29uc3Qge29uU2V0fSA9IHN0ZXA7XG4gIGlmICghdGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0udmFsdWVEb21haW4pIHtcbiAgICAvLyB0aGUgcHJldmlvdXMgc3RlcCBzaG91bGQgc2V0IHZhbHVlRG9tYWluLCBpZiBub3QsIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGltZW5zaW9uUmFuZ2UgPSBwcm9wc1tyYW5nZS5wcm9wXTtcbiAgY29uc3QgZGltZW5zaW9uRG9tYWluID0gcHJvcHNbZG9tYWluLnByb3BdIHx8IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnZhbHVlRG9tYWluO1xuICBjb25zdCBkaW1lbnNpb25GaXhlZCA9IEJvb2xlYW4oZml4ZWQgJiYgcHJvcHNbZml4ZWQucHJvcF0pO1xuXG4gIGNvbnN0IHNjYWxlRnVuY3RvciA9IGdldFNjYWxlRnVuY3RvcihzY2FsZVR5cGUgJiYgcHJvcHNbc2NhbGVUeXBlLnByb3BdKSgpO1xuXG4gIGNvbnN0IHNjYWxlRnVuYyA9IHNjYWxlRnVuY3RvclxuICAgIC5kb21haW4oZGltZW5zaW9uRG9tYWluKVxuICAgIC5yYW5nZShkaW1lbnNpb25GaXhlZCA/IGRpbWVuc2lvbkRvbWFpbiA6IGRpbWVuc2lvblJhbmdlKTtcblxuICBpZiAodHlwZW9mIG9uU2V0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcHJvcHNbb25TZXQucHJvcHNdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3Qgc29ydGVkQmlucyA9IHRoaXMuc3RhdGUuZGltZW5zaW9uc1trZXldLnNvcnRlZEJpbnM7XG4gICAgcHJvcHNbb25TZXQucHJvcHNdKHtkb21haW46IHNjYWxlRnVuYy5kb21haW4oKSwgYWdncmVnYXRlZEJpbnM6IHNvcnRlZEJpbnMuYmluTWFwfSk7XG4gIH1cbiAgdGhpcy5fc2V0RGltZW5zaW9uU3RhdGUoa2V5LCB7c2NhbGVGdW5jfSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlc3VsdChyZXN1bHQ6IHtoZXhhZ29ucz87IGxheWVyRGF0YT99ID0ge30pIHtcbiAgLy8gc3VwcG9ydCBwcmV2aW91cyBoZXhhZ29uQWdncmVnYXRvciBBUElcbiAgaWYgKHJlc3VsdC5oZXhhZ29ucykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHtkYXRhOiByZXN1bHQuaGV4YWdvbnN9LCByZXN1bHQpO1xuICB9IGVsc2UgaWYgKHJlc3VsdC5sYXllckRhdGEpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGF0YTogcmVzdWx0LmxheWVyRGF0YX0sIHJlc3VsdCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWdncmVnYXRlZERhdGEoXG4gIHRoaXM6IENQVUFnZ3JlZ2F0b3IsXG4gIHN0ZXAsXG4gIHByb3BzLFxuICBhZ2dyZWdhdGlvbixcbiAgYWdncmVnYXRpb25QYXJhbXNcbikge1xuICBjb25zdCB7XG4gICAgdHJpZ2dlcnM6IHthZ2dyZWdhdG9yOiBhZ2dyfVxuICB9ID0gc3RlcDtcbiAgY29uc3QgYWdncmVnYXRvciA9IHByb3BzW2FnZ3IucHJvcF07XG5cbiAgLy8gcmVzdWx0IHNob3VsZCBjb250YWluIGEgZGF0YSBhcnJheSBhbmQgb3RoZXIgcHJvcHNcbiAgLy8gcmVzdWx0ID0ge2RhdGE6IFtdLCAuLi5vdGhlciBwcm9wc31cbiAgY29uc3QgcmVzdWx0ID0gYWdncmVnYXRvcihwcm9wcywgYWdncmVnYXRpb25QYXJhbXMpO1xuICB0aGlzLnNldFN0YXRlKHtcbiAgICBsYXllckRhdGE6IG5vcm1hbGl6ZVJlc3VsdChyZXN1bHQpXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFnZ3JlZ2F0aW9uOiBBZ2dyZWdhdGlvblR5cGUgPSB7XG4gIGtleTogJ3Bvc2l0aW9uJyxcbiAgdXBkYXRlU3RlcHM6IFtcbiAgICB7XG4gICAgICBrZXk6ICdhZ2dyZWdhdGUnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgY2VsbFNpemU6IHtcbiAgICAgICAgICBwcm9wOiAnY2VsbFNpemUnXG4gICAgICAgIH0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgcHJvcDogJ2dldFBvc2l0aW9uJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0UG9zaXRpb24nXG4gICAgICAgIH0sXG4gICAgICAgIGFnZ3JlZ2F0b3I6IHtcbiAgICAgICAgICBwcm9wOiAnZ3JpZEFnZ3JlZ2F0b3InXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXRBZ2dyZWdhdGVkRGF0YVxuICAgIH1cbiAgXVxufTtcblxuZnVuY3Rpb24gZ2V0U3ViTGF5ZXJBY2Nlc3NvcihkaW1lbnNpb25TdGF0ZSwgZGltZW5zaW9uKSB7XG4gIHJldHVybiBjZWxsID0+IHtcbiAgICBjb25zdCB7c29ydGVkQmlucywgc2NhbGVGdW5jfSA9IGRpbWVuc2lvblN0YXRlO1xuICAgIGNvbnN0IGJpbiA9IHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdO1xuXG4gICAgaWYgKGJpbiAmJiBiaW4uY291bnRzID09PSAwKSB7XG4gICAgICAvLyBubyBwb2ludHMgbGVmdCBpbiBiaW4gYWZ0ZXIgZmlsdGVyaW5nXG4gICAgICByZXR1cm4gZGltZW5zaW9uLm51bGxWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjdiA9IGJpbiAmJiBiaW4udmFsdWU7XG4gICAgY29uc3QgZG9tYWluID0gc2NhbGVGdW5jLmRvbWFpbigpO1xuXG4gICAgY29uc3QgaXNWYWx1ZUluRG9tYWluID1cbiAgICAgIHNjYWxlRnVuYy5zY2FsZVR5cGUgPT09ICdjdXN0b20nXG4gICAgICAgID8gY3YgPj0gc29ydGVkQmlucy5taW5WYWx1ZSAmJiBjdiA8PSBzb3J0ZWRCaW5zLm1heFZhbHVlXG4gICAgICAgIDogY3YgPj0gZG9tYWluWzBdICYmIGN2IDw9IGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV07XG5cbiAgICAvLyBpZiBjZWxsIHZhbHVlIGlzIG91dHNpZGUgZG9tYWluLCBzZXQgYWxwaGEgdG8gMFxuICAgIHJldHVybiBpc1ZhbHVlSW5Eb21haW4gPyBzY2FsZUZ1bmMoY3YpIDogZGltZW5zaW9uLm51bGxWYWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xvckRpbWVuc2lvbjogRGltZW5zaW9uVHlwZTxSR0JBQ29sb3I+ID0ge1xuICBrZXk6ICdmaWxsQ29sb3InLFxuICBhY2Nlc3NvcjogJ2dldEZpbGxDb2xvcicsXG4gIGdldFBpY2tpbmdJbmZvOiAoZGltZW5zaW9uU3RhdGUsIGNlbGwpID0+IHtcbiAgICBpZiAoIWNlbGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3Qge3NvcnRlZEJpbnN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgY29uc3QgY29sb3JWYWx1ZSA9IHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdICYmIHNvcnRlZEJpbnMuYmluTWFwW2NlbGwuaW5kZXhdLnZhbHVlO1xuICAgIHJldHVybiB7Y29sb3JWYWx1ZX07XG4gIH0sXG4gIG51bGxWYWx1ZTogWzAsIDAsIDAsIDBdLFxuICB1cGRhdGVTdGVwczogW1xuICAgIHtcbiAgICAgIGtleTogJ2dldFZhbHVlJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgcHJvcDogJ2dldENvbG9yVmFsdWUnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRDb2xvclZhbHVlJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWlnaHQ6IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0Q29sb3JXZWlnaHQnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRDb2xvcldlaWdodCdcbiAgICAgICAgfSxcbiAgICAgICAgYWdncmVnYXRpb246IHtcbiAgICAgICAgICBwcm9wOiAnY29sb3JBZ2dyZWdhdGlvbidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldEdldFZhbHVlXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXRCaW5zJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIF9maWx0ZXJEYXRhOiB7XG4gICAgICAgICAgcHJvcDogJ19maWx0ZXJEYXRhJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnX2ZpbHRlckRhdGEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25Tb3J0ZWRCaW5zXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXREb21haW4nLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgbG93ZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ2xvd2VyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgdXBwZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ3VwcGVyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ2NvbG9yU2NhbGVUeXBlJ31cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25WYWx1ZURvbWFpblxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZ2V0U2NhbGVGdW5jJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGRvbWFpbjoge3Byb3A6ICdjb2xvckRvbWFpbid9LFxuICAgICAgICByYW5nZToge3Byb3A6ICdjb2xvclJhbmdlJ30sXG4gICAgICAgIHNjYWxlVHlwZToge3Byb3A6ICdjb2xvclNjYWxlVHlwZSd9XG4gICAgICB9LFxuICAgICAgb25TZXQ6IHtcbiAgICAgICAgcHJvcHM6ICdvblNldENvbG9yRG9tYWluJ1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblNjYWxlXG4gICAgfVxuICBdLFxuICBnZXRTdWJMYXllckFjY2Vzc29yXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEVsZXZhdGlvbkRpbWVuc2lvbjogRGltZW5zaW9uVHlwZTxudW1iZXI+ID0ge1xuICBrZXk6ICdlbGV2YXRpb24nLFxuICBhY2Nlc3NvcjogJ2dldEVsZXZhdGlvbicsXG4gIGdldFBpY2tpbmdJbmZvOiAoZGltZW5zaW9uU3RhdGUsIGNlbGwpID0+IHtcbiAgICBpZiAoIWNlbGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3Qge3NvcnRlZEJpbnN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgY29uc3QgZWxldmF0aW9uVmFsdWUgPSBzb3J0ZWRCaW5zLmJpbk1hcFtjZWxsLmluZGV4XSAmJiBzb3J0ZWRCaW5zLmJpbk1hcFtjZWxsLmluZGV4XS52YWx1ZTtcbiAgICByZXR1cm4ge2VsZXZhdGlvblZhbHVlfTtcbiAgfSxcbiAgbnVsbFZhbHVlOiAtMSxcbiAgdXBkYXRlU3RlcHM6IFtcbiAgICB7XG4gICAgICBrZXk6ICdnZXRWYWx1ZScsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHByb3A6ICdnZXRFbGV2YXRpb25WYWx1ZScsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldEVsZXZhdGlvblZhbHVlJ1xuICAgICAgICB9LFxuICAgICAgICB3ZWlnaHQ6IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0RWxldmF0aW9uV2VpZ2h0JyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZ2V0RWxldmF0aW9uV2VpZ2h0J1xuICAgICAgICB9LFxuICAgICAgICBhZ2dyZWdhdGlvbjoge1xuICAgICAgICAgIHByb3A6ICdlbGV2YXRpb25BZ2dyZWdhdGlvbidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldEdldFZhbHVlXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXRCaW5zJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIF9maWx0ZXJEYXRhOiB7XG4gICAgICAgICAgcHJvcDogJ19maWx0ZXJEYXRhJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnX2ZpbHRlckRhdGEnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25Tb3J0ZWRCaW5zXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdnZXREb21haW4nLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgbG93ZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ2VsZXZhdGlvbkxvd2VyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgdXBwZXJQZXJjZW50aWxlOiB7XG4gICAgICAgICAgcHJvcDogJ2VsZXZhdGlvblVwcGVyUGVyY2VudGlsZSdcbiAgICAgICAgfSxcbiAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ2VsZXZhdGlvblNjYWxlVHlwZSd9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uVmFsdWVEb21haW5cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dldFNjYWxlRnVuYycsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBmaXhlZDoge3Byb3A6ICdlbGV2YXRpb25GaXhlZCd9LFxuICAgICAgICBkb21haW46IHtwcm9wOiAnZWxldmF0aW9uRG9tYWluJ30sXG4gICAgICAgIHJhbmdlOiB7cHJvcDogJ2VsZXZhdGlvblJhbmdlJ30sXG4gICAgICAgIHNjYWxlVHlwZToge3Byb3A6ICdlbGV2YXRpb25TY2FsZVR5cGUnfVxuICAgICAgfSxcbiAgICAgIG9uU2V0OiB7XG4gICAgICAgIHByb3BzOiAnb25TZXRFbGV2YXRpb25Eb21haW4nXG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0RGltZW5zaW9uU2NhbGVcbiAgICB9XG4gIF0sXG4gIGdldFN1YkxheWVyQWNjZXNzb3Jcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RGltZW5zaW9ucyA9IFtkZWZhdWx0Q29sb3JEaW1lbnNpb24sIGRlZmF1bHRFbGV2YXRpb25EaW1lbnNpb25dO1xuXG5leHBvcnQgdHlwZSBDUFVBZ2dyZWdhdG9yU3RhdGUgPSB7XG4gIGxheWVyRGF0YToge2RhdGE/fTtcbiAgZGltZW5zaW9uczogb2JqZWN0O1xuICBnZW9KU09OPztcbiAgY2x1c3RlckJ1aWxkZXI/O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ1BVQWdncmVnYXRvciB7XG4gIHN0YXRpYyBnZXREaW1lbnNpb25TY2FsZTogYW55O1xuICBzdGF0ZTogQ1BVQWdncmVnYXRvclN0YXRlO1xuICBkaW1lbnNpb25VcGRhdGVyczoge1trZXk6IHN0cmluZ106IERpbWVuc2lvblR5cGV9O1xuICBhZ2dyZWdhdGlvblVwZGF0ZXI6IEFnZ3JlZ2F0aW9uVHlwZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBvcHRzOiB7XG4gICAgICBpbml0aWFsU3RhdGU/OiBDUFVBZ2dyZWdhdG9yU3RhdGU7XG4gICAgICBkaW1lbnNpb25zPzogRGltZW5zaW9uVHlwZVtdO1xuICAgICAgYWdncmVnYXRpb24/OiBBZ2dyZWdhdGlvblR5cGU7XG4gICAgfSA9IHt9XG4gICkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBsYXllckRhdGE6IHt9LFxuICAgICAgZGltZW5zaW9uczoge1xuICAgICAgICAvLyBjb2xvcjoge1xuICAgICAgICAvLyAgIGdldFZhbHVlOiBudWxsLFxuICAgICAgICAvLyAgIGRvbWFpbjogbnVsbCxcbiAgICAgICAgLy8gICBzb3J0ZWRCaW5zOiBudWxsLFxuICAgICAgICAvLyAgIHNjYWxlRnVuYzogbm9wXG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIGVsZXZhdGlvbjoge1xuICAgICAgICAvLyAgIGdldFZhbHVlOiBudWxsLFxuICAgICAgICAvLyAgIGRvbWFpbjogbnVsbCxcbiAgICAgICAgLy8gICBzb3J0ZWRCaW5zOiBudWxsLFxuICAgICAgICAvLyAgIHNjYWxlRnVuYzogbm9wXG4gICAgICAgIC8vIH1cbiAgICAgIH0sXG4gICAgICAuLi5vcHRzLmluaXRpYWxTdGF0ZVxuICAgIH07XG5cbiAgICB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzID0ge307XG4gICAgdGhpcy5hZ2dyZWdhdGlvblVwZGF0ZXIgPSBvcHRzLmFnZ3JlZ2F0aW9uIHx8IGRlZmF1bHRBZ2dyZWdhdGlvbjtcblxuICAgIHRoaXMuX2FkZERpbWVuc2lvbihvcHRzLmRpbWVuc2lvbnMgfHwgZGVmYXVsdERpbWVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGRlZmF1bHREaW1lbnNpb25zKCkge1xuICAgIHJldHVybiBkZWZhdWx0RGltZW5zaW9ucztcbiAgfVxuXG4gIHVwZGF0ZUFsbERpbWVuc2lvbnMocHJvcHMpIHtcbiAgICBsZXQgZGltZW5zaW9uQ2hhbmdlczogQmluZGVkVXBkYXRlclR5cGVbXSA9IFtdO1xuICAgIC8vIHVwZGF0ZSBhbGwgZGltZW5zaW9uc1xuICAgIGZvciAoY29uc3QgZGltIGluIHRoaXMuZGltZW5zaW9uVXBkYXRlcnMpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZXJzID0gdGhpcy5fYWNjdW11bGF0ZVVwZGF0ZXJzKDAsIHByb3BzLCB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2RpbV0pO1xuICAgICAgZGltZW5zaW9uQ2hhbmdlcyA9IGRpbWVuc2lvbkNoYW5nZXMuY29uY2F0KHVwZGF0ZXJzKTtcbiAgICB9XG5cbiAgICBkaW1lbnNpb25DaGFuZ2VzLmZvckVhY2goZiA9PiB0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJyAmJiBmKCkpO1xuICB9XG5cbiAgdXBkYXRlQWdncmVnYXRpb24ocHJvcHMsIGFnZ3JlZ2F0aW9uUGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlcnMgPSB0aGlzLl9hY2N1bXVsYXRlVXBkYXRlcnMoMCwgcHJvcHMsIHRoaXMuYWdncmVnYXRpb25VcGRhdGVyKTtcbiAgICB1cGRhdGVycy5mb3JFYWNoKGYgPT4gdHlwZW9mIGYgPT09ICdmdW5jdGlvbicgJiYgZihhZ2dyZWdhdGlvblBhcmFtcykpO1xuICB9XG5cbiAgdXBkYXRlU3RhdGUob3B0cywgYWdncmVnYXRpb25QYXJhbXMpIHtcbiAgICBjb25zdCB7b2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFnc30gPSBvcHRzO1xuICAgIGxldCBkaW1lbnNpb25DaGFuZ2VzOiBCaW5kZWRVcGRhdGVyVHlwZVtdID0gW107XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MuZGF0YUNoYW5nZWQpIHtcbiAgICAgIC8vIGlmIGRhdGEgY2hhbmdlZCB1cGRhdGUgZXZlcnl0aGluZ1xuICAgICAgdGhpcy51cGRhdGVBZ2dyZWdhdGlvbihwcm9wcywgYWdncmVnYXRpb25QYXJhbXMpO1xuICAgICAgdGhpcy51cGRhdGVBbGxEaW1lbnNpb25zKHByb3BzKTtcblxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgYWdncmVnYXRpb25DaGFuZ2VzID0gdGhpcy5fZ2V0QWdncmVnYXRpb25DaGFuZ2VzKG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpO1xuXG4gICAgaWYgKGFnZ3JlZ2F0aW9uQ2hhbmdlcyAmJiBhZ2dyZWdhdGlvbkNoYW5nZXMubGVuZ3RoKSB7XG4gICAgICAvLyBnZXQgYWdncmVnYXRlZERhdGFcbiAgICAgIGFnZ3JlZ2F0aW9uQ2hhbmdlcy5mb3JFYWNoKGYgPT4gdHlwZW9mIGYgPT09ICdmdW5jdGlvbicgJiYgZihhZ2dyZWdhdGlvblBhcmFtcykpO1xuICAgICAgdGhpcy51cGRhdGVBbGxEaW1lbnNpb25zKHByb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gb25seSB1cGRhdGUgZGltZW5zaW9uc1xuICAgICAgZGltZW5zaW9uQ2hhbmdlcyA9IHRoaXMuX2dldERpbWVuc2lvbkNoYW5nZXMob2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncykgfHwgW107XG4gICAgICBkaW1lbnNpb25DaGFuZ2VzLmZvckVhY2goZiA9PiB0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJyAmJiBmKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlO1xuICB9XG5cbiAgLy8gVXBkYXRlIHByaXZhdGUgc3RhdGVcbiAgc2V0U3RhdGUodXBkYXRlT2JqZWN0KSB7XG4gICAgdGhpcy5zdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc3RhdGUsIHVwZGF0ZU9iamVjdCk7XG4gIH1cblxuICAvLyBVcGRhdGUgcHJpdmF0ZSBzdGF0ZS5kaW1lbnNpb25zXG4gIF9zZXREaW1lbnNpb25TdGF0ZShrZXksIHVwZGF0ZU9iamVjdCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGltZW5zaW9uczogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZS5kaW1lbnNpb25zLCB7XG4gICAgICAgIFtrZXldOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0YXRlLmRpbWVuc2lvbnNba2V5XSwgdXBkYXRlT2JqZWN0KVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIF9hZGRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlKSB7XG4gICAgdGhpcy5hZ2dyZWdhdGlvblVwZGF0ZXIgPSBhZ2dyZWdhdGlvbjtcbiAgfVxuXG4gIF9hZGREaW1lbnNpb24oZGltZW5zaW9uczogRGltZW5zaW9uVHlwZVtdID0gW10pIHtcbiAgICBkaW1lbnNpb25zLmZvckVhY2goZGltZW5zaW9uID0+IHtcbiAgICAgIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uO1xuICAgICAgdGhpcy5kaW1lbnNpb25VcGRhdGVyc1trZXldID0gZGltZW5zaW9uO1xuICAgIH0pO1xuICB9XG5cbiAgX25lZWRVcGRhdGVTdGVwKFxuICAgIGRpbWVuc2lvblN0ZXA6IFVwZGF0ZVN0ZXBzVHlwZSB8IEFnZ3JlZ2F0aW9uVXBkYXRlU3RlcHNUeXBlLFxuICAgIG9sZFByb3BzLFxuICAgIHByb3BzLFxuICAgIGNoYW5nZUZsYWdzXG4gICkge1xuICAgIC8vIHdoZXRoZXIgbmVlZCB0byB1cGRhdGUgY3VycmVudCBkaW1lbnNpb24gc3RlcFxuICAgIC8vIGRpbWVuc2lvbiBzdGVwIGlzIHRoZSB2YWx1ZSwgZG9tYWluLCBzY2FsZUZ1bmN0aW9uIG9mIGVhY2ggZGltZW5zaW9uXG4gICAgLy8gZWFjaCBzdGVwIGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMgbGlua3MgdG8gbGF5ZXIgcHJvcCBhbmQgd2hldGhlciB0aGUgcHJvcCBpc1xuICAgIC8vIGNvbnRyb2xsZWQgYnkgdXBkYXRlVHJpZ2dlcnNcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhkaW1lbnNpb25TdGVwLnRyaWdnZXJzKS5zb21lKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0udXBkYXRlVHJpZ2dlcikge1xuICAgICAgICAvLyBjaGVjayBiYXNlZCBvbiB1cGRhdGVUcmlnZ2VycyBjaGFuZ2UgZmlyc3RcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjaGFuZ2VGbGFncy51cGRhdGVUcmlnZ2Vyc0NoYW5nZWQgJiZcbiAgICAgICAgICAoY2hhbmdlRmxhZ3MudXBkYXRlVHJpZ2dlcnNDaGFuZ2VkLmFsbCB8fFxuICAgICAgICAgICAgY2hhbmdlRmxhZ3MudXBkYXRlVHJpZ2dlcnNDaGFuZ2VkW2l0ZW0udXBkYXRlVHJpZ2dlcl0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyBmYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuICAgICAgcmV0dXJuIG9sZFByb3BzW2l0ZW0ucHJvcF0gIT09IHByb3BzW2l0ZW0ucHJvcF07XG4gICAgfSk7XG4gIH1cblxuICBfYWNjdW11bGF0ZVVwZGF0ZXJzPFVwZGF0ZXJPYmplY3RUeXBlIGV4dGVuZHMgRGltZW5zaW9uVHlwZSB8IEFnZ3JlZ2F0aW9uVHlwZT4oXG4gICAgc3RlcCxcbiAgICBwcm9wcyxcbiAgICBkaW1lbnNpb246IFVwZGF0ZXJPYmplY3RUeXBlXG4gICkge1xuICAgIHR5cGUgTG9jYWxVcGRhdGVyVHlwZSA9IFVwZGF0ZXJPYmplY3RUeXBlIGV4dGVuZHMgRGltZW5zaW9uVHlwZVxuICAgICAgPyBCaW5kZWRVcGRhdGVyVHlwZVxuICAgICAgOiBCaW5kZWRBZ2dyZWdhdGVkVXBkYXRlclR5cGU7XG4gICAgY29uc3QgdXBkYXRlcnM6IExvY2FsVXBkYXRlclR5cGVbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBzdGVwOyBpIDwgZGltZW5zaW9uLnVwZGF0ZVN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cGRhdGVyID0gZGltZW5zaW9uLnVwZGF0ZVN0ZXBzW2ldLnVwZGF0ZXI7XG4gICAgICBpZiAodHlwZW9mIHVwZGF0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdXBkYXRlcnMucHVzaChcbiAgICAgICAgICB1cGRhdGVyLmJpbmQodGhpcywgZGltZW5zaW9uLnVwZGF0ZVN0ZXBzW2ldLCBwcm9wcywgZGltZW5zaW9uKSBhcyBMb2NhbFVwZGF0ZXJUeXBlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZXJzO1xuICB9XG5cbiAgX2dldEFsbFVwZGF0ZXJzPFVwZGF0ZXJPYmplY3RUeXBlIGV4dGVuZHMgRGltZW5zaW9uVHlwZSB8IEFnZ3JlZ2F0aW9uVHlwZT4oXG4gICAgZGltZW5zaW9uOiBVcGRhdGVyT2JqZWN0VHlwZSxcbiAgICBvbGRQcm9wcyxcbiAgICBwcm9wcyxcbiAgICBjaGFuZ2VGbGFnc1xuICApIHtcbiAgICB0eXBlIExvY2FsVXBkYXRlclR5cGUgPSBVcGRhdGVyT2JqZWN0VHlwZSBleHRlbmRzIERpbWVuc2lvblR5cGVcbiAgICAgID8gQmluZGVkVXBkYXRlclR5cGVcbiAgICAgIDogQmluZGVkQWdncmVnYXRlZFVwZGF0ZXJUeXBlO1xuICAgIGxldCB1cGRhdGVyczogTG9jYWxVcGRhdGVyVHlwZVtdID0gW107XG4gICAgY29uc3QgbmVlZFVwZGF0ZVN0ZXAgPSBkaW1lbnNpb24udXBkYXRlU3RlcHMuZmluZEluZGV4KHN0ZXAgPT5cbiAgICAgIHRoaXMuX25lZWRVcGRhdGVTdGVwKHN0ZXAsIG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpXG4gICAgKTtcblxuICAgIGlmIChuZWVkVXBkYXRlU3RlcCA+IC0xKSB7XG4gICAgICB1cGRhdGVycyA9IHVwZGF0ZXJzLmNvbmNhdCh0aGlzLl9hY2N1bXVsYXRlVXBkYXRlcnMobmVlZFVwZGF0ZVN0ZXAsIHByb3BzLCBkaW1lbnNpb24pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlcnM7XG4gIH1cblxuICBfZ2V0QWdncmVnYXRpb25DaGFuZ2VzKG9sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3MpIHtcbiAgICBjb25zdCB1cGRhdGVycyA9IHRoaXMuX2dldEFsbFVwZGF0ZXJzKHRoaXMuYWdncmVnYXRpb25VcGRhdGVyLCBvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKTtcbiAgICByZXR1cm4gdXBkYXRlcnMubGVuZ3RoID8gdXBkYXRlcnMgOiBudWxsO1xuICB9XG5cbiAgX2dldERpbWVuc2lvbkNoYW5nZXMob2xkUHJvcHMsIHByb3BzLCBjaGFuZ2VGbGFncykge1xuICAgIGxldCB1cGRhdGVyczogQmluZGVkVXBkYXRlclR5cGVbXSA9IFtdO1xuXG4gICAgLy8gZ2V0IGRpbWVuc2lvbiB0byBiZSB1cGRhdGVkXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kaW1lbnNpb25VcGRhdGVycykge1xuICAgICAgLy8gcmV0dXJuIHRoZSBmaXJzdCB0cmlnZ2VyZWQgdXBkYXRlciBmb3IgZWFjaCBkaW1lbnNpb25cbiAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuZGltZW5zaW9uVXBkYXRlcnNba2V5XTtcbiAgICAgIGNvbnN0IGRpbWVuc2lvblVwZGF0ZXJzID0gdGhpcy5fZ2V0QWxsVXBkYXRlcnMoZGltZW5zaW9uLCBvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzKTtcbiAgICAgIHVwZGF0ZXJzID0gdXBkYXRlcnMuY29uY2F0KGRpbWVuc2lvblVwZGF0ZXJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlcnMubGVuZ3RoID8gdXBkYXRlcnMgOiBudWxsO1xuICB9XG5cbiAgZ2V0VXBkYXRlVHJpZ2dlcnMocHJvcHMpIHtcbiAgICBjb25zdCBfdXBkYXRlVHJpZ2dlcnMgPSBwcm9wcy51cGRhdGVUcmlnZ2VycyB8fCB7fTtcbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kaW1lbnNpb25VcGRhdGVycykge1xuICAgICAgY29uc3Qge2FjY2Vzc29yLCB1cGRhdGVTdGVwc306IHthY2Nlc3NvcjsgdXBkYXRlU3RlcHM6IFVwZGF0ZVN0ZXBzVHlwZVtdfSA9XG4gICAgICAgIHRoaXMuZGltZW5zaW9uVXBkYXRlcnNba2V5XTtcbiAgICAgIC8vIGZvbGQgZGltZW5zaW9uIHRyaWdnZXJzIGludG8gZWFjaCBhY2Nlc3NvclxuICAgICAgdXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdID0ge307XG5cbiAgICAgIHVwZGF0ZVN0ZXBzLmZvckVhY2goc3RlcCA9PiB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMoc3RlcC50cmlnZ2VycyB8fCBbXSkuZm9yRWFjaCgoe3Byb3AsIHVwZGF0ZVRyaWdnZXJ9KSA9PiB7XG4gICAgICAgICAgaWYgKHVwZGF0ZVRyaWdnZXIpIHtcbiAgICAgICAgICAgIC8vIGlmIHByb3AgaXMgYmFzZWQgb24gdXBkYXRlVHJpZ2dlciBlLmcuIGdldENvbG9yVmFsdWUsIGdldENvbG9yV2VpZ2h0XG4gICAgICAgICAgICAvLyBhbmQgdXBkYXRlVHJpZ2dlcnMgaXMgcGFzc2VkIGluIGZyb20gbGF5ZXIgcHJvcFxuICAgICAgICAgICAgLy8gZm9sZCB0aGUgdXBkYXRlVHJpZ2dlcnMgaW50byBhY2Nlc3NvclxuICAgICAgICAgICAgY29uc3QgZnJvbVByb3AgPSBfdXBkYXRlVHJpZ2dlcnNbdXBkYXRlVHJpZ2dlcl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZyb21Qcm9wID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShmcm9tUHJvcCkpIHtcbiAgICAgICAgICAgICAgLy8gaWYgdXBkYXRlVHJpZ2dlciBpcyBhbiBvYmplY3Qgc3ByZWFkIGl0XG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdLCBmcm9tUHJvcCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZyb21Qcm9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnNbYWNjZXNzb3JdW3Byb3BdID0gZnJvbVByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHByb3AgaXMgbm90IGJhc2VkIG9uIHVwZGF0ZVRyaWdnZXJcbiAgICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzW2FjY2Vzc29yXVtwcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlVHJpZ2dlcnM7XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyh7aW5mb30sIGxheWVyUHJvcHMpIHtcbiAgICBjb25zdCBpc1BpY2tlZCA9IGluZm8ucGlja2VkICYmIGluZm8uaW5kZXggPiAtMTtcbiAgICBsZXQgb2JqZWN0ID0gbnVsbDtcbiAgICBjb25zdCBjZWxsID0gaXNQaWNrZWQgPyB0aGlzLnN0YXRlLmxheWVyRGF0YS5kYXRhW2luZm8uaW5kZXhdIDogbnVsbDtcbiAgICBpZiAoY2VsbCkge1xuICAgICAgbGV0IGJpbkluZm8gPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZGltZW5zaW9uVXBkYXRlcnMpIHtcbiAgICAgICAgY29uc3Qge2dldFBpY2tpbmdJbmZvfSA9IHRoaXMuZGltZW5zaW9uVXBkYXRlcnNba2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiBnZXRQaWNraW5nSW5mbyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGJpbkluZm8gPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBiaW5JbmZvLFxuICAgICAgICAgICAgZ2V0UGlja2luZ0luZm8odGhpcy5zdGF0ZS5kaW1lbnNpb25zW2tleV0sIGNlbGwsIGxheWVyUHJvcHMpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBvYmplY3QgPSBPYmplY3QuYXNzaWduKGJpbkluZm8sIGNlbGwsIHtcbiAgICAgICAgcG9pbnRzOiBjZWxsLmZpbHRlcmVkUG9pbnRzIHx8IGNlbGwucG9pbnRzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhZGQgYmluICBhbmQgIHRvIGluZm9cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihpbmZvLCB7XG4gICAgICBwaWNrZWQ6IEJvb2xlYW4ob2JqZWN0KSxcbiAgICAgIC8vIG92ZXJyaWRlIG9iamVjdCB3aXRoIHBpY2tlZCBjZWxsXG4gICAgICBvYmplY3RcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFjY2Vzc29yKGRpbWVuc2lvbktleSwgbGF5ZXJQcm9wcykge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZGltZW5zaW9uVXBkYXRlcnMsIGRpbWVuc2lvbktleSkpIHtcbiAgICAgIHJldHVybiBub3A7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpbWVuc2lvblVwZGF0ZXJzW2RpbWVuc2lvbktleV0uZ2V0U3ViTGF5ZXJBY2Nlc3NvcihcbiAgICAgIHRoaXMuc3RhdGUuZGltZW5zaW9uc1tkaW1lbnNpb25LZXldLFxuICAgICAgdGhpcy5kaW1lbnNpb25VcGRhdGVyc1tkaW1lbnNpb25LZXldLFxuICAgICAgbGF5ZXJQcm9wc1xuICAgICk7XG4gIH1cbn1cblxuQ1BVQWdncmVnYXRvci5nZXREaW1lbnNpb25TY2FsZSA9IGdldERpbWVuc2lvblNjYWxlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxrQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEs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
@@ -1,7 +1,7 @@
1
- import { CompositeLayer } from '@deck.gl/core';
1
+ /// <reference types="deck.gl" />
2
+ import { CompositeLayer, Position } from '@deck.gl/core';
2
3
  import { CompositeLayerProps } from '@deck.gl/core/lib/composite-layer';
3
- import { Position, RGBAColor } from 'deck.gl';
4
- import { RGBColor } from '@kepler.gl/types';
4
+ import { RGBColor, RGBAColor } from '@kepler.gl/types';
5
5
  export interface SvgIconLayerProps extends CompositeLayerProps<any> {
6
6
  getIconGeometry: (i: string) => number[];
7
7
  getIcon: (d: {
@@ -99,4 +99,4 @@ var SvgIconLayer = exports["default"] = /*#__PURE__*/function (_CompositeLayer)
99
99
  }(_core.CompositeLayer);
100
100
  SvgIconLayer.layerName = 'SvgIconLayer';
101
101
  SvgIconLayer.defaultProps = defaultProps;
102
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfc2NhdHRlcnBsb3RJY29uTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJERUZBVUxUX0lDT05fR0VPTUVUUlkiLCJkZWZhdWx0UHJvcHMiLCJnZXRJY29uR2VvbWV0cnkiLCJnZXRJY29uIiwiZCIsImljb24iLCJTdmdJY29uTGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJpbml0aWFsaXplU3RhdGUiLCJzdGF0ZSIsImRhdGEiLCJ1cGRhdGVTdGF0ZSIsIl9yZWYiLCJjaGFuZ2VGbGFncyIsImRhdGFDaGFuZ2VkIiwiX2V4dHJhY3RTdWJsYXllcnMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiaWNvbkxheWVycyIsImkiLCJpY29uSWQiLCJpZCIsImdlb21ldHJ5Iiwic2V0U3RhdGUiLCJ2YWx1ZXMiLCJfdXBkYXRlQXV0b0hpZ2hsaWdodCIsImluZm8iLCJfaW5mbyRzb3VyY2VMYXllciIsInNvdXJjZUxheWVyIiwidXBkYXRlQXV0b0hpZ2hsaWdodCIsInJlbmRlckxheWVycyIsIl90aGlzIiwibGF5ZXJJZCIsImxheWVycyIsIm1hcCIsIl9yZWYyIiwiU2NhdHRlcnBsb3RJY29uTGF5ZXIiLCJjb25jYXQiLCJpY29uR2VvbWV0cnkiLCJDb21wb3NpdGVMYXllciIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdmctaWNvbi1sYXllci9zdmctaWNvbi1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0NvbXBvc2l0ZUxheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7Q29tcG9zaXRlTGF5ZXJQcm9wc30gZnJvbSAnQGRlY2suZ2wvY29yZS9saWIvY29tcG9zaXRlLWxheWVyJztcbmltcG9ydCB7UG9zaXRpb24sIFJHQkFDb2xvcn0gZnJvbSAnZGVjay5nbCc7XG5pbXBvcnQge1JHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCBTY2F0dGVycGxvdEljb25MYXllciBmcm9tICcuL3NjYXR0ZXJwbG90LWljb24tbGF5ZXInO1xuXG4vLyBkZWZhdWx0IGljb24gZ2VvbWV0cnkgaXMgYSBzcXVhcmVcbmNvbnN0IERFRkFVTFRfSUNPTl9HRU9NRVRSWSA9IFsxLCAxLCAwLCAxLCAtMSwgMCwgLTEsIC0xLCAwLCAtMSwgLTEsIDAsIC0xLCAxLCAwLCAxLCAxLCAwXTtcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBnZXRJY29uR2VvbWV0cnk6ICgpID0+IERFRkFVTFRfSUNPTl9HRU9NRVRSWSxcbiAgZ2V0SWNvbjogKGQ6IHtpY29uOiBzdHJpbmd9KSA9PiBkLmljb25cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ZnSWNvbkxheWVyUHJvcHMgZXh0ZW5kcyBDb21wb3NpdGVMYXllclByb3BzPGFueT4ge1xuICBnZXRJY29uR2VvbWV0cnk6IChpOiBzdHJpbmcpID0+IG51bWJlcltdO1xuICBnZXRJY29uOiAoZDoge2ljb246IHN0cmluZ30pID0+IHN0cmluZztcbiAgZ2V0UG9zaXRpb246IChkOiBhbnkpID0+IFBvc2l0aW9uO1xuICBnZXRSYWRpdXM6ICgoZDogYW55KSA9PiBudW1iZXIpIHwgbnVtYmVyO1xuICBnZXRGaWxsQ29sb3I6IFJHQkNvbG9yIHwgUkdCQUNvbG9yO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdmdJY29uTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllcjxhbnksIFN2Z0ljb25MYXllclByb3BzPiB7XG4gIC8vIE11c3QgYmUgZGVmaW5lZFxuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRhdGE6IHt9XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtjaGFuZ2VGbGFnc30pIHtcbiAgICBpZiAoY2hhbmdlRmxhZ3MuZGF0YUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX2V4dHJhY3RTdWJsYXllcnMoKTtcbiAgICB9XG4gIH1cblxuICBfZXh0cmFjdFN1YmxheWVycygpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ2V0SWNvbkdlb21ldHJ5LCBnZXRJY29ufSA9IHRoaXMucHJvcHM7XG5cbiAgICBjb25zdCBpY29uTGF5ZXJzID0ge307XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpY29uSWQgPSBnZXRJY29uKGRhdGFbaV0pO1xuICAgICAgaWNvbkxheWVyc1tpY29uSWRdID0gaWNvbkxheWVyc1tpY29uSWRdIHx8IHtcbiAgICAgICAgaWQ6IGljb25JZCxcbiAgICAgICAgZ2VvbWV0cnk6IGdldEljb25HZW9tZXRyeShpY29uSWQpIHx8IERFRkFVTFRfSUNPTl9HRU9NRVRSWSxcbiAgICAgICAgZGF0YTogW11cbiAgICAgIH07XG4gICAgICBpY29uTGF5ZXJzW2ljb25JZF0uZGF0YS5wdXNoKGRhdGFbaV0pO1xuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRhdGE6IE9iamVjdC52YWx1ZXMoaWNvbkxheWVycylcbiAgICB9KTtcbiAgfVxuXG4gIF91cGRhdGVBdXRvSGlnaGxpZ2h0KGluZm8pIHtcbiAgICBpbmZvPy5zb3VyY2VMYXllcj8udXBkYXRlQXV0b0hpZ2hsaWdodChpbmZvKTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCBsYXllcklkID0gdGhpcy5wcm9wcy5pZDtcblxuICAgIGNvbnN0IGxheWVycyA9XG4gICAgICB0aGlzLnN0YXRlLmRhdGEgJiZcbiAgICAgIHRoaXMuc3RhdGUuZGF0YS5sZW5ndGggJiZcbiAgICAgIHRoaXMuc3RhdGUuZGF0YS5tYXAoXG4gICAgICAgICh7aWQsIGRhdGEsIGdlb21ldHJ5fSkgPT5cbiAgICAgICAgICBuZXcgU2NhdHRlcnBsb3RJY29uTGF5ZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGlkOiBgJHtsYXllcklkfS0ke2lkfWAsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaWNvbkdlb21ldHJ5OiBnZW9tZXRyeVxuICAgICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgcmV0dXJuIGxheWVycyAmJiBsYXllcnMubGVuZ3RoID4gMCA/IGxheWVycyA6IG51bGw7XG4gIH1cbn1cblxuU3ZnSWNvbkxheWVyLmxheWVyTmFtZSA9ICdTdmdJY29uTGF5ZXInO1xuU3ZnSWNvbkxheWVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUlBLElBQUFDLHFCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBNEQsU0FB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LENBQUMsQ0FBQ1YsSUFBSSxDQUFDckMsSUFBSSxDQUFDcUMsSUFBSSxDQUFDUyxDQUFDLENBQUMsQ0FBQztNQUN2QztNQUNBLElBQUksQ0FBQ0ksUUFBUSxDQUFDO1FBQ1piLElBQUksRUFBRTVDLE1BQU0sQ0FBQzBELE1BQU0sQ0FBQ04sVUFBVTtNQUNoQyxDQUFDLENBQUM7SUFDSjtFQUFDO0lBQUFaLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUFrQixvQkFBb0JBLENBQUNDLElBQUksRUFBRTtNQUFBLElBQUFDLGlCQUFBO01BQ3pCRCxJQUFJLGFBQUpBLElBQUksZ0JBQUFDLGlCQUFBLEdBQUpELElBQUksQ0FBRUUsV0FBVyxjQUFBRCxpQkFBQSxlQUFqQkEsaUJBQUEsQ0FBbUJFLG1CQUFtQixDQUFDSCxJQUFJLENBQUM7SUFDOUM7RUFBQztJQUFBcEIsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQXVCLFlBQVlBLENBQUEsRUFBRztNQUFBLElBQUFDLEtBQUE7TUFDYixJQUFNQyxPQUFPLEdBQUcsSUFBSSxDQUFDZixLQUFLLENBQUNJLEVBQUU7TUFFN0IsSUFBTVksTUFBTSxHQUNWLElBQUksQ0FBQ3hCLEtBQUssQ0FBQ0MsSUFBSSxJQUNmLElBQUksQ0FBQ0QsS0FBSyxDQUFDQyxJQUFJLENBQUNqQyxNQUFNLElBQ3RCLElBQUksQ0FBQ2dDLEtBQUssQ0FBQ0MsSUFBSSxDQUFDd0IsR0FBRyxDQUNqQixVQUFBQyxLQUFBO1FBQUEsSUFBRWQsRUFBRSxHQUFBYyxLQUFBLENBQUZkLEVBQUU7VUFBRVgsSUFBSSxHQUFBeUIsS0FBQSxDQUFKekIsSUFBSTtVQUFFWSxRQUFRLEdBQUFhLEtBQUEsQ0FBUmIsUUFBUTtRQUFBLE9BQ2xCLElBQUljLGdDQUFvQixDQUFBN0QsYUFBQSxDQUFBQSxhQUFBLEtBQ25Cd0QsS0FBSSxDQUFDZCxLQUFLO1VBQ2JJLEVBQUUsS0FBQWdCLE1BQUEsQ0FBS0wsT0FBTyxPQUFBSyxNQUFBLENBQUloQixFQUFFLENBQUU7VUFDdEJYLElBQUksRUFBSkEsSUFBSTtVQUNKNEIsWUFBWSxFQUFFaEI7UUFBUSxFQUN2QixDQUFDO01BQUEsQ0FDTixDQUFDO01BRUgsT0FBT1csTUFBTSxJQUFJQSxNQUFNLENBQUN4RCxNQUFNLEdBQUcsQ0FBQyxHQUFHd0QsTUFBTSxHQUFHLElBQUk7SUFDcEQ7RUFBQztBQUFBLEVBckR1Q00sb0JBQWM7QUF3RHhEdkMsWUFBWSxDQUFDd0MsU0FBUyxHQUFHLGNBQWM7QUFDdkN4QyxZQUFZLENBQUNMLFlBQVksR0FBR0EsWUFBWSIsImlnbm9yZUxpc3QiOltdfQ==
102
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfc2NhdHRlcnBsb3RJY29uTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJERUZBVUxUX0lDT05fR0VPTUVUUlkiLCJkZWZhdWx0UHJvcHMiLCJnZXRJY29uR2VvbWV0cnkiLCJnZXRJY29uIiwiZCIsImljb24iLCJTdmdJY29uTGF5ZXIiLCJleHBvcnRzIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJpbml0aWFsaXplU3RhdGUiLCJzdGF0ZSIsImRhdGEiLCJ1cGRhdGVTdGF0ZSIsIl9yZWYiLCJjaGFuZ2VGbGFncyIsImRhdGFDaGFuZ2VkIiwiX2V4dHJhY3RTdWJsYXllcnMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwiaWNvbkxheWVycyIsImkiLCJpY29uSWQiLCJpZCIsImdlb21ldHJ5Iiwic2V0U3RhdGUiLCJ2YWx1ZXMiLCJfdXBkYXRlQXV0b0hpZ2hsaWdodCIsImluZm8iLCJfaW5mbyRzb3VyY2VMYXllciIsInNvdXJjZUxheWVyIiwidXBkYXRlQXV0b0hpZ2hsaWdodCIsInJlbmRlckxheWVycyIsIl90aGlzIiwibGF5ZXJJZCIsImxheWVycyIsIm1hcCIsIl9yZWYyIiwiU2NhdHRlcnBsb3RJY29uTGF5ZXIiLCJjb25jYXQiLCJpY29uR2VvbWV0cnkiLCJDb21wb3NpdGVMYXllciIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdmctaWNvbi1sYXllci9zdmctaWNvbi1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0NvbXBvc2l0ZUxheWVyLCBQb3NpdGlvbn0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge0NvbXBvc2l0ZUxheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL2NvcmUvbGliL2NvbXBvc2l0ZS1sYXllcic7XG5cbmltcG9ydCB7UkdCQ29sb3IsIFJHQkFDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQgU2NhdHRlcnBsb3RJY29uTGF5ZXIgZnJvbSAnLi9zY2F0dGVycGxvdC1pY29uLWxheWVyJztcblxuLy8gZGVmYXVsdCBpY29uIGdlb21ldHJ5IGlzIGEgc3F1YXJlXG5jb25zdCBERUZBVUxUX0lDT05fR0VPTUVUUlkgPSBbMSwgMSwgMCwgMSwgLTEsIDAsIC0xLCAtMSwgMCwgLTEsIC0xLCAwLCAtMSwgMSwgMCwgMSwgMSwgMF07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgZ2V0SWNvbkdlb21ldHJ5OiAoKSA9PiBERUZBVUxUX0lDT05fR0VPTUVUUlksXG4gIGdldEljb246IChkOiB7aWNvbjogc3RyaW5nfSkgPT4gZC5pY29uXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFN2Z0ljb25MYXllclByb3BzIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXJQcm9wczxhbnk+IHtcbiAgZ2V0SWNvbkdlb21ldHJ5OiAoaTogc3RyaW5nKSA9PiBudW1iZXJbXTtcbiAgZ2V0SWNvbjogKGQ6IHtpY29uOiBzdHJpbmd9KSA9PiBzdHJpbmc7XG4gIGdldFBvc2l0aW9uOiAoZDogYW55KSA9PiBQb3NpdGlvbjtcbiAgZ2V0UmFkaXVzOiAoKGQ6IGFueSkgPT4gbnVtYmVyKSB8IG51bWJlcjtcbiAgZ2V0RmlsbENvbG9yOiBSR0JDb2xvciB8IFJHQkFDb2xvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ZnSWNvbkxheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXI8YW55LCBTdmdJY29uTGF5ZXJQcm9wcz4ge1xuICAvLyBNdXN0IGJlIGRlZmluZWRcbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBkYXRhOiB7fVxuICAgIH07XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7Y2hhbmdlRmxhZ3N9KSB7XG4gICAgaWYgKGNoYW5nZUZsYWdzLmRhdGFDaGFuZ2VkKSB7XG4gICAgICB0aGlzLl9leHRyYWN0U3VibGF5ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgX2V4dHJhY3RTdWJsYXllcnMoKSB7XG4gICAgY29uc3Qge2RhdGEsIGdldEljb25HZW9tZXRyeSwgZ2V0SWNvbn0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgaWNvbkxheWVycyA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaWNvbklkID0gZ2V0SWNvbihkYXRhW2ldKTtcbiAgICAgIGljb25MYXllcnNbaWNvbklkXSA9IGljb25MYXllcnNbaWNvbklkXSB8fCB7XG4gICAgICAgIGlkOiBpY29uSWQsXG4gICAgICAgIGdlb21ldHJ5OiBnZXRJY29uR2VvbWV0cnkoaWNvbklkKSB8fCBERUZBVUxUX0lDT05fR0VPTUVUUlksXG4gICAgICAgIGRhdGE6IFtdXG4gICAgICB9O1xuICAgICAgaWNvbkxheWVyc1tpY29uSWRdLmRhdGEucHVzaChkYXRhW2ldKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBkYXRhOiBPYmplY3QudmFsdWVzKGljb25MYXllcnMpXG4gICAgfSk7XG4gIH1cblxuICBfdXBkYXRlQXV0b0hpZ2hsaWdodChpbmZvKSB7XG4gICAgaW5mbz8uc291cmNlTGF5ZXI/LnVwZGF0ZUF1dG9IaWdobGlnaHQoaW5mbyk7XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3QgbGF5ZXJJZCA9IHRoaXMucHJvcHMuaWQ7XG5cbiAgICBjb25zdCBsYXllcnMgPVxuICAgICAgdGhpcy5zdGF0ZS5kYXRhICYmXG4gICAgICB0aGlzLnN0YXRlLmRhdGEubGVuZ3RoICYmXG4gICAgICB0aGlzLnN0YXRlLmRhdGEubWFwKFxuICAgICAgICAoe2lkLCBkYXRhLCBnZW9tZXRyeX0pID0+XG4gICAgICAgICAgbmV3IFNjYXR0ZXJwbG90SWNvbkxheWVyKHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICAgICAgICBpZDogYCR7bGF5ZXJJZH0tJHtpZH1gLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGljb25HZW9tZXRyeTogZ2VvbWV0cnlcbiAgICAgICAgICB9KVxuICAgICAgKTtcblxuICAgIHJldHVybiBsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDAgPyBsYXllcnMgOiBudWxsO1xuICB9XG59XG5cblN2Z0ljb25MYXllci5sYXllck5hbWUgPSAnU3ZnSWNvbkxheWVyJztcblN2Z0ljb25MYXllci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFJQSxJQUFBQyxxQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQTRELFNBQUFHLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVBQUFHLE1BQUEsQ0FBQWMseUJBQUEsQ0FBQWYsQ0FBQSxLQUFBSCxPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQUUsTUFBQSxDQUFBZ0IsY0FBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQU4sQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRCxDQUFBO0FBQUEsU0FBQW9CLFdBQUFsQixDQUFBLEVBQUFJLENBQUEsRUFBQU4sQ0FBQSxXQUFBTSxDQUFBLE9BQUFlLGdCQUFBLGFBQUFmLENBQUEsT0FBQWdCLDJCQUFBLGFBQUFwQixDQUFBLEVBQUFxQix5QkFBQSxLQUFBQyxPQUFBLENBQUFDLFNBQUEsQ0FBQW5CLENBQUEsRUFBQU4sQ0FBQSxZQUFBcUIsZ0JBQUEsYUFBQW5CLENBQUEsRUFBQXdCLFdBQUEsSUFBQXBCLENBQUEsQ0FBQUssS0FBQSxDQUFBVCxDQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBdUIsMEJBQUEsY0FBQXJCLENBQUEsSUFBQXlCLE9BQUEsQ0FBQUMsU0FBQSxDQUFBQyxPQUFBLENBQUFDLElBQUEsQ0FBQU4sT0FBQSxDQUFBQyxTQUFBLENBQUFFLE9BQUEsaUNBQUF6QixDQUFBLGFBQUFxQix5QkFBQSxZQUFBQSwwQkFBQSxhQUFBckIsQ0FBQSxVQVA1RDtBQUNBO0FBUUE7QUFDQSxJQUFNNkIscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUUxRixJQUFNQyxZQUFZLEdBQUc7RUFDbkJDLGVBQWUsRUFBRSxTQUFqQkEsZUFBZUEsQ0FBQTtJQUFBLE9BQVFGLHFCQUFxQjtFQUFBO0VBQzVDRyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBR0MsQ0FBaUI7SUFBQSxPQUFLQSxDQUFDLENBQUNDLElBQUk7RUFBQTtBQUN4QyxDQUFDO0FBQUMsSUFVbUJDLFlBQVksR0FBQUMsT0FBQSxxQ0FBQUMsZUFBQTtFQUFBLFNBQUFGLGFBQUE7SUFBQSxJQUFBRyxnQkFBQSxtQkFBQUgsWUFBQTtJQUFBLE9BQUFqQixVQUFBLE9BQUFpQixZQUFBLEVBQUF4QixTQUFBO0VBQUE7RUFBQSxJQUFBNEIsVUFBQSxhQUFBSixZQUFBLEVBQUFFLGVBQUE7RUFBQSxXQUFBRyxhQUFBLGFBQUFMLFlBQUE7SUFBQU0sR0FBQTtJQUFBQyxLQUFBO0lBQy9CO0lBQ0EsU0FBQUMsZUFBZUEsQ0FBQSxFQUFHO01BQ2hCLElBQUksQ0FBQ0MsS0FBSyxHQUFHO1FBQ1hDLElBQUksRUFBRSxDQUFDO01BQ1QsQ0FBQztJQUNIO0VBQUM7SUFBQUosR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQUksV0FBV0EsQ0FBQUMsSUFBQSxFQUFnQjtNQUFBLElBQWRDLFdBQVcsR0FBQUQsSUFBQSxDQUFYQyxXQUFXO01BQ3RCLElBQUlBLFdBQVcsQ0FBQ0MsV0FBVyxFQUFFO1FBQzNCLElBQUksQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztNQUMxQjtJQUNGO0VBQUM7SUFBQVQsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQVEsaUJBQWlCQSxDQUFBLEVBQUc7TUFDbEIsSUFBQUMsV0FBQSxHQUF5QyxJQUFJLENBQUNDLEtBQUs7UUFBNUNQLElBQUksR0FBQU0sV0FBQSxDQUFKTixJQUFJO1FBQUVkLGVBQWUsR0FBQW9CLFdBQUEsQ0FBZnBCLGVBQWU7UUFBRUMsT0FBTyxHQUFBbUIsV0FBQSxDQUFQbkIsT0FBTztNQUVyQyxJQUFNcUIsVUFBVSxHQUFHLENBQUMsQ0FBQztNQUNyQixLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR1QsSUFBSSxDQUFDakMsTUFBTSxFQUFFMEMsQ0FBQyxFQUFFLEVBQUU7UUFDcEMsSUFBTUMsTUFBTSxHQUFHdkIsT0FBTyxDQUFDYSxJQUFJLENBQUNTLENBQUMsQ0FBQyxDQUFDO1FBQy9CRCxVQUFVLENBQUNFLE1BQU0sQ0FBQyxHQUFHRixVQUFVLENBQUNFLE1BQU0sQ0FBQyxJQUFJO1VBQ3pDQyxFQUFFLEVBQUVELE1BQU07VUFDVkUsUUFBUSxFQUFFMUIsZUFBZSxDQUFDd0IsTUFBTSxDQUFDLElBQUkxQixxQkFBcUI7VUFDMURnQixJQUFJLEVBQUU7UUFDUixDQUFDO1FBQ0RRLFVBQVUsQ0FBQ0UsTUFBTSxDQUFDLENBQUNWLElBQUksQ0FBQ3JDLElBQUksQ0FBQ3FDLElBQUksQ0FBQ1MsQ0FBQyxDQUFDLENBQUM7TUFDdkM7TUFDQSxJQUFJLENBQUNJLFFBQVEsQ0FBQztRQUNaYixJQUFJLEVBQUU1QyxNQUFNLENBQUMwRCxNQUFNLENBQUNOLFVBQVU7TUFDaEMsQ0FBQyxDQUFDO0lBQ0o7RUFBQztJQUFBWixHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBa0Isb0JBQW9CQSxDQUFDQyxJQUFJLEVBQUU7TUFBQSxJQUFBQyxpQkFBQTtNQUN6QkQsSUFBSSxhQUFKQSxJQUFJLGdCQUFBQyxpQkFBQSxHQUFKRCxJQUFJLENBQUVFLFdBQVcsY0FBQUQsaUJBQUEsZUFBakJBLGlCQUFBLENBQW1CRSxtQkFBbUIsQ0FBQ0gsSUFBSSxDQUFDO0lBQzlDO0VBQUM7SUFBQXBCLEdBQUE7SUFBQUMsS0FBQSxFQUVELFNBQUF1QixZQUFZQSxDQUFBLEVBQUc7TUFBQSxJQUFBQyxLQUFBO01BQ2IsSUFBTUMsT0FBTyxHQUFHLElBQUksQ0FBQ2YsS0FBSyxDQUFDSSxFQUFFO01BRTdCLElBQU1ZLE1BQU0sR0FDVixJQUFJLENBQUN4QixLQUFLLENBQUNDLElBQUksSUFDZixJQUFJLENBQUNELEtBQUssQ0FBQ0MsSUFBSSxDQUFDakMsTUFBTSxJQUN0QixJQUFJLENBQUNnQyxLQUFLLENBQUNDLElBQUksQ0FBQ3dCLEdBQUcsQ0FDakIsVUFBQUMsS0FBQTtRQUFBLElBQUVkLEVBQUUsR0FBQWMsS0FBQSxDQUFGZCxFQUFFO1VBQUVYLElBQUksR0FBQXlCLEtBQUEsQ0FBSnpCLElBQUk7VUFBRVksUUFBUSxHQUFBYSxLQUFBLENBQVJiLFFBQVE7UUFBQSxPQUNsQixJQUFJYyxnQ0FBb0IsQ0FBQTdELGFBQUEsQ0FBQUEsYUFBQSxLQUNuQndELEtBQUksQ0FBQ2QsS0FBSztVQUNiSSxFQUFFLEtBQUFnQixNQUFBLENBQUtMLE9BQU8sT0FBQUssTUFBQSxDQUFJaEIsRUFBRSxDQUFFO1VBQ3RCWCxJQUFJLEVBQUpBLElBQUk7VUFDSjRCLFlBQVksRUFBRWhCO1FBQVEsRUFDdkIsQ0FBQztNQUFBLENBQ04sQ0FBQztNQUVILE9BQU9XLE1BQU0sSUFBSUEsTUFBTSxDQUFDeEQsTUFBTSxHQUFHLENBQUMsR0FBR3dELE1BQU0sR0FBRyxJQUFJO0lBQ3BEO0VBQUM7QUFBQSxFQXJEdUNNLG9CQUFjO0FBd0R4RHZDLFlBQVksQ0FBQ3dDLFNBQVMsR0FBRyxjQUFjO0FBQ3ZDeEMsWUFBWSxDQUFDTCxZQUFZLEdBQUdBLFlBQVkiLCJpZ25vcmVMaXN0IjpbXX0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/deckgl-layers",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.0-alpha.2",
4
+ "version": "3.1.0-alpha.4",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -35,9 +35,9 @@
35
35
  "@deck.gl/core": "^8.9.27",
36
36
  "@deck.gl/geo-layers": "^8.9.27",
37
37
  "@deck.gl/layers": "^8.9.27",
38
- "@kepler.gl/constants": "3.1.0-alpha.2",
39
- "@kepler.gl/types": "3.1.0-alpha.2",
40
- "@kepler.gl/utils": "3.1.0-alpha.2",
38
+ "@kepler.gl/constants": "3.1.0-alpha.4",
39
+ "@kepler.gl/types": "3.1.0-alpha.4",
40
+ "@kepler.gl/utils": "3.1.0-alpha.4",
41
41
  "@luma.gl/constants": "^8.5.20",
42
42
  "@luma.gl/core": "^8.5.20",
43
43
  "@mapbox/geo-viewport": "^0.4.1",
@@ -48,6 +48,7 @@
48
48
  "@types/supercluster": "^7.1.0",
49
49
  "d3-array": "^2.8.0",
50
50
  "global": "^4.3.0",
51
+ "lodash": "4.17.19",
51
52
  "lodash.memoize": "^4.1.2",
52
53
  "pbf": "^3.1.0",
53
54
  "supercluster": "^7.1.0",