appium-adb 9.2.1 → 9.2.2

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.
@@ -394,4 +394,4 @@ var _default = emuMethods;
394
394
  exports.default = _default;require('source-map-support').install();
395
395
 
396
396
 
397
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9hZGItZW11LWNvbW1hbmRzLmpzIl0sIm5hbWVzIjpbIlBIT05FX05VTUJFUl9QQVRURVJOIiwiZW11TWV0aG9kcyIsIlBPV0VSX0FDX1NUQVRFUyIsIk9iamVjdCIsImZyZWV6ZSIsIlBPV0VSX0FDX09OIiwiUE9XRVJfQUNfT0ZGIiwiR1NNX0NBTExfQUNUSU9OUyIsIkdTTV9DQUxMIiwiR1NNX0FDQ0VQVCIsIkdTTV9DQU5DRUwiLCJHU01fSE9MRCIsIkdTTV9WT0lDRV9TVEFURVMiLCJHU01fVk9JQ0VfVU5SRUdJU1RFUkVEIiwiR1NNX1ZPSUNFX0hPTUUiLCJHU01fVk9JQ0VfUk9BTUlORyIsIkdTTV9WT0lDRV9TRUFSQ0hJTkciLCJHU01fVk9JQ0VfREVOSUVEIiwiR1NNX1ZPSUNFX09GRiIsIkdTTV9WT0lDRV9PTiIsIkdTTV9TSUdOQUxfU1RSRU5HVEhTIiwiTkVUV09SS19TUEVFRCIsIkdTTSIsIlNDU0QiLCJHUFJTIiwiRURHRSIsIlVNVFMiLCJIU0RQQSIsIkxURSIsIkVWRE8iLCJGVUxMIiwiU0VOU09SUyIsIkFDQ0VMRVJBVElPTiIsIkdZUk9TQ09QRSIsIk1BR05FVElDX0ZJRUxEIiwiT1JJRU5UQVRJT04iLCJURU1QRVJBVFVSRSIsIlBST1hJTUlUWSIsIkxJR0hUIiwiUFJFU1NVUkUiLCJIVU1JRElUWSIsIk1BR05FVElDX0ZJRUxEX1VOQ0FMSUJSQVRFRCIsIkdZUk9TQ09QRV9VTkNBTElCUkFURUQiLCJISU5HRV9BTkdMRTAiLCJISU5HRV9BTkdMRTEiLCJISU5HRV9BTkdMRTIiLCJIRUFSVF9SQVRFIiwiUkdCQ19MSUdIVCIsImxpc3RFbXVsYXRvcnMiLCJhdmRzUm9vdCIsInByb2Nlc3MiLCJlbnYiLCJBTkRST0lEX0FWRF9IT01FIiwiZ2V0QXZkQ29uZmlnUGF0aHMiLCJsb2ciLCJ3YXJuIiwicHJlZnNSb290IiwicGF0aCIsInJlc29sdmUiLCJkZWJ1ZyIsImNvbmZpZ3MiLCJmcyIsImdsb2IiLCJjd2QiLCJhYnNvbHV0ZSIsIm1hcCIsImNvbmZQYXRoIiwiYXZkTmFtZSIsImJhc2VuYW1lIiwic3BsaXQiLCJzbGljZSIsImpvaW4iLCJuYW1lIiwiY29uZmlnIiwiZmlsdGVyIiwiXyIsInRyaW0iLCJpc0VtdWxhdG9yQ29ubmVjdGVkIiwiZW11bGF0b3JzIiwiZ2V0Q29ubmVjdGVkRW11bGF0b3JzIiwiZmluZCIsIngiLCJ1ZGlkIiwiY3VyRGV2aWNlSWQiLCJ2ZXJpZnlFbXVsYXRvckNvbm5lY3RlZCIsIkVycm9yIiwiZmluZ2VycHJpbnQiLCJmaW5nZXJwcmludElkIiwibGV2ZWwiLCJnZXRBcGlMZXZlbCIsImFkYkV4ZWNFbXUiLCJyb3RhdGUiLCJwb3dlckFDIiwic3RhdGUiLCJ2YWx1ZXMiLCJpbmRleE9mIiwiVHlwZUVycm9yIiwic2Vuc29yU2V0Iiwic2Vuc29yIiwidmFsdWUiLCJpbmNsdWRlcyIsImlzTmlsIiwicG93ZXJDYXBhY2l0eSIsInBlcmNlbnQiLCJwYXJzZUludCIsImlzTmFOIiwicG93ZXJPRkYiLCJzZW5kU01TIiwicGhvbmVOdW1iZXIiLCJtZXNzYWdlIiwicmVwbGFjZSIsInRlc3QiLCJnc21DYWxsIiwiYWN0aW9uIiwiZ3NtU2lnbmFsIiwic3RyZW5ndGgiLCJpbmZvIiwiZ3NtVm9pY2UiLCJuZXR3b3JrU3BlZWQiLCJzcGVlZCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsImV4ZWNUZWxuZXQiLCJjbWQiLCJvcHRzIiwicG9ydCIsInBvcnRNYXRjaCIsImV4ZWMiLCJob3N0IiwiZXhlY1RpbWVvdXQiLCJjb25uVGltZW91dCIsImluaXRUaW1lb3V0IiwicmVzZXRUZWxuZXRBdXRoVG9rZW4iLCJva0ZsYWciLCJub2tGbGFnIiwiZW9sIiwiY2xpZW50IiwibmV0IiwiY29ubmVjdCIsIkIiLCJyZWplY3QiLCJjb25uVGltZW91dE9iaiIsInNldFRpbWVvdXQiLCJleGVjVGltZW91dE9iaiIsImluaXRUaW1lb3V0T2JqIiwiaXNDb21tYW5kU2VudCIsInNlcnZlclJlc3BvbnNlIiwib25jZSIsImUiLCJjbGVhclRpbWVvdXQiLCJvbiIsImNodW5rIiwicHVzaCIsIm91dHB1dCIsIkJ1ZmZlciIsImNvbmNhdCIsInRvU3RyaW5nIiwiY21kU3RyIiwiaXNBcnJheSIsInV0aWwiLCJxdW90ZSIsIndyaXRlIiwiZW5kIiwib3V0cHV0QXJyIiwibGVuZ3RoIiwibGFzdCIsImdldEVtdVZlcnNpb25JbmZvIiwicHJvcHNQYXRoIiwic2RrUm9vdCIsImV4aXN0cyIsImNvbnRlbnQiLCJyZWFkRmlsZSIsInJldmlzaW9uTWF0Y2giLCJyZXN1bHQiLCJyZXZpc2lvbiIsImJ1aWxkSWRNYXRjaCIsImJ1aWxkSWQiLCJnZXRFbXVJbWFnZVByb3BlcnRpZXMiLCJhdmRzIiwiYXZkIiwibXNnIiwiaXNFbXB0eSIsImluaSIsInBhcnNlIiwiY2hlY2tBdmRFeGlzdCIsInNvbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsb0JBQW9CLEdBQUcscURBQTdCO0FBRUEsTUFBTUMsVUFBVSxHQUFHLEVBQW5CO0FBQ0FBLFVBQVUsQ0FBQ0MsZUFBWCxHQUE2QkMsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFDekNDLEVBQUFBLFdBQVcsRUFBRSxJQUQ0QjtBQUV6Q0MsRUFBQUEsWUFBWSxFQUFFO0FBRjJCLENBQWQsQ0FBN0I7QUFJQUwsVUFBVSxDQUFDTSxnQkFBWCxHQUE4QkosTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFDMUNJLEVBQUFBLFFBQVEsRUFBRSxNQURnQztBQUUxQ0MsRUFBQUEsVUFBVSxFQUFFLFFBRjhCO0FBRzFDQyxFQUFBQSxVQUFVLEVBQUUsUUFIOEI7QUFJMUNDLEVBQUFBLFFBQVEsRUFBRTtBQUpnQyxDQUFkLENBQTlCO0FBTUFWLFVBQVUsQ0FBQ1csZ0JBQVgsR0FBOEJULE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQzFDUyxFQUFBQSxzQkFBc0IsRUFBRSxjQURrQjtBQUUxQ0MsRUFB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QUNELENBYkQ7O0FBc0JBeEUsVUFBVSxDQUFDc0wsYUFBWCxHQUEyQixlQUFlQSxhQUFmLENBQThCcEgsT0FBOUIsRUFBdUM7QUFDaEUsUUFBTThHLElBQUksR0FBRyxNQUFNakksYUFBYSxFQUFoQzs7QUFDQSxNQUFJLENBQUNpSSxJQUFJLENBQUNPLElBQUwsQ0FBVSxDQUFDO0FBQUNoSCxJQUFBQTtBQUFELEdBQUQsS0FBWUEsSUFBSSxLQUFLTCxPQUEvQixDQUFMLEVBQThDO0FBQzVDLFFBQUlnSCxHQUFHLEdBQUksUUFBT2hILE9BQVEsc0JBQTFCOztBQUNBLFFBQUlRLGdCQUFFeUcsT0FBRixDQUFVSCxJQUFWLENBQUosRUFBcUI7QUFDbkJFLE1BQUFBLEdBQUcsSUFBSyxnREFBUjtBQUNELEtBRkQsTUFFTztBQUNMQSxNQUFBQSxHQUFHLElBQUssbURBQWtERixJQUFJLENBQUNoSCxHQUFMLENBQVMsQ0FBQztBQUFDTyxRQUFBQTtBQUFELE9BQUQsS0FBWUEsSUFBckIsQ0FBMkIsR0FBckY7QUFDRDs7QUFDRCxVQUFNLElBQUlhLEtBQUosQ0FBVThGLEdBQVYsQ0FBTjtBQUNEOztBQUNELFNBQU8sSUFBUDtBQUNELENBWkQ7O2VBY2VsTCxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZ2V0QW5kcm9pZFByZWZzUm9vdCwgZGlyRXhpc3RzIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IHsgdXRpbCwgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgaW5pIGZyb20gJ2luaSc7XG5cbmNvbnN0IFBIT05FX05VTUJFUl9QQVRURVJOID0gL15bK10/WyhdP1swLTldKlspXT9bLVxccy5dP1swLTldKlstXFxzLl0/WzAtOV17Mix9JC9pbTtcblxuY29uc3QgZW11TWV0aG9kcyA9IHt9O1xuZW11TWV0aG9kcy5QT1dFUl9BQ19TVEFURVMgPSBPYmplY3QuZnJlZXplKHtcbiAgUE9XRVJfQUNfT046ICdvbicsXG4gIFBPV0VSX0FDX09GRjogJ29mZidcbn0pO1xuZW11TWV0aG9kcy5HU01fQ0FMTF9BQ1RJT05TID0gT2JqZWN0LmZyZWV6ZSh7XG4gIEdTTV9DQUxMOiAnY2FsbCcsXG4gIEdTTV9BQ0NFUFQ6ICdhY2NlcHQnLFxuICBHU01fQ0FOQ0VMOiAnY2FuY2VsJyxcbiAgR1NNX0hPTEQ6ICdob2xkJ1xufSk7XG5lbXVNZXRob2RzLkdTTV9WT0lDRV9TVEFURVMgPSBPYmplY3QuZnJlZXplKHtcbiAgR1NNX1ZPSUNFX1VOUkVHSVNURVJFRDogJ3VucmVnaXN0ZXJlZCcsXG4gIEdTTV9WT0lDRV9IT01FOiAnaG9tZScsXG4gIEdTTV9WT0lDRV9ST0FNSU5HOiAncm9hbWluZycsXG4gIEdTTV9WT0lDRV9TRUFSQ0hJTkc6ICdzZWFyY2hpbmcnLFxuICBHU01fVk9JQ0VfREVOSUVEOiAnZGVuaWVkJyxcbiAgR1NNX1ZPSUNFX09GRjogJ29mZicsXG4gIEdTTV9WT0lDRV9PTjogJ29uJ1xufSk7XG5lbXVNZXRob2RzLkdTTV9TSUdOQUxfU1RSRU5HVEhTID0gWzAsIDEsIDIsIDMsIDRdO1xuXG5lbXVNZXRob2RzLk5FVFdPUktfU1BFRUQgPSBPYmplY3QuZnJlZXplKHtcbiAgR1NNOiAnZ3NtJywgLy8gR1NNL0NTRCAodXA6IDE0LjQsIGRvd246IDE0LjQpLlxuICBTQ1NEOiAnc2NzZCcsIC8vIEhTQ1NEICh1cDogMTQuNCwgZG93bjogNTcuNikuXG4gIEdQUlM6ICdncHJzJywgLy8gR1BSUyAodXA6IDI4LjgsIGRvd246IDU3LjYpLlxuICBFREdFOiAnZWRnZScsIC8vIEVER0UvRUdQUlMgKHVwOiA0NzMuNiwgZG93bjogNDczLjYpLlxuICBVTVRTOiAndW10cycsIC8vIFVNVFMvM0cgKHVwOiAzODQuMCwgZG93bjogMzg0LjApLlxuICBIU0RQQTogJ2hzZHBhJywgLy8gSFNEUEEgKHVwOiA1NzYwLjAsIGRvd246IDEzLDk4MC4wKS5cbiAgTFRFOiAnbHRlJywgLy8gTFRFICh1cDogNTgsMDAwLCBkb3duOiAxNzMsMDAwKS5cbiAgRVZETzogJ2V2ZG8nLCAvLyBFVkRPICh1cDogNzUsMDAwLCBkb3duOiAyODAsMDAwKS5cbiAgRlVMTDogJ2Z1bGwnIC8vIE5vIGxpbWl0LCB0aGUgZGVmYXVsdCAodXA6IDAuMCwgZG93bjogMC4wKS5cbn0pO1xuXG5lbXVNZXRob2RzLlNFTlNPUlMgPSBPYmplY3QuZnJlZXplKHtcbiAgQUNDRUxFUkFUSU9OOiAnYWNjZWxlcmF0aW9uJyxcbiAgR1lST1NDT1BFOiAnZ3lyb3Njb3BlJyxcbiAgTUFHTkVUSUNfRklFTEQ6ICdtYWduZXRpYy1maWVsZCcsXG4gIE9SSUVOVEFUSU9OOiAnb3JpZW50YXRpb24nLFxuICBURU1QRVJBVFVSRTogJ3RlbXBlcmF0dXJlJyxcbiAgUFJPWElNSVRZOiAncHJveGltaXR5JyxcbiAgTElHSFQ6ICdsaWdodCcsXG4gIFBSRVNTVVJFOiAncHJlc3N1cmUnLFxuICBIVU1JRElUWTogJ2h1bWlkaXR5JyxcbiAgTUFHTkVUSUNfRklFTERfVU5DQUxJQlJBVEVEOiAnbWFnbmV0aWMtZmllbGQtdW5jYWxpYnJhdGVkJyxcbiAgR1lST1NDT1BFX1VOQ0FMSUJSQVRFRDogJ2d5cm9zY29wZS11bmNhbGlicmF0ZWQnLFxuICBISU5HRV9BTkdMRTA6ICdoaW5nZS1hbmdsZTAnLFxuICBISU5HRV9BTkdMRTE6ICdoaW5nZS1hbmdsZTEnLFxuICBISU5HRV9BTkdMRTI6ICdoaW5nZS1hbmdsZTInLFxuICBIRUFSVF9SQVRFOiAnaGVhcnQtcmF0ZScsXG4gIFJHQkNfTElHSFQ6ICdyZ2JjLWxpZ2h0Jyxcbn0pO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVtdUluZm9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIEVtdWxhdG9yIG5hbWUsIGZvciBleGFtcGxlIGBQaXhlbF9YTF9BUElfMzBgXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29uZmlnIEZ1bGwgcGF0aCB0byB0aGUgZW11bGF0b3IgY29uZmlnIC5pbmkgZmlsZSxcbiAqIGZvciBleGFtcGxlIGAvVXNlcnMvdXNlci8uYW5kcm9pZC9hdmQvUGl4ZWxfWExfQVBJXzMwLmluaWBcbiAqL1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgQW5kcm9pZCBlbXVsYXRvcnNcbiAqXG4gKiBAcmV0dXJucyB7QXJyYXk8RW11SW5mbz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxpc3RFbXVsYXRvcnMgKCkge1xuICBsZXQgYXZkc1Jvb3QgPSBwcm9jZXNzLmVudi5BTkRST0lEX0FWRF9IT01FO1xuICBpZiAoYXdhaXQgZGlyRXhpc3RzKGF2ZHNSb290KSkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBdmRDb25maWdQYXRocyhhdmRzUm9vdCk7XG4gIH1cblxuICBpZiAoYXZkc1Jvb3QpIHtcbiAgICBsb2cud2FybihgVGhlIHZhbHVlIG9mIHRoZSBBTkRST0lEX0FWRF9IT01FIGVudmlyb25tZW50IHZhcmlhYmxlICcke2F2ZHNSb290fScgaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeWApO1xuICB9XG5cbiAgY29uc3QgcHJlZnNSb290ID0gYXdhaXQgZ2V0QW5kcm9pZFByZWZzUm9vdCgpO1xuICBpZiAoIXByZWZzUm9vdCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGF2ZHNSb290ID0gcGF0aC5yZXNvbHZlKHByZWZzUm9vdCwgJ2F2ZCcpO1xuICBpZiAoIWF3YWl0IGRpckV4aXN0cyhhdmRzUm9vdCkpIHtcbiAgICBsb2cuZGVidWcoYFZpcnR1YWwgZGV2aWNlcyBjb25maWcgcm9vdCAnJHthdmRzUm9vdH0nIGlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnlgKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0QXZkQ29uZmlnUGF0aHMoYXZkc1Jvb3QpO1xufVxuXG4vKipcbiAqIEdldCBjb25maWd1cmF0aW9uIHBhdGhzIG9mIGFsbCB2aXJ0dWFsIGRldmljZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXZkc1Jvb3QgUGF0aCB0byB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGhlIEFWRCAuaW5pIGZpbGVzXG4gKiBAcmV0dXJucyB7QXJyYXk8RW11SW5mbz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEF2ZENvbmZpZ1BhdGhzIChhdmRzUm9vdCkge1xuICBjb25zdCBjb25maWdzID0gYXdhaXQgZnMuZ2xvYignKi5pbmknLCB7XG4gICAgY3dkOiBhdmRzUm9vdCxcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgfSk7XG4gIHJldHVybiBjb25maWdzLm1hcCgoY29uZlBhdGgpID0+IHtcbiAgICBjb25zdCBhdmROYW1lID0gcGF0aC5iYXNlbmFtZShjb25mUGF0aCkuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpO1xuICAgIHJldHVybiB7bmFtZTogYXZkTmFtZSwgY29uZmlnOiBjb25mUGF0aH07XG4gIH0pLmZpbHRlcigoe25hbWV9KSA9PiBfLnRyaW0obmFtZSkpO1xufVxuXG4vKipcbiAqIENoZWNrIHRoZSBlbXVsYXRvciBzdGF0ZS5cbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIEVtdWxhdG9yIGlzIHZpc2libGUgdG8gYWRiLlxuICovXG5lbXVNZXRob2RzLmlzRW11bGF0b3JDb25uZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0VtdWxhdG9yQ29ubmVjdGVkICgpIHtcbiAgbGV0IGVtdWxhdG9ycyA9IGF3YWl0IHRoaXMuZ2V0Q29ubmVjdGVkRW11bGF0b3JzKCk7XG4gIHJldHVybiAhIV8uZmluZChlbXVsYXRvcnMsICh4KSA9PiB4ICYmIHgudWRpZCA9PT0gdGhpcy5jdXJEZXZpY2VJZCk7XG59O1xuXG4vKipcbiAqIFZlcmlmeSB0aGUgZW11bGF0b3IgaXMgY29ubmVjdGVkLlxuICpcbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBFbXVsYXRvciBpcyBub3QgdmlzaWJsZSB0byBhZGIuXG4gKi9cbmVtdU1ldGhvZHMudmVyaWZ5RW11bGF0b3JDb25uZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiB2ZXJpZnlFbXVsYXRvckNvbm5lY3RlZCAoKSB7XG4gIGlmICghKGF3YWl0IHRoaXMuaXNFbXVsYXRvckNvbm5lY3RlZCgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGVtdWxhdG9yIFwiJHt0aGlzLmN1ckRldmljZUlkfVwiIHdhcyB1bmV4cGVjdGVkbHkgZGlzY29ubmVjdGVkYCk7XG4gIH1cbn07XG5cbi8qKlxuICogRW11bGF0ZSBmaW5nZXJwcmludCB0b3VjaCBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaW5nZXJwcmludElkIC0gVGhlIElEIG9mIHRoZSBmaW5nZXJwcmludC5cbiAqL1xuZW11TWV0aG9kcy5maW5nZXJwcmludCA9IGFzeW5jIGZ1bmN0aW9uIGZpbmdlcnByaW50IChmaW5nZXJwcmludElkKSB7XG4gIGlmICghZmluZ2VycHJpbnRJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmluZ2VycHJpbnQgaWQgcGFyYW1ldGVyIG11c3QgYmUgZGVmaW5lZCcpO1xuICB9XG4gIC8vIHRoZSBtZXRob2QgdXNlZCBvbmx5IHdvcmtzIGZvciBBUEkgbGV2ZWwgMjMgYW5kIGFib3ZlXG4gIGxldCBsZXZlbCA9IGF3YWl0IHRoaXMuZ2V0QXBpTGV2ZWwoKTtcbiAgaWYgKGxldmVsIDwgMjMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERldmljZSBBUEkgTGV2ZWwgbXVzdCBiZSA+PSAyMy4gQ3VycmVudCBBcGkgbGV2ZWwgJyR7bGV2ZWx9J2ApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ2ZpbmdlcicsICd0b3VjaCcsIGZpbmdlcnByaW50SWRdKTtcbn07XG5cbi8qKlxuICogQ2hhbmdlIHRoZSBkaXNwbGF5IG9yaWVudGF0aW9uIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKiBUaGUgb3JpZW50YXRpb24gaXMgY2hhbmdlZCAoUEkvMiBpcyBhZGRlZCkgZXZlcnkgdGltZVxuICogdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuICovXG5lbXVNZXRob2RzLnJvdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHJvdGF0ZSAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3JvdGF0ZSddKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBwb3dlciBzdGF0ZSBjaGFuZ2Ugb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgWydvbiddIC0gRWl0aGVyICdvbicgb3IgJ29mZicuXG4gKi9cbmVtdU1ldGhvZHMucG93ZXJBQyA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyQUMgKHN0YXRlID0gJ29uJykge1xuICBpZiAoXy52YWx1ZXMoZW11TWV0aG9kcy5QT1dFUl9BQ19TVEFURVMpLmluZGV4T2Yoc3RhdGUpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFdyb25nIHBvd2VyIEFDIHN0YXRlIHNlbnQgJyR7c3RhdGV9Jy4gYFxuICAgICAgKyBgU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLlBPV0VSX0FDX1NUQVRFUyl9XWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3Bvd2VyJywgJ2FjJywgc3RhdGVdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBzZW5zb3JzIHZhbHVlcyBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZW5zb3IgLSBTZW5zb3IgdHlwZSBkZWNsYXJlZCBpbiBTRU5TT1JTIGl0ZW1zLlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB2YWx1ZSAgLSBOdW1iZXIgdG8gc2V0IGFzIHRoZSBzZW5zb3IgdmFsdWUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiBzZW5zb3IgdHlwZSBvciBzZW5zb3IgdmFsdWUgaXMgbm90IGRlZmluZWRcbiAqL1xuZW11TWV0aG9kcy5zZW5zb3JTZXQgPSBhc3luYyBmdW5jdGlvbiBzZW5zb3JTZXQgKHNlbnNvciwgdmFsdWUpIHtcbiAgaWYgKCFfLmluY2x1ZGVzKGVtdU1ldGhvZHMuU0VOU09SUywgc2Vuc29yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFVuc3VwcG9ydGVkIHNlbnNvciBzZW50ICcke3NlbnNvcn0nLiBgXG4gICAgICArIGBTdXBwb3J0ZWQgdmFsdWVzOiAke18udmFsdWVzKGVtdU1ldGhvZHMuU0VOU09SUyl9XWApO1xuICB9XG4gIGlmIChfLmlzTmlsKHZhbHVlKSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBNaXNzaW5nL2ludmFsaWQgc2Vuc29yIHZhbHVlIGFyZ3VtZW50LiBgXG4gICAgICArIGBZb3UgbmVlZCB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgdG8gc2V0IHRvIHRoZSBzZW5zb3IgaW4gYFxuICAgICAgKyBgZm9ybWF0IDx2YWx1ZS1hPls6PHZhbHVlLWI+Wzo8dmFsdWUtYz5bLi4uXV1dLmApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3NlbnNvcicsICdzZXQnLCBzZW5zb3IsIHZhbHVlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgcG93ZXIgY2FwYWNpdHkgY2hhbmdlIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBwZXJjZW50IFsxMDBdIC0gUGVyY2VudGFnZSB2YWx1ZSBpbiByYW5nZSBbMCwgMTAwXS5cbiAqL1xuZW11TWV0aG9kcy5wb3dlckNhcGFjaXR5ID0gYXN5bmMgZnVuY3Rpb24gcG93ZXJDYXBhY2l0eSAocGVyY2VudCA9IDEwMCkge1xuICBwZXJjZW50ID0gcGFyc2VJbnQocGVyY2VudCwgMTApO1xuICBpZiAoaXNOYU4ocGVyY2VudCkgfHwgcGVyY2VudCA8IDAgfHwgcGVyY2VudCA+IDEwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHBlcmNlbnRhZ2UgdmFsdWUgc2hvdWxkIGJlIHZhbGlkIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMDBgKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydwb3dlcicsICdjYXBhY2l0eScsIHBlcmNlbnRdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBwb3dlciBvZmYgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqL1xuZW11TWV0aG9kcy5wb3dlck9GRiA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyT0ZGICgpIHtcbiAgYXdhaXQgdGhpcy5wb3dlckFDKGVtdU1ldGhvZHMuUE9XRVJfQUNfU1RBVEVTLlBPV0VSX0FDX09GRik7XG4gIGF3YWl0IHRoaXMucG93ZXJDYXBhY2l0eSgwKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBzZW5kIFNNUyBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcGhvbmVOdW1iZXIgLSBUaGUgcGhvbmUgbnVtYmVyIG9mIG1lc3NhZ2Ugc2VuZGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgWycnXSAtIFRoZSBtZXNzYWdlIGNvbnRlbnQuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgcGhvbmUgbnVtYmVyIGhhcyBpbnZhbGlkIGZvcm1hdC5cbiAqL1xuZW11TWV0aG9kcy5zZW5kU01TID0gYXN5bmMgZnVuY3Rpb24gc2VuZFNNUyAocGhvbmVOdW1iZXIsIG1lc3NhZ2UgPSAnJykge1xuICBtZXNzYWdlID0gbWVzc2FnZS50cmltKCk7XG4gIGlmIChtZXNzYWdlID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcignU2VuZGluZyBhbiBTTVMgcmVxdWlyZXMgYSBtZXNzYWdlJyk7XG4gIH1cbiAgcGhvbmVOdW1iZXIgPSBgJHtwaG9uZU51bWJlcn1gLnJlcGxhY2UoL1xccyovLCAnJyk7XG4gIGlmICghUEhPTkVfTlVNQkVSX1BBVFRFUk4udGVzdChwaG9uZU51bWJlcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VuZFNNUyBwaG9uZU51bWJlciBwYXJhbSAke3Bob25lTnVtYmVyfWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3NtcycsICdzZW5kJywgcGhvbmVOdW1iZXIsIG1lc3NhZ2VdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBHU00gY2FsbCBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcGhvbmVOdW1iZXIgLSBUaGUgcGhvbmUgbnVtYmVyIG9mIHRoZSBjYWxsZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIFsnJ10gLSBPbmUgb2YgYXZhaWxhYmxlIEdTTSBjYWxsIGFjdGlvbnMuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgcGhvbmUgbnVtYmVyIGhhcyBpbnZhbGlkIGZvcm1hdC5cbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBfYWN0aW9uXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLmdzbUNhbGwgPSBhc3luYyBmdW5jdGlvbiBnc21DYWxsIChwaG9uZU51bWJlciwgYWN0aW9uID0gJycpIHtcbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuR1NNX0NBTExfQUNUSU9OUykuaW5kZXhPZihhY3Rpb24pID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBnc20gYWN0aW9uIHBhcmFtICR7YWN0aW9ufS4gU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9DQUxMX0FDVElPTlMpfWApO1xuICB9XG4gIHBob25lTnVtYmVyID0gYCR7cGhvbmVOdW1iZXJ9YC5yZXBsYWNlKC9cXHMqLywgJycpO1xuICBpZiAoIVBIT05FX05VTUJFUl9QQVRURVJOLnRlc3QocGhvbmVOdW1iZXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGdzbUNhbGwgcGhvbmVOdW1iZXIgcGFyYW0gJHtwaG9uZU51bWJlcn1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydnc20nLCBhY3Rpb24sIHBob25lTnVtYmVyXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgR1NNIHNpZ25hbCBzdHJlbmd0aCBjaGFuZ2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHN0cmVuZ3RoIFs0XSAtIEEgbnVtYmVyIGluIHJhbmdlIFswLCA0XTtcbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBfc3RyZW5ndGhfIHZhbHVlIGlzIGludmFsaWQuXG4gKi9cbmVtdU1ldGhvZHMuZ3NtU2lnbmFsID0gYXN5bmMgZnVuY3Rpb24gZ3NtU2lnbmFsIChzdHJlbmd0aCA9IDQpIHtcbiAgc3RyZW5ndGggPSBwYXJzZUludChzdHJlbmd0aCwgMTApO1xuICBpZiAoZW11TWV0aG9kcy5HU01fU0lHTkFMX1NUUkVOR1RIUy5pbmRleE9mKHN0cmVuZ3RoKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2lnbmFsIHN0cmVuZ3RoIHBhcmFtICR7c3RyZW5ndGh9LiBTdXBwb3J0ZWQgdmFsdWVzOiAke18udmFsdWVzKGVtdU1ldGhvZHMuR1NNX1NJR05BTF9TVFJFTkdUSFMpfWApO1xuICB9XG4gIGxvZy5pbmZvKCdnc20gc2lnbmFsLXByb2ZpbGUgPHN0cmVuZ3RoPiBjaGFuZ2VzIHRoZSByZXBvcnRlZCBzdHJlbmd0aCBvbiBuZXh0ICgxNXMpIHVwZGF0ZS4nKTtcbiAgYXdhaXQgdGhpcy5hZGJFeGVjRW11KFsnZ3NtJywgJ3NpZ25hbC1wcm9maWxlJywgc3RyZW5ndGhdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBHU00gdm9pY2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgWydvbiddIC0gRWl0aGVyICdvbicgb3IgJ29mZicuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX3N0YXRlXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLmdzbVZvaWNlID0gYXN5bmMgZnVuY3Rpb24gZ3NtVm9pY2UgKHN0YXRlID0gJ29uJykge1xuICAvLyBnc20gdm9pY2UgPHN0YXRlPiBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgeW91ciBHUFJTIGNvbm5lY3Rpb25cbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuR1NNX1ZPSUNFX1NUQVRFUykuaW5kZXhPZihzdGF0ZSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGdzbSB2b2ljZSBzdGF0ZSBwYXJhbSAke3N0YXRlfS4gU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9WT0lDRV9TVEFURVMpfWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ2dzbScsICd2b2ljZScsIHN0YXRlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgbmV0d29yayBzcGVlZCBjaGFuZ2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BlZWQgWydmdWxsJ10gLSBPbmUgb2YgcG9zc2libGUgTkVUV09SS19TUEVFRCB2YWx1ZXMuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX3NwZWVkXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLm5ldHdvcmtTcGVlZCA9IGFzeW5jIGZ1bmN0aW9uIG5ldHdvcmtTcGVlZCAoc3BlZWQgPSAnZnVsbCcpIHtcbiAgLy8gbmV0d29yayBzcGVlZCA8c3BlZWQ+IGFsbG93cyB5b3UgdG8gc2V0IHRoZSBuZXR3b3JrIHNwZWVkIGVtdWxhdGlvbi5cbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuTkVUV09SS19TUEVFRCkuaW5kZXhPZihzcGVlZCkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5ldHdvcmsgc3BlZWQgcGFyYW0gJHtzcGVlZH0uIFN1cHBvcnRlZCB2YWx1ZXM6ICR7Xy52YWx1ZXMoZW11TWV0aG9kcy5ORVRXT1JLX1NQRUVEKX1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWyduZXR3b3JrJywgJ3NwZWVkJywgc3BlZWRdKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRXhlY1RlbG5ldE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBleGVjVGltZW91dCBbNjAwMDBdIEEgdGltZW91dCB1c2VkIHRvIHdhaXQgZm9yIGEgc2VydmVyXG4gKiByZXBseSB0byB0aGUgZ2l2ZW4gY29tbWFuZFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbm5UaW1lb3V0IFs1MDAwXSBDb25zb2xlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpbml0VGltZW91dCBbNTAwMF0gVGVsbmV0IGNvbnNvbGUgaW5pdGlhbGl6YXRpb24gdGltZW91dFxuICogaW4gbWlsbGlzZWNvbmRzICh0aGUgdGltZSBiZXR3ZWVuIGNvbm5lY3Rpb24gaGFwcGVucyBhbmQgdGhlIGNvbW1hbmQgcHJvbXB0XG4gKiBpcyBhdmFpbGFibGUpXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBwb3J0IFRoZSBlbXVsYXRvciBwb3J0IG51bWJlci4gVGhlIG1ldGhvZCB3aWxsIHRyeSB0byBwYXJzZSBpdFxuICogZnJvbSB0aGUgY3VycmVudCBkZXZpY2UgaWRlbnRpZmllciBpZiB1bnNldFxuICovXG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kIHRocm91Z2ggZW11bGF0b3IgdGVsbmV0IGNvbnNvbGUgaW50ZXJmYWNlIGFuZCByZXR1cm5zIGl0cyBvdXRwdXRcbiAqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz58c3RyaW5nfSBjbWQgLSBUaGUgYWN0dWFsIGNvbW1hbmQgdG8gZXhlY3V0ZS4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vcnVuL2VtdWxhdG9yLWNvbnNvbGUgZm9yIG1vcmUgZGV0YWlsc1xuICogb24gYXZhaWxhYmxlIGNvbW1hbmRzXG4gKiBAcGFyYW0ge0V4ZWNUZWxuZXRPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY29ubmVjdGluZyB0byB0aGUgVGVsbmV0IGNvbnNvbGVcbiAqIG9yIGlmIHRoZSBnaXZlbiBjb21tYW5kIHJldHVybmVkIG5vbi1PSyByZXNwb25zZVxuICovXG5lbXVNZXRob2RzLmV4ZWNFbXVDb25zb2xlQ29tbWFuZCA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWNUZWxuZXQgKGNtZCwgb3B0cyA9IHt9KSB7XG4gIGxldCBwb3J0ID0gcGFyc2VJbnQob3B0cy5wb3J0LCAxMCk7XG4gIGlmICghcG9ydCkge1xuICAgIGNvbnN0IHBvcnRNYXRjaCA9IC9lbXVsYXRvci0oXFxkKykvaS5leGVjKHRoaXMuY3VyRGV2aWNlSWQpO1xuICAgIGlmICghcG9ydE1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBwYXJzZSB0aGUgY29uc29sZSBwb3J0IG51bWJlciBmcm9tIHRoZSBkZXZpY2UgaWRlbnRpZmllciAnJHt0aGlzLmN1ckRldmljZUlkfScuIGAgK1xuICAgICAgICBgSXMgaXQgYW4gZW11bGF0b3I/YCk7XG4gICAgfVxuICAgIHBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0sIDEwKTtcbiAgfVxuICBjb25zdCBob3N0ID0gJzEyNy4wLjAuMSc7XG4gIGNvbnN0IHtcbiAgICBleGVjVGltZW91dCA9IDYwMDAwLFxuICAgIGNvbm5UaW1lb3V0ID0gNTAwMCxcbiAgICBpbml0VGltZW91dCA9IDUwMDAsXG4gIH0gPSBvcHRzO1xuICBhd2FpdCB0aGlzLnJlc2V0VGVsbmV0QXV0aFRva2VuKCk7XG5cbiAgY29uc3Qgb2tGbGFnID0gL15PSyQvbTtcbiAgY29uc3Qgbm9rRmxhZyA9IC9eS09cXGIvbTtcbiAgY29uc3QgZW9sID0gJ1xcclxcbic7XG4gIGNvbnN0IGNsaWVudCA9IG5ldC5jb25uZWN0KHtcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY29ublRpbWVvdXRPYmogPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICBgYWZ0ZXIgJHtjb25uVGltZW91dH1tc2ApKSwgY29ublRpbWVvdXQpO1xuICAgIGxldCBleGVjVGltZW91dE9iajtcbiAgICBsZXQgaW5pdFRpbWVvdXRPYmo7XG4gICAgbGV0IGlzQ29tbWFuZFNlbnQgPSBmYWxzZTtcbiAgICBsZXQgc2VydmVyUmVzcG9uc2UgPSBbXTtcblxuICAgIGNsaWVudC5vbmNlKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoY29ublRpbWVvdXRPYmopO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9LiBgICtcbiAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKSk7XG4gICAgfSk7XG5cbiAgICBjbGllbnQub25jZSgnY29ubmVjdCcsICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChjb25uVGltZW91dE9iaik7XG4gICAgICBpbml0VGltZW91dE9iaiA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpZCBub3QgZ2V0IHRoZSBpbml0aWFsIHJlc3BvbnNlIGZyb20gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICAgIGBhZnRlciAke2luaXRUaW1lb3V0fW1zYCkpLCBpbml0VGltZW91dCk7XG4gICAgfSk7XG5cbiAgICBjbGllbnQub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgIHNlcnZlclJlc3BvbnNlLnB1c2goY2h1bmspO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gQnVmZmVyLmNvbmNhdChzZXJ2ZXJSZXNwb25zZSkudG9TdHJpbmcoJ3V0ZjgnKS50cmltKCk7XG4gICAgICBpZiAob2tGbGFnLnRlc3Qob3V0cHV0KSkge1xuICAgICAgICAvLyBUaGUgaW5pdGlhbCBpbmNvbWluZyBkYXRhIGNodW5rIGNvbmZpcm1zIHRoZSBpbnRlcmZhY2UgaXMgcmVhZHkgZm9yIGlucHV0XG4gICAgICAgIGlmICghaXNDb21tYW5kU2VudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChpbml0VGltZW91dE9iaik7XG4gICAgICAgICAgc2VydmVyUmVzcG9uc2UgPSBbXTtcbiAgICAgICAgICBjb25zdCBjbWRTdHIgPSBfLmlzQXJyYXkoY21kKSA/IHV0aWwucXVvdGUoY21kKSA6IGAke2NtZH1gO1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nIEVtdWxhdG9yIGNvbnNvbGUgY29tbWFuZDogJHtjbWRTdHJ9YCk7XG4gICAgICAgICAgY2xpZW50LndyaXRlKGNtZFN0cik7XG4gICAgICAgICAgY2xpZW50LndyaXRlKGVvbCk7XG4gICAgICAgICAgaXNDb21tYW5kU2VudCA9IHRydWU7XG4gICAgICAgICAgZXhlY1RpbWVvdXRPYmogPSBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlkIG5vdCBnZXQgYW55IHJlc3BvbnNlIGZyb20gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICAgICAgICBgdG8gJyR7Y21kfScgY29tbWFuZCBhZnRlciAke2V4ZWNUaW1lb3V0fW1zYCkpLCBleGVjVGltZW91dCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNsZWFyVGltZW91dChleGVjVGltZW91dE9iaik7XG4gICAgICAgIGNsaWVudC5lbmQoKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0QXJyID0gb3V0cHV0LnNwbGl0KGVvbCk7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcmVkdW5kYW50IE9LIGZsYWcgZnJvbSB0aGUgcmVzdWx0aW5nIGNvbW1hbmQgb3V0cHV0XG4gICAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dEFyci5zbGljZSgwLCBvdXRwdXRBcnIubGVuZ3RoIC0gMSkuam9pbignXFxuJykudHJpbSgpKTtcbiAgICAgIH0gZWxzZSBpZiAobm9rRmxhZy50ZXN0KG91dHB1dCkpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGluaXRUaW1lb3V0T2JqKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGV4ZWNUaW1lb3V0T2JqKTtcbiAgICAgICAgY2xpZW50LmVuZCgpO1xuICAgICAgICBjb25zdCBvdXRwdXRBcnIgPSBvdXRwdXQuc3BsaXQoZW9sKTtcbiAgICAgICAgcmV0dXJuIHJlamVjdChfLnRyaW0oXy5sYXN0KG91dHB1dEFycikpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVtdVZlcnNpb25JbmZvXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJldmlzaW9uIFRoZSBhY3R1YWwgcmV2aXNpb24gbnVtYmVyLCBmb3IgZXhhbXBsZSAnMzAuMC41J1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSBidWlsZElkIFRoZSBidWlsZCBpZGVudGlmaWVyLCBmb3IgZXhhbXBsZSA2MzA2MDQ3XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgZW11bGF0b3IgdmVyc2lvbiBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICpcbiAqIEByZXR1cm5zIHtFbXVWZXJzaW9uSW5mb30gSWYgbm8gdmVyc2lvbiBpbmZvIGNvdWxkIGJlIHBhcnNlZCB0aGVuIGFuIGVtcHR5XG4gKiBvYmplY3QgaXMgcmV0dXJuZWRcbiAqL1xuZW11TWV0aG9kcy5nZXRFbXVWZXJzaW9uSW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldEVtdVZlcnNpb25JbmZvICgpIHtcbiAgY29uc3QgcHJvcHNQYXRoID0gcGF0aC5qb2luKHRoaXMuc2RrUm9vdCwgJ2VtdWxhdG9yJywgJ3NvdXJjZS5wcm9wZXJ0aWVzJyk7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKHByb3BzUGF0aCkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocHJvcHNQYXRoLCAndXRmOCcpO1xuICBjb25zdCByZXZpc2lvbk1hdGNoID0gL15Qa2dcXC5SZXZpc2lvbj0oW1xcZC5dKykkL20uZXhlYyhjb250ZW50KTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGlmIChyZXZpc2lvbk1hdGNoKSB7XG4gICAgcmVzdWx0LnJldmlzaW9uID0gcmV2aXNpb25NYXRjaFsxXTtcbiAgfVxuICBjb25zdCBidWlsZElkTWF0Y2ggPSAvXlBrZ1xcLkJ1aWxkSWQ9KFxcZCspJC9tLmV4ZWMoY29udGVudCk7XG4gIGlmIChidWlsZElkTWF0Y2gpIHtcbiAgICByZXN1bHQuYnVpbGRJZCA9IHBhcnNlSW50KGJ1aWxkSWRNYXRjaFsxXSwgMTApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBlbXVsYXRvciBpbWFnZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGxvY2FsIGZpbGUgc3lzdGVtXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGF2ZE5hbWUgRW11bGF0b3IgbmFtZS4gU2hvdWxkIE5PVCBzdGFydCB3aXRoICdAJyBjaGFyYWN0ZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIGV4dHJhY3RpbmcgdGhlIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBjb250ZW50IG9mIGVtdWxhdG9yIGltYWdlIHByb3BlcnRpZXMgZmlsZS5cbiAqIFVzdWFsbHkgdGhpcyBjb25maWd1cmF0aW9uIC5pbmkgZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBjb250ZW50OlxuICogICBhdmQuaW5pLmVuY29kaW5nPVVURi04XG4gKiAgIHBhdGg9L1VzZXJzL3VzZXJuYW1lLy5hbmRyb2lkL2F2ZC9QaXhlbF9YTF9BUElfMzAuYXZkXG4gKiAgIHBhdGgucmVsPWF2ZC9QaXhlbF9YTF9BUElfMzAuYXZkXG4gKiAgIHRhcmdldD1hbmRyb2lkLTMwXG4gKi9cbmVtdU1ldGhvZHMuZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzIChhdmROYW1lKSB7XG4gIGNvbnN0IGF2ZHMgPSBhd2FpdCBsaXN0RW11bGF0b3JzKCk7XG4gIGNvbnN0IGF2ZCA9IGF2ZHMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSBhdmROYW1lKTtcbiAgaWYgKCFhdmQpIHtcbiAgICBsZXQgbXNnID0gYENhbm5vdCBmaW5kICcke2F2ZE5hbWV9JyBlbXVsYXRvci4gYDtcbiAgICBpZiAoXy5pc0VtcHR5KGF2ZHMpKSB7XG4gICAgICBtc2cgKz0gYE5vIGVtdWxhdG9ycyBoYXZlIGJlZW4gZGV0ZWN0ZWQgb24geW91ciBzeXN0ZW1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgKz0gYEF2YWlsYWJsZSBhdmQgbmFtZXMgYXJlOiAke2F2ZHMubWFwKCh7bmFtZX0pID0+IG5hbWUpfWA7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICB9XG4gIHJldHVybiBpbmkucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoYXZkLmNvbmZpZywgJ3V0ZjgnKSk7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGdpdmVuIGVtdWxhdG9yIGV4aXN0cyBpbiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgYXZkcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXZkTmFtZSAtIFRoZSBuYW1lIG9mIGVtdWxhdG9yIHRvIHZlcmlmeSBmb3IgZXhpc3RlbmNlLlxuICogU2hvdWxkIE5PVCBzdGFydCB3aXRoICdAJyBjaGFyYWN0ZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW11bGF0b3Igd2l0aCBnaXZlbiBuYW1lIGRvZXMgbm90IGV4aXN0LlxuICovXG5lbXVNZXRob2RzLmNoZWNrQXZkRXhpc3QgPSBhc3luYyBmdW5jdGlvbiBjaGVja0F2ZEV4aXN0IChhdmROYW1lKSB7XG4gIGNvbnN0IGF2ZHMgPSBhd2FpdCBsaXN0RW11bGF0b3JzKCk7XG4gIGlmICghYXZkcy5zb21lKCh7bmFtZX0pID0+IG5hbWUgPT09IGF2ZE5hbWUpKSB7XG4gICAgbGV0IG1zZyA9IGBBdmQgJyR7YXZkTmFtZX0nIGlzIG5vdCBhdmFpbGFibGUuIGA7XG4gICAgaWYgKF8uaXNFbXB0eShhdmRzKSkge1xuICAgICAgbXNnICs9IGBObyBlbXVsYXRvcnMgaGF2ZSBiZWVuIGRldGVjdGVkIG9uIHlvdXIgc3lzdGVtYDtcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnICs9IGBQbGVhc2Ugc2VsZWN0IHlvdXIgYXZkIG5hbWUgZnJvbSBvbmUgb2YgdGhlc2U6ICcke2F2ZHMubWFwKCh7bmFtZX0pID0+IG5hbWUpfSdgO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGVtdU1ldGhvZHM7XG4iXSwiZmlsZSI6ImxpYi90b29scy9hZGItZW11LWNvbW1hbmRzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
397
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2FkYi1lbXUtY29tbWFuZHMuanMiLCJuYW1lcyI6WyJQSE9ORV9OVU1CRVJfUEFUVEVSTiIsImVtdU1ldGhvZHMiLCJQT1dFUl9BQ19TVEFURVMiLCJPYmplY3QiLCJmcmVlemUiLCJQT1dFUl9BQ19PTiIsIlBPV0VSX0FDX09GRiIsIkdTTV9DQUxMX0FDVElPTlMiLCJHU01fQ0FMTCIsIkdTTV9BQ0NFUFQiLCJHU01fQ0FOQ0VMIiwiR1NNX0hPTEQiLCJHU01fVk9JQ0VfU1RBVEVTIiwiR1NNX1ZPSUNFX1VOUkVHSVNURVJFRCIsIkdTTV9WT0lDRV9IT01FIiwiR1NNX1ZPSUNFX1JPQU1JTkciLCJHU01fVk9JQ0VfU0VBUkNISU5HIiwiR1NNX1ZPSUNFX0RFTklFRCIsIkdTTV9WT0lDRV9PRkYiLCJHU01fVk9JQ0VfT04iLCJHU01fU0lHTkFMX1NUUkVOR1RIUyIsIk5FVFdPUktfU1BFRUQiLCJHU00iLCJTQ1NEIiwiR1BSUyIsIkVER0UiLCJVTVRTIiwiSFNEUEEiLCJMVEUiLCJFVkRPIiwiRlVMTCIsIlNFTlNPUlMiLCJBQ0NFTEVSQVRJT04iLCJHWVJPU0NPUEUiLCJNQUdORVRJQ19GSUVMRCIsIk9SSUVOVEFUSU9OIiwiVEVNUEVSQVRVUkUiLCJQUk9YSU1JVFkiLCJMSUdIVCIsIlBSRVNTVVJFIiwiSFVNSURJVFkiLCJNQUdORVRJQ19GSUVMRF9VTkNBTElCUkFURUQiLCJHWVJPU0NPUEVfVU5DQUxJQlJBVEVEIiwiSElOR0VfQU5HTEUwIiwiSElOR0VfQU5HTEUxIiwiSElOR0VfQU5HTEUyIiwiSEVBUlRfUkFURSIsIlJHQkNfTElHSFQiLCJsaXN0RW11bGF0b3JzIiwiYXZkc1Jvb3QiLCJwcm9jZXNzIiwiZW52IiwiQU5EUk9JRF9BVkRfSE9NRSIsImdldEF2ZENvbmZpZ1BhdGhzIiwibG9nIiwid2FybiIsInByZWZzUm9vdCIsInBhdGgiLCJyZXNvbHZlIiwiZGVidWciLCJjb25maWdzIiwiZnMiLCJnbG9iIiwiY3dkIiwiYWJzb2x1dGUiLCJtYXAiLCJjb25mUGF0aCIsImF2ZE5hbWUiLCJiYXNlbmFtZSIsInNwbGl0Iiwic2xpY2UiLCJqb2luIiwibmFtZSIsImNvbmZpZyIsImZpbHRlciIsIl8iLCJ0cmltIiwiaXNFbXVsYXRvckNvbm5lY3RlZCIsImVtdWxhdG9ycyIsImdldENvbm5lY3RlZEVtdWxhdG9ycyIsImZpbmQiLCJ4IiwidWRpZCIsImN1ckRldmljZUlkIiwidmVyaWZ5RW11bGF0b3JDb25uZWN0ZWQiLCJFcnJvciIsImZpbmdlcnByaW50IiwiZmluZ2VycHJpbnRJZCIsImxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJhZGJFeGVjRW11Iiwicm90YXRlIiwicG93ZXJBQyIsInN0YXRlIiwidmFsdWVzIiwiaW5kZXhPZiIsIlR5cGVFcnJvciIsInNlbnNvclNldCIsInNlbnNvciIsInZhbHVlIiwiaW5jbHVkZXMiLCJpc05pbCIsInBvd2VyQ2FwYWNpdHkiLCJwZXJjZW50IiwicGFyc2VJbnQiLCJpc05hTiIsInBvd2VyT0ZGIiwic2VuZFNNUyIsInBob25lTnVtYmVyIiwibWVzc2FnZSIsInJlcGxhY2UiLCJ0ZXN0IiwiZ3NtQ2FsbCIsImFjdGlvbiIsImdzbVNpZ25hbCIsInN0cmVuZ3RoIiwiaW5mbyIsImdzbVZvaWNlIiwibmV0d29ya1NwZWVkIiwic3BlZWQiLCJleGVjRW11Q29uc29sZUNvbW1hbmQiLCJleGVjVGVsbmV0IiwiY21kIiwib3B0cyIsInBvcnQiLCJwb3J0TWF0Y2giLCJleGVjIiwiaG9zdCIsImV4ZWNUaW1lb3V0IiwiY29ublRpbWVvdXQiLCJpbml0VGltZW91dCIsInJlc2V0VGVsbmV0QXV0aFRva2VuIiwib2tGbGFnIiwibm9rRmxhZyIsImVvbCIsImNsaWVudCIsIm5ldCIsImNvbm5lY3QiLCJCIiwicmVqZWN0IiwiY29ublRpbWVvdXRPYmoiLCJzZXRUaW1lb3V0IiwiZXhlY1RpbWVvdXRPYmoiLCJpbml0VGltZW91dE9iaiIsImlzQ29tbWFuZFNlbnQiLCJzZXJ2ZXJSZXNwb25zZSIsIm9uY2UiLCJlIiwiY2xlYXJUaW1lb3V0Iiwib24iLCJjaHVuayIsInB1c2giLCJvdXRwdXQiLCJCdWZmZXIiLCJjb25jYXQiLCJ0b1N0cmluZyIsImNtZFN0ciIsImlzQXJyYXkiLCJ1dGlsIiwicXVvdGUiLCJ3cml0ZSIsImVuZCIsIm91dHB1dEFyciIsImxlbmd0aCIsImxhc3QiLCJnZXRFbXVWZXJzaW9uSW5mbyIsInByb3BzUGF0aCIsInNka1Jvb3QiLCJleGlzdHMiLCJjb250ZW50IiwicmVhZEZpbGUiLCJyZXZpc2lvbk1hdGNoIiwicmVzdWx0IiwicmV2aXNpb24iLCJidWlsZElkTWF0Y2giLCJidWlsZElkIiwiZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzIiwiYXZkcyIsImF2ZCIsIm1zZyIsImlzRW1wdHkiLCJpbmkiLCJwYXJzZSIsImNoZWNrQXZkRXhpc3QiLCJzb21lIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL3Rvb2xzL2FkYi1lbXUtY29tbWFuZHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZ2V0QW5kcm9pZFByZWZzUm9vdCwgZGlyRXhpc3RzIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IHsgdXRpbCwgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgaW5pIGZyb20gJ2luaSc7XG5cbmNvbnN0IFBIT05FX05VTUJFUl9QQVRURVJOID0gL15bK10/WyhdP1swLTldKlspXT9bLVxccy5dP1swLTldKlstXFxzLl0/WzAtOV17Mix9JC9pbTtcblxuY29uc3QgZW11TWV0aG9kcyA9IHt9O1xuZW11TWV0aG9kcy5QT1dFUl9BQ19TVEFURVMgPSBPYmplY3QuZnJlZXplKHtcbiAgUE9XRVJfQUNfT046ICdvbicsXG4gIFBPV0VSX0FDX09GRjogJ29mZidcbn0pO1xuZW11TWV0aG9kcy5HU01fQ0FMTF9BQ1RJT05TID0gT2JqZWN0LmZyZWV6ZSh7XG4gIEdTTV9DQUxMOiAnY2FsbCcsXG4gIEdTTV9BQ0NFUFQ6ICdhY2NlcHQnLFxuICBHU01fQ0FOQ0VMOiAnY2FuY2VsJyxcbiAgR1NNX0hPTEQ6ICdob2xkJ1xufSk7XG5lbXVNZXRob2RzLkdTTV9WT0lDRV9TVEFURVMgPSBPYmplY3QuZnJlZXplKHtcbiAgR1NNX1ZPSUNFX1VOUkVHSVNURVJFRDogJ3VucmVnaXN0ZXJlZCcsXG4gIEdTTV9WT0lDRV9IT01FOiAnaG9tZScsXG4gIEdTTV9WT0lDRV9ST0FNSU5HOiAncm9hbWluZycsXG4gIEdTTV9WT0lDRV9TRUFSQ0hJTkc6ICdzZWFyY2hpbmcnLFxuICBHU01fVk9JQ0VfREVOSUVEOiAnZGVuaWVkJyxcbiAgR1NNX1ZPSUNFX09GRjogJ29mZicsXG4gIEdTTV9WT0lDRV9PTjogJ29uJ1xufSk7XG5lbXVNZXRob2RzLkdTTV9TSUdOQUxfU1RSRU5HVEhTID0gWzAsIDEsIDIsIDMsIDRdO1xuXG5lbXVNZXRob2RzLk5FVFdPUktfU1BFRUQgPSBPYmplY3QuZnJlZXplKHtcbiAgR1NNOiAnZ3NtJywgLy8gR1NNL0NTRCAodXA6IDE0LjQsIGRvd246IDE0LjQpLlxuICBTQ1NEOiAnc2NzZCcsIC8vIEhTQ1NEICh1cDogMTQuNCwgZG93bjogNTcuNikuXG4gIEdQUlM6ICdncHJzJywgLy8gR1BSUyAodXA6IDI4LjgsIGRvd246IDU3LjYpLlxuICBFREdFOiAnZWRnZScsIC8vIEVER0UvRUdQUlMgKHVwOiA0NzMuNiwgZG93bjogNDczLjYpLlxuICBVTVRTOiAndW10cycsIC8vIFVNVFMvM0cgKHVwOiAzODQuMCwgZG93bjogMzg0LjApLlxuICBIU0RQQTogJ2hzZHBhJywgLy8gSFNEUEEgKHVwOiA1NzYwLjAsIGRvd246IDEzLDk4MC4wKS5cbiAgTFRFOiAnbHRlJywgLy8gTFRFICh1cDogNTgsMDAwLCBkb3duOiAxNzMsMDAwKS5cbiAgRVZETzogJ2V2ZG8nLCAvLyBFVkRPICh1cDogNzUsMDAwLCBkb3duOiAyODAsMDAwKS5cbiAgRlVMTDogJ2Z1bGwnIC8vIE5vIGxpbWl0LCB0aGUgZGVmYXVsdCAodXA6IDAuMCwgZG93bjogMC4wKS5cbn0pO1xuXG5lbXVNZXRob2RzLlNFTlNPUlMgPSBPYmplY3QuZnJlZXplKHtcbiAgQUNDRUxFUkFUSU9OOiAnYWNjZWxlcmF0aW9uJyxcbiAgR1lST1NDT1BFOiAnZ3lyb3Njb3BlJyxcbiAgTUFHTkVUSUNfRklFTEQ6ICdtYWduZXRpYy1maWVsZCcsXG4gIE9SSUVOVEFUSU9OOiAnb3JpZW50YXRpb24nLFxuICBURU1QRVJBVFVSRTogJ3RlbXBlcmF0dXJlJyxcbiAgUFJPWElNSVRZOiAncHJveGltaXR5JyxcbiAgTElHSFQ6ICdsaWdodCcsXG4gIFBSRVNTVVJFOiAncHJlc3N1cmUnLFxuICBIVU1JRElUWTogJ2h1bWlkaXR5JyxcbiAgTUFHTkVUSUNfRklFTERfVU5DQUxJQlJBVEVEOiAnbWFnbmV0aWMtZmllbGQtdW5jYWxpYnJhdGVkJyxcbiAgR1lST1NDT1BFX1VOQ0FMSUJSQVRFRDogJ2d5cm9zY29wZS11bmNhbGlicmF0ZWQnLFxuICBISU5HRV9BTkdMRTA6ICdoaW5nZS1hbmdsZTAnLFxuICBISU5HRV9BTkdMRTE6ICdoaW5nZS1hbmdsZTEnLFxuICBISU5HRV9BTkdMRTI6ICdoaW5nZS1hbmdsZTInLFxuICBIRUFSVF9SQVRFOiAnaGVhcnQtcmF0ZScsXG4gIFJHQkNfTElHSFQ6ICdyZ2JjLWxpZ2h0Jyxcbn0pO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVtdUluZm9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIEVtdWxhdG9yIG5hbWUsIGZvciBleGFtcGxlIGBQaXhlbF9YTF9BUElfMzBgXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29uZmlnIEZ1bGwgcGF0aCB0byB0aGUgZW11bGF0b3IgY29uZmlnIC5pbmkgZmlsZSxcbiAqIGZvciBleGFtcGxlIGAvVXNlcnMvdXNlci8uYW5kcm9pZC9hdmQvUGl4ZWxfWExfQVBJXzMwLmluaWBcbiAqL1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgQW5kcm9pZCBlbXVsYXRvcnNcbiAqXG4gKiBAcmV0dXJucyB7QXJyYXk8RW11SW5mbz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxpc3RFbXVsYXRvcnMgKCkge1xuICBsZXQgYXZkc1Jvb3QgPSBwcm9jZXNzLmVudi5BTkRST0lEX0FWRF9IT01FO1xuICBpZiAoYXdhaXQgZGlyRXhpc3RzKGF2ZHNSb290KSkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBdmRDb25maWdQYXRocyhhdmRzUm9vdCk7XG4gIH1cblxuICBpZiAoYXZkc1Jvb3QpIHtcbiAgICBsb2cud2FybihgVGhlIHZhbHVlIG9mIHRoZSBBTkRST0lEX0FWRF9IT01FIGVudmlyb25tZW50IHZhcmlhYmxlICcke2F2ZHNSb290fScgaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeWApO1xuICB9XG5cbiAgY29uc3QgcHJlZnNSb290ID0gYXdhaXQgZ2V0QW5kcm9pZFByZWZzUm9vdCgpO1xuICBpZiAoIXByZWZzUm9vdCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGF2ZHNSb290ID0gcGF0aC5yZXNvbHZlKHByZWZzUm9vdCwgJ2F2ZCcpO1xuICBpZiAoIWF3YWl0IGRpckV4aXN0cyhhdmRzUm9vdCkpIHtcbiAgICBsb2cuZGVidWcoYFZpcnR1YWwgZGV2aWNlcyBjb25maWcgcm9vdCAnJHthdmRzUm9vdH0nIGlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnlgKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0QXZkQ29uZmlnUGF0aHMoYXZkc1Jvb3QpO1xufVxuXG4vKipcbiAqIEdldCBjb25maWd1cmF0aW9uIHBhdGhzIG9mIGFsbCB2aXJ0dWFsIGRldmljZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXZkc1Jvb3QgUGF0aCB0byB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGhlIEFWRCAuaW5pIGZpbGVzXG4gKiBAcmV0dXJucyB7QXJyYXk8RW11SW5mbz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEF2ZENvbmZpZ1BhdGhzIChhdmRzUm9vdCkge1xuICBjb25zdCBjb25maWdzID0gYXdhaXQgZnMuZ2xvYignKi5pbmknLCB7XG4gICAgY3dkOiBhdmRzUm9vdCxcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgfSk7XG4gIHJldHVybiBjb25maWdzLm1hcCgoY29uZlBhdGgpID0+IHtcbiAgICBjb25zdCBhdmROYW1lID0gcGF0aC5iYXNlbmFtZShjb25mUGF0aCkuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpO1xuICAgIHJldHVybiB7bmFtZTogYXZkTmFtZSwgY29uZmlnOiBjb25mUGF0aH07XG4gIH0pLmZpbHRlcigoe25hbWV9KSA9PiBfLnRyaW0obmFtZSkpO1xufVxuXG4vKipcbiAqIENoZWNrIHRoZSBlbXVsYXRvciBzdGF0ZS5cbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIEVtdWxhdG9yIGlzIHZpc2libGUgdG8gYWRiLlxuICovXG5lbXVNZXRob2RzLmlzRW11bGF0b3JDb25uZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0VtdWxhdG9yQ29ubmVjdGVkICgpIHtcbiAgbGV0IGVtdWxhdG9ycyA9IGF3YWl0IHRoaXMuZ2V0Q29ubmVjdGVkRW11bGF0b3JzKCk7XG4gIHJldHVybiAhIV8uZmluZChlbXVsYXRvcnMsICh4KSA9PiB4ICYmIHgudWRpZCA9PT0gdGhpcy5jdXJEZXZpY2VJZCk7XG59O1xuXG4vKipcbiAqIFZlcmlmeSB0aGUgZW11bGF0b3IgaXMgY29ubmVjdGVkLlxuICpcbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBFbXVsYXRvciBpcyBub3QgdmlzaWJsZSB0byBhZGIuXG4gKi9cbmVtdU1ldGhvZHMudmVyaWZ5RW11bGF0b3JDb25uZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiB2ZXJpZnlFbXVsYXRvckNvbm5lY3RlZCAoKSB7XG4gIGlmICghKGF3YWl0IHRoaXMuaXNFbXVsYXRvckNvbm5lY3RlZCgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGVtdWxhdG9yIFwiJHt0aGlzLmN1ckRldmljZUlkfVwiIHdhcyB1bmV4cGVjdGVkbHkgZGlzY29ubmVjdGVkYCk7XG4gIH1cbn07XG5cbi8qKlxuICogRW11bGF0ZSBmaW5nZXJwcmludCB0b3VjaCBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaW5nZXJwcmludElkIC0gVGhlIElEIG9mIHRoZSBmaW5nZXJwcmludC5cbiAqL1xuZW11TWV0aG9kcy5maW5nZXJwcmludCA9IGFzeW5jIGZ1bmN0aW9uIGZpbmdlcnByaW50IChmaW5nZXJwcmludElkKSB7XG4gIGlmICghZmluZ2VycHJpbnRJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmluZ2VycHJpbnQgaWQgcGFyYW1ldGVyIG11c3QgYmUgZGVmaW5lZCcpO1xuICB9XG4gIC8vIHRoZSBtZXRob2QgdXNlZCBvbmx5IHdvcmtzIGZvciBBUEkgbGV2ZWwgMjMgYW5kIGFib3ZlXG4gIGxldCBsZXZlbCA9IGF3YWl0IHRoaXMuZ2V0QXBpTGV2ZWwoKTtcbiAgaWYgKGxldmVsIDwgMjMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERldmljZSBBUEkgTGV2ZWwgbXVzdCBiZSA+PSAyMy4gQ3VycmVudCBBcGkgbGV2ZWwgJyR7bGV2ZWx9J2ApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ2ZpbmdlcicsICd0b3VjaCcsIGZpbmdlcnByaW50SWRdKTtcbn07XG5cbi8qKlxuICogQ2hhbmdlIHRoZSBkaXNwbGF5IG9yaWVudGF0aW9uIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKiBUaGUgb3JpZW50YXRpb24gaXMgY2hhbmdlZCAoUEkvMiBpcyBhZGRlZCkgZXZlcnkgdGltZVxuICogdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuICovXG5lbXVNZXRob2RzLnJvdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHJvdGF0ZSAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3JvdGF0ZSddKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBwb3dlciBzdGF0ZSBjaGFuZ2Ugb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgWydvbiddIC0gRWl0aGVyICdvbicgb3IgJ29mZicuXG4gKi9cbmVtdU1ldGhvZHMucG93ZXJBQyA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyQUMgKHN0YXRlID0gJ29uJykge1xuICBpZiAoXy52YWx1ZXMoZW11TWV0aG9kcy5QT1dFUl9BQ19TVEFURVMpLmluZGV4T2Yoc3RhdGUpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFdyb25nIHBvd2VyIEFDIHN0YXRlIHNlbnQgJyR7c3RhdGV9Jy4gYFxuICAgICAgKyBgU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLlBPV0VSX0FDX1NUQVRFUyl9XWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3Bvd2VyJywgJ2FjJywgc3RhdGVdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBzZW5zb3JzIHZhbHVlcyBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZW5zb3IgLSBTZW5zb3IgdHlwZSBkZWNsYXJlZCBpbiBTRU5TT1JTIGl0ZW1zLlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB2YWx1ZSAgLSBOdW1iZXIgdG8gc2V0IGFzIHRoZSBzZW5zb3IgdmFsdWUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiBzZW5zb3IgdHlwZSBvciBzZW5zb3IgdmFsdWUgaXMgbm90IGRlZmluZWRcbiAqL1xuZW11TWV0aG9kcy5zZW5zb3JTZXQgPSBhc3luYyBmdW5jdGlvbiBzZW5zb3JTZXQgKHNlbnNvciwgdmFsdWUpIHtcbiAgaWYgKCFfLmluY2x1ZGVzKGVtdU1ldGhvZHMuU0VOU09SUywgc2Vuc29yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFVuc3VwcG9ydGVkIHNlbnNvciBzZW50ICcke3NlbnNvcn0nLiBgXG4gICAgICArIGBTdXBwb3J0ZWQgdmFsdWVzOiAke18udmFsdWVzKGVtdU1ldGhvZHMuU0VOU09SUyl9XWApO1xuICB9XG4gIGlmIChfLmlzTmlsKHZhbHVlKSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBNaXNzaW5nL2ludmFsaWQgc2Vuc29yIHZhbHVlIGFyZ3VtZW50LiBgXG4gICAgICArIGBZb3UgbmVlZCB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgdG8gc2V0IHRvIHRoZSBzZW5zb3IgaW4gYFxuICAgICAgKyBgZm9ybWF0IDx2YWx1ZS1hPls6PHZhbHVlLWI+Wzo8dmFsdWUtYz5bLi4uXV1dLmApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3NlbnNvcicsICdzZXQnLCBzZW5zb3IsIHZhbHVlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgcG93ZXIgY2FwYWNpdHkgY2hhbmdlIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBwZXJjZW50IFsxMDBdIC0gUGVyY2VudGFnZSB2YWx1ZSBpbiByYW5nZSBbMCwgMTAwXS5cbiAqL1xuZW11TWV0aG9kcy5wb3dlckNhcGFjaXR5ID0gYXN5bmMgZnVuY3Rpb24gcG93ZXJDYXBhY2l0eSAocGVyY2VudCA9IDEwMCkge1xuICBwZXJjZW50ID0gcGFyc2VJbnQocGVyY2VudCwgMTApO1xuICBpZiAoaXNOYU4ocGVyY2VudCkgfHwgcGVyY2VudCA8IDAgfHwgcGVyY2VudCA+IDEwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHBlcmNlbnRhZ2UgdmFsdWUgc2hvdWxkIGJlIHZhbGlkIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMDBgKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydwb3dlcicsICdjYXBhY2l0eScsIHBlcmNlbnRdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBwb3dlciBvZmYgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqL1xuZW11TWV0aG9kcy5wb3dlck9GRiA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyT0ZGICgpIHtcbiAgYXdhaXQgdGhpcy5wb3dlckFDKGVtdU1ldGhvZHMuUE9XRVJfQUNfU1RBVEVTLlBPV0VSX0FDX09GRik7XG4gIGF3YWl0IHRoaXMucG93ZXJDYXBhY2l0eSgwKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBzZW5kIFNNUyBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcGhvbmVOdW1iZXIgLSBUaGUgcGhvbmUgbnVtYmVyIG9mIG1lc3NhZ2Ugc2VuZGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgWycnXSAtIFRoZSBtZXNzYWdlIGNvbnRlbnQuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgcGhvbmUgbnVtYmVyIGhhcyBpbnZhbGlkIGZvcm1hdC5cbiAqL1xuZW11TWV0aG9kcy5zZW5kU01TID0gYXN5bmMgZnVuY3Rpb24gc2VuZFNNUyAocGhvbmVOdW1iZXIsIG1lc3NhZ2UgPSAnJykge1xuICBtZXNzYWdlID0gbWVzc2FnZS50cmltKCk7XG4gIGlmIChtZXNzYWdlID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcignU2VuZGluZyBhbiBTTVMgcmVxdWlyZXMgYSBtZXNzYWdlJyk7XG4gIH1cbiAgcGhvbmVOdW1iZXIgPSBgJHtwaG9uZU51bWJlcn1gLnJlcGxhY2UoL1xccyovLCAnJyk7XG4gIGlmICghUEhPTkVfTlVNQkVSX1BBVFRFUk4udGVzdChwaG9uZU51bWJlcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VuZFNNUyBwaG9uZU51bWJlciBwYXJhbSAke3Bob25lTnVtYmVyfWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3NtcycsICdzZW5kJywgcGhvbmVOdW1iZXIsIG1lc3NhZ2VdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBHU00gY2FsbCBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcGhvbmVOdW1iZXIgLSBUaGUgcGhvbmUgbnVtYmVyIG9mIHRoZSBjYWxsZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIFsnJ10gLSBPbmUgb2YgYXZhaWxhYmxlIEdTTSBjYWxsIGFjdGlvbnMuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgcGhvbmUgbnVtYmVyIGhhcyBpbnZhbGlkIGZvcm1hdC5cbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBfYWN0aW9uXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLmdzbUNhbGwgPSBhc3luYyBmdW5jdGlvbiBnc21DYWxsIChwaG9uZU51bWJlciwgYWN0aW9uID0gJycpIHtcbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuR1NNX0NBTExfQUNUSU9OUykuaW5kZXhPZihhY3Rpb24pID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBnc20gYWN0aW9uIHBhcmFtICR7YWN0aW9ufS4gU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9DQUxMX0FDVElPTlMpfWApO1xuICB9XG4gIHBob25lTnVtYmVyID0gYCR7cGhvbmVOdW1iZXJ9YC5yZXBsYWNlKC9cXHMqLywgJycpO1xuICBpZiAoIVBIT05FX05VTUJFUl9QQVRURVJOLnRlc3QocGhvbmVOdW1iZXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGdzbUNhbGwgcGhvbmVOdW1iZXIgcGFyYW0gJHtwaG9uZU51bWJlcn1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydnc20nLCBhY3Rpb24sIHBob25lTnVtYmVyXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgR1NNIHNpZ25hbCBzdHJlbmd0aCBjaGFuZ2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHN0cmVuZ3RoIFs0XSAtIEEgbnVtYmVyIGluIHJhbmdlIFswLCA0XTtcbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBfc3RyZW5ndGhfIHZhbHVlIGlzIGludmFsaWQuXG4gKi9cbmVtdU1ldGhvZHMuZ3NtU2lnbmFsID0gYXN5bmMgZnVuY3Rpb24gZ3NtU2lnbmFsIChzdHJlbmd0aCA9IDQpIHtcbiAgc3RyZW5ndGggPSBwYXJzZUludChzdHJlbmd0aCwgMTApO1xuICBpZiAoZW11TWV0aG9kcy5HU01fU0lHTkFMX1NUUkVOR1RIUy5pbmRleE9mKHN0cmVuZ3RoKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2lnbmFsIHN0cmVuZ3RoIHBhcmFtICR7c3RyZW5ndGh9LiBTdXBwb3J0ZWQgdmFsdWVzOiAke18udmFsdWVzKGVtdU1ldGhvZHMuR1NNX1NJR05BTF9TVFJFTkdUSFMpfWApO1xuICB9XG4gIGxvZy5pbmZvKCdnc20gc2lnbmFsLXByb2ZpbGUgPHN0cmVuZ3RoPiBjaGFuZ2VzIHRoZSByZXBvcnRlZCBzdHJlbmd0aCBvbiBuZXh0ICgxNXMpIHVwZGF0ZS4nKTtcbiAgYXdhaXQgdGhpcy5hZGJFeGVjRW11KFsnZ3NtJywgJ3NpZ25hbC1wcm9maWxlJywgc3RyZW5ndGhdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBHU00gdm9pY2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgWydvbiddIC0gRWl0aGVyICdvbicgb3IgJ29mZicuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX3N0YXRlXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLmdzbVZvaWNlID0gYXN5bmMgZnVuY3Rpb24gZ3NtVm9pY2UgKHN0YXRlID0gJ29uJykge1xuICAvLyBnc20gdm9pY2UgPHN0YXRlPiBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgeW91ciBHUFJTIGNvbm5lY3Rpb25cbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuR1NNX1ZPSUNFX1NUQVRFUykuaW5kZXhPZihzdGF0ZSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGdzbSB2b2ljZSBzdGF0ZSBwYXJhbSAke3N0YXRlfS4gU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9WT0lDRV9TVEFURVMpfWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ2dzbScsICd2b2ljZScsIHN0YXRlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgbmV0d29yayBzcGVlZCBjaGFuZ2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BlZWQgWydmdWxsJ10gLSBPbmUgb2YgcG9zc2libGUgTkVUV09SS19TUEVFRCB2YWx1ZXMuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX3NwZWVkXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLm5ldHdvcmtTcGVlZCA9IGFzeW5jIGZ1bmN0aW9uIG5ldHdvcmtTcGVlZCAoc3BlZWQgPSAnZnVsbCcpIHtcbiAgLy8gbmV0d29yayBzcGVlZCA8c3BlZWQ+IGFsbG93cyB5b3UgdG8gc2V0IHRoZSBuZXR3b3JrIHNwZWVkIGVtdWxhdGlvbi5cbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuTkVUV09SS19TUEVFRCkuaW5kZXhPZihzcGVlZCkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5ldHdvcmsgc3BlZWQgcGFyYW0gJHtzcGVlZH0uIFN1cHBvcnRlZCB2YWx1ZXM6ICR7Xy52YWx1ZXMoZW11TWV0aG9kcy5ORVRXT1JLX1NQRUVEKX1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWyduZXR3b3JrJywgJ3NwZWVkJywgc3BlZWRdKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRXhlY1RlbG5ldE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBleGVjVGltZW91dCBbNjAwMDBdIEEgdGltZW91dCB1c2VkIHRvIHdhaXQgZm9yIGEgc2VydmVyXG4gKiByZXBseSB0byB0aGUgZ2l2ZW4gY29tbWFuZFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbm5UaW1lb3V0IFs1MDAwXSBDb25zb2xlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpbml0VGltZW91dCBbNTAwMF0gVGVsbmV0IGNvbnNvbGUgaW5pdGlhbGl6YXRpb24gdGltZW91dFxuICogaW4gbWlsbGlzZWNvbmRzICh0aGUgdGltZSBiZXR3ZWVuIGNvbm5lY3Rpb24gaGFwcGVucyBhbmQgdGhlIGNvbW1hbmQgcHJvbXB0XG4gKiBpcyBhdmFpbGFibGUpXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBwb3J0IFRoZSBlbXVsYXRvciBwb3J0IG51bWJlci4gVGhlIG1ldGhvZCB3aWxsIHRyeSB0byBwYXJzZSBpdFxuICogZnJvbSB0aGUgY3VycmVudCBkZXZpY2UgaWRlbnRpZmllciBpZiB1bnNldFxuICovXG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kIHRocm91Z2ggZW11bGF0b3IgdGVsbmV0IGNvbnNvbGUgaW50ZXJmYWNlIGFuZCByZXR1cm5zIGl0cyBvdXRwdXRcbiAqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz58c3RyaW5nfSBjbWQgLSBUaGUgYWN0dWFsIGNvbW1hbmQgdG8gZXhlY3V0ZS4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vcnVuL2VtdWxhdG9yLWNvbnNvbGUgZm9yIG1vcmUgZGV0YWlsc1xuICogb24gYXZhaWxhYmxlIGNvbW1hbmRzXG4gKiBAcGFyYW0ge0V4ZWNUZWxuZXRPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY29ubmVjdGluZyB0byB0aGUgVGVsbmV0IGNvbnNvbGVcbiAqIG9yIGlmIHRoZSBnaXZlbiBjb21tYW5kIHJldHVybmVkIG5vbi1PSyByZXNwb25zZVxuICovXG5lbXVNZXRob2RzLmV4ZWNFbXVDb25zb2xlQ29tbWFuZCA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWNUZWxuZXQgKGNtZCwgb3B0cyA9IHt9KSB7XG4gIGxldCBwb3J0ID0gcGFyc2VJbnQob3B0cy5wb3J0LCAxMCk7XG4gIGlmICghcG9ydCkge1xuICAgIGNvbnN0IHBvcnRNYXRjaCA9IC9lbXVsYXRvci0oXFxkKykvaS5leGVjKHRoaXMuY3VyRGV2aWNlSWQpO1xuICAgIGlmICghcG9ydE1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBwYXJzZSB0aGUgY29uc29sZSBwb3J0IG51bWJlciBmcm9tIHRoZSBkZXZpY2UgaWRlbnRpZmllciAnJHt0aGlzLmN1ckRldmljZUlkfScuIGAgK1xuICAgICAgICBgSXMgaXQgYW4gZW11bGF0b3I/YCk7XG4gICAgfVxuICAgIHBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0sIDEwKTtcbiAgfVxuICBjb25zdCBob3N0ID0gJzEyNy4wLjAuMSc7XG4gIGNvbnN0IHtcbiAgICBleGVjVGltZW91dCA9IDYwMDAwLFxuICAgIGNvbm5UaW1lb3V0ID0gNTAwMCxcbiAgICBpbml0VGltZW91dCA9IDUwMDAsXG4gIH0gPSBvcHRzO1xuICBhd2FpdCB0aGlzLnJlc2V0VGVsbmV0QXV0aFRva2VuKCk7XG5cbiAgY29uc3Qgb2tGbGFnID0gL15PSyQvbTtcbiAgY29uc3Qgbm9rRmxhZyA9IC9eS09cXGIvbTtcbiAgY29uc3QgZW9sID0gJ1xcclxcbic7XG4gIGNvbnN0IGNsaWVudCA9IG5ldC5jb25uZWN0KHtcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY29ublRpbWVvdXRPYmogPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICBgYWZ0ZXIgJHtjb25uVGltZW91dH1tc2ApKSwgY29ublRpbWVvdXQpO1xuICAgIGxldCBleGVjVGltZW91dE9iajtcbiAgICBsZXQgaW5pdFRpbWVvdXRPYmo7XG4gICAgbGV0IGlzQ29tbWFuZFNlbnQgPSBmYWxzZTtcbiAgICBsZXQgc2VydmVyUmVzcG9uc2UgPSBbXTtcblxuICAgIGNsaWVudC5vbmNlKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoY29ublRpbWVvdXRPYmopO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9LiBgICtcbiAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKSk7XG4gICAgfSk7XG5cbiAgICBjbGllbnQub25jZSgnY29ubmVjdCcsICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChjb25uVGltZW91dE9iaik7XG4gICAgICBpbml0VGltZW91dE9iaiA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpZCBub3QgZ2V0IHRoZSBpbml0aWFsIHJlc3BvbnNlIGZyb20gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICAgIGBhZnRlciAke2luaXRUaW1lb3V0fW1zYCkpLCBpbml0VGltZW91dCk7XG4gICAgfSk7XG5cbiAgICBjbGllbnQub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgIHNlcnZlclJlc3BvbnNlLnB1c2goY2h1bmspO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gQnVmZmVyLmNvbmNhdChzZXJ2ZXJSZXNwb25zZSkudG9TdHJpbmcoJ3V0ZjgnKS50cmltKCk7XG4gICAgICBpZiAob2tGbGFnLnRlc3Qob3V0cHV0KSkge1xuICAgICAgICAvLyBUaGUgaW5pdGlhbCBpbmNvbWluZyBkYXRhIGNodW5rIGNvbmZpcm1zIHRoZSBpbnRlcmZhY2UgaXMgcmVhZHkgZm9yIGlucHV0XG4gICAgICAgIGlmICghaXNDb21tYW5kU2VudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChpbml0VGltZW91dE9iaik7XG4gICAgICAgICAgc2VydmVyUmVzcG9uc2UgPSBbXTtcbiAgICAgICAgICBjb25zdCBjbWRTdHIgPSBfLmlzQXJyYXkoY21kKSA/IHV0aWwucXVvdGUoY21kKSA6IGAke2NtZH1gO1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nIEVtdWxhdG9yIGNvbnNvbGUgY29tbWFuZDogJHtjbWRTdHJ9YCk7XG4gICAgICAgICAgY2xpZW50LndyaXRlKGNtZFN0cik7XG4gICAgICAgICAgY2xpZW50LndyaXRlKGVvbCk7XG4gICAgICAgICAgaXNDb21tYW5kU2VudCA9IHRydWU7XG4gICAgICAgICAgZXhlY1RpbWVvdXRPYmogPSBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlkIG5vdCBnZXQgYW55IHJlc3BvbnNlIGZyb20gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICAgICAgICBgdG8gJyR7Y21kfScgY29tbWFuZCBhZnRlciAke2V4ZWNUaW1lb3V0fW1zYCkpLCBleGVjVGltZW91dCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNsZWFyVGltZW91dChleGVjVGltZW91dE9iaik7XG4gICAgICAgIGNsaWVudC5lbmQoKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0QXJyID0gb3V0cHV0LnNwbGl0KGVvbCk7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcmVkdW5kYW50IE9LIGZsYWcgZnJvbSB0aGUgcmVzdWx0aW5nIGNvbW1hbmQgb3V0cHV0XG4gICAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dEFyci5zbGljZSgwLCBvdXRwdXRBcnIubGVuZ3RoIC0gMSkuam9pbignXFxuJykudHJpbSgpKTtcbiAgICAgIH0gZWxzZSBpZiAobm9rRmxhZy50ZXN0KG91dHB1dCkpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGluaXRUaW1lb3V0T2JqKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGV4ZWNUaW1lb3V0T2JqKTtcbiAgICAgICAgY2xpZW50LmVuZCgpO1xuICAgICAgICBjb25zdCBvdXRwdXRBcnIgPSBvdXRwdXQuc3BsaXQoZW9sKTtcbiAgICAgICAgcmV0dXJuIHJlamVjdChfLnRyaW0oXy5sYXN0KG91dHB1dEFycikpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVtdVZlcnNpb25JbmZvXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJldmlzaW9uIFRoZSBhY3R1YWwgcmV2aXNpb24gbnVtYmVyLCBmb3IgZXhhbXBsZSAnMzAuMC41J1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSBidWlsZElkIFRoZSBidWlsZCBpZGVudGlmaWVyLCBmb3IgZXhhbXBsZSA2MzA2MDQ3XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgZW11bGF0b3IgdmVyc2lvbiBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICpcbiAqIEByZXR1cm5zIHtFbXVWZXJzaW9uSW5mb30gSWYgbm8gdmVyc2lvbiBpbmZvIGNvdWxkIGJlIHBhcnNlZCB0aGVuIGFuIGVtcHR5XG4gKiBvYmplY3QgaXMgcmV0dXJuZWRcbiAqL1xuZW11TWV0aG9kcy5nZXRFbXVWZXJzaW9uSW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldEVtdVZlcnNpb25JbmZvICgpIHtcbiAgY29uc3QgcHJvcHNQYXRoID0gcGF0aC5qb2luKHRoaXMuc2RrUm9vdCwgJ2VtdWxhdG9yJywgJ3NvdXJjZS5wcm9wZXJ0aWVzJyk7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKHByb3BzUGF0aCkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocHJvcHNQYXRoLCAndXRmOCcpO1xuICBjb25zdCByZXZpc2lvbk1hdGNoID0gL15Qa2dcXC5SZXZpc2lvbj0oW1xcZC5dKykkL20uZXhlYyhjb250ZW50KTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGlmIChyZXZpc2lvbk1hdGNoKSB7XG4gICAgcmVzdWx0LnJldmlzaW9uID0gcmV2aXNpb25NYXRjaFsxXTtcbiAgfVxuICBjb25zdCBidWlsZElkTWF0Y2ggPSAvXlBrZ1xcLkJ1aWxkSWQ9KFxcZCspJC9tLmV4ZWMoY29udGVudCk7XG4gIGlmIChidWlsZElkTWF0Y2gpIHtcbiAgICByZXN1bHQuYnVpbGRJZCA9IHBhcnNlSW50KGJ1aWxkSWRNYXRjaFsxXSwgMTApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBlbXVsYXRvciBpbWFnZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGxvY2FsIGZpbGUgc3lzdGVtXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGF2ZE5hbWUgRW11bGF0b3IgbmFtZS4gU2hvdWxkIE5PVCBzdGFydCB3aXRoICdAJyBjaGFyYWN0ZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIGV4dHJhY3RpbmcgdGhlIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBjb250ZW50IG9mIGVtdWxhdG9yIGltYWdlIHByb3BlcnRpZXMgZmlsZS5cbiAqIFVzdWFsbHkgdGhpcyBjb25maWd1cmF0aW9uIC5pbmkgZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBjb250ZW50OlxuICogICBhdmQuaW5pLmVuY29kaW5nPVVURi04XG4gKiAgIHBhdGg9L1VzZXJzL3VzZXJuYW1lLy5hbmRyb2lkL2F2ZC9QaXhlbF9YTF9BUElfMzAuYXZkXG4gKiAgIHBhdGgucmVsPWF2ZC9QaXhlbF9YTF9BUElfMzAuYXZkXG4gKiAgIHRhcmdldD1hbmRyb2lkLTMwXG4gKi9cbmVtdU1ldGhvZHMuZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzIChhdmROYW1lKSB7XG4gIGNvbnN0IGF2ZHMgPSBhd2FpdCBsaXN0RW11bGF0b3JzKCk7XG4gIGNvbnN0IGF2ZCA9IGF2ZHMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSBhdmROYW1lKTtcbiAgaWYgKCFhdmQpIHtcbiAgICBsZXQgbXNnID0gYENhbm5vdCBmaW5kICcke2F2ZE5hbWV9JyBlbXVsYXRvci4gYDtcbiAgICBpZiAoXy5pc0VtcHR5KGF2ZHMpKSB7XG4gICAgICBtc2cgKz0gYE5vIGVtdWxhdG9ycyBoYXZlIGJlZW4gZGV0ZWN0ZWQgb24geW91ciBzeXN0ZW1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgKz0gYEF2YWlsYWJsZSBhdmQgbmFtZXMgYXJlOiAke2F2ZHMubWFwKCh7bmFtZX0pID0+IG5hbWUpfWA7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICB9XG4gIHJldHVybiBpbmkucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoYXZkLmNvbmZpZywgJ3V0ZjgnKSk7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGdpdmVuIGVtdWxhdG9yIGV4aXN0cyBpbiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgYXZkcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXZkTmFtZSAtIFRoZSBuYW1lIG9mIGVtdWxhdG9yIHRvIHZlcmlmeSBmb3IgZXhpc3RlbmNlLlxuICogU2hvdWxkIE5PVCBzdGFydCB3aXRoICdAJyBjaGFyYWN0ZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW11bGF0b3Igd2l0aCBnaXZlbiBuYW1lIGRvZXMgbm90IGV4aXN0LlxuICovXG5lbXVNZXRob2RzLmNoZWNrQXZkRXhpc3QgPSBhc3luYyBmdW5jdGlvbiBjaGVja0F2ZEV4aXN0IChhdmROYW1lKSB7XG4gIGNvbnN0IGF2ZHMgPSBhd2FpdCBsaXN0RW11bGF0b3JzKCk7XG4gIGlmICghYXZkcy5zb21lKCh7bmFtZX0pID0+IG5hbWUgPT09IGF2ZE5hbWUpKSB7XG4gICAgbGV0IG1zZyA9IGBBdmQgJyR7YXZkTmFtZX0nIGlzIG5vdCBhdmFpbGFibGUuIGA7XG4gICAgaWYgKF8uaXNFbXB0eShhdmRzKSkge1xuICAgICAgbXNnICs9IGBObyBlbXVsYXRvcnMgaGF2ZSBiZWVuIGRldGVjdGVkIG9uIHlvdXIgc3lzdGVtYDtcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnICs9IGBQbGVhc2Ugc2VsZWN0IHlvdXIgYXZkIG5hbWUgZnJvbSBvbmUgb2YgdGhlc2U6ICcke2F2ZHMubWFwKCh7bmFtZX0pID0+IG5hbWUpfSdgO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGVtdU1ldGhvZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsb0JBQW9CLEdBQUcscURBQTdCO0FBRUEsTUFBTUMsVUFBVSxHQUFHLEVBQW5CO0FBQ0FBLFVBQVUsQ0FBQ0MsZUFBWCxHQUE2QkMsTUFBTSxDQUFDQyxNQUFQLENBQWM7RUFDekNDLFdBQVcsRUFBRSxJQUQ0QjtFQUV6Q0MsWUFBWSxFQUFFO0FBRjJCLENB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
@@ -228,4 +228,4 @@ var _default = manifestMethods;
228
228
  exports.default = _default;require('source-map-support').install();
229
229
 
230
230
 
231
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9hbmRyb2lkLW1hbmlmZXN0LmpzIl0sIm5hbWVzIjpbIm1hbmlmZXN0TWV0aG9kcyIsInBhY2thZ2VBbmRMYXVuY2hBY3Rpdml0eUZyb21NYW5pZmVzdCIsImFwcFBhdGgiLCJlbmRzV2l0aCIsIkFQS1NfRVhURU5TSU9OIiwiZXh0cmFjdEJhc2VBcGsiLCJtYW5pZmVzdCIsImFwa1JlYWRlciIsIkFwa1JlYWRlciIsIm9wZW4iLCJyZWFkTWFuaWZlc3QiLCJlIiwibG9nIiwiZGVidWciLCJFcnJvciIsInBrZyIsImFjdGl2aXR5IiwiaW5mbyIsImFwa1BhY2thZ2UiLCJhcGtBY3Rpdml0eSIsInRhcmdldFNka1ZlcnNpb25Gcm9tTWFuaWZlc3QiLCJvcmlnaW5hbEFwcFBhdGgiLCJnZXRUYXJnZXRTZGtWaWFBcGtSZWFkZXIiLCJ1c2VzU2RrIiwiXyIsImlzSW50ZWdlciIsInRhcmdldFNka1ZlcnNpb24iLCJnZXRUYXJnZXRTZGtWaWFBYXB0IiwiaW5pdEFhcHQiLCJhcmdzIiwic3Rkb3V0IiwiYmluYXJpZXMiLCJhYXB0IiwiZXhlYyIsInBhcnNlSW50IiwidmVyc2lvbkdldHRlcnMiLCJ0b29sTmFtZSIsInZlcnNpb25HZXR0ZXIiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1hcCIsInBhaXIiLCJ0YXJnZXRTZGtWZXJzaW9uVXNpbmdQS0ciLCJjbWRPdXRwdXQiLCJzaGVsbCIsIlJlZ0V4cCIsImxlbmd0aCIsImNvbXBpbGVNYW5pZmVzdCIsIm1hbmlmZXN0UGFja2FnZSIsInRhcmdldFBhY2thZ2UiLCJwbGF0Zm9ybSIsInBsYXRmb3JtUGF0aCIsInNka1Jvb3QiLCJyZXN1bHRQYXRoIiwiYW5kcm9pZEphclBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImZzIiwiZXhpc3RzIiwicmltcmFmIiwiaW5pdEFhcHQyIiwidXRpbCIsInF1b3RlIiwiYWFwdDIiLCJzdGRlcnIiLCJlMSIsImluc2VydE1hbmlmZXN0Iiwic3JjQXBrIiwiZHN0QXBrIiwiemlwIiwiYXNzZXJ0VmFsaWRaaXAiLCJtYW5pZmVzdE5hbWUiLCJiYXNlbmFtZSIsImNvcHlGaWxlIiwiaWduIiwiY3dkIiwiZGlybmFtZSIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsImV4dHJhY3RBbGxUbyIsIm12IiwidG9BcmNoaXZlIiwiaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0IiwidXNlc1Blcm1pc3Npb25zIiwic29tZSIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsZUFBZSxHQUFHLEVBQXRCOztBQWdCQUEsZUFBZSxDQUFDQyxvQ0FBaEIsR0FBdUQsZUFBZUEsb0NBQWYsQ0FBcURDLE9BQXJELEVBQThEO0FBQ25ILE1BQUlBLE9BQU8sQ0FBQ0MsUUFBUixDQUFpQkMsdUJBQWpCLENBQUosRUFBc0M7QUFDcENGLElBQUFBLE9BQU8sR0FBRyxNQUFNLEtBQUtHLGNBQUwsQ0FBb0JILE9BQXBCLENBQWhCO0FBQ0Q7O0FBRUQsTUFBSUksUUFBSjs7QUFDQSxNQUFJO0FBQ0YsVUFBTUMsU0FBUyxHQUFHLE1BQU1DLHlCQUFVQyxJQUFWLENBQWVQLE9BQWYsQ0FBeEI7QUFDQUksSUFBQUEsUUFBUSxHQUFHLE1BQU1DLFNBQVMsQ0FBQ0csWUFBVixFQUFqQjtBQUNELEdBSEQsQ0FHRSxPQUFPQyxDQUFQLEVBQVU7QUFDVkMsb0JBQUlDLEtBQUosQ0FBVUYsQ0FBVjs7QUFDQSxVQUFNLElBQUlHLEtBQUosQ0FBVyxtQ0FBa0NaLE9BQVEsS0FBM0MsR0FDYixvQ0FERyxDQUFOO0FBRUQ7O0FBQ0QsUUFBTTtBQUFDYSxJQUFBQSxHQUFEO0FBQU1DLElBQUFBO0FBQU4sTUFBa0IsNEJBQWNWLFFBQWQsQ0FBeEI7O0FBQ0FNLGtCQUFJSyxJQUFKLENBQVUsa0JBQWlCRixHQUFJLEdBQS9COztBQUNBSCxrQkFBSUssSUFBSixDQUFVLHdCQUF1QkQs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RCxDQUFQO0FBQ0QsQ0FURDs7ZUFXZXZGLGUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyLmpzJztcbmltcG9ydCB7XG4gIGdldEFuZHJvaWRQbGF0Zm9ybUFuZFBhdGgsIHVuemlwRmlsZSxcbiAgQVBLU19FWFRFTlNJT04sIHBhcnNlTWFuaWZlc3QgfSBmcm9tICcuLi9oZWxwZXJzLmpzJztcbmltcG9ydCB7IGZzLCB6aXAsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEFwa1JlYWRlciBmcm9tICdhZGJraXQtYXBrcmVhZGVyJztcblxubGV0IG1hbmlmZXN0TWV0aG9kcyA9IHt9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFQS0luZm9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcGtQYWNrYWdlIC0gVGhlIG5hbWUgb2YgYXBwbGljYXRpb24gcGFja2FnZSwgZm9yIGV4YW1wbGUgJ2NvbS5hY21lLmFwcCcuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBrQWN0aXZpdHkgLSBUaGUgbmFtZSBvZiBtYWluIGFwcGxpY2F0aW9uIGFjdGl2aXR5LlxuICovXG5cbi8qKlxuICogRXh0cmFjdCBwYWNrYWdlIGFuZCBtYWluIGFjdGl2aXR5IG5hbWUgZnJvbSBhcHBsaWNhdGlvbiBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gYXBwbGljYXRpb24gLmFwayhzKSBwYWNrYWdlXG4gKiBAcmV0dXJuIHtBUEtJbmZvfSBUaGUgcGFyc2VkIGFwcGxpY2F0aW9uIGluZm8uXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGRhdGEgZnJvbSB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICovXG5tYW5pZmVzdE1ldGhvZHMucGFja2FnZUFuZExhdW5jaEFjdGl2aXR5RnJvbU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gcGFja2FnZUFuZExhdW5jaEFjdGl2aXR5RnJvbU1hbmlmZXN0IChhcHBQYXRoKSB7XG4gIGlmIChhcHBQYXRoLmVuZHNXaXRoKEFQS1NfRVhURU5TSU9OKSkge1xuICAgIGFwcFBhdGggPSBhd2FpdCB0aGlzLmV4dHJhY3RCYXNlQXBrKGFwcFBhdGgpO1xuICB9XG5cbiAgbGV0IG1hbmlmZXN0O1xuICB0cnkge1xuICAgIGNvbnN0IGFwa1JlYWRlciA9IGF3YWl0IEFwa1JlYWRlci5vcGVuKGFwcFBhdGgpO1xuICAgIG1hbmlmZXN0ID0gYXdhaXQgYXBrUmVhZGVyLnJlYWRNYW5pZmVzdCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGUpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGV4dHJhY3QgYSBtYW5pZmVzdCBmcm9tICcke2FwcFBhdGh9Jy4gYCArXG4gICAgICBgSXMgaXQgYSB2YWxpZCBBbmRyb2lkIGFwcGxpY2F0aW9uP2ApO1xuICB9XG4gIGNvbnN0IHtwa2csIGFjdGl2aXR5fSA9IHBhcnNlTWFuaWZlc3QobWFuaWZlc3QpO1xuICBsb2cuaW5mbyhgUGFja2FnZSBuYW1lOiAnJHtwa2d9J2ApO1xuICBsb2cuaW5mbyhgTWFpbiBhY3Rpdml0eSBuYW1lOiAnJHthY3Rpdml0eX0nYCk7XG4gIHJldHVybiB7XG4gICAgYXBrUGFja2FnZTogcGtnLFxuICAgIGFwa0FjdGl2aXR5OiBhY3Rpdml0eSxcbiAgfTtcbn07XG5cbi8qKlxuICogRXh0cmFjdCB0YXJnZXQgU0RLIHZlcnNpb24gZnJvbSBhcHBsaWNhdGlvbiBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gLmFwayhzKSBwYWNrYWdlLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgdmVyc2lvbiBvZiB0aGUgdGFyZ2V0IFNESy5cbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgZGF0YSBmcm9tIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHBhY2thZ2UuXG4gKi9cbm1hbmlmZXN0TWV0aG9kcy50YXJnZXRTZGtWZXJzaW9uRnJvbU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gdGFyZ2V0U2RrVmVyc2lvbkZyb21NYW5pZmVzdCAoYXBwUGF0aCkge1xuICBsb2cuZGVidWcoYEV4dHJhY3RpbmcgdGFyZ2V0IFNESyB2ZXJzaW9uIG9mICcke2FwcFBhdGh9J2ApO1xuICBjb25zdCBvcmlnaW5hbEFwcFBhdGggPSBhcHBQYXRoO1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBhcHBQYXRoID0gYXdhaXQgdGhpcy5leHRyYWN0QmFzZUFwayhhcHBQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGdldFRhcmdldFNka1ZpYUFwa1JlYWRlciA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBhcGtSZWFkZXIgPSBhd2FpdCBBcGtSZWFkZXIub3BlbihhcHBQYXRoKTtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGFwa1JlYWRlci5yZWFkTWFuaWZlc3QoKTtcbiAgICBpZiAobWFuaWZlc3QudXNlc1NkayAmJiBfLmlzSW50ZWdlcihtYW5pZmVzdC51c2VzU2RrLnRhcmdldFNka1ZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gbWFuaWZlc3QudXNlc1Nkay50YXJnZXRTZGtWZXJzaW9uO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0YXJnZXRTZGtWZXJzaW9uIGluIHRoZSBtYW5pZmVzdCcpO1xuICB9O1xuICBjb25zdCBnZXRUYXJnZXRTZGtWaWFBYXB0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdEFhcHQoKTtcbiAgICBjb25zdCBhcmdzID0gWydkdW1wJywgJ2JhZGdpbmcnLCBhcHBQYXRoXTtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0LCBhcmdzKTtcbiAgICBjb25zdCB0YXJnZXRTZGtWZXJzaW9uID0gL3RhcmdldFNka1ZlcnNpb246JyhbXiddKyknL2cuZXhlYyhzdGRvdXQpO1xuICAgIGlmICghdGFyZ2V0U2RrVmVyc2lvbikge1xuICAgICAgbG9nLmRlYnVnKHN0ZG91dCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSB0aGUgY29tbWFuZCBvdXRwdXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHRhcmdldFNka1ZlcnNpb25bMV0sIDEwKTtcbiAgfTtcbiAgY29uc3QgdmVyc2lvbkdldHRlcnMgPSBbXG4gICAgWydBcGtSZWFkZXInLCBnZXRUYXJnZXRTZGtWaWFBcGtSZWFkZXJdLFxuICAgIFsnYWFwdCcsIGdldFRhcmdldFNka1ZpYUFhcHRdLFxuICBdO1xuICBmb3IgKGNvbnN0IFt0b29sTmFtZSwgdmVyc2lvbkdldHRlcl0gb2YgdmVyc2lvbkdldHRlcnMpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHZlcnNpb25HZXR0ZXIoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cuaW5mbyhgQ2Fubm90IGV4dHJhY3QgdGFyZ2V0U2RrVmVyc2lvbiBvZiAnJHtvcmlnaW5hbEFwcFBhdGh9JyB1c2luZyAke3Rvb2xOYW1lfS4gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGV4dHJhY3QgdGhlIHRhcmdldCBTREsgdmVyc2lvbiBudW1iZXIgb2YgJyR7b3JpZ2luYWxBcHBQYXRofScgdXNpbmcgZWl0aGVyIG9mIGAgK1xuICAgIGAke0pTT04uc3RyaW5naWZ5KHZlcnNpb25HZXR0ZXJzLm1hcCgocGFpcikgPT4gcGFpclswXSkpfSB0b29scy4gYCArXG4gICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHNgKTtcbn07XG5cbi8qKlxuICogRXh0cmFjdCB0YXJnZXQgU0RLIHZlcnNpb24gZnJvbSBwYWNrYWdlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwa2cgLSBUaGUgY2xhc3MgbmFtZSBvZiB0aGUgcGFja2FnZSBpbnN0YWxsZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICogQHBhcmFtIHs/c3RyaW5nfSBjbWRPdXRwdXQgLSBPcHRpb25hbCBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgb3V0cHV0IG9mXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdW1wc3lzIHBhY2thZ2VfIGNvbW1hbmQuIEl0IG1heSBzcGVlZCB1cCB0aGUgbWV0aG9kIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlcnNpb24gb2YgdGhlIHRhcmdldCBTREsuXG4gKi9cbm1hbmlmZXN0TWV0aG9kcy50YXJnZXRTZGtWZXJzaW9uVXNpbmdQS0cgPSBhc3luYyBmdW5jdGlvbiB0YXJnZXRTZGtWZXJzaW9uVXNpbmdQS0cgKHBrZywgY21kT3V0cHV0ID0gbnVsbCkge1xuICBsZXQgc3Rkb3V0ID0gY21kT3V0cHV0IHx8IGF3YWl0IHRoaXMuc2hlbGwoWydkdW1wc3lzJywgJ3BhY2thZ2UnLCBwa2ddKTtcbiAgbGV0IHRhcmdldFNka1ZlcnNpb24gPSBuZXcgUmVnRXhwKC90YXJnZXRTZGs9KFteXFxzXFxzXSspL2cpLmV4ZWMoc3Rkb3V0KTtcbiAgaWYgKHRhcmdldFNka1ZlcnNpb24gJiYgdGFyZ2V0U2RrVmVyc2lvbi5sZW5ndGggPj0gMikge1xuICAgIHRhcmdldFNka1ZlcnNpb24gPSB0YXJnZXRTZGtWZXJzaW9uWzFdO1xuICB9IGVsc2Uge1xuICAgIC8vIHRhcmdldFNkayBub3QgZm91bmQgaW4gdGhlIGR1bXAsIGFzc2lnbmluZyAwIHRvIHRhcmdldFNka1ZlcnNpb25cbiAgICB0YXJnZXRTZGtWZXJzaW9uID0gMDtcbiAgfVxuICByZXR1cm4gcGFyc2VJbnQodGFyZ2V0U2RrVmVyc2lvbiwgMTApO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHBhY2thZ2UgbWFuaWZlc3QgKHVzdWFsbHkgQW5kcm9pZE1hbmlmZXN0LnhtbCkuXG4gKiBgJHttYW5pZmVzdH0uYXBrYCBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWV0aG9kXG4gKiBjb250YWluaW5nIHRoZSBjb21waWxlZCBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFuaWZlc3QgLSBGdWxsIHBhdGggdG8gdGhlIGluaXRpYWwgbWFuaWZlc3QgdGVtcGxhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYW5pZmVzdFBhY2thZ2UgLSBUaGUgbmFtZSBvZiB0aGUgbWFuaWZlc3QgcGFja2FnZVxuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFBhY2thZ2UgLSBUaGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gcGFja2FnZVxuICovXG5tYW5pZmVzdE1ldGhvZHMuY29tcGlsZU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gY29tcGlsZU1hbmlmZXN0IChtYW5pZmVzdCwgbWFuaWZlc3RQYWNrYWdlLCB0YXJnZXRQYWNrYWdlKSB7XG4gIGNvbnN0IHtwbGF0Zm9ybSwgcGxhdGZvcm1QYXRofSA9IGF3YWl0IGdldEFuZHJvaWRQbGF0Zm9ybUFuZFBhdGgodGhpcy5zZGtSb290KTtcbiAgaWYgKCFwbGF0Zm9ybSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbXBpbGUgdGhlIG1hbmlmZXN0LiBUaGUgcmVxdWlyZWQgcGxhdGZvcm0gZG9lcyBub3QgZXhpc3QgKEFQSSBsZXZlbCA+PSAxNyknKTtcbiAgfVxuICBjb25zdCByZXN1bHRQYXRoID0gYCR7bWFuaWZlc3R9LmFwa2A7XG4gIGNvbnN0IGFuZHJvaWRKYXJQYXRoID0gcGF0aC5yZXNvbHZlKHBsYXRmb3JtUGF0aCwgJ2FuZHJvaWQuamFyJyk7XG4gIGlmIChhd2FpdCBmcy5leGlzdHMocmVzdWx0UGF0aCkpIHtcbiAgICBhd2FpdCBmcy5yaW1yYWYocmVzdWx0UGF0aCk7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0MigpO1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9jb21tYW5kLWxpbmUvYWFwdDJcbiAgICBjb25zdCBhcmdzID0gW1xuICAgICAgJ2xpbmsnLFxuICAgICAgJy1vJywgcmVzdWx0UGF0aCxcbiAgICAgICctLW1hbmlmZXN0JywgbWFuaWZlc3QsXG4gICAgICAnLS1yZW5hbWUtbWFuaWZlc3QtcGFja2FnZScsIG1hbmlmZXN0UGFja2FnZSxcbiAgICAgICctLXJlbmFtZS1pbnN0cnVtZW50YXRpb24tdGFyZ2V0LXBhY2thZ2UnLCB0YXJnZXRQYWNrYWdlLFxuICAgICAgJy1JJywgYW5kcm9pZEphclBhdGgsXG4gICAgICAnLXYnLFxuICAgIF07XG4gICAgbG9nLmRlYnVnKGBDb21waWxpbmcgdGhlIG1hbmlmZXN0IHVzaW5nICcke3V0aWwucXVvdGUoW3RoaXMuYmluYXJpZXMuYWFwdDIsIC4uLmFyZ3NdKX0nYCk7XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQyLCBhcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZygnQ2Fubm90IGNvbXBpbGUgdGhlIG1hbmlmZXN0IHVzaW5nIGFhcHQyLiBEZWZhdWx0aW5nIHRvIGFhcHQuICcgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0KCk7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgICdwYWNrYWdlJyxcbiAgICAgICctTScsIG1hbmlmZXN0LFxuICAgICAgJy0tcmVuYW1lLW1hbmlmZXN0LXBhY2thZ2UnLCBtYW5pZmVzdFBhY2thZ2UsXG4gICAgICAnLS1yZW5hbWUtaW5zdHJ1bWVudGF0aW9uLXRhcmdldC1wYWNrYWdlJywgdGFyZ2V0UGFja2FnZSxcbiAgICAgICctSScsIGFuZHJvaWRKYXJQYXRoLFxuICAgICAgJy1GJywgcmVzdWx0UGF0aCxcbiAgICAgICctZicsXG4gICAgXTtcbiAgICBsb2cuZGVidWcoYENvbXBpbGluZyB0aGUgbWFuaWZlc3QgdXNpbmcgJyR7dXRpbC5xdW90ZShbdGhpcy5iaW5hcmllcy5hYXB0LCAuLi5hcmdzXSl9J2ApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjKHRoaXMuYmluYXJpZXMuYWFwdCwgYXJncyk7XG4gICAgfSBjYXRjaCAoZTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbXBpbGUgdGhlIG1hbmlmZXN0LiBPcmlnaW5hbCBlcnJvcjogJHtlMS5zdGRlcnIgfHwgZTEubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbiAgbG9nLmRlYnVnKGBDb21waWxlZCB0aGUgbWFuaWZlc3QgYXQgJyR7cmVzdWx0UGF0aH0nYCk7XG59O1xuXG4vKipcbiAqIFJlcGxhY2UvaW5zZXJ0IHRoZSBzcGVjaWFsbHkgcHJlY29tcGlsZWQgbWFuaWZlc3QgZmlsZSBpbnRvIHRoZVxuICogcGFydGljdWxhciBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYW5pZmVzdCAtIEZ1bGwgcGF0aCB0byB0aGUgcHJlY29tcGlsZWQgbWFuaWZlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgYGNvbXBpbGVNYW5pZmVzdGAgbWV0aG9kIGNhbGxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgLmFwayBleHRlbnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBzcmNBcGsgLSBGdWxsIHBhdGggdG8gdGhlIGV4aXN0aW5nIHZhbGlkIGFwcGxpY2F0aW9uIHBhY2thZ2UsIHdoZXJlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBtYW5pZmVzdCBoYXMgdG8gYmUgaW5zZXRyZWQgdG8uIFRoaXMgcGFja2FnZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgTk9UIGJlIG1vZGlmaWVkLlxuICogQHBhcmFtIHtzdHJpbmd9IGRzdEFwayAtIEZ1bGwgcGF0aCB0byB0aGUgcmVzdWx0aW5nIHBhY2thZ2UuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgd2lsbCBiZSBvdmVycmlkZGVuIGlmIGl0IGFscmVhZHkgZXhpc3RzLlxuICovXG5tYW5pZmVzdE1ldGhvZHMuaW5zZXJ0TWFuaWZlc3QgPSBhc3luYyBmdW5jdGlvbiBpbnNlcnRNYW5pZmVzdCAobWFuaWZlc3QsIHNyY0FwaywgZHN0QXBrKSB7XG4gIGxvZy5kZWJ1ZyhgSW5zZXJ0aW5nIG1hbmlmZXN0ICcke21hbmlmZXN0fScsIHNyYzogJyR7c3JjQXBrfScsIGRzdDogJyR7ZHN0QXBrfSdgKTtcbiAgYXdhaXQgemlwLmFzc2VydFZhbGlkWmlwKHNyY0Fwayk7XG4gIGF3YWl0IHVuemlwRmlsZShgJHttYW5pZmVzdH0uYXBrYCk7XG4gIGNvbnN0IG1hbmlmZXN0TmFtZSA9IHBhdGguYmFzZW5hbWUobWFuaWZlc3QpO1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuaW5pdEFhcHQoKTtcbiAgICBhd2FpdCBmcy5jb3B5RmlsZShzcmNBcGssIGRzdEFwayk7XG4gICAgbG9nLmRlYnVnKCdNb3ZpbmcgbWFuaWZlc3QnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQsIFtcbiAgICAgICAgJ3JlbW92ZScsIGRzdEFwaywgbWFuaWZlc3ROYW1lXG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQsIFtcbiAgICAgICdhZGQnLCBkc3RBcGssIG1hbmlmZXN0TmFtZVxuICAgIF0sIHtjd2Q6IHBhdGguZGlybmFtZShtYW5pZmVzdCl9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZygnQ2Fubm90IGluc2VydCBtYW5pZmVzdCB1c2luZyBhYXB0LiBEZWZhdWx0aW5nIHRvIHppcC4gJyArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICAgIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICB0cnkge1xuICAgICAgLy8gVW5mb3J0dW5hdGVseSBOb2RlSlMgZG9lcyBub3QgcHJvdmlkZSBhbnkgcmVsaWFibGUgbWV0aG9kc1xuICAgICAgLy8gdG8gcmVwbGFjZSBmaWxlcyBpbnNpZGUgemlwIGFyY2hpdmVzIHdpdGhvdXQgbG9hZGluZyB0aGVcbiAgICAgIC8vIHdob2xlIGFyY2hpdmUgY29udGVudCBpbnRvIFJBTVxuICAgICAgbG9nLmRlYnVnKGBFeHRyYWN0aW5nIHRoZSBzb3VyY2UgYXBrIGF0ICcke3NyY0Fwa30nYCk7XG4gICAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKHNyY0FwaywgdG1wUm9vdCk7XG4gICAgICBsb2cuZGVidWcoJ01vdmluZyBtYW5pZmVzdCcpO1xuICAgICAgYXdhaXQgZnMubXYobWFuaWZlc3QsIHBhdGgucmVzb2x2ZSh0bXBSb290LCBtYW5pZmVzdE5hbWUpKTtcbiAgICAgIGxvZy5kZWJ1ZyhgQ29sbGVjdGluZyB0aGUgZGVzdGluYXRpb24gYXBrIGF0ICcke2RzdEFwa30nYCk7XG4gICAgICBhd2FpdCB6aXAudG9BcmNoaXZlKGRzdEFwaywge1xuICAgICAgICBjd2Q6IHRtcFJvb3QsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICAgIH1cbiAgfVxuICBsb2cuZGVidWcoYE1hbmlmZXN0IGluc2VydGlvbiBpbnRvICcke2RzdEFwa30nIGlzIGNvbXBsZXRlZGApO1xufTtcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHBhY2thZ2UgbWFuaWZlc3QgY29udGFpbnMgSW50ZXJuZXQgcGVybWlzc2lvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggLSBUaGUgZnVsbCBwYXRoIHRvIC5hcGsocykgcGFja2FnZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIG1hbmlmZXN0IHJlcXVpcmVzIEludGVybmV0IGFjY2VzcyBwZXJtaXNzaW9uLlxuICovXG5tYW5pZmVzdE1ldGhvZHMuaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0IChhcHBQYXRoKSB7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgaWYgJyR7YXBwUGF0aH0nIHJlcXVpcmVzIGludGVybmV0IGFjY2VzcyBwZXJtaXNzaW9uIGluIHRoZSBtYW5pZmVzdGApO1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBhcHBQYXRoID0gYXdhaXQgdGhpcy5leHRyYWN0QmFzZUFwayhhcHBQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGFwa1JlYWRlciA9IGF3YWl0IEFwa1JlYWRlci5vcGVuKGFwcFBhdGgpO1xuICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGFwa1JlYWRlci5yZWFkTWFuaWZlc3QoKTtcbiAgcmV0dXJuIChtYW5pZmVzdC51c2VzUGVybWlzc2lvbnMgfHwgW10pLnNvbWUoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ2FuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVCcpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWFuaWZlc3RNZXRob2RzO1xuIl0sImZpbGUiOiJsaWIvdG9vbHMvYW5kcm9pZC1tYW5pZmVzdC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
231
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2FuZHJvaWQtbWFuaWZlc3QuanMiLCJuYW1lcyI6WyJtYW5pZmVzdE1ldGhvZHMiLCJwYWNrYWdlQW5kTGF1bmNoQWN0aXZpdHlGcm9tTWFuaWZlc3QiLCJhcHBQYXRoIiwiZW5kc1dpdGgiLCJBUEtTX0VYVEVOU0lPTiIsImV4dHJhY3RCYXNlQXBrIiwibWFuaWZlc3QiLCJhcGtSZWFkZXIiLCJBcGtSZWFkZXIiLCJvcGVuIiwicmVhZE1hbmlmZXN0IiwiZSIsImxvZyIsImRlYnVnIiwiRXJyb3IiLCJwa2ciLCJhY3Rpdml0eSIsImluZm8iLCJhcGtQYWNrYWdlIiwiYXBrQWN0aXZpdHkiLCJ0YXJnZXRTZGtWZXJzaW9uRnJvbU1hbmlmZXN0Iiwib3JpZ2luYWxBcHBQYXRoIiwiZ2V0VGFyZ2V0U2RrVmlhQXBrUmVhZGVyIiwidXNlc1NkayIsIl8iLCJpc0ludGVnZXIiLCJ0YXJnZXRTZGtWZXJzaW9uIiwiZ2V0VGFyZ2V0U2RrVmlhQWFwdCIsImluaXRBYXB0IiwiYXJncyIsInN0ZG91dCIsImJpbmFyaWVzIiwiYWFwdCIsImV4ZWMiLCJwYXJzZUludCIsInZlcnNpb25HZXR0ZXJzIiwidG9vbE5hbWUiLCJ2ZXJzaW9uR2V0dGVyIiwibWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtYXAiLCJwYWlyIiwidGFyZ2V0U2RrVmVyc2lvblVzaW5nUEtHIiwiY21kT3V0cHV0Iiwic2hlbGwiLCJSZWdFeHAiLCJsZW5ndGgiLCJjb21waWxlTWFuaWZlc3QiLCJtYW5pZmVzdFBhY2thZ2UiLCJ0YXJnZXRQYWNrYWdlIiwicGxhdGZvcm0iLCJwbGF0Zm9ybVBhdGgiLCJzZGtSb290IiwicmVzdWx0UGF0aCIsImFuZHJvaWRKYXJQYXRoIiwicGF0aCIsInJlc29sdmUiLCJmcyIsImV4aXN0cyIsInJpbXJhZiIsImluaXRBYXB0MiIsInV0aWwiLCJxdW90ZSIsImFhcHQyIiwic3RkZXJyIiwiZTEiLCJpbnNlcnRNYW5pZmVzdCIsInNyY0FwayIsImRzdEFwayIsInppcCIsImFzc2VydFZhbGlkWmlwIiwibWFuaWZlc3ROYW1lIiwiYmFzZW5hbWUiLCJjb3B5RmlsZSIsImlnbiIsImN3ZCIsImRpcm5hbWUiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJleHRyYWN0QWxsVG8iLCJtdiIsInRvQXJjaGl2ZSIsImhhc0ludGVybmV0UGVybWlzc2lvbkZyb21NYW5pZmVzdCIsInVzZXNQZXJtaXNzaW9ucyIsInNvbWUiLCJuYW1lIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL3Rvb2xzL2FuZHJvaWQtbWFuaWZlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoLCB1bnppcEZpbGUsXG4gIEFQS1NfRVhURU5TSU9OLCBwYXJzZU1hbmlmZXN0IH0gZnJvbSAnLi4vaGVscGVycy5qcyc7XG5pbXBvcnQgeyBmcywgemlwLCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBcGtSZWFkZXIgZnJvbSAnYWRia2l0LWFwa3JlYWRlcic7XG5cbmxldCBtYW5pZmVzdE1ldGhvZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBUEtJbmZvXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBrUGFja2FnZSAtIFRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uIHBhY2thZ2UsIGZvciBleGFtcGxlICdjb20uYWNtZS5hcHAnLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwa0FjdGl2aXR5IC0gVGhlIG5hbWUgb2YgbWFpbiBhcHBsaWNhdGlvbiBhY3Rpdml0eS5cbiAqL1xuXG4vKipcbiAqIEV4dHJhY3QgcGFja2FnZSBhbmQgbWFpbiBhY3Rpdml0eSBuYW1lIGZyb20gYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggLSBUaGUgZnVsbCBwYXRoIHRvIGFwcGxpY2F0aW9uIC5hcGsocykgcGFja2FnZVxuICogQHJldHVybiB7QVBLSW5mb30gVGhlIHBhcnNlZCBhcHBsaWNhdGlvbiBpbmZvLlxuICogQHRocm93cyB7ZXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBkYXRhIGZyb20gdGhlIGdpdmVuXG4gKiAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gcGFja2FnZS5cbiAqL1xubWFuaWZlc3RNZXRob2RzLnBhY2thZ2VBbmRMYXVuY2hBY3Rpdml0eUZyb21NYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIHBhY2thZ2VBbmRMYXVuY2hBY3Rpdml0eUZyb21NYW5pZmVzdCAoYXBwUGF0aCkge1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBhcHBQYXRoID0gYXdhaXQgdGhpcy5leHRyYWN0QmFzZUFwayhhcHBQYXRoKTtcbiAgfVxuXG4gIGxldCBtYW5pZmVzdDtcbiAgdHJ5IHtcbiAgICBjb25zdCBhcGtSZWFkZXIgPSBhd2FpdCBBcGtSZWFkZXIub3BlbihhcHBQYXRoKTtcbiAgICBtYW5pZmVzdCA9IGF3YWl0IGFwa1JlYWRlci5yZWFkTWFuaWZlc3QoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZyhlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBleHRyYWN0IGEgbWFuaWZlc3QgZnJvbSAnJHthcHBQYXRofScuIGAgK1xuICAgICAgYElzIGl0IGEgdmFsaWQgQW5kcm9pZCBhcHBsaWNhdGlvbj9gKTtcbiAgfVxuICBjb25zdCB7cGtnLCBhY3Rpdml0eX0gPSBwYXJzZU1hbmlmZXN0KG1hbmlmZXN0KTtcbiAgbG9nLmluZm8oYFBhY2thZ2UgbmFtZTogJyR7cGtnfSdgKTtcbiAgbG9nLmluZm8oYE1haW4gYWN0aXZpdHkgbmFtZTogJyR7YWN0aXZpdHl9J2ApO1xuICByZXR1cm4ge1xuICAgIGFwa1BhY2thZ2U6IHBrZyxcbiAgICBhcGtBY3Rpdml0eTogYWN0aXZpdHksXG4gIH07XG59O1xuXG4vKipcbiAqIEV4dHJhY3QgdGFyZ2V0IFNESyB2ZXJzaW9uIGZyb20gYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggLSBUaGUgZnVsbCBwYXRoIHRvIC5hcGsocykgcGFja2FnZS5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlcnNpb24gb2YgdGhlIHRhcmdldCBTREsuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGRhdGEgZnJvbSB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICovXG5tYW5pZmVzdE1ldGhvZHMudGFyZ2V0U2RrVmVyc2lvbkZyb21NYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIHRhcmdldFNka1ZlcnNpb25Gcm9tTWFuaWZlc3QgKGFwcFBhdGgpIHtcbiAgbG9nLmRlYnVnKGBFeHRyYWN0aW5nIHRhcmdldCBTREsgdmVyc2lvbiBvZiAnJHthcHBQYXRofSdgKTtcbiAgY29uc3Qgb3JpZ2luYWxBcHBQYXRoID0gYXBwUGF0aDtcbiAgaWYgKGFwcFBhdGguZW5kc1dpdGgoQVBLU19FWFRFTlNJT04pKSB7XG4gICAgYXBwUGF0aCA9IGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBwUGF0aCk7XG4gIH1cblxuICBjb25zdCBnZXRUYXJnZXRTZGtWaWFBcGtSZWFkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYXBrUmVhZGVyID0gYXdhaXQgQXBrUmVhZGVyLm9wZW4oYXBwUGF0aCk7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBhcGtSZWFkZXIucmVhZE1hbmlmZXN0KCk7XG4gICAgaWYgKG1hbmlmZXN0LnVzZXNTZGsgJiYgXy5pc0ludGVnZXIobWFuaWZlc3QudXNlc1Nkay50YXJnZXRTZGtWZXJzaW9uKSkge1xuICAgICAgcmV0dXJuIG1hbmlmZXN0LnVzZXNTZGsudGFyZ2V0U2RrVmVyc2lvbjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmluZCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGFyZ2V0U2RrVmVyc2lvbiBpbiB0aGUgbWFuaWZlc3QnKTtcbiAgfTtcbiAgY29uc3QgZ2V0VGFyZ2V0U2RrVmlhQWFwdCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0KCk7XG4gICAgY29uc3QgYXJncyA9IFsnZHVtcCcsICdiYWRnaW5nJywgYXBwUGF0aF07XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKHRoaXMuYmluYXJpZXMuYWFwdCwgYXJncyk7XG4gICAgY29uc3QgdGFyZ2V0U2RrVmVyc2lvbiA9IC90YXJnZXRTZGtWZXJzaW9uOicoW14nXSspJy9nLmV4ZWMoc3Rkb3V0KTtcbiAgICBpZiAoIXRhcmdldFNka1ZlcnNpb24pIHtcbiAgICAgIGxvZy5kZWJ1ZyhzdGRvdXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGNvbW1hbmQgb3V0cHV0Jyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUludCh0YXJnZXRTZGtWZXJzaW9uWzFdLCAxMCk7XG4gIH07XG4gIGNvbnN0IHZlcnNpb25HZXR0ZXJzID0gW1xuICAgIFsnQXBrUmVhZGVyJywgZ2V0VGFyZ2V0U2RrVmlhQXBrUmVhZGVyXSxcbiAgICBbJ2FhcHQnLCBnZXRUYXJnZXRTZGtWaWFBYXB0XSxcbiAgXTtcbiAgZm9yIChjb25zdCBbdG9vbE5hbWUsIHZlcnNpb25HZXR0ZXJdIG9mIHZlcnNpb25HZXR0ZXJzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB2ZXJzaW9uR2V0dGVyKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLmluZm8oYENhbm5vdCBleHRyYWN0IHRhcmdldFNka1ZlcnNpb24gb2YgJyR7b3JpZ2luYWxBcHBQYXRofScgdXNpbmcgJHt0b29sTmFtZX0uIGAgK1xuICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBleHRyYWN0IHRoZSB0YXJnZXQgU0RLIHZlcnNpb24gbnVtYmVyIG9mICcke29yaWdpbmFsQXBwUGF0aH0nIHVzaW5nIGVpdGhlciBvZiBgICtcbiAgICBgJHtKU09OLnN0cmluZ2lmeSh2ZXJzaW9uR2V0dGVycy5tYXAoKHBhaXIpID0+IHBhaXJbMF0pKX0gdG9vbHMuIGAgK1xuICAgIGBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG59O1xuXG4vKipcbiAqIEV4dHJhY3QgdGFyZ2V0IFNESyB2ZXJzaW9uIGZyb20gcGFja2FnZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGtnIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIHBhY2thZ2UgaW5zdGFsbGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqIEBwYXJhbSB7P3N0cmluZ30gY21kT3V0cHV0IC0gT3B0aW9uYWwgcGFyYW1ldGVyIGNvbnRhaW5pbmcgdGhlIG91dHB1dCBvZlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZHVtcHN5cyBwYWNrYWdlXyBjb21tYW5kLiBJdCBtYXkgc3BlZWQgdXAgdGhlIG1ldGhvZCBleGVjdXRpb24uXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZXJzaW9uIG9mIHRoZSB0YXJnZXQgU0RLLlxuICovXG5tYW5pZmVzdE1ldGhvZHMudGFyZ2V0U2RrVmVyc2lvblVzaW5nUEtHID0gYXN5bmMgZnVuY3Rpb24gdGFyZ2V0U2RrVmVyc2lvblVzaW5nUEtHIChwa2csIGNtZE91dHB1dCA9IG51bGwpIHtcbiAgbGV0IHN0ZG91dCA9IGNtZE91dHB1dCB8fCBhd2FpdCB0aGlzLnNoZWxsKFsnZHVtcHN5cycsICdwYWNrYWdlJywgcGtnXSk7XG4gIGxldCB0YXJnZXRTZGtWZXJzaW9uID0gbmV3IFJlZ0V4cCgvdGFyZ2V0U2RrPShbXlxcc1xcc10rKS9nKS5leGVjKHN0ZG91dCk7XG4gIGlmICh0YXJnZXRTZGtWZXJzaW9uICYmIHRhcmdldFNka1ZlcnNpb24ubGVuZ3RoID49IDIpIHtcbiAgICB0YXJnZXRTZGtWZXJzaW9uID0gdGFyZ2V0U2RrVmVyc2lvblsxXTtcbiAgfSBlbHNlIHtcbiAgICAvLyB0YXJnZXRTZGsgbm90IGZvdW5kIGluIHRoZSBkdW1wLCBhc3NpZ25pbmcgMCB0byB0YXJnZXRTZGtWZXJzaW9uXG4gICAgdGFyZ2V0U2RrVmVyc2lvbiA9IDA7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHRhcmdldFNka1ZlcnNpb24sIDEwKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBwYWNrYWdlIG1hbmlmZXN0ICh1c3VhbGx5IEFuZHJvaWRNYW5pZmVzdC54bWwpLlxuICogYCR7bWFuaWZlc3R9LmFwa2AgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZFxuICogY29udGFpbmluZyB0aGUgY29tcGlsZWQgbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hbmlmZXN0IC0gRnVsbCBwYXRoIHRvIHRoZSBpbml0aWFsIG1hbmlmZXN0IHRlbXBsYXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFuaWZlc3RQYWNrYWdlIC0gVGhlIG5hbWUgb2YgdGhlIG1hbmlmZXN0IHBhY2thZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRQYWNrYWdlIC0gVGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIHBhY2thZ2VcbiAqL1xubWFuaWZlc3RNZXRob2RzLmNvbXBpbGVNYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIGNvbXBpbGVNYW5pZmVzdCAobWFuaWZlc3QsIG1hbmlmZXN0UGFja2FnZSwgdGFyZ2V0UGFja2FnZSkge1xuICBjb25zdCB7cGxhdGZvcm0sIHBsYXRmb3JtUGF0aH0gPSBhd2FpdCBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoKHRoaXMuc2RrUm9vdCk7XG4gIGlmICghcGxhdGZvcm0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb21waWxlIHRoZSBtYW5pZmVzdC4gVGhlIHJlcXVpcmVkIHBsYXRmb3JtIGRvZXMgbm90IGV4aXN0IChBUEkgbGV2ZWwgPj0gMTcpJyk7XG4gIH1cbiAgY29uc3QgcmVzdWx0UGF0aCA9IGAke21hbmlmZXN0fS5hcGtgO1xuICBjb25zdCBhbmRyb2lkSmFyUGF0aCA9IHBhdGgucmVzb2x2ZShwbGF0Zm9ybVBhdGgsICdhbmRyb2lkLmphcicpO1xuICBpZiAoYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHJlc3VsdFBhdGgpO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5pbml0QWFwdDIoKTtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vY29tbWFuZC1saW5lL2FhcHQyXG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgICdsaW5rJyxcbiAgICAgICctbycsIHJlc3VsdFBhdGgsXG4gICAgICAnLS1tYW5pZmVzdCcsIG1hbmlmZXN0LFxuICAgICAgJy0tcmVuYW1lLW1hbmlmZXN0LXBhY2thZ2UnLCBtYW5pZmVzdFBhY2thZ2UsXG4gICAgICAnLS1yZW5hbWUtaW5zdHJ1bWVudGF0aW9uLXRhcmdldC1wYWNrYWdlJywgdGFyZ2V0UGFja2FnZSxcbiAgICAgICctSScsIGFuZHJvaWRKYXJQYXRoLFxuICAgICAgJy12JyxcbiAgICBdO1xuICAgIGxvZy5kZWJ1ZyhgQ29tcGlsaW5nIHRoZSBtYW5pZmVzdCB1c2luZyAnJHt1dGlsLnF1b3RlKFt0aGlzLmJpbmFyaWVzLmFhcHQyLCAuLi5hcmdzXSl9J2ApO1xuICAgIGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0MiwgYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoJ0Nhbm5vdCBjb21waWxlIHRoZSBtYW5pZmVzdCB1c2luZyBhYXB0Mi4gRGVmYXVsdGluZyB0byBhYXB0LiAnICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gICAgYXdhaXQgdGhpcy5pbml0QWFwdCgpO1xuICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAncGFja2FnZScsXG4gICAgICAnLU0nLCBtYW5pZmVzdCxcbiAgICAgICctLXJlbmFtZS1tYW5pZmVzdC1wYWNrYWdlJywgbWFuaWZlc3RQYWNrYWdlLFxuICAgICAgJy0tcmVuYW1lLWluc3RydW1lbnRhdGlvbi10YXJnZXQtcGFja2FnZScsIHRhcmdldFBhY2thZ2UsXG4gICAgICAnLUknLCBhbmRyb2lkSmFyUGF0aCxcbiAgICAgICctRicsIHJlc3VsdFBhdGgsXG4gICAgICAnLWYnLFxuICAgIF07XG4gICAgbG9nLmRlYnVnKGBDb21waWxpbmcgdGhlIG1hbmlmZXN0IHVzaW5nICcke3V0aWwucXVvdGUoW3RoaXMuYmluYXJpZXMuYWFwdCwgLi4uYXJnc10pfSdgKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGUxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21waWxlIHRoZSBtYW5pZmVzdC4gT3JpZ2luYWwgZXJyb3I6ICR7ZTEuc3RkZXJyIHx8IGUxLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIGxvZy5kZWJ1ZyhgQ29tcGlsZWQgdGhlIG1hbmlmZXN0IGF0ICcke3Jlc3VsdFBhdGh9J2ApO1xufTtcblxuLyoqXG4gKiBSZXBsYWNlL2luc2VydCB0aGUgc3BlY2lhbGx5IHByZWNvbXBpbGVkIG1hbmlmZXN0IGZpbGUgaW50byB0aGVcbiAqIHBhcnRpY3VsYXIgcGFja2FnZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFuaWZlc3QgLSBGdWxsIHBhdGggdG8gdGhlIHByZWNvbXBpbGVkIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IGBjb21waWxlTWFuaWZlc3RgIG1ldGhvZCBjYWxsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IC5hcGsgZXh0ZW5zaW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjQXBrIC0gRnVsbCBwYXRoIHRvIHRoZSBleGlzdGluZyB2YWxpZCBhcHBsaWNhdGlvbiBwYWNrYWdlLCB3aGVyZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgbWFuaWZlc3QgaGFzIHRvIGJlIGluc2V0cmVkIHRvLiBUaGlzIHBhY2thZ2VcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIE5PVCBiZSBtb2RpZmllZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkc3RBcGsgLSBGdWxsIHBhdGggdG8gdGhlIHJlc3VsdGluZyBwYWNrYWdlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHdpbGwgYmUgb3ZlcnJpZGRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAqL1xubWFuaWZlc3RNZXRob2RzLmluc2VydE1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gaW5zZXJ0TWFuaWZlc3QgKG1hbmlmZXN0LCBzcmNBcGssIGRzdEFwaykge1xuICBsb2cuZGVidWcoYEluc2VydGluZyBtYW5pZmVzdCAnJHttYW5pZmVzdH0nLCBzcmM6ICcke3NyY0Fwa30nLCBkc3Q6ICcke2RzdEFwa30nYCk7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcChzcmNBcGspO1xuICBhd2FpdCB1bnppcEZpbGUoYCR7bWFuaWZlc3R9LmFwa2ApO1xuICBjb25zdCBtYW5pZmVzdE5hbWUgPSBwYXRoLmJhc2VuYW1lKG1hbmlmZXN0KTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0KCk7XG4gICAgYXdhaXQgZnMuY29weUZpbGUoc3JjQXBrLCBkc3RBcGspO1xuICAgIGxvZy5kZWJ1ZygnTW92aW5nIG1hbmlmZXN0Jyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0LCBbXG4gICAgICAgICdyZW1vdmUnLCBkc3RBcGssIG1hbmlmZXN0TmFtZVxuICAgICAgXSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0LCBbXG4gICAgICAnYWRkJywgZHN0QXBrLCBtYW5pZmVzdE5hbWVcbiAgICBdLCB7Y3dkOiBwYXRoLmRpcm5hbWUobWFuaWZlc3QpfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoJ0Nhbm5vdCBpbnNlcnQgbWFuaWZlc3QgdXNpbmcgYWFwdC4gRGVmYXVsdGluZyB0byB6aXAuICcgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVuZm9ydHVuYXRlbHkgTm9kZUpTIGRvZXMgbm90IHByb3ZpZGUgYW55IHJlbGlhYmxlIG1ldGhvZHNcbiAgICAgIC8vIHRvIHJlcGxhY2UgZmlsZXMgaW5zaWRlIHppcCBhcmNoaXZlcyB3aXRob3V0IGxvYWRpbmcgdGhlXG4gICAgICAvLyB3aG9sZSBhcmNoaXZlIGNvbnRlbnQgaW50byBSQU1cbiAgICAgIGxvZy5kZWJ1ZyhgRXh0cmFjdGluZyB0aGUgc291cmNlIGFwayBhdCAnJHtzcmNBcGt9J2ApO1xuICAgICAgYXdhaXQgemlwLmV4dHJhY3RBbGxUbyhzcmNBcGssIHRtcFJvb3QpO1xuICAgICAgbG9nLmRlYnVnKCdNb3ZpbmcgbWFuaWZlc3QnKTtcbiAgICAgIGF3YWl0IGZzLm12KG1hbmlmZXN0LCBwYXRoLnJlc29sdmUodG1wUm9vdCwgbWFuaWZlc3ROYW1lKSk7XG4gICAgICBsb2cuZGVidWcoYENvbGxlY3RpbmcgdGhlIGRlc3RpbmF0aW9uIGFwayBhdCAnJHtkc3RBcGt9J2ApO1xuICAgICAgYXdhaXQgemlwLnRvQXJjaGl2ZShkc3RBcGssIHtcbiAgICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB9XG4gIH1cbiAgbG9nLmRlYnVnKGBNYW5pZmVzdCBpbnNlcnRpb24gaW50byAnJHtkc3RBcGt9JyBpcyBjb21wbGV0ZWRgKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBwYWNrYWdlIG1hbmlmZXN0IGNvbnRhaW5zIEludGVybmV0IHBlcm1pc3Npb25zLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gVGhlIGZ1bGwgcGF0aCB0byAuYXBrKHMpIHBhY2thZ2UuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBtYW5pZmVzdCByZXF1aXJlcyBJbnRlcm5ldCBhY2Nlc3MgcGVybWlzc2lvbi5cbiAqL1xubWFuaWZlc3RNZXRob2RzLmhhc0ludGVybmV0UGVybWlzc2lvbkZyb21NYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIGhhc0ludGVybmV0UGVybWlzc2lvbkZyb21NYW5pZmVzdCAoYXBwUGF0aCkge1xuICBsb2cuZGVidWcoYENoZWNraW5nIGlmICcke2FwcFBhdGh9JyByZXF1aXJlcyBpbnRlcm5ldCBhY2Nlc3MgcGVybWlzc2lvbiBpbiB0aGUgbWFuaWZlc3RgKTtcbiAgaWYgKGFwcFBhdGguZW5kc1dpdGgoQVBLU19FWFRFTlNJT04pKSB7XG4gICAgYXBwUGF0aCA9IGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBwUGF0aCk7XG4gIH1cblxuICBjb25zdCBhcGtSZWFkZXIgPSBhd2FpdCBBcGtSZWFkZXIub3BlbihhcHBQYXRoKTtcbiAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBhcGtSZWFkZXIucmVhZE1hbmlmZXN0KCk7XG4gIHJldHVybiAobWFuaWZlc3QudXNlc1Blcm1pc3Npb25zIHx8IFtdKS5zb21lKCh7bmFtZX0pID0+IG5hbWUgPT09ICdhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVQnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1hbmlmZXN0TWV0aG9kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxlQUFlLEdBQUcsRUFBdEI7O0FBZ0JBQSxlQUFlLENBQUNDLG9DQUFoQixHQUF1RCxlQUFlQSxvQ0FBZixDQUFxREMsT0FBckQsRUFBOEQ7RUFDbkgsSUFBSUEsT0FBTyxDQUFDQyxRQUFSLENBQWlCQyx1QkFBakIsQ0FBSixFQUFzQztJQUNwQ0YsT0FBTyxHQUFHLE1BQU0sS0FBS0csY0FBTCxDQUFvQkgsT0FBcEIsQ0FBaEI7RUFDRDs7RUFFRCxJQUFJSSxRQUFKOztFQUNBLElBQUk7SUFDRixNQUFNQyxTQUFTLEdBQUcsTUFBTUMseUJBQVVDLElBQVYsQ0FBZVAsT0FBZixDQUF4QjtJQUNBSSxRQUFRLEdBQUcsTUFBTUMsU0FBUyxDQUFDRyxZQUFWLEVBQWpCO0VBQ0QsQ0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtJQUNWQyxnQkFBSUMsS0FBSixDQUFVRixDQUFWOztJQUNBLE1BQU0sSUFBSUcsS0FBSixDQUFXLG1DQUFrQ1osT0FBUSxLQUEzQyxHQUNiLG9DQURHLENBQU47RUFFRDs7RUFDRCxNQUFNO0lBQUNhLEdBQUQ7SUFBTUM7RUFBTixJQUFrQiw0QkFBY1YsUUFBZCxDQUF4Qjs7RUFDQU0sZ0JBQUlLLElBQUosQ0FBVSxrQkFBaUJGLEdBQUksR0FBL0I7O0VBQ0FILGdCQUFJSyxJQUFKLENBQVUsd0JBQXVCRCxRQUFTLEdBQTFDOztFQUNBLE9BQU87SUFDTEUsVUFBVSxFQUFFSCxHQURQO0lB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
@@ -330,4 +330,4 @@ var _default = apkSigningMethods;
330
330
  exports.default = _default;require('source-map-support').install();
331
331
 
332
332
 
333
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90b29scy9hcGstc2lnbmluZy5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX1BSSVZBVEVfS0VZIiwicGF0aCIsInJlc29sdmUiLCJyb290RGlyIiwiREVGQVVMVF9DRVJUSUZJQ0FURSIsIkJVTkRMRVRPT0xfVFVUT1JJQUwiLCJBUEtTSUdORVJfVkVSSUZZX0ZBSUwiLCJTSEExIiwiU0hBMjU2IiwiU0hBNTEyIiwiTUQ1IiwiREVGQVVMVF9DRVJUX0hBU0giLCJKQVZBX1BST1BTX0lOSVRfRVJST1IiLCJTSUdORURfQVBQU19DQUNIRSIsIkxSVSIsIm1heCIsImFwa1NpZ25pbmdNZXRob2RzIiwiZXhlY3V0ZUFwa3NpZ25lciIsImFyZ3MiLCJhcGtTaWduZXJKYXIiLCJmdWxsQ21kIiwibG9nIiwiZGVidWciLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJzbGljZSIsImN3ZCIsImRpcm5hbWUiLCJ3aW5kb3dzVmVyYmF0aW1Bcmd1bWVudHMiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJuYW1lIiwic3RyZWFtIiwiXyIsInRyaW0iLCJzcGxpdCIsImZpbHRlciIsImxpbmUiLCJpbmNsdWRlcyIsImpvaW4iLCJzaWduV2l0aERlZmF1bHRDZXJ0IiwiYXBrIiwiZnMiLCJleGlzdHMiLCJFcnJvciIsImUiLCJtZXNzYWdlIiwic2lnbldpdGhDdXN0b21DZXJ0Iiwia2V5c3RvcmVQYXRoIiwia2V5QWxpYXMiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5UGFzc3dvcmQiLCJlcnIiLCJ3YXJuIiwiamFyc2lnbmVyIiwic2lnbiIsImFwcFBhdGgiLCJlbmRzV2l0aCIsIkFQS1NfRVhURU5TSU9OIiwidXNlS2V5c3RvcmUiLCJ6aXBBbGlnbkFwayIsImluaXRaaXBBbGlnbiIsImJpbmFyaWVzIiwiemlwYWxpZ24iLCJhY2Nlc3MiLCJfZnMiLCJXX09LIiwiYWxpZ25lZEFwayIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJtdiIsIm1rZGlycCIsInVubGluayIsImNoZWNrQXBrQ2VydCIsInBrZyIsIm9wdHMiLCJleHRuYW1lIiwiZXh0cmFjdEJhc2VBcGsiLCJoYXNoTWF0Y2hlcyIsImFwa3NpZ25lck91dHB1dCIsImV4cGVjdGVkSGFzaGVzIiwidmFsdWUiLCJ0b1BhaXJzIiwiUmVnRXhwIiwidGVzdCIsImJhc2VuYW1lIiwicmVxdWlyZURlZmF1bHRDZXJ0IiwiYXBwSGFzaCIsImhhc2giLCJoYXMiLCJvdXRwdXQiLCJleHBlY3RlZCIsImdldCIsImdldEtleXN0b3JlSGFzaCIsImhhc01hdGNoIiwiaW5mbyIsImlzU2lnbmVkIiwic2V0IiwiZXJyTXNnIiwia2V5dG9vbCIsInJlc3VsdCIsImhhc2hOYW1lIiwiaGFzaFJlIiwibWF0Y2giLCJleGVjIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwiaXNFbXB0eSIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsTUFBTUEsbUJBQW1CLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUMsZ0JBQWIsRUFBc0IsTUFBdEIsRUFBOEIsYUFBOUIsQ0FBNUI7O0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUdILGNBQUtDLE9BQUwsQ0FBYUMsZ0JBQWIsRUFBc0IsTUFBdEIsRUFBOEIsa0JBQTlCLENBQTVCOztBQUNBLE1BQU1FLG1CQUFtQixHQUFHLDhEQUE1QjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLGlCQUE5QjtBQUNBLE1BQU1DLElBQUksR0FBRyxNQUFiO0FBQ0EsTUFBTUMsTUFBTSxHQUFHLFFBQWY7QUFDQSxNQUFNQyxNQUFNLEdBQUcsUUFBZjtBQUNBLE1BQU1DLEdBQUcsR0FBRyxLQUFaO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUc7QUFDeEIsR0FBQ0gsTUFBRCxHQUFVO0FBRGMsQ0FBMUI7QUFHQSxNQUFNSSxxQkFBcUIsR0FBRyxrQ0FBOUI7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxJ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Z0JBQU9DLFNBQVA7QUFBNUIsS0FBcEIsQ0FBdkI7QUFDQSxVQUFNdUUsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsU0FBSyxNQUFNQyxRQUFYLElBQXVCLENBQUMvRixNQUFELEVBQVNELE1BQVQsRUFBaUJELElBQWpCLEVBQXVCRyxHQUF2QixDQUF2QixFQUFvRDtBQUNsRCxZQUFNK0YsTUFBTSxHQUFHLElBQUluQixNQUFKLENBQVksUUFBT2tCLFFBQVMsbUJBQTVCLEVBQWdELElBQWhELENBQWY7QUFDQSxZQUFNRSxLQUFLLEdBQUdELE1BQU0sQ0FBQ0UsSUFBUCxDQUFZbEYsTUFBWixDQUFkOztBQUNBLFVBQUksQ0FBQ2lGLEtBQUwsRUFBWTtBQUNWO0FBQ0Q7O0FBQ0RILE1BQUFBLE1BQU0sQ0FBQ0MsUUFBRCxDQUFOLEdBQW1CRSxLQUFLLENBQUMsQ0FBRCxDQUFMLENBQVNFLE9BQVQsQ0FBaUIsSUFBakIsRUFBdUIsRUFBdkIsRUFBMkJDLFdBQTNCLEVBQW5CO0FBQ0Q7O0FBQ0QsUUFBSTFFLGdCQUFFMkUsT0FBRixDQUFVUCxNQUFWLENBQUosRUFBdUI7QUFDckJsRixzQkFBSUMsS0FBSixDQUFVRyxNQUFWOztBQUNBLFlBQU0sSUFBSXFCLEtBQUosQ0FBVSxxREFBVixDQUFOO0FBQ0Q7O0FBQ0R6QixvQkFBSUMsS0FBSixDQUFXLGtCQUFpQnlGLElBQUksQ0FBQ0MsU0FBTCxDQUFlVCxNQUFmLENBQXVCLEVBQW5EOztBQUNBLFdBQU9BLE1BQVA7QUFDRCxHQWpCRCxDQWlCRSxPQUFPeEQsQ0FBUCxFQUFVO0FBQ1YsVUFBTSxJQUFJRCxLQUFKLENBQVcsMkJBQTBCLEtBQUtJLFlBQWEsY0FBN0MsR0FDYixtQkFBa0JILENBQUMsQ0FBQ3JCLE1BQUYsSUFBWXFCLENBQUMsQ0FBQ0MsT0FBUSxFQURyQyxDQUFOO0FBRUQ7QUFDRixDQW5DRDs7ZUFxQ2VoQyxpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgX2ZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyB0ZW1wRGlyLCBzeXN0ZW0sIG1rZGlycCwgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHtcbiAgZ2V0SmF2YUZvck9zLCBnZXRBcGtzaWduZXJGb3JPcywgZ2V0SmF2YUhvbWUsXG4gIHJvb3REaXIsIEFQS1NfRVhURU5TSU9OLCB1bnNpZ25BcGssXG59IGZyb20gJy4uL2hlbHBlcnMuanMnO1xuXG5jb25zdCBERUZBVUxUX1BSSVZBVEVfS0VZID0gcGF0aC5yZXNvbHZlKHJvb3REaXIsICdrZXlzJywgJ3Rlc3RrZXkucGs4Jyk7XG5jb25zdCBERUZBVUxUX0NFUlRJRklDQVRFID0gcGF0aC5yZXNvbHZlKHJvb3REaXIsICdrZXlzJywgJ3Rlc3RrZXkueDUwOS5wZW0nKTtcbmNvbnN0IEJVTkRMRVRPT0xfVFVUT1JJQUwgPSAnaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vc3R1ZGlvL2NvbW1hbmQtbGluZS9idW5kbGV0b29sJztcbmNvbnN0IEFQS1NJR05FUl9WRVJJRllfRkFJTCA9ICdET0VTIE5PVCBWRVJJRlknO1xuY29uc3QgU0hBMSA9ICdzaGExJztcbmNvbnN0IFNIQTI1NiA9ICdzaGEyNTYnO1xuY29uc3QgU0hBNTEyID0gJ3NoYTUxMic7XG5jb25zdCBNRDUgPSAnbWQ1JztcbmNvbnN0IERFRkFVTFRfQ0VSVF9IQVNIID0ge1xuICBbU0hBMjU2XTogJ2E0MGRhODBhNTlkMTcwY2FhOTUwY2YxNWMxOGM0NTRkNDdhMzliMjY5ODlkOGI2NDBlY2Q3NDViYTcxYmY1ZGMnXG59O1xuY29uc3QgSkFWQV9QUk9QU19JTklUX0VSUk9SID0gJ2phdmEubGFuZy5FcnJvcjogUHJvcGVydGllcyBpbml0JztcbmNvbnN0IFNJR05FRF9BUFBTX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogMzAsXG59KTtcblxuXG5jb25zdCBhcGtTaWduaW5nTWV0aG9kcyA9IHt9O1xuXG4vKipcbiAqIEV4ZWN1dGUgYXBrc2lnbmVyIHV0aWxpdHkgd2l0aCBnaXZlbiBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHs/QXJyYXk8U3RyaW5nPn0gYXJncyAtIFRoZSBsaXN0IG9mIHRvb2wgYXJndW1lbnRzLlxuICogQHJldHVybiB7c3RyaW5nfSAtIENvbW1hbmQgc3Rkb3V0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYXBrc2lnbmVyIGJpbmFyeSBpcyBub3QgcHJlc2VudCBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW1cbiAqICAgICAgICAgICAgICAgICBvciB0aGUgcmV0dXJuIGNvZGUgaXMgbm90IGVxdWFsIHRvIHplcm8uXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLmV4ZWN1dGVBcGtzaWduZXIgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlQXBrc2lnbmVyIChhcmdzID0gW10pIHtcbiAgY29uc3QgYXBrU2lnbmVySmFyID0gYXdhaXQgZ2V0QXBrc2lnbmVyRm9yT3ModGhpcyk7XG4gIGNvbnN0IGZ1bGxDbWQgPSBbXG4gICAgYXdhaXQgZ2V0SmF2YUZvck9zKCksICctWG14MTAyNE0nLCAnLVhzczFtJyxcbiAgICAnLWphcicsIGFwa1NpZ25lckphcixcbiAgICAuLi5hcmdzXG4gIF07XG4gIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgYXBrc2lnbmVyOiAke3V0aWwucXVvdGUoZnVsbENtZCl9YCk7XG4gIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBzcGVjaWZ5IENXRCBleHBsaWNpdGx5OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0NzI0I2lzc3VlY29tbWVudC03Mzc0NDY3MTVcbiAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IGV4ZWMoZnVsbENtZFswXSwgZnVsbENtZC5zbGljZSgxKSwge1xuICAgIGN3ZDogcGF0aC5kaXJuYW1lKGFwa1NpZ25lckphciksIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogc3lzdGVtLmlzV2luZG93cygpXG4gIH0pO1xuICBmb3IgKGxldCBbbmFtZSwgc3RyZWFtXSBvZiBbWydzdGRvdXQnLCBzdGRvdXRdLCBbJ3N0ZGVycicsIHN0ZGVycl1dKSB7XG4gICAgaWYgKCFfLnRyaW0oc3RyZWFtKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09ICdzdGRvdXQnKSB7XG4gICAgICAvLyBNYWtlIHRoZSBvdXRwdXQgbGVzcyB0YWxrYXRpdmVcbiAgICAgIHN0cmVhbSA9IHN0cmVhbS5zcGxpdCgnXFxuJylcbiAgICAgICAgLmZpbHRlcigobGluZSkgPT4gIWxpbmUuaW5jbHVkZXMoJ1dBUk5JTkc6JykpXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBhcGtzaWduZXIgJHtuYW1lfTogJHtzdHJlYW19YCk7XG4gIH1cbiAgcmV0dXJuIHN0ZG91dDtcbn07XG5cbi8qKlxuICogKFJlKXNpZ24gdGhlIGdpdmVuIGFwayBmaWxlIG9uIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSB3aXRoIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcGsgLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCBhcGsgZmlsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzaWduaW5nIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5zaWduV2l0aERlZmF1bHRDZXJ0ID0gYXN5bmMgZnVuY3Rpb24gc2lnbldpdGhEZWZhdWx0Q2VydCAoYXBrKSB7XG4gIGxvZy5kZWJ1ZyhgU2lnbmluZyAnJHthcGt9JyB3aXRoIGRlZmF1bHQgY2VydGApO1xuICBpZiAoIShhd2FpdCBmcy5leGlzdHMoYXBrKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7YXBrfSBmaWxlIGRvZXNuJ3QgZXhpc3QuYCk7XG4gIH1cblxuICBjb25zdCBhcmdzID0gW1xuICAgICdzaWduJyxcbiAgICAnLS1rZXknLCBERUZBVUxUX1BSSVZBVEVfS0VZLFxuICAgICctLWNlcnQnLCBERUZBVUxUX0NFUlRJRklDQVRFLFxuICAgIGFwayxcbiAgXTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBcGtzaWduZXIoYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBzaWduICcke2Fwa30nIHdpdGggdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUuc3Rkb3V0IHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiAoUmUpc2lnbiB0aGUgZ2l2ZW4gYXBrIGZpbGUgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtIHdpdGggYSBjdXN0b20gY2VydGlmaWNhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwayAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIGFwayBmaWxlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNpZ25pbmcgZmFpbHMuXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLnNpZ25XaXRoQ3VzdG9tQ2VydCA9IGFzeW5jIGZ1bmN0aW9uIHNpZ25XaXRoQ3VzdG9tQ2VydCAoYXBrKSB7XG4gIGxvZy5kZWJ1ZyhgU2lnbmluZyAnJHthcGt9JyB3aXRoIGN1c3RvbSBjZXJ0YCk7XG4gIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLmtleXN0b3JlUGF0aCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBLZXlzdG9yZTogJHt0aGlzLmtleXN0b3JlUGF0aH0gZG9lc24ndCBleGlzdC5gKTtcbiAgfVxuICBpZiAoIShhd2FpdCBmcy5leGlzdHMoYXBrKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2Fwa30nIGRvZXNuJ3QgZXhpc3QuYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUFwa3NpZ25lcihbJ3NpZ24nLFxuICAgICAgJy0ta3MnLCB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAgICctLWtzLWtleS1hbGlhcycsIHRoaXMua2V5QWxpYXMsXG4gICAgICAnLS1rcy1wYXNzJywgYHBhc3M6JHt0aGlzLmtleXN0b3JlUGFzc3dvcmR9YCxcbiAgICAgICctLWtleS1wYXNzJywgYHBhc3M6JHt0aGlzLmtleVBhc3N3b3JkfWAsXG4gICAgICBhcGtdKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oYENhbm5vdCB1c2UgYXBrc2lnbmVyIHRvb2wgZm9yIHNpZ25pbmcuIERlZmF1bHRpbmcgdG8gamFyc2lnbmVyLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlcnIuc3RkZXJyIHx8IGVyci5zdGRvdXQgfHwgZXJyLm1lc3NhZ2V9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhd2FpdCB1bnNpZ25BcGsoYXBrKSkge1xuICAgICAgICBsb2cuZGVidWcoYCcke2Fwa30nIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1bnNpZ25lZGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGAnJHthcGt9JyBkb2VzIG5vdCBuZWVkIHRvIGJlIHVuc2lnbmVkYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBqYXJzaWduZXIgPSBwYXRoLnJlc29sdmUoYXdhaXQgZ2V0SmF2YUhvbWUoKSwgJ2JpbicsXG4gICAgICAgIGBqYXJzaWduZXIke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWApO1xuICAgICAgY29uc3QgZnVsbENtZCA9IFtqYXJzaWduZXIsXG4gICAgICAgICctc2lnYWxnJywgJ01ENXdpdGhSU0EnLFxuICAgICAgICAnLWRpZ2VzdGFsZycsICdTSEExJyxcbiAgICAgICAgJy1rZXlzdG9yZScsIHRoaXMua2V5c3RvcmVQYXRoLFxuICAgICAgICAnLXN0b3JlcGFzcycsIHRoaXMua2V5c3RvcmVQYXNzd29yZCxcbiAgICAgICAgJy1rZXlwYXNzJywgdGhpcy5rZXlQYXNzd29yZCxcbiAgICAgICAgYXBrLCB0aGlzLmtleUFsaWFzXTtcbiAgICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgamFyc2lnbmVyOiAke3V0aWwucXVvdGUoZnVsbENtZCl9YCk7XG4gICAgICBhd2FpdCBleGVjKGZ1bGxDbWRbMF0sIGZ1bGxDbWQuc2xpY2UoMSksIHsgd2luZG93c1ZlcmJhdGltQXJndW1lbnRzOiBzeXN0ZW0uaXNXaW5kb3dzKCkgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3Qgc2lnbiB3aXRoIGN1c3RvbSBjZXJ0aWZpY2F0ZS4gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIChSZSlzaWduIHRoZSBnaXZlbiBhcGsgZmlsZSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0gd2l0aCBlaXRoZXJcbiAqIGN1c3RvbSBvciBkZWZhdWx0IGNlcnRpZmljYXRlIGJhc2VkIG9uIF90aGlzLnVzZUtleXN0b3JlXyBwcm9wZXJ0eSB2YWx1ZVxuICogYW5kIFppcC1hbGlnbnMgaXQgYWZ0ZXIgc2lnbmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIC5hcGsocykgZmlsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzaWduaW5nIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5zaWduID0gYXN5bmMgZnVuY3Rpb24gc2lnbiAoYXBwUGF0aCkge1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBsZXQgbWVzc2FnZSA9ICdTaWduaW5nIG9mIC5hcGtzLWZpbGVzIGlzIG5vdCBzdXBwb3J0ZWQuICc7XG4gICAgaWYgKHRoaXMudXNlS2V5c3RvcmUpIHtcbiAgICAgIG1lc3NhZ2UgKz0gJ0NvbnNpZGVyIG1hbnVhbCBhcHBsaWNhdGlvbiBidW5kbGUgc2lnbmluZyB3aXRoIHRoZSBjdXN0b20ga2V5c3RvcmUgJyArXG4gICAgICAgIGBsaWtlIGl0IGlzIGRlc2NyaWJlZCBhdCAke0JVTkRMRVRPT0xfVFVUT1JJQUx9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSArPSBgQ29uc2lkZXIgbWFudWFsIGFwcGxpY2F0aW9uIGJ1bmRsZSBzaWduaW5nIHdpdGggdGhlIGtleSBhdCAnJHtERUZBVUxUX1BSSVZBVEVfS0VZfScgYCArXG4gICAgICAgIGBhbmQgdGhlIGNlcnRpZmljYXRlIGF0ICcke0RFRkFVTFRfQ0VSVElGSUNBVEV9Jy4gUmVhZCAke0JVTkRMRVRPT0xfVFVUT1JJQUx9IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICB9XG4gICAgbG9nLndhcm4obWVzc2FnZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIGFwcGx5IHppcGFsaWduIG9ubHkgYmVmb3JlIHNpZ25pbmdcbiAgLy8gaWYgYXBrc2lnbmVyIGlzIHVzZWRcbiAgYXdhaXQgdGhpcy56aXBBbGlnbkFwayhhcHBQYXRoKTtcblxuICBpZiAodGhpcy51c2VLZXlzdG9yZSkge1xuICAgIGF3YWl0IHRoaXMuc2lnbldpdGhDdXN0b21DZXJ0KGFwcFBhdGgpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IHRoaXMuc2lnbldpdGhEZWZhdWx0Q2VydChhcHBQYXRoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBQZXJmb3JtIHppcC1hbGlnbmluZyB0byB0aGUgZ2l2ZW4gbG9jYWwgYXBrIGZpbGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwayAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIGFwayBmaWxlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFwayBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgYWxpZ25lZFxuICogb3IgZmFsc2UgaWYgdGhlIGFwayBoYXMgYmVlbiBhbHJlYWR5IGFsaWduZWQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgemlwLWFsaWduIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy56aXBBbGlnbkFwayA9IGFzeW5jIGZ1bmN0aW9uIHppcEFsaWduQXBrIChhcGspIHtcbiAgYXdhaXQgdGhpcy5pbml0WmlwQWxpZ24oKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjKHRoaXMuYmluYXJpZXMuemlwYWxpZ24sIFsnLWMnLCAnNCcsIGFwa10pO1xuICAgIGxvZy5kZWJ1ZyhgJHthcGt9JyBpcyBhbHJlYWR5IHppcC1hbGlnbmVkLiBEb2luZyBub3RoaW5nYCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGAnJHthcGt9JyBpcyBub3QgemlwLWFsaWduZWQuIEFsaWduaW5nYCk7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5hY2Nlc3MoYXBrLCBfZnMuV19PSyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke2Fwa30nIGlzIG5vdCB3cml0ZWFibGUuIGAgK1xuICAgICAgYFBsZWFzZSBncmFudCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGlzIGZpbGUgb3IgdG8gaXRzIHBhcmVudCBmb2xkZXIgJyR7cGF0aC5kaXJuYW1lKGFwayl9JyBgICtcbiAgICAgIGBmb3IgdGhlIEFwcGl1bSBwcm9jZXNzLCBzbyBpdCBjYW4gemlwLWFsaWduIHRoZSBmaWxlYCk7XG4gIH1cbiAgY29uc3QgYWxpZ25lZEFwayA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnYXBwaXVtJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgYXdhaXQgbWtkaXJwKHBhdGguZGlybmFtZShhbGlnbmVkQXBrKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLnppcGFsaWduLCBbJy1mJywgJzQnLCBhcGssIGFsaWduZWRBcGtdKTtcbiAgICBhd2FpdCBmcy5tdihhbGlnbmVkQXBrLCBhcGssIHsgbWtkaXJwOiB0cnVlIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhbGlnbmVkQXBrKSkge1xuICAgICAgYXdhaXQgZnMudW5saW5rKGFsaWduZWRBcGspO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYHppcEFsaWduQXBrIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRDaGVja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVxdWlyZURlZmF1bHRDZXJ0IFt0cnVlXSBXaGV0aGVyIHRvIHJlcXVpcmUgdGhhdCB0aGUgZGVzdGluYXRpb24gQVBLXG4gKiBpcyBzaWduZWQgd2l0aCB0aGUgZGVmYXVsdCBBcHBpdW0gY2VydGlmaWNhdGUgb3IgYW55IHZhbGlkIGNlcnRpZmljYXRlLiBUaGlzIG9wdGlvblxuICogb25seSBoYXMgZWZmZWN0IGlmIGB1c2VLZXlzdG9yZWAgcHJvcGVydHkgaXMgdW5zZXQuXG4gKi9cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgYXBwIGlzIGFscmVhZHkgc2lnbmVkIHdpdGggdGhlIGRlZmF1bHQgQXBwaXVtIGNlcnRpZmljYXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgbG9jYWwgLmFwayhzKSBmaWxlLlxuICogQHBhcmFtIHtzdHJpbmd9IHBnayAtIFRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uIHBhY2thZ2UuXG4gKiBAcGFyYW0ge0NlcnRDaGVja09wdGlvbnN9IG9wdHMgLSBDZXJ0aWZpY2F0ZSBjaGVja2luZyBvcHRpb25zXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGdpdmVuIGFwcGxpY2F0aW9uIGlzIGFscmVhZHkgc2lnbmVkLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5jaGVja0Fwa0NlcnQgPSBhc3luYyBmdW5jdGlvbiBjaGVja0Fwa0NlcnQgKGFwcFBhdGgsIHBrZywgb3B0cyA9IHt9KSB7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgYXBwIGNlcnQgZm9yICR7YXBwUGF0aH1gKTtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoYXBwUGF0aCkpIHtcbiAgICBsb2cuZGVidWcoYCcke2FwcFBhdGh9JyBkb2VzIG5vdCBleGlzdGApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChwYXRoLmV4dG5hbWUoYXBwUGF0aCkgPT09IEFQS1NfRVhURU5TSU9OKSB7XG4gICAgYXBwUGF0aCA9IGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBwUGF0aCk7XG4gIH1cblxuICBjb25zdCBoYXNoTWF0Y2hlcyA9IChhcGtzaWduZXJPdXRwdXQsIGV4cGVjdGVkSGFzaGVzKSA9PiB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhleHBlY3RlZEhhc2hlcykpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKGBkaWdlc3Q6XFxcXHMrJHt2YWx1ZX1cXFxcYmAsICdpJykudGVzdChhcGtzaWduZXJPdXRwdXQpKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgJHtuYW1lfSBoYXNoIGRpZCBtYXRjaCBmb3IgJyR7cGF0aC5iYXNlbmFtZShhcHBQYXRoKX0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgY29uc3Qge1xuICAgIHJlcXVpcmVEZWZhdWx0Q2VydCA9IHRydWUsXG4gIH0gPSBvcHRzO1xuXG4gIGNvbnN0IGFwcEhhc2ggPSBhd2FpdCBmcy5oYXNoKGFwcFBhdGgpO1xuICBpZiAoU0lHTkVEX0FQUFNfQ0FDSEUuaGFzKGFwcEhhc2gpKSB7XG4gICAgbG9nLmRlYnVnKGBVc2luZyB0aGUgcHJldmlvdXNseSBjYWNoZWQgc2lnbmF0dXJlIGVudHJ5IGZvciAnJHtwYXRoLmJhc2VuYW1lKGFwcFBhdGgpfSdgKTtcbiAgICBjb25zdCB7a2V5c3RvcmVQYXRoLCBvdXRwdXQsIGV4cGVjdGVkfSA9IFNJR05FRF9BUFBTX0NBQ0hFLmdldChhcHBIYXNoKTtcbiAgICBpZiAodGhpcy51c2VLZXlzdG9yZSAmJiB0aGlzLmtleXN0b3JlUGF0aCA9PT0ga2V5c3RvcmVQYXRoIHx8ICF0aGlzLnVzZUtleXN0b3JlKSB7XG4gICAgICByZXR1cm4gKCF0aGlzLnVzZUtleXN0b3JlICYmICFyZXF1aXJlRGVmYXVsdENlcnQpIHx8IGhhc2hNYXRjaGVzKG91dHB1dCwgZXhwZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4cGVjdGVkID0gdGhpcy51c2VLZXlzdG9yZVxuICAgID8gYXdhaXQgdGhpcy5nZXRLZXlzdG9yZUhhc2goYXBwUGF0aCwgcGtnKVxuICAgIDogREVGQVVMVF9DRVJUX0hBU0g7XG4gIHRyeSB7XG4gICAgYXdhaXQgZ2V0QXBrc2lnbmVyRm9yT3ModGhpcyk7XG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgdGhpcy5leGVjdXRlQXBrc2lnbmVyKFsndmVyaWZ5JywgJy0tcHJpbnQtY2VydHMnLCBhcHBQYXRoXSk7XG4gICAgY29uc3QgaGFzTWF0Y2ggPSBoYXNoTWF0Y2hlcyhvdXRwdXQsIGV4cGVjdGVkKTtcbiAgICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGxvZy5pbmZvKGAnJHthcHBQYXRofScgaXMgc2lnbmVkIHdpdGggdGhlIGAgK1xuICAgICAgICBgJHt0aGlzLnVzZUtleXN0b3JlID8gJ2tleXN0b3JlJyA6ICdkZWZhdWx0J30gY2VydGlmaWNhdGVgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oYCcke2FwcFBhdGh9JyBpcyBzaWduZWQgd2l0aCBhIGAgK1xuICAgICAgICBgbm9uLSR7dGhpcy51c2VLZXlzdG9yZSA/ICdrZXlzdG9yZScgOiAnZGVmYXVsdCd9IGNlcnRpZmljYXRlYCk7XG4gICAgfVxuICAgIGNvbnN0IGlzU2lnbmVkID0gKCF0aGlzLnVzZUtleXN0b3JlICYmICFyZXF1aXJlRGVmYXVsdENlcnQpIHx8IGhhc01hdGNoO1xuICAgIGlmIChpc1NpZ25lZCkge1xuICAgICAgU0lHTkVEX0FQUFNfQ0FDSEUuc2V0KGFwcEhhc2gsIHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBleHBlY3RlZCxcbiAgICAgICAga2V5c3RvcmVQYXRoOiB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXNTaWduZWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIG5vIHNpZ25hdHVyZVxuICAgIGlmIChfLmluY2x1ZGVzKGVyci5zdGRlcnIsIEFQS1NJR05FUl9WRVJJRllfRkFJTCkpIHtcbiAgICAgIGxvZy5pbmZvKGAnJHthcHBQYXRofScgaXMgbm90IHNpZ25lZGApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBlcnJNc2cgPSBlcnIuc3RkZXJyIHx8IGVyci5zdGRvdXQgfHwgZXJyLm1lc3NhZ2U7XG4gICAgaWYgKF8uaW5jbHVkZXMoZXJyTXNnLCBKQVZBX1BST1BTX0lOSVRfRVJST1IpKSB7XG4gICAgICAvLyBUaGlzIGVycm9yIHBvcHMgdXAgcmFuZG9tbHkgYW5kIHdlIGFyZSBub3QgcXVpdGUgc3VyZSB3aHkuXG4gICAgICAvLyBNeSBndWVzcyAtIGEgcmFjZSBjb25kaXRpb24gaW4gamF2YSB2bSBpbml0aWFsaXphdGlvbi5cbiAgICAgIC8vIE5ldmVydGhlbGVzcywgbGV0cyBtYWtlIEFwcGl1bSB0byBiZWxpZXZlIHRoZSBmaWxlIGlzIGFscmVhZHkgc2lnbmVkLFxuICAgICAgLy8gYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGZvciA5OSUgb2YgVUlBdXRvbWF0b3IyLWJhc2VkXG4gICAgICAvLyB0ZXN0cywgd2hlcmUgd2UgcHJlc2lnbiBzZXJ2ZXIgYmluYXJpZXMgd2hpbGUgcHVibGlzaGluZyB0aGVpciBOUE0gbW9kdWxlLlxuICAgICAgLy8gSWYgdGhlc2UgYXJlIG5vdCBzaWduZWQsIGUuZy4gaW4gY2FzZSBvZiBFc3ByZXNzbywgdGhlbiB0aGUgbmV4dCBzdGVwKHMpXG4gICAgICAvLyB3b3VsZCBhbnl3YXkgZmFpbC5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9pc3N1ZXMvMTQ3MjQgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGxvZy53YXJuKGVyck1zZyk7XG4gICAgICBsb2cud2FybihgQXNzdW1pbmcgJyR7YXBwUGF0aH0nIGlzIGFscmVhZHkgc2lnbmVkIGFuZCBjb250aW51aW5nIGFueXdheWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHZlcmlmeSB0aGUgc2lnbmF0dXJlIG9mICcke2FwcFBhdGh9Jy4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyTXNnfWApO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEtleXN0b3JlSGFzaFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZDUgdGhlIG1kNSBoYXNoIHZhbHVlIG9mIHRoZSBrZXlzdG9yZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzaGExIHRoZSBzaGExIGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNoYTI1NiB0aGUgc2hhMjU2IGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNoYTUxMiB0aGUgc2hhNTEyIGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgdGhlIGhhc2ggb2YgdGhlIGdpdmVuIGtleXN0b3JlLlxuICpcbiAqIEByZXR1cm4ge0tleXN0b3JlSGFzaH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBnZXR0aW5nIGtleXN0b3JlIGhhc2ggZmFpbHMuXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLmdldEtleXN0b3JlSGFzaCA9IGFzeW5jIGZ1bmN0aW9uIGdldEtleXN0b3JlSGFzaCAoKSB7XG4gIGxvZy5kZWJ1ZyhgR2V0dGluZyBoYXNoIG9mIHRoZSAnJHt0aGlzLmtleXN0b3JlUGF0aH0nIGtleXN0b3JlYCk7XG4gIGNvbnN0IGtleXRvb2wgPSBwYXRoLnJlc29sdmUoYXdhaXQgZ2V0SmF2YUhvbWUoKSwgJ2JpbicsXG4gICAgYGtleXRvb2wke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWApO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhrZXl0b29sKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGtleXRvb2wgdXRpbGl0eSBjYW5ub3QgYmUgZm91bmQgYXQgJyR7a2V5dG9vbH0nYCk7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtcbiAgICAnLXYnLCAnLWxpc3QnLFxuICAgICctYWxpYXMnLCB0aGlzLmtleUFsaWFzLFxuICAgICcta2V5c3RvcmUnLCB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAnLXN0b3JlcGFzcycsIHRoaXMua2V5c3RvcmVQYXNzd29yZFxuICBdO1xuICBsb2cuaW5mbyhgUnVubmluZyAnJHtrZXl0b29sfScgd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoa2V5dG9vbCwgYXJncywgeyB3aW5kb3dzVmVyYmF0aW1Bcmd1bWVudHM6IHN5c3RlbS5pc1dpbmRvd3MoKSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGhhc2hOYW1lIG9mIFtTSEE1MTIsIFNIQTI1NiwgU0hBMSwgTUQ1XSkge1xuICAgICAgY29uc3QgaGFzaFJlID0gbmV3IFJlZ0V4cChgXlxcXFxzKiR7aGFzaE5hbWV9OlxcXFxzKihbYS1mMC05Ol0rKWAsICdtaScpO1xuICAgICAgY29uc3QgbWF0Y2ggPSBoYXNoUmUuZXhlYyhzdGRvdXQpO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdFtoYXNoTmFtZV0gPSBtYXRjaFsxXS5yZXBsYWNlKC86L2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHJlc3VsdCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhzdGRvdXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGhhc2ggdmFsdWUgZnJvbSB0aGUga2V5dG9vbCBvdXRwdXQnKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBLZXlzdG9yZSBoYXNoOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgaGFzaCBvZiAnJHt0aGlzLmtleXN0b3JlUGF0aH0nIGtleXN0b3JlLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFwa1NpZ25pbmdNZXRob2RzO1xuIl0sImZpbGUiOiJsaWIvdG9vbHMvYXBrLXNpZ25pbmcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
333
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2Fway1zaWduaW5nLmpzIiwibmFtZXMiOlsiREVGQVVMVF9QUklWQVRFX0tFWSIsInBhdGgiLCJyZXNvbHZlIiwicm9vdERpciIsIkRFRkFVTFRfQ0VSVElGSUNBVEUiLCJCVU5ETEVUT09MX1RVVE9SSUFMIiwiQVBLU0lHTkVSX1ZFUklGWV9GQUlMIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIk1ENSIsIkRFRkFVTFRfQ0VSVF9IQVNIIiwiSkFWQV9QUk9QU19JTklUX0VSUk9SIiwiU0lHTkVEX0FQUFNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJhcGtTaWduaW5nTWV0aG9kcyIsImV4ZWN1dGVBcGtzaWduZXIiLCJhcmdzIiwiYXBrU2lnbmVySmFyIiwiZnVsbENtZCIsImxvZyIsImRlYnVnIiwidXRpbCIsInF1b3RlIiwic3Rkb3V0Iiwic3RkZXJyIiwic2xpY2UiLCJjd2QiLCJkaXJuYW1lIiwid2luZG93c1ZlcmJhdGltQXJndW1lbnRzIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwibmFtZSIsInN0cmVhbSIsIl8iLCJ0cmltIiwic3BsaXQiLCJmaWx0ZXIiLCJsaW5lIiwiaW5jbHVkZXMiLCJqb2luIiwic2lnbldpdGhEZWZhdWx0Q2VydCIsImFwayIsImZzIiwiZXhpc3RzIiwiRXJyb3IiLCJlIiwibWVzc2FnZSIsInNpZ25XaXRoQ3VzdG9tQ2VydCIsImtleXN0b3JlUGF0aCIsImtleUFsaWFzIiwia2V5c3RvcmVQYXNzd29yZCIsImtleVBhc3N3b3JkIiwiZXJyIiwid2FybiIsImphcnNpZ25lciIsInNpZ24iLCJhcHBQYXRoIiwiZW5kc1dpdGgiLCJBUEtTX0VYVEVOU0lPTiIsInVzZUtleXN0b3JlIiwiemlwQWxpZ25BcGsiLCJpbml0WmlwQWxpZ24iLCJiaW5hcmllcyIsInppcGFsaWduIiwiYWNjZXNzIiwiX2ZzIiwiV19PSyIsImFsaWduZWRBcGsiLCJ0ZW1wRGlyIiwicHJlZml4Iiwic3VmZml4IiwibXYiLCJta2RpcnAiLCJ1bmxpbmsiLCJjaGVja0Fwa0NlcnQiLCJwa2ciLCJvcHRzIiwiZXh0bmFtZSIsImV4dHJhY3RCYXNlQXBrIiwiaGFzaE1hdGNoZXMiLCJhcGtzaWduZXJPdXRwdXQiLCJleHBlY3RlZEhhc2hlcyIsInZhbHVlIiwidG9QYWlycyIsIlJlZ0V4cCIsInRlc3QiLCJiYXNlbmFtZSIsInJlcXVpcmVEZWZhdWx0Q2VydCIsImFwcEhhc2giLCJoYXNoIiwiaGFzIiwib3V0cHV0IiwiZXhwZWN0ZWQiLCJnZXQiLCJnZXRLZXlzdG9yZUhhc2giLCJoYXNNYXRjaCIsImluZm8iLCJpc1NpZ25lZCIsInNldCIsImVyck1zZyIsImtleXRvb2wiLCJyZXN1bHQiLCJoYXNoTmFtZSIsImhhc2hSZSIsIm1hdGNoIiwiZXhlYyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsImlzRW1wdHkiLCJKU09OIiwic3RyaW5naWZ5Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL3Rvb2xzL2Fway1zaWduaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgX2ZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyB0ZW1wRGlyLCBzeXN0ZW0sIG1rZGlycCwgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHtcbiAgZ2V0SmF2YUZvck9zLCBnZXRBcGtzaWduZXJGb3JPcywgZ2V0SmF2YUhvbWUsXG4gIHJvb3REaXIsIEFQS1NfRVhURU5TSU9OLCB1bnNpZ25BcGssXG59IGZyb20gJy4uL2hlbHBlcnMuanMnO1xuXG5jb25zdCBERUZBVUxUX1BSSVZBVEVfS0VZID0gcGF0aC5yZXNvbHZlKHJvb3REaXIsICdrZXlzJywgJ3Rlc3RrZXkucGs4Jyk7XG5jb25zdCBERUZBVUxUX0NFUlRJRklDQVRFID0gcGF0aC5yZXNvbHZlKHJvb3REaXIsICdrZXlzJywgJ3Rlc3RrZXkueDUwOS5wZW0nKTtcbmNvbnN0IEJVTkRMRVRPT0xfVFVUT1JJQUwgPSAnaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vc3R1ZGlvL2NvbW1hbmQtbGluZS9idW5kbGV0b29sJztcbmNvbnN0IEFQS1NJR05FUl9WRVJJRllfRkFJTCA9ICdET0VTIE5PVCBWRVJJRlknO1xuY29uc3QgU0hBMSA9ICdzaGExJztcbmNvbnN0IFNIQTI1NiA9ICdzaGEyNTYnO1xuY29uc3QgU0hBNTEyID0gJ3NoYTUxMic7XG5jb25zdCBNRDUgPSAnbWQ1JztcbmNvbnN0IERFRkFVTFRfQ0VSVF9IQVNIID0ge1xuICBbU0hBMjU2XTogJ2E0MGRhODBhNTlkMTcwY2FhOTUwY2YxNWMxOGM0NTRkNDdhMzliMjY5ODlkOGI2NDBlY2Q3NDViYTcxYmY1ZGMnXG59O1xuY29uc3QgSkFWQV9QUk9QU19JTklUX0VSUk9SID0gJ2phdmEubGFuZy5FcnJvcjogUHJvcGVydGllcyBpbml0JztcbmNvbnN0IFNJR05FRF9BUFBTX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogMzAsXG59KTtcblxuXG5jb25zdCBhcGtTaWduaW5nTWV0aG9kcyA9IHt9O1xuXG4vKipcbiAqIEV4ZWN1dGUgYXBrc2lnbmVyIHV0aWxpdHkgd2l0aCBnaXZlbiBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHs/QXJyYXk8U3RyaW5nPn0gYXJncyAtIFRoZSBsaXN0IG9mIHRvb2wgYXJndW1lbnRzLlxuICogQHJldHVybiB7c3RyaW5nfSAtIENvbW1hbmQgc3Rkb3V0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYXBrc2lnbmVyIGJpbmFyeSBpcyBub3QgcHJlc2VudCBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW1cbiAqICAgICAgICAgICAgICAgICBvciB0aGUgcmV0dXJuIGNvZGUgaXMgbm90IGVxdWFsIHRvIHplcm8uXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLmV4ZWN1dGVBcGtzaWduZXIgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlQXBrc2lnbmVyIChhcmdzID0gW10pIHtcbiAgY29uc3QgYXBrU2lnbmVySmFyID0gYXdhaXQgZ2V0QXBrc2lnbmVyRm9yT3ModGhpcyk7XG4gIGNvbnN0IGZ1bGxDbWQgPSBbXG4gICAgYXdhaXQgZ2V0SmF2YUZvck9zKCksICctWG14MTAyNE0nLCAnLVhzczFtJyxcbiAgICAnLWphcicsIGFwa1NpZ25lckphcixcbiAgICAuLi5hcmdzXG4gIF07XG4gIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgYXBrc2lnbmVyOiAke3V0aWwucXVvdGUoZnVsbENtZCl9YCk7XG4gIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBzcGVjaWZ5IENXRCBleHBsaWNpdGx5OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0NzI0I2lzc3VlY29tbWVudC03Mzc0NDY3MTVcbiAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IGV4ZWMoZnVsbENtZFswXSwgZnVsbENtZC5zbGljZSgxKSwge1xuICAgIGN3ZDogcGF0aC5kaXJuYW1lKGFwa1NpZ25lckphciksIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogc3lzdGVtLmlzV2luZG93cygpXG4gIH0pO1xuICBmb3IgKGxldCBbbmFtZSwgc3RyZWFtXSBvZiBbWydzdGRvdXQnLCBzdGRvdXRdLCBbJ3N0ZGVycicsIHN0ZGVycl1dKSB7XG4gICAgaWYgKCFfLnRyaW0oc3RyZWFtKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09ICdzdGRvdXQnKSB7XG4gICAgICAvLyBNYWtlIHRoZSBvdXRwdXQgbGVzcyB0YWxrYXRpdmVcbiAgICAgIHN0cmVhbSA9IHN0cmVhbS5zcGxpdCgnXFxuJylcbiAgICAgICAgLmZpbHRlcigobGluZSkgPT4gIWxpbmUuaW5jbHVkZXMoJ1dBUk5JTkc6JykpXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBhcGtzaWduZXIgJHtuYW1lfTogJHtzdHJlYW19YCk7XG4gIH1cbiAgcmV0dXJuIHN0ZG91dDtcbn07XG5cbi8qKlxuICogKFJlKXNpZ24gdGhlIGdpdmVuIGFwayBmaWxlIG9uIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSB3aXRoIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcGsgLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCBhcGsgZmlsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzaWduaW5nIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5zaWduV2l0aERlZmF1bHRDZXJ0ID0gYXN5bmMgZnVuY3Rpb24gc2lnbldpdGhEZWZhdWx0Q2VydCAoYXBrKSB7XG4gIGxvZy5kZWJ1ZyhgU2lnbmluZyAnJHthcGt9JyB3aXRoIGRlZmF1bHQgY2VydGApO1xuICBpZiAoIShhd2FpdCBmcy5leGlzdHMoYXBrKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7YXBrfSBmaWxlIGRvZXNuJ3QgZXhpc3QuYCk7XG4gIH1cblxuICBjb25zdCBhcmdzID0gW1xuICAgICdzaWduJyxcbiAgICAnLS1rZXknLCBERUZBVUxUX1BSSVZBVEVfS0VZLFxuICAgICctLWNlcnQnLCBERUZBVUxUX0NFUlRJRklDQVRFLFxuICAgIGFwayxcbiAgXTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBcGtzaWduZXIoYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBzaWduICcke2Fwa30nIHdpdGggdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUuc3Rkb3V0IHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiAoUmUpc2lnbiB0aGUgZ2l2ZW4gYXBrIGZpbGUgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtIHdpdGggYSBjdXN0b20gY2VydGlmaWNhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwayAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIGFwayBmaWxlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNpZ25pbmcgZmFpbHMuXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLnNpZ25XaXRoQ3VzdG9tQ2VydCA9IGFzeW5jIGZ1bmN0aW9uIHNpZ25XaXRoQ3VzdG9tQ2VydCAoYXBrKSB7XG4gIGxvZy5kZWJ1ZyhgU2lnbmluZyAnJHthcGt9JyB3aXRoIGN1c3RvbSBjZXJ0YCk7XG4gIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLmtleXN0b3JlUGF0aCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBLZXlzdG9yZTogJHt0aGlzLmtleXN0b3JlUGF0aH0gZG9lc24ndCBleGlzdC5gKTtcbiAgfVxuICBpZiAoIShhd2FpdCBmcy5leGlzdHMoYXBrKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2Fwa30nIGRvZXNuJ3QgZXhpc3QuYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUFwa3NpZ25lcihbJ3NpZ24nLFxuICAgICAgJy0ta3MnLCB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAgICctLWtzLWtleS1hbGlhcycsIHRoaXMua2V5QWxpYXMsXG4gICAgICAnLS1rcy1wYXNzJywgYHBhc3M6JHt0aGlzLmtleXN0b3JlUGFzc3dvcmR9YCxcbiAgICAgICctLWtleS1wYXNzJywgYHBhc3M6JHt0aGlzLmtleVBhc3N3b3JkfWAsXG4gICAgICBhcGtdKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oYENhbm5vdCB1c2UgYXBrc2lnbmVyIHRvb2wgZm9yIHNpZ25pbmcuIERlZmF1bHRpbmcgdG8gamFyc2lnbmVyLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlcnIuc3RkZXJyIHx8IGVyci5zdGRvdXQgfHwgZXJyLm1lc3NhZ2V9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhd2FpdCB1bnNpZ25BcGsoYXBrKSkge1xuICAgICAgICBsb2cuZGVidWcoYCcke2Fwa30nIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1bnNpZ25lZGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGAnJHthcGt9JyBkb2VzIG5vdCBuZWVkIHRvIGJlIHVuc2lnbmVkYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBqYXJzaWduZXIgPSBwYXRoLnJlc29sdmUoYXdhaXQgZ2V0SmF2YUhvbWUoKSwgJ2JpbicsXG4gICAgICAgIGBqYXJzaWduZXIke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWApO1xuICAgICAgY29uc3QgZnVsbENtZCA9IFtqYXJzaWduZXIsXG4gICAgICAgICctc2lnYWxnJywgJ01ENXdpdGhSU0EnLFxuICAgICAgICAnLWRpZ2VzdGFsZycsICdTSEExJyxcbiAgICAgICAgJy1rZXlzdG9yZScsIHRoaXMua2V5c3RvcmVQYXRoLFxuICAgICAgICAnLXN0b3JlcGFzcycsIHRoaXMua2V5c3RvcmVQYXNzd29yZCxcbiAgICAgICAgJy1rZXlwYXNzJywgdGhpcy5rZXlQYXNzd29yZCxcbiAgICAgICAgYXBrLCB0aGlzLmtleUFsaWFzXTtcbiAgICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgamFyc2lnbmVyOiAke3V0aWwucXVvdGUoZnVsbENtZCl9YCk7XG4gICAgICBhd2FpdCBleGVjKGZ1bGxDbWRbMF0sIGZ1bGxDbWQuc2xpY2UoMSksIHsgd2luZG93c1ZlcmJhdGltQXJndW1lbnRzOiBzeXN0ZW0uaXNXaW5kb3dzKCkgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3Qgc2lnbiB3aXRoIGN1c3RvbSBjZXJ0aWZpY2F0ZS4gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIChSZSlzaWduIHRoZSBnaXZlbiBhcGsgZmlsZSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0gd2l0aCBlaXRoZXJcbiAqIGN1c3RvbSBvciBkZWZhdWx0IGNlcnRpZmljYXRlIGJhc2VkIG9uIF90aGlzLnVzZUtleXN0b3JlXyBwcm9wZXJ0eSB2YWx1ZVxuICogYW5kIFppcC1hbGlnbnMgaXQgYWZ0ZXIgc2lnbmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIC5hcGsocykgZmlsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzaWduaW5nIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5zaWduID0gYXN5bmMgZnVuY3Rpb24gc2lnbiAoYXBwUGF0aCkge1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBsZXQgbWVzc2FnZSA9ICdTaWduaW5nIG9mIC5hcGtzLWZpbGVzIGlzIG5vdCBzdXBwb3J0ZWQuICc7XG4gICAgaWYgKHRoaXMudXNlS2V5c3RvcmUpIHtcbiAgICAgIG1lc3NhZ2UgKz0gJ0NvbnNpZGVyIG1hbnVhbCBhcHBsaWNhdGlvbiBidW5kbGUgc2lnbmluZyB3aXRoIHRoZSBjdXN0b20ga2V5c3RvcmUgJyArXG4gICAgICAgIGBsaWtlIGl0IGlzIGRlc2NyaWJlZCBhdCAke0JVTkRMRVRPT0xfVFVUT1JJQUx9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSArPSBgQ29uc2lkZXIgbWFudWFsIGFwcGxpY2F0aW9uIGJ1bmRsZSBzaWduaW5nIHdpdGggdGhlIGtleSBhdCAnJHtERUZBVUxUX1BSSVZBVEVfS0VZfScgYCArXG4gICAgICAgIGBhbmQgdGhlIGNlcnRpZmljYXRlIGF0ICcke0RFRkFVTFRfQ0VSVElGSUNBVEV9Jy4gUmVhZCAke0JVTkRMRVRPT0xfVFVUT1JJQUx9IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICB9XG4gICAgbG9nLndhcm4obWVzc2FnZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIGFwcGx5IHppcGFsaWduIG9ubHkgYmVmb3JlIHNpZ25pbmdcbiAgLy8gaWYgYXBrc2lnbmVyIGlzIHVzZWRcbiAgYXdhaXQgdGhpcy56aXBBbGlnbkFwayhhcHBQYXRoKTtcblxuICBpZiAodGhpcy51c2VLZXlzdG9yZSkge1xuICAgIGF3YWl0IHRoaXMuc2lnbldpdGhDdXN0b21DZXJ0KGFwcFBhdGgpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IHRoaXMuc2lnbldpdGhEZWZhdWx0Q2VydChhcHBQYXRoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBQZXJmb3JtIHppcC1hbGlnbmluZyB0byB0aGUgZ2l2ZW4gbG9jYWwgYXBrIGZpbGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwayAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIGFwayBmaWxlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFwayBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgYWxpZ25lZFxuICogb3IgZmFsc2UgaWYgdGhlIGFwayBoYXMgYmVlbiBhbHJlYWR5IGFsaWduZWQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgemlwLWFsaWduIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy56aXBBbGlnbkFwayA9IGFzeW5jIGZ1bmN0aW9uIHppcEFsaWduQXBrIChhcGspIHtcbiAgYXdhaXQgdGhpcy5pbml0WmlwQWxpZ24oKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjKHRoaXMuYmluYXJpZXMuemlwYWxpZ24sIFsnLWMnLCAnNCcsIGFwa10pO1xuICAgIGxvZy5kZWJ1ZyhgJHthcGt9JyBpcyBhbHJlYWR5IHppcC1hbGlnbmVkLiBEb2luZyBub3RoaW5nYCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGAnJHthcGt9JyBpcyBub3QgemlwLWFsaWduZWQuIEFsaWduaW5nYCk7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5hY2Nlc3MoYXBrLCBfZnMuV19PSyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke2Fwa30nIGlzIG5vdCB3cml0ZWFibGUuIGAgK1xuICAgICAgYFBsZWFzZSBncmFudCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGlzIGZpbGUgb3IgdG8gaXRzIHBhcmVudCBmb2xkZXIgJyR7cGF0aC5kaXJuYW1lKGFwayl9JyBgICtcbiAgICAgIGBmb3IgdGhlIEFwcGl1bSBwcm9jZXNzLCBzbyBpdCBjYW4gemlwLWFsaWduIHRoZSBmaWxlYCk7XG4gIH1cbiAgY29uc3QgYWxpZ25lZEFwayA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnYXBwaXVtJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgYXdhaXQgbWtkaXJwKHBhdGguZGlybmFtZShhbGlnbmVkQXBrKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLnppcGFsaWduLCBbJy1mJywgJzQnLCBhcGssIGFsaWduZWRBcGtdKTtcbiAgICBhd2FpdCBmcy5tdihhbGlnbmVkQXBrLCBhcGssIHsgbWtkaXJwOiB0cnVlIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhbGlnbmVkQXBrKSkge1xuICAgICAgYXdhaXQgZnMudW5saW5rKGFsaWduZWRBcGspO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYHppcEFsaWduQXBrIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRDaGVja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVxdWlyZURlZmF1bHRDZXJ0IFt0cnVlXSBXaGV0aGVyIHRvIHJlcXVpcmUgdGhhdCB0aGUgZGVzdGluYXRpb24gQVBLXG4gKiBpcyBzaWduZWQgd2l0aCB0aGUgZGVmYXVsdCBBcHBpdW0gY2VydGlmaWNhdGUgb3IgYW55IHZhbGlkIGNlcnRpZmljYXRlLiBUaGlzIG9wdGlvblxuICogb25seSBoYXMgZWZmZWN0IGlmIGB1c2VLZXlzdG9yZWAgcHJvcGVydHkgaXMgdW5zZXQuXG4gKi9cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgYXBwIGlzIGFscmVhZHkgc2lnbmVkIHdpdGggdGhlIGRlZmF1bHQgQXBwaXVtIGNlcnRpZmljYXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgbG9jYWwgLmFwayhzKSBmaWxlLlxuICogQHBhcmFtIHtzdHJpbmd9IHBnayAtIFRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uIHBhY2thZ2UuXG4gKiBAcGFyYW0ge0NlcnRDaGVja09wdGlvbnN9IG9wdHMgLSBDZXJ0aWZpY2F0ZSBjaGVja2luZyBvcHRpb25zXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGdpdmVuIGFwcGxpY2F0aW9uIGlzIGFscmVhZHkgc2lnbmVkLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5jaGVja0Fwa0NlcnQgPSBhc3luYyBmdW5jdGlvbiBjaGVja0Fwa0NlcnQgKGFwcFBhdGgsIHBrZywgb3B0cyA9IHt9KSB7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgYXBwIGNlcnQgZm9yICR7YXBwUGF0aH1gKTtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoYXBwUGF0aCkpIHtcbiAgICBsb2cuZGVidWcoYCcke2FwcFBhdGh9JyBkb2VzIG5vdCBleGlzdGApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChwYXRoLmV4dG5hbWUoYXBwUGF0aCkgPT09IEFQS1NfRVhURU5TSU9OKSB7XG4gICAgYXBwUGF0aCA9IGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBwUGF0aCk7XG4gIH1cblxuICBjb25zdCBoYXNoTWF0Y2hlcyA9IChhcGtzaWduZXJPdXRwdXQsIGV4cGVjdGVkSGFzaGVzKSA9PiB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhleHBlY3RlZEhhc2hlcykpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKGBkaWdlc3Q6XFxcXHMrJHt2YWx1ZX1cXFxcYmAsICdpJykudGVzdChhcGtzaWduZXJPdXRwdXQpKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgJHtuYW1lfSBoYXNoIGRpZCBtYXRjaCBmb3IgJyR7cGF0aC5iYXNlbmFtZShhcHBQYXRoKX0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgY29uc3Qge1xuICAgIHJlcXVpcmVEZWZhdWx0Q2VydCA9IHRydWUsXG4gIH0gPSBvcHRzO1xuXG4gIGNvbnN0IGFwcEhhc2ggPSBhd2FpdCBmcy5oYXNoKGFwcFBhdGgpO1xuICBpZiAoU0lHTkVEX0FQUFNfQ0FDSEUuaGFzKGFwcEhhc2gpKSB7XG4gICAgbG9nLmRlYnVnKGBVc2luZyB0aGUgcHJldmlvdXNseSBjYWNoZWQgc2lnbmF0dXJlIGVudHJ5IGZvciAnJHtwYXRoLmJhc2VuYW1lKGFwcFBhdGgpfSdgKTtcbiAgICBjb25zdCB7a2V5c3RvcmVQYXRoLCBvdXRwdXQsIGV4cGVjdGVkfSA9IFNJR05FRF9BUFBTX0NBQ0hFLmdldChhcHBIYXNoKTtcbiAgICBpZiAodGhpcy51c2VLZXlzdG9yZSAmJiB0aGlzLmtleXN0b3JlUGF0aCA9PT0ga2V5c3RvcmVQYXRoIHx8ICF0aGlzLnVzZUtleXN0b3JlKSB7XG4gICAgICByZXR1cm4gKCF0aGlzLnVzZUtleXN0b3JlICYmICFyZXF1aXJlRGVmYXVsdENlcnQpIHx8IGhhc2hNYXRjaGVzKG91dHB1dCwgZXhwZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4cGVjdGVkID0gdGhpcy51c2VLZXlzdG9yZVxuICAgID8gYXdhaXQgdGhpcy5nZXRLZXlzdG9yZUhhc2goYXBwUGF0aCwgcGtnKVxuICAgIDogREVGQVVMVF9DRVJUX0hBU0g7XG4gIHRyeSB7XG4gICAgYXdhaXQgZ2V0QXBrc2lnbmVyRm9yT3ModGhpcyk7XG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgdGhpcy5leGVjdXRlQXBrc2lnbmVyKFsndmVyaWZ5JywgJy0tcHJpbnQtY2VydHMnLCBhcHBQYXRoXSk7XG4gICAgY29uc3QgaGFzTWF0Y2ggPSBoYXNoTWF0Y2hlcyhvdXRwdXQsIGV4cGVjdGVkKTtcbiAgICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGxvZy5pbmZvKGAnJHthcHBQYXRofScgaXMgc2lnbmVkIHdpdGggdGhlIGAgK1xuICAgICAgICBgJHt0aGlzLnVzZUtleXN0b3JlID8gJ2tleXN0b3JlJyA6ICdkZWZhdWx0J30gY2VydGlmaWNhdGVgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oYCcke2FwcFBhdGh9JyBpcyBzaWduZWQgd2l0aCBhIGAgK1xuICAgICAgICBgbm9uLSR7dGhpcy51c2VLZXlzdG9yZSA/ICdrZXlzdG9yZScgOiAnZGVmYXVsdCd9IGNlcnRpZmljYXRlYCk7XG4gICAgfVxuICAgIGNvbnN0IGlzU2lnbmVkID0gKCF0aGlzLnVzZUtleXN0b3JlICYmICFyZXF1aXJlRGVmYXVsdENlcnQpIHx8IGhhc01hdGNoO1xuICAgIGlmIChpc1NpZ25lZCkge1xuICAgICAgU0lHTkVEX0FQUFNfQ0FDSEUuc2V0KGFwcEhhc2gsIHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBleHBlY3RlZCxcbiAgICAgICAga2V5c3RvcmVQYXRoOiB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXNTaWduZWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIG5vIHNpZ25hdHVyZVxuICAgIGlmIChfLmluY2x1ZGVzKGVyci5zdGRlcnIsIEFQS1NJR05FUl9WRVJJRllfRkFJTCkpIHtcbiAgICAgIGxvZy5pbmZvKGAnJHthcHBQYXRofScgaXMgbm90IHNpZ25lZGApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBlcnJNc2cgPSBlcnIuc3RkZXJyIHx8IGVyci5zdGRvdXQgfHwgZXJyLm1lc3NhZ2U7XG4gICAgaWYgKF8uaW5jbHVkZXMoZXJyTXNnLCBKQVZBX1BST1BTX0lOSVRfRVJST1IpKSB7XG4gICAgICAvLyBUaGlzIGVycm9yIHBvcHMgdXAgcmFuZG9tbHkgYW5kIHdlIGFyZSBub3QgcXVpdGUgc3VyZSB3aHkuXG4gICAgICAvLyBNeSBndWVzcyAtIGEgcmFjZSBjb25kaXRpb24gaW4gamF2YSB2bSBpbml0aWFsaXphdGlvbi5cbiAgICAgIC8vIE5ldmVydGhlbGVzcywgbGV0cyBtYWtlIEFwcGl1bSB0byBiZWxpZXZlIHRoZSBmaWxlIGlzIGFscmVhZHkgc2lnbmVkLFxuICAgICAgLy8gYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGZvciA5OSUgb2YgVUlBdXRvbWF0b3IyLWJhc2VkXG4gICAgICAvLyB0ZXN0cywgd2hlcmUgd2UgcHJlc2lnbiBzZXJ2ZXIgYmluYXJpZXMgd2hpbGUgcHVibGlzaGluZyB0aGVpciBOUE0gbW9kdWxlLlxuICAgICAgLy8gSWYgdGhlc2UgYXJlIG5vdCBzaWduZWQsIGUuZy4gaW4gY2FzZSBvZiBFc3ByZXNzbywgdGhlbiB0aGUgbmV4dCBzdGVwKHMpXG4gICAgICAvLyB3b3VsZCBhbnl3YXkgZmFpbC5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9pc3N1ZXMvMTQ3MjQgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGxvZy53YXJuKGVyck1zZyk7XG4gICAgICBsb2cud2FybihgQXNzdW1pbmcgJyR7YXBwUGF0aH0nIGlzIGFscmVhZHkgc2lnbmVkIGFuZCBjb250aW51aW5nIGFueXdheWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHZlcmlmeSB0aGUgc2lnbmF0dXJlIG9mICcke2FwcFBhdGh9Jy4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyTXNnfWApO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEtleXN0b3JlSGFzaFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZDUgdGhlIG1kNSBoYXNoIHZhbHVlIG9mIHRoZSBrZXlzdG9yZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzaGExIHRoZSBzaGExIGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNoYTI1NiB0aGUgc2hhMjU2IGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNoYTUxMiB0aGUgc2hhNTEyIGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgdGhlIGhhc2ggb2YgdGhlIGdpdmVuIGtleXN0b3JlLlxuICpcbiAqIEByZXR1cm4ge0tleXN0b3JlSGFzaH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBnZXR0aW5nIGtleXN0b3JlIGhhc2ggZmFpbHMuXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLmdldEtleXN0b3JlSGFzaCA9IGFzeW5jIGZ1bmN0aW9uIGdldEtleXN0b3JlSGFzaCAoKSB7XG4gIGxvZy5kZWJ1ZyhgR2V0dGluZyBoYXNoIG9mIHRoZSAnJHt0aGlzLmtleXN0b3JlUGF0aH0nIGtleXN0b3JlYCk7XG4gIGNvbnN0IGtleXRvb2wgPSBwYXRoLnJlc29sdmUoYXdhaXQgZ2V0SmF2YUhvbWUoKSwgJ2JpbicsXG4gICAgYGtleXRvb2wke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWApO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhrZXl0b29sKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGtleXRvb2wgdXRpbGl0eSBjYW5ub3QgYmUgZm91bmQgYXQgJyR7a2V5dG9vbH0nYCk7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtcbiAgICAnLXYnLCAnLWxpc3QnLFxuICAgICctYWxpYXMnLCB0aGlzLmtleUFsaWFzLFxuICAgICcta2V5c3RvcmUnLCB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAnLXN0b3JlcGFzcycsIHRoaXMua2V5c3RvcmVQYXNzd29yZFxuICBdO1xuICBsb2cuaW5mbyhgUnVubmluZyAnJHtrZXl0b29sfScgd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoa2V5dG9vbCwgYXJncywgeyB3aW5kb3dzVmVyYmF0aW1Bcmd1bWVudHM6IHN5c3RlbS5pc1dpbmRvd3MoKSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGhhc2hOYW1lIG9mIFtTSEE1MTIsIFNIQTI1NiwgU0hBMSwgTUQ1XSkge1xuICAgICAgY29uc3QgaGFzaFJlID0gbmV3IFJlZ0V4cChgXlxcXFxzKiR7aGFzaE5hbWV9OlxcXFxzKihbYS1mMC05Ol0rKWAsICdtaScpO1xuICAgICAgY29uc3QgbWF0Y2ggPSBoYXNoUmUuZXhlYyhzdGRvdXQpO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdFtoYXNoTmFtZV0gPSBtYXRjaFsxXS5yZXBsYWNlKC86L2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHJlc3VsdCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhzdGRvdXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGhhc2ggdmFsdWUgZnJvbSB0aGUga2V5dG9vbCBvdXRwdXQnKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBLZXlzdG9yZSBoYXNoOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgaGFzaCBvZiAnJHt0aGlzLmtleXN0b3JlUGF0aH0nIGtleXN0b3JlLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFwa1NpZ25pbmdNZXRob2RzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUtBLE1BQU1BLG1CQUFtQixHQUFHQyxjQUFLQyxPQUFMLENBQWFDLGdCQUFiLEVBQXNCLE1BQXRCLEVBQThCLGFBQTlCLENBQTVCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHSCxjQUFLQyxPQUFMLENBQWFDLGdCQUFiLEVBQXNCLE1BQXRCLEVBQThCLGtCQUE5QixDQUE1Qjs7QUFDQSxNQUFNRSxtQkFBbUIsR0FBRyw4REFBNUI7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxpQkFBOUI7QUFDQSxNQUFNQyxJQUFJLEdBQUcsTUFBYjtBQUNBLE1BQU1DLE1BQU0sR0FBRyxRQUFmO0FBQ0EsTUFBTUMsTUFBTSxHQUFHLFFBQWY7QUFDQSxNQUFNQyxHQUFHLEdBQUcsS0FBWjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHO0VBQ3hCLENBQUNILE1BQUQsR0FBVTtBQURjLENBQTFCO0FBR0EsTUFBTUkscUJBQXFCLEdBQUcsa0NBQTlCO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtFQUNoQ0MsR0FBRyxFQUFFO0FBRDJCLENBQVIsQ0FBMUI7QUFLQSxNQUFNQyxpQkFBaUIsR0FBRyxFQUExQjs7QUFVQUEsaUJBQWlCLENBQUNDLGdCQUFsQixHQUFxQyxlQUFlQSxnQkFBZixDQUFpQ0MsSUFBSSxHQUFHLEVBQXhDLEVBQTRD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