oxygen-cli 1.24.6 → 1.24.7
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.
|
@@ -517,7 +517,7 @@ class MobileModule extends _WebDriverModule.default {
|
|
|
517
517
|
}
|
|
518
518
|
|
|
519
519
|
async _iterationEnd(error) {
|
|
520
|
-
if (error && error.type === _helper.default.errorCode.
|
|
520
|
+
if (error && error.type === _helper.default.errorCode.APPIUM_SESSION_TIMEOUT) {
|
|
521
521
|
this.seleniumSessionTimeout = true;
|
|
522
522
|
return;
|
|
523
523
|
} else {
|
|
@@ -699,4 +699,4 @@ class MobileModule extends _WebDriverModule.default {
|
|
|
699
699
|
}
|
|
700
700
|
|
|
701
701
|
exports.default = MobileModule;
|
|
702
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1tb2IuanMiXSwibmFtZXMiOlsiTU9EVUxFX05BTUUiLCJERUZBVUxUX0FQUElVTV9VUkwiLCJERUZBVUxUX0JST1dTRVJfTkFNRSIsIk5PX1NDUkVFTlNIT1RfQ09NTUFORFMiLCJBQ1RJT05fQ09NTUFORFMiLCJERUZBVUxUX1dBSVRfVElNRU9VVCIsIk1vYmlsZU1vZHVsZSIsIldlYkRyaXZlck1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsInRyYW5zYWN0aW9ucyIsImxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lIiwibmV0d29ya1JlcXVlc3RzIiwiaGVscGVycyIsImFwcENvbnRleHQiLCJfbG9hZEhlbHBlckZ1bmN0aW9ucyIsIk94RXJyb3IiLCJlcnJIZWxwZXIiLCJ3YWl0Rm9yVGltZW91dCIsIm5hbWUiLCJnZXREcml2ZXIiLCJnZXRDYXBhYmlsaXRpZXMiLCJjYXBzIiwiaW5pdCIsImFwcGl1bVVybCIsImlzSW5pdGlhbGl6ZWQiLCJyZW9wZW5TZXNzaW9uIiwiZGVidWciLCJkcml2ZXIiLCJyZWxvYWRTZXNzaW9uIiwiX2lzSW5pdGlhbGl6ZWQiLCJjdHgiLCJwbGF0Zm9ybU5hbWUiLCJwbGF0Zm9ybVZlcnNpb24iLCJkZXZpY2VOYW1lIiwiYnJvd3Nlck5hbWUiLCJhdXRvbWF0aW9uTmFtZSIsInVkaWQiLCJhcHAiLCJlbmFibGVBcHBpdW1CZWhhdmlvciIsInVzZUFwcGl1bUZvcldlYiIsImNvbGxlY3REZXZpY2VMb2dzIiwiYXBwUGFja2FnZSIsImJ1bmRsZUlkIiwidG9Mb3dlckNhc2UiLCJyZWNvcmRIQVIiLCJicm93c2VyIiwicGVyZm9ybWFuY2UiLCJ1cmwiLCJVUkwiLCJwYXJzZSIsInByb3RvY29sIiwicmVwbGFjZSIsImhvc3QiLCJob3N0bmFtZSIsInBvcnQiLCJwYXJzZUludCIsInBhdGgiLCJwYXRobmFtZSIsImF1dGgiLCJzcGxpdCIsIndkaW9PcHRzIiwidXNlciIsImtleSIsImNhcGFiaWxpdGllcyIsImxvZ0xldmVsIiwicnVubmVyIiwid2FpdGZvclRpbWVvdXQiLCJjb25uZWN0aW9uUmV0cnlUaW1lb3V0IiwiY29ubmVjdGlvblJldHJ5Q291bnQiLCJwcm92aWRlciIsIm1vZFV0aWxzIiwiZGV0ZXJtaW5lUHJvdmlkZXIiLCJQRVJGRUNUTyIsIm1heEluc3RhbmNlcyIsIm9wZW5EZXZpY2VUaW1lb3V0IiwibWFudWZhY3R1cmVyIiwibW9kZWwiLCJ3ZGlvIiwicmVtb3RlIiwic2VsZW5pdW1Ccm93c2VyVGltZW91dCIsInNlbGVuaXVtVGltZW91dCIsInBlcmZlY3RvRXhlY3V0aW9uQ29udGV4dCIsInBlcmZlY3RvUmVwb3J0aW5nIiwiUGVyZmVjdG8iLCJQZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQiLCJ3ZWJkcml2ZXIiLCJleGVjdXRlU2NyaXB0IiwiY29tbWFuZCIsInBhcmFtcyIsImV4ZWN1dGUiLCJyZXBvcnRpbmdDbGllbnQiLCJQZXJmZWN0b1JlcG9ydGluZ0NsaWVudCIsInRlc3RTdGFydCIsImUiLCJnZXRBcHBpdW1Jbml0RXJyb3IiLCJnZXRDb250ZXh0Iiwic2V0V2ViVmlld0NvbnRleHQiLCJCUk9XU0VSU1RBQ0siLCJzZXRUaW1lb3V0IiwiZGlzcG9zZSIsInN0YXR1cyIsInN0ZXBzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiZmFpbGVkRmluZGVkIiwiZmluZCIsIml0ZW0iLCJ0b1VwcGVyQ2FzZSIsInRlc3RTdG9wIiwiQ29uc3RhbnRzIiwicmVzdWx0cyIsInBhc3NlZCIsImZhaWxlZCIsIl9zZW5kUmVzdWx0U3RhdHVzVG9Ccm93c2Vyc3RhY2siLCJkZWxldGVTZXNzaW9uIiwiaW5jbHVkZXMiLCJzZWxlbml1bVNlc3Npb25UaW1lb3V0Iiwid2FybiIsInRyYW5zYWN0aW9uIiwiZ2xvYmFsIiwiX2xhc3RUcmFuc2FjdGlvbk5hbWUiLCJfaXNBY3Rpb24iLCJfdGFrZVNjcmVlbnNob3RTaWxlbnQiLCJlcnJvciIsInRha2VTY3JlZW5zaG90IiwicmV0dmFsIiwiY2FsbCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwid2FpdFVudGlsUmV0VmFsIiwid2FpdFVudGlsIiwiaW1hZ2VzIiwicHVzaEltYWdlVG9JbWFnZXMiLCJmZXRjaFRpdGxlIiwiaW1hZ2UiLCJ0aXRsZSIsImdldFRpdGxlIiwidGV4dFRvSW1hZ2UiLCJyZXF1aXJlIiwidGl0bGVJbWFnZSIsImdlbmVyYXRlIiwiZm9udEZhbWlseSIsInB1c2giLCJpc1dlYlZpZXdDb250ZXh0IiwiaGFuZGxlcyIsImdldFdpbmRvd0hhbmRsZXMiLCJoYW5kbGUiLCJzd2l0Y2hUb1dpbmRvdyIsIm1lcmdlZEltYWdlIiwiZGlyZWN0aW9uIiwidGltZW91dCIsInRoZW4iLCJjYXRjaCIsImVyciIsIl9hZGp1c3RBcHBpdW1Mb2ciLCJsb2ciLCJzcmMiLCJ0aW1lIiwidGltZXN0YW1wIiwibXNnIiwibWVzc2FnZSIsImxldmVsIiwiX2l0ZXJhdGlvblN0YXJ0IiwiX2l0ZXJhdGlvbkVuZCIsInR5cGUiLCJlcnJvckhlbHBlciIsImVycm9yQ29kZSIsIlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCIsImxvZ3MiLCJnZXREZXZpY2VMb2dzIiwiY29sbGVjdEJyb3dzZXJMb2dzIiwiZ2V0QnJvd3NlckxvZ3MiLCJjb2xsZWN0QXBwaXVtTG9ncyIsImdldEFwcGl1bUxvZ3MiLCJsb2dFbnRyeSIsIl9nZXRXZGlvTG9jYXRvciIsImxvY2F0b3IiLCJTQ1JJUFRfRVJST1IiLCJpbmRleE9mIiwicGxhdGZvcm0iLCJzdWJzdHIiLCJnZXRXZGlvTG9jYXRvciIsIm1hdGNoUGF0dGVybiIsImdldEVsZW1lbnQiLCJnZXRFbGVtZW50cyIsImdldENoaWxkRWxlbWVudCIsImdldENoaWxkRWxlbWVudHMiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJyZXN0b3JlVGltZW91dEltcGxpY2l0IiwiYXNzZXJ0QXJndW1lbnQiLCJhc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nIiwiYXNzZXJ0QXJndW1lbnROdW1iZXIiLCJhc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlIiwiYXNzZXJ0QXJndW1lbnRCb29sIiwiYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwiLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJhc3NlcnRDb250ZXh0IiwiY29udGV4dExpc3QiLCJnZXRMb2dUeXBlcyIsInJlcXVlc3RCb2R5Iiwic2Vzc2lvbklkIiwibWV0aG9kIiwianNvbiIsInJlamVjdFVuYXV0aG9yaXplZCIsImJvZHkiLCJyZXMiLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFHQSxNQUFNQSxXQUFXLEdBQUcsS0FBcEI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyw4QkFBM0I7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxTQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQUMsTUFBRCxFQUFTLGFBQVQsQ0FBL0I7QUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FBQyxNQUFELEVBQVEsS0FBUixFQUFjLE9BQWQsRUFBc0IsT0FBdEIsRUFBOEIsUUFBOUIsRUFBdUMsVUFBdkMsQ0FBeEI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxLQUFLLElBQWxDLEMsQ0FB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QUFrQixFQUFFLEtBSmQ7QUFLTkMsVUFBQUEsSUFBSSxFQUFFTCxXQUxBO0FBTU4sa0JBQVE7QUFDSixvQkFBUSxLQUFLN0ksUUFBTCxDQUFjRyxZQUFkLENBQTJCLG1CQUEzQixDQURKO0FBRUosb0JBQVEsS0FBS0gsUUFBTCxDQUFjRyxZQUFkLENBQTJCLGtCQUEzQixDQUZKO0FBR0osK0JBQW1CO0FBSGY7QUFORixTQUFWO0FBWUg7O0FBRUQsVUFBSTtBQUNBLDhCQUFRNUQsT0FBUixFQUFpQixDQUFDd0osR0FBRCxFQUFNb0QsR0FBTixFQUFXRCxJQUFYLEtBQW9CO0FBQ2pDN0UsVUFBQUEsT0FBTztBQUNWLFNBRkQ7QUFHSCxPQUpELENBSUUsT0FBT3BDLENBQVAsRUFBVTtBQUNSLGFBQUt2RixNQUFMLENBQVlzSCxLQUFaLENBQWtCLG1EQUFtRC9CLENBQUMsQ0FBQ21ILFFBQUYsRUFBckU7QUFDQS9FLFFBQUFBLE9BQU87QUFDVjtBQUNKLEtBM0NNLENBQVA7QUE0Q0g7O0FBcmxCcUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbid1c2Ugc3RyaWN0JztcclxuLyoqXHJcbiAqIEBuYW1lIG1vYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3IgbW9iaWxlIGF1dG9tYXRpb24uXHJcbiAqIEBzYW1wbGUgKipMb2NhdG9yczoqKiAgXHJcbiAqIFxyXG4gKiBOYXRpdmUgYXBwbGljYXRpb24gbG9jYXRvcnMgZm9yIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy9hbmRyb2lkLnBuZykgIFxyXG4gKiAqIGAvWFBBVEhgIC0gTG9jYXRlcyBlbGVtZW50IHVzaW5nIGFuIFhQYXRoIDEuMCBleHByZXNzaW9uLlxyXG4gKiAqIGB+QUNDRVNTSUJJTElUWV9JRGAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIEFjY2Vzc2liaWxpdHkgSWQuXHJcbiAqICogYGlkPUlEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgaWQuXHJcbiAqICogYGNsYXNzPUNMQVNTYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgY2xhc3MuXHJcbiAqICogYHRleHQ9VEVYVGAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIHZpc2libGUgdGV4dC5cclxuICogKiBgdGV4dC1jb250YWlucz1URVhUYCAtIExvY2F0ZXMgZWxlbWVudCB3aG9zZSB2aXNpYmxlIHRleHQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcuXHJcbiAqICogYGRlc2M9REVTQ1JJUFRJT05gIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBkZXNjcmlwdGlvbi5cclxuICogKiBgZGVzYy1jb250YWlucz1ERVNDUklQVElPTmAgLSBMb2NhdGVzIGVsZW1lbnQgd2hvc2UgZGVzY3JpcHRpb24gY29udGFpbnMgdGhlIHNwZWNpZmllZCBzdHJpbmcuXHJcbiAqICogYHNjcm9sbGFibGVgIC0gTG9jYXRlcyBlbGVtZW50cyB0aGF0IGFyZSBzY3JvbGxhYmxlLiAgXHJcbiAqICBcclxuICogTmF0aXZlIGFwcGxpY2F0aW9uIGxvY2F0b3JzIGZvciFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYXBwbGUucG5nKSAgXHJcbiAqICBcclxuICogKiBgL1hQQVRIYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhbiBYUGF0aCAxLjAgZXhwcmVzc2lvbi5cclxuICogKiBgaWQ9SURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBJRC5cclxuICogKiBgfkFDQ0VTU0lCSUxJVFlfSURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBBY2Nlc3NpYmlsaXR5IElkLiAgXHJcbiAqICogYC1pb3MgcHJlZGljYXRlIHN0cmluZzpQUkVESUNBVEVfU1RSSU5HYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhIFtwcmVkaWNhdGUgcXVlcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9va2FyY2hpdmUvV2ViRHJpdmVyQWdlbnQvd2lraS9QcmVkaWNhdGUtUXVlcmllcy1Db25zdHJ1Y3Rpb24tUnVsZXMpLiAgXHJcbiAqICogYC1pb3MgY2xhc3MgY2hhaW46Q0xBU1NfQ0hBSU5gIC0gTG9jYXRlcyBlbGVtZW50IHVzaW5nIGEgW2NsYXNzIGNoYWluIGV4cHJlc3Npb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9va2FyY2hpdmUvV2ViRHJpdmVyQWdlbnQvd2lraS9DbGFzcy1DaGFpbi1RdWVyaWVzLUNvbnN0cnVjdGlvbi1SdWxlcykuICBcclxuICogIFxyXG4gKiBIeWJyaWQhW10oLi4vLi4vLmdpdGJvb2svYXNzZXRzL2h5YnJpZC5wbmcpICBhbmQgV2ViIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy93ZWIucG5nKSAgYXBwbGljYXRpb24gbG9jYXRvcnMgZm9yIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy9hbmRyb2lkLnBuZykgICFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYXBwbGUucG5nKSAgXHJcbiAqICBcclxuICogKiBgL1hQQVRIYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhbiBYUGF0aCAxLjAgZXhwcmVzc2lvbi5cclxuICogKiBgaWQ9SURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBpZC5cclxuICogKiBgbmFtZT1OQU1FYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgbmFtZSBhdHRyaWJ1dGUuXHJcbiAqICogYHRhZz1OQU1FYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgdGFnIG5hbWUuXHJcbiAqICogYGxpbms9VEVYVGAgLSBMb2NhdGVzIGFuY2hvciBlbGVtZW50IHdob3NlIHRleHQgbWF0Y2hlcyB0aGUgZ2l2ZW4gc3RyaW5nLlxyXG4gKiAqIGBsaW5rLWNvbnRhaW5zPVRFWFRgIC0gTG9jYXRlcyBhbmNob3IgZWxlbWVudCB3aG9zZSB0ZXh0IGNvbnRhaW5zIHRoZSBnaXZlbiBzdHJpbmcuXHJcbiAqICogYGNzcz1DU1NfU0VMRUNUT1JgIC0gTG9jYXRlcyBlbGVtZW50IHVzaW5nIGEgQ1NTIHNlbGVjdG9yLlxyXG4gKiBcclxuICogKipQYXR0ZXJuIGFyZ3VtZW50czoqKlxyXG4gKiBcclxuICogQ29tbWFuZHMgd2hpY2ggZXhwZWN0IGEgc3RyaW5nIG1hdGNoaW5nIHBhdHRlcm4gaW4gdGhlaXIgYXJndW1lbnRzLCBzdXBwb3J0IGZvbGxvd2luZyBwYXR0ZXJucyB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZTpcclxuICogXHJcbiAqICogYHJlZ2V4OlBBVFRFUk5gIC0gTWF0Y2ggdXNpbmcgcmVndWxhciBleHByZXNzaW9uLlxyXG4gKiAqIGBQQVRURVJOYCAtIFZlcmJhdGltIG1hdGNoaW5nLlxyXG4gKiBcclxuICovXHJcbmltcG9ydCBVUkwgZnJvbSAndXJsJztcclxuaW1wb3J0ICogYXMgd2RpbyBmcm9tICd3ZWJkcml2ZXJpbyc7XHJcbmltcG9ydCBXZWJEcml2ZXJNb2R1bGUgZnJvbSAnLi4vY29yZS9XZWJEcml2ZXJNb2R1bGUnO1xyXG5pbXBvcnQgbW9kVXRpbHMgZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBwZXJmZWN0b1JlcG9ydGluZyBmcm9tICdwZXJmZWN0by1yZXBvcnRpbmcnO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tICdyZXF1ZXN0JztcclxuaW1wb3J0IG1lcmdlSW1hZ2VzIGZyb20gJy4uL2xpYi9pbWctbWVyZ2UnO1xyXG5pbXBvcnQgZXJyb3JIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcblxyXG5jb25zdCBNT0RVTEVfTkFNRSA9ICdtb2InO1xyXG5jb25zdCBERUZBVUxUX0FQUElVTV9VUkwgPSAnaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1Yic7XHJcbmNvbnN0IERFRkFVTFRfQlJPV1NFUl9OQU1FID0gJ2RlZmF1bHQnO1xyXG5jb25zdCBOT19TQ1JFRU5TSE9UX0NPTU1BTkRTID0gWydpbml0JywgJ2Fzc2VydEFsZXJ0J107XHJcbmNvbnN0IEFDVElPTl9DT01NQU5EUyA9IFsnb3BlbicsJ3RhcCcsJ2NsaWNrJywnc3dpcGUnLCdzdWJtaXQnLCdzZXRWYWx1ZSddO1xyXG5jb25zdCBERUZBVUxUX1dBSVRfVElNRU9VVCA9IDYwICogMTAwMDsgICAgICAgICAgICAvLyBkZWZhdWx0IDYwcyB3YWl0IHRpbWVvdXRcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vYmlsZU1vZHVsZSBleHRlbmRzIFdlYkRyaXZlck1vZHVsZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKTtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9ucyA9IHt9O1xyXG4gICAgICAgIHRoaXMubGFzdE5hdmlnYXRpb25TdGFydFRpbWUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMubmV0d29ya1JlcXVlc3RzID0gbnVsbDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMgPSB7fTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHQgPSAnTkFUSVZFX0FQUCc7XHJcbiAgICAgICAgdGhpcy5fbG9hZEhlbHBlckZ1bmN0aW9ucygpO1xyXG4gICAgICAgIC8vIHN1cHBvcnQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoc29tZSBtb2R1bGUgY29tbWFuZHMgbWlnaHQgcmVmZXIgdG8gdGhpcy5PeEVycm9yIGFuZCB0aGlzLmVyckhlbHBlcilcclxuICAgICAgICB0aGlzLk94RXJyb3IgPSBPeEVycm9yO1xyXG4gICAgICAgIHRoaXMuZXJySGVscGVyID0gZXJySGVscGVyO1xyXG4gICAgICAgIC8vIGhvbGRzIGVsZW1lbnQgb3BlcmF0aW9uIHRpbWVvdXQgdmFsdWVcclxuICAgICAgICB0aGlzLndhaXRGb3JUaW1lb3V0ID0gREVGQVVMVF9XQUlUX1RJTUVPVVQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIE1PRFVMRV9OQU1FO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGZ1bmN0aW9uIGdldERyaXZlclxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgdW5kZXJseWluZyBXRElPIGRyaXZlci5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gV0RJTyBkcml2ZXIuXHJcbiAgICAgKi9cclxuICAgIGdldERyaXZlcigpIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0RHJpdmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0Q2FwYWJpbGl0aWVzXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGN1cnJlbnRseSBkZWZpbmVkIGNhcGFiaWxpdGllcy5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gQ3VycmVudCBjYXBhYmlsaXRpZXMgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBnZXRDYXBhYmlsaXRpZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FwcyB8fCBzdXBlci5nZXRDYXBhYmlsaXRpZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBmdW5jdGlvbiBpbml0XHJcbiAgICAgKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIG5ldyBBcHBpdW0gc2Vzc2lvbi5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gY2FwcyAtIERlc2lyZWQgY2FwYWJpbGl0aWVzLiBJZiBub3Qgc3BlY2lmaWVkIGNhcGFiaWxpdGllcyB3aWxsIGJlIHRha2VuIGZyb20gc3VpdGUgZGVmaW5pdGlvbi5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gYXBwaXVtVXJsIC0gUmVtb3RlIEFwcGl1bSBzZXJ2ZXIgVVJMIChkZWZhdWx0OiBodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViKS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgaW5pdChjYXBzLCBhcHBpdW1VcmwpIHtcclxuICAgICAgICAvLyBpZiByZW9wZW5TZXNzaW9uIGlzIHRydWUgLSByZWluaXRpbGl6ZSB0aGUgbW9kdWxlXHJcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlb3BlblNlc3Npb24gIT09IGZhbHNlKSB7IC8vIHRydWUgb3IgZmFsc2UgaWYgZXhwbGlzaXRseSBzZXQuIHRydWUgb24gbnVsbCBvciB1bmRlZmluZWQuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygncmVvcGVuU2Vzc2lvbiBpcyB0cnVlIC0gcmVsb2FkaW5nIHRoZSBzZXNzaW9uLi4uJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci5yZWxvYWRTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdtb2IuaW5pdCB3YXMgY2FsbGVkIGZvciBhbHJlYWR5IGluaXRpYWxpemVkIG1vZHVsZS4gcmVvcGVuU2Vzc2lvbiBpcyBmYWxzZSBzbyB0aGUgY2FsbCBpcyBpZ25vcmVkLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSByZWZhY3RvcmVkXHJcbiAgICAgICAgaWYgKHRoaXMuY3R4LmNhcHMgJiYgdGhpcy5jdHguY2Fwc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddKSB7XHJcbiAgICAgICAgICAgIGlmIChjYXBzKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgY2Fwcy5wbGF0Zm9ybU5hbWU7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgY2Fwcy5wbGF0Zm9ybVZlcnNpb247XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgY2Fwcy5kZXZpY2VOYW1lO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMuYnJvd3Nlck5hbWU7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgY2Fwcy5hdXRvbWF0aW9uTmFtZTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBjYXBzLnVkaWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNhcHMuYXBwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2Fwcy5lbmFibGVBcHBpdW1CZWhhdmlvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcHMudXNlQXBwaXVtRm9yV2ViID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjYXBzLmVuYWJsZUFwcGl1bUJlaGF2aW9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3R4LmNhcHMudXNlQXBwaXVtRm9yV2ViID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3R4LmNhcHMuZW5hYmxlQXBwaXVtQmVoYXZpb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWFwcGl1bVVybCkge1xyXG4gICAgICAgICAgICBhcHBpdW1VcmwgPSB0aGlzLm9wdGlvbnMuYXBwaXVtVXJsIHx8IERFRkFVTFRfQVBQSVVNX1VSTDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG1lcmdlIGNhcGFiaWxpdGllcyBmcm9tIGNvbnRleHQgYW5kIGZyb20gaW5pdCBmdW5jdGlvbiBhcmd1bWVudCwgZ2l2ZSBwcmVmZXJlbmNlIHRvIGNvbnRleHQtcGFzc2VkIGNhcGFiaWxpdGllc1xyXG4gICAgICAgIHRoaXMuY2FwcyA9IHt9O1xyXG4gICAgICAgIGlmICh0aGlzLmN0eC5jYXBzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FwcyA9IHsgLi4udGhpcy5jdHguY2FwcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2Fwcykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHMgPSB7IC4uLnRoaXMuY2FwcywgLi4uY2FwcyB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIHRvIGNsZWFyIHRoZSBleGlzdGluZyBkZXZpY2UgbG9ncywgaWYgY29sbGVjdERldmljZUxvZ3Mgb3B0aW9uIGlzIHRydWUgKHdlIHdhbnQgdG8gaW5jbHVkZSBsb2dzIG9ubHkgcmVsZXZhbnQgZm9yIHRoaXMgc2Vzc2lvbilcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxlY3REZXZpY2VMb2dzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2Fwc1snYXBwaXVtOmNsZWFyRGV2aWNlTG9nc09uU3RhcnQnXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZiBib3RoIGJyb3dzZXJOYW1lIGFuZCBhcHBQYWNrYWdlL2FwcC9idW5kbGVJZCB3ZXJlIHNwZWNpZmllZCAtIGFzc3VtZSB3ZSB3YW50IHRvIHJ1biB0aGUgYXBwbGljYXRpb24gYW5kIHJlbW92ZSBicm93c2VyTmFtZVxyXG4gICAgICAgIGlmICh0aGlzLmNhcHMuYnJvd3Nlck5hbWUgJiYgKHRoaXMuY2Fwcy5hcHBQYWNrYWdlIHx8IHRoaXMuY2Fwcy5hcHAgfHwgdGhpcy5jYXBzLmJ1bmRsZUlkKSkge1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5jYXBzLmJyb3dzZXJOYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiBubyBhcHBQYWNrYWdlL2FwcC9idW5kbGVJZCBjYXBhYmlsaXR5IG5vciBicm93c2VyTmFtZSBhcmUgZGVmaW5lZCwgYXNzdW1lIHdlIHdhbnQgdG8gcnVuIHRoZSB0ZXN0IGFnYWluc3QgZGVmYXVsdCBicm93c2VyXHJcbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuY2Fwcy5icm93c2VyTmFtZSAmJiAhdGhpcy5jYXBzLmFwcFBhY2thZ2UgJiYgIXRoaXMuY2Fwcy5hcHAgJiYgIXRoaXMuY2Fwcy5idW5kbGVJZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHMuYnJvd3Nlck5hbWUgPSBERUZBVUxUX0JST1dTRVJfTkFNRTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2ViZHJpdmVyIGV4cGVjdHMgbG93ZXIgY2FzZSBuYW1lc1xyXG4gICAgICAgIGlmICh0aGlzLmNhcHMuYnJvd3Nlck5hbWUgJiYgdHlwZW9mIHRoaXMuY2Fwcy5icm93c2VyTmFtZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXBzLmJyb3dzZXJOYW1lID0gdGhpcy5jYXBzLmJyb3dzZXJOYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFkanVzdCBjYXBhYmlsaXRpZXMgdG8gZW5hYmxlIGNvbGxlY3RpbmcgYnJvd3NlciBhbmQgcGVyZm9ybWFuY2Ugc3RhdHMgaW4gQ2hyb21lIFxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVjb3JkSEFSICYmIHRoaXMuY2Fwcy5icm93c2VyTmFtZSA9PT0gJ2Nocm9tZScpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXBzWydnb29nOmxvZ2dpbmdQcmVmcyddID0geyAgICAgLy8gZm9yIENocm9tZURyaXZlciA+PSA3NVxyXG4gICAgICAgICAgICAgICAgYnJvd3NlcjogJ0FMTCcsXHJcbiAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZTogJ0FMTCdcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHBvcHVsYXRlIFdESU8gb3B0aW9uc1xyXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5wYXJzZShhcHBpdW1VcmwpO1xyXG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gdXJsLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpO1xyXG4gICAgICAgIGNvbnN0IGhvc3QgPSB1cmwuaG9zdG5hbWU7XHJcbiAgICAgICAgY29uc3QgcG9ydCA9IHBhcnNlSW50KHVybC5wb3J0IHx8IChwcm90b2NvbCA9PT0gJ2h0dHBzJyA/IDQ0MyA6IDgwKSk7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IHVybC5wYXRobmFtZTtcclxuXHJcbiAgICAgICAgLy8gYXV0aCBpcyBuZWVkZWQgbW9zdGx5IGZvciBjbG91ZCBwcm92aWRlcnMgc3VjaCBhcyBMYW1iZGFUZXN0XHJcbiAgICAgICAgaWYgKHVybC5hdXRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGF1dGggPSB1cmwuYXV0aC5zcGxpdCgnOicpO1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMud2Rpb09wdHMgPSB7XHJcbiAgICAgICAgICAgICAgICB1c2VyOiBhdXRoWzBdLFxyXG4gICAgICAgICAgICAgICAga2V5OiBhdXRoWzFdXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgd2Rpb09wdHMgPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy53ZGlvT3B0cyB8fCB7fSxcclxuICAgICAgICAgICAgcHJvdG9jb2w6IHByb3RvY29sLFxyXG4gICAgICAgICAgICBob3N0bmFtZTogaG9zdCxcclxuICAgICAgICAgICAgcG9ydDogcG9ydCxcclxuICAgICAgICAgICAgcGF0aDogcGF0aCxcclxuICAgICAgICAgICAgY2FwYWJpbGl0aWVzOiB0aGlzLmNhcHMsXHJcbiAgICAgICAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcclxuICAgICAgICAgICAgcnVubmVyOiAncmVwbCcsXHJcbiAgICAgICAgICAgIHdhaXRmb3JUaW1lb3V0OiA1MDAwLCAvLyBpbmNyZWFzZSB0aGUgZGVmYXVsdCAzMDAwXHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb25SZXRyeVRpbWVvdXQ6IDMxMCoxMDAwLFxyXG4gICAgICAgICAgICBjb25uZWN0aW9uUmV0cnlDb3VudDogMVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxldCBwcm92aWRlciA9IG1vZFV0aWxzLmRldGVybWluZVByb3ZpZGVyKHdkaW9PcHRzKTtcclxuICAgICAgICBsZXQgbmFtZSA9ICduYW1lJztcclxuXHJcbiAgICAgICAgaWYgKHByb3ZpZGVyID09PSBtb2RVdGlscy5wcm92aWRlci5QRVJGRUNUTykge1xyXG4gICAgICAgICAgICB3ZGlvT3B0cy5jYXBhYmlsaXRpZXMubWF4SW5zdGFuY2VzID0gMTtcclxuICAgICAgICAgICAgd2Rpb09wdHMucGF0aCA9ICcvbmV4cGVyaWVuY2UvcGVyZmVjdG9tb2JpbGUvd2QvaHViJztcclxuICAgICAgICAgICAgd2Rpb09wdHMucG9ydCA9IDgwO1xyXG4gICAgICAgICAgICB3ZGlvT3B0cy5wcm90b2NvbCA9ICdodHRwJztcclxuICAgICAgICAgICAgd2Rpb09wdHMub3BlbkRldmljZVRpbWVvdXQgPSAxNTtcclxuXHJcbiAgICAgICAgICAgIGRlbGV0ZSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXMubWFudWZhY3R1cmVyO1xyXG4gICAgICAgICAgICBkZWxldGUgd2Rpb09wdHMuY2FwYWJpbGl0aWVzLm1vZGVsO1xyXG4gICAgICAgICAgICBkZWxldGUgd2Rpb09wdHMuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lO1xyXG4gICAgICAgICAgICBkZWxldGUgd2Rpb09wdHMuY2FwYWJpbGl0aWVzLmhvc3Q7XHJcblxyXG4gICAgICAgICAgICBuYW1lID0gd2Rpb09wdHMuY2FwYWJpbGl0aWVzWydwZXJmZWN0b01vYmlsZTpvcHRpb25zJ11bJ25hbWUnXTtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdkaW9PcHRzLmNhcGFiaWxpdGllc1snYnN0YWNrOm9wdGlvbnMnXSAmJiB3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2JzdGFjazpvcHRpb25zJ11bJ25hbWUnXSkge1xyXG4gICAgICAgICAgICBuYW1lID0gd2Rpb09wdHMuY2FwYWJpbGl0aWVzWydic3RhY2s6b3B0aW9ucyddWyduYW1lJ107XHJcbiAgICAgICAgICAgIGRlbGV0ZSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2JzdGFjazpvcHRpb25zJ107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLndkaW9PcHRzID0gd2Rpb09wdHM7XHJcblxyXG4gICAgICAgIC8vIGluaXQgd2ViZHJpdmVyXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIgPSBhd2FpdCB3ZGlvLnJlbW90ZSh3ZGlvT3B0cyk7XHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyLnByb3ZpZGVyID0gcHJvdmlkZXI7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQgPSB0aGlzLm9wdGlvbnMuc2VsZW5pdW1Ccm93c2VyVGltZW91dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZWxlbml1bVRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLnNlbGVuaXVtVGltZW91dCA9IHRoaXMub3B0aW9ucy5zZWxlbml1bVRpbWVvdXQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChwcm92aWRlciA9PT0gbW9kVXRpbHMucHJvdmlkZXIuUEVSRkVDVE8pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBlcmZlY3RvRXhlY3V0aW9uQ29udGV4dCA9IGF3YWl0IG5ldyBwZXJmZWN0b1JlcG9ydGluZy5QZXJmZWN0by5QZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHdlYmRyaXZlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlU2NyaXB0OiBhc3luYyAoY29tbWFuZCwgcGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5kcml2ZXIuZXhlY3V0ZShjb21tYW5kLCBwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydGluZ0NsaWVudCA9IG5ldyBwZXJmZWN0b1JlcG9ydGluZy5QZXJmZWN0by5QZXJmZWN0b1JlcG9ydGluZ0NsaWVudChwZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXBvcnRpbmdDbGllbnQudGVzdFN0YXJ0KG5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBlcnJIZWxwZXIuZ2V0QXBwaXVtSW5pdEVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0ID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0Q29udGV4dCgpO1xyXG5cclxuICAgICAgICAvLyBpZiB3ZSBhcmUgcnVubmluZyBvbiBBbmRyb2lkIDcrIGVtdWxhdG9yLCBhbmQgdGh1cy9vciB1c2luZyBhIFdlYlZpZXcgQnJvd3NlciBUZXN0ZXIgLVxyXG4gICAgICAgIC8vIHBlcmZvcm0gYW4gYWN0dWFsIGFwcENvbnRleHQgc3dpdGNoIHRvIFdFQlxyXG4gICAgICAgIC8vIHNvIEFwcGl1bSB3aWxsIGRlbGVnYXRlIGNvbW1hbmRzIHRvIENocm9tZSBEcml2ZXIgaW5zdGVhZCBvZiBBcHBpdW0gRHJpdmVyXHJcbiAgICAgICAgaWYgKHRoaXMuY2Fwcy5icm93c2VyTmFtZSA9PT0gICdjaHJvbWl1bS13ZWJ2aWV3Jykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFdlYlZpZXdDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLkJST1dTRVJTVEFDSykge1xyXG4gICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgLy8gZmFpbHMgb24gYnJvd3NlcnN0YWNrXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc2V0VGltZW91dCh7ICdpbXBsaWNpdCc6IHRoaXMud2FpdEZvclRpbWVvdXQgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1cGVyLmluaXQodGhpcy5kcml2ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGZ1bmN0aW9uIGRpc3Bvc2VcclxuICAgICAqIEBzdW1tYXJ5IEVuZHMgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gc3RhdHVzIC0gVGVzdCBzdGF0dXMsIGVpdGhlciBgcGFzc2VkYCBvciBgZmFpbGVkYC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZGlzcG9zZShzdGF0dXMpIHtcclxuICAgICAgICBpZiAoIXN0YXR1cykge1xyXG4gICAgICAgICAgICBzdGF0dXMgPSAncGFzc2VkJztcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJzLnN0ZXBzICYmIEFycmF5LmlzQXJyYXkodGhpcy5ycy5zdGVwcykgJiYgdGhpcy5ycy5zdGVwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWlsZWRGaW5kZWQgPSB0aGlzLnJzLnN0ZXBzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uc3RhdHVzID09PSAnZmFpbGVkJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmFpbGVkRmluZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gJ2ZhaWxlZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyaXZlciAmJiB0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgc3RhdHVzID0gc3RhdHVzLnRvVXBwZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kcml2ZXIucHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLlBFUkZFQ1RPKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlcG9ydGluZ0NsaWVudC50ZXN0U3RvcCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMgPT09ICdQQVNTRUQnID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmZWN0b1JlcG9ydGluZy5Db25zdGFudHMucmVzdWx0cy5wYXNzZWQgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZlY3RvUmVwb3J0aW5nLkNvbnN0YW50cy5yZXN1bHRzLmZhaWxlZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcml2ZXIucHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLkJST1dTRVJTVEFDSykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fc2VuZFJlc3VsdFN0YXR1c1RvQnJvd3NlcnN0YWNrKHN0YXR1cyk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmICghWydDQU5DRUxFRCcsICdGQUlMRUQnXS5pbmNsdWRlcyhzdGF0dXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZW5pdW1TZXNzaW9uVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlU2Vzc2lvbiB3aWxsIHRha2UgNSBtaW4gdG8gY2FsbFxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLmRlbGV0ZVNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0Vycm9yIGRpc3Bvc2luZyBkcml2ZXI6ICcgKyBlKTsgICAgLy8gaWdub3JlIGFueSBlcnJvcnMgYXQgZGlzcG9zYWwgc3RhZ2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmRyaXZlciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMubGFzdE5hdmlnYXRpb25TdGFydFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICBzdXBlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IE9wZW5zIG5ldyB0cmFuc2FjdGlvbi5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gd2lsbCBwZXJzaXN0IHRpbGwgYSBuZXcgb25lIGlzIG9wZW5lZC4gVHJhbnNhY3Rpb24gbmFtZXMgbXVzdCBiZVxyXG4gICAgICogICAgICAgICAgICAgIHVuaXF1ZS5cclxuICAgICAqIEBmdW5jdGlvbiB0cmFuc2FjdGlvblxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgdHJhbnNhY3Rpb24gbmFtZS5cclxuICAgICAqIEBmb3IgYW5kcm9pZCwgaW9zLCBoeWJyaWQsIHdlYlxyXG4gICAgICovXHJcbiAgICB0cmFuc2FjdGlvbihuYW1lKSB7XHJcbiAgICAgICAgZ2xvYmFsLl9sYXN0VHJhbnNhY3Rpb25OYW1lID0gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogUHJpdmF0ZVxyXG4gICAgICovXHJcblxyXG4gICAgX2lzQWN0aW9uKG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gQUNUSU9OX0NPTU1BTkRTLmluY2x1ZGVzKG5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIF90YWtlU2NyZWVuc2hvdFNpbGVudChuYW1lKSB7XHJcbiAgICAgICAgaWYgKCFOT19TQ1JFRU5TSE9UX0NPTU1BTkRTLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICAgIGxldCBlcnJvcjtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyaXZlciAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLnRha2VTY3JlZW5zaG90XHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmV0dmFsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhbGwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2FpdFVudGlsUmV0VmFsID0gdGhpcy5kcml2ZXIud2FpdFVudGlsKGFzeW5jKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbWFnZXMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHB1c2hJbWFnZVRvSW1hZ2VzID0gYXN5bmMoZmV0Y2hUaXRsZSA9IHRydWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlID0gYXdhaXQgdGhpcy5kcml2ZXIudGFrZVNjcmVlbnNob3QoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaFRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBhd2FpdCB0aGlzLmRyaXZlci5nZXRUaXRsZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0VG9JbWFnZSA9IHJlcXVpcmUoJ3RleHQtdG8taW1hZ2UnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlSW1hZ2UgPSBhd2FpdCB0ZXh0VG9JbWFnZS5nZW5lcmF0ZSh0aXRsZSwgeyBkZWJ1ZzogZmFsc2UsIGZvbnRGYW1pbHk6ICdBcmlhbCcgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZUltYWdlICYmIHR5cGVvZiB0aXRsZUltYWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVJbWFnZSA9IHRpdGxlSW1hZ2UucmVwbGFjZSgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcsICcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKHRpdGxlSW1hZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcy5wdXNoKGltYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzV2ViVmlld0NvbnRleHQgPSBhd2FpdCB0aGlzLmlzV2ViVmlld0NvbnRleHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzV2ViVmlld0NvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbGxlY3QgYWxsIChzY3JlZW5zaG90IGFuZCB0aXRsZSkgaW1hZ2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVzID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0V2luZG93SGFuZGxlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGhhbmRsZXMpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcy5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhhbmRsZSBvZiBoYW5kbGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnN3aXRjaFRvV2luZG93KGhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHB1c2hJbWFnZVRvSW1hZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHVzaEltYWdlVG9JbWFnZXMoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSBhbGwgaW1hZ2VzIGludG8gb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZEltYWdlID0gYXdhaXQgbWVyZ2VJbWFnZXMoaW1hZ2VzLCB7IGRpcmVjdGlvbjogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lcmdlZEltYWdlICYmIHR5cGVvZiBtZXJnZWRJbWFnZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IG1lcmdlZEltYWdlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJywgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHRpbWVvdXQ6IDMwKjEwMDAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhaXRVbnRpbFJldFZhbCAmJiB3YWl0VW50aWxSZXRWYWwudGhlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRVbnRpbFJldFZhbC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IGdldCBzY3JlZW5zaG90JywgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBnZXQgc2NyZWVuc2hvdCcsIGUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBnZXQgc2NyZWVuc2hvdCBpbm5lciBlcnJvcicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIF9nZXRMb2dzKG5hbWUpIHtcclxuICAgIC8vICAgICBpZiAoIU5PX0xPR1NfQ09NTUFORFMuaW5jbHVkZXMobmFtZSkpIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9ncygpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICBfYWRqdXN0QXBwaXVtTG9nKGxvZywgc3JjKSB7XHJcbiAgICAgICAgaWYgKCFsb2cgfHwgdHlwZW9mIGxvZyAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRPRE86IGNvbnZlcnQgbG9nLnRpbWVzdGFtcCBmcm9tIHRoZSBkZXZpY2UgdGltZSB6b25lIHRvIHRoZSBsb2NhbCBvbmUgKHNvIHdlIGNhbiBsYXRlciBjb3JyZWxhdGUgYmV0d2VlbiBzdGVwcyBhbmQgbG9ncykgICAgICAgIFxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpbWU6IGxvZy50aW1lc3RhbXAsXHJcbiAgICAgICAgICAgIG1zZzogbG9nLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGxldmVsOiBsb2cubGV2ZWwsXHJcbiAgICAgICAgICAgIHNyYzogc3JjXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBfaXRlcmF0aW9uU3RhcnQoKSB7XHJcbiAgICAgICAgLy8gY2xlYXIgdHJhbnNhY3Rpb24gbmFtZSBzYXZlZCBpbiBwcmV2aW91cyBpdGVyYXRpb24gaWYgYW55XHJcbiAgICAgICAgZ2xvYmFsLl9sYXN0VHJhbnNhY3Rpb25OYW1lID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfaXRlcmF0aW9uRW5kKGVycm9yKSB7XHJcbiAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLnR5cGUgPT09IGVycm9ySGVscGVyLmVycm9yQ29kZS5TRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlbml1bVNlc3Npb25UaW1lb3V0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZW5pdW1TZXNzaW9uVGltZW91dCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZ25vcmUgdGhlIHJlc3QgaWYgbW9iIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWRcclxuICAgICAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbGxlY3QgYWxsIHRoZSBkZXZpY2UgbG9ncyBmb3IgdGhpcyBzZXNzaW9uXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsZWN0RGV2aWNlTG9ncykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9ncyA9IGF3YWl0IHRoaXMuZ2V0RGV2aWNlTG9ncygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvZ3MgJiYgQXJyYXkuaXNBcnJheShsb2dzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGxvZyBvZiBsb2dzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnMubG9ncy5wdXNoKHRoaXMuX2FkanVzdEFwcGl1bUxvZyhsb2csICdkZXZpY2UnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IHJldHJpZXZlIGRldmljZSBsb2dzLicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjb2xsZWN0IGFsbCB0aGUgYnJvd3NlciBsb2dzIGZvciB0aGlzIHNlc3Npb25cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxlY3RCcm93c2VyTG9ncykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9ncyA9IGF3YWl0IHRoaXMuZ2V0QnJvd3NlckxvZ3MoKTtcclxuICAgICAgICAgICAgICAgIGlmIChsb2dzICYmIEFycmF5LmlzQXJyYXkobG9ncykpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBsb2cgb2YgbG9ncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJzLmxvZ3MucHVzaCh0aGlzLl9hZGp1c3RBcHBpdW1Mb2cobG9nLCAnYnJvd3NlcicpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnNcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdDYW5ub3QgcmV0cmlldmUgYnJvd3NlciBsb2dzLicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjb2xsZWN0IGFsbCBBcHBpdW0gbG9ncyBmb3IgdGhpcyBzZXNzaW9uXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsZWN0QXBwaXVtTG9ncykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9ncyA9IHRoaXMuZ2V0QXBwaXVtTG9ncygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvZ3MgJiYgQXJyYXkuaXNBcnJheShsb2dzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxvZ0VudHJ5IG9mIGxvZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ycy5sb2dzLnB1c2godGhpcy5fYWRqdXN0QXBwaXVtTG9nKGxvZ0VudHJ5LCAnYXBwaXVtJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCByZXRyaWV2ZSBBcHBpdW0gbG9ncy4nLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcikge1xyXG4gICAgICAgIGlmICghbG9jYXRvcikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgJ0ludmFsaWQgYXJndW1lbnQgLSBsb2NhdG9yIG5vdCBzcGVjaWZpZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhdG9yICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2F0b3IuaW5kZXhPZignLycpID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yOyAvLyBsZWF2ZSB4cGF0aCBsb2NhdG9yIGFzIGlzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBsYXRmb3JtID0gdGhpcy5jYXBzICYmIHRoaXMuY2Fwcy5wbGF0Zm9ybU5hbWUgPyB0aGlzLmNhcHMucGxhdGZvcm1OYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5hcHBDb250ZXh0ID09PSAnTkFUSVZFX0FQUCcgJiYgcGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xyXG4gICAgICAgICAgICBpZiAobG9jYXRvci5pbmRleE9mKCdpZD0nKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gcHJlcGVuZCBwYWNrYWdlIG5hbWUgaWYgaXQncyBub3Qgc3BlY2lmaWVkXHJcbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBnZXRDdXJyZW50UGFja2FnZSgpIHNlZW1zIHRvIGNyYXNoIHBvc3NpYmx5IGR1ZSB0byBhIHdkaW8gYnVnLiBcclxuICAgICAgICAgICAgICAgIC8vICAgICAgIHNvIHdlIGdldCBwYWNrYWdlIG5hbWUgZnJvbSBjYXBzIGluc3RlYWQuXHJcbiAgICAgICAgICAgICAgICBsb2NhdG9yID0gbG9jYXRvci5zdWJzdHIoJ2lkPScubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJzppZC8nKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhdG9yID0gdGhpcy5jYXBzLmFwcFBhY2thZ2UgKyAnOmlkLycgKyBsb2NhdG9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkucmVzb3VyY2VJZChcIicgKyBsb2NhdG9yICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdjbGFzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLmNsYXNzTmFtZShcIicgKyBsb2NhdG9yLnN1YnN0cignY2xhc3M9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZigndGV4dD0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLnRleHQoXCInICsgbG9jYXRvci5zdWJzdHIoJ3RleHQ9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZigndGV4dC1jb250YWlucz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLnRleHRDb250YWlucyhcIicgKyBsb2NhdG9yLnN1YnN0cigndGV4dC1jb250YWlucz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdkZXNjPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuZGVzY3JpcHRpb24oXCInICsgbG9jYXRvci5zdWJzdHIoJ2Rlc2M9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignZGVzYy1jb250YWlucz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYW5kcm9pZD1uZXcgVWlTZWxlY3RvcigpLmRlc2NyaXB0aW9uQ29udGFpbnMoXCInICsgbG9jYXRvci5zdWJzdHIoJ2Rlc2MtY29udGFpbnM9Jy5sZW5ndGgpICsgJ1wiKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignc2Nyb2xsYWJsZScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuc2Nyb2xsYWJsZSh0cnVlKSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignficpID09PSAwKSAgICAvLyBhY2Nlc3NpYmlsaXR5IGlkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwQ29udGV4dCA9PT0gJ05BVElWRV9BUFAnICYmIHBsYXRmb3JtID09PSAnaW9zJykge1xyXG4gICAgICAgICAgICBpZiAobG9jYXRvci5pbmRleE9mKCd+JykgPT09IDApIC8vIGFjY2Vzc2liaWxpdHkgaWRcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb250ZXh0ICE9PSAnTkFUSVZFX0FQUCcpIHsgICAgICAgICAgICAvLyBIeWJyaWQgb3IgV2ViIGFwcGxpY2F0aW9uXHJcbiAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcjJyArIGxvY2F0b3Iuc3Vic3RyKCdpZD0nLmxlbmd0aCk7ICAgICAgLy8gY29udmVydCAnaWQ9JyB0byAnIydcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCduYW1lPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdbbmFtZT0nICsgbG9jYXRvci5zdWJzdHIoJ25hbWU9Jy5sZW5ndGgpICsgJ10nO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbms9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJz0nICsgbG9jYXRvci5zdWJzdHIoJ2xpbms9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbmstY29udGFpbnM9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJyo9JyArIGxvY2F0b3Iuc3Vic3RyKCdsaW5rPScubGVuZ3RoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdjc3M9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRvci5zdWJzdHIoJ2Nzcz0nLmxlbmd0aCk7ICAgICAgICAgICAvLyBpbiBjYXNlIG9mIGNzcywganVzdCByZW1vdmUgY3NzPSBwcmVmaXhcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIF9sb2FkSGVscGVyRnVuY3Rpb25zKCkge1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRXZGlvTG9jYXRvciA9IHRoaXMuX2dldFdkaW9Mb2NhdG9yO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5tYXRjaFBhdHRlcm4gPSBtb2RVdGlscy5tYXRjaFBhdHRlcm47XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldEVsZW1lbnQgPSBtb2RVdGlscy5nZXRFbGVtZW50O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRFbGVtZW50cyA9IG1vZFV0aWxzLmdldEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRDaGlsZEVsZW1lbnQgPSBtb2RVdGlscy5nZXRDaGlsZEVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldENoaWxkRWxlbWVudHMgPSBtb2RVdGlscy5nZXRDaGlsZEVsZW1lbnRzO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5zZXRUaW1lb3V0SW1wbGljaXQgPSBtb2RVdGlscy5zZXRUaW1lb3V0SW1wbGljaXQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQgPSBtb2RVdGlscy5yZXN0b3JlVGltZW91dEltcGxpY2l0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudCA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZztcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXIgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudE51bWJlcjtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmU7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50Qm9vbCA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0ID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRDb250ZXh0ID0gbW9kVXRpbHMuYXNzZXJ0Q29udGV4dDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuY29udGV4dExpc3QgPSBtb2RVdGlscy5jb250ZXh0TGlzdDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuZ2V0TG9nVHlwZXMgPSBtb2RVdGlscy5nZXRMb2dUeXBlcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVTZXNzaW9uKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyaXZlciAmJiB0aGlzLmRyaXZlci5kZWxldGVTZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5kZWxldGVTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdkZWxldGVTZXNzaW9uIGVycm9yJywgZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9zZW5kUmVzdWx0U3RhdHVzVG9Ccm93c2Vyc3RhY2soc3RhdHVzKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyA9PT0gJ1BBU1NFRCcgPyAncGFzc2VkJyA6ICdmYWlsZWQnXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBsZXQgb3B0aW9ucztcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLndkaW9PcHRzLmNhcGFiaWxpdGllcy5icm93c2VyTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IGBodHRwczovL2FwaS5icm93c2Vyc3RhY2suY29tL2F1dG9tYXRlL3Nlc3Npb25zLyR7dGhpcy5kcml2ZXIuc2Vzc2lvbklkfS5qc29uYCxcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBib2R5OiByZXF1ZXN0Qm9keSxcclxuICAgICAgICAgICAgICAgICAgICAnYXV0aCc6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXInOiB0aGlzLndkaW9PcHRzLnVzZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzJzogdGhpcy53ZGlvT3B0cy5rZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZW5kSW1tZWRpYXRlbHknOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IGBodHRwczovL2FwaS1jbG91ZC5icm93c2Vyc3RhY2suY29tL2FwcC1hdXRvbWF0ZS9zZXNzaW9ucy8ke3RoaXMuZHJpdmVyLnNlc3Npb25JZH0uanNvbmAsXHJcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUFVUJyxcclxuICAgICAgICAgICAgICAgICAgICBqc29uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgYm9keTogcmVxdWVzdEJvZHksXHJcbiAgICAgICAgICAgICAgICAgICAgJ2F1dGgnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyJzogdGhpcy53ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJzdGFjay51c2VyJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzJzogdGhpcy53ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJzdGFjay5rZXknXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbmRJbW1lZGlhdGVseSc6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0KG9wdGlvbnMsIChlcnIsIHJlcywgYm9keSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignVW5hYmxlIHRvIHNlbmQgcmVzdWx0IHN0YXR1cyB0byBCcm93c2Vyc3RhY2s6ICcgKyBlLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
702
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1tb2IuanMiXSwibmFtZXMiOlsiTU9EVUxFX05BTUUiLCJERUZBVUxUX0FQUElVTV9VUkwiLCJERUZBVUxUX0JST1dTRVJfTkFNRSIsIk5PX1NDUkVFTlNIT1RfQ09NTUFORFMiLCJBQ1RJT05fQ09NTUFORFMiLCJERUZBVUxUX1dBSVRfVElNRU9VVCIsIk1vYmlsZU1vZHVsZSIsIldlYkRyaXZlck1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsInRyYW5zYWN0aW9ucyIsImxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lIiwibmV0d29ya1JlcXVlc3RzIiwiaGVscGVycyIsImFwcENvbnRleHQiLCJfbG9hZEhlbHBlckZ1bmN0aW9ucyIsIk94RXJyb3IiLCJlcnJIZWxwZXIiLCJ3YWl0Rm9yVGltZW91dCIsIm5hbWUiLCJnZXREcml2ZXIiLCJnZXRDYXBhYmlsaXRpZXMiLCJjYXBzIiwiaW5pdCIsImFwcGl1bVVybCIsImlzSW5pdGlhbGl6ZWQiLCJyZW9wZW5TZXNzaW9uIiwiZGVidWciLCJkcml2ZXIiLCJyZWxvYWRTZXNzaW9uIiwiX2lzSW5pdGlhbGl6ZWQiLCJjdHgiLCJwbGF0Zm9ybU5hbWUiLCJwbGF0Zm9ybVZlcnNpb24iLCJkZXZpY2VOYW1lIiwiYnJvd3Nlck5hbWUiLCJhdXRvbWF0aW9uTmFtZSIsInVkaWQiLCJhcHAiLCJlbmFibGVBcHBpdW1CZWhhdmlvciIsInVzZUFwcGl1bUZvcldlYiIsImNvbGxlY3REZXZpY2VMb2dzIiwiYXBwUGFja2FnZSIsImJ1bmRsZUlkIiwidG9Mb3dlckNhc2UiLCJyZWNvcmRIQVIiLCJicm93c2VyIiwicGVyZm9ybWFuY2UiLCJ1cmwiLCJVUkwiLCJwYXJzZSIsInByb3RvY29sIiwicmVwbGFjZSIsImhvc3QiLCJob3N0bmFtZSIsInBvcnQiLCJwYXJzZUludCIsInBhdGgiLCJwYXRobmFtZSIsImF1dGgiLCJzcGxpdCIsIndkaW9PcHRzIiwidXNlciIsImtleSIsImNhcGFiaWxpdGllcyIsImxvZ0xldmVsIiwicnVubmVyIiwid2FpdGZvclRpbWVvdXQiLCJjb25uZWN0aW9uUmV0cnlUaW1lb3V0IiwiY29ubmVjdGlvblJldHJ5Q291bnQiLCJwcm92aWRlciIsIm1vZFV0aWxzIiwiZGV0ZXJtaW5lUHJvdmlkZXIiLCJQRVJGRUNUTyIsIm1heEluc3RhbmNlcyIsIm9wZW5EZXZpY2VUaW1lb3V0IiwibWFudWZhY3R1cmVyIiwibW9kZWwiLCJ3ZGlvIiwicmVtb3RlIiwic2VsZW5pdW1Ccm93c2VyVGltZW91dCIsInNlbGVuaXVtVGltZW91dCIsInBlcmZlY3RvRXhlY3V0aW9uQ29udGV4dCIsInBlcmZlY3RvUmVwb3J0aW5nIiwiUGVyZmVjdG8iLCJQZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQiLCJ3ZWJkcml2ZXIiLCJleGVjdXRlU2NyaXB0IiwiY29tbWFuZCIsInBhcmFtcyIsImV4ZWN1dGUiLCJyZXBvcnRpbmdDbGllbnQiLCJQZXJmZWN0b1JlcG9ydGluZ0NsaWVudCIsInRlc3RTdGFydCIsImUiLCJnZXRBcHBpdW1Jbml0RXJyb3IiLCJnZXRDb250ZXh0Iiwic2V0V2ViVmlld0NvbnRleHQiLCJCUk9XU0VSU1RBQ0siLCJzZXRUaW1lb3V0IiwiZGlzcG9zZSIsInN0YXR1cyIsInN0ZXBzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiZmFpbGVkRmluZGVkIiwiZmluZCIsIml0ZW0iLCJ0b1VwcGVyQ2FzZSIsInRlc3RTdG9wIiwiQ29uc3RhbnRzIiwicmVzdWx0cyIsInBhc3NlZCIsImZhaWxlZCIsIl9zZW5kUmVzdWx0U3RhdHVzVG9Ccm93c2Vyc3RhY2siLCJkZWxldGVTZXNzaW9uIiwiaW5jbHVkZXMiLCJzZWxlbml1bVNlc3Npb25UaW1lb3V0Iiwid2FybiIsInRyYW5zYWN0aW9uIiwiZ2xvYmFsIiwiX2xhc3RUcmFuc2FjdGlvbk5hbWUiLCJfaXNBY3Rpb24iLCJfdGFrZVNjcmVlbnNob3RTaWxlbnQiLCJlcnJvciIsInRha2VTY3JlZW5zaG90IiwicmV0dmFsIiwiY2FsbCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwid2FpdFVudGlsUmV0VmFsIiwid2FpdFVudGlsIiwiaW1hZ2VzIiwicHVzaEltYWdlVG9JbWFnZXMiLCJmZXRjaFRpdGxlIiwiaW1hZ2UiLCJ0aXRsZSIsImdldFRpdGxlIiwidGV4dFRvSW1hZ2UiLCJyZXF1aXJlIiwidGl0bGVJbWFnZSIsImdlbmVyYXRlIiwiZm9udEZhbWlseSIsInB1c2giLCJpc1dlYlZpZXdDb250ZXh0IiwiaGFuZGxlcyIsImdldFdpbmRvd0hhbmRsZXMiLCJoYW5kbGUiLCJzd2l0Y2hUb1dpbmRvdyIsIm1lcmdlZEltYWdlIiwiZGlyZWN0aW9uIiwidGltZW91dCIsInRoZW4iLCJjYXRjaCIsImVyciIsIl9hZGp1c3RBcHBpdW1Mb2ciLCJsb2ciLCJzcmMiLCJ0aW1lIiwidGltZXN0YW1wIiwibXNnIiwibWVzc2FnZSIsImxldmVsIiwiX2l0ZXJhdGlvblN0YXJ0IiwiX2l0ZXJhdGlvbkVuZCIsInR5cGUiLCJlcnJvckhlbHBlciIsImVycm9yQ29kZSIsIkFQUElVTV9TRVNTSU9OX1RJTUVPVVQiLCJsb2dzIiwiZ2V0RGV2aWNlTG9ncyIsImNvbGxlY3RCcm93c2VyTG9ncyIsImdldEJyb3dzZXJMb2dzIiwiY29sbGVjdEFwcGl1bUxvZ3MiLCJnZXRBcHBpdW1Mb2dzIiwibG9nRW50cnkiLCJfZ2V0V2Rpb0xvY2F0b3IiLCJsb2NhdG9yIiwiU0NSSVBUX0VSUk9SIiwiaW5kZXhPZiIsInBsYXRmb3JtIiwic3Vic3RyIiwiZ2V0V2Rpb0xvY2F0b3IiLCJtYXRjaFBhdHRlcm4iLCJnZXRFbGVtZW50IiwiZ2V0RWxlbWVudHMiLCJnZXRDaGlsZEVsZW1lbnQiLCJnZXRDaGlsZEVsZW1lbnRzIiwic2V0VGltZW91dEltcGxpY2l0IiwicmVzdG9yZVRpbWVvdXRJbXBsaWNpdCIsImFzc2VydEFyZ3VtZW50IiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyIiwiYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsIiwiYXNzZXJ0QXJndW1lbnRUaW1lb3V0IiwiYXNzZXJ0Q29udGV4dCIsImNvbnRleHRMaXN0IiwiZ2V0TG9nVHlwZXMiLCJyZXF1ZXN0Qm9keSIsInNlc3Npb25JZCIsIm1ldGhvZCIsImpzb24iLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJib2R5IiwicmVzIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBR0EsTUFBTUEsV0FBVyxHQUFHLEtBQXBCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsOEJBQTNCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsU0FBN0I7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxDQUFDLE1BQUQsRUFBUyxhQUFULENBQS9CO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLENBQUMsTUFBRCxFQUFRLEtBQVIsRUFBYyxPQUFkLEVBQXNCLE9BQXRCLEVBQThCLFFBQTlCLEVBQXVDLFVBQXZDLENBQXhCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsS0FBSyxJQUFsQyxDLENBQW1E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a0IsRUFBRSxLQUpkO0FBS05DLFVBQUFBLElBQUksRUFBRUwsV0FMQTtBQU1OLGtCQUFRO0FBQ0osb0JBQVEsS0FBSzdJLFFBQUwsQ0FBY0csWUFBZCxDQUEyQixtQkFBM0IsQ0FESjtBQUVKLG9CQUFRLEtBQUtILFFBQUwsQ0FBY0csWUFBZCxDQUEyQixrQkFBM0IsQ0FGSjtBQUdKLCtCQUFtQjtBQUhmO0FBTkYsU0FBVjtBQVlIOztBQUVELFVBQUk7QUFDQSw4QkFBUTVELE9BQVIsRUFBaUIsQ0FBQ3dKLEdBQUQsRUFBTW9ELEdBQU4sRUFBV0QsSUFBWCxLQUFvQjtBQUNqQzdFLFVBQUFBLE9BQU87QUFDVixTQUZEO0FBR0gsT0FKRCxDQUlFLE9BQU9wQyxDQUFQLEVBQVU7QUFDUixhQUFLdkYsTUFBTCxDQUFZc0gsS0FBWixDQUFrQixtREFBbUQvQixDQUFDLENBQUNtSCxRQUFGLEVBQXJFO0FBQ0EvRSxRQUFBQSxPQUFPO0FBQ1Y7QUFDSixLQTNDTSxDQUFQO0FBNENIOztBQXJsQnFEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcbi8qKlxyXG4gKiBAbmFtZSBtb2JcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIG1vYmlsZSBhdXRvbWF0aW9uLlxyXG4gKiBAc2FtcGxlICoqTG9jYXRvcnM6KiogIFxyXG4gKiBcclxuICogTmF0aXZlIGFwcGxpY2F0aW9uIGxvY2F0b3JzIGZvciFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYW5kcm9pZC5wbmcpICBcclxuICogKiBgL1hQQVRIYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhbiBYUGF0aCAxLjAgZXhwcmVzc2lvbi5cclxuICogKiBgfkFDQ0VTU0lCSUxJVFlfSURgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyBBY2Nlc3NpYmlsaXR5IElkLlxyXG4gKiAqIGBpZD1JRGAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIGlkLlxyXG4gKiAqIGBjbGFzcz1DTEFTU2AgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIGNsYXNzLlxyXG4gKiAqIGB0ZXh0PVRFWFRgIC0gTG9jYXRlcyBlbGVtZW50IGJ5IGl0cyB2aXNpYmxlIHRleHQuXHJcbiAqICogYHRleHQtY29udGFpbnM9VEVYVGAgLSBMb2NhdGVzIGVsZW1lbnQgd2hvc2UgdmlzaWJsZSB0ZXh0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgc3RyaW5nLlxyXG4gKiAqIGBkZXNjPURFU0NSSVBUSU9OYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgZGVzY3JpcHRpb24uXHJcbiAqICogYGRlc2MtY29udGFpbnM9REVTQ1JJUFRJT05gIC0gTG9jYXRlcyBlbGVtZW50IHdob3NlIGRlc2NyaXB0aW9uIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgc3RyaW5nLlxyXG4gKiAqIGBzY3JvbGxhYmxlYCAtIExvY2F0ZXMgZWxlbWVudHMgdGhhdCBhcmUgc2Nyb2xsYWJsZS4gIFxyXG4gKiAgXHJcbiAqIE5hdGl2ZSBhcHBsaWNhdGlvbiBsb2NhdG9ycyBmb3IhW10oLi4vLi4vLmdpdGJvb2svYXNzZXRzL2FwcGxlLnBuZykgIFxyXG4gKiAgXHJcbiAqICogYC9YUEFUSGAgLSBMb2NhdGVzIGVsZW1lbnQgdXNpbmcgYW4gWFBhdGggMS4wIGV4cHJlc3Npb24uXHJcbiAqICogYGlkPUlEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgSUQuXHJcbiAqICogYH5BQ0NFU1NJQklMSVRZX0lEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgQWNjZXNzaWJpbGl0eSBJZC4gIFxyXG4gKiAqIGAtaW9zIHByZWRpY2F0ZSBzdHJpbmc6UFJFRElDQVRFX1NUUklOR2AgLSBMb2NhdGVzIGVsZW1lbnQgdXNpbmcgYSBbcHJlZGljYXRlIHF1ZXJ5XShodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2thcmNoaXZlL1dlYkRyaXZlckFnZW50L3dpa2kvUHJlZGljYXRlLVF1ZXJpZXMtQ29uc3RydWN0aW9uLVJ1bGVzKS4gIFxyXG4gKiAqIGAtaW9zIGNsYXNzIGNoYWluOkNMQVNTX0NIQUlOYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhIFtjbGFzcyBjaGFpbiBleHByZXNzaW9uXShodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2thcmNoaXZlL1dlYkRyaXZlckFnZW50L3dpa2kvQ2xhc3MtQ2hhaW4tUXVlcmllcy1Db25zdHJ1Y3Rpb24tUnVsZXMpLiAgXHJcbiAqICBcclxuICogSHlicmlkIVtdKC4uLy4uLy5naXRib29rL2Fzc2V0cy9oeWJyaWQucG5nKSAgYW5kIFdlYiFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvd2ViLnBuZykgIGFwcGxpY2F0aW9uIGxvY2F0b3JzIGZvciFbXSguLi8uLi8uZ2l0Ym9vay9hc3NldHMvYW5kcm9pZC5wbmcpICAhW10oLi4vLi4vLmdpdGJvb2svYXNzZXRzL2FwcGxlLnBuZykgIFxyXG4gKiAgXHJcbiAqICogYC9YUEFUSGAgLSBMb2NhdGVzIGVsZW1lbnQgdXNpbmcgYW4gWFBhdGggMS4wIGV4cHJlc3Npb24uXHJcbiAqICogYGlkPUlEYCAtIExvY2F0ZXMgZWxlbWVudCBieSBpdHMgaWQuXHJcbiAqICogYG5hbWU9TkFNRWAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIG5hbWUgYXR0cmlidXRlLlxyXG4gKiAqIGB0YWc9TkFNRWAgLSBMb2NhdGVzIGVsZW1lbnQgYnkgaXRzIHRhZyBuYW1lLlxyXG4gKiAqIGBsaW5rPVRFWFRgIC0gTG9jYXRlcyBhbmNob3IgZWxlbWVudCB3aG9zZSB0ZXh0IG1hdGNoZXMgdGhlIGdpdmVuIHN0cmluZy5cclxuICogKiBgbGluay1jb250YWlucz1URVhUYCAtIExvY2F0ZXMgYW5jaG9yIGVsZW1lbnQgd2hvc2UgdGV4dCBjb250YWlucyB0aGUgZ2l2ZW4gc3RyaW5nLlxyXG4gKiAqIGBjc3M9Q1NTX1NFTEVDVE9SYCAtIExvY2F0ZXMgZWxlbWVudCB1c2luZyBhIENTUyBzZWxlY3Rvci5cclxuICogXHJcbiAqICoqUGF0dGVybiBhcmd1bWVudHM6KipcclxuICogXHJcbiAqIENvbW1hbmRzIHdoaWNoIGV4cGVjdCBhIHN0cmluZyBtYXRjaGluZyBwYXR0ZXJuIGluIHRoZWlyIGFyZ3VtZW50cywgc3VwcG9ydCBmb2xsb3dpbmcgcGF0dGVybnMgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2U6XHJcbiAqIFxyXG4gKiAqIGByZWdleDpQQVRURVJOYCAtIE1hdGNoIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbi5cclxuICogKiBgUEFUVEVSTmAgLSBWZXJiYXRpbSBtYXRjaGluZy5cclxuICogXHJcbiAqL1xyXG5pbXBvcnQgVVJMIGZyb20gJ3VybCc7XHJcbmltcG9ydCAqIGFzIHdkaW8gZnJvbSAnd2ViZHJpdmVyaW8nO1xyXG5pbXBvcnQgV2ViRHJpdmVyTW9kdWxlIGZyb20gJy4uL2NvcmUvV2ViRHJpdmVyTW9kdWxlJztcclxuaW1wb3J0IG1vZFV0aWxzIGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgZXJySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgcGVyZmVjdG9SZXBvcnRpbmcgZnJvbSAncGVyZmVjdG8tcmVwb3J0aW5nJztcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSAncmVxdWVzdCc7XHJcbmltcG9ydCBtZXJnZUltYWdlcyBmcm9tICcuLi9saWIvaW1nLW1lcmdlJztcclxuaW1wb3J0IGVycm9ySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5cclxuY29uc3QgTU9EVUxFX05BTUUgPSAnbW9iJztcclxuY29uc3QgREVGQVVMVF9BUFBJVU1fVVJMID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDcyMy93ZC9odWInO1xyXG5jb25zdCBERUZBVUxUX0JST1dTRVJfTkFNRSA9ICdkZWZhdWx0JztcclxuY29uc3QgTk9fU0NSRUVOU0hPVF9DT01NQU5EUyA9IFsnaW5pdCcsICdhc3NlcnRBbGVydCddO1xyXG5jb25zdCBBQ1RJT05fQ09NTUFORFMgPSBbJ29wZW4nLCd0YXAnLCdjbGljaycsJ3N3aXBlJywnc3VibWl0Jywnc2V0VmFsdWUnXTtcclxuY29uc3QgREVGQVVMVF9XQUlUX1RJTUVPVVQgPSA2MCAqIDEwMDA7ICAgICAgICAgICAgLy8gZGVmYXVsdCA2MHMgd2FpdCB0aW1lb3V0XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2JpbGVNb2R1bGUgZXh0ZW5kcyBXZWJEcml2ZXJNb2R1bGUge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcyk7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMgPSB7fTtcclxuICAgICAgICB0aGlzLmxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lID0gbnVsbDtcclxuICAgICAgICB0aGlzLm5ldHdvcmtSZXF1ZXN0cyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzID0ge307XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0ID0gJ05BVElWRV9BUFAnO1xyXG4gICAgICAgIHRoaXMuX2xvYWRIZWxwZXJGdW5jdGlvbnMoKTtcclxuICAgICAgICAvLyBzdXBwb3J0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKHNvbWUgbW9kdWxlIGNvbW1hbmRzIG1pZ2h0IHJlZmVyIHRvIHRoaXMuT3hFcnJvciBhbmQgdGhpcy5lcnJIZWxwZXIpXHJcbiAgICAgICAgdGhpcy5PeEVycm9yID0gT3hFcnJvcjtcclxuICAgICAgICB0aGlzLmVyckhlbHBlciA9IGVyckhlbHBlcjtcclxuICAgICAgICAvLyBob2xkcyBlbGVtZW50IG9wZXJhdGlvbiB0aW1lb3V0IHZhbHVlXHJcbiAgICAgICAgdGhpcy53YWl0Rm9yVGltZW91dCA9IERFRkFVTFRfV0FJVF9USU1FT1VUO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBuYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBNT0RVTEVfTkFNRTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBmdW5jdGlvbiBnZXREcml2ZXJcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIHVuZGVybHlpbmcgV0RJTyBkcml2ZXIuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFdESU8gZHJpdmVyLlxyXG4gICAgICovXHJcbiAgICBnZXREcml2ZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldERyaXZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGZ1bmN0aW9uIGdldENhcGFiaWxpdGllc1xyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBjdXJyZW50bHkgZGVmaW5lZCBjYXBhYmlsaXRpZXMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEN1cnJlbnQgY2FwYWJpbGl0aWVzIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgZ2V0Q2FwYWJpbGl0aWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhcHMgfHwgc3VwZXIuZ2V0Q2FwYWJpbGl0aWVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSBuZXcgQXBwaXVtIHNlc3Npb24uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGNhcHMgLSBEZXNpcmVkIGNhcGFiaWxpdGllcy4gSWYgbm90IHNwZWNpZmllZCBjYXBhYmlsaXRpZXMgd2lsbCBiZSB0YWtlbiBmcm9tIHN1aXRlIGRlZmluaXRpb24uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGFwcGl1bVVybCAtIFJlbW90ZSBBcHBpdW0gc2VydmVyIFVSTCAoZGVmYXVsdDogaHR0cDovL2xvY2FsaG9zdDo0NzIzL3dkL2h1YikuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGluaXQoY2FwcywgYXBwaXVtVXJsKSB7XHJcbiAgICAgICAgLy8gaWYgcmVvcGVuU2Vzc2lvbiBpcyB0cnVlIC0gcmVpbml0aWxpemUgdGhlIG1vZHVsZVxyXG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZW9wZW5TZXNzaW9uICE9PSBmYWxzZSkgeyAvLyB0cnVlIG9yIGZhbHNlIGlmIGV4cGxpc2l0bHkgc2V0LiB0cnVlIG9uIG51bGwgb3IgdW5kZWZpbmVkLlxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3Jlb3BlblNlc3Npb24gaXMgdHJ1ZSAtIHJlbG9hZGluZyB0aGUgc2Vzc2lvbi4uLicpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIucmVsb2FkU2Vzc2lvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnbW9iLmluaXQgd2FzIGNhbGxlZCBmb3IgYWxyZWFkeSBpbml0aWFsaXplZCBtb2R1bGUuIHJlb3BlblNlc3Npb24gaXMgZmFsc2Ugc28gdGhlIGNhbGwgaXMgaWdub3JlZC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVmYWN0b3JlZFxyXG4gICAgICAgIGlmICh0aGlzLmN0eC5jYXBzICYmIHRoaXMuY3R4LmNhcHNbJ3BlcmZlY3RvTW9iaWxlOm9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICBpZiAoY2Fwcykge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMucGxhdGZvcm1OYW1lO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMucGxhdGZvcm1WZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMuZGV2aWNlTmFtZTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBjYXBzLmJyb3dzZXJOYW1lO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGNhcHMuYXV0b21hdGlvbk5hbWU7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgY2Fwcy51ZGlkO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjYXBzLmFwcCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcHMuZW5hYmxlQXBwaXVtQmVoYXZpb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXBzLnVzZUFwcGl1bUZvcldlYiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2Fwcy5lbmFibGVBcHBpdW1CZWhhdmlvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5jYXBzLnVzZUFwcGl1bUZvcldlYiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC5jYXBzLmVuYWJsZUFwcGl1bUJlaGF2aW9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFhcHBpdW1VcmwpIHtcclxuICAgICAgICAgICAgYXBwaXVtVXJsID0gdGhpcy5vcHRpb25zLmFwcGl1bVVybCB8fCBERUZBVUxUX0FQUElVTV9VUkw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBtZXJnZSBjYXBhYmlsaXRpZXMgZnJvbSBjb250ZXh0IGFuZCBmcm9tIGluaXQgZnVuY3Rpb24gYXJndW1lbnQsIGdpdmUgcHJlZmVyZW5jZSB0byBjb250ZXh0LXBhc3NlZCBjYXBhYmlsaXRpZXNcclxuICAgICAgICB0aGlzLmNhcHMgPSB7fTtcclxuICAgICAgICBpZiAodGhpcy5jdHguY2Fwcykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHMgPSB7IC4uLnRoaXMuY3R4LmNhcHMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNhcHMpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXBzID0geyAuLi50aGlzLmNhcHMsIC4uLmNhcHMgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBjbGVhciB0aGUgZXhpc3RpbmcgZGV2aWNlIGxvZ3MsIGlmIGNvbGxlY3REZXZpY2VMb2dzIG9wdGlvbiBpcyB0cnVlICh3ZSB3YW50IHRvIGluY2x1ZGUgbG9ncyBvbmx5IHJlbGV2YW50IGZvciB0aGlzIHNlc3Npb24pXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb2xsZWN0RGV2aWNlTG9ncykge1xyXG4gICAgICAgICAgICB0aGlzLmNhcHNbJ2FwcGl1bTpjbGVhckRldmljZUxvZ3NPblN0YXJ0J10gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgYm90aCBicm93c2VyTmFtZSBhbmQgYXBwUGFja2FnZS9hcHAvYnVuZGxlSWQgd2VyZSBzcGVjaWZpZWQgLSBhc3N1bWUgd2Ugd2FudCB0byBydW4gdGhlIGFwcGxpY2F0aW9uIGFuZCByZW1vdmUgYnJvd3Nlck5hbWVcclxuICAgICAgICBpZiAodGhpcy5jYXBzLmJyb3dzZXJOYW1lICYmICh0aGlzLmNhcHMuYXBwUGFja2FnZSB8fCB0aGlzLmNhcHMuYXBwIHx8IHRoaXMuY2Fwcy5idW5kbGVJZCkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2Fwcy5icm93c2VyTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgbm8gYXBwUGFja2FnZS9hcHAvYnVuZGxlSWQgY2FwYWJpbGl0eSBub3IgYnJvd3Nlck5hbWUgYXJlIGRlZmluZWQsIGFzc3VtZSB3ZSB3YW50IHRvIHJ1biB0aGUgdGVzdCBhZ2FpbnN0IGRlZmF1bHQgYnJvd3NlclxyXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLmNhcHMuYnJvd3Nlck5hbWUgJiYgIXRoaXMuY2Fwcy5hcHBQYWNrYWdlICYmICF0aGlzLmNhcHMuYXBwICYmICF0aGlzLmNhcHMuYnVuZGxlSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXBzLmJyb3dzZXJOYW1lID0gREVGQVVMVF9CUk9XU0VSX05BTUU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdlYmRyaXZlciBleHBlY3RzIGxvd2VyIGNhc2UgbmFtZXNcclxuICAgICAgICBpZiAodGhpcy5jYXBzLmJyb3dzZXJOYW1lICYmIHR5cGVvZiB0aGlzLmNhcHMuYnJvd3Nlck5hbWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2Fwcy5icm93c2VyTmFtZSA9IHRoaXMuY2Fwcy5icm93c2VyTmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhZGp1c3QgY2FwYWJpbGl0aWVzIHRvIGVuYWJsZSBjb2xsZWN0aW5nIGJyb3dzZXIgYW5kIHBlcmZvcm1hbmNlIHN0YXRzIGluIENocm9tZSBcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlY29yZEhBUiAmJiB0aGlzLmNhcHMuYnJvd3Nlck5hbWUgPT09ICdjaHJvbWUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2Fwc1snZ29vZzpsb2dnaW5nUHJlZnMnXSA9IHsgICAgIC8vIGZvciBDaHJvbWVEcml2ZXIgPj0gNzVcclxuICAgICAgICAgICAgICAgIGJyb3dzZXI6ICdBTEwnLFxyXG4gICAgICAgICAgICAgICAgcGVyZm9ybWFuY2U6ICdBTEwnXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBwb3B1bGF0ZSBXRElPIG9wdGlvbnNcclxuICAgICAgICBjb25zdCB1cmwgPSBVUkwucGFyc2UoYXBwaXVtVXJsKTtcclxuICAgICAgICBjb25zdCBwcm90b2NvbCA9IHVybC5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKTtcclxuICAgICAgICBjb25zdCBob3N0ID0gdXJsLmhvc3RuYW1lO1xyXG4gICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZUludCh1cmwucG9ydCB8fCAocHJvdG9jb2wgPT09ICdodHRwcycgPyA0NDMgOiA4MCkpO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSB1cmwucGF0aG5hbWU7XHJcblxyXG4gICAgICAgIC8vIGF1dGggaXMgbmVlZGVkIG1vc3RseSBmb3IgY2xvdWQgcHJvdmlkZXJzIHN1Y2ggYXMgTGFtYmRhVGVzdFxyXG4gICAgICAgIGlmICh1cmwuYXV0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBhdXRoID0gdXJsLmF1dGguc3BsaXQoJzonKTtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLndkaW9PcHRzID0ge1xyXG4gICAgICAgICAgICAgICAgdXNlcjogYXV0aFswXSxcclxuICAgICAgICAgICAgICAgIGtleTogYXV0aFsxXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHdkaW9PcHRzID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMud2Rpb09wdHMgfHwge30sXHJcbiAgICAgICAgICAgIHByb3RvY29sOiBwcm90b2NvbCxcclxuICAgICAgICAgICAgaG9zdG5hbWU6IGhvc3QsXHJcbiAgICAgICAgICAgIHBvcnQ6IHBvcnQsXHJcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXHJcbiAgICAgICAgICAgIGNhcGFiaWxpdGllczogdGhpcy5jYXBzLFxyXG4gICAgICAgICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXHJcbiAgICAgICAgICAgIHJ1bm5lcjogJ3JlcGwnLFxyXG4gICAgICAgICAgICB3YWl0Zm9yVGltZW91dDogNTAwMCwgLy8gaW5jcmVhc2UgdGhlIGRlZmF1bHQgMzAwMFxyXG4gICAgICAgICAgICBjb25uZWN0aW9uUmV0cnlUaW1lb3V0OiAzMTAqMTAwMCxcclxuICAgICAgICAgICAgY29ubmVjdGlvblJldHJ5Q291bnQ6IDFcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgcHJvdmlkZXIgPSBtb2RVdGlscy5kZXRlcm1pbmVQcm92aWRlcih3ZGlvT3B0cyk7XHJcbiAgICAgICAgbGV0IG5hbWUgPSAnbmFtZSc7XHJcblxyXG4gICAgICAgIGlmIChwcm92aWRlciA9PT0gbW9kVXRpbHMucHJvdmlkZXIuUEVSRkVDVE8pIHtcclxuICAgICAgICAgICAgd2Rpb09wdHMuY2FwYWJpbGl0aWVzLm1heEluc3RhbmNlcyA9IDE7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLnBhdGggPSAnL25leHBlcmllbmNlL3BlcmZlY3RvbW9iaWxlL3dkL2h1Yic7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLnBvcnQgPSA4MDtcclxuICAgICAgICAgICAgd2Rpb09wdHMucHJvdG9jb2wgPSAnaHR0cCc7XHJcbiAgICAgICAgICAgIHdkaW9PcHRzLm9wZW5EZXZpY2VUaW1lb3V0ID0gMTU7XHJcblxyXG4gICAgICAgICAgICBkZWxldGUgd2Rpb09wdHMuY2FwYWJpbGl0aWVzLm1hbnVmYWN0dXJlcjtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllcy5tb2RlbDtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllcy5icm93c2VyTmFtZTtcclxuICAgICAgICAgICAgZGVsZXRlIHdkaW9PcHRzLmNhcGFiaWxpdGllcy5ob3N0O1xyXG5cclxuICAgICAgICAgICAgbmFtZSA9IHdkaW9PcHRzLmNhcGFiaWxpdGllc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddWyduYW1lJ107XHJcbiAgICAgICAgICAgIGRlbGV0ZSB3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ3BlcmZlY3RvTW9iaWxlOm9wdGlvbnMnXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2JzdGFjazpvcHRpb25zJ10gJiYgd2Rpb09wdHMuY2FwYWJpbGl0aWVzWydic3RhY2s6b3B0aW9ucyddWyduYW1lJ10pIHtcclxuICAgICAgICAgICAgbmFtZSA9IHdkaW9PcHRzLmNhcGFiaWxpdGllc1snYnN0YWNrOm9wdGlvbnMnXVsnbmFtZSddO1xyXG4gICAgICAgICAgICBkZWxldGUgd2Rpb09wdHMuY2FwYWJpbGl0aWVzWydic3RhY2s6b3B0aW9ucyddO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy53ZGlvT3B0cyA9IHdkaW9PcHRzO1xyXG5cclxuICAgICAgICAvLyBpbml0IHdlYmRyaXZlclxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyID0gYXdhaXQgd2Rpby5yZW1vdGUod2Rpb09wdHMpO1xyXG4gICAgICAgICAgICB0aGlzLmRyaXZlci5wcm92aWRlciA9IHByb3ZpZGVyO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZWxlbml1bUJyb3dzZXJUaW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci5zZWxlbml1bUJyb3dzZXJUaW1lb3V0ID0gdGhpcy5vcHRpb25zLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2VsZW5pdW1UaW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci5zZWxlbml1bVRpbWVvdXQgPSB0aGlzLm9wdGlvbnMuc2VsZW5pdW1UaW1lb3V0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocHJvdmlkZXIgPT09IG1vZFV0aWxzLnByb3ZpZGVyLlBFUkZFQ1RPKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwZXJmZWN0b0V4ZWN1dGlvbkNvbnRleHQgPSBhd2FpdCBuZXcgcGVyZmVjdG9SZXBvcnRpbmcuUGVyZmVjdG8uUGVyZmVjdG9FeGVjdXRpb25Db250ZXh0KHtcclxuICAgICAgICAgICAgICAgICAgICB3ZWJkcml2ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZVNjcmlwdDogYXN5bmMgKGNvbW1hbmQsIHBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZHJpdmVyLmV4ZWN1dGUoY29tbWFuZCwgcGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRpbmdDbGllbnQgPSBuZXcgcGVyZmVjdG9SZXBvcnRpbmcuUGVyZmVjdG8uUGVyZmVjdG9SZXBvcnRpbmdDbGllbnQocGVyZmVjdG9FeGVjdXRpb25Db250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVwb3J0aW5nQ2xpZW50LnRlc3RTdGFydChuYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgZXJySGVscGVyLmdldEFwcGl1bUluaXRFcnJvcihlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dCA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldENvbnRleHQoKTtcclxuXHJcbiAgICAgICAgLy8gaWYgd2UgYXJlIHJ1bm5pbmcgb24gQW5kcm9pZCA3KyBlbXVsYXRvciwgYW5kIHRodXMvb3IgdXNpbmcgYSBXZWJWaWV3IEJyb3dzZXIgVGVzdGVyIC1cclxuICAgICAgICAvLyBwZXJmb3JtIGFuIGFjdHVhbCBhcHBDb250ZXh0IHN3aXRjaCB0byBXRUJcclxuICAgICAgICAvLyBzbyBBcHBpdW0gd2lsbCBkZWxlZ2F0ZSBjb21tYW5kcyB0byBDaHJvbWUgRHJpdmVyIGluc3RlYWQgb2YgQXBwaXVtIERyaXZlclxyXG4gICAgICAgIGlmICh0aGlzLmNhcHMuYnJvd3Nlck5hbWUgPT09ICAnY2hyb21pdW0td2VidmlldycpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRXZWJWaWV3Q29udGV4dCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHByb3ZpZGVyID09PSBtb2RVdGlscy5wcm92aWRlci5CUk9XU0VSU1RBQ0spIHtcclxuICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgICAgIC8vIGZhaWxzIG9uIGJyb3dzZXJzdGFja1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnNldFRpbWVvdXQoeyAnaW1wbGljaXQnOiB0aGlzLndhaXRGb3JUaW1lb3V0IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdXBlci5pbml0KHRoaXMuZHJpdmVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBmdW5jdGlvbiBkaXNwb3NlXHJcbiAgICAgKiBAc3VtbWFyeSBFbmRzIHRoZSBjdXJyZW50IHNlc3Npb24uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IHN0YXR1cyAtIFRlc3Qgc3RhdHVzLCBlaXRoZXIgYHBhc3NlZGAgb3IgYGZhaWxlZGAuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGRpc3Bvc2Uoc3RhdHVzKSB7XHJcbiAgICAgICAgaWYgKCFzdGF0dXMpIHtcclxuICAgICAgICAgICAgc3RhdHVzID0gJ3Bhc3NlZCc7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5ycy5zdGVwcyAmJiBBcnJheS5pc0FycmF5KHRoaXMucnMuc3RlcHMpICYmIHRoaXMucnMuc3RlcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmFpbGVkRmluZGVkID0gdGhpcy5ycy5zdGVwcy5maW5kKChpdGVtKSA9PiBpdGVtLnN0YXR1cyA9PT0gJ2ZhaWxlZCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZhaWxlZEZpbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9ICdmYWlsZWQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kcml2ZXIgJiYgdGhpcy5pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHN0YXR1cyA9IHN0YXR1cy50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZHJpdmVyLnByb3ZpZGVyID09PSBtb2RVdGlscy5wcm92aWRlci5QRVJGRUNUTykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXBvcnRpbmdDbGllbnQudGVzdFN0b3Aoe1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzID09PSAnUEFTU0VEJyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZmVjdG9SZXBvcnRpbmcuQ29uc3RhbnRzLnJlc3VsdHMucGFzc2VkIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmZWN0b1JlcG9ydGluZy5Db25zdGFudHMucmVzdWx0cy5mYWlsZWRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJpdmVyLnByb3ZpZGVyID09PSBtb2RVdGlscy5wcm92aWRlci5CUk9XU0VSU1RBQ0spIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NlbmRSZXN1bHRTdGF0dXNUb0Jyb3dzZXJzdGFjayhzdGF0dXMpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIVsnQ0FOQ0VMRUQnLCAnRkFJTEVEJ10uaW5jbHVkZXMoc3RhdHVzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVuaXVtU2Vzc2lvblRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZVNlc3Npb24gd2lsbCB0YWtlIDUgbWluIHRvIGNhbGxcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5kZWxldGVTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdFcnJvciBkaXNwb3NpbmcgZHJpdmVyOiAnICsgZSk7ICAgIC8vIGlnbm9yZSBhbnkgZXJyb3JzIGF0IGRpc3Bvc2FsIHN0YWdlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmxhc3ROYXZpZ2F0aW9uU3RhcnRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgc3VwZXIuZGlzcG9zZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBPcGVucyBuZXcgdHJhbnNhY3Rpb24uXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIHRyYW5zYWN0aW9uIHdpbGwgcGVyc2lzdCB0aWxsIGEgbmV3IG9uZSBpcyBvcGVuZWQuIFRyYW5zYWN0aW9uIG5hbWVzIG11c3QgYmVcclxuICAgICAqICAgICAgICAgICAgICB1bmlxdWUuXHJcbiAgICAgKiBAZnVuY3Rpb24gdHJhbnNhY3Rpb25cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIC0gVGhlIHRyYW5zYWN0aW9uIG5hbWUuXHJcbiAgICAgKiBAZm9yIGFuZHJvaWQsIGlvcywgaHlicmlkLCB3ZWJcclxuICAgICAqL1xyXG4gICAgdHJhbnNhY3Rpb24obmFtZSkge1xyXG4gICAgICAgIGdsb2JhbC5fbGFzdFRyYW5zYWN0aW9uTmFtZSA9IG5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIFByaXZhdGVcclxuICAgICAqL1xyXG5cclxuICAgIF9pc0FjdGlvbihuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIEFDVElPTl9DT01NQU5EUy5pbmNsdWRlcyhuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBfdGFrZVNjcmVlbnNob3RTaWxlbnQobmFtZSkge1xyXG4gICAgICAgIGlmICghTk9fU0NSRUVOU0hPVF9DT01NQU5EUy5pbmNsdWRlcyhuYW1lKSkge1xyXG4gICAgICAgICAgICBsZXQgZXJyb3I7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci50YWtlU2NyZWVuc2hvdFxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJldHZhbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci5jYWxsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhaXRVbnRpbFJldFZhbCA9IHRoaXMuZHJpdmVyLndhaXRVbnRpbChhc3luYygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2VzID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdXNoSW1hZ2VUb0ltYWdlcyA9IGFzeW5jKGZldGNoVGl0bGUgPSB0cnVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IGF3YWl0IHRoaXMuZHJpdmVyLnRha2VTY3JlZW5zaG90KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmV0Y2hUaXRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0VGl0bGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dFRvSW1hZ2UgPSByZXF1aXJlKCd0ZXh0LXRvLWltYWdlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZUltYWdlID0gYXdhaXQgdGV4dFRvSW1hZ2UuZ2VuZXJhdGUodGl0bGUsIHsgZGVidWc6IGZhbHNlLCBmb250RmFtaWx5OiAnQXJpYWwnIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGVJbWFnZSAmJiB0eXBlb2YgdGl0bGVJbWFnZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlSW1hZ2UgPSB0aXRsZUltYWdlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnLCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXMucHVzaCh0aXRsZUltYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXMucHVzaChpbWFnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1dlYlZpZXdDb250ZXh0ID0gYXdhaXQgdGhpcy5pc1dlYlZpZXdDb250ZXh0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1dlYlZpZXdDb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2xsZWN0IGFsbCAoc2NyZWVuc2hvdCBhbmQgdGl0bGUpIGltYWdlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlcyA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldFdpbmRvd0hhbmRsZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShoYW5kbGVzKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBoYW5kbGUgb2YgaGFuZGxlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zd2l0Y2hUb1dpbmRvdyhoYW5kbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBwdXNoSW1hZ2VUb0ltYWdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHB1c2hJbWFnZVRvSW1hZ2VzKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVyZ2UgYWxsIGltYWdlcyBpbnRvIG9uZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWRJbWFnZSA9IGF3YWl0IG1lcmdlSW1hZ2VzKGltYWdlcywgeyBkaXJlY3Rpb246IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZWRJbWFnZSAmJiB0eXBlb2YgbWVyZ2VkSW1hZ2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBtZXJnZWRJbWFnZS5yZXBsYWNlKCdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcsICcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0aW1lb3V0OiAzMCoxMDAwIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YWl0VW50aWxSZXRWYWwgJiYgd2FpdFVudGlsUmV0VmFsLnRoZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWxSZXRWYWwudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBnZXQgc2NyZWVuc2hvdCcsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdDYW5ub3QgZ2V0IHNjcmVlbnNob3QnLCBlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdDYW5ub3QgZ2V0IHNjcmVlbnNob3QgaW5uZXIgZXJyb3InLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBfZ2V0TG9ncyhuYW1lKSB7XHJcbiAgICAvLyAgICAgaWYgKCFOT19MT0dTX0NPTU1BTkRTLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLmdldExvZ3MoKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcblxyXG4gICAgX2FkanVzdEFwcGl1bUxvZyhsb2csIHNyYykge1xyXG4gICAgICAgIGlmICghbG9nIHx8IHR5cGVvZiBsb2cgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUT0RPOiBjb252ZXJ0IGxvZy50aW1lc3RhbXAgZnJvbSB0aGUgZGV2aWNlIHRpbWUgem9uZSB0byB0aGUgbG9jYWwgb25lIChzbyB3ZSBjYW4gbGF0ZXIgY29ycmVsYXRlIGJldHdlZW4gc3RlcHMgYW5kIGxvZ3MpICAgICAgICBcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aW1lOiBsb2cudGltZXN0YW1wLFxyXG4gICAgICAgICAgICBtc2c6IGxvZy5tZXNzYWdlLFxyXG4gICAgICAgICAgICBsZXZlbDogbG9nLmxldmVsLFxyXG4gICAgICAgICAgICBzcmM6IHNyY1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgX2l0ZXJhdGlvblN0YXJ0KCkge1xyXG4gICAgICAgIC8vIGNsZWFyIHRyYW5zYWN0aW9uIG5hbWUgc2F2ZWQgaW4gcHJldmlvdXMgaXRlcmF0aW9uIGlmIGFueVxyXG4gICAgICAgIGdsb2JhbC5fbGFzdFRyYW5zYWN0aW9uTmFtZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2l0ZXJhdGlvbkVuZChlcnJvcikge1xyXG4gICAgICAgIGlmIChlcnJvciAmJiBlcnJvci50eXBlID09PSBlcnJvckhlbHBlci5lcnJvckNvZGUuQVBQSVVNX1NFU1NJT05fVElNRU9VVCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVuaXVtU2Vzc2lvblRpbWVvdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlbml1bVNlc3Npb25UaW1lb3V0ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlnbm9yZSB0aGUgcmVzdCBpZiBtb2IgbW9kdWxlIGlzIG5vdCBpbml0aWFsaXplZFxyXG4gICAgICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29sbGVjdCBhbGwgdGhlIGRldmljZSBsb2dzIGZvciB0aGlzIHNlc3Npb25cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxlY3REZXZpY2VMb2dzKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dzID0gYXdhaXQgdGhpcy5nZXREZXZpY2VMb2dzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9ncyAmJiBBcnJheS5pc0FycmF5KGxvZ3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbG9nIG9mIGxvZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ycy5sb2dzLnB1c2godGhpcy5fYWRqdXN0QXBwaXVtTG9nKGxvZywgJ2RldmljZScpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnNcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdDYW5ub3QgcmV0cmlldmUgZGV2aWNlIGxvZ3MuJywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbGxlY3QgYWxsIHRoZSBicm93c2VyIGxvZ3MgZm9yIHRoaXMgc2Vzc2lvblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29sbGVjdEJyb3dzZXJMb2dzKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dzID0gYXdhaXQgdGhpcy5nZXRCcm93c2VyTG9ncygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvZ3MgJiYgQXJyYXkuaXNBcnJheShsb2dzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGxvZyBvZiBsb2dzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucnMubG9ncy5wdXNoKHRoaXMuX2FkanVzdEFwcGl1bUxvZyhsb2csICdicm93c2VyJykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWdub3JlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Nhbm5vdCByZXRyaWV2ZSBicm93c2VyIGxvZ3MuJywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNvbGxlY3QgYWxsIEFwcGl1bSBsb2dzIGZvciB0aGlzIHNlc3Npb25cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNvbGxlY3RBcHBpdW1Mb2dzKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dzID0gdGhpcy5nZXRBcHBpdW1Mb2dzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9ncyAmJiBBcnJheS5pc0FycmF5KGxvZ3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbG9nRW50cnkgb2YgbG9ncykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJzLmxvZ3MucHVzaCh0aGlzLl9hZGp1c3RBcHBpdW1Mb2cobG9nRW50cnksICdhcHBpdW0nKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignQ2Fubm90IHJldHJpZXZlIEFwcGl1bSBsb2dzLicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9nZXRXZGlvTG9jYXRvcihsb2NhdG9yKSB7XHJcbiAgICAgICAgaWYgKCFsb2NhdG9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIGxvY2F0b3Igbm90IHNwZWNpZmllZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGxvY2F0b3IgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobG9jYXRvci5pbmRleE9mKCcvJykgPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7IC8vIGxlYXZlIHhwYXRoIGxvY2F0b3IgYXMgaXNcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcGxhdGZvcm0gPSB0aGlzLmNhcHMgJiYgdGhpcy5jYXBzLnBsYXRmb3JtTmFtZSA/IHRoaXMuY2Fwcy5wbGF0Zm9ybU5hbWUudG9Mb3dlckNhc2UoKSA6IG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFwcENvbnRleHQgPT09ICdOQVRJVkVfQVBQJyAmJiBwbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBwcmVwZW5kIHBhY2thZ2UgbmFtZSBpZiBpdCdzIG5vdCBzcGVjaWZpZWRcclxuICAgICAgICAgICAgICAgIC8vIE5PVEU6IGdldEN1cnJlbnRQYWNrYWdlKCkgc2VlbXMgdG8gY3Jhc2ggcG9zc2libHkgZHVlIHRvIGEgd2RpbyBidWcuIFxyXG4gICAgICAgICAgICAgICAgLy8gICAgICAgc28gd2UgZ2V0IHBhY2thZ2UgbmFtZSBmcm9tIGNhcHMgaW5zdGVhZC5cclxuICAgICAgICAgICAgICAgIGxvY2F0b3IgPSBsb2NhdG9yLnN1YnN0cignaWQ9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0b3IuaW5kZXhPZignOmlkLycpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0b3IgPSB0aGlzLmNhcHMuYXBwUGFja2FnZSArICc6aWQvJyArIGxvY2F0b3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FuZHJvaWQ9bmV3IFVpU2VsZWN0b3IoKS5yZXNvdXJjZUlkKFwiJyArIGxvY2F0b3IgKyAnXCIpJztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2NsYXNzPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuY2xhc3NOYW1lKFwiJyArIGxvY2F0b3Iuc3Vic3RyKCdjbGFzcz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0ZXh0PScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkudGV4dChcIicgKyBsb2NhdG9yLnN1YnN0cigndGV4dD0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0ZXh0LWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkudGV4dENvbnRhaW5zKFwiJyArIGxvY2F0b3Iuc3Vic3RyKCd0ZXh0LWNvbnRhaW5zPScubGVuZ3RoKSArICdcIiknO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Rlc2M9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FuZHJvaWQ9bmV3IFVpU2VsZWN0b3IoKS5kZXNjcmlwdGlvbihcIicgKyBsb2NhdG9yLnN1YnN0cignZGVzYz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdkZXNjLWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbmRyb2lkPW5ldyBVaVNlbGVjdG9yKCkuZGVzY3JpcHRpb25Db250YWlucyhcIicgKyBsb2NhdG9yLnN1YnN0cignZGVzYy1jb250YWlucz0nLmxlbmd0aCkgKyAnXCIpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdzY3JvbGxhYmxlJykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FuZHJvaWQ9bmV3IFVpU2VsZWN0b3IoKS5zY3JvbGxhYmxlKHRydWUpJztcclxuICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd+JykgPT09IDApICAgIC8vIGFjY2Vzc2liaWxpdHkgaWRcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdG9yO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb250ZXh0ID09PSAnTkFUSVZFX0FQUCcgJiYgcGxhdGZvcm0gPT09ICdpb3MnKSB7XHJcbiAgICAgICAgICAgIGlmIChsb2NhdG9yLmluZGV4T2YoJ34nKSA9PT0gMCkgLy8gYWNjZXNzaWJpbGl0eSBpZFxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFwcENvbnRleHQgIT09ICdOQVRJVkVfQVBQJykgeyAgICAgICAgICAgIC8vIEh5YnJpZCBvciBXZWIgYXBwbGljYXRpb25cclxuICAgICAgICAgICAgaWYgKGxvY2F0b3IuaW5kZXhPZignaWQ9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJyMnICsgbG9jYXRvci5zdWJzdHIoJ2lkPScubGVuZ3RoKTsgICAgICAvLyBjb252ZXJ0ICdpZD0nIHRvICcjJ1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ25hbWU9JykgPT09IDApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1tuYW1lPScgKyBsb2NhdG9yLnN1YnN0cignbmFtZT0nLmxlbmd0aCkgKyAnXSc7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbGluaz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnPScgKyBsb2NhdG9yLnN1YnN0cignbGluaz0nLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbGluay1jb250YWlucz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiAnKj0nICsgbG9jYXRvci5zdWJzdHIoJ2xpbms9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Nzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdG9yLnN1YnN0cignY3NzPScubGVuZ3RoKTsgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgY3NzLCBqdXN0IHJlbW92ZSBjc3M9IHByZWZpeFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgX2xvYWRIZWxwZXJGdW5jdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yID0gdGhpcy5fZ2V0V2Rpb0xvY2F0b3I7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLm1hdGNoUGF0dGVybiA9IG1vZFV0aWxzLm1hdGNoUGF0dGVybjtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuZ2V0RWxlbWVudCA9IG1vZFV0aWxzLmdldEVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldEVsZW1lbnRzID0gbW9kVXRpbHMuZ2V0RWxlbWVudHM7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmdldENoaWxkRWxlbWVudCA9IG1vZFV0aWxzLmdldENoaWxkRWxlbWVudDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuZ2V0Q2hpbGRFbGVtZW50cyA9IG1vZFV0aWxzLmdldENoaWxkRWxlbWVudHM7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLnNldFRpbWVvdXRJbXBsaWNpdCA9IG1vZFV0aWxzLnNldFRpbWVvdXRJbXBsaWNpdDtcclxuICAgICAgICB0aGlzLmhlbHBlcnMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdCA9IG1vZFV0aWxzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50ID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlciA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZTtcclxuICAgICAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRCb29sID0gbW9kVXRpbHMuYXNzZXJ0QXJndW1lbnRCb29sO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbCA9IG1vZFV0aWxzLmFzc2VydEFyZ3VtZW50Qm9vbE9wdGlvbmFsO1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudFRpbWVvdXQgPSBtb2RVdGlscy5hc3NlcnRBcmd1bWVudFRpbWVvdXQ7XHJcbiAgICAgICAgdGhpcy5oZWxwZXJzLmFzc2VydENvbnRleHQgPSBtb2RVdGlscy5hc3NlcnRDb250ZXh0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5jb250ZXh0TGlzdCA9IG1vZFV0aWxzLmNvbnRleHRMaXN0O1xyXG4gICAgICAgIHRoaXMuaGVscGVycy5nZXRMb2dUeXBlcyA9IG1vZFV0aWxzLmdldExvZ1R5cGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZVNlc3Npb24oKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZHJpdmVyICYmIHRoaXMuZHJpdmVyLmRlbGV0ZVNlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLmRlbGV0ZVNlc3Npb24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ2RlbGV0ZVNlc3Npb24gZXJyb3InLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX3NlbmRSZXN1bHRTdGF0dXNUb0Jyb3dzZXJzdGFjayhzdGF0dXMpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzID09PSAnUEFTU0VEJyA/ICdwYXNzZWQnIDogJ2ZhaWxlZCdcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMud2Rpb09wdHMuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vYXBpLmJyb3dzZXJzdGFjay5jb20vYXV0b21hdGUvc2Vzc2lvbnMvJHt0aGlzLmRyaXZlci5zZXNzaW9uSWR9Lmpzb25gLFxyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BVVCcsXHJcbiAgICAgICAgICAgICAgICAgICAganNvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IHJlcXVlc3RCb2R5LFxyXG4gICAgICAgICAgICAgICAgICAgICdhdXRoJzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAndXNlcic6IHRoaXMud2Rpb09wdHMudXNlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MnOiB0aGlzLndkaW9PcHRzLmtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbmRJbW1lZGlhdGVseSc6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogYGh0dHBzOi8vYXBpLWNsb3VkLmJyb3dzZXJzdGFjay5jb20vYXBwLWF1dG9tYXRlL3Nlc3Npb25zLyR7dGhpcy5kcml2ZXIuc2Vzc2lvbklkfS5qc29uYCxcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICAgICAgICAgICAgICAgIGpzb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBib2R5OiByZXF1ZXN0Qm9keSxcclxuICAgICAgICAgICAgICAgICAgICAnYXV0aCc6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXInOiB0aGlzLndkaW9PcHRzLmNhcGFiaWxpdGllc1snYnJvd3NlcnN0YWNrLnVzZXInXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3MnOiB0aGlzLndkaW9PcHRzLmNhcGFiaWxpdGllc1snYnJvd3NlcnN0YWNrLmtleSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VuZEltbWVkaWF0ZWx5JzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJlcXVlc3Qob3B0aW9ucywgKGVyciwgcmVzLCBib2R5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdVbmFibGUgdG8gc2VuZCByZXN1bHQgc3RhdHVzIHRvIEJyb3dzZXJzdGFjazogJyArIGUudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oxygen-cli",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.7",
|
|
4
4
|
"description": "Automation framework for testing modern applications",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -40,28 +40,32 @@
|
|
|
40
40
|
"husky": "7.0.4",
|
|
41
41
|
"md-reverse": "1.0.0"
|
|
42
42
|
},
|
|
43
|
+
"@comment dependencies": [
|
|
44
|
+
"axios is a peer dependency of soap. when using npm 6 (node 12-14) it needs to be explicitly included. when we migrate to npm 7 (node 16+) it can be removed."
|
|
45
|
+
],
|
|
43
46
|
"dependencies": {
|
|
44
|
-
"@applitools/eyes-webdriverio": "5.
|
|
45
|
-
"@lambdatest/node-rest-client": "1.0.
|
|
47
|
+
"@applitools/eyes-webdriverio": "5.38.2",
|
|
48
|
+
"@lambdatest/node-rest-client": "1.0.5",
|
|
46
49
|
"@oxygenhq/chrome-remote-interface": "0.30.0",
|
|
47
50
|
"@oxygenhq/logger": "0.5.1",
|
|
48
51
|
"@oxygenhq/mitmproxy-node": "1.0.1",
|
|
49
|
-
"@wdio/cli": "7.
|
|
50
|
-
"@wdio/devtools-service": "7.
|
|
51
|
-
"@wdio/sync": "7.
|
|
52
|
+
"@wdio/cli": "7.27.0",
|
|
53
|
+
"@wdio/devtools-service": "7.27.0",
|
|
54
|
+
"@wdio/sync": "7.27.0",
|
|
52
55
|
"async": "3.2.4",
|
|
53
|
-
"
|
|
54
|
-
"
|
|
56
|
+
"axios": "0.27.2",
|
|
57
|
+
"chai": "4.3.7",
|
|
58
|
+
"chrome-har": "0.13.0",
|
|
55
59
|
"config": "3.3.8",
|
|
56
60
|
"cross-spawn": "7.0.3",
|
|
57
|
-
"csv-parse": "4.16.
|
|
61
|
+
"csv-parse": "4.16.3",
|
|
58
62
|
"cucumber": "6.0.5",
|
|
59
63
|
"deasync": "0.1.26",
|
|
60
64
|
"decache": "4.6.1",
|
|
61
65
|
"easyxml": "2.0.1",
|
|
62
66
|
"ejs": "3.1.8",
|
|
63
67
|
"esm": "3.2.25",
|
|
64
|
-
"fast-xml-parser": "4.0.
|
|
68
|
+
"fast-xml-parser": "4.0.12",
|
|
65
69
|
"fibers": "5.0.3",
|
|
66
70
|
"glob": "7.2.3",
|
|
67
71
|
"glob-to-regexp": "0.4.1",
|
|
@@ -86,11 +90,11 @@
|
|
|
86
90
|
"soap": "0.45.0",
|
|
87
91
|
"source-map-support": "0.5.21",
|
|
88
92
|
"stacktrace-parser": "0.1.10",
|
|
89
|
-
"testdouble": "3.16.
|
|
93
|
+
"testdouble": "3.16.8",
|
|
90
94
|
"testingbot-api": "1.0.7",
|
|
91
95
|
"text-to-image": "5.2.0",
|
|
92
96
|
"twilio": "3.77.2",
|
|
93
|
-
"webdriverio": "7.
|
|
97
|
+
"webdriverio": "7.27.0",
|
|
94
98
|
"when": "3.7.8",
|
|
95
99
|
"xlsx": "0.18.5"
|
|
96
100
|
},
|