studiokit-scaffolding-js 7.6.1-next.2.21 → 7.6.1-next.2.22

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.
@@ -373,7 +373,7 @@ function* refreshLoop() {
373
373
  const expiresSoonUtc = expiresUtc.subtract(appConfig.SESSION_REFRESH_THRESHOLD, 'milliseconds');
374
374
  // use a max delay, e.g. 1 min for 60 min token, 1 sec for 60 sec token
375
375
  // to help reduce timer drift when tab is in the background
376
- const maxDelay = oauthToken.expires_in / 60;
376
+ const maxDelay = oauthToken.expires_in * 1000 / 60;
377
377
  const expiresSoonDelay = Math.min(maxDelay, expiresSoonUtc.diff(nowUtc));
378
378
  logger.debug(`refreshLoop delay: wait for token to be close to expiration, delaying ${expiresSoonDelay} ms`);
379
379
  yield (0, _effects.delay)(expiresSoonDelay);
@@ -564,4 +564,4 @@ function* authSaga(authPersistenceServiceParam, ticketProviderService, codeProvi
564
564
  oauthToken = null;
565
565
  } while (true);
566
566
  }
567
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50VGltZXpvbmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lZmZlY3RzIiwiX3V1aWQiLCJfY29uc3RhbnRzIiwiX3dpbmRvd1NlcnZpY2UiLCJfdHlwZXMiLCJfYXV0aCIsIl9kYXRlIiwiX2xvZ2dlciIsIl91cmwiLCJfdXNlckFjdGl2aXR5IiwiX2FjdGlvbnMiLCJtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiYWN0aW9uIiwibW9kZWxOYW1lIiwiaXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uIiwibW9kZWxQYXRoIiwiZXhwb3J0cyIsInRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiaW5jb21pbmdBY3Rpb24iLCJtYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCIsImlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uIiwidGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkIiwiYXV0aFBlcnNpc3RlbmNlU2VydmljZSIsInJlZnJlc2hMb2NrIiwibG9nZ2VyIiwiZ2V0VG9rZW5Gcm9tQ29kZSIsImNvZGUiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJDTElFTlRfSUQiLCJDTElFTlRfU0VDUkVUIiwiRXJyb3IiLCJnZXRUb2tlbk1vZGVsTmFtZSIsImZvcm1Cb2R5IiwiVVJMU2VhcmNoUGFyYW1zIiwiZ3JhbnRfdHlwZSIsImNsaWVudF9pZCIsImNsaWVudF9zZWNyZXQiLCJwdXQiLCJ0eXBlIiwiTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFUVVFU1QiLCJib2R5IiwidG9TdHJpbmciLCJub1N0b3JlIiwiZmV0Y2hSZXN1bHRBY3Rpb24iLCJmZXRjaEVycm9yQWN0aW9uIiwicmFjZSIsInRha2UiLCJkYXRhIiwiZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlIiwic3RhdGUiLCJPQVVUSF9QS0NFX1NDT1BFIiwiT0FVVEhfUEtDRV9FTkRQT0lOVCIsImNvZGVWZXJpZmllciIsImNhbGwiLCJnZXRQZXJzaXN0ZWRDb2RlVmVyaWZpZXIiLCJwZXJzaXN0ZWRTdGF0ZSIsImdldFBlcnNpc3RlZFN0YXRlIiwicGVyc2lzdFN0YXRlIiwicGVyc2lzdENvZGVWZXJpZmllciIsImxvY2F0aW9uIiwid2luZG93U2VydmljZSIsImdldExvY2F0aW9uIiwic2NvcGUiLCJjb2RlX3ZlcmlmaWVyIiwicmVkaXJlY3RfdXJpIiwib3JpZ2luIiwiZ2V0VG9rZW5Gcm9tUmVmcmVzaFRva2VuIiwib2F1dGhUb2tlblBhcmFtIiwicmVmcmVzaF90b2tlbiIsImFwcGVuZCIsImVycm9yRGF0YSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTX0NPREUiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwZXJmb3JtVG9rZW5SZWZyZXNoIiwib2F1dGhUb2tlbiIsInJlZnJlc2hTdWNjZXNzIiwiQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFIiwiVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQiLCJyZWZyZXNoRmFpbGVkIiwiQVVUSF9BQ1RJT05fVFlQRSIsIlRPS0VOX1JFRlJFU0hfRkFJTEVEIiwiZ2V0UGVyc2lzdGVkVG9rZW4iLCJkZWJ1ZyIsIm9yaWdpbmFsQWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJvYXV0aFRva2VuUmVzcG9uc2UiLCJwZXJzaXN0VG9rZW4iLCJhbGwiLCJsb2dPdXQiLCJBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUiLCJMT0dfT1VUIiwidG9rZW5FeHBpcmVkIiwibG9naW5GbG93IiwibW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24iLCJjcmVkZW50aWFsc0xvZ2luRmxvdyIsIm5vUmV0cnkiLCJjYXNWMUxvZ2luRmxvdyIsImxvY2FsTG9naW5GbG93IiwiY2FzVGlja2V0TG9naW5GbG93IiwidGlja2V0Iiwic2VydmljZSIsInF1ZXJ5UGFyYW1zIiwicGtjZUxvZ2luRmxvdyIsIl8iLCJ1dWlkdjQiLCJzaGEyNTZDb2RlVmVyaWZpZXIiLCJzaGEyNTZBc3luYyIsImNvZGVDaGFsbGVuZ2UiLCJiYXNlNjRVcmxFbmNvZGUiLCJwa2NlQXV0aFJlZGlyZWN0VVJMIiwicmVzcG9uc2VfdHlwZSIsImNvZGVfY2hhbGxlbmdlIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwicmVwbGFjZSIsImhhbmRsZUF1dGhGYWlsdXJlIiwiVU5BVVRIT1JJWkVEIiwiaXNUb2tlbkV4cGlyZWQiLCJpc1Rva2VuUmVmcmVzaGFibGUiLCJpc1VzZXJJZGxlIiwiZ2V0T0F1dGhUb2tlbiIsImV4cGlyZXNVdGMiLCJtb21lbnQiLCJ1dGMiLCJub3dVdGMiLCJnZXRTZXJ2ZXJOb3dVdGMiLCJ0b0lTT1N0cmluZyIsImlzRXhwaXJpbmdTb29uIiwiZGlmZiIsIlNFU1NJT05fUkVGUkVTSF9USFJFU0hPTEQiLCJjbGVhclVzZXJEYXRhQW5kVG9rZW4iLCJjbGVhclVzZXJEYXRhIiwiTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSIsImNsZWFyUGVyc2lzdGVudFRva2VuIiwicmVmcmVzaExvb3AiLCJpc0V4cGlyZWQiLCJpc1JlZnJlc2hhYmxlIiwidGltZVVudGlsRXhwaXJlcyIsImV4cGlyZXNTb29uVXRjIiwic3VidHJhY3QiLCJtYXhEZWxheSIsImV4cGlyZXNfaW4iLCJleHBpcmVzU29vbkRlbGF5IiwiTWF0aCIsIm1pbiIsImRlbGF5IiwiRVhQSVJJTkdfU09PTiIsImV4dGVuc2lvblJlcXVlc3RlZCIsIkVYVEVOU0lPTl9SRVFVRVNURUQiLCJhdXRoU2FnYSIsImF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VQYXJhbSIsInRpY2tldFByb3ZpZGVyU2VydmljZSIsImNvZGVQcm92aWRlclNlcnZpY2UiLCJnZXRMb2dnZXIiLCJjYXNUaWNrZXQiLCJnZXRUaWNrZXQiLCJnZXRBcHBTZXJ2aWNlTmFtZSIsImhhc0Nhc1RpY2tldCIsImdldENvZGUiLCJnZXRTdGF0ZSIsInB1cmR1ZUlkZW50aXR5UHJvdmlkZXIiLCJnZXRQdXJkdWVJZGVudGl0eVByb3ZpZGVyRnJvbUxvY2F0aW9uIiwiaXNDYXNHYXRld2F5UmVxdWVzdGVkIiwiZ2V0SXNDYXNHYXRld2F5UmVxdWVzdGVkIiwicGVyc2lzdElzQ2FzR2F0ZXdheVJlcXVlc3RlZCIsInJldHVyblVybCIsImdldFJldHVyblVybCIsInBlcnNpc3RSZXR1cm5VcmwiLCJwYXRobmFtZSIsImxvZ2luVXJsIiwicGVyc2lzdElkZW50aXR5UHJvdmlkZXIiLCJyZW1vdmVUaWNrZXQiLCJyZW1vdmVDb2RlQW5kU3RhdGUiLCJBVVRIX1RPS0VOX0FDVElPTl9UWVBFIiwiQVVUSF9JTklUSUFMSVpFRCIsInRha2VFdmVyeSIsIk1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFIiwiVFJZX0ZFVENIX0ZBSUxFRCIsImNhc1YxQWN0aW9uIiwibG9jYWxMb2dpbkFjdGlvbiIsInBrY2VMb2dpbkFjdGlvbiIsIkFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUiLCJDQVNfVjFfTE9HSU5fUkVRVUVTVCIsIkFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIkxPQ0FMX0xPR0lOX1JFUVVFU1QiLCJBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIlBLQ0VfTE9HSU5fUkVRVUVTVCIsIkxPR0lOX1JFUVVFU1RFRCIsImxvZ2luU3VjY2VzcyIsIkdFVF9UT0tFTl9TVUNDRUVERUQiLCJyZWZyZXNoTG9vcFRhc2siLCJmb3JrIiwiY2FuY2VsIiwiTE9HSU5fRkFJTEVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3NhZ2FzL2F1dGhTYWdhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhZ2FJdGVyYXRvciwgVGFzayB9IGZyb20gJ0ByZWR1eC1zYWdhL2NvcmUnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xuaW1wb3J0IHsgYWxsLCBjYWxsLCBjYW5jZWwsIGRlbGF5LCBmb3JrLCBwdXQsIHJhY2UsIHRha2UsIHRha2VFdmVyeSB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cydcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyBnZXRBcHBDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnXG5pbXBvcnQgeyB3aW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2luZG93U2VydmljZSdcbmltcG9ydCB7XG5cdEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UsXG5cdENvZGVQcm92aWRlclNlcnZpY2UsXG5cdEhUVFBfU1RBVFVTX0NPREUsXG5cdE9BdXRoVG9rZW4sXG5cdE9BdXRoVG9rZW5SZXNwb25zZSxcblx0VGlja2V0UHJvdmlkZXJTZXJ2aWNlLFxuXHRUb2tlbkFjY2Vzc0Z1bmN0aW9uXG59IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UHVyZHVlSWRlbnRpdHlQcm92aWRlckZyb21Mb2NhdGlvbiwgaXNUb2tlbkV4cGlyZWQsIGlzVG9rZW5SZWZyZXNoYWJsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dGgnXG5pbXBvcnQgeyBnZXRTZXJ2ZXJOb3dVdGMgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlJ1xuaW1wb3J0IHsgZ2V0TG9nZ2VyLCBMb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInXG5pbXBvcnQgeyBiYXNlNjRVcmxFbmNvZGUsIHNoYTI1NkFzeW5jIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXJsJ1xuaW1wb3J0IHsgaXNVc2VySWRsZSB9IGZyb20gJy4uLy4uL3V0aWxzL3VzZXJBY3Rpdml0eSdcbmltcG9ydCB7XG5cdEFVVEhfQUNUSU9OX1RZUEUsXG5cdEFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdEFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSxcblx0QVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLFxuXHRBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSxcblx0QVVUSF9UT0tFTl9BQ1RJT05fVFlQRSxcblx0QVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLFxuXHRBdXRoQWN0aW9uLFxuXHRBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24sXG5cdEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbixcblx0QXV0aExvZ091dEFjdGlvbixcblx0QXV0aFBLQ0VMb2dpblJlcXVlc3RBY3Rpb24sXG5cdEF1dGhUb2tlbkFjdGlvbixcblx0QXV0aFRva2VuU3VjY2Vzc0FjdGlvbixcblx0aXNUcmFuc2llbnRNb2RlbEZldGNoRXJyb3JBY3Rpb24sXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaFJlc3VsdEFjdGlvbixcblx0TU9ERUxfRkVUQ0hfRVJST1JfQUNUSU9OX1RZUEUsXG5cdE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsXG5cdE1vZGVsRmV0Y2hFcnJvckFjdGlvbixcblx0TW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24sXG5cdE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24sXG5cdE1vZGVsUmVtb3ZlS2V5QWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnXG5cbi8vI3JlZ2lvbiBIZWxwZXJzXG5cbmV4cG9ydCBjb25zdCBtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cblx0aXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gbW9kZWxOYW1lXG5cbmV4cG9ydCBjb25zdCB0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XG5cdG1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoaW5jb21pbmdBY3Rpb24sIG1vZGVsTmFtZSlcblxuZXhwb3J0IGNvbnN0IG1hdGNoZXNNb2RlbEZldGNoRmFpbGVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cblx0aXNUcmFuc2llbnRNb2RlbEZldGNoRXJyb3JBY3Rpb24oYWN0aW9uKSAmJiBhY3Rpb24ubW9kZWxQYXRoID09PSBtb2RlbE5hbWVcblxuZXhwb3J0IGNvbnN0IHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XG5cdG1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGluY29taW5nQWN0aW9uLCBtb2RlbE5hbWUpXG5cbi8vI2VuZHJlZ2lvbiBIZWxwZXJzXG5cbi8vI3JlZ2lvbiBMb2NhbCBWYXJpYWJsZXNcblxubGV0IGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2U6IEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VcbmxldCByZWZyZXNoTG9jazogYm9vbGVhblxubGV0IGxvZ2dlcjogTG9nZ2VyXG5cbi8vI2VuZHJlZ2lvbiBMb2NhbCBWYXJpYWJsZXNcblxuZXhwb3J0IGZ1bmN0aW9uKiBnZXRUb2tlbkZyb21Db2RlKGNvZGU6IHN0cmluZyk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGlmICghYXBwQ29uZmlnLkNMSUVOVF9JRCB8fCAhYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCBhbmQgQ0xJRU5UX1NFQ1JFVCBhcmUgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXHRjb25zdCBnZXRUb2tlbk1vZGVsTmFtZSA9ICdnZXRUb2tlbidcblx0Y29uc3QgZm9ybUJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcblx0XHRncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXG5cdFx0Y2xpZW50X3NlY3JldDogYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQsXG5cdFx0Y29kZTogY29kZVxuXHR9KVxuXHR5aWVsZCBwdXQ8TW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24+KHtcblx0XHR0eXBlOiBNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFLkZFVENIX1JFUVVFU1QsXG5cdFx0bW9kZWxOYW1lOiBnZXRUb2tlbk1vZGVsTmFtZSxcblx0XHRib2R5OiBmb3JtQm9keS50b1N0cmluZygpLFxuXHRcdG5vU3RvcmU6IHRydWVcblx0fSlcblx0Y29uc3Qge1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uLFxuXHRcdGZldGNoRXJyb3JBY3Rpb25cblx0fTogeyBmZXRjaFJlc3VsdEFjdGlvbj86IE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb247IGZldGNoRXJyb3JBY3Rpb24/OiBNb2RlbEZldGNoRXJyb3JBY3Rpb24gfSA9IHlpZWxkIHJhY2Uoe1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkKGdldFRva2VuTW9kZWxOYW1lKSksXG5cdFx0ZmV0Y2hFcnJvckFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKVxuXHR9KVxuXHRpZiAoZmV0Y2hFcnJvckFjdGlvbiB8fCAhZmV0Y2hSZXN1bHRBY3Rpb24/LmRhdGEpIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdHJldHVybiBmZXRjaFJlc3VsdEFjdGlvbi5kYXRhXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlKGNvZGU6IHN0cmluZywgc3RhdGU6IHN0cmluZyk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGlmICghYXBwQ29uZmlnLkNMSUVOVF9JRCB8fCAhYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUgfHwgIWFwcENvbmZpZy5PQVVUSF9QS0NFX0VORFBPSU5UKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDTElFTlRfSUQsIE9BVVRIX1BLQ0VfU0NPUEUsIGFuZCBPQVVUSF9QS0NFX0VORFBPSU5UIGFyZSByZXF1aXJlZCBpbiBBcHBDb25maWcnKVxuXHR9XG5cblx0Ly8gdmFsaWRhdGUgcGVyc2lzdGVkIHZhbHVlc1xuXHRjb25zdCBjb2RlVmVyaWZpZXIgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkQ29kZVZlcmlmaWVyKVxuXHRpZiAoIWNvZGVWZXJpZmllcikge1xuXHRcdHRocm93IG5ldyBFcnJvcignaW52YWxpZCBjb2RlX3ZlcmlmaWVyJylcblx0fVxuXHRjb25zdCBwZXJzaXN0ZWRTdGF0ZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRTdGF0ZSlcblx0aWYgKHBlcnNpc3RlZFN0YXRlICE9PSBzdGF0ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZScpXG5cdH1cblx0Ly8gY2xlYXIgcGVyc2lzdGVkIHZhbHVlc1xuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFN0YXRlLCBudWxsKVxuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdENvZGVWZXJpZmllciwgbnVsbClcblxuXHQvLyBkaXNwYXRjaCByZXF1ZXN0XG5cdGNvbnN0IGdldFRva2VuTW9kZWxOYW1lID0gJ2dldFRva2VuJ1xuXHRjb25zdCBsb2NhdGlvbiA9IHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKVxuXHRjb25zdCBmb3JtQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuXHRcdGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuXHRcdGNsaWVudF9pZDogYXBwQ29uZmlnLkNMSUVOVF9JRCxcblx0XHRzY29wZTogYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUsXG5cdFx0Y29kZV92ZXJpZmllcjogY29kZVZlcmlmaWVyLFxuXHRcdHJlZGlyZWN0X3VyaTogbG9jYXRpb24ub3JpZ2luLFxuXHRcdGNvZGU6IGNvZGVcblx0fSlcblx0eWllbGQgcHV0PE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uPih7XG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZTogZ2V0VG9rZW5Nb2RlbE5hbWUsXG5cdFx0Ym9keTogZm9ybUJvZHkudG9TdHJpbmcoKSxcblx0XHRub1N0b3JlOiB0cnVlXG5cdH0pXG5cdGNvbnN0IHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcblx0XHRmZXRjaEVycm9yQWN0aW9uXG5cdH06IHsgZmV0Y2hSZXN1bHRBY3Rpb24/OiBNb2RlbEZldGNoUmVzdWx0QWN0aW9uOyBmZXRjaEVycm9yQWN0aW9uPzogTW9kZWxGZXRjaEVycm9yQWN0aW9uIH0gPSB5aWVsZCByYWNlKHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGdldFRva2VuTW9kZWxOYW1lKSlcblx0fSlcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24gfHwgIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGdldFRva2VuRnJvbVJlZnJlc2hUb2tlbihvYXV0aFRva2VuUGFyYW06IE9BdXRoVG9rZW4pOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCBpcyByZXF1aXJlZCBpbiBBcHBDb25maWcnKVxuXHR9XG5cdGlmICghb2F1dGhUb2tlblBhcmFtLnJlZnJlc2hfdG9rZW4pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYHJlZnJlc2hfdG9rZW4gaXMgcmVxdWlyZWRgKVxuXHR9XG5cblx0Y29uc3QgZ2V0VG9rZW5Nb2RlbE5hbWUgPSAnZ2V0VG9rZW4nXG5cdGNvbnN0IGZvcm1Cb2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG5cdFx0Z3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuXHRcdGNsaWVudF9pZDogYXBwQ29uZmlnLkNMSUVOVF9JRCxcblx0XHRyZWZyZXNoX3Rva2VuOiBvYXV0aFRva2VuUGFyYW0ucmVmcmVzaF90b2tlblxuXHR9KVxuXHQvLyBjcmVhdGUgdGhlIGZvcm0gYm9keSBiYXNlZCBvbiBpZiB1c2luZyBhIGNsaWVudF9zZWNyZXQ6IHRyYWRpdGlvbmFsIE9BdXRoIHZzLiBQS0NFIGZsb3dcblx0aWYgKGFwcENvbmZpZy5DTElFTlRfU0VDUkVUKSB7XG5cdFx0Zm9ybUJvZHkuYXBwZW5kKCdjbGllbnRfc2VjcmV0JywgYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQpXG5cdH1cblx0eWllbGQgcHV0PE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uPih7XG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZTogZ2V0VG9rZW5Nb2RlbE5hbWUsXG5cdFx0Ym9keTogZm9ybUJvZHkudG9TdHJpbmcoKSxcblx0XHRub1N0b3JlOiB0cnVlXG5cdH0pXG5cdGNvbnN0IHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcblx0XHRmZXRjaEVycm9yQWN0aW9uXG5cdH06IHsgZmV0Y2hSZXN1bHRBY3Rpb24/OiBNb2RlbEZldGNoUmVzdWx0QWN0aW9uOyBmZXRjaEVycm9yQWN0aW9uPzogTW9kZWxGZXRjaEVycm9yQWN0aW9uIH0gPSB5aWVsZCByYWNlKHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGdldFRva2VuTW9kZWxOYW1lKSlcblx0fSlcblx0Ly8gYW55IGVycm9yIHJlc3BvbnNlXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uKSB7XG5cdFx0Ly8gaWdub3JlIHNlcnZlciBlcnJvcnNcblx0XHRpZiAoXG5cdFx0XHRmZXRjaEVycm9yQWN0aW9uLmVycm9yRGF0YT8uc3RhdHVzICYmXG5cdFx0XHRmZXRjaEVycm9yQWN0aW9uLmVycm9yRGF0YS5zdGF0dXMgPj0gSFRUUF9TVEFUVVNfQ09ERS5JTlRFUk5BTF9TRVJWRVJfRVJST1Jcblx0XHQpIHtcblx0XHRcdHJldHVybiBvYXV0aFRva2VuUGFyYW1cblx0XHR9XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHQvLyBmb3Igc29tZSByZWFzb24gdGhlIHJlc3BvbnNlIGhhZCBubyBib2R5XG5cdGlmICghZmV0Y2hSZXN1bHRBY3Rpb24/LmRhdGEpIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdHJldHVybiBmZXRjaFJlc3VsdEFjdGlvbi5kYXRhXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogcGVyZm9ybVRva2VuUmVmcmVzaChvYXV0aFRva2VuOiBPQXV0aFRva2VuKTogU2FnYUl0ZXJhdG9yIHtcblx0aWYgKHJlZnJlc2hMb2NrKSB7XG5cdFx0Ly8gYWxyZWFkeSByZWZyZXNoaW5nLCB3YWl0IGZvciB0aGUgY3VycmVudCByZWZyZXNoIHRvIHN1Y2NlZWQgb3IgZmFpbFxuXHRcdHlpZWxkIHJhY2Uoe1xuXHRcdFx0cmVmcmVzaFN1Y2Nlc3M6IHRha2UoQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLlRPS0VOX1JFRlJFU0hfU1VDQ0VFREVEKSxcblx0XHRcdHJlZnJlc2hGYWlsZWQ6IHRha2UoQVVUSF9BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX0ZBSUxFRClcblx0XHR9KVxuXHRcdC8vIHJldHVybiB0aGUgY3VycmVudCBwZXJzaXN0ZWQgdG9rZW5cblx0XHRyZXR1cm4geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXHR9XG5cdGxvZ2dlci5kZWJ1ZygnT0F1dGggdG9rZW4gcmVmcmVzaGluZy4uLicpXG5cdHJlZnJlc2hMb2NrID0gdHJ1ZVxuXHQvLyBvYXV0aFRva2VuIHdpbGwgYmUgc2V0IHRvOlxuXHQvLyAxLiBuZXcgdG9rZW4gKHN1Y2Nlc3MpXG5cdC8vIDIuIHNhbWUgdG9rZW4gKGZhaWxlZCBmcm9tIHRpbWVvdXQgb3Igc2VydmVyIGVycm9yKVxuXHQvLyAzLiBudWxsIChmYWlsKVxuXHRjb25zdCBvcmlnaW5hbEFjY2Vzc1Rva2VuID0gb2F1dGhUb2tlbi5hY2Nlc3NfdG9rZW5cblx0Y29uc3Qgb2F1dGhUb2tlblJlc3BvbnNlOiBPQXV0aFRva2VuUmVzcG9uc2UgPSB5aWVsZCBjYWxsKGdldFRva2VuRnJvbVJlZnJlc2hUb2tlbiwgb2F1dGhUb2tlbilcblx0aWYgKCEhb2F1dGhUb2tlblJlc3BvbnNlICYmIG9hdXRoVG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4gIT09IG9yaWdpbmFsQWNjZXNzVG9rZW4pIHtcblx0XHRsb2dnZXIuZGVidWcoJ09BdXRoIHRva2VuIHJlZnJlc2hlZCcpXG5cdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlblJlc3BvbnNlKVxuXHRcdHlpZWxkIHB1dDxBdXRoVG9rZW5TdWNjZXNzQWN0aW9uPih7XG5cdFx0XHR0eXBlOiBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQsXG5cdFx0XHRvYXV0aFRva2VuOiBvYXV0aFRva2VuUmVzcG9uc2Vcblx0XHR9KVxuXHR9IGVsc2UgaWYgKG9hdXRoVG9rZW5SZXNwb25zZSA9PT0gbnVsbCkge1xuXHRcdGxvZ2dlci5kZWJ1ZygnT0F1dGggdG9rZW4gZmFpbGVkIHRvIHJlZnJlc2gnKVxuXHRcdC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBvdXRzaWRlIG9mIHRoZSB0b2tlbiBoYXZpbmcgYmVlbiByZXZva2VkIG9uIHRoZSBzZXJ2ZXIgc2lkZVxuXHRcdHlpZWxkIGFsbCh7XG5cdFx0XHRyZWZyZXNoRmFpbGVkOiBwdXQ8QXV0aEFjdGlvbj4oeyB0eXBlOiBBVVRIX0FDVElPTl9UWVBFLlRPS0VOX1JFRlJFU0hfRkFJTEVEIH0pLFxuXHRcdFx0bG9nT3V0OiBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXG5cdFx0fSlcblx0fVxuXHRyZWZyZXNoTG9jayA9IGZhbHNlXG5cdHJldHVybiBvYXV0aFRva2VuUmVzcG9uc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBsb2dpbkZsb3cobW9kZWxGZXRjaFJlcXVlc3RBY3Rpb246IE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uKTogU2FnYUl0ZXJhdG9yIHtcblx0eWllbGQgcHV0KG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uKVxuXHRjb25zdCB7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb24sXG5cdFx0ZmV0Y2hFcnJvckFjdGlvblxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQobW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24ubW9kZWxOYW1lKSksXG5cdFx0ZmV0Y2hFcnJvckFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQobW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24ubW9kZWxOYW1lKSlcblx0fSlcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24pIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdGNvbnN0IGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGZldGNoUmVzdWx0QWN0aW9uPy5kYXRhPy5jb2RlXG5cdGlmICghY29kZSkge1xuXHRcdHJldHVybiBudWxsXG5cdH1cblx0cmV0dXJuIHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZSwgY29kZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjcmVkZW50aWFsc0xvZ2luRmxvdyhcblx0YWN0aW9uOiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24gfCBBdXRoTG9jYWxMb2dpblJlcXVlc3RBY3Rpb24sXG5cdG1vZGVsTmFtZTogc3RyaW5nXG4pOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBtb2RlbEZldGNoUmVxdWVzdEFjdGlvbjogTW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24gPSB7XG5cdFx0Ly8gc2V0IHJlcXVpcmVkIGRlZmF1bHRzXG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZSxcblx0XHRub1N0b3JlOiB0cnVlLFxuXHRcdC8vIGZvcmNlIG5vIHJldHJ5XG5cdFx0bm9SZXRyeTogdHJ1ZSxcblx0XHQvLyBwYXNzIHRocnUgYm9keVxuXHRcdGJvZHk6IGFjdGlvbi5ib2R5XG5cdH1cblx0cmV0dXJuIHlpZWxkIGNhbGwobG9naW5GbG93LCBtb2RlbEZldGNoUmVxdWVzdEFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjYXNWMUxvZ2luRmxvdyhhY3Rpb246IEF1dGhDYXNWMUxvZ2luUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdHJldHVybiB5aWVsZCBjYWxsKGNyZWRlbnRpYWxzTG9naW5GbG93LCBhY3Rpb24sICdjb2RlRnJvbUNhc1YxJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBsb2NhbExvZ2luRmxvdyhhY3Rpb246IEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdHJldHVybiB5aWVsZCBjYWxsKGNyZWRlbnRpYWxzTG9naW5GbG93LCBhY3Rpb24sICdjb2RlRnJvbUxvY2FsQ3JlZGVudGlhbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNhc1RpY2tldExvZ2luRmxvdyh0aWNrZXQ6IHN0cmluZywgc2VydmljZTogc3RyaW5nKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgbW9kZWxGZXRjaFJlcXVlc3RBY3Rpb246IE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uID0ge1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWU6ICdjb2RlRnJvbUNhc1RpY2tldCcsXG5cdFx0bm9TdG9yZTogdHJ1ZSxcblx0XHRxdWVyeVBhcmFtczoge1xuXHRcdFx0dGlja2V0LFxuXHRcdFx0c2VydmljZVxuXHRcdH1cblx0fVxuXHRyZXR1cm4geWllbGQgY2FsbChsb2dpbkZsb3csIG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIHBrY2VMb2dpbkZsb3coXzogQXV0aFBLQ0VMb2dpblJlcXVlc3RBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQgfHwgIWFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFIHx8ICFhcHBDb25maWcuT0FVVEhfUEtDRV9FTkRQT0lOVCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignQ0xJRU5UX0lELCBPQVVUSF9QS0NFX1NDT1BFLCBhbmQgT0FVVEhfUEtDRV9FTkRQT0lOVCBhcmUgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXG5cdC8vIEdlbmVyYXRlIHN0YXRlIGFuZCBjb2RlIHZlcmlmaWVyIHZhbHVlc1xuXHRjb25zdCBzdGF0ZSA9IHV1aWR2NCgpXG5cdGNvbnN0IGNvZGVWZXJpZmllciA9IHV1aWR2NCgpXG5cdGNvbnN0IHNoYTI1NkNvZGVWZXJpZmllciA9IHlpZWxkIGNhbGwoc2hhMjU2QXN5bmMsIGNvZGVWZXJpZmllcilcblx0Y29uc3QgY29kZUNoYWxsZW5nZSA9IHlpZWxkIGNhbGwoYmFzZTY0VXJsRW5jb2RlLCBzaGEyNTZDb2RlVmVyaWZpZXIpXG5cblx0Ly8gUGVyc2lzdCBzdGF0ZSBhbmQgY29kZSB2ZXJpZmllciBpbiBsb2NhbCBzdG9yYWdlIGZvciB1c2UgYWZ0ZXIgY29kZSBmbG93IHJlZGlyZWN0LlxuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFN0YXRlLCBzdGF0ZSlcblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RDb2RlVmVyaWZpZXIsIGNvZGVWZXJpZmllcilcblxuXHQvLyBSZWRpcmVjdCB0byBCUyBjb2RlIGZsb3cgYXV0aCBlbmRwb2ludCAod2hpY2ggd2lsbCByZWRpcmVjdCBiYWNrIGhlcmUpXG5cdGNvbnN0IGxvY2F0aW9uID0gd2luZG93U2VydmljZS5nZXRMb2NhdGlvbigpXG5cdGNvbnN0IHBrY2VBdXRoUmVkaXJlY3RVUkwgPSBgJHthcHBDb25maWcuT0FVVEhfUEtDRV9FTkRQT0lOVH0/JHtuZXcgVVJMU2VhcmNoUGFyYW1zKHtcblx0XHRyZXNwb25zZV90eXBlOiAnY29kZScsXG5cdFx0Y2xpZW50X2lkOiBhcHBDb25maWcuQ0xJRU5UX0lELFxuXHRcdHN0YXRlOiBzdGF0ZSxcblx0XHRzY29wZTogYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUsXG5cdFx0Y29kZV9jaGFsbGVuZ2U6IGNvZGVDaGFsbGVuZ2UsXG5cdFx0Y29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NicsXG5cdFx0cmVkaXJlY3RfdXJpOiBsb2NhdGlvbi5vcmlnaW5cblx0fSl9YFxuXHR5aWVsZCBjYWxsKHdpbmRvd1NlcnZpY2UucmVwbGFjZSwgcGtjZUF1dGhSZWRpcmVjdFVSTClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBoYW5kbGVBdXRoRmFpbHVyZShhY3Rpb246IE1vZGVsRmV0Y2hFcnJvckFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdGlmICghYWN0aW9uLmVycm9yRGF0YSB8fCBhY3Rpb24uZXJyb3JEYXRhLnN0YXR1cyA9PT0gSFRUUF9TVEFUVVNfQ09ERS5VTkFVVEhPUklaRUQpIHJldHVyblxuXHRjb25zdCBvYXV0aFRva2VuOiBPQXV0aFRva2VuUmVzcG9uc2UgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkVG9rZW4pXG5cdGlmICghaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHJldHVyblxuXHQvLyBpZiBhIHJlcXVlc3QgcmVjZWl2ZXMgYSA0MDEsIHRoZSB0b2tlbiBpcyBleHBpcmVkIGFuZCBjYW5ub3QgcmVmcmVzaCwgdHJpZ2dlciBleHBpcmVkIGxvZyBvdXRcblx0Ly8gdGhpcyBpcyBhIGZhaWwtc2FmZSBpbiBjYXNlIHRoZSBgcmVmcmVzaExvb3BgIGhhcyBmYWlsZWRcblx0aWYgKCFpc1Rva2VuUmVmcmVzaGFibGUob2F1dGhUb2tlbikpIHtcblx0XHR5aWVsZCBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXG5cdFx0cmV0dXJuXG5cdH1cblx0Ly8gaWYgdG9rZW4gaXMgcmVmcmVzaGFibGUsIHdpdGhpbiAzMCBzZWNvbmRzIG9mIGV4cGlyYXRpb24sIGFuZCB1c2VyIGlzIG5vdCBpZGxlLCBhdXRvLXJlZnJlc2hcblx0Ly8gdGhpcyBpcyBhIGZhaWwtc2FmZSBpbiBjYXNlIHRoZSBgcmVmcmVzaExvb3BgIGhhcyBmYWlsZWRcblx0aWYgKCFpc1VzZXJJZGxlKCkpIHtcblx0XHRsb2dnZXIuZGVidWcoJ2hhbmRsZUF1dGhGYWlsdXJlIHRyaWdnZXIgYXV0by1yZWZyZXNoJylcblx0XHR5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldE9BdXRoVG9rZW46IFRva2VuQWNjZXNzRnVuY3Rpb24gPSBmdW5jdGlvbiogKCkge1xuXHRsZXQgb2F1dGhUb2tlbjogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXHRpZiAoIW9hdXRoVG9rZW4/LlsnLmV4cGlyZXMnXSkgcmV0dXJuIG9hdXRoVG9rZW5cblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0Y29uc3QgZXhwaXJlc1V0YyA9IG1vbWVudC51dGMob2F1dGhUb2tlblsnLmV4cGlyZXMnXSlcblx0Y29uc3Qgbm93VXRjID0gbW9tZW50LnV0YyhnZXRTZXJ2ZXJOb3dVdGMoKS50b0lTT1N0cmluZygpKVxuXHRjb25zdCBpc0V4cGlyaW5nU29vbiA9IGV4cGlyZXNVdGMuZGlmZihub3dVdGMpIDw9IGFwcENvbmZpZy5TRVNTSU9OX1JFRlJFU0hfVEhSRVNIT0xEXG5cdC8vIGlmIHRva2VuIGlzIHJlZnJlc2hhYmxlLCB3aXRoaW4gcmVmcmVzaCB0aHJlc2hvbGQsIGFuZCB1c2VyIGlzIG5vdCBpZGxlLCBhdXRvLXJlZnJlc2hcblx0Ly8gdGhpcyBpcyBhIGZhaWwtc2FmZSBpbiBjYXNlIHRoZSBgcmVmcmVzaExvb3BgIGhhcyBmYWlsZWRcblx0aWYgKGlzVG9rZW5SZWZyZXNoYWJsZShvYXV0aFRva2VuKSAmJiBpc0V4cGlyaW5nU29vbiAmJiAhaXNVc2VySWRsZSgpKSB7XG5cdFx0bG9nZ2VyLmRlYnVnKCdnZXRPQXV0aFRva2VuIHRyaWdnZXIgYXV0by1yZWZyZXNoJylcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHR9XG5cdHJldHVybiBvYXV0aFRva2VuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY2xlYXJVc2VyRGF0YUFuZFRva2VuKCk6IFNhZ2FJdGVyYXRvciB7XG5cdHlpZWxkIGFsbCh7XG5cdFx0Y2xlYXJVc2VyRGF0YTogcHV0PE1vZGVsUmVtb3ZlS2V5QWN0aW9uPih7IHR5cGU6IE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsIG1vZGVsUGF0aDogJ3VzZXInIH0pLFxuXHRcdGNsZWFyUGVyc2lzdGVudFRva2VuOiBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFRva2VuLCBudWxsKVxuXHR9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIHJlZnJlc2hMb29wKCk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGxldCBvYXV0aFRva2VuOiBPQXV0aFRva2VuUmVzcG9uc2Vcblx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBpbml0Jylcblx0d2hpbGUgKHRydWUpIHtcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXG5cdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBzdGFydCcsIHtcblx0XHRcdG9hdXRoVG9rZW4sXG5cdFx0XHRpc0V4cGlyZWQ6IGlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pLFxuXHRcdFx0aXNSZWZyZXNoYWJsZTogaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pXG5cdFx0fSlcblxuXHRcdGlmICghaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XG5cdFx0XHRpZiAoaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHtcblx0XHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBicmVhazogdG9rZW4gZXhwaXJlZCBhbmQgbm90IHJlZnJlc2hhYmxlLCB0cmlnZ2VyIGV4cGlyZWQgbG9nIG91dCcpXG5cdFx0XHRcdC8vIHVzZXIgZmFpbGVkIHRvIHJlcXVlc3QgYW4gZXh0ZW5zaW9uIGFuZCB0b2tlbiBpcyBleHBpcmVkXG5cdFx0XHRcdHlpZWxkIHB1dDxBdXRoTG9nT3V0QWN0aW9uPih7IHR5cGU6IEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VULCB0b2tlbkV4cGlyZWQ6IHRydWUgfSlcblx0XHRcdFx0Ly8gYnJlYWsgbG9vcFxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBicmVhazogdG9rZW4gbm90IHJlZnJlc2hhYmxlJylcblx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdFx0Y29uc3QgZXhwaXJlc1V0YyA9IG1vbWVudC51dGMob2F1dGhUb2tlblsnLmV4cGlyZXMnXSlcblx0XHRjb25zdCBub3dVdGMgPSBtb21lbnQudXRjKGdldFNlcnZlck5vd1V0YygpLnRvSVNPU3RyaW5nKCkpXG5cdFx0Y29uc3QgdGltZVVudGlsRXhwaXJlcyA9IGV4cGlyZXNVdGMuZGlmZihub3dVdGMpXG5cdFx0Y29uc3QgaXNFeHBpcmluZ1Nvb24gPSB0aW1lVW50aWxFeHBpcmVzIDw9IGFwcENvbmZpZy5TRVNTSU9OX1JFRlJFU0hfVEhSRVNIT0xEXG5cblx0XHRpZiAoIWlzRXhwaXJpbmdTb29uKSB7XG5cdFx0XHRjb25zdCBleHBpcmVzU29vblV0YyA9IGV4cGlyZXNVdGMuc3VidHJhY3QoYXBwQ29uZmlnLlNFU1NJT05fUkVGUkVTSF9USFJFU0hPTEQsICdtaWxsaXNlY29uZHMnKVxuXHRcdFx0Ly8gdXNlIGEgbWF4IGRlbGF5LCBlLmcuIDEgbWluIGZvciA2MCBtaW4gdG9rZW4sIDEgc2VjIGZvciA2MCBzZWMgdG9rZW5cblx0XHRcdC8vIHRvIGhlbHAgcmVkdWNlIHRpbWVyIGRyaWZ0IHdoZW4gdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kXG5cdFx0XHRjb25zdCBtYXhEZWxheSA9IG9hdXRoVG9rZW4uZXhwaXJlc19pbiAvIDYwXG5cdFx0XHRjb25zdCBleHBpcmVzU29vbkRlbGF5ID0gTWF0aC5taW4obWF4RGVsYXksIGV4cGlyZXNTb29uVXRjLmRpZmYobm93VXRjKSlcblx0XHRcdGxvZ2dlci5kZWJ1ZyhgcmVmcmVzaExvb3AgZGVsYXk6IHdhaXQgZm9yIHRva2VuIHRvIGJlIGNsb3NlIHRvIGV4cGlyYXRpb24sIGRlbGF5aW5nICR7ZXhwaXJlc1Nvb25EZWxheX0gbXNgKVxuXHRcdFx0eWllbGQgZGVsYXkoZXhwaXJlc1Nvb25EZWxheSlcblx0XHRcdC8vIHJlc3RhcnQgbG9vcCB0byByZWNoZWNrIHRva2VuXG5cdFx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGRlbGF5OiBmaW5pc2hlZCcpXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgZXhwaXJpbmcgc29vbicpXG5cblx0XHQvLyBOT1RFOiB1c2VyIGNhbiBuZXZlciBiZSBpZGxlIG9uIExPQ0FMLCBzbyBsb2NhbCBzZXNzaW9ucyB3aWxsIHN0YXkgYWxpdmUgaW5kZWZpbml0ZWx5XG5cdFx0aWYgKCFpc1VzZXJJZGxlKCkpIHtcblx0XHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciBub3QgaWRsZSwgdHJpZ2dlciBhdXRvLXJlZnJlc2gnKVxuXHRcdFx0Ly8gYXV0b21hdGljYWxseSByZWZyZXNoIHRva2VuIHRvIGV4dGVuZCBzZXNzaW9uIGlmIHVzZXIgaXMgbm90IGlkbGVcblx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciBpZGxlLCB0cmlnZ2VyIGV4cGlyaW5nIHNvb24nKVxuXG5cdFx0Ly8gaWYgdXNlciBpcyBpZGxlIGFuZCB0b2tlbiBpcyBleHBpcmluZyBzb29uLCBzZW5kIGFjdGlvbiB0byBkaXNwbGF5IEV4cGlyaW5nU2Vzc2lvbkFsZXJ0XG5cdFx0eWllbGQgcHV0PEF1dGhBY3Rpb24+KHsgdHlwZTogQVVUSF9BQ1RJT05fVFlQRS5FWFBJUklOR19TT09OIH0pXG5cdFx0Ly8gd2FpdCBmb3IgdXNlciB0byB0YWtlIGFuIGFjdGlvbiwgb3IgZm9yIHRva2VuIHRvIGV4cGlyZVxuXHRcdC8vIGlmIHVzZXIgbG9ncyBvdXQsIHRoZSByb290IGBhdXRoU2FnYWAgd2lsbCBjYW5jZWwgdGhpcyBsb29wXG5cdFx0Y29uc3QgeyB0b2tlbkV4cGlyZWQgfSA9IHlpZWxkIHJhY2Uoe1xuXHRcdFx0ZXh0ZW5zaW9uUmVxdWVzdGVkOiB0YWtlKEFVVEhfQUNUSU9OX1RZUEUuRVhURU5TSU9OX1JFUVVFU1RFRCksXG5cdFx0XHR0b2tlbkV4cGlyZWQ6IGRlbGF5KHRpbWVVbnRpbEV4cGlyZXMpXG5cdFx0fSlcblx0XHRpZiAodG9rZW5FeHBpcmVkKSB7XG5cdFx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIHRva2VuIGV4cGlyZWQsIHRyaWdnZXIgZXhwaXJlZCBsb2cgb3V0Jylcblx0XHRcdC8vIHVzZXIgZmFpbGVkIHRvIHJlcXVlc3QgYW4gZXh0ZW5zaW9uIGFuZCB0b2tlbiBpcyBleHBpcmVkXG5cdFx0XHR5aWVsZCBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXG5cdFx0XHQvLyBicmVhayBsb29wXG5cdFx0XHRicmVha1xuXHRcdH1cblxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciB0cmlnZ2VyIHJlZnJlc2gnKVxuXG5cdFx0Ly8gdXNlciByZXF1ZXN0ZWQgZXh0ZW5zaW9uLCB0cmlnZ2VyIHRva2VuIHJlZnJlc2hcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHR9XG5cblx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBkb25lJylcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIGF1dGhTYWdhKFxuXHRhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlUGFyYW06IEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UsXG5cdHRpY2tldFByb3ZpZGVyU2VydmljZTogVGlja2V0UHJvdmlkZXJTZXJ2aWNlLFxuXHRjb2RlUHJvdmlkZXJTZXJ2aWNlOiBDb2RlUHJvdmlkZXJTZXJ2aWNlXG4pOiBTYWdhSXRlcmF0b3Ige1xuXHRsb2dnZXIgPSBnZXRMb2dnZXIoKVxuXHRhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlID0gYXV0aFBlcnNpc3RlbmNlU2VydmljZVBhcmFtXG5cblx0Ly8gdHJ5IHRvIGdldCBwZXJzaXN0ZWQgdG9rZW4gKG5vcm1hbGx5IGluIEFzeW5jU3RvcmFnZSBvciBMb2NhbFN0b3JhZ2UpXG5cdGxldCBvYXV0aFRva2VuOiBPQXV0aFRva2VuUmVzcG9uc2UgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkVG9rZW4pXG5cblx0Ly8gaWYgdG9rZW4gaXMgZXhwaXJlZCwgdHJ5IHRvIHJlZnJlc2ggaXQgYmVmb3JlIGluaXRpYWxpemluZyBhdXRoXG5cdC8vIGlmIHVuYWJsZSB0byByZWZyZXNoLCBjbGVhciBkYXRhIGFuZCBpbml0IGF1dGggd2l0aCBubyB0b2tlblxuXHRpZiAoaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHtcblx0XHRpZiAoaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuZGVidWcoJ3Rva2VuIGV4cGlyZWQsIGNsZWFyIHBlcnNpc3RlZCB1c2VyIGRhdGEgYW5kIHRva2VuJylcblx0XHRcdG9hdXRoVG9rZW4gPSBudWxsXG5cdFx0XHQvLyBjbGVhciB0aGUgZXhwaXJlZCB0b2tlbiBhbmQgdXNlciBkYXRhIGZyb20gc3RvcmFnZVxuXHRcdFx0eWllbGQgY2FsbChjbGVhclVzZXJEYXRhQW5kVG9rZW4pXG5cdFx0fVxuXHR9XG5cblx0Ly8gZ2V0IGF1dGggcGFyYW1ldGVyc1xuXHRjb25zdCBjYXNUaWNrZXQgPSB0aWNrZXRQcm92aWRlclNlcnZpY2UuZ2V0VGlja2V0KClcblx0Y29uc3Qgc2VydmljZSA9IHRpY2tldFByb3ZpZGVyU2VydmljZS5nZXRBcHBTZXJ2aWNlTmFtZSgpXG5cdGNvbnN0IGhhc0Nhc1RpY2tldCA9ICEhY2FzVGlja2V0ICYmICEhc2VydmljZVxuXG5cdGNvbnN0IGNvZGUgPSBjb2RlUHJvdmlkZXJTZXJ2aWNlLmdldENvZGUoKVxuXHRjb25zdCBzdGF0ZSA9IGNvZGVQcm92aWRlclNlcnZpY2UuZ2V0U3RhdGUoKVxuXG5cdC8vIGF1dG8tbG9naW4gLyBTU08gZm9yIFB1cmR1ZVxuXHRjb25zdCBwdXJkdWVJZGVudGl0eVByb3ZpZGVyID0geWllbGQgY2FsbChnZXRQdXJkdWVJZGVudGl0eVByb3ZpZGVyRnJvbUxvY2F0aW9uKVxuXHRpZiAocHVyZHVlSWRlbnRpdHlQcm92aWRlcikge1xuXHRcdGNvbnN0IGlzQ2FzR2F0ZXdheVJlcXVlc3RlZDogYm9vbGVhbiA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRJc0Nhc0dhdGV3YXlSZXF1ZXN0ZWQpXG5cblx0XHQvLyBzdGFydCBhdXRvLWxvZ2luIC8gU1NPLCBpZiBub3QgYWxyZWFkeSByZXF1ZXN0ZWQsIG5vdCBhdXRoZW50aWNhdGVkLCBhbmQgaGFzIG5vIHZhbGlkIGF1dGggcGFyYW1ldGVyc1xuXHRcdGlmICghaXNDYXNHYXRld2F5UmVxdWVzdGVkICYmICFvYXV0aFRva2VuICYmICFoYXNDYXNUaWNrZXQgJiYgIWNvZGUpIHtcblx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0SXNDYXNHYXRld2F5UmVxdWVzdGVkLCB0cnVlKVxuXHRcdFx0Ly8gc3RvcmUgcGF0aG5hbWUgZm9yIHBvc3QtbG9naW4gcmVkaXJlY3QgaWYgbm90IGFscmVhZHkgc2V0XG5cdFx0XHQvLyBjb3VsZCBoYXZlIGJlZW4gc2V0IGZyb20gdXNlciBsb2dnaW5nIG91dCwgc2VlIGBBdXRoZW50aWNhdGVkQ29tcG9uZW50YFxuXHRcdFx0Y29uc3QgcmV0dXJuVXJsID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFJldHVyblVybClcblx0XHRcdGlmICghcmV0dXJuVXJsKSB7XG5cdFx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0UmV0dXJuVXJsLCB3aW5kb3dTZXJ2aWNlLmdldExvY2F0aW9uKCkucGF0aG5hbWUpXG5cdFx0XHR9XG5cdFx0XHR5aWVsZCBjYWxsKHdpbmRvd1NlcnZpY2UucmVwbGFjZSwgcHVyZHVlSWRlbnRpdHlQcm92aWRlci5sb2dpblVybClcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdC8vIGZpbmlzaCBhdXRvLWxvZ2luIHByb2Nlc3MsIGlmIGl0IHdhcyByZXF1ZXN0ZWQgYW5kIGhhcyBhIHZhbGlkIGF1dGggcGFyYW1ldGVyXG5cdFx0aWYgKGlzQ2FzR2F0ZXdheVJlcXVlc3RlZCAmJiAoaGFzQ2FzVGlja2V0IHx8IGNvZGUpKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdElzQ2FzR2F0ZXdheVJlcXVlc3RlZCwgZmFsc2UpXG5cdFx0XHQvLyBwZXJzaXN0IFB1cmR1ZSBpZGVudGl0eVByb3ZpZGVyIGZvciBgaWRlbnRpdHlQcm92aWRlclNhZ2FgIGxvZ291dCBsb2dpY1xuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RJZGVudGl0eVByb3ZpZGVyLCBwdXJkdWVJZGVudGl0eVByb3ZpZGVyKVxuXHRcdFx0Ly8gY29udGludWUgdG8gZXhjaGFuZ2luZyBDQVMgYHRpY2tldGAgb3IgYGNvZGVgIGZvciB0b2tlblxuXHRcdH1cblx0fVxuXG5cdC8vIGlmIENBUyB0aWNrZXQgZXhpc3RzIChub3JtYWxseSBpbiB0aGUgVVJMKSwgdXNlIGl0IHRvIGdldCBhIG5ldyB0b2tlblxuXHRpZiAoaGFzQ2FzVGlja2V0KSB7XG5cdFx0dGlja2V0UHJvdmlkZXJTZXJ2aWNlLnJlbW92ZVRpY2tldCgpXG5cblx0XHQvLyBjbGVhciB0aGUgY3VycmVudCB0b2tlbiBhbmQgdXNlciBkYXRhIGlmIGEgbmV3IHRva2VuIGlzIGFib3V0IHRvIGJlIGdlbmVyYXRlZFxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGNsZWFyVXNlckRhdGFBbmRUb2tlbilcblx0XHRcdG9hdXRoVG9rZW4gPSBudWxsXG5cdFx0fVxuXHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGNhc1RpY2tldExvZ2luRmxvdywgY2FzVGlja2V0LCBzZXJ2aWNlKVxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFRva2VuLCBvYXV0aFRva2VuKVxuXHRcdH1cblx0fVxuXG5cdC8vIGlmIE9BdXRoIENvZGUgZXhpc3RzIChub3JtYWxseSBpbiB0aGUgVVJMKSwgdXNlIGl0IHRvIGdldCBhIG5ldyB0b2tlblxuXHRpZiAoY29kZSkge1xuXHRcdGNvZGVQcm92aWRlclNlcnZpY2UucmVtb3ZlQ29kZUFuZFN0YXRlKClcblxuXHRcdC8vIGNsZWFyIHRoZSBjdXJyZW50IHRva2VuIGFuZCB1c2VyIGRhdGEgaWYgYSBuZXcgdG9rZW4gaXMgYWJvdXQgdG8gYmUgZ2VuZXJhdGVkXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGNhbGwoY2xlYXJVc2VyRGF0YUFuZFRva2VuKVxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0XHR9XG5cblx0XHQvLyBpZiBPQXV0aCBzdGF0ZSBleGlzdHMgKG5vcm1hbGx5IGluIHRoZSBVUkwpLCB1c2UgaXQgaW4gYWRkaXRpb24gdG8gdGhlIGNvZGUgZm9yIFBLQ0UgbG9naW4gZmxvd1xuXHRcdGlmIChzdGF0ZSkge1xuXHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlLCBjb2RlLCBzdGF0ZSlcblx0XHR9IGVsc2Uge1xuXHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZSwgY29kZSlcblx0XHR9XG5cblx0XHRpZiAob2F1dGhUb2tlbikge1xuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlbilcblx0XHR9XG5cdH1cblxuXHR5aWVsZCBwdXQ8QXV0aFRva2VuQWN0aW9uPih7IHR5cGU6IEFVVEhfVE9LRU5fQUNUSU9OX1RZUEUuQVVUSF9JTklUSUFMSVpFRCwgb2F1dGhUb2tlbiB9KVxuXG5cdHlpZWxkIHRha2VFdmVyeShNT0RFTF9GRVRDSF9FUlJPUl9BQ1RJT05fVFlQRS5UUllfRkVUQ0hfRkFJTEVELCBoYW5kbGVBdXRoRmFpbHVyZSlcblxuXHRkbyB7XG5cdFx0aWYgKCFvYXV0aFRva2VuKSB7XG5cdFx0XHRjb25zdCB7XG5cdFx0XHRcdGNhc1YxQWN0aW9uLFxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uLFxuXHRcdFx0XHRwa2NlTG9naW5BY3Rpb25cblx0XHRcdH06IHtcblx0XHRcdFx0Y2FzVjFBY3Rpb24/OiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb25cblx0XHRcdFx0bG9jYWxMb2dpbkFjdGlvbj86IEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvblxuXHRcdFx0XHRwa2NlTG9naW5BY3Rpb24/OiBBdXRoUEtDRUxvZ2luUmVxdWVzdEFjdGlvblxuXHRcdFx0fSA9IHlpZWxkIHJhY2Uoe1xuXHRcdFx0XHRjYXNWMUFjdGlvbjogdGFrZShBVVRIX0NBU19WMV9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFLkNBU19WMV9MT0dJTl9SRVFVRVNUKSxcblx0XHRcdFx0bG9jYWxMb2dpbkFjdGlvbjogdGFrZShBVVRIX0xPQ0FMX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUuTE9DQUxfTE9HSU5fUkVRVUVTVCksXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvbjogdGFrZShBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRS5QS0NFX0xPR0lOX1JFUVVFU1QpXG5cdFx0XHR9KVxuXG5cdFx0XHR5aWVsZCBwdXQ8QXV0aEFjdGlvbj4oeyB0eXBlOiBBVVRIX0FDVElPTl9UWVBFLkxPR0lOX1JFUVVFU1RFRCB9KVxuXHRcdFx0aWYgKGNhc1YxQWN0aW9uKSB7XG5cdFx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGNhc1YxTG9naW5GbG93LCBjYXNWMUFjdGlvbilcblx0XHRcdH0gZWxzZSBpZiAobG9jYWxMb2dpbkFjdGlvbikge1xuXHRcdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChsb2NhbExvZ2luRmxvdywgbG9jYWxMb2dpbkFjdGlvbilcblx0XHRcdH0gZWxzZSBpZiAocGtjZUxvZ2luQWN0aW9uKSB7XG5cdFx0XHRcdC8vIG9hdXRoVG9rZW4gaXMgbm90IHJldHVybmVkIGhlcmUsIGFzIHRoaXMgZmxvdyB3aWxsIHJlc3VsdCBpbiBhIHdpbmRvdyByZWRpcmVjdFxuXHRcdFx0XHR5aWVsZCBjYWxsKHBrY2VMb2dpbkZsb3csIHBrY2VMb2dpbkFjdGlvbilcblx0XHRcdFx0Ly8gYnJlYWsgZXhlY3V0aW9uXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBhbGwoe1xuXHRcdFx0XHRwZXJzaXN0VG9rZW46IGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG9hdXRoVG9rZW4pLFxuXHRcdFx0XHRsb2dpblN1Y2Nlc3M6IHB1dDxBdXRoVG9rZW5TdWNjZXNzQWN0aW9uPih7XG5cdFx0XHRcdFx0dHlwZTogQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLkdFVF9UT0tFTl9TVUNDRUVERUQsXG5cdFx0XHRcdFx0b2F1dGhUb2tlblxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblxuXHRcdFx0Ly8gc3RhcnQgbm9uLWJsb2NraW5nIHJlZnJlc2ggbG9vcFxuXHRcdFx0Y29uc3QgcmVmcmVzaExvb3BUYXNrOiBUYXNrID0geWllbGQgZm9yayhyZWZyZXNoTG9vcClcblxuXHRcdFx0Ly8gaWYgdXNlciBsb2dzIG91dCBvciB0b2tlbiBleHBpcmVzLCBjYW5jZWwgdGhlIHJlZnJlc2ggbG9vcFxuXHRcdFx0eWllbGQgdGFrZShBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVClcblx0XHRcdHlpZWxkIGNhbmNlbChyZWZyZXNoTG9vcFRhc2spXG5cdFx0fSBlbHNlIHtcblx0XHRcdHlpZWxkIHB1dDxBdXRoQWN0aW9uPih7IHR5cGU6IEFVVEhfQUNUSU9OX1RZUEUuTE9HSU5fRkFJTEVEIH0pXG5cdFx0fVxuXG5cdFx0eWllbGQgY2FsbChjbGVhclVzZXJEYXRhQW5kVG9rZW4pXG5cdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0fSB3aGlsZSAodHJ1ZSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxlQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFTQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxJQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxhQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxRQUFBLEdBQUFYLE9B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
567
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50VGltZXpvbmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lZmZlY3RzIiwiX3V1aWQiLCJfY29uc3RhbnRzIiwiX3dpbmRvd1NlcnZpY2UiLCJfdHlwZXMiLCJfYXV0aCIsIl9kYXRlIiwiX2xvZ2dlciIsIl91cmwiLCJfdXNlckFjdGl2aXR5IiwiX2FjdGlvbnMiLCJtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiYWN0aW9uIiwibW9kZWxOYW1lIiwiaXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uIiwibW9kZWxQYXRoIiwiZXhwb3J0cyIsInRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiaW5jb21pbmdBY3Rpb24iLCJtYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCIsImlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uIiwidGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkIiwiYXV0aFBlcnNpc3RlbmNlU2VydmljZSIsInJlZnJlc2hMb2NrIiwibG9nZ2VyIiwiZ2V0VG9rZW5Gcm9tQ29kZSIsImNvZGUiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJDTElFTlRfSUQiLCJDTElFTlRfU0VDUkVUIiwiRXJyb3IiLCJnZXRUb2tlbk1vZGVsTmFtZSIsImZvcm1Cb2R5IiwiVVJMU2VhcmNoUGFyYW1zIiwiZ3JhbnRfdHlwZSIsImNsaWVudF9pZCIsImNsaWVudF9zZWNyZXQiLCJwdXQiLCJ0eXBlIiwiTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFUVVFU1QiLCJib2R5IiwidG9TdHJpbmciLCJub1N0b3JlIiwiZmV0Y2hSZXN1bHRBY3Rpb24iLCJmZXRjaEVycm9yQWN0aW9uIiwicmFjZSIsInRha2UiLCJkYXRhIiwiZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlIiwic3RhdGUiLCJPQVVUSF9QS0NFX1NDT1BFIiwiT0FVVEhfUEtDRV9FTkRQT0lOVCIsImNvZGVWZXJpZmllciIsImNhbGwiLCJnZXRQZXJzaXN0ZWRDb2RlVmVyaWZpZXIiLCJwZXJzaXN0ZWRTdGF0ZSIsImdldFBlcnNpc3RlZFN0YXRlIiwicGVyc2lzdFN0YXRlIiwicGVyc2lzdENvZGVWZXJpZmllciIsImxvY2F0aW9uIiwid2luZG93U2VydmljZSIsImdldExvY2F0aW9uIiwic2NvcGUiLCJjb2RlX3ZlcmlmaWVyIiwicmVkaXJlY3RfdXJpIiwib3JpZ2luIiwiZ2V0VG9rZW5Gcm9tUmVmcmVzaFRva2VuIiwib2F1dGhUb2tlblBhcmFtIiwicmVmcmVzaF90b2tlbiIsImFwcGVuZCIsImVycm9yRGF0YSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTX0NPREUiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwZXJmb3JtVG9rZW5SZWZyZXNoIiwib2F1dGhUb2tlbiIsInJlZnJlc2hTdWNjZXNzIiwiQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFIiwiVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQiLCJyZWZyZXNoRmFpbGVkIiwiQVVUSF9BQ1RJT05fVFlQRSIsIlRPS0VOX1JFRlJFU0hfRkFJTEVEIiwiZ2V0UGVyc2lzdGVkVG9rZW4iLCJkZWJ1ZyIsIm9yaWdpbmFsQWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJvYXV0aFRva2VuUmVzcG9uc2UiLCJwZXJzaXN0VG9rZW4iLCJhbGwiLCJsb2dPdXQiLCJBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUiLCJMT0dfT1VUIiwidG9rZW5FeHBpcmVkIiwibG9naW5GbG93IiwibW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24iLCJjcmVkZW50aWFsc0xvZ2luRmxvdyIsIm5vUmV0cnkiLCJjYXNWMUxvZ2luRmxvdyIsImxvY2FsTG9naW5GbG93IiwiY2FzVGlja2V0TG9naW5GbG93IiwidGlja2V0Iiwic2VydmljZSIsInF1ZXJ5UGFyYW1zIiwicGtjZUxvZ2luRmxvdyIsIl8iLCJ1dWlkdjQiLCJzaGEyNTZDb2RlVmVyaWZpZXIiLCJzaGEyNTZBc3luYyIsImNvZGVDaGFsbGVuZ2UiLCJiYXNlNjRVcmxFbmNvZGUiLCJwa2NlQXV0aFJlZGlyZWN0VVJMIiwicmVzcG9uc2VfdHlwZSIsImNvZGVfY2hhbGxlbmdlIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwicmVwbGFjZSIsImhhbmRsZUF1dGhGYWlsdXJlIiwiVU5BVVRIT1JJWkVEIiwiaXNUb2tlbkV4cGlyZWQiLCJpc1Rva2VuUmVmcmVzaGFibGUiLCJpc1VzZXJJZGxlIiwiZ2V0T0F1dGhUb2tlbiIsImV4cGlyZXNVdGMiLCJtb21lbnQiLCJ1dGMiLCJub3dVdGMiLCJnZXRTZXJ2ZXJOb3dVdGMiLCJ0b0lTT1N0cmluZyIsImlzRXhwaXJpbmdTb29uIiwiZGlmZiIsIlNFU1NJT05fUkVGUkVTSF9USFJFU0hPTEQiLCJjbGVhclVzZXJEYXRhQW5kVG9rZW4iLCJjbGVhclVzZXJEYXRhIiwiTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSIsImNsZWFyUGVyc2lzdGVudFRva2VuIiwicmVmcmVzaExvb3AiLCJpc0V4cGlyZWQiLCJpc1JlZnJlc2hhYmxlIiwidGltZVVudGlsRXhwaXJlcyIsImV4cGlyZXNTb29uVXRjIiwic3VidHJhY3QiLCJtYXhEZWxheSIsImV4cGlyZXNfaW4iLCJleHBpcmVzU29vbkRlbGF5IiwiTWF0aCIsIm1pbiIsImRlbGF5IiwiRVhQSVJJTkdfU09PTiIsImV4dGVuc2lvblJlcXVlc3RlZCIsIkVYVEVOU0lPTl9SRVFVRVNURUQiLCJhdXRoU2FnYSIsImF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VQYXJhbSIsInRpY2tldFByb3ZpZGVyU2VydmljZSIsImNvZGVQcm92aWRlclNlcnZpY2UiLCJnZXRMb2dnZXIiLCJjYXNUaWNrZXQiLCJnZXRUaWNrZXQiLCJnZXRBcHBTZXJ2aWNlTmFtZSIsImhhc0Nhc1RpY2tldCIsImdldENvZGUiLCJnZXRTdGF0ZSIsInB1cmR1ZUlkZW50aXR5UHJvdmlkZXIiLCJnZXRQdXJkdWVJZGVudGl0eVByb3ZpZGVyRnJvbUxvY2F0aW9uIiwiaXNDYXNHYXRld2F5UmVxdWVzdGVkIiwiZ2V0SXNDYXNHYXRld2F5UmVxdWVzdGVkIiwicGVyc2lzdElzQ2FzR2F0ZXdheVJlcXVlc3RlZCIsInJldHVyblVybCIsImdldFJldHVyblVybCIsInBlcnNpc3RSZXR1cm5VcmwiLCJwYXRobmFtZSIsImxvZ2luVXJsIiwicGVyc2lzdElkZW50aXR5UHJvdmlkZXIiLCJyZW1vdmVUaWNrZXQiLCJyZW1vdmVDb2RlQW5kU3RhdGUiLCJBVVRIX1RPS0VOX0FDVElPTl9UWVBFIiwiQVVUSF9JTklUSUFMSVpFRCIsInRha2VFdmVyeSIsIk1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFIiwiVFJZX0ZFVENIX0ZBSUxFRCIsImNhc1YxQWN0aW9uIiwibG9jYWxMb2dpbkFjdGlvbiIsInBrY2VMb2dpbkFjdGlvbiIsIkFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUiLCJDQVNfVjFfTE9HSU5fUkVRVUVTVCIsIkFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIkxPQ0FMX0xPR0lOX1JFUVVFU1QiLCJBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSIsIlBLQ0VfTE9HSU5fUkVRVUVTVCIsIkxPR0lOX1JFUVVFU1RFRCIsImxvZ2luU3VjY2VzcyIsIkdFVF9UT0tFTl9TVUNDRUVERUQiLCJyZWZyZXNoTG9vcFRhc2siLCJmb3JrIiwiY2FuY2VsIiwiTE9HSU5fRkFJTEVEIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZHV4L3NhZ2FzL2F1dGhTYWdhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhZ2FJdGVyYXRvciwgVGFzayB9IGZyb20gJ0ByZWR1eC1zYWdhL2NvcmUnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSdcbmltcG9ydCB7IEFueUFjdGlvbiB9IGZyb20gJ3JlZHV4J1xuaW1wb3J0IHsgYWxsLCBjYWxsLCBjYW5jZWwsIGRlbGF5LCBmb3JrLCBwdXQsIHJhY2UsIHRha2UsIHRha2VFdmVyeSB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cydcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyBnZXRBcHBDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnXG5pbXBvcnQgeyB3aW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2luZG93U2VydmljZSdcbmltcG9ydCB7XG5cdEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UsXG5cdENvZGVQcm92aWRlclNlcnZpY2UsXG5cdEhUVFBfU1RBVFVTX0NPREUsXG5cdE9BdXRoVG9rZW4sXG5cdE9BdXRoVG9rZW5SZXNwb25zZSxcblx0VGlja2V0UHJvdmlkZXJTZXJ2aWNlLFxuXHRUb2tlbkFjY2Vzc0Z1bmN0aW9uXG59IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UHVyZHVlSWRlbnRpdHlQcm92aWRlckZyb21Mb2NhdGlvbiwgaXNUb2tlbkV4cGlyZWQsIGlzVG9rZW5SZWZyZXNoYWJsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2F1dGgnXG5pbXBvcnQgeyBnZXRTZXJ2ZXJOb3dVdGMgfSBmcm9tICcuLi8uLi91dGlscy9kYXRlJ1xuaW1wb3J0IHsgZ2V0TG9nZ2VyLCBMb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInXG5pbXBvcnQgeyBiYXNlNjRVcmxFbmNvZGUsIHNoYTI1NkFzeW5jIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXJsJ1xuaW1wb3J0IHsgaXNVc2VySWRsZSB9IGZyb20gJy4uLy4uL3V0aWxzL3VzZXJBY3Rpdml0eSdcbmltcG9ydCB7XG5cdEFVVEhfQUNUSU9OX1RZUEUsXG5cdEFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdEFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSxcblx0QVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLFxuXHRBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRSxcblx0QVVUSF9UT0tFTl9BQ1RJT05fVFlQRSxcblx0QVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLFxuXHRBdXRoQWN0aW9uLFxuXHRBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24sXG5cdEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbixcblx0QXV0aExvZ091dEFjdGlvbixcblx0QXV0aFBLQ0VMb2dpblJlcXVlc3RBY3Rpb24sXG5cdEF1dGhUb2tlbkFjdGlvbixcblx0QXV0aFRva2VuU3VjY2Vzc0FjdGlvbixcblx0aXNUcmFuc2llbnRNb2RlbEZldGNoRXJyb3JBY3Rpb24sXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaFJlc3VsdEFjdGlvbixcblx0TU9ERUxfRkVUQ0hfRVJST1JfQUNUSU9OX1RZUEUsXG5cdE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsXG5cdE1vZGVsRmV0Y2hFcnJvckFjdGlvbixcblx0TW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24sXG5cdE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24sXG5cdE1vZGVsUmVtb3ZlS2V5QWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnXG5cbi8vI3JlZ2lvbiBIZWxwZXJzXG5cbmV4cG9ydCBjb25zdCBtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cblx0aXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gbW9kZWxOYW1lXG5cbmV4cG9ydCBjb25zdCB0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XG5cdG1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoaW5jb21pbmdBY3Rpb24sIG1vZGVsTmFtZSlcblxuZXhwb3J0IGNvbnN0IG1hdGNoZXNNb2RlbEZldGNoRmFpbGVkID0gKGFjdGlvbjogQW55QWN0aW9uLCBtb2RlbE5hbWU6IHN0cmluZykgPT5cblx0aXNUcmFuc2llbnRNb2RlbEZldGNoRXJyb3JBY3Rpb24oYWN0aW9uKSAmJiBhY3Rpb24ubW9kZWxQYXRoID09PSBtb2RlbE5hbWVcblxuZXhwb3J0IGNvbnN0IHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCA9IChtb2RlbE5hbWU6IHN0cmluZykgPT4gKGluY29taW5nQWN0aW9uOiBBbnlBY3Rpb24pID0+XG5cdG1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGluY29taW5nQWN0aW9uLCBtb2RlbE5hbWUpXG5cbi8vI2VuZHJlZ2lvbiBIZWxwZXJzXG5cbi8vI3JlZ2lvbiBMb2NhbCBWYXJpYWJsZXNcblxubGV0IGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2U6IEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VcbmxldCByZWZyZXNoTG9jazogYm9vbGVhblxubGV0IGxvZ2dlcjogTG9nZ2VyXG5cbi8vI2VuZHJlZ2lvbiBMb2NhbCBWYXJpYWJsZXNcblxuZXhwb3J0IGZ1bmN0aW9uKiBnZXRUb2tlbkZyb21Db2RlKGNvZGU6IHN0cmluZyk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGlmICghYXBwQ29uZmlnLkNMSUVOVF9JRCB8fCAhYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCBhbmQgQ0xJRU5UX1NFQ1JFVCBhcmUgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXHRjb25zdCBnZXRUb2tlbk1vZGVsTmFtZSA9ICdnZXRUb2tlbidcblx0Y29uc3QgZm9ybUJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcblx0XHRncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXG5cdFx0Y2xpZW50X3NlY3JldDogYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQsXG5cdFx0Y29kZTogY29kZVxuXHR9KVxuXHR5aWVsZCBwdXQ8TW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24+KHtcblx0XHR0eXBlOiBNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFLkZFVENIX1JFUVVFU1QsXG5cdFx0bW9kZWxOYW1lOiBnZXRUb2tlbk1vZGVsTmFtZSxcblx0XHRib2R5OiBmb3JtQm9keS50b1N0cmluZygpLFxuXHRcdG5vU3RvcmU6IHRydWVcblx0fSlcblx0Y29uc3Qge1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uLFxuXHRcdGZldGNoRXJyb3JBY3Rpb25cblx0fTogeyBmZXRjaFJlc3VsdEFjdGlvbj86IE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb247IGZldGNoRXJyb3JBY3Rpb24/OiBNb2RlbEZldGNoRXJyb3JBY3Rpb24gfSA9IHlpZWxkIHJhY2Uoe1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkKGdldFRva2VuTW9kZWxOYW1lKSksXG5cdFx0ZmV0Y2hFcnJvckFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKVxuXHR9KVxuXHRpZiAoZmV0Y2hFcnJvckFjdGlvbiB8fCAhZmV0Y2hSZXN1bHRBY3Rpb24/LmRhdGEpIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdHJldHVybiBmZXRjaFJlc3VsdEFjdGlvbi5kYXRhXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlKGNvZGU6IHN0cmluZywgc3RhdGU6IHN0cmluZyk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGlmICghYXBwQ29uZmlnLkNMSUVOVF9JRCB8fCAhYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUgfHwgIWFwcENvbmZpZy5PQVVUSF9QS0NFX0VORFBPSU5UKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDTElFTlRfSUQsIE9BVVRIX1BLQ0VfU0NPUEUsIGFuZCBPQVVUSF9QS0NFX0VORFBPSU5UIGFyZSByZXF1aXJlZCBpbiBBcHBDb25maWcnKVxuXHR9XG5cblx0Ly8gdmFsaWRhdGUgcGVyc2lzdGVkIHZhbHVlc1xuXHRjb25zdCBjb2RlVmVyaWZpZXIgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkQ29kZVZlcmlmaWVyKVxuXHRpZiAoIWNvZGVWZXJpZmllcikge1xuXHRcdHRocm93IG5ldyBFcnJvcignaW52YWxpZCBjb2RlX3ZlcmlmaWVyJylcblx0fVxuXHRjb25zdCBwZXJzaXN0ZWRTdGF0ZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRTdGF0ZSlcblx0aWYgKHBlcnNpc3RlZFN0YXRlICE9PSBzdGF0ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0ZScpXG5cdH1cblx0Ly8gY2xlYXIgcGVyc2lzdGVkIHZhbHVlc1xuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFN0YXRlLCBudWxsKVxuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdENvZGVWZXJpZmllciwgbnVsbClcblxuXHQvLyBkaXNwYXRjaCByZXF1ZXN0XG5cdGNvbnN0IGdldFRva2VuTW9kZWxOYW1lID0gJ2dldFRva2VuJ1xuXHRjb25zdCBsb2NhdGlvbiA9IHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKVxuXHRjb25zdCBmb3JtQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuXHRcdGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuXHRcdGNsaWVudF9pZDogYXBwQ29uZmlnLkNMSUVOVF9JRCxcblx0XHRzY29wZTogYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUsXG5cdFx0Y29kZV92ZXJpZmllcjogY29kZVZlcmlmaWVyLFxuXHRcdHJlZGlyZWN0X3VyaTogbG9jYXRpb24ub3JpZ2luLFxuXHRcdGNvZGU6IGNvZGVcblx0fSlcblx0eWllbGQgcHV0PE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uPih7XG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZTogZ2V0VG9rZW5Nb2RlbE5hbWUsXG5cdFx0Ym9keTogZm9ybUJvZHkudG9TdHJpbmcoKSxcblx0XHRub1N0b3JlOiB0cnVlXG5cdH0pXG5cdGNvbnN0IHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcblx0XHRmZXRjaEVycm9yQWN0aW9uXG5cdH06IHsgZmV0Y2hSZXN1bHRBY3Rpb24/OiBNb2RlbEZldGNoUmVzdWx0QWN0aW9uOyBmZXRjaEVycm9yQWN0aW9uPzogTW9kZWxGZXRjaEVycm9yQWN0aW9uIH0gPSB5aWVsZCByYWNlKHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGdldFRva2VuTW9kZWxOYW1lKSlcblx0fSlcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24gfHwgIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGdldFRva2VuRnJvbVJlZnJlc2hUb2tlbihvYXV0aFRva2VuUGFyYW06IE9BdXRoVG9rZW4pOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCBpcyByZXF1aXJlZCBpbiBBcHBDb25maWcnKVxuXHR9XG5cdGlmICghb2F1dGhUb2tlblBhcmFtLnJlZnJlc2hfdG9rZW4pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYHJlZnJlc2hfdG9rZW4gaXMgcmVxdWlyZWRgKVxuXHR9XG5cblx0Y29uc3QgZ2V0VG9rZW5Nb2RlbE5hbWUgPSAnZ2V0VG9rZW4nXG5cdGNvbnN0IGZvcm1Cb2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG5cdFx0Z3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuXHRcdGNsaWVudF9pZDogYXBwQ29uZmlnLkNMSUVOVF9JRCxcblx0XHRyZWZyZXNoX3Rva2VuOiBvYXV0aFRva2VuUGFyYW0ucmVmcmVzaF90b2tlblxuXHR9KVxuXHQvLyBjcmVhdGUgdGhlIGZvcm0gYm9keSBiYXNlZCBvbiBpZiB1c2luZyBhIGNsaWVudF9zZWNyZXQ6IHRyYWRpdGlvbmFsIE9BdXRoIHZzLiBQS0NFIGZsb3dcblx0aWYgKGFwcENvbmZpZy5DTElFTlRfU0VDUkVUKSB7XG5cdFx0Zm9ybUJvZHkuYXBwZW5kKCdjbGllbnRfc2VjcmV0JywgYXBwQ29uZmlnLkNMSUVOVF9TRUNSRVQpXG5cdH1cblx0eWllbGQgcHV0PE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uPih7XG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZTogZ2V0VG9rZW5Nb2RlbE5hbWUsXG5cdFx0Ym9keTogZm9ybUJvZHkudG9TdHJpbmcoKSxcblx0XHRub1N0b3JlOiB0cnVlXG5cdH0pXG5cdGNvbnN0IHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcblx0XHRmZXRjaEVycm9yQWN0aW9uXG5cdH06IHsgZmV0Y2hSZXN1bHRBY3Rpb24/OiBNb2RlbEZldGNoUmVzdWx0QWN0aW9uOyBmZXRjaEVycm9yQWN0aW9uPzogTW9kZWxGZXRjaEVycm9yQWN0aW9uIH0gPSB5aWVsZCByYWNlKHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGdldFRva2VuTW9kZWxOYW1lKSlcblx0fSlcblx0Ly8gYW55IGVycm9yIHJlc3BvbnNlXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uKSB7XG5cdFx0Ly8gaWdub3JlIHNlcnZlciBlcnJvcnNcblx0XHRpZiAoXG5cdFx0XHRmZXRjaEVycm9yQWN0aW9uLmVycm9yRGF0YT8uc3RhdHVzICYmXG5cdFx0XHRmZXRjaEVycm9yQWN0aW9uLmVycm9yRGF0YS5zdGF0dXMgPj0gSFRUUF9TVEFUVVNfQ09ERS5JTlRFUk5BTF9TRVJWRVJfRVJST1Jcblx0XHQpIHtcblx0XHRcdHJldHVybiBvYXV0aFRva2VuUGFyYW1cblx0XHR9XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHQvLyBmb3Igc29tZSByZWFzb24gdGhlIHJlc3BvbnNlIGhhZCBubyBib2R5XG5cdGlmICghZmV0Y2hSZXN1bHRBY3Rpb24/LmRhdGEpIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdHJldHVybiBmZXRjaFJlc3VsdEFjdGlvbi5kYXRhXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogcGVyZm9ybVRva2VuUmVmcmVzaChvYXV0aFRva2VuOiBPQXV0aFRva2VuKTogU2FnYUl0ZXJhdG9yIHtcblx0aWYgKHJlZnJlc2hMb2NrKSB7XG5cdFx0Ly8gYWxyZWFkeSByZWZyZXNoaW5nLCB3YWl0IGZvciB0aGUgY3VycmVudCByZWZyZXNoIHRvIHN1Y2NlZWQgb3IgZmFpbFxuXHRcdHlpZWxkIHJhY2Uoe1xuXHRcdFx0cmVmcmVzaFN1Y2Nlc3M6IHRha2UoQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLlRPS0VOX1JFRlJFU0hfU1VDQ0VFREVEKSxcblx0XHRcdHJlZnJlc2hGYWlsZWQ6IHRha2UoQVVUSF9BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX0ZBSUxFRClcblx0XHR9KVxuXHRcdC8vIHJldHVybiB0aGUgY3VycmVudCBwZXJzaXN0ZWQgdG9rZW5cblx0XHRyZXR1cm4geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXHR9XG5cdGxvZ2dlci5kZWJ1ZygnT0F1dGggdG9rZW4gcmVmcmVzaGluZy4uLicpXG5cdHJlZnJlc2hMb2NrID0gdHJ1ZVxuXHQvLyBvYXV0aFRva2VuIHdpbGwgYmUgc2V0IHRvOlxuXHQvLyAxLiBuZXcgdG9rZW4gKHN1Y2Nlc3MpXG5cdC8vIDIuIHNhbWUgdG9rZW4gKGZhaWxlZCBmcm9tIHRpbWVvdXQgb3Igc2VydmVyIGVycm9yKVxuXHQvLyAzLiBudWxsIChmYWlsKVxuXHRjb25zdCBvcmlnaW5hbEFjY2Vzc1Rva2VuID0gb2F1dGhUb2tlbi5hY2Nlc3NfdG9rZW5cblx0Y29uc3Qgb2F1dGhUb2tlblJlc3BvbnNlOiBPQXV0aFRva2VuUmVzcG9uc2UgPSB5aWVsZCBjYWxsKGdldFRva2VuRnJvbVJlZnJlc2hUb2tlbiwgb2F1dGhUb2tlbilcblx0aWYgKCEhb2F1dGhUb2tlblJlc3BvbnNlICYmIG9hdXRoVG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4gIT09IG9yaWdpbmFsQWNjZXNzVG9rZW4pIHtcblx0XHRsb2dnZXIuZGVidWcoJ09BdXRoIHRva2VuIHJlZnJlc2hlZCcpXG5cdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlblJlc3BvbnNlKVxuXHRcdHlpZWxkIHB1dDxBdXRoVG9rZW5TdWNjZXNzQWN0aW9uPih7XG5cdFx0XHR0eXBlOiBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQsXG5cdFx0XHRvYXV0aFRva2VuOiBvYXV0aFRva2VuUmVzcG9uc2Vcblx0XHR9KVxuXHR9IGVsc2UgaWYgKG9hdXRoVG9rZW5SZXNwb25zZSA9PT0gbnVsbCkge1xuXHRcdGxvZ2dlci5kZWJ1ZygnT0F1dGggdG9rZW4gZmFpbGVkIHRvIHJlZnJlc2gnKVxuXHRcdC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBvdXRzaWRlIG9mIHRoZSB0b2tlbiBoYXZpbmcgYmVlbiByZXZva2VkIG9uIHRoZSBzZXJ2ZXIgc2lkZVxuXHRcdHlpZWxkIGFsbCh7XG5cdFx0XHRyZWZyZXNoRmFpbGVkOiBwdXQ8QXV0aEFjdGlvbj4oeyB0eXBlOiBBVVRIX0FDVElPTl9UWVBFLlRPS0VOX1JFRlJFU0hfRkFJTEVEIH0pLFxuXHRcdFx0bG9nT3V0OiBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXG5cdFx0fSlcblx0fVxuXHRyZWZyZXNoTG9jayA9IGZhbHNlXG5cdHJldHVybiBvYXV0aFRva2VuUmVzcG9uc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBsb2dpbkZsb3cobW9kZWxGZXRjaFJlcXVlc3RBY3Rpb246IE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uKTogU2FnYUl0ZXJhdG9yIHtcblx0eWllbGQgcHV0KG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uKVxuXHRjb25zdCB7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb24sXG5cdFx0ZmV0Y2hFcnJvckFjdGlvblxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQobW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24ubW9kZWxOYW1lKSksXG5cdFx0ZmV0Y2hFcnJvckFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQobW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24ubW9kZWxOYW1lKSlcblx0fSlcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24pIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdGNvbnN0IGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGZldGNoUmVzdWx0QWN0aW9uPy5kYXRhPy5jb2RlXG5cdGlmICghY29kZSkge1xuXHRcdHJldHVybiBudWxsXG5cdH1cblx0cmV0dXJuIHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZSwgY29kZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjcmVkZW50aWFsc0xvZ2luRmxvdyhcblx0YWN0aW9uOiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24gfCBBdXRoTG9jYWxMb2dpblJlcXVlc3RBY3Rpb24sXG5cdG1vZGVsTmFtZTogc3RyaW5nXG4pOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBtb2RlbEZldGNoUmVxdWVzdEFjdGlvbjogTW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24gPSB7XG5cdFx0Ly8gc2V0IHJlcXVpcmVkIGRlZmF1bHRzXG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZSxcblx0XHRub1N0b3JlOiB0cnVlLFxuXHRcdC8vIGZvcmNlIG5vIHJldHJ5XG5cdFx0bm9SZXRyeTogdHJ1ZSxcblx0XHQvLyBwYXNzIHRocnUgYm9keVxuXHRcdGJvZHk6IGFjdGlvbi5ib2R5XG5cdH1cblx0cmV0dXJuIHlpZWxkIGNhbGwobG9naW5GbG93LCBtb2RlbEZldGNoUmVxdWVzdEFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjYXNWMUxvZ2luRmxvdyhhY3Rpb246IEF1dGhDYXNWMUxvZ2luUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdHJldHVybiB5aWVsZCBjYWxsKGNyZWRlbnRpYWxzTG9naW5GbG93LCBhY3Rpb24sICdjb2RlRnJvbUNhc1YxJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBsb2NhbExvZ2luRmxvdyhhY3Rpb246IEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdHJldHVybiB5aWVsZCBjYWxsKGNyZWRlbnRpYWxzTG9naW5GbG93LCBhY3Rpb24sICdjb2RlRnJvbUxvY2FsQ3JlZGVudGlhbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNhc1RpY2tldExvZ2luRmxvdyh0aWNrZXQ6IHN0cmluZywgc2VydmljZTogc3RyaW5nKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgbW9kZWxGZXRjaFJlcXVlc3RBY3Rpb246IE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uID0ge1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWU6ICdjb2RlRnJvbUNhc1RpY2tldCcsXG5cdFx0bm9TdG9yZTogdHJ1ZSxcblx0XHRxdWVyeVBhcmFtczoge1xuXHRcdFx0dGlja2V0LFxuXHRcdFx0c2VydmljZVxuXHRcdH1cblx0fVxuXHRyZXR1cm4geWllbGQgY2FsbChsb2dpbkZsb3csIG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uKVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIHBrY2VMb2dpbkZsb3coXzogQXV0aFBLQ0VMb2dpblJlcXVlc3RBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQgfHwgIWFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFIHx8ICFhcHBDb25maWcuT0FVVEhfUEtDRV9FTkRQT0lOVCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignQ0xJRU5UX0lELCBPQVVUSF9QS0NFX1NDT1BFLCBhbmQgT0FVVEhfUEtDRV9FTkRQT0lOVCBhcmUgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXG5cdC8vIEdlbmVyYXRlIHN0YXRlIGFuZCBjb2RlIHZlcmlmaWVyIHZhbHVlc1xuXHRjb25zdCBzdGF0ZSA9IHV1aWR2NCgpXG5cdGNvbnN0IGNvZGVWZXJpZmllciA9IHV1aWR2NCgpXG5cdGNvbnN0IHNoYTI1NkNvZGVWZXJpZmllciA9IHlpZWxkIGNhbGwoc2hhMjU2QXN5bmMsIGNvZGVWZXJpZmllcilcblx0Y29uc3QgY29kZUNoYWxsZW5nZSA9IHlpZWxkIGNhbGwoYmFzZTY0VXJsRW5jb2RlLCBzaGEyNTZDb2RlVmVyaWZpZXIpXG5cblx0Ly8gUGVyc2lzdCBzdGF0ZSBhbmQgY29kZSB2ZXJpZmllciBpbiBsb2NhbCBzdG9yYWdlIGZvciB1c2UgYWZ0ZXIgY29kZSBmbG93IHJlZGlyZWN0LlxuXHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFN0YXRlLCBzdGF0ZSlcblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RDb2RlVmVyaWZpZXIsIGNvZGVWZXJpZmllcilcblxuXHQvLyBSZWRpcmVjdCB0byBCUyBjb2RlIGZsb3cgYXV0aCBlbmRwb2ludCAod2hpY2ggd2lsbCByZWRpcmVjdCBiYWNrIGhlcmUpXG5cdGNvbnN0IGxvY2F0aW9uID0gd2luZG93U2VydmljZS5nZXRMb2NhdGlvbigpXG5cdGNvbnN0IHBrY2VBdXRoUmVkaXJlY3RVUkwgPSBgJHthcHBDb25maWcuT0FVVEhfUEtDRV9FTkRQT0lOVH0/JHtuZXcgVVJMU2VhcmNoUGFyYW1zKHtcblx0XHRyZXNwb25zZV90eXBlOiAnY29kZScsXG5cdFx0Y2xpZW50X2lkOiBhcHBDb25maWcuQ0xJRU5UX0lELFxuXHRcdHN0YXRlOiBzdGF0ZSxcblx0XHRzY29wZTogYXBwQ29uZmlnLk9BVVRIX1BLQ0VfU0NPUEUsXG5cdFx0Y29kZV9jaGFsbGVuZ2U6IGNvZGVDaGFsbGVuZ2UsXG5cdFx0Y29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NicsXG5cdFx0cmVkaXJlY3RfdXJpOiBsb2NhdGlvbi5vcmlnaW5cblx0fSl9YFxuXHR5aWVsZCBjYWxsKHdpbmRvd1NlcnZpY2UucmVwbGFjZSwgcGtjZUF1dGhSZWRpcmVjdFVSTClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBoYW5kbGVBdXRoRmFpbHVyZShhY3Rpb246IE1vZGVsRmV0Y2hFcnJvckFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdGlmICghYWN0aW9uLmVycm9yRGF0YSB8fCBhY3Rpb24uZXJyb3JEYXRhLnN0YXR1cyA9PT0gSFRUUF9TVEFUVVNfQ09ERS5VTkFVVEhPUklaRUQpIHJldHVyblxuXHRjb25zdCBvYXV0aFRva2VuOiBPQXV0aFRva2VuUmVzcG9uc2UgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkVG9rZW4pXG5cdGlmICghaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHJldHVyblxuXHQvLyBpZiBhIHJlcXVlc3QgcmVjZWl2ZXMgYSA0MDEsIHRoZSB0b2tlbiBpcyBleHBpcmVkIGFuZCBjYW5ub3QgcmVmcmVzaCwgdHJpZ2dlciBleHBpcmVkIGxvZyBvdXRcblx0Ly8gdGhpcyBpcyBhIGZhaWwtc2FmZSBpbiBjYXNlIHRoZSBgcmVmcmVzaExvb3BgIGhhcyBmYWlsZWRcblx0aWYgKCFpc1Rva2VuUmVmcmVzaGFibGUob2F1dGhUb2tlbikpIHtcblx0XHR5aWVsZCBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXG5cdFx0cmV0dXJuXG5cdH1cblx0Ly8gaWYgdG9rZW4gaXMgcmVmcmVzaGFibGUsIHdpdGhpbiAzMCBzZWNvbmRzIG9mIGV4cGlyYXRpb24sIGFuZCB1c2VyIGlzIG5vdCBpZGxlLCBhdXRvLXJlZnJlc2hcblx0Ly8gdGhpcyBpcyBhIGZhaWwtc2FmZSBpbiBjYXNlIHRoZSBgcmVmcmVzaExvb3BgIGhhcyBmYWlsZWRcblx0aWYgKCFpc1VzZXJJZGxlKCkpIHtcblx0XHRsb2dnZXIuZGVidWcoJ2hhbmRsZUF1dGhGYWlsdXJlIHRyaWdnZXIgYXV0by1yZWZyZXNoJylcblx0XHR5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldE9BdXRoVG9rZW46IFRva2VuQWNjZXNzRnVuY3Rpb24gPSBmdW5jdGlvbiogKCkge1xuXHRsZXQgb2F1dGhUb2tlbjogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXHRpZiAoIW9hdXRoVG9rZW4/LlsnLmV4cGlyZXMnXSkgcmV0dXJuIG9hdXRoVG9rZW5cblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0Y29uc3QgZXhwaXJlc1V0YyA9IG1vbWVudC51dGMob2F1dGhUb2tlblsnLmV4cGlyZXMnXSlcblx0Y29uc3Qgbm93VXRjID0gbW9tZW50LnV0YyhnZXRTZXJ2ZXJOb3dVdGMoKS50b0lTT1N0cmluZygpKVxuXHRjb25zdCBpc0V4cGlyaW5nU29vbiA9IGV4cGlyZXNVdGMuZGlmZihub3dVdGMpIDw9IGFwcENvbmZpZy5TRVNTSU9OX1JFRlJFU0hfVEhSRVNIT0xEXG5cdC8vIGlmIHRva2VuIGlzIHJlZnJlc2hhYmxlLCB3aXRoaW4gcmVmcmVzaCB0aHJlc2hvbGQsIGFuZCB1c2VyIGlzIG5vdCBpZGxlLCBhdXRvLXJlZnJlc2hcblx0Ly8gdGhpcyBpcyBhIGZhaWwtc2FmZSBpbiBjYXNlIHRoZSBgcmVmcmVzaExvb3BgIGhhcyBmYWlsZWRcblx0aWYgKGlzVG9rZW5SZWZyZXNoYWJsZShvYXV0aFRva2VuKSAmJiBpc0V4cGlyaW5nU29vbiAmJiAhaXNVc2VySWRsZSgpKSB7XG5cdFx0bG9nZ2VyLmRlYnVnKCdnZXRPQXV0aFRva2VuIHRyaWdnZXIgYXV0by1yZWZyZXNoJylcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHR9XG5cdHJldHVybiBvYXV0aFRva2VuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY2xlYXJVc2VyRGF0YUFuZFRva2VuKCk6IFNhZ2FJdGVyYXRvciB7XG5cdHlpZWxkIGFsbCh7XG5cdFx0Y2xlYXJVc2VyRGF0YTogcHV0PE1vZGVsUmVtb3ZlS2V5QWN0aW9uPih7IHR5cGU6IE1PREVMX1JFTU9WRV9LRVlfQUNUSU9OX1RZUEUsIG1vZGVsUGF0aDogJ3VzZXInIH0pLFxuXHRcdGNsZWFyUGVyc2lzdGVudFRva2VuOiBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFRva2VuLCBudWxsKVxuXHR9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIHJlZnJlc2hMb29wKCk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGxldCBvYXV0aFRva2VuOiBPQXV0aFRva2VuUmVzcG9uc2Vcblx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBpbml0Jylcblx0d2hpbGUgKHRydWUpIHtcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXG5cdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBzdGFydCcsIHtcblx0XHRcdG9hdXRoVG9rZW4sXG5cdFx0XHRpc0V4cGlyZWQ6IGlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pLFxuXHRcdFx0aXNSZWZyZXNoYWJsZTogaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pXG5cdFx0fSlcblxuXHRcdGlmICghaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XG5cdFx0XHRpZiAoaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHtcblx0XHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBicmVhazogdG9rZW4gZXhwaXJlZCBhbmQgbm90IHJlZnJlc2hhYmxlLCB0cmlnZ2VyIGV4cGlyZWQgbG9nIG91dCcpXG5cdFx0XHRcdC8vIHVzZXIgZmFpbGVkIHRvIHJlcXVlc3QgYW4gZXh0ZW5zaW9uIGFuZCB0b2tlbiBpcyBleHBpcmVkXG5cdFx0XHRcdHlpZWxkIHB1dDxBdXRoTG9nT3V0QWN0aW9uPih7IHR5cGU6IEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VULCB0b2tlbkV4cGlyZWQ6IHRydWUgfSlcblx0XHRcdFx0Ly8gYnJlYWsgbG9vcFxuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBicmVhazogdG9rZW4gbm90IHJlZnJlc2hhYmxlJylcblx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdFx0Y29uc3QgZXhwaXJlc1V0YyA9IG1vbWVudC51dGMob2F1dGhUb2tlblsnLmV4cGlyZXMnXSlcblx0XHRjb25zdCBub3dVdGMgPSBtb21lbnQudXRjKGdldFNlcnZlck5vd1V0YygpLnRvSVNPU3RyaW5nKCkpXG5cdFx0Y29uc3QgdGltZVVudGlsRXhwaXJlcyA9IGV4cGlyZXNVdGMuZGlmZihub3dVdGMpXG5cdFx0Y29uc3QgaXNFeHBpcmluZ1Nvb24gPSB0aW1lVW50aWxFeHBpcmVzIDw9IGFwcENvbmZpZy5TRVNTSU9OX1JFRlJFU0hfVEhSRVNIT0xEXG5cblx0XHRpZiAoIWlzRXhwaXJpbmdTb29uKSB7XG5cdFx0XHRjb25zdCBleHBpcmVzU29vblV0YyA9IGV4cGlyZXNVdGMuc3VidHJhY3QoYXBwQ29uZmlnLlNFU1NJT05fUkVGUkVTSF9USFJFU0hPTEQsICdtaWxsaXNlY29uZHMnKVxuXHRcdFx0Ly8gdXNlIGEgbWF4IGRlbGF5LCBlLmcuIDEgbWluIGZvciA2MCBtaW4gdG9rZW4sIDEgc2VjIGZvciA2MCBzZWMgdG9rZW5cblx0XHRcdC8vIHRvIGhlbHAgcmVkdWNlIHRpbWVyIGRyaWZ0IHdoZW4gdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kXG5cdFx0XHRjb25zdCBtYXhEZWxheSA9IChvYXV0aFRva2VuLmV4cGlyZXNfaW4gKiAxMDAwKSAvIDYwXG5cdFx0XHRjb25zdCBleHBpcmVzU29vbkRlbGF5ID0gTWF0aC5taW4obWF4RGVsYXksIGV4cGlyZXNTb29uVXRjLmRpZmYobm93VXRjKSlcblx0XHRcdGxvZ2dlci5kZWJ1ZyhgcmVmcmVzaExvb3AgZGVsYXk6IHdhaXQgZm9yIHRva2VuIHRvIGJlIGNsb3NlIHRvIGV4cGlyYXRpb24sIGRlbGF5aW5nICR7ZXhwaXJlc1Nvb25EZWxheX0gbXNgKVxuXHRcdFx0eWllbGQgZGVsYXkoZXhwaXJlc1Nvb25EZWxheSlcblx0XHRcdC8vIHJlc3RhcnQgbG9vcCB0byByZWNoZWNrIHRva2VuXG5cdFx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGRlbGF5OiBmaW5pc2hlZCcpXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgZXhwaXJpbmcgc29vbicpXG5cblx0XHQvLyBOT1RFOiB1c2VyIGNhbiBuZXZlciBiZSBpZGxlIG9uIExPQ0FMLCBzbyBsb2NhbCBzZXNzaW9ucyB3aWxsIHN0YXkgYWxpdmUgaW5kZWZpbml0ZWx5XG5cdFx0aWYgKCFpc1VzZXJJZGxlKCkpIHtcblx0XHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciBub3QgaWRsZSwgdHJpZ2dlciBhdXRvLXJlZnJlc2gnKVxuXHRcdFx0Ly8gYXV0b21hdGljYWxseSByZWZyZXNoIHRva2VuIHRvIGV4dGVuZCBzZXNzaW9uIGlmIHVzZXIgaXMgbm90IGlkbGVcblx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdFx0XHRjb250aW51ZVxuXHRcdH1cblxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciBpZGxlLCB0cmlnZ2VyIGV4cGlyaW5nIHNvb24nKVxuXG5cdFx0Ly8gaWYgdXNlciBpcyBpZGxlIGFuZCB0b2tlbiBpcyBleHBpcmluZyBzb29uLCBzZW5kIGFjdGlvbiB0byBkaXNwbGF5IEV4cGlyaW5nU2Vzc2lvbkFsZXJ0XG5cdFx0eWllbGQgcHV0PEF1dGhBY3Rpb24+KHsgdHlwZTogQVVUSF9BQ1RJT05fVFlQRS5FWFBJUklOR19TT09OIH0pXG5cdFx0Ly8gd2FpdCBmb3IgdXNlciB0byB0YWtlIGFuIGFjdGlvbiwgb3IgZm9yIHRva2VuIHRvIGV4cGlyZVxuXHRcdC8vIGlmIHVzZXIgbG9ncyBvdXQsIHRoZSByb290IGBhdXRoU2FnYWAgd2lsbCBjYW5jZWwgdGhpcyBsb29wXG5cdFx0Y29uc3QgeyB0b2tlbkV4cGlyZWQgfSA9IHlpZWxkIHJhY2Uoe1xuXHRcdFx0ZXh0ZW5zaW9uUmVxdWVzdGVkOiB0YWtlKEFVVEhfQUNUSU9OX1RZUEUuRVhURU5TSU9OX1JFUVVFU1RFRCksXG5cdFx0XHR0b2tlbkV4cGlyZWQ6IGRlbGF5KHRpbWVVbnRpbEV4cGlyZXMpXG5cdFx0fSlcblx0XHRpZiAodG9rZW5FeHBpcmVkKSB7XG5cdFx0XHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIHRva2VuIGV4cGlyZWQsIHRyaWdnZXIgZXhwaXJlZCBsb2cgb3V0Jylcblx0XHRcdC8vIHVzZXIgZmFpbGVkIHRvIHJlcXVlc3QgYW4gZXh0ZW5zaW9uIGFuZCB0b2tlbiBpcyBleHBpcmVkXG5cdFx0XHR5aWVsZCBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXG5cdFx0XHQvLyBicmVhayBsb29wXG5cdFx0XHRicmVha1xuXHRcdH1cblxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdXNlciB0cmlnZ2VyIHJlZnJlc2gnKVxuXG5cdFx0Ly8gdXNlciByZXF1ZXN0ZWQgZXh0ZW5zaW9uLCB0cmlnZ2VyIHRva2VuIHJlZnJlc2hcblx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHR9XG5cblx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBkb25lJylcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24qIGF1dGhTYWdhKFxuXHRhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlUGFyYW06IEF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UsXG5cdHRpY2tldFByb3ZpZGVyU2VydmljZTogVGlja2V0UHJvdmlkZXJTZXJ2aWNlLFxuXHRjb2RlUHJvdmlkZXJTZXJ2aWNlOiBDb2RlUHJvdmlkZXJTZXJ2aWNlXG4pOiBTYWdhSXRlcmF0b3Ige1xuXHRsb2dnZXIgPSBnZXRMb2dnZXIoKVxuXHRhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlID0gYXV0aFBlcnNpc3RlbmNlU2VydmljZVBhcmFtXG5cblx0Ly8gdHJ5IHRvIGdldCBwZXJzaXN0ZWQgdG9rZW4gKG5vcm1hbGx5IGluIEFzeW5jU3RvcmFnZSBvciBMb2NhbFN0b3JhZ2UpXG5cdGxldCBvYXV0aFRva2VuOiBPQXV0aFRva2VuUmVzcG9uc2UgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkVG9rZW4pXG5cblx0Ly8gaWYgdG9rZW4gaXMgZXhwaXJlZCwgdHJ5IHRvIHJlZnJlc2ggaXQgYmVmb3JlIGluaXRpYWxpemluZyBhdXRoXG5cdC8vIGlmIHVuYWJsZSB0byByZWZyZXNoLCBjbGVhciBkYXRhIGFuZCBpbml0IGF1dGggd2l0aCBubyB0b2tlblxuXHRpZiAoaXNUb2tlbkV4cGlyZWQob2F1dGhUb2tlbikpIHtcblx0XHRpZiAoaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRsb2dnZXIuZGVidWcoJ3Rva2VuIGV4cGlyZWQsIGNsZWFyIHBlcnNpc3RlZCB1c2VyIGRhdGEgYW5kIHRva2VuJylcblx0XHRcdG9hdXRoVG9rZW4gPSBudWxsXG5cdFx0XHQvLyBjbGVhciB0aGUgZXhwaXJlZCB0b2tlbiBhbmQgdXNlciBkYXRhIGZyb20gc3RvcmFnZVxuXHRcdFx0eWllbGQgY2FsbChjbGVhclVzZXJEYXRhQW5kVG9rZW4pXG5cdFx0fVxuXHR9XG5cblx0Ly8gZ2V0IGF1dGggcGFyYW1ldGVyc1xuXHRjb25zdCBjYXNUaWNrZXQgPSB0aWNrZXRQcm92aWRlclNlcnZpY2UuZ2V0VGlja2V0KClcblx0Y29uc3Qgc2VydmljZSA9IHRpY2tldFByb3ZpZGVyU2VydmljZS5nZXRBcHBTZXJ2aWNlTmFtZSgpXG5cdGNvbnN0IGhhc0Nhc1RpY2tldCA9ICEhY2FzVGlja2V0ICYmICEhc2VydmljZVxuXG5cdGNvbnN0IGNvZGUgPSBjb2RlUHJvdmlkZXJTZXJ2aWNlLmdldENvZGUoKVxuXHRjb25zdCBzdGF0ZSA9IGNvZGVQcm92aWRlclNlcnZpY2UuZ2V0U3RhdGUoKVxuXG5cdC8vIGF1dG8tbG9naW4gLyBTU08gZm9yIFB1cmR1ZVxuXHRjb25zdCBwdXJkdWVJZGVudGl0eVByb3ZpZGVyID0geWllbGQgY2FsbChnZXRQdXJkdWVJZGVudGl0eVByb3ZpZGVyRnJvbUxvY2F0aW9uKVxuXHRpZiAocHVyZHVlSWRlbnRpdHlQcm92aWRlcikge1xuXHRcdGNvbnN0IGlzQ2FzR2F0ZXdheVJlcXVlc3RlZDogYm9vbGVhbiA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRJc0Nhc0dhdGV3YXlSZXF1ZXN0ZWQpXG5cblx0XHQvLyBzdGFydCBhdXRvLWxvZ2luIC8gU1NPLCBpZiBub3QgYWxyZWFkeSByZXF1ZXN0ZWQsIG5vdCBhdXRoZW50aWNhdGVkLCBhbmQgaGFzIG5vIHZhbGlkIGF1dGggcGFyYW1ldGVyc1xuXHRcdGlmICghaXNDYXNHYXRld2F5UmVxdWVzdGVkICYmICFvYXV0aFRva2VuICYmICFoYXNDYXNUaWNrZXQgJiYgIWNvZGUpIHtcblx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0SXNDYXNHYXRld2F5UmVxdWVzdGVkLCB0cnVlKVxuXHRcdFx0Ly8gc3RvcmUgcGF0aG5hbWUgZm9yIHBvc3QtbG9naW4gcmVkaXJlY3QgaWYgbm90IGFscmVhZHkgc2V0XG5cdFx0XHQvLyBjb3VsZCBoYXZlIGJlZW4gc2V0IGZyb20gdXNlciBsb2dnaW5nIG91dCwgc2VlIGBBdXRoZW50aWNhdGVkQ29tcG9uZW50YFxuXHRcdFx0Y29uc3QgcmV0dXJuVXJsID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFJldHVyblVybClcblx0XHRcdGlmICghcmV0dXJuVXJsKSB7XG5cdFx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0UmV0dXJuVXJsLCB3aW5kb3dTZXJ2aWNlLmdldExvY2F0aW9uKCkucGF0aG5hbWUpXG5cdFx0XHR9XG5cdFx0XHR5aWVsZCBjYWxsKHdpbmRvd1NlcnZpY2UucmVwbGFjZSwgcHVyZHVlSWRlbnRpdHlQcm92aWRlci5sb2dpblVybClcblx0XHRcdHJldHVyblxuXHRcdH1cblxuXHRcdC8vIGZpbmlzaCBhdXRvLWxvZ2luIHByb2Nlc3MsIGlmIGl0IHdhcyByZXF1ZXN0ZWQgYW5kIGhhcyBhIHZhbGlkIGF1dGggcGFyYW1ldGVyXG5cdFx0aWYgKGlzQ2FzR2F0ZXdheVJlcXVlc3RlZCAmJiAoaGFzQ2FzVGlja2V0IHx8IGNvZGUpKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdElzQ2FzR2F0ZXdheVJlcXVlc3RlZCwgZmFsc2UpXG5cdFx0XHQvLyBwZXJzaXN0IFB1cmR1ZSBpZGVudGl0eVByb3ZpZGVyIGZvciBgaWRlbnRpdHlQcm92aWRlclNhZ2FgIGxvZ291dCBsb2dpY1xuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RJZGVudGl0eVByb3ZpZGVyLCBwdXJkdWVJZGVudGl0eVByb3ZpZGVyKVxuXHRcdFx0Ly8gY29udGludWUgdG8gZXhjaGFuZ2luZyBDQVMgYHRpY2tldGAgb3IgYGNvZGVgIGZvciB0b2tlblxuXHRcdH1cblx0fVxuXG5cdC8vIGlmIENBUyB0aWNrZXQgZXhpc3RzIChub3JtYWxseSBpbiB0aGUgVVJMKSwgdXNlIGl0IHRvIGdldCBhIG5ldyB0b2tlblxuXHRpZiAoaGFzQ2FzVGlja2V0KSB7XG5cdFx0dGlja2V0UHJvdmlkZXJTZXJ2aWNlLnJlbW92ZVRpY2tldCgpXG5cblx0XHQvLyBjbGVhciB0aGUgY3VycmVudCB0b2tlbiBhbmQgdXNlciBkYXRhIGlmIGEgbmV3IHRva2VuIGlzIGFib3V0IHRvIGJlIGdlbmVyYXRlZFxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGNsZWFyVXNlckRhdGFBbmRUb2tlbilcblx0XHRcdG9hdXRoVG9rZW4gPSBudWxsXG5cdFx0fVxuXHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGNhc1RpY2tldExvZ2luRmxvdywgY2FzVGlja2V0LCBzZXJ2aWNlKVxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFRva2VuLCBvYXV0aFRva2VuKVxuXHRcdH1cblx0fVxuXG5cdC8vIGlmIE9BdXRoIENvZGUgZXhpc3RzIChub3JtYWxseSBpbiB0aGUgVVJMKSwgdXNlIGl0IHRvIGdldCBhIG5ldyB0b2tlblxuXHRpZiAoY29kZSkge1xuXHRcdGNvZGVQcm92aWRlclNlcnZpY2UucmVtb3ZlQ29kZUFuZFN0YXRlKClcblxuXHRcdC8vIGNsZWFyIHRoZSBjdXJyZW50IHRva2VuIGFuZCB1c2VyIGRhdGEgaWYgYSBuZXcgdG9rZW4gaXMgYWJvdXQgdG8gYmUgZ2VuZXJhdGVkXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGNhbGwoY2xlYXJVc2VyRGF0YUFuZFRva2VuKVxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0XHR9XG5cblx0XHQvLyBpZiBPQXV0aCBzdGF0ZSBleGlzdHMgKG5vcm1hbGx5IGluIHRoZSBVUkwpLCB1c2UgaXQgaW4gYWRkaXRpb24gdG8gdGhlIGNvZGUgZm9yIFBLQ0UgbG9naW4gZmxvd1xuXHRcdGlmIChzdGF0ZSkge1xuXHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlLCBjb2RlLCBzdGF0ZSlcblx0XHR9IGVsc2Uge1xuXHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoZ2V0VG9rZW5Gcm9tQ29kZSwgY29kZSlcblx0XHR9XG5cblx0XHRpZiAob2F1dGhUb2tlbikge1xuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlbilcblx0XHR9XG5cdH1cblxuXHR5aWVsZCBwdXQ8QXV0aFRva2VuQWN0aW9uPih7IHR5cGU6IEFVVEhfVE9LRU5fQUNUSU9OX1RZUEUuQVVUSF9JTklUSUFMSVpFRCwgb2F1dGhUb2tlbiB9KVxuXG5cdHlpZWxkIHRha2VFdmVyeShNT0RFTF9GRVRDSF9FUlJPUl9BQ1RJT05fVFlQRS5UUllfRkVUQ0hfRkFJTEVELCBoYW5kbGVBdXRoRmFpbHVyZSlcblxuXHRkbyB7XG5cdFx0aWYgKCFvYXV0aFRva2VuKSB7XG5cdFx0XHRjb25zdCB7XG5cdFx0XHRcdGNhc1YxQWN0aW9uLFxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uLFxuXHRcdFx0XHRwa2NlTG9naW5BY3Rpb25cblx0XHRcdH06IHtcblx0XHRcdFx0Y2FzVjFBY3Rpb24/OiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb25cblx0XHRcdFx0bG9jYWxMb2dpbkFjdGlvbj86IEF1dGhMb2NhbExvZ2luUmVxdWVzdEFjdGlvblxuXHRcdFx0XHRwa2NlTG9naW5BY3Rpb24/OiBBdXRoUEtDRUxvZ2luUmVxdWVzdEFjdGlvblxuXHRcdFx0fSA9IHlpZWxkIHJhY2Uoe1xuXHRcdFx0XHRjYXNWMUFjdGlvbjogdGFrZShBVVRIX0NBU19WMV9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFLkNBU19WMV9MT0dJTl9SRVFVRVNUKSxcblx0XHRcdFx0bG9jYWxMb2dpbkFjdGlvbjogdGFrZShBVVRIX0xPQ0FMX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUuTE9DQUxfTE9HSU5fUkVRVUVTVCksXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvbjogdGFrZShBVVRIX1BLQ0VfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRS5QS0NFX0xPR0lOX1JFUVVFU1QpXG5cdFx0XHR9KVxuXG5cdFx0XHR5aWVsZCBwdXQ8QXV0aEFjdGlvbj4oeyB0eXBlOiBBVVRIX0FDVElPTl9UWVBFLkxPR0lOX1JFUVVFU1RFRCB9KVxuXHRcdFx0aWYgKGNhc1YxQWN0aW9uKSB7XG5cdFx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGNhc1YxTG9naW5GbG93LCBjYXNWMUFjdGlvbilcblx0XHRcdH0gZWxzZSBpZiAobG9jYWxMb2dpbkFjdGlvbikge1xuXHRcdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChsb2NhbExvZ2luRmxvdywgbG9jYWxMb2dpbkFjdGlvbilcblx0XHRcdH0gZWxzZSBpZiAocGtjZUxvZ2luQWN0aW9uKSB7XG5cdFx0XHRcdC8vIG9hdXRoVG9rZW4gaXMgbm90IHJldHVybmVkIGhlcmUsIGFzIHRoaXMgZmxvdyB3aWxsIHJlc3VsdCBpbiBhIHdpbmRvdyByZWRpcmVjdFxuXHRcdFx0XHR5aWVsZCBjYWxsKHBrY2VMb2dpbkZsb3csIHBrY2VMb2dpbkFjdGlvbilcblx0XHRcdFx0Ly8gYnJlYWsgZXhlY3V0aW9uXG5cdFx0XHRcdHJldHVyblxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBhbGwoe1xuXHRcdFx0XHRwZXJzaXN0VG9rZW46IGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG9hdXRoVG9rZW4pLFxuXHRcdFx0XHRsb2dpblN1Y2Nlc3M6IHB1dDxBdXRoVG9rZW5TdWNjZXNzQWN0aW9uPih7XG5cdFx0XHRcdFx0dHlwZTogQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLkdFVF9UT0tFTl9TVUNDRUVERUQsXG5cdFx0XHRcdFx0b2F1dGhUb2tlblxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblxuXHRcdFx0Ly8gc3RhcnQgbm9uLWJsb2NraW5nIHJlZnJlc2ggbG9vcFxuXHRcdFx0Y29uc3QgcmVmcmVzaExvb3BUYXNrOiBUYXNrID0geWllbGQgZm9yayhyZWZyZXNoTG9vcClcblxuXHRcdFx0Ly8gaWYgdXNlciBsb2dzIG91dCBvciB0b2tlbiBleHBpcmVzLCBjYW5jZWwgdGhlIHJlZnJlc2ggbG9vcFxuXHRcdFx0eWllbGQgdGFrZShBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVClcblx0XHRcdHlpZWxkIGNhbmNlbChyZWZyZXNoTG9vcFRhc2spXG5cdFx0fSBlbHNlIHtcblx0XHRcdHlpZWxkIHB1dDxBdXRoQWN0aW9uPih7IHR5cGU6IEFVVEhfQUNUSU9OX1RZUEUuTE9HSU5fRkFJTEVEIH0pXG5cdFx0fVxuXG5cdFx0eWllbGQgY2FsbChjbGVhclVzZXJEYXRhQW5kVG9rZW4pXG5cdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0fSB3aGlsZSAodHJ1ZSlcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFBQSxlQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFTQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxJQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxhQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxRQUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "studiokit-scaffolding-js",
3
- "version": "7.6.1-next.2.21",
3
+ "version": "7.6.1-next.2.22",
4
4
  "description": "Common scaffolding for Studio apps at Purdue",
5
5
  "repository": "https://gitlab.com/purdue-informatics/studiokit/studiokit-scaffolding-js",
6
6
  "license": "MIT",