appium 2.0.0-beta.33 → 2.0.0-beta.34

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.
@@ -476,4 +476,4 @@ class ExtensionCommand {
476
476
  exports.ExtensionCommand = ExtensionCommand;
477
477
  var _default = ExtensionCommand;
478
478
  exports.default = _default;
479
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZXh0ZW5zaW9uLWNvbW1hbmQuanMiXSwibmFtZXMiOlsiVVBEQVRFX0FMTCIsIk5vdFVwZGF0YWJsZUVycm9yIiwiRXJyb3IiLCJOb1VwZGF0ZXNBdmFpbGFibGVFcnJvciIsIkV4dGVuc2lvbkNvbW1hbmQiLCJjb25maWciLCJrbm93bkV4dGVuc2lvbnMiLCJpc0pzb25PdXRwdXQiLCJjb25zdHJ1Y3RvciIsImpzb24iLCJ0eXBlIiwiZXh0ZW5zaW9uVHlwZSIsImV4ZWN1dGUiLCJhcmdzIiwiY21kIiwiXyIsImlzRnVuY3Rpb24iLCJleGVjdXRlQ21kIiwiYmluZCIsImxpc3QiLCJzaG93SW5zdGFsbGVkIiwic2hvd1VwZGF0ZXMiLCJsc01zZyIsImluc3RhbGxlZE5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJrbm93bk5hbWVzIiwiZXh0cyIsInJlZHVjZSIsImFjYyIsIm5hbWUiLCJpbmNsdWRlcyIsImluc3RhbGxlZCIsInBrZ05hbWUiLCJleHQiLCJkYXRhIiwidG9QYWlycyIsImluc3RhbGxUeXBlIiwiSU5TVEFMTF9UWVBFX05QTSIsInVwZGF0ZXMiLCJjaGVja0ZvckV4dGVuc2lvblVwZGF0ZSIsInVwZGF0ZVZlcnNpb24iLCJzYWZlVXBkYXRlIiwidW5zYWZlVXBkYXRlVmVyc2lvbiIsInVuc2FmZVVwZGF0ZSIsInVwVG9EYXRlIiwibGlzdERhdGEiLCJpbnN0YWxsVHh0IiwiZ3JleSIsInVwZGF0ZVR4dCIsInVwVG9EYXRlVHh0IiwidW5zYWZlVXBkYXRlVHh0IiwiaW5zdGFsbFNwZWMiLCJ2ZXJzaW9uIiwidHlwZVR4dCIsIklOU1RBTExfVFlQRV9HSVQiLCJJTlNUQUxMX1RZUEVfR0lUSFVCIiwieWVsbG93IiwiSU5TVEFMTF9UWVBFX0xPQ0FMIiwibWFnZW50YSIsImdyZWVuIiwiY3lhbiIsImNvbnNvbGUiLCJsb2ciLCJfaW5zdGFsbCIsInBhY2thZ2VOYW1lIiwiZXh0RGF0YSIsInNwbGl0IiwibGVuZ3RoIiwiaW5zdGFsbFZpYU5wbSIsInJlcGxhY2UiLCJwa2dWZXIiLCJwYXRoIiwiaXNBYnNvbHV0ZSIsInJlc29sdmUiLCJzcGxpdHMiLCJtc2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZXh0TmFtZSIsImlzSW5zdGFsbGVkIiwiZXh0TWFuaWZlc3QiLCJhZGRFeHRlbnNpb24iLCJlbnYiLCJoYXNBcHBpdW1EZXBlbmRlbmN5IiwiYXBwaXVtSG9tZSIsImdldFBvc3RJbnN0YWxsVGV4dCIsIm5wbVNwZWMiLCJzcGVjTXNnIiwicGtnSnNvbkRhdGEiLCJucG0iLCJpbnN0YWxsUGFja2FnZSIsImdldEV4dGVuc2lvbkZpZWxkcyIsImVyciIsIm1lc3NhZ2UiLCJhcHBpdW0iLCJ2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyIsInJlc3VsdCIsImFwcGl1bVBrZ0RhdGEiLCJfdW5pbnN0YWxsIiwiaW5zdGFsbFBhdGgiLCJnZXRJbnN0YWxsUGF0aCIsImZzIiwicmltcmFmIiwicmVtb3ZlRXh0ZW5zaW9uIiwiX3VwZGF0ZSIsInVuc2FmZSIsInNob3VsZFVwZGF0ZUFsbCIsImV4dHNUb1VwZGF0ZSIsImVycm9ycyIsImUiLCJ1cGRhdGUiLCJjdXJyZW50IiwidXBkYXRlVmVyIiwidXBkYXRlRXh0ZW5zaW9uIiwiZnJvbSIsInRvIiwicmVkIiwiZ2V0TGF0ZXN0VmVyc2lvbiIsImdldExhdGVzdFNhZmVVcGdyYWRlVmVyc2lvbiIsInV0aWwiLCJjb21wYXJlVmVyc2lvbnMiLCJfcnVuIiwic2NyaXB0TmFtZSIsImhhcyIsImV4dENvbmZpZyIsInNjcmlwdHMiLCJleHRTY3JpcHRzIiwiaXNQbGFpbk9iamVjdCIsInJ1bm5lciIsIlN1YlByb2Nlc3MiLCJwcm9jZXNzIiwiZXhlY1BhdGgiLCJjd2QiLCJvdXRwdXQiLCJSaW5nQnVmZmVyIiwib24iLCJsaW5lIiwiZW5xdWV1ZSIsInN0YXJ0Iiwiam9pbiIsImdldEJ1ZmYiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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LEVBQUVBLE1BQU0sQ0FBQ08sT0FBUDtBQUFULE9BQVA7QUFDRCxLQUpELENBSUUsT0FBT2hELEdBQVAsRUFBWTtBQUNaLHNCQUFJLEtBQUt2RixZQUFULEVBQXdCLHNDQUFxQ3FILFVBQVcsTUFBSzlCLEdBQUcsQ0FBQ0MsT0FBUSxFQUFsRSxDQUFvRXVCLEdBQTNGO0FBQ0EsYUFBTztBQUFDeUIsUUFBQUEsS0FBSyxFQUFFakQsR0FBRyxDQUFDQyxPQUFaO0FBQXFCd0MsUUFBQUEsTUFBTSxFQUFFQSxNQUFNLENBQUNPLE9BQVA7QUFBN0IsT0FBUDtBQUNEO0FBQ0Y7O0FBOWZvQjs7O2VBaWdCUjFJLGdCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBucG0sIGZzLCB1dGlsLCBlbnYgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgbG9nLCBzcGluV2l0aCwgUmluZ0J1ZmZlciB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU3ViUHJvY2VzcyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyBJTlNUQUxMX1RZUEVfTlBNLCBJTlNUQUxMX1RZUEVfR0lULCBJTlNUQUxMX1RZUEVfR0lUSFVCLFxuICAgICAgICAgSU5TVEFMTF9UWVBFX0xPQ0FMIH0gZnJvbSAnLi4vZXh0ZW5zaW9uL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgcGFja2FnZURpZENoYW5nZSB9IGZyb20gJy4uL2V4dGVuc2lvbi9wYWNrYWdlLWNoYW5nZWQnO1xuXG5jb25zdCBVUERBVEVfQUxMID0gJ2luc3RhbGxlZCc7XG5cbmNsYXNzIE5vdFVwZGF0YWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cbmNsYXNzIE5vVXBkYXRlc0F2YWlsYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqL1xuY2xhc3MgRXh0ZW5zaW9uQ29tbWFuZCB7XG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBgRHJpdmVyQ29uZmlnYCBvciBgUGx1Z2luQ29uZmlnYCwgZGVwZW5kaW5nIG9uIGBFeHRUeXBlYC5cbiAgICogQHR5cGUge0V4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn1cbiAgICovXG4gIGNvbmZpZztcblxuICAvKipcbiAgICoge0BsaW5rY29kZSBSZWNvcmR9IG9mIG9mZmljaWFsIHBsdWdpbnMgb3IgZHJpdmVycy5cbiAgICogQHR5cGUge0tub3duRXh0ZW5zaW9uczxFeHRUeXBlPn1cbiAgICovXG4gIGtub3duRXh0ZW5zaW9ucztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBjb21tYW5kIG91dHB1dCBoYXMgYmVlbiByZXF1ZXN0ZWQgYXMgSlNPTi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBpc0pzb25PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuIEV4dGVuc2lvbkNvbW1hbmRcbiAgICogQHBhcmFtIHtFeHRlbnNpb25Db21tYW5kT3B0aW9uczxFeHRUeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3IgKHtjb25maWcsIGpzb259KSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pc0pzb25PdXRwdXQgPSBqc29uO1xuICB9XG5cbiAgLyoqXG4gICAqIGBkcml2ZXJgIG9yIGBwbHVnaW5gLCBkZXBlbmRpbmcgb24gdGhlIGBFeHRlbnNpb25Db25maWdgLlxuICAgKi9cbiAgZ2V0IHR5cGUgKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5leHRlbnNpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgYSBDTEkgcGFyc2UgYW5kIHJ1biBhbiBleHRlbnNpb24gY29tbWFuZCBiYXNlZCBvbiBpdHMgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIGEga2V5L3ZhbHVlIG9iamVjdCB3aXRoIENMSSBmbGFncyBhbmQgdmFsdWVzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8b2JqZWN0Pn0gdGhlIHJlc3VsdCBvZiB0aGUgc3BlY2lmaWMgY29tbWFuZCB3aGljaCBpcyBleGVjdXRlZFxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZSAoYXJncykge1xuICAgIGNvbnN0IGNtZCA9IGFyZ3NbYCR7dGhpcy50eXBlfUNvbW1hbmRgXTtcbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0aGlzW2NtZF0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBoYW5kbGUgJHt0aGlzLnR5cGV9IGNvbW1hbmQgJHtjbWR9YCk7XG4gICAgfVxuICAgIGNvbnN0IGV4ZWN1dGVDbWQgPSB0aGlzW2NtZF0uYmluZCh0aGlzKTtcbiAgICByZXR1cm4gYXdhaXQgZXhlY3V0ZUNtZChhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiBMaXN0T3B0aW9uc1xuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHNob3dJbnN0YWxsZWQgLSB3aGV0aGVyIHNob3VsZCBzaG93IG9ubHkgaW5zdGFsbGVkIGV4dGVuc2lvbnNcbiAgICogQHByb3BlcnR5IHtib29sZWFufSBzaG93VXBkYXRlcyAtIHdoZXRoZXIgc2hvdWxkIHNob3cgYXZhaWxhYmxlIHVwZGF0ZXNcbiAgICovXG5cbiAgLyoqXG4gICAqIExpc3QgZXh0ZW5zaW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge0xpc3RPcHRpb25zfSBvcHRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RXh0ZW5zaW9uTGlzdERhdGE+fSBtYXAgb2YgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBkYXRhXG4gICAqL1xuICBhc3luYyBsaXN0ICh7c2hvd0luc3RhbGxlZCwgc2hvd1VwZGF0ZXN9KSB7XG4gICAgY29uc3QgbHNNc2cgPSBgTGlzdGluZyAke3Nob3dJbnN0YWxsZWQgPyAnaW5zdGFsbGVkJyA6ICdhdmFpbGFibGUnfSAke3RoaXMudHlwZX1zYDtcbiAgICBjb25zdCBpbnN0YWxsZWROYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuICAgIGNvbnN0IGtub3duTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmtub3duRXh0ZW5zaW9ucyk7XG4gICAgY29uc3QgZXh0cyA9IFsuLi5pbnN0YWxsZWROYW1lcywgLi4ua25vd25OYW1lc10ucmVkdWNlKChhY2MsIG5hbWUpID0+IHtcbiAgICAgIGlmICghYWNjW25hbWVdKSB7XG4gICAgICAgIGlmIChpbnN0YWxsZWROYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgIGFjY1tuYW1lXSA9IHsuLi50aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zW25hbWVdLCBpbnN0YWxsZWQ6IHRydWV9O1xuICAgICAgICB9IGVsc2UgaWYgKCFzaG93SW5zdGFsbGVkKSB7XG4gICAgICAgICAgYWNjW25hbWVdID0ge3BrZ05hbWU6IHRoaXMua25vd25FeHRlbnNpb25zW25hbWVdLCBpbnN0YWxsZWQ6IGZhbHNlfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFRoaXMgYWNjdW11bGF0b3IgY29udGFpbnMgZWl0aGVyIHtAbGlua2NvZGUgVW5pbnN0YWxsZWRFeHRlbnNpb25MSXN0RGF0YX0gX29yX1xuICAgICAqIHtAbGlua2NvZGUgSW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGF9IHdpdGhvdXQgdXBncmFkZSBpbmZvcm1hdGlvbiAod2hpY2ggaXMgYWRkZWQgYnkgdGhlIGJlbG93IGNvZGUgYmxvY2spXG4gICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsUGFydGlhbDxJbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YT58VW5pbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YT59XG4gICAgICovKHt9KSk7XG5cbiAgICAvLyBpZiB3ZSB3YW50IHRvIHNob3cgd2hldGhlciB1cGRhdGVzIGFyZSBhdmFpbGFibGUsIHB1dCB0aGF0IGJlaGluZCBhIHNwaW5uZXJcbiAgICBhd2FpdCBzcGluV2l0aCh0aGlzLmlzSnNvbk91dHB1dCwgbHNNc2csIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghc2hvd1VwZGF0ZXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBbZXh0LCBkYXRhXSBvZiBfLnRvUGFpcnMoZXh0cykpIHtcbiAgICAgICAgaWYgKCFkYXRhLmluc3RhbGxlZCB8fCBkYXRhLmluc3RhbGxUeXBlICE9PSBJTlNUQUxMX1RZUEVfTlBNKSB7XG4gICAgICAgICAgLy8gZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgdXBkYXRlcyBvbiBleHRzIHRoYXQgYXJlbid0IGluc3RhbGxlZFxuICAgICAgICAgIC8vIGFsc28gZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgdXBkYXRlcyBvbiBub24tbnBtIGV4dHNcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cGRhdGVzID0gYXdhaXQgdGhpcy5jaGVja0ZvckV4dGVuc2lvblVwZGF0ZShleHQpO1xuICAgICAgICBkYXRhLnVwZGF0ZVZlcnNpb24gPSB1cGRhdGVzLnNhZmVVcGRhdGU7XG4gICAgICAgIGRhdGEudW5zYWZlVXBkYXRlVmVyc2lvbiA9IHVwZGF0ZXMudW5zYWZlVXBkYXRlO1xuICAgICAgICBkYXRhLnVwVG9EYXRlID0gdXBkYXRlcy5zYWZlVXBkYXRlID09PSBudWxsICYmIHVwZGF0ZXMudW5zYWZlVXBkYXRlID09PSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgbGlzdERhdGEgPSAvKiogQHR5cGUge0V4dGVuc2lvbkxpc3REYXRhfSAqLyhleHRzKTtcblxuICAgIC8vIGlmIHdlJ3JlIGp1c3QgZ2V0dGluZyB0aGUgZGF0YSwgc2hvcnQgY2lyY3VpdCByZXR1cm4gaGVyZSBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueVxuICAgIC8vIGZvcm1hdHRpbmcgbG9naWNcbiAgICBpZiAodGhpcy5pc0pzb25PdXRwdXQpIHtcbiAgICAgIHJldHVybiBsaXN0RGF0YTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtcbiAgICAgIG5hbWUsXG4gICAgICBkYXRhXG4gICAgXSBvZiBfLnRvUGFpcnMobGlzdERhdGEpKSB7XG4gICAgICBsZXQgaW5zdGFsbFR4dCA9ICcgW25vdCBpbnN0YWxsZWRdJy5ncmV5O1xuICAgICAgbGV0IHVwZGF0ZVR4dCA9ICcnO1xuICAgICAgbGV0IHVwVG9EYXRlVHh0ID0gJyc7XG4gICAgICBsZXQgdW5zYWZlVXBkYXRlVHh0ID0gJyc7XG4gICAgICBpZiAoZGF0YS5pbnN0YWxsZWQpIHtcbiAgICAgICAgY29uc3Qge2luc3RhbGxUeXBlLCBpbnN0YWxsU3BlYywgdXBkYXRlVmVyc2lvbiwgdW5zYWZlVXBkYXRlVmVyc2lvbiwgdmVyc2lvbiwgdXBUb0RhdGV9ID0gZGF0YTtcbiAgICAgICAgbGV0IHR5cGVUeHQ7XG4gICAgICAgIHN3aXRjaCAoaW5zdGFsbFR5cGUpIHtcbiAgICAgICAgICBjYXNlIElOU1RBTExfVFlQRV9HSVQ6XG4gICAgICAgICAgY2FzZSBJTlNUQUxMX1RZUEVfR0lUSFVCOlxuICAgICAgICAgICAgdHlwZVR4dCA9IGAoY2xvbmVkIGZyb20gJHtpbnN0YWxsU3BlY30pYC55ZWxsb3c7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIElOU1RBTExfVFlQRV9MT0NBTDpcbiAgICAgICAgICAgIHR5cGVUeHQgPSBgKGxpbmtlZCBmcm9tICR7aW5zdGFsbFNwZWN9KWAubWFnZW50YTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0eXBlVHh0ID0gJyhOUE0pJztcbiAgICAgICAgfVxuICAgICAgICBpbnN0YWxsVHh0ID0gYEAke3ZlcnNpb24ueWVsbG93fSAkeygnW2luc3RhbGxlZCAnICsgdHlwZVR4dCArICddJykuZ3JlZW59YDtcblxuICAgICAgICBpZiAoc2hvd1VwZGF0ZXMpIHtcbiAgICAgICAgICBpZiAodXBkYXRlVmVyc2lvbikge1xuICAgICAgICAgICAgdXBkYXRlVHh0ID0gYCBbJHt1cGRhdGVWZXJzaW9ufSBhdmFpbGFibGVdYC5tYWdlbnRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodXBUb0RhdGUpIHtcbiAgICAgICAgICAgIHVwVG9EYXRlVHh0ID0gYCBbVXAgdG8gZGF0ZV1gLmdyZWVuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodW5zYWZlVXBkYXRlVmVyc2lvbikge1xuICAgICAgICAgICAgdW5zYWZlVXBkYXRlVHh0ID0gYCBbJHt1bnNhZmVVcGRhdGVWZXJzaW9ufSBhdmFpbGFibGUgKHBvdGVudGlhbGx5IHVuc2FmZSldYC5jeWFuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhgLSAke25hbWUueWVsbG93fSR7aW5zdGFsbFR4dH0ke3VwZGF0ZVR4dH0ke3VwVG9EYXRlVHh0fSR7dW5zYWZlVXBkYXRlVHh0fWApO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0RGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxsIGFuIGV4dGVuc2lvblxuICAgKlxuICAgKiBAcGFyYW0ge0luc3RhbGxBcmdzfSBhcmdzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RXh0UmVjb3JkPEV4dFR5cGU+Pn0gbWFwIG9mIGFsbCBpbnN0YWxsZWQgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBkYXRhXG4gICAqL1xuICBhc3luYyBfaW5zdGFsbCAoe2V4dCwgaW5zdGFsbFR5cGUsIHBhY2thZ2VOYW1lfSkge1xuICAgIGxldCBleHREYXRhO1xuICAgIGxldCBpbnN0YWxsU3BlYyA9IGV4dDtcblxuICAgIGlmIChwYWNrYWdlTmFtZSAmJiBbSU5TVEFMTF9UWVBFX0xPQ0FMLCBJTlNUQUxMX1RZUEVfTlBNXS5pbmNsdWRlcyhpbnN0YWxsVHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2hlbiB1c2luZyAtLXNvdXJjZT0ke2luc3RhbGxUeXBlfSwgY2Fubm90IGFsc28gdXNlIC0tcGFja2FnZWApO1xuICAgIH1cblxuICAgIGlmICghcGFja2FnZU5hbWUgJiYgW0lOU1RBTExfVFlQRV9HSVQsIElOU1RBTExfVFlQRV9HSVRIVUJdLmluY2x1ZGVzKGluc3RhbGxUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaGVuIHVzaW5nIC0tc291cmNlPSR7aW5zdGFsbFR5cGV9LCBtdXN0IGFsc28gdXNlIC0tcGFja2FnZWApO1xuICAgIH1cblxuICAgIGlmIChpbnN0YWxsVHlwZSA9PT0gSU5TVEFMTF9UWVBFX0dJVEhVQikge1xuICAgICAgaWYgKGluc3RhbGxTcGVjLnNwbGl0KCcvJykubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR2l0aHViICR7dGhpcy50eXBlfSBzcGVjICR7aW5zdGFsbFNwZWN9IGFwcGVhcmVkIHRvIGJlIGludmFsaWQ7IGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2l0IHNob3VsZCBiZSBvZiB0aGUgZm9ybSA8b3JnPi88cmVwbz4nKTtcbiAgICAgIH1cbiAgICAgIGV4dERhdGEgPSBhd2FpdCB0aGlzLmluc3RhbGxWaWFOcG0oe2V4dDogaW5zdGFsbFNwZWMsIHBrZ05hbWU6IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyhwYWNrYWdlTmFtZSl9KTtcbiAgICB9IGVsc2UgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfR0lUKSB7XG4gICAgICAvLyBnaXQgdXJscyBjYW4gaGF2ZSAnLmdpdCcgYXQgdGhlIGVuZCwgYnV0IHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBhbmQgd291bGQgY29tcGxpY2F0ZSB0aGVcbiAgICAgIC8vIHdheSB3ZSBkb3dubG9hZCBhbmQgbmFtZSBkaXJlY3Rvcmllcywgc28gd2UgY2FuIGp1c3QgcmVtb3ZlIGl0XG4gICAgICBpbnN0YWxsU3BlYyA9IGluc3RhbGxTcGVjLnJlcGxhY2UoL1xcLmdpdCQvLCAnJyk7XG4gICAgICBleHREYXRhID0gYXdhaXQgdGhpcy5pbnN0YWxsVmlhTnBtKHtleHQ6IGluc3RhbGxTcGVjLCBwa2dOYW1lOiAvKiogQHR5cGUge3N0cmluZ30gKi8ocGFja2FnZU5hbWUpfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwa2dOYW1lLCBwa2dWZXI7XG4gICAgICBpZiAoaW5zdGFsbFR5cGUgPT09IElOU1RBTExfVFlQRV9MT0NBTCkge1xuICAgICAgICBwa2dOYW1lID0gcGF0aC5pc0Fic29sdXRlKGluc3RhbGxTcGVjKSA/IGluc3RhbGxTcGVjIDogcGF0aC5yZXNvbHZlKGluc3RhbGxTcGVjKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBlaXRoZXIgYW4gbnBtIHBhY2thZ2Ugb3IgYW4gYXBwaXVtIHZlcmlmaWVkIGV4dGVuc2lvblxuICAgICAgICAvLyBuYW1lIG9yIGEgbG9jYWwgcGF0aC4gYm90aCBvZiB3aGljaCB3aWxsIGJlIGluc3RhbGxlZCB2aWEgbnBtLlxuICAgICAgICAvLyBleHRlbnNpb25zIGluc3RhbGxlZCB2aWEgbnBtIGNhbiBpbmNsdWRlIHZlcnNpb25zIG9yIHRhZ3MgYWZ0ZXIgdGhlICdAJ1xuICAgICAgICAvLyBzaWduLCBzbyBjaGVjayBmb3IgdGhhdC4gV2UgYWxzbyBuZWVkIHRvIGJlIGNhcmVmdWwgdGhhdCBwYWNrYWdlIG5hbWVzIHRoZW1zZWx2ZXMgY2FuXG4gICAgICAgIC8vIGNvbnRhaW4gdGhlICdAJyBzeW1ib2wsIGFzIGluIGBucG0gaW5zdGFsbCBAYXBwaXVtL2Zha2UtZHJpdmVyQDEuMi4wYFxuICAgICAgICBsZXQgbmFtZTtcbiAgICAgICAgY29uc3Qgc3BsaXRzID0gaW5zdGFsbFNwZWMuc3BsaXQoJ0AnKTtcbiAgICAgICAgaWYgKGluc3RhbGxTcGVjWzBdID09PSAnQCcpIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBjYXNlIHdoZXJlIHdlIGhhdmUgYW4gbnBtIG9yZyBpbmNsdWRlZCBpbiB0aGUgcGFja2FnZSBuYW1lXG4gICAgICAgICAgW25hbWUsIHBrZ1Zlcl0gPSBbYEAke3NwbGl0c1sxXX1gLCBzcGxpdHNbMl1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIGNhc2Ugd2l0aG91dCBhbiBucG0gb3JnXG4gICAgICAgICAgW25hbWUsIHBrZ1Zlcl0gPSBzcGxpdHM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5zdGFsbFR5cGUgPT09IElOU1RBTExfVFlQRV9OUE0pIHtcbiAgICAgICAgICAvLyBpZiB3ZSdyZSBpbnN0YWxsaW5nIGEgbmFtZWQgcGFja2FnZSBmcm9tIG5wbSwgd2UgZG9uJ3QgbmVlZCB0byBjaGVja1xuICAgICAgICAgIC8vIGFnYWluc3QgdGhlIGFwcGl1bSBleHRlbnNpb24gbGlzdDsganVzdCB1c2UgdGhlIGluc3RhbGxTcGVjIGFzIGlzXG4gICAgICAgICAgcGtnTmFtZSA9IG5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaWYgd2UncmUgaW5zdGFsbGluZyBhIG5hbWVkIGFwcGl1bSBkcml2ZXIgKGxpa2UgJ3hjdWl0ZXN0Jykgd2UgbmVlZCB0b1xuICAgICAgICAgIC8vIGRlcmVmZXJlbmNlIHRoZSBhY3R1YWwgbnBtIHBhY2thZ2UgKCdhcHBpdXBtLXhjdWl0ZXN0LWRyaXZlcicpLCBzb1xuICAgICAgICAgIC8vIGNoZWNrIGl0IGV4aXN0cyBhbmQgZ2V0IHRoZSBjb3JyZWN0IHBhY2thZ2VcbiAgICAgICAgICBjb25zdCBrbm93bk5hbWVzID0gT2JqZWN0LmtleXModGhpcy5rbm93bkV4dGVuc2lvbnMpO1xuICAgICAgICAgIGlmICghXy5pbmNsdWRlcyhrbm93bk5hbWVzLCBuYW1lKSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gYENvdWxkIG5vdCByZXNvbHZlICR7dGhpcy50eXBlfTsgYXJlIHlvdSBzdXJlIGl0J3MgaW4gdGhlIGxpc3QgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgb2Ygc3VwcG9ydGVkICR7dGhpcy50eXBlfXM/ICR7SlNPTi5zdHJpbmdpZnkoa25vd25OYW1lcyl9YDtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwa2dOYW1lID0gdGhpcy5rbm93bkV4dGVuc2lvbnNbbmFtZV07XG4gICAgICAgICAgLy8gZ2l2ZW4gdGhhdCB3ZSdsbCB1c2UgdGhlIGluc3RhbGwgdHlwZSBpbiB0aGUgZHJpdmVyIGpzb24sIHN0b3JlIGl0IGFzXG4gICAgICAgICAgLy8gJ25wbScgbm93XG4gICAgICAgICAgaW5zdGFsbFR5cGUgPSBJTlNUQUxMX1RZUEVfTlBNO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV4dERhdGEgPSBhd2FpdCB0aGlzLmluc3RhbGxWaWFOcG0oe2V4dCwgcGtnTmFtZSwgcGtnVmVyfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0TmFtZSA9IGV4dERhdGFbLyoqIEB0eXBlIHtzdHJpbmd9ICovKGAke3RoaXMudHlwZX1OYW1lYCldO1xuICAgIGRlbGV0ZSBleHREYXRhWy8qKiBAdHlwZSB7c3RyaW5nfSAqLyhgJHt0aGlzLnR5cGV9TmFtZWApXTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5pc0luc3RhbGxlZChleHROYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBICR7dGhpcy50eXBlfSBuYW1lZCAnJHtleHROYW1lfScgaXMgYWxyZWFkeSBpbnN0YWxsZWQuIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGBEaWQgeW91IG1lYW4gdG8gdXBkYXRlPyAnYXBwaXVtICR7dGhpcy50eXBlfSB1cGRhdGUnLiBTZWUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYGluc3RhbGxlZCAke3RoaXMudHlwZX1zIHdpdGggJ2FwcGl1bSAke3RoaXMudHlwZX0gbGlzdCAtLWluc3RhbGxlZCcuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0TWFuaWZlc3QgPSB7Li4uZXh0RGF0YSwgaW5zdGFsbFR5cGUsIGluc3RhbGxTcGVjfTtcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy5hZGRFeHRlbnNpb24oZXh0TmFtZSwgZXh0TWFuaWZlc3QpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBpZiB3ZSd2ZSBjaGFuZ2VkIHRoZSBsb2NhbCBgcGFja2FnZS5qc29uYFxuICAgIGlmIChhd2FpdCBlbnYuaGFzQXBwaXVtRGVwZW5kZW5jeSh0aGlzLmNvbmZpZy5hcHBpdW1Ib21lKSkge1xuICAgICAgYXdhaXQgcGFja2FnZURpZENoYW5nZSh0aGlzLmNvbmZpZy5hcHBpdW1Ib21lKTtcbiAgICB9XG5cbiAgICAvLyBsb2cgaW5mbyBmb3IgdGhlIHVzZXJcbiAgICBsb2codGhpcy5pc0pzb25PdXRwdXQsIHRoaXMuZ2V0UG9zdEluc3RhbGxUZXh0KHtleHROYW1lLCBleHREYXRhfSkpO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnM7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbCBhbiBleHRlbnNpb24gdmlhIE5QTVxuICAgKlxuICAgKiBAcGFyYW0ge0luc3RhbGxWaWFOcG1BcmdzfSBhcmdzXG4gICAqL1xuICBhc3luYyBpbnN0YWxsVmlhTnBtICh7ZXh0LCBwa2dOYW1lLCBwa2dWZXJ9KSB7XG4gICAgY29uc3QgbnBtU3BlYyA9IGAke3BrZ05hbWV9JHtwa2dWZXIgPyAnQCcgKyBwa2dWZXIgOiAnJ31gO1xuICAgIGNvbnN0IHNwZWNNc2cgPSBucG1TcGVjID09PSBleHQgPyAnJyA6IGAgdXNpbmcgTlBNIGluc3RhbGwgc3BlYyAnJHtucG1TcGVjfSdgO1xuICAgIGNvbnN0IG1zZyA9IGBJbnN0YWxsaW5nICcke2V4dH0nJHtzcGVjTXNnfWA7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBrZ0pzb25EYXRhID0gYXdhaXQgc3BpbldpdGgodGhpcy5pc0pzb25PdXRwdXQsIG1zZywgYXN5bmMgKCkgPT4gKFxuICAgICAgICBhd2FpdCBucG0uaW5zdGFsbFBhY2thZ2UodGhpcy5jb25maWcuYXBwaXVtSG9tZSwgcGtnTmFtZSwge1xuICAgICAgICAgIHBrZ1ZlclxuICAgICAgICB9KVxuICAgICAgKSk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRFeHRlbnNpb25GaWVsZHMocGtnSnNvbkRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmNvdW50ZXJlZCBhbiBlcnJvciB3aGVuIGluc3RhbGxpbmcgcGFja2FnZTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0ZXh0IHdoaWNoIHNob3VsZCBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgYWZ0ZXIgYW4gZXh0ZW5zaW9uIGhhcyBiZWVuIGluc3RhbGxlZC4gVGhpc1xuICAgKiBpcyBkZXNpZ25lZCB0byBiZSBvdmVycmlkZGVuIGJ5IGRyaXZlcnMvcGx1Z2lucyB3aXRoIHRoZWlyIG93biBwYXJ0aWN1bGFyIHRleHQuXG4gICAqXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uQXJnc30gYXJnc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGdldFBvc3RJbnN0YWxsVGV4dCAoYXJncykge1xuICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBmaW5hbCBjbGFzcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgYW4gTlBNIG1vZHVsZSdzIHBhY2thZ2UuanNvbiBhbmQgZXh0cmFjdCBBcHBpdW0gZHJpdmVyIGluZm9ybWF0aW9uIGZyb20gYSBzcGVjaWFsXG4gICAqICdhcHBpdW0nIGZpZWxkIGluIHRoZSBKU09OIGRhdGEuIFdlIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiB0byBlLmcuIGRldGVybWluZSB3aGljaCBjbGFzcyB0b1xuICAgKiBsb2FkIGFzIHRoZSBtYWluIGRyaXZlciBjbGFzcywgb3IgdG8gYmUgYWJsZSB0byBkZXRlY3QgaW5jb21wYXRpYmlsaXRpZXMgYmV0d2VlbiBkcml2ZXIgYW5kXG4gICAqIGFwcGl1bSB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn0gcGtnSnNvbkRhdGEgLSB0aGUgcGFja2FnZS5qc29uIGRhdGEgZm9yIGEgZHJpdmVyIG1vZHVsZSwgYXMgaWYgaXQgaGFkIGJlZW5cbiAgICogc3RyYWlnaHRmb3J3YXJkbHkgJ3JlcXVpcmUnZFxuICAgKiBAcmV0dXJucyB7RXh0ZW5zaW9uRmllbGRzPEV4dFR5cGU+fVxuICAgKi9cbiAgZ2V0RXh0ZW5zaW9uRmllbGRzIChwa2dKc29uRGF0YSkge1xuICAgIGlmICghcGtnSnNvbkRhdGEuYXBwaXVtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbGxlZCBkcml2ZXIgZGlkIG5vdCBoYXZlIGFuICdhcHBpdW0nIHNlY3Rpb24gaW4gaXRzIGAgK1xuICAgICAgICAgICAgICAgICAgICAgIGBwYWNrYWdlLmpzb24gZmlsZSBhcyBleHBlY3RlZGApO1xuICAgIH1cbiAgICBjb25zdCB7YXBwaXVtLCBuYW1lLCB2ZXJzaW9ufSA9IHBrZ0pzb25EYXRhO1xuICAgIHRoaXMudmFsaWRhdGVFeHRlbnNpb25GaWVsZHMoYXBwaXVtKTtcbiAgICAvKiogQHR5cGUge3Vua25vd259ICovXG4gICAgY29uc3QgcmVzdWx0ID0gey4uLmFwcGl1bSwgcGtnTmFtZTogbmFtZSwgdmVyc2lvbn07XG4gICAgcmV0dXJuIC8qKiBAdHlwZSB7RXh0ZW5zaW9uRmllbGRzPEV4dFR5cGU+fSAqLyhyZXN1bHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBhbnkgcGFja2FnZS5qc29uIGZpZWxkcyB3aGljaCBhIHBhcnRpY3VsYXIgdHlwZSBvZiBleHRlbnNpb24gcmVxdWlyZXMsIHZhbGlkYXRlIHRoZVxuICAgKiBwcmVzZW5jZSBhbmQgZm9ybSBvZiB0aG9zZSBmaWVsZHMgb24gdGhlIHBhY2thZ2UuanNvbiBkYXRhLCB0aHJvd2luZyBhbiBlcnJvciBpZiBhbnl0aGluZyBpc1xuICAgKiBhbWlzcy5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRNZXRhZGF0YTxFeHRUeXBlPn0gYXBwaXVtUGtnRGF0YSAtIHRoZSBkYXRhIGluIHRoZSBcImFwcGl1bVwiIGZpZWxkIG9mIHBhY2thZ2UuanNvbiBmb3IgYW4gZXh0ZW5zaW9uXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFsaWRhdGVFeHRlbnNpb25GaWVsZHMgKGFwcGl1bVBrZ0RhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgYmUgaW1wbGVtZW50ZWQgaW4gZmluYWwgY2xhc3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmluc3RhbGwgYW4gZXh0ZW5zaW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VW5pbnN0YWxsT3B0c30gb3B0c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPEV4dFJlY29yZDxFeHRUeXBlPj59IG1hcCBvZiBhbGwgaW5zdGFsbGVkIGV4dGVuc2lvbiBuYW1lcyB0byBleHRlbnNpb24gZGF0YVxuICAgKi9cbiAgYXN5bmMgX3VuaW5zdGFsbCAoe2V4dH0pIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmlzSW5zdGFsbGVkKGV4dCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgdW5pbnN0YWxsICR7dGhpcy50eXBlfSAnJHtleHR9JzsgaXQgaXMgbm90IGluc3RhbGxlZGApO1xuICAgIH1cbiAgICBjb25zdCBpbnN0YWxsUGF0aCA9IHRoaXMuY29uZmlnLmdldEluc3RhbGxQYXRoKGV4dCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZihpbnN0YWxsUGF0aCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlnLnJlbW92ZUV4dGVuc2lvbihleHQpO1xuICAgIH1cbiAgICBsb2codGhpcy5pc0pzb25PdXRwdXQsIGBTdWNjZXNzZnVsbHkgdW5pbnN0YWxsZWQgJHt0aGlzLnR5cGV9ICcke2V4dH0nYC5ncmVlbik7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnM7XG4gIH1cblxuICAvKipcbiAgICogQXR0ZW1wdCB0byB1cGRhdGUgb25lIG9yIG1vcmUgZHJpdmVycyB1c2luZyBOUE1cbiAgICpcbiAgICogQHBhcmFtIHtFeHRlbnNpb25VcGRhdGVPcHRzfSB1cGRhdGVTcGVjXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RXh0ZW5zaW9uVXBkYXRlUmVzdWx0Pn1cbiAgICovXG4gIGFzeW5jIF91cGRhdGUgKHtleHQsIHVuc2FmZX0pIHtcbiAgICBjb25zdCBzaG91bGRVcGRhdGVBbGwgPSBleHQgPT09IFVQREFURV9BTEw7XG4gICAgLy8gaWYgd2UncmUgc3BlY2lmaWNhbGx5IHJlcXVlc3RpbmcgYW4gdXBkYXRlIGZvciBhbiBleHRlbnNpb24sIG1ha2Ugc3VyZSBpdCdzIGluc3RhbGxlZFxuICAgIGlmICghc2hvdWxkVXBkYXRlQWxsICYmICF0aGlzLmNvbmZpZy5pc0luc3RhbGxlZChleHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAke3RoaXMudHlwZX0gJyR7ZXh0fScgd2FzIG5vdCBpbnN0YWxsZWQsIHNvIGNhbid0IGJlIHVwZGF0ZWRgKTtcbiAgICB9XG4gICAgY29uc3QgZXh0c1RvVXBkYXRlID0gc2hvdWxkVXBkYXRlQWxsID8gT2JqZWN0LmtleXModGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucykgOiBbZXh0XTtcblxuICAgIC8vICdlcnJvcnMnIHdpbGwgaGF2ZSBleHQgbmFtZXMgYXMga2V5cyBhbmQgZXJyb3Igb2JqZWN0cyBhcyB2YWx1ZXNcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsRXJyb3I+fSAqL1xuICAgIGNvbnN0IGVycm9ycyA9IHt9O1xuXG4gICAgLy8gJ3VwZGF0ZXMnIHdpbGwgaGF2ZSBleHQgbmFtZXMgYXMga2V5cyBhbmQgdXBkYXRlIG9iamVjdHMgYXMgdmFsdWVzLCB3aGVyZSBhbiB1cGRhdGVcbiAgICAvLyBvYmplY3QgaXMgb2YgdGhlIGZvcm0ge2Zyb206IHZlcnNpb25TdHJpbmcsIHRvOiB2ZXJzaW9uU3RyaW5nfVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxVcGRhdGVSZXBvcnQ+fSAqL1xuICAgIGNvbnN0IHVwZGF0ZXMgPSB7fTtcblxuICAgIGZvciAoY29uc3QgZSBvZiBleHRzVG9VcGRhdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNwaW5XaXRoKHRoaXMuaXNKc29uT3V0cHV0LCBgQ2hlY2tpbmcgaWYgJHt0aGlzLnR5cGV9ICcke2V9JyBpcyB1cGRhdGFibGVgLCAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZV0uaW5zdGFsbFR5cGUgIT09IElOU1RBTExfVFlQRV9OUE0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RVcGRhdGFibGVFcnJvcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZSA9IGF3YWl0IHNwaW5XaXRoKHRoaXMuaXNKc29uT3V0cHV0LCBgQ2hlY2tpbmcgaWYgJHt0aGlzLnR5cGV9ICcke2V9JyBuZWVkcyBhbiB1cGRhdGVgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgdGhpcy5jaGVja0ZvckV4dGVuc2lvblVwZGF0ZShlKTtcbiAgICAgICAgICBpZiAoISh1cGRhdGUuc2FmZVVwZGF0ZSB8fCB1cGRhdGUudW5zYWZlVXBkYXRlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vVXBkYXRlc0F2YWlsYWJsZUVycm9yKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB1cGRhdGU7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXVuc2FmZSAmJiAhdXBkYXRlLnNhZmVVcGRhdGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAke3RoaXMudHlwZX0gJyR7ZX0nIGhhcyBhIG1ham9yIHJldmlzaW9uIHVwZGF0ZSBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCgke3VwZGF0ZS5jdXJyZW50fSA9PiAke3VwZGF0ZS51bnNhZmVVcGRhdGV9KSwgd2hpY2ggY291bGQgaW5jbHVkZSBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGJyZWFraW5nIGNoYW5nZXMuIElmIHlvdSB3YW50IHRvIGFwcGx5IHRoaXMgdXBkYXRlLCByZS1ydW4gd2l0aCAtLXVuc2FmZWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZVZlciA9IHVuc2FmZSAmJiB1cGRhdGUudW5zYWZlVXBkYXRlID8gdXBkYXRlLnVuc2FmZVVwZGF0ZSA6IHVwZGF0ZS5zYWZlVXBkYXRlO1xuICAgICAgICBhd2FpdCBzcGluV2l0aChcbiAgICAgICAgICB0aGlzLmlzSnNvbk91dHB1dCxcbiAgICAgICAgICBgVXBkYXRpbmcgZHJpdmVyICcke2V9JyBmcm9tICR7dXBkYXRlLmN1cnJlbnR9IHRvICR7dXBkYXRlVmVyfWAsXG4gICAgICAgICAgYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy51cGRhdGVFeHRlbnNpb24oZSwgdXBkYXRlVmVyKVxuICAgICAgICApO1xuICAgICAgICB1cGRhdGVzW2VdID0ge2Zyb206IHVwZGF0ZS5jdXJyZW50LCB0bzogdXBkYXRlVmVyfTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBlcnJvcnNbZV0gPSBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9nKHRoaXMuaXNKc29uT3V0cHV0LCAnVXBkYXRlIHJlcG9ydDonKTtcbiAgICBmb3IgKGNvbnN0IFtlLCB1cGRhdGVdIG9mIF8udG9QYWlycyh1cGRhdGVzKSkge1xuICAgICAgbG9nKHRoaXMuaXNKc29uT3V0cHV0LCBgLSAke3RoaXMudHlwZX0gJHtlfSB1cGRhdGVkOiAke3VwZGF0ZS5mcm9tfSA9PiAke3VwZGF0ZS50b31gLmdyZWVuKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBbZSwgZXJyXSBvZiBfLnRvUGFpcnMoZXJyb3JzKSkge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdFVwZGF0YWJsZUVycm9yKSB7XG4gICAgICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgYC0gJyR7ZX0nIHdhcyBub3QgaW5zdGFsbGVkIHZpYSBucG0sIHNvIHdlIGNvdWxkIG5vdCBjaGVjayBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZm9yIHVwZGF0ZXNgLnllbGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKGVyciBpbnN0YW5jZW9mIE5vVXBkYXRlc0F2YWlsYWJsZUVycm9yKSB7XG4gICAgICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgYC0gJyR7ZX0nIGhhZCBubyB1cGRhdGVzIGF2YWlsYWJsZWAueWVsbG93KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG90aGVyd2lzZSwgbWFrZSBpdCBwb3Agd2l0aCByZWQhXG4gICAgICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgYC0gJyR7ZX0nIGZhaWxlZCB0byB1cGRhdGU6ICR7ZXJyfWAucmVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge3VwZGF0ZXMsIGVycm9yc307XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYW4gZXh0ZW5zaW9uIG5hbWUsIGZpZ3VyZSBvdXQgd2hhdCBpdHMgaGlnaGVzdCBwb3NzaWJsZSB2ZXJzaW9uIHVwZ3JhZGUgaXMsIGFuZCBhbHNvIHRoZVxuICAgKiBoaWdoZXN0IHBvc3NpYmxlIHNhZmUgdXBncmFkZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dCAtIG5hbWUgb2YgZXh0ZW5zaW9uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8UG9zc2libGVVcGRhdGVzPn1cbiAgICovXG4gIGFzeW5jIGNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlIChleHQpIHtcbiAgICAvLyBUT0RPIGRlY2lkZSBob3cgd2Ugd2FudCB0byBoYW5kbGUgYmV0YSB2ZXJzaW9ucz9cbiAgICAvLyB0aGlzIGlzIGEgaGVscGVyIG1ldGhvZCwgJ2V4dCcgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGluc3RhbGxlZCBoZXJlLCBhbmQgb2YgdGhlIG5wbVxuICAgIC8vIGluc3RhbGwgdHlwZVxuICAgIGNvbnN0IHt2ZXJzaW9uLCBwa2dOYW1lfSA9IHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0XTtcbiAgICBsZXQgdW5zYWZlVXBkYXRlID0gYXdhaXQgbnBtLmdldExhdGVzdFZlcnNpb24odGhpcy5jb25maWcuYXBwaXVtSG9tZSwgcGtnTmFtZSk7XG4gICAgbGV0IHNhZmVVcGRhdGUgPSBhd2FpdCBucG0uZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uKHRoaXMuY29uZmlnLmFwcGl1bUhvbWUsIHBrZ05hbWUsIHZlcnNpb24pO1xuICAgIGlmICghdXRpbC5jb21wYXJlVmVyc2lvbnModW5zYWZlVXBkYXRlLCAnPicsIHZlcnNpb24pKSB7XG4gICAgICAvLyB0aGUgbGF0ZXN0IHZlcnNpb24gaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCB2ZXJzaW9uLCBzbyB0aGVyZSdzIG5vIHBvc3NpYmxlIHVwZGF0ZVxuICAgICAgdW5zYWZlVXBkYXRlID0gbnVsbDtcbiAgICAgIHNhZmVVcGRhdGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodW5zYWZlVXBkYXRlICYmIHVuc2FmZVVwZGF0ZSA9PT0gc2FmZVVwZGF0ZSkge1xuICAgICAgLy8gdGhlIGxhdGVzdCB1cGRhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIHNhZmUgdXBkYXRlLCB3aGljaCBtZWFucyBpdCdzIG5vdCBhY3R1YWxseSB1bnNhZmVcbiAgICAgIHVuc2FmZVVwZGF0ZSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChzYWZlVXBkYXRlICYmICF1dGlsLmNvbXBhcmVWZXJzaW9ucyhzYWZlVXBkYXRlLCAnPicsIHZlcnNpb24pKSB7XG4gICAgICAvLyBldmVuIHRoZSBzYWZlIHVwZGF0ZSBpcyBub3QgbGF0ZXIgdGhhbiB0aGUgY3VycmVudCwgc28gaXQgaXMgbm90IGFjdHVhbGx5IGFuIHVwZGF0ZVxuICAgICAgc2FmZVVwZGF0ZSA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7Y3VycmVudDogdmVyc2lvbiwgc2FmZVVwZGF0ZSwgdW5zYWZlVXBkYXRlfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxseSB1cGRhdGUgYW4gZXh0ZW5zaW9uIGluc3RhbGxlZCBieSBOUE0sIHVzaW5nIHRoZSBOUE0gY2xpLiBBbmQgdXBkYXRlIHRoZSBpbnN0YWxsYXRpb25cbiAgICogbWFuaWZlc3QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHQgLSBuYW1lIG9mIGV4dGVuc2lvbiB0byB1cGRhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gLSB2ZXJzaW9uIHN0cmluZyBpZGVudGlmaWVyIHRvIHVwZGF0ZSBleHRlbnNpb24gdG9cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyB1cGRhdGVFeHRlbnNpb24gKGV4dCwgdmVyc2lvbikge1xuICAgIGNvbnN0IHtwa2dOYW1lfSA9IHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0XTtcbiAgICBhd2FpdCBmcy5yaW1yYWYodGhpcy5jb25maWcuZ2V0SW5zdGFsbFBhdGgoZXh0KSk7XG4gICAgY29uc3QgZXh0RGF0YSA9IGF3YWl0IHRoaXMuaW5zdGFsbFZpYU5wbSh7ZXh0LCBwa2dOYW1lLCBwa2dWZXI6IHZlcnNpb259KTtcbiAgICBkZWxldGUgZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8oYCR7dGhpcy50eXBlfU5hbWVgKV07XG4gICAgYXdhaXQgdGhpcy5jb25maWcudXBkYXRlRXh0ZW5zaW9uKGV4dCwgZXh0RGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhIHNjcmlwdCBjYWNoZWQgaW5zaWRlIHRoZSBcInNjcmlwdHNcIiBmaWVsZCB1bmRlciBcImFwcGl1bVwiXG4gICAqIGluc2lkZSBvZiB0aGUgZHJpdmVyL3BsdWdpbnMgXCJwYWNrYWdlLmpzb25cIiBmaWxlLiBXaWxsIHRocm93XG4gICAqIGFuIGVycm9yIGlmIHRoZSBkcml2ZXIvcGx1Z2luIGRvZXMgbm90IGNvbnRhaW4gYSBcInNjcmlwdHNcIiBmaWVsZFxuICAgKiB1bmRlcm5lYXRoIHRoZSBcImFwcGl1bVwiIGZpZWxkIGluIGl0cyBwYWNrYWdlLmpzb24sIGlmIHRoZVxuICAgKiBcInNjcmlwdHNcIiBmaWVsZCBpcyBub3QgYSBwbGFpbiBvYmplY3QsIG9yIGlmIHRoZSBzY3JpcHROYW1lIGlzXG4gICAqIG5vdCBmb3VuZCB3aXRoaW4gXCJzY3JpcHRzXCIgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1J1bk9wdGlvbnN9IG9wdHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxSdW5PdXRwdXQ+fVxuICAgKi9cbiAgYXN5bmMgX3J1biAoe2V4dCwgc2NyaXB0TmFtZX0pIHtcbiAgICBpZiAoIV8uaGFzKHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMsIGV4dCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcGxlYXNlIGluc3RhbGwgdGhlICR7dGhpcy50eXBlfSBmaXJzdGApO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dENvbmZpZyA9IHRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbZXh0XTtcblxuICAgIC8vIG5vdGU6IFRTIGNhbm5vdCB1bmRlcnN0YW5kIHRoYXQgXy5oYXMoKSBpcyBhIHR5cGUgZ3VhcmRcbiAgICBpZiAoIWV4dENvbmZpZy5zY3JpcHRzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAke3RoaXMudHlwZX0gbmFtZWQgJyR7ZXh0fScgZG9lcyBub3QgY29udGFpbiB0aGUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYFwic2NyaXB0c1wiIGZpZWxkIHVuZGVybmVhdGggdGhlIFwiYXBwaXVtXCIgZmllbGQgaW4gaXRzIHBhY2thZ2UuanNvbmApO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dFNjcmlwdHMgPSBleHRDb25maWcuc2NyaXB0cztcblxuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGV4dFNjcmlwdHMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAke3RoaXMudHlwZX0gbmFtZWQgJyR7ZXh0fScgXCJzY3JpcHRzXCIgZmllbGQgbXVzdCBiZSBhIHBsYWluIG9iamVjdGApO1xuICAgIH1cblxuICAgIGlmICghXy5oYXMoZXh0U2NyaXB0cywgc2NyaXB0TmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICR7dGhpcy50eXBlfSBuYW1lZCAnJHtleHR9JyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBzY3JpcHQ6ICcke3NjcmlwdE5hbWV9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bm5lciA9IG5ldyBTdWJQcm9jZXNzKHByb2Nlc3MuZXhlY1BhdGgsIFtcbiAgICAgIGV4dFNjcmlwdHNbc2NyaXB0TmFtZV1cbiAgICBdLCB7XG4gICAgICBjd2Q6IHRoaXMuY29uZmlnLmdldEluc3RhbGxQYXRoKGV4dClcbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dCA9IG5ldyBSaW5nQnVmZmVyKDUwKTtcblxuICAgIHJ1bm5lci5vbignc3RyZWFtLWxpbmUnLCAobGluZSkgPT4ge1xuICAgICAgb3V0cHV0LmVucXVldWUobGluZSk7XG4gICAgICBsb2codGhpcy5pc0pzb25PdXRwdXQsIGxpbmUpO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgcnVubmVyLnN0YXJ0KDApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bm5lci5qb2luKCk7XG4gICAgICBsb2codGhpcy5pc0pzb25PdXRwdXQsIGAke3NjcmlwdE5hbWV9IHN1Y2Nlc3NmdWxseSByYW5gLmdyZWVuKTtcbiAgICAgIHJldHVybiB7b3V0cHV0OiBvdXRwdXQuZ2V0QnVmZigpfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgYEVuY291bnRlcmVkIGFuIGVycm9yIHdoZW4gcnVubmluZyAnJHtzY3JpcHROYW1lfSc6ICR7ZXJyLm1lc3NhZ2V9YC5yZWQpO1xuICAgICAgcmV0dXJuIHtlcnJvcjogZXJyLm1lc3NhZ2UsIG91dHB1dDogb3V0cHV0LmdldEJ1ZmYoKX07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuc2lvbkNvbW1hbmQ7XG5leHBvcnQge0V4dGVuc2lvbkNvbW1hbmR9O1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmR9IGNvbnN0cnVjdG9yXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIEV4dGVuc2lvbkNvbW1hbmRPcHRpb25zXG4gKiBAcHJvcGVydHkge0V4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn0gY29uZmlnIC0gdGhlIGBEcml2ZXJDb25maWdgIG9yIGBQbHVnaW5Db25maWdgIGluc3RhbmNlIHVzZWQgZm9yIHRoaXMgY29tbWFuZFxuICogQHByb3BlcnR5IHtib29sZWFufSBqc29uIC0gd2hldGhlciB0aGUgb3V0cHV0IG9mIHRoaXMgY29tbWFuZCBzaG91bGQgYmUgSlNPTiBvciB0ZXh0XG4gKi9cblxuLyoqXG4gKiBFeHRyYSBzdHVmZiBhYm91dCBleHRlbnNpb25zOyB1c2VkIGluZGlyZWN0bHkgYnkge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmxpc3R9LlxuICpcbiAqIEB0eXBlZGVmIEV4dGVuc2lvbk1ldGFkYXRhXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGluc3RhbGxlZCAtIElmIGB0cnVlYCwgdGhlIGV4dGVuc2lvbiBpcyBpbnN0YWxsZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nP30gdXBkYXRlVmVyc2lvbiAtIElmIHRoZSBleHRlbnNpb24gaXMgaW5zdGFsbGVkLCB0aGUgdmVyc2lvbiBpdCBjYW4gYmUgdXBkYXRlZCB0b1xuICogQHByb3BlcnR5IHtzdHJpbmc/fSB1bnNhZmVVcGRhdGVWZXJzaW9uIC0gU2FtZSBhcyBhYm92ZSwgYnV0IGEgbWFqb3IgdmVyc2lvbiBidW1wXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVwVG9EYXRlIC0gSWYgdGhlIGV4dGVuc2lvbiBpcyBpbnN0YWxsZWQgYW5kIHRoZSBsYXRlc3RcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0ZW5zaW9uVHlwZX0gRXh0ZW5zaW9uVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuRXh0UmVjb3JkPEV4dFR5cGU+fSBFeHRSZWNvcmRcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vZXh0ZW5zaW9uL2V4dGVuc2lvbi1jb25maWcnKS5FeHRlbnNpb25Db25maWc8RXh0VHlwZT59IEV4dGVuc2lvbkNvbmZpZ1xuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkV4dE1ldGFkYXRhPEV4dFR5cGU+fSBFeHRNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5FeHRNYW5pZmVzdDxFeHRUeXBlPn0gRXh0TWFuaWZlc3RcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvZXh0ZXJuYWwtbWFuaWZlc3QnKS5FeHRQYWNrYWdlSnNvbjxFeHRUeXBlPn0gRXh0UGFja2FnZUpzb25cbiAqL1xuXG4vKipcbiAqIFBvc3NpYmxlIHJldHVybiB2YWx1ZSBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmxpc3R9XG4gKiBAdHlwZWRlZiBVbmluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGtnTmFtZVxuICogQHByb3BlcnR5IHtmYWxzZX0gaW5zdGFsbGVkXG4gKi9cblxuLyoqXG4gKiBQb3NzaWJsZSByZXR1cm4gdmFsdWUgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5saXN0fVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuSW50ZXJuYWxNZXRhZGF0YSAmIEV4dGVuc2lvbk1ldGFkYXRhfSBJbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YVxuICovXG5cbi8qKlxuICogUmV0dXJuIHZhbHVlIG9mIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5saXN0fS5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLEluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhfFVuaW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGE+fSBFeHRlbnNpb25MaXN0RGF0YVxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl9ydW59LlxuICogQHR5cGVkZWYgUnVuT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGV4dCAtIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0byBydW4gYSBzY3JpcHQgZnJvbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNjcmlwdE5hbWUgLSBuYW1lIG9mIHRoZSBzY3JpcHQgdG8gcnVuXG4gKi9cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgb2Yge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl9ydW59XG4gKlxuICogQHR5cGVkZWYgUnVuT3V0cHV0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Vycm9yXSAtIGVycm9yIG1lc3NhZ2UgaWYgc2NyaXB0IHJhbiB1bnN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gb3V0cHV0IC0gc2NyaXB0IG91dHB1dFxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl91cGRhdGV9LlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uVXBkYXRlT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGV4dCAtIHRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdG8gdXBkYXRlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHVuc2FmZSAtIGlmIHRydWUsIHdpbGwgcGVyZm9ybSB1bnNhZmUgdXBkYXRlcyBwYXN0IG1ham9yIHJldmlzaW9uIGJvdW5kYXJpZXNcbiAqL1xuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3VwZGF0ZX0uXG4gKiBAdHlwZWRlZiBFeHRlbnNpb25VcGRhdGVSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZyxFcnJvcj59IGVycm9ycyAtIG1hcCBvZiBleHQgbmFtZXMgdG8gZXJyb3Igb2JqZWN0c1xuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLFVwZGF0ZVJlcG9ydD59IHVwZGF0ZXMgLSBtYXAgb2YgZXh0IG5hbWVzIHRvIHtAbGlua2NvZGUgVXBkYXRlUmVwb3J0fXNcbiAqL1xuXG4vKipcbiAqIFBhcnQgb2YgcmVzdWx0IG9mIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5fdXBkYXRlfS5cbiAqIEB0eXBlZGVmIFVwZGF0ZVJlcG9ydFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZyb20gLSB2ZXJzaW9uIHRoZSBleHRlbnNpb24gd2FzIHVwZGF0ZWQgZnJvbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRvIC0gdmVyc2lvbiB0aGUgZXh0ZW5zaW9uIHdhcyB1cGRhdGVkIHRvXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3VuaW5zdGFsbH0uXG4gKiBAdHlwZWRlZiBVbmluc3RhbGxPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXh0IC0gdGhlIG5hbWUgb3Igc3BlYyBvZiBhbiBleHRlbnNpb24gdG8gdW5pbnN0YWxsXG4gKi9cblxuLyoqXG4gKiBVc2VkIGJ5IHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5nZXRQb3N0SW5zdGFsbFRleHR9XG4gKiBAdHlwZWRlZiBFeHRlbnNpb25BcmdzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXh0TmFtZSAtIHRoZSBuYW1lIG9mIGFuIGV4dGVuc2lvblxuICogQHByb3BlcnR5IHtvYmplY3R9IGV4dERhdGEgLSB0aGUgZGF0YSBmb3IgYW4gaW5zdGFsbGVkIGV4dGVuc2lvblxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmluc3RhbGxWaWFOcG19XG4gKiBAdHlwZWRlZiBJbnN0YWxsVmlhTnBtQXJnc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGV4dCAtIHRoZSBuYW1lIG9yIHNwZWMgb2YgYW4gZXh0ZW5zaW9uIHRvIGluc3RhbGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwa2dOYW1lIC0gdGhlIE5QTSBwYWNrYWdlIG5hbWUgb2YgdGhlIGV4dGVuc2lvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwa2dWZXJdIC0gdGhlIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIE5QTSBwYWNrYWdlXG4gKi9cblxuLyoqXG4gKiBPYmplY3QgcmV0dXJuZWQgYnkge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlfVxuICogQHR5cGVkZWYgUG9zc2libGVVcGRhdGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY3VycmVudCAtIGN1cnJlbnQgdmVyc2lvblxuICogQHByb3BlcnR5IHtzdHJpbmc/fSBzYWZlVXBkYXRlIC0gdmVyc2lvbiB3ZSBjYW4gc2FmZWx5IHVwZGF0ZSB0byBpZiBpdCBleGlzdHMsIG9yIG51bGxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nP30gdW5zYWZlVXBkYXRlIC0gdmVyc2lvbiB3ZSBjYW4gdW5zYWZlbHkgdXBkYXRlIHRvIGlmIGl0IGV4aXN0cywgb3IgbnVsbFxuICovXG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl9pbnN0YWxsfVxuICogQHR5cGVkZWYgSW5zdGFsbEFyZ3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBleHQgLSB0aGUgbmFtZSBvciBzcGVjIG9mIGFuIGV4dGVuc2lvbiB0byBpbnN0YWxsXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi4vLi4vdHlwZXMvYXBwaXVtLW1hbmlmZXN0JykuSW5zdGFsbFR5cGV9IGluc3RhbGxUeXBlIC0gaG93IHRvIGluc3RhbGwgdGhpcyBleHRlbnNpb24uIE9uZSBvZiB0aGUgSU5TVEFMTF9UWVBFU1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwYWNrYWdlTmFtZV0gLSBmb3IgZ2l0L2dpdGh1YiBpbnN0YWxscywgdGhlIGV4dGVuc2lvbiBub2RlIHBhY2thZ2UgbmFtZVxuICovXG5cbi8qKlxuICogUmV0dXJuZWQgYnkge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmdldEV4dGVuc2lvbkZpZWxkc31cbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge0V4dE1ldGFkYXRhPEV4dFR5cGU+ICYgeyBwa2dOYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyB9ICYgaW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkNvbW1vbk1ldGFkYXRhfSBFeHRlbnNpb25GaWVsZHNcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge0V4dFR5cGUgZXh0ZW5kcyBEcml2ZXJUeXBlID8gdHlwZW9mIGltcG9ydCgnLi4vY29uc3RhbnRzJykuS05PV05fRFJJVkVSUyA6IEV4dFR5cGUgZXh0ZW5kcyBQbHVnaW5UeXBlID8gdHlwZW9mIGltcG9ydCgnLi4vY29uc3RhbnRzJykuS05PV05fUExVR0lOUyA6IG5ldmVyfSBLbm93bkV4dGVuc2lvbnNcbiAqL1xuIl19
479
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVUERBVEVfQUxMIiwiTm90VXBkYXRhYmxlRXJyb3IiLCJFcnJvciIsIk5vVXBkYXRlc0F2YWlsYWJsZUVycm9yIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbmZpZyIsImtub3duRXh0ZW5zaW9ucyIsImlzSnNvbk91dHB1dCIsImNvbnN0cnVjdG9yIiwianNvbiIsInR5cGUiLCJleHRlbnNpb25UeXBlIiwiZXhlY3V0ZSIsImFyZ3MiLCJjbWQiLCJfIiwiaXNGdW5jdGlvbiIsImV4ZWN1dGVDbWQiLCJiaW5kIiwibGlzdCIsInNob3dJbnN0YWxsZWQiLCJzaG93VXBkYXRlcyIsImxzTXNnIiwiaW5zdGFsbGVkTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiaW5zdGFsbGVkRXh0ZW5zaW9ucyIsImtub3duTmFtZXMiLCJleHRzIiwicmVkdWNlIiwiYWNjIiwibmFtZSIsImluY2x1ZGVzIiwiaW5zdGFsbGVkIiwicGtnTmFtZSIsImV4dCIsImRhdGEiLCJ0b1BhaXJzIiwiaW5zdGFsbFR5cGUiLCJJTlNUQUxMX1RZUEVfTlBNIiwidXBkYXRlcyIsImNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlIiwidXBkYXRlVmVyc2lvbiIsInNhZmVVcGRhdGUiLCJ1bnNhZmVVcGRhdGVWZXJzaW9uIiwidW5zYWZlVXBkYXRlIiwidXBUb0RhdGUiLCJsaXN0RGF0YSIsImluc3RhbGxUeHQiLCJncmV5IiwidXBkYXRlVHh0IiwidXBUb0RhdGVUeHQiLCJ1bnNhZmVVcGRhdGVUeHQiLCJpbnN0YWxsU3BlYyIsInZlcnNpb24iLCJ0eXBlVHh0IiwiSU5TVEFMTF9UWVBFX0dJVCIsIklOU1RBTExfVFlQRV9HSVRIVUIiLCJ5ZWxsb3ciLCJJTlNUQUxMX1RZUEVfTE9DQUwiLCJtYWdlbnRhIiwiZ3JlZW4iLCJjeWFuIiwiY29uc29sZSIsImxvZyIsIl9pbnN0YWxsIiwicGFja2FnZU5hbWUiLCJleHREYXRhIiwic3BsaXQiLCJsZW5ndGgiLCJpbnN0YWxsVmlhTnBtIiwicmVwbGFjZSIsInBrZ1ZlciIsInBhdGgiLCJpc0Fic29sdXRlIiwicmVzb2x2ZSIsInNwbGl0cyIsIm1zZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJleHROYW1lIiwiaXNJbnN0YWxsZWQiLCJleHRNYW5pZmVzdCIsImFkZEV4dGVuc2lvbiIsImVudiIsImhhc0FwcGl1bURlcGVuZGVuY3kiLCJhcHBpdW1Ib21lIiwiZ2V0UG9zdEluc3RhbGxUZXh0IiwibnBtU3BlYyIsInNwZWNNc2ciLCJwa2dKc29uRGF0YSIsIm5wbSIsImluc3RhbGxQYWNrYWdlIiwiZ2V0RXh0ZW5zaW9uRmllbGRzIiwiZXJyIiwibWVzc2FnZSIsImFwcGl1bSIsInZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIiwicmVzdWx0IiwiYXBwaXVtUGtnRGF0YSIsIl91bmluc3RhbGwiLCJpbnN0YWxsUGF0aCIsImdldEluc3RhbGxQYXRoIiwiZnMiLCJyaW1yYWYiLCJyZW1vdmVFeHRlbnNpb24iLCJfdXBkYXRlIiwidW5zYWZlIiwic2hvdWxkVXBkYXRlQWxsIiwiZXh0c1RvVXBkYXRlIiwiZXJyb3JzIiwiZSIsInVwZGF0ZSIsImN1cnJlbnQiLCJ1cGRhdGVWZXIiLCJ1cGRhdGVFeHRlbnNpb24iLCJmcm9tIiwidG8iLCJyZWQiLCJnZXRMYXRlc3RWZXJzaW9uIiwiZ2V0TGF0ZXN0U2FmZVVwZ3JhZGVWZXJzaW9uIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsIl9ydW4iLCJzY3JpcHROYW1lIiwiaGFzIiwiZXh0Q29uZmlnIiwic2NyaXB0cyIsImV4dFNjcmlwdHMiLCJpc1BsYWluT2JqZWN0IiwicnVubmVyIiwiU3ViUHJvY2VzcyIsInByb2Nlc3MiLCJleGVjUGF0aCIsImN3ZCIsIm91dHB1dCIsIlJpbmdCdWZmZXIiLCJvbiIsImxpbmUiLCJlbnF1ZXVlIiwic3RhcnQiLCJqb2luIiwiZ2V0QnVmZiIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NsaS9leHRlbnNpb24tY29tbWFuZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IG5wbSwgZnMsIHV0aWwsIGVudiB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBsb2csIHNwaW5XaXRoLCBSaW5nQnVmZmVyIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IElOU1RBTExfVFlQRV9OUE0sIElOU1RBTExfVFlQRV9HSVQsIElOU1RBTExfVFlQRV9HSVRIVUIsXG4gICAgICAgICBJTlNUQUxMX1RZUEVfTE9DQUwgfSBmcm9tICcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBwYWNrYWdlRGlkQ2hhbmdlIH0gZnJvbSAnLi4vZXh0ZW5zaW9uL3BhY2thZ2UtY2hhbmdlZCc7XG5cbmNvbnN0IFVQREFURV9BTEwgPSAnaW5zdGFsbGVkJztcblxuY2xhc3MgTm90VXBkYXRhYmxlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuY2xhc3MgTm9VcGRhdGVzQXZhaWxhYmxlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICovXG5jbGFzcyBFeHRlbnNpb25Db21tYW5kIHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGBEcml2ZXJDb25maWdgIG9yIGBQbHVnaW5Db25maWdgLCBkZXBlbmRpbmcgb24gYEV4dFR5cGVgLlxuICAgKiBAdHlwZSB7RXh0ZW5zaW9uQ29uZmlnPEV4dFR5cGU+fVxuICAgKi9cbiAgY29uZmlnO1xuXG4gIC8qKlxuICAgKiB7QGxpbmtjb2RlIFJlY29yZH0gb2Ygb2ZmaWNpYWwgcGx1Z2lucyBvciBkcml2ZXJzLlxuICAgKiBAdHlwZSB7S25vd25FeHRlbnNpb25zPEV4dFR5cGU+fVxuICAgKi9cbiAga25vd25FeHRlbnNpb25zO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGNvbW1hbmQgb3V0cHV0IGhhcyBiZWVuIHJlcXVlc3RlZCBhcyBKU09OLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGlzSnNvbk91dHB1dDtcblxuICAvKipcbiAgICogQnVpbGQgYW4gRXh0ZW5zaW9uQ29tbWFuZFxuICAgKiBAcGFyYW0ge0V4dGVuc2lvbkNvbW1hbmRPcHRpb25zPEV4dFR5cGU+fSBvcHRzXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoe2NvbmZpZywganNvbn0pIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmlzSnNvbk91dHB1dCA9IGpzb247XG4gIH1cblxuICAvKipcbiAgICogYGRyaXZlcmAgb3IgYHBsdWdpbmAsIGRlcGVuZGluZyBvbiB0aGUgYEV4dGVuc2lvbkNvbmZpZ2AuXG4gICAqL1xuICBnZXQgdHlwZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmV4dGVuc2lvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogVGFrZSBhIENMSSBwYXJzZSBhbmQgcnVuIGFuIGV4dGVuc2lvbiBjb21tYW5kIGJhc2VkIG9uIGl0cyB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gYSBrZXkvdmFsdWUgb2JqZWN0IHdpdGggQ0xJIGZsYWdzIGFuZCB2YWx1ZXNcbiAgICogQHJldHVybiB7UHJvbWlzZTxvYmplY3Q+fSB0aGUgcmVzdWx0IG9mIHRoZSBzcGVjaWZpYyBjb21tYW5kIHdoaWNoIGlzIGV4ZWN1dGVkXG4gICAqL1xuICBhc3luYyBleGVjdXRlIChhcmdzKSB7XG4gICAgY29uc3QgY21kID0gYXJnc1tgJHt0aGlzLnR5cGV9Q29tbWFuZGBdO1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKHRoaXNbY21kXSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGhhbmRsZSAke3RoaXMudHlwZX0gY29tbWFuZCAke2NtZH1gKTtcbiAgICB9XG4gICAgY29uc3QgZXhlY3V0ZUNtZCA9IHRoaXNbY21kXS5iaW5kKHRoaXMpO1xuICAgIHJldHVybiBhd2FpdCBleGVjdXRlQ21kKGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlZGVmIExpc3RPcHRpb25zXG4gICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc2hvd0luc3RhbGxlZCAtIHdoZXRoZXIgc2hvdWxkIHNob3cgb25seSBpbnN0YWxsZWQgZXh0ZW5zaW9uc1xuICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHNob3dVcGRhdGVzIC0gd2hldGhlciBzaG91bGQgc2hvdyBhdmFpbGFibGUgdXBkYXRlc1xuICAgKi9cblxuICAvKipcbiAgICogTGlzdCBleHRlbnNpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7TGlzdE9wdGlvbnN9IG9wdHNcbiAgICogQHJldHVybiB7UHJvbWlzZTxFeHRlbnNpb25MaXN0RGF0YT59IG1hcCBvZiBleHRlbnNpb24gbmFtZXMgdG8gZXh0ZW5zaW9uIGRhdGFcbiAgICovXG4gIGFzeW5jIGxpc3QgKHtzaG93SW5zdGFsbGVkLCBzaG93VXBkYXRlc30pIHtcbiAgICBjb25zdCBsc01zZyA9IGBMaXN0aW5nICR7c2hvd0luc3RhbGxlZCA/ICdpbnN0YWxsZWQnIDogJ2F2YWlsYWJsZSd9ICR7dGhpcy50eXBlfXNgO1xuICAgIGNvbnN0IGluc3RhbGxlZE5hbWVzID0gT2JqZWN0LmtleXModGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucyk7XG4gICAgY29uc3Qga25vd25OYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMua25vd25FeHRlbnNpb25zKTtcbiAgICBjb25zdCBleHRzID0gWy4uLmluc3RhbGxlZE5hbWVzLCAuLi5rbm93bk5hbWVzXS5yZWR1Y2UoKGFjYywgbmFtZSkgPT4ge1xuICAgICAgaWYgKCFhY2NbbmFtZV0pIHtcbiAgICAgICAgaWYgKGluc3RhbGxlZE5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgICAgYWNjW25hbWVdID0gey4uLnRoaXMuY29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnNbbmFtZV0sIGluc3RhbGxlZDogdHJ1ZX07XG4gICAgICAgIH0gZWxzZSBpZiAoIXNob3dJbnN0YWxsZWQpIHtcbiAgICAgICAgICBhY2NbbmFtZV0gPSB7cGtnTmFtZTogdGhpcy5rbm93bkV4dGVuc2lvbnNbbmFtZV0sIGluc3RhbGxlZDogZmFsc2V9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVGhpcyBhY2N1bXVsYXRvciBjb250YWlucyBlaXRoZXIge0BsaW5rY29kZSBVbmluc3RhbGxlZEV4dGVuc2lvbkxJc3REYXRhfSBfb3JfXG4gICAgICoge0BsaW5rY29kZSBJbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YX0gd2l0aG91dCB1cGdyYWRlIGluZm9ybWF0aW9uICh3aGljaCBpcyBhZGRlZCBieSB0aGUgYmVsb3cgY29kZSBibG9jaylcbiAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxQYXJ0aWFsPEluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPnxVbmluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhPn1cbiAgICAgKi8oe30pKTtcblxuICAgIC8vIGlmIHdlIHdhbnQgdG8gc2hvdyB3aGV0aGVyIHVwZGF0ZXMgYXJlIGF2YWlsYWJsZSwgcHV0IHRoYXQgYmVoaW5kIGEgc3Bpbm5lclxuICAgIGF3YWl0IHNwaW5XaXRoKHRoaXMuaXNKc29uT3V0cHV0LCBsc01zZywgYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCFzaG93VXBkYXRlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IFtleHQsIGRhdGFdIG9mIF8udG9QYWlycyhleHRzKSkge1xuICAgICAgICBpZiAoIWRhdGEuaW5zdGFsbGVkIHx8IGRhdGEuaW5zdGFsbFR5cGUgIT09IElOU1RBTExfVFlQRV9OUE0pIHtcbiAgICAgICAgICAvLyBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciB1cGRhdGVzIG9uIGV4dHMgdGhhdCBhcmVuJ3QgaW5zdGFsbGVkXG4gICAgICAgICAgLy8gYWxzbyBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciB1cGRhdGVzIG9uIG5vbi1ucG0gZXh0c1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVwZGF0ZXMgPSBhd2FpdCB0aGlzLmNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlKGV4dCk7XG4gICAgICAgIGRhdGEudXBkYXRlVmVyc2lvbiA9IHVwZGF0ZXMuc2FmZVVwZGF0ZTtcbiAgICAgICAgZGF0YS51bnNhZmVVcGRhdGVWZXJzaW9uID0gdXBkYXRlcy51bnNhZmVVcGRhdGU7XG4gICAgICAgIGRhdGEudXBUb0RhdGUgPSB1cGRhdGVzLnNhZmVVcGRhdGUgPT09IG51bGwgJiYgdXBkYXRlcy51bnNhZmVVcGRhdGUgPT09IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBsaXN0RGF0YSA9IC8qKiBAdHlwZSB7RXh0ZW5zaW9uTGlzdERhdGF9ICovKGV4dHMpO1xuXG4gICAgLy8gaWYgd2UncmUganVzdCBnZXR0aW5nIHRoZSBkYXRhLCBzaG9ydCBjaXJjdWl0IHJldHVybiBoZXJlIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55XG4gICAgLy8gZm9ybWF0dGluZyBsb2dpY1xuICAgIGlmICh0aGlzLmlzSnNvbk91dHB1dCkge1xuICAgICAgcmV0dXJuIGxpc3REYXRhO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW1xuICAgICAgbmFtZSxcbiAgICAgIGRhdGFcbiAgICBdIG9mIF8udG9QYWlycyhsaXN0RGF0YSkpIHtcbiAgICAgIGxldCBpbnN0YWxsVHh0ID0gJyBbbm90IGluc3RhbGxlZF0nLmdyZXk7XG4gICAgICBsZXQgdXBkYXRlVHh0ID0gJyc7XG4gICAgICBsZXQgdXBUb0RhdGVUeHQgPSAnJztcbiAgICAgIGxldCB1bnNhZmVVcGRhdGVUeHQgPSAnJztcbiAgICAgIGlmIChkYXRhLmluc3RhbGxlZCkge1xuICAgICAgICBjb25zdCB7aW5zdGFsbFR5cGUsIGluc3RhbGxTcGVjLCB1cGRhdGVWZXJzaW9uLCB1bnNhZmVVcGRhdGVWZXJzaW9uLCB2ZXJzaW9uLCB1cFRvRGF0ZX0gPSBkYXRhO1xuICAgICAgICBsZXQgdHlwZVR4dDtcbiAgICAgICAgc3dpdGNoIChpbnN0YWxsVHlwZSkge1xuICAgICAgICAgIGNhc2UgSU5TVEFMTF9UWVBFX0dJVDpcbiAgICAgICAgICBjYXNlIElOU1RBTExfVFlQRV9HSVRIVUI6XG4gICAgICAgICAgICB0eXBlVHh0ID0gYChjbG9uZWQgZnJvbSAke2luc3RhbGxTcGVjfSlgLnllbGxvdztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgSU5TVEFMTF9UWVBFX0xPQ0FMOlxuICAgICAgICAgICAgdHlwZVR4dCA9IGAobGlua2VkIGZyb20gJHtpbnN0YWxsU3BlY30pYC5tYWdlbnRhO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHR5cGVUeHQgPSAnKE5QTSknO1xuICAgICAgICB9XG4gICAgICAgIGluc3RhbGxUeHQgPSBgQCR7dmVyc2lvbi55ZWxsb3d9ICR7KCdbaW5zdGFsbGVkICcgKyB0eXBlVHh0ICsgJ10nKS5ncmVlbn1gO1xuXG4gICAgICAgIGlmIChzaG93VXBkYXRlcykge1xuICAgICAgICAgIGlmICh1cGRhdGVWZXJzaW9uKSB7XG4gICAgICAgICAgICB1cGRhdGVUeHQgPSBgIFske3VwZGF0ZVZlcnNpb259IGF2YWlsYWJsZV1gLm1hZ2VudGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1cFRvRGF0ZSkge1xuICAgICAgICAgICAgdXBUb0RhdGVUeHQgPSBgIFtVcCB0byBkYXRlXWAuZ3JlZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1bnNhZmVVcGRhdGVWZXJzaW9uKSB7XG4gICAgICAgICAgICB1bnNhZmVVcGRhdGVUeHQgPSBgIFske3Vuc2FmZVVwZGF0ZVZlcnNpb259IGF2YWlsYWJsZSAocG90ZW50aWFsbHkgdW5zYWZlKV1gLmN5YW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGAtICR7bmFtZS55ZWxsb3d9JHtpbnN0YWxsVHh0fSR7dXBkYXRlVHh0fSR7dXBUb0RhdGVUeHR9JHt1bnNhZmVVcGRhdGVUeHR9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3REYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGwgYW4gZXh0ZW5zaW9uXG4gICAqXG4gICAqIEBwYXJhbSB7SW5zdGFsbEFyZ3N9IGFyZ3NcbiAgICogQHJldHVybiB7UHJvbWlzZTxFeHRSZWNvcmQ8RXh0VHlwZT4+fSBtYXAgb2YgYWxsIGluc3RhbGxlZCBleHRlbnNpb24gbmFtZXMgdG8gZXh0ZW5zaW9uIGRhdGFcbiAgICovXG4gIGFzeW5jIF9pbnN0YWxsICh7ZXh0LCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgbGV0IGV4dERhdGE7XG4gICAgbGV0IGluc3RhbGxTcGVjID0gZXh0O1xuXG4gICAgaWYgKHBhY2thZ2VOYW1lICYmIFtJTlNUQUxMX1RZUEVfTE9DQUwsIElOU1RBTExfVFlQRV9OUE1dLmluY2x1ZGVzKGluc3RhbGxUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaGVuIHVzaW5nIC0tc291cmNlPSR7aW5zdGFsbFR5cGV9LCBjYW5ub3QgYWxzbyB1c2UgLS1wYWNrYWdlYCk7XG4gICAgfVxuXG4gICAgaWYgKCFwYWNrYWdlTmFtZSAmJiBbSU5TVEFMTF9UWVBFX0dJVCwgSU5TVEFMTF9UWVBFX0dJVEhVQl0uaW5jbHVkZXMoaW5zdGFsbFR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdoZW4gdXNpbmcgLS1zb3VyY2U9JHtpbnN0YWxsVHlwZX0sIG11c3QgYWxzbyB1c2UgLS1wYWNrYWdlYCk7XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbGxUeXBlID09PSBJTlNUQUxMX1RZUEVfR0lUSFVCKSB7XG4gICAgICBpZiAoaW5zdGFsbFNwZWMuc3BsaXQoJy8nKS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHaXRodWIgJHt0aGlzLnR5cGV9IHNwZWMgJHtpbnN0YWxsU3BlY30gYXBwZWFyZWQgdG8gYmUgaW52YWxpZDsgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkIGJlIG9mIHRoZSBmb3JtIDxvcmc+LzxyZXBvPicpO1xuICAgICAgfVxuICAgICAgZXh0RGF0YSA9IGF3YWl0IHRoaXMuaW5zdGFsbFZpYU5wbSh7ZXh0OiBpbnN0YWxsU3BlYywgcGtnTmFtZTogLyoqIEB0eXBlIHtzdHJpbmd9ICovKHBhY2thZ2VOYW1lKX0pO1xuICAgIH0gZWxzZSBpZiAoaW5zdGFsbFR5cGUgPT09IElOU1RBTExfVFlQRV9HSVQpIHtcbiAgICAgIC8vIGdpdCB1cmxzIGNhbiBoYXZlICcuZ2l0JyBhdCB0aGUgZW5kLCBidXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFuZCB3b3VsZCBjb21wbGljYXRlIHRoZVxuICAgICAgLy8gd2F5IHdlIGRvd25sb2FkIGFuZCBuYW1lIGRpcmVjdG9yaWVzLCBzbyB3ZSBjYW4ganVzdCByZW1vdmUgaXRcbiAgICAgIGluc3RhbGxTcGVjID0gaW5zdGFsbFNwZWMucmVwbGFjZSgvXFwuZ2l0JC8sICcnKTtcbiAgICAgIGV4dERhdGEgPSBhd2FpdCB0aGlzLmluc3RhbGxWaWFOcG0oe2V4dDogaW5zdGFsbFNwZWMsIHBrZ05hbWU6IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyhwYWNrYWdlTmFtZSl9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBrZ05hbWUsIHBrZ1ZlcjtcbiAgICAgIGlmIChpbnN0YWxsVHlwZSA9PT0gSU5TVEFMTF9UWVBFX0xPQ0FMKSB7XG4gICAgICAgIHBrZ05hbWUgPSBwYXRoLmlzQWJzb2x1dGUoaW5zdGFsbFNwZWMpID8gaW5zdGFsbFNwZWMgOiBwYXRoLnJlc29sdmUoaW5zdGFsbFNwZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYXQgdGhpcyBwb2ludCB3ZSBoYXZlIGVpdGhlciBhbiBucG0gcGFja2FnZSBvciBhbiBhcHBpdW0gdmVyaWZpZWQgZXh0ZW5zaW9uXG4gICAgICAgIC8vIG5hbWUgb3IgYSBsb2NhbCBwYXRoLiBib3RoIG9mIHdoaWNoIHdpbGwgYmUgaW5zdGFsbGVkIHZpYSBucG0uXG4gICAgICAgIC8vIGV4dGVuc2lvbnMgaW5zdGFsbGVkIHZpYSBucG0gY2FuIGluY2x1ZGUgdmVyc2lvbnMgb3IgdGFncyBhZnRlciB0aGUgJ0AnXG4gICAgICAgIC8vIHNpZ24sIHNvIGNoZWNrIGZvciB0aGF0LiBXZSBhbHNvIG5lZWQgdG8gYmUgY2FyZWZ1bCB0aGF0IHBhY2thZ2UgbmFtZXMgdGhlbXNlbHZlcyBjYW5cbiAgICAgICAgLy8gY29udGFpbiB0aGUgJ0AnIHN5bWJvbCwgYXMgaW4gYG5wbSBpbnN0YWxsIEBhcHBpdW0vZmFrZS1kcml2ZXJAMS4yLjBgXG4gICAgICAgIGxldCBuYW1lO1xuICAgICAgICBjb25zdCBzcGxpdHMgPSBpbnN0YWxsU3BlYy5zcGxpdCgnQCcpO1xuICAgICAgICBpZiAoaW5zdGFsbFNwZWNbMF0gPT09ICdAJykge1xuICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgd2UgaGF2ZSBhbiBucG0gb3JnIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdlIG5hbWVcbiAgICAgICAgICBbbmFtZSwgcGtnVmVyXSA9IFtgQCR7c3BsaXRzWzFdfWAsIHNwbGl0c1syXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyB0aGUgY2FzZSB3aXRob3V0IGFuIG5wbSBvcmdcbiAgICAgICAgICBbbmFtZSwgcGtnVmVyXSA9IHNwbGl0cztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnN0YWxsVHlwZSA9PT0gSU5TVEFMTF9UWVBFX05QTSkge1xuICAgICAgICAgIC8vIGlmIHdlJ3JlIGluc3RhbGxpbmcgYSBuYW1lZCBwYWNrYWdlIGZyb20gbnBtLCB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrXG4gICAgICAgICAgLy8gYWdhaW5zdCB0aGUgYXBwaXVtIGV4dGVuc2lvbiBsaXN0OyBqdXN0IHVzZSB0aGUgaW5zdGFsbFNwZWMgYXMgaXNcbiAgICAgICAgICBwa2dOYW1lID0gbmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpZiB3ZSdyZSBpbnN0YWxsaW5nIGEgbmFtZWQgYXBwaXVtIGRyaXZlciAobGlrZSAneGN1aXRlc3QnKSB3ZSBuZWVkIHRvXG4gICAgICAgICAgLy8gZGVyZWZlcmVuY2UgdGhlIGFjdHVhbCBucG0gcGFja2FnZSAoJ2FwcGl1cG0teGN1aXRlc3QtZHJpdmVyJyksIHNvXG4gICAgICAgICAgLy8gY2hlY2sgaXQgZXhpc3RzIGFuZCBnZXQgdGhlIGNvcnJlY3QgcGFja2FnZVxuICAgICAgICAgIGNvbnN0IGtub3duTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmtub3duRXh0ZW5zaW9ucyk7XG4gICAgICAgICAgaWYgKCFfLmluY2x1ZGVzKGtub3duTmFtZXMsIG5hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBgQ291bGQgbm90IHJlc29sdmUgJHt0aGlzLnR5cGV9OyBhcmUgeW91IHN1cmUgaXQncyBpbiB0aGUgbGlzdCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBvZiBzdXBwb3J0ZWQgJHt0aGlzLnR5cGV9cz8gJHtKU09OLnN0cmluZ2lmeShrbm93bk5hbWVzKX1gO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHBrZ05hbWUgPSB0aGlzLmtub3duRXh0ZW5zaW9uc1tuYW1lXTtcbiAgICAgICAgICAvLyBnaXZlbiB0aGF0IHdlJ2xsIHVzZSB0aGUgaW5zdGFsbCB0eXBlIGluIHRoZSBkcml2ZXIganNvbiwgc3RvcmUgaXQgYXNcbiAgICAgICAgICAvLyAnbnBtJyBub3dcbiAgICAgICAgICBpbnN0YWxsVHlwZSA9IElOU1RBTExfVFlQRV9OUE07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZXh0RGF0YSA9IGF3YWl0IHRoaXMuaW5zdGFsbFZpYU5wbSh7ZXh0LCBwa2dOYW1lLCBwa2dWZXJ9KTtcbiAgICB9XG5cbiAgICBjb25zdCBleHROYW1lID0gZXh0RGF0YVsvKiogQHR5cGUge3N0cmluZ30gKi8oYCR7dGhpcy50eXBlfU5hbWVgKV07XG4gICAgZGVsZXRlIGV4dERhdGFbLyoqIEB0eXBlIHtzdHJpbmd9ICovKGAke3RoaXMudHlwZX1OYW1lYCldO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmlzSW5zdGFsbGVkKGV4dE5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEEgJHt0aGlzLnR5cGV9IG5hbWVkICcke2V4dE5hbWV9JyBpcyBhbHJlYWR5IGluc3RhbGxlZC4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgYERpZCB5b3UgbWVhbiB0byB1cGRhdGU/ICdhcHBpdW0gJHt0aGlzLnR5cGV9IHVwZGF0ZScuIFNlZSBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgaW5zdGFsbGVkICR7dGhpcy50eXBlfXMgd2l0aCAnYXBwaXVtICR7dGhpcy50eXBlfSBsaXN0IC0taW5zdGFsbGVkJy5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHRNYW5pZmVzdCA9IHsuLi5leHREYXRhLCBpbnN0YWxsVHlwZSwgaW5zdGFsbFNwZWN9O1xuICAgIGF3YWl0IHRoaXMuY29uZmlnLmFkZEV4dGVuc2lvbihleHROYW1lLCBleHRNYW5pZmVzdCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGlmIHdlJ3ZlIGNoYW5nZWQgdGhlIGxvY2FsIGBwYWNrYWdlLmpzb25gXG4gICAgaWYgKGF3YWl0IGVudi5oYXNBcHBpdW1EZXBlbmRlbmN5KHRoaXMuY29uZmlnLmFwcGl1bUhvbWUpKSB7XG4gICAgICBhd2FpdCBwYWNrYWdlRGlkQ2hhbmdlKHRoaXMuY29uZmlnLmFwcGl1bUhvbWUpO1xuICAgIH1cblxuICAgIC8vIGxvZyBpbmZvIGZvciB0aGUgdXNlclxuICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgdGhpcy5nZXRQb3N0SW5zdGFsbFRleHQoe2V4dE5hbWUsIGV4dERhdGF9KSk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxsIGFuIGV4dGVuc2lvbiB2aWEgTlBNXG4gICAqXG4gICAqIEBwYXJhbSB7SW5zdGFsbFZpYU5wbUFyZ3N9IGFyZ3NcbiAgICovXG4gIGFzeW5jIGluc3RhbGxWaWFOcG0gKHtleHQsIHBrZ05hbWUsIHBrZ1Zlcn0pIHtcbiAgICBjb25zdCBucG1TcGVjID0gYCR7cGtnTmFtZX0ke3BrZ1ZlciA/ICdAJyArIHBrZ1ZlciA6ICcnfWA7XG4gICAgY29uc3Qgc3BlY01zZyA9IG5wbVNwZWMgPT09IGV4dCA/ICcnIDogYCB1c2luZyBOUE0gaW5zdGFsbCBzcGVjICcke25wbVNwZWN9J2A7XG4gICAgY29uc3QgbXNnID0gYEluc3RhbGxpbmcgJyR7ZXh0fScke3NwZWNNc2d9YDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGtnSnNvbkRhdGEgPSBhd2FpdCBzcGluV2l0aCh0aGlzLmlzSnNvbk91dHB1dCwgbXNnLCBhc3luYyAoKSA9PiAoXG4gICAgICAgIGF3YWl0IG5wbS5pbnN0YWxsUGFja2FnZSh0aGlzLmNvbmZpZy5hcHBpdW1Ib21lLCBwa2dOYW1lLCB7XG4gICAgICAgICAgcGtnVmVyXG4gICAgICAgIH0pXG4gICAgICApKTtcbiAgICAgIHJldHVybiB0aGlzLmdldEV4dGVuc2lvbkZpZWxkcyhwa2dKc29uRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuY291bnRlcmVkIGFuIGVycm9yIHdoZW4gaW5zdGFsbGluZyBwYWNrYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHRleHQgd2hpY2ggc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlciBhZnRlciBhbiBleHRlbnNpb24gaGFzIGJlZW4gaW5zdGFsbGVkLiBUaGlzXG4gICAqIGlzIGRlc2lnbmVkIHRvIGJlIG92ZXJyaWRkZW4gYnkgZHJpdmVycy9wbHVnaW5zIHdpdGggdGhlaXIgb3duIHBhcnRpY3VsYXIgdGV4dC5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRlbnNpb25BcmdzfSBhcmdzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0UG9zdEluc3RhbGxUZXh0IChhcmdzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IGJlIGltcGxlbWVudGVkIGluIGZpbmFsIGNsYXNzJyk7XG4gIH1cblxuICAvKipcbiAgICogVGFrZSBhbiBOUE0gbW9kdWxlJ3MgcGFja2FnZS5qc29uIGFuZCBleHRyYWN0IEFwcGl1bSBkcml2ZXIgaW5mb3JtYXRpb24gZnJvbSBhIHNwZWNpYWxcbiAgICogJ2FwcGl1bScgZmllbGQgaW4gdGhlIEpTT04gZGF0YS4gV2UgbmVlZCB0aGlzIGluZm9ybWF0aW9uIHRvIGUuZy4gZGV0ZXJtaW5lIHdoaWNoIGNsYXNzIHRvXG4gICAqIGxvYWQgYXMgdGhlIG1haW4gZHJpdmVyIGNsYXNzLCBvciB0byBiZSBhYmxlIHRvIGRldGVjdCBpbmNvbXBhdGliaWxpdGllcyBiZXR3ZWVuIGRyaXZlciBhbmRcbiAgICogYXBwaXVtIHZlcnNpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge0V4dFBhY2thZ2VKc29uPEV4dFR5cGU+fSBwa2dKc29uRGF0YSAtIHRoZSBwYWNrYWdlLmpzb24gZGF0YSBmb3IgYSBkcml2ZXIgbW9kdWxlLCBhcyBpZiBpdCBoYWQgYmVlblxuICAgKiBzdHJhaWdodGZvcndhcmRseSAncmVxdWlyZSdkXG4gICAqIEByZXR1cm5zIHtFeHRlbnNpb25GaWVsZHM8RXh0VHlwZT59XG4gICAqL1xuICBnZXRFeHRlbnNpb25GaWVsZHMgKHBrZ0pzb25EYXRhKSB7XG4gICAgaWYgKCFwa2dKc29uRGF0YS5hcHBpdW0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFsbGVkIGRyaXZlciBkaWQgbm90IGhhdmUgYW4gJ2FwcGl1bScgc2VjdGlvbiBpbiBpdHMgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYHBhY2thZ2UuanNvbiBmaWxlIGFzIGV4cGVjdGVkYCk7XG4gICAgfVxuICAgIGNvbnN0IHthcHBpdW0sIG5hbWUsIHZlcnNpb259ID0gcGtnSnNvbkRhdGE7XG4gICAgdGhpcy52YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyhhcHBpdW0pO1xuICAgIC8qKiBAdHlwZSB7dW5rbm93bn0gKi9cbiAgICBjb25zdCByZXN1bHQgPSB7Li4uYXBwaXVtLCBwa2dOYW1lOiBuYW1lLCB2ZXJzaW9ufTtcbiAgICByZXR1cm4gLyoqIEB0eXBlIHtFeHRlbnNpb25GaWVsZHM8RXh0VHlwZT59ICovKHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogRm9yIGFueSBwYWNrYWdlLmpzb24gZmllbGRzIHdoaWNoIGEgcGFydGljdWxhciB0eXBlIG9mIGV4dGVuc2lvbiByZXF1aXJlcywgdmFsaWRhdGUgdGhlXG4gICAqIHByZXNlbmNlIGFuZCBmb3JtIG9mIHRob3NlIGZpZWxkcyBvbiB0aGUgcGFja2FnZS5qc29uIGRhdGEsIHRocm93aW5nIGFuIGVycm9yIGlmIGFueXRoaW5nIGlzXG4gICAqIGFtaXNzLlxuICAgKlxuICAgKiBAcGFyYW0ge0V4dE1ldGFkYXRhPEV4dFR5cGU+fSBhcHBpdW1Qa2dEYXRhIC0gdGhlIGRhdGEgaW4gdGhlIFwiYXBwaXVtXCIgZmllbGQgb2YgcGFja2FnZS5qc29uIGZvciBhbiBleHRlbnNpb25cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyAoYXBwaXVtUGtnRGF0YSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBmaW5hbCBjbGFzcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuaW5zdGFsbCBhbiBleHRlbnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtVbmluc3RhbGxPcHRzfSBvcHRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RXh0UmVjb3JkPEV4dFR5cGU+Pn0gbWFwIG9mIGFsbCBpbnN0YWxsZWQgZXh0ZW5zaW9uIG5hbWVzIHRvIGV4dGVuc2lvbiBkYXRhXG4gICAqL1xuICBhc3luYyBfdW5pbnN0YWxsICh7ZXh0fSkge1xuICAgIGlmICghdGhpcy5jb25maWcuaXNJbnN0YWxsZWQoZXh0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCB1bmluc3RhbGwgJHt0aGlzLnR5cGV9ICcke2V4dH0nOyBpdCBpcyBub3QgaW5zdGFsbGVkYCk7XG4gICAgfVxuICAgIGNvbnN0IGluc3RhbGxQYXRoID0gdGhpcy5jb25maWcuZ2V0SW5zdGFsbFBhdGgoZXh0KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKGluc3RhbGxQYXRoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgdGhpcy5jb25maWcucmVtb3ZlRXh0ZW5zaW9uKGV4dCk7XG4gICAgfVxuICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgYFN1Y2Nlc3NmdWxseSB1bmluc3RhbGxlZCAke3RoaXMudHlwZX0gJyR7ZXh0fSdgLmdyZWVuKTtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHVwZGF0ZSBvbmUgb3IgbW9yZSBkcml2ZXJzIHVzaW5nIE5QTVxuICAgKlxuICAgKiBAcGFyYW0ge0V4dGVuc2lvblVwZGF0ZU9wdHN9IHVwZGF0ZVNwZWNcbiAgICogQHJldHVybiB7UHJvbWlzZTxFeHRlbnNpb25VcGRhdGVSZXN1bHQ+fVxuICAgKi9cbiAgYXN5bmMgX3VwZGF0ZSAoe2V4dCwgdW5zYWZlfSkge1xuICAgIGNvbnN0IHNob3VsZFVwZGF0ZUFsbCA9IGV4dCA9PT0gVVBEQVRFX0FMTDtcbiAgICAvLyBpZiB3ZSdyZSBzcGVjaWZpY2FsbHkgcmVxdWVzdGluZyBhbiB1cGRhdGUgZm9yIGFuIGV4dGVuc2lvbiwgbWFrZSBzdXJlIGl0J3MgaW5zdGFsbGVkXG4gICAgaWYgKCFzaG91bGRVcGRhdGVBbGwgJiYgIXRoaXMuY29uZmlnLmlzSW5zdGFsbGVkKGV4dCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICR7dGhpcy50eXBlfSAnJHtleHR9JyB3YXMgbm90IGluc3RhbGxlZCwgc28gY2FuJ3QgYmUgdXBkYXRlZGApO1xuICAgIH1cbiAgICBjb25zdCBleHRzVG9VcGRhdGUgPSBzaG91bGRVcGRhdGVBbGwgPyBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zKSA6IFtleHRdO1xuXG4gICAgLy8gJ2Vycm9ycycgd2lsbCBoYXZlIGV4dCBuYW1lcyBhcyBrZXlzIGFuZCBlcnJvciBvYmplY3RzIGFzIHZhbHVlc1xuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxFcnJvcj59ICovXG4gICAgY29uc3QgZXJyb3JzID0ge307XG5cbiAgICAvLyAndXBkYXRlcycgd2lsbCBoYXZlIGV4dCBuYW1lcyBhcyBrZXlzIGFuZCB1cGRhdGUgb2JqZWN0cyBhcyB2YWx1ZXMsIHdoZXJlIGFuIHVwZGF0ZVxuICAgIC8vIG9iamVjdCBpcyBvZiB0aGUgZm9ybSB7ZnJvbTogdmVyc2lvblN0cmluZywgdG86IHZlcnNpb25TdHJpbmd9XG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLFVwZGF0ZVJlcG9ydD59ICovXG4gICAgY29uc3QgdXBkYXRlcyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBlIG9mIGV4dHNUb1VwZGF0ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgc3BpbldpdGgodGhpcy5pc0pzb25PdXRwdXQsIGBDaGVja2luZyBpZiAke3RoaXMudHlwZX0gJyR7ZX0nIGlzIHVwZGF0YWJsZWAsICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9uc1tlXS5pbnN0YWxsVHlwZSAhPT0gSU5TVEFMTF9UWVBFX05QTSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdFVwZGF0YWJsZUVycm9yKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgc3BpbldpdGgodGhpcy5pc0pzb25PdXRwdXQsIGBDaGVja2luZyBpZiAke3RoaXMudHlwZX0gJyR7ZX0nIG5lZWRzIGFuIHVwZGF0ZWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGUgPSBhd2FpdCB0aGlzLmNoZWNrRm9yRXh0ZW5zaW9uVXBkYXRlKGUpO1xuICAgICAgICAgIGlmICghKHVwZGF0ZS5zYWZlVXBkYXRlIHx8IHVwZGF0ZS51bnNhZmVVcGRhdGUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm9VcGRhdGVzQXZhaWxhYmxlRXJyb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdW5zYWZlICYmICF1cGRhdGUuc2FmZVVwZGF0ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICR7dGhpcy50eXBlfSAnJHtlfScgaGFzIGEgbWFqb3IgcmV2aXNpb24gdXBkYXRlIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgKCR7dXBkYXRlLmN1cnJlbnR9ID0+ICR7dXBkYXRlLnVuc2FmZVVwZGF0ZX0pLCB3aGljaCBjb3VsZCBpbmNsdWRlIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgYnJlYWtpbmcgY2hhbmdlcy4gSWYgeW91IHdhbnQgdG8gYXBwbHkgdGhpcyB1cGRhdGUsIHJlLXJ1biB3aXRoIC0tdW5zYWZlYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXBkYXRlVmVyID0gdW5zYWZlICYmIHVwZGF0ZS51bnNhZmVVcGRhdGUgPyB1cGRhdGUudW5zYWZlVXBkYXRlIDogdXBkYXRlLnNhZmVVcGRhdGU7XG4gICAgICAgIGF3YWl0IHNwaW5XaXRoKFxuICAgICAgICAgIHRoaXMuaXNKc29uT3V0cHV0LFxuICAgICAgICAgIGBVcGRhdGluZyBkcml2ZXIgJyR7ZX0nIGZyb20gJHt1cGRhdGUuY3VycmVudH0gdG8gJHt1cGRhdGVWZXJ9YCxcbiAgICAgICAgICBhc3luYyAoKSA9PiBhd2FpdCB0aGlzLnVwZGF0ZUV4dGVuc2lvbihlLCB1cGRhdGVWZXIpXG4gICAgICAgICk7XG4gICAgICAgIHVwZGF0ZXNbZV0gPSB7ZnJvbTogdXBkYXRlLmN1cnJlbnQsIHRvOiB1cGRhdGVWZXJ9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGVycm9yc1tlXSA9IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2codGhpcy5pc0pzb25PdXRwdXQsICdVcGRhdGUgcmVwb3J0OicpO1xuICAgIGZvciAoY29uc3QgW2UsIHVwZGF0ZV0gb2YgXy50b1BhaXJzKHVwZGF0ZXMpKSB7XG4gICAgICBsb2codGhpcy5pc0pzb25PdXRwdXQsIGAtICR7dGhpcy50eXBlfSAke2V9IHVwZGF0ZWQ6ICR7dXBkYXRlLmZyb219ID0+ICR7dXBkYXRlLnRvfWAuZ3JlZW4pO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtlLCBlcnJdIG9mIF8udG9QYWlycyhlcnJvcnMpKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90VXBkYXRhYmxlRXJyb3IpIHtcbiAgICAgICAgbG9nKHRoaXMuaXNKc29uT3V0cHV0LCBgLSAnJHtlfScgd2FzIG5vdCBpbnN0YWxsZWQgdmlhIG5wbSwgc28gd2UgY291bGQgbm90IGNoZWNrIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmb3IgdXBkYXRlc2AueWVsbG93KTtcbiAgICAgIH0gZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgTm9VcGRhdGVzQXZhaWxhYmxlRXJyb3IpIHtcbiAgICAgICAgbG9nKHRoaXMuaXNKc29uT3V0cHV0LCBgLSAnJHtlfScgaGFkIG5vIHVwZGF0ZXMgYXZhaWxhYmxlYC55ZWxsb3cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBtYWtlIGl0IHBvcCB3aXRoIHJlZCFcbiAgICAgICAgbG9nKHRoaXMuaXNKc29uT3V0cHV0LCBgLSAnJHtlfScgZmFpbGVkIHRvIHVwZGF0ZTogJHtlcnJ9YC5yZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7dXBkYXRlcywgZXJyb3JzfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhbiBleHRlbnNpb24gbmFtZSwgZmlndXJlIG91dCB3aGF0IGl0cyBoaWdoZXN0IHBvc3NpYmxlIHZlcnNpb24gdXBncmFkZSBpcywgYW5kIGFsc28gdGhlXG4gICAqIGhpZ2hlc3QgcG9zc2libGUgc2FmZSB1cGdyYWRlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0IC0gbmFtZSBvZiBleHRlbnNpb25cbiAgICogQHJldHVybiB7UHJvbWlzZTxQb3NzaWJsZVVwZGF0ZXM+fVxuICAgKi9cbiAgYXN5bmMgY2hlY2tGb3JFeHRlbnNpb25VcGRhdGUgKGV4dCkge1xuICAgIC8vIFRPRE8gZGVjaWRlIGhvdyB3ZSB3YW50IHRvIGhhbmRsZSBiZXRhIHZlcnNpb25zP1xuICAgIC8vIHRoaXMgaXMgYSBoZWxwZXIgbWV0aG9kLCAnZXh0JyBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgaW5zdGFsbGVkIGhlcmUsIGFuZCBvZiB0aGUgbnBtXG4gICAgLy8gaW5zdGFsbCB0eXBlXG4gICAgY29uc3Qge3ZlcnNpb24sIHBrZ05hbWV9ID0gdGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHRdO1xuICAgIGxldCB1bnNhZmVVcGRhdGUgPSBhd2FpdCBucG0uZ2V0TGF0ZXN0VmVyc2lvbih0aGlzLmNvbmZpZy5hcHBpdW1Ib21lLCBwa2dOYW1lKTtcbiAgICBsZXQgc2FmZVVwZGF0ZSA9IGF3YWl0IG5wbS5nZXRMYXRlc3RTYWZlVXBncmFkZVZlcnNpb24odGhpcy5jb25maWcuYXBwaXVtSG9tZSwgcGtnTmFtZSwgdmVyc2lvbik7XG4gICAgaWYgKCF1dGlsLmNvbXBhcmVWZXJzaW9ucyh1bnNhZmVVcGRhdGUsICc+JywgdmVyc2lvbikpIHtcbiAgICAgIC8vIHRoZSBsYXRlc3QgdmVyc2lvbiBpcyBub3QgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IHZlcnNpb24sIHNvIHRoZXJlJ3Mgbm8gcG9zc2libGUgdXBkYXRlXG4gICAgICB1bnNhZmVVcGRhdGUgPSBudWxsO1xuICAgICAgc2FmZVVwZGF0ZSA9IG51bGw7XG4gICAgfVxuICAgIGlmICh1bnNhZmVVcGRhdGUgJiYgdW5zYWZlVXBkYXRlID09PSBzYWZlVXBkYXRlKSB7XG4gICAgICAvLyB0aGUgbGF0ZXN0IHVwZGF0ZSBpcyB0aGUgc2FtZSBhcyB0aGUgc2FmZSB1cGRhdGUsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGFjdHVhbGx5IHVuc2FmZVxuICAgICAgdW5zYWZlVXBkYXRlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHNhZmVVcGRhdGUgJiYgIXV0aWwuY29tcGFyZVZlcnNpb25zKHNhZmVVcGRhdGUsICc+JywgdmVyc2lvbikpIHtcbiAgICAgIC8vIGV2ZW4gdGhlIHNhZmUgdXBkYXRlIGlzIG5vdCBsYXRlciB0aGFuIHRoZSBjdXJyZW50LCBzbyBpdCBpcyBub3QgYWN0dWFsbHkgYW4gdXBkYXRlXG4gICAgICBzYWZlVXBkYXRlID0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtjdXJyZW50OiB2ZXJzaW9uLCBzYWZlVXBkYXRlLCB1bnNhZmVVcGRhdGV9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdHVhbGx5IHVwZGF0ZSBhbiBleHRlbnNpb24gaW5zdGFsbGVkIGJ5IE5QTSwgdXNpbmcgdGhlIE5QTSBjbGkuIEFuZCB1cGRhdGUgdGhlIGluc3RhbGxhdGlvblxuICAgKiBtYW5pZmVzdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dCAtIG5hbWUgb2YgZXh0ZW5zaW9uIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2lvbiAtIHZlcnNpb24gc3RyaW5nIGlkZW50aWZpZXIgdG8gdXBkYXRlIGV4dGVuc2lvbiB0b1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHVwZGF0ZUV4dGVuc2lvbiAoZXh0LCB2ZXJzaW9uKSB7XG4gICAgY29uc3Qge3BrZ05hbWV9ID0gdGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHRdO1xuICAgIGF3YWl0IGZzLnJpbXJhZih0aGlzLmNvbmZpZy5nZXRJbnN0YWxsUGF0aChleHQpKTtcbiAgICBjb25zdCBleHREYXRhID0gYXdhaXQgdGhpcy5pbnN0YWxsVmlhTnBtKHtleHQsIHBrZ05hbWUsIHBrZ1ZlcjogdmVyc2lvbn0pO1xuICAgIGRlbGV0ZSBleHREYXRhWy8qKiBAdHlwZSB7c3RyaW5nfSAqLyhgJHt0aGlzLnR5cGV9TmFtZWApXTtcbiAgICBhd2FpdCB0aGlzLmNvbmZpZy51cGRhdGVFeHRlbnNpb24oZXh0LCBleHREYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGEgc2NyaXB0IGNhY2hlZCBpbnNpZGUgdGhlIFwic2NyaXB0c1wiIGZpZWxkIHVuZGVyIFwiYXBwaXVtXCJcbiAgICogaW5zaWRlIG9mIHRoZSBkcml2ZXIvcGx1Z2lucyBcInBhY2thZ2UuanNvblwiIGZpbGUuIFdpbGwgdGhyb3dcbiAgICogYW4gZXJyb3IgaWYgdGhlIGRyaXZlci9wbHVnaW4gZG9lcyBub3QgY29udGFpbiBhIFwic2NyaXB0c1wiIGZpZWxkXG4gICAqIHVuZGVybmVhdGggdGhlIFwiYXBwaXVtXCIgZmllbGQgaW4gaXRzIHBhY2thZ2UuanNvbiwgaWYgdGhlXG4gICAqIFwic2NyaXB0c1wiIGZpZWxkIGlzIG5vdCBhIHBsYWluIG9iamVjdCwgb3IgaWYgdGhlIHNjcmlwdE5hbWUgaXNcbiAgICogbm90IGZvdW5kIHdpdGhpbiBcInNjcmlwdHNcIiBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7UnVuT3B0aW9uc30gb3B0c1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPFJ1bk91dHB1dD59XG4gICAqL1xuICBhc3luYyBfcnVuICh7ZXh0LCBzY3JpcHROYW1lfSkge1xuICAgIGlmICghXy5oYXModGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucywgZXh0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBwbGVhc2UgaW5zdGFsbCB0aGUgJHt0aGlzLnR5cGV9IGZpcnN0YCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0Q29uZmlnID0gdGhpcy5jb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9uc1tleHRdO1xuXG4gICAgLy8gbm90ZTogVFMgY2Fubm90IHVuZGVyc3RhbmQgdGhhdCBfLmhhcygpIGlzIGEgdHlwZSBndWFyZFxuICAgIGlmICghZXh0Q29uZmlnLnNjcmlwdHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICR7dGhpcy50eXBlfSBuYW1lZCAnJHtleHR9JyBkb2VzIG5vdCBjb250YWluIHRoZSBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgXCJzY3JpcHRzXCIgZmllbGQgdW5kZXJuZWF0aCB0aGUgXCJhcHBpdW1cIiBmaWVsZCBpbiBpdHMgcGFja2FnZS5qc29uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgZXh0U2NyaXB0cyA9IGV4dENvbmZpZy5zY3JpcHRzO1xuXG4gICAgaWYgKCFfLmlzUGxhaW5PYmplY3QoZXh0U2NyaXB0cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlICR7dGhpcy50eXBlfSBuYW1lZCAnJHtleHR9JyBcInNjcmlwdHNcIiBmaWVsZCBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0YCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyhleHRTY3JpcHRzLCBzY3JpcHROYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJHt0aGlzLnR5cGV9IG5hbWVkICcke2V4dH0nIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNjcmlwdDogJyR7c2NyaXB0TmFtZX0nYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcnVubmVyID0gbmV3IFN1YlByb2Nlc3MocHJvY2Vzcy5leGVjUGF0aCwgW1xuICAgICAgZXh0U2NyaXB0c1tzY3JpcHROYW1lXVxuICAgIF0sIHtcbiAgICAgIGN3ZDogdGhpcy5jb25maWcuZ2V0SW5zdGFsbFBhdGgoZXh0KVxuICAgIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gbmV3IFJpbmdCdWZmZXIoNTApO1xuXG4gICAgcnVubmVyLm9uKCdzdHJlYW0tbGluZScsIChsaW5lKSA9PiB7XG4gICAgICBvdXRwdXQuZW5xdWV1ZShsaW5lKTtcbiAgICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgbGluZSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBydW5uZXIuc3RhcnQoMCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVubmVyLmpvaW4oKTtcbiAgICAgIGxvZyh0aGlzLmlzSnNvbk91dHB1dCwgYCR7c2NyaXB0TmFtZX0gc3VjY2Vzc2Z1bGx5IHJhbmAuZ3JlZW4pO1xuICAgICAgcmV0dXJuIHtvdXRwdXQ6IG91dHB1dC5nZXRCdWZmKCl9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nKHRoaXMuaXNKc29uT3V0cHV0LCBgRW5jb3VudGVyZWQgYW4gZXJyb3Igd2hlbiBydW5uaW5nICcke3NjcmlwdE5hbWV9JzogJHtlcnIubWVzc2FnZX1gLnJlZCk7XG4gICAgICByZXR1cm4ge2Vycm9yOiBlcnIubWVzc2FnZSwgb3V0cHV0OiBvdXRwdXQuZ2V0QnVmZigpfTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRXh0ZW5zaW9uQ29tbWFuZDtcbmV4cG9ydCB7RXh0ZW5zaW9uQ29tbWFuZH07XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZH0gY29uc3RydWN0b3JcbiAqIEB0ZW1wbGF0ZSB7RXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYgRXh0ZW5zaW9uQ29tbWFuZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7RXh0ZW5zaW9uQ29uZmlnPEV4dFR5cGU+fSBjb25maWcgLSB0aGUgYERyaXZlckNvbmZpZ2Agb3IgYFBsdWdpbkNvbmZpZ2AgaW5zdGFuY2UgdXNlZCBmb3IgdGhpcyBjb21tYW5kXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGpzb24gLSB3aGV0aGVyIHRoZSBvdXRwdXQgb2YgdGhpcyBjb21tYW5kIHNob3VsZCBiZSBKU09OIG9yIHRleHRcbiAqL1xuXG4vKipcbiAqIEV4dHJhIHN0dWZmIGFib3V0IGV4dGVuc2lvbnM7IHVzZWQgaW5kaXJlY3RseSBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH0uXG4gKlxuICogQHR5cGVkZWYgRXh0ZW5zaW9uTWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaW5zdGFsbGVkIC0gSWYgYHRydWVgLCB0aGUgZXh0ZW5zaW9uIGlzIGluc3RhbGxlZFxuICogQHByb3BlcnR5IHtzdHJpbmc/fSB1cGRhdGVWZXJzaW9uIC0gSWYgdGhlIGV4dGVuc2lvbiBpcyBpbnN0YWxsZWQsIHRoZSB2ZXJzaW9uIGl0IGNhbiBiZSB1cGRhdGVkIHRvXG4gKiBAcHJvcGVydHkge3N0cmluZz99IHVuc2FmZVVwZGF0ZVZlcnNpb24gLSBTYW1lIGFzIGFib3ZlLCBidXQgYSBtYWpvciB2ZXJzaW9uIGJ1bXBcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXBUb0RhdGUgLSBJZiB0aGUgZXh0ZW5zaW9uIGlzIGluc3RhbGxlZCBhbmQgdGhlIGxhdGVzdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5FeHRSZWNvcmQ8RXh0VHlwZT59IEV4dFJlY29yZFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn0gRXh0ZW5zaW9uQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVybmFsLW1hbmlmZXN0JykuRXh0TWV0YWRhdGE8RXh0VHlwZT59IEV4dE1ldGFkYXRhXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge0V4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkV4dE1hbmlmZXN0PEV4dFR5cGU+fSBFeHRNYW5pZmVzdFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkV4dFBhY2thZ2VKc29uPEV4dFR5cGU+fSBFeHRQYWNrYWdlSnNvblxuICovXG5cbi8qKlxuICogUG9zc2libGUgcmV0dXJuIHZhbHVlIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQubGlzdH1cbiAqIEB0eXBlZGVmIFVuaW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGFcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwa2dOYW1lXG4gKiBAcHJvcGVydHkge2ZhbHNlfSBpbnN0YWxsZWRcbiAqL1xuXG4vKipcbiAqIFBvc3NpYmxlIHJldHVybiB2YWx1ZSBmb3Ige0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmxpc3R9XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5JbnRlcm5hbE1ldGFkYXRhICYgRXh0ZW5zaW9uTWV0YWRhdGF9IEluc3RhbGxlZEV4dGVuc2lvbkxpc3REYXRhXG4gKi9cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgb2Yge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmxpc3R9LlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsSW5zdGFsbGVkRXh0ZW5zaW9uTGlzdERhdGF8VW5pbnN0YWxsZWRFeHRlbnNpb25MaXN0RGF0YT59IEV4dGVuc2lvbkxpc3REYXRhXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3J1bn0uXG4gKiBAdHlwZWRlZiBSdW5PcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXh0IC0gbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRvIHJ1biBhIHNjcmlwdCBmcm9tXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2NyaXB0TmFtZSAtIG5hbWUgb2YgdGhlIHNjcmlwdCB0byBydW5cbiAqL1xuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3J1bn1cbiAqXG4gKiBAdHlwZWRlZiBSdW5PdXRwdXRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZXJyb3JdIC0gZXJyb3IgbWVzc2FnZSBpZiBzY3JpcHQgcmFuIHVuc3VjY2Vzc2Z1bGx5LCBvdGhlcndpc2UgdW5kZWZpbmVkXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBvdXRwdXQgLSBzY3JpcHQgb3V0cHV0XG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX3VwZGF0ZX0uXG4gKiBAdHlwZWRlZiBFeHRlbnNpb25VcGRhdGVPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXh0IC0gdGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0byB1cGRhdGVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdW5zYWZlIC0gaWYgdHJ1ZSwgd2lsbCBwZXJmb3JtIHVuc2FmZSB1cGRhdGVzIHBhc3QgbWFqb3IgcmV2aXNpb24gYm91bmRhcmllc1xuICovXG5cbi8qKlxuICogUmV0dXJuIHZhbHVlIG9mIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5fdXBkYXRlfS5cbiAqIEB0eXBlZGVmIEV4dGVuc2lvblVwZGF0ZVJlc3VsdFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLEVycm9yPn0gZXJyb3JzIC0gbWFwIG9mIGV4dCBuYW1lcyB0byBlcnJvciBvYmplY3RzXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsVXBkYXRlUmVwb3J0Pn0gdXBkYXRlcyAtIG1hcCBvZiBleHQgbmFtZXMgdG8ge0BsaW5rY29kZSBVcGRhdGVSZXBvcnR9c1xuICovXG5cbi8qKlxuICogUGFydCBvZiByZXN1bHQgb2Yge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLl91cGRhdGV9LlxuICogQHR5cGVkZWYgVXBkYXRlUmVwb3J0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAtIHZlcnNpb24gdGhlIGV4dGVuc2lvbiB3YXMgdXBkYXRlZCBmcm9tXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG8gLSB2ZXJzaW9uIHRoZSBleHRlbnNpb24gd2FzIHVwZGF0ZWQgdG9cbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgRXh0ZW5zaW9uQ29tbWFuZC5fdW5pbnN0YWxsfS5cbiAqIEB0eXBlZGVmIFVuaW5zdGFsbE9wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBleHQgLSB0aGUgbmFtZSBvciBzcGVjIG9mIGFuIGV4dGVuc2lvbiB0byB1bmluc3RhbGxcbiAqL1xuXG4vKipcbiAqIFVzZWQgYnkge0BsaW5rY29kZSBFeHRlbnNpb25Db21tYW5kLmdldFBvc3RJbnN0YWxsVGV4dH1cbiAqIEB0eXBlZGVmIEV4dGVuc2lvbkFyZ3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBleHROYW1lIC0gdGhlIG5hbWUgb2YgYW4gZXh0ZW5zaW9uXG4gKiBAcHJvcGVydHkge29iamVjdH0gZXh0RGF0YSAtIHRoZSBkYXRhIGZvciBhbiBpbnN0YWxsZWQgZXh0ZW5zaW9uXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuaW5zdGFsbFZpYU5wbX1cbiAqIEB0eXBlZGVmIEluc3RhbGxWaWFOcG1BcmdzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXh0IC0gdGhlIG5hbWUgb3Igc3BlYyBvZiBhbiBleHRlbnNpb24gdG8gaW5zdGFsbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBrZ05hbWUgLSB0aGUgTlBNIHBhY2thZ2UgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrZ1Zlcl0gLSB0aGUgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgTlBNIHBhY2thZ2VcbiAqL1xuXG4vKipcbiAqIE9iamVjdCByZXR1cm5lZCBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuY2hlY2tGb3JFeHRlbnNpb25VcGRhdGV9XG4gKiBAdHlwZWRlZiBQb3NzaWJsZVVwZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjdXJyZW50IC0gY3VycmVudCB2ZXJzaW9uXG4gKiBAcHJvcGVydHkge3N0cmluZz99IHNhZmVVcGRhdGUgLSB2ZXJzaW9uIHdlIGNhbiBzYWZlbHkgdXBkYXRlIHRvIGlmIGl0IGV4aXN0cywgb3IgbnVsbFxuICogQHByb3BlcnR5IHtzdHJpbmc/fSB1bnNhZmVVcGRhdGUgLSB2ZXJzaW9uIHdlIGNhbiB1bnNhZmVseSB1cGRhdGUgdG8gaWYgaXQgZXhpc3RzLCBvciBudWxsXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuX2luc3RhbGx9XG4gKiBAdHlwZWRlZiBJbnN0YWxsQXJnc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGV4dCAtIHRoZSBuYW1lIG9yIHNwZWMgb2YgYW4gZXh0ZW5zaW9uIHRvIGluc3RhbGxcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5JbnN0YWxsVHlwZX0gaW5zdGFsbFR5cGUgLSBob3cgdG8gaW5zdGFsbCB0aGlzIGV4dGVuc2lvbi4gT25lIG9mIHRoZSBJTlNUQUxMX1RZUEVTXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BhY2thZ2VOYW1lXSAtIGZvciBnaXQvZ2l0aHViIGluc3RhbGxzLCB0aGUgZXh0ZW5zaW9uIG5vZGUgcGFja2FnZSBuYW1lXG4gKi9cblxuLyoqXG4gKiBSZXR1cm5lZCBieSB7QGxpbmtjb2RlIEV4dGVuc2lvbkNvbW1hbmQuZ2V0RXh0ZW5zaW9uRmllbGRzfVxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7RXh0TWV0YWRhdGE8RXh0VHlwZT4gJiB7IHBrZ05hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nIH0gJiBpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVybmFsLW1hbmlmZXN0JykuQ29tbW9uTWV0YWRhdGF9IEV4dGVuc2lvbkZpZWxkc1xuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtFeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAdHlwZWRlZiB7RXh0VHlwZSBleHRlbmRzIERyaXZlclR5cGUgPyB0eXBlb2YgaW1wb3J0KCcuLi9jb25zdGFudHMnKS5LTk9XTl9EUklWRVJTIDogRXh0VHlwZSBleHRlbmRzIFBsdWdpblR5cGUgPyB0eXBlb2YgaW1wb3J0KCcuLi9jb25zdGFudHMnKS5LTk9XTl9QTFVHSU5TIDogbmV2ZXJ9IEtub3duRXh0ZW5zaW9uc1xuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLFdBQW5COztBQUVBLE1BQU1DLGlCQUFOLFNBQWdDQyxLQUFoQyxDQUFzQzs7QUFDdEMsTUFBTUMsdUJBQU4sU0FBc0NELEtBQXRDLENBQTRDOztBQUs1QyxNQUFNRSxnQkFBTixDQUF1QjtFQUtyQkMsTUFBTTtFQU1OQyxlQUFlO0VBTWZDLFlBQVk7O0VBTVpDLFdBQVcsQ0FBRTtJQUFDSCxNQUFEO0lBQVNJO0VBQVQsQ0FBRixFQUFrQjtJQUMzQixLQUFLSixNQUFMLEdBQWNBLE1BQWQ7SUFDQSxLQUFLRSxZQUFMLEdBQW9CRSxJQUFwQjtFQUNEOztFQUtPLElBQUpDLElBQUksR0FBSTtJQUNWLE9BQU8sS0FBS0wsTUFBTCxDQUFZTSxhQUFuQjtFQUNEOztFQVFZLE1BQVBDLE9BQU8sQ0FBRUMsSUFBRixFQUFRO0lBQ25CLE1BQU1DLEdBQUcsR0FBR0QsSUFBSSxDQUFFLEdBQUUsS0FBS0gsSUFBSyxTQUFkLENBQWhCOztJQUNBLElBQUksQ0FBQ0ssZ0JBQUVDLFVBQUYsQ0FBYSxLQUFLRixHQUFMLENBQWIsQ0FBTCxFQUE4QjtNQUM1QixNQUFNLElBQUlaLEtBQUosQ0FBVyxpQkFBZ0IsS0FBS1EsSUFBSyxZQUFXSSxHQUFJLEVBQXBELENBQU47SUFDRDs7SUFDRCxNQUFNRyxVQUFVLEdBQUcsS0FBS0gsR0FBTCxFQUFVSSxJQUFWLENBQWUsSUFBZixDQUFuQjtJQUNBLE9BQU8sTUFBTUQsVUFBVSxDQUFDSixJQUFELENBQXZCO0VBQ0Q7O0VBY1MsTUFBSk0sSUFBSSxDQUFFO0lBQUNDLGFBQUQ7SUFBZ0JDO0VBQWhCLENBQUYsRUFBZ0M7SUFDeEMs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
@@ -68,4 +68,4 @@ async function runExtensionCommand(args, configObject) {
68
68
 
69
69
  return jsonResult;
70
70
  }
71
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZXh0ZW5zaW9uLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRDbGFzc2VzIiwiT2JqZWN0IiwiZnJlZXplIiwiRFJJVkVSX1RZUEUiLCJEcml2ZXJDb21tYW5kIiwiUExVR0lOX1RZUEUiLCJQbHVnaW5Db21tYW5kIiwicnVuRXh0ZW5zaW9uQ29tbWFuZCIsImFyZ3MiLCJjb25maWdPYmplY3QiLCJqc29uUmVzdWx0IiwiZXh0ZW5zaW9uVHlwZSIsInR5cGUiLCJleHRDbWQiLCJUeXBlRXJyb3IiLCJqc29uIiwic3VwcHJlc3NPdXRwdXQiLCJsb2dGbiIsIm1zZyIsImNvbmZpZyIsImxvZyIsIkNvbW1hbmRDbGFzcyIsImNtZCIsImV4ZWN1dGUiLCJlcnIiLCJjb25zb2xlIiwiSlNPTiIsInN0cmluZ2lmeSIsIkpTT05fU1BBQ0VTIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGNBQWMsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQW1DO0FBQ3hELEdBQUNDLHNCQUFELEdBQWVDLHNCQUR5QztBQUV4RCxHQUFDQyxzQkFBRCxHQUFlQztBQUZ5QyxDQUFuQyxDQUF2Qjs7QUFjQSxlQUFlQyxtQkFBZixDQUFvQ0MsSUFBcEMsRUFBMENDLFlBQTFDLEVBQXdEO0FBR3RELE1BQUlDLFVBQVUsR0FBRyxJQUFqQjtBQUNBLFFBQU07QUFBQ0MsSUFBQUEsYUFBYSxFQUFFQztBQUFoQixNQUF3QkgsWUFBOUI7QUFDQSxRQUFNSSxNQUFNLEdBQUdMLElBQUksQ0FBRSxHQUFFSSxJQUFLLFNBQVQsQ0FBbkI7O0FBQ0EsTUFBSSxDQUFDQyxNQUFMLEVBQWE7QUFDWCxVQUFNLElBQUlDLFNBQUosQ0FBZSxlQUFjRixJQUFLLDhDQUFsQyxDQUFOO0FBQ0Q7O0FBQ0QsTUFBSTtBQUFDRyxJQUFBQSxJQUFEO0FBQU9DLElBQUFBO0FBQVAsTUFBeUJSLElBQTdCOztBQUNBLE1BQUlRLGNBQUosRUFBb0I7QUFDbEJELElBQUFBLElBQUksR0FBRyxJQUFQO0FBQ0Q7O0FBQ0QsUUFBTUUsS0FBSyxHQUFJQyxHQUFELElBQVMsZ0JBQUlILElBQUosRUFBVUcsR0FBVixDQUF2Qjs7QUFDQSxNQUFJQyxNQUFNLEdBQUdWLFlBQWI7QUFDQVUsRUFBQUEsTUFBTSxDQUFDQyxHQUFQLEdBQWFILEtBQWI7QUFDQSxRQUFNSSxZQUFZLEdBQXNDckIsY0FBYyxDQUFDWSxJQUFELENBQXRFO0FBQ0EsUUFBTVUsR0FBRyxHQUFHLElBQUlELFlBQUosQ0FBaUI7QUFBQ0YsSUFBQUEsTUFBRDtBQUFTSixJQUFBQTtBQUFULEdBQWpCLENBQVo7O0FBQ0EsTUFBSTtBQUNGTCxJQUFBQSxVQUFVLEdBQUcsTUFBTVksR0FBRyxDQUFDQyxPQUFKLENBQVlmLElBQVosQ0FBbkI7QUFDRCxHQUZELENBRUUsT0FBT2dCLEdBQVAsRUFBWTtBQUdaLFFBQUlSLGNBQUosRUFBb0I7QUFDbEIsWUFBTVEsR0FBTjtBQUNEOztBQUNELDJCQUFXVCxJQUFYLEVBQWlCUyxHQUFqQjtBQUNEOztBQUVELE1BQUlULElBQUksSUFBSSxDQUFDQyxjQUFiLEVBQTZCO0FBQzNCUyxJQUFBQSxPQUFPLENBQUNMLEdBQVIsQ0FBWU0sSUFBSSxDQUFDQyxTQUFMLENBQWVqQixVQUFmLEVBQTJCLElBQTNCLEVBQWlDa0Isa0JBQWpDLENBQVo7QUFDRDs7QUFFRCxTQUFPbEIsVUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXG5pbXBvcnQgRHJpdmVyQ29tbWFuZCBmcm9tICcuL2RyaXZlci1jb21tYW5kJztcbmltcG9ydCBQbHVnaW5Db21tYW5kIGZyb20gJy4vcGx1Z2luLWNvbW1hbmQnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGVyckFuZFF1aXQsIGxvZywgSlNPTl9TUEFDRVMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29tbWFuZENsYXNzZXMgPSBPYmplY3QuZnJlZXplKC8qKiBAdHlwZSB7Y29uc3R9ICovKHtcbiAgW0RSSVZFUl9UWVBFXTogRHJpdmVyQ29tbWFuZCxcbiAgW1BMVUdJTl9UWVBFXTogUGx1Z2luQ29tbWFuZFxufSkpO1xuXG4vKipcbiAqIFJ1biBhIHN1YmNvbW1hbmQgb2YgdGhlICdhcHBpdW0gZHJpdmVyJyB0eXBlLiBFYWNoIHN1YmNvbW1hbmQgaGFzIGl0cyBvd24gc2V0IG9mIGFyZ3VtZW50cyB3aGljaFxuICogY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgSlMgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcmdzIC0gSlMgb2JqZWN0IHdoZXJlIHRoZSBrZXkgaXMgdGhlIHBhcmFtZXRlciBuYW1lIChhcyBkZWZpbmVkIGluXG4gKiBkcml2ZXItcGFyc2VyLmpzKVxuICogQHRlbXBsYXRlIHtpbXBvcnQoJy4uL2V4dGVuc2lvbi9tYW5pZmVzdCcpLkV4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxFeHRUeXBlPn0gY29uZmlnT2JqZWN0IC0gRXh0ZW5zaW9uIGNvbmZpZyBvYmplY3RcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuRXh0ZW5zaW9uQ29tbWFuZCAoYXJncywgY29uZmlnT2JqZWN0KSB7XG4gIC8vIFRPRE8gZHJpdmVyIGNvbmZpZyBmaWxlIHNob3VsZCBiZSBsb2NrZWQgd2hpbGUgYW55IG9mIHRoZXNlIGNvbW1hbmRzIGFyZVxuICAvLyBydW5uaW5nIHRvIHByZXZlbnQgd2VpcmQgc2l0dWF0aW9uc1xuICBsZXQganNvblJlc3VsdCA9IG51bGw7XG4gIGNvbnN0IHtleHRlbnNpb25UeXBlOiB0eXBlfSA9IGNvbmZpZ09iamVjdDtcbiAgY29uc3QgZXh0Q21kID0gYXJnc1tgJHt0eXBlfUNvbW1hbmRgXTtcbiAgaWYgKCFleHRDbWQpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgY2FsbCAke3R5cGV9IGNvbW1hbmQgd2l0aG91dCBhIHN1YmNvbW1hbmQgbGlrZSAnaW5zdGFsbCdgKTtcbiAgfVxuICBsZXQge2pzb24sIHN1cHByZXNzT3V0cHV0fSA9IGFyZ3M7XG4gIGlmIChzdXBwcmVzc091dHB1dCkge1xuICAgIGpzb24gPSB0cnVlO1xuICB9XG4gIGNvbnN0IGxvZ0ZuID0gKG1zZykgPT4gbG9nKGpzb24sIG1zZyk7XG4gIGxldCBjb25maWcgPSBjb25maWdPYmplY3Q7XG4gIGNvbmZpZy5sb2cgPSBsb2dGbjtcbiAgY29uc3QgQ29tbWFuZENsYXNzID0gLyoqIEB0eXBlIHtFeHRDb21tYW5kPEV4dFR5cGU+fSAqLyhjb21tYW5kQ2xhc3Nlc1t0eXBlXSk7XG4gIGNvbnN0IGNtZCA9IG5ldyBDb21tYW5kQ2xhc3Moe2NvbmZpZywganNvbn0pO1xuICB0cnkge1xuICAgIGpzb25SZXN1bHQgPSBhd2FpdCBjbWQuZXhlY3V0ZShhcmdzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gaW4gdGhlIHN1cHByZXNzIG91dHB1dCBjYXNlLCB3ZSBhcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGludGVybmFsbHkgYW5kIHNob3VsZFxuICAgIC8vIGp1c3QgdGhyb3cgaW5zdGVhZCBvZiBwcmludGluZyBhbiBlcnJvciBhbmQgZW5kaW5nIHRoZSBwcm9jZXNzXG4gICAgaWYgKHN1cHByZXNzT3V0cHV0KSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIGVyckFuZFF1aXQoanNvbiwgZXJyKTtcbiAgfVxuXG4gIGlmIChqc29uICYmICFzdXBwcmVzc091dHB1dCkge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGpzb25SZXN1bHQsIG51bGwsIEpTT05fU1BBQ0VTKSk7XG4gIH1cblxuICByZXR1cm4ganNvblJlc3VsdDtcbn1cblxuZXhwb3J0IHtcbiAgcnVuRXh0ZW5zaW9uQ29tbWFuZCxcbn07XG5cbi8qKlxuICogQHRlbXBsYXRlIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0ZW5zaW9uVHlwZX0gRXh0VHlwZVxuICogQHR5cGVkZWYge0V4dFR5cGUgZXh0ZW5kcyBpbXBvcnQoJy4uLy4uL3R5cGVzJykuRHJpdmVyVHlwZSA/IGltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNsYXNzPERyaXZlckNvbW1hbmQ+IDogRXh0VHlwZSBleHRlbmRzIGltcG9ydCgnLi4vLi4vdHlwZXMnKS5QbHVnaW5UeXBlID8gaW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2xhc3M8UGx1Z2luQ29tbWFuZD4gOiBuZXZlcn0gRXh0Q29tbWFuZFxuICovXG4iXX0=
71
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kQ2xhc3NlcyIsIk9iamVjdCIsImZyZWV6ZSIsIkRSSVZFUl9UWVBFIiwiRHJpdmVyQ29tbWFuZCIsIlBMVUdJTl9UWVBFIiwiUGx1Z2luQ29tbWFuZCIsInJ1bkV4dGVuc2lvbkNvbW1hbmQiLCJhcmdzIiwiY29uZmlnT2JqZWN0IiwianNvblJlc3VsdCIsImV4dGVuc2lvblR5cGUiLCJ0eXBlIiwiZXh0Q21kIiwiVHlwZUVycm9yIiwianNvbiIsInN1cHByZXNzT3V0cHV0IiwibG9nRm4iLCJtc2ciLCJjb25maWciLCJsb2ciLCJDb21tYW5kQ2xhc3MiLCJjbWQiLCJleGVjdXRlIiwiZXJyIiwiY29uc29sZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJKU09OX1NQQUNFUyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvZXh0ZW5zaW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cblxuaW1wb3J0IERyaXZlckNvbW1hbmQgZnJvbSAnLi9kcml2ZXItY29tbWFuZCc7XG5pbXBvcnQgUGx1Z2luQ29tbWFuZCBmcm9tICcuL3BsdWdpbi1jb21tYW5kJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBlcnJBbmRRdWl0LCBsb2csIEpTT05fU1BBQ0VTIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGNvbW1hbmRDbGFzc2VzID0gT2JqZWN0LmZyZWV6ZSgvKiogQHR5cGUge2NvbnN0fSAqLyh7XG4gIFtEUklWRVJfVFlQRV06IERyaXZlckNvbW1hbmQsXG4gIFtQTFVHSU5fVFlQRV06IFBsdWdpbkNvbW1hbmRcbn0pKTtcblxuLyoqXG4gKiBSdW4gYSBzdWJjb21tYW5kIG9mIHRoZSAnYXBwaXVtIGRyaXZlcicgdHlwZS4gRWFjaCBzdWJjb21tYW5kIGhhcyBpdHMgb3duIHNldCBvZiBhcmd1bWVudHMgd2hpY2hcbiAqIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIEpTIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYXJncyAtIEpTIG9iamVjdCB3aGVyZSB0aGUga2V5IGlzIHRoZSBwYXJhbWV0ZXIgbmFtZSAoYXMgZGVmaW5lZCBpblxuICogZHJpdmVyLXBhcnNlci5qcylcbiAqIEB0ZW1wbGF0ZSB7aW1wb3J0KCcuLi9leHRlbnNpb24vbWFuaWZlc3QnKS5FeHRlbnNpb25UeXBlfSBFeHRUeXBlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vZXh0ZW5zaW9uL2V4dGVuc2lvbi1jb25maWcnKS5FeHRlbnNpb25Db25maWc8RXh0VHlwZT59IGNvbmZpZ09iamVjdCAtIEV4dGVuc2lvbiBjb25maWcgb2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkV4dGVuc2lvbkNvbW1hbmQgKGFyZ3MsIGNvbmZpZ09iamVjdCkge1xuICAvLyBUT0RPIGRyaXZlciBjb25maWcgZmlsZSBzaG91bGQgYmUgbG9ja2VkIHdoaWxlIGFueSBvZiB0aGVzZSBjb21tYW5kcyBhcmVcbiAgLy8gcnVubmluZyB0byBwcmV2ZW50IHdlaXJkIHNpdHVhdGlvbnNcbiAgbGV0IGpzb25SZXN1bHQgPSBudWxsO1xuICBjb25zdCB7ZXh0ZW5zaW9uVHlwZTogdHlwZX0gPSBjb25maWdPYmplY3Q7XG4gIGNvbnN0IGV4dENtZCA9IGFyZ3NbYCR7dHlwZX1Db21tYW5kYF07XG4gIGlmICghZXh0Q21kKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNhbGwgJHt0eXBlfSBjb21tYW5kIHdpdGhvdXQgYSBzdWJjb21tYW5kIGxpa2UgJ2luc3RhbGwnYCk7XG4gIH1cbiAgbGV0IHtqc29uLCBzdXBwcmVzc091dHB1dH0gPSBhcmdzO1xuICBpZiAoc3VwcHJlc3NPdXRwdXQpIHtcbiAgICBqc29uID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBsb2dGbiA9IChtc2cpID0+IGxvZyhqc29uLCBtc2cpO1xuICBsZXQgY29uZmlnID0gY29uZmlnT2JqZWN0O1xuICBjb25maWcubG9nID0gbG9nRm47XG4gIGNvbnN0IENvbW1hbmRDbGFzcyA9IC8qKiBAdHlwZSB7RXh0Q29tbWFuZDxFeHRUeXBlPn0gKi8oY29tbWFuZENsYXNzZXNbdHlwZV0pO1xuICBjb25zdCBjbWQgPSBuZXcgQ29tbWFuZENsYXNzKHtjb25maWcsIGpzb259KTtcbiAgdHJ5IHtcbiAgICBqc29uUmVzdWx0ID0gYXdhaXQgY21kLmV4ZWN1dGUoYXJncyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGluIHRoZSBzdXBwcmVzcyBvdXRwdXQgY2FzZSwgd2UgYXJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBpbnRlcm5hbGx5IGFuZCBzaG91bGRcbiAgICAvLyBqdXN0IHRocm93IGluc3RlYWQgb2YgcHJpbnRpbmcgYW4gZXJyb3IgYW5kIGVuZGluZyB0aGUgcHJvY2Vzc1xuICAgIGlmIChzdXBwcmVzc091dHB1dCkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICBlcnJBbmRRdWl0KGpzb24sIGVycik7XG4gIH1cblxuICBpZiAoanNvbiAmJiAhc3VwcHJlc3NPdXRwdXQpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShqc29uUmVzdWx0LCBudWxsLCBKU09OX1NQQUNFUykpO1xuICB9XG5cbiAgcmV0dXJuIGpzb25SZXN1bHQ7XG59XG5cbmV4cG9ydCB7XG4gIHJ1bkV4dGVuc2lvbkNvbW1hbmQsXG59O1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dGVuc2lvblR5cGV9IEV4dFR5cGVcbiAqIEB0eXBlZGVmIHtFeHRUeXBlIGV4dGVuZHMgaW1wb3J0KCcuLi8uLi90eXBlcycpLkRyaXZlclR5cGUgPyBpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5DbGFzczxEcml2ZXJDb21tYW5kPiA6IEV4dFR5cGUgZXh0ZW5kcyBpbXBvcnQoJy4uLy4uL3R5cGVzJykuUGx1Z2luVHlwZSA/IGltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNsYXNzPFBsdWdpbkNvbW1hbmQ+IDogbmV2ZXJ9IEV4dENvbW1hbmRcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGNBQWMsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQW1DO0VBQ3hELENBQUNDLHNCQUFELEdBQWVDLHNCQUR5QztFQUV4RCxDQUFDQyxzQkFBRCxHQUFlQztBQUZ5QyxDQUFuQyxDQUF2Qjs7QUFjQSxlQUFlQyxtQkFBZixDQUFvQ0MsSUFBcEMsRUFBMENDLFlBQTFDLEVBQXdEO0VBR3RELElBQUlDLFVBQVUsR0FBRyxJQUFqQjtFQUNBLE1BQU07SUFBQ0MsYUFBYSxFQUFFQztFQUFoQixJQUF3QkgsWUFBOUI7RUFDQSxNQUFNSSxNQUFNLEdBQUdMLElBQUksQ0FBRSxHQUFFSSxJQUFLLFNBQVQsQ0FBbkI7O0VBQ0EsSUFBSSxDQUFDQyxNQUFMLEVBQWE7SUFDWCxNQUFNLElBQUlDLFNBQUosQ0FBZSxlQUFjRixJQUFLLDhDQUFsQyxDQUFOO0VBQ0Q7O0VBQ0QsSUFBSTtJQUFDRyxJQUFEO0lBQU9DO0VBQVAsSUFBeUJSLElBQTdCOztFQUNBLElBQUlRLGNBQUosRUFBb0I7SUFDbEJELElBQUksR0FBRyxJQUFQO0VBQ0Q7O0VBQ0QsTUFBTUUsS0FBSyxHQUFJQyxHQUFELElBQVMsZ0JBQUlILElBQUosRUFBVUcsR0FBVixDQUF2Qjs7RUFDQSxJQUFJQyxNQUFNLEdBQUdWLFlBQWI7RUFDQVUsTUFBTSxDQUFDQyxHQUFQLEdBQWFILEtBQWI7RUFDQSxNQUFNSSxZQUFZLEdBQXNDckIsY0FBYyxDQUFDWSxJQUFELENBQXRFO0VBQ0EsTUFBTVUsR0FBRyxHQUFHLElBQUlELFlBQUosQ0FBaUI7SUFBQ0YsTUFBRDtJQUFTSjtFQUFULENBQWpCLENBQVo7O0VBQ0EsSUFBSTtJQUNGTCxVQUFVLEdBQUcsTUFBTVksR0FBRyxDQUFDQyxPQUFKLENBQVlmLElBQVosQ0FBbkI7RUFDRCxDQUZELENBRUUsT0FBT2dCLEdBQVAsRUFBWTtJQUdaLElBQUlSLGNBQUosRUFBb0I7TUFDbEIsTUFBTVEsR0FBTjtJQUNEOztJQUNELHVCQUFXVCxJQUFYLEVBQWlCUyxHQUFqQjtFQUNEOztFQUVELElBQUlULElBQUksSUFBSSxDQUFDQyxjQUFiLEVBQTZCO0lBQzNCUyxPQUFPLENBQUNMLEdBQVIsQ0FBWU0sSUFBSSxDQUFDQyxTQUFMLENBQWVqQixVQUFmLEVBQTJCLElBQTNCLEVBQWlDa0Isa0JBQWpDLENBQVo7RUFDRDs7RUFFRCxPQUFPbEIsVUFBUDtBQUNEIn0=
@@ -188,4 +188,4 @@ function getParser(debug) {
188
188
  (0, _schema.finalizeSchema)();
189
189
  return new ArgParser(debug);
190
190
  }
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGFyc2VyLmpzIl0sIm5hbWVzIjpbIk5PTl9TRVJWRVJfQVJHUyIsIk9iamVjdCIsImZyZWV6ZSIsIlNldCIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJTRVJWRVJfU1VCQ09NTUFORCIsInZlcnNpb24iLCJmcyIsInJlYWRQYWNrYWdlSnNvbkZyb20iLCJyb290RGlyIiwiQXJnUGFyc2VyIiwiY29uc3RydWN0b3IiLCJkZWJ1ZyIsInByb2ciLCJwcm9jZXNzIiwiYXJndiIsInBhdGgiLCJiYXNlbmFtZSIsInBhcnNlciIsIkFyZ3VtZW50UGFyc2VyIiwiYWRkX2hlbHAiLCJkZXNjcmlwdGlvbiIsIl9wYXRjaEV4aXQiLCJhZGRfYXJndW1lbnQiLCJhY3Rpb24iLCJzdWJQYXJzZXJzIiwiYWRkX3N1YnBhcnNlcnMiLCJkZXN0Iiwic2VydmVyQXJncyIsIl9hZGRTZXJ2ZXJUb1BhcnNlciIsInJhd0FyZ3MiLCJfYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlciIsInBhcnNlX2FyZ3MiLCJwYXJzZUFyZ3MiLCJhcmdzIiwic2xpY2UiLCJoYXMiLCJ1bnNoaWZ0IiwicGFyc2VkIiwiX3RyYW5zZm9ybVBhcnNlZEFyZ3MiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhpdCIsIl8iLCJyZWR1Y2UiLCJ1bnBhY2tlZCIsInZhbHVlIiwia2V5IiwiaXNVbmRlZmluZWQiLCJzZXQiLCJjb2RlIiwibXNnIiwiRXJyb3IiLCJzdWJQYXJzZXIiLCJzZXJ2ZXJQYXJzZXIiLCJhZGRfcGFyc2VyIiwiaGVscCIsImZsYWdzT3JOYW1lcyIsIm9wdHMiLCJ0eXBlIiwiZXh0UGFyc2VyIiwiZXh0U3ViUGFyc2VycyIsImV4dGVuc2lvbkFyZ3MiLCJwYXJzZXJTcGVjcyIsImNvbW1hbmQiLCJsaXN0IiwiaW5zdGFsbCIsInVuaW5zdGFsbCIsInVwZGF0ZSIsInJ1biIsImdldFBhcnNlciJdLCJtYXBwaW5ncyI6Ijs7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QUFiLENBQW9CUyxNQUY1QjtBQUdFWixRQUFBQSxJQUFJLEVBQUcsb0JBQW1CRyxJQUFLO0FBSGpDLE9BaEJrQixFQXFCbEI7QUFDRUssUUFBQUEsT0FBTyxFQUFFLEtBRFg7QUFFRWhDLFFBQUFBLElBQUksRUFBRThCLGFBQWEsQ0FBQ0gsSUFBRCxDQUFiLENBQW9CVSxHQUY1QjtBQUdFYixRQUFBQSxJQUFJLEVBQ0Qsb0NBQW1DRyxJQUFLLDRCQUF6QyxHQUNDLGdFQUErREEsSUFBSztBQUx6RSxPQXJCa0IsQ0FBcEI7O0FBOEJBLFdBQUssTUFBTTtBQUFDSyxRQUFBQSxPQUFEO0FBQVVoQyxRQUFBQSxJQUFWO0FBQWdCd0IsUUFBQUE7QUFBaEIsT0FBWCxJQUFvQ08sV0FBcEMsRUFBaUQ7QUFDL0MsY0FBTS9DLE1BQU0sR0FBRzZDLGFBQWEsQ0FBQ04sVUFBZCxDQUF5QlMsT0FBekIsRUFBa0M7QUFBQ1IsVUFBQUE7QUFBRCxTQUFsQyxDQUFmOztBQUVBaEQsUUFBQUEsU0FBUyxDQUFDWSxVQUFWLENBQXFCSixNQUFyQjs7QUFFQSxhQUFLLE1BQU0sQ0FBQ3lDLFlBQUQsRUFBZUMsSUFBZixDQUFYLElBQW1DMUIsSUFBbkMsRUFBeUM7QUFHdkNoQixVQUFBQSxNQUFNLENBQUNLLFlBQVAsQ0FBb0IsR0FBR29DLFlBQXZCLEVBQXFDLEVBQUMsR0FBR0M7QUFBSixXQUFyQztBQUNEO0FBQ0Y7QUFDRjtBQUNGOztBQXJOYTs7OztBQStOaEIsU0FBU1ksU0FBVCxDQUFvQjVELEtBQXBCLEVBQTJCO0FBQ3pCO0FBRUEsU0FBTyxJQUFJRixTQUFKLENBQWNFLEtBQWQsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBBcmd1bWVudFBhcnNlciB9IGZyb20gJ2FyZ3BhcnNlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgU0VSVkVSX1NVQkNPTU1BTkQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZmluYWxpemVTY2hlbWEsIGdldEFyZ1NwZWMsIGhhc0FyZ1NwZWMgfSBmcm9tICcuLi9zY2hlbWEnO1xuaW1wb3J0IHsgcm9vdERpciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge1xuICBnZXRFeHRlbnNpb25BcmdzLFxuICBnZXRTZXJ2ZXJBcmdzXG59IGZyb20gJy4vYXJncyc7XG5cbi8qKlxuICogSWYgdGhlIHBhcnNlZCBhcmdzIGRvIG5vdCBjb250YWluIGFueSBvZiB0aGVzZSB2YWx1ZXMsIHRoZW4gd2VcbiAqIHdpbGwgYXV0b21hdGlhbGx5IGluamVjdCB0aGUgYHNlcnZlcmAgc3ViY29tbWFuZC5cbiAqL1xuY29uc3QgTk9OX1NFUlZFUl9BUkdTID0gT2JqZWN0LmZyZWV6ZShcbiAgbmV3IFNldChbXG4gICAgRFJJVkVSX1RZUEUsXG4gICAgUExVR0lOX1RZUEUsXG4gICAgU0VSVkVSX1NVQkNPTU1BTkQsXG4gICAgJy1oJyxcbiAgICAnLS1oZWxwJyxcbiAgICAnLXYnLFxuICAgICctLXZlcnNpb24nXG4gIF0pXG4pO1xuXG5jb25zdCB2ZXJzaW9uID0gZnMucmVhZFBhY2thZ2VKc29uRnJvbShyb290RGlyKS52ZXJzaW9uO1xuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgYGFyZ3BhcnNlYFxuICpcbiAqIC0gSGFuZGxlcyBpbnN0YW50aWF0aW9uLCBjb25maWd1cmF0aW9uLCBhbmQgbW9ua2V5cGF0Y2hpbmcgb2YgYW5cbiAqICAgIGBBcmd1bWVudFBhcnNlcmAgaW5zdGFuY2UgZm9yIEFwcGl1bSBzZXJ2ZXIgYW5kIGl0cyBleHRlbnNpb25zXG4gKiAtIEhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucywgbWVzc2FnZXMsIGFuZCBleGl0IGJlaGF2aW9yXG4gKi9cbmNsYXNzIEFyZ1BhcnNlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtkZWJ1Z10gLSBJZiB0cnVlLCB0aHJvdyBpbnN0ZWFkIG9mIGV4aXQgb24gZXJyb3IuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGVidWcgPSBmYWxzZSkge1xuICAgIGNvbnN0IHByb2cgPSBwcm9jZXNzLmFyZ3ZbMV0gPyBwYXRoLmJhc2VuYW1lKHByb2Nlc3MuYXJndlsxXSkgOiAnYXBwaXVtJztcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgQXJndW1lbnRQYXJzZXIoe1xuICAgICAgYWRkX2hlbHA6IHRydWUsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Egd2ViZHJpdmVyLWNvbXBhdGlibGUgc2VydmVyIHRoYXQgZmFjaWxpdGF0ZXMgYXV0b21hdGlvbiBvZiB3ZWIsIG1vYmlsZSwgYW5kIG90aGVyIHR5cGVzIG9mIGFwcHMgYWNyb3NzIHZhcmlvdXMgcGxhdGZvcm1zLicsXG4gICAgICBwcm9nLFxuICAgIH0pO1xuXG4gICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQocGFyc2VyKTtcblxuICAgIC8qKlxuICAgICAqIFByb2dyYW0gbmFtZSAodHlwaWNhbGx5IGBhcHBpdW1gKVxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5wcm9nID0gcHJvZztcblxuICAgIC8qKlxuICAgICAqIElmIGB0cnVlYCwgdGhyb3cgYW4gZXJyb3Igb24gcGFyc2UgZmFpbHVyZSBpbnN0ZWFkIG9mIHByaW50aW5nIGhlbHBcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG5cbiAgICAvKipcbiAgICAgKiBXcmFwcGVkIGBBcmd1bWVudFBhcnNlcmAgaW5zdGFuY2VcbiAgICAgKiBAdHlwZSB7QXJndW1lbnRQYXJzZXJ9XG4gICAgICovXG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG5cbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCB7XG4gICAgICBhY3Rpb246ICd2ZXJzaW9uJyxcbiAgICAgIHZlcnNpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJQYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKHtkZXN0OiAnc3ViY29tbWFuZCd9KTtcblxuICAgIC8vIGFkZCB0aGUgJ3NlcnZlcicgc3ViY29tbWFuZCwgYW5kIHN0b3JlIHRoZSByYXcgYXJndW1lbnRzIG9uIHRoZSBwYXJzZXJcbiAgICAvLyBvYmplY3QgYXMgYSB3YXkgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIHRvIHdvcmsgd2l0aCB0aGUgYXJndW1lbnRzXG4gICAgLy8gY29uY2VwdHVhbGx5IHJhdGhlciB0aGFuIGp1c3QgdGhyb3VnaCBhcmdwYXJzZVxuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBBcmdQYXJzZXIuX2FkZFNlcnZlclRvUGFyc2VyKHN1YlBhcnNlcnMpO1xuXG4gICAgdGhpcy5yYXdBcmdzID0gc2VydmVyQXJncztcblxuICAgIC8vIGFkZCB0aGUgJ2RyaXZlcicgYW5kICdwbHVnaW4nIHN1YmNvbW1hbmRzXG4gICAgQXJnUGFyc2VyLl9hZGRFeHRlbnNpb25Db21tYW5kc1RvUGFyc2VyKHN1YlBhcnNlcnMpO1xuXG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgLyBkcm9wLWluIHdyYXBwZXJcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7QXJnUGFyc2VyWydwYXJzZUFyZ3MnXX1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnNlX2FyZ3MgPSB0aGlzLnBhcnNlQXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLlxuICAgKlxuICAgKiBJZiBubyBzdWJjb21tYW5kIGlzIHBhc3NlZCBpbiwgdGhpcyBtZXRob2Qgd2lsbCBpbmplY3QgdGhlIGBzZXJ2ZXJgIHN1YmNvbW1hbmQuXG4gICAqXG4gICAqIGBBcmdQYXJzZXIucHJvdG90eXBlLnBhcnNlX2FyZ3NgIGlzIGFuIGFsaWFzIG9mIHRoaXMgbWV0aG9kLlxuICAgKiBAdGVtcGxhdGUgW1Q9aW1wb3J0KCcuLi8uLi90eXBlcycpLldpdGhTZXJ2ZXJTdWJjb21tYW5kXVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJnc10gLSBBcnJheSBvZiBhcmd1bWVudHMsIG9zdGVuc2libHkgZnJvbSBgcHJvY2Vzcy5hcmd2YC4gR2F0aGVycyBhcmdzIGZyb20gYHByb2Nlc3MuYXJndmAgaWYgbm90IHByb3ZpZGVkLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkFyZ3M8VD59IC0gVGhlIHBhcnNlZCBhcmd1bWVudHNcbiAgICovXG4gIHBhcnNlQXJncyAoYXJncyA9IHByb2Nlc3MuYXJndi5zbGljZSgyKSkge1xuICAgIGlmICghTk9OX1NFUlZFUl9BUkdTLmhhcyhhcmdzWzBdKSkge1xuICAgICAgYXJncy51bnNoaWZ0KFNFUlZFUl9TVUJDT01NQU5EKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZXIucGFyc2VfYXJncyhhcmdzKTtcbiAgICAgIHJldHVybiBBcmdQYXJzZXIuX3RyYW5zZm9ybVBhcnNlZEFyZ3MocGFyc2VkKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICAgIC8vIHRoaXMgaXNuJ3QgdGVzdGVkIHZpYSB1bml0IHRlc3RzICh3ZSB1c2UgYGRlYnVnOiB0cnVlYCkgc28gbWF5IGVzY2FwZSBjb3ZlcmFnZS5cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcigpOyAvLyBuZWVkIGFuIGV4dHJhIHNwYWNlIHNpbmNlIGFyZ3BhcnNlIHByaW50cyB1c2FnZS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYW4gb2JqZWN0IGZ1bGwgb2YgYXJndW1lbnRzIGFzIHJldHVybmVkIGJ5IGBhcmdwYXJzZXIucGFyc2VfYXJnc2AsXG4gICAqIGV4cGFuZCB0aGUgb25lcyBmb3IgZXh0ZW5zaW9ucyBpbnRvIGEgbmVzdGVkIG9iamVjdCBzdHJ1Y3R1cmUgYW5kIHJlbmFtZVxuICAgKiBrZXlzIHRvIG1hdGNoIHRoZSBpbnRlbmRlZCBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogRS5nLiwgYHsnZHJpdmVyLWZvby1iYXInOiBiYXp9YCBiZWNvbWVzIGB7ZHJpdmVyOiB7Zm9vOiB7YmFyOiAnYmF6J319fWBcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0YXRpYyBfdHJhbnNmb3JtUGFyc2VkQXJncyAoYXJncykge1xuICAgIHJldHVybiBfLnJlZHVjZShcbiAgICAgIGFyZ3MsXG4gICAgICAodW5wYWNrZWQsIHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbHVlKSAmJiBoYXNBcmdTcGVjKGtleSkpIHtcbiAgICAgICAgICBjb25zdCB7ZGVzdH0gPSAvKiogQHR5cGUge2ltcG9ydCgnLi4vc2NoZW1hL2FyZy1zcGVjJykuQXJnU3BlY30gKi8oZ2V0QXJnU3BlYyhrZXkpKTtcbiAgICAgICAgICBfLnNldCh1bnBhY2tlZCwgZGVzdCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgYW55dGhpbmcgdGhhdCBfaXNuJ3RfIGEgc2VydmVyIGFyZ1xuICAgICAgICAgIHVucGFja2VkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5wYWNrZWQ7XG4gICAgICB9LFxuICAgICAge30sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaGVzIHRoZSBgZXhpdCgpYCBtZXRob2Qgb2YgdGhlIHBhcnNlciB0byB0aHJvdyBhbiBlcnJvciwgc28gd2UgY2FuIGhhbmRsZSBpdCBtYW51YWxseS5cbiAgICogQHBhcmFtIHtBcmd1bWVudFBhcnNlcn0gcGFyc2VyXG4gICAqL1xuICBzdGF0aWMgX3BhdGNoRXhpdCAocGFyc2VyKSB7XG4gICAgcGFyc2VyLmV4aXQgPSAoY29kZSwgbXNnKSA9PiB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FyZ3BhcnNlJykuU3ViUGFyc2VyfSBzdWJQYXJzZXJcbiAgICogQHJldHVybnMge2ltcG9ydCgnLi9hcmdzJykuQXJndW1lbnREZWZpbml0aW9uc31cbiAgICovXG4gIHN0YXRpYyBfYWRkU2VydmVyVG9QYXJzZXIgKHN1YlBhcnNlcikge1xuICAgIGNvbnN0IHNlcnZlclBhcnNlciA9IHN1YlBhcnNlci5hZGRfcGFyc2VyKCdzZXJ2ZXInLCB7XG4gICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgIGhlbHA6ICdSdW4gYW4gQXBwaXVtIHNlcnZlcicsXG4gICAgfSk7XG5cbiAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChzZXJ2ZXJQYXJzZXIpO1xuXG4gICAgY29uc3Qgc2VydmVyQXJncyA9IGdldFNlcnZlckFyZ3MoKTtcbiAgICBmb3IgKGNvbnN0IFtmbGFnc09yTmFtZXMsIG9wdHNdIG9mIHNlcnZlckFyZ3MpIHtcbiAgICAgIC8vIFRTIGRvZXNuJ3QgbGlrZSB0aGUgc3ByZWFkIG9wZXJhdG9yIGhlcmUuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzZXJ2ZXJQYXJzZXIuYWRkX2FyZ3VtZW50KC4uLmZsYWdzT3JOYW1lcywgey4uLm9wdHN9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VydmVyQXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV4dGVuc2lvbiBzdWItc3ViLWNvbW1hbmRzIHRvIGBkcml2ZXJgL2BwbHVnaW5gIHN1YmNvbW1hbmRzXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcmdwYXJzZScpLlN1YlBhcnNlcn0gc3ViUGFyc2Vyc1xuICAgKi9cbiAgc3RhdGljIF9hZGRFeHRlbnNpb25Db21tYW5kc1RvUGFyc2VyIChzdWJQYXJzZXJzKSB7XG4gICAgZm9yIChjb25zdCB0eXBlIG9mIFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEVdKSB7XG4gICAgICBjb25zdCBleHRQYXJzZXIgPSBzdWJQYXJzZXJzLmFkZF9wYXJzZXIodHlwZSwge1xuICAgICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgICAgaGVscDogYEFjY2VzcyB0aGUgJHt0eXBlfSBtYW5hZ2VtZW50IENMSSBjb21tYW5kc2AsXG4gICAgICB9KTtcblxuICAgICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQoZXh0UGFyc2VyKTtcblxuICAgICAgY29uc3QgZXh0U3ViUGFyc2VycyA9IGV4dFBhcnNlci5hZGRfc3VicGFyc2Vycyh7XG4gICAgICAgIGRlc3Q6IGAke3R5cGV9Q29tbWFuZGAsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbkFyZ3MgPSBnZXRFeHRlbnNpb25BcmdzKCk7XG4gICAgICBjb25zdCBwYXJzZXJTcGVjcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdsaXN0JyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLmxpc3QsXG4gICAgICAgICAgaGVscDogYExpc3QgYXZhaWxhYmxlIGFuZCBpbnN0YWxsZWQgJHt0eXBlfXNgLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ2luc3RhbGwnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0uaW5zdGFsbCxcbiAgICAgICAgICBoZWxwOiBgSW5zdGFsbCBhICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3VuaW5zdGFsbCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS51bmluc3RhbGwsXG4gICAgICAgICAgaGVscDogYFVuaW5zdGFsbCBhICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3VwZGF0ZScsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS51cGRhdGUsXG4gICAgICAgICAgaGVscDogYFVwZGF0ZSBpbnN0YWxsZWQgJHt0eXBlfXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdydW4nLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0ucnVuLFxuICAgICAgICAgIGhlbHA6XG4gICAgICAgICAgICBgUnVuIGEgc2NyaXB0IChkZWZpbmVkIGluc2lkZSB0aGUgJHt0eXBlfSdzIHBhY2thZ2UuanNvbiB1bmRlciB0aGUgYCArXG4gICAgICAgICAgICBg4oCcc2NyaXB0c+KAnSBmaWVsZCBpbnNpZGUgdGhlIOKAnGFwcGl1beKAnSBmaWVsZCkgZnJvbSBhbiBpbnN0YWxsZWQgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IHtjb21tYW5kLCBhcmdzLCBoZWxwfSBvZiBwYXJzZXJTcGVjcykge1xuICAgICAgICBjb25zdCBwYXJzZXIgPSBleHRTdWJQYXJzZXJzLmFkZF9wYXJzZXIoY29tbWFuZCwge2hlbHB9KTtcblxuICAgICAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChwYXJzZXIpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2ZsYWdzT3JOYW1lcywgb3B0c10gb2YgYXJncykge1xuICAgICAgICAgIC8vIGFkZF9hcmd1bWVudCBtdXRhdGVzIHBhcmFtcyBzbyBtYWtlIHN1cmUgdG8gc2VuZCBpbiBjb3BpZXMgaW5zdGVhZFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KC4uLmZsYWdzT3JOYW1lcywgey4uLm9wdHN9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgQXJnUGFyc2VyfSBpbnN0YW5jZTsgZmluYWxpemVzIHRoZSBjb25maWcgc2NoZW1hLlxuICpcbiAqIEBjb25zdHJ1Y3RzIEFyZ1BhcnNlclxuICogQHBhcmFtIHtib29sZWFufSBbZGVidWddIC0gSWYgYHRydWVgLCB0aHJvdyBpbnN0ZWFkIG9mIGV4aXQgdXBvbiBwYXJzaW5nIGVycm9yXG4gKiBAcmV0dXJucyB7QXJnUGFyc2VyfVxuICovXG5mdW5jdGlvbiBnZXRQYXJzZXIgKGRlYnVnKSB7XG4gIGZpbmFsaXplU2NoZW1hKCk7XG5cbiAgcmV0dXJuIG5ldyBBcmdQYXJzZXIoZGVidWcpO1xufVxuXG5leHBvcnQgeyBnZXRQYXJzZXIsIEFyZ1BhcnNlciB9O1xuIl19
191
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOT05fU0VSVkVSX0FSR1MiLCJPYmplY3QiLCJmcmVlemUiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJ2ZXJzaW9uIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwicm9vdERpciIsIkFyZ1BhcnNlciIsImNvbnN0cnVjdG9yIiwiZGVidWciLCJwcm9nIiwicHJvY2VzcyIsImFyZ3YiLCJwYXRoIiwiYmFzZW5hbWUiLCJwYXJzZXIiLCJBcmd1bWVudFBhcnNlciIsImFkZF9oZWxwIiwiZGVzY3JpcHRpb24iLCJfcGF0Y2hFeGl0IiwiYWRkX2FyZ3VtZW50IiwiYWN0aW9uIiwic3ViUGFyc2VycyIsImFkZF9zdWJwYXJzZXJzIiwiZGVzdCIsInNlcnZlckFyZ3MiLCJfYWRkU2VydmVyVG9QYXJzZXIiLCJyYXdBcmdzIiwiX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIiLCJwYXJzZV9hcmdzIiwicGFyc2VBcmdzIiwiYXJncyIsInNsaWNlIiwiaGFzIiwidW5zaGlmdCIsInBhcnNlZCIsIl90cmFuc2Zvcm1QYXJzZWRBcmdzIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwibWVzc2FnZSIsImV4aXQiLCJfIiwicmVkdWNlIiwidW5wYWNrZWQiLCJ2YWx1ZSIsImtleSIsImlzVW5kZWZpbmVkIiwic2V0IiwiY29kZSIsIm1zZyIsIkVycm9yIiwic3ViUGFyc2VyIiwic2VydmVyUGFyc2VyIiwiYWRkX3BhcnNlciIsImhlbHAiLCJmbGFnc09yTmFtZXMiLCJvcHRzIiwidHlwZSIsImV4dFBhcnNlciIsImV4dFN1YlBhcnNlcnMiLCJleHRlbnNpb25BcmdzIiwicGFyc2VyU3BlY3MiLCJjb21tYW5kIiwibGlzdCIsImluc3RhbGwiLCJ1bmluc3RhbGwiLCJ1cGRhdGUiLCJydW4iLCJnZXRQYXJzZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY2xpL3BhcnNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IEFyZ3VtZW50UGFyc2VyIH0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFLCBTRVJWRVJfU1VCQ09NTUFORCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBmaW5hbGl6ZVNjaGVtYSwgZ2V0QXJnU3BlYywgaGFzQXJnU3BlYyB9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQgeyByb290RGlyIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7XG4gIGdldEV4dGVuc2lvbkFyZ3MsXG4gIGdldFNlcnZlckFyZ3Ncbn0gZnJvbSAnLi9hcmdzJztcblxuLyoqXG4gKiBJZiB0aGUgcGFyc2VkIGFyZ3MgZG8gbm90IGNvbnRhaW4gYW55IG9mIHRoZXNlIHZhbHVlcywgdGhlbiB3ZVxuICogd2lsbCBhdXRvbWF0aWFsbHkgaW5qZWN0IHRoZSBgc2VydmVyYCBzdWJjb21tYW5kLlxuICovXG5jb25zdCBOT05fU0VSVkVSX0FSR1MgPSBPYmplY3QuZnJlZXplKFxuICBuZXcgU2V0KFtcbiAgICBEUklWRVJfVFlQRSxcbiAgICBQTFVHSU5fVFlQRSxcbiAgICBTRVJWRVJfU1VCQ09NTUFORCxcbiAgICAnLWgnLFxuICAgICctLWhlbHAnLFxuICAgICctdicsXG4gICAgJy0tdmVyc2lvbidcbiAgXSlcbik7XG5cbmNvbnN0IHZlcnNpb24gPSBmcy5yZWFkUGFja2FnZUpzb25Gcm9tKHJvb3REaXIpLnZlcnNpb247XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBgYXJncGFyc2VgXG4gKlxuICogLSBIYW5kbGVzIGluc3RhbnRpYXRpb24sIGNvbmZpZ3VyYXRpb24sIGFuZCBtb25rZXlwYXRjaGluZyBvZiBhblxuICogICAgYEFyZ3VtZW50UGFyc2VyYCBpbnN0YW5jZSBmb3IgQXBwaXVtIHNlcnZlciBhbmQgaXRzIGV4dGVuc2lvbnNcbiAqIC0gSGFuZGxlcyBlcnJvciBjb25kaXRpb25zLCBtZXNzYWdlcywgYW5kIGV4aXQgYmVoYXZpb3JcbiAqL1xuY2xhc3MgQXJnUGFyc2VyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RlYnVnXSAtIElmIHRydWUsIHRocm93IGluc3RlYWQgb2YgZXhpdCBvbiBlcnJvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChkZWJ1ZyA9IGZhbHNlKSB7XG4gICAgY29uc3QgcHJvZyA9IHByb2Nlc3MuYXJndlsxXSA/IHBhdGguYmFzZW5hbWUocHJvY2Vzcy5hcmd2WzFdKSA6ICdhcHBpdW0nO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBBcmd1bWVudFBhcnNlcih7XG4gICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQSB3ZWJkcml2ZXItY29tcGF0aWJsZSBzZXJ2ZXIgdGhhdCBmYWNpbGl0YXRlcyBhdXRvbWF0aW9uIG9mIHdlYiwgbW9iaWxlLCBhbmQgb3RoZXIgdHlwZXMgb2YgYXBwcyBhY3Jvc3MgdmFyaW91cyBwbGF0Zm9ybXMuJyxcbiAgICAgIHByb2csXG4gICAgfSk7XG5cbiAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChwYXJzZXIpO1xuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbSBuYW1lICh0eXBpY2FsbHkgYGFwcGl1bWApXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnByb2cgPSBwcm9nO1xuXG4gICAgLyoqXG4gICAgICogSWYgYHRydWVgLCB0aHJvdyBhbiBlcnJvciBvbiBwYXJzZSBmYWlsdXJlIGluc3RlYWQgb2YgcHJpbnRpbmcgaGVscFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcblxuICAgIC8qKlxuICAgICAqIFdyYXBwZWQgYEFyZ3VtZW50UGFyc2VyYCBpbnN0YW5jZVxuICAgICAqIEB0eXBlIHtBcmd1bWVudFBhcnNlcn1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcblxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIHtcbiAgICAgIGFjdGlvbjogJ3ZlcnNpb24nLFxuICAgICAgdmVyc2lvbixcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YlBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnMoe2Rlc3Q6ICdzdWJjb21tYW5kJ30pO1xuXG4gICAgLy8gYWRkIHRoZSAnc2VydmVyJyBzdWJjb21tYW5kLCBhbmQgc3RvcmUgdGhlIHJhdyBhcmd1bWVudHMgb24gdGhlIHBhcnNlclxuICAgIC8vIG9iamVjdCBhcyBhIHdheSBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgdG8gd29yayB3aXRoIHRoZSBhcmd1bWVudHNcbiAgICAvLyBjb25jZXB0dWFsbHkgcmF0aGVyIHRoYW4ganVzdCB0aHJvdWdoIGFyZ3BhcnNlXG4gICAgY29uc3Qgc2VydmVyQXJncyA9IEFyZ1BhcnNlci5fYWRkU2VydmVyVG9QYXJzZXIoc3ViUGFyc2Vycyk7XG5cbiAgICB0aGlzLnJhd0FyZ3MgPSBzZXJ2ZXJBcmdzO1xuXG4gICAgLy8gYWRkIHRoZSAnZHJpdmVyJyBhbmQgJ3BsdWdpbicgc3ViY29tbWFuZHNcbiAgICBBcmdQYXJzZXIuX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIoc3ViUGFyc2Vycyk7XG5cbiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAvIGRyb3AtaW4gd3JhcHBlclxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtBcmdQYXJzZXJbJ3BhcnNlQXJncyddfVxuICAgICAqL1xuICAgIHRoaXMucGFyc2VfYXJncyA9IHRoaXMucGFyc2VBcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuXG4gICAqXG4gICAqIElmIG5vIHN1YmNvbW1hbmQgaXMgcGFzc2VkIGluLCB0aGlzIG1ldGhvZCB3aWxsIGluamVjdCB0aGUgYHNlcnZlcmAgc3ViY29tbWFuZC5cbiAgICpcbiAgICogYEFyZ1BhcnNlci5wcm90b3R5cGUucGFyc2VfYXJnc2AgaXMgYW4gYWxpYXMgb2YgdGhpcyBtZXRob2QuXG4gICAqIEB0ZW1wbGF0ZSBbVD1pbXBvcnQoJy4uLy4uL3R5cGVzJykuV2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzXSAtIEFycmF5IG9mIGFyZ3VtZW50cywgb3N0ZW5zaWJseSBmcm9tIGBwcm9jZXNzLmFyZ3ZgLiBHYXRoZXJzIGFyZ3MgZnJvbSBgcHJvY2Vzcy5hcmd2YCBpZiBub3QgcHJvdmlkZWQuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuQXJnczxUPn0gLSBUaGUgcGFyc2VkIGFyZ3VtZW50c1xuICAgKi9cbiAgcGFyc2VBcmdzIChhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDIpKSB7XG4gICAgaWYgKCFOT05fU0VSVkVSX0FSR1MuaGFzKGFyZ3NbMF0pKSB7XG4gICAgICBhcmdzLnVuc2hpZnQoU0VSVkVSX1NVQkNPTU1BTkQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpO1xuICAgICAgcmV0dXJuIEFyZ1BhcnNlci5fdHJhbnNmb3JtUGFyc2VkQXJncyhwYXJzZWQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgLy8gdGhpcyBpc24ndCB0ZXN0ZWQgdmlhIHVuaXQgdGVzdHMgKHdlIHVzZSBgZGVidWc6IHRydWVgKSBzbyBtYXkgZXNjYXBlIGNvdmVyYWdlLlxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKCk7IC8vIG5lZWQgYW4gZXh0cmEgc3BhY2Ugc2luY2UgYXJncGFyc2UgcHJpbnRzIHVzYWdlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhbiBvYmplY3QgZnVsbCBvZiBhcmd1bWVudHMgYXMgcmV0dXJuZWQgYnkgYGFyZ3BhcnNlci5wYXJzZV9hcmdzYCxcbiAgICogZXhwYW5kIHRoZSBvbmVzIGZvciBleHRlbnNpb25zIGludG8gYSBuZXN0ZWQgb2JqZWN0IHN0cnVjdHVyZSBhbmQgcmVuYW1lXG4gICAqIGtleXMgdG8gbWF0Y2ggdGhlIGludGVuZGVkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBFLmcuLCBgeydkcml2ZXItZm9vLWJhcic6IGJhen1gIGJlY29tZXMgYHtkcml2ZXI6IHtmb286IHtiYXI6ICdiYXonfX19YFxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIF90cmFuc2Zvcm1QYXJzZWRBcmdzIChhcmdzKSB7XG4gICAgcmV0dXJuIF8ucmVkdWNlKFxuICAgICAgYXJncyxcbiAgICAgICh1bnBhY2tlZCwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsdWUpICYmIGhhc0FyZ1NwZWMoa2V5KSkge1xuICAgICAgICAgIGNvbnN0IHtkZXN0fSA9IC8qKiBAdHlwZSB7aW1wb3J0KCcuLi9zY2hlbWEvYXJnLXNwZWMnKS5BcmdTcGVjfSAqLyhnZXRBcmdTcGVjKGtleSkpO1xuICAgICAgICAgIF8uc2V0KHVucGFja2VkLCBkZXN0LCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSBhbnl0aGluZyB0aGF0IF9pc24ndF8gYSBzZXJ2ZXIgYXJnXG4gICAgICAgICAgdW5wYWNrZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bnBhY2tlZDtcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoZXMgdGhlIGBleGl0KClgIG1ldGhvZCBvZiB0aGUgcGFyc2VyIHRvIHRocm93IGFuIGVycm9yLCBzbyB3ZSBjYW4gaGFuZGxlIGl0IG1hbnVhbGx5LlxuICAgKiBAcGFyYW0ge0FyZ3VtZW50UGFyc2VyfSBwYXJzZXJcbiAgICovXG4gIHN0YXRpYyBfcGF0Y2hFeGl0IChwYXJzZXIpIHtcbiAgICBwYXJzZXIuZXhpdCA9IChjb2RlLCBtc2cpID0+IHtcbiAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXJncGFyc2UnKS5TdWJQYXJzZXJ9IHN1YlBhcnNlclxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuL2FyZ3MnKS5Bcmd1bWVudERlZmluaXRpb25zfVxuICAgKi9cbiAgc3RhdGljIF9hZGRTZXJ2ZXJUb1BhcnNlciAoc3ViUGFyc2VyKSB7XG4gICAgY29uc3Qgc2VydmVyUGFyc2VyID0gc3ViUGFyc2VyLmFkZF9wYXJzZXIoJ3NlcnZlcicsIHtcbiAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgaGVscDogJ1J1biBhbiBBcHBpdW0gc2VydmVyJyxcbiAgICB9KTtcblxuICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHNlcnZlclBhcnNlcik7XG5cbiAgICBjb25zdCBzZXJ2ZXJBcmdzID0gZ2V0U2VydmVyQXJncygpO1xuICAgIGZvciAoY29uc3QgW2ZsYWdzT3JOYW1lcywgb3B0c10gb2Ygc2VydmVyQXJncykge1xuICAgICAgLy8gVFMgZG9lc24ndCBsaWtlIHRoZSBzcHJlYWQgb3BlcmF0b3IgaGVyZS5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHNlcnZlclBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2ZXJBcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXh0ZW5zaW9uIHN1Yi1zdWItY29tbWFuZHMgdG8gYGRyaXZlcmAvYHBsdWdpbmAgc3ViY29tbWFuZHNcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FyZ3BhcnNlJykuU3ViUGFyc2VyfSBzdWJQYXJzZXJzXG4gICAqL1xuICBzdGF0aWMgX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIgKHN1YlBhcnNlcnMpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgW0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRV0pIHtcbiAgICAgIGNvbnN0IGV4dFBhcnNlciA9IHN1YlBhcnNlcnMuYWRkX3BhcnNlcih0eXBlLCB7XG4gICAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgICBoZWxwOiBgQWNjZXNzIHRoZSAke3R5cGV9IG1hbmFnZW1lbnQgQ0xJIGNvbW1hbmRzYCxcbiAgICAgIH0pO1xuXG4gICAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChleHRQYXJzZXIpO1xuXG4gICAgICBjb25zdCBleHRTdWJQYXJzZXJzID0gZXh0UGFyc2VyLmFkZF9zdWJwYXJzZXJzKHtcbiAgICAgICAgZGVzdDogYCR7dHlwZX1Db21tYW5kYCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZXh0ZW5zaW9uQXJncyA9IGdldEV4dGVuc2lvbkFyZ3MoKTtcbiAgICAgIGNvbnN0IHBhcnNlclNwZWNzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ2xpc3QnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0ubGlzdCxcbiAgICAgICAgICBoZWxwOiBgTGlzdCBhdmFpbGFibGUgYW5kIGluc3RhbGxlZCAke3R5cGV9c2AsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAnaW5zdGFsbCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5pbnN0YWxsLFxuICAgICAgICAgIGhlbHA6IGBJbnN0YWxsIGEgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAndW5pbnN0YWxsJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVuaW5zdGFsbCxcbiAgICAgICAgICBoZWxwOiBgVW5pbnN0YWxsIGEgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAndXBkYXRlJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVwZGF0ZSxcbiAgICAgICAgICBoZWxwOiBgVXBkYXRlIGluc3RhbGxlZCAke3R5cGV9cyB0byB0aGUgbGF0ZXN0IHZlcnNpb25gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3J1bicsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5ydW4sXG4gICAgICAgICAgaGVscDpcbiAgICAgICAgICAgIGBSdW4gYSBzY3JpcHQgKGRlZmluZWQgaW5zaWRlIHRoZSAke3R5cGV9J3MgcGFja2FnZS5qc29uIHVuZGVyIHRoZSBgICtcbiAgICAgICAgICAgIGDigJxzY3JpcHRz4oCdIGZpZWxkIGluc2lkZSB0aGUg4oCcYXBwaXVt4oCdIGZpZWxkKSBmcm9tIGFuIGluc3RhbGxlZCAke3R5cGV9YCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3Qge2NvbW1hbmQsIGFyZ3MsIGhlbHB9IG9mIHBhcnNlclNwZWNzKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IGV4dFN1YlBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5kLCB7aGVscH0pO1xuXG4gICAgICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHBhcnNlcik7XG5cbiAgICAgICAgZm9yIChjb25zdCBbZmxhZ3NPck5hbWVzLCBvcHRzXSBvZiBhcmdzKSB7XG4gICAgICAgICAgLy8gYWRkX2FyZ3VtZW50IG11dGF0ZXMgcGFyYW1zIHNvIG1ha2Ugc3VyZSB0byBzZW5kIGluIGNvcGllcyBpbnN0ZWFkXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBBcmdQYXJzZXJ9IGluc3RhbmNlOyBmaW5hbGl6ZXMgdGhlIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQGNvbnN0cnVjdHMgQXJnUGFyc2VyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtkZWJ1Z10gLSBJZiBgdHJ1ZWAsIHRocm93IGluc3RlYWQgb2YgZXhpdCB1cG9uIHBhcnNpbmcgZXJyb3JcbiAqIEByZXR1cm5zIHtBcmdQYXJzZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldFBhcnNlciAoZGVidWcpIHtcbiAgZmluYWxpemVTY2hlbWEoKTtcblxuICByZXR1cm4gbmV3IEFyZ1BhcnNlcihkZWJ1Zyk7XG59XG5cbmV4cG9ydCB7IGdldFBhcnNlciwgQXJnUGFyc2VyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVNBLE1BQU1BLGVBQWUsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQ3RCLElBQUlDLEdBQUosQ0FBUSxDQUNOQyxzQkFETSxFQUVOQyxzQkFGTSxFQUdOQyw0QkFITSxFQUlOLElBSk0sRUFLTixRQUxNLEVBTU4sSUFOTSxFQU9OLFdBUE0sQ0FBUixDQURzQixDQUF4Qjs7QUFZQSxNQUFNQyxPQUFPLEdBQUdDLFlBQUdDLG1CQUFILENBQXVCQyxlQUF2QixFQUFnQ0gsT0FBaEQ7O0FBU0EsTUFBTUksU0FBTixDQUFnQjtFQUlkQyxXQUFXLENBQUVDLEtBQUssR0FBRyxLQUFWLEVBQWlCO0lBQzFCLE1BQU1DLElBQUksR0FBR0MsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYixJQUFrQkMsY0FBS0MsUUFBTCxDQUFjSCxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiLENBQWQsQ0FBbEIsR0FBbUQsUUFBaEU7SUFDQSxNQUFNRyxNQUFNLEdBQUcsSUFBSUMsd0JBQUosQ0FBbUI7TUFDaENDLFFBQVEsRUFBRSxJQURzQjtNQUVoQ0MsV0FBVyxFQUNULDZIQUg4QjtNQUloQ1I7SUFKZ0MsQ0FBbkIsQ0FBZjs7SUFPQUgsU0FBUyxDQUFDWSxVQUFWLENBQXFCSixNQUFyQjs7SUFNQSxLQUFLTCxJQUFMLEdBQVlBLElBQVo7SUFNQSxLQUFLRCxLQUFMLEdBQWFBLEtBQWI7SUFNQSxLQUFLTSxNQUFMLEdBQWNBLE1BQWQ7SUFFQUEsTUFBTSxDQUFDSyxZQUFQLENBQW9CLElBQXBCLEVBQTBCLFdBQTFCLEVBQXVDO01BQ3JDQyxNQUFNLEVBQUUsU0FENkI7TUFFckNsQjtJQUZxQyxDQUF2QztJQUtBLE1BQU1tQixVQUFVLEdBQUdQLE1BQU0sQ0FBQ1EsY0FBUCxDQUFzQjtNQUFDQyxJQUFJLEVBQUU7SUFBUCxDQUF0QixDQUFuQjs7SUFLQSxNQUFNQyxVQUFVLEdBQUdsQixTQUFTLENBQUNtQixrQkFBVixDQUE2QkosVUFBN0IsQ0FBbkI7O0lBRUEsS0FBS0ssT0FBTCxHQUFlRixVQUFmOztJQUdBbEIsU0FBUyxDQUFDcUIsNkJBQVYsQ0FBd0NOLFVBQXhDOztJQU1BLEtBQUtPLFVBQUwsR0FBa0IsS0FBS0MsU0FBdkI7RUFDRDs7RUFZREEsU0FBUyxDQUFFQyxJQUFJLEdBQUdwQixPQUFPLENBQUNDLElBQVIsQ0FBYW9CLEtBQWIsQ0FBbUIsQ0FBbkIsQ0FBVCxFQUFnQztJQUN2QyxJQUFJLENBQUNwQyxlQUFlLENBQUNxQyxHQUFoQixDQUFvQkYsSUFBSSxDQUFDLENBQUQsQ0FBeEIsQ0FBTCxFQUFtQztNQUNqQ0EsSUFBSSxDQUFDRyxPQUFMLENBQWFoQyw0QkFBYjtJQUNEOztJQUVELElBQUk7TUFDRixNQUFNaUMsTUFBTSxHQUFHLEtBQUtwQixNQUFMLENBQVljLFVBQVosQ0FBdUJFLElBQXZCLENBQWY7TUFDQSxPQUFPeEIsU0FBUyxDQUFDNkIsb0JBQVYsQ0FBK0JELE1BQS9CLENBQVA7SUFDRCxDQUhELENBR0UsT0FBT0UsR0FBUCxFQUFZO01BQ1osSUFBSSxLQUFLNUIsS0FBVCxFQUFnQjtRQUNkLE1BQU00QixHQUFOO01BQ0Q7O01BSUQ7UUFFRUMsT0FBTyxDQUFDQyxLQUFSO1FBRUFELE9BQU8sQ0FBQ0MsS0FBUixDQUFjRixHQUFHLENBQUNHLE9BQWxCO1FBQ0E3QixPQUFPLENBQUM4QixJQUFSLENBQWEsQ0FBYjtNQUNEO0lBQ0Y7RUFDRjs7RUFXMEIsT0FBcEJMLG9CQUFvQixDQUFFTCxJQUFGLEVBQVE7SUFDakMsT0FBT1csZ0JBQUVDLE1BQUYsQ0FDTFosSUFESyxFQUVMLENBQUNhLFFBQUQsRUFBV0MsS0FBWCxFQUFrQkMsR0FBbEIsS0FBMEI7TUFDeEIsSUFBSSxDQUFDSixnQkFBRUssV0FBRixDQUFjRixLQUFkLENBQUQsSUFBeUIsd0JBQVdDLEdBQVgsQ0FBN0IsRUFBOEM7UUFDNUMsTUFBTTtVQUFDdEI7UUFBRCxJQUE2RCx3QkFBV3NCLEdBQVgsQ0FBbkU7O1FBQ0FKLGdCQUFFTSxHQUFGLENBQU1KLFFBQU4sRUFBZ0JwQixJQUFoQixFQUFzQnFCLEtBQXRCO01BQ0QsQ0FIRCxNQUdPO1FBRUxELFFBQVEsQ0FBQ0UsR0FBRCxDQUFSLEdBQWdCRCxLQUFoQjtNQUNEOztNQUNELE9BQU9ELFFBQVA7SUFDRCxDQVhJLEVBWUwsRUFaSyxDQUFQO0VBY0Q7O0VBTWdCLE9BQVZ6QixVQUFVLENBQUVKLE1BQUYsRUFBVTtJQUN6QkEsTUFBTSxDQUFDMEIsSUFBUCxHQUFjLENBQUNRLElBQUQsRUFBT0MsR0FBUCxLQUFlO01BQzNCLElBQUlELElBQUosRUFBVTtRQUNSLE1BQU0sSUFBSUUsS0FBSixDQUFVRCxHQUFWLENBQU47TUFDRDs7TUFDRHZDLE9BQU8sQ0FBQzhCLElBQVI7SUFDRCxDQUxEO0VBTUQ7O0VBT3dCLE9BQWxCZixrQkFBa0IsQ0FBRTBCLFNBQUYsRUFBYTtJQUNwQyxNQUFNQyxZQUFZLEdBQUdELFNBQVMsQ0FBQ0UsVUFBVixDQUFxQixRQUFyQixFQUErQjtNQUNsRHJDLFFBQVEsRUFBRSxJQUR3QztNQUVsRHNDLElBQUksRUFBRTtJQUY0QyxDQUEvQixDQUFyQjs7SUFLQWhELFNBQVMsQ0FBQ1ksVUFBVixDQUFxQmtDLFlBQXJCOztJQUVBLE1BQU01QixVQUFVLEdBQUcsMEJBQW5COztJQUNBLEtBQUssTUFBTSxDQUFDK0IsWUFBRCxFQUFlQyxJQUFmLENBQVgsSUFBbUNoQyxVQUFuQyxFQUErQztNQUc3QzRCLFlBQVksQ0FBQ2pDLFlBQWIsQ0FBMEIsR0FBR29DLFlBQTdCLEVBQTJDLEVBQUMsR0FBR0M7TUFBSixDQUEzQztJQUNEOztJQUVELE9BQU9oQyxVQUFQO0VBQ0Q7O0VBTW1DLE9BQTdCRyw2QkFBNkIsQ0FBRU4sVUFBRixFQUFjO0lBQ2hELEtBQUssTUFBTW9DLElBQVgsSUFBbUIsQ0FBQzFELHNCQUFELEVBQWNDLHNCQUFkLENBQW5CLEVBQStDO01BQzdDLE1BQU0wRCxTQUFTLEdBQUdyQyxVQUFVLENBQUNnQyxVQUFYLENBQXNCSSxJQUF0QixFQUE0QjtRQUM1Q3pDLFFBQVEsRUFBRSxJQURrQztRQUU1Q3NDLElBQUksRUFBRyxjQUFhRyxJQUFLO01BRm1CLENBQTVCLENBQWxCOztNQUtBbkQsU0FBUyxDQUFDWSxVQUFWLENBQXFCd0MsU0FBckI7O01BRUEsTUFBTUMsYUFBYSxHQUFHRCxTQUFTLENBQUNwQyxjQUFWLENBQXlCO1FBQzdDQyxJQUFJLEVBQUcsR0FBRWtDLElBQUs7TUFEK0IsQ0FBekIsQ0FBdEI7TUFHQSxNQUFNRyxhQUFhLEdBQUcsNkJBQXRCO01BQ0EsTUFBTUMsV0FBVyxHQUFHLENBQ2xCO1FBQ0VDLE9BQU8sRUFBRSxNQURYO1FBRUVoQyxJQUFJLEVBQUU4QixhQUFhLENBQUNILElBQUQsQ0FBYixDQUFvQk0sSUFGNUI7UUFHRVQsSUFBSSxFQUFHLGdDQUErQkcsSUFBSztNQUg3QyxDQURrQixFQU1sQjtRQUNFSyxPQUFPLEVBQUUsU0FEWDtRQUVFaEMsSUFBSSxFQUFFOEIsYUFBYSxDQUFDSCxJQUFELENBQWIsQ0FBb0JPLE9BRjVCO1FBR0VWLElBQUksRUFBRyxhQUFZRyxJQUFLO01BSDFCLENBTmtCLEVBV2xCO1FBQ0VLLE9BQU8sRUFBRSxXQURYO1FBRUVoQyxJQUFJLEVBQUU4QixhQUFhLENBQUNILElBQUQsQ0FBYixDQUFvQlEsU0FGNUI7UUFHRVgsSUFBSSxFQUFHLGVBQWNHLElBQUs7TUFINUIsQ0FYa0IsRUFnQmxCO1FBQ0VLLE9BQU8sRUFBRSxRQURYO1FBRUVoQyxJQUFJLEVBQUU4QixhQUFhLENBQUNILElBQUQsQ0FBYixDQUFvQlMsTUFGNUI7UUFHRVosSUFBSSxFQUFHLG9CQUFtQkcsSUFBSztNQUhqQyxDQWhCa0IsRUFxQmxCO1FBQ0VLLE9BQU8sRUFBRSxLQURYO1FBRUVoQyxJQUFJLEVBQUU4QixhQUFhLENBQUNILElBQUQsQ0FBYixDQUFvQlUsR0FGNUI7UUFHRWIsSUFBSSxFQUNELG9DQUFtQ0csSUFBSyw0QkFBekMsR0FDQyxnRUFBK0RBLElBQUs7TUFMekUsQ0FyQmtCLENBQXBCOztNQThCQSxLQUFLLE1BQU07UUFBQ0ssT0FBRDtRQUFVaEMsSUFBVjtRQUFnQndCO01BQWhCLENBQVgsSUFBb0NPLFdBQXBDLEVBQWlEO1FBQy9DLE1BQU0vQyxNQUFNLEdBQUc2QyxhQUFhLENBQUNOLFVBQWQsQ0FBeUJTLE9BQXpCLEVBQWtDO1VBQUNSO1FBQUQsQ0FBbEMsQ0FBZjs7UUFFQWhELFNBQVMsQ0FBQ1ksVUFBVixDQUFxQkosTUFBckI7O1FBRUEsS0FBSyxNQUFNLENBQUN5QyxZQUFELEVBQWVDLElBQWYsQ0FBWCxJQUFtQzFCLElBQW5DLEVBQXlDO1VBR3ZDaEIsTUFBTSxDQUFDSyxZQUFQLENBQW9CLEdBQUdvQyxZQUF2QixFQUFxQyxFQUFDLEdBQUdDO1VBQUosQ0FBckM7UUFDRDtNQUNGO0lBQ0Y7RUFDRjs7QUFyTmE7Ozs7QUErTmhCLFNBQVNZLFNBQVQsQ0FBb0I1RCxLQUFwQixFQUEyQjtFQUN6QjtFQUVBLE9BQU8sSUFBSUYsU0FBSixDQUFjRSxLQUFkLENBQVA7QUFDRCJ9
@@ -87,4 +87,4 @@ class PluginCommand extends _extensionCommand.default {
87
87
  }
88
88
 
89
89
  exports.default = PluginCommand;
90
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwibmFtZXMiOlsiUkVRX1BMVUdJTl9GSUVMRFMiLCJQbHVnaW5Db21tYW5kIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwianNvbiIsImtub3duRXh0ZW5zaW9ucyIsIktOT1dOX1BMVUdJTlMiLCJpbnN0YWxsIiwicGx1Z2luIiwiaW5zdGFsbFR5cGUiLCJwYWNrYWdlTmFtZSIsIl9pbnN0YWxsIiwiZXh0IiwidW5pbnN0YWxsIiwiX3VuaW5zdGFsbCIsInVwZGF0ZSIsInVuc2FmZSIsIl91cGRhdGUiLCJydW4iLCJzY3JpcHROYW1lIiwiX3J1biIsImdldFBvc3RJbnN0YWxsVGV4dCIsImV4dE5hbWUiLCJleHREYXRhIiwidmVyc2lvbiIsImdyZWVuIiwidmFsaWRhdGVFeHRlbnNpb25GaWVsZHMiLCJhcHBpdW1Qa2dEYXRhIiwibWlzc2luZ0ZpZWxkcyIsInJlZHVjZSIsImFjYyIsImZpZWxkIiwiXyIsImlzRW1wdHkiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsQ0FBQyxZQUFELEVBQWUsV0FBZixDQUExQjs7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyx5QkFBNUIsQ0FBNkM7QUFNMURDLEVBQUFBLFdBQVcsQ0FBRTtBQUFDQyxJQUFBQSxNQUFEO0FBQVNDLElBQUFBO0FBQVQsR0FBRixFQUFrQjtBQUMzQixVQUFNO0FBQUNELE1BQUFBLE1BQUQ7QUFBU0MsTUFBQUE7QUFBVCxLQUFOO0FBQ0EsU0FBS0MsZUFBTCxHQUF1QkMsd0JBQXZCO0FBQ0Q7O0FBRVksUUFBUEMsT0FBTyxDQUFFO0FBQUNDLElBQUFBLE1BQUQ7QUFBU0MsSUFBQUEsV0FBVDtBQUFzQkMsSUFBQUE7QUFBdEIsR0FBRixFQUFzQztBQUNqRCxXQUFPLE1BQU0sTUFBTUMsUUFBTixDQUFlO0FBQUNDLE1BQUFBLEdBQUcsRUFBRUosTUFBTjtBQUFjQyxNQUFBQSxXQUFkO0FBQTJCQyxNQUFBQTtBQUEzQixLQUFmLENBQWI7QUFDRDs7QUFFYyxRQUFURyxTQUFTLENBQUU7QUFBQ0wsSUFBQUE7QUFBRCxHQUFGLEVBQVk7QUFDekIsV0FBTyxNQUFNLE1BQU1NLFVBQU4sQ0FBaUI7QUFBQ0YsTUFBQUEsR0FBRyxFQUFFSjtBQUFOLEtBQWpCLENBQWI7QUFDRDs7QUFFVyxRQUFOTyxNQUFNLENBQUU7QUFBQ1AsSUFBQUEsTUFBRDtBQUFTUSxJQUFBQTtBQUFULEdBQUYsRUFBb0I7QUFDOUIsV0FBTyxNQUFNLE1BQU1DLE9BQU4sQ0FBYztBQUFDTCxNQUFBQSxHQUFHLEVBQUVKLE1BQU47QUFBY1EsTUFBQUE7QUFBZCxLQUFkLENBQWI7QUFDRDs7QUFFUSxRQUFIRSxHQUFHLENBQUU7QUFBQ1YsSUFBQUEsTUFBRDtBQUFTVyxJQUFBQTtBQUFULEdBQUYsRUFBd0I7QUFDL0IsV0FBTyxNQUFNLE1BQU1DLElBQU4sQ0FBVztBQUFDUixNQUFBQSxHQUFHLEVBQUVKLE1BQU47QUFBY1csTUFBQUE7QUFBZCxLQUFYLENBQWI7QUFDRDs7QUFFREUsRUFBQUEsa0JBQWtCLENBQUU7QUFBQ0MsSUFBQUEsT0FBRDtBQUFVQyxJQUFBQTtBQUFWLEdBQUYsRUFBc0I7QUFDdEMsV0FBUSxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSx5QkFBckMsQ0FBOERDLEtBQXJFO0FBQ0Q7O0FBRURDLEVBQUFBLHVCQUF1QixDQUFFQyxhQUFGLEVBQWlCO0FBQ3RDLFVBQU1DLGFBQWEsR0FBRzdCLGlCQUFpQixDQUFDOEIsTUFBbEIsQ0FBeUIsQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLEtBQzdDSixhQUFhLENBQUNJLEtBQUQsQ0FBYixHQUF1QkQsR0FBdkIsR0FBNkIsQ0FBQyxHQUFHQSxHQUFKLEVBQVNDLEtBQVQsQ0FEVCxFQUVuQixFQUZtQixDQUF0Qjs7QUFJQSxRQUFJLENBQUNDLGdCQUFFQyxPQUFGLENBQVVMLGFBQVYsQ0FBTCxFQUErQjtBQUM3QixZQUFNLElBQUlNLEtBQUosQ0FBVyxpRUFBRCxHQUNDLGdDQUErQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVSLGFBQWYsQ0FBOEIsRUFEeEUsQ0FBTjtBQUVEO0FBRUY7O0FBekN5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgRXh0ZW5zaW9uQ29tbWFuZCBmcm9tICcuL2V4dGVuc2lvbi1jb21tYW5kJztcbmltcG9ydCB7IEtOT1dOX1BMVUdJTlMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRVFfUExVR0lOX0ZJRUxEUyA9IFsncGx1Z2luTmFtZScsICdtYWluQ2xhc3MnXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ29tbWFuZCBleHRlbmRzIEV4dGVuc2lvbkNvbW1hbmQge1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge1BsdWdpbkNvbW1hbmRPcHRpb25zfSBvcHRzXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoe2NvbmZpZywganNvbn0pIHtcbiAgICBzdXBlcih7Y29uZmlnLCBqc29ufSk7XG4gICAgdGhpcy5rbm93bkV4dGVuc2lvbnMgPSBLTk9XTl9QTFVHSU5TO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbCAoe3BsdWdpbiwgaW5zdGFsbFR5cGUsIHBhY2thZ2VOYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5faW5zdGFsbCh7ZXh0OiBwbHVnaW4sIGluc3RhbGxUeXBlLCBwYWNrYWdlTmFtZX0pO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsICh7cGx1Z2lufSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdW5pbnN0YWxsKHtleHQ6IHBsdWdpbn0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlICh7cGx1Z2luLCB1bnNhZmV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91cGRhdGUoe2V4dDogcGx1Z2luLCB1bnNhZmV9KTtcbiAgfVxuXG4gIGFzeW5jIHJ1biAoe3BsdWdpbiwgc2NyaXB0TmFtZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX3J1bih7ZXh0OiBwbHVnaW4sIHNjcmlwdE5hbWV9KTtcbiAgfVxuXG4gIGdldFBvc3RJbnN0YWxsVGV4dCAoe2V4dE5hbWUsIGV4dERhdGF9KSB7XG4gICAgcmV0dXJuIGBQbHVnaW4gJHtleHROYW1lfUAke2V4dERhdGEudmVyc2lvbn0gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZGAuZ3JlZW47XG4gIH1cblxuICB2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyAoYXBwaXVtUGtnRGF0YSkge1xuICAgIGNvbnN0IG1pc3NpbmdGaWVsZHMgPSBSRVFfUExVR0lOX0ZJRUxEUy5yZWR1Y2UoKGFjYywgZmllbGQpID0+IChcbiAgICAgIGFwcGl1bVBrZ0RhdGFbZmllbGRdID8gYWNjIDogWy4uLmFjYywgZmllbGRdXG4gICAgKSwgW10pO1xuXG4gICAgaWYgKCFfLmlzRW1wdHkobWlzc2luZ0ZpZWxkcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFsbGVkIHBsdWdpbiBkaWQgbm90IGV4cG9zZSBjb3JyZWN0IGZpZWxkcyBmb3IgY29tcGFiaWxpdHkgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYHdpdGggQXBwaXVtLiBNaXNzaW5nIGZpZWxkczogJHtKU09OLnN0cmluZ2lmeShtaXNzaW5nRmllbGRzKX1gKTtcbiAgICB9XG5cbiAgfVxuXG59XG5cbi8qKlxuICogQHR5cGVkZWYgUGx1Z2luQ29tbWFuZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxpbXBvcnQoJy4uL2V4dGVuc2lvbi9tYW5pZmVzdCcpLlBsdWdpblR5cGU+fSBjb25maWdcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0ganNvblxuICovXG4iXX0=
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfUExVR0lOX0ZJRUxEUyIsIlBsdWdpbkNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fUExVR0lOUyIsImluc3RhbGwiLCJwbHVnaW4iLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJleHQiLCJ1bmluc3RhbGwiLCJfdW5pbnN0YWxsIiwidXBkYXRlIiwidW5zYWZlIiwiX3VwZGF0ZSIsInJ1biIsInNjcmlwdE5hbWUiLCJfcnVuIiwiZ2V0UG9zdEluc3RhbGxUZXh0IiwiZXh0TmFtZSIsImV4dERhdGEiLCJ2ZXJzaW9uIiwiZ3JlZW4iLCJ2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyIsImFwcGl1bVBrZ0RhdGEiLCJtaXNzaW5nRmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHsgS05PV05fUExVR0lOUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IFJFUV9QTFVHSU5fRklFTERTID0gWydwbHVnaW5OYW1lJywgJ21haW5DbGFzcyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5Db21tYW5kIGV4dGVuZHMgRXh0ZW5zaW9uQ29tbWFuZCB7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7UGx1Z2luQ29tbWFuZE9wdGlvbnN9IG9wdHNcbiAgICovXG4gIGNvbnN0cnVjdG9yICh7Y29uZmlnLCBqc29ufSkge1xuICAgIHN1cGVyKHtjb25maWcsIGpzb259KTtcbiAgICB0aGlzLmtub3duRXh0ZW5zaW9ucyA9IEtOT1dOX1BMVUdJTlM7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsICh7cGx1Z2luLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9pbnN0YWxsKHtleHQ6IHBsdWdpbiwgaW5zdGFsbFR5cGUsIHBhY2thZ2VOYW1lfSk7XG4gIH1cblxuICBhc3luYyB1bmluc3RhbGwgKHtwbHVnaW59KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91bmluc3RhbGwoe2V4dDogcGx1Z2lufSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUgKHtwbHVnaW4sIHVuc2FmZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX3VwZGF0ZSh7ZXh0OiBwbHVnaW4sIHVuc2FmZX0pO1xuICB9XG5cbiAgYXN5bmMgcnVuICh7cGx1Z2luLCBzY3JpcHROYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fcnVuKHtleHQ6IHBsdWdpbiwgc2NyaXB0TmFtZX0pO1xuICB9XG5cbiAgZ2V0UG9zdEluc3RhbGxUZXh0ICh7ZXh0TmFtZSwgZXh0RGF0YX0pIHtcbiAgICByZXR1cm4gYFBsdWdpbiAke2V4dE5hbWV9QCR7ZXh0RGF0YS52ZXJzaW9ufSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkYC5ncmVlbjtcbiAgfVxuXG4gIHZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIChhcHBpdW1Qa2dEYXRhKSB7XG4gICAgY29uc3QgbWlzc2luZ0ZpZWxkcyA9IFJFUV9QTFVHSU5fRklFTERTLnJlZHVjZSgoYWNjLCBmaWVsZCkgPT4gKFxuICAgICAgYXBwaXVtUGtnRGF0YVtmaWVsZF0gPyBhY2MgOiBbLi4uYWNjLCBmaWVsZF1cbiAgICApLCBbXSk7XG5cbiAgICBpZiAoIV8uaXNFbXB0eShtaXNzaW5nRmllbGRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YWxsZWQgcGx1Z2luIGRpZCBub3QgZXhwb3NlIGNvcnJlY3QgZmllbGRzIGZvciBjb21wYWJpbGl0eSBgICtcbiAgICAgICAgICAgICAgICAgICAgICBgd2l0aCBBcHBpdW0uIE1pc3NpbmcgZmllbGRzOiAke0pTT04uc3RyaW5naWZ5KG1pc3NpbmdGaWVsZHMpfWApO1xuICAgIH1cblxuICB9XG5cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBQbHVnaW5Db21tYW5kT3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4uL2V4dGVuc2lvbi9leHRlbnNpb24tY29uZmlnJykuRXh0ZW5zaW9uQ29uZmlnPGltcG9ydCgnLi4vZXh0ZW5zaW9uL21hbmlmZXN0JykuUGx1Z2luVHlwZT59IGNvbmZpZ1xuICogQHByb3BlcnR5IHtib29sZWFufSBqc29uXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxDQUFDLFlBQUQsRUFBZSxXQUFmLENBQTFCOztBQUVlLE1BQU1DLGFBQU4sU0FBNEJDLHlCQUE1QixDQUE2QztFQU0xREMsV0FBVyxDQUFFO0lBQUNDLE1BQUQ7SUFBU0M7RUFBVCxDQUFGLEVBQWtCO0lBQzNCLE1BQU07TUFBQ0QsTUFBRDtNQUFTQztJQUFULENBQU47SUFDQSxLQUFLQyxlQUFMLEdBQXVCQyx3QkFBdkI7RUFDRDs7RUFFWSxNQUFQQyxPQUFPLENBQUU7SUFBQ0MsTUFBRDtJQUFTQyxXQUFUO0lBQXNCQztFQUF0QixDQUFGLEVBQXNDO0lBQ2pELE9BQU8sTUFBTSxNQUFNQyxRQUFOLENBQWU7TUFBQ0MsR0FBRyxFQUFFSixNQUFOO01BQWNDLFdBQWQ7TUFBMkJDO0lBQTNCLENBQWYsQ0FBYjtFQUNEOztFQUVjLE1BQVRHLFNBQVMsQ0FBRTtJQUFDTDtFQUFELENBQUYsRUFBWTtJQUN6QixPQUFPLE1BQU0sTUFBTU0sVUFBTixDQUFpQjtNQUFDRixHQUFHLEVBQUVKO0lBQU4sQ0FBakIsQ0FBYjtFQUNEOztFQUVXLE1BQU5PLE1BQU0sQ0FBRTtJQUFDUCxNQUFEO0lBQVNRO0VBQVQsQ0FBRixFQUFvQjtJQUM5QixPQUFPLE1BQU0sTUFBTUMsT0FBTixDQUFjO01BQUNMLEdBQUcsRUFBRUosTUFBTjtNQUFjUTtJQUFkLENBQWQsQ0FBYjtFQUNEOztFQUVRLE1BQUhFLEdBQUcsQ0FBRTtJQUFDVixNQUFEO0lBQVNXO0VBQVQsQ0FBRixFQUF3QjtJQUMvQixPQUFPLE1BQU0sTUFBTUMsSUFBTixDQUFXO01BQUNSLEdBQUcsRUFBRUosTUFBTjtNQUFjVztJQUFkLENBQVgsQ0FBYjtFQUNEOztFQUVERSxrQkFBa0IsQ0FBRTtJQUFDQyxPQUFEO0lBQVVDO0VBQVYsQ0FBRixFQUFzQjtJQUN0QyxPQUFRLFVBQVNELE9BQVEsSUFBR0MsT0FBTyxDQUFDQyxPQUFRLHlCQUFyQyxDQUE4REMsS0FBckU7RUFDRDs7RUFFREMsdUJBQXVCLENBQUVDLGFBQUYsRUFBaUI7SUFDdEMsTUFBTUMsYUFBYSxHQUFHN0IsaUJBQWlCLENBQUM4QixNQUFsQixDQUF5QixDQUFDQyxHQUFELEVBQU1DLEtBQU4sS0FDN0NKLGFBQWEsQ0FBQ0ksS0FBRCxDQUFiLEdBQXVCRCxHQUF2QixHQUE2QixDQUFDLEdBQUdBLEdBQUosRUFBU0MsS0FBVCxDQURULEVBRW5CLEVBRm1CLENBQXRCOztJQUlBLElBQUksQ0FBQ0MsZ0JBQUVDLE9BQUYsQ0FBVUwsYUFBVixDQUFMLEVBQStCO01BQzdCLE1BQU0sSUFBSU0sS0FBSixDQUFXLGlFQUFELEdBQ0MsZ0NBQStCQyxJQUFJLENBQUNDLFNBQUwsQ0FBZVIsYUFBZixDQUE4QixFQUR4RSxDQUFOO0lBRUQ7RUFFRjs7QUF6Q3lEIn0=
@@ -80,4 +80,4 @@ class RingBuffer {
80
80
  }
81
81
 
82
82
  exports.RingBuffer = RingBuffer;
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvdXRpbHMuanMiXSwibmFtZXMiOlsiSlNPTl9TUEFDRVMiLCJlcnJBbmRRdWl0IiwianNvbiIsIm1zZyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZXJyb3IiLCJyZWQiLCJzdGRlcnIiLCJwcm9jZXNzIiwiZXhpdCIsInNwaW5XaXRoIiwiZm4iLCJzcGlubmVyIiwic3RhcnQiLCJyZXMiLCJzdWNjZWVkIiwiZXJyIiwiZmFpbCIsIlJpbmdCdWZmZXIiLCJjb25zdHJ1Y3RvciIsInNpemUiLCJidWZmZXIiLCJnZXRCdWZmIiwiZGVxdWV1ZSIsInNoaWZ0IiwiZW5xdWV1ZSIsIml0ZW0iLCJsZW5ndGgiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUVBOztBQUVBLE1BQU1BLFdBQVcsR0FBRyxDQUFwQjs7O0FBT0EsU0FBU0MsVUFBVCxDQUFxQkMsSUFBckIsRUFBMkJDLEdBQTNCLEVBQWdDO0FBQzlCLE1BQUlELElBQUosRUFBVTtBQUNSRSxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsSUFBSSxDQUFDQyxTQUFMLENBQWU7QUFBQ0MsTUFBQUEsS0FBSyxFQUFHLEdBQUVMLEdBQUk7QUFBZixLQUFmLEVBQWtDLElBQWxDLEVBQXdDSCxXQUF4QyxDQUFaO0FBQ0QsR0FGRCxNQUVPO0FBQ0xJLElBQUFBLE9BQU8sQ0FBQ0ksS0FBUixDQUFlLEdBQUVMLEdBQUksRUFBUCxDQUFTTSxHQUF2Qjs7QUFDQSxRQUFJTixHQUFHLENBQUNPLE1BQVIsRUFBZ0I7QUFDZE4sTUFBQUEsT0FBTyxDQUFDSSxLQUFSLENBQWUsR0FBRUwsR0FBRyxDQUFDTyxNQUFPLEVBQWQsQ0FBZ0JELEdBQTlCO0FBQ0Q7QUFDRjs7QUFDREUsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNEOztBQU9ELFNBQVNQLEdBQVQsQ0FBY0gsSUFBZCxFQUFvQkMsR0FBcEIsRUFBeUI7QUFDdkIsR0FBQ0QsSUFBRCxJQUFTRSxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsR0FBWixDQUFUO0FBQ0Q7O0FBUUQsZUFBZVUsUUFBZixDQUF5QlgsSUFBekIsRUFBK0JDLEdBQS9CLEVBQW9DVyxFQUFwQyxFQUF3QztBQUN0QyxNQUFJWixJQUFKLEVBQVU7QUFDUixXQUFPLE1BQU1ZLEVBQUUsRUFBZjtBQUNEOztBQUNELFFBQU1DLE9BQU8sR0FBRyxrQkFBSVosR0FBSixFQUFTYSxLQUFULEVBQWhCO0FBQ0EsTUFBSUMsR0FBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFBLEdBQUcsR0FBRyxNQUFNSCxFQUFFLEVBQWQ7QUFDQUMsSUFBQUEsT0FBTyxDQUFDRyxPQUFSO0FBQ0EsV0FBT0QsR0FBUDtBQUNELEdBSkQsQ0FJRSxPQUFPRSxHQUFQLEVBQVk7QUFDWkosSUFBQUEsT0FBTyxDQUFDSyxJQUFSO0FBQ0EsVUFBTUQsR0FBTjtBQUNEO0FBQ0Y7O0FBRUQsTUFBTUUsVUFBTixDQUFpQjtBQUNmQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsU0FBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDRDs7QUFDREMsRUFBQUEsT0FBTyxHQUFJO0FBQ1QsV0FBTyxLQUFLRCxNQUFaO0FBQ0Q7O0FBQ0RFLEVBQUFBLE9BQU8sR0FBSTtBQUNULFNBQUtGLE1BQUwsQ0FBWUcsS0FBWjtBQUNEOztBQUNEQyxFQUFBQSxPQUFPLENBQUVDLElBQUYsRUFBUTtBQUNiLFFBQUksS0FBS0wsTUFBTCxDQUFZTSxNQUFaLElBQXNCLEtBQUtQLElBQS9CLEVBQXFDO0FBQ25DLFdBQUtHLE9BQUw7QUFDRDs7QUFDRCxTQUFLRixNQUFMLENBQVlPLElBQVosQ0FBaUJGLElBQWpCO0FBQ0Q7O0FBaEJjIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5cbmNvbnN0IEpTT05fU1BBQ0VTID0gNDtcblxuLyoqKlxuICogTG9nIGFuIGVycm9yIHRvIHRoZSBjb25zb2xlIGFuZCBleGl0IHRoZSBwcm9jZXNzLlxuICogQHBhcmFtIHtib29sZWFufSBqc29uIC0gd2hldGhlciB3ZSBzaG91bGQgbG9nIGpzb24gb3IgdGV4dFxuICogQHBhcmFtIHthbnl9IG1zZyAtIGVycm9yIG1lc3NhZ2UsIG9iamVjdCwgRXJyb3IgaW5zdGFuY2UsIGV0Yy5cbiAqL1xuZnVuY3Rpb24gZXJyQW5kUXVpdCAoanNvbiwgbXNnKSB7XG4gIGlmIChqc29uKSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe2Vycm9yOiBgJHttc2d9YH0sIG51bGwsIEpTT05fU1BBQ0VTKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihgJHttc2d9YC5yZWQpO1xuICAgIGlmIChtc2cuc3RkZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke21zZy5zdGRlcnJ9YC5yZWQpO1xuICAgIH1cbiAgfVxuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbi8qKlxuICogQ29uZGl0aW9uYWxseSBsb2cgc29tZXRoaW5nIHRvIHRoZSBjb25zb2xlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGpzb24gLSB3aGV0aGVyIHdlIGFyZSBpbiBqc29uIG1vZGUgKGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBsb2cpXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIC0gc3RyaW5nIHRvIGxvZ1xuICovXG5mdW5jdGlvbiBsb2cgKGpzb24sIG1zZykge1xuICAhanNvbiAmJiBjb25zb2xlLmxvZyhtc2cpO1xufVxuXG4vKipcbiAqIFN0YXJ0IGEgc3Bpbm5lciwgZXhlY3V0ZSBhbiBhc3luYyBmdW5jdGlvbiwgYW5kIHRoZW4gc3RvcCB0aGUgc3Bpbm5lclxuICogQHBhcmFtIHtib29sZWFufSBqc29uIC0gd2hldGhlciB3ZSBhcmUgaW4ganNvbiBtb2RlIChhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgbG9nKVxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyAtIHN0cmluZyB0byBsb2dcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gZnVuY3Rpb24gdG8gd3JhcCB3aXRoIHNwaW5uaW5nXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNwaW5XaXRoIChqc29uLCBtc2csIGZuKSB7XG4gIGlmIChqc29uKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH1cbiAgY29uc3Qgc3Bpbm5lciA9IG9yYShtc2cpLnN0YXJ0KCk7XG4gIGxldCByZXM7XG4gIHRyeSB7XG4gICAgcmVzID0gYXdhaXQgZm4oKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoKTtcbiAgICByZXR1cm4gcmVzO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBzcGlubmVyLmZhaWwoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuY2xhc3MgUmluZ0J1ZmZlciB7XG4gIGNvbnN0cnVjdG9yIChzaXplID0gNTApIHtcbiAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgIHRoaXMuYnVmZmVyID0gW107XG4gIH1cbiAgZ2V0QnVmZiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICB9XG4gIGRlcXVldWUgKCkge1xuICAgIHRoaXMuYnVmZmVyLnNoaWZ0KCk7XG4gIH1cbiAgZW5xdWV1ZSAoaXRlbSkge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPj0gdGhpcy5zaXplKSB7XG4gICAgICB0aGlzLmRlcXVldWUoKTtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIucHVzaChpdGVtKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBlcnJBbmRRdWl0LFxuICBsb2csXG4gIHNwaW5XaXRoLFxuICBKU09OX1NQQUNFUyxcbiAgUmluZ0J1ZmZlclxufTtcbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJKU09OX1NQQUNFUyIsImVyckFuZFF1aXQiLCJqc29uIiwibXNnIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvciIsInJlZCIsInN0ZGVyciIsInByb2Nlc3MiLCJleGl0Iiwic3BpbldpdGgiLCJmbiIsInNwaW5uZXIiLCJzdGFydCIsInJlcyIsInN1Y2NlZWQiLCJlcnIiLCJmYWlsIiwiUmluZ0J1ZmZlciIsImNvbnN0cnVjdG9yIiwic2l6ZSIsImJ1ZmZlciIsImdldEJ1ZmYiLCJkZXF1ZXVlIiwic2hpZnQiLCJlbnF1ZXVlIiwiaXRlbSIsImxlbmd0aCIsInB1c2giXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY2xpL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cblxuaW1wb3J0IG9yYSBmcm9tICdvcmEnO1xuXG5jb25zdCBKU09OX1NQQUNFUyA9IDQ7XG5cbi8qKipcbiAqIExvZyBhbiBlcnJvciB0byB0aGUgY29uc29sZSBhbmQgZXhpdCB0aGUgcHJvY2Vzcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0ganNvbiAtIHdoZXRoZXIgd2Ugc2hvdWxkIGxvZyBqc29uIG9yIHRleHRcbiAqIEBwYXJhbSB7YW55fSBtc2cgLSBlcnJvciBtZXNzYWdlLCBvYmplY3QsIEVycm9yIGluc3RhbmNlLCBldGMuXG4gKi9cbmZ1bmN0aW9uIGVyckFuZFF1aXQgKGpzb24sIG1zZykge1xuICBpZiAoanNvbikge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtlcnJvcjogYCR7bXNnfWB9LCBudWxsLCBKU09OX1NQQUNFUykpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7bXNnfWAucmVkKTtcbiAgICBpZiAobXNnLnN0ZGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgJHttc2cuc3RkZXJyfWAucmVkKTtcbiAgICB9XG4gIH1cbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbmFsbHkgbG9nIHNvbWV0aGluZyB0byB0aGUgY29uc29sZVxuICogQHBhcmFtIHtib29sZWFufSBqc29uIC0gd2hldGhlciB3ZSBhcmUgaW4ganNvbiBtb2RlIChhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgbG9nKVxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyAtIHN0cmluZyB0byBsb2dcbiAqL1xuZnVuY3Rpb24gbG9nIChqc29uLCBtc2cpIHtcbiAgIWpzb24gJiYgY29uc29sZS5sb2cobXNnKTtcbn1cblxuLyoqXG4gKiBTdGFydCBhIHNwaW5uZXIsIGV4ZWN1dGUgYW4gYXN5bmMgZnVuY3Rpb24sIGFuZCB0aGVuIHN0b3AgdGhlIHNwaW5uZXJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0ganNvbiAtIHdoZXRoZXIgd2UgYXJlIGluIGpzb24gbW9kZSAoYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGxvZylcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2cgLSBzdHJpbmcgdG8gbG9nXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmbiAtIGZ1bmN0aW9uIHRvIHdyYXAgd2l0aCBzcGlubmluZ1xuICovXG5hc3luYyBmdW5jdGlvbiBzcGluV2l0aCAoanNvbiwgbXNnLCBmbikge1xuICBpZiAoanNvbikge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9XG4gIGNvbnN0IHNwaW5uZXIgPSBvcmEobXNnKS5zdGFydCgpO1xuICBsZXQgcmVzO1xuICB0cnkge1xuICAgIHJlcyA9IGF3YWl0IGZuKCk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3Bpbm5lci5mYWlsKCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmNsYXNzIFJpbmdCdWZmZXIge1xuICBjb25zdHJ1Y3RvciAoc2l6ZSA9IDUwKSB7XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICB0aGlzLmJ1ZmZlciA9IFtdO1xuICB9XG4gIGdldEJ1ZmYgKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgfVxuICBkZXF1ZXVlICgpIHtcbiAgICB0aGlzLmJ1ZmZlci5zaGlmdCgpO1xuICB9XG4gIGVucXVldWUgKGl0ZW0pIHtcbiAgICBpZiAodGhpcy5idWZmZXIubGVuZ3RoID49IHRoaXMuc2l6ZSkge1xuICAgICAgdGhpcy5kZXF1ZXVlKCk7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLnB1c2goaXRlbSk7XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgZXJyQW5kUXVpdCxcbiAgbG9nLFxuICBzcGluV2l0aCxcbiAgSlNPTl9TUEFDRVMsXG4gIFJpbmdCdWZmZXJcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBRUEsTUFBTUEsV0FBVyxHQUFHLENBQXBCOzs7QUFPQSxTQUFTQyxVQUFULENBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsRUFBZ0M7RUFDOUIsSUFBSUQsSUFBSixFQUFVO0lBQ1JFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxJQUFJLENBQUNDLFNBQUwsQ0FBZTtNQUFDQyxLQUFLLEVBQUcsR0FBRUwsR0FBSTtJQUFmLENBQWYsRUFBa0MsSUFBbEMsRUFBd0NILFdBQXhDLENBQVo7RUFDRCxDQUZELE1BRU87SUFDTEksT0FBTyxDQUFDSSxLQUFSLENBQWUsR0FBRUwsR0FBSSxFQUFQLENBQVNNLEdBQXZCOztJQUNBLElBQUlOLEdBQUcsQ0FBQ08sTUFBUixFQUFnQjtNQUNkTixPQUFPLENBQUNJLEtBQVIsQ0FBZSxHQUFFTCxHQUFHLENBQUNPLE1BQU8sRUFBZCxDQUFnQkQsR0FBOUI7SUFDRDtFQUNGOztFQUNERSxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiO0FBQ0Q7O0FBT0QsU0FBU1AsR0FBVCxDQUFjSCxJQUFkLEVBQW9CQyxHQUFwQixFQUF5QjtFQUN2QixDQUFDRCxJQUFELElBQVNFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZRixHQUFaLENBQVQ7QUFDRDs7QUFRRCxlQUFlVSxRQUFmLENBQXlCWCxJQUF6QixFQUErQkMsR0FBL0IsRUFBb0NXLEVBQXBDLEVBQXdDO0VBQ3RDLElBQUlaLElBQUosRUFBVTtJQUNSLE9BQU8sTUFBTVksRUFBRSxFQUFmO0VBQ0Q7O0VBQ0QsTUFBTUMsT0FBTyxHQUFHLGtCQUFJWixHQUFKLEVBQVNhLEtBQVQsRUFBaEI7RUFDQSxJQUFJQyxHQUFKOztFQUNBLElBQUk7SUFDRkEsR0FBRyxHQUFHLE1BQU1ILEVBQUUsRUFBZDtJQUNBQyxPQUFPLENBQUNHLE9BQVI7SUFDQSxPQUFPRCxHQUFQO0VBQ0QsQ0FKRCxDQUlFLE9BQU9FLEdBQVAsRUFBWTtJQUNaSixPQUFPLENBQUNLLElBQVI7SUFDQSxNQUFNRCxHQUFOO0VBQ0Q7QUFDRjs7QUFFRCxNQUFNRSxVQUFOLENBQWlCO0VBQ2ZDLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtJQUN0QixLQUFLQSxJQUFMLEdBQVlBLElBQVo7SUFDQSxLQUFLQyxNQUFMLEdBQWMsRUFBZDtFQUNEOztFQUNEQyxPQUFPLEdBQUk7SUFDVCxPQUFPLEtBQUtELE1BQVo7RUFDRDs7RUFDREUsT0FBTyxHQUFJO0lBQ1QsS0FBS0YsTUFBTCxDQUFZRyxLQUFaO0VBQ0Q7O0VBQ0RDLE9BQU8sQ0FBRUMsSUFBRixFQUFRO0lBQ2IsSUFBSSxLQUFLTCxNQUFMLENBQVlNLE1BQVosSUFBc0IsS0FBS1AsSUFBL0IsRUFBcUM7TUFDbkMsS0FBS0csT0FBTDtJQUNEOztJQUNELEtBQUtGLE1BQUwsQ0FBWU8sSUFBWixDQUFpQkYsSUFBakI7RUFDRDs7QUFoQmMifQ==
@@ -133,4 +133,4 @@ function normalizeConfig(config) {
133
133
 
134
134
  return normalize(config);
135
135
  }
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWctZmlsZS5qcyJdLCJuYW1lcyI6WyJ5YW1sTG9hZGVyIiwiZmlsZXBhdGgiLCJjb250ZW50IiwieWFtbCIsInBhcnNlIiwicmF3Q29uZmlnIiwiTWFwIiwianNvbkxvYWRlciIsInNldCIsIkpTT04iLCJsb2FkQ29uZmlnRmlsZSIsImxjIiwibG9hZCIsImVyciIsImNvZGUiLCJtZXNzYWdlIiwiU3ludGF4RXJyb3IiLCJzZWFyY2hDb25maWdGaWxlIiwic2VhcmNoIiwiZm9ybWF0RXJyb3JzIiwiZXJyb3JzIiwiY29uZmlnIiwib3B0cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsInNjaGVtYUlkIiwianNvbiIsImZvcm1hdCIsInJlYWRDb25maWdGaWxlIiwibG9hZGVycyIsIm5vRXh0IiwicGFja2FnZVByb3AiLCJyZXN1bHQiLCJpc0VtcHR5IiwicHJldHR5IiwiY29uZmlnUmVzdWx0IiwiXyIsInJlYXNvbiIsImdldCIsIm5vcm1hbGl6ZUNvbmZpZyIsImRlbGV0ZSIsInNjaGVtYSIsIm5vcm1hbGl6ZSIsInNlY3Rpb24iLCJvYmoiLCJpc1VuZGVmaW5lZCIsIm1hcHBlZE9iaiIsIm1hcEtleXMiLCJfXyIsInByb3AiLCJwcm9wZXJ0aWVzIiwiYXBwaXVtQ2xpRGVzdCIsImNhbWVsQ2FzZSIsIm1hcFZhbHVlcyIsInZhbHVlIiwicHJvcGVydHkiLCJuZXh0U2VjdGlvbiIsImlzU2NoZW1hVHlwZU9iamVjdCIsIkJvb2xlYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQSxTQUFTQSxVQUFULENBQXFCQyxRQUFyQixFQUErQkMsT0FBL0IsRUFBd0M7QUFDdEMsU0FBT0MsY0FBS0MsS0FBTCxDQUFXRixPQUFYLENBQVA7QUFDRDs7QUFRRCxNQUFNRyxTQUFTLEdBQUcsSUFBSUMsR0FBSixFQUFsQjs7QUFPQSxTQUFTQyxVQUFULENBQXFCTixRQUFyQixFQUErQkMs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Z0JBQUVpQixTQUFGLENBQVlQLFNBQVosRUFBdUIsQ0FBQ1EsS0FBRCxFQUFRQyxRQUFSLEtBQXFCO0FBQ2pELFlBQU1DLFdBQVcsR0FBR2IsT0FBTyxHQUFJLEdBQUVBLE9BQVEsSUFBR1ksUUFBUyxFQUExQixHQUE4QkEsUUFBekQ7QUFDQSxhQUFPRSxrQkFBa0IsQ0FBQ0gsS0FBRCxDQUFsQixHQUE0QlosU0FBUyxDQUFDckIsTUFBRCxFQUFTbUMsV0FBVCxDQUFyQyxHQUE2REYsS0FBcEU7QUFDRCxLQUhNLENBQVA7QUFJRCxHQVhEOztBQWlCQSxRQUFNRyxrQkFBa0IsR0FBSWhCLE1BQUQsSUFBWWlCLE9BQU8sQ0FBQ2pCLE1BQU0sQ0FBQ1MsVUFBUixDQUE5Qzs7QUFFQSxTQUFPUixTQUFTLENBQUNyQixNQUFELENBQWhCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBiZXR0ZXJBanZFcnJvcnMgZnJvbSAnQHNpZHZpbmQvYmV0dGVyLWFqdi1lcnJvcnMnO1xuaW1wb3J0IHsgbGlsY29uZmlnIH0gZnJvbSAnbGlsY29uZmlnJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IGdldFNjaGVtYSwgdmFsaWRhdGUgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG4vKipcbiAqIGxpbGNvbmZpZyBsb2FkZXIgdG8gaGFuZGxlIGAueWFtbGAgZmlsZXNcbiAqIEB0eXBlIHtpbXBvcnQoJ2xpbGNvbmZpZycpLkxvYWRlclN5bmN9XG4gKi9cbmZ1bmN0aW9uIHlhbWxMb2FkZXIgKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gIHJldHVybiB5YW1sLnBhcnNlKGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIEEgY2FjaGUgb2YgdGhlIHJhdyBjb25maWcgZmlsZSAoYSBKU09OIHN0cmluZykgYXQgYSBmaWxlcGF0aC5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYmV0dGVyIGVycm9yIHJlcG9ydGluZy5cbiAqIE5vdGUgdGhhdCBjb25maWcgZmlsZXMgbmVlZG4ndCBiZSBKU09OLCBidXQgaXQgaGVscHMgaWYgdGhleSBhcmUuXG4gKiBAdHlwZSB7TWFwPHN0cmluZyxSYXdKc29uPn1cbiAqL1xuY29uc3QgcmF3Q29uZmlnID0gbmV3IE1hcCgpO1xuXG4vKipcbiAqIEN1c3RvbSBKU09OIGxvYWRlciB0aGF0IGNhY2hlcyB0aGUgcmF3IGNvbmZpZyBmaWxlIChmb3IgdXNlIHdpdGggYGJldHRlci1hanYtZXJyb3JzYCkuXG4gKiBJZiBpdCB3ZXJlbid0IGZvciB0aGlzIGNhY2hlLCB0aGlzIHdvdWxkIGJlIHVubmVjZXNzYXJ5LlxuICogQHR5cGUge2ltcG9ydCgnbGlsY29uZmlnJykuTG9hZGVyU3luY31cbiAqL1xuZnVuY3Rpb24ganNvbkxvYWRlciAoZmlsZXBhdGgsIGNvbnRlbnQpIHtcbiAgcmF3Q29uZmlnLnNldChmaWxlcGF0aCwgY29udGVudCk7XG4gIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIExvYWRzIGEgY29uZmlnIGZpbGUgZnJvbSBhbiBleHBsaWNpdCBwYXRoXG4gKiBAcGFyYW0ge0xpbGNvbmZpZ0FzeW5jU2VhcmNoZXJ9IGxjIC0gbGlsY29uZmlnIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZXBhdGggLSBQYXRoIHRvIGNvbmZpZyBmaWxlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoJ2xpbGNvbmZpZycpLkxpbGNvbmZpZ1Jlc3VsdD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRDb25maWdGaWxlIChsYywgZmlsZXBhdGgpIHtcbiAgdHJ5IHtcbiAgICAvLyByZW1vdmluZyBcImF3YWl0XCIgd2lsbCBjYXVzZSBhbnkgcmVqZWN0aW9uIHRvIF9ub3RfIGJlIGNhdWdodCBpbiB0aGlzIGJsb2NrIVxuICAgIHJldHVybiBhd2FpdCBsYy5sb2FkKGZpbGVwYXRoKTtcbiAgfSBjYXRjaCAoLyoqIEB0eXBlIHt1bmtub3dufSAqL2Vycikge1xuICAgIGlmICgvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8oZXJyKS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovKGVycikubWVzc2FnZSA9IGBDb25maWcgZmlsZSBub3QgZm91bmQgYXQgdXNlci1wcm92aWRlZCBwYXRoOiAke2ZpbGVwYXRofWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgLy8gZ2VuZXJhbGx5IGludmFsaWQgSlNPTlxuICAgICAgZXJyLm1lc3NhZ2UgPSBgQ29uZmlnIGZpbGUgYXQgdXNlci1wcm92aWRlZCBwYXRoICR7ZmlsZXBhdGh9IGlzIGludmFsaWQ6XFxuJHtlcnIubWVzc2FnZX1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2hlcyBmb3IgYSBjb25maWcgZmlsZVxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hDb25maWdGaWxlIChsYykge1xuICByZXR1cm4gYXdhaXQgbGMuc2VhcmNoKCk7XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgb2YgZXJyb3JzIGFuZCB0aGUgcmVzdWx0IG9mIGxvYWRpbmcgYSBjb25maWcgZmlsZSwgZ2VuZXJhdGUgYVxuICogaGVscGZ1bCBzdHJpbmcgZm9yIHRoZSB1c2VyLlxuICpcbiAqIC0gSWYgYG9wdHNgIGNvbnRhaW5zIGEgYGpzb25gIHByb3BlcnR5LCB0aGlzIHNob3VsZCBiZSB0aGUgb3JpZ2luYWwgSlNPTlxuICogICBfc3RyaW5nXyBvZiB0aGUgY29uZmlnIGZpbGUuICBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBpZiB0aGUgY29uZmlnIGZpbGVcbiAqICAgd2FzIGluIEpTT04gZm9ybWF0LiBJZiBwcmVzZW50LCBpdCB3aWxsIGFzc29jaWF0ZSBsaW5lIG51bWJlcnMgd2l0aCBlcnJvcnMuXG4gKiAtIElmIGBlcnJvcnNgIGhhcHBlbnMgdG8gYmUgZW1wdHksIHRoaXMgd2lsbCB0aHJvdy5cbiAqIEBwYXJhbSB7aW1wb3J0KCdhanYnKS5FcnJvck9iamVjdFtdfSBlcnJvcnMgLSBOb24tZW1wdHkgYXJyYXkgb2YgZXJyb3JzLiBSZXF1aXJlZC5cbiAqIEBwYXJhbSB7UmVhZENvbmZpZ0ZpbGVSZXN1bHRbJ2NvbmZpZyddfGFueX0gW2NvbmZpZ10gLVxuICogQ29uZmlndXJhdGlvbiAmIG1ldGFkYXRhXG4gKiBAcGFyYW0ge0Zvcm1hdENvbmZpZ0Vycm9yc09wdGlvbnN9IFtvcHRzXVxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgZXJyb3JzYCBpcyBlbXB0eVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9ycyAoZXJyb3JzID0gW10sIGNvbmZpZyA9IHt9LCBvcHRzID0ge30pIHtcbiAgaWYgKGVycm9ycyAmJiAhZXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5IG9mIGVycm9ycyBtdXN0IGJlIG5vbi1lbXB0eScpO1xuICB9XG4gIHJldHVybiBiZXR0ZXJBanZFcnJvcnMoZ2V0U2NoZW1hKG9wdHMuc2NoZW1hSWQpLCBjb25maWcsIGVycm9ycywge1xuICAgIGpzb246IG9wdHMuanNvbixcbiAgICBmb3JtYXQ6ICdjbGknLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhbiBvcHRpb25hbCBwYXRoLCByZWFkIGEgY29uZmlnIGZpbGUuIFZhbGlkYXRlcyB0aGUgY29uZmlnIGZpbGUuXG4gKlxuICogQ2FsbCB7QGxpbmsgdmFsaWRhdGV9IGlmIHlvdSBhbHJlYWR5IGhhdmUgYSBjb25maWcgb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IFtmaWxlcGF0aF0gLSBQYXRoIHRvIGNvbmZpZyBmaWxlLCBpZiB3ZSBoYXZlIG9uZVxuICogQHBhcmFtIHtSZWFkQ29uZmlnRmlsZU9wdGlvbnN9IFtvcHRzXSAtIE9wdGlvbnNcbiAqIEBwdWJsaWNcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlYWRDb25maWdGaWxlUmVzdWx0Pn0gQ29udGFpbnMgY29uZmlnIGFuZCBmaWxlcGF0aCwgaWYgZm91bmQsIGFuZCBhbnkgZXJyb3JzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQ29uZmlnRmlsZSAoZmlsZXBhdGgsIG9wdHMgPSB7fSkge1xuICBjb25zdCBsYyA9IGxpbGNvbmZpZygnYXBwaXVtJywge1xuICAgIGxvYWRlcnM6IHtcbiAgICAgICcueWFtbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLnltbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLmpzb24nOiBqc29uTG9hZGVyLFxuICAgICAgbm9FeHQ6IGpzb25Mb2FkZXIsXG4gICAgfSxcbiAgICBwYWNrYWdlUHJvcDogJ2FwcGl1bUNvbmZpZydcbiAgfSk7XG5cbiAgY29uc3QgcmVzdWx0ID0gZmlsZXBhdGhcbiAgICA/IGF3YWl0IGxvYWRDb25maWdGaWxlKGxjLCBmaWxlcGF0aClcbiAgICA6IGF3YWl0IHNlYXJjaENvbmZpZ0ZpbGUobGMpO1xuXG4gIGlmIChyZXN1bHQ/LmZpbGVwYXRoICYmICFyZXN1bHQ/LmlzRW1wdHkpIHtcbiAgICBjb25zdCB7cHJldHR5ID0gdHJ1ZX0gPSBvcHRzO1xuICAgIHRyeSB7XG4gICAgICBsZXQgY29uZmlnUmVzdWx0O1xuICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGUocmVzdWx0LmNvbmZpZyk7XG4gICAgICBpZiAoXy5pc0VtcHR5KGVycm9ycykpIHtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gey4uLnJlc3VsdCwgZXJyb3JzfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IGZvcm1hdEVycm9ycyhlcnJvcnMsIHJlc3VsdC5jb25maWcsIHtcbiAgICAgICAgICBqc29uOiByYXdDb25maWcuZ2V0KHJlc3VsdC5maWxlcGF0aCksXG4gICAgICAgICAgcHJldHR5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gcmVhc29uXG4gICAgICAgICAgPyB7Li4ucmVzdWx0LCBlcnJvcnMsIHJlYXNvbn1cbiAgICAgICAgICA6IHsuLi5yZXN1bHQsIGVycm9yc307XG4gICAgICB9XG5cbiAgICAgIC8vIG5vcm1hbGl6ZSAodG8gY2FtZWwgY2FzZSkgYWxsIHRvcC1sZXZlbCBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgY29uZmlnIGZpbGVcbiAgICAgIGNvbmZpZ1Jlc3VsdC5jb25maWcgPSBub3JtYWxpemVDb25maWcoXG4gICAgICAgIC8qKiBAdHlwZSB7QXBwaXVtQ29uZmlnfSAqLyAoY29uZmlnUmVzdWx0LmNvbmZpZyksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gY29uZmlnUmVzdWx0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBjbGVhbiB1cCB0aGUgcmF3IGNvbmZpZyBmaWxlIGNhY2hlLCB3aGljaCBpcyBvbmx5IGtlcHQgdG8gYmV0dGVyIHJlcG9ydCBlcnJvcnMuXG4gICAgICByYXdDb25maWcuZGVsZXRlKHJlc3VsdC5maWxlcGF0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQgPz8ge307XG59XG5cbi8qKlxuICogQ29udmVydCBzY2hlbWEgcHJvcGVydHkgbmFtZXMgdG8gZWl0aGVyIGEpIHRoZSB2YWx1ZSBvZiB0aGUgYGFwcGl1bUNsaURlc3RgIHByb3BlcnR5LCBpZiBhbnk7IG9yIGIpIGNhbWVsLWNhc2VcbiAqIEBwYXJhbSB7QXBwaXVtQ29uZmlnfSBjb25maWcgLSBDb25maWd1cmF0aW9uIG9iamVjdFxuICogQHJldHVybnMge05vcm1hbGl6ZWRBcHBpdW1Db25maWd9IE5ldyBvYmplY3Qgd2l0aCBjYW1lbC1jYXNlZCBrZXlzIChvciBgZGVzdGAga2V5cykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVDb25maWcgKGNvbmZpZykge1xuICBjb25zdCBzY2hlbWEgPSBnZXRTY2hlbWEoKTtcbiAgLyoqXG4gICAqIEBwYXJhbSB7QXBwaXVtQ29uZmlnfSBjb25maWdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWN0aW9uXSAtIEtleXBhdGggKGxvZGFzaCBgXy5nZXQoKWAgc3R5bGUpIHRvIHNlY3Rpb24gb2YgY29uZmlnLiBJZiBvbWl0dGVkLCBhc3N1bWUgcm9vdCBBcHBpdW0gY29uZmlnIHNjaGVtYVxuICAgKiBAdG9kbyBSZXdyaXRlIGFzIGEgbG9vcFxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIHNlY3Rpb24gb2YgY29uZmlnXG4gICAqL1xuICBjb25zdCBub3JtYWxpemUgPSAoY29uZmlnLCBzZWN0aW9uKSA9PiB7XG4gICAgY29uc3Qgb2JqID0gXy5pc1VuZGVmaW5lZChzZWN0aW9uKSA/IGNvbmZpZyA6IF8uZ2V0KGNvbmZpZywgc2VjdGlvbiwgY29uZmlnKTtcblxuICAgIGNvbnN0IG1hcHBlZE9iaiA9IF8ubWFwS2V5cyhvYmosIChfXywgcHJvcCkgPT5cbiAgICAgIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdPy5hcHBpdW1DbGlEZXN0ID8/IF8uY2FtZWxDYXNlKHByb3ApLFxuICAgICk7XG5cbiAgICByZXR1cm4gXy5tYXBWYWx1ZXMobWFwcGVkT2JqLCAodmFsdWUsIHByb3BlcnR5KSA9PiB7XG4gICAgICBjb25zdCBuZXh0U2VjdGlvbiA9IHNlY3Rpb24gPyBgJHtzZWN0aW9ufS4ke3Byb3BlcnR5fWAgOiBwcm9wZXJ0eTtcbiAgICAgIHJldHVybiBpc1NjaGVtYVR5cGVPYmplY3QodmFsdWUpID8gbm9ybWFsaXplKGNvbmZpZywgbmV4dFNlY3Rpb24pIDogdmFsdWU7XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBzY2hlbWEgcHJvcCByZWZlcmVuY2VzIGFuIG9iamVjdCwgb3IgaWYgaXQncyBhbiBvYmplY3QgaXRzZWxmXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhanYnKS5TY2hlbWFPYmplY3R8b2JqZWN0fSBzY2hlbWEgLSBSZWZlcmVuY2luZyBzY2hlbWEgb2JqZWN0XG4gICAqL1xuICBjb25zdCBpc1NjaGVtYVR5cGVPYmplY3QgPSAoc2NoZW1hKSA9PiBCb29sZWFuKHNjaGVtYS5wcm9wZXJ0aWVzKTtcblxuICByZXR1cm4gbm9ybWFsaXplKGNvbmZpZyk7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNhbGxpbmcge0BsaW5rIHJlYWRDb25maWdGaWxlfS5cbiAqIEB0eXBlZGVmIFJlYWRDb25maWdGaWxlUmVzdWx0XG4gKiBAcHJvcGVydHkge2ltcG9ydCgnYWp2JykuRXJyb3JPYmplY3RbXX0gW2Vycm9yc10gLSBWYWxpZGF0aW9uIGVycm9yc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmaWxlcGF0aF0gLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUsIGlmIGZvdW5kXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtpc0VtcHR5XSAtIElmIGB0cnVlYCwgdGhlIGNvbmZpZyBmaWxlIGV4aXN0cyBidXQgaXMgZW1wdHlcbiAqIEBwcm9wZXJ0eSB7Tm9ybWFsaXplZEFwcGl1bUNvbmZpZ30gW2NvbmZpZ10gLSBUaGUgcGFyc2VkIGNvbmZpZ3VyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfGltcG9ydCgnQHNpZHZpbmQvYmV0dGVyLWFqdi1lcnJvcnMnKS5JT3V0cHV0RXJyb3JbXX0gW3JlYXNvbl0gLSBIdW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlcyBhbmQgc3VnZ2VzdGlvbnMuIElmIHRoZSBgcHJldHR5YCBvcHRpb24gaXMgYHRydWVgLCB0aGlzIHdpbGwgYmUgYSBuaWNlIHN0cmluZyB0byBwcmludC5cbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZWFkQ29uZmlnRmlsZX0uXG4gKiBAdHlwZWRlZiBSZWFkQ29uZmlnRmlsZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3ByZXR0eT10cnVlXSBJZiBgZmFsc2VgLCBkbyBub3QgdXNlIGNvbG9yIGFuZCBmYW5jeSBmb3JtYXR0aW5nIGluIHRoZSBgcmVhc29uYCBwcm9wZXJ0eSBvZiB0aGUge0BsaW5rIFJlYWRDb25maWdGaWxlUmVzdWx0fS4gVGhlIHZhbHVlIG9mIGByZWFzb25gIGlzIHRoZW4gc3VpdGFibGUgZm9yIG1hY2hpbmUtcmVhZGluZy5cbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYW4gYEFzeW5jU2VhcmNoZXJgIHdoaWNoIGlzIGluZXhwbGljYWJseSBfbm90XyBleHBvcnRlZCBieSB0aGUgYGxpbGNvbmZpZ2AgdHlwZSBkZWZpbml0aW9uLlxuICogQHR5cGVkZWYge1JldHVyblR5cGU8aW1wb3J0KCdsaWxjb25maWcnKVtcImxpbGNvbmZpZ1wiXT59IExpbGNvbmZpZ0FzeW5jU2VhcmNoZXJcbiAqL1xuXG4vKipcbiAqIFRoZSBjb250ZW50cyBvZiBhbiBBcHBpdW0gY29uZmlnIGZpbGUuIEdlbmVyYXRlZCBmcm9tIHNjaGVtYVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bUNvbmZpZ30gQXBwaXVtQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgYW4gQXBwaXVtIGNvbmZpZyBmaWxlIHdpdGggY2FtZWxjYXNlZCBwcm9wZXJ0eSBuYW1lcyAoYW5kIHVzaW5nIGBhcHBpdW1DbGlEZXN0YCB2YWx1ZSBpZiBwcmVzZW50KS4gR2VuZXJhdGVkIGZyb20ge0BsaW5rIEFwcGl1bUNvbmZpZ31cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ob3JtYWxpemVkQXBwaXVtQ29uZmlnfSBOb3JtYWxpemVkQXBwaXVtQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBUaGUgc3RyaW5nIHNob3VsZCBiZSBhIHJhdyBKU09OIHN0cmluZy5cbiAqIEB0eXBlZGVmIHtzdHJpbmd9IFJhd0pzb25cbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBmb3JtYXRFcnJvcnN9LlxuICogQHR5cGVkZWYgRm9ybWF0Q29uZmlnRXJyb3JzT3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vY29uZmlnLWZpbGUnKS5SYXdKc29ufSBbanNvbl0gLSBSYXcgSlNPTiBjb25maWcgKGFzIHN0cmluZylcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3ByZXR0eT10cnVlXSAtIFdoZXRoZXIgdG8gZm9ybWF0IGVycm9ycyBhcyBhIENMSS1mcmllbmRseSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSAgW3NjaGVtYUlkXSAtIFNwZWNpZmljIElEIG9mIGEgcHJvcDsgb3RoZXJ3aXNlIGVudGlyZSBzY2hlbWFcbiAqL1xuIl19
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ5YW1sTG9hZGVyIiwiZmlsZXBhdGgiLCJjb250ZW50IiwieWFtbCIsInBhcnNlIiwicmF3Q29uZmlnIiwiTWFwIiwianNvbkxvYWRlciIsInNldCIsIkpTT04iLCJsb2FkQ29uZmlnRmlsZSIsImxjIiwibG9hZCIsImVyciIsImNvZGUiLCJtZXNzYWdlIiwiU3ludGF4RXJyb3IiLCJzZWFyY2hDb25maWdGaWxlIiwic2VhcmNoIiwiZm9ybWF0RXJyb3JzIiwiZXJyb3JzIiwiY29uZmlnIiwib3B0cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsInNjaGVtYUlkIiwianNvbiIsImZvcm1hdCIsInJlYWRDb25maWdGaWxlIiwibG9hZGVycyIsIm5vRXh0IiwicGFja2FnZVByb3AiLCJyZXN1bHQiLCJpc0VtcHR5IiwicHJldHR5IiwiY29uZmlnUmVzdWx0IiwiXyIsInJlYXNvbiIsImdldCIsIm5vcm1hbGl6ZUNvbmZpZyIsImRlbGV0ZSIsInNjaGVtYSIsIm5vcm1hbGl6ZSIsInNlY3Rpb24iLCJvYmoiLCJpc1VuZGVmaW5lZCIsIm1hcHBlZE9iaiIsIm1hcEtleXMiLCJfXyIsInByb3AiLCJwcm9wZXJ0aWVzIiwiYXBwaXVtQ2xpRGVzdCIsImNhbWVsQ2FzZSIsIm1hcFZhbHVlcyIsInZhbHVlIiwicHJvcGVydHkiLCJuZXh0U2VjdGlvbiIsImlzU2NoZW1hVHlwZU9iamVjdCIsIkJvb2xlYW4iXSwic291cmNlcyI6WyIuLi8uLi9saWIvY29uZmlnLWZpbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgYmV0dGVyQWp2RXJyb3JzIGZyb20gJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJztcbmltcG9ydCB7IGxpbGNvbmZpZyB9IGZyb20gJ2xpbGNvbmZpZyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBnZXRTY2hlbWEsIHZhbGlkYXRlIH0gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcblxuLyoqXG4gKiBsaWxjb25maWcgbG9hZGVyIHRvIGhhbmRsZSBgLnlhbWxgIGZpbGVzXG4gKiBAdHlwZSB7aW1wb3J0KCdsaWxjb25maWcnKS5Mb2FkZXJTeW5jfVxuICovXG5mdW5jdGlvbiB5YW1sTG9hZGVyIChmaWxlcGF0aCwgY29udGVudCkge1xuICByZXR1cm4geWFtbC5wYXJzZShjb250ZW50KTtcbn1cblxuLyoqXG4gKiBBIGNhY2hlIG9mIHRoZSByYXcgY29uZmlnIGZpbGUgKGEgSlNPTiBzdHJpbmcpIGF0IGEgZmlsZXBhdGguXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGJldHRlciBlcnJvciByZXBvcnRpbmcuXG4gKiBOb3RlIHRoYXQgY29uZmlnIGZpbGVzIG5lZWRuJ3QgYmUgSlNPTiwgYnV0IGl0IGhlbHBzIGlmIHRoZXkgYXJlLlxuICogQHR5cGUge01hcDxzdHJpbmcsUmF3SnNvbj59XG4gKi9cbmNvbnN0IHJhd0NvbmZpZyA9IG5ldyBNYXAoKTtcblxuLyoqXG4gKiBDdXN0b20gSlNPTiBsb2FkZXIgdGhhdCBjYWNoZXMgdGhlIHJhdyBjb25maWcgZmlsZSAoZm9yIHVzZSB3aXRoIGBiZXR0ZXItYWp2LWVycm9yc2ApLlxuICogSWYgaXQgd2VyZW4ndCBmb3IgdGhpcyBjYWNoZSwgdGhpcyB3b3VsZCBiZSB1bm5lY2Vzc2FyeS5cbiAqIEB0eXBlIHtpbXBvcnQoJ2xpbGNvbmZpZycpLkxvYWRlclN5bmN9XG4gKi9cbmZ1bmN0aW9uIGpzb25Mb2FkZXIgKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gIHJhd0NvbmZpZy5zZXQoZmlsZXBhdGgsIGNvbnRlbnQpO1xuICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbn1cblxuLyoqXG4gKiBMb2FkcyBhIGNvbmZpZyBmaWxlIGZyb20gYW4gZXhwbGljaXQgcGF0aFxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVwYXRoIC0gUGF0aCB0byBjb25maWcgZmlsZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnRmlsZSAobGMsIGZpbGVwYXRoKSB7XG4gIHRyeSB7XG4gICAgLy8gcmVtb3ZpbmcgXCJhd2FpdFwiIHdpbGwgY2F1c2UgYW55IHJlamVjdGlvbiB0byBfbm90XyBiZSBjYXVnaHQgaW4gdGhpcyBibG9jayFcbiAgICByZXR1cm4gYXdhaXQgbGMubG9hZChmaWxlcGF0aCk7XG4gIH0gY2F0Y2ggKC8qKiBAdHlwZSB7dW5rbm93bn0gKi9lcnIpIHtcbiAgICBpZiAoLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovKGVycikuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyhlcnIpLm1lc3NhZ2UgPSBgQ29uZmlnIGZpbGUgbm90IGZvdW5kIGF0IHVzZXItcHJvdmlkZWQgcGF0aDogJHtmaWxlcGF0aH1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0gZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgIC8vIGdlbmVyYWxseSBpbnZhbGlkIEpTT05cbiAgICAgIGVyci5tZXNzYWdlID0gYENvbmZpZyBmaWxlIGF0IHVzZXItcHJvdmlkZWQgcGF0aCAke2ZpbGVwYXRofSBpcyBpbnZhbGlkOlxcbiR7ZXJyLm1lc3NhZ2V9YDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICogU2VhcmNoZXMgZm9yIGEgY29uZmlnIGZpbGVcbiAqIEBwYXJhbSB7TGlsY29uZmlnQXN5bmNTZWFyY2hlcn0gbGMgLSBsaWxjb25maWcgaW5zdGFuY2VcbiAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnbGlsY29uZmlnJykuTGlsY29uZmlnUmVzdWx0Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2VhcmNoQ29uZmlnRmlsZSAobGMpIHtcbiAgcmV0dXJuIGF3YWl0IGxjLnNlYXJjaCgpO1xufVxuXG4vKipcbiAqIEdpdmVuIGFuIGFycmF5IG9mIGVycm9ycyBhbmQgdGhlIHJlc3VsdCBvZiBsb2FkaW5nIGEgY29uZmlnIGZpbGUsIGdlbmVyYXRlIGFcbiAqIGhlbHBmdWwgc3RyaW5nIGZvciB0aGUgdXNlci5cbiAqXG4gKiAtIElmIGBvcHRzYCBjb250YWlucyBhIGBqc29uYCBwcm9wZXJ0eSwgdGhpcyBzaG91bGQgYmUgdGhlIG9yaWdpbmFsIEpTT05cbiAqICAgX3N0cmluZ18gb2YgdGhlIGNvbmZpZyBmaWxlLiAgVGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgaWYgdGhlIGNvbmZpZyBmaWxlXG4gKiAgIHdhcyBpbiBKU09OIGZvcm1hdC4gSWYgcHJlc2VudCwgaXQgd2lsbCBhc3NvY2lhdGUgbGluZSBudW1iZXJzIHdpdGggZXJyb3JzLlxuICogLSBJZiBgZXJyb3JzYCBoYXBwZW5zIHRvIGJlIGVtcHR5LCB0aGlzIHdpbGwgdGhyb3cuXG4gKiBAcGFyYW0ge2ltcG9ydCgnYWp2JykuRXJyb3JPYmplY3RbXX0gZXJyb3JzIC0gTm9uLWVtcHR5IGFycmF5IG9mIGVycm9ycy4gUmVxdWlyZWQuXG4gKiBAcGFyYW0ge1JlYWRDb25maWdGaWxlUmVzdWx0Wydjb25maWcnXXxhbnl9IFtjb25maWddIC1cbiAqIENvbmZpZ3VyYXRpb24gJiBtZXRhZGF0YVxuICogQHBhcmFtIHtGb3JtYXRDb25maWdFcnJvcnNPcHRpb25zfSBbb3B0c11cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYGVycm9yc2AgaXMgZW1wdHlcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFcnJvcnMgKGVycm9ycyA9IFtdLCBjb25maWcgPSB7fSwgb3B0cyA9IHt9KSB7XG4gIGlmIChlcnJvcnMgJiYgIWVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheSBvZiBlcnJvcnMgbXVzdCBiZSBub24tZW1wdHknKTtcbiAgfVxuICByZXR1cm4gYmV0dGVyQWp2RXJyb3JzKGdldFNjaGVtYShvcHRzLnNjaGVtYUlkKSwgY29uZmlnLCBlcnJvcnMsIHtcbiAgICBqc29uOiBvcHRzLmpzb24sXG4gICAgZm9ybWF0OiAnY2xpJyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gb3B0aW9uYWwgcGF0aCwgcmVhZCBhIGNvbmZpZyBmaWxlLiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBmaWxlLlxuICpcbiAqIENhbGwge0BsaW5rIHZhbGlkYXRlfSBpZiB5b3UgYWxyZWFkeSBoYXZlIGEgY29uZmlnIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gUGF0aCB0byBjb25maWcgZmlsZSwgaWYgd2UgaGF2ZSBvbmVcbiAqIEBwYXJhbSB7UmVhZENvbmZpZ0ZpbGVPcHRpb25zfSBbb3B0c10gLSBPcHRpb25zXG4gKiBAcHVibGljXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWFkQ29uZmlnRmlsZVJlc3VsdD59IENvbnRhaW5zIGNvbmZpZyBhbmQgZmlsZXBhdGgsIGlmIGZvdW5kLCBhbmQgYW55IGVycm9yc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZ0ZpbGUgKGZpbGVwYXRoLCBvcHRzID0ge30pIHtcbiAgY29uc3QgbGMgPSBsaWxjb25maWcoJ2FwcGl1bScsIHtcbiAgICBsb2FkZXJzOiB7XG4gICAgICAnLnlhbWwnOiB5YW1sTG9hZGVyLFxuICAgICAgJy55bWwnOiB5YW1sTG9hZGVyLFxuICAgICAgJy5qc29uJzoganNvbkxvYWRlcixcbiAgICAgIG5vRXh0OiBqc29uTG9hZGVyLFxuICAgIH0sXG4gICAgcGFja2FnZVByb3A6ICdhcHBpdW1Db25maWcnXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGZpbGVwYXRoXG4gICAgPyBhd2FpdCBsb2FkQ29uZmlnRmlsZShsYywgZmlsZXBhdGgpXG4gICAgOiBhd2FpdCBzZWFyY2hDb25maWdGaWxlKGxjKTtcblxuICBpZiAocmVzdWx0Py5maWxlcGF0aCAmJiAhcmVzdWx0Py5pc0VtcHR5KSB7XG4gICAgY29uc3Qge3ByZXR0eSA9IHRydWV9ID0gb3B0cztcbiAgICB0cnkge1xuICAgICAgbGV0IGNvbmZpZ1Jlc3VsdDtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlKHJlc3VsdC5jb25maWcpO1xuICAgICAgaWYgKF8uaXNFbXB0eShlcnJvcnMpKSB7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdCA9IHsuLi5yZXN1bHQsIGVycm9yc307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWFzb24gPSBmb3JtYXRFcnJvcnMoZXJyb3JzLCByZXN1bHQuY29uZmlnLCB7XG4gICAgICAgICAganNvbjogcmF3Q29uZmlnLmdldChyZXN1bHQuZmlsZXBhdGgpLFxuICAgICAgICAgIHByZXR0eSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdCA9IHJlYXNvblxuICAgICAgICAgID8gey4uLnJlc3VsdCwgZXJyb3JzLCByZWFzb259XG4gICAgICAgICAgOiB7Li4ucmVzdWx0LCBlcnJvcnN9O1xuICAgICAgfVxuXG4gICAgICAvLyBub3JtYWxpemUgKHRvIGNhbWVsIGNhc2UpIGFsbCB0b3AtbGV2ZWwgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGNvbmZpZyBmaWxlXG4gICAgICBjb25maWdSZXN1bHQuY29uZmlnID0gbm9ybWFsaXplQ29uZmlnKFxuICAgICAgICAvKiogQHR5cGUge0FwcGl1bUNvbmZpZ30gKi8gKGNvbmZpZ1Jlc3VsdC5jb25maWcpLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGNvbmZpZ1Jlc3VsdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gY2xlYW4gdXAgdGhlIHJhdyBjb25maWcgZmlsZSBjYWNoZSwgd2hpY2ggaXMgb25seSBrZXB0IHRvIGJldHRlciByZXBvcnQgZXJyb3JzLlxuICAgICAgcmF3Q29uZmlnLmRlbGV0ZShyZXN1bHQuZmlsZXBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0ID8/IHt9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgc2NoZW1hIHByb3BlcnR5IG5hbWVzIHRvIGVpdGhlciBhKSB0aGUgdmFsdWUgb2YgdGhlIGBhcHBpdW1DbGlEZXN0YCBwcm9wZXJ0eSwgaWYgYW55OyBvciBiKSBjYW1lbC1jYXNlXG4gKiBAcGFyYW0ge0FwcGl1bUNvbmZpZ30gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIHtOb3JtYWxpemVkQXBwaXVtQ29uZmlnfSBOZXcgb2JqZWN0IHdpdGggY2FtZWwtY2FzZWQga2V5cyAob3IgYGRlc3RgIGtleXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQ29uZmlnIChjb25maWcpIHtcbiAgY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKCk7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0FwcGl1bUNvbmZpZ30gY29uZmlnXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VjdGlvbl0gLSBLZXlwYXRoIChsb2Rhc2ggYF8uZ2V0KClgIHN0eWxlKSB0byBzZWN0aW9uIG9mIGNvbmZpZy4gSWYgb21pdHRlZCwgYXNzdW1lIHJvb3QgQXBwaXVtIGNvbmZpZyBzY2hlbWFcbiAgICogQHRvZG8gUmV3cml0ZSBhcyBhIGxvb3BcbiAgICogQHJldHVybnMgTm9ybWFsaXplZCBzZWN0aW9uIG9mIGNvbmZpZ1xuICAgKi9cbiAgY29uc3Qgbm9ybWFsaXplID0gKGNvbmZpZywgc2VjdGlvbikgPT4ge1xuICAgIGNvbnN0IG9iaiA9IF8uaXNVbmRlZmluZWQoc2VjdGlvbikgPyBjb25maWcgOiBfLmdldChjb25maWcsIHNlY3Rpb24sIGNvbmZpZyk7XG5cbiAgICBjb25zdCBtYXBwZWRPYmogPSBfLm1hcEtleXMob2JqLCAoX18sIHByb3ApID0+XG4gICAgICBzY2hlbWEucHJvcGVydGllc1twcm9wXT8uYXBwaXVtQ2xpRGVzdCA/PyBfLmNhbWVsQ2FzZShwcm9wKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIF8ubWFwVmFsdWVzKG1hcHBlZE9iaiwgKHZhbHVlLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgY29uc3QgbmV4dFNlY3Rpb24gPSBzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtwcm9wZXJ0eX1gIDogcHJvcGVydHk7XG4gICAgICByZXR1cm4gaXNTY2hlbWFUeXBlT2JqZWN0KHZhbHVlKSA/IG5vcm1hbGl6ZShjb25maWcsIG5leHRTZWN0aW9uKSA6IHZhbHVlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2NoZW1hIHByb3AgcmVmZXJlbmNlcyBhbiBvYmplY3QsIG9yIGlmIGl0J3MgYW4gb2JqZWN0IGl0c2VsZlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYWp2JykuU2NoZW1hT2JqZWN0fG9iamVjdH0gc2NoZW1hIC0gUmVmZXJlbmNpbmcgc2NoZW1hIG9iamVjdFxuICAgKi9cbiAgY29uc3QgaXNTY2hlbWFUeXBlT2JqZWN0ID0gKHNjaGVtYSkgPT4gQm9vbGVhbihzY2hlbWEucHJvcGVydGllcyk7XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShjb25maWcpO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBjYWxsaW5nIHtAbGluayByZWFkQ29uZmlnRmlsZX0uXG4gKiBAdHlwZWRlZiBSZWFkQ29uZmlnRmlsZVJlc3VsdFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ2FqdicpLkVycm9yT2JqZWN0W119IFtlcnJvcnNdIC0gVmFsaWRhdGlvbiBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlLCBpZiBmb3VuZFxuICogQHByb3BlcnR5IHtib29sZWFufSBbaXNFbXB0eV0gLSBJZiBgdHJ1ZWAsIHRoZSBjb25maWcgZmlsZSBleGlzdHMgYnV0IGlzIGVtcHR5XG4gKiBAcHJvcGVydHkge05vcm1hbGl6ZWRBcHBpdW1Db25maWd9IFtjb25maWddIC0gVGhlIHBhcnNlZCBjb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ3xpbXBvcnQoJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJykuSU91dHB1dEVycm9yW119IFtyZWFzb25dIC0gSHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZXMgYW5kIHN1Z2dlc3Rpb25zLiBJZiB0aGUgYHByZXR0eWAgb3B0aW9uIGlzIGB0cnVlYCwgdGhpcyB3aWxsIGJlIGEgbmljZSBzdHJpbmcgdG8gcHJpbnQuXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVhZENvbmZpZ0ZpbGV9LlxuICogQHR5cGVkZWYgUmVhZENvbmZpZ0ZpbGVPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gSWYgYGZhbHNlYCwgZG8gbm90IHVzZSBjb2xvciBhbmQgZmFuY3kgZm9ybWF0dGluZyBpbiB0aGUgYHJlYXNvbmAgcHJvcGVydHkgb2YgdGhlIHtAbGluayBSZWFkQ29uZmlnRmlsZVJlc3VsdH0uIFRoZSB2YWx1ZSBvZiBgcmVhc29uYCBpcyB0aGVuIHN1aXRhYmxlIGZvciBtYWNoaW5lLXJlYWRpbmcuXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGFuIGBBc3luY1NlYXJjaGVyYCB3aGljaCBpcyBpbmV4cGxpY2FibHkgX25vdF8gZXhwb3J0ZWQgYnkgdGhlIGBsaWxjb25maWdgIHR5cGUgZGVmaW5pdGlvbi5cbiAqIEB0eXBlZGVmIHtSZXR1cm5UeXBlPGltcG9ydCgnbGlsY29uZmlnJylbXCJsaWxjb25maWdcIl0+fSBMaWxjb25maWdBc3luY1NlYXJjaGVyXG4gKi9cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgYW4gQXBwaXVtIGNvbmZpZyBmaWxlLiBHZW5lcmF0ZWQgZnJvbSBzY2hlbWFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Db25maWd9IEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIGFuIEFwcGl1bSBjb25maWcgZmlsZSB3aXRoIGNhbWVsY2FzZWQgcHJvcGVydHkgbmFtZXMgKGFuZCB1c2luZyBgYXBwaXVtQ2xpRGVzdGAgdmFsdWUgaWYgcHJlc2VudCkuIEdlbmVyYXRlZCBmcm9tIHtAbGluayBBcHBpdW1Db25maWd9XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuTm9ybWFsaXplZEFwcGl1bUNvbmZpZ30gTm9ybWFsaXplZEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIHN0cmluZyBzaG91bGQgYmUgYSByYXcgSlNPTiBzdHJpbmcuXG4gKiBAdHlwZWRlZiB7c3RyaW5nfSBSYXdKc29uXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZm9ybWF0RXJyb3JzfS5cbiAqIEB0eXBlZGVmIEZvcm1hdENvbmZpZ0Vycm9yc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2NvbmZpZy1maWxlJykuUmF3SnNvbn0gW2pzb25dIC0gUmF3IEpTT04gY29uZmlnIChhcyBzdHJpbmcpXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gLSBXaGV0aGVyIHRvIGZvcm1hdCBlcnJvcnMgYXMgYSBDTEktZnJpZW5kbHkgc3RyaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gIFtzY2hlbWFJZF0gLSBTcGVjaWZpYyBJRCBvZiBhIHByb3A7IG90aGVyd2lzZSBlbnRpcmUgc2NoZW1hXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU1BLFNBQVNBLFVBQVQsQ0FBcUJDLFFBQXJCLEVBQStCQyxPQUEvQixFQUF3QztFQUN0QyxPQUFPQyxjQUFLQyxLQUFMLENBQVdGLE9BQVgsQ0FBUDtBQUNEOztBQVFELE1BQU1HLFNBQVMsR0FBRyxJQUFJQyxHQUFKLEVBQWxCOztBQU9BLFNBQVND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