@kepler.gl/reducers 3.3.0-alpha.10 → 3.3.0-alpha.11

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.
@@ -10,11 +10,10 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
- var _tasks = _interopRequireWildcard(require("react-palm/tasks"));
13
+ var _tasks = _interopRequireWildcard(require("@kepler.gl/tasks"));
14
14
  var _console = _interopRequireDefault(require("global/console"));
15
15
  var _utils = require("@kepler.gl/utils");
16
16
  var _commonUtils = require("@kepler.gl/common-utils");
17
- var _tasks2 = require("@kepler.gl/tasks");
18
17
  var _actions = require("@kepler.gl/actions");
19
18
  var _constants = require("@kepler.gl/constants");
20
19
  var _cloudProviders = require("@kepler.gl/cloud-providers");
@@ -36,7 +35,7 @@ var INITIAL_PROVIDER_STATE = exports.INITIAL_PROVIDER_STATE = {
36
35
  };
37
36
  function createActionTask(action, payload) {
38
37
  if (typeof action === 'function') {
39
- return (0, _tasks2.ACTION_TASK)().map(function () {
38
+ return (0, _tasks.ACTION_TASK)().map(function () {
40
39
  return action(payload);
41
40
  });
42
41
  }
@@ -65,10 +64,10 @@ function createGlobalNotificationTasks(_ref) {
65
64
  topic: _constants.DEFAULT_NOTIFICATION_TOPICS.global,
66
65
  message: message
67
66
  };
68
- var task = (0, _tasks2.ACTION_TASK)().map(function () {
67
+ var task = (0, _tasks.ACTION_TASK)().map(function () {
69
68
  return (0, _actions.addNotification)(successNote);
70
69
  });
71
- return delayClose ? [task, (0, _tasks2.DELAY_TASK)(3000).map(function () {
70
+ return delayClose ? [task, (0, _tasks.DELAY_TASK)(3000).map(function () {
72
71
  return (0, _actions.removeNotification)(id);
73
72
  })] : [task];
74
73
  }
@@ -100,7 +99,7 @@ var exportFileToCloudUpdater = exports.exportFileToCloudUpdater = function expor
100
99
  mapData: mapData,
101
100
  options: options
102
101
  };
103
- var uploadFileTask = (0, _tasks2.EXPORT_FILE_TO_CLOUD_TASK)({
102
+ var uploadFileTask = (0, _tasks.EXPORT_FILE_TO_CLOUD_TASK)({
104
103
  provider: provider,
105
104
  payload: payload
106
105
  }).bimap(
@@ -146,10 +145,10 @@ var exportFileSuccessUpdater = exports.exportFileSuccessUpdater = function expor
146
145
  response: response,
147
146
  provider: provider,
148
147
  options: options
149
- }), closeModal && (0, _tasks2.ACTION_TASK)().map(function () {
148
+ }), closeModal && (0, _tasks.ACTION_TASK)().map(function () {
150
149
  return (0, _actions.postSaveLoadSuccess)("Map saved to ".concat(state.currentProvider, "!"));
151
150
  })].filter(function (d) {
152
- return d;
151
+ return Boolean(d);
153
152
  });
154
153
  return tasks.length ? (0, _tasks.withTask)(newState, tasks) : newState;
155
154
  };
@@ -159,9 +158,9 @@ var exportFileSuccessUpdater = exports.exportFileSuccessUpdater = function expor
159
158
  */
160
159
  var postSaveLoadSuccessUpdater = exports.postSaveLoadSuccessUpdater = function postSaveLoadSuccessUpdater(state, action) {
161
160
  var message = action.payload || "Saved / Load to ".concat(state.currentProvider, " Success");
162
- var tasks = [(0, _tasks2.ACTION_TASK)().map(function () {
161
+ var tasks = [(0, _tasks.ACTION_TASK)().map(function () {
163
162
  return (0, _actions.toggleModal)(null);
164
- }), (0, _tasks2.ACTION_TASK)().map(function () {
163
+ }), (0, _tasks.ACTION_TASK)().map(function () {
165
164
  return (0, _actions.resetProviderStatus)();
166
165
  })].concat((0, _toConsumableArray2["default"])(createGlobalNotificationTasks({
167
166
  message: message
@@ -178,7 +177,7 @@ var exportFileErrorUpdater = exports.exportFileErrorUpdater = function exportFil
178
177
  });
179
178
  if (isFileConflict(error)) {
180
179
  newState.mapSaved = provider.name;
181
- return (0, _tasks.withTask)(newState, [(0, _tasks2.ACTION_TASK)().map(function () {
180
+ return (0, _tasks.withTask)(newState, [(0, _tasks.ACTION_TASK)().map(function () {
182
181
  return (0, _actions.toggleModal)(_constants.OVERWRITE_MAP_ID);
183
182
  })]);
184
183
  }
@@ -208,7 +207,7 @@ var loadCloudMapUpdater = exports.loadCloudMapUpdater = function loadCloudMapUpd
208
207
  });
209
208
 
210
209
  // payload called by provider.downloadMap
211
- var uploadFileTask = (0, _tasks2.LOAD_CLOUD_MAP_TASK)({
210
+ var uploadFileTask = (0, _tasks.LOAD_CLOUD_MAP_TASK)({
212
211
  provider: provider,
213
212
  payload: loadParams
214
213
  }).bimap(
@@ -427,16 +426,16 @@ var loadCloudMapSuccess2Updater = exports.loadCloudMapSuccess2Updater = function
427
426
  isCloudMapLoading: false,
428
427
  isProviderLoading: false
429
428
  });
430
- var tasks = [(0, _tasks2.ACTION_TASK)().map(function () {
429
+ var tasks = [(0, _tasks.ACTION_TASK)().map(function () {
431
430
  return (0, _actions.addDataToMap)(datasetsPayload);
432
431
  }), createActionTask(onSuccess, {
433
432
  response: response,
434
433
  loadParams: loadParams,
435
434
  provider: provider
436
- }), (0, _tasks2.ACTION_TASK)().map(function () {
435
+ }), (0, _tasks.ACTION_TASK)().map(function () {
437
436
  return (0, _actions.postSaveLoadSuccess)("Map from ".concat(provider.name, " loaded"));
438
437
  })].filter(function (d) {
439
- return d;
438
+ return Boolean(d);
440
439
  });
441
440
  return tasks.length ? (0, _tasks.withTask)(newState, tasks) : newState;
442
441
  };
@@ -462,4 +461,4 @@ var resetProviderStatusUpdater = exports.resetProviderStatusUpdater = function r
462
461
  successInfo: {}
463
462
  });
464
463
  };
465
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfdGFza3MyIiwiX2FjdGlvbnMiLCJfY29uc3RhbnRzIiwiX2Nsb3VkUHJvdmlkZXJzIiwiX3Byb2Nlc3NvcnMiLCJfdGFibGUiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSU5JVElBTF9QUk9WSURFUl9TVEFURSIsImV4cG9ydHMiLCJpc1Byb3ZpZGVyTG9hZGluZyIsImlzQ2xvdWRNYXBMb2FkaW5nIiwicHJvdmlkZXJFcnJvciIsImN1cnJlbnRQcm92aWRlciIsInN1Y2Nlc3NJbmZvIiwibWFwU2F2ZWQiLCJzYXZlZE1hcElkIiwidmlzdWFsaXphdGlvbnMiLCJjcmVhdGVBY3Rpb25UYXNrIiwiYWN0aW9uIiwicGF5bG9hZCIsIkFDVElPTl9UQVNLIiwibWFwIiwiX3ZhbGlkYXRlUHJvdmlkZXIiLCJwcm92aWRlciIsIm1ldGhvZCIsIkNvbnNvbGUiLCJlcnJvciIsImNvbmNhdCIsIm5hbWUiLCJjcmVhdGVHbG9iYWxOb3RpZmljYXRpb25UYXNrcyIsIl9yZWYiLCJ0eXBlIiwibWVzc2FnZSIsIl9yZWYkZGVsYXlDbG9zZSIsImRlbGF5Q2xvc2UiLCJpZCIsImdlbmVyYXRlSGFzaElkIiwic3VjY2Vzc05vdGUiLCJERUZBVUxUX05PVElGSUNBVElPTl9UWVBFUyIsInN1Y2Nlc3MiLCJ0b3BpYyIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyIsImdsb2JhbCIsInRhc2siLCJhZGROb3RpZmljYXRpb24iLCJERUxBWV9UQVNLIiwicmVtb3ZlTm90aWZpY2F0aW9uIiwiZXhwb3J0RmlsZVRvQ2xvdWRVcGRhdGVyIiwic3RhdGUiLCJfYWN0aW9uJHBheWxvYWQiLCJtYXBEYXRhIiwiX2FjdGlvbiRwYXlsb2FkJG9wdGlvIiwib3B0aW9ucyIsIm9uU3VjY2VzcyIsIm9uRXJyb3IiLCJjbG9zZU1vZGFsIiwibmV3U3RhdGUiLCJ1cGxvYWRGaWxlVGFzayIsIkVYUE9SVF9GSUxFX1RPX0NMT1VEX1RBU0siLCJiaW1hcCIsInJlc3BvbnNlIiwiZXhwb3J0RmlsZVN1Y2Nlc3MiLCJleHBvcnRGaWxlRXJyb3IiLCJ3aXRoVGFzayIsImV4cG9ydEZpbGVTdWNjZXNzVXBkYXRlciIsIl9yZXNwb25zZSRpbmZvJGlkIiwiX3Jlc3BvbnNlJGluZm8iLCJfYWN0aW9uJHBheWxvYWQyIiwiX2FjdGlvbiRwYXlsb2FkMiRvcHRpIiwiaXNQdWJsaWMiLCJpbmZvIiwidGFza3MiLCJwb3N0U2F2ZUxvYWRTdWNjZXNzIiwiZCIsInBvc3RTYXZlTG9hZFN1Y2Nlc3NVcGRhdGVyIiwidG9nZ2xlTW9kYWwiLCJyZXNldFByb3ZpZGVyU3RhdHVzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImV4cG9ydEZpbGVFcnJvclVwZGF0ZXIiLCJfYWN0aW9uJHBheWxvYWQzIiwiaXNGaWxlQ29uZmxpY3QiLCJPVkVSV1JJVEVfTUFQX0lEIiwiZ2V0RXJyb3IiLCJsb2FkQ2xvdWRNYXBVcGRhdGVyIiwiX2FjdGlvbiRwYXlsb2FkNCIsImxvYWRQYXJhbXMiLCJ3YXJuIiwiTE9BRF9DTE9VRF9NQVBfVEFTSyIsImxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJsb2FkQ2xvdWRNYXBFcnJvciIsIkZJTEVfQ09ORkxJQ1RfTVNHIiwiY2hlY2tMb2FkTWFwUmVzcG9uc2VFcnJvciIsImlzUGxhaW5PYmplY3QiLCJFcnJvciIsImRhdGFzZXRzIiwiY29uZmlnIiwiZ2V0RGF0YXNldEhhbmRsZXIiLCJmb3JtYXQiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJkZWZhdWx0SGFuZGxlciIsIkRBVEFTRVRfSEFORExFUlMiLCJEQVRBU0VUX0ZPUk1BVFMiLCJjc3YiLCJUYWJsZUNsYXNzIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJ0YWJsZSIsIktlcGxlclRhYmxlIiwiZ2V0RmlsZVByb2Nlc3NvciIsInByb2Nlc3NvclJlc3VsdCIsInByb2Nlc3NvciIsInN1cHBvcnRlZEZvcm1hdCIsImsiLCJqb2luIiwicGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrIiwiX3giLCJfcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiX3JlZjIiLCJwcm9jZXNzb3JNZXRob2QiLCJwYXJzZWREYXRhc2V0cyIsInBhcnNlZE1hcCIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsImtlcGxlcmdsIiwic2VudCIsInRvQXJyYXkiLCJQcm9taXNlIiwiYWxsIiwiX3JlZjMiLCJfY2FsbGVlIiwiZHMiLCJkYXRhIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFicnVwdCIsInN0b3AiLCJfeDIiLCJjZW50ZXJNYXAiLCJQQVJTRV9MT0FEX01BUF9SRVNQT05TRV9UQVNLIiwiVGFzayIsImZyb21Qcm9taXNlIiwibG9hZENsb3VkTWFwU3VjY2Vzc1VwZGF0ZXIiLCJfYWN0aW9uJHBheWxvYWQ1IiwiZm9ybWF0RXJyb3IiLCJkYXRhc2V0c1BheWxvYWQiLCJsb2FkQ2xvdWRNYXBTdWNjZXNzMiIsImxvYWRDbG91ZE1hcFN1Y2Nlc3MyVXBkYXRlciIsIl9hY3Rpb24kcGF5bG9hZDYiLCJhZGREYXRhVG9NYXAiLCJsb2FkQ2xvdWRNYXBFcnJvclVwZGF0ZXIiLCJyZXNldFByb3ZpZGVyU3RhdHVzVXBkYXRlciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlci1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgVGFzaywge3dpdGhUYXNrfSBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzJztcbmltcG9ydCBDb25zb2xlIGZyb20gJ2dsb2JhbC9jb25zb2xlJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWcsIGdldEVycm9yLCBpc1BsYWluT2JqZWN0fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWQsIHRvQXJyYXl9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIEVYUE9SVF9GSUxFX1RPX0NMT1VEX1RBU0ssXG4gIEFDVElPTl9UQVNLLFxuICBERUxBWV9UQVNLLFxuICBMT0FEX0NMT1VEX01BUF9UQVNLXG59IGZyb20gJ0BrZXBsZXIuZ2wvdGFza3MnO1xuaW1wb3J0IHtcbiAgZXhwb3J0RmlsZVN1Y2Nlc3MsXG4gIGV4cG9ydEZpbGVFcnJvcixcbiAgcG9zdFNhdmVMb2FkU3VjY2VzcyxcbiAgbG9hZENsb3VkTWFwU3VjY2VzcyxcbiAgbG9hZENsb3VkTWFwU3VjY2VzczIsXG4gIGxvYWRDbG91ZE1hcEVycm9yLFxuICByZXNldFByb3ZpZGVyU3RhdHVzLFxuICByZW1vdmVOb3RpZmljYXRpb24sXG4gIHRvZ2dsZU1vZGFsLFxuICBhZGROb3RpZmljYXRpb24sXG4gIGFkZERhdGFUb01hcCxcbiAgUHJvdmlkZXJBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBERUZBVUxUX05PVElGSUNBVElPTl9UWVBFUyxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBEQVRBU0VUX0ZPUk1BVFMsXG4gIE9WRVJXUklURV9NQVBfSURcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtBZGREYXRhVG9NYXBQYXlsb2FkLCBFeHBvcnRGaWxlVG9DbG91ZFBheWxvYWR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge0ZJTEVfQ09ORkxJQ1RfTVNHLCBNYXBMaXN0SXRlbX0gZnJvbSAnQGtlcGxlci5nbC9jbG91ZC1wcm92aWRlcnMnO1xuaW1wb3J0IHtEQVRBU0VUX0hBTkRMRVJTfSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbnR5cGUgQWN0aW9uUGF5bG9hZDxQPiA9IHtcbiAgdHlwZT86IHN0cmluZztcbiAgcGF5bG9hZDogUDtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3ZpZGVyU3RhdGUgPSB7XG4gIGlzUHJvdmlkZXJMb2FkaW5nOiBib29sZWFuO1xuICBpc0Nsb3VkTWFwTG9hZGluZzogYm9vbGVhbjtcbiAgcHJvdmlkZXJFcnJvcjogYW55O1xuICBjdXJyZW50UHJvdmlkZXI6IHN0cmluZyB8IG51bGw7XG4gIHN1Y2Nlc3NJbmZvOiBhbnk7XG4gIG1hcFNhdmVkOiBudWxsIHwgc3RyaW5nO1xuICBzYXZlZE1hcElkOiBudWxsIHwgc3RyaW5nO1xuICBpbml0aWFsU3RhdGU/OiBhbnk7XG4gIHZpc3VhbGl6YXRpb25zOiBNYXBMaXN0SXRlbVtdO1xufTtcblxuZXhwb3J0IGNvbnN0IElOSVRJQUxfUFJPVklERVJfU1RBVEU6IFByb3ZpZGVyU3RhdGUgPSB7XG4gIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZSxcbiAgaXNDbG91ZE1hcExvYWRpbmc6IGZhbHNlLFxuICBwcm92aWRlckVycm9yOiBudWxsLFxuICBjdXJyZW50UHJvdmlkZXI6IG51bGwsXG4gIHN1Y2Nlc3NJbmZvOiB7fSxcbiAgbWFwU2F2ZWQ6IG51bGwsXG4gIHNhdmVkTWFwSWQ6IG51bGwsXG4gIHZpc3VhbGl6YXRpb25zOiBbXVxufTtcblxuZnVuY3Rpb24gY3JlYXRlQWN0aW9uVGFzayhhY3Rpb24sIHBheWxvYWQpIHtcbiAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQUNUSU9OX1RBU0soKS5tYXAoKCkgPT4gYWN0aW9uKHBheWxvYWQpKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBfdmFsaWRhdGVQcm92aWRlcihwcm92aWRlciwgbWV0aG9kKSB7XG4gIGlmICghcHJvdmlkZXIpIHtcbiAgICBDb25zb2xlLmVycm9yKGBwcm92aWRlciBpcyBub3QgZGVmaW5lZGApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJvdmlkZXJbbWV0aG9kXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIENvbnNvbGUuZXJyb3IoYCR7bWV0aG9kfSBpcyBub3QgYSBmdW5jdGlvbiBvZiBDbG91ZCBwcm92aWRlcjogJHtwcm92aWRlci5uYW1lfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVHbG9iYWxOb3RpZmljYXRpb25UYXNrcyh7XG4gIHR5cGUsXG4gIG1lc3NhZ2UsXG4gIGRlbGF5Q2xvc2UgPSB0cnVlXG59OiB7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGVsYXlDbG9zZT86IGJvb2xlYW47XG59KSB7XG4gIGNvbnN0IGlkID0gZ2VuZXJhdGVIYXNoSWQoKTtcbiAgY29uc3Qgc3VjY2Vzc05vdGUgPSB7XG4gICAgaWQsXG4gICAgdHlwZTogREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVNbdHlwZSB8fCAnJ10gfHwgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMuc3VjY2VzcyxcbiAgICB0b3BpYzogREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbCxcbiAgICBtZXNzYWdlXG4gIH07XG4gIGNvbnN0IHRhc2sgPSBBQ1RJT05fVEFTSygpLm1hcCgoKSA9PiBhZGROb3RpZmljYXRpb24oc3VjY2Vzc05vdGUpKTtcbiAgcmV0dXJuIGRlbGF5Q2xvc2UgPyBbdGFzaywgREVMQVlfVEFTSygzMDAwKS5tYXAoKCkgPT4gcmVtb3ZlTm90aWZpY2F0aW9uKGlkKSldIDogW3Rhc2tdO1xufVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHdpbGwgZXhwb3J0IHRoZSBjdXJyZW50IGtlcGxlciBjb25maWcgZmlsZSB0byB0aGUgY2hvc2VuIGNsb3VkIHByb2RlclxuICogYWRkIHJldHVybnMgYSBzaGFyZSBVUkxcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBleHBvcnRGaWxlVG9DbG91ZFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8RXhwb3J0RmlsZVRvQ2xvdWRQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHttYXBEYXRhLCBwcm92aWRlciwgb3B0aW9ucyA9IHt9LCBvblN1Y2Nlc3MsIG9uRXJyb3IsIGNsb3NlTW9kYWx9ID0gYWN0aW9uLnBheWxvYWQ7XG5cbiAgaWYgKCFfdmFsaWRhdGVQcm92aWRlcihwcm92aWRlciwgJ3VwbG9hZE1hcCcpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNQcm92aWRlckxvYWRpbmc6IHRydWUsXG4gICAgY3VycmVudFByb3ZpZGVyOiBwcm92aWRlci5uYW1lXG4gIH07XG5cbiAgLy8gcGF5bG9hZCBjYWxsZWQgYnkgcHJvdmlkZXIudXBsb2FkTWFwXG4gIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgbWFwRGF0YSxcbiAgICBvcHRpb25zXG4gIH07XG4gIGNvbnN0IHVwbG9hZEZpbGVUYXNrID0gRVhQT1JUX0ZJTEVfVE9fQ0xPVURfVEFTSyh7cHJvdmlkZXIsIHBheWxvYWR9KS5iaW1hcChcbiAgICAvLyBzdWNjZXNzXG4gICAgcmVzcG9uc2UgPT4gZXhwb3J0RmlsZVN1Y2Nlc3Moe3Jlc3BvbnNlLCBwcm92aWRlciwgb3B0aW9ucywgb25TdWNjZXNzLCBjbG9zZU1vZGFsfSksXG4gICAgLy8gZXJyb3JcbiAgICBlcnJvciA9PiBleHBvcnRGaWxlRXJyb3Ioe2Vycm9yLCBwcm92aWRlciwgb3B0aW9ucywgb25FcnJvcn0pXG4gICk7XG5cbiAgcmV0dXJuIHdpdGhUYXNrKG5ld1N0YXRlLCB1cGxvYWRGaWxlVGFzayk7XG59O1xuXG5leHBvcnQgY29uc3QgZXhwb3J0RmlsZVN1Y2Nlc3NVcGRhdGVyID0gKFxuICBzdGF0ZTogUHJvdmlkZXJTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25QYXlsb2FkPFByb3ZpZGVyQWN0aW9ucy5FeHBvcnRGaWxlU3VjY2Vzc1BheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge3Jlc3BvbnNlLCBwcm92aWRlciwgb3B0aW9ucyA9IHt9LCBvblN1Y2Nlc3MsIGNsb3NlTW9kYWx9ID0gYWN0aW9uLnBheWxvYWQ7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICAgIC8vIFRPRE86IGRvIHdlIGFsd2F5cyBoYXZlIHRvIHN0b3JlIHRoaXM/XG4gICAgc3VjY2Vzc0luZm86IHJlc3BvbnNlLFxuICAgIC4uLighb3B0aW9ucy5pc1B1YmxpY1xuICAgICAgPyB7XG4gICAgICAgICAgbWFwU2F2ZWQ6IHByb3ZpZGVyLm5hbWUsXG4gICAgICAgICAgc2F2ZWRNYXBJZDogcmVzcG9uc2U/LmluZm8/LmlkID8/IG51bGxcbiAgICAgICAgfVxuICAgICAgOiB7fSlcbiAgfTtcblxuICBjb25zdCB0YXNrcyA9IFtcbiAgICBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3Jlc3BvbnNlLCBwcm92aWRlciwgb3B0aW9uc30pLFxuICAgIGNsb3NlTW9kYWwgJiZcbiAgICAgIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IHBvc3RTYXZlTG9hZFN1Y2Nlc3MoYE1hcCBzYXZlZCB0byAke3N0YXRlLmN1cnJlbnRQcm92aWRlcn0hYCkpXG4gIF0uZmlsdGVyKGQgPT4gZCk7XG5cbiAgcmV0dXJuIHRhc2tzLmxlbmd0aCA/IHdpdGhUYXNrKG5ld1N0YXRlLCB0YXNrcykgOiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogQ2xvc2UgbW9kYWwgb24gc3VjY2VzcyBhbmQgZGlzcGxheSBub3RpZmljYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBvc3RTYXZlTG9hZFN1Y2Nlc3NVcGRhdGVyID0gKFxuICBzdGF0ZTogUHJvdmlkZXJTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25QYXlsb2FkPFByb3ZpZGVyQWN0aW9ucy5Qb3N0U2F2ZUxvYWRTdWNjZXNzUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCBtZXNzYWdlID0gYWN0aW9uLnBheWxvYWQgfHwgYFNhdmVkIC8gTG9hZCB0byAke3N0YXRlLmN1cnJlbnRQcm92aWRlcn0gU3VjY2Vzc2A7XG5cbiAgY29uc3QgdGFza3MgPSBbXG4gICAgQUNUSU9OX1RBU0soKS5tYXAoKCkgPT4gdG9nZ2xlTW9kYWwobnVsbCkpLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IHJlc2V0UHJvdmlkZXJTdGF0dXMoKSksXG4gICAgLi4uY3JlYXRlR2xvYmFsTm90aWZpY2F0aW9uVGFza3Moe21lc3NhZ2V9KVxuICBdO1xuXG4gIHJldHVybiB3aXRoVGFzayhzdGF0ZSwgdGFza3MpO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydEZpbGVFcnJvclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkV4cG9ydEZpbGVFcnJvclBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge2Vycm9yLCBwcm92aWRlciwgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2VcbiAgfTtcblxuICBpZiAoaXNGaWxlQ29uZmxpY3QoZXJyb3IpKSB7XG4gICAgbmV3U3RhdGUubWFwU2F2ZWQgPSBwcm92aWRlci5uYW1lO1xuICAgIHJldHVybiB3aXRoVGFzayhuZXdTdGF0ZSwgW0FDVElPTl9UQVNLKCkubWFwKCgpID0+IHRvZ2dsZU1vZGFsKE9WRVJXUklURV9NQVBfSUQpKV0pO1xuICB9XG5cbiAgbmV3U3RhdGUucHJvdmlkZXJFcnJvciA9IGdldEVycm9yKGVycm9yKTtcbiAgY29uc3QgdGFzayA9IGNyZWF0ZUFjdGlvblRhc2sob25FcnJvciwge2Vycm9yLCBwcm92aWRlcn0pO1xuXG4gIHJldHVybiB0YXNrID8gd2l0aFRhc2sobmV3U3RhdGUsIHRhc2spIDogbmV3U3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZENsb3VkTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7bG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzcywgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgaWYgKCFsb2FkUGFyYW1zKSB7XG4gICAgQ29uc29sZS53YXJuKCdsb2FkIG1hcCBlcnJvcjogbG9hZFBhcmFtcyBpcyB1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgaWYgKCFfdmFsaWRhdGVQcm92aWRlcihwcm92aWRlciwgJ2Rvd25sb2FkTWFwJykpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogdHJ1ZSxcbiAgICBpc0Nsb3VkTWFwTG9hZGluZzogdHJ1ZVxuICB9O1xuXG4gIC8vIHBheWxvYWQgY2FsbGVkIGJ5IHByb3ZpZGVyLmRvd25sb2FkTWFwXG4gIGNvbnN0IHVwbG9hZEZpbGVUYXNrID0gTE9BRF9DTE9VRF9NQVBfVEFTSyh7cHJvdmlkZXIsIHBheWxvYWQ6IGxvYWRQYXJhbXN9KS5iaW1hcChcbiAgICAvLyBzdWNjZXNzXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJlc3BvbnNlID0+IGxvYWRDbG91ZE1hcFN1Y2Nlc3Moe3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlciwgb25TdWNjZXNzLCBvbkVycm9yfSksXG4gICAgLy8gZXJyb3JcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZXJyb3IgPT4gbG9hZENsb3VkTWFwRXJyb3Ioe2Vycm9yLCBwcm92aWRlciwgb25FcnJvcn0pXG4gICk7XG5cbiAgcmV0dXJuIHdpdGhUYXNrKG5ld1N0YXRlLCB1cGxvYWRGaWxlVGFzayk7XG59O1xuXG5mdW5jdGlvbiBpc0ZpbGVDb25mbGljdChlcnJvcikge1xuICByZXR1cm4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSA9PT0gRklMRV9DT05GTElDVF9NU0c7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpIHtcbiAgaWYgKCFyZXNwb25zZSB8fCAhaXNQbGFpbk9iamVjdChyZXNwb25zZSkpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKCdMb2FkIG1hcCByZXNwb25zZSBpcyBlbXB0eScpO1xuICB9XG4gIGlmICghaXNQbGFpbk9iamVjdChyZXNwb25zZS5tYXApKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgTG9hZCBtYXAgcmVzcG9uc2Ugc2hvdWxkIGJlIGFuIG9iamVjdCBwcm9wZXJ0eSBcIm1hcFwiYCk7XG4gIH1cbiAgaWYgKCFyZXNwb25zZS5tYXAuZGF0YXNldHMgfHwgIXJlc3BvbnNlLm1hcC5jb25maWcpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKGBMb2FkIG1hcCByZXNwb25zZS5tYXAgc2hvdWxkIGJlIGFuIG9iamVjdCB3aXRoIHByb3BlcnR5IGRhdGFzZXRzIG9yIGNvbmZpZ2ApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldERhdGFzZXRIYW5kbGVyKGZvcm1hdCkge1xuICBjb25zdCBkZWZhdWx0SGFuZGxlciA9IERBVEFTRVRfSEFORExFUlNbREFUQVNFVF9GT1JNQVRTLmNzdl07XG4gIGlmICghZm9ybWF0KSB7XG4gICAgQ29uc29sZS53YXJuKCdmb3JtYXQgaXMgbm90IHByb3ZpZGVkIGluIGxvYWQgbWFwIHJlc3BvbnNlLCB3aWxsIHVzZSBjc3YgYnkgZGVmYXVsdCcpO1xuICAgIHJldHVybiBkZWZhdWx0SGFuZGxlcjtcbiAgfVxuXG4gIC8vIHVzZSBjdXN0b20gcHJvY2Vzc29ycyBmcm9tIHRhYmxlIGNsYXNzXG4gIGNvbnN0IFRhYmxlQ2xhc3MgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuICBpZiAodHlwZW9mIFRhYmxlQ2xhc3MuZ2V0RmlsZVByb2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByb2Nlc3NvclJlc3VsdCA9IFRhYmxlQ2xhc3MuZ2V0RmlsZVByb2Nlc3NvcihudWxsLCBmb3JtYXQpO1xuICAgIGlmICghcHJvY2Vzc29yUmVzdWx0LnByb2Nlc3Nvcikge1xuICAgICAgQ29uc29sZS53YXJuKGBObyBwcm9jZXNzb3IgZm91bmQgZm9yIGZvcm1hdCAke2Zvcm1hdH0sIHdpbGwgdXNlIGNzdiBieSBkZWZhdWx0YCk7XG4gICAgICByZXR1cm4gZGVmYXVsdEhhbmRsZXI7XG4gICAgfVxuICAgIHJldHVybiBwcm9jZXNzb3JSZXN1bHQucHJvY2Vzc29yO1xuICB9XG5cbiAgaWYgKCFEQVRBU0VUX0hBTkRMRVJTW2Zvcm1hdF0pIHtcbiAgICBjb25zdCBzdXBwb3J0ZWRGb3JtYXQgPSBPYmplY3Qua2V5cyhEQVRBU0VUX0ZPUk1BVFMpXG4gICAgICAubWFwKGsgPT4gYCcke2t9J2ApXG4gICAgICAuam9pbignLCAnKTtcbiAgICBDb25zb2xlLndhcm4oXG4gICAgICBgdW5rbm93biBmb3JtYXQgJHtmb3JtYXR9LiBQbGVhc2UgdXNlIG9uZSBvZiAke3N1cHBvcnRlZEZvcm1hdH0sIHdpbGwgdXNlIGNzdiBieSBkZWZhdWx0YFxuICAgICk7XG4gICAgcmV0dXJuIGRlZmF1bHRIYW5kbGVyO1xuICB9XG5cbiAgcmV0dXJuIERBVEFTRVRfSEFORExFUlNbZm9ybWF0XTtcbn1cblxuLyoqXG4gKiBBIHRhc2sgdG8gaGFuZGxlIGFzeW5jIHByb2Nlc3Nvck1ldGhvZFxuICogQHBhcmFtIHBhcmFtMFxuICogQHJldHVybnNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrKHtcbiAgcmVzcG9uc2UsXG4gIGxvYWRQYXJhbXMsXG4gIHByb3ZpZGVyXG59OiB7XG4gIHJlc3BvbnNlOiBQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwU3VjY2Vzc1BheWxvYWRbJ3Jlc3BvbnNlJ107XG4gIGxvYWRQYXJhbXM6IFByb3ZpZGVyQWN0aW9ucy5Mb2FkQ2xvdWRNYXBTdWNjZXNzUGF5bG9hZFsnbG9hZFBhcmFtcyddO1xuICBwcm92aWRlcjogUHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFN1Y2Nlc3NQYXlsb2FkWydwcm92aWRlciddO1xufSkge1xuICBjb25zdCB7bWFwLCBmb3JtYXR9ID0gcmVzcG9uc2U7XG4gIGNvbnN0IHByb2Nlc3Nvck1ldGhvZCA9IGdldERhdGFzZXRIYW5kbGVyKGZvcm1hdCk7XG5cbiAgbGV0IHBhcnNlZERhdGFzZXRzOiBBZGREYXRhVG9NYXBQYXlsb2FkWydkYXRhc2V0cyddID0gW107XG5cbiAgaWYgKFxuICAgIGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsICYmXG4gICAgcHJvY2Vzc29yTWV0aG9kICE9PSBEQVRBU0VUX0hBTkRMRVJTW0RBVEFTRVRfRk9STUFUUy5rZXBsZXJnbF1cbiAgKSB7XG4gICAgLy8gcGx1Z2luIHRhYmxlIHByb3ZpZGVzIHByb2Nlc3NvciBmb3Iga2VwbGVyZ2wgbWFwLCBub3Qgc2luZ2xlIGRhdGFzZXQgd2l0aCBhbGxEYXRhXG4gICAgY29uc3QgcGFyc2VkTWFwID0gYXdhaXQgcHJvY2Vzc29yTWV0aG9kKG1hcCk7XG4gICAgcGFyc2VkRGF0YXNldHMgPSBwYXJzZWRNYXAuZGF0YXNldHM7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0b0FycmF5KG1hcC5kYXRhc2V0cyk7XG4gICAgcGFyc2VkRGF0YXNldHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGRhdGFzZXRzLm1hcChhc3luYyBkcyA9PiB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCkge1xuICAgICAgICAgIC8vIG5vIG5lZWQgdG8gb2J0YWluIGlkLCBkaXJlY3RseSBwYXNzIHRoZW0gaW5cbiAgICAgICAgICByZXR1cm4gYXdhaXQgcHJvY2Vzc29yTWV0aG9kKGRzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmZvID0gKGRzICYmIGRzLmluZm8pIHx8IHtpZDogZ2VuZXJhdGVIYXNoSWQoNil9O1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcHJvY2Vzc29yTWV0aG9kKGRzLmRhdGEgfHwgZHMpO1xuICAgICAgICByZXR1cm4ge2luZm8sIGRhdGF9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5mbyA9IHtcbiAgICAuLi5tYXAuaW5mbyxcbiAgICBwcm92aWRlcjogcHJvdmlkZXIubmFtZSxcbiAgICBsb2FkUGFyYW1zXG4gIH07XG4gIHJldHVybiB7XG4gICAgZGF0YXNldHM6IHBhcnNlZERhdGFzZXRzLFxuICAgIGluZm8sXG4gICAgLi4uKG1hcC5jb25maWcgPyB7Y29uZmlnOiBtYXAuY29uZmlnfSA6IHt9KSxcbiAgICBvcHRpb25zOiB7XG4gICAgICAvLyBkbyBub3QgY2VudGVyIG1hcCB3aGVuIGxvYWRpbmcgY2xvdWQgbWFwXG4gICAgICBjZW50ZXJNYXA6IGZhbHNlXG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBQQVJTRV9MT0FEX01BUF9SRVNQT05TRV9UQVNLID0gVGFzay5mcm9tUHJvbWlzZShcbiAgcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrLFxuICAnUEFSU0VfTE9BRF9NQVBfUkVTUE9OU0VfVEFTSydcbik7XG5cbi8qKlxuICogVXNlZCB0byBsb2FkIHJlc291cmNlcyBzdG9yZWQgaW4gYSBwcml2YXRlIHN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkQ2xvdWRNYXBTdWNjZXNzVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwU3VjY2Vzc1BheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlciwgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBmb3JtYXRFcnJvciA9IGNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpO1xuICBpZiAoZm9ybWF0RXJyb3IpIHtcbiAgICAvLyBpZiByZXNwb25zZSBmb3JtYXQgaXMgbm90IGNvcnJlY3RcbiAgICByZXR1cm4gZXhwb3J0RmlsZUVycm9yVXBkYXRlcihzdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge2Vycm9yOiBmb3JtYXRFcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9XG4gICAgfSk7XG4gIH1cblxuICAvLyBwcm9jZXNzb3JNZXRob2QgY2FuIGJlIGFzeW5jIHNvIGNyZWF0ZSBhIHRhc2tcbiAgY29uc3QgcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrID0gUEFSU0VfTE9BRF9NQVBfUkVTUE9OU0VfVEFTSyh7XG4gICAgcmVzcG9uc2UsXG4gICAgbG9hZFBhcmFtcyxcbiAgICBwcm92aWRlclxuICB9KS5iaW1hcChcbiAgICAoZGF0YXNldHNQYXlsb2FkOiBBZGREYXRhVG9NYXBQYXlsb2FkKSA9PiB7XG4gICAgICByZXR1cm4gbG9hZENsb3VkTWFwU3VjY2VzczIoey4uLmFjdGlvbi5wYXlsb2FkLCBkYXRhc2V0c1BheWxvYWR9KTtcbiAgICB9LFxuICAgIGVycm9yID0+XG4gICAgICBleHBvcnRGaWxlRXJyb3JVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIHBheWxvYWQ6IHtlcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9XG4gICAgICB9KVxuICApO1xuXG4gIHJldHVybiB3aXRoVGFzayhzdGF0ZSwgcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBsb2FkQ2xvdWRNYXBTdWNjZXNzMlVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFN1Y2Nlc3MyUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7ZGF0YXNldHNQYXlsb2FkLCByZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzc30gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTYXZlZDogcHJvdmlkZXIubmFtZSxcbiAgICBjdXJyZW50UHJvdmlkZXI6IHByb3ZpZGVyLm5hbWUsXG4gICAgaXNDbG91ZE1hcExvYWRpbmc6IGZhbHNlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IGFkZERhdGFUb01hcChkYXRhc2V0c1BheWxvYWQpKSxcbiAgICBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlcn0pLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IHBvc3RTYXZlTG9hZFN1Y2Nlc3MoYE1hcCBmcm9tICR7cHJvdmlkZXIubmFtZX0gbG9hZGVkYCkpXG4gIF0uZmlsdGVyKGQgPT4gZCk7XG5cbiAgcmV0dXJuIHRhc2tzLmxlbmd0aCA/IHdpdGhUYXNrKG5ld1N0YXRlLCB0YXNrcykgOiBuZXdTdGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBsb2FkQ2xvdWRNYXBFcnJvclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcEVycm9yUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCBtZXNzYWdlID0gZ2V0RXJyb3IoYWN0aW9uLnBheWxvYWQuZXJyb3IpIHx8IGBFcnJvciBsb2FkaW5nIHNhdmVkIG1hcGA7XG5cbiAgQ29uc29sZS53YXJuKG1lc3NhZ2UpO1xuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZSxcbiAgICBpc0Nsb3VkTWFwTG9hZGluZzogZmFsc2UsXG4gICAgcHJvdmlkZXJFcnJvcjogbnVsbFxuICB9O1xuXG4gIHJldHVybiB3aXRoVGFzayhcbiAgICBuZXdTdGF0ZSxcbiAgICBjcmVhdGVHbG9iYWxOb3RpZmljYXRpb25UYXNrcyh7dHlwZTogJ2Vycm9yJywgbWVzc2FnZSwgZGVsYXlDbG9zZTogZmFsc2V9KVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0UHJvdmlkZXJTdGF0dXNVcGRhdGVyID0gKHN0YXRlOiBQcm92aWRlclN0YXRlKTogUHJvdmlkZXJTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICBwcm92aWRlckVycm9yOiBudWxsLFxuICBpc0Nsb3VkTWFwTG9hZGluZzogZmFsc2UsXG4gIHN1Y2Nlc3NJbmZvOiB7fVxufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQU1BLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQWNBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQVFBLElBQUFRLGVBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUE2QyxTQUFBRCx3QkFBQVksQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQWQsdUJBQUEsWUFBQUEsd0JBQUFZLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsT0FBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLElBQUFELENBQUEsR0FBQVcsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTSxFQUFBLEVBQUFQLENBQUEsSUFBQUMsQ0FBQSxDQUFBTSxFQUFBLElBQUFkLENBQUEsQ0FBQWMsRUFBQSxXQUFBTixDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQUFBLFNBQUFtQixRQUFBcEIsQ0FBQSxFQUFBRyxDQUFBLFFBQUFGLENBQUEsR0FBQWdCLE1BQUEsQ0FBQUksSUFBQSxDQUFBckIsQ0FBQSxPQUFBaUIsTUFBQSxDQUFBSyxxQkFBQSxRQUFBaEIsQ0FBQSxHQUFBVyxNQUFBLENBQUFLLHFCQUFBLENBQUF0QixDQUFBLEdBQUFHLENBQUEsS0FBQUcsQ0FBQSxHQUFBQSxDQUFBLENBQUFpQixNQUFBLFdBQUFwQixDQUFBLFdBQUFjLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQUcsQ0FBQSxFQUFBcUIsVUFBQSxPQUFBdkIsQ0FBQSxDQUFBd0IsSUFBQSxDQUFBQyxLQUFBLENBQUF6QixDQUFBLEVBQUFLLENBQUEsWUFBQUwsQ0FBQTtBQUFBLFNBQUEwQixjQUFBM0IsQ0FBQSxhQUFBRyxDQUFBLE1BQUFBLENBQUEsR0FBQXlCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBMUIsQ0FBQSxVQUFBRixDQUFBLFdBQUEyQixTQUFBLENBQUF6QixDQUFBLElBQUF5QixTQUFBLENBQUF6QixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQUgsTUFBQSxDQUFBaEIsQ0FBQSxPQUFBNkIsT0FBQSxXQUFBM0IsQ0FBQSxRQUFBNEIsZ0JBQUEsYUFBQS9CLENBQUEsRUFBQUcsQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUEsU0FBQWMsTUFBQSxDQUFBZSx5QkFBQSxHQUFBZixNQUFBLENBQUFnQixnQkFBQSxDQUFBakMsQ0FBQSxFQUFBaUIsTUFBQSxDQUFBZSx5QkFBQSxDQUFBL0IsQ0FBQSxLQUFBbUIsT0FBQSxDQUFBSCxNQUFBLENBQUFoQixDQUFBLEdBQUE2QixPQUFBLFdBQUEzQixDQUFBLElBQUFjLE1BQUEsQ0FBQUMsY0FBQSxDQUFBbEIsQ0FBQSxFQUFBRyxDQUFBLEVBQUFjLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUUsQ0FBQSxpQkFBQUgsQ0FBQSxJQXJDN0M7QUFDQTtBQXVETyxJQUFNa0Msc0JBQXFDLEdBQUFDLE9BQUEsQ0FBQUQsc0JBQUEsR0FBRztFQUNuREUsaUJBQWlCLEVBQUUsS0FBSztFQUN4QkMsaUJBQWlCLEVBQUUsS0FBSztFQUN4QkMsYUFBYSxFQUFFLElBQUk7RUFDbkJDLGVBQWUsRUFBRSxJQUFJO0VBQ3JCQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0VBQ2ZDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxjQUFjLEVBQUU7QUFDbEIsQ0FBQztBQUVELFNBQVNDLGdCQUFnQkEsQ0FBQ0MsTUFBTSxFQUFFQyxPQUFPLEVBQUU7RUFDekMsSUFBSSxPQUFPRCxNQUFNLEtBQUssVUFBVSxFQUFFO0lBQ2hDLE9BQU8sSUFBQUUsbUJBQVcsRUFBQyxDQUFDLENBQUNDLEdBQUcsQ0FBQztNQUFBLE9BQU1ILE1BQU0sQ0FBQ0MsT0FBTyxDQUFDO0lBQUEsRUFBQztFQUNqRDtFQUVBLE9BQU8sSUFBSTtBQUNiO0FBRUEsU0FBU0csaUJBQWlCQSxDQUFDQyxRQUFRLEVBQUVDLE1BQU0sRUFBRTtFQUMzQyxJQUFJLENBQUNELFFBQVEsRUFBRTtJQUNiRSxtQkFBTyxDQUFDQyxLQUFLLDBCQUEwQixDQUFDO0lBQ3hDLE9BQU8sS0FBSztFQUNkO0VBRUEsSUFBSSxPQUFPSCxRQUFRLENBQUNDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsRUFBRTtJQUMxQ0MsbUJBQU8sQ0FBQ0MsS0FBSyxJQUFBQyxNQUFBLENBQUlILE1BQU0sNENBQUFHLE1BQUEsQ0FBeUNKLFFBQVEsQ0FBQ0ssSUFBSSxDQUFFLENBQUM7SUFDaEYsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxPQUFPLElBQUk7QUFDYjtBQUVBLFNBQVNDLDZCQUE2QkEsQ0FBQUMsSUFBQSxFQVFuQztFQUFBLElBUERDLElBQUksR0FBQUQsSUFBQSxDQUFKQyxJQUFJO0lBQ0pDLE9BQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO0lBQUFDLGVBQUEsR0FBQUgsSUFBQSxDQUNQSSxVQUFVO0lBQVZBLFVBQVUsR0FBQUQsZUFBQSxjQUFHLElBQUksR0FBQUEsZUFBQTtFQU1qQixJQUFNRSxFQUFFLEdBQUcsSUFBQUMsMkJBQWMsRUFBQyxDQUFDO0VBQzNCLElBQU1DLFdBQVcsR0FBRztJQUNsQkYsRUFBRSxFQUFGQSxFQUFFO0lBQ0ZKLElBQUksRUFBRU8scUNBQTBCLENBQUNQLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSU8scUNBQTBCLENBQUNDLE9BQU87SUFDbEZDLEtBQUssRUFBRUMsc0NBQTJCLENBQUNDLE1BQU07SUFDekNWLE9BQU8sRUFBUEE7RUFDRixDQUFDO0VBQ0QsSUFBTVcsSUFBSSxHQUFHLElBQUF2QixtQkFBVyxFQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO0lBQUEsT0FBTSxJQUFBdUIsd0JBQWUsRUFBQ1AsV0FBVyxDQUFDO0VBQUEsRUFBQztFQUNsRSxPQUFPSCxVQUFVLEdBQUcsQ0FBQ1MsSUFBSSxFQUFFLElBQUFFLGtCQUFVLEVBQUMsSUFBSSxDQUFDLENBQUN4QixHQUFHLENBQUM7SUFBQSxPQUFNLElBQUF5QiwyQkFBa0IsRUFBQ1gsRUFBRSxDQUFDO0VBQUEsRUFBQyxDQUFDLEdBQUcsQ0FBQ1EsSUFBSSxDQUFDO0FBQ3pGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNSSx3QkFBd0IsR0FBQXZDLE9BQUEsQ0FBQXVDLHdCQUFBLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FDbkNDLEtBQW9CLEVBQ3BCOUIsTUFBK0MsRUFDN0I7RUFDbEIsSUFBQStCLGVBQUEsR0FBMEUvQixNQUFNLENBQUNDLE9BQU87SUFBakYrQixPQUFPLEdBQUFELGVBQUEsQ0FBUEMsT0FBTztJQUFFM0IsUUFBUSxHQUFBMEIsZUFBQSxDQUFSMUIsUUFBUTtJQUFBNEIscUJBQUEsR0FBQUYsZUFBQSxDQUFFRyxPQUFPO0lBQVBBLE9BQU8sR0FBQUQscUJBQUEsY0FBRyxDQUFDLENBQUMsR0FBQUEscUJBQUE7SUFBRUUsU0FBUyxHQUFBSixlQUFBLENBQVRJLFNBQVM7SUFBRUMsT0FBTyxHQUFBTCxlQUFBLENBQVBLLE9BQU87SUFBRUMsVUFBVSxHQUFBTixlQUFBLENBQVZNLFVBQVU7RUFFdEUsSUFBSSxDQUFDakMsaUJBQWlCLENBQUNDLFFBQVEsRUFBRSxXQUFXLENBQUMsRUFBRTtJQUM3QyxPQUFPeUIsS0FBSztFQUNkO0VBRUEsSUFBTVEsUUFBUSxHQUFBeEQsYUFBQSxDQUFBQSxhQUFBLEtBQ1RnRCxLQUFLO0lBQ1J2QyxpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCRyxlQUFlLEVBQUVXLFFBQVEsQ0FBQ0s7RUFBSSxFQUMvQjs7RUFFRDtFQUNBLElBQU1ULE9BQU8sR0FBRztJQUNkK0IsT0FBTyxFQUFQQSxPQUFPO0lBQ1BFLE9BQU8sRUFBUEE7RUFDRixDQUFDO0VBQ0QsSUFBTUssY0FBYyxHQUFHLElBQUFDLGlDQUF5QixFQUFDO0lBQUNuQyxRQUFRLEVBQVJBLFFBQVE7SUFBRUosT0FBTyxFQUFQQTtFQUFPLENBQUMsQ0FBQyxDQUFDd0MsS0FBSztFQUN6RTtFQUNBLFVBQUFDLFFBQVE7SUFBQSxPQUFJLElBQUFDLDBCQUFpQixFQUFDO01BQUNELFFBQVEsRUFBUkEsUUFBUTtNQUFFckMsUUFBUSxFQUFSQSxRQUFRO01BQUU2QixPQUFPLEVBQVBBLE9BQU87TUFBRUMsU0FBUyxFQUFUQSxTQUFTO01BQUVFLFVBQVUsRUFBVkE7SUFBVSxDQUFDLENBQUM7RUFBQTtFQUNuRjtFQUNBLFVBQUE3QixLQUFLO0lBQUEsT0FBSSxJQUFBb0Msd0JBQWUsRUFBQztNQUFDcEMsS0FBSyxFQUFMQSxLQUFLO01BQUVILFFBQVEsRUFBUkEsUUFBUTtNQUFFNkIsT0FBTyxFQUFQQSxPQUFPO01BQUVFLE9BQU8sRUFBUEE7SUFBTyxDQUFDLENBQUM7RUFBQSxDQUMvRCxDQUFDO0VBRUQsT0FBTyxJQUFBUyxlQUFRLEVBQUNQLFFBQVEsRUFBRUMsY0FBYyxDQUFDO0FBQzNDLENBQUM7QUFFTSxJQUFNTyx3QkFBd0IsR0FBQXhELE9BQUEsQ0FBQXdELHdCQUFBLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FDbkNoQixLQUFvQixFQUNwQjlCLE1BQStELEVBQzdDO0VBQUEsSUFBQStDLGlCQUFBLEVBQUFDLGNBQUE7RUFDbEIsSUFBQUMsZ0JBQUEsR0FBa0VqRCxNQUFNLENBQUNDLE9BQU87SUFBekV5QyxRQUFRLEdBQUFPLGdCQUFBLENBQVJQLFFBQVE7SUFBRXJDLFFBQVEsR0FBQTRDLGdCQUFBLENBQVI1QyxRQUFRO0lBQUE2QyxxQkFBQSxHQUFBRCxnQkFBQSxDQUFFZixPQUFPO0lBQVBBLE9BQU8sR0FBQWdCLHFCQUFBLGNBQUcsQ0FBQyxDQUFDLEdBQUFBLHFCQUFBO0lBQUVmLFNBQVMsR0FBQWMsZ0JBQUEsQ0FBVGQsU0FBUztJQUFFRSxVQUFVLEdBQUFZLGdCQUFBLENBQVZaLFVBQVU7RUFFOUQsSUFBTUMsUUFBUSxHQUFBeEQsYUFBQSxDQUFBQSxhQUFBLEtBQ1RnRCxLQUFLO0lBQ1J2QyxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCO0lBQ0FJLFdBQVcsRUFBRStDO0VBQVEsR0FDakIsQ0FBQ1IsT0FBTyxDQUFDaUIsUUFBUSxHQUNqQjtJQUNFdkQsUUFBUSxFQUFFUyxRQUFRLENBQUNLLElBQUk7SUFDdkJiLFVBQVUsR0FBQWtELGlCQUFBLEdBQUVMLFFBQVEsYUFBUkEsUUFBUSxnQkFBQU0sY0FBQSxHQUFSTixRQUFRLENBQUVVLElBQUksY0FBQUosY0FBQSx1QkFBZEEsY0FBQSxDQUFnQi9CLEVBQUUsY0FBQThCLGlCQUFBLGNBQUFBLGlCQUFBLEdBQUk7RUFDcEMsQ0FBQyxHQUNELENBQUMsQ0FBQyxDQUNQO0VBRUQsSUFBTU0sS0FBSyxHQUFHLENBQ1p0RCxnQkFBZ0IsQ0FBQ29DLFNBQVMsRUFBRTtJQUFDTyxRQUFRLEVBQVJBLFFBQVE7SUFBRXJDLFFBQVEsRUFBUkEsUUFBUTtJQUFFNkIsT0FBTyxFQUFQQTtFQUFPLENBQUMsQ0FBQyxFQUMxREcsVUFBVSxJQUNSLElBQUFuQyxtQkFBVyxFQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO0lBQUEsT0FBTSxJQUFBbUQsNEJBQW1CLGtCQUFBN0MsTUFBQSxDQUFpQnFCLEtBQUssQ0FBQ3BDLGVBQWUsTUFBRyxDQUFDO0VBQUEsRUFBQyxDQUN6RixDQUFDaEIsTUFBTSxDQUFDLFVBQUE2RSxDQUFDO0lBQUEsT0FBSUEsQ0FBQztFQUFBLEVBQUM7RUFFaEIsT0FBT0YsS0FBSyxDQUFDckUsTUFBTSxHQUFHLElBQUE2RCxlQUFRLEVBQUNQLFFBQVEsRUFBRWUsS0FBSyxDQUFDLEdBQUdmLFFBQVE7QUFDNUQsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDTyxJQUFNa0IsMEJBQTBCLEdBQUFsRSxPQUFBLENBQUFrRSwwQkFBQSxHQUFHLFNBQTdCQSwwQkFBMEJBLENBQ3JDMUIsS0FBb0IsRUFDcEI5QixNQUFpRSxFQUMvQztFQUNsQixJQUFNYyxPQUFPLEdBQUdkLE1BQU0sQ0FBQ0MsT0FBTyx1QkFBQVEsTUFBQSxDQUF1QnFCLEtBQUssQ0FBQ3BDLGVBQWUsYUFBVTtFQUVwRixJQUFNMkQsS0FBSyxJQUNULElBQUFuRCxtQkFBVyxFQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO0lBQUEsT0FBTSxJQUFBc0Qsb0JBQVcsRUFBQyxJQUFJLENBQUM7RUFBQSxFQUFDLEVBQzFDLElBQUF2RCxtQkFBVyxFQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDO0lBQUEsT0FBTSxJQUFBdUQsNEJBQW1CLEVBQUMsQ0FBQztFQUFBLEVBQUMsRUFBQWpELE1BQUEsS0FBQWtELG1CQUFBLGFBQzNDaEQsNkJBQTZCLENBQUM7SUFBQ0csT0FBTyxFQUFQQTtFQUFPLENBQUMsQ0FBQyxFQUM1QztFQUVELE9BQU8sSUFBQStCLGVBQVEsRUFBQ2YsS0FBSyxFQUFFdUIsS0FBSyxDQUFDO0FBQy9CLENBQUM7QUFFTSxJQUFNTyxzQkFBc0IsR0FBQXRFLE9BQUEsQ0FBQXNFLHNCQUFBLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FDakM5QixLQUFvQixFQUNwQjlCLE1BQTZELEVBQzNDO0VBQ2xCLElBQUE2RCxnQkFBQSxHQUFtQzdELE1BQU0sQ0FBQ0MsT0FBTztJQUExQ08sS0FBSyxHQUFBcUQsZ0JBQUEsQ0FBTHJELEtBQUs7SUFBRUgsUUFBUSxHQUFBd0QsZ0JBQUEsQ0FBUnhELFFBQVE7SUFBRStCLE9BQU8sR0FBQXlCLGdCQUFBLENBQVB6QixPQUFPO0VBRS9CLElBQU1FLFFBQVEsR0FBQXhELGFBQUEsQ0FBQUEsYUFBQSxLQUNUZ0QsS0FBSztJQUNSdkMsaUJBQWlCLEVBQUU7RUFBSyxFQUN6QjtFQUVELElBQUl1RSxjQUFjLENBQUN0RCxLQUFLLENBQUMsRUFBRTtJQUN6QjhCLFFBQVEsQ0FBQzFDLFFBQVEsR0FBR1MsUUFBUSxDQUFDSyxJQUFJO0lBQ2pDLE9BQU8sSUFBQW1DLGVBQVEsRUFBQ1AsUUFBUSxFQUFFLENBQUMsSUFBQXBDLG1CQUFXLEVBQUMsQ0FBQyxDQUFDQyxHQUFHLENBQUM7TUFBQSxPQUFNLElBQUFzRCxvQkFBVyxFQUFDTSwyQkFBZ0IsQ0FBQztJQUFBLEVBQUMsQ0FBQyxDQUFDO0VBQ3JGO0VBRUF6QixRQUFRLENBQUM3QyxhQUFhLEdBQUcsSUFBQXVFLGVBQVEsRUFBQ3hELEtBQUssQ0FBQztFQUN4QyxJQUFNaUIsSUFBSSxHQUFHMUIsZ0JBQWdCLENBQUNxQyxPQUFPLEVBQUU7SUFBQzVCLEtBQUssRUFBTEEsS0FBSztJQUFFSCxRQUFRLEVBQVJBO0VBQVEsQ0FBQyxDQUFDO0VBRXpELE9BQU9vQixJQUFJLEdBQUcsSUFBQW9CLGVBQVEsRUFBQ1AsUUFBUSxFQUFFYixJQUFJLENBQUMsR0FBR2EsUUFBUTtBQUNuRCxDQUFDO0FBRU0sSUFBTTJCLG1CQUFtQixHQUFBM0UsT0FBQSxDQUFBMkUsbUJBQUEsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUM5Qm5DLEtBQW9CLEVBQ3BCOUIsTUFBMEQsRUFDeEM7RUFDbEIsSUFBQWtFLGdCQUFBLEdBQW1EbEUsTUFBTSxDQUFDQyxPQUFPO0lBQTFEa0UsVUFBVSxHQUFBRCxnQkFBQSxDQUFWQyxVQUFVO0lBQUU5RCxRQUFRLEdBQUE2RCxnQkFBQSxDQUFSN0QsUUFBUTtJQUFFOEIsU0FBUyxHQUFBK0IsZ0JBQUEsQ0FBVC9CLFNBQVM7SUFBRUMsT0FBTyxHQUFBOEIsZ0JBQUEsQ0FBUDlCLE9BQU87RUFDL0MsSUFBSSxDQUFDK0IsVUFBVSxFQUFFO0lBQ2Y1RCxtQkFBTyxDQUFDNkQsSUFBSSxDQUFDLHlDQUF5QyxDQUFDO0lBQ3ZELE9BQU90QyxLQUFLO0VBQ2Q7RUFDQSxJQUFJLENBQUMxQixpQkFBaUIsQ0FBQ0MsUUFBUSxFQUFFLGFBQWEsQ0FBQyxFQUFFO0lBQy9DLE9BQU95QixLQUFLO0VBQ2Q7RUFFQSxJQUFNUSxRQUFRLEdBQUF4RCxhQUFBLENBQUFBLGFBQUEsS0FDVGdELEtBQUs7SUFDUnZDLGlCQUFpQixFQUFFLElBQUk7SUFDdkJDLGlCQUFpQixFQUFFO0VBQUksRUFDeEI7O0VBRUQ7RUFDQSxJQUFNK0MsY0FBYyxHQUFHLElBQUE4QiwyQkFBbUIsRUFBQztJQUFDaEUsUUFBUSxFQUFSQSxRQUFRO0lBQUVKLE9BQU8sRUFBRWtFO0VBQVUsQ0FBQyxDQUFDLENBQUMxQixLQUFLO0VBQy9FO0VBQ0E7RUFDQSxVQUFBQyxRQUFRO0lBQUEsT0FBSSxJQUFBNEIsNEJBQW1CLEVBQUM7TUFBQzVCLFFBQVEsRUFBUkEsUUFBUTtNQUFFeUIsVUFBVSxFQUFWQSxVQUFVO01BQUU5RCxRQUFRLEVBQVJBLFFBQVE7TUFBRThCLFNBQVMsRUFBVEEsU0FBUztNQUFFQyxPQUFPLEVBQVBBO0lBQU8sQ0FBQyxDQUFDO0VBQUE7RUFDckY7RUFDQTtFQUNBLFVBQUE1QixLQUFLO0lBQUEsT0FBSSxJQUFBK0QsMEJBQWlCLEVBQUM7TUFBQy9ELEtBQUssRUFBTEEsS0FBSztNQUFFSCxRQUFRLEVBQVJBLFFBQVE7TUFBRStCLE9BQU8sRUFBUEE7SUFBTyxDQUFDLENBQUM7RUFBQSxDQUN4RCxDQUFDO0VBRUQsT0FBTyxJQUFBUyxlQUFRLEVBQUNQLFFBQVEsRUFBRUMsY0FBYyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTdUIsY0FBY0EsQ0FBQ3RELEtBQUssRUFBRTtFQUM3QixPQUFPQSxLQUFLLElBQUlBLEtBQUssQ0FBQ00sT0FBTyxLQUFLMEQsaUNBQWlCO0FBQ3JEO0FBRUEsU0FBU0MseUJBQXlCQSxDQUFDL0IsUUFBUSxFQUFFO0VBQzNDLElBQUksQ0FBQ0EsUUFBUSxJQUFJLENBQUMsSUFBQWdDLG9CQUFhLEVBQUNoQyxRQUFRLENBQUMsRUFBRTtJQUN6QyxPQUFPLElBQUlpQyxLQUFLLENBQUMsNEJBQTRCLENBQUM7RUFDaEQ7RUFDQSxJQUFJLENBQUMsSUFBQUQsb0JBQWEsRUFBQ2hDLFFBQVEsQ0FBQ3ZDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hDLE9BQU8sSUFBSXdFLEtBQUsseURBQXVELENBQUM7RUFDMUU7RUFDQSxJQUFJLENBQUNqQyxRQUFRLENBQUN2QyxHQUFHLENBQUN5RSxRQUFRLElBQUksQ0FBQ2xDLFFBQVEsQ0FBQ3ZDLEdBQUcsQ0FBQzBFLE1BQU0sRUFBRTtJQUNsRCxPQUFPLElBQUlGLEtBQUssNkVBQTZFLENBQUM7RUFDaEc7RUFFQSxPQUFPLElBQUk7QUFDYjtBQUVBLFNBQVNHLGlCQUFpQkEsQ0FBQ0MsTUFBTSxFQUFFO0VBQUEsSUFBQUMscUJBQUE7RUFDakMsSUFBTUMsY0FBYyxHQUFHQyw0QkFBZ0IsQ0FBQ0MsMEJBQWUsQ0FBQ0MsR0FBRyxDQUFDO0VBQzVELElBQUksQ0FBQ0wsTUFBTSxFQUFFO0lBQ1h4RSxtQkFBTyxDQUFDNkQsSUFBSSxDQUFDLHNFQUFzRSxDQUFDO0lBQ3BGLE9BQU9hLGNBQWM7RUFDdkI7O0VBRUE7RUFDQSxJQUFNSSxVQUFVLElBQUFMLHFCQUFBLEdBQUcsSUFBQU0sMkJBQW9CLEVBQUMsQ0FBQyxDQUFDQyxLQUFLLGNBQUFQLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUlRLGtCQUFXO0VBQzlELElBQUksT0FBT0gsVUFBVSxDQUFDSSxnQkFBZ0IsS0FBSyxVQUFVLEVBQUU7SUFDckQsSUFBTUMsZUFBZSxHQUFHTCxVQUFVLENBQUNJLGdCQUFnQixDQUFDLElBQUksRUFBRVYsTUFBTSxDQUFDO0lBQ2pFLElBQUksQ0FBQ1csZUFBZSxDQUFDQyxTQUFTLEVBQUU7TUFDOUJwRixtQkFBTyxDQUFDNkQsSUFBSSxrQ0FBQTNELE1BQUEsQ0FBa0NzRSxNQUFNLDhCQUEyQixDQUFDO01BQ2hGLE9BQU9FLGNBQWM7SUFDdkI7SUFDQSxPQUFPUyxlQUFlLENBQUNDLFNBQVM7RUFDbEM7RUFFQSxJQUFJLENBQUNULDRCQUFnQixDQUFDSCxNQUFNLENBQUMsRUFBRTtJQUM3QixJQUFNYSxlQUFlLEdBQUd4SCxNQUFNLENBQUNJLElBQUksQ0FBQzJHLDBCQUFlLENBQUMsQ0FDakRoRixHQUFHLENBQUMsVUFBQTBGLENBQUM7TUFBQSxXQUFBcEYsTUFBQSxDQUFRb0YsQ0FBQztJQUFBLENBQUcsQ0FBQyxDQUNsQkMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNidkYsbUJBQU8sQ0FBQzZELElBQUksbUJBQUEzRCxNQUFBLENBQ1FzRSxNQUFNLDBCQUFBdEUsTUFBQSxDQUF1Qm1GLGVBQWUsOEJBQ2hFLENBQUM7SUFDRCxPQUFPWCxjQUFjO0VBQ3ZCO0VBRUEsT0FBT0MsNEJBQWdCLENBQUNILE1BQU0sQ0FBQztBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkEsU0FLZWdCLHdCQUF3QkEsQ0FBQUMsRUFBQTtFQUFBLE9BQUFDLHlCQUFBLENBQUFwSCxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUFBLFNBQUFrSCwwQkFBQTtFQUFBQSx5QkFBQSxPQUFBQyxrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQXZDLFNBQUFDLFNBQUFDLEtBQUE7SUFBQSxJQUFBNUQsUUFBQSxFQUFBeUIsVUFBQSxFQUFBOUQsUUFBQSxFQUFBRixHQUFBLEVBQUE0RSxNQUFBLEVBQUF3QixlQUFBLEVBQUFDLGNBQUEsRUFBQUMsU0FBQSxFQUFBN0IsUUFBQSxFQUFBeEIsSUFBQTtJQUFBLE9BQUErQyxZQUFBLFlBQUFPLElBQUEsVUFBQUMsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFDLElBQUEsR0FBQUQsU0FBQSxDQUFBRSxJQUFBO1FBQUE7VUFDRXBFLFFBQVEsR0FBQTRELEtBQUEsQ0FBUjVELFFBQVEsRUFDUnlCLFVBQVUsR0FBQW1DLEtBQUEsQ0FBVm5DLFVBQVUsRUFDVjlELFFBQVEsR0FBQWlHLEtBQUEsQ0FBUmpHLFFBQVE7VUFNREYsR0FBRyxHQUFZdUMsUUFBUSxDQUF2QnZDLEdBQUcsRUFBRTRFLE1BQU0sR0FBSXJDLFFBQVEsQ0FBbEJxQyxNQUFNO1VBQ1p3QixlQUFlLEdBQUd6QixpQkFBaUIsQ0FBQ0MsTUFBTSxDQUFDO1VBRTdDeUIsY0FBK0MsR0FBRyxFQUFFO1VBQUEsTUFHdER6QixNQUFNLEtBQUtJLDBCQUFlLENBQUM0QixRQUFRLElBQ25DUixlQUFlLEtBQUtyQiw0QkFBZ0IsQ0FBQ0MsMEJBQWUsQ0FBQzRCLFFBQVEsQ0FBQztZQUFBSCxTQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUFGLFNBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BR3RDUCxlQUFlLENBQUNwRyxHQUFHLENBQUM7UUFBQTtVQUF0Q3NHLFNBQVMsR0FBQUcsU0FBQSxDQUFBSSxJQUFBO1VBQ2ZSLGNBQWMsR0FBR0MsU0FBUyxDQUFDN0IsUUFBUTtVQUFDZ0MsU0FBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtVQUU5QmxDLFFBQVEsR0FBRyxJQUFBcUMsb0JBQU8sRUFBQzlHLEdBQUcsQ0FBQ3lFLFFBQVEsQ0FBQztVQUFBZ0MsU0FBQSxDQUFBRSxJQUFBO1VBQUEsT0FDZkksT0FBTyxDQUFDQyxHQUFHLENBQ2hDdkMsUUFBUSxDQUFDekUsR0FBRztZQUFBLElBQUFpSCxLQUFBLE9BQUFsQixrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUMsU0FBQWlCLFFBQU1DLEVBQUU7Y0FBQSxJQUFBbEUsSUFBQSxFQUFBbUUsSUFBQTtjQUFBLE9BQUFwQixZQUFBLFlBQUFPLElBQUEsVUFBQWMsU0FBQUMsUUFBQTtnQkFBQSxrQkFBQUEsUUFBQSxDQUFBWixJQUFBLEdBQUFZLFFBQUEsQ0FBQVgsSUFBQTtrQkFBQTtvQkFBQSxNQUNmL0IsTUFBTSxLQUFLSSwwQkFBZSxDQUFDNEIsUUFBUTtzQkFBQVUsUUFBQSxDQUFBWCxJQUFBO3NCQUFBO29CQUFBO29CQUFBVyxRQUFBLENBQUFYLElBQUE7b0JBQUEsT0FFeEJQLGVBQWUsQ0FBQ2UsRUFBRSxDQUFDO2tCQUFBO29CQUFBLE9BQUFHLFFBQUEsQ0FBQUMsTUFBQSxXQUFBRCxRQUFBLENBQUFULElBQUE7a0JBQUE7b0JBRTVCNUQsSUFBSSxHQUFJa0UsRUFBRSxJQUFJQSxFQUFFLENBQUNsRSxJQUFJLElBQUs7c0JBQUNuQyxFQUFFLEVBQUUsSUFBQUMsMkJBQWMsRUFBQyxDQUFDO29CQUFDLENBQUM7b0JBQUF1RyxRQUFBLENBQUFYLElBQUE7b0JBQUEsT0FDcENQLGVBQWUsQ0FBQ2UsRUFBRSxDQUFDQyxJQUFJLElBQUlELEVBQUUsQ0FBQztrQkFBQTtvQkFBM0NDLElBQUksR0FBQUUsUUFBQSxDQUFBVCxJQUFBO29CQUFBLE9BQUFTLFFBQUEsQ0FBQUMsTUFBQSxXQUNIO3NCQUFDdEUsSUFBSSxFQUFKQSxJQUFJO3NCQUFFbUUsSUFBSSxFQUFKQTtvQkFBSSxDQUFDO2tCQUFBO2tCQUFBO29CQUFBLE9BQUFFLFFBQUEsQ0FBQUUsSUFBQTtnQkFBQTtjQUFBLEdBQUFOLE9BQUE7WUFBQSxDQUNwQjtZQUFBLGlCQUFBTyxHQUFBO2NBQUEsT0FBQVIsS0FBQSxDQUFBdkksS0FBQSxPQUFBRSxTQUFBO1lBQUE7VUFBQSxJQUNILENBQUM7UUFBQTtVQVZEeUgsY0FBYyxHQUFBSSxTQUFBLENBQUFJLElBQUE7UUFBQTtVQWFWNUQsSUFBSSxHQUFBdEUsYUFBQSxDQUFBQSxhQUFBLEtBQ0xxQixHQUFHLENBQUNpRCxJQUFJO1lBQ1gvQyxRQUFRLEVBQUVBLFFBQVEsQ0FBQ0ssSUFBSTtZQUN2QnlELFVBQVUsRUFBVkE7VUFBVTtVQUFBLE9BQUF5QyxTQUFBLENBQUFjLE1BQUEsV0FBQTVJLGFBQUEsQ0FBQUEsYUFBQTtZQUdWOEYsUUFBUSxFQUFFNEIsY0FBYztZQUN4QnBELElBQUksRUFBSkE7VUFBSSxHQUNBakQsR0FBRyxDQUFDMEUsTUFBTSxHQUFHO1lBQUNBLE1BQU0sRUFBRTFFLEdBQUcsQ0FBQzBFO1VBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQzNDLE9BQU8sRUFBRTtjQUNQO2NBQ0EyRixTQUFTLEVBQUU7WUFDYjtVQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFqQixTQUFBLENBQUFlLElBQUE7TUFBQTtJQUFBLEdBQUF0QixRQUFBO0VBQUEsQ0FFSjtFQUFBLE9BQUFKLHlCQUFBLENBQUFwSCxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUVELElBQU0rSSw0QkFBNEIsR0FBR0MsaUJBQUksQ0FBQ0MsV0FBVyxDQUNuRGpDLHdCQUF3QixFQUN4Qiw4QkFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNPLElBQU1rQywwQkFBMEIsR0FBQTNJLE9BQUEsQ0FBQTJJLDBCQUFBLEdBQUcsU0FBN0JBLDBCQUEwQkEsQ0FDckNuRyxLQUFvQixFQUNwQjlCLE1BQWlFLEVBQy9DO0VBQ2xCLElBQUFrSSxnQkFBQSxHQUFrRGxJLE1BQU0sQ0FBQ0MsT0FBTztJQUF6RHlDLFFBQVEsR0FBQXdGLGdCQUFBLENBQVJ4RixRQUFRO0lBQUV5QixVQUFVLEdBQUErRCxnQkFBQSxDQUFWL0QsVUFBVTtJQUFFOUQsUUFBUSxHQUFBNkgsZ0JBQUEsQ0FBUjdILFFBQVE7SUFBRStCLE9BQU8sR0FBQThGLGdCQUFBLENBQVA5RixPQUFPO0VBRTlDLElBQU0rRixXQUFXLEdBQUcxRCx5QkFBeUIsQ0FBQy9CLFFBQVEsQ0FBQztFQUN2RCxJQUFJeUYsV0FBVyxFQUFFO0lBQ2Y7SUFDQSxPQUFPdkUsc0JBQXNCLENBQUM5QixLQUFLLEVBQUU7TUFDbkM3QixPQUFPLEVBQUU7UUFBQ08sS0FBSyxFQUFFMkgsV0FBVztRQUFFOUgsUUFBUSxFQUFSQSxRQUFRO1FBQUUrQixPQUFPLEVBQVBBO01BQU87SUFDakQsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7RUFDQSxJQUFNMkQsd0JBQXdCLEdBQUcrQiw0QkFBNEIsQ0FBQztJQUM1RHBGLFFBQVEsRUFBUkEsUUFBUTtJQUNSeUIsVUFBVSxFQUFWQSxVQUFVO0lBQ1Y5RCxRQUFRLEVBQVJBO0VBQ0YsQ0FBQyxDQUFDLENBQUNvQyxLQUFLLENBQ04sVUFBQzJGLGVBQW9DLEVBQUs7SUFDeEMsT0FBTyxJQUFBQyw2QkFBb0IsRUFBQXZKLGFBQUEsQ0FBQUEsYUFBQSxLQUFLa0IsTUFBTSxDQUFDQyxPQUFPO01BQUVtSSxlQUFlLEVBQWZBO0lBQWUsRUFBQyxDQUFDO0VBQ25FLENBQUMsRUFDRCxVQUFBNUgsS0FBSztJQUFBLE9BQ0hvRCxzQkFBc0IsQ0FBQzlCLEtBQUssRUFBRTtNQUM1QjdCLE9BQU8sRUFBRTtRQUFDTyxLQUFLLEVBQUxBLEtBQUs7UUFBRUgsUUFBUSxFQUFSQSxRQUFRO1FBQUUrQixPQUFPLEVBQVBBO01BQU87SUFDcEMsQ0FBQyxDQUFDO0VBQUEsQ0FDTixDQUFDO0VBRUQsT0FBTyxJQUFBUyxlQUFRLEVBQUNmLEtBQUssRUFBRWlFLHdCQUF3QixDQUFDO0FBQ2xELENBQUM7QUFFTSxJQUFNdUMsMkJBQTJCLEdBQUFoSixPQUFBLENBQUFnSiwyQkFBQSxHQUFHLFNBQTlCQSwyQkFBMkJBLENBQ3RDeEcsS0FBb0IsRUFDcEI5QixNQUFrRSxFQUNoRDtFQUNsQixJQUFBdUksZ0JBQUEsR0FBcUV2SSxNQUFNLENBQUNDLE9BQU87SUFBNUVtSSxlQUFlLEdBQUFHLGdCQUFBLENBQWZILGVBQWU7SUFBRTFGLFFBQVEsR0FBQTZGLGdCQUFBLENBQVI3RixRQUFRO0lBQUV5QixVQUFVLEdBQUFvRSxnQkFBQSxDQUFWcEUsVUFBVTtJQUFFOUQsUUFBUSxHQUFBa0ksZ0JBQUEsQ0FBUmxJLFFBQVE7SUFBRThCLFNBQVMsR0FBQW9HLGdCQUFBLENBQVRwRyxTQUFTO0VBRWpFLElBQU1HLFFBQVEsR0FBQXhELGFBQUEsQ0FBQUEsYUFBQSxLQUNUZ0QsS0FBSztJQUNSbEMsUUFBUSxFQUFFUyxRQUFRLENBQUNLLElBQUk7SUFDdkJoQixlQUFlLEVBQUVXLFFBQVEsQ0FBQ0ssSUFBSTtJQUM5QmxCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEJELGlCQUFpQixFQUFFO0VBQUssRUFDekI7RUFFRCxJQUFNOEQsS0FBSyxHQUFHLENBQ1osSUFBQW5ELG1CQUFXLEVBQUMsQ0FBQyxDQUFDQyxHQUFHLENBQUM7SUFBQSxPQUFNLElBQUFxSSxxQkFBWSxFQUFDSixlQUFlLENBQUM7RUFBQSxFQUFDLEVBQ3REckksZ0JBQWdCLENBQUNvQyxTQUFTLEVBQUU7SUFBQ08sUUFBUSxFQUFSQSxRQUFRO0lBQUV5QixVQUFVLEVBQVZBLFVBQVU7SUFBRTlELFFBQVEsRUFBUkE7RUFBUSxDQUFDLENBQUMsRUFDN0QsSUFBQUgsbUJBQVcsRUFBQyxDQUFDLENBQUNDLEdBQUcsQ0FBQztJQUFBLE9BQU0sSUFBQW1ELDRCQUFtQixjQUFBN0MsTUFBQSxDQUFhSixRQUFRLENBQUNLLElBQUksWUFBUyxDQUFDO0VBQUEsRUFBQyxDQUNqRixDQUFDaEMsTUFBTSxDQUFDLFVBQUE2RSxDQUFDO0lBQUEsT0FBSUEsQ0FBQztFQUFBLEVBQUM7RUFFaEIsT0FBT0YsS0FBSyxDQUFDckUsTUFBTSxHQUFHLElBQUE2RCxlQUFRLEVBQUNQLFFBQVEsRUFBRWUsS0FBSyxDQUFDLEdBQUdmLFFBQVE7QUFDNUQsQ0FBQztBQUVNLElBQU1tRyx3QkFBd0IsR0FBQW5KLE9BQUEsQ0FBQW1KLHdCQUFBLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FDbkMzRyxLQUFvQixFQUNwQjlCLE1BQStELEVBQzdDO0VBQ2xCLElBQU1jLE9BQU8sR0FBRyxJQUFBa0QsZUFBUSxFQUFDaEUsTUFBTSxDQUFDQyxPQUFPLENBQUNPLEtBQUssQ0FBQyw2QkFBNkI7RUFFM0VELG1CQUFPLENBQUM2RCxJQUFJLENBQUN0RCxPQUFPLENBQUM7RUFFckIsSUFBTXdCLFFBQVEsR0FBQXhELGFBQUEsQ0FBQUEsYUFBQSxLQUNUZ0QsS0FBSztJQUNSdkMsaUJBQWlCLEVBQUUsS0FBSztJQUN4QkMsaUJBQWlCLEVBQUUsS0FBSztJQUN4QkMsYUFBYSxFQUFFO0VBQUksRUFDcEI7RUFFRCxPQUFPLElBQUFvRCxlQUFRLEVBQ2JQLFFBQVEsRUFDUjNCLDZCQUE2QixDQUFDO0lBQUNFLElBQUksRUFBRSxPQUFPO0lBQUVDLE9BQU8sRUFBUEEsT0FBTztJQUFFRSxVQUFVLEVBQUU7RUFBSyxDQUFDLENBQzNFLENBQUM7QUFDSCxDQUFDO0FBRU0sSUFBTTBILDBCQUEwQixHQUFBcEosT0FBQSxDQUFBb0osMEJBQUEsR0FBRyxTQUE3QkEsMEJBQTBCQSxDQUFJNUcsS0FBb0I7RUFBQSxPQUFBaEQsYUFBQSxDQUFBQSxhQUFBLEtBQzFEZ0QsS0FBSztJQUNSdkMsaUJBQWlCLEVBQUUsS0FBSztJQUN4QkUsYUFBYSxFQUFFLElBQUk7SUFDbkJELGlCQUFpQixFQUFFLEtBQUs7SUFDeEJHLFdBQVcsRUFBRSxDQUFDO0VBQUM7QUFBQSxDQUNmIiwiaWdub3JlTGlzdCI6W119
464
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGFza3MiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfYWN0aW9ucyIsIl9jb25zdGFudHMiLCJfY2xvdWRQcm92aWRlcnMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJJTklUSUFMX1BST1ZJREVSX1NUQVRFIiwiZXhwb3J0cyIsImlzUHJvdmlkZXJMb2FkaW5nIiwiaXNDbG91ZE1hcExvYWRpbmciLCJwcm92aWRlckVycm9yIiwiY3VycmVudFByb3ZpZGVyIiwic3VjY2Vzc0luZm8iLCJtYXBTYXZlZCIsInNhdmVkTWFwSWQiLCJ2aXN1YWxpemF0aW9ucyIsImNyZWF0ZUFjdGlvblRhc2siLCJhY3Rpb24iLCJwYXlsb2FkIiwiQUNUSU9OX1RBU0siLCJtYXAiLCJfdmFsaWRhdGVQcm92aWRlciIsInByb3ZpZGVyIiwibWV0aG9kIiwiQ29uc29sZSIsImVycm9yIiwiY29uY2F0IiwibmFtZSIsImNyZWF0ZUdsb2JhbE5vdGlmaWNhdGlvblRhc2tzIiwiX3JlZiIsInR5cGUiLCJtZXNzYWdlIiwiX3JlZiRkZWxheUNsb3NlIiwiZGVsYXlDbG9zZSIsImlkIiwiZ2VuZXJhdGVIYXNoSWQiLCJzdWNjZXNzTm90ZSIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTIiwic3VjY2VzcyIsInRvcGljIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTIiwiZ2xvYmFsIiwidGFzayIsImFkZE5vdGlmaWNhdGlvbiIsIkRFTEFZX1RBU0siLCJyZW1vdmVOb3RpZmljYXRpb24iLCJleHBvcnRGaWxlVG9DbG91ZFVwZGF0ZXIiLCJzdGF0ZSIsIl9hY3Rpb24kcGF5bG9hZCIsIm1hcERhdGEiLCJfYWN0aW9uJHBheWxvYWQkb3B0aW8iLCJvcHRpb25zIiwib25TdWNjZXNzIiwib25FcnJvciIsImNsb3NlTW9kYWwiLCJuZXdTdGF0ZSIsInVwbG9hZEZpbGVUYXNrIiwiRVhQT1JUX0ZJTEVfVE9fQ0xPVURfVEFTSyIsImJpbWFwIiwicmVzcG9uc2UiLCJleHBvcnRGaWxlU3VjY2VzcyIsImV4cG9ydEZpbGVFcnJvciIsIndpdGhUYXNrIiwiZXhwb3J0RmlsZVN1Y2Nlc3NVcGRhdGVyIiwiX3Jlc3BvbnNlJGluZm8kaWQiLCJfcmVzcG9uc2UkaW5mbyIsIl9hY3Rpb24kcGF5bG9hZDIiLCJfYWN0aW9uJHBheWxvYWQyJG9wdGkiLCJpc1B1YmxpYyIsImluZm8iLCJ0YXNrcyIsInBvc3RTYXZlTG9hZFN1Y2Nlc3MiLCJkIiwiQm9vbGVhbiIsInBvc3RTYXZlTG9hZFN1Y2Nlc3NVcGRhdGVyIiwidG9nZ2xlTW9kYWwiLCJyZXNldFByb3ZpZGVyU3RhdHVzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImV4cG9ydEZpbGVFcnJvclVwZGF0ZXIiLCJfYWN0aW9uJHBheWxvYWQzIiwiaXNGaWxlQ29uZmxpY3QiLCJPVkVSV1JJVEVfTUFQX0lEIiwiZ2V0RXJyb3IiLCJsb2FkQ2xvdWRNYXBVcGRhdGVyIiwiX2FjdGlvbiRwYXlsb2FkNCIsImxvYWRQYXJhbXMiLCJ3YXJuIiwiTE9BRF9DTE9VRF9NQVBfVEFTSyIsImxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJsb2FkQ2xvdWRNYXBFcnJvciIsIkZJTEVfQ09ORkxJQ1RfTVNHIiwiY2hlY2tMb2FkTWFwUmVzcG9uc2VFcnJvciIsImlzUGxhaW5PYmplY3QiLCJFcnJvciIsImRhdGFzZXRzIiwiY29uZmlnIiwiZ2V0RGF0YXNldEhhbmRsZXIiLCJmb3JtYXQiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJkZWZhdWx0SGFuZGxlciIsIkRBVEFTRVRfSEFORExFUlMiLCJEQVRBU0VUX0ZPUk1BVFMiLCJjc3YiLCJUYWJsZUNsYXNzIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJ0YWJsZSIsIktlcGxlclRhYmxlIiwiZ2V0RmlsZVByb2Nlc3NvciIsInByb2Nlc3NvclJlc3VsdCIsInByb2Nlc3NvciIsInN1cHBvcnRlZEZvcm1hdCIsImsiLCJqb2luIiwicGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrIiwiX3giLCJfcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUyIiwiX3JlZjIiLCJwcm9jZXNzb3JNZXRob2QiLCJwYXJzZWREYXRhc2V0cyIsInBhcnNlZE1hcCIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsImtlcGxlcmdsIiwic2VudCIsInRvQXJyYXkiLCJQcm9taXNlIiwiYWxsIiwiX3JlZjMiLCJfY2FsbGVlIiwiZHMiLCJkYXRhIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImFicnVwdCIsInN0b3AiLCJfeDIiLCJjZW50ZXJNYXAiLCJQQVJTRV9MT0FEX01BUF9SRVNQT05TRV9UQVNLIiwiVGFzayIsImZyb21Qcm9taXNlIiwibG9hZENsb3VkTWFwU3VjY2Vzc1VwZGF0ZXIiLCJfYWN0aW9uJHBheWxvYWQ1IiwiZm9ybWF0RXJyb3IiLCJkYXRhc2V0c1BheWxvYWQiLCJsb2FkQ2xvdWRNYXBTdWNjZXNzMiIsImxvYWRDbG91ZE1hcFN1Y2Nlc3MyVXBkYXRlciIsIl9hY3Rpb24kcGF5bG9hZDYiLCJhZGREYXRhVG9NYXAiLCJsb2FkQ2xvdWRNYXBFcnJvclVwZGF0ZXIiLCJyZXNldFByb3ZpZGVyU3RhdHVzVXBkYXRlciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlci1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgVGFzaywge3dpdGhUYXNrfSBmcm9tICdAa2VwbGVyLmdsL3Rhc2tzJztcbmltcG9ydCB0eXBlIHtUYXNrRGVzY3JpcHRvcn0gZnJvbSAnQGtlcGxlci5nbC90YXNrcyc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnLCBnZXRFcnJvciwgaXNQbGFpbk9iamVjdH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkLCB0b0FycmF5fSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBFWFBPUlRfRklMRV9UT19DTE9VRF9UQVNLLFxuICBBQ1RJT05fVEFTSyxcbiAgREVMQVlfVEFTSyxcbiAgTE9BRF9DTE9VRF9NQVBfVEFTS1xufSBmcm9tICdAa2VwbGVyLmdsL3Rhc2tzJztcbmltcG9ydCB7XG4gIGV4cG9ydEZpbGVTdWNjZXNzLFxuICBleHBvcnRGaWxlRXJyb3IsXG4gIHBvc3RTYXZlTG9hZFN1Y2Nlc3MsXG4gIGxvYWRDbG91ZE1hcFN1Y2Nlc3MsXG4gIGxvYWRDbG91ZE1hcFN1Y2Nlc3MyLFxuICBsb2FkQ2xvdWRNYXBFcnJvcixcbiAgcmVzZXRQcm92aWRlclN0YXR1cyxcbiAgcmVtb3ZlTm90aWZpY2F0aW9uLFxuICB0b2dnbGVNb2RhbCxcbiAgYWRkTm90aWZpY2F0aW9uLFxuICBhZGREYXRhVG9NYXAsXG4gIFByb3ZpZGVyQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREFUQVNFVF9GT1JNQVRTLFxuICBPVkVSV1JJVEVfTUFQX0lEXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7QWRkRGF0YVRvTWFwUGF5bG9hZCwgRXhwb3J0RmlsZVRvQ2xvdWRQYXlsb2FkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtGSUxFX0NPTkZMSUNUX01TRywgTWFwTGlzdEl0ZW19IGZyb20gJ0BrZXBsZXIuZ2wvY2xvdWQtcHJvdmlkZXJzJztcbmltcG9ydCB7REFUQVNFVF9IQU5ETEVSU30gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG50eXBlIEFjdGlvblBheWxvYWQ8UD4gPSB7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHBheWxvYWQ6IFA7XG59O1xuXG5leHBvcnQgdHlwZSBQcm92aWRlclN0YXRlID0ge1xuICBpc1Byb3ZpZGVyTG9hZGluZzogYm9vbGVhbjtcbiAgaXNDbG91ZE1hcExvYWRpbmc6IGJvb2xlYW47XG4gIHByb3ZpZGVyRXJyb3I6IGFueTtcbiAgY3VycmVudFByb3ZpZGVyOiBzdHJpbmcgfCBudWxsO1xuICBzdWNjZXNzSW5mbzogYW55O1xuICBtYXBTYXZlZDogbnVsbCB8IHN0cmluZztcbiAgc2F2ZWRNYXBJZDogbnVsbCB8IHN0cmluZztcbiAgaW5pdGlhbFN0YXRlPzogYW55O1xuICB2aXN1YWxpemF0aW9uczogTWFwTGlzdEl0ZW1bXTtcbn07XG5cbmV4cG9ydCBjb25zdCBJTklUSUFMX1BST1ZJREVSX1NUQVRFOiBQcm92aWRlclN0YXRlID0ge1xuICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2UsXG4gIGlzQ2xvdWRNYXBMb2FkaW5nOiBmYWxzZSxcbiAgcHJvdmlkZXJFcnJvcjogbnVsbCxcbiAgY3VycmVudFByb3ZpZGVyOiBudWxsLFxuICBzdWNjZXNzSW5mbzoge30sXG4gIG1hcFNhdmVkOiBudWxsLFxuICBzYXZlZE1hcElkOiBudWxsLFxuICB2aXN1YWxpemF0aW9uczogW11cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUFjdGlvblRhc2soYWN0aW9uLCBwYXlsb2FkKSB7XG4gIGlmICh0eXBlb2YgYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IGFjdGlvbihwYXlsb2FkKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gX3ZhbGlkYXRlUHJvdmlkZXIocHJvdmlkZXIsIG1ldGhvZCkge1xuICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgQ29uc29sZS5lcnJvcihgcHJvdmlkZXIgaXMgbm90IGRlZmluZWRgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByb3ZpZGVyW21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcbiAgICBDb25zb2xlLmVycm9yKGAke21ldGhvZH0gaXMgbm90IGEgZnVuY3Rpb24gb2YgQ2xvdWQgcHJvdmlkZXI6ICR7cHJvdmlkZXIubmFtZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlR2xvYmFsTm90aWZpY2F0aW9uVGFza3Moe1xuICB0eXBlLFxuICBtZXNzYWdlLFxuICBkZWxheUNsb3NlID0gdHJ1ZVxufToge1xuICB0eXBlPzogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlbGF5Q2xvc2U/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBpZCA9IGdlbmVyYXRlSGFzaElkKCk7XG4gIGNvbnN0IHN1Y2Nlc3NOb3RlID0ge1xuICAgIGlkLFxuICAgIHR5cGU6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTW3R5cGUgfHwgJyddIHx8IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTLnN1Y2Nlc3MsXG4gICAgdG9waWM6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUy5nbG9iYWwsXG4gICAgbWVzc2FnZVxuICB9O1xuICBjb25zdCB0YXNrID0gQUNUSU9OX1RBU0soKS5tYXAoKCkgPT4gYWRkTm90aWZpY2F0aW9uKHN1Y2Nlc3NOb3RlKSk7XG4gIHJldHVybiBkZWxheUNsb3NlID8gW3Rhc2ssIERFTEFZX1RBU0soMzAwMCkubWFwKCgpID0+IHJlbW92ZU5vdGlmaWNhdGlvbihpZCkpXSA6IFt0YXNrXTtcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCB3aWxsIGV4cG9ydCB0aGUgY3VycmVudCBrZXBsZXIgY29uZmlnIGZpbGUgdG8gdGhlIGNob3NlbiBjbG91ZCBwcm9kZXJcbiAqIGFkZCByZXR1cm5zIGEgc2hhcmUgVVJMXG4gKlxuICovXG5leHBvcnQgY29uc3QgZXhwb3J0RmlsZVRvQ2xvdWRVcGRhdGVyID0gKFxuICBzdGF0ZTogUHJvdmlkZXJTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25QYXlsb2FkPEV4cG9ydEZpbGVUb0Nsb3VkUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwRGF0YSwgcHJvdmlkZXIsIG9wdGlvbnMgPSB7fSwgb25TdWNjZXNzLCBvbkVycm9yLCBjbG9zZU1vZGFsfSA9IGFjdGlvbi5wYXlsb2FkO1xuXG4gIGlmICghX3ZhbGlkYXRlUHJvdmlkZXIocHJvdmlkZXIsICd1cGxvYWRNYXAnKSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiB0cnVlLFxuICAgIGN1cnJlbnRQcm92aWRlcjogcHJvdmlkZXIubmFtZVxuICB9O1xuXG4gIC8vIHBheWxvYWQgY2FsbGVkIGJ5IHByb3ZpZGVyLnVwbG9hZE1hcFxuICBjb25zdCBwYXlsb2FkID0ge1xuICAgIG1hcERhdGEsXG4gICAgb3B0aW9uc1xuICB9O1xuICBjb25zdCB1cGxvYWRGaWxlVGFzayA9IEVYUE9SVF9GSUxFX1RPX0NMT1VEX1RBU0soe3Byb3ZpZGVyLCBwYXlsb2FkfSkuYmltYXAoXG4gICAgLy8gc3VjY2Vzc1xuICAgIHJlc3BvbnNlID0+IGV4cG9ydEZpbGVTdWNjZXNzKHtyZXNwb25zZSwgcHJvdmlkZXIsIG9wdGlvbnMsIG9uU3VjY2VzcywgY2xvc2VNb2RhbH0pLFxuICAgIC8vIGVycm9yXG4gICAgZXJyb3IgPT4gZXhwb3J0RmlsZUVycm9yKHtlcnJvciwgcHJvdmlkZXIsIG9wdGlvbnMsIG9uRXJyb3J9KVxuICApO1xuXG4gIHJldHVybiB3aXRoVGFzayhuZXdTdGF0ZSwgdXBsb2FkRmlsZVRhc2spO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydEZpbGVTdWNjZXNzVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuRXhwb3J0RmlsZVN1Y2Nlc3NQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtyZXNwb25zZSwgcHJvdmlkZXIsIG9wdGlvbnMgPSB7fSwgb25TdWNjZXNzLCBjbG9zZU1vZGFsfSA9IGFjdGlvbi5wYXlsb2FkO1xuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZSxcbiAgICAvLyBUT0RPOiBkbyB3ZSBhbHdheXMgaGF2ZSB0byBzdG9yZSB0aGlzP1xuICAgIHN1Y2Nlc3NJbmZvOiByZXNwb25zZSxcbiAgICAuLi4oIW9wdGlvbnMuaXNQdWJsaWNcbiAgICAgID8ge1xuICAgICAgICAgIG1hcFNhdmVkOiBwcm92aWRlci5uYW1lLFxuICAgICAgICAgIHNhdmVkTWFwSWQ6IHJlc3BvbnNlPy5pbmZvPy5pZCA/PyBudWxsXG4gICAgICAgIH1cbiAgICAgIDoge30pXG4gIH07XG5cbiAgY29uc3QgdGFza3MgPSBbXG4gICAgY3JlYXRlQWN0aW9uVGFzayhvblN1Y2Nlc3MsIHtyZXNwb25zZSwgcHJvdmlkZXIsIG9wdGlvbnN9KSxcbiAgICBjbG9zZU1vZGFsICYmXG4gICAgICBBQ1RJT05fVEFTSygpLm1hcCgoKSA9PiBwb3N0U2F2ZUxvYWRTdWNjZXNzKGBNYXAgc2F2ZWQgdG8gJHtzdGF0ZS5jdXJyZW50UHJvdmlkZXJ9IWApKVxuICBdLmZpbHRlcigoZCk6IGQgaXMgVGFza0Rlc2NyaXB0b3IgPT4gQm9vbGVhbihkKSk7XG5cbiAgcmV0dXJuIHRhc2tzLmxlbmd0aCA/IHdpdGhUYXNrKG5ld1N0YXRlLCB0YXNrcykgOiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogQ2xvc2UgbW9kYWwgb24gc3VjY2VzcyBhbmQgZGlzcGxheSBub3RpZmljYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBvc3RTYXZlTG9hZFN1Y2Nlc3NVcGRhdGVyID0gKFxuICBzdGF0ZTogUHJvdmlkZXJTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25QYXlsb2FkPFByb3ZpZGVyQWN0aW9ucy5Qb3N0U2F2ZUxvYWRTdWNjZXNzUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCBtZXNzYWdlID0gYWN0aW9uLnBheWxvYWQgfHwgYFNhdmVkIC8gTG9hZCB0byAke3N0YXRlLmN1cnJlbnRQcm92aWRlcn0gU3VjY2Vzc2A7XG5cbiAgY29uc3QgdGFza3MgPSBbXG4gICAgQUNUSU9OX1RBU0soKS5tYXAoKCkgPT4gdG9nZ2xlTW9kYWwobnVsbCkpLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IHJlc2V0UHJvdmlkZXJTdGF0dXMoKSksXG4gICAgLi4uY3JlYXRlR2xvYmFsTm90aWZpY2F0aW9uVGFza3Moe21lc3NhZ2V9KVxuICBdO1xuXG4gIHJldHVybiB3aXRoVGFzayhzdGF0ZSwgdGFza3MpO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydEZpbGVFcnJvclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkV4cG9ydEZpbGVFcnJvclBheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge2Vycm9yLCBwcm92aWRlciwgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2VcbiAgfTtcblxuICBpZiAoaXNGaWxlQ29uZmxpY3QoZXJyb3IpKSB7XG4gICAgbmV3U3RhdGUubWFwU2F2ZWQgPSBwcm92aWRlci5uYW1lO1xuICAgIHJldHVybiB3aXRoVGFzayhuZXdTdGF0ZSwgW0FDVElPTl9UQVNLKCkubWFwKCgpID0+IHRvZ2dsZU1vZGFsKE9WRVJXUklURV9NQVBfSUQpKV0pO1xuICB9XG5cbiAgbmV3U3RhdGUucHJvdmlkZXJFcnJvciA9IGdldEVycm9yKGVycm9yKTtcbiAgY29uc3QgdGFzayA9IGNyZWF0ZUFjdGlvblRhc2sob25FcnJvciwge2Vycm9yLCBwcm92aWRlcn0pO1xuXG4gIHJldHVybiB0YXNrID8gd2l0aFRhc2sobmV3U3RhdGUsIHRhc2spIDogbmV3U3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZENsb3VkTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7bG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzcywgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgaWYgKCFsb2FkUGFyYW1zKSB7XG4gICAgQ29uc29sZS53YXJuKCdsb2FkIG1hcCBlcnJvcjogbG9hZFBhcmFtcyBpcyB1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgaWYgKCFfdmFsaWRhdGVQcm92aWRlcihwcm92aWRlciwgJ2Rvd25sb2FkTWFwJykpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBpc1Byb3ZpZGVyTG9hZGluZzogdHJ1ZSxcbiAgICBpc0Nsb3VkTWFwTG9hZGluZzogdHJ1ZVxuICB9O1xuXG4gIC8vIHBheWxvYWQgY2FsbGVkIGJ5IHByb3ZpZGVyLmRvd25sb2FkTWFwXG4gIGNvbnN0IHVwbG9hZEZpbGVUYXNrID0gTE9BRF9DTE9VRF9NQVBfVEFTSyh7cHJvdmlkZXIsIHBheWxvYWQ6IGxvYWRQYXJhbXN9KS5iaW1hcChcbiAgICAvLyBzdWNjZXNzXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJlc3BvbnNlID0+IGxvYWRDbG91ZE1hcFN1Y2Nlc3Moe3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlciwgb25TdWNjZXNzLCBvbkVycm9yfSksXG4gICAgLy8gZXJyb3JcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZXJyb3IgPT4gbG9hZENsb3VkTWFwRXJyb3Ioe2Vycm9yLCBwcm92aWRlciwgb25FcnJvcn0pXG4gICk7XG5cbiAgcmV0dXJuIHdpdGhUYXNrKG5ld1N0YXRlLCB1cGxvYWRGaWxlVGFzayk7XG59O1xuXG5mdW5jdGlvbiBpc0ZpbGVDb25mbGljdChlcnJvcikge1xuICByZXR1cm4gZXJyb3IgJiYgZXJyb3IubWVzc2FnZSA9PT0gRklMRV9DT05GTElDVF9NU0c7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpIHtcbiAgaWYgKCFyZXNwb25zZSB8fCAhaXNQbGFpbk9iamVjdChyZXNwb25zZSkpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKCdMb2FkIG1hcCByZXNwb25zZSBpcyBlbXB0eScpO1xuICB9XG4gIGlmICghaXNQbGFpbk9iamVjdChyZXNwb25zZS5tYXApKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgTG9hZCBtYXAgcmVzcG9uc2Ugc2hvdWxkIGJlIGFuIG9iamVjdCBwcm9wZXJ0eSBcIm1hcFwiYCk7XG4gIH1cbiAgaWYgKCFyZXNwb25zZS5tYXAuZGF0YXNldHMgfHwgIXJlc3BvbnNlLm1hcC5jb25maWcpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKGBMb2FkIG1hcCByZXNwb25zZS5tYXAgc2hvdWxkIGJlIGFuIG9iamVjdCB3aXRoIHByb3BlcnR5IGRhdGFzZXRzIG9yIGNvbmZpZ2ApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldERhdGFzZXRIYW5kbGVyKGZvcm1hdCkge1xuICBjb25zdCBkZWZhdWx0SGFuZGxlciA9IERBVEFTRVRfSEFORExFUlNbREFUQVNFVF9GT1JNQVRTLmNzdl07XG4gIGlmICghZm9ybWF0KSB7XG4gICAgQ29uc29sZS53YXJuKCdmb3JtYXQgaXMgbm90IHByb3ZpZGVkIGluIGxvYWQgbWFwIHJlc3BvbnNlLCB3aWxsIHVzZSBjc3YgYnkgZGVmYXVsdCcpO1xuICAgIHJldHVybiBkZWZhdWx0SGFuZGxlcjtcbiAgfVxuXG4gIC8vIHVzZSBjdXN0b20gcHJvY2Vzc29ycyBmcm9tIHRhYmxlIGNsYXNzXG4gIGNvbnN0IFRhYmxlQ2xhc3MgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuICBpZiAodHlwZW9mIFRhYmxlQ2xhc3MuZ2V0RmlsZVByb2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByb2Nlc3NvclJlc3VsdCA9IFRhYmxlQ2xhc3MuZ2V0RmlsZVByb2Nlc3NvcihudWxsLCBmb3JtYXQpO1xuICAgIGlmICghcHJvY2Vzc29yUmVzdWx0LnByb2Nlc3Nvcikge1xuICAgICAgQ29uc29sZS53YXJuKGBObyBwcm9jZXNzb3IgZm91bmQgZm9yIGZvcm1hdCAke2Zvcm1hdH0sIHdpbGwgdXNlIGNzdiBieSBkZWZhdWx0YCk7XG4gICAgICByZXR1cm4gZGVmYXVsdEhhbmRsZXI7XG4gICAgfVxuICAgIHJldHVybiBwcm9jZXNzb3JSZXN1bHQucHJvY2Vzc29yO1xuICB9XG5cbiAgaWYgKCFEQVRBU0VUX0hBTkRMRVJTW2Zvcm1hdF0pIHtcbiAgICBjb25zdCBzdXBwb3J0ZWRGb3JtYXQgPSBPYmplY3Qua2V5cyhEQVRBU0VUX0ZPUk1BVFMpXG4gICAgICAubWFwKGsgPT4gYCcke2t9J2ApXG4gICAgICAuam9pbignLCAnKTtcbiAgICBDb25zb2xlLndhcm4oXG4gICAgICBgdW5rbm93biBmb3JtYXQgJHtmb3JtYXR9LiBQbGVhc2UgdXNlIG9uZSBvZiAke3N1cHBvcnRlZEZvcm1hdH0sIHdpbGwgdXNlIGNzdiBieSBkZWZhdWx0YFxuICAgICk7XG4gICAgcmV0dXJuIGRlZmF1bHRIYW5kbGVyO1xuICB9XG5cbiAgcmV0dXJuIERBVEFTRVRfSEFORExFUlNbZm9ybWF0XTtcbn1cblxuLyoqXG4gKiBBIHRhc2sgdG8gaGFuZGxlIGFzeW5jIHByb2Nlc3Nvck1ldGhvZFxuICogQHBhcmFtIHBhcmFtMFxuICogQHJldHVybnNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrKHtcbiAgcmVzcG9uc2UsXG4gIGxvYWRQYXJhbXMsXG4gIHByb3ZpZGVyXG59OiB7XG4gIHJlc3BvbnNlOiBQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwU3VjY2Vzc1BheWxvYWRbJ3Jlc3BvbnNlJ107XG4gIGxvYWRQYXJhbXM6IFByb3ZpZGVyQWN0aW9ucy5Mb2FkQ2xvdWRNYXBTdWNjZXNzUGF5bG9hZFsnbG9hZFBhcmFtcyddO1xuICBwcm92aWRlcjogUHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFN1Y2Nlc3NQYXlsb2FkWydwcm92aWRlciddO1xufSkge1xuICBjb25zdCB7bWFwLCBmb3JtYXR9ID0gcmVzcG9uc2U7XG4gIGNvbnN0IHByb2Nlc3Nvck1ldGhvZCA9IGdldERhdGFzZXRIYW5kbGVyKGZvcm1hdCk7XG5cbiAgbGV0IHBhcnNlZERhdGFzZXRzOiBBZGREYXRhVG9NYXBQYXlsb2FkWydkYXRhc2V0cyddID0gW107XG5cbiAgaWYgKFxuICAgIGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsICYmXG4gICAgcHJvY2Vzc29yTWV0aG9kICE9PSBEQVRBU0VUX0hBTkRMRVJTW0RBVEFTRVRfRk9STUFUUy5rZXBsZXJnbF1cbiAgKSB7XG4gICAgLy8gcGx1Z2luIHRhYmxlIHByb3ZpZGVzIHByb2Nlc3NvciBmb3Iga2VwbGVyZ2wgbWFwLCBub3Qgc2luZ2xlIGRhdGFzZXQgd2l0aCBhbGxEYXRhXG4gICAgY29uc3QgcGFyc2VkTWFwID0gYXdhaXQgcHJvY2Vzc29yTWV0aG9kKG1hcCk7XG4gICAgcGFyc2VkRGF0YXNldHMgPSBwYXJzZWRNYXAuZGF0YXNldHM7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YXNldHMgPSB0b0FycmF5KG1hcC5kYXRhc2V0cyk7XG4gICAgcGFyc2VkRGF0YXNldHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGRhdGFzZXRzLm1hcChhc3luYyBkcyA9PiB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCkge1xuICAgICAgICAgIC8vIG5vIG5lZWQgdG8gb2J0YWluIGlkLCBkaXJlY3RseSBwYXNzIHRoZW0gaW5cbiAgICAgICAgICByZXR1cm4gYXdhaXQgcHJvY2Vzc29yTWV0aG9kKGRzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmZvID0gKGRzICYmIGRzLmluZm8pIHx8IHtpZDogZ2VuZXJhdGVIYXNoSWQoNil9O1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcHJvY2Vzc29yTWV0aG9kKGRzLmRhdGEgfHwgZHMpO1xuICAgICAgICByZXR1cm4ge2luZm8sIGRhdGF9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5mbyA9IHtcbiAgICAuLi5tYXAuaW5mbyxcbiAgICBwcm92aWRlcjogcHJvdmlkZXIubmFtZSxcbiAgICBsb2FkUGFyYW1zXG4gIH07XG4gIHJldHVybiB7XG4gICAgZGF0YXNldHM6IHBhcnNlZERhdGFzZXRzLFxuICAgIGluZm8sXG4gICAgLi4uKG1hcC5jb25maWcgPyB7Y29uZmlnOiBtYXAuY29uZmlnfSA6IHt9KSxcbiAgICBvcHRpb25zOiB7XG4gICAgICAvLyBkbyBub3QgY2VudGVyIG1hcCB3aGVuIGxvYWRpbmcgY2xvdWQgbWFwXG4gICAgICBjZW50ZXJNYXA6IGZhbHNlXG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBQQVJTRV9MT0FEX01BUF9SRVNQT05TRV9UQVNLID0gVGFzay5mcm9tUHJvbWlzZShcbiAgcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrLFxuICAnUEFSU0VfTE9BRF9NQVBfUkVTUE9OU0VfVEFTSydcbik7XG5cbi8qKlxuICogVXNlZCB0byBsb2FkIHJlc291cmNlcyBzdG9yZWQgaW4gYSBwcml2YXRlIHN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkQ2xvdWRNYXBTdWNjZXNzVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwU3VjY2Vzc1BheWxvYWQ+XG4pOiBQcm92aWRlclN0YXRlID0+IHtcbiAgY29uc3Qge3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlciwgb25FcnJvcn0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBmb3JtYXRFcnJvciA9IGNoZWNrTG9hZE1hcFJlc3BvbnNlRXJyb3IocmVzcG9uc2UpO1xuICBpZiAoZm9ybWF0RXJyb3IpIHtcbiAgICAvLyBpZiByZXNwb25zZSBmb3JtYXQgaXMgbm90IGNvcnJlY3RcbiAgICByZXR1cm4gZXhwb3J0RmlsZUVycm9yVXBkYXRlcihzdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge2Vycm9yOiBmb3JtYXRFcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9XG4gICAgfSk7XG4gIH1cblxuICAvLyBwcm9jZXNzb3JNZXRob2QgY2FuIGJlIGFzeW5jIHNvIGNyZWF0ZSBhIHRhc2tcbiAgY29uc3QgcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrID0gUEFSU0VfTE9BRF9NQVBfUkVTUE9OU0VfVEFTSyh7XG4gICAgcmVzcG9uc2UsXG4gICAgbG9hZFBhcmFtcyxcbiAgICBwcm92aWRlclxuICB9KS5iaW1hcChcbiAgICAoZGF0YXNldHNQYXlsb2FkOiBBZGREYXRhVG9NYXBQYXlsb2FkKSA9PiB7XG4gICAgICByZXR1cm4gbG9hZENsb3VkTWFwU3VjY2VzczIoey4uLmFjdGlvbi5wYXlsb2FkLCBkYXRhc2V0c1BheWxvYWR9KTtcbiAgICB9LFxuICAgIGVycm9yID0+XG4gICAgICBleHBvcnRGaWxlRXJyb3JVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIHBheWxvYWQ6IHtlcnJvciwgcHJvdmlkZXIsIG9uRXJyb3J9XG4gICAgICB9KVxuICApO1xuXG4gIHJldHVybiB3aXRoVGFzayhzdGF0ZSwgcGFyc2VMb2FkTWFwUmVzcG9uc2VUYXNrKTtcbn07XG5cbmV4cG9ydCBjb25zdCBsb2FkQ2xvdWRNYXBTdWNjZXNzMlVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBQcm92aWRlclN0YXRlLFxuICBhY3Rpb246IEFjdGlvblBheWxvYWQ8UHJvdmlkZXJBY3Rpb25zLkxvYWRDbG91ZE1hcFN1Y2Nlc3MyUGF5bG9hZD5cbik6IFByb3ZpZGVyU3RhdGUgPT4ge1xuICBjb25zdCB7ZGF0YXNldHNQYXlsb2FkLCByZXNwb25zZSwgbG9hZFBhcmFtcywgcHJvdmlkZXIsIG9uU3VjY2Vzc30gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTYXZlZDogcHJvdmlkZXIubmFtZSxcbiAgICBjdXJyZW50UHJvdmlkZXI6IHByb3ZpZGVyLm5hbWUsXG4gICAgaXNDbG91ZE1hcExvYWRpbmc6IGZhbHNlLFxuICAgIGlzUHJvdmlkZXJMb2FkaW5nOiBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IHRhc2tzID0gW1xuICAgIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IGFkZERhdGFUb01hcChkYXRhc2V0c1BheWxvYWQpKSxcbiAgICBjcmVhdGVBY3Rpb25UYXNrKG9uU3VjY2Vzcywge3Jlc3BvbnNlLCBsb2FkUGFyYW1zLCBwcm92aWRlcn0pLFxuICAgIEFDVElPTl9UQVNLKCkubWFwKCgpID0+IHBvc3RTYXZlTG9hZFN1Y2Nlc3MoYE1hcCBmcm9tICR7cHJvdmlkZXIubmFtZX0gbG9hZGVkYCkpXG4gIF0uZmlsdGVyKChkKTogZCBpcyBUYXNrRGVzY3JpcHRvciA9PiBCb29sZWFuKGQpKTtcblxuICByZXR1cm4gdGFza3MubGVuZ3RoID8gd2l0aFRhc2sobmV3U3RhdGUsIHRhc2tzKSA6IG5ld1N0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvYWRDbG91ZE1hcEVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFByb3ZpZGVyU3RhdGUsXG4gIGFjdGlvbjogQWN0aW9uUGF5bG9hZDxQcm92aWRlckFjdGlvbnMuTG9hZENsb3VkTWFwRXJyb3JQYXlsb2FkPlxuKTogUHJvdmlkZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBnZXRFcnJvcihhY3Rpb24ucGF5bG9hZC5lcnJvcikgfHwgYEVycm9yIGxvYWRpbmcgc2F2ZWQgbWFwYDtcblxuICBDb25zb2xlLndhcm4obWVzc2FnZSk7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgaXNQcm92aWRlckxvYWRpbmc6IGZhbHNlLFxuICAgIGlzQ2xvdWRNYXBMb2FkaW5nOiBmYWxzZSxcbiAgICBwcm92aWRlckVycm9yOiBudWxsXG4gIH07XG5cbiAgcmV0dXJuIHdpdGhUYXNrKFxuICAgIG5ld1N0YXRlLFxuICAgIGNyZWF0ZUdsb2JhbE5vdGlmaWNhdGlvblRhc2tzKHt0eXBlOiAnZXJyb3InLCBtZXNzYWdlLCBkZWxheUNsb3NlOiBmYWxzZX0pXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRQcm92aWRlclN0YXR1c1VwZGF0ZXIgPSAoc3RhdGU6IFByb3ZpZGVyU3RhdGUpOiBQcm92aWRlclN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpc1Byb3ZpZGVyTG9hZGluZzogZmFsc2UsXG4gIHByb3ZpZGVyRXJyb3I6IG51bGwsXG4gIGlzQ2xvdWRNYXBMb2FkaW5nOiBmYWxzZSxcbiAgc3VjY2Vzc0luZm86IHt9XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBT0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBY0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBUUEsSUFBQU8sZUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBQTZDLFNBQUFELHdCQUFBVyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBYix1QkFBQSxZQUFBQSx3QkFBQVcsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxH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
package/dist/cjs/root.js CHANGED
@@ -188,7 +188,7 @@ function decorate(target) {
188
188
  * @example
189
189
  * import keplerGlReducer from '@kepler.gl/reducers';
190
190
  * import {createStore, combineReducers, applyMiddleware, compose} from 'redux';
191
- * import {taskMiddleware} from 'react-palm/tasks';
191
+ * import {taskMiddleware} from '@kepler.gl/tasks';
192
192
  *
193
193
  * const initialState = {};
194
194
  * const reducers = combineReducers({
@@ -204,4 +204,4 @@ function decorate(target) {
204
204
  */
205
205
  var keplerGlReducer = decorate(_keplerGlReducer);
206
206
  var _default = exports["default"] = keplerGlReducer;
207
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9ucyIsInJlcXVpcmUiLCJfcmVkdXhBY3Rpb25zIiwiX2NvcmUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiY29yZVJlZHVjZXJGYWN0b3J5IiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwiX3JlZiIsIl9yZWYkcGF5bG9hZCIsInBheWxvYWQiLCJpZCIsIm1pbnQiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5pdGlhbFVpU3RhdGUiLCJwcmV2aW91c1N0YXRlIiwidW5kZWZpbmVkIiwia2VwbGVyR2xJbml0IiwiaGFuZGxlRGVsZXRlRW50cnkiLCJfcmVmMiIsInJlZHVjZSIsImFjY3UiLCJjdXJyIiwiaGFuZGxlUmVuYW1lRW50cnkiLCJfcmVmNCIsIl9yZWY0JHBheWxvYWQiLCJvbGRJZCIsIm5ld0lkIiwiYWN0aW9uIiwidXBkYXRlSXRlbVN0YXRlIiwiX2FjdGlvbkZvciIsIl91cGRhdGVQcm9wZXJ0eSIsImhhbmRsZXJzIiwiQWN0aW9uVHlwZXMiLCJSRUdJU1RFUl9FTlRSWSIsIkRFTEVURV9FTlRSWSIsIlJFTkFNRV9FTlRSWSIsImhhbmRsZUFjdGlvbnMiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIm5ld1N0YXRlIiwia2V5IiwiZGVjb3JhdGUiLCJ0YXJnZXQiLCJzYXZlZEluaXRpYWxTdGF0ZSIsInRhcmdldEluaXRpYWxTdGF0ZSIsInBsdWdpbiIsImN1c3RvbVJlZHVjZXIiLCJvcHRpb25zIiwiX3RoaXMiLCJfdHlwZW9mMiIsIl9vcHRpb25zJG92ZXJyaWRlIiwibmV4dFN0YXRlIiwidHlwZSIsIm92ZXJyaWRlIiwiaW5pU3QiLCJtZXJnZWQiLCJ0YXJnZXRSZWR1Y2VyIiwia2VwbGVyR2xSZWR1Y2VyIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIGtlcGxlckdsSW5pdCxcbiAgX2FjdGlvbkZvcixcbiAgX3VwZGF0ZVByb3BlcnR5LFxuICBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvbixcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuXG5pbXBvcnQge2NvcmVSZWR1Y2VyRmFjdG9yeSwgS2VwbGVyR2xTdGF0ZX0gZnJvbSAnLi9jb3JlJztcblxudHlwZSBLZXBsZXJHbFN0YXRlTWFwID0ge1xuICBbaWQ6IHN0cmluZ106IFBhcnRpYWw8S2VwbGVyR2xTdGF0ZT47XG59O1xuXG50eXBlIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnMgPSBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddICZcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107IC8vIEV4dGVuZCB0aGlzIHR5cGUgd2l0aCBhZGRpdGlvbmFsIGFjdGlvbnMgdG8gZW5mb3JjZSBzdHJpY3QgdHlwaW5nc1xuXG4vLyBJTklUSUFMX1NUQVRFXG5jb25zdCBpbml0aWFsQ29yZVN0YXRlID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycz8pIHtcbiAgY29uc3QgY29yZVJlZHVjZXIgPSBjb3JlUmVkdWNlckZhY3RvcnkoaW5pdGlhbFN0YXRlLCBleHRyYVJlZHVjZXJzKTtcblxuICBjb25zdCBoYW5kbGVSZWdpc3RlckVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIG1pbnQsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgICAgICBpbml0aWFsVWlTdGF0ZVxuICAgICAgfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlZ2lzdGVyRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107XG4gICAgfVxuICApOiBLZXBsZXJHbFN0YXRlTWFwID0+IHtcbiAgICAvLyBieSBkZWZhdWx0LCBhbHdheXMgY3JlYXRlIGEgbWludCBzdGF0ZSBldmVuIGlmIHRoZSBzYW1lIGlkIGFscmVhZHkgZXhpc3RcbiAgICAvLyBpZiBzdGF0ZS5pZCBleGlzdCBhbmQgbWludD1mYWxzZSwga2VlcCB0aGUgZXhpc3Rpbmcgc3RhdGVcbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gc3RhdGVbaWRdICYmIG1pbnQgPT09IGZhbHNlID8gc3RhdGVbaWRdIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGVudHJ5IHRvIGtlcGxlci5nbCBwYXNzaW5nIGluIG1hcGJveCBjb25maWcgdG8gbWFwU3R5bGVcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgW2lkXTogY29yZVJlZHVjZXIoXG4gICAgICAgIHByZXZpb3VzU3RhdGUsXG4gICAgICAgIGtlcGxlckdsSW5pdCh7bWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQsIGluaXRpYWxVaVN0YXRlfSlcbiAgICAgIClcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtwYXlsb2FkOiB7aWR9fToge3BheWxvYWQ6IHtpZDogc3RyaW5nfX1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4uKGN1cnIgPT09IGlkID8ge30gOiB7W2N1cnJdOiBzdGF0ZVtjdXJyXX0pXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICBjb25zdCBoYW5kbGVSZW5hbWVFbnRyeSA9IChcbiAgICBzdGF0ZTogS2VwbGVyR2xTdGF0ZU1hcCxcbiAgICB7XG4gICAgICBwYXlsb2FkOiB7b2xkSWQsIG5ld0lkfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlbmFtZUVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddO1xuICAgIH1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4ue1tjdXJyID09PSBvbGRJZCA/IG5ld0lkIDogY3Vycl06IHN0YXRlW2N1cnJdfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgcmV0dXJuIChzdGF0ZSA9IGluaXRpYWxDb3JlU3RhdGUsIGFjdGlvbikgPT4ge1xuICAgIC8vIHVwZGF0ZSBjaGlsZCBzdGF0ZXNcbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVJdGVtU3RhdGUgPSBjb3JlUmVkdWNlcihzdGF0ZVtpZF0sIF9hY3Rpb25Gb3IoaWQsIGFjdGlvbikpO1xuICAgICAgc3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoc3RhdGUsIGlkLCB1cGRhdGVJdGVtU3RhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gcGVyZm9ybSBhZGRpdGlvbmFsIHN0YXRlIHJlZHVjaW5nIChlLmcuIHN3aXRjaCBhY3Rpb24udHlwZSBldGMuLi4pXG4gICAgY29uc3QgaGFuZGxlcnMgPSB7XG4gICAgICBbQWN0aW9uVHlwZXMuUkVHSVNURVJfRU5UUlldOiBoYW5kbGVSZWdpc3RlckVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLkRFTEVURV9FTlRSWV06IGhhbmRsZURlbGV0ZUVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLlJFTkFNRV9FTlRSWV06IGhhbmRsZVJlbmFtZUVudHJ5XG4gICAgfTtcblxuICAgIHJldHVybiBoYW5kbGVBY3Rpb25zPEtlcGxlckdsU3RhdGVNYXAsIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnM+KFxuICAgICAgaGFuZGxlcnMsXG4gICAgICBpbml0aWFsQ29yZVN0YXRlXG4gICAgKShzdGF0ZSwgYWN0aW9uKTtcbiAgfTtcbn1cblxuY29uc3QgX2tlcGxlckdsUmVkdWNlciA9IHByb3ZpZGVJbml0aWFsU3RhdGUoaW5pdGlhbENvcmVTdGF0ZSk7XG5cbmZ1bmN0aW9uIG1lcmdlSW5pdGlhbFN0YXRlKHNhdmVkID0ge30sIHByb3ZpZGVkID0ge30sIGV4dHJhSW5pdGlhbFN0YXRlS2V5czogc3RyaW5nW10gPSBbXSkge1xuICBjb25zdCBrZXlzID0gWydtYXBTdGF0ZScsICdtYXBTdHlsZScsICd2aXNTdGF0ZScsICd1aVN0YXRlJywgLi4uZXh0cmFJbml0aWFsU3RhdGVLZXlzXTtcblxuICAvLyBzaGFsbG93IG1lcmdlIGVhY2ggcmVkdWNlclxuICBjb25zdCBuZXdTdGF0ZSA9IGtleXMucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHNhdmVkW2tleV0gJiYgcHJvdmlkZWRba2V5XVxuICAgICAgICA/IHtba2V5XTogey4uLnNhdmVkW2tleV0sIC4uLnByb3ZpZGVkW2tleV19fVxuICAgICAgICA6IHtba2V5XTogc2F2ZWRba2V5XSB8fCBwcm92aWRlZFtrZXldIHx8IHt9fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGUodGFyZ2V0LCBzYXZlZEluaXRpYWxTdGF0ZSA9IHt9KSB7XG4gIGNvbnN0IHRhcmdldEluaXRpYWxTdGF0ZSA9IHNhdmVkSW5pdGlhbFN0YXRlO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEga2VwbGVyLmdsIHJlZHVjZXIgdGhhdCB3aWxsIGFsc28gcGFzcyBlYWNoIGFjdGlvbiB0aHJvdWdoIGFkZGl0aW9uYWwgcmVkdWNlcnMgc3BpZWNpZmllZC5cbiAgICogVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgZWl0aGVyIGEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyIGZ1bmN0aW9uLlxuICAgKiBUaGUgc3RhdGUgcGFzc2VkIGludG8gdGhlIGFkZGl0aW9uYWwgYWN0aW9uIGhhbmRsZXIgaXMgdGhlIGluc3RhbmNlIHN0YXRlLlxuICAgKiBJdCB3aWxsIGluY2x1ZGUgYWxsIHRoZSBzdWJyZWR1Y2VycyBgdmlzU3RhdGVgLCBgdWlTdGF0ZWAsIGBtYXBTdGF0ZWAgYW5kIGBtYXBTdHlsZWAuXG4gICAqIGAucGx1Z2luYCBpcyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBvbmNlIHdoZW4gbW91bnRpbmcgdGhlIGtlcGxlckdsUmVkdWNlciB0byB0aGUgc3RvcmUuXG4gICAqICoqTm90ZSoqIFRoaXMgaXMgYW4gYWR2YW5jZWQgb3B0aW9uIHRvIGdpdmUgeW91IG1vcmUgZnJlZWRvbSB0byBtb2RpZnkgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBrZXBsZXIuZ2wgaW5zdGFuY2UuXG4gICAqIFlvdSBzaG91bGQgb25seSB1c2UgdGhpcyB0byBhZGRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIGluc3RlYWQgb2YgcmVwbGFjaW5nIGRlZmF1bHQgYWN0aW9ucy5cbiAgICpcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5wbHVnaW5cbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gY3VzdG9tUmVkdWNlciAtIEEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGN1c3RvbSByZWR1Y2VyIGxvZ2ljXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLm92ZXJyaWRlIC0gb2JqZWN0cyB0aGF0IGRlc2NyaWJlIHdoaWNoIGFjdGlvbiB0byBvdmVycmlkZSwgZS5nLiB7W0FjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFXTogdHJ1ZX1cbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLnBsdWdpbih7XG4gICAqICAgIC8vIDEuIGFzIHJlZHVjZXIgbWFwXG4gICAqICAgIEhJREVfQU5EX1NIT1dfU0lERV9QQU5FTDogKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gICAqICAgICAgLi4uc3RhdGUsXG4gICAqICAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAgLi4uc3RhdGUudWlTdGF0ZSxcbiAgICogICAgICAgIHJlYWRPbmx5OiAhc3RhdGUudWlTdGF0ZS5yZWFkT25seVxuICAgKiAgICAgIH1cbiAgICogICAgfSlcbiAgICogIH0pXG4gICAqIC5wbHVnaW4oaGFuZGxlQWN0aW9ucyh7XG4gICAqICAgLy8gMi4gYXMgcmVkdWNlclxuICAgKiAgICdISURFX01BUF9DT05UUk9MUyc6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgLi4uc3RhdGUsXG4gICAqICAgICB1aVN0YXRlOiB7XG4gICAqICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgIG1hcENvbnRyb2xzOiBoaWRkZW5NYXBDb250cm9sXG4gICAqICAgICB9XG4gICAqICAgfSlcbiAgICogfSwge30pKTtcbiAgICovXG4gIHRhcmdldC5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4oY3VzdG9tUmVkdWNlciwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUmVkdWNlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGlmIG9ubHkgcHJvdmlkZWQgYSByZWR1Y2VyTWFwLCB3cmFwIGl0IGluIGEgcmVkdWNlclxuICAgICAgY3VzdG9tUmVkdWNlciA9IGhhbmRsZUFjdGlvbnMoY3VzdG9tUmVkdWNlciwge30pO1xuICAgIH1cblxuICAgIC8vIHVzZSAnZnVuY3Rpb24nIGtleXdvcmQgdG8gZW5hYmxlICd0aGlzJ1xuICAgIC8vIFRPRE86IHRlbXBvcmFyaWx5IG1ha2luZyBhY3Rpb24gdHlwZSB0byBhbnksIHdpbGwgZml4IHRoYXQgYnkgY3JlYXRpbmcgYSBzaGFyZWQgYWN0aW9uIGludGVyZmFjZVxuICAgIHJldHVybiBkZWNvcmF0ZSgoc3RhdGUgPSB7fSwgYWN0aW9uOiBhbnkgPSB7fSkgPT4ge1xuICAgICAgbGV0IG5leHRTdGF0ZSA9IHN0YXRlO1xuICAgICAgaWYgKGFjdGlvbi50eXBlICYmICFvcHRpb25zPy5vdmVycmlkZT8uW2FjdGlvbi50eXBlXSkge1xuICAgICAgICBuZXh0U3RhdGUgPSB0aGlzKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgc3RhdGVuXG4gICAgICBPYmplY3Qua2V5cyhuZXh0U3RhdGUpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgY2hpbGQgc3RhdGVzXG4gICAgICAgIG5leHRTdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShcbiAgICAgICAgICBuZXh0U3RhdGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY3VzdG9tUmVkdWNlcihuZXh0U3RhdGVbaWRdLCBfYWN0aW9uRm9yKGlkLCBhY3Rpb24pKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZWR1Y2VyIHRoYXQgaW5pdGlhdGVkIHdpdGggY3VzdG9tIGluaXRpYWwgc3RhdGUuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCBtYXBwaW5nIGZyb20gYHN1YnJlZHVjZXJgIG5hbWUgdG8gY3VzdG9tIHN1YnJlZHVjZXIgc3RhdGUsXG4gICAqIHdoaWNoIHdpbGwgYmUgc2hhbGxvdyAqKm1lcmdlZCoqIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlLlxuICAgKlxuICAgKiBEZWZhdWx0IHN1YnJlZHVjZXIgc3RhdGU6XG4gICAqICAtIFtgdmlzU3RhdGVgXSguL3Zpcy1zdGF0ZS5tZCNJTklUSUFMX1ZJU19TVEFURSlcbiAgICogIC0gW2BtYXBTdGF0ZWBdKC4vbWFwLXN0YXRlLm1kI0lOSVRJQUxfTUFQX1NUQVRFKVxuICAgKiAgLSBbYG1hcFN0eWxlYF0oLi9tYXAtc3R5bGUubWQjSU5JVElBTF9NQVBfU1RZTEUpXG4gICAqICAtIFtgdWlTdGF0ZWBdKC4vdWktc3RhdGUubWQjSU5JVElBTF9VSV9TVEFURSlcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5pbml0aWFsU3RhdGVcbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gaW5pU3QgLSBjdXN0b20gc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBleHRyYVJlZHVjZXJzIC0gb3B0aW9uYWwgY3VzdG9tIHJlZHVjZXJzIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLmluaXRpYWxTdGF0ZSh7XG4gICAqICAgIHVpU3RhdGU6IHtyZWFkT25seTogdHJ1ZX1cbiAgICogIH0pO1xuICAgKi9cbiAgdGFyZ2V0LmluaXRpYWxTdGF0ZSA9IGZ1bmN0aW9uIGluaXRpYWxTdGF0ZShpbmlTdCwgZXh0cmFSZWR1Y2VycyA9IHt9KSB7XG4gICAgLy8gcGFzc2luZyB0aHJvdWdoIGV4dHJhSW5pdGlhbFN0YXRlS2V5cyBhbmQgZXh0cmFSZWR1Y2VycyBhbGxvd3MgZXh0ZXJuYWwgY3VzdG9taXphdGlvbiBieSBhZGRpbmcgYWRkaXRpb25hbCBzdWJyZWR1Y2VycyBhbmQgc3RhdGUgYmV5b25kIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICBjb25zdCBleHRyYUluaXRpYWxTdGF0ZUtleXMgPSBPYmplY3Qua2V5cyhleHRyYVJlZHVjZXJzKTtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZUluaXRpYWxTdGF0ZSh0YXJnZXRJbml0aWFsU3RhdGUsIGluaVN0LCBleHRyYUluaXRpYWxTdGF0ZUtleXMpO1xuICAgIGNvbnN0IHRhcmdldFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKG1lcmdlZCwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgICByZXR1cm4gZGVjb3JhdGUodGFyZ2V0UmVkdWNlciwgbWVyZ2VkKTtcbiAgfTtcblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIEtlcGxlci5nbCByZWR1Y2VyIHRvIGJlIG1vdW50ZWQgdG8geW91ciBzdG9yZS4gWW91IGNhbiBtb3VudCBga2VwbGVyR2xSZWR1Y2VyYCBhdCBwcm9wZXJ0eSBga2VwbGVyR2xgLCBpZiB5b3UgY2hvb3NlXG4gKiB0byBtb3VudCBpdCBhdCBhbm90aGVyIGFkZHJlc3MgZS5nLiBgZm9vYCB5b3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgaXQgd2hlbiB5b3UgbW91bnQgYEtlcGxlckdsYCBjb21wb25lbnQgaW4geW91ciBhcHAgd2l0aCBgZ2V0U3RhdGU6IHN0YXRlID0+IHN0YXRlLmZvb2BcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyIGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogaW1wb3J0IHtjcmVhdGVTdG9yZSwgY29tYmluZVJlZHVjZXJzLCBhcHBseU1pZGRsZXdhcmUsIGNvbXBvc2V9IGZyb20gJ3JlZHV4JztcbiAqIGltcG9ydCB7dGFza01pZGRsZXdhcmV9IGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuICpcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogICAvLyA8LS0gbW91bnQga2VwbGVyLmdsIHJlZHVjZXIgaW4geW91ciBhcHBcbiAqICAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqXG4gKiAgIC8vIFlvdXIgb3RoZXIgcmVkdWNlcnMgaGVyZVxuICogICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIC8vIHVzaW5nIGNyZWF0ZVN0b3JlXG4gKiBleHBvcnQgZGVmYXVsdCBjcmVhdGVTdG9yZShyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGFwcGx5TWlkZGxld2FyZSh0YXNrTWlkZGxld2FyZSkpO1xuICovXG5jb25zdCBrZXBsZXJHbFJlZHVjZXIgPSBkZWNvcmF0ZShfa2VwbGVyR2xSZWR1Y2VyKTtcbmV4cG9ydCBkZWZhdWx0IGtlcGxlckdsUmVkdWNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFRQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFBeUQsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUEsSUFiekQ7QUFDQTtBQW1CdUM7O0FBRXZDO0FBQ0EsSUFBTW9CLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUVwQixTQUFTQyxtQkFBbUJBLENBQUNDLFlBQVksRUFBRUMsYUFBYyxFQUFFO0VBQ2hFLElBQU1DLFdBQVcsR0FBRyxJQUFBQyx3QkFBa0IsRUFBQ0gsWUFBWSxFQUFFQyxhQUFhLENBQUM7RUFFbkUsSUFBTUcsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FDdkJDLEtBQXVCLEVBQUFDLElBQUEsRUFhRjtJQUFBLElBQUFDLFlBQUEsR0FBQUQsSUFBQSxDQVhuQkUsT0FBTztNQUNMQyxFQUFFLEdBQUFGLFlBQUEsQ0FBRkUsRUFBRTtNQUNGQyxJQUFJLEdBQUFILFlBQUEsQ0FBSkcsSUFBSTtNQUNKQyxvQkFBb0IsR0FBQUosWUFBQSxDQUFwQkksb0JBQW9CO01BQ3BCQyxZQUFZLEdBQUFMLFlBQUEsQ0FBWkssWUFBWTtNQUNaQyx1QkFBdUIsR0FBQU4sWUFBQSxDQUF2Qk0sdUJBQXVCO01BQ3ZCQyxjQUFjLEdBQUFQLFlBQUEsQ0FBZE8sY0FBYztJQU1sQjtJQUNBO0lBQ0EsSUFBTUMsYUFBYSxHQUFHVixLQUFLLENBQUNJLEVBQUUsQ0FBQyxJQUFJQyxJQUFJLEtBQUssS0FBSyxHQUFHTCxLQUFLLENBQUNJLEVBQUUsQ0FBQyxHQUFHTyxTQUFTO0lBRXpFLE9BQUExQixhQUFBLENBQUFBLGFBQUEsS0FFS2UsS0FBSyxXQUFBWCxnQkFBQSxpQkFDUGUsRUFBRSxFQUFHUCxXQUFXLENBQ2ZhLGFBQWEsRUFDYixJQUFBRSxxQkFBWSxFQUFDO01BQUNOLG9CQUFvQixFQUFwQkEsb0JBQW9CO01BQUVDLFlBQVksRUFBWkEsWUFBWTtNQUFFQyx1QkFBdUIsRUFBdkJBLHVCQUF1QjtNQUFFQyxjQUFjLEVBQWRBO0lBQWMsQ0FBQyxDQUM1RixDQUFDO0VBRUwsQ0FBQztFQUVELElBQU1JLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQ3JCYixLQUF1QixFQUFBYyxLQUFBO0lBQUEsSUFDWlYsRUFBRSxHQUFBVSxLQUFBLENBQVpYLE9BQU8sQ0FBR0MsRUFBRTtJQUFBLE9BRWI1QixNQUFNLENBQUNDLElBQUksQ0FBQ3VCLEtBQUssQ0FBQyxDQUFDZSxNQUFNLENBQ3ZCLFVBQUNDLElBQUksRUFBRUMsSUFBSTtNQUFBLE9BQUFoQyxhQUFBLENBQUFBLGFBQUEsS0FDTitCLElBQUksR0FDSEMsSUFBSSxLQUFLYixFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQUFmLGdCQUFBLGlCQUFLNEIsSUFBSSxFQUFHakIsS0FBSyxDQUFDaUIsSUFBSSxDQUFDLENBQUM7SUFBQSxDQUM1QyxFQUNGLENBQUMsQ0FDSCxDQUFDO0VBQUE7RUFFSCxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUNyQmxCLEtBQXVCLEVBQUFtQixLQUFBO0lBQUEsSUFBQUMsYUFBQSxHQUFBRCxLQUFBLENBRXJCaEIsT0FBTztNQUFHa0IsS0FBSyxHQUFBRCxhQUFBLENBQUxDLEtBQUs7TUFBRUMsS0FBSyxHQUFBRixhQUFBLENBQUxFLEtBQUs7SUFBQSxPQUt4QjlDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDdUIsS0FBSyxDQUFDLENBQUNlLE1BQU0sQ0FDdkIsVUFBQ0MsSUFBSSxFQUFFQyxJQUFJO01BQUEsT0FBQWhDLGFBQUEsQ0FBQUEsYUFBQSxLQUNOK0IsSUFBSSxPQUFBM0IsZ0JBQUEsaUJBQ0Y0QixJQUFJLEtBQUtJLEtBQUssR0FBR0MsS0FBSyxHQUFHTCxJQUFJLEVBQUdqQixLQUFLLENBQUNpQixJQUFJLENBQUM7SUFBQSxDQUNoRCxFQUNGLENBQUMsQ0FDSCxDQUFDO0VBQUE7RUFFSCxPQUFPLFlBQXNDO0lBQUEsSUFBckNqQixLQUFLLEdBQUFkLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUF5QixTQUFBLEdBQUF6QixTQUFBLE1BQUdPLGdCQUFnQjtJQUFBLElBQUU4QixNQUFNLEdBQUFyQyxTQUFBLENBQUFDLE1BQUEsT0FBQUQsU0FBQSxNQUFBeUIsU0FBQTtJQUN0QztJQUNBbkMsTUFBTSxDQUFDQyxJQUFJLENBQUN1QixLQUFLLENBQUMsQ0FBQ1osT0FBTyxDQUFDLFVBQUFnQixFQUFFLEVBQUk7TUFDL0IsSUFBTW9CLGVBQWUsR0FBRzNCLFdBQVcsQ0FBQ0csS0FBSyxDQUFDSSxFQUFFLENBQUMsRUFBRSxJQUFBcUIsbUJBQVUsRUFBQ3JCLEVBQUUsRUFBRW1CLE1BQU0sQ0FBQyxDQUFDO01BQ3RFdkIsS0FBSyxHQUFHLElBQUEwQix3QkFBZSxFQUFDMUIsS0FBSyxFQUFFSSxFQUFFLEVBQUVvQixlQUFlLENBQUM7SUFDckQsQ0FBQyxDQUFDOztJQUVGO0lBQ0EsSUFBTUcsUUFBUSxPQUFBdEMsZ0JBQUEsaUJBQUFBLGdCQUFBLGlCQUFBQSxnQkFBQSxpQkFDWHVDLG9CQUFXLENBQUNDLGNBQWMsRUFBRzlCLG1CQUFtQixHQUNoRDZCLG9CQUFXLENBQUNFLFlBQVksRUFBR2pCLGlCQUFpQixHQUM1Q2Usb0JBQVcsQ0FBQ0csWUFBWSxFQUFHYixpQkFBaUIsQ0FDOUM7SUFFRCxPQUFPLElBQUFjLDJCQUFhLEVBQ2xCTCxRQUFRLEVBQ1JsQyxnQkFDRixDQUFDLENBQUNPLEtBQUssRUFBRXVCLE1BQU0sQ0FBQztFQUNsQixDQUFDO0FBQ0g7QUFFQSxJQUFNVSxnQkFBZ0IsR0FBR3ZDLG1CQUFtQixDQUFDRCxnQkFBZ0IsQ0FBQztBQUU5RCxTQUFTeUMsaUJBQWlCQSxDQUFBLEVBQWtFO0VBQUEsSUFBakVDLEtBQUssR0FBQWpELFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUF5QixTQUFBLEdBQUF6QixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQUEsSUFBRWtELFFBQVEsR0FBQWxELFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUF5QixTQUFBLEdBQUF6QixTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQUEsSUFBRW1ELHFCQUErQixHQUFBbkQsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQXlCLFNBQUEsR0FBQXpCLFNBQUEsTUFBRyxFQUFFO0VBQ3hGLElBQU1ULElBQUksSUFBSSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUE2RCxNQUFBLEtBQUFDLG1CQUFBLGFBQUtGLHFCQUFxQixFQUFDOztFQUV0RjtFQUNBLElBQU1HLFFBQVEsR0FBRy9ELElBQUksQ0FBQ3NDLE1BQU0sQ0FDMUIsVUFBQ0MsSUFBSSxFQUFFeUIsR0FBRztJQUFBLE9BQUF4RCxhQUFBLENBQUFBLGFBQUEsS0FDTCtCLElBQUksR0FDSG1CLEtBQUssQ0FBQ00sR0FBRyxDQUFDLElBQUlMLFFBQVEsQ0FBQ0ssR0FBRyxDQUFDLE9BQUFwRCxnQkFBQSxpQkFDekJvRCxHQUFHLEVBQUF4RCxhQUFBLENBQUFBLGFBQUEsS0FBT2tELEtBQUssQ0FBQ00sR0FBRyxDQUFDLEdBQUtMLFFBQVEsQ0FBQ0ssR0FBRyxDQUFDLFNBQUFwRCxnQkFBQSxpQkFDdENvRCxHQUFHLEVBQUdOLEtBQUssQ0FBQ00sR0FBRyxDQUFDLElBQUlMLFFBQVEsQ0FBQ0ssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFBQSxDQUM5QyxFQUNGLENBQUMsQ0FDSCxDQUFDO0VBRUQsT0FBT0QsUUFBUTtBQUNqQjtBQUVBLFNBQVNFLFFBQVFBLENBQUNDLE1BQU0sRUFBMEI7RUFBQSxJQUF4QkMsaUJBQWlCLEdBQUExRCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBeUIsU0FBQSxHQUFBekIsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUM5QyxJQUFNMkQsa0JBQWtCLEdBQUdELGlCQUFpQjs7RUFFNUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFRCxNQUFNLENBQUNHLE1BQU0sR0FBRyxTQUFTQSxNQUFNQSxDQUFDQyxhQUFhLEVBQUVDLE9BQU8sRUFBRTtJQUFBLElBQUFDLEtBQUE7SUFDdEQsSUFBSSxJQUFBQyxRQUFBLGFBQU9ILGFBQWEsTUFBSyxRQUFRLEVBQUU7TUFDckM7TUFDQUEsYUFBYSxHQUFHLElBQUFmLDJCQUFhLEVBQUNlLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRDs7SUFFQTtJQUNBO0lBQ0EsT0FBT0wsUUFBUSxDQUFDLFlBQWtDO01BQUEsSUFBQVMsaUJBQUE7TUFBQSxJQUFqQ25ELEtBQUssR0FBQWQsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQXlCLFNBQUEsR0FBQXpCLFNBQUEsTUFBRyxDQUFDLENBQUM7TUFBQSxJQUFFcUMsTUFBVyxHQUFBckMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQXlCLFNBQUEsR0FBQXpCLFNBQUEsTUFBRyxDQUFDLENBQUM7TUFDM0MsSUFBSWtFLFNBQVMsR0FBR3BELEtBQUs7TUFDckIsSUFBSXVCLE1BQU0sQ0FBQzhCLElBQUksSUFBSSxFQUFDTCxPQUFPLGFBQVBBLE9BQU8sZ0JBQUFHLGlCQUFBLEdBQVBILE9BQU8sQ0FBRU0sUUFBUSxjQUFBSCxpQkFBQSxlQUFqQkEsaUJBQUEsQ0FBb0I1QixNQUFNLENBQUM4QixJQUFJLENBQUMsR0FBRTtRQUNwREQsU0FBUyxHQUFHSCxLQUFJLENBQUNqRCxLQUFLLEVBQUV1QixNQUFNLENBQUM7TUFDakM7O01BRUE7TUFDQS9DLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDMkUsU0FBUyxDQUFDLENBQUNoRSxPQUFPLENBQUMsVUFBQWdCLEVBQUUsRUFBSTtRQUNuQztRQUNBZ0QsU0FBUyxHQUFHLElBQUExQix3QkFBZSxFQUN6QjBCLFNBQVMsRUFDVGhELEVBQUUsRUFDRjJDLGFBQWEsQ0FBQ0ssU0FBUyxDQUFDaEQsRUFBRSxDQUFDLEVBQUUsSUFBQXFCLG1CQUFVLEVBQUNyQixFQUFFLEVBQUVtQixNQUFNLENBQUMsQ0FDckQsQ0FBQztNQUNILENBQUMsQ0FBQztNQUNGLE9BQU82QixTQUFTO0lBQ2xCLENBQUMsQ0FBQztFQUNKLENBQUM7O0VBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VULE1BQU0sQ0FBQ2hELFlBQVksR0FBRyxTQUFTQSxZQUFZQSxDQUFDNEQsS0FBSyxFQUFzQjtJQUFBLElBQXBCM0QsYUFBYSxHQUFBVixTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBeUIsU0FBQSxHQUFBekIsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUNuRTtJQUNBLElBQU1tRCxxQkFBcUIsR0FBRzdELE1BQU0sQ0FBQ0MsSUFBSSxDQUFDbUIsYUFBYSxDQUFDO0lBQ3hELElBQU00RCxNQUFNLEdBQUd0QixpQkFBaUIsQ0FBQ1csa0JBQWtCLEVBQUVVLEtBQUssRUFBRWxCLHFCQUFxQixDQUFDO0lBQ2xGLElBQU1vQixhQUFhLEdBQUcvRCxtQkFBbUIsQ0FBQzhELE1BQU0sRUFBRTVELGFBQWEsQ0FBQztJQUVoRSxPQUFPOEMsUUFBUSxDQUFDZSxhQUFhLEVBQUVELE1BQU0sQ0FBQztFQUN4QyxDQUFDO0VBRUQsT0FBT2IsTUFBTTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1lLGVBQWUsR0FBR2hCLFFBQVEsQ0FBQ1QsZ0JBQWdCLENBQUM7QUFBQyxJQUFBMEIsUUFBQSxHQUFBQyxPQUFBLGNBQ3BDRixlQUFlIiwiaWdub3JlTGlzdCI6W119
207
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9ucyIsInJlcXVpcmUiLCJfcmVkdXhBY3Rpb25zIiwiX2NvcmUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImluaXRpYWxDb3JlU3RhdGUiLCJwcm92aWRlSW5pdGlhbFN0YXRlIiwiaW5pdGlhbFN0YXRlIiwiZXh0cmFSZWR1Y2VycyIsImNvcmVSZWR1Y2VyIiwiY29yZVJlZHVjZXJGYWN0b3J5IiwiaGFuZGxlUmVnaXN0ZXJFbnRyeSIsInN0YXRlIiwiX3JlZiIsIl9yZWYkcGF5bG9hZCIsInBheWxvYWQiLCJpZCIsIm1pbnQiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiaW5pdGlhbFVpU3RhdGUiLCJwcmV2aW91c1N0YXRlIiwidW5kZWZpbmVkIiwia2VwbGVyR2xJbml0IiwiaGFuZGxlRGVsZXRlRW50cnkiLCJfcmVmMiIsInJlZHVjZSIsImFjY3UiLCJjdXJyIiwiaGFuZGxlUmVuYW1lRW50cnkiLCJfcmVmNCIsIl9yZWY0JHBheWxvYWQiLCJvbGRJZCIsIm5ld0lkIiwiYWN0aW9uIiwidXBkYXRlSXRlbVN0YXRlIiwiX2FjdGlvbkZvciIsIl91cGRhdGVQcm9wZXJ0eSIsImhhbmRsZXJzIiwiQWN0aW9uVHlwZXMiLCJSRUdJU1RFUl9FTlRSWSIsIkRFTEVURV9FTlRSWSIsIlJFTkFNRV9FTlRSWSIsImhhbmRsZUFjdGlvbnMiLCJfa2VwbGVyR2xSZWR1Y2VyIiwibWVyZ2VJbml0aWFsU3RhdGUiLCJzYXZlZCIsInByb3ZpZGVkIiwiZXh0cmFJbml0aWFsU3RhdGVLZXlzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIm5ld1N0YXRlIiwia2V5IiwiZGVjb3JhdGUiLCJ0YXJnZXQiLCJzYXZlZEluaXRpYWxTdGF0ZSIsInRhcmdldEluaXRpYWxTdGF0ZSIsInBsdWdpbiIsImN1c3RvbVJlZHVjZXIiLCJvcHRpb25zIiwiX3RoaXMiLCJfdHlwZW9mMiIsIl9vcHRpb25zJG92ZXJyaWRlIiwibmV4dFN0YXRlIiwidHlwZSIsIm92ZXJyaWRlIiwiaW5pU3QiLCJtZXJnZWQiLCJ0YXJnZXRSZWR1Y2VyIiwia2VwbGVyR2xSZWR1Y2VyIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jvb3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQWN0aW9uVHlwZXMsXG4gIGtlcGxlckdsSW5pdCxcbiAgX2FjdGlvbkZvcixcbiAgX3VwZGF0ZVByb3BlcnR5LFxuICBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvbixcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuXG5pbXBvcnQge2NvcmVSZWR1Y2VyRmFjdG9yeSwgS2VwbGVyR2xTdGF0ZX0gZnJvbSAnLi9jb3JlJztcblxudHlwZSBLZXBsZXJHbFN0YXRlTWFwID0ge1xuICBbaWQ6IHN0cmluZ106IFBhcnRpYWw8S2VwbGVyR2xTdGF0ZT47XG59O1xuXG50eXBlIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnMgPSBSZWdpc3RlckVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddICZcbiAgUmVuYW1lRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107IC8vIEV4dGVuZCB0aGlzIHR5cGUgd2l0aCBhZGRpdGlvbmFsIGFjdGlvbnMgdG8gZW5mb3JjZSBzdHJpY3QgdHlwaW5nc1xuXG4vLyBJTklUSUFMX1NUQVRFXG5jb25zdCBpbml0aWFsQ29yZVN0YXRlID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSW5pdGlhbFN0YXRlKGluaXRpYWxTdGF0ZSwgZXh0cmFSZWR1Y2Vycz8pIHtcbiAgY29uc3QgY29yZVJlZHVjZXIgPSBjb3JlUmVkdWNlckZhY3RvcnkoaW5pdGlhbFN0YXRlLCBleHRyYVJlZHVjZXJzKTtcblxuICBjb25zdCBoYW5kbGVSZWdpc3RlckVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgaWQsXG4gICAgICAgIG1pbnQsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgICAgICBpbml0aWFsVWlTdGF0ZVxuICAgICAgfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlZ2lzdGVyRW50cnlVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ107XG4gICAgfVxuICApOiBLZXBsZXJHbFN0YXRlTWFwID0+IHtcbiAgICAvLyBieSBkZWZhdWx0LCBhbHdheXMgY3JlYXRlIGEgbWludCBzdGF0ZSBldmVuIGlmIHRoZSBzYW1lIGlkIGFscmVhZHkgZXhpc3RcbiAgICAvLyBpZiBzdGF0ZS5pZCBleGlzdCBhbmQgbWludD1mYWxzZSwga2VlcCB0aGUgZXhpc3Rpbmcgc3RhdGVcbiAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gc3RhdGVbaWRdICYmIG1pbnQgPT09IGZhbHNlID8gc3RhdGVbaWRdIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIHJlZ2lzdGVyIGVudHJ5IHRvIGtlcGxlci5nbCBwYXNzaW5nIGluIG1hcGJveCBjb25maWcgdG8gbWFwU3R5bGVcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgW2lkXTogY29yZVJlZHVjZXIoXG4gICAgICAgIHByZXZpb3VzU3RhdGUsXG4gICAgICAgIGtlcGxlckdsSW5pdCh7bWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQsIGluaXRpYWxVaVN0YXRlfSlcbiAgICAgIClcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUVudHJ5ID0gKFxuICAgIHN0YXRlOiBLZXBsZXJHbFN0YXRlTWFwLFxuICAgIHtwYXlsb2FkOiB7aWR9fToge3BheWxvYWQ6IHtpZDogc3RyaW5nfX1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4uKGN1cnIgPT09IGlkID8ge30gOiB7W2N1cnJdOiBzdGF0ZVtjdXJyXX0pXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcblxuICBjb25zdCBoYW5kbGVSZW5hbWVFbnRyeSA9IChcbiAgICBzdGF0ZTogS2VwbGVyR2xTdGF0ZU1hcCxcbiAgICB7XG4gICAgICBwYXlsb2FkOiB7b2xkSWQsIG5ld0lkfVxuICAgIH06IHtcbiAgICAgIHBheWxvYWQ6IFJlbmFtZUVudHJ5VXBkYXRlckFjdGlvblsncGF5bG9hZCddO1xuICAgIH1cbiAgKTogS2VwbGVyR2xTdGF0ZU1hcCA9PlxuICAgIE9iamVjdC5rZXlzKHN0YXRlKS5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgLi4ue1tjdXJyID09PSBvbGRJZCA/IG5ld0lkIDogY3Vycl06IHN0YXRlW2N1cnJdfVxuICAgICAgfSksXG4gICAgICB7fVxuICAgICk7XG5cbiAgcmV0dXJuIChzdGF0ZSA9IGluaXRpYWxDb3JlU3RhdGUsIGFjdGlvbikgPT4ge1xuICAgIC8vIHVwZGF0ZSBjaGlsZCBzdGF0ZXNcbiAgICBPYmplY3Qua2V5cyhzdGF0ZSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVJdGVtU3RhdGUgPSBjb3JlUmVkdWNlcihzdGF0ZVtpZF0sIF9hY3Rpb25Gb3IoaWQsIGFjdGlvbikpO1xuICAgICAgc3RhdGUgPSBfdXBkYXRlUHJvcGVydHkoc3RhdGUsIGlkLCB1cGRhdGVJdGVtU3RhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gcGVyZm9ybSBhZGRpdGlvbmFsIHN0YXRlIHJlZHVjaW5nIChlLmcuIHN3aXRjaCBhY3Rpb24udHlwZSBldGMuLi4pXG4gICAgY29uc3QgaGFuZGxlcnMgPSB7XG4gICAgICBbQWN0aW9uVHlwZXMuUkVHSVNURVJfRU5UUlldOiBoYW5kbGVSZWdpc3RlckVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLkRFTEVURV9FTlRSWV06IGhhbmRsZURlbGV0ZUVudHJ5LFxuICAgICAgW0FjdGlvblR5cGVzLlJFTkFNRV9FTlRSWV06IGhhbmRsZVJlbmFtZUVudHJ5XG4gICAgfTtcblxuICAgIHJldHVybiBoYW5kbGVBY3Rpb25zPEtlcGxlckdsU3RhdGVNYXAsIENvbWJpbmVSZWdpc3RlclVwZGF0ZUFjdGlvbnM+KFxuICAgICAgaGFuZGxlcnMsXG4gICAgICBpbml0aWFsQ29yZVN0YXRlXG4gICAgKShzdGF0ZSwgYWN0aW9uKTtcbiAgfTtcbn1cblxuY29uc3QgX2tlcGxlckdsUmVkdWNlciA9IHByb3ZpZGVJbml0aWFsU3RhdGUoaW5pdGlhbENvcmVTdGF0ZSk7XG5cbmZ1bmN0aW9uIG1lcmdlSW5pdGlhbFN0YXRlKHNhdmVkID0ge30sIHByb3ZpZGVkID0ge30sIGV4dHJhSW5pdGlhbFN0YXRlS2V5czogc3RyaW5nW10gPSBbXSkge1xuICBjb25zdCBrZXlzID0gWydtYXBTdGF0ZScsICdtYXBTdHlsZScsICd2aXNTdGF0ZScsICd1aVN0YXRlJywgLi4uZXh0cmFJbml0aWFsU3RhdGVLZXlzXTtcblxuICAvLyBzaGFsbG93IG1lcmdlIGVhY2ggcmVkdWNlclxuICBjb25zdCBuZXdTdGF0ZSA9IGtleXMucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgLi4uKHNhdmVkW2tleV0gJiYgcHJvdmlkZWRba2V5XVxuICAgICAgICA/IHtba2V5XTogey4uLnNhdmVkW2tleV0sIC4uLnByb3ZpZGVkW2tleV19fVxuICAgICAgICA6IHtba2V5XTogc2F2ZWRba2V5XSB8fCBwcm92aWRlZFtrZXldIHx8IHt9fSlcbiAgICB9KSxcbiAgICB7fVxuICApO1xuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZGVjb3JhdGUodGFyZ2V0LCBzYXZlZEluaXRpYWxTdGF0ZSA9IHt9KSB7XG4gIGNvbnN0IHRhcmdldEluaXRpYWxTdGF0ZSA9IHNhdmVkSW5pdGlhbFN0YXRlO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEga2VwbGVyLmdsIHJlZHVjZXIgdGhhdCB3aWxsIGFsc28gcGFzcyBlYWNoIGFjdGlvbiB0aHJvdWdoIGFkZGl0aW9uYWwgcmVkdWNlcnMgc3BpZWNpZmllZC5cbiAgICogVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgZWl0aGVyIGEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyIGZ1bmN0aW9uLlxuICAgKiBUaGUgc3RhdGUgcGFzc2VkIGludG8gdGhlIGFkZGl0aW9uYWwgYWN0aW9uIGhhbmRsZXIgaXMgdGhlIGluc3RhbmNlIHN0YXRlLlxuICAgKiBJdCB3aWxsIGluY2x1ZGUgYWxsIHRoZSBzdWJyZWR1Y2VycyBgdmlzU3RhdGVgLCBgdWlTdGF0ZWAsIGBtYXBTdGF0ZWAgYW5kIGBtYXBTdHlsZWAuXG4gICAqIGAucGx1Z2luYCBpcyBvbmx5IG1lYW50IHRvIGJlIGNhbGxlZCBvbmNlIHdoZW4gbW91bnRpbmcgdGhlIGtlcGxlckdsUmVkdWNlciB0byB0aGUgc3RvcmUuXG4gICAqICoqTm90ZSoqIFRoaXMgaXMgYW4gYWR2YW5jZWQgb3B0aW9uIHRvIGdpdmUgeW91IG1vcmUgZnJlZWRvbSB0byBtb2RpZnkgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBrZXBsZXIuZ2wgaW5zdGFuY2UuXG4gICAqIFlvdSBzaG91bGQgb25seSB1c2UgdGhpcyB0byBhZGRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIGluc3RlYWQgb2YgcmVwbGFjaW5nIGRlZmF1bHQgYWN0aW9ucy5cbiAgICpcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5wbHVnaW5cbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gY3VzdG9tUmVkdWNlciAtIEEgcmVkdWNlciBtYXAgb3IgYSByZWR1Y2VyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gb3B0aW9ucyB0byBiZSBhcHBsaWVkIHRvIGN1c3RvbSByZWR1Y2VyIGxvZ2ljXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLm92ZXJyaWRlIC0gb2JqZWN0cyB0aGF0IGRlc2NyaWJlIHdoaWNoIGFjdGlvbiB0byBvdmVycmlkZSwgZS5nLiB7W0FjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFXTogdHJ1ZX1cbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLnBsdWdpbih7XG4gICAqICAgIC8vIDEuIGFzIHJlZHVjZXIgbWFwXG4gICAqICAgIEhJREVfQU5EX1NIT1dfU0lERV9QQU5FTDogKHN0YXRlLCBhY3Rpb24pID0+ICh7XG4gICAqICAgICAgLi4uc3RhdGUsXG4gICAqICAgICAgdWlTdGF0ZToge1xuICAgKiAgICAgICAgLi4uc3RhdGUudWlTdGF0ZSxcbiAgICogICAgICAgIHJlYWRPbmx5OiAhc3RhdGUudWlTdGF0ZS5yZWFkT25seVxuICAgKiAgICAgIH1cbiAgICogICAgfSlcbiAgICogIH0pXG4gICAqIC5wbHVnaW4oaGFuZGxlQWN0aW9ucyh7XG4gICAqICAgLy8gMi4gYXMgcmVkdWNlclxuICAgKiAgICdISURFX01BUF9DT05UUk9MUyc6IChzdGF0ZSwgYWN0aW9uKSA9PiAoe1xuICAgKiAgICAgLi4uc3RhdGUsXG4gICAqICAgICB1aVN0YXRlOiB7XG4gICAqICAgICAgIC4uLnN0YXRlLnVpU3RhdGUsXG4gICAqICAgICAgIG1hcENvbnRyb2xzOiBoaWRkZW5NYXBDb250cm9sXG4gICAqICAgICB9XG4gICAqICAgfSlcbiAgICogfSwge30pKTtcbiAgICovXG4gIHRhcmdldC5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4oY3VzdG9tUmVkdWNlciwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUmVkdWNlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGlmIG9ubHkgcHJvdmlkZWQgYSByZWR1Y2VyTWFwLCB3cmFwIGl0IGluIGEgcmVkdWNlclxuICAgICAgY3VzdG9tUmVkdWNlciA9IGhhbmRsZUFjdGlvbnMoY3VzdG9tUmVkdWNlciwge30pO1xuICAgIH1cblxuICAgIC8vIHVzZSAnZnVuY3Rpb24nIGtleXdvcmQgdG8gZW5hYmxlICd0aGlzJ1xuICAgIC8vIFRPRE86IHRlbXBvcmFyaWx5IG1ha2luZyBhY3Rpb24gdHlwZSB0byBhbnksIHdpbGwgZml4IHRoYXQgYnkgY3JlYXRpbmcgYSBzaGFyZWQgYWN0aW9uIGludGVyZmFjZVxuICAgIHJldHVybiBkZWNvcmF0ZSgoc3RhdGUgPSB7fSwgYWN0aW9uOiBhbnkgPSB7fSkgPT4ge1xuICAgICAgbGV0IG5leHRTdGF0ZSA9IHN0YXRlO1xuICAgICAgaWYgKGFjdGlvbi50eXBlICYmICFvcHRpb25zPy5vdmVycmlkZT8uW2FjdGlvbi50eXBlXSkge1xuICAgICAgICBuZXh0U3RhdGUgPSB0aGlzKHN0YXRlLCBhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgc3RhdGVuXG4gICAgICBPYmplY3Qua2V5cyhuZXh0U3RhdGUpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgY2hpbGQgc3RhdGVzXG4gICAgICAgIG5leHRTdGF0ZSA9IF91cGRhdGVQcm9wZXJ0eShcbiAgICAgICAgICBuZXh0U3RhdGUsXG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY3VzdG9tUmVkdWNlcihuZXh0U3RhdGVbaWRdLCBfYWN0aW9uRm9yKGlkLCBhY3Rpb24pKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSByZWR1Y2VyIHRoYXQgaW5pdGlhdGVkIHdpdGggY3VzdG9tIGluaXRpYWwgc3RhdGUuXG4gICAqIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCBtYXBwaW5nIGZyb20gYHN1YnJlZHVjZXJgIG5hbWUgdG8gY3VzdG9tIHN1YnJlZHVjZXIgc3RhdGUsXG4gICAqIHdoaWNoIHdpbGwgYmUgc2hhbGxvdyAqKm1lcmdlZCoqIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlLlxuICAgKlxuICAgKiBEZWZhdWx0IHN1YnJlZHVjZXIgc3RhdGU6XG4gICAqICAtIFtgdmlzU3RhdGVgXSguL3Zpcy1zdGF0ZS5tZCNJTklUSUFMX1ZJU19TVEFURSlcbiAgICogIC0gW2BtYXBTdGF0ZWBdKC4vbWFwLXN0YXRlLm1kI0lOSVRJQUxfTUFQX1NUQVRFKVxuICAgKiAgLSBbYG1hcFN0eWxlYF0oLi9tYXAtc3R5bGUubWQjSU5JVElBTF9NQVBfU1RZTEUpXG4gICAqICAtIFtgdWlTdGF0ZWBdKC4vdWktc3RhdGUubWQjSU5JVElBTF9VSV9TVEFURSlcbiAgICogQG1peGluIGtlcGxlckdsUmVkdWNlci5pbml0aWFsU3RhdGVcbiAgICogQG1lbWJlcm9mIGtlcGxlckdsUmVkdWNlclxuICAgKiBAcGFyYW0ge09iamVjdH0gaW5pU3QgLSBjdXN0b20gc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBpbml0aWFsIHN0YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBleHRyYVJlZHVjZXJzIC0gb3B0aW9uYWwgY3VzdG9tIHJlZHVjZXJzIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICogQHB1YmxpY1xuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBteUtlcGxlckdsUmVkdWNlciA9IGtlcGxlckdsUmVkdWNlclxuICAgKiAgLmluaXRpYWxTdGF0ZSh7XG4gICAqICAgIHVpU3RhdGU6IHtyZWFkT25seTogdHJ1ZX1cbiAgICogIH0pO1xuICAgKi9cbiAgdGFyZ2V0LmluaXRpYWxTdGF0ZSA9IGZ1bmN0aW9uIGluaXRpYWxTdGF0ZShpbmlTdCwgZXh0cmFSZWR1Y2VycyA9IHt9KSB7XG4gICAgLy8gcGFzc2luZyB0aHJvdWdoIGV4dHJhSW5pdGlhbFN0YXRlS2V5cyBhbmQgZXh0cmFSZWR1Y2VycyBhbGxvd3MgZXh0ZXJuYWwgY3VzdG9taXphdGlvbiBieSBhZGRpbmcgYWRkaXRpb25hbCBzdWJyZWR1Y2VycyBhbmQgc3RhdGUgYmV5b25kIHRoZSBkZWZhdWx0IGB2aXNTdGF0ZWAsIGBtYXBTdGF0ZWAsIGBtYXBTdHlsZWAsIGFuZCBgdWlTdGF0ZWBcbiAgICBjb25zdCBleHRyYUluaXRpYWxTdGF0ZUtleXMgPSBPYmplY3Qua2V5cyhleHRyYVJlZHVjZXJzKTtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZUluaXRpYWxTdGF0ZSh0YXJnZXRJbml0aWFsU3RhdGUsIGluaVN0LCBleHRyYUluaXRpYWxTdGF0ZUtleXMpO1xuICAgIGNvbnN0IHRhcmdldFJlZHVjZXIgPSBwcm92aWRlSW5pdGlhbFN0YXRlKG1lcmdlZCwgZXh0cmFSZWR1Y2Vycyk7XG5cbiAgICByZXR1cm4gZGVjb3JhdGUodGFyZ2V0UmVkdWNlciwgbWVyZ2VkKTtcbiAgfTtcblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vKipcbiAqIEtlcGxlci5nbCByZWR1Y2VyIHRvIGJlIG1vdW50ZWQgdG8geW91ciBzdG9yZS4gWW91IGNhbiBtb3VudCBga2VwbGVyR2xSZWR1Y2VyYCBhdCBwcm9wZXJ0eSBga2VwbGVyR2xgLCBpZiB5b3UgY2hvb3NlXG4gKiB0byBtb3VudCBpdCBhdCBhbm90aGVyIGFkZHJlc3MgZS5nLiBgZm9vYCB5b3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgaXQgd2hlbiB5b3UgbW91bnQgYEtlcGxlckdsYCBjb21wb25lbnQgaW4geW91ciBhcHAgd2l0aCBgZ2V0U3RhdGU6IHN0YXRlID0+IHN0YXRlLmZvb2BcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyIGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogaW1wb3J0IHtjcmVhdGVTdG9yZSwgY29tYmluZVJlZHVjZXJzLCBhcHBseU1pZGRsZXdhcmUsIGNvbXBvc2V9IGZyb20gJ3JlZHV4JztcbiAqIGltcG9ydCB7dGFza01pZGRsZXdhcmV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFza3MnO1xuICpcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogICAvLyA8LS0gbW91bnQga2VwbGVyLmdsIHJlZHVjZXIgaW4geW91ciBhcHBcbiAqICAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqXG4gKiAgIC8vIFlvdXIgb3RoZXIgcmVkdWNlcnMgaGVyZVxuICogICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIC8vIHVzaW5nIGNyZWF0ZVN0b3JlXG4gKiBleHBvcnQgZGVmYXVsdCBjcmVhdGVTdG9yZShyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIGFwcGx5TWlkZGxld2FyZSh0YXNrTWlkZGxld2FyZSkpO1xuICovXG5jb25zdCBrZXBsZXJHbFJlZHVjZXIgPSBkZWNvcmF0ZShfa2VwbGVyR2xSZWR1Y2VyKTtcbmV4cG9ydCBkZWZhdWx0IGtlcGxlckdsUmVkdWNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFRQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFBeUQsU0FBQUcsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxD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