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

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.
@@ -488,4 +488,4 @@ var replaceDataInMapUpdater = exports.replaceDataInMapUpdater = function replace
488
488
  }));
489
489
  return nextState;
490
490
  };
491
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdWlTdGF0ZVVwZGF0ZXJzIiwicmVxdWlyZSIsIl92aXNTdGF0ZVVwZGF0ZXJzIiwiX21hcFN0YXRlVXBkYXRlcnMiLCJfbWFwU3R5bGVVcGRhdGVycyIsIl9wcm9jZXNzb3JzIiwiX2NvbXBvc2VySGVscGVycyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfY29uc3RhbnRzIiwiX2RlY2tnbExheWVycyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiY29tYmluZWRVcGRhdGVycyIsImlzVmFsaWRDb25maWciLCJleHBvcnRzIiwiY29uZmlnIiwiaXNQbGFpbk9iamVjdCIsInZlcnNpb24iLCJkZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyIsImNlbnRlck1hcCIsImtlZXBFeGlzdGluZ0NvbmZpZyIsImF1dG9DcmVhdGVMYXllcnMiLCJhdXRvQ3JlYXRlVG9vbHRpcHMiLCJhZGREYXRhVG9NYXBVcGRhdGVyIiwic3RhdGUiLCJfcmVmIiwiX2RhdGFzZXRzJCIsIl9kYXRhc2V0cyQyIiwiX2RhdGFzZXRzJDMiLCJwYXlsb2FkIiwiZGF0YXNldHMiLCJpbmZvIiwib3B0aW9ucyIsImlzUHJvZ3Jlc3NpdmVMb2FkaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwiaWQiLCJ2aXNTdGF0ZSIsImNvbXBvc2VfIiwicGlja18iLCJhcHBseV8iLCJ2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyIiwicGFyc2VkQ29uZmlnIiwic2NoZW1hIiwicGFyc2VTYXZlZENvbmZpZyIsIm9sZExheWVycyIsImxheWVycyIsImZpbHRlck5ld2x5QWRkZWRMYXllcnMiLCJubCIsImZpbmQiLCJvbCIsImZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkIiwiYm91bmRzIiwiZmluZE1hcEJvdW5kcyIsInVuZGVmaW5lZCIsImlmXyIsIkJvb2xlYW4iLCJzZXRNYXBJbmZvVXBkYXRlciIsIndpdGhfIiwiX3JlZjIiLCJzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIiLCJwYXlsb2FkXyIsInN0eWxlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVSZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIm1lcmdlXyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlYWRPbmx5IiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJhY3Rpb24iLCJwYXlsb2FkcyIsImZpbGVzVG9EYXRhUGF5bG9hZCIsInJlc3VsdCIsIm5leHRTdGF0ZSIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsInN0YXRlV2l0aERhdGEiLCJtYXAiLCJwIiwiYWRkRGF0YVRvTWFwQ29tcG9zZWQiLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJvdmVybGF5QmxlbmRpbmciLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInZhbHVlIiwidXBkYXRlRGFya0Jhc2VNYXBMYXllcnMiLCJkYXJrQmFzZU1hcEVuYWJsZWQiLCJsYXllcklkIiwibGF5ZXIiLCJ2aXNDb25maWdTZXR0aW5ncyIsInZpc0NvbmZpZyIsInVwZGF0ZUxheWVyQ29uZmlnIiwiY29tYmluZWRNYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfbWFwU3RhdGUkZ2xvYmUiLCJtYXBTdHlsZSIsImdldENvbG9yTW9kZSIsImtleSIsIl9tYXBTdHlsZSRtYXBTdHlsZXMkayIsIm1hcFN0eWxlcyIsImNvbG9yTW9kZSIsInByZXZDb2xvck1vZGUiLCJzdHlsZVR5cGUiLCJuZXh0Q29sb3JNb2RlIiwibWFwU3RhdGUiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIkRBUksiLCJzY3JlZW4iLCJMSUdIVCIsImRhcmtlbiIsImdsb2JlIiwiZW5hYmxlZCIsIk5PX01BUF9JRCIsImJhc2VtYXAiLCJsYWJlbHMiLCJhZG1pbkxpbmVzIiwid2F0ZXIiLCJzeW5jR2xvYmVDb25maWdDb2xvcnNUb1N0eWxlIiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlMiIsIm5leHRTdHlsZU9iaiIsIm5leHRHbG9iZUNvbmZpZyIsInN1cmZhY2VDb2xvciIsIkRFRkFVTFRfQkFTRU1BUF9DT0xPUiIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJ3YXRlckNvbG9yIiwiYmFzZW1hcFdhdGVyRmlsbENvbG9yIiwiYWRtaW5MaW5lc0NvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcENvbG9ycyIsImdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZSIsInN0eWxlIiwibGF5ZXJHcm91cHMiLCJjb21iaW5lZFNldE1hcFZpZXdNb2RlVXBkYXRlciIsIl9tYXBTdGF0ZSRnbG9iZTMiLCJzZXRNYXBWaWV3TW9kZVVwZGF0ZXIiLCJjb21iaW5lZExheWVyVHlwZUNoYW5nZVVwZGF0ZXIiLCJvbGRMYXllckluZGV4IiwiZmluZEluZGV4Iiwib2xkTGF5ZXIiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwibmV3TGF5ZXIiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJfbmV3U3RhdGUkdWlTdGF0ZSRtYXAiLCJuZXdTdGF0ZSIsInZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidWlTdGF0ZSIsInVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImlzU3BsaXQiLCJzcGxpdE1hcHMiLCJpc0xlZ2VuZEFjdGl2ZSIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwiYWN0aXZlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJwYW5lbElkIiwiaW5kZXgiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwiX25ld1VpU3RhdGUkbWFwQ29udHJvIiwibWFwU3BsaXRNb2RlIiwicHJldk1vZGUiLCJuZXdNYXBTdGF0ZSIsIm1hcFN0YXRlU2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsIm5ld1Zpc1N0YXRlIiwiTWFwU3BsaXRNb2RlIiwiU0lOR0xFX01BUCIsIkRVQUxfTUFQIiwiU1dJUEVfQ09NUEFSRSIsImNvbXB1dGVTcGxpdE1hcExheWVycyIsImR1cGxpY2F0ZSIsIm5ld1VpU3RhdGUiLCJkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMiLCJyZXBsYWNlRGF0YUluTWFwVXBkYXRlciIsIl9yZWYzIiwiZGF0YXNldFRvUmVwbGFjZUlkIiwiZGF0YXNldFRvVXNlIiwiX3BheWxvYWQkb3B0aW9ucyIsImFkZERhdGFUb01hcE9wdGlvbnMiLCJkYXRhSWRUb1VzZSIsInByZXBhcmVkU3RhdGUiLCJwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21iaW5lZC11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICB0b2dnbGVNb2RhbFVwZGF0ZXIsXG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIGFzIHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyB1aVN0YXRlUmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICB1cGRhdGVWaXNEYXRhVXBkYXRlciBhcyB2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLFxuICBzZXRNYXBJbmZvVXBkYXRlcixcbiAgbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcixcbiAgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyIGFzIHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZVxufSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciBhcyBtYXBTdGF0ZVNldE1hcFNwbGl0TW9kZVVwZGF0ZXIsXG4gIHNldE1hcFZpZXdNb2RlVXBkYXRlclxufSBmcm9tICcuL21hcC1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIHJlY2VpdmVNYXBDb25maWdVcGRhdGVyIGFzIHN0eWxlTWFwQ29uZmlnVXBkYXRlclxufSBmcm9tICcuL21hcC1zdHlsZS11cGRhdGVycyc7XG5pbXBvcnQge2ZpbGVzVG9EYXRhUGF5bG9hZH0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5Xywgd2l0aF8sIGlmXywgY29tcG9zZV8sIG1lcmdlXywgcGlja199IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge01hcFN0YXRlLCBVaVN0YXRlLCBBZGREYXRhVG9NYXBQYXlsb2FkLCBQYXJzZWRDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtQcm92aWRlclN0YXRlfSBmcm9tICcuL3Byb3ZpZGVyLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7XG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLFxuICBNYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvbixcbiAgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQsXG4gIE1hcFN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdCwgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7QkFTRV9NQVBfQ09MT1JfTU9ERVMsIE9WRVJMQVlfQkxFTkRJTkdTLCBOT19NQVBfSUQsIE1hcFNwbGl0TW9kZX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUsIERFRkFVTFRfQkFTRU1BUF9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgS2VwbGVyR2xTdGF0ZSA9IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgdWlTdGF0ZTogVWlTdGF0ZTtcbiAgcHJvdmlkZXJTdGF0ZTogUHJvdmlkZXJTdGF0ZTtcbn07XG5cbi8vIGNvbXBvc2UgYWN0aW9uIHRvIGFwcGx5IHJlc3VsdCBtdWx0aXBsZSByZWR1Y2Vycywgd2l0aCB0aGUgb3V0cHV0IG9mIG9uZVxuXG4vKipcbiAqIFNvbWUgYWN0aW9ucyB3aWxsIGFmZmVjdCB0aGUgZW50aXJlIGtlcGxlci5sZyBpbnN0YW5jZSBzdGF0ZS5cbiAqIFRoZSB1cGRhdGVycyBmb3IgdGhlc2UgYWN0aW9ucyBpcyBleHBvcnRlZCBhcyBgY29tYmluZWRVcGRhdGVyc2AuIFRoZXNlIHVwZGF0ZXIgdGFrZSB0aGUgZW50aXJlIGluc3RhbmNlIHN0YXRlXG4gKiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7Y29tYmluZWRVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZSwgcGFkZGluZzoge2xlZnQ6IDMwMH19YFxuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5jb25maWddIG1hcCBjb25maWdcbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQuaW5mb10gbWFwIGluZm8gY29udGFpbnMgdGl0bGUgYW5kIGRlc2NyaXB0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEYXRhc2V0XG4gKiBAcHJvcGVydHkgaW5mbyAtaW5mbyBvZiBhIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuICogQHByb3BlcnR5IGluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBkYXRhIC0gKioqcmVxdWlyZWQqKiBUaGUgZGF0YSBvYmplY3QsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCAyIHByb3BlcnRpZXMgYGZpZWxkc2AgYW5kIGByb3dzYFxuICogQHByb3BlcnR5IGRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMubmFtZSAtICoqKnJlcXVpcmVkKiogTmFtZSBvZiB0aGUgZmllbGQsXG4gKiBAcHJvcGVydHkgZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICB7cGF5bG9hZH06IHtwYXlsb2FkOiBBZGREYXRhVG9NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0cywgY29uZmlnLCBpbmZvfSA9IHBheWxvYWQ7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAuLi5kZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyxcbiAgICAuLi5wYXlsb2FkLm9wdGlvbnNcbiAgfTtcblxuICAvLyBjaGVjayBpZiBwcm9ncmVzc2l2ZSBsb2FkaW5nIGRhdGFzZXQgYnkgYmF0Y2hlcywgYW5kIHVwZGF0ZSB2aXNTdGF0ZSBkaXJlY3RseVxuICBjb25zdCBpc1Byb2dyZXNzaXZlTG9hZGluZyA9XG4gICAgQXJyYXkuaXNBcnJheShkYXRhc2V0cykgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5mb3JtYXQgPT09ICdhcnJvdycgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5pZCAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkIGluIHN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzO1xuICBpZiAoaXNQcm9ncmVzc2l2ZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICBdKShzdGF0ZSk7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGxldCBwYXJzZWRDb25maWc6IFBhcnNlZENvbmZpZyA9IGNvbmZpZztcblxuICBpZiAoaXNWYWxpZENvbmZpZyhjb25maWcpKSB7XG4gICAgLy8gaWYgcGFzc2VkIGluIHNhdmVkIGNvbmZpZ1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXJzZWRDb25maWcgPSBzdGF0ZS52aXNTdGF0ZS5zY2hlbWEucGFyc2VTYXZlZENvbmZpZyhjb25maWcpO1xuICB9XG4gIGNvbnN0IG9sZExheWVycyA9IHN0YXRlLnZpc1N0YXRlLmxheWVycztcbiAgY29uc3QgZmlsdGVyTmV3bHlBZGRlZExheWVycyA9IChsYXllcnM6IExheWVyW10pID0+XG4gICAgbGF5ZXJzLmZpbHRlcihubCA9PiAhb2xkTGF5ZXJzLmZpbmQob2wgPT4gb2wgPT09IG5sKSk7XG5cbiAgLy8gUmV0dXJucyB1bmRlZmluZWQgaWYgbm90IGZvdW5kLCB0byBtYWtlIHR5cGVzY3JpcHQgaGFwcHlcbiAgY29uc3QgZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQgPSAobGF5ZXJzOiBMYXllcltdKSA9PiB7XG4gICAgY29uc3QgYm91bmRzID0gb3B0aW9ucy5jZW50ZXJNYXAgJiYgZmluZE1hcEJvdW5kcyhsYXllcnMpO1xuICAgIHJldHVybiBib3VuZHMgPyBib3VuZHMgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfPEtlcGxlckdsU3RhdGU+KFtcbiAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgIC8vIHRoaXMgcGFydCBjYW4gYmUgYXN5bmNcbiAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZ1xuICAgICAgfSlcbiAgICApLFxuXG4gICAgaWZfKEJvb2xlYW4oaW5mbyksIHBpY2tfKCd2aXNTdGF0ZScpKGFwcGx5XzxWaXNTdGF0ZSwgYW55PihzZXRNYXBJbmZvVXBkYXRlciwge2luZm99KSkpLFxuICAgIC8vIE5vdGUgdGhhdCBmaXQgYm91bmRzIGhlcmUgd29uJ3QgYmUgY2FsbGVkIGluIGNhc2UgZGF0YXNldHMgYXJlIGNyZWF0ZWQgaW4gVGFza3MuXG4gICAgLy8gQSBzZXBhcmF0ZSBUYXNrIHRvIHVwZGF0ZSBib3VuZHMgaXMgY3JlYXRlZCBvbmNlIHRoZSBkYXRhc2V0cyBhcmUgcmVhZHkuXG4gICAgd2l0aF8oKHt2aXNTdGF0ZX0pID0+XG4gICAgICBwaWNrXygnbWFwU3RhdGUnKShcbiAgICAgICAgYXBwbHlfKFxuICAgICAgICAgIHN0YXRlTWFwQ29uZmlnVXBkYXRlcixcbiAgICAgICAgICBwYXlsb2FkXyh7XG4gICAgICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZyxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBib3VuZHM6IGZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkKGZpbHRlck5ld2x5QWRkZWRMYXllcnModmlzU3RhdGUubGF5ZXJzKSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBwaWNrXygnbWFwU3R5bGUnKShhcHBseV8oc3R5bGVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSkpLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoXG4gICAgICBhcHBseV8odWlTdGF0ZVJlY2VpdmVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSlcbiAgICApLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcblxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgbWVyZ2VfKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3JlYWRPbmx5JylcbiAgICAgICAgICA/IHtyZWFkT25seTogb3B0aW9ucy5yZWFkT25seX1cbiAgICAgICAgICA6IHt9XG4gICAgICApXG4gICAgKVxuICBdKShzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgLy8gc3RpbGwgbW9yZSB0byBsb2FkXG4gIGNvbnN0IHBheWxvYWRzID0gZmlsZXNUb0RhdGFQYXlsb2FkKGFjdGlvbi5yZXN1bHQpO1xuICBjb25zdCBuZXh0U3RhdGUgPSBjb21wb3NlXyhbXG4gICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICBtZXJnZV8oe1xuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9XG4gICAgICB9KVxuICAgIClcbiAgXSkoc3RhdGUpO1xuICAvLyBtYWtlIG11bHRpcGxlIGFkZCBkYXRhIHRvIG1hcCBjYWxsc1xuICBjb25zdCBzdGF0ZVdpdGhEYXRhID0gY29tcG9zZV8ocGF5bG9hZHMubWFwKHAgPT4gYXBwbHlfKGFkZERhdGFUb01hcFVwZGF0ZXIsIHBheWxvYWRfKHApKSkpKFxuICAgIG5leHRTdGF0ZVxuICApO1xuICByZXR1cm4gc3RhdGVXaXRoRGF0YSBhcyBLZXBsZXJHbFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcENvbXBvc2VkID0gYWRkRGF0YVRvTWFwVXBkYXRlcjtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIHZpc1N0YXRlLFxuICogYnV0IG9ubHkgaWYgaXQncyBub3QgY3VycmVudGx5IGluIHRoZSBgbm9ybWFsYCBtb2RlLlxuICovXG5jb25zdCB1cGRhdGVPdmVybGF5QmxlbmRpbmcgPSBvdmVybGF5QmxlbmRpbmcgPT4gdmlzU3RhdGUgPT4ge1xuICBpZiAodmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nICE9PSBPVkVSTEFZX0JMRU5ESU5HUy5ub3JtYWwudmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzU3RhdGUsXG4gICAgICBvdmVybGF5QmxlbmRpbmdcbiAgICB9O1xuICB9XG4gIHJldHVybiB2aXNTdGF0ZTtcbn07XG5cbi8qKlxuICogSGVscGVyIHdoaWNoIHVwZGF0ZXMgYGRhcmtCYXNlTWFwRW5hYmxlZGAgaW4gYWxsIHRoZSBsYXllcnMgaW4gdmlzU3RhdGUgd2hpY2hcbiAqIGhhdmUgdGhpcyBjb25maWcgc2V0dGluZyAob3IgaW4gb25lIHNwZWNpZmljIGxheWVyIGlmIHRoZSBgbGF5ZXJJZGAgcGFyYW0gaXMgcHJvdmlkZWQpLlxuICovXG5jb25zdCB1cGRhdGVEYXJrQmFzZU1hcExheWVycyA9XG4gIChkYXJrQmFzZU1hcEVuYWJsZWQ6IGJvb2xlYW4sIGxheWVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PlxuICB2aXNTdGF0ZSA9PiAoe1xuICAgIC4uLnZpc1N0YXRlLFxuICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVySWQgfHwgbGF5ZXIuaWQgPT09IGxheWVySWQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgICAgICAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgICAgIHZpc0NvbmZpZzogey4uLnZpc0NvbmZpZywgZGFya0Jhc2VNYXBFbmFibGVkfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSlcbiAgfSk7XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIG1hcCBzdHlsZSBieSBjYWxsaW5nIG1hcFN0eWxlQ2hhbmdlVXBkYXRlciBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGl0IGRvZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgIDEuIFVwZGF0ZSBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZVxuICogICAgICBiYXNlIG1hcCwgYnV0IG9ubHkgaWYgaXQncyBub3QgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKlxuICogICAyLiBVcGRhdGUgYWxsIHRoZSBsYXllcnMgd2hpY2ggaGF2ZSB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnIHNldHRpbmdcbiAqICAgICAgYWRqdXN0aW5nIGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge3BheWxvYWR9ID0gYWN0aW9uO1xuICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gIGNvbnN0IGdldENvbG9yTW9kZSA9IGtleSA9PiBtYXBTdHlsZS5tYXBTdHlsZXNba2V5XT8uY29sb3JNb2RlO1xuICBjb25zdCBwcmV2Q29sb3JNb2RlID0gZ2V0Q29sb3JNb2RlKG1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIGNvbnN0IG5leHRDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUocGF5bG9hZC5zdHlsZVR5cGUpO1xuICBsZXQge3Zpc1N0YXRlLCBtYXBTdGF0ZX0gPSBzdGF0ZTtcbiAgaWYgKG5leHRDb2xvck1vZGUgIT09IHByZXZDb2xvck1vZGUpIHtcbiAgICBzd2l0Y2ggKG5leHRDb2xvck1vZGUpIHtcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSzpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLnNjcmVlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnModHJ1ZSlcbiAgICAgICAgXSkodmlzU3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQ6XG4gICAgICAgIHZpc1N0YXRlID0gY29tcG9zZV8oW1xuICAgICAgICAgIHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhPVkVSTEFZX0JMRU5ESU5HUy5kYXJrZW4udmFsdWUpLFxuICAgICAgICAgIHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKGZhbHNlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgZ2xvYmUgY29uZmlnIGNvbG9ycyB3aGVuIHN0eWxlIGNoYW5nZXMgYW5kIGdsb2JlIGlzIGVuYWJsZWRcbiAgaWYgKG1hcFN0YXRlLmdsb2JlPy5lbmFibGVkKSB7XG4gICAgLy8gU3dpdGNoaW5nIGZyb20gXCJObyBCYXNlbWFwXCIgdG8gYSBiYXNlbWFwIC0gcmVzdG9yZSBiYXNlbWFwIHN1Yi10b2dnbGVzXG4gICAgaWYgKHBheWxvYWQuc3R5bGVUeXBlICE9PSBOT19NQVBfSUQgJiYgbWFwU3R5bGUuc3R5bGVUeXBlID09PSBOT19NQVBfSUQpIHtcbiAgICAgIG1hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHtcbiAgICAgICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIC4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZyxcbiAgICAgICAgICAgIGJhc2VtYXA6IHRydWUsXG4gICAgICAgICAgICBsYWJlbHM6IHRydWUsXG4gICAgICAgICAgICBhZG1pbkxpbmVzOiB0cnVlLFxuICAgICAgICAgICAgd2F0ZXI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgbWFwU3R5bGUsIHBheWxvYWQuc3R5bGVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGUsXG4gICAgbWFwU3RhdGUsXG4gICAgbWFwU3R5bGU6IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihtYXBTdHlsZSwge3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pXG4gIH07XG59O1xuXG4vKipcbiAqIERlcml2ZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyAoc3VyZmFjZSAvIHdhdGVyIC8gYWRtaW4gbGluZXMpIGZyb20gYSBtYXAgc3R5bGUgYW5kXG4gKiByZXR1cm4gYW4gdXBkYXRlZCBtYXBTdGF0ZSB3aXRoIHRob3NlIGNvbG9ycyB3cml0dGVuIGludG8gYGdsb2JlLmNvbmZpZ2AuIFVzZWQgYm90aFxuICogd2hlbiB0aGUgYmFzZSBtYXAgc3R5bGUgY2hhbmdlcyBhbmQgd2hlbiBlbnRlcmluZyBnbG9iZSBtb2RlLCBzbyB0aGUgZ2xvYmUgYWx3YXlzXG4gKiByZWZsZWN0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGJhc2VtYXAgaW5zdGVhZCBvZiB0aGUgc3RhdGljIERFRkFVTFRfR0xPQkVfQ09ORklHLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShcbiAgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICBtYXBTdHlsZTogTWFwU3R5bGUsXG4gIHN0eWxlVHlwZTogc3RyaW5nXG4pOiBNYXBTdGF0ZSB7XG4gIGlmICghbWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQpIHtcbiAgICByZXR1cm4gbWFwU3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXh0U3R5bGVPYmogPSBtYXBTdHlsZS5tYXBTdHlsZXNbc3R5bGVUeXBlXTtcbiAgY29uc3QgbmV4dEdsb2JlQ29uZmlnID0gey4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZ307XG5cbiAgaWYgKHN0eWxlVHlwZSA9PT0gTk9fTUFQX0lEKSB7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmJhc2VtYXAgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcubGFiZWxzID0gZmFsc2U7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmFkbWluTGluZXMgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcud2F0ZXIgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcuc3VyZmFjZUNvbG9yID0gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yO1xuICAgIG5leHRHbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJhc2VtYXBDb2xvcnMgPSBuZXh0U3R5bGVPYmpcbiAgICAgID8gZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlKHN0eWxlVHlwZSwge1xuICAgICAgICAgIHN0eWxlOiBuZXh0U3R5bGVPYmouc3R5bGUsXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IG5leHRTdHlsZU9iai5sYXllckdyb3Vwc1xuICAgICAgICB9KVxuICAgICAgOiAvLyBTdHlsZSBvYmplY3Qgbm90IHlldCBsb2FkZWQgLSB1c2Uga25vd24gcHJlc2V0cyBieSBzdHlsZSB0eXBlXG4gICAgICAgIGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZShzdHlsZVR5cGUpO1xuICAgIG5leHRHbG9iZUNvbmZpZy5zdXJmYWNlQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhc2VtYXBXYXRlckZpbGxDb2xvcjtcbiAgICBuZXh0R2xvYmVDb25maWcuYWRtaW5MaW5lc0NvbG9yID0gYmFzZW1hcENvbG9ycy5iYXNlbWFwQWRtaW5MaW5lQ29sb3I7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0YXRlLFxuICAgIGdsb2JlOiB7XG4gICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgIGNvbmZpZzogbmV4dEdsb2JlQ29uZmlnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBzd2l0Y2hlcyB0aGUgbWFwIHZpZXcgbW9kZSAoMkQgLyAzRCAvIEdsb2JlKS4gUnVucyB0aGUgYmFzZSBtYXAtc3RhdGVcbiAqIHVwZGF0ZXIgYW5kLCB3aGVuIGVudGVyaW5nIGdsb2JlIG1vZGUsIHN5bmNzIHRoZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyB0byB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAgc3R5bGUgc28gdGhlIGdsb2JlIGRvZXNuJ3Qgc2hvdyBzdGFsZSBkZWZhdWx0IGNvbG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkU2V0TWFwVmlld01vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwVmlld01vZGVVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgbGV0IG1hcFN0YXRlID0gc2V0TWFwVmlld01vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGlmIChtYXBTdGF0ZS5nbG9iZT8uZW5hYmxlZCkge1xuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgc3RhdGUubWFwU3R5bGUsIHN0YXRlLm1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBjaGFuZ2VzIHRoZSBsYXllciB0eXBlIGJ5IGNhbGxpbmcgYGxheWVyVHlwZUNoYW5nZVVwZGF0ZXJgIG9uIHZpc1N0YXRlLlxuICogSW4gYWRkaXRpb24gdG8gdGhhdCwgaWYgdGhlIG5ldyBsYXllciB0eXBlIGhhcyB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnXG4gKiBzZXR0aW5nLCB3ZSBhZGp1c3QgaXQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xvck1vZGUgb2YgdGhlIGJhc2UgbWFwLnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGxldCB7dmlzU3RhdGV9ID0gc3RhdGU7XG4gIGNvbnN0IG9sZExheWVySW5kZXggPSB2aXNTdGF0ZS5sYXllcnMuZmluZEluZGV4KGxheWVyID0+IGxheWVyID09PSBhY3Rpb24ub2xkTGF5ZXIpO1xuICB2aXNTdGF0ZSA9IGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIodmlzU3RhdGUsIGFjdGlvbik7XG4gIGNvbnN0IG5ld0xheWVyID0gdmlzU3RhdGUubGF5ZXJzW29sZExheWVySW5kZXhdO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld0xheWVyPy52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgY29uc3Qge21hcFN0eWxlfSA9IHN0YXRlO1xuICAgIGNvbnN0IHtjb2xvck1vZGV9ID0gbWFwU3R5bGUubWFwU3R5bGVzW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgY29uc3Qge2RhcmtCYXNlTWFwRW5hYmxlZH0gPSBuZXdMYXllci5jb25maWcudmlzQ29uZmlnO1xuICAgIHN3aXRjaCAoY29sb3JNb2RlKSB7XG4gICAgICBjYXNlIEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUks6XG4gICAgICAgIGlmICghZGFya0Jhc2VNYXBFbmFibGVkKSB7XG4gICAgICAgICAgdmlzU3RhdGUgPSB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlLCBuZXdMYXllci5pZCkodmlzU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgaWYgKGRhcmtCYXNlTWFwRW5hYmxlZCkge1xuICAgICAgICAgIHZpc1N0YXRlID0gdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UsIG5ld0xheWVyLmlkKSh2aXNTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIE1ha2UgbWFwTGVnZW5kIGFjdGl2ZSB3aGVuIHRvZ2dsZVNwbGl0TWFwIGFjdGlvbiBpcyBjYWxsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGU6IHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnZpc1N0YXRlLCBhY3Rpb24pLFxuICAgIHVpU3RhdGU6IHVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUudWlTdGF0ZSksXG4gICAgbWFwU3RhdGU6IG1hcFN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLm1hcFN0YXRlKVxuICB9O1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdTdGF0ZS52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1N0YXRlLnVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdTdGF0ZS51aVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3U3RhdGUudWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogYWN0aW9uLnBheWxvYWR9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgc3BsaXQgbW9kZSB1cGRhdGVyIC0gY29vcmRpbmF0ZXMgc3RhdGUgY2hhbmdlcyBhY3Jvc3MgdmlzU3RhdGUsIG1hcFN0YXRlLCBhbmQgdWlTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwU3BsaXRNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBwcmV2TW9kZSA9IHN0YXRlLm1hcFN0YXRlLm1hcFNwbGl0TW9kZTtcblxuICBpZiAobWFwU3BsaXRNb2RlID09PSBwcmV2TW9kZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld01hcFN0YXRlID0gbWFwU3RhdGVTZXRNYXBTcGxpdE1vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGxldCBuZXdWaXNTdGF0ZSA9IHsuLi5zdGF0ZS52aXNTdGF0ZX07XG5cbiAgc3dpdGNoIChtYXBTcGxpdE1vZGUpIHtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQOlxuICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld1Zpc1N0YXRlLFxuICAgICAgICBzcGxpdE1hcHM6IFtdXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuRFVBTF9NQVA6XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIGlmIChwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVApIHtcbiAgICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgICAgLi4ubmV3VmlzU3RhdGUsXG4gICAgICAgICAgc3BsaXRNYXBzOiBjb21wdXRlU3BsaXRNYXBMYXllcnMobmV3VmlzU3RhdGUubGF5ZXJzLCB7XG4gICAgICAgICAgICBkdXBsaWNhdGU6IG1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkVcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgbGV0IG5ld1VpU3RhdGUgPSB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnVpU3RhdGUpO1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdWaXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1VpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdVaVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3VWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogMH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgIHZpc1N0YXRlOiBuZXdWaXNTdGF0ZSxcbiAgICB1aVN0YXRlOiBuZXdVaVN0YXRlXG4gIH07XG59O1xuXG5jb25zdCBkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGtlZXBFeGlzdGluZ0NvbmZpZzogdHJ1ZSxcbiAgY2VudGVyTWFwOiB0cnVlLFxuICBhdXRvQ3JlYXRlTGF5ZXJzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBVcGRhdGVyIHJlcGxhY2UgYSBkYXRhc2V0IGluIHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCByZXBsYWNlRGF0YUluTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0VG9SZXBsYWNlSWQsIGRhdGFzZXRUb1VzZSwgb3B0aW9ucyA9IHt9fSA9IHBheWxvYWQ7XG4gIGNvbnN0IGFkZERhdGFUb01hcE9wdGlvbnMgPSB7Li4uZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zLCAuLi5vcHRpb25zfTtcblxuICAvLyBjaGVjayBpZiBkYXRhc2V0IGlzIHRoZXJlXG4gIGlmICghc3RhdGUudmlzU3RhdGUuZGF0YXNldHNbZGF0YXNldFRvUmVwbGFjZUlkXSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICAvLyBkYXRhc2V0VG9Vc2UgaXMgUHJvdG9EYXRhc2V0XG4gIGNvbnN0IGRhdGFJZFRvVXNlID0gZGF0YXNldFRvVXNlLmluZm8uaWQ7XG4gIGlmICghZGF0YUlkVG9Vc2UpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLy8gcmVtb3ZlIGRhdGFzZXQgYW5kIHB1dCBkZXBlbmRlbmNpZXMgaW4gdG9CZU1lcmdlZFxuICBjb25zdCBwcmVwYXJlZFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlOiBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZShzdGF0ZS52aXNTdGF0ZSwgZGF0YXNldFRvUmVwbGFjZUlkLCBkYXRhSWRUb1VzZSlcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSBhZGREYXRhVG9NYXBVcGRhdGVyKFxuICAgIHByZXBhcmVkU3RhdGUsXG4gICAgcGF5bG9hZF8oe1xuICAgICAgZGF0YXNldHM6IGRhdGFzZXRUb1VzZSxcbiAgICAgIC8vIHNob3VsZCB6b29tIHRvIG5ldyBkYXRhc2V0XG4gICAgICBvcHRpb25zOiBhZGREYXRhVG9NYXBPcHRpb25zXG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gbmV4dFN0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLGdCQUFBLEdB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
491
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdWlTdGF0ZVVwZGF0ZXJzIiwicmVxdWlyZSIsIl92aXNTdGF0ZVVwZGF0ZXJzIiwiX21hcFN0YXRlVXBkYXRlcnMiLCJfbWFwU3R5bGVVcGRhdGVycyIsIl9wcm9jZXNzb3JzIiwiX2NvbXBvc2VySGVscGVycyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfY29uc3RhbnRzIiwiX2RlY2tnbExheWVycyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiY29tYmluZWRVcGRhdGVycyIsImlzVmFsaWRDb25maWciLCJleHBvcnRzIiwiY29uZmlnIiwiaXNQbGFpbk9iamVjdCIsInZlcnNpb24iLCJkZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyIsImNlbnRlck1hcCIsImtlZXBFeGlzdGluZ0NvbmZpZyIsImF1dG9DcmVhdGVMYXllcnMiLCJhdXRvQ3JlYXRlVG9vbHRpcHMiLCJhZGREYXRhVG9NYXBVcGRhdGVyIiwic3RhdGUiLCJfcmVmIiwiX2RhdGFzZXRzJCIsIl9kYXRhc2V0cyQyIiwiX2RhdGFzZXRzJDMiLCJwYXlsb2FkIiwiZGF0YXNldHMiLCJpbmZvIiwib3B0aW9ucyIsImlzUHJvZ3Jlc3NpdmVMb2FkaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwiaWQiLCJ2aXNTdGF0ZSIsImNvbXBvc2VfIiwicGlja18iLCJhcHBseV8iLCJ2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyIiwicGFyc2VkQ29uZmlnIiwic2NoZW1hIiwicGFyc2VTYXZlZENvbmZpZyIsIm9sZExheWVycyIsImxheWVycyIsImZpbHRlck5ld2x5QWRkZWRMYXllcnMiLCJubCIsImZpbmQiLCJvbCIsImZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkIiwiYm91bmRzIiwiZmluZE1hcEJvdW5kcyIsInVuZGVmaW5lZCIsImlmXyIsIkJvb2xlYW4iLCJzZXRNYXBJbmZvVXBkYXRlciIsIndpdGhfIiwiX3JlZjIiLCJzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIiLCJwYXlsb2FkXyIsInN0eWxlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVSZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIm1lcmdlXyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlYWRPbmx5IiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJhY3Rpb24iLCJwYXlsb2FkcyIsImZpbGVzVG9EYXRhUGF5bG9hZCIsInJlc3VsdCIsIm5leHRTdGF0ZSIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsInN0YXRlV2l0aERhdGEiLCJtYXAiLCJwIiwiYWRkRGF0YVRvTWFwQ29tcG9zZWQiLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJvdmVybGF5QmxlbmRpbmciLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInZhbHVlIiwidXBkYXRlRGFya0Jhc2VNYXBMYXllcnMiLCJkYXJrQmFzZU1hcEVuYWJsZWQiLCJsYXllcklkIiwibGF5ZXIiLCJ2aXNDb25maWdTZXR0aW5ncyIsInZpc0NvbmZpZyIsInVwZGF0ZUxheWVyQ29uZmlnIiwiY29tYmluZWRNYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfbWFwU3RhdGUkZ2xvYmUiLCJtYXBTdHlsZSIsImdldENvbG9yTW9kZSIsImtleSIsIl9tYXBTdHlsZSRtYXBTdHlsZXMkayIsIm1hcFN0eWxlcyIsImNvbG9yTW9kZSIsInByZXZDb2xvck1vZGUiLCJzdHlsZVR5cGUiLCJuZXh0Q29sb3JNb2RlIiwibWFwU3RhdGUiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIkRBUksiLCJzY3JlZW4iLCJMSUdIVCIsImRhcmtlbiIsImdsb2JlIiwiZW5hYmxlZCIsIk5PX01BUF9JRCIsImJhc2VtYXAiLCJsYWJlbHMiLCJhZG1pbkxpbmVzIiwid2F0ZXIiLCJzeW5jR2xvYmVDb25maWdDb2xvcnNUb1N0eWxlIiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlMiIsIm5leHRTdHlsZU9iaiIsIm5leHRHbG9iZUNvbmZpZyIsInN1cmZhY2VDb2xvciIsIkRFRkFVTFRfQkFTRU1BUF9DT0xPUiIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJ3YXRlckNvbG9yIiwiYmFzZW1hcFdhdGVyRmlsbENvbG9yIiwiYWRtaW5MaW5lc0NvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcENvbG9ycyIsImdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZSIsInN0eWxlIiwibGF5ZXJHcm91cHMiLCJjb21iaW5lZFNldE1hcFZpZXdNb2RlVXBkYXRlciIsIl9tYXBTdGF0ZSRnbG9iZTMiLCJzZXRNYXBWaWV3TW9kZVVwZGF0ZXIiLCJjb21iaW5lZExheWVyVHlwZUNoYW5nZVVwZGF0ZXIiLCJvbGRMYXllckluZGV4IiwiZmluZEluZGV4Iiwib2xkTGF5ZXIiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwibmV3TGF5ZXIiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJfbmV3U3RhdGUkdWlTdGF0ZSRtYXAiLCJuZXdTdGF0ZSIsInZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidWlTdGF0ZSIsInVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImlzU3BsaXQiLCJzcGxpdE1hcHMiLCJpc0xlZ2VuZEFjdGl2ZSIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwiYWN0aXZlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJwYW5lbElkIiwiaW5kZXgiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwiX25ld1VpU3RhdGUkbWFwQ29udHJvIiwibWFwU3BsaXRNb2RlIiwicHJldk1vZGUiLCJuZXdNYXBTdGF0ZSIsIm1hcFN0YXRlU2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsIm5ld1Zpc1N0YXRlIiwiTWFwU3BsaXRNb2RlIiwiU0lOR0xFX01BUCIsIkRVQUxfTUFQIiwiU1dJUEVfQ09NUEFSRSIsImNvbXB1dGVTcGxpdE1hcExheWVycyIsImR1cGxpY2F0ZSIsIm5ld1VpU3RhdGUiLCJkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMiLCJyZXBsYWNlRGF0YUluTWFwVXBkYXRlciIsIl9yZWYzIiwiZGF0YXNldFRvUmVwbGFjZUlkIiwiZGF0YXNldFRvVXNlIiwiX3BheWxvYWQkb3B0aW9ucyIsImFkZERhdGFUb01hcE9wdGlvbnMiLCJkYXRhSWRUb1VzZSIsInByZXBhcmVkU3RhdGUiLCJwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21iaW5lZC11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICB0b2dnbGVNb2RhbFVwZGF0ZXIsXG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIGFzIHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyB1aVN0YXRlUmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICB1cGRhdGVWaXNEYXRhVXBkYXRlciBhcyB2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLFxuICBzZXRNYXBJbmZvVXBkYXRlcixcbiAgbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcixcbiAgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyIGFzIHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZVxufSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciBhcyBtYXBTdGF0ZVNldE1hcFNwbGl0TW9kZVVwZGF0ZXIsXG4gIHNldE1hcFZpZXdNb2RlVXBkYXRlclxufSBmcm9tICcuL21hcC1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIHJlY2VpdmVNYXBDb25maWdVcGRhdGVyIGFzIHN0eWxlTWFwQ29uZmlnVXBkYXRlclxufSBmcm9tICcuL21hcC1zdHlsZS11cGRhdGVycyc7XG5pbXBvcnQge2ZpbGVzVG9EYXRhUGF5bG9hZH0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5Xywgd2l0aF8sIGlmXywgY29tcG9zZV8sIG1lcmdlXywgcGlja199IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge01hcFN0YXRlLCBVaVN0YXRlLCBBZGREYXRhVG9NYXBQYXlsb2FkLCBQYXJzZWRDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtQcm92aWRlclN0YXRlfSBmcm9tICcuL3Byb3ZpZGVyLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7XG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLFxuICBNYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvbixcbiAgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQsXG4gIE1hcFN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdCwgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7XG4gIEJBU0VfTUFQX0NPTE9SX01PREVTLFxuICBPVkVSTEFZX0JMRU5ESU5HUyxcbiAgTk9fTUFQX0lELFxuICBNYXBTcGxpdE1vZGVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUsIERFRkFVTFRfQkFTRU1BUF9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgS2VwbGVyR2xTdGF0ZSA9IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgdWlTdGF0ZTogVWlTdGF0ZTtcbiAgcHJvdmlkZXJTdGF0ZTogUHJvdmlkZXJTdGF0ZTtcbn07XG5cbi8vIGNvbXBvc2UgYWN0aW9uIHRvIGFwcGx5IHJlc3VsdCBtdWx0aXBsZSByZWR1Y2Vycywgd2l0aCB0aGUgb3V0cHV0IG9mIG9uZVxuXG4vKipcbiAqIFNvbWUgYWN0aW9ucyB3aWxsIGFmZmVjdCB0aGUgZW50aXJlIGtlcGxlci5sZyBpbnN0YW5jZSBzdGF0ZS5cbiAqIFRoZSB1cGRhdGVycyBmb3IgdGhlc2UgYWN0aW9ucyBpcyBleHBvcnRlZCBhcyBgY29tYmluZWRVcGRhdGVyc2AuIFRoZXNlIHVwZGF0ZXIgdGFrZSB0aGUgZW50aXJlIGluc3RhbmNlIHN0YXRlXG4gKiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7Y29tYmluZWRVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZSwgcGFkZGluZzoge2xlZnQ6IDMwMH19YFxuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5jb25maWddIG1hcCBjb25maWdcbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQuaW5mb10gbWFwIGluZm8gY29udGFpbnMgdGl0bGUgYW5kIGRlc2NyaXB0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEYXRhc2V0XG4gKiBAcHJvcGVydHkgaW5mbyAtaW5mbyBvZiBhIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuICogQHByb3BlcnR5IGluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBkYXRhIC0gKioqcmVxdWlyZWQqKiBUaGUgZGF0YSBvYmplY3QsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCAyIHByb3BlcnRpZXMgYGZpZWxkc2AgYW5kIGByb3dzYFxuICogQHByb3BlcnR5IGRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMubmFtZSAtICoqKnJlcXVpcmVkKiogTmFtZSBvZiB0aGUgZmllbGQsXG4gKiBAcHJvcGVydHkgZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICB7cGF5bG9hZH06IHtwYXlsb2FkOiBBZGREYXRhVG9NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0cywgY29uZmlnLCBpbmZvfSA9IHBheWxvYWQ7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAuLi5kZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyxcbiAgICAuLi5wYXlsb2FkLm9wdGlvbnNcbiAgfTtcblxuICAvLyBjaGVjayBpZiBwcm9ncmVzc2l2ZSBsb2FkaW5nIGRhdGFzZXQgYnkgYmF0Y2hlcywgYW5kIHVwZGF0ZSB2aXNTdGF0ZSBkaXJlY3RseVxuICBjb25zdCBpc1Byb2dyZXNzaXZlTG9hZGluZyA9XG4gICAgQXJyYXkuaXNBcnJheShkYXRhc2V0cykgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5mb3JtYXQgPT09ICdhcnJvdycgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5pZCAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkIGluIHN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzO1xuICBpZiAoaXNQcm9ncmVzc2l2ZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICBdKShzdGF0ZSk7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGxldCBwYXJzZWRDb25maWc6IFBhcnNlZENvbmZpZyA9IGNvbmZpZztcblxuICBpZiAoaXNWYWxpZENvbmZpZyhjb25maWcpKSB7XG4gICAgLy8gaWYgcGFzc2VkIGluIHNhdmVkIGNvbmZpZ1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXJzZWRDb25maWcgPSBzdGF0ZS52aXNTdGF0ZS5zY2hlbWEucGFyc2VTYXZlZENvbmZpZyhjb25maWcpO1xuICB9XG4gIGNvbnN0IG9sZExheWVycyA9IHN0YXRlLnZpc1N0YXRlLmxheWVycztcbiAgY29uc3QgZmlsdGVyTmV3bHlBZGRlZExheWVycyA9IChsYXllcnM6IExheWVyW10pID0+XG4gICAgbGF5ZXJzLmZpbHRlcihubCA9PiAhb2xkTGF5ZXJzLmZpbmQob2wgPT4gb2wgPT09IG5sKSk7XG5cbiAgLy8gUmV0dXJucyB1bmRlZmluZWQgaWYgbm90IGZvdW5kLCB0byBtYWtlIHR5cGVzY3JpcHQgaGFwcHlcbiAgY29uc3QgZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQgPSAobGF5ZXJzOiBMYXllcltdKSA9PiB7XG4gICAgY29uc3QgYm91bmRzID0gb3B0aW9ucy5jZW50ZXJNYXAgJiYgZmluZE1hcEJvdW5kcyhsYXllcnMpO1xuICAgIHJldHVybiBib3VuZHMgPyBib3VuZHMgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfPEtlcGxlckdsU3RhdGU+KFtcbiAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgIC8vIHRoaXMgcGFydCBjYW4gYmUgYXN5bmNcbiAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZ1xuICAgICAgfSlcbiAgICApLFxuXG4gICAgaWZfKEJvb2xlYW4oaW5mbyksIHBpY2tfKCd2aXNTdGF0ZScpKGFwcGx5XzxWaXNTdGF0ZSwgYW55PihzZXRNYXBJbmZvVXBkYXRlciwge2luZm99KSkpLFxuICAgIC8vIE5vdGUgdGhhdCBmaXQgYm91bmRzIGhlcmUgd29uJ3QgYmUgY2FsbGVkIGluIGNhc2UgZGF0YXNldHMgYXJlIGNyZWF0ZWQgaW4gVGFza3MuXG4gICAgLy8gQSBzZXBhcmF0ZSBUYXNrIHRvIHVwZGF0ZSBib3VuZHMgaXMgY3JlYXRlZCBvbmNlIHRoZSBkYXRhc2V0cyBhcmUgcmVhZHkuXG4gICAgd2l0aF8oKHt2aXNTdGF0ZX0pID0+XG4gICAgICBwaWNrXygnbWFwU3RhdGUnKShcbiAgICAgICAgYXBwbHlfKFxuICAgICAgICAgIHN0YXRlTWFwQ29uZmlnVXBkYXRlcixcbiAgICAgICAgICBwYXlsb2FkXyh7XG4gICAgICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZyxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBib3VuZHM6IGZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkKGZpbHRlck5ld2x5QWRkZWRMYXllcnModmlzU3RhdGUubGF5ZXJzKSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBwaWNrXygnbWFwU3R5bGUnKShhcHBseV8oc3R5bGVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSkpLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoXG4gICAgICBhcHBseV8odWlTdGF0ZVJlY2VpdmVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSlcbiAgICApLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcblxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgbWVyZ2VfKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3JlYWRPbmx5JylcbiAgICAgICAgICA/IHtyZWFkT25seTogb3B0aW9ucy5yZWFkT25seX1cbiAgICAgICAgICA6IHt9XG4gICAgICApXG4gICAgKVxuICBdKShzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgLy8gc3RpbGwgbW9yZSB0byBsb2FkXG4gIGNvbnN0IHBheWxvYWRzID0gZmlsZXNUb0RhdGFQYXlsb2FkKGFjdGlvbi5yZXN1bHQpO1xuICBjb25zdCBuZXh0U3RhdGUgPSBjb21wb3NlXyhbXG4gICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICBtZXJnZV8oe1xuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9XG4gICAgICB9KVxuICAgIClcbiAgXSkoc3RhdGUpO1xuICAvLyBtYWtlIG11bHRpcGxlIGFkZCBkYXRhIHRvIG1hcCBjYWxsc1xuICBjb25zdCBzdGF0ZVdpdGhEYXRhID0gY29tcG9zZV8ocGF5bG9hZHMubWFwKHAgPT4gYXBwbHlfKGFkZERhdGFUb01hcFVwZGF0ZXIsIHBheWxvYWRfKHApKSkpKFxuICAgIG5leHRTdGF0ZVxuICApO1xuICByZXR1cm4gc3RhdGVXaXRoRGF0YSBhcyBLZXBsZXJHbFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcENvbXBvc2VkID0gYWRkRGF0YVRvTWFwVXBkYXRlcjtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIHZpc1N0YXRlLFxuICogYnV0IG9ubHkgaWYgaXQncyBub3QgY3VycmVudGx5IGluIHRoZSBgbm9ybWFsYCBtb2RlLlxuICovXG5jb25zdCB1cGRhdGVPdmVybGF5QmxlbmRpbmcgPSBvdmVybGF5QmxlbmRpbmcgPT4gdmlzU3RhdGUgPT4ge1xuICBpZiAodmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nICE9PSBPVkVSTEFZX0JMRU5ESU5HUy5ub3JtYWwudmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzU3RhdGUsXG4gICAgICBvdmVybGF5QmxlbmRpbmdcbiAgICB9O1xuICB9XG4gIHJldHVybiB2aXNTdGF0ZTtcbn07XG5cbi8qKlxuICogSGVscGVyIHdoaWNoIHVwZGF0ZXMgYGRhcmtCYXNlTWFwRW5hYmxlZGAgaW4gYWxsIHRoZSBsYXllcnMgaW4gdmlzU3RhdGUgd2hpY2hcbiAqIGhhdmUgdGhpcyBjb25maWcgc2V0dGluZyAob3IgaW4gb25lIHNwZWNpZmljIGxheWVyIGlmIHRoZSBgbGF5ZXJJZGAgcGFyYW0gaXMgcHJvdmlkZWQpLlxuICovXG5jb25zdCB1cGRhdGVEYXJrQmFzZU1hcExheWVycyA9XG4gIChkYXJrQmFzZU1hcEVuYWJsZWQ6IGJvb2xlYW4sIGxheWVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PlxuICB2aXNTdGF0ZSA9PiAoe1xuICAgIC4uLnZpc1N0YXRlLFxuICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVySWQgfHwgbGF5ZXIuaWQgPT09IGxheWVySWQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgICAgICAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgICAgIHZpc0NvbmZpZzogey4uLnZpc0NvbmZpZywgZGFya0Jhc2VNYXBFbmFibGVkfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSlcbiAgfSk7XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIG1hcCBzdHlsZSBieSBjYWxsaW5nIG1hcFN0eWxlQ2hhbmdlVXBkYXRlciBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGl0IGRvZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgIDEuIFVwZGF0ZSBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZVxuICogICAgICBiYXNlIG1hcCwgYnV0IG9ubHkgaWYgaXQncyBub3QgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKlxuICogICAyLiBVcGRhdGUgYWxsIHRoZSBsYXllcnMgd2hpY2ggaGF2ZSB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnIHNldHRpbmdcbiAqICAgICAgYWRqdXN0aW5nIGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge3BheWxvYWR9ID0gYWN0aW9uO1xuICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gIGNvbnN0IGdldENvbG9yTW9kZSA9IGtleSA9PiBtYXBTdHlsZS5tYXBTdHlsZXNba2V5XT8uY29sb3JNb2RlO1xuICBjb25zdCBwcmV2Q29sb3JNb2RlID0gZ2V0Q29sb3JNb2RlKG1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIGNvbnN0IG5leHRDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUocGF5bG9hZC5zdHlsZVR5cGUpO1xuICBsZXQge3Zpc1N0YXRlLCBtYXBTdGF0ZX0gPSBzdGF0ZTtcbiAgaWYgKG5leHRDb2xvck1vZGUgIT09IHByZXZDb2xvck1vZGUpIHtcbiAgICBzd2l0Y2ggKG5leHRDb2xvck1vZGUpIHtcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSzpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLnNjcmVlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnModHJ1ZSlcbiAgICAgICAgXSkodmlzU3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQ6XG4gICAgICAgIHZpc1N0YXRlID0gY29tcG9zZV8oW1xuICAgICAgICAgIHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhPVkVSTEFZX0JMRU5ESU5HUy5kYXJrZW4udmFsdWUpLFxuICAgICAgICAgIHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKGZhbHNlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgZ2xvYmUgY29uZmlnIGNvbG9ycyB3aGVuIHN0eWxlIGNoYW5nZXMgYW5kIGdsb2JlIGlzIGVuYWJsZWRcbiAgaWYgKG1hcFN0YXRlLmdsb2JlPy5lbmFibGVkKSB7XG4gICAgLy8gU3dpdGNoaW5nIGZyb20gXCJObyBCYXNlbWFwXCIgdG8gYSBiYXNlbWFwIC0gcmVzdG9yZSBiYXNlbWFwIHN1Yi10b2dnbGVzXG4gICAgaWYgKHBheWxvYWQuc3R5bGVUeXBlICE9PSBOT19NQVBfSUQgJiYgbWFwU3R5bGUuc3R5bGVUeXBlID09PSBOT19NQVBfSUQpIHtcbiAgICAgIG1hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHtcbiAgICAgICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIC4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZyxcbiAgICAgICAgICAgIGJhc2VtYXA6IHRydWUsXG4gICAgICAgICAgICBsYWJlbHM6IHRydWUsXG4gICAgICAgICAgICBhZG1pbkxpbmVzOiB0cnVlLFxuICAgICAgICAgICAgd2F0ZXI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgbWFwU3R5bGUsIHBheWxvYWQuc3R5bGVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGUsXG4gICAgbWFwU3RhdGUsXG4gICAgbWFwU3R5bGU6IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihtYXBTdHlsZSwge3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pXG4gIH07XG59O1xuXG4vKipcbiAqIERlcml2ZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyAoc3VyZmFjZSAvIHdhdGVyIC8gYWRtaW4gbGluZXMpIGZyb20gYSBtYXAgc3R5bGUgYW5kXG4gKiByZXR1cm4gYW4gdXBkYXRlZCBtYXBTdGF0ZSB3aXRoIHRob3NlIGNvbG9ycyB3cml0dGVuIGludG8gYGdsb2JlLmNvbmZpZ2AuIFVzZWQgYm90aFxuICogd2hlbiB0aGUgYmFzZSBtYXAgc3R5bGUgY2hhbmdlcyBhbmQgd2hlbiBlbnRlcmluZyBnbG9iZSBtb2RlLCBzbyB0aGUgZ2xvYmUgYWx3YXlzXG4gKiByZWZsZWN0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGJhc2VtYXAgaW5zdGVhZCBvZiB0aGUgc3RhdGljIERFRkFVTFRfR0xPQkVfQ09ORklHLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShcbiAgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICBtYXBTdHlsZTogTWFwU3R5bGUsXG4gIHN0eWxlVHlwZTogc3RyaW5nXG4pOiBNYXBTdGF0ZSB7XG4gIGlmICghbWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQpIHtcbiAgICByZXR1cm4gbWFwU3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXh0U3R5bGVPYmogPSBtYXBTdHlsZS5tYXBTdHlsZXNbc3R5bGVUeXBlXTtcbiAgY29uc3QgbmV4dEdsb2JlQ29uZmlnID0gey4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZ307XG5cbiAgaWYgKHN0eWxlVHlwZSA9PT0gTk9fTUFQX0lEKSB7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmJhc2VtYXAgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcubGFiZWxzID0gZmFsc2U7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmFkbWluTGluZXMgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcud2F0ZXIgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcuc3VyZmFjZUNvbG9yID0gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yO1xuICAgIG5leHRHbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJhc2VtYXBDb2xvcnMgPSBuZXh0U3R5bGVPYmpcbiAgICAgID8gZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlKHN0eWxlVHlwZSwge1xuICAgICAgICAgIHN0eWxlOiBuZXh0U3R5bGVPYmouc3R5bGUsXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IG5leHRTdHlsZU9iai5sYXllckdyb3Vwc1xuICAgICAgICB9KVxuICAgICAgOiAvLyBTdHlsZSBvYmplY3Qgbm90IHlldCBsb2FkZWQgLSB1c2Uga25vd24gcHJlc2V0cyBieSBzdHlsZSB0eXBlXG4gICAgICAgIGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZShzdHlsZVR5cGUpO1xuICAgIG5leHRHbG9iZUNvbmZpZy5zdXJmYWNlQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhc2VtYXBXYXRlckZpbGxDb2xvcjtcbiAgICBuZXh0R2xvYmVDb25maWcuYWRtaW5MaW5lc0NvbG9yID0gYmFzZW1hcENvbG9ycy5iYXNlbWFwQWRtaW5MaW5lQ29sb3I7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0YXRlLFxuICAgIGdsb2JlOiB7XG4gICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgIGNvbmZpZzogbmV4dEdsb2JlQ29uZmlnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBzd2l0Y2hlcyB0aGUgbWFwIHZpZXcgbW9kZSAoMkQgLyAzRCAvIEdsb2JlKS4gUnVucyB0aGUgYmFzZSBtYXAtc3RhdGVcbiAqIHVwZGF0ZXIgYW5kLCB3aGVuIGVudGVyaW5nIGdsb2JlIG1vZGUsIHN5bmNzIHRoZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyB0byB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAgc3R5bGUgc28gdGhlIGdsb2JlIGRvZXNuJ3Qgc2hvdyBzdGFsZSBkZWZhdWx0IGNvbG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkU2V0TWFwVmlld01vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwVmlld01vZGVVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgbGV0IG1hcFN0YXRlID0gc2V0TWFwVmlld01vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGlmIChtYXBTdGF0ZS5nbG9iZT8uZW5hYmxlZCkge1xuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgc3RhdGUubWFwU3R5bGUsIHN0YXRlLm1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBjaGFuZ2VzIHRoZSBsYXllciB0eXBlIGJ5IGNhbGxpbmcgYGxheWVyVHlwZUNoYW5nZVVwZGF0ZXJgIG9uIHZpc1N0YXRlLlxuICogSW4gYWRkaXRpb24gdG8gdGhhdCwgaWYgdGhlIG5ldyBsYXllciB0eXBlIGhhcyB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnXG4gKiBzZXR0aW5nLCB3ZSBhZGp1c3QgaXQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xvck1vZGUgb2YgdGhlIGJhc2UgbWFwLnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGxldCB7dmlzU3RhdGV9ID0gc3RhdGU7XG4gIGNvbnN0IG9sZExheWVySW5kZXggPSB2aXNTdGF0ZS5sYXllcnMuZmluZEluZGV4KGxheWVyID0+IGxheWVyID09PSBhY3Rpb24ub2xkTGF5ZXIpO1xuICB2aXNTdGF0ZSA9IGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIodmlzU3RhdGUsIGFjdGlvbik7XG4gIGNvbnN0IG5ld0xheWVyID0gdmlzU3RhdGUubGF5ZXJzW29sZExheWVySW5kZXhdO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld0xheWVyPy52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgY29uc3Qge21hcFN0eWxlfSA9IHN0YXRlO1xuICAgIGNvbnN0IHtjb2xvck1vZGV9ID0gbWFwU3R5bGUubWFwU3R5bGVzW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgY29uc3Qge2RhcmtCYXNlTWFwRW5hYmxlZH0gPSBuZXdMYXllci5jb25maWcudmlzQ29uZmlnO1xuICAgIHN3aXRjaCAoY29sb3JNb2RlKSB7XG4gICAgICBjYXNlIEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUks6XG4gICAgICAgIGlmICghZGFya0Jhc2VNYXBFbmFibGVkKSB7XG4gICAgICAgICAgdmlzU3RhdGUgPSB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlLCBuZXdMYXllci5pZCkodmlzU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgaWYgKGRhcmtCYXNlTWFwRW5hYmxlZCkge1xuICAgICAgICAgIHZpc1N0YXRlID0gdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UsIG5ld0xheWVyLmlkKSh2aXNTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIE1ha2UgbWFwTGVnZW5kIGFjdGl2ZSB3aGVuIHRvZ2dsZVNwbGl0TWFwIGFjdGlvbiBpcyBjYWxsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGU6IHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnZpc1N0YXRlLCBhY3Rpb24pLFxuICAgIHVpU3RhdGU6IHVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUudWlTdGF0ZSksXG4gICAgbWFwU3RhdGU6IG1hcFN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLm1hcFN0YXRlKVxuICB9O1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdTdGF0ZS52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1N0YXRlLnVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdTdGF0ZS51aVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3U3RhdGUudWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogYWN0aW9uLnBheWxvYWR9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgc3BsaXQgbW9kZSB1cGRhdGVyIC0gY29vcmRpbmF0ZXMgc3RhdGUgY2hhbmdlcyBhY3Jvc3MgdmlzU3RhdGUsIG1hcFN0YXRlLCBhbmQgdWlTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwU3BsaXRNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBwcmV2TW9kZSA9IHN0YXRlLm1hcFN0YXRlLm1hcFNwbGl0TW9kZTtcblxuICBpZiAobWFwU3BsaXRNb2RlID09PSBwcmV2TW9kZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld01hcFN0YXRlID0gbWFwU3RhdGVTZXRNYXBTcGxpdE1vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGxldCBuZXdWaXNTdGF0ZSA9IHsuLi5zdGF0ZS52aXNTdGF0ZX07XG5cbiAgc3dpdGNoIChtYXBTcGxpdE1vZGUpIHtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQOlxuICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld1Zpc1N0YXRlLFxuICAgICAgICBzcGxpdE1hcHM6IFtdXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuRFVBTF9NQVA6XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIGlmIChwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVApIHtcbiAgICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgICAgLi4ubmV3VmlzU3RhdGUsXG4gICAgICAgICAgc3BsaXRNYXBzOiBjb21wdXRlU3BsaXRNYXBMYXllcnMobmV3VmlzU3RhdGUubGF5ZXJzLCB7XG4gICAgICAgICAgICBkdXBsaWNhdGU6IG1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkVcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgbGV0IG5ld1VpU3RhdGUgPSB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnVpU3RhdGUpO1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdWaXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1VpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdVaVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3VWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogMH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgIHZpc1N0YXRlOiBuZXdWaXNTdGF0ZSxcbiAgICB1aVN0YXRlOiBuZXdVaVN0YXRlXG4gIH07XG59O1xuXG5jb25zdCBkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGtlZXBFeGlzdGluZ0NvbmZpZzogdHJ1ZSxcbiAgY2VudGVyTWFwOiB0cnVlLFxuICBhdXRvQ3JlYXRlTGF5ZXJzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBVcGRhdGVyIHJlcGxhY2UgYSBkYXRhc2V0IGluIHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCByZXBsYWNlRGF0YUluTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0VG9SZXBsYWNlSWQsIGRhdGFzZXRUb1VzZSwgb3B0aW9ucyA9IHt9fSA9IHBheWxvYWQ7XG4gIGNvbnN0IGFkZERhdGFUb01hcE9wdGlvbnMgPSB7Li4uZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zLCAuLi5vcHRpb25zfTtcblxuICAvLyBjaGVjayBpZiBkYXRhc2V0IGlzIHRoZXJlXG4gIGlmICghc3RhdGUudmlzU3RhdGUuZGF0YXNldHNbZGF0YXNldFRvUmVwbGFjZUlkXSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICAvLyBkYXRhc2V0VG9Vc2UgaXMgUHJvdG9EYXRhc2V0XG4gIGNvbnN0IGRhdGFJZFRvVXNlID0gZGF0YXNldFRvVXNlLmluZm8uaWQ7XG4gIGlmICghZGF0YUlkVG9Vc2UpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLy8gcmVtb3ZlIGRhdGFzZXQgYW5kIHB1dCBkZXBlbmRlbmNpZXMgaW4gdG9CZU1lcmdlZFxuICBjb25zdCBwcmVwYXJlZFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlOiBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZShzdGF0ZS52aXNTdGF0ZSwgZGF0YXNldFRvUmVwbGFjZUlkLCBkYXRhSWRUb1VzZSlcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSBhZGREYXRhVG9NYXBVcGRhdGVyKFxuICAgIHByZXBhcmVkU3RhdGUsXG4gICAgcGF5bG9hZF8oe1xuICAgICAgZGF0YXNldHM6IGRhdGFzZXRUb1VzZSxcbiAgICAgIC8vIHNob3VsZCB6b29tIHRvIG5ldyBkYXRhc2V0XG4gICAgICBvcHRpb25zOiBhZGREYXRhVG9NYXBPcHRpb25zXG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gbmV4dFN0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdB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