oxygen-cli 1.21.0 → 1.22.0-beta.1

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.
@@ -383,7 +383,7 @@ module.exports = {
383
383
 
384
384
  if (wdioOpts.capabilities['perfectoMobile:options'] || wdioOpts.hostname && wdioOpts.hostname.includes('perfectomobile.com')) {
385
385
  return providers.PERFECTO;
386
- } else if (wdioOpts.capabilities['browserstack:options']) {
386
+ } else if (wdioOpts.capabilities['bstack:options']) {
387
387
  return providers.BROWSERSTACK;
388
388
  } else if (wdioOpts.capabilities['sauce:options']) {
389
389
  return providers.SAUCELABS;
@@ -414,4 +414,4 @@ module.exports = {
414
414
  }
415
415
  }
416
416
  };
417
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL3V0aWxzLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJwcm92aWRlcnMiLCJQRVJGRUNUTyIsIkJST1dTRVJTVEFDSyIsIlNBVUNFTEFCUyIsIkxBTUJEQVRFU1QiLCJURVNUSU5HQk9UIiwiY29udGV4dExpc3QiLCJhbmRyb2lkIiwiaW9zIiwiaHlicmlkIiwid2ViIiwiaXNFbGVtZW50Tm90Rm91bmQiLCJlbCIsInJlc3VsdCIsImVycm9yIiwibWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJtb2R1bGUiLCJleHBvcnRzIiwibWF0Y2hQYXR0ZXJuIiwidmFsIiwicGF0dGVybiIsImdsb2JUb1JlZ2V4IiwidG9TdHJpbmciLCJyZXBsYWNlIiwicmVnZXgiLCJpbmRleE9mIiwiUmVnRXhwIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwidGVzdCIsImZsYWdzIiwiZ2V0RWxlbWVudCIsImxvY2F0b3IiLCJ3YWl0Rm9yVmlzaWJsZSIsInRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJjYWxsIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiaGVscGVycyIsImdldFdkaW9Mb2NhdG9yIiwiZHJpdmVyIiwiJCIsImVsZW1lbnROb3RGb3VuZCIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJ3YWl0Rm9yRGlzcGxheWVkIiwid2FpdEZvclRpbWVvdXQiLCJlIiwiaW5jbHVkZXMiLCJFTEVNRU5UX05PVF9WSVNJQkxFIiwiZ2V0RWxlbWVudHMiLCJlbHMiLCIkJCIsImVsZW1lbnRzTm90Rm91bmQiLCJnZXRDaGlsZEVsZW1lbnQiLCJwYXJlbnRFbGVtZW50IiwiU0NSSVBUX0VSUk9SIiwiZ2V0Q2hpbGRFbGVtZW50cyIsInNlbGVuaXVtVGltZW91dCIsInNlbGVuaXVtQnJvd3NlclRpbWVvdXQiLCJ0aW1lb3V0cyIsImNhcGFiaWxpdGllcyIsImJyb3dzZXJOYW1lIiwiZ2V0VGltZW91dHMiLCJzdG9wVXJsIiwiY29uc29sZSIsImxvZyIsImltcGxpY2l0IiwiX3ByZXZJbXBsaWNpdFRpbWVvdXQiLCJwYWdlTG9hZCIsIl9wcmV2UGFnZUxvYWRUaW1lb3V0Iiwic2V0VGltZW91dCIsImFzc2VydEFyZ3VtZW50IiwiYXJnIiwidW5kZWZpbmVkIiwiYXNzZXJ0QXJndW1lbnRTdHJpbmciLCJhc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nIiwiYXNzZXJ0QXJndW1lbnROdW1iZXIiLCJhc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlIiwiYXNzZXJ0QXJndW1lbnRCb29sIiwiYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwiLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJhc3NlcnRDb250ZXh0IiwiYWxvd2VkQ29udGV4dHMiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImlzV2ViIiwic3Vic3RyIiwiZ2V0TG9nVHlwZXMiLCJwcm92aWRlciIsImRldGVybWluZVByb3ZpZGVyIiwid2Rpb09wdHMiLCJob3N0bmFtZSIsImhhc0NpcmN1bGFyRGVwZW5kZW5jeSIsIm9iaiIsIkpTT04iLCJzdHJpbmdpZnkiLCJTdHJpbmciLCJhc3NlcnRDaXJjdWxhciIsIkNJUkNVTEFSX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7O0FBVUE7Ozs7QUFWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsU0FBUyxHQUFHQyxPQUFPLENBQUMsa0JBQUQsQ0FBekI7O0FBR0EsTUFBTUMsU0FBUyxHQUFHO0FBQ2RDLEVBQUFBLFFBQVEsRUFBRSxVQURJO0FBRWRDLEVBQUFBLFlBQVksRUFBRSxjQUZBO0FBR2RDLEVBQUFBLFNBQVMsRUFBRSxPQUhHO0FBSWRDLEVBQUFBLFVBQVUsRUFBRSxRQUpFO0FBS2RDLEVBQUFBLFVBQVUsRUFBRTtBQUxFLENBQWxCO0FBUUEsTUFBTUMsV0FBVyxHQUFHO0FBQ2hCQyxFQUFBQSxPQUFPLEVB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LFVBQVVDLEdBQVYsRUFBZTtBQUNsQyxRQUFJO0FBQ0FDLE1BQUFBLElBQUksQ0FBQ0MsU0FBTCxDQUFlRixHQUFmO0FBQ0gsS0FGRCxDQUVFLE9BQU8vQyxDQUFQLEVBQVU7QUFDUixVQUFJa0QsTUFBTSxDQUFDbEQsQ0FBRCxDQUFOLENBQVVDLFFBQVYsQ0FBbUIsdUNBQW5CLENBQUosRUFBaUU7QUFDN0QsZUFBT2lELE1BQU0sQ0FBQ2xELENBQUQsQ0FBYjtBQUNIO0FBQ0o7O0FBQ0QsV0FBTyxLQUFQO0FBQ0gsR0F4WFk7QUEwWGJtRCxFQUFBQSxjQUFjLEVBQUUsVUFBU0osR0FBVCxFQUFjO0FBQzFCLFVBQU1ELHFCQUFxQixHQUFHLEtBQUtBLHFCQUFMLENBQTJCQyxHQUEzQixDQUE5Qjs7QUFDQSxRQUFJRCxxQkFBSixFQUEyQjtBQUN2QixZQUFNLElBQUluRCxvQkFBSixDQUFZaEQsU0FBUyxDQUFDaUQsU0FBVixDQUFvQndELGNBQWhDLEVBQWdETixxQkFBaEQsQ0FBTjtBQUNIO0FBQ0o7QUEvWFksQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbmNvbnN0IGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuXHJcbmNvbnN0IHByb3ZpZGVycyA9IHtcclxuICAgIFBFUkZFQ1RPOiAncGVyZmVjdG8nLFxyXG4gICAgQlJPV1NFUlNUQUNLOiAnYnJvd3NlcnN0YWNrJyxcclxuICAgIFNBVUNFTEFCUzogJ3NhdWNlJyxcclxuICAgIExBTUJEQVRFU1Q6ICdsYW1iZGEnLFxyXG4gICAgVEVTVElOR0JPVDogJ3Rlc3Rpbmdib3QnXHJcbn07XHJcblxyXG5jb25zdCBjb250ZXh0TGlzdCA9IHtcclxuICAgIGFuZHJvaWQ6ICdhbmRyb2lkJyxcclxuICAgIGlvczogJ2lvcycsXHJcbiAgICBoeWJyaWQ6ICdoeWJyaWQnLFxyXG4gICAgd2ViOiAnd2ViJ1xyXG59O1xyXG5cclxuY29uc3QgaXNFbGVtZW50Tm90Rm91bmQgPSAoZWwpID0+IHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgICBlbC5lcnJvciAmJiAoXHJcbiAgICAgICAgZWwuZXJyb3IuZXJyb3IgPT09ICdubyBzdWNoIGVsZW1lbnQnIHx8XHJcbiAgICAgICAgKGVsLmVycm9yLm1lc3NhZ2UgJiYgLyogd2luYXBwZHJpdmVyIHdpbi5yaWdodENsaWNrICovIGVsLmVycm9yLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnbm8gc3VjaCBlbGVtZW50JykgfHxcclxuICAgICAgICBlbC5lcnJvci5tZXNzYWdlICYmIC8qIHdpbmFwcGRyaXZlciAqLyBlbC5lcnJvci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0FuIGVsZW1lbnQgY291bGQgbm90IGJlIGxvY2F0ZWQnKSkpXHJcbiAgICApIHtcclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgbWF0Y2hQYXR0ZXJuOiBmdW5jdGlvbih2YWwsIHBhdHRlcm4pIHtcclxuICAgICAgICBpZiAoIXZhbCAmJiAhcGF0dGVybikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBnbG9iVG9SZWdleCA9IHJlcXVpcmUoJ2dsb2ItdG8tcmVnZXhwJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4udG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcgJyk7XHJcblxyXG4gICAgICAgIHZhciByZWdleDtcclxuICAgICAgICBpZiAocGF0dGVybi5pbmRleE9mKCdyZWdleDonKSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2ggdXNpbmcgYSByZWd1bGFyLWV4cHJlc3Npb25cclxuICAgICAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4uc3Vic3RyaW5nKCdyZWdleDonLmxlbmd0aCksICdnJyk7XHJcbiAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHZhbCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuLmluZGV4T2YoJ3JlZ2V4aTonKSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoIHVzaW5nIGEgY2FzZS1pbnNlbnNpdGl2ZSByZWd1bGFyLWV4cHJlc3Npb25cclxuICAgICAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4uc3Vic3RyaW5nKCdyZWdleGk6Jy5sZW5ndGgpLCAnaWcnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBhdHRlcm4uaW5kZXhPZignZXhhY3Q6JykgPT0gMCB8fCBwYXR0ZXJuID09PSAnJykgeyAgLy8gbWF0Y2ggYSBzdHJpbmcgZXhhY3RseSwgdmVyYmF0aW1cclxuICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4uc3Vic3RyaW5nKCdleGFjdDonLmxlbmd0aCkgPT09IHZhbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHBhdHRlcm4uaW5kZXhPZignZ2xvYjonKSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2ggYWdhaW5zdCBhIGNhc2UtaW5zZW5zaXRpdmUgXCJnbG9iXCIgcGF0dGVyblxyXG4gICAgICAgICAgICByZWdleCA9IGdsb2JUb1JlZ2V4KHBhdHRlcm4uc3Vic3RyaW5nKCdnbG9iOicubGVuZ3RoKSwgeyBmbGFnczogJ2lnJyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsKTtcclxuICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gcHJlZml4IHNhbWUgYXMgZ2xvYiBtYXRjaGluZ1xyXG4gICAgICAgICAgICByZWdleCA9IGdsb2JUb1JlZ2V4KHBhdHRlcm4sIHsgZmxhZ3M6ICdpZycgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBnZXRFbGVtZW50OiBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCB3YWl0Rm9yVmlzaWJsZSwgdGltZW91dCkge1xyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnNldFRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMsIHRpbWVvdXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGVsO1xyXG4gICAgICAgIGlmIChsb2NhdG9yICYmIGxvY2F0b3IuY29uc3RydWN0b3IgJiYgbG9jYXRvci5jb25zdHJ1Y3Rvci5uYW1lID09PSAnRWxlbWVudCcpIHtcclxuICAgICAgICAgICAgZWwgPSBsb2NhdG9yO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvY2F0b3IgPSB0aGlzLmhlbHBlcnMuZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcik7XHJcbiAgICAgICAgICAgIGVsID0gYXdhaXQgdGhpcy5kcml2ZXIuJChsb2NhdG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGVsZW1lbnROb3RGb3VuZCA9IGlzRWxlbWVudE5vdEZvdW5kKGVsKTtcclxuICAgICAgICBpZiAoZWxlbWVudE5vdEZvdW5kKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTEVNRU5UX05PVF9GT1VORCwgYFVuYWJsZSB0byBmaW5kIGVsZW1lbnQ6ICR7bG9jYXRvcn1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3YWl0Rm9yVmlzaWJsZSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZWwud2FpdEZvckRpc3BsYXllZCh7IHRpbWVvdXQ6dGltZW91dCA/IHRpbWVvdXQgOiB0aGlzLndhaXRGb3JUaW1lb3V0fSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGUubWVzc2FnZSAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3N0aWxsIG5vdCBkaXNwbGF5ZWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRUxFTUVOVF9OT1RfVklTSUJMRSwgYEVsZW1lbnQgbm90IHZpc2libGU6ICR7bG9jYXRvcn1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlbDtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0RWxlbWVudHM6IGFzeW5jIGZ1bmN0aW9uKGxvY2F0b3IsIHRpbWVvdXQpIHtcclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5zZXRUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzLCB0aW1lb3V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBlbHMgPSBbXTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZWxzID0gYXdhaXQgdGhpcy5kcml2ZXIuJCQodGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yKGxvY2F0b3IpKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzTm90Rm91bmQgPSBpc0VsZW1lbnROb3RGb3VuZChlbHMpO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNOb3RGb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlbHM7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldENoaWxkRWxlbWVudDogYXN5bmMgZnVuY3Rpb24obG9jYXRvciwgcGFyZW50RWxlbWVudCwgd2FpdEZvclZpc2libGUsIHRpbWVvdXQpIHtcclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5zZXRUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzLCB0aW1lb3V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxvY2F0b3IgPSB0aGlzLmhlbHBlcnMuZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcik7XHJcblxyXG4gICAgICAgIGlmICghKHBhcmVudEVsZW1lbnQgJiYgcGFyZW50RWxlbWVudC4kKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgJ0ludmFsaWQgYXJndW1lbnQgLSBwYXJlbnRFbGVtZW50LCBtdXN0IGJlIGEgdmFsaWQgZWxlbWVudCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGVsID0gYXdhaXQgcGFyZW50RWxlbWVudC4kKGxvY2F0b3IpO1xyXG5cclxuICAgICAgICBjb25zdCBlbGVtZW50Tm90Rm91bmQgPSBpc0VsZW1lbnROb3RGb3VuZChlbCk7XHJcbiAgICAgICAgaWYgKGVsZW1lbnROb3RGb3VuZCkge1xyXG4gICAgICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRUxFTUVOVF9OT1RfRk9VTkQsIGBVbmFibGUgdG8gZmluZCBlbGVtZW50OiAke2xvY2F0b3J9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAod2FpdEZvclZpc2libGUpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGVsLndhaXRGb3JEaXNwbGF5ZWQoeyB0aW1lb3V0OiB0aW1lb3V0ID8gdGltZW91dCA6IHRoaXMud2FpdEZvclRpbWVvdXR9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZS5tZXNzYWdlICYmIGUubWVzc2FnZS5pbmNsdWRlcygnc3RpbGwgbm90IGRpc3BsYXllZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTEVNRU5UX05PVF9WSVNJQkxFLCBgRWxlbWVudCBub3QgdmlzaWJsZTogJHtsb2NhdG9yfWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRDaGlsZEVsZW1lbnRzOiBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCBwYXJlbnRFbGVtZW50LCB0aW1lb3V0KSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMuc2V0VGltZW91dEltcGxpY2l0LmNhbGwodGhpcywgdGltZW91dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsb2NhdG9yID0gdGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yKGxvY2F0b3IpO1xyXG5cclxuICAgICAgICBpZiAoIShwYXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnQuJCQpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIHBhcmVudEVsZW1lbnQsIG11c3QgYmUgYSB2YWxpZCBlbGVtZW50Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZWxzID0gW107XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZWxzID0gYXdhaXQgcGFyZW50RWxlbWVudC4kJChsb2NhdG9yKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzTm90Rm91bmQgPSBpc0VsZW1lbnROb3RGb3VuZChlbHMpO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNOb3RGb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVscztcclxuICAgIH0sXHJcblxyXG4gICAgc2V0VGltZW91dEltcGxpY2l0OiBhc3luYyBmdW5jdGlvbih0aW1lb3V0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRyaXZlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcml2ZXIuc2VsZW5pdW1UaW1lb3V0ICYmIHRpbWVvdXQgPiB0aGlzLmRyaXZlci5zZWxlbml1bVRpbWVvdXQgKiAxMDAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBgdGltZW91dCBtdXN0IGJlIGxlc3MgdGhhbiAke3RoaXMuZHJpdmVyLnNlbGVuaXVtVGltZW91dCAqIDEwMDB9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmRyaXZlci5zZWxlbml1bUJyb3dzZXJUaW1lb3V0ICYmIHRpbWVvdXQgPiB0aGlzLmRyaXZlci5zZWxlbml1bUJyb3dzZXJUaW1lb3V0ICogMTAwMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgYHRpbWVvdXQgbXVzdCBiZSBsZXNzIHRoYW4gJHt0aGlzLmRyaXZlci5zZWxlbml1bUJyb3dzZXJUaW1lb3V0ICogMTAwMH1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0aW1lb3V0cztcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiZcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lID09PSAnTWljcm9zb2Z0RWRnZSdcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBvbiBFZGdlXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJpdmVyLmdldFRpbWVvdXRzKSB7XHJcbiAgICAgICAgICAgIC8vIGNocm9tZSA+PSA3NVxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcy5zdG9wVXJsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLnN0b3BVcmwuaW5jbHVkZXMoJ3BlcmZlY3RvbW9iaWxlLmNvbScpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2lnbm9yZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lb3V0cyA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldFRpbWVvdXRzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZhaWxzIG9uIHBlcmZlY3RvIG1vYmlsZVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2dldFRpbWVvdXRzIGVycm9yJywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJiB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMudGltZW91dHMpIHtcclxuICAgICAgICAgICAgLy8gY2hyb21lID49IDcyICYmIGNocm9tZSA8IDc1XHJcbiAgICAgICAgICAgIHRpbWVvdXRzID0gdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLnRpbWVvdXRzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXRzICYmIHRpbWVvdXRzLmltcGxpY2l0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZJbXBsaWNpdFRpbWVvdXQgPSB0aW1lb3V0cy5pbXBsaWNpdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRpbWVvdXRzICYmIHRpbWVvdXRzLnBhZ2VMb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZQYWdlTG9hZFRpbWVvdXQgPSB0aW1lb3V0cy5wYWdlTG9hZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZHJpdmVyLnNldFRpbWVvdXQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJiB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGJyb3dzZXJOYW1lICdkZWZhdWx0JyBvbiBhbmRyb2lkIFxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc2V0VGltZW91dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0JzogdGltZW91dCxcclxuICAgICAgICAgICAgICAgICAgICAncGFnZUxvYWQnOiB0aW1lb3V0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnNldFRpbWVvdXQoe1xyXG4gICAgICAgICAgICAgICAgICAgICdpbXBsaWNpdCc6IHRpbWVvdXQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVzdG9yZVRpbWVvdXRJbXBsaWNpdDogYXN5bmMgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZJbXBsaWNpdFRpbWVvdXQgJiYgdGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ2ltcGxpY2l0JzogdGhpcy5fcHJldkltcGxpY2l0VGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZQYWdlTG9hZFRpbWVvdXQgJiYgdGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ3BhZ2VMb2FkJzogdGhpcy5fcHJldlBhZ2VMb2FkVGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnID09PSB1bmRlZmluZWQgfHwgYXJnID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIGlzIHJlcXVpcmVkLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50U3RyaW5nOiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgc3RyaW5nLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmc6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICghYXJnIHx8IHR5cGVvZiBhcmcgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIHNob3VsZCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnROdW1iZXI6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmU6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Qm9vbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9IHR5cGVvZih0cnVlKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgdHJ1ZSBvciBmYWxzZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBhc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YoYXJnKSAhPSB0eXBlb2YodHJ1ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIHRydWUgb3IgZmFsc2UuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnRUaW1lb3V0OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnICYmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlci5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb250ZXh0TGlzdDogY29udGV4dExpc3QsXHJcblxyXG4gICAgYXNzZXJ0Q29udGV4dDogYXN5bmMgZnVuY3Rpb24oLi4uYWxvd2VkQ29udGV4dHMpIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldENvbnRleHQoKTtcclxuICAgICAgICBjb25zdCBpc1dlYiA9IChjb250ZXh0ICYmIChjb250ZXh0LmluZGV4T2YoJ1dFQlZJRVcnKSA+IC0xIHx8IGNvbnRleHQuaW5kZXhPZignQ0hST01JVU0nKSA+IC0xKSk7XHJcblxyXG4gICAgICAgIGlmIChpc1dlYikge1xyXG4gICAgICAgICAgICBpZiAoYWxvd2VkQ29udGV4dHMuaW5jbHVkZXMoY29udGV4dExpc3Qud2ViKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5oeWJyaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5hbmRyb2lkKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5pb3MpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2Rpb0xvY2F0b3I6IGZ1bmN0aW9uKGxvY2F0b3IpIHtcclxuICAgICAgICBpZiAoIWxvY2F0b3IpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIGxvY2F0b3Igbm90IHNwZWNpZmllZCcpO1xyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBsb2NhdG9yID09PSAnb2JqZWN0JylcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCcvJykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlYXZlIHhwYXRoIGxvY2F0b3IgYXMgaXNcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIFhQYXRoIGluc3RlYWQgb2YgQ1NTIGZvciBicm93c2VyIHRlc3RzLCBzaW5jZSBJRCBjYW4gY29udGFpbiBpbGxlZ2FsIGNoYXJhY3RlcnNcclxuICAgICAgICAgICAgLy8gYW5kIGVzY2FwaW5nIGRvZXNuJ3Qgd29yayByZWxpYWJseSBvciBpbiBpZGVudGljYWwgbWFubmVyIGluIGFsbCBicm93c2VyXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiYgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYC8vKltAaWQ9XCIke2xvY2F0b3Iuc3Vic3RyKCdpZD0nLmxlbmd0aCl9XCJdYDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnIycgKyBsb2NhdG9yLnN1YnN0cignaWQ9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbmFtZT0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuICdbbmFtZT1cIicgKyBsb2NhdG9yLnN1YnN0cignbmFtZT0nLmxlbmd0aCkgKyAnXCJdJztcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbms9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPScgKyBsb2NhdG9yLnN1YnN0cignbGluaz0nLmxlbmd0aCk7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdsaW5rLWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gJyo9JyArIGxvY2F0b3Iuc3Vic3RyKCdsaW5rPScubGVuZ3RoKTtcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Nzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3Iuc3Vic3RyKCdjc3M9Jy5sZW5ndGgpOyAgICAgICAgICAgLy8gaW4gY2FzZSBvZiBjc3MsIGp1c3QgcmVtb3ZlIGNzcz0gcHJlZml4XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0YWc9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPCcgKyBsb2NhdG9yLnN1YnN0cigndGFnPScubGVuZ3RoKSArICcgLz4nO1xyXG5cclxuICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0TG9nVHlwZXM6IGZ1bmN0aW9uKGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoY29udGV4dCA9PT0gJ05BVElWRV9BUFAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ2xvZ2NhdCcsICdidWdyZXBvcnQnLCAnc2VydmVyJ107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnYnJvd3NlcicsICdkcml2ZXInXTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHByb3ZpZGVyOiBwcm92aWRlcnMsXHJcblxyXG4gICAgZGV0ZXJtaW5lUHJvdmlkZXI6IGZ1bmN0aW9uKHdkaW9PcHRzKSB7XHJcbiAgICAgICAgaWYgKCF3ZGlvT3B0cyB8fCAhd2Rpb09wdHMuY2FwYWJpbGl0aWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdkaW9PcHRzLmNhcGFiaWxpdGllc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddIHx8ICh3ZGlvT3B0cy5ob3N0bmFtZSAmJiB3ZGlvT3B0cy5ob3N0bmFtZS5pbmNsdWRlcygncGVyZmVjdG9tb2JpbGUuY29tJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlcnMuUEVSRkVDVE87XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJzdGFjazpvcHRpb25zJ10pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5CUk9XU0VSU1RBQ0s7XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ3NhdWNlOm9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlNBVUNFTEFCUztcclxuICAgICAgICB9IGVsc2UgaWYgKHdkaW9PcHRzLmhvc3RuYW1lLmluY2x1ZGVzKCdsYW1iZGF0ZXN0JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5MQU1CREFURVNUO1xyXG4gICAgICAgIH0gZWxzZSBpZiAod2Rpb09wdHMuY2FwYWJpbGl0aWVzWyd0ZXN0aW5nQm90Om9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlRFU1RJTkdCT1Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgaGFzQ2lyY3VsYXJEZXBlbmRlbmN5OiBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob2JqKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmIChTdHJpbmcoZSkuaW5jbHVkZXMoJ0NvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT04nKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydENpcmN1bGFyOiBmdW5jdGlvbihvYmopIHtcclxuICAgICAgICBjb25zdCBoYXNDaXJjdWxhckRlcGVuZGVuY3kgPSB0aGlzLmhhc0NpcmN1bGFyRGVwZW5kZW5jeShvYmopO1xyXG4gICAgICAgIGlmIChoYXNDaXJjdWxhckRlcGVuZGVuY3kpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5DSVJDVUxBUl9FUlJPUiwgaGFzQ2lyY3VsYXJEZXBlbmRlbmN5KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59O1xyXG4iXX0=
417
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL3V0aWxzLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJwcm92aWRlcnMiLCJQRVJGRUNUTyIsIkJST1dTRVJTVEFDSyIsIlNBVUNFTEFCUyIsIkxBTUJEQVRFU1QiLCJURVNUSU5HQk9UIiwiY29udGV4dExpc3QiLCJhbmRyb2lkIiwiaW9zIiwiaHlicmlkIiwid2ViIiwiaXNFbGVtZW50Tm90Rm91bmQiLCJlbCIsInJlc3VsdCIsImVycm9yIiwibWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJtb2R1bGUiLCJleHBvcnRzIiwibWF0Y2hQYXR0ZXJuIiwidmFsIiwicGF0dGVybiIsImdsb2JUb1JlZ2V4IiwidG9TdHJpbmciLCJyZXBsYWNlIiwicmVnZXgiLCJpbmRleE9mIiwiUmVnRXhwIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwidGVzdCIsImZsYWdzIiwiZ2V0RWxlbWVudCIsImxvY2F0b3IiLCJ3YWl0Rm9yVmlzaWJsZSIsInRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJjYWxsIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiaGVscGVycyIsImdldFdkaW9Mb2NhdG9yIiwiZHJpdmVyIiwiJCIsImVsZW1lbnROb3RGb3VuZCIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJ3YWl0Rm9yRGlzcGxheWVkIiwid2FpdEZvclRpbWVvdXQiLCJlIiwiaW5jbHVkZXMiLCJFTEVNRU5UX05PVF9WSVNJQkxFIiwiZ2V0RWxlbWVudHMiLCJlbHMiLCIkJCIsImVsZW1lbnRzTm90Rm91bmQiLCJnZXRDaGlsZEVsZW1lbnQiLCJwYXJlbnRFbGVtZW50IiwiU0NSSVBUX0VSUk9SIiwiZ2V0Q2hpbGRFbGVtZW50cyIsInNlbGVuaXVtVGltZW91dCIsInNlbGVuaXVtQnJvd3NlclRpbWVvdXQiLCJ0aW1lb3V0cyIsImNhcGFiaWxpdGllcyIsImJyb3dzZXJOYW1lIiwiZ2V0VGltZW91dHMiLCJzdG9wVXJsIiwiY29uc29sZSIsImxvZyIsImltcGxpY2l0IiwiX3ByZXZJbXBsaWNpdFRpbWVvdXQiLCJwYWdlTG9hZCIsIl9wcmV2UGFnZUxvYWRUaW1lb3V0Iiwic2V0VGltZW91dCIsImFzc2VydEFyZ3VtZW50IiwiYXJnIiwidW5kZWZpbmVkIiwiYXNzZXJ0QXJndW1lbnRTdHJpbmciLCJhc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nIiwiYXNzZXJ0QXJndW1lbnROdW1iZXIiLCJhc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlIiwiYXNzZXJ0QXJndW1lbnRCb29sIiwiYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwiLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJhc3NlcnRDb250ZXh0IiwiYWxvd2VkQ29udGV4dHMiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImlzV2ViIiwic3Vic3RyIiwiZ2V0TG9nVHlwZXMiLCJwcm92aWRlciIsImRldGVybWluZVByb3ZpZGVyIiwid2Rpb09wdHMiLCJob3N0bmFtZSIsImhhc0NpcmN1bGFyRGVwZW5kZW5jeSIsIm9iaiIsIkpTT04iLCJzdHJpbmdpZnkiLCJTdHJpbmciLCJhc3NlcnRDaXJjdWxhciIsIkNJUkNVTEFSX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7O0FBVUE7Ozs7QUFWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsU0FBUyxHQUFHQyxPQUFPLENBQUMsa0JBQUQsQ0FBekI7O0FBR0EsTUFBTUMsU0FBUyxHQUFHO0FBQ2RDLEVBQUFBLFFBQVEsRUFBRSxVQURJO0FBRWRDLEVBQUFBLFlBQVksRUFBRSxjQUZBO0FBR2RDLEVBQUFBLFNBQVMsRUFBRSxPQUhHO0FBSWRDLEVBQUFBLFVBQVUsRUFBRSxRQUpFO0FBS2RDLEVBQUFBLFVBQVUsRUFBRTtBQUxFLENBQWxCO0FBUUEsTUFBTUMsV0FBVyxHQUFHO0FBQ2hCQyxFQUFBQSxPQUFPLEVB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LFVBQVVDLEdBQVYsRUFBZTtBQUNsQyxRQUFJO0FBQ0FDLE1BQUFBLElBQUksQ0FBQ0MsU0FBTCxDQUFlRixHQUFmO0FBQ0gsS0FGRCxDQUVFLE9BQU8vQyxDQUFQLEVBQVU7QUFDUixVQUFJa0QsTUFBTSxDQUFDbEQsQ0FBRCxDQUFOLENBQVVDLFFBQVYsQ0FBbUIsdUNBQW5CLENBQUosRUFBaUU7QUFDN0QsZUFBT2lELE1BQU0sQ0FBQ2xELENBQUQsQ0FBYjtBQUNIO0FBQ0o7O0FBQ0QsV0FBTyxLQUFQO0FBQ0gsR0F4WFk7QUEwWGJtRCxFQUFBQSxjQUFjLEVBQUUsVUFBU0osR0FBVCxFQUFjO0FBQzFCLFVBQU1ELHFCQUFxQixHQUFHLEtBQUtBLHFCQUFMLENBQTJCQyxHQUEzQixDQUE5Qjs7QUFDQSxRQUFJRCxxQkFBSixFQUEyQjtBQUN2QixZQUFNLElBQUluRCxvQkFBSixDQUFZaEQsU0FBUyxDQUFDaUQsU0FBVixDQUFvQndELGNBQWhDLEVBQWdETixxQkFBaEQsQ0FBTjtBQUNIO0FBQ0o7QUEvWFksQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbmNvbnN0IGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuXHJcbmNvbnN0IHByb3ZpZGVycyA9IHtcclxuICAgIFBFUkZFQ1RPOiAncGVyZmVjdG8nLFxyXG4gICAgQlJPV1NFUlNUQUNLOiAnYnJvd3NlcnN0YWNrJyxcclxuICAgIFNBVUNFTEFCUzogJ3NhdWNlJyxcclxuICAgIExBTUJEQVRFU1Q6ICdsYW1iZGEnLFxyXG4gICAgVEVTVElOR0JPVDogJ3Rlc3Rpbmdib3QnXHJcbn07XHJcblxyXG5jb25zdCBjb250ZXh0TGlzdCA9IHtcclxuICAgIGFuZHJvaWQ6ICdhbmRyb2lkJyxcclxuICAgIGlvczogJ2lvcycsXHJcbiAgICBoeWJyaWQ6ICdoeWJyaWQnLFxyXG4gICAgd2ViOiAnd2ViJ1xyXG59O1xyXG5cclxuY29uc3QgaXNFbGVtZW50Tm90Rm91bmQgPSAoZWwpID0+IHtcclxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgICBlbC5lcnJvciAmJiAoXHJcbiAgICAgICAgZWwuZXJyb3IuZXJyb3IgPT09ICdubyBzdWNoIGVsZW1lbnQnIHx8XHJcbiAgICAgICAgKGVsLmVycm9yLm1lc3NhZ2UgJiYgLyogd2luYXBwZHJpdmVyIHdpbi5yaWdodENsaWNrICovIGVsLmVycm9yLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnbm8gc3VjaCBlbGVtZW50JykgfHxcclxuICAgICAgICBlbC5lcnJvci5tZXNzYWdlICYmIC8qIHdpbmFwcGRyaXZlciAqLyBlbC5lcnJvci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0FuIGVsZW1lbnQgY291bGQgbm90IGJlIGxvY2F0ZWQnKSkpXHJcbiAgICApIHtcclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgbWF0Y2hQYXR0ZXJuOiBmdW5jdGlvbih2YWwsIHBhdHRlcm4pIHtcclxuICAgICAgICBpZiAoIXZhbCAmJiAhcGF0dGVybikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBnbG9iVG9SZWdleCA9IHJlcXVpcmUoJ2dsb2ItdG8tcmVnZXhwJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4udG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcgJyk7XHJcblxyXG4gICAgICAgIHZhciByZWdleDtcclxuICAgICAgICBpZiAocGF0dGVybi5pbmRleE9mKCdyZWdleDonKSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2ggdXNpbmcgYSByZWd1bGFyLWV4cHJlc3Npb25cclxuICAgICAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4uc3Vic3RyaW5nKCdyZWdleDonLmxlbmd0aCksICdnJyk7XHJcbiAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHZhbCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuLmluZGV4T2YoJ3JlZ2V4aTonKSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoIHVzaW5nIGEgY2FzZS1pbnNlbnNpdGl2ZSByZWd1bGFyLWV4cHJlc3Npb25cclxuICAgICAgICAgICAgcmVnZXggPSBuZXcgUmVnRXhwKHBhdHRlcm4uc3Vic3RyaW5nKCdyZWdleGk6Jy5sZW5ndGgpLCAnaWcnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBhdHRlcm4uaW5kZXhPZignZXhhY3Q6JykgPT0gMCB8fCBwYXR0ZXJuID09PSAnJykgeyAgLy8gbWF0Y2ggYSBzdHJpbmcgZXhhY3RseSwgdmVyYmF0aW1cclxuICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4uc3Vic3RyaW5nKCdleGFjdDonLmxlbmd0aCkgPT09IHZhbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHBhdHRlcm4uaW5kZXhPZignZ2xvYjonKSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2ggYWdhaW5zdCBhIGNhc2UtaW5zZW5zaXRpdmUgXCJnbG9iXCIgcGF0dGVyblxyXG4gICAgICAgICAgICByZWdleCA9IGdsb2JUb1JlZ2V4KHBhdHRlcm4uc3Vic3RyaW5nKCdnbG9iOicubGVuZ3RoKSwgeyBmbGFnczogJ2lnJyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsKTtcclxuICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gcHJlZml4IHNhbWUgYXMgZ2xvYiBtYXRjaGluZ1xyXG4gICAgICAgICAgICByZWdleCA9IGdsb2JUb1JlZ2V4KHBhdHRlcm4sIHsgZmxhZ3M6ICdpZycgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBnZXRFbGVtZW50OiBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCB3YWl0Rm9yVmlzaWJsZSwgdGltZW91dCkge1xyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnNldFRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMsIHRpbWVvdXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGVsO1xyXG4gICAgICAgIGlmIChsb2NhdG9yICYmIGxvY2F0b3IuY29uc3RydWN0b3IgJiYgbG9jYXRvci5jb25zdHJ1Y3Rvci5uYW1lID09PSAnRWxlbWVudCcpIHtcclxuICAgICAgICAgICAgZWwgPSBsb2NhdG9yO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxvY2F0b3IgPSB0aGlzLmhlbHBlcnMuZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcik7XHJcbiAgICAgICAgICAgIGVsID0gYXdhaXQgdGhpcy5kcml2ZXIuJChsb2NhdG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGVsZW1lbnROb3RGb3VuZCA9IGlzRWxlbWVudE5vdEZvdW5kKGVsKTtcclxuICAgICAgICBpZiAoZWxlbWVudE5vdEZvdW5kKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTEVNRU5UX05PVF9GT1VORCwgYFVuYWJsZSB0byBmaW5kIGVsZW1lbnQ6ICR7bG9jYXRvcn1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3YWl0Rm9yVmlzaWJsZSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZWwud2FpdEZvckRpc3BsYXllZCh7IHRpbWVvdXQ6dGltZW91dCA/IHRpbWVvdXQgOiB0aGlzLndhaXRGb3JUaW1lb3V0fSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGUubWVzc2FnZSAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3N0aWxsIG5vdCBkaXNwbGF5ZWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRUxFTUVOVF9OT1RfVklTSUJMRSwgYEVsZW1lbnQgbm90IHZpc2libGU6ICR7bG9jYXRvcn1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlbDtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0RWxlbWVudHM6IGFzeW5jIGZ1bmN0aW9uKGxvY2F0b3IsIHRpbWVvdXQpIHtcclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5zZXRUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzLCB0aW1lb3V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBlbHMgPSBbXTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZWxzID0gYXdhaXQgdGhpcy5kcml2ZXIuJCQodGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yKGxvY2F0b3IpKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzTm90Rm91bmQgPSBpc0VsZW1lbnROb3RGb3VuZChlbHMpO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNOb3RGb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlbHM7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldENoaWxkRWxlbWVudDogYXN5bmMgZnVuY3Rpb24obG9jYXRvciwgcGFyZW50RWxlbWVudCwgd2FpdEZvclZpc2libGUsIHRpbWVvdXQpIHtcclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5zZXRUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzLCB0aW1lb3V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxvY2F0b3IgPSB0aGlzLmhlbHBlcnMuZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcik7XHJcblxyXG4gICAgICAgIGlmICghKHBhcmVudEVsZW1lbnQgJiYgcGFyZW50RWxlbWVudC4kKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgJ0ludmFsaWQgYXJndW1lbnQgLSBwYXJlbnRFbGVtZW50LCBtdXN0IGJlIGEgdmFsaWQgZWxlbWVudCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGVsID0gYXdhaXQgcGFyZW50RWxlbWVudC4kKGxvY2F0b3IpO1xyXG5cclxuICAgICAgICBjb25zdCBlbGVtZW50Tm90Rm91bmQgPSBpc0VsZW1lbnROb3RGb3VuZChlbCk7XHJcbiAgICAgICAgaWYgKGVsZW1lbnROb3RGb3VuZCkge1xyXG4gICAgICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRUxFTUVOVF9OT1RfRk9VTkQsIGBVbmFibGUgdG8gZmluZCBlbGVtZW50OiAke2xvY2F0b3J9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAod2FpdEZvclZpc2libGUpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGVsLndhaXRGb3JEaXNwbGF5ZWQoeyB0aW1lb3V0OiB0aW1lb3V0ID8gdGltZW91dCA6IHRoaXMud2FpdEZvclRpbWVvdXR9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZS5tZXNzYWdlICYmIGUubWVzc2FnZS5pbmNsdWRlcygnc3RpbGwgbm90IGRpc3BsYXllZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTEVNRU5UX05PVF9WSVNJQkxFLCBgRWxlbWVudCBub3QgdmlzaWJsZTogJHtsb2NhdG9yfWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRDaGlsZEVsZW1lbnRzOiBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCBwYXJlbnRFbGVtZW50LCB0aW1lb3V0KSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgbW9kdWxlLmV4cG9ydHMuc2V0VGltZW91dEltcGxpY2l0LmNhbGwodGhpcywgdGltZW91dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsb2NhdG9yID0gdGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yKGxvY2F0b3IpO1xyXG5cclxuICAgICAgICBpZiAoIShwYXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnQuJCQpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIHBhcmVudEVsZW1lbnQsIG11c3QgYmUgYSB2YWxpZCBlbGVtZW50Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZWxzID0gW107XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgZWxzID0gYXdhaXQgcGFyZW50RWxlbWVudC4kJChsb2NhdG9yKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzTm90Rm91bmQgPSBpc0VsZW1lbnROb3RGb3VuZChlbHMpO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNOb3RGb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVscztcclxuICAgIH0sXHJcblxyXG4gICAgc2V0VGltZW91dEltcGxpY2l0OiBhc3luYyBmdW5jdGlvbih0aW1lb3V0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRyaXZlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcml2ZXIuc2VsZW5pdW1UaW1lb3V0ICYmIHRpbWVvdXQgPiB0aGlzLmRyaXZlci5zZWxlbml1bVRpbWVvdXQgKiAxMDAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBgdGltZW91dCBtdXN0IGJlIGxlc3MgdGhhbiAke3RoaXMuZHJpdmVyLnNlbGVuaXVtVGltZW91dCAqIDEwMDB9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmRyaXZlci5zZWxlbml1bUJyb3dzZXJUaW1lb3V0ICYmIHRpbWVvdXQgPiB0aGlzLmRyaXZlci5zZWxlbml1bUJyb3dzZXJUaW1lb3V0ICogMTAwMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgYHRpbWVvdXQgbXVzdCBiZSBsZXNzIHRoYW4gJHt0aGlzLmRyaXZlci5zZWxlbml1bUJyb3dzZXJUaW1lb3V0ICogMTAwMH1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0aW1lb3V0cztcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiZcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lID09PSAnTWljcm9zb2Z0RWRnZSdcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBvbiBFZGdlXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJpdmVyLmdldFRpbWVvdXRzKSB7XHJcbiAgICAgICAgICAgIC8vIGNocm9tZSA+PSA3NVxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcy5zdG9wVXJsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLnN0b3BVcmwuaW5jbHVkZXMoJ3BlcmZlY3RvbW9iaWxlLmNvbScpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2lnbm9yZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lb3V0cyA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldFRpbWVvdXRzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGZhaWxzIG9uIHBlcmZlY3RvIG1vYmlsZVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2dldFRpbWVvdXRzIGVycm9yJywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJiB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMudGltZW91dHMpIHtcclxuICAgICAgICAgICAgLy8gY2hyb21lID49IDcyICYmIGNocm9tZSA8IDc1XHJcbiAgICAgICAgICAgIHRpbWVvdXRzID0gdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLnRpbWVvdXRzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXRzICYmIHRpbWVvdXRzLmltcGxpY2l0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZJbXBsaWNpdFRpbWVvdXQgPSB0aW1lb3V0cy5pbXBsaWNpdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRpbWVvdXRzICYmIHRpbWVvdXRzLnBhZ2VMb2FkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZQYWdlTG9hZFRpbWVvdXQgPSB0aW1lb3V0cy5wYWdlTG9hZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZHJpdmVyLnNldFRpbWVvdXQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJiB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGJyb3dzZXJOYW1lICdkZWZhdWx0JyBvbiBhbmRyb2lkIFxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc2V0VGltZW91dCh7XHJcbiAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0JzogdGltZW91dCxcclxuICAgICAgICAgICAgICAgICAgICAncGFnZUxvYWQnOiB0aW1lb3V0XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnNldFRpbWVvdXQoe1xyXG4gICAgICAgICAgICAgICAgICAgICdpbXBsaWNpdCc6IHRpbWVvdXQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVzdG9yZVRpbWVvdXRJbXBsaWNpdDogYXN5bmMgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZJbXBsaWNpdFRpbWVvdXQgJiYgdGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ2ltcGxpY2l0JzogdGhpcy5fcHJldkltcGxpY2l0VGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZQYWdlTG9hZFRpbWVvdXQgJiYgdGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ3BhZ2VMb2FkJzogdGhpcy5fcHJldlBhZ2VMb2FkVGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnID09PSB1bmRlZmluZWQgfHwgYXJnID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIGlzIHJlcXVpcmVkLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50U3RyaW5nOiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgc3RyaW5nLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmc6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICghYXJnIHx8IHR5cGVvZiBhcmcgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIHNob3VsZCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnROdW1iZXI6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmU6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Qm9vbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9IHR5cGVvZih0cnVlKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgdHJ1ZSBvciBmYWxzZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBhc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YoYXJnKSAhPSB0eXBlb2YodHJ1ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIHRydWUgb3IgZmFsc2UuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnRUaW1lb3V0OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnICYmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlci5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb250ZXh0TGlzdDogY29udGV4dExpc3QsXHJcblxyXG4gICAgYXNzZXJ0Q29udGV4dDogYXN5bmMgZnVuY3Rpb24oLi4uYWxvd2VkQ29udGV4dHMpIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldENvbnRleHQoKTtcclxuICAgICAgICBjb25zdCBpc1dlYiA9IChjb250ZXh0ICYmIChjb250ZXh0LmluZGV4T2YoJ1dFQlZJRVcnKSA+IC0xIHx8IGNvbnRleHQuaW5kZXhPZignQ0hST01JVU0nKSA+IC0xKSk7XHJcblxyXG4gICAgICAgIGlmIChpc1dlYikge1xyXG4gICAgICAgICAgICBpZiAoYWxvd2VkQ29udGV4dHMuaW5jbHVkZXMoY29udGV4dExpc3Qud2ViKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5oeWJyaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5hbmRyb2lkKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5pb3MpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2Rpb0xvY2F0b3I6IGZ1bmN0aW9uKGxvY2F0b3IpIHtcclxuICAgICAgICBpZiAoIWxvY2F0b3IpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIGxvY2F0b3Igbm90IHNwZWNpZmllZCcpO1xyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBsb2NhdG9yID09PSAnb2JqZWN0JylcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCcvJykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlYXZlIHhwYXRoIGxvY2F0b3IgYXMgaXNcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIFhQYXRoIGluc3RlYWQgb2YgQ1NTIGZvciBicm93c2VyIHRlc3RzLCBzaW5jZSBJRCBjYW4gY29udGFpbiBpbGxlZ2FsIGNoYXJhY3RlcnNcclxuICAgICAgICAgICAgLy8gYW5kIGVzY2FwaW5nIGRvZXNuJ3Qgd29yayByZWxpYWJseSBvciBpbiBpZGVudGljYWwgbWFubmVyIGluIGFsbCBicm93c2VyXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiYgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYC8vKltAaWQ9XCIke2xvY2F0b3Iuc3Vic3RyKCdpZD0nLmxlbmd0aCl9XCJdYDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnIycgKyBsb2NhdG9yLnN1YnN0cignaWQ9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbmFtZT0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuICdbbmFtZT1cIicgKyBsb2NhdG9yLnN1YnN0cignbmFtZT0nLmxlbmd0aCkgKyAnXCJdJztcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbms9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPScgKyBsb2NhdG9yLnN1YnN0cignbGluaz0nLmxlbmd0aCk7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdsaW5rLWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gJyo9JyArIGxvY2F0b3Iuc3Vic3RyKCdsaW5rPScubGVuZ3RoKTtcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Nzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3Iuc3Vic3RyKCdjc3M9Jy5sZW5ndGgpOyAgICAgICAgICAgLy8gaW4gY2FzZSBvZiBjc3MsIGp1c3QgcmVtb3ZlIGNzcz0gcHJlZml4XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0YWc9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPCcgKyBsb2NhdG9yLnN1YnN0cigndGFnPScubGVuZ3RoKSArICcgLz4nO1xyXG5cclxuICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0TG9nVHlwZXM6IGZ1bmN0aW9uKGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoY29udGV4dCA9PT0gJ05BVElWRV9BUFAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ2xvZ2NhdCcsICdidWdyZXBvcnQnLCAnc2VydmVyJ107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnYnJvd3NlcicsICdkcml2ZXInXTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHByb3ZpZGVyOiBwcm92aWRlcnMsXHJcblxyXG4gICAgZGV0ZXJtaW5lUHJvdmlkZXI6IGZ1bmN0aW9uKHdkaW9PcHRzKSB7XHJcbiAgICAgICAgaWYgKCF3ZGlvT3B0cyB8fCAhd2Rpb09wdHMuY2FwYWJpbGl0aWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdkaW9PcHRzLmNhcGFiaWxpdGllc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddIHx8ICh3ZGlvT3B0cy5ob3N0bmFtZSAmJiB3ZGlvT3B0cy5ob3N0bmFtZS5pbmNsdWRlcygncGVyZmVjdG9tb2JpbGUuY29tJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlcnMuUEVSRkVDVE87XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2JzdGFjazpvcHRpb25zJ10pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5CUk9XU0VSU1RBQ0s7XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ3NhdWNlOm9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlNBVUNFTEFCUztcclxuICAgICAgICB9IGVsc2UgaWYgKHdkaW9PcHRzLmhvc3RuYW1lLmluY2x1ZGVzKCdsYW1iZGF0ZXN0JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5MQU1CREFURVNUO1xyXG4gICAgICAgIH0gZWxzZSBpZiAod2Rpb09wdHMuY2FwYWJpbGl0aWVzWyd0ZXN0aW5nQm90Om9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlRFU1RJTkdCT1Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0sXHJcblxyXG4gICAgaGFzQ2lyY3VsYXJEZXBlbmRlbmN5OiBmdW5jdGlvbiAob2JqKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob2JqKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmIChTdHJpbmcoZSkuaW5jbHVkZXMoJ0NvbnZlcnRpbmcgY2lyY3VsYXIgc3RydWN0dXJlIHRvIEpTT04nKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydENpcmN1bGFyOiBmdW5jdGlvbihvYmopIHtcclxuICAgICAgICBjb25zdCBoYXNDaXJjdWxhckRlcGVuZGVuY3kgPSB0aGlzLmhhc0NpcmN1bGFyRGVwZW5kZW5jeShvYmopO1xyXG4gICAgICAgIGlmIChoYXNDaXJjdWxhckRlcGVuZGVuY3kpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5DSVJDVUxBUl9FUlJPUiwgaGFzQ2lyY3VsYXJEZXBlbmRlbmN5KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59O1xyXG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.21.0",
3
+ "version": "1.22.0-beta.1",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {
@@ -47,7 +47,7 @@
47
47
  "npm-run-all": "4.1.5"
48
48
  },
49
49
  "dependencies": {
50
- "@applitools/eyes-webdriverio": "5.31.9",
50
+ "@applitools/eyes-webdriverio": "5.34.11",
51
51
  "@lambdatest/node-rest-client": "1.0.0",
52
52
  "@oxygenhq/chrome-remote-interface": "0.30.0",
53
53
  "@oxygenhq/logger": "0.5.1",
@@ -66,6 +66,7 @@
66
66
  "easyxml": "2.0.1",
67
67
  "ejs": "3.0.2",
68
68
  "esm": "3.2.25",
69
+ "fast-xml-parser": "^4.0.1",
69
70
  "fibers": "5.0.0",
70
71
  "glob": "7.1.7",
71
72
  "glob-to-regexp": "0.4.1",
@@ -86,20 +87,20 @@
86
87
  "perfecto-reporting": "2.5.3",
87
88
  "request": "2.88.2",
88
89
  "saucelabs": "3.0.1",
89
- "serialport": "9.2.0",
90
+ "serialport": "9.2.8",
90
91
  "soap": "0.43.0",
91
- "source-map-support": "0.5.19",
92
+ "source-map-support": "0.5.21",
92
93
  "stacktrace-parser": "0.1.10",
93
94
  "testdouble": "3.16.1",
94
95
  "testingbot-api": "1.0.7",
95
96
  "text-to-image": "2.4.4",
96
- "twilio": "3.66.1",
97
+ "twilio": "3.74.0",
97
98
  "webdriverio": "7.9.0",
98
99
  "when": "3.7.8",
99
100
  "xlsx": "0.17.4"
100
101
  },
101
102
  "optionalDependencies": {
102
- "odbc": "2.4.1"
103
+ "odbc": "2.4.2"
103
104
  },
104
105
  "scripts": {
105
106
  "build": "run-s clean compile",