From 8b724b2ed50ded3dd9a535283fd6ee17bc6dfcb6 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 13 Apr 2021 21:41:57 +0000 Subject: [PATCH] chore(release): 8.6.6 [skip ci] --- CHANGELOG.md | 7 +++++++ dist/helpers.js | 8 ++++---- dist/main.js | 7 ++++++- package.json | 2 +- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8175f33d..164a25e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [8.6.6](https://github.com/AtomLinter/linter-eslint/compare/v8.6.5...v8.6.6) (2021-04-13) + + +### Bug Fixes + +* getting rules for ignoreFixableRulesWhileTyping ([212b0f1](https://github.com/AtomLinter/linter-eslint/commit/212b0f15bb262d2bb1f5bb2ad34939785a282734)) + ## [8.6.5](https://github.com/AtomLinter/linter-eslint/compare/v8.6.4...v8.6.5) (2021-03-25) diff --git a/dist/helpers.js b/dist/helpers.js index c1481410..1154cbff 100644 --- a/dist/helpers.js +++ b/dist/helpers.js @@ -187,7 +187,7 @@ async function generateDebugString() { * @param {string} [options.severity='error'] Can be one of: 'error', 'warning', 'info' * @param {string} [options.excerpt=''] Short text to use in the message * @param {string|Function} [options.description] Used to provide additional information - * @return {Array} Message to user generated from the parameters + * @return {import("atom/linter").Message[]} Message to user generated from the parameters */ @@ -210,9 +210,9 @@ function generateUserMessage(textEditor, options) { /** * Generates a message to the user in order to nicely display the Error being * thrown instead of depending on generic error handling. - * @param {TextEditor} textEditor The TextEditor to use to build the message + * @param {import("atom").TextEditor} textEditor The TextEditor to use to build the message * @param {Error} error Error to generate a message for - * @return {Array} Message to user generated from the Error + * @return {import("atom/linter").Message[]} Message to user generated from the Error */ @@ -397,4 +397,4 @@ async function processJobResponse(response, textEditor, showRule) { return processESLintMessages(response.messages, textEditor, showRule); } -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbInJ1bGVzIiwiUnVsZXMiLCJ3b3JrZXIiLCJzdGFydFdvcmtlciIsIlRhc2siLCJyZXF1aXJlIiwicmVzb2x2ZSIsInN0YXJ0ZWQiLCJzdGFydCIsImtpbGxXb3JrZXIiLCJ0ZXJtaW5hdGUiLCJzZW5kSm9iIiwiY29uZmlnIiwiY2hpbGRQcm9jZXNzIiwiY29ubmVjdGVkIiwiZW1pdEtleSIsImxlbmd0aCIsIlByb21pc2UiLCJyZWplY3QiLCJlcnJTdWIiLCJvbiIsIm1zZyIsInN0YWNrIiwiZXJyb3IiLCJFcnJvciIsImRpc3Bvc2UiLCJyZXNwb25zZVN1YiIsImRhdGEiLCJzZW5kIiwiZSIsImNvbnNvbGUiLCJnZXREZWJ1Z0luZm8iLCJ0ZXh0RWRpdG9yIiwiYXRvbSIsIndvcmtzcGFjZSIsImdldEFjdGl2ZVRleHRFZGl0b3IiLCJmaWxlUGF0aCIsImVkaXRvclNjb3BlcyIsImlzVGV4dEVkaXRvciIsImdldFBhdGgiLCJnZXRMYXN0Q3Vyc29yIiwiZ2V0U2NvcGVEZXNjcmlwdG9yIiwiZ2V0U2NvcGVzQXJyYXkiLCJwYWNrYWdlUGF0aCIsInBhY2thZ2VzIiwicmVzb2x2ZVBhY2thZ2VQYXRoIiwibGludGVyRXNsaW50TWV0YSIsInVuZGVmaW5lZCIsInZlcnNpb24iLCJnZXQiLCJob3Vyc1NpbmNlUmVzdGFydCIsIk1hdGgiLCJyb3VuZCIsInByb2Nlc3MiLCJ1cHRpbWUiLCJyZXR1cm5WYWwiLCJyZXNwb25zZSIsInR5cGUiLCJhdG9tVmVyc2lvbiIsImdldFZlcnNpb24iLCJsaW50ZXJFc2xpbnRWZXJzaW9uIiwibGludGVyRXNsaW50Q29uZmlnIiwiZXNsaW50VmVyc2lvbiIsInBhdGgiLCJwbGF0Zm9ybSIsImVzbGludFR5cGUiLCJlc2xpbnRQYXRoIiwibm90aWZpY2F0aW9ucyIsImFkZEVycm9yIiwiZ2VuZXJhdGVEZWJ1Z1N0cmluZyIsImRlYnVnIiwiZGV0YWlscyIsIkpTT04iLCJzdHJpbmdpZnkiLCJqb2luIiwiZ2VuZXJhdGVVc2VyTWVzc2FnZSIsIm9wdGlvbnMiLCJzZXZlcml0eSIsImV4Y2VycHQiLCJkZXNjcmlwdGlvbiIsImxvY2F0aW9uIiwiZmlsZSIsInBvc2l0aW9uIiwiaGFuZGxlRXJyb3IiLCJtZXNzYWdlIiwic3BsaXQiLCJnZW5lcmF0ZUludmFsaWRUcmFjZSIsIm1zZ0xpbmUiLCJtc2dDb2wiLCJtc2dFbmRMaW5lIiwibXNnRW5kQ29sIiwiZXNsaW50RnVsbFJhbmdlIiwicnVsZUlkIiwiZXJyTXNnUmFuZ2UiLCJyYW5nZVRleHQiLCJpc3N1ZVVSTCIsInRpdGxlVGV4dCIsInRpdGxlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYm9keSIsIm5ld0lzc3VlVVJMIiwidXJsIiwicHJvY2Vzc0VTTGludE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJzaG93UnVsZSIsImFsbCIsIm1hcCIsImZhdGFsIiwib3JpZ2luYWxNZXNzYWdlIiwibGluZSIsImNvbHVtbiIsImZpeCIsImVuZExpbmUiLCJlbmRDb2x1bW4iLCJ0ZXh0QnVmZmVyIiwiZ2V0QnVmZmVyIiwibGludGVyRml4IiwiZml4UmFuZ2UiLCJSYW5nZSIsInBvc2l0aW9uRm9yQ2hhcmFjdGVySW5kZXgiLCJyYW5nZSIsInJlcGxhY2VXaXRoIiwidGV4dCIsIm1heCIsInJldCIsImdldFJ1bGVVcmwiLCJmaXhMaW5lRW5kaW5nIiwicnVsZUFwcGVuZGl4Iiwic29sdXRpb25zIiwiZXJyIiwicHJvY2Vzc0pvYlJlc3BvbnNlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVwbGFjZVJ1bGVzIiwidXBkYXRlZFJ1bGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFIQTtBQUtPLE1BQU1BLEtBQUssR0FBRyxJQUFJQyxjQUFKLEVBQWQ7O0FBQ1AsSUFBSUMsTUFBTSxHQUFHLElBQWI7QUFFQTtBQUNBO0FBQ0E7O0FBQ08sU0FBU0MsV0FBVCxHQUF1QjtBQUM1QixNQUFJRCxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQkEsSUFBQUEsTUFBTSxHQUFHLElBQUlFLFVBQUosQ0FBU0MsT0FBTyxDQUFDQyxPQUFSLENBQWdCLGFBQWhCLENBQVQsQ0FBVDtBQUNEOztBQUVELE1BQUlKLE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUNsQjtBQUNBO0FBQ0QsR0FSMkIsQ0FTNUI7OztBQUNBTCxFQUFBQSxNQUFNLENBQUNNLEtBQVAsQ0FBYSxFQUFiLEVBVjRCLENBWTVCOztBQUNBTixFQUFBQSxNQUFNLENBQUNLLE9BQVAsR0FBaUIsSUFBakI7QUFDRDtBQUVEO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU0UsVUFBVCxHQUFzQjtBQUMzQixNQUFJUCxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQkEsSUFBQUEsTUFBTSxDQUFDUSxTQUFQO0FBQ0FSLElBQUFBLE1BQU0sR0FBRyxJQUFUO0FBQ0Q7QUFDRjtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLGVBQWVTLE9BQWYsQ0FBdUJDLE1BQXZCLEVBQStCO0FBQ3BDLE1BQUlWLE1BQU0sSUFBSSxDQUFDQSxNQUFNLENBQUNXLFlBQVAsQ0FBb0JDLFNBQW5DLEVBQThDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBTCxJQUFBQSxVQUFVO0FBQ1gsR0FObUMsQ0FRcEM7OztBQUNBTixFQUFBQSxXQUFXLEdBVHlCLENBV3BDO0FBQ0E7QUFDQTtBQUNBOztBQUNBUyxFQUFBQSxNQUFNLENBQUNHLE9BQVAsR0FBaUIsaUNBQW1CO0FBQUVDLElBQUFBLE1BQU0sRUFBRTtBQUFWLEdBQW5CLENBQWpCO0FBRUEsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ1gsT0FBRCxFQUFVWSxNQUFWLEtBQXFCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLFVBQU1DLE1BQU0sR0FBR2pCLE1BQU0sQ0FBQ2tCLEVBQVAsQ0FBVyxlQUFjUixNQUFNLENBQUNHLE9BQVEsRUFBeEMsRUFBMkMsQ0FBQztBQUFFTSxNQUFBQSxHQUFGO0FBQU9DLE1BQUFBO0FBQVAsS0FBRCxLQUFvQjtBQUM1RTtBQUNBLFlBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVILEdBQVYsQ0FBZCxDQUY0RSxDQUc1RTs7QUFDQUUsTUFBQUEsS0FBSyxDQUFDRCxLQUFOLEdBQWNBLEtBQWQ7QUFDQUgsTUFBQUEsTUFBTSxDQUFDTSxPQUFQLEdBTDRFLENBTTVFOztBQUNBQyxNQUFBQSxXQUFXLENBQUNELE9BQVo7QUFDQVAsTUFBQUEsTUFBTSxDQUFDSyxLQUFELENBQU47QUFDRCxLQVRjLENBQWY7QUFVQSxVQUFNRyxXQUFXLEdBQUd4QixNQUFNLENBQUNrQixFQUFQLENBQVVSLE1BQU0sQ0FBQ0csT0FBakIsRUFBMkJZLElBQUQsSUFBVTtBQUN0RFIsTUFBQUEsTUFBTSxDQUFDTSxPQUFQO0FBQ0FDLE1BQUFBLFdBQVcsQ0FBQ0QsT0FBWjtBQUNBbkIsTUFBQUEsT0FBTyxDQUFDcUIsSUFBRCxDQUFQO0FBQ0QsS0FKbUIsQ0FBcEIsQ0Fkc0MsQ0FtQnRDOztBQUNBLFFBQUk7QUFDRnpCLE1BQUFBLE1BQU0sQ0FBQzBCLElBQVAsQ0FBWWhCLE1BQVo7QUFDRCxLQUZELENBRUUsT0FBT2lCLENBQVAsRUFBVTtBQUNWVixNQUFBQSxNQUFNLENBQUNNLE9BQVA7QUFDQUMsTUFBQUEsV0FBVyxDQUFDRCxPQUFaO0FBQ0FLLE1BQUFBLE9BQU8sQ0FBQ1AsS0FBUixDQUFjTSxDQUFkO0FBQ0Q7QUFDRixHQTNCTSxDQUFQO0FBNEJEOztBQUVNLGVBQWVFLFlBQWYsR0FBOEI7QUFDbkMsUUFBTUMsVUFBVSxHQUFHQyxJQUFJLENBQUNDLFNBQUwsQ0FBZUMsbUJBQWYsRUFBbkI7QUFDQSxNQUFJQyxRQUFKO0FBQ0EsTUFBSUMsWUFBSjs7QUFDQSxNQUFJSixJQUFJLENBQUNDLFNBQUwsQ0FBZUksWUFBZixDQUE0Qk4sVUFBNUIsQ0FBSixFQUE2QztBQUMzQ0ksSUFBQUEsUUFBUSxHQUFHSixVQUFVLENBQUNPLE9BQVgsRUFBWDtBQUNBRixJQUFBQSxZQUFZLEdBQUdMLFVBQVUsQ0FBQ1EsYUFBWCxHQUEyQkMsa0JBQTNCLEdBQWdEQyxjQUFoRCxFQUFmO0FBQ0QsR0FIRCxNQUdPO0FBQ0w7QUFDQU4sSUFBQUEsUUFBUSxHQUFHLFNBQVg7QUFDQUMsSUFBQUEsWUFBWSxHQUFHLENBQUMsU0FBRCxDQUFmO0FBQ0Q7O0FBQ0QsUUFBTU0sV0FBVyxHQUFHVixJQUFJLENBQUNXLFFBQUwsQ0FBY0Msa0JBQWQsQ0FBaUMsZUFBakMsQ0FBcEI7QUFDQSxNQUFJQyxnQkFBSjs7QUFDQSxNQUFJSCxXQUFXLEtBQUtJLFNBQXBCLEVBQStCO0FBQzdCO0FBQ0FELElBQUFBLGdCQUFnQixHQUFHO0FBQUVFLE1BQUFBLE9BQU8sRUFBRTtBQUFYLEtBQW5CO0FBQ0QsR0FIRCxNQUdPO0FBQ0w7QUFDQUYsSUFBQUEsZ0JBQWdCLEdBQUd6QyxPQUFPLENBQUMsZ0JBQUtzQyxXQUFMLEVBQWtCLGNBQWxCLENBQUQsQ0FBMUI7QUFDRDs7QUFDRCxRQUFNL0IsTUFBTSxHQUFHcUIsSUFBSSxDQUFDckIsTUFBTCxDQUFZcUMsR0FBWixDQUFnQixlQUFoQixDQUFmO0FBQ0EsUUFBTUMsaUJBQWlCLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFZQyxPQUFPLENBQUNDLE1BQVIsS0FBbUIsSUFBcEIsR0FBNEIsRUFBdkMsSUFBNkMsRUFBdkU7QUFDQSxNQUFJQyxTQUFKOztBQUNBLE1BQUk7QUFDRixVQUFNQyxRQUFRLEdBQUcsTUFBTTdDLE9BQU8sQ0FBQztBQUM3QjhDLE1BQUFBLElBQUksRUFBRSxPQUR1QjtBQUU3QjdDLE1BQUFBLE1BRjZCO0FBRzdCd0IsTUFBQUE7QUFINkIsS0FBRCxDQUE5QjtBQUtBbUIsSUFBQUEsU0FBUyxHQUFHO0FBQ1ZHLE1BQUFBLFdBQVcsRUFBRXpCLElBQUksQ0FBQzBCLFVBQUwsRUFESDtBQUVWQyxNQUFBQSxtQkFBbUIsRUFBRWQsZ0JBQWdCLENBQUNFLE9BRjVCO0FBR1ZhLE1BQUFBLGtCQUFrQixFQUFFakQsTUFIVjtBQUlWO0FBQ0FrRCxNQUFBQSxhQUFhLEVBQUV6RCxPQUFPLENBQUMsZ0JBQUttRCxRQUFRLENBQUNPLElBQWQsRUFBb0IsY0FBcEIsQ0FBRCxDQUFQLENBQTZDZixPQUxsRDtBQU1WRSxNQUFBQSxpQkFOVTtBQU9WYyxNQUFBQSxRQUFRLEVBQUVYLE9BQU8sQ0FBQ1csUUFQUjtBQVFWQyxNQUFBQSxVQUFVLEVBQUVULFFBQVEsQ0FBQ0MsSUFSWDtBQVNWUyxNQUFBQSxVQUFVLEVBQUVWLFFBQVEsQ0FBQ08sSUFUWDtBQVVWMUIsTUFBQUE7QUFWVSxLQUFaO0FBWUQsR0FsQkQsQ0FrQkUsT0FBT2QsS0FBUCxFQUFjO0FBQ2RVLElBQUFBLElBQUksQ0FBQ2tDLGFBQUwsQ0FBbUJDLFFBQW5CLENBQTZCLEdBQUU3QyxLQUFNLEVBQXJDO0FBQ0Q7O0FBQ0QsU0FBT2dDLFNBQVA7QUFDRDs7QUFFTSxlQUFlYyxtQkFBZixHQUFxQztBQUMxQyxRQUFNQyxLQUFLLEdBQUcsTUFBTXZDLFlBQVksRUFBaEM7QUFDQSxRQUFNd0MsT0FBTyxHQUFHLENBQ2IsaUJBQWdCRCxLQUFLLENBQUNaLFdBQVksRUFEckIsRUFFYiwwQkFBeUJZLEtBQUssQ0FBQ1YsbUJBQW9CLEVBRnRDLEVBR2IsbUJBQWtCVSxLQUFLLENBQUNSLGFBQWMsRUFIekIsRUFJYixrQ0FBaUNRLEtBQUssQ0FBQ3BCLGlCQUFrQixFQUo1QyxFQUtiLGFBQVlvQixLQUFLLENBQUNOLFFBQVMsRUFMZCxFQU1iLFNBQVFNLEtBQUssQ0FBQ0wsVUFBVyxpQkFBZ0JLLEtBQUssQ0FBQ0osVUFBVyxFQU43QyxFQU9iLDBCQUF5Qk0sSUFBSSxDQUFDQyxTQUFMLENBQWVILEtBQUssQ0FBQ2pDLFlBQXJCLEVBQW1DLElBQW5DLEVBQXlDLENBQXpDLENBQTRDLEVBUHhELEVBUWIsZ0NBQStCbUMsSUFBSSxDQUFDQyxTQUFMLENBQWVILEtBQUssQ0FBQ1Qsa0JBQXJCLEVBQXlDLElBQXpDLEVBQStDLENBQS9DLENBQWtELEVBUnBFLENBQWhCO0FBVUEsU0FBT1UsT0FBTyxDQUFDRyxJQUFSLENBQWEsSUFBYixDQUFQO0FBQ0Q7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNDLG1CQUFULENBQTZCM0MsVUFBN0IsRUFBeUM0QyxPQUF6QyxFQUFrRDtBQUN2RCxRQUFNO0FBQ0pDLElBQUFBLFFBQVEsR0FBRyxPQURQO0FBRUpDLElBQUFBLE9BQU8sR0FBRyxFQUZOO0FBR0pDLElBQUFBO0FBSEksTUFJRkgsT0FKSjtBQUtBLFNBQU8sQ0FBQztBQUNOQyxJQUFBQSxRQURNO0FBRU5DLElBQUFBLE9BRk07QUFHTkMsSUFBQUEsV0FITTtBQUlOQyxJQUFBQSxRQUFRLEVBQUU7QUFDUkMsTUFBQUEsSUFBSSxFQUFFakQsVUFBVSxDQUFDTyxPQUFYLEVBREU7QUFFUjJDLE1BQUFBLFFBQVEsRUFBRSwrQkFBY2xELFVBQWQ7QUFGRjtBQUpKLEdBQUQsQ0FBUDtBQVNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNtRCxXQUFULENBQXFCbkQsVUFBckIsRUFBaUNULEtBQWpDLEVBQXdDO0FBQzdDLFFBQU07QUFBRUQsSUFBQUEsS0FBRjtBQUFTOEQsSUFBQUE7QUFBVCxNQUFxQjdELEtBQTNCLENBRDZDLENBRTdDOztBQUNBLFFBQU11RCxPQUFPLEdBQUksK0JBQThCTSxPQUFPLENBQUNDLEtBQVIsQ0FBYyxJQUFkLEVBQW9CLENBQXBCLENBQXVCLEdBQXRFO0FBQ0EsUUFBTU4sV0FBVyxHQUFJLHNDQUFxQ0ssT0FBUSxXQUFVOUQsS0FBTSxRQUFsRjtBQUNBLFNBQU9xRCxtQkFBbUIsQ0FBQzNDLFVBQUQsRUFBYTtBQUFFNkMsSUFBQUEsUUFBUSxFQUFFLE9BQVo7QUFBcUJDLElBQUFBLE9BQXJCO0FBQThCQyxJQUFBQTtBQUE5QixHQUFiLENBQTFCO0FBQ0Q7O0FBRUQsTUFBTU8sb0JBQW9CLEdBQUcsT0FBTztBQUNsQ0MsRUFBQUEsT0FEa0M7QUFDekJDLEVBQUFBLE1BRHlCO0FBQ2pCQyxFQUFBQSxVQURpQjtBQUNMQyxFQUFBQSxTQURLO0FBRWxDQyxFQUFBQSxlQUZrQztBQUVqQnZELEVBQUFBLFFBRmlCO0FBRVBKLEVBQUFBLFVBRk87QUFFSzRELEVBQUFBLE1BRkw7QUFFYVIsRUFBQUE7QUFGYixDQUFQLEtBR3ZCO0FBQ0osTUFBSVMsV0FBVyxHQUFJLEdBQUVOLE9BQU8sR0FBRyxDQUFFLElBQUdDLE1BQU8sRUFBM0M7O0FBQ0EsTUFBSUcsZUFBSixFQUFxQjtBQUNuQkUsSUFBQUEsV0FBVyxJQUFLLE1BQUtKLFVBQVUsR0FBRyxDQUFFLElBQUdDLFNBQVMsR0FBRyxDQUFFLEVBQXJEO0FBQ0Q7O0FBQ0QsUUFBTUksU0FBUyxHQUFJLGFBQVlILGVBQWUsR0FBRyxhQUFILEdBQW1CLE9BQVEsS0FBSUUsV0FBWSxFQUF6RjtBQUNBLFFBQU1FLFFBQVEsR0FBRyx3REFBakI7QUFDQSxRQUFNQyxTQUFTLEdBQUksOEJBQTZCSixNQUFPLEdBQXZEO0FBQ0EsUUFBTUssS0FBSyxHQUFHQyxrQkFBa0IsQ0FBQ0YsU0FBRCxDQUFoQztBQUNBLFFBQU1HLElBQUksR0FBR0Qsa0JBQWtCLENBQUMsQ0FDOUIsMEVBRDhCLEVBRTdCLFdBQVVOLE1BQU8sSUFGWSxFQUc5QkUsU0FIOEIsRUFJOUIsRUFKOEIsRUFJMUIsRUFKMEIsRUFLOUIsMkVBTDhCLEVBTTlCLEVBTjhCLEVBTTFCLEVBTjBCLEVBTzlCLG9CQVA4QixFQVE5QixTQVI4QixFQVM5QnRCLElBQUksQ0FBQ0MsU0FBTCxDQUFlLE1BQU0xQyxZQUFZLEVBQWpDLEVBQXFDLElBQXJDLEVBQTJDLENBQTNDLENBVDhCLEVBVTlCLEtBVjhCLEVBVzlCMkMsSUFYOEIsQ0FXekIsSUFYeUIsQ0FBRCxDQUEvQjtBQWFBLFFBQU1NLFFBQVEsR0FBRztBQUNmQyxJQUFBQSxJQUFJLEVBQUU3QyxRQURTO0FBRWY4QyxJQUFBQSxRQUFRLEVBQUUsK0JBQWNsRCxVQUFkLEVBQTBCLENBQTFCO0FBRkssR0FBakI7QUFJQSxRQUFNb0UsV0FBVyxHQUFJLEdBQUVMLFFBQVMsVUFBU0UsS0FBTSxTQUFRRSxJQUFLLEVBQTVEO0FBRUEsU0FBTztBQUNMdEIsSUFBQUEsUUFBUSxFQUFFLE9BREw7QUFFTEMsSUFBQUEsT0FBTyxFQUFHLEdBQUVrQixTQUFVLHFDQUFiLEdBQ0wsb0NBSEM7QUFJTEssSUFBQUEsR0FBRyxFQUFFRCxXQUpBO0FBS0xwQixJQUFBQSxRQUxLO0FBTUxELElBQUFBLFdBQVcsRUFBRyxHQUFFZSxTQUFVLHVCQUFzQlYsT0FBUTtBQU5uRCxHQUFQO0FBUUQsQ0F2Q0Q7QUF5Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sZUFBZWtCLHFCQUFmLENBQXFDQyxRQUFyQyxFQUErQ3ZFLFVBQS9DLEVBQTJEd0UsUUFBM0QsRUFBcUU7QUFDMUUsU0FBT3ZGLE9BQU8sQ0FBQ3dGLEdBQVIsQ0FBWUYsUUFBUSxDQUFDRyxHQUFULENBQWEsT0FBTztBQUNyQ0MsSUFBQUEsS0FEcUM7QUFDOUJ2QixJQUFBQSxPQUFPLEVBQUV3QixlQURxQjtBQUNKQyxJQUFBQSxJQURJO0FBQ0VoQyxJQUFBQSxRQURGO0FBQ1llLElBQUFBLE1BRFo7QUFDb0JrQixJQUFBQSxNQURwQjtBQUM0QkMsSUFBQUEsR0FENUI7QUFDaUNDLElBQUFBLE9BRGpDO0FBQzBDQyxJQUFBQTtBQUQxQyxHQUFQLEtBRTFCO0FBQ0osVUFBTTdCLE9BQU8sR0FBR3VCLEtBQUssR0FBR0MsZUFBZSxDQUFDdkIsS0FBaEIsQ0FBc0IsSUFBdEIsRUFBNEIsQ0FBNUIsQ0FBSCxHQUFvQ3VCLGVBQXpEO0FBQ0EsVUFBTXhFLFFBQVEsR0FBR0osVUFBVSxDQUFDTyxPQUFYLEVBQWpCO0FBQ0EsVUFBTTJFLFVBQVUsR0FBR2xGLFVBQVUsQ0FBQ21GLFNBQVgsRUFBbkI7QUFDQSxRQUFJQyxTQUFTLEdBQUcsSUFBaEI7O0FBQ0EsUUFBSUwsR0FBSixFQUFTO0FBQ1AsWUFBTU0sUUFBUSxHQUFHLElBQUlDLFdBQUosQ0FDZkosVUFBVSxDQUFDSyx5QkFBWCxDQUFxQ1IsR0FBRyxDQUFDUyxLQUFKLENBQVUsQ0FBVixDQUFyQyxDQURlLEVBRWZOLFVBQVUsQ0FBQ0sseUJBQVgsQ0FBcUNSLEdBQUcsQ0FBQ1MsS0FBSixDQUFVLENBQVYsQ0FBckMsQ0FGZSxDQUFqQjtBQUlBSixNQUFBQSxTQUFTLEdBQUc7QUFDVmxDLFFBQUFBLFFBQVEsRUFBRW1DLFFBREE7QUFFVkksUUFBQUEsV0FBVyxFQUFFVixHQUFHLENBQUNXO0FBRlAsT0FBWjtBQUlEOztBQUNELFFBQUlsQyxNQUFKO0FBQ0EsUUFBSUMsVUFBSjtBQUNBLFFBQUlDLFNBQUo7QUFDQSxRQUFJQyxlQUFlLEdBQUcsS0FBdEI7QUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUNJLFVBQU1KLE9BQU8sR0FBR3NCLElBQUksR0FBRyxDQUF2Qjs7QUFDQSxRQUFJLE9BQU9JLFNBQVAsS0FBcUIsUUFBckIsSUFBaUMsT0FBT0QsT0FBUCxLQUFtQixRQUF4RCxFQUFrRTtBQUNoRXJCLE1BQUFBLGVBQWUsR0FBRyxJQUFsQixDQURnRSxDQUVoRTs7QUFDQUgsTUFBQUEsTUFBTSxHQUFHckMsSUFBSSxDQUFDd0UsR0FBTCxDQUFTLENBQVQsRUFBWWIsTUFBTSxHQUFHLENBQXJCLENBQVQ7QUFDQXJCLE1BQUFBLFVBQVUsR0FBR3VCLE9BQU8sR0FBRyxDQUF2QjtBQUNBdEIsTUFBQUEsU0FBUyxHQUFHdUIsU0FBUyxHQUFHLENBQXhCO0FBQ0QsS0FORCxNQU1PO0FBQ0w7QUFDQTtBQUNBekIsTUFBQUEsTUFBTSxHQUFHLE9BQU9zQixNQUFQLEtBQWtCLFFBQWxCLEdBQTZCQSxNQUFNLEdBQUcsQ0FBdEMsR0FBMENBLE1BQW5EO0FBQ0Q7O0FBRUQsUUFBSWMsR0FBRyxHQUFHO0FBQ1IvQyxNQUFBQSxRQUFRLEVBQUVBLFFBQVEsS0FBSyxDQUFiLEdBQWlCLFNBQWpCLEdBQTZCLE9BRC9CO0FBRVJHLE1BQUFBLFFBQVEsRUFBRTtBQUNSQyxRQUFBQSxJQUFJLEVBQUU3QztBQURFO0FBRkYsS0FBVjs7QUFPQSxRQUFJd0QsTUFBSixFQUFZO0FBQ1ZnQyxNQUFBQSxHQUFHLENBQUN2QixHQUFKLEdBQVVyRyxLQUFLLENBQUM2SCxVQUFOLENBQWlCakMsTUFBakIsQ0FBVjtBQUNELEtBL0NHLENBaURKOzs7QUFDQSxRQUFJa0MsYUFBYSxHQUFHLEtBQXBCOztBQUNBLFFBQUlsQyxNQUFNLEtBQUssbUJBQVgsSUFBbUNSLE9BQU8sS0FBSyxZQUFuRCxFQUFrRTtBQUNoRTBDLE1BQUFBLGFBQWEsR0FBRyxJQUFoQjtBQUNEOztBQUVELFFBQUlOLEtBQUo7O0FBQ0EsUUFBSTtBQUNGLFVBQUk3QixlQUFKLEVBQXFCO0FBQ25CLFlBQUksQ0FBQ21DLGFBQUwsRUFBb0I7QUFDbEIsMkNBQW9CWixVQUFwQixFQUFnQzNCLE9BQWhDLEVBQXlDQyxNQUF6QztBQUNBLDJDQUFvQjBCLFVBQXBCLEVBQWdDekIsVUFBaEMsRUFBNENDLFNBQTVDO0FBQ0Q7O0FBQ0Q4QixRQUFBQSxLQUFLLEdBQUcsQ0FBQyxDQUFDakMsT0FBRCxFQUFVQyxNQUFWLENBQUQsRUFBb0IsQ0FBQ0MsVUFBRCxFQUFhQyxTQUFiLENBQXBCLENBQVI7QUFDRCxPQU5ELE1BTU87QUFDTDhCLFFBQUFBLEtBQUssR0FBRywrQkFBY3hGLFVBQWQsRUFBMEJ1RCxPQUExQixFQUFtQ0MsTUFBbkMsQ0FBUjtBQUNEOztBQUNEb0MsTUFBQUEsR0FBRyxDQUFDNUMsUUFBSixDQUFhRSxRQUFiLEdBQXdCc0MsS0FBeEI7QUFFQSxZQUFNTyxZQUFZLEdBQUd2QixRQUFRLEdBQUksS0FBSVosTUFBTSxJQUFJLE9BQVEsR0FBMUIsR0FBK0IsRUFBNUQ7QUFDQWdDLE1BQUFBLEdBQUcsQ0FBQzlDLE9BQUosR0FBZSxHQUFFTSxPQUFRLEdBQUUyQyxZQUFhLEVBQXhDOztBQUVBLFVBQUlYLFNBQUosRUFBZTtBQUNiUSxRQUFBQSxHQUFHLENBQUNJLFNBQUosR0FBZ0IsQ0FBQ1osU0FBRCxDQUFoQjtBQUNEO0FBQ0YsS0FsQkQsQ0FrQkUsT0FBT2EsR0FBUCxFQUFZO0FBQ1pMLE1BQUFBLEdBQUcsR0FBRyxNQUFNdEMsb0JBQW9CLENBQUM7QUFDL0JDLFFBQUFBLE9BRCtCO0FBRS9CQyxRQUFBQSxNQUYrQjtBQUcvQkMsUUFBQUEsVUFIK0I7QUFJL0JDLFFBQUFBLFNBSitCO0FBSy9CQyxRQUFBQSxlQUwrQjtBQU0vQnZELFFBQUFBLFFBTitCO0FBTy9CSixRQUFBQSxVQVArQjtBQVEvQjRELFFBQUFBLE1BUitCO0FBUy9CUixRQUFBQTtBQVQrQixPQUFELENBQWhDO0FBV0Q7O0FBRUQsV0FBT3dDLEdBQVA7QUFDRCxHQTNGa0IsQ0FBWixDQUFQO0FBNEZEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLGVBQWVNLGtCQUFmLENBQWtDMUUsUUFBbEMsRUFBNEN4QixVQUE1QyxFQUF3RHdFLFFBQXhELEVBQWtFO0FBQ3ZFLE1BQUkyQixNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDQyxJQUFoQyxDQUFxQzlFLFFBQXJDLEVBQStDLGNBQS9DLENBQUosRUFBb0U7QUFDbEV4RCxJQUFBQSxLQUFLLENBQUN1SSxZQUFOLENBQW1CL0UsUUFBUSxDQUFDZ0YsWUFBNUI7QUFDRDs7QUFDRCxTQUFPbEMscUJBQXFCLENBQUM5QyxRQUFRLENBQUMrQyxRQUFWLEVBQW9CdkUsVUFBcEIsRUFBZ0N3RSxRQUFoQyxDQUE1QjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmdlIH0gZnJvbSAnYXRvbS1saW50ZXInXG5pbXBvcnQgY3J5cHRvUmFuZG9tU3RyaW5nIGZyb20gJ2NyeXB0by1yYW5kb20tc3RyaW5nJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcywgaW1wb3J0L2V4dGVuc2lvbnNcbmltcG9ydCB7IFJhbmdlLCBUYXNrIH0gZnJvbSAnYXRvbSdcbmltcG9ydCBSdWxlcyBmcm9tICcuL3J1bGVzJ1xuaW1wb3J0IHsgdGhyb3dJZkludmFsaWRQb2ludCB9IGZyb20gJy4vdmFsaWRhdGUvZWRpdG9yJ1xuXG5leHBvcnQgY29uc3QgcnVsZXMgPSBuZXcgUnVsZXMoKVxubGV0IHdvcmtlciA9IG51bGxcblxuLyoqXG4gKiBTdGFydCB0aGUgd29ya2VyIHByb2Nlc3MgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBzdGFydGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydFdvcmtlcigpIHtcbiAgaWYgKHdvcmtlciA9PT0gbnVsbCkge1xuICAgIHdvcmtlciA9IG5ldyBUYXNrKHJlcXVpcmUucmVzb2x2ZSgnLi93b3JrZXIuanMnKSlcbiAgfVxuXG4gIGlmICh3b3JrZXIuc3RhcnRlZCkge1xuICAgIC8vIFdvcmtlciBzdGFydCByZXF1ZXN0IGhhcyBhbHJlYWR5IGJlZW4gc2VudFxuICAgIHJldHVyblxuICB9XG4gIC8vIFNlbmQgZW1wdHkgYXJndW1lbnRzIGFzIHdlIGRvbid0IHVzZSB0aGVtIGluIHRoZSB3b3JrZXJcbiAgd29ya2VyLnN0YXJ0KFtdKVxuXG4gIC8vIE5PVEU6IE1vZGlmaWVzIHRoZSBUYXNrIG9mIHRoZSB3b3JrZXIsIGJ1dCBpdCdzIHRoZSBvbmx5IGNsZWFuIHdheSB0byB0cmFjayB0aGlzXG4gIHdvcmtlci5zdGFydGVkID0gdHJ1ZVxufVxuXG4vKipcbiAqIEZvcmNlcyB0aGUgd29ya2VyIFRhc2sgdG8ga2lsbCBpdHNlbGZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtpbGxXb3JrZXIoKSB7XG4gIGlmICh3b3JrZXIgIT09IG51bGwpIHtcbiAgICB3b3JrZXIudGVybWluYXRlKClcbiAgICB3b3JrZXIgPSBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBTZW5kIGEgam9iIHRvIHRoZSB3b3JrZXIgYW5kIHJldHVybiB0aGUgcmVzdWx0c1xuICogQHBhcmFtICB7T2JqZWN0fSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGpvYiB0byBzZW5kIHRvIHRoZSB3b3JrZXJcbiAqIEByZXR1cm4ge09iamVjdHxTdHJpbmd8RXJyb3J9ICAgICAgICBUaGUgZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB3b3JrZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRKb2IoY29uZmlnKSB7XG4gIGlmICh3b3JrZXIgJiYgIXdvcmtlci5jaGlsZFByb2Nlc3MuY29ubmVjdGVkKSB7XG4gICAgLy8gU29tZXRpbWVzIHRoZSB3b3JrZXIgZGllcyBhbmQgYmVjb21lcyBkaXNjb25uZWN0ZWRcbiAgICAvLyBXaGVuIHRoYXQgaGFwcGVucywgaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyB3YXkgdG8gcmVjb3ZlciBvdGhlclxuICAgIC8vIHRoYW4gdG8ga2lsbCB0aGUgd29ya2VyIGFuZCBjcmVhdGUgYSBuZXcgb25lLlxuICAgIGtpbGxXb3JrZXIoKVxuICB9XG5cbiAgLy8gRW5zdXJlIHRoZSB3b3JrZXIgaXMgc3RhcnRlZFxuICBzdGFydFdvcmtlcigpXG5cbiAgLy8gRXhwYW5kIHRoZSBjb25maWcgd2l0aCBhIHVuaXF1ZSBJRCB0byBlbWl0IG9uXG4gIC8vIE5PVEU6IEpvYnMgX211c3RfIGhhdmUgYSB1bmlxdWUgSUQgYXMgdGhleSBhcmUgY29tcGxldGVseSBhc3luYyBhbmQgcmVzdWx0c1xuICAvLyBjYW4gYXJyaXZlIGJhY2sgaW4gYW55IG9yZGVyLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnLmVtaXRLZXkgPSBjcnlwdG9SYW5kb21TdHJpbmcoeyBsZW5ndGg6IDEwIH0pXG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBBbGwgd29ya2VyIGVycm9ycyBhcmUgY2F1Z2h0IGFuZCByZS1lbWl0dGVkIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZFxuICAgIC8vIGVtaXRLZXksIHNvIHRoYXQgd2UgZG8gbm90IGNyZWF0ZSBtdWx0aXBsZSBsaXN0ZW5lcnMgZm9yIHRoZSBzYW1lXG4gICAgLy8gJ3Rhc2s6ZXJyb3InIGV2ZW50XG4gICAgY29uc3QgZXJyU3ViID0gd29ya2VyLm9uKGB3b3JrZXJFcnJvcjoke2NvbmZpZy5lbWl0S2V5fWAsICh7IG1zZywgc3RhY2sgfSkgPT4ge1xuICAgICAgLy8gUmUtdGhyb3cgZXJyb3JzIGZyb20gdGhlIHRhc2tcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1zZylcbiAgICAgIC8vIFNldCB0aGUgc3RhY2sgdG8gdGhlIG9uZSBnaXZlbiB0byB1cyBieSB0aGUgd29ya2VyXG4gICAgICBlcnJvci5zdGFjayA9IHN0YWNrXG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlc3BvbnNlU3ViLmRpc3Bvc2UoKVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH0pXG4gICAgY29uc3QgcmVzcG9uc2VTdWIgPSB3b3JrZXIub24oY29uZmlnLmVtaXRLZXksIChkYXRhKSA9PiB7XG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICByZXNwb25zZVN1Yi5kaXNwb3NlKClcbiAgICAgIHJlc29sdmUoZGF0YSlcbiAgICB9KVxuICAgIC8vIFNlbmQgdGhlIGpvYiBvbiB0byB0aGUgd29ya2VyXG4gICAgdHJ5IHtcbiAgICAgIHdvcmtlci5zZW5kKGNvbmZpZylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICByZXNwb25zZVN1Yi5kaXNwb3NlKClcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSlcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZWJ1Z0luZm8oKSB7XG4gIGNvbnN0IHRleHRFZGl0b3IgPSBhdG9tLndvcmtzcGFjZS5nZXRBY3RpdmVUZXh0RWRpdG9yKClcbiAgbGV0IGZpbGVQYXRoXG4gIGxldCBlZGl0b3JTY29wZXNcbiAgaWYgKGF0b20ud29ya3NwYWNlLmlzVGV4dEVkaXRvcih0ZXh0RWRpdG9yKSkge1xuICAgIGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICBlZGl0b3JTY29wZXMgPSB0ZXh0RWRpdG9yLmdldExhc3RDdXJzb3IoKS5nZXRTY29wZURlc2NyaXB0b3IoKS5nZXRTY29wZXNBcnJheSgpXG4gIH0gZWxzZSB7XG4gICAgLy8gU29tZWhvdyB0aGlzIGNhbiBiZSBjYWxsZWQgd2l0aCBubyBhY3RpdmUgVGV4dEVkaXRvciwgaW1wb3NzaWJsZSBJIGtub3cuLi5cbiAgICBmaWxlUGF0aCA9ICd1bmtub3duJ1xuICAgIGVkaXRvclNjb3BlcyA9IFsndW5rbm93biddXG4gIH1cbiAgY29uc3QgcGFja2FnZVBhdGggPSBhdG9tLnBhY2thZ2VzLnJlc29sdmVQYWNrYWdlUGF0aCgnbGludGVyLWVzbGludCcpXG4gIGxldCBsaW50ZXJFc2xpbnRNZXRhXG4gIGlmIChwYWNrYWdlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gQXBwYXJlbnRseSBmb3Igc29tZSB1c2VycyB0aGUgcGFja2FnZSBwYXRoIGZhaWxzIHRvIHJlc29sdmVcbiAgICBsaW50ZXJFc2xpbnRNZXRhID0geyB2ZXJzaW9uOiAndW5rbm93biEnIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWR5bmFtaWMtcmVxdWlyZVxuICAgIGxpbnRlckVzbGludE1ldGEgPSByZXF1aXJlKGpvaW4ocGFja2FnZVBhdGgsICdwYWNrYWdlLmpzb24nKSlcbiAgfVxuICBjb25zdCBjb25maWcgPSBhdG9tLmNvbmZpZy5nZXQoJ2xpbnRlci1lc2xpbnQnKVxuICBjb25zdCBob3Vyc1NpbmNlUmVzdGFydCA9IE1hdGgucm91bmQoKHByb2Nlc3MudXB0aW1lKCkgLyAzNjAwKSAqIDEwKSAvIDEwXG4gIGxldCByZXR1cm5WYWxcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRKb2Ioe1xuICAgICAgdHlwZTogJ2RlYnVnJyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGZpbGVQYXRoXG4gICAgfSlcbiAgICByZXR1cm5WYWwgPSB7XG4gICAgICBhdG9tVmVyc2lvbjogYXRvbS5nZXRWZXJzaW9uKCksXG4gICAgICBsaW50ZXJFc2xpbnRWZXJzaW9uOiBsaW50ZXJFc2xpbnRNZXRhLnZlcnNpb24sXG4gICAgICBsaW50ZXJFc2xpbnRDb25maWc6IGNvbmZpZyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZHluYW1pYy1yZXF1aXJlXG4gICAgICBlc2xpbnRWZXJzaW9uOiByZXF1aXJlKGpvaW4ocmVzcG9uc2UucGF0aCwgJ3BhY2thZ2UuanNvbicpKS52ZXJzaW9uLFxuICAgICAgaG91cnNTaW5jZVJlc3RhcnQsXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGVzbGludFR5cGU6IHJlc3BvbnNlLnR5cGUsXG4gICAgICBlc2xpbnRQYXRoOiByZXNwb25zZS5wYXRoLFxuICAgICAgZWRpdG9yU2NvcGVzLFxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoYCR7ZXJyb3J9YClcbiAgfVxuICByZXR1cm4gcmV0dXJuVmFsXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZURlYnVnU3RyaW5nKCkge1xuICBjb25zdCBkZWJ1ZyA9IGF3YWl0IGdldERlYnVnSW5mbygpXG4gIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgYEF0b20gdmVyc2lvbjogJHtkZWJ1Zy5hdG9tVmVyc2lvbn1gLFxuICAgIGBsaW50ZXItZXNsaW50IHZlcnNpb246ICR7ZGVidWcubGludGVyRXNsaW50VmVyc2lvbn1gLFxuICAgIGBFU0xpbnQgdmVyc2lvbjogJHtkZWJ1Zy5lc2xpbnRWZXJzaW9ufWAsXG4gICAgYEhvdXJzIHNpbmNlIGxhc3QgQXRvbSByZXN0YXJ0OiAke2RlYnVnLmhvdXJzU2luY2VSZXN0YXJ0fWAsXG4gICAgYFBsYXRmb3JtOiAke2RlYnVnLnBsYXRmb3JtfWAsXG4gICAgYFVzaW5nICR7ZGVidWcuZXNsaW50VHlwZX0gRVNMaW50IGZyb206ICR7ZGVidWcuZXNsaW50UGF0aH1gLFxuICAgIGBDdXJyZW50IGZpbGUncyBzY29wZXM6ICR7SlNPTi5zdHJpbmdpZnkoZGVidWcuZWRpdG9yU2NvcGVzLCBudWxsLCAyKX1gLFxuICAgIGBsaW50ZXItZXNsaW50IGNvbmZpZ3VyYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoZGVidWcubGludGVyRXNsaW50Q29uZmlnLCBudWxsLCAyKX1gXG4gIF1cbiAgcmV0dXJuIGRldGFpbHMuam9pbignXFxuJylcbn1cblxuLyoqXG4gKiBUdXJuIHRoZSBnaXZlbiBvcHRpb25zIGludG8gYSBMaW50ZXIgbWVzc2FnZSBhcnJheVxuICogQHBhcmFtICB7VGV4dEVkaXRvcn0gdGV4dEVkaXRvciBUaGUgVGV4dEVkaXRvciB0byB1c2UgdG8gYnVpbGQgdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyAgICBUaGUgcGFyYW1ldGVycyB1c2VkIHRvIGZpbGwgaW4gdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge3N0cmluZ30gW29wdGlvbnMuc2V2ZXJpdHk9J2Vycm9yJ10gQ2FuIGJlIG9uZSBvZjogJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbydcbiAqIEBwYXJhbSAge3N0cmluZ30gW29wdGlvbnMuZXhjZXJwdD0nJ10gU2hvcnQgdGV4dCB0byB1c2UgaW4gdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge3N0cmluZ3xGdW5jdGlvbn0gW29wdGlvbnMuZGVzY3JpcHRpb25dIFVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgICAgICBNZXNzYWdlIHRvIHVzZXIgZ2VuZXJhdGVkIGZyb20gdGhlIHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVXNlck1lc3NhZ2UodGV4dEVkaXRvciwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgc2V2ZXJpdHkgPSAnZXJyb3InLFxuICAgIGV4Y2VycHQgPSAnJyxcbiAgICBkZXNjcmlwdGlvbixcbiAgfSA9IG9wdGlvbnNcbiAgcmV0dXJuIFt7XG4gICAgc2V2ZXJpdHksXG4gICAgZXhjZXJwdCxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBsb2NhdGlvbjoge1xuICAgICAgZmlsZTogdGV4dEVkaXRvci5nZXRQYXRoKCksXG4gICAgICBwb3NpdGlvbjogZ2VuZXJhdGVSYW5nZSh0ZXh0RWRpdG9yKSxcbiAgICB9LFxuICB9XVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgaW4gb3JkZXIgdG8gbmljZWx5IGRpc3BsYXkgdGhlIEVycm9yIGJlaW5nXG4gKiB0aHJvd24gaW5zdGVhZCBvZiBkZXBlbmRpbmcgb24gZ2VuZXJpYyBlcnJvciBoYW5kbGluZy5cbiAqIEBwYXJhbSAge1RleHRFZGl0b3J9IHRleHRFZGl0b3IgVGhlIFRleHRFZGl0b3IgdG8gdXNlIHRvIGJ1aWxkIHRoZSBtZXNzYWdlXG4gKiBAcGFyYW0gIHtFcnJvcn0gZXJyb3IgICAgICBFcnJvciB0byBnZW5lcmF0ZSBhIG1lc3NhZ2UgZm9yXG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgICAgICBNZXNzYWdlIHRvIHVzZXIgZ2VuZXJhdGVkIGZyb20gdGhlIEVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVFcnJvcih0ZXh0RWRpdG9yLCBlcnJvcikge1xuICBjb25zdCB7IHN0YWNrLCBtZXNzYWdlIH0gPSBlcnJvclxuICAvLyBPbmx5IHNob3cgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIGV4Y2VycHRcbiAgY29uc3QgZXhjZXJwdCA9IGBFcnJvciB3aGlsZSBydW5uaW5nIEVTTGludDogJHttZXNzYWdlLnNwbGl0KCdcXG4nKVswXX0uYFxuICBjb25zdCBkZXNjcmlwdGlvbiA9IGA8ZGl2IHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZS13cmFwXCI+JHttZXNzYWdlfVxcbjxociAvPiR7c3RhY2t9PC9kaXY+YFxuICByZXR1cm4gZ2VuZXJhdGVVc2VyTWVzc2FnZSh0ZXh0RWRpdG9yLCB7IHNldmVyaXR5OiAnZXJyb3InLCBleGNlcnB0LCBkZXNjcmlwdGlvbiB9KVxufVxuXG5jb25zdCBnZW5lcmF0ZUludmFsaWRUcmFjZSA9IGFzeW5jICh7XG4gIG1zZ0xpbmUsIG1zZ0NvbCwgbXNnRW5kTGluZSwgbXNnRW5kQ29sLFxuICBlc2xpbnRGdWxsUmFuZ2UsIGZpbGVQYXRoLCB0ZXh0RWRpdG9yLCBydWxlSWQsIG1lc3NhZ2Vcbn0pID0+IHtcbiAgbGV0IGVyck1zZ1JhbmdlID0gYCR7bXNnTGluZSArIDF9OiR7bXNnQ29sfWBcbiAgaWYgKGVzbGludEZ1bGxSYW5nZSkge1xuICAgIGVyck1zZ1JhbmdlICs9IGAgLSAke21zZ0VuZExpbmUgKyAxfToke21zZ0VuZENvbCArIDF9YFxuICB9XG4gIGNvbnN0IHJhbmdlVGV4dCA9IGBSZXF1ZXN0ZWQgJHtlc2xpbnRGdWxsUmFuZ2UgPyAnc3RhcnQgcG9pbnQnIDogJ3JhbmdlJ306ICR7ZXJyTXNnUmFuZ2V9YFxuICBjb25zdCBpc3N1ZVVSTCA9ICdodHRwczovL2dpdGh1Yi5jb20vQXRvbUxpbnRlci9saW50ZXItZXNsaW50L2lzc3Vlcy9uZXcnXG4gIGNvbnN0IHRpdGxlVGV4dCA9IGBJbnZhbGlkIHBvc2l0aW9uIGdpdmVuIGJ5ICcke3J1bGVJZH0nYFxuICBjb25zdCB0aXRsZSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aXRsZVRleHQpXG4gIGNvbnN0IGJvZHkgPSBlbmNvZGVVUklDb21wb25lbnQoW1xuICAgICdFU0xpbnQgcmV0dXJuZWQgYSBwb2ludCB0aGF0IGRpZCBub3QgZXhpc3QgaW4gdGhlIGRvY3VtZW50IGJlaW5nIGVkaXRlZC4nLFxuICAgIGBSdWxlOiBcXGAke3J1bGVJZH1cXGBgLFxuICAgIHJhbmdlVGV4dCxcbiAgICAnJywgJycsXG4gICAgJzwhLS0gSWYgYXQgYWxsIHBvc3NpYmxlLCBwbGVhc2UgaW5jbHVkZSBjb2RlIHRvIHJlcHJvZHVjZSB0aGlzIGlzc3VlISAtLT4nLFxuICAgICcnLCAnJyxcbiAgICAnRGVidWcgaW5mb3JtYXRpb246JyxcbiAgICAnYGBganNvbicsXG4gICAgSlNPTi5zdHJpbmdpZnkoYXdhaXQgZ2V0RGVidWdJbmZvKCksIG51bGwsIDIpLFxuICAgICdgYGAnXG4gIF0uam9pbignXFxuJykpXG5cbiAgY29uc3QgbG9jYXRpb24gPSB7XG4gICAgZmlsZTogZmlsZVBhdGgsXG4gICAgcG9zaXRpb246IGdlbmVyYXRlUmFuZ2UodGV4dEVkaXRvciwgMCksXG4gIH1cbiAgY29uc3QgbmV3SXNzdWVVUkwgPSBgJHtpc3N1ZVVSTH0/dGl0bGU9JHt0aXRsZX0mYm9keT0ke2JvZHl9YFxuXG4gIHJldHVybiB7XG4gICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgZXhjZXJwdDogYCR7dGl0bGVUZXh0fS4gU2VlIHRoZSBkZXNjcmlwdGlvbiBmb3IgZGV0YWlscy4gYFxuICAgICAgKyAnQ2xpY2sgdGhlIFVSTCB0byBvcGVuIGEgbmV3IGlzc3VlIScsXG4gICAgdXJsOiBuZXdJc3N1ZVVSTCxcbiAgICBsb2NhdGlvbixcbiAgICBkZXNjcmlwdGlvbjogYCR7cmFuZ2VUZXh0fVxcbk9yaWdpbmFsIG1lc3NhZ2U6ICR7bWVzc2FnZX1gXG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIHJhdyByZXNwb25zZSBmcm9tIEVTTGludCwgdGhpcyBwcm9jZXNzZXMgdGhlIG1lc3NhZ2VzIGludG8gYSBmb3JtYXRcbiAqIGNvbXBhdGlibGUgd2l0aCB0aGUgTGludGVyIEFQSS5cbiAqIEBwYXJhbSAge09iamVjdH0gICAgIG1lc3NhZ2VzICAgVGhlIG1lc3NhZ2VzIGZyb20gRVNMaW50J3MgcmVzcG9uc2VcbiAqIEBwYXJhbSAge1RleHRFZGl0b3J9IHRleHRFZGl0b3IgVGhlIEF0b206OlRleHRFZGl0b3Igb2YgdGhlIGZpbGUgdGhlIG1lc3NhZ2VzIGJlbG9uZyB0b1xuICogQHBhcmFtICB7Ym9vbH0gICAgICAgc2hvd1J1bGUgICBXaGV0aGVyIHRvIHNob3cgdGhlIHJ1bGUgaW4gdGhlIG1lc3NhZ2VzXG4gKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICAgICAgIFRoZSBtZXNzYWdlcyB0cmFuc2Zvcm1lZCBpbnRvIExpbnRlciBtZXNzYWdlc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0VTTGludE1lc3NhZ2VzKG1lc3NhZ2VzLCB0ZXh0RWRpdG9yLCBzaG93UnVsZSkge1xuICByZXR1cm4gUHJvbWlzZS5hbGwobWVzc2FnZXMubWFwKGFzeW5jICh7XG4gICAgZmF0YWwsIG1lc3NhZ2U6IG9yaWdpbmFsTWVzc2FnZSwgbGluZSwgc2V2ZXJpdHksIHJ1bGVJZCwgY29sdW1uLCBmaXgsIGVuZExpbmUsIGVuZENvbHVtblxuICB9KSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGZhdGFsID8gb3JpZ2luYWxNZXNzYWdlLnNwbGl0KCdcXG4nKVswXSA6IG9yaWdpbmFsTWVzc2FnZVxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICBjb25zdCB0ZXh0QnVmZmVyID0gdGV4dEVkaXRvci5nZXRCdWZmZXIoKVxuICAgIGxldCBsaW50ZXJGaXggPSBudWxsXG4gICAgaWYgKGZpeCkge1xuICAgICAgY29uc3QgZml4UmFuZ2UgPSBuZXcgUmFuZ2UoXG4gICAgICAgIHRleHRCdWZmZXIucG9zaXRpb25Gb3JDaGFyYWN0ZXJJbmRleChmaXgucmFuZ2VbMF0pLFxuICAgICAgICB0ZXh0QnVmZmVyLnBvc2l0aW9uRm9yQ2hhcmFjdGVySW5kZXgoZml4LnJhbmdlWzFdKVxuICAgICAgKVxuICAgICAgbGludGVyRml4ID0ge1xuICAgICAgICBwb3NpdGlvbjogZml4UmFuZ2UsXG4gICAgICAgIHJlcGxhY2VXaXRoOiBmaXgudGV4dFxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbXNnQ29sXG4gICAgbGV0IG1zZ0VuZExpbmVcbiAgICBsZXQgbXNnRW5kQ29sXG4gICAgbGV0IGVzbGludEZ1bGxSYW5nZSA9IGZhbHNlXG5cbiAgICAvKlxuICAgICBOb3RlOiBFU0xpbnQgcG9zaXRpb25zIGFyZSAxLWluZGV4ZWQsIHdoaWxlIEF0b20gZXhwZWN0cyAwLWluZGV4ZWQsXG4gICAgIHBvc2l0aW9ucy4gV2UgYXJlIHN1YnRyYWN0aW5nIDEgZnJvbSB0aGVzZSB2YWx1ZXMgaGVyZSBzbyB3ZSBkb24ndCBoYXZlIHRvXG4gICAgIGtlZXAgZG9pbmcgc28gaW4gbGF0ZXIgdXNlcy5cbiAgICAgKi9cbiAgICBjb25zdCBtc2dMaW5lID0gbGluZSAtIDFcbiAgICBpZiAodHlwZW9mIGVuZENvbHVtbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGVuZExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICBlc2xpbnRGdWxsUmFuZ2UgPSB0cnVlXG4gICAgICAvLyBIZXJlIHdlIGFsd2F5cyB3YW50IHRoZSBjb2x1bW4gdG8gYmUgYSBudW1iZXJcbiAgICAgIG1zZ0NvbCA9IE1hdGgubWF4KDAsIGNvbHVtbiAtIDEpXG4gICAgICBtc2dFbmRMaW5lID0gZW5kTGluZSAtIDFcbiAgICAgIG1zZ0VuZENvbCA9IGVuZENvbHVtbiAtIDFcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugd2FudCBtc2dDb2wgdG8gcmVtYWluIHVuZGVmaW5lZCBpZiBpdCB3YXMgaW5pdGlhbGx5IHNvXG4gICAgICAvLyBgZ2VuZXJhdGVSYW5nZWAgd2lsbCBnaXZlIHVzIGEgcmFuZ2Ugb3ZlciB0aGUgZW50aXJlIGxpbmVcbiAgICAgIG1zZ0NvbCA9IHR5cGVvZiBjb2x1bW4gPT09ICdudW1iZXInID8gY29sdW1uIC0gMSA6IGNvbHVtblxuICAgIH1cblxuICAgIGxldCByZXQgPSB7XG4gICAgICBzZXZlcml0eTogc2V2ZXJpdHkgPT09IDEgPyAnd2FybmluZycgOiAnZXJyb3InLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgZmlsZTogZmlsZVBhdGgsXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJ1bGVJZCkge1xuICAgICAgcmV0LnVybCA9IHJ1bGVzLmdldFJ1bGVVcmwocnVsZUlkKVxuICAgIH1cblxuICAgIC8vIEhBQ0sgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9BdG9tTGludGVyL2xpbnRlci1lc2xpbnQvaXNzdWVzLzEyNDlcbiAgICBsZXQgZml4TGluZUVuZGluZyA9IGZhbHNlXG4gICAgaWYgKHJ1bGVJZCA9PT0gJ3ByZXR0aWVyL3ByZXR0aWVyJyAmJiAobWVzc2FnZSA9PT0gJ0RlbGV0ZSBg4pCNYCcpKSB7XG4gICAgICBmaXhMaW5lRW5kaW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIGxldCByYW5nZVxuICAgIHRyeSB7XG4gICAgICBpZiAoZXNsaW50RnVsbFJhbmdlKSB7XG4gICAgICAgIGlmICghZml4TGluZUVuZGluZykge1xuICAgICAgICAgIHRocm93SWZJbnZhbGlkUG9pbnQodGV4dEJ1ZmZlciwgbXNnTGluZSwgbXNnQ29sKVxuICAgICAgICAgIHRocm93SWZJbnZhbGlkUG9pbnQodGV4dEJ1ZmZlciwgbXNnRW5kTGluZSwgbXNnRW5kQ29sKVxuICAgICAgICB9XG4gICAgICAgIHJhbmdlID0gW1ttc2dMaW5lLCBtc2dDb2xdLCBbbXNnRW5kTGluZSwgbXNnRW5kQ29sXV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlID0gZ2VuZXJhdGVSYW5nZSh0ZXh0RWRpdG9yLCBtc2dMaW5lLCBtc2dDb2wpXG4gICAgICB9XG4gICAgICByZXQubG9jYXRpb24ucG9zaXRpb24gPSByYW5nZVxuXG4gICAgICBjb25zdCBydWxlQXBwZW5kaXggPSBzaG93UnVsZSA/IGAgKCR7cnVsZUlkIHx8ICdGYXRhbCd9KWAgOiAnJ1xuICAgICAgcmV0LmV4Y2VycHQgPSBgJHttZXNzYWdlfSR7cnVsZUFwcGVuZGl4fWBcblxuICAgICAgaWYgKGxpbnRlckZpeCkge1xuICAgICAgICByZXQuc29sdXRpb25zID0gW2xpbnRlckZpeF1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldCA9IGF3YWl0IGdlbmVyYXRlSW52YWxpZFRyYWNlKHtcbiAgICAgICAgbXNnTGluZSxcbiAgICAgICAgbXNnQ29sLFxuICAgICAgICBtc2dFbmRMaW5lLFxuICAgICAgICBtc2dFbmRDb2wsXG4gICAgICAgIGVzbGludEZ1bGxSYW5nZSxcbiAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgIHRleHRFZGl0b3IsXG4gICAgICAgIHJ1bGVJZCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldFxuICB9KSlcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIGxpbnQgam9iXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICByZXNwb25zZSAgIFRoZSByYXcgcmVzcG9uc2UgZnJvbSB0aGUgam9iXG4gKiBAcGFyYW0gIHtUZXh0RWRpdG9yfSB0ZXh0RWRpdG9yIFRoZSBBdG9tOjpUZXh0RWRpdG9yIG9mIHRoZSBmaWxlIHRoZSBtZXNzYWdlcyBiZWxvbmcgdG9cbiAqIEBwYXJhbSAge2Jvb2x9ICAgICAgIHNob3dSdWxlICAgV2hldGhlciB0byBzaG93IHRoZSBydWxlIGluIHRoZSBtZXNzYWdlc1xuICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgICAgICAgICBUaGUgbWVzc2FnZXMgdHJhbnNmb3JtZWQgaW50byBMaW50ZXIgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NKb2JSZXNwb25zZShyZXNwb25zZSwgdGV4dEVkaXRvciwgc2hvd1J1bGUpIHtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXNwb25zZSwgJ3VwZGF0ZWRSdWxlcycpKSB7XG4gICAgcnVsZXMucmVwbGFjZVJ1bGVzKHJlc3BvbnNlLnVwZGF0ZWRSdWxlcylcbiAgfVxuICByZXR1cm4gcHJvY2Vzc0VTTGludE1lc3NhZ2VzKHJlc3BvbnNlLm1lc3NhZ2VzLCB0ZXh0RWRpdG9yLCBzaG93UnVsZSlcbn1cbiJdfQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbInJ1bGVzIiwiUnVsZXMiLCJ3b3JrZXIiLCJzdGFydFdvcmtlciIsIlRhc2siLCJyZXF1aXJlIiwicmVzb2x2ZSIsInN0YXJ0ZWQiLCJzdGFydCIsImtpbGxXb3JrZXIiLCJ0ZXJtaW5hdGUiLCJzZW5kSm9iIiwiY29uZmlnIiwiY2hpbGRQcm9jZXNzIiwiY29ubmVjdGVkIiwiZW1pdEtleSIsImxlbmd0aCIsIlByb21pc2UiLCJyZWplY3QiLCJlcnJTdWIiLCJvbiIsIm1zZyIsInN0YWNrIiwiZXJyb3IiLCJFcnJvciIsImRpc3Bvc2UiLCJyZXNwb25zZVN1YiIsImRhdGEiLCJzZW5kIiwiZSIsImNvbnNvbGUiLCJnZXREZWJ1Z0luZm8iLCJ0ZXh0RWRpdG9yIiwiYXRvbSIsIndvcmtzcGFjZSIsImdldEFjdGl2ZVRleHRFZGl0b3IiLCJmaWxlUGF0aCIsImVkaXRvclNjb3BlcyIsImlzVGV4dEVkaXRvciIsImdldFBhdGgiLCJnZXRMYXN0Q3Vyc29yIiwiZ2V0U2NvcGVEZXNjcmlwdG9yIiwiZ2V0U2NvcGVzQXJyYXkiLCJwYWNrYWdlUGF0aCIsInBhY2thZ2VzIiwicmVzb2x2ZVBhY2thZ2VQYXRoIiwibGludGVyRXNsaW50TWV0YSIsInVuZGVmaW5lZCIsInZlcnNpb24iLCJnZXQiLCJob3Vyc1NpbmNlUmVzdGFydCIsIk1hdGgiLCJyb3VuZCIsInByb2Nlc3MiLCJ1cHRpbWUiLCJyZXR1cm5WYWwiLCJyZXNwb25zZSIsInR5cGUiLCJhdG9tVmVyc2lvbiIsImdldFZlcnNpb24iLCJsaW50ZXJFc2xpbnRWZXJzaW9uIiwibGludGVyRXNsaW50Q29uZmlnIiwiZXNsaW50VmVyc2lvbiIsInBhdGgiLCJwbGF0Zm9ybSIsImVzbGludFR5cGUiLCJlc2xpbnRQYXRoIiwibm90aWZpY2F0aW9ucyIsImFkZEVycm9yIiwiZ2VuZXJhdGVEZWJ1Z1N0cmluZyIsImRlYnVnIiwiZGV0YWlscyIsIkpTT04iLCJzdHJpbmdpZnkiLCJqb2luIiwiZ2VuZXJhdGVVc2VyTWVzc2FnZSIsIm9wdGlvbnMiLCJzZXZlcml0eSIsImV4Y2VycHQiLCJkZXNjcmlwdGlvbiIsImxvY2F0aW9uIiwiZmlsZSIsInBvc2l0aW9uIiwiaGFuZGxlRXJyb3IiLCJtZXNzYWdlIiwic3BsaXQiLCJnZW5lcmF0ZUludmFsaWRUcmFjZSIsIm1zZ0xpbmUiLCJtc2dDb2wiLCJtc2dFbmRMaW5lIiwibXNnRW5kQ29sIiwiZXNsaW50RnVsbFJhbmdlIiwicnVsZUlkIiwiZXJyTXNnUmFuZ2UiLCJyYW5nZVRleHQiLCJpc3N1ZVVSTCIsInRpdGxlVGV4dCIsInRpdGxlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYm9keSIsIm5ld0lzc3VlVVJMIiwidXJsIiwicHJvY2Vzc0VTTGludE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJzaG93UnVsZSIsImFsbCIsIm1hcCIsImZhdGFsIiwib3JpZ2luYWxNZXNzYWdlIiwibGluZSIsImNvbHVtbiIsImZpeCIsImVuZExpbmUiLCJlbmRDb2x1bW4iLCJ0ZXh0QnVmZmVyIiwiZ2V0QnVmZmVyIiwibGludGVyRml4IiwiZml4UmFuZ2UiLCJSYW5nZSIsInBvc2l0aW9uRm9yQ2hhcmFjdGVySW5kZXgiLCJyYW5nZSIsInJlcGxhY2VXaXRoIiwidGV4dCIsIm1heCIsInJldCIsImdldFJ1bGVVcmwiLCJmaXhMaW5lRW5kaW5nIiwicnVsZUFwcGVuZGl4Iiwic29sdXRpb25zIiwiZXJyIiwicHJvY2Vzc0pvYlJlc3BvbnNlIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVwbGFjZVJ1bGVzIiwidXBkYXRlZFJ1bGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7QUFIQTtBQUtPLE1BQU1BLEtBQUssR0FBRyxJQUFJQyxjQUFKLEVBQWQ7O0FBQ1AsSUFBSUMsTUFBTSxHQUFHLElBQWI7QUFFQTtBQUNB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LEdBQUcsR0FBRyxNQUFNdEMsb0JBQW9CLENBQUM7QUFDL0JDLFFBQUFBLE9BRCtCO0FBRS9CQyxRQUFBQSxNQUYrQjtBQUcvQkMsUUFBQUEsVUFIK0I7QUFJL0JDLFFBQUFBLFNBSitCO0FBSy9CQyxRQUFBQSxlQUwrQjtBQU0vQnZELFFBQUFBLFFBTitCO0FBTy9CSixRQUFBQSxVQVArQjtBQVEvQjRELFFBQUFBLE1BUitCO0FBUy9CUixRQUFBQTtBQVQrQixPQUFELENBQWhDO0FBV0Q7O0FBRUQsV0FBT3dDLEdBQVA7QUFDRCxHQTNGa0IsQ0FBWixDQUFQO0FBNEZEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLGVBQWVNLGtCQUFmLENBQWtDMUUsUUFBbEMsRUFBNEN4QixVQUE1QyxFQUF3RHdFLFFBQXhELEVBQWtFO0FBQ3ZFLE1BQUkyQixNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDQyxJQUFoQyxDQUFxQzlFLFFBQXJDLEVBQStDLGNBQS9DLENBQUosRUFBb0U7QUFDbEV4RCxJQUFBQSxLQUFLLENBQUN1SSxZQUFOLENBQW1CL0UsUUFBUSxDQUFDZ0YsWUFBNUI7QUFDRDs7QUFDRCxTQUFPbEMscUJBQXFCLENBQUM5QyxRQUFRLENBQUMrQyxRQUFWLEVBQW9CdkUsVUFBcEIsRUFBZ0N3RSxRQUFoQyxDQUE1QjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnXG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmdlIH0gZnJvbSAnYXRvbS1saW50ZXInXG5pbXBvcnQgY3J5cHRvUmFuZG9tU3RyaW5nIGZyb20gJ2NyeXB0by1yYW5kb20tc3RyaW5nJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcywgaW1wb3J0L2V4dGVuc2lvbnNcbmltcG9ydCB7IFJhbmdlLCBUYXNrIH0gZnJvbSAnYXRvbSdcbmltcG9ydCBSdWxlcyBmcm9tICcuL3J1bGVzJ1xuaW1wb3J0IHsgdGhyb3dJZkludmFsaWRQb2ludCB9IGZyb20gJy4vdmFsaWRhdGUvZWRpdG9yJ1xuXG5leHBvcnQgY29uc3QgcnVsZXMgPSBuZXcgUnVsZXMoKVxubGV0IHdvcmtlciA9IG51bGxcblxuLyoqXG4gKiBTdGFydCB0aGUgd29ya2VyIHByb2Nlc3MgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBzdGFydGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydFdvcmtlcigpIHtcbiAgaWYgKHdvcmtlciA9PT0gbnVsbCkge1xuICAgIHdvcmtlciA9IG5ldyBUYXNrKHJlcXVpcmUucmVzb2x2ZSgnLi93b3JrZXIuanMnKSlcbiAgfVxuXG4gIGlmICh3b3JrZXIuc3RhcnRlZCkge1xuICAgIC8vIFdvcmtlciBzdGFydCByZXF1ZXN0IGhhcyBhbHJlYWR5IGJlZW4gc2VudFxuICAgIHJldHVyblxuICB9XG4gIC8vIFNlbmQgZW1wdHkgYXJndW1lbnRzIGFzIHdlIGRvbid0IHVzZSB0aGVtIGluIHRoZSB3b3JrZXJcbiAgd29ya2VyLnN0YXJ0KFtdKVxuXG4gIC8vIE5PVEU6IE1vZGlmaWVzIHRoZSBUYXNrIG9mIHRoZSB3b3JrZXIsIGJ1dCBpdCdzIHRoZSBvbmx5IGNsZWFuIHdheSB0byB0cmFjayB0aGlzXG4gIHdvcmtlci5zdGFydGVkID0gdHJ1ZVxufVxuXG4vKipcbiAqIEZvcmNlcyB0aGUgd29ya2VyIFRhc2sgdG8ga2lsbCBpdHNlbGZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtpbGxXb3JrZXIoKSB7XG4gIGlmICh3b3JrZXIgIT09IG51bGwpIHtcbiAgICB3b3JrZXIudGVybWluYXRlKClcbiAgICB3b3JrZXIgPSBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBTZW5kIGEgam9iIHRvIHRoZSB3b3JrZXIgYW5kIHJldHVybiB0aGUgcmVzdWx0c1xuICogQHBhcmFtICB7T2JqZWN0fSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGpvYiB0byBzZW5kIHRvIHRoZSB3b3JrZXJcbiAqIEByZXR1cm4ge09iamVjdHxTdHJpbmd8RXJyb3J9ICAgICAgICBUaGUgZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB3b3JrZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRKb2IoY29uZmlnKSB7XG4gIGlmICh3b3JrZXIgJiYgIXdvcmtlci5jaGlsZFByb2Nlc3MuY29ubmVjdGVkKSB7XG4gICAgLy8gU29tZXRpbWVzIHRoZSB3b3JrZXIgZGllcyBhbmQgYmVjb21lcyBkaXNjb25uZWN0ZWRcbiAgICAvLyBXaGVuIHRoYXQgaGFwcGVucywgaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyB3YXkgdG8gcmVjb3ZlciBvdGhlclxuICAgIC8vIHRoYW4gdG8ga2lsbCB0aGUgd29ya2VyIGFuZCBjcmVhdGUgYSBuZXcgb25lLlxuICAgIGtpbGxXb3JrZXIoKVxuICB9XG5cbiAgLy8gRW5zdXJlIHRoZSB3b3JrZXIgaXMgc3RhcnRlZFxuICBzdGFydFdvcmtlcigpXG5cbiAgLy8gRXhwYW5kIHRoZSBjb25maWcgd2l0aCBhIHVuaXF1ZSBJRCB0byBlbWl0IG9uXG4gIC8vIE5PVEU6IEpvYnMgX211c3RfIGhhdmUgYSB1bmlxdWUgSUQgYXMgdGhleSBhcmUgY29tcGxldGVseSBhc3luYyBhbmQgcmVzdWx0c1xuICAvLyBjYW4gYXJyaXZlIGJhY2sgaW4gYW55IG9yZGVyLlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnLmVtaXRLZXkgPSBjcnlwdG9SYW5kb21TdHJpbmcoeyBsZW5ndGg6IDEwIH0pXG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAvLyBBbGwgd29ya2VyIGVycm9ycyBhcmUgY2F1Z2h0IGFuZCByZS1lbWl0dGVkIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZFxuICAgIC8vIGVtaXRLZXksIHNvIHRoYXQgd2UgZG8gbm90IGNyZWF0ZSBtdWx0aXBsZSBsaXN0ZW5lcnMgZm9yIHRoZSBzYW1lXG4gICAgLy8gJ3Rhc2s6ZXJyb3InIGV2ZW50XG4gICAgY29uc3QgZXJyU3ViID0gd29ya2VyLm9uKGB3b3JrZXJFcnJvcjoke2NvbmZpZy5lbWl0S2V5fWAsICh7IG1zZywgc3RhY2sgfSkgPT4ge1xuICAgICAgLy8gUmUtdGhyb3cgZXJyb3JzIGZyb20gdGhlIHRhc2tcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1zZylcbiAgICAgIC8vIFNldCB0aGUgc3RhY2sgdG8gdGhlIG9uZSBnaXZlbiB0byB1cyBieSB0aGUgd29ya2VyXG4gICAgICBlcnJvci5zdGFjayA9IHN0YWNrXG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlc3BvbnNlU3ViLmRpc3Bvc2UoKVxuICAgICAgcmVqZWN0KGVycm9yKVxuICAgIH0pXG4gICAgY29uc3QgcmVzcG9uc2VTdWIgPSB3b3JrZXIub24oY29uZmlnLmVtaXRLZXksIChkYXRhKSA9PiB7XG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICByZXNwb25zZVN1Yi5kaXNwb3NlKClcbiAgICAgIHJlc29sdmUoZGF0YSlcbiAgICB9KVxuICAgIC8vIFNlbmQgdGhlIGpvYiBvbiB0byB0aGUgd29ya2VyXG4gICAgdHJ5IHtcbiAgICAgIHdvcmtlci5zZW5kKGNvbmZpZylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJTdWIuZGlzcG9zZSgpXG4gICAgICByZXNwb25zZVN1Yi5kaXNwb3NlKClcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSlcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZWJ1Z0luZm8oKSB7XG4gIGNvbnN0IHRleHRFZGl0b3IgPSBhdG9tLndvcmtzcGFjZS5nZXRBY3RpdmVUZXh0RWRpdG9yKClcbiAgbGV0IGZpbGVQYXRoXG4gIGxldCBlZGl0b3JTY29wZXNcbiAgaWYgKGF0b20ud29ya3NwYWNlLmlzVGV4dEVkaXRvcih0ZXh0RWRpdG9yKSkge1xuICAgIGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICBlZGl0b3JTY29wZXMgPSB0ZXh0RWRpdG9yLmdldExhc3RDdXJzb3IoKS5nZXRTY29wZURlc2NyaXB0b3IoKS5nZXRTY29wZXNBcnJheSgpXG4gIH0gZWxzZSB7XG4gICAgLy8gU29tZWhvdyB0aGlzIGNhbiBiZSBjYWxsZWQgd2l0aCBubyBhY3RpdmUgVGV4dEVkaXRvciwgaW1wb3NzaWJsZSBJIGtub3cuLi5cbiAgICBmaWxlUGF0aCA9ICd1bmtub3duJ1xuICAgIGVkaXRvclNjb3BlcyA9IFsndW5rbm93biddXG4gIH1cbiAgY29uc3QgcGFja2FnZVBhdGggPSBhdG9tLnBhY2thZ2VzLnJlc29sdmVQYWNrYWdlUGF0aCgnbGludGVyLWVzbGludCcpXG4gIGxldCBsaW50ZXJFc2xpbnRNZXRhXG4gIGlmIChwYWNrYWdlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gQXBwYXJlbnRseSBmb3Igc29tZSB1c2VycyB0aGUgcGFja2FnZSBwYXRoIGZhaWxzIHRvIHJlc29sdmVcbiAgICBsaW50ZXJFc2xpbnRNZXRhID0geyB2ZXJzaW9uOiAndW5rbm93biEnIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWR5bmFtaWMtcmVxdWlyZVxuICAgIGxpbnRlckVzbGludE1ldGEgPSByZXF1aXJlKGpvaW4ocGFja2FnZVBhdGgsICdwYWNrYWdlLmpzb24nKSlcbiAgfVxuICBjb25zdCBjb25maWcgPSBhdG9tLmNvbmZpZy5nZXQoJ2xpbnRlci1lc2xpbnQnKVxuICBjb25zdCBob3Vyc1NpbmNlUmVzdGFydCA9IE1hdGgucm91bmQoKHByb2Nlc3MudXB0aW1lKCkgLyAzNjAwKSAqIDEwKSAvIDEwXG4gIGxldCByZXR1cm5WYWxcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRKb2Ioe1xuICAgICAgdHlwZTogJ2RlYnVnJyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGZpbGVQYXRoXG4gICAgfSlcbiAgICByZXR1cm5WYWwgPSB7XG4gICAgICBhdG9tVmVyc2lvbjogYXRvbS5nZXRWZXJzaW9uKCksXG4gICAgICBsaW50ZXJFc2xpbnRWZXJzaW9uOiBsaW50ZXJFc2xpbnRNZXRhLnZlcnNpb24sXG4gICAgICBsaW50ZXJFc2xpbnRDb25maWc6IGNvbmZpZyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZHluYW1pYy1yZXF1aXJlXG4gICAgICBlc2xpbnRWZXJzaW9uOiByZXF1aXJlKGpvaW4ocmVzcG9uc2UucGF0aCwgJ3BhY2thZ2UuanNvbicpKS52ZXJzaW9uLFxuICAgICAgaG91cnNTaW5jZVJlc3RhcnQsXG4gICAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGVzbGludFR5cGU6IHJlc3BvbnNlLnR5cGUsXG4gICAgICBlc2xpbnRQYXRoOiByZXNwb25zZS5wYXRoLFxuICAgICAgZWRpdG9yU2NvcGVzLFxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IoYCR7ZXJyb3J9YClcbiAgfVxuICByZXR1cm4gcmV0dXJuVmFsXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZURlYnVnU3RyaW5nKCkge1xuICBjb25zdCBkZWJ1ZyA9IGF3YWl0IGdldERlYnVnSW5mbygpXG4gIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgYEF0b20gdmVyc2lvbjogJHtkZWJ1Zy5hdG9tVmVyc2lvbn1gLFxuICAgIGBsaW50ZXItZXNsaW50IHZlcnNpb246ICR7ZGVidWcubGludGVyRXNsaW50VmVyc2lvbn1gLFxuICAgIGBFU0xpbnQgdmVyc2lvbjogJHtkZWJ1Zy5lc2xpbnRWZXJzaW9ufWAsXG4gICAgYEhvdXJzIHNpbmNlIGxhc3QgQXRvbSByZXN0YXJ0OiAke2RlYnVnLmhvdXJzU2luY2VSZXN0YXJ0fWAsXG4gICAgYFBsYXRmb3JtOiAke2RlYnVnLnBsYXRmb3JtfWAsXG4gICAgYFVzaW5nICR7ZGVidWcuZXNsaW50VHlwZX0gRVNMaW50IGZyb206ICR7ZGVidWcuZXNsaW50UGF0aH1gLFxuICAgIGBDdXJyZW50IGZpbGUncyBzY29wZXM6ICR7SlNPTi5zdHJpbmdpZnkoZGVidWcuZWRpdG9yU2NvcGVzLCBudWxsLCAyKX1gLFxuICAgIGBsaW50ZXItZXNsaW50IGNvbmZpZ3VyYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoZGVidWcubGludGVyRXNsaW50Q29uZmlnLCBudWxsLCAyKX1gXG4gIF1cbiAgcmV0dXJuIGRldGFpbHMuam9pbignXFxuJylcbn1cblxuLyoqXG4gKiBUdXJuIHRoZSBnaXZlbiBvcHRpb25zIGludG8gYSBMaW50ZXIgbWVzc2FnZSBhcnJheVxuICogQHBhcmFtICB7VGV4dEVkaXRvcn0gdGV4dEVkaXRvciBUaGUgVGV4dEVkaXRvciB0byB1c2UgdG8gYnVpbGQgdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9ucyAgICBUaGUgcGFyYW1ldGVycyB1c2VkIHRvIGZpbGwgaW4gdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge3N0cmluZ30gW29wdGlvbnMuc2V2ZXJpdHk9J2Vycm9yJ10gQ2FuIGJlIG9uZSBvZjogJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbydcbiAqIEBwYXJhbSAge3N0cmluZ30gW29wdGlvbnMuZXhjZXJwdD0nJ10gU2hvcnQgdGV4dCB0byB1c2UgaW4gdGhlIG1lc3NhZ2VcbiAqIEBwYXJhbSAge3N0cmluZ3xGdW5jdGlvbn0gW29wdGlvbnMuZGVzY3JpcHRpb25dIFVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4gKiBAcmV0dXJuIHtpbXBvcnQoXCJhdG9tL2xpbnRlclwiKS5NZXNzYWdlW119IE1lc3NhZ2UgdG8gdXNlciBnZW5lcmF0ZWQgZnJvbSB0aGUgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVVc2VyTWVzc2FnZSh0ZXh0RWRpdG9yLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBzZXZlcml0eSA9ICdlcnJvcicsXG4gICAgZXhjZXJwdCA9ICcnLFxuICAgIGRlc2NyaXB0aW9uLFxuICB9ID0gb3B0aW9uc1xuICByZXR1cm4gW3tcbiAgICBzZXZlcml0eSxcbiAgICBleGNlcnB0LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGxvY2F0aW9uOiB7XG4gICAgICBmaWxlOiB0ZXh0RWRpdG9yLmdldFBhdGgoKSxcbiAgICAgIHBvc2l0aW9uOiBnZW5lcmF0ZVJhbmdlKHRleHRFZGl0b3IpLFxuICAgIH0sXG4gIH1dXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbWVzc2FnZSB0byB0aGUgdXNlciBpbiBvcmRlciB0byBuaWNlbHkgZGlzcGxheSB0aGUgRXJyb3IgYmVpbmdcbiAqIHRocm93biBpbnN0ZWFkIG9mIGRlcGVuZGluZyBvbiBnZW5lcmljIGVycm9yIGhhbmRsaW5nLlxuICogQHBhcmFtICB7aW1wb3J0KFwiYXRvbVwiKS5UZXh0RWRpdG9yfSB0ZXh0RWRpdG9yIFRoZSBUZXh0RWRpdG9yIHRvIHVzZSB0byBidWlsZCB0aGUgbWVzc2FnZVxuICogQHBhcmFtICB7RXJyb3J9IGVycm9yICAgICAgRXJyb3IgdG8gZ2VuZXJhdGUgYSBtZXNzYWdlIGZvclxuICogQHJldHVybiB7aW1wb3J0KFwiYXRvbS9saW50ZXJcIikuTWVzc2FnZVtdfSBNZXNzYWdlIHRvIHVzZXIgZ2VuZXJhdGVkIGZyb20gdGhlIEVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVFcnJvcih0ZXh0RWRpdG9yLCBlcnJvcikge1xuICBjb25zdCB7IHN0YWNrLCBtZXNzYWdlIH0gPSBlcnJvclxuICAvLyBPbmx5IHNob3cgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIG1lc3NhZ2UgYXMgdGhlIGV4Y2VycHRcbiAgY29uc3QgZXhjZXJwdCA9IGBFcnJvciB3aGlsZSBydW5uaW5nIEVTTGludDogJHttZXNzYWdlLnNwbGl0KCdcXG4nKVswXX0uYFxuICBjb25zdCBkZXNjcmlwdGlvbiA9IGA8ZGl2IHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZS13cmFwXCI+JHttZXNzYWdlfVxcbjxociAvPiR7c3RhY2t9PC9kaXY+YFxuICByZXR1cm4gZ2VuZXJhdGVVc2VyTWVzc2FnZSh0ZXh0RWRpdG9yLCB7IHNldmVyaXR5OiAnZXJyb3InLCBleGNlcnB0LCBkZXNjcmlwdGlvbiB9KVxufVxuXG5jb25zdCBnZW5lcmF0ZUludmFsaWRUcmFjZSA9IGFzeW5jICh7XG4gIG1zZ0xpbmUsIG1zZ0NvbCwgbXNnRW5kTGluZSwgbXNnRW5kQ29sLFxuICBlc2xpbnRGdWxsUmFuZ2UsIGZpbGVQYXRoLCB0ZXh0RWRpdG9yLCBydWxlSWQsIG1lc3NhZ2Vcbn0pID0+IHtcbiAgbGV0IGVyck1zZ1JhbmdlID0gYCR7bXNnTGluZSArIDF9OiR7bXNnQ29sfWBcbiAgaWYgKGVzbGludEZ1bGxSYW5nZSkge1xuICAgIGVyck1zZ1JhbmdlICs9IGAgLSAke21zZ0VuZExpbmUgKyAxfToke21zZ0VuZENvbCArIDF9YFxuICB9XG4gIGNvbnN0IHJhbmdlVGV4dCA9IGBSZXF1ZXN0ZWQgJHtlc2xpbnRGdWxsUmFuZ2UgPyAnc3RhcnQgcG9pbnQnIDogJ3JhbmdlJ306ICR7ZXJyTXNnUmFuZ2V9YFxuICBjb25zdCBpc3N1ZVVSTCA9ICdodHRwczovL2dpdGh1Yi5jb20vQXRvbUxpbnRlci9saW50ZXItZXNsaW50L2lzc3Vlcy9uZXcnXG4gIGNvbnN0IHRpdGxlVGV4dCA9IGBJbnZhbGlkIHBvc2l0aW9uIGdpdmVuIGJ5ICcke3J1bGVJZH0nYFxuICBjb25zdCB0aXRsZSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aXRsZVRleHQpXG4gIGNvbnN0IGJvZHkgPSBlbmNvZGVVUklDb21wb25lbnQoW1xuICAgICdFU0xpbnQgcmV0dXJuZWQgYSBwb2ludCB0aGF0IGRpZCBub3QgZXhpc3QgaW4gdGhlIGRvY3VtZW50IGJlaW5nIGVkaXRlZC4nLFxuICAgIGBSdWxlOiBcXGAke3J1bGVJZH1cXGBgLFxuICAgIHJhbmdlVGV4dCxcbiAgICAnJywgJycsXG4gICAgJzwhLS0gSWYgYXQgYWxsIHBvc3NpYmxlLCBwbGVhc2UgaW5jbHVkZSBjb2RlIHRvIHJlcHJvZHVjZSB0aGlzIGlzc3VlISAtLT4nLFxuICAgICcnLCAnJyxcbiAgICAnRGVidWcgaW5mb3JtYXRpb246JyxcbiAgICAnYGBganNvbicsXG4gICAgSlNPTi5zdHJpbmdpZnkoYXdhaXQgZ2V0RGVidWdJbmZvKCksIG51bGwsIDIpLFxuICAgICdgYGAnXG4gIF0uam9pbignXFxuJykpXG5cbiAgY29uc3QgbG9jYXRpb24gPSB7XG4gICAgZmlsZTogZmlsZVBhdGgsXG4gICAgcG9zaXRpb246IGdlbmVyYXRlUmFuZ2UodGV4dEVkaXRvciwgMCksXG4gIH1cbiAgY29uc3QgbmV3SXNzdWVVUkwgPSBgJHtpc3N1ZVVSTH0/dGl0bGU9JHt0aXRsZX0mYm9keT0ke2JvZHl9YFxuXG4gIHJldHVybiB7XG4gICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgZXhjZXJwdDogYCR7dGl0bGVUZXh0fS4gU2VlIHRoZSBkZXNjcmlwdGlvbiBmb3IgZGV0YWlscy4gYFxuICAgICAgKyAnQ2xpY2sgdGhlIFVSTCB0byBvcGVuIGEgbmV3IGlzc3VlIScsXG4gICAgdXJsOiBuZXdJc3N1ZVVSTCxcbiAgICBsb2NhdGlvbixcbiAgICBkZXNjcmlwdGlvbjogYCR7cmFuZ2VUZXh0fVxcbk9yaWdpbmFsIG1lc3NhZ2U6ICR7bWVzc2FnZX1gXG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIHJhdyByZXNwb25zZSBmcm9tIEVTTGludCwgdGhpcyBwcm9jZXNzZXMgdGhlIG1lc3NhZ2VzIGludG8gYSBmb3JtYXRcbiAqIGNvbXBhdGlibGUgd2l0aCB0aGUgTGludGVyIEFQSS5cbiAqIEBwYXJhbSAge09iamVjdH0gICAgIG1lc3NhZ2VzICAgVGhlIG1lc3NhZ2VzIGZyb20gRVNMaW50J3MgcmVzcG9uc2VcbiAqIEBwYXJhbSAge1RleHRFZGl0b3J9IHRleHRFZGl0b3IgVGhlIEF0b206OlRleHRFZGl0b3Igb2YgdGhlIGZpbGUgdGhlIG1lc3NhZ2VzIGJlbG9uZyB0b1xuICogQHBhcmFtICB7Ym9vbH0gICAgICAgc2hvd1J1bGUgICBXaGV0aGVyIHRvIHNob3cgdGhlIHJ1bGUgaW4gdGhlIG1lc3NhZ2VzXG4gKiBAcmV0dXJuIHtQcm9taXNlfSAgICAgICAgICAgICAgIFRoZSBtZXNzYWdlcyB0cmFuc2Zvcm1lZCBpbnRvIExpbnRlciBtZXNzYWdlc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0VTTGludE1lc3NhZ2VzKG1lc3NhZ2VzLCB0ZXh0RWRpdG9yLCBzaG93UnVsZSkge1xuICByZXR1cm4gUHJvbWlzZS5hbGwobWVzc2FnZXMubWFwKGFzeW5jICh7XG4gICAgZmF0YWwsIG1lc3NhZ2U6IG9yaWdpbmFsTWVzc2FnZSwgbGluZSwgc2V2ZXJpdHksIHJ1bGVJZCwgY29sdW1uLCBmaXgsIGVuZExpbmUsIGVuZENvbHVtblxuICB9KSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGZhdGFsID8gb3JpZ2luYWxNZXNzYWdlLnNwbGl0KCdcXG4nKVswXSA6IG9yaWdpbmFsTWVzc2FnZVxuICAgIGNvbnN0IGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICBjb25zdCB0ZXh0QnVmZmVyID0gdGV4dEVkaXRvci5nZXRCdWZmZXIoKVxuICAgIGxldCBsaW50ZXJGaXggPSBudWxsXG4gICAgaWYgKGZpeCkge1xuICAgICAgY29uc3QgZml4UmFuZ2UgPSBuZXcgUmFuZ2UoXG4gICAgICAgIHRleHRCdWZmZXIucG9zaXRpb25Gb3JDaGFyYWN0ZXJJbmRleChmaXgucmFuZ2VbMF0pLFxuICAgICAgICB0ZXh0QnVmZmVyLnBvc2l0aW9uRm9yQ2hhcmFjdGVySW5kZXgoZml4LnJhbmdlWzFdKVxuICAgICAgKVxuICAgICAgbGludGVyRml4ID0ge1xuICAgICAgICBwb3NpdGlvbjogZml4UmFuZ2UsXG4gICAgICAgIHJlcGxhY2VXaXRoOiBmaXgudGV4dFxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbXNnQ29sXG4gICAgbGV0IG1zZ0VuZExpbmVcbiAgICBsZXQgbXNnRW5kQ29sXG4gICAgbGV0IGVzbGludEZ1bGxSYW5nZSA9IGZhbHNlXG5cbiAgICAvKlxuICAgICBOb3RlOiBFU0xpbnQgcG9zaXRpb25zIGFyZSAxLWluZGV4ZWQsIHdoaWxlIEF0b20gZXhwZWN0cyAwLWluZGV4ZWQsXG4gICAgIHBvc2l0aW9ucy4gV2UgYXJlIHN1YnRyYWN0aW5nIDEgZnJvbSB0aGVzZSB2YWx1ZXMgaGVyZSBzbyB3ZSBkb24ndCBoYXZlIHRvXG4gICAgIGtlZXAgZG9pbmcgc28gaW4gbGF0ZXIgdXNlcy5cbiAgICAgKi9cbiAgICBjb25zdCBtc2dMaW5lID0gbGluZSAtIDFcbiAgICBpZiAodHlwZW9mIGVuZENvbHVtbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGVuZExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICBlc2xpbnRGdWxsUmFuZ2UgPSB0cnVlXG4gICAgICAvLyBIZXJlIHdlIGFsd2F5cyB3YW50IHRoZSBjb2x1bW4gdG8gYmUgYSBudW1iZXJcbiAgICAgIG1zZ0NvbCA9IE1hdGgubWF4KDAsIGNvbHVtbiAtIDEpXG4gICAgICBtc2dFbmRMaW5lID0gZW5kTGluZSAtIDFcbiAgICAgIG1zZ0VuZENvbCA9IGVuZENvbHVtbiAtIDFcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugd2FudCBtc2dDb2wgdG8gcmVtYWluIHVuZGVmaW5lZCBpZiBpdCB3YXMgaW5pdGlhbGx5IHNvXG4gICAgICAvLyBgZ2VuZXJhdGVSYW5nZWAgd2lsbCBnaXZlIHVzIGEgcmFuZ2Ugb3ZlciB0aGUgZW50aXJlIGxpbmVcbiAgICAgIG1zZ0NvbCA9IHR5cGVvZiBjb2x1bW4gPT09ICdudW1iZXInID8gY29sdW1uIC0gMSA6IGNvbHVtblxuICAgIH1cblxuICAgIGxldCByZXQgPSB7XG4gICAgICBzZXZlcml0eTogc2V2ZXJpdHkgPT09IDEgPyAnd2FybmluZycgOiAnZXJyb3InLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgZmlsZTogZmlsZVBhdGgsXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJ1bGVJZCkge1xuICAgICAgcmV0LnVybCA9IHJ1bGVzLmdldFJ1bGVVcmwocnVsZUlkKVxuICAgIH1cblxuICAgIC8vIEhBQ0sgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9BdG9tTGludGVyL2xpbnRlci1lc2xpbnQvaXNzdWVzLzEyNDlcbiAgICBsZXQgZml4TGluZUVuZGluZyA9IGZhbHNlXG4gICAgaWYgKHJ1bGVJZCA9PT0gJ3ByZXR0aWVyL3ByZXR0aWVyJyAmJiAobWVzc2FnZSA9PT0gJ0RlbGV0ZSBg4pCNYCcpKSB7XG4gICAgICBmaXhMaW5lRW5kaW5nID0gdHJ1ZVxuICAgIH1cblxuICAgIGxldCByYW5nZVxuICAgIHRyeSB7XG4gICAgICBpZiAoZXNsaW50RnVsbFJhbmdlKSB7XG4gICAgICAgIGlmICghZml4TGluZUVuZGluZykge1xuICAgICAgICAgIHRocm93SWZJbnZhbGlkUG9pbnQodGV4dEJ1ZmZlciwgbXNnTGluZSwgbXNnQ29sKVxuICAgICAgICAgIHRocm93SWZJbnZhbGlkUG9pbnQodGV4dEJ1ZmZlciwgbXNnRW5kTGluZSwgbXNnRW5kQ29sKVxuICAgICAgICB9XG4gICAgICAgIHJhbmdlID0gW1ttc2dMaW5lLCBtc2dDb2xdLCBbbXNnRW5kTGluZSwgbXNnRW5kQ29sXV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlID0gZ2VuZXJhdGVSYW5nZSh0ZXh0RWRpdG9yLCBtc2dMaW5lLCBtc2dDb2wpXG4gICAgICB9XG4gICAgICByZXQubG9jYXRpb24ucG9zaXRpb24gPSByYW5nZVxuXG4gICAgICBjb25zdCBydWxlQXBwZW5kaXggPSBzaG93UnVsZSA/IGAgKCR7cnVsZUlkIHx8ICdGYXRhbCd9KWAgOiAnJ1xuICAgICAgcmV0LmV4Y2VycHQgPSBgJHttZXNzYWdlfSR7cnVsZUFwcGVuZGl4fWBcblxuICAgICAgaWYgKGxpbnRlckZpeCkge1xuICAgICAgICByZXQuc29sdXRpb25zID0gW2xpbnRlckZpeF1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldCA9IGF3YWl0IGdlbmVyYXRlSW52YWxpZFRyYWNlKHtcbiAgICAgICAgbXNnTGluZSxcbiAgICAgICAgbXNnQ29sLFxuICAgICAgICBtc2dFbmRMaW5lLFxuICAgICAgICBtc2dFbmRDb2wsXG4gICAgICAgIGVzbGludEZ1bGxSYW5nZSxcbiAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgIHRleHRFZGl0b3IsXG4gICAgICAgIHJ1bGVJZCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJldFxuICB9KSlcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIGxpbnQgam9iXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICByZXNwb25zZSAgIFRoZSByYXcgcmVzcG9uc2UgZnJvbSB0aGUgam9iXG4gKiBAcGFyYW0gIHtUZXh0RWRpdG9yfSB0ZXh0RWRpdG9yIFRoZSBBdG9tOjpUZXh0RWRpdG9yIG9mIHRoZSBmaWxlIHRoZSBtZXNzYWdlcyBiZWxvbmcgdG9cbiAqIEBwYXJhbSAge2Jvb2x9ICAgICAgIHNob3dSdWxlICAgV2hldGhlciB0byBzaG93IHRoZSBydWxlIGluIHRoZSBtZXNzYWdlc1xuICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgICAgICAgICBUaGUgbWVzc2FnZXMgdHJhbnNmb3JtZWQgaW50byBMaW50ZXIgbWVzc2FnZXNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NKb2JSZXNwb25zZShyZXNwb25zZSwgdGV4dEVkaXRvciwgc2hvd1J1bGUpIHtcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXNwb25zZSwgJ3VwZGF0ZWRSdWxlcycpKSB7XG4gICAgcnVsZXMucmVwbGFjZVJ1bGVzKHJlc3BvbnNlLnVwZGF0ZWRSdWxlcylcbiAgfVxuICByZXR1cm4gcHJvY2Vzc0VTTGludE1lc3NhZ2VzKHJlc3BvbnNlLm1lc3NhZ2VzLCB0ZXh0RWRpdG9yLCBzaG93UnVsZSlcbn1cbiJdfQ== \ No newline at end of file diff --git a/dist/main.js b/dist/main.js index 81e26f7e..895f9173 100644 --- a/dist/main.js +++ b/dist/main.js @@ -164,6 +164,11 @@ module.exports = { grammarScopes: scopes, scope: 'file', lintsOnChange: true, + + /** + * @param {import("atom").TextEditor} textEditor + * @returns {Promise} + */ lint: async textEditor => { if (!atom.workspace.isTextEditor(textEditor)) { // If we somehow get fed an invalid TextEditor just immediately return @@ -277,4 +282,4 @@ module.exports = { } }; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sIm5hbWVzIjpbImlkbGVDYWxsYmFja3MiLCJTZXQiLCJtYWtlSWRsZUNhbGxiYWNrIiwid29yayIsImNhbGxiYWNrSWQiLCJjYWxsQmFjayIsImRlbGV0ZSIsIndpbmRvdyIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJhZGQiLCJzY2hlZHVsZUlkbGVUYXNrcyIsImxpbnRlckVzbGludEluc3RhbGxQZWVyUGFja2FnZXMiLCJyZXF1aXJlIiwiaW5zdGFsbCIsImxpbnRlckVzbGludFN0YXJ0V29ya2VyIiwiaGVscGVycyIsInN0YXJ0V29ya2VyIiwiYXRvbSIsImluU3BlY01vZGUiLCJzY29wZXMiLCJzaG93UnVsZSIsImxpbnRIdG1sRmlsZXMiLCJpZ25vcmVkUnVsZXNXaGVuTW9kaWZpZWQiLCJpZ25vcmVkUnVsZXNXaGVuRml4aW5nIiwiaWdub3JlRml4YWJsZVJ1bGVzV2hpbGVUeXBpbmciLCJpZHNUb0lnbm9yZWRSdWxlcyIsInJ1bGVJZHMiLCJBcnJheSIsImZyb20iLCJyZWR1Y2UiLCJpZHMiLCJpZCIsIk9iamVjdCIsImFzc2lnbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJhY3RpdmF0ZSIsInN1YnNjcmlwdGlvbnMiLCJDb21wb3NpdGVEaXNwb3NhYmxlIiwiZW1iZWRkZWRTY29wZSIsImNvbmZpZyIsIm9ic2VydmUiLCJ2YWx1ZSIsInB1c2giLCJpbmRleE9mIiwic3BsaWNlIiwibGVuZ3RoIiwicHJvdG90eXBlIiwiYXBwbHkiLCJpbmNsdWRlcyIsIndvcmtzcGFjZSIsIm9ic2VydmVUZXh0RWRpdG9ycyIsImVkaXRvciIsIm9uRGlkU2F2ZSIsImdldCIsImZpeEpvYiIsImNvbW1hbmRzIiwiZGVidWdTdHJpbmciLCJnZW5lcmF0ZURlYnVnU3RyaW5nIiwibm90aWZpY2F0aW9uT3B0aW9ucyIsImRldGFpbCIsImRpc21pc3NhYmxlIiwibm90aWZpY2F0aW9ucyIsImFkZEluZm8iLCJjb250ZXh0TWVudSIsImxhYmVsIiwiY29tbWFuZCIsInNob3VsZERpc3BsYXkiLCJldnQiLCJhY3RpdmVFZGl0b3IiLCJnZXRBY3RpdmVUZXh0RWRpdG9yIiwiZXZ0SXNBY3RpdmVFZGl0b3IiLCJwYXRoIiwic29tZSIsImVsZW0iLCJjb21wb25lbnQiLCJkZWFjdGl2YXRlIiwiZm9yRWFjaCIsImNhbGxiYWNrSUQiLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJjbGVhciIsImtpbGxXb3JrZXIiLCJkaXNwb3NlIiwicHJvdmlkZUxpbnRlciIsIm5hbWUiLCJncmFtbWFyU2NvcGVzIiwic2NvcGUiLCJsaW50c09uQ2hhbmdlIiwibGludCIsInRleHRFZGl0b3IiLCJpc1RleHRFZGl0b3IiLCJmaWxlUGF0aCIsImdldFBhdGgiLCJnZW5lcmF0ZVVzZXJNZXNzYWdlIiwic2V2ZXJpdHkiLCJleGNlcnB0IiwidGV4dCIsImdldFRleHQiLCJydWxlcyIsImlzTW9kaWZpZWQiLCJpZ25vcmVkUnVsZXMiLCJnZXRGaXhhYmxlUnVsZXMiLCJydWxlSWQiLCJyZXNwb25zZSIsInNlbmRKb2IiLCJ0eXBlIiwiY29udGVudHMiLCJwcm9qZWN0UGF0aCIsInByb2plY3QiLCJyZWxhdGl2aXplUGF0aCIsInByb2Nlc3NKb2JSZXNwb25zZSIsImVycm9yIiwiaGFuZGxlRXJyb3IiLCJpc1NhdmUiLCJtZXNzYWdlIiwiYWRkRXJyb3IiLCJrZXlzIiwiYWRkU3VjY2VzcyIsImVyciIsImFkZFdhcm5pbmciXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUpBO0FBTUE7QUFDQSxNQUFNQSxhQUFhLEdBQUcsSUFBSUMsR0FBSixFQUF0Qjs7QUFFQSxNQUFNQyxnQkFBZ0IsR0FBSUMsSUFBRCxJQUFVO0FBQ2pDLE1BQUlDLFVBQUo7O0FBQ0EsUUFBTUMsUUFBUSxHQUFHLE1BQU07QUFDckJMLElBQUFBLGFBQWEsQ0FBQ00sTUFBZCxDQUFxQkYsVUFBckI7QUFDQUQsSUFBQUEsSUFBSTtBQUNMLEdBSEQ7O0FBSUFDLEVBQUFBLFVB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QUFBLEtBQUssR0FBRzNFLHNCQUFSO0FBQ0Q7O0FBRUQsUUFBSTtBQUNGLFlBQU1nRixRQUFRLEdBQUcsTUFBTXhGLE9BQU8sQ0FBQ3lGLE9BQVIsQ0FBZ0I7QUFDckNDLFFBQUFBLElBQUksRUFBRSxLQUQrQjtBQUVyQ2pFLFFBQUFBLE1BQU0sRUFBRXZCLElBQUksQ0FBQ3VCLE1BQUwsQ0FBWWMsR0FBWixDQUFnQixlQUFoQixDQUY2QjtBQUdyQ29ELFFBQUFBLFFBQVEsRUFBRVYsSUFIMkI7QUFJckNFLFFBQUFBLEtBSnFDO0FBS3JDUCxRQUFBQSxRQUxxQztBQU1yQ2dCLFFBQUFBO0FBTnFDLE9BQWhCLENBQXZCOztBQVFBLFVBQUksQ0FBQ00sTUFBTCxFQUFhO0FBQ1hoRyxRQUFBQSxJQUFJLENBQUM2QyxhQUFMLENBQW1CdUQsVUFBbkIsQ0FBOEJkLFFBQTlCO0FBQ0Q7QUFDRixLQVpELENBWUUsT0FBT2UsR0FBUCxFQUFZO0FBQ1pyRyxNQUFBQSxJQUFJLENBQUM2QyxhQUFMLENBQW1CeUQsVUFBbkIsQ0FBOEJELEdBQUcsQ0FBQ0osT0FBbEM7QUFDRDtBQUNGOztBQWxPYyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsIGltcG9ydC9leHRlbnNpb25zXG5pbXBvcnQgeyBDb21wb3NpdGVEaXNwb3NhYmxlIH0gZnJvbSAnYXRvbSdcbmltcG9ydCB7IGhhc1ZhbGlkU2NvcGUgfSBmcm9tICcuL3ZhbGlkYXRlL2VkaXRvcidcbmltcG9ydCAqIGFzIGhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHsgbWlncmF0ZUNvbmZpZ09wdGlvbnMgfSBmcm9tICcuL21pZ3JhdGUtY29uZmlnLW9wdGlvbnMnXG5cbi8vIEludGVybmFsIHZhcmlhYmxlc1xuY29uc3QgaWRsZUNhbGxiYWNrcyA9IG5ldyBTZXQoKVxuXG5jb25zdCBtYWtlSWRsZUNhbGxiYWNrID0gKHdvcmspID0+IHtcbiAgbGV0IGNhbGxiYWNrSWRcbiAgY29uc3QgY2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgaWRsZUNhbGxiYWNrcy5kZWxldGUoY2FsbGJhY2tJZClcbiAgICB3b3JrKClcbiAgfVxuICBjYWxsYmFja0lkID0gd2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2soY2FsbEJhY2spXG4gIGlkbGVDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWQpXG59XG5cbmNvbnN0IHNjaGVkdWxlSWRsZVRhc2tzID0gKCkgPT4ge1xuICBjb25zdCBsaW50ZXJFc2xpbnRJbnN0YWxsUGVlclBhY2thZ2VzID0gKCkgPT4ge1xuICAgIHJlcXVpcmUoJ2F0b20tcGFja2FnZS1kZXBzJykuaW5zdGFsbCgnbGludGVyLWVzbGludCcpXG4gIH1cbiAgY29uc3QgbGludGVyRXNsaW50U3RhcnRXb3JrZXIgPSAoKSA9PiB7XG4gICAgaGVscGVycy5zdGFydFdvcmtlcigpXG4gIH1cblxuICBpZiAoIWF0b20uaW5TcGVjTW9kZSgpKSB7XG4gICAgbWFrZUlkbGVDYWxsYmFjayhsaW50ZXJFc2xpbnRJbnN0YWxsUGVlclBhY2thZ2VzKVxuICAgIG1ha2VJZGxlQ2FsbGJhY2sobGludGVyRXNsaW50U3RhcnRXb3JrZXIpXG4gIH1cbn1cblxuLy8gQ29uZmlndXJhdGlvblxuY29uc3Qgc2NvcGVzID0gW11cbmxldCBzaG93UnVsZVxubGV0IGxpbnRIdG1sRmlsZXNcbmxldCBpZ25vcmVkUnVsZXNXaGVuTW9kaWZpZWRcbmxldCBpZ25vcmVkUnVsZXNXaGVuRml4aW5nXG5sZXQgaWdub3JlRml4YWJsZVJ1bGVzV2hpbGVUeXBpbmdcblxuLy8gSW50ZXJuYWwgZnVuY3Rpb25zXG4vKipcbiAqIEdpdmVuIGFuIEFycmF5IG9yIGl0ZXJhYmxlIGNvbnRhaW5pbmcgYSBsaXN0IG9mIFJ1bGUgSURzLCByZXR1cm4gYW4gT2JqZWN0XG4gKiB0byBiZSBzZW50IHRvIEVTTGludCdzIGNvbmZpZ3VyYXRpb24gdGhhdCBkaXNhYmxlcyB0aG9zZSBydWxlcy5cbiAqIEBwYXJhbSAge1tpdGVyYWJsZV19IHJ1bGVJZHMgSXRlcmFibGUgY29udGFpbmluZyBydWxlSWRzIHRvIGlnbm9yZVxuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgICBPYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGZvciBlYWNoIHJ1bGUgdG8gaWdub3JlXG4gKi9cbmNvbnN0IGlkc1RvSWdub3JlZFJ1bGVzID0gcnVsZUlkcyA9PiAoXG4gIEFycmF5LmZyb20ocnVsZUlkcykucmVkdWNlKFxuICAgIC8vIDAgaXMgdGhlIHNldmVyaXR5IHRvIHR1cm4gb2ZmIGEgcnVsZVxuICAgIChpZHMsIGlkKSA9PiBPYmplY3QuYXNzaWduKGlkcywgeyBbaWRdOiAwIH0pLFxuICAgIHt9XG4gICkpXG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFjdGl2YXRlKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcblxuICAgIG1pZ3JhdGVDb25maWdPcHRpb25zKClcblxuICAgIGNvbnN0IGVtYmVkZGVkU2NvcGUgPSAnc291cmNlLmpzLmVtYmVkZGVkLmh0bWwnXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLmNvbmZpZy5vYnNlcnZlKFxuICAgICAgJ2xpbnRlci1lc2xpbnQubGludEh0bWxGaWxlcycsXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgbGludEh0bWxGaWxlcyA9IHZhbHVlXG4gICAgICAgIGlmIChsaW50SHRtbEZpbGVzKSB7XG4gICAgICAgICAgc2NvcGVzLnB1c2goZW1iZWRkZWRTY29wZSlcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZXMuaW5kZXhPZihlbWJlZGRlZFNjb3BlKSAhPT0gLTEpIHtcbiAgICAgICAgICBzY29wZXMuc3BsaWNlKHNjb3Blcy5pbmRleE9mKGVtYmVkZGVkU2NvcGUpLCAxKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKSlcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoYXRvbS5jb25maWcub2JzZXJ2ZShcbiAgICAgICdsaW50ZXItZXNsaW50LnNjb3BlcycsXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBvbGQgc2NvcGVzXG4gICAgICAgIHNjb3Blcy5zcGxpY2UoMCwgc2NvcGVzLmxlbmd0aClcbiAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHNjb3Blc1xuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShzY29wZXMsIHZhbHVlKVxuICAgICAgICAvLyBFbnN1cmUgSFRNTCBsaW50aW5nIHN0aWxsIHdvcmtzIGlmIHRoZSBzZXR0aW5nIGlzIHVwZGF0ZWRcbiAgICAgICAgaWYgKGxpbnRIdG1sRmlsZXMgJiYgIXNjb3Blcy5pbmNsdWRlcyhlbWJlZGRlZFNjb3BlKSkge1xuICAgICAgICAgIHNjb3Blcy5wdXNoKGVtYmVkZGVkU2NvcGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLndvcmtzcGFjZS5vYnNlcnZlVGV4dEVkaXRvcnMoKGVkaXRvcikgPT4ge1xuICAgICAgZWRpdG9yLm9uRGlkU2F2ZShhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChoYXNWYWxpZFNjb3BlKGVkaXRvciwgc2NvcGVzKVxuICAgICAgICAgICYmIGF0b20uY29uZmlnLmdldCgnbGludGVyLWVzbGludC5hdXRvZml4LmZpeE9uU2F2ZScpXG4gICAgICAgICkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuZml4Sm9iKHRydWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29tbWFuZHMuYWRkKCdhdG9tLXRleHQtZWRpdG9yJywge1xuICAgICAgJ2xpbnRlci1lc2xpbnQ6ZGVidWcnOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlYnVnU3RyaW5nID0gYXdhaXQgaGVscGVycy5nZW5lcmF0ZURlYnVnU3RyaW5nKClcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uT3B0aW9ucyA9IHsgZGV0YWlsOiBkZWJ1Z1N0cmluZywgZGlzbWlzc2FibGU6IHRydWUgfVxuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkSW5mbygnbGludGVyLWVzbGludCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24nLCBub3RpZmljYXRpb25PcHRpb25zKVxuICAgICAgfVxuICAgIH0pKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLmNvbW1hbmRzLmFkZCgnYXRvbS10ZXh0LWVkaXRvcicsIHtcbiAgICAgICdsaW50ZXItZXNsaW50OmZpeC1maWxlJzogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmZpeEpvYigpXG4gICAgICB9XG4gICAgfSkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29uZmlnLm9ic2VydmUoXG4gICAgICAnbGludGVyLWVzbGludC5hZHZhbmNlZC5zaG93UnVsZUlkSW5NZXNzYWdlJyxcbiAgICAgICh2YWx1ZSkgPT4geyBzaG93UnVsZSA9IHZhbHVlIH1cbiAgICApKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLmNvbmZpZy5vYnNlcnZlKFxuICAgICAgJ2xpbnRlci1lc2xpbnQuZGlzYWJsaW5nLnJ1bGVzVG9TaWxlbmNlV2hpbGVUeXBpbmcnLFxuICAgICAgKGlkcykgPT4geyBpZ25vcmVkUnVsZXNXaGVuTW9kaWZpZWQgPSBpZHMgfVxuICAgICkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29uZmlnLm9ic2VydmUoXG4gICAgICAnbGludGVyLWVzbGludC5hdXRvZml4LnJ1bGVzVG9EaXNhYmxlV2hpbGVGaXhpbmcnLFxuICAgICAgKGlkcykgPT4geyBpZ25vcmVkUnVsZXNXaGVuRml4aW5nID0gaWRzVG9JZ25vcmVkUnVsZXMoaWRzKSB9XG4gICAgKSlcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoYXRvbS5jb25maWcub2JzZXJ2ZShcbiAgICAgICdsaW50ZXItZXNsaW50LmF1dG9maXguaWdub3JlRml4YWJsZVJ1bGVzV2hpbGVUeXBpbmcnLFxuICAgICAgKHZhbHVlKSA9PiB7IGlnbm9yZUZpeGFibGVSdWxlc1doaWxlVHlwaW5nID0gdmFsdWUgfVxuICAgICkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29udGV4dE1lbnUuYWRkKHtcbiAgICAgICdhdG9tLXRleHQtZWRpdG9yOm5vdCgubWluaSksIC5vdmVybGF5ZXInOiBbe1xuICAgICAgICBsYWJlbDogJ0VTTGludCBGaXgnLFxuICAgICAgICBjb21tYW5kOiAnbGludGVyLWVzbGludDpmaXgtZmlsZScsXG4gICAgICAgIHNob3VsZERpc3BsYXk6IChldnQpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVFZGl0b3IgPSBhdG9tLndvcmtzcGFjZS5nZXRBY3RpdmVUZXh0RWRpdG9yKClcbiAgICAgICAgICBpZiAoIWFjdGl2ZUVkaXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEJsYWNrIG1hZ2ljIVxuICAgICAgICAgIC8vIENvbXBhcmVzIHRoZSBwcml2YXRlIGNvbXBvbmVudCBwcm9wZXJ0eSBvZiB0aGUgYWN0aXZlIFRleHRFZGl0b3JcbiAgICAgICAgICAvLyAgIGFnYWluc3QgdGhlIGNvbXBvbmVudHMgb2YgdGhlIGVsZW1lbnRzXG4gICAgICAgICAgY29uc3QgZXZ0SXNBY3RpdmVFZGl0b3IgPSBldnQucGF0aC5zb21lKGVsZW0gPT4gKFxuICAgICAgICAgICAgLy8gQXRvbSB2MS4xOS4wK1xuICAgICAgICAgICAgZWxlbS5jb21wb25lbnQgJiYgYWN0aXZlRWRpdG9yLmNvbXBvbmVudFxuICAgICAgICAgICAgICAmJiBlbGVtLmNvbXBvbmVudCA9PT0gYWN0aXZlRWRpdG9yLmNvbXBvbmVudCkpXG4gICAgICAgICAgLy8gT25seSBzaG93IGlmIGl0IHdhcyB0aGUgYWN0aXZlIGVkaXRvciBhbmQgaXQgaXMgYSB2YWxpZCBzY29wZVxuICAgICAgICAgIHJldHVybiBldnRJc0FjdGl2ZUVkaXRvciAmJiBoYXNWYWxpZFNjb3BlKGFjdGl2ZUVkaXRvciwgc2NvcGVzKVxuICAgICAgICB9XG4gICAgICB9XVxuICAgIH0pKVxuXG4gICAgc2NoZWR1bGVJZGxlVGFza3MoKVxuICB9LFxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgaWRsZUNhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrSUQgPT4gd2luZG93LmNhbmNlbElkbGVDYWxsYmFjayhjYWxsYmFja0lEKSlcbiAgICBpZGxlQ2FsbGJhY2tzLmNsZWFyKClcbiAgICBpZiAoaGVscGVycykge1xuICAgICAgLy8gSWYgdGhlIGhlbHBlcnMgbW9kdWxlIGhhc24ndCBiZWVuIGxvYWRlZCB0aGVuIHRoZXJlIHdhcyBubyBjaGFuY2UgYVxuICAgICAgLy8gd29ya2VyIHdhcyBzdGFydGVkIGFueXdheS5cbiAgICAgIGhlbHBlcnMua2lsbFdvcmtlcigpXG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5kaXNwb3NlKClcbiAgfSxcblxuICBwcm92aWRlTGludGVyKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRVNMaW50JyxcbiAgICAgIGdyYW1tYXJTY29wZXM6IHNjb3BlcyxcbiAgICAgIHNjb3BlOiAnZmlsZScsXG4gICAgICBsaW50c09uQ2hhbmdlOiB0cnVlLFxuICAgICAgbGludDogYXN5bmMgKHRleHRFZGl0b3IpID0+IHtcbiAgICAgICAgaWYgKCFhdG9tLndvcmtzcGFjZS5pc1RleHRFZGl0b3IodGV4dEVkaXRvcikpIHtcbiAgICAgICAgICAvLyBJZiB3ZSBzb21laG93IGdldCBmZWQgYW4gaW52YWxpZCBUZXh0RWRpdG9yIGp1c3QgaW1tZWRpYXRlbHkgcmV0dXJuXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICAgICAgaWYgKCFmaWxlUGF0aCkge1xuICAgICAgICAgIC8vIFRoZSBlZGl0b3IgY3VycmVudGx5IGhhcyBubyBwYXRoLCB3ZSBjYW4ndCByZXBvcnQgbWVzc2FnZXMgYmFjayB0b1xuICAgICAgICAgIC8vIExpbnRlciBzbyBqdXN0IHJldHVybiBudWxsXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKGZpbGVQYXRoLmluY2x1ZGVzKCc6Ly8nKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBwYXRoIGlzIGEgVVJMIChOdWNsaWRlIHJlbW90ZSBmaWxlKSByZXR1cm4gYSBtZXNzYWdlXG4gICAgICAgICAgLy8gdGVsbGluZyB0aGUgdXNlciB3ZSBhcmUgdW5hYmxlIHRvIHdvcmsgb24gcmVtb3RlIGZpbGVzLlxuICAgICAgICAgIHJldHVybiBoZWxwZXJzLmdlbmVyYXRlVXNlck1lc3NhZ2UodGV4dEVkaXRvciwge1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIGV4Y2VycHQ6ICdSZW1vdGUgZmlsZSBvcGVuLCBsaW50ZXItZXNsaW50IGlzIGRpc2FibGVkIGZvciB0aGlzIGZpbGUuJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGV4dCA9IHRleHRFZGl0b3IuZ2V0VGV4dCgpXG5cbiAgICAgICAgbGV0IHJ1bGVzID0ge31cbiAgICAgICAgaWYgKHRleHRFZGl0b3IuaXNNb2RpZmllZCgpKSB7XG4gICAgICAgICAgaWYgKGlnbm9yZUZpeGFibGVSdWxlc1doaWxlVHlwaW5nKSB7XG4gICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGZpeGFibGUgcnVsZXMgd2lsbCBvbmx5IGhhdmUgdmFsdWVzIGFmdGVyIHRoZSBmaXJzdCBsaW50IGpvYlxuICAgICAgICAgICAgY29uc3QgaWdub3JlZFJ1bGVzID0gbmV3IFNldChoZWxwZXJzLnJ1bGVzLmdldEZpeGFibGVSdWxlcygpKVxuICAgICAgICAgICAgaWdub3JlZFJ1bGVzV2hlbk1vZGlmaWVkLmZvckVhY2gocnVsZUlkID0+IGlnbm9yZWRSdWxlcy5hZGQocnVsZUlkKSlcbiAgICAgICAgICAgIHJ1bGVzID0gaWRzVG9JZ25vcmVkUnVsZXMoaWdub3JlZFJ1bGVzKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBydWxlcyA9IGlkc1RvSWdub3JlZFJ1bGVzKGlnbm9yZWRSdWxlc1doZW5Nb2RpZmllZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaGVscGVycy5zZW5kSm9iKHtcbiAgICAgICAgICAgIHR5cGU6ICdsaW50JyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiB0ZXh0LFxuICAgICAgICAgICAgY29uZmlnOiBhdG9tLmNvbmZpZy5nZXQoJ2xpbnRlci1lc2xpbnQnKSxcbiAgICAgICAgICAgIHJ1bGVzLFxuICAgICAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgICAgICBwcm9qZWN0UGF0aDogYXRvbS5wcm9qZWN0LnJlbGF0aXZpemVQYXRoKGZpbGVQYXRoKVswXSB8fCAnJ1xuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKHRleHRFZGl0b3IuZ2V0VGV4dCgpICE9PSB0ZXh0KSB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgVGhlIGVkaXRvciB0ZXh0IGhhcyBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsaW50IHdhcyB0cmlnZ2VyZWQsXG4gICAgICAgICAgICBhcyB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgdGhlIHJlc3VsdHMgd2lsbCBtYXAgcHJvcGVybHkgYmFjayB0b1xuICAgICAgICAgICAgdGhlIG5ldyBjb250ZW50cywgc2ltcGx5IHJldHVybiBgbnVsbGAgdG8gdGVsbCB0aGVcbiAgICAgICAgICAgIGBwcm92aWRlTGludGVyYCBjb25zdW1lciBub3QgdG8gdXBkYXRlIHRoZSBzYXZlZCByZXN1bHRzLlxuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBoZWxwZXJzLnByb2Nlc3NKb2JSZXNwb25zZShyZXNwb25zZSwgdGV4dEVkaXRvciwgc2hvd1J1bGUpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGhlbHBlcnMuaGFuZGxlRXJyb3IodGV4dEVkaXRvciwgZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgYXN5bmMgZml4Sm9iKGlzU2F2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgdGV4dEVkaXRvciA9IGF0b20ud29ya3NwYWNlLmdldEFjdGl2ZVRleHRFZGl0b3IoKVxuXG4gICAgaWYgKCF0ZXh0RWRpdG9yIHx8ICFhdG9tLndvcmtzcGFjZS5pc1RleHRFZGl0b3IodGV4dEVkaXRvcikpIHtcbiAgICAgIC8vIFNpbGVudGx5IHJldHVybiBpZiB0aGUgVGV4dEVkaXRvciBpcyBpbnZhbGlkXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGV4dEVkaXRvci5pc01vZGlmaWVkKCkpIHtcbiAgICAgIC8vIEFib3J0IGZvciBpbnZhbGlkIG9yIHVuc2F2ZWQgdGV4dCBlZGl0b3JzXG4gICAgICBjb25zdCBtZXNzYWdlID0gJ0xpbnRlci1FU0xpbnQ6IFBsZWFzZSBzYXZlIGJlZm9yZSBmaXhpbmcnXG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IobWVzc2FnZSlcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRleHRFZGl0b3IuZ2V0UGF0aCgpXG4gICAgY29uc3QgcHJvamVjdFBhdGggPSBhdG9tLnByb2plY3QucmVsYXRpdml6ZVBhdGgoZmlsZVBhdGgpWzBdXG5cbiAgICAvLyBHZXQgdGhlIHRleHQgZnJvbSB0aGUgZWRpdG9yLCBzbyB3ZSBjYW4gdXNlIGV4ZWN1dGVPblRleHRcbiAgICBjb25zdCB0ZXh0ID0gdGV4dEVkaXRvci5nZXRUZXh0KClcbiAgICAvLyBEbyBub3QgdHJ5IHRvIG1ha2UgZml4ZXMgb24gYW4gZW1wdHkgZmlsZVxuICAgIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHJ1bGVzID0ge31cbiAgICBpZiAoT2JqZWN0LmtleXMoaWdub3JlZFJ1bGVzV2hlbkZpeGluZykubGVuZ3RoID4gMCkge1xuICAgICAgcnVsZXMgPSBpZ25vcmVkUnVsZXNXaGVuRml4aW5nXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaGVscGVycy5zZW5kSm9iKHtcbiAgICAgICAgdHlwZTogJ2ZpeCcsXG4gICAgICAgIGNvbmZpZzogYXRvbS5jb25maWcuZ2V0KCdsaW50ZXItZXNsaW50JyksXG4gICAgICAgIGNvbnRlbnRzOiB0ZXh0LFxuICAgICAgICBydWxlcyxcbiAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgIHByb2plY3RQYXRoXG4gICAgICB9KVxuICAgICAgaWYgKCFpc1NhdmUpIHtcbiAgICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZFN1Y2Nlc3MocmVzcG9uc2UpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkV2FybmluZyhlcnIubWVzc2FnZSlcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sIm5hbWVzIjpbImlkbGVDYWxsYmFja3MiLCJTZXQiLCJtYWtlSWRsZUNhbGxiYWNrIiwid29yayIsImNhbGxiYWNrSWQiLCJjYWxsQmFjayIsImRlbGV0ZSIsIndpbmRvdyIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJhZGQiLCJzY2hlZHVsZUlkbGVUYXNrcyIsImxpbnRlckVzbGludEluc3RhbGxQZWVyUGFja2FnZXMiLCJyZXF1aXJlIiwiaW5zdGFsbCIsImxpbnRlckVzbGludFN0YXJ0V29ya2VyIiwiaGVscGVycyIsInN0YXJ0V29ya2VyIiwiYXRvbSIsImluU3BlY01vZGUiLCJzY29wZXMiLCJzaG93UnVsZSIsImxpbnRIdG1sRmlsZXMiLCJpZ25vcmVkUnVsZXNXaGVuTW9kaWZpZWQiLCJpZ25vcmVkUnVsZXNXaGVuRml4aW5nIiwiaWdub3JlRml4YWJsZVJ1bGVzV2hpbGVUeXBpbmciLCJpZHNUb0lnbm9yZWRSdWxlcyIsInJ1bGVJZHMiLCJBcnJheSIsImZyb20iLCJyZWR1Y2UiLCJpZHMiLCJpZCIsIk9iamVjdCIsImFzc2lnbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJhY3RpdmF0ZSIsInN1YnNjcmlwdGlvbnMiLCJDb21wb3NpdGVEaXNwb3NhYmxlIiwiZW1iZWRkZWRTY29wZSIsImNvbmZpZyIsIm9ic2VydmUiLCJ2YWx1ZSIsInB1c2giLCJpbmRleE9mIiwic3BsaWNlIiwibGVuZ3RoIiwicHJvdG90eXBlIiwiYXBwbHkiLCJpbmNsdWRlcyIsIndvcmtzcGFjZSIsIm9ic2VydmVUZXh0RWRpdG9ycyIsImVkaXRvciIsIm9uRGlkU2F2ZSIsImdldCIsImZpeEpvYiIsImNvbW1hbmRzIiwiZGVidWdTdHJpbmciLCJnZW5lcmF0ZURlYnVnU3RyaW5nIiwibm90aWZpY2F0aW9uT3B0aW9ucyIsImRldGFpbCIsImRpc21pc3NhYmxlIiwibm90aWZpY2F0aW9ucyIsImFkZEluZm8iLCJjb250ZXh0TWVudSIsImxhYmVsIiwiY29tbWFuZCIsInNob3VsZERpc3BsYXkiLCJldnQiLCJhY3RpdmVFZGl0b3IiLCJnZXRBY3RpdmVUZXh0RWRpdG9yIiwiZXZ0SXNBY3RpdmVFZGl0b3IiLCJwYXRoIiwic29tZSIsImVsZW0iLCJjb21wb25lbnQiLCJkZWFjdGl2YXRlIiwiZm9yRWFjaCIsImNhbGxiYWNrSUQiLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJjbGVhciIsImtpbGxXb3JrZXIiLCJkaXNwb3NlIiwicHJvdmlkZUxpbnRlciIsIm5hbWUiLCJncmFtbWFyU2NvcGVzIiwic2NvcGUiLCJsaW50c09uQ2hhbmdlIiwibGludCIsInRleHRFZGl0b3IiLCJpc1RleHRFZGl0b3IiLCJmaWxlUGF0aCIsImdldFBhdGgiLCJnZW5lcmF0ZVVzZXJNZXNzYWdlIiwic2V2ZXJpdHkiLCJleGNlcnB0IiwidGV4dCIsImdldFRleHQiLCJydWxlcyIsImlzTW9kaWZpZWQiLCJpZ25vcmVkUnVsZXMiLCJnZXRGaXhhYmxlUnVsZXMiLCJydWxlSWQiLCJyZXNwb25zZSIsInNlbmRKb2IiLCJ0eXBlIiwiY29udGVudHMiLCJwcm9qZWN0UGF0aCIsInByb2plY3QiLCJyZWxhdGl2aXplUGF0aCIsInByb2Nlc3NKb2JSZXNwb25zZSIsImVycm9yIiwiaGFuZGxlRXJyb3IiLCJpc1NhdmUiLCJtZXNzYWdlIiwiYWRkRXJyb3IiLCJrZXlzIiwiYWRkU3VjY2VzcyIsImVyciIsImFkZFdhcm5pbmciXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUpBO0FBTUE7QUFDQSxNQUFNQSxhQUFhLEdBQUcsSUFBSUMsR0FBSixFQUF0Qjs7QUFFQSxNQUFNQyxnQkFBZ0IsR0FBSUMsSUFBRCxJQUFVO0FBQ2pDLE1BQUlDLFVBQUo7O0FBQ0EsUUFBTUMsUUFBUSxHQUFHLE1BQU07QUFDckJMLElBQUFBLGFBQWEsQ0FBQ00sTUFBZCxDQUFxQkYsVUFBckI7QUFDQUQsSUFBQUEsSUFBSTtBQUNMLEdBSEQ7O0FBSUFDLEVBQUFBLFVB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QUFqRCxFQUFvRDtBQUNsRG9ELE1BQUFBLEtBQUssR0FBRzNFLHNCQUFSO0FBQ0Q7O0FBRUQsUUFBSTtBQUNGLFlBQU1nRixRQUFRLEdBQUcsTUFBTXhGLE9BQU8sQ0FBQ3lGLE9BQVIsQ0FBZ0I7QUFDckNDLFFBQUFBLElBQUksRUFBRSxLQUQrQjtBQUVyQ2pFLFFBQUFBLE1BQU0sRUFBRXZCLElBQUksQ0FBQ3VCLE1BQUwsQ0FBWWMsR0FBWixDQUFnQixlQUFoQixDQUY2QjtBQUdyQ29ELFFBQUFBLFFBQVEsRUFBRVYsSUFIMkI7QUFJckNFLFFBQUFBLEtBSnFDO0FBS3JDUCxRQUFBQSxRQUxxQztBQU1yQ2dCLFFBQUFBO0FBTnFDLE9BQWhCLENBQXZCOztBQVFBLFVBQUksQ0FBQ00sTUFBTCxFQUFhO0FBQ1hoRyxRQUFBQSxJQUFJLENBQUM2QyxhQUFMLENBQW1CdUQsVUFBbkIsQ0FBOEJkLFFBQTlCO0FBQ0Q7QUFDRixLQVpELENBWUUsT0FBT2UsR0FBUCxFQUFZO0FBQ1pyRyxNQUFBQSxJQUFJLENBQUM2QyxhQUFMLENBQW1CeUQsVUFBbkIsQ0FBOEJELEdBQUcsQ0FBQ0osT0FBbEM7QUFDRDtBQUNGOztBQXRPYyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsIGltcG9ydC9leHRlbnNpb25zXG5pbXBvcnQgeyBDb21wb3NpdGVEaXNwb3NhYmxlIH0gZnJvbSAnYXRvbSdcbmltcG9ydCB7IGhhc1ZhbGlkU2NvcGUgfSBmcm9tICcuL3ZhbGlkYXRlL2VkaXRvcidcbmltcG9ydCAqIGFzIGhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0IHsgbWlncmF0ZUNvbmZpZ09wdGlvbnMgfSBmcm9tICcuL21pZ3JhdGUtY29uZmlnLW9wdGlvbnMnXG5cbi8vIEludGVybmFsIHZhcmlhYmxlc1xuY29uc3QgaWRsZUNhbGxiYWNrcyA9IG5ldyBTZXQoKVxuXG5jb25zdCBtYWtlSWRsZUNhbGxiYWNrID0gKHdvcmspID0+IHtcbiAgbGV0IGNhbGxiYWNrSWRcbiAgY29uc3QgY2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgaWRsZUNhbGxiYWNrcy5kZWxldGUoY2FsbGJhY2tJZClcbiAgICB3b3JrKClcbiAgfVxuICBjYWxsYmFja0lkID0gd2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2soY2FsbEJhY2spXG4gIGlkbGVDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWQpXG59XG5cbmNvbnN0IHNjaGVkdWxlSWRsZVRhc2tzID0gKCkgPT4ge1xuICBjb25zdCBsaW50ZXJFc2xpbnRJbnN0YWxsUGVlclBhY2thZ2VzID0gKCkgPT4ge1xuICAgIHJlcXVpcmUoJ2F0b20tcGFja2FnZS1kZXBzJykuaW5zdGFsbCgnbGludGVyLWVzbGludCcpXG4gIH1cbiAgY29uc3QgbGludGVyRXNsaW50U3RhcnRXb3JrZXIgPSAoKSA9PiB7XG4gICAgaGVscGVycy5zdGFydFdvcmtlcigpXG4gIH1cblxuICBpZiAoIWF0b20uaW5TcGVjTW9kZSgpKSB7XG4gICAgbWFrZUlkbGVDYWxsYmFjayhsaW50ZXJFc2xpbnRJbnN0YWxsUGVlclBhY2thZ2VzKVxuICAgIG1ha2VJZGxlQ2FsbGJhY2sobGludGVyRXNsaW50U3RhcnRXb3JrZXIpXG4gIH1cbn1cblxuLy8gQ29uZmlndXJhdGlvblxuY29uc3Qgc2NvcGVzID0gW11cbmxldCBzaG93UnVsZVxubGV0IGxpbnRIdG1sRmlsZXNcbmxldCBpZ25vcmVkUnVsZXNXaGVuTW9kaWZpZWRcbmxldCBpZ25vcmVkUnVsZXNXaGVuRml4aW5nXG5sZXQgaWdub3JlRml4YWJsZVJ1bGVzV2hpbGVUeXBpbmdcblxuLy8gSW50ZXJuYWwgZnVuY3Rpb25zXG4vKipcbiAqIEdpdmVuIGFuIEFycmF5IG9yIGl0ZXJhYmxlIGNvbnRhaW5pbmcgYSBsaXN0IG9mIFJ1bGUgSURzLCByZXR1cm4gYW4gT2JqZWN0XG4gKiB0byBiZSBzZW50IHRvIEVTTGludCdzIGNvbmZpZ3VyYXRpb24gdGhhdCBkaXNhYmxlcyB0aG9zZSBydWxlcy5cbiAqIEBwYXJhbSAge1tpdGVyYWJsZV19IHJ1bGVJZHMgSXRlcmFibGUgY29udGFpbmluZyBydWxlSWRzIHRvIGlnbm9yZVxuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgICBPYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGZvciBlYWNoIHJ1bGUgdG8gaWdub3JlXG4gKi9cbmNvbnN0IGlkc1RvSWdub3JlZFJ1bGVzID0gcnVsZUlkcyA9PiAoXG4gIEFycmF5LmZyb20ocnVsZUlkcykucmVkdWNlKFxuICAgIC8vIDAgaXMgdGhlIHNldmVyaXR5IHRvIHR1cm4gb2ZmIGEgcnVsZVxuICAgIChpZHMsIGlkKSA9PiBPYmplY3QuYXNzaWduKGlkcywgeyBbaWRdOiAwIH0pLFxuICAgIHt9XG4gICkpXG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFjdGl2YXRlKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IG5ldyBDb21wb3NpdGVEaXNwb3NhYmxlKClcblxuICAgIG1pZ3JhdGVDb25maWdPcHRpb25zKClcblxuICAgIGNvbnN0IGVtYmVkZGVkU2NvcGUgPSAnc291cmNlLmpzLmVtYmVkZGVkLmh0bWwnXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLmNvbmZpZy5vYnNlcnZlKFxuICAgICAgJ2xpbnRlci1lc2xpbnQubGludEh0bWxGaWxlcycsXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgbGludEh0bWxGaWxlcyA9IHZhbHVlXG4gICAgICAgIGlmIChsaW50SHRtbEZpbGVzKSB7XG4gICAgICAgICAgc2NvcGVzLnB1c2goZW1iZWRkZWRTY29wZSlcbiAgICAgICAgfSBlbHNlIGlmIChzY29wZXMuaW5kZXhPZihlbWJlZGRlZFNjb3BlKSAhPT0gLTEpIHtcbiAgICAgICAgICBzY29wZXMuc3BsaWNlKHNjb3Blcy5pbmRleE9mKGVtYmVkZGVkU2NvcGUpLCAxKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKSlcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoYXRvbS5jb25maWcub2JzZXJ2ZShcbiAgICAgICdsaW50ZXItZXNsaW50LnNjb3BlcycsXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBvbGQgc2NvcGVzXG4gICAgICAgIHNjb3Blcy5zcGxpY2UoMCwgc2NvcGVzLmxlbmd0aClcbiAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHNjb3Blc1xuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShzY29wZXMsIHZhbHVlKVxuICAgICAgICAvLyBFbnN1cmUgSFRNTCBsaW50aW5nIHN0aWxsIHdvcmtzIGlmIHRoZSBzZXR0aW5nIGlzIHVwZGF0ZWRcbiAgICAgICAgaWYgKGxpbnRIdG1sRmlsZXMgJiYgIXNjb3Blcy5pbmNsdWRlcyhlbWJlZGRlZFNjb3BlKSkge1xuICAgICAgICAgIHNjb3Blcy5wdXNoKGVtYmVkZGVkU2NvcGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLndvcmtzcGFjZS5vYnNlcnZlVGV4dEVkaXRvcnMoKGVkaXRvcikgPT4ge1xuICAgICAgZWRpdG9yLm9uRGlkU2F2ZShhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChoYXNWYWxpZFNjb3BlKGVkaXRvciwgc2NvcGVzKVxuICAgICAgICAgICYmIGF0b20uY29uZmlnLmdldCgnbGludGVyLWVzbGludC5hdXRvZml4LmZpeE9uU2F2ZScpXG4gICAgICAgICkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuZml4Sm9iKHRydWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29tbWFuZHMuYWRkKCdhdG9tLXRleHQtZWRpdG9yJywge1xuICAgICAgJ2xpbnRlci1lc2xpbnQ6ZGVidWcnOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlYnVnU3RyaW5nID0gYXdhaXQgaGVscGVycy5nZW5lcmF0ZURlYnVnU3RyaW5nKClcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uT3B0aW9ucyA9IHsgZGV0YWlsOiBkZWJ1Z1N0cmluZywgZGlzbWlzc2FibGU6IHRydWUgfVxuICAgICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkSW5mbygnbGludGVyLWVzbGludCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24nLCBub3RpZmljYXRpb25PcHRpb25zKVxuICAgICAgfVxuICAgIH0pKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLmNvbW1hbmRzLmFkZCgnYXRvbS10ZXh0LWVkaXRvcicsIHtcbiAgICAgICdsaW50ZXItZXNsaW50OmZpeC1maWxlJzogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmZpeEpvYigpXG4gICAgICB9XG4gICAgfSkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29uZmlnLm9ic2VydmUoXG4gICAgICAnbGludGVyLWVzbGludC5hZHZhbmNlZC5zaG93UnVsZUlkSW5NZXNzYWdlJyxcbiAgICAgICh2YWx1ZSkgPT4geyBzaG93UnVsZSA9IHZhbHVlIH1cbiAgICApKVxuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChhdG9tLmNvbmZpZy5vYnNlcnZlKFxuICAgICAgJ2xpbnRlci1lc2xpbnQuZGlzYWJsaW5nLnJ1bGVzVG9TaWxlbmNlV2hpbGVUeXBpbmcnLFxuICAgICAgKGlkcykgPT4geyBpZ25vcmVkUnVsZXNXaGVuTW9kaWZpZWQgPSBpZHMgfVxuICAgICkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29uZmlnLm9ic2VydmUoXG4gICAgICAnbGludGVyLWVzbGludC5hdXRvZml4LnJ1bGVzVG9EaXNhYmxlV2hpbGVGaXhpbmcnLFxuICAgICAgKGlkcykgPT4geyBpZ25vcmVkUnVsZXNXaGVuRml4aW5nID0gaWRzVG9JZ25vcmVkUnVsZXMoaWRzKSB9XG4gICAgKSlcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoYXRvbS5jb25maWcub2JzZXJ2ZShcbiAgICAgICdsaW50ZXItZXNsaW50LmF1dG9maXguaWdub3JlRml4YWJsZVJ1bGVzV2hpbGVUeXBpbmcnLFxuICAgICAgKHZhbHVlKSA9PiB7IGlnbm9yZUZpeGFibGVSdWxlc1doaWxlVHlwaW5nID0gdmFsdWUgfVxuICAgICkpXG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGF0b20uY29udGV4dE1lbnUuYWRkKHtcbiAgICAgICdhdG9tLXRleHQtZWRpdG9yOm5vdCgubWluaSksIC5vdmVybGF5ZXInOiBbe1xuICAgICAgICBsYWJlbDogJ0VTTGludCBGaXgnLFxuICAgICAgICBjb21tYW5kOiAnbGludGVyLWVzbGludDpmaXgtZmlsZScsXG4gICAgICAgIHNob3VsZERpc3BsYXk6IChldnQpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVFZGl0b3IgPSBhdG9tLndvcmtzcGFjZS5nZXRBY3RpdmVUZXh0RWRpdG9yKClcbiAgICAgICAgICBpZiAoIWFjdGl2ZUVkaXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEJsYWNrIG1hZ2ljIVxuICAgICAgICAgIC8vIENvbXBhcmVzIHRoZSBwcml2YXRlIGNvbXBvbmVudCBwcm9wZXJ0eSBvZiB0aGUgYWN0aXZlIFRleHRFZGl0b3JcbiAgICAgICAgICAvLyAgIGFnYWluc3QgdGhlIGNvbXBvbmVudHMgb2YgdGhlIGVsZW1lbnRzXG4gICAgICAgICAgY29uc3QgZXZ0SXNBY3RpdmVFZGl0b3IgPSBldnQucGF0aC5zb21lKGVsZW0gPT4gKFxuICAgICAgICAgICAgLy8gQXRvbSB2MS4xOS4wK1xuICAgICAgICAgICAgZWxlbS5jb21wb25lbnQgJiYgYWN0aXZlRWRpdG9yLmNvbXBvbmVudFxuICAgICAgICAgICAgICAmJiBlbGVtLmNvbXBvbmVudCA9PT0gYWN0aXZlRWRpdG9yLmNvbXBvbmVudCkpXG4gICAgICAgICAgLy8gT25seSBzaG93IGlmIGl0IHdhcyB0aGUgYWN0aXZlIGVkaXRvciBhbmQgaXQgaXMgYSB2YWxpZCBzY29wZVxuICAgICAgICAgIHJldHVybiBldnRJc0FjdGl2ZUVkaXRvciAmJiBoYXNWYWxpZFNjb3BlKGFjdGl2ZUVkaXRvciwgc2NvcGVzKVxuICAgICAgICB9XG4gICAgICB9XVxuICAgIH0pKVxuXG4gICAgc2NoZWR1bGVJZGxlVGFza3MoKVxuICB9LFxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgaWRsZUNhbGxiYWNrcy5mb3JFYWNoKGNhbGxiYWNrSUQgPT4gd2luZG93LmNhbmNlbElkbGVDYWxsYmFjayhjYWxsYmFja0lEKSlcbiAgICBpZGxlQ2FsbGJhY2tzLmNsZWFyKClcbiAgICBpZiAoaGVscGVycykge1xuICAgICAgLy8gSWYgdGhlIGhlbHBlcnMgbW9kdWxlIGhhc24ndCBiZWVuIGxvYWRlZCB0aGVuIHRoZXJlIHdhcyBubyBjaGFuY2UgYVxuICAgICAgLy8gd29ya2VyIHdhcyBzdGFydGVkIGFueXdheS5cbiAgICAgIGhlbHBlcnMua2lsbFdvcmtlcigpXG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5kaXNwb3NlKClcbiAgfSxcblxuICBwcm92aWRlTGludGVyKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnRVNMaW50JyxcbiAgICAgIGdyYW1tYXJTY29wZXM6IHNjb3BlcyxcbiAgICAgIHNjb3BlOiAnZmlsZScsXG4gICAgICBsaW50c09uQ2hhbmdlOiB0cnVlLFxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0ge2ltcG9ydChcImF0b21cIikuVGV4dEVkaXRvcn0gdGV4dEVkaXRvclxuICAgICAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiYXRvbS9saW50ZXJcIikuTWVzc2FnZVtdPn1cbiAgICAgICAqL1xuICAgICAgbGludDogYXN5bmMgKHRleHRFZGl0b3IpID0+IHtcbiAgICAgICAgaWYgKCFhdG9tLndvcmtzcGFjZS5pc1RleHRFZGl0b3IodGV4dEVkaXRvcikpIHtcbiAgICAgICAgICAvLyBJZiB3ZSBzb21laG93IGdldCBmZWQgYW4gaW52YWxpZCBUZXh0RWRpdG9yIGp1c3QgaW1tZWRpYXRlbHkgcmV0dXJuXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGV4dEVkaXRvci5nZXRQYXRoKClcbiAgICAgICAgaWYgKCFmaWxlUGF0aCkge1xuICAgICAgICAgIC8vIFRoZSBlZGl0b3IgY3VycmVudGx5IGhhcyBubyBwYXRoLCB3ZSBjYW4ndCByZXBvcnQgbWVzc2FnZXMgYmFjayB0b1xuICAgICAgICAgIC8vIExpbnRlciBzbyBqdXN0IHJldHVybiBudWxsXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG5cbiAgICAgICAgaWYgKGZpbGVQYXRoLmluY2x1ZGVzKCc6Ly8nKSkge1xuICAgICAgICAgIC8vIElmIHRoZSBwYXRoIGlzIGEgVVJMIChOdWNsaWRlIHJlbW90ZSBmaWxlKSByZXR1cm4gYSBtZXNzYWdlXG4gICAgICAgICAgLy8gdGVsbGluZyB0aGUgdXNlciB3ZSBhcmUgdW5hYmxlIHRvIHdvcmsgb24gcmVtb3RlIGZpbGVzLlxuICAgICAgICAgIHJldHVybiBoZWxwZXJzLmdlbmVyYXRlVXNlck1lc3NhZ2UodGV4dEVkaXRvciwge1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIGV4Y2VycHQ6ICdSZW1vdGUgZmlsZSBvcGVuLCBsaW50ZXItZXNsaW50IGlzIGRpc2FibGVkIGZvciB0aGlzIGZpbGUuJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGV4dCA9IHRleHRFZGl0b3IuZ2V0VGV4dCgpXG5cbiAgICAgICAgbGV0IHJ1bGVzID0ge31cbiAgICAgICAgaWYgKHRleHRFZGl0b3IuaXNNb2RpZmllZCgpKSB7XG4gICAgICAgICAgaWYgKGlnbm9yZUZpeGFibGVSdWxlc1doaWxlVHlwaW5nKSB7XG4gICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIGZpeGFibGUgcnVsZXMgd2lsbCBvbmx5IGhhdmUgdmFsdWVzIGFmdGVyIHRoZSBmaXJzdCBsaW50IGpvYlxuICAgICAgICAgICAgY29uc3QgaWdub3JlZFJ1bGVzID0gbmV3IFNldChoZWxwZXJzLnJ1bGVzLmdldEZpeGFibGVSdWxlcygpKVxuICAgICAgICAgICAgaWdub3JlZFJ1bGVzV2hlbk1vZGlmaWVkLmZvckVhY2gocnVsZUlkID0+IGlnbm9yZWRSdWxlcy5hZGQocnVsZUlkKSlcbiAgICAgICAgICAgIHJ1bGVzID0gaWRzVG9JZ25vcmVkUnVsZXMoaWdub3JlZFJ1bGVzKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBydWxlcyA9IGlkc1RvSWdub3JlZFJ1bGVzKGlnbm9yZWRSdWxlc1doZW5Nb2RpZmllZClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaGVscGVycy5zZW5kSm9iKHtcbiAgICAgICAgICAgIHR5cGU6ICdsaW50JyxcbiAgICAgICAgICAgIGNvbnRlbnRzOiB0ZXh0LFxuICAgICAgICAgICAgY29uZmlnOiBhdG9tLmNvbmZpZy5nZXQoJ2xpbnRlci1lc2xpbnQnKSxcbiAgICAgICAgICAgIHJ1bGVzLFxuICAgICAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgICAgICBwcm9qZWN0UGF0aDogYXRvbS5wcm9qZWN0LnJlbGF0aXZpemVQYXRoKGZpbGVQYXRoKVswXSB8fCAnJ1xuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKHRleHRFZGl0b3IuZ2V0VGV4dCgpICE9PSB0ZXh0KSB7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgVGhlIGVkaXRvciB0ZXh0IGhhcyBiZWVuIG1vZGlmaWVkIHNpbmNlIHRoZSBsaW50IHdhcyB0cmlnZ2VyZWQsXG4gICAgICAgICAgICBhcyB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgdGhlIHJlc3VsdHMgd2lsbCBtYXAgcHJvcGVybHkgYmFjayB0b1xuICAgICAgICAgICAgdGhlIG5ldyBjb250ZW50cywgc2ltcGx5IHJldHVybiBgbnVsbGAgdG8gdGVsbCB0aGVcbiAgICAgICAgICAgIGBwcm92aWRlTGludGVyYCBjb25zdW1lciBub3QgdG8gdXBkYXRlIHRoZSBzYXZlZCByZXN1bHRzLlxuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBoZWxwZXJzLnByb2Nlc3NKb2JSZXNwb25zZShyZXNwb25zZSwgdGV4dEVkaXRvciwgc2hvd1J1bGUpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGhlbHBlcnMuaGFuZGxlRXJyb3IodGV4dEVkaXRvciwgZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgYXN5bmMgZml4Sm9iKGlzU2F2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgdGV4dEVkaXRvciA9IGF0b20ud29ya3NwYWNlLmdldEFjdGl2ZVRleHRFZGl0b3IoKVxuXG4gICAgaWYgKCF0ZXh0RWRpdG9yIHx8ICFhdG9tLndvcmtzcGFjZS5pc1RleHRFZGl0b3IodGV4dEVkaXRvcikpIHtcbiAgICAgIC8vIFNpbGVudGx5IHJldHVybiBpZiB0aGUgVGV4dEVkaXRvciBpcyBpbnZhbGlkXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGV4dEVkaXRvci5pc01vZGlmaWVkKCkpIHtcbiAgICAgIC8vIEFib3J0IGZvciBpbnZhbGlkIG9yIHVuc2F2ZWQgdGV4dCBlZGl0b3JzXG4gICAgICBjb25zdCBtZXNzYWdlID0gJ0xpbnRlci1FU0xpbnQ6IFBsZWFzZSBzYXZlIGJlZm9yZSBmaXhpbmcnXG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkRXJyb3IobWVzc2FnZSlcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRleHRFZGl0b3IuZ2V0UGF0aCgpXG4gICAgY29uc3QgcHJvamVjdFBhdGggPSBhdG9tLnByb2plY3QucmVsYXRpdml6ZVBhdGgoZmlsZVBhdGgpWzBdXG5cbiAgICAvLyBHZXQgdGhlIHRleHQgZnJvbSB0aGUgZWRpdG9yLCBzbyB3ZSBjYW4gdXNlIGV4ZWN1dGVPblRleHRcbiAgICBjb25zdCB0ZXh0ID0gdGV4dEVkaXRvci5nZXRUZXh0KClcbiAgICAvLyBEbyBub3QgdHJ5IHRvIG1ha2UgZml4ZXMgb24gYW4gZW1wdHkgZmlsZVxuICAgIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgbGV0IHJ1bGVzID0ge31cbiAgICBpZiAoT2JqZWN0LmtleXMoaWdub3JlZFJ1bGVzV2hlbkZpeGluZykubGVuZ3RoID4gMCkge1xuICAgICAgcnVsZXMgPSBpZ25vcmVkUnVsZXNXaGVuRml4aW5nXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaGVscGVycy5zZW5kSm9iKHtcbiAgICAgICAgdHlwZTogJ2ZpeCcsXG4gICAgICAgIGNvbmZpZzogYXRvbS5jb25maWcuZ2V0KCdsaW50ZXItZXNsaW50JyksXG4gICAgICAgIGNvbnRlbnRzOiB0ZXh0LFxuICAgICAgICBydWxlcyxcbiAgICAgICAgZmlsZVBhdGgsXG4gICAgICAgIHByb2plY3RQYXRoXG4gICAgICB9KVxuICAgICAgaWYgKCFpc1NhdmUpIHtcbiAgICAgICAgYXRvbS5ub3RpZmljYXRpb25zLmFkZFN1Y2Nlc3MocmVzcG9uc2UpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhdG9tLm5vdGlmaWNhdGlvbnMuYWRkV2FybmluZyhlcnIubWVzc2FnZSlcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/package.json b/package.json index 919b0433..88a6b7f0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "linter-eslint", "main": "./dist/main.js", - "version": "8.6.5", + "version": "8.6.6", "description": "Lint JavaScript on the fly, using ESLint", "repository": "https://github.com/AtomLinter/linter-eslint.git", "license": "MIT",