studiokit-scaffolding-js 7.6.1-next.2.21 → 7.6.1-next.2.23
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,12 +373,13 @@ 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);
|
|
380
380
|
// restart loop to recheck token
|
|
381
|
-
|
|
381
|
+
const elapsed = _momentTimezone.default.utc((0, _date.getServerNowUtc)().toISOString()).diff(nowUtc);
|
|
382
|
+
logger.debug(`refreshLoop delay: finished after ${elapsed} ms`);
|
|
382
383
|
continue;
|
|
383
384
|
}
|
|
384
385
|
logger.debug('refreshLoop expiring soon');
|
|
@@ -564,4 +565,4 @@ function* authSaga(authPersistenceServiceParam, ticketProviderService, codeProvi
|
|
|
564
565
|
oauthToken = null;
|
|
565
566
|
} while (true);
|
|
566
567
|
}
|
|
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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
|
|
568
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50VGltZXpvbmUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lZmZlY3RzIiwiX3V1aWQiLCJfY29uc3RhbnRzIiwiX3dpbmRvd1NlcnZpY2UiLCJfdHlwZXMiLCJfYXV0aCIsIl9kYXRlIiwiX2xvZ2dlciIsIl91cmwiLCJfdXNlckFjdGl2aXR5IiwiX2FjdGlvbnMiLCJtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiYWN0aW9uIiwibW9kZWxOYW1lIiwiaXNUcmFuc2llbnRNb2RlbEZldGNoUmVzdWx0QWN0aW9uIiwibW9kZWxQYXRoIiwiZXhwb3J0cyIsInRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkIiwiaW5jb21pbmdBY3Rpb24iLCJtYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCIsImlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uIiwidGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkIiwiYXV0aFBlcnNpc3RlbmNlU2VydmljZSIsInJlZnJlc2hMb2NrIiwibG9nZ2VyIiwiZ2V0VG9rZW5Gcm9tQ29kZSIsImNvZGUiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJDTElFTlRfSUQiLCJDTElFTlRfU0VDUkVUIiwiRXJyb3IiLCJnZXRUb2tlbk1vZGVsTmFtZSIsImZvcm1Cb2R5IiwiVVJMU2VhcmNoUGFyYW1zIiwiZ3JhbnRfdHlwZSIsImNsaWVudF9pZCIsImNsaWVudF9zZWNyZXQiLCJwdXQiLCJ0eXBlIiwiTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRSIsIkZFVENIX1JFUVVFU1QiLCJib2R5IiwidG9TdHJpbmciLCJub1N0b3JlIiwiZmV0Y2hSZXN1bHRBY3Rpb24iLCJmZXRjaEVycm9yQWN0aW9uIiwicmFjZSIsInRha2UiLCJkYXRhIiwiZ2V0VG9rZW5Gcm9tQ29kZUFuZFN0YXRlIiwic3RhdGUiLCJPQVVUSF9QS0NFX1NDT1BFIiwiT0FVVEhfUEtDRV9FTkRQT0lOVCIsImNvZGVWZXJpZmllciIsImNhbGwiLCJnZXRQZXJzaXN0ZWRDb2RlVmVyaWZpZXIiLCJwZXJzaXN0ZWRTdGF0ZSIsImdldFBlcnNpc3RlZFN0YXRlIiwicGVyc2lzdFN0YXRlIiwicGVyc2lzdENvZGVWZXJpZmllciIsImxvY2F0aW9uIiwid2luZG93U2VydmljZSIsImdldExvY2F0aW9uIiwic2NvcGUiLCJjb2RlX3ZlcmlmaWVyIiwicmVkaXJlY3RfdXJpIiwib3JpZ2luIiwiZ2V0VG9rZW5Gcm9tUmVmcmVzaFRva2VuIiwib2F1dGhUb2tlblBhcmFtIiwicmVmcmVzaF90b2tlbiIsImFwcGVuZCIsImVycm9yRGF0YSIsInN0YXR1cyIsIkhUVFBfU1RBVFVTX0NPREUiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJwZXJmb3JtVG9rZW5SZWZyZXNoIiwib2F1dGhUb2tlbiIsInJlZnJlc2hTdWNjZXNzIiwiQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFIiwiVE9LRU5fUkVGUkVTSF9TVUNDRUVERUQiLCJyZWZyZXNoRmFpbGVkIiwiQVVUSF9BQ1RJT05fVFlQRSIsIlRPS0VOX1JFRlJFU0hfRkFJTEVEIiwiZ2V0UGVyc2lzdGVkVG9rZW4iLCJkZWJ1ZyIsIm9yaWdpbmFsQWNjZXNzVG9rZW4iLCJhY2Nlc3NfdG9rZW4iLCJvYXV0aFRva2VuUmVzcG9uc2UiLCJwZXJzaXN0VG9rZW4iLCJhbGwiLCJsb2dPdXQiLCJBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUiLCJMT0dfT1VUIiwidG9rZW5FeHBpcmVkIiwibG9naW5GbG93IiwibW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24iLCJjcmVkZW50aWFsc0xvZ2luRmxvdyIsIm5vUmV0cnkiLCJjYXNWMUxvZ2luRmxvdyIsImxvY2FsTG9naW5GbG93IiwiY2FzVGlja2V0TG9naW5GbG93IiwidGlja2V0Iiwic2VydmljZSIsInF1ZXJ5UGFyYW1zIiwicGtjZUxvZ2luRmxvdyIsIl8iLCJ1dWlkdjQiLCJzaGEyNTZDb2RlVmVyaWZpZXIiLCJzaGEyNTZBc3luYyIsImNvZGVDaGFsbGVuZ2UiLCJiYXNlNjRVcmxFbmNvZGUiLCJwa2NlQXV0aFJlZGlyZWN0VVJMIiwicmVzcG9uc2VfdHlwZSIsImNvZGVfY2hhbGxlbmdlIiwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwicmVwbGFjZSIsImhhbmRsZUF1dGhGYWlsdXJlIiwiVU5BVVRIT1JJWkVEIiwiaXNUb2tlbkV4cGlyZWQiLCJpc1Rva2VuUmVmcmVzaGFibGUiLCJpc1VzZXJJZGxlIiwiZ2V0T0F1dGhUb2tlbiIsImV4cGlyZXNVdGMiLCJtb21lbnQiLCJ1dGMiLCJub3dVdGMiLCJnZXRTZXJ2ZXJOb3dVdGMiLCJ0b0lTT1N0cmluZyIsImlzRXhwaXJpbmdTb29uIiwiZGlmZiIsIlNFU1NJT05fUkVGUkVTSF9USFJFU0hPTEQiLCJjbGVhclVzZXJEYXRhQW5kVG9rZW4iLCJjbGVhclVzZXJEYXRhIiwiTU9ERUxfUkVNT1ZFX0tFWV9BQ1RJT05fVFlQRSIsImNsZWFyUGVyc2lzdGVudFRva2VuIiwicmVmcmVzaExvb3AiLCJpc0V4cGlyZWQiLCJpc1JlZnJlc2hhYmxlIiwidGltZVVudGlsRXhwaXJlcyIsImV4cGlyZXNTb29uVXRjIiwic3VidHJhY3QiLCJtYXhEZWxheSIsImV4cGlyZXNfaW4iLCJleHBpcmVzU29vbkRlbGF5IiwiTWF0aCIsIm1pbiIsImRlbGF5IiwiZWxhcHNlZCIsIkVYUElSSU5HX1NPT04iLCJleHRlbnNpb25SZXF1ZXN0ZWQiLCJFWFRFTlNJT05fUkVRVUVTVEVEIiwiYXV0aFNhZ2EiLCJhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlUGFyYW0iLCJ0aWNrZXRQcm92aWRlclNlcnZpY2UiLCJjb2RlUHJvdmlkZXJTZXJ2aWNlIiwiZ2V0TG9nZ2VyIiwiY2FzVGlja2V0IiwiZ2V0VGlja2V0IiwiZ2V0QXBwU2VydmljZU5hbWUiLCJoYXNDYXNUaWNrZXQiLCJnZXRDb2RlIiwiZ2V0U3RhdGUiLCJwdXJkdWVJZGVudGl0eVByb3ZpZGVyIiwiZ2V0UHVyZHVlSWRlbnRpdHlQcm92aWRlckZyb21Mb2NhdGlvbiIsImlzQ2FzR2F0ZXdheVJlcXVlc3RlZCIsImdldElzQ2FzR2F0ZXdheVJlcXVlc3RlZCIsInBlcnNpc3RJc0Nhc0dhdGV3YXlSZXF1ZXN0ZWQiLCJyZXR1cm5VcmwiLCJnZXRSZXR1cm5VcmwiLCJwZXJzaXN0UmV0dXJuVXJsIiwicGF0aG5hbWUiLCJsb2dpblVybCIsInBlcnNpc3RJZGVudGl0eVByb3ZpZGVyIiwicmVtb3ZlVGlja2V0IiwicmVtb3ZlQ29kZUFuZFN0YXRlIiwiQVVUSF9UT0tFTl9BQ1RJT05fVFlQRSIsIkFVVEhfSU5JVElBTElaRUQiLCJ0YWtlRXZlcnkiLCJNT0RFTF9GRVRDSF9FUlJPUl9BQ1RJT05fVFlQRSIsIlRSWV9GRVRDSF9GQUlMRUQiLCJjYXNWMUFjdGlvbiIsImxvY2FsTG9naW5BY3Rpb24iLCJwa2NlTG9naW5BY3Rpb24iLCJBVVRIX0NBU19WMV9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFIiwiQ0FTX1YxX0xPR0lOX1JFUVVFU1QiLCJBVVRIX0xPQ0FMX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUiLCJMT0NBTF9MT0dJTl9SRVFVRVNUIiwiQVVUSF9QS0NFX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUiLCJQS0NFX0xPR0lOX1JFUVVFU1QiLCJMT0dJTl9SRVFVRVNURUQiLCJsb2dpblN1Y2Nlc3MiLCJHRVRfVE9LRU5fU1VDQ0VFREVEIiwicmVmcmVzaExvb3BUYXNrIiwiZm9yayIsImNhbmNlbCIsIkxPR0lOX0ZBSUxFRCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWR1eC9zYWdhcy9hdXRoU2FnYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWdhSXRlcmF0b3IsIFRhc2sgfSBmcm9tICdAcmVkdXgtc2FnYS9jb3JlJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnXG5pbXBvcnQgeyBBbnlBY3Rpb24gfSBmcm9tICdyZWR1eCdcbmltcG9ydCB7IGFsbCwgY2FsbCwgY2FuY2VsLCBkZWxheSwgZm9yaywgcHV0LCByYWNlLCB0YWtlLCB0YWtlRXZlcnkgfSBmcm9tICdyZWR1eC1zYWdhL2VmZmVjdHMnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgZ2V0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgd2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dpbmRvd1NlcnZpY2UnXG5pbXBvcnQge1xuXHRBdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLFxuXHRDb2RlUHJvdmlkZXJTZXJ2aWNlLFxuXHRIVFRQX1NUQVRVU19DT0RFLFxuXHRPQXV0aFRva2VuLFxuXHRPQXV0aFRva2VuUmVzcG9uc2UsXG5cdFRpY2tldFByb3ZpZGVyU2VydmljZSxcblx0VG9rZW5BY2Nlc3NGdW5jdGlvblxufSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFB1cmR1ZUlkZW50aXR5UHJvdmlkZXJGcm9tTG9jYXRpb24sIGlzVG9rZW5FeHBpcmVkLCBpc1Rva2VuUmVmcmVzaGFibGUgfSBmcm9tICcuLi8uLi91dGlscy9hdXRoJ1xuaW1wb3J0IHsgZ2V0U2VydmVyTm93VXRjIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZSdcbmltcG9ydCB7IGdldExvZ2dlciwgTG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyJ1xuaW1wb3J0IHsgYmFzZTY0VXJsRW5jb2RlLCBzaGEyNTZBc3luYyB9IGZyb20gJy4uLy4uL3V0aWxzL3VybCdcbmltcG9ydCB7IGlzVXNlcklkbGUgfSBmcm9tICcuLi8uLi91dGlscy91c2VyQWN0aXZpdHknXG5pbXBvcnQge1xuXHRBVVRIX0FDVElPTl9UWVBFLFxuXHRBVVRIX0NBU19WMV9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFLFxuXHRBVVRIX0xPQ0FMX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRSxcblx0QVVUSF9QS0NFX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUsXG5cdEFVVEhfVE9LRU5fQUNUSU9OX1RZUEUsXG5cdEFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRSxcblx0QXV0aEFjdGlvbixcblx0QXV0aENhc1YxTG9naW5SZXF1ZXN0QWN0aW9uLFxuXHRBdXRoTG9jYWxMb2dpblJlcXVlc3RBY3Rpb24sXG5cdEF1dGhMb2dPdXRBY3Rpb24sXG5cdEF1dGhQS0NFTG9naW5SZXF1ZXN0QWN0aW9uLFxuXHRBdXRoVG9rZW5BY3Rpb24sXG5cdEF1dGhUb2tlblN1Y2Nlc3NBY3Rpb24sXG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uLFxuXHRpc1RyYW5zaWVudE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb24sXG5cdE1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFLFxuXHRNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFLFxuXHRNT0RFTF9SRU1PVkVfS0VZX0FDVElPTl9UWVBFLFxuXHRNb2RlbEZldGNoRXJyb3JBY3Rpb24sXG5cdE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uLFxuXHRNb2RlbEZldGNoUmVzdWx0QWN0aW9uLFxuXHRNb2RlbFJlbW92ZUtleUFjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJ1xuXG4vLyNyZWdpb24gSGVscGVyc1xuXG5leHBvcnQgY29uc3QgbWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZCA9IChhY3Rpb246IEFueUFjdGlvbiwgbW9kZWxOYW1lOiBzdHJpbmcpID0+XG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaFJlc3VsdEFjdGlvbihhY3Rpb24pICYmIGFjdGlvbi5tb2RlbFBhdGggPT09IG1vZGVsTmFtZVxuXG5leHBvcnQgY29uc3QgdGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQgPSAobW9kZWxOYW1lOiBzdHJpbmcpID0+IChpbmNvbWluZ0FjdGlvbjogQW55QWN0aW9uKSA9PlxuXHRtYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkKGluY29taW5nQWN0aW9uLCBtb2RlbE5hbWUpXG5cbmV4cG9ydCBjb25zdCBtYXRjaGVzTW9kZWxGZXRjaEZhaWxlZCA9IChhY3Rpb246IEFueUFjdGlvbiwgbW9kZWxOYW1lOiBzdHJpbmcpID0+XG5cdGlzVHJhbnNpZW50TW9kZWxGZXRjaEVycm9yQWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLm1vZGVsUGF0aCA9PT0gbW9kZWxOYW1lXG5cbmV4cG9ydCBjb25zdCB0YWtlTWF0Y2hlc01vZGVsRmV0Y2hGYWlsZWQgPSAobW9kZWxOYW1lOiBzdHJpbmcpID0+IChpbmNvbWluZ0FjdGlvbjogQW55QWN0aW9uKSA9PlxuXHRtYXRjaGVzTW9kZWxGZXRjaEZhaWxlZChpbmNvbWluZ0FjdGlvbiwgbW9kZWxOYW1lKVxuXG4vLyNlbmRyZWdpb24gSGVscGVyc1xuXG4vLyNyZWdpb24gTG9jYWwgVmFyaWFibGVzXG5cbmxldCBhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlOiBBdXRoUGVyc2lzdGVuY2VTZXJ2aWNlXG5sZXQgcmVmcmVzaExvY2s6IGJvb2xlYW5cbmxldCBsb2dnZXI6IExvZ2dlclxuXG4vLyNlbmRyZWdpb24gTG9jYWwgVmFyaWFibGVzXG5cbmV4cG9ydCBmdW5jdGlvbiogZ2V0VG9rZW5Gcm9tQ29kZShjb2RlOiBzdHJpbmcpOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQgfHwgIWFwcENvbmZpZy5DTElFTlRfU0VDUkVUKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDTElFTlRfSUQgYW5kIENMSUVOVF9TRUNSRVQgYXJlIHJlcXVpcmVkIGluIEFwcENvbmZpZycpXG5cdH1cblx0Y29uc3QgZ2V0VG9rZW5Nb2RlbE5hbWUgPSAnZ2V0VG9rZW4nXG5cdGNvbnN0IGZvcm1Cb2R5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG5cdFx0Z3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXG5cdFx0Y2xpZW50X2lkOiBhcHBDb25maWcuQ0xJRU5UX0lELFxuXHRcdGNsaWVudF9zZWNyZXQ6IGFwcENvbmZpZy5DTElFTlRfU0VDUkVULFxuXHRcdGNvZGU6IGNvZGVcblx0fSlcblx0eWllbGQgcHV0PE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uPih7XG5cdFx0dHlwZTogTU9ERUxfRkVUQ0hfUkVRVUVTVF9BQ1RJT05fVFlQRS5GRVRDSF9SRVFVRVNULFxuXHRcdG1vZGVsTmFtZTogZ2V0VG9rZW5Nb2RlbE5hbWUsXG5cdFx0Ym9keTogZm9ybUJvZHkudG9TdHJpbmcoKSxcblx0XHRub1N0b3JlOiB0cnVlXG5cdH0pXG5cdGNvbnN0IHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbixcblx0XHRmZXRjaEVycm9yQWN0aW9uXG5cdH06IHsgZmV0Y2hSZXN1bHRBY3Rpb24/OiBNb2RlbEZldGNoUmVzdWx0QWN0aW9uOyBmZXRjaEVycm9yQWN0aW9uPzogTW9kZWxGZXRjaEVycm9yQWN0aW9uIH0gPSB5aWVsZCByYWNlKHtcblx0XHRmZXRjaFJlc3VsdEFjdGlvbjogdGFrZSh0YWtlTWF0Y2hlc01vZGVsRmV0Y2hSZWNlaXZlZChnZXRUb2tlbk1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKGdldFRva2VuTW9kZWxOYW1lKSlcblx0fSlcblx0aWYgKGZldGNoRXJyb3JBY3Rpb24gfHwgIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGdldFRva2VuRnJvbUNvZGVBbmRTdGF0ZShjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRpZiAoIWFwcENvbmZpZy5DTElFTlRfSUQgfHwgIWFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFIHx8ICFhcHBDb25maWcuT0FVVEhfUEtDRV9FTkRQT0lOVCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignQ0xJRU5UX0lELCBPQVVUSF9QS0NFX1NDT1BFLCBhbmQgT0FVVEhfUEtDRV9FTkRQT0lOVCBhcmUgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXG5cdC8vIHZhbGlkYXRlIHBlcnNpc3RlZCB2YWx1ZXNcblx0Y29uc3QgY29kZVZlcmlmaWVyID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZENvZGVWZXJpZmllcilcblx0aWYgKCFjb2RlVmVyaWZpZXIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY29kZV92ZXJpZmllcicpXG5cdH1cblx0Y29uc3QgcGVyc2lzdGVkU3RhdGUgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UGVyc2lzdGVkU3RhdGUpXG5cdGlmIChwZXJzaXN0ZWRTdGF0ZSAhPT0gc3RhdGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc3RhdGUnKVxuXHR9XG5cdC8vIGNsZWFyIHBlcnNpc3RlZCB2YWx1ZXNcblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RTdGF0ZSwgbnVsbClcblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RDb2RlVmVyaWZpZXIsIG51bGwpXG5cblx0Ly8gZGlzcGF0Y2ggcmVxdWVzdFxuXHRjb25zdCBnZXRUb2tlbk1vZGVsTmFtZSA9ICdnZXRUb2tlbidcblx0Y29uc3QgbG9jYXRpb24gPSB3aW5kb3dTZXJ2aWNlLmdldExvY2F0aW9uKClcblx0Y29uc3QgZm9ybUJvZHkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcblx0XHRncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXG5cdFx0c2NvcGU6IGFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFLFxuXHRcdGNvZGVfdmVyaWZpZXI6IGNvZGVWZXJpZmllcixcblx0XHRyZWRpcmVjdF91cmk6IGxvY2F0aW9uLm9yaWdpbixcblx0XHRjb2RlOiBjb2RlXG5cdH0pXG5cdHlpZWxkIHB1dDxNb2RlbEZldGNoUmVxdWVzdEFjdGlvbj4oe1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWU6IGdldFRva2VuTW9kZWxOYW1lLFxuXHRcdGJvZHk6IGZvcm1Cb2R5LnRvU3RyaW5nKCksXG5cdFx0bm9TdG9yZTogdHJ1ZVxuXHR9KVxuXHRjb25zdCB7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb24sXG5cdFx0ZmV0Y2hFcnJvckFjdGlvblxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKSxcblx0XHRmZXRjaEVycm9yQWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZChnZXRUb2tlbk1vZGVsTmFtZSkpXG5cdH0pXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uIHx8ICFmZXRjaFJlc3VsdEFjdGlvbj8uZGF0YSkge1xuXHRcdHJldHVybiBudWxsXG5cdH1cblx0cmV0dXJuIGZldGNoUmVzdWx0QWN0aW9uLmRhdGFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBnZXRUb2tlbkZyb21SZWZyZXNoVG9rZW4ob2F1dGhUb2tlblBhcmFtOiBPQXV0aFRva2VuKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0aWYgKCFhcHBDb25maWcuQ0xJRU5UX0lEKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDTElFTlRfSUQgaXMgcmVxdWlyZWQgaW4gQXBwQ29uZmlnJylcblx0fVxuXHRpZiAoIW9hdXRoVG9rZW5QYXJhbS5yZWZyZXNoX3Rva2VuKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGByZWZyZXNoX3Rva2VuIGlzIHJlcXVpcmVkYClcblx0fVxuXG5cdGNvbnN0IGdldFRva2VuTW9kZWxOYW1lID0gJ2dldFRva2VuJ1xuXHRjb25zdCBmb3JtQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuXHRcdGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcblx0XHRjbGllbnRfaWQ6IGFwcENvbmZpZy5DTElFTlRfSUQsXG5cdFx0cmVmcmVzaF90b2tlbjogb2F1dGhUb2tlblBhcmFtLnJlZnJlc2hfdG9rZW5cblx0fSlcblx0Ly8gY3JlYXRlIHRoZSBmb3JtIGJvZHkgYmFzZWQgb24gaWYgdXNpbmcgYSBjbGllbnRfc2VjcmV0OiB0cmFkaXRpb25hbCBPQXV0aCB2cy4gUEtDRSBmbG93XG5cdGlmIChhcHBDb25maWcuQ0xJRU5UX1NFQ1JFVCkge1xuXHRcdGZvcm1Cb2R5LmFwcGVuZCgnY2xpZW50X3NlY3JldCcsIGFwcENvbmZpZy5DTElFTlRfU0VDUkVUKVxuXHR9XG5cdHlpZWxkIHB1dDxNb2RlbEZldGNoUmVxdWVzdEFjdGlvbj4oe1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWU6IGdldFRva2VuTW9kZWxOYW1lLFxuXHRcdGJvZHk6IGZvcm1Cb2R5LnRvU3RyaW5nKCksXG5cdFx0bm9TdG9yZTogdHJ1ZVxuXHR9KVxuXHRjb25zdCB7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb24sXG5cdFx0ZmV0Y2hFcnJvckFjdGlvblxuXHR9OiB7IGZldGNoUmVzdWx0QWN0aW9uPzogTW9kZWxGZXRjaFJlc3VsdEFjdGlvbjsgZmV0Y2hFcnJvckFjdGlvbj86IE1vZGVsRmV0Y2hFcnJvckFjdGlvbiB9ID0geWllbGQgcmFjZSh7XG5cdFx0ZmV0Y2hSZXN1bHRBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoUmVjZWl2ZWQoZ2V0VG9rZW5Nb2RlbE5hbWUpKSxcblx0XHRmZXRjaEVycm9yQWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaEZhaWxlZChnZXRUb2tlbk1vZGVsTmFtZSkpXG5cdH0pXG5cdC8vIGFueSBlcnJvciByZXNwb25zZVxuXHRpZiAoZmV0Y2hFcnJvckFjdGlvbikge1xuXHRcdC8vIGlnbm9yZSBzZXJ2ZXIgZXJyb3JzXG5cdFx0aWYgKFxuXHRcdFx0ZmV0Y2hFcnJvckFjdGlvbi5lcnJvckRhdGE/LnN0YXR1cyAmJlxuXHRcdFx0ZmV0Y2hFcnJvckFjdGlvbi5lcnJvckRhdGEuc3RhdHVzID49IEhUVFBfU1RBVFVTX0NPREUuSU5URVJOQUxfU0VSVkVSX0VSUk9SXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gb2F1dGhUb2tlblBhcmFtXG5cdFx0fVxuXHRcdHJldHVybiBudWxsXG5cdH1cblx0Ly8gZm9yIHNvbWUgcmVhc29uIHRoZSByZXNwb25zZSBoYWQgbm8gYm9keVxuXHRpZiAoIWZldGNoUmVzdWx0QWN0aW9uPy5kYXRhKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRyZXR1cm4gZmV0Y2hSZXN1bHRBY3Rpb24uZGF0YVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIHBlcmZvcm1Ub2tlblJlZnJlc2gob2F1dGhUb2tlbjogT0F1dGhUb2tlbik6IFNhZ2FJdGVyYXRvciB7XG5cdGlmIChyZWZyZXNoTG9jaykge1xuXHRcdC8vIGFscmVhZHkgcmVmcmVzaGluZywgd2FpdCBmb3IgdGhlIGN1cnJlbnQgcmVmcmVzaCB0byBzdWNjZWVkIG9yIGZhaWxcblx0XHR5aWVsZCByYWNlKHtcblx0XHRcdHJlZnJlc2hTdWNjZXNzOiB0YWtlKEFVVEhfVE9LRU5fU1VDQ0VTU19BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX1NVQ0NFRURFRCksXG5cdFx0XHRyZWZyZXNoRmFpbGVkOiB0YWtlKEFVVEhfQUNUSU9OX1RZUEUuVE9LRU5fUkVGUkVTSF9GQUlMRUQpXG5cdFx0fSlcblx0XHQvLyByZXR1cm4gdGhlIGN1cnJlbnQgcGVyc2lzdGVkIHRva2VuXG5cdFx0cmV0dXJuIHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcblx0fVxuXHRsb2dnZXIuZGVidWcoJ09BdXRoIHRva2VuIHJlZnJlc2hpbmcuLi4nKVxuXHRyZWZyZXNoTG9jayA9IHRydWVcblx0Ly8gb2F1dGhUb2tlbiB3aWxsIGJlIHNldCB0bzpcblx0Ly8gMS4gbmV3IHRva2VuIChzdWNjZXNzKVxuXHQvLyAyLiBzYW1lIHRva2VuIChmYWlsZWQgZnJvbSB0aW1lb3V0IG9yIHNlcnZlciBlcnJvcilcblx0Ly8gMy4gbnVsbCAoZmFpbClcblx0Y29uc3Qgb3JpZ2luYWxBY2Nlc3NUb2tlbiA9IG9hdXRoVG9rZW4uYWNjZXNzX3Rva2VuXG5cdGNvbnN0IG9hdXRoVG9rZW5SZXNwb25zZTogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChnZXRUb2tlbkZyb21SZWZyZXNoVG9rZW4sIG9hdXRoVG9rZW4pXG5cdGlmICghIW9hdXRoVG9rZW5SZXNwb25zZSAmJiBvYXV0aFRva2VuUmVzcG9uc2UuYWNjZXNzX3Rva2VuICE9PSBvcmlnaW5hbEFjY2Vzc1Rva2VuKSB7XG5cdFx0bG9nZ2VyLmRlYnVnKCdPQXV0aCB0b2tlbiByZWZyZXNoZWQnKVxuXHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG9hdXRoVG9rZW5SZXNwb25zZSlcblx0XHR5aWVsZCBwdXQ8QXV0aFRva2VuU3VjY2Vzc0FjdGlvbj4oe1xuXHRcdFx0dHlwZTogQVVUSF9UT0tFTl9TVUNDRVNTX0FDVElPTl9UWVBFLlRPS0VOX1JFRlJFU0hfU1VDQ0VFREVELFxuXHRcdFx0b2F1dGhUb2tlbjogb2F1dGhUb2tlblJlc3BvbnNlXG5cdFx0fSlcblx0fSBlbHNlIGlmIChvYXV0aFRva2VuUmVzcG9uc2UgPT09IG51bGwpIHtcblx0XHRsb2dnZXIuZGVidWcoJ09BdXRoIHRva2VuIGZhaWxlZCB0byByZWZyZXNoJylcblx0XHQvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gb3V0c2lkZSBvZiB0aGUgdG9rZW4gaGF2aW5nIGJlZW4gcmV2b2tlZCBvbiB0aGUgc2VydmVyIHNpZGVcblx0XHR5aWVsZCBhbGwoe1xuXHRcdFx0cmVmcmVzaEZhaWxlZDogcHV0PEF1dGhBY3Rpb24+KHsgdHlwZTogQVVUSF9BQ1RJT05fVFlQRS5UT0tFTl9SRUZSRVNIX0ZBSUxFRCB9KSxcblx0XHRcdGxvZ091dDogcHV0PEF1dGhMb2dPdXRBY3Rpb24+KHsgdHlwZTogQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLkxPR19PVVQsIHRva2VuRXhwaXJlZDogdHJ1ZSB9KVxuXHRcdH0pXG5cdH1cblx0cmVmcmVzaExvY2sgPSBmYWxzZVxuXHRyZXR1cm4gb2F1dGhUb2tlblJlc3BvbnNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogbG9naW5GbG93KG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uOiBNb2RlbEZldGNoUmVxdWVzdEFjdGlvbik6IFNhZ2FJdGVyYXRvciB7XG5cdHlpZWxkIHB1dChtb2RlbEZldGNoUmVxdWVzdEFjdGlvbilcblx0Y29uc3Qge1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uLFxuXHRcdGZldGNoRXJyb3JBY3Rpb25cblx0fTogeyBmZXRjaFJlc3VsdEFjdGlvbj86IE1vZGVsRmV0Y2hSZXN1bHRBY3Rpb247IGZldGNoRXJyb3JBY3Rpb24/OiBNb2RlbEZldGNoRXJyb3JBY3Rpb24gfSA9IHlpZWxkIHJhY2Uoe1xuXHRcdGZldGNoUmVzdWx0QWN0aW9uOiB0YWtlKHRha2VNYXRjaGVzTW9kZWxGZXRjaFJlY2VpdmVkKG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uLm1vZGVsTmFtZSkpLFxuXHRcdGZldGNoRXJyb3JBY3Rpb246IHRha2UodGFrZU1hdGNoZXNNb2RlbEZldGNoRmFpbGVkKG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uLm1vZGVsTmFtZSkpXG5cdH0pXG5cdGlmIChmZXRjaEVycm9yQWN0aW9uKSB7XG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXHRjb25zdCBjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBmZXRjaFJlc3VsdEFjdGlvbj8uZGF0YT8uY29kZVxuXHRpZiAoIWNvZGUpIHtcblx0XHRyZXR1cm4gbnVsbFxuXHR9XG5cdHJldHVybiB5aWVsZCBjYWxsKGdldFRva2VuRnJvbUNvZGUsIGNvZGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY3JlZGVudGlhbHNMb2dpbkZsb3coXG5cdGFjdGlvbjogQXV0aENhc1YxTG9naW5SZXF1ZXN0QWN0aW9uIHwgQXV0aExvY2FsTG9naW5SZXF1ZXN0QWN0aW9uLFxuXHRtb2RlbE5hbWU6IHN0cmluZ1xuKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgbW9kZWxGZXRjaFJlcXVlc3RBY3Rpb246IE1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uID0ge1xuXHRcdC8vIHNldCByZXF1aXJlZCBkZWZhdWx0c1xuXHRcdHR5cGU6IE1PREVMX0ZFVENIX1JFUVVFU1RfQUNUSU9OX1RZUEUuRkVUQ0hfUkVRVUVTVCxcblx0XHRtb2RlbE5hbWUsXG5cdFx0bm9TdG9yZTogdHJ1ZSxcblx0XHQvLyBmb3JjZSBubyByZXRyeVxuXHRcdG5vUmV0cnk6IHRydWUsXG5cdFx0Ly8gcGFzcyB0aHJ1IGJvZHlcblx0XHRib2R5OiBhY3Rpb24uYm9keVxuXHR9XG5cdHJldHVybiB5aWVsZCBjYWxsKGxvZ2luRmxvdywgbW9kZWxGZXRjaFJlcXVlc3RBY3Rpb24pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogY2FzVjFMb2dpbkZsb3coYWN0aW9uOiBBdXRoQ2FzVjFMb2dpblJlcXVlc3RBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRyZXR1cm4geWllbGQgY2FsbChjcmVkZW50aWFsc0xvZ2luRmxvdywgYWN0aW9uLCAnY29kZUZyb21DYXNWMScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogbG9jYWxMb2dpbkZsb3coYWN0aW9uOiBBdXRoTG9jYWxMb2dpblJlcXVlc3RBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRyZXR1cm4geWllbGQgY2FsbChjcmVkZW50aWFsc0xvZ2luRmxvdywgYWN0aW9uLCAnY29kZUZyb21Mb2NhbENyZWRlbnRpYWxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjYXNUaWNrZXRMb2dpbkZsb3codGlja2V0OiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZyk6IFNhZ2FJdGVyYXRvciB7XG5cdGNvbnN0IG1vZGVsRmV0Y2hSZXF1ZXN0QWN0aW9uOiBNb2RlbEZldGNoUmVxdWVzdEFjdGlvbiA9IHtcblx0XHR0eXBlOiBNT0RFTF9GRVRDSF9SRVFVRVNUX0FDVElPTl9UWVBFLkZFVENIX1JFUVVFU1QsXG5cdFx0bW9kZWxOYW1lOiAnY29kZUZyb21DYXNUaWNrZXQnLFxuXHRcdG5vU3RvcmU6IHRydWUsXG5cdFx0cXVlcnlQYXJhbXM6IHtcblx0XHRcdHRpY2tldCxcblx0XHRcdHNlcnZpY2Vcblx0XHR9XG5cdH1cblx0cmV0dXJuIHlpZWxkIGNhbGwobG9naW5GbG93LCBtb2RlbEZldGNoUmVxdWVzdEFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBwa2NlTG9naW5GbG93KF86IEF1dGhQS0NFTG9naW5SZXF1ZXN0QWN0aW9uKTogU2FnYUl0ZXJhdG9yIHtcblx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcblx0aWYgKCFhcHBDb25maWcuQ0xJRU5UX0lEIHx8ICFhcHBDb25maWcuT0FVVEhfUEtDRV9TQ09QRSB8fCAhYXBwQ29uZmlnLk9BVVRIX1BLQ0VfRU5EUE9JTlQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NMSUVOVF9JRCwgT0FVVEhfUEtDRV9TQ09QRSwgYW5kIE9BVVRIX1BLQ0VfRU5EUE9JTlQgYXJlIHJlcXVpcmVkIGluIEFwcENvbmZpZycpXG5cdH1cblxuXHQvLyBHZW5lcmF0ZSBzdGF0ZSBhbmQgY29kZSB2ZXJpZmllciB2YWx1ZXNcblx0Y29uc3Qgc3RhdGUgPSB1dWlkdjQoKVxuXHRjb25zdCBjb2RlVmVyaWZpZXIgPSB1dWlkdjQoKVxuXHRjb25zdCBzaGEyNTZDb2RlVmVyaWZpZXIgPSB5aWVsZCBjYWxsKHNoYTI1NkFzeW5jLCBjb2RlVmVyaWZpZXIpXG5cdGNvbnN0IGNvZGVDaGFsbGVuZ2UgPSB5aWVsZCBjYWxsKGJhc2U2NFVybEVuY29kZSwgc2hhMjU2Q29kZVZlcmlmaWVyKVxuXG5cdC8vIFBlcnNpc3Qgc3RhdGUgYW5kIGNvZGUgdmVyaWZpZXIgaW4gbG9jYWwgc3RvcmFnZSBmb3IgdXNlIGFmdGVyIGNvZGUgZmxvdyByZWRpcmVjdC5cblx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RTdGF0ZSwgc3RhdGUpXG5cdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0Q29kZVZlcmlmaWVyLCBjb2RlVmVyaWZpZXIpXG5cblx0Ly8gUmVkaXJlY3QgdG8gQlMgY29kZSBmbG93IGF1dGggZW5kcG9pbnQgKHdoaWNoIHdpbGwgcmVkaXJlY3QgYmFjayBoZXJlKVxuXHRjb25zdCBsb2NhdGlvbiA9IHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKVxuXHRjb25zdCBwa2NlQXV0aFJlZGlyZWN0VVJMID0gYCR7YXBwQ29uZmlnLk9BVVRIX1BLQ0VfRU5EUE9JTlR9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7XG5cdFx0cmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxuXHRcdGNsaWVudF9pZDogYXBwQ29uZmlnLkNMSUVOVF9JRCxcblx0XHRzdGF0ZTogc3RhdGUsXG5cdFx0c2NvcGU6IGFwcENvbmZpZy5PQVVUSF9QS0NFX1NDT1BFLFxuXHRcdGNvZGVfY2hhbGxlbmdlOiBjb2RlQ2hhbGxlbmdlLFxuXHRcdGNvZGVfY2hhbGxlbmdlX21ldGhvZDogJ1MyNTYnLFxuXHRcdHJlZGlyZWN0X3VyaTogbG9jYXRpb24ub3JpZ2luXG5cdH0pfWBcblx0eWllbGQgY2FsbCh3aW5kb3dTZXJ2aWNlLnJlcGxhY2UsIHBrY2VBdXRoUmVkaXJlY3RVUkwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaGFuZGxlQXV0aEZhaWx1cmUoYWN0aW9uOiBNb2RlbEZldGNoRXJyb3JBY3Rpb24pOiBTYWdhSXRlcmF0b3Ige1xuXHRpZiAoIWFjdGlvbi5lcnJvckRhdGEgfHwgYWN0aW9uLmVycm9yRGF0YS5zdGF0dXMgPT09IEhUVFBfU1RBVFVTX0NPREUuVU5BVVRIT1JJWkVEKSByZXR1cm5cblx0Y29uc3Qgb2F1dGhUb2tlbjogT0F1dGhUb2tlblJlc3BvbnNlID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldFBlcnNpc3RlZFRva2VuKVxuXHRpZiAoIWlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pKSByZXR1cm5cblx0Ly8gaWYgYSByZXF1ZXN0IHJlY2VpdmVzIGEgNDAxLCB0aGUgdG9rZW4gaXMgZXhwaXJlZCBhbmQgY2Fubm90IHJlZnJlc2gsIHRyaWdnZXIgZXhwaXJlZCBsb2cgb3V0XG5cdC8vIHRoaXMgaXMgYSBmYWlsLXNhZmUgaW4gY2FzZSB0aGUgYHJlZnJlc2hMb29wYCBoYXMgZmFpbGVkXG5cdGlmICghaXNUb2tlblJlZnJlc2hhYmxlKG9hdXRoVG9rZW4pKSB7XG5cdFx0eWllbGQgcHV0PEF1dGhMb2dPdXRBY3Rpb24+KHsgdHlwZTogQVVUSF9MT0dfT1VUX0FDVElPTl9UWVBFLkxPR19PVVQsIHRva2VuRXhwaXJlZDogdHJ1ZSB9KVxuXHRcdHJldHVyblxuXHR9XG5cdC8vIGlmIHRva2VuIGlzIHJlZnJlc2hhYmxlLCB3aXRoaW4gMzAgc2Vjb25kcyBvZiBleHBpcmF0aW9uLCBhbmQgdXNlciBpcyBub3QgaWRsZSwgYXV0by1yZWZyZXNoXG5cdC8vIHRoaXMgaXMgYSBmYWlsLXNhZmUgaW4gY2FzZSB0aGUgYHJlZnJlc2hMb29wYCBoYXMgZmFpbGVkXG5cdGlmICghaXNVc2VySWRsZSgpKSB7XG5cdFx0bG9nZ2VyLmRlYnVnKCdoYW5kbGVBdXRoRmFpbHVyZSB0cmlnZ2VyIGF1dG8tcmVmcmVzaCcpXG5cdFx0eWllbGQgY2FsbChwZXJmb3JtVG9rZW5SZWZyZXNoLCBvYXV0aFRva2VuKVxuXHR9XG59XG5cbmV4cG9ydCBjb25zdCBnZXRPQXV0aFRva2VuOiBUb2tlbkFjY2Vzc0Z1bmN0aW9uID0gZnVuY3Rpb24qICgpIHtcblx0bGV0IG9hdXRoVG9rZW46IE9BdXRoVG9rZW5SZXNwb25zZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcblx0aWYgKCFvYXV0aFRva2VuPy5bJy5leHBpcmVzJ10pIHJldHVybiBvYXV0aFRva2VuXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGNvbnN0IGV4cGlyZXNVdGMgPSBtb21lbnQudXRjKG9hdXRoVG9rZW5bJy5leHBpcmVzJ10pXG5cdGNvbnN0IG5vd1V0YyA9IG1vbWVudC51dGMoZ2V0U2VydmVyTm93VXRjKCkudG9JU09TdHJpbmcoKSlcblx0Y29uc3QgaXNFeHBpcmluZ1Nvb24gPSBleHBpcmVzVXRjLmRpZmYobm93VXRjKSA8PSBhcHBDb25maWcuU0VTU0lPTl9SRUZSRVNIX1RIUkVTSE9MRFxuXHQvLyBpZiB0b2tlbiBpcyByZWZyZXNoYWJsZSwgd2l0aGluIHJlZnJlc2ggdGhyZXNob2xkLCBhbmQgdXNlciBpcyBub3QgaWRsZSwgYXV0by1yZWZyZXNoXG5cdC8vIHRoaXMgaXMgYSBmYWlsLXNhZmUgaW4gY2FzZSB0aGUgYHJlZnJlc2hMb29wYCBoYXMgZmFpbGVkXG5cdGlmIChpc1Rva2VuUmVmcmVzaGFibGUob2F1dGhUb2tlbikgJiYgaXNFeHBpcmluZ1Nvb24gJiYgIWlzVXNlcklkbGUoKSkge1xuXHRcdGxvZ2dlci5kZWJ1ZygnZ2V0T0F1dGhUb2tlbiB0cmlnZ2VyIGF1dG8tcmVmcmVzaCcpXG5cdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwocGVyZm9ybVRva2VuUmVmcmVzaCwgb2F1dGhUb2tlbilcblx0fVxuXHRyZXR1cm4gb2F1dGhUb2tlblxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGNsZWFyVXNlckRhdGFBbmRUb2tlbigpOiBTYWdhSXRlcmF0b3Ige1xuXHR5aWVsZCBhbGwoe1xuXHRcdGNsZWFyVXNlckRhdGE6IHB1dDxNb2RlbFJlbW92ZUtleUFjdGlvbj4oeyB0eXBlOiBNT0RFTF9SRU1PVkVfS0VZX0FDVElPTl9UWVBFLCBtb2RlbFBhdGg6ICd1c2VyJyB9KSxcblx0XHRjbGVhclBlcnNpc3RlbnRUb2tlbjogY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgbnVsbClcblx0fSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiByZWZyZXNoTG9vcCgpOiBTYWdhSXRlcmF0b3Ige1xuXHRjb25zdCBhcHBDb25maWcgPSBnZXRBcHBDb25maWcoKVxuXHRsZXQgb2F1dGhUb2tlbjogT0F1dGhUb2tlblJlc3BvbnNlXG5cdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgaW5pdCcpXG5cdHdoaWxlICh0cnVlKSB7XG5cdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcblxuXHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3Agc3RhcnQnLCB7XG5cdFx0XHRvYXV0aFRva2VuLFxuXHRcdFx0aXNFeHBpcmVkOiBpc1Rva2VuRXhwaXJlZChvYXV0aFRva2VuKSxcblx0XHRcdGlzUmVmcmVzaGFibGU6IGlzVG9rZW5SZWZyZXNoYWJsZShvYXV0aFRva2VuKVxuXHRcdH0pXG5cblx0XHRpZiAoIWlzVG9rZW5SZWZyZXNoYWJsZShvYXV0aFRva2VuKSkge1xuXHRcdFx0aWYgKGlzVG9rZW5FeHBpcmVkKG9hdXRoVG9rZW4pKSB7XG5cdFx0XHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgYnJlYWs6IHRva2VuIGV4cGlyZWQgYW5kIG5vdCByZWZyZXNoYWJsZSwgdHJpZ2dlciBleHBpcmVkIGxvZyBvdXQnKVxuXHRcdFx0XHQvLyB1c2VyIGZhaWxlZCB0byByZXF1ZXN0IGFuIGV4dGVuc2lvbiBhbmQgdG9rZW4gaXMgZXhwaXJlZFxuXHRcdFx0XHR5aWVsZCBwdXQ8QXV0aExvZ091dEFjdGlvbj4oeyB0eXBlOiBBVVRIX0xPR19PVVRfQUNUSU9OX1RZUEUuTE9HX09VVCwgdG9rZW5FeHBpcmVkOiB0cnVlIH0pXG5cdFx0XHRcdC8vIGJyZWFrIGxvb3Bcblx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgYnJlYWs6IHRva2VuIG5vdCByZWZyZXNoYWJsZScpXG5cdFx0XHRicmVha1xuXHRcdH1cblxuXHRcdGNvbnN0IGV4cGlyZXNVdGMgPSBtb21lbnQudXRjKG9hdXRoVG9rZW5bJy5leHBpcmVzJ10pXG5cdFx0Y29uc3Qgbm93VXRjID0gbW9tZW50LnV0YyhnZXRTZXJ2ZXJOb3dVdGMoKS50b0lTT1N0cmluZygpKVxuXHRcdGNvbnN0IHRpbWVVbnRpbEV4cGlyZXMgPSBleHBpcmVzVXRjLmRpZmYobm93VXRjKVxuXHRcdGNvbnN0IGlzRXhwaXJpbmdTb29uID0gdGltZVVudGlsRXhwaXJlcyA8PSBhcHBDb25maWcuU0VTU0lPTl9SRUZSRVNIX1RIUkVTSE9MRFxuXG5cdFx0aWYgKCFpc0V4cGlyaW5nU29vbikge1xuXHRcdFx0Y29uc3QgZXhwaXJlc1Nvb25VdGMgPSBleHBpcmVzVXRjLnN1YnRyYWN0KGFwcENvbmZpZy5TRVNTSU9OX1JFRlJFU0hfVEhSRVNIT0xELCAnbWlsbGlzZWNvbmRzJylcblx0XHRcdC8vIHVzZSBhIG1heCBkZWxheSwgZS5nLiAxIG1pbiBmb3IgNjAgbWluIHRva2VuLCAxIHNlYyBmb3IgNjAgc2VjIHRva2VuXG5cdFx0XHQvLyB0byBoZWxwIHJlZHVjZSB0aW1lciBkcmlmdCB3aGVuIHRhYiBpcyBpbiB0aGUgYmFja2dyb3VuZFxuXHRcdFx0Y29uc3QgbWF4RGVsYXkgPSAob2F1dGhUb2tlbi5leHBpcmVzX2luICogMTAwMCkgLyA2MFxuXHRcdFx0Y29uc3QgZXhwaXJlc1Nvb25EZWxheSA9IE1hdGgubWluKG1heERlbGF5LCBleHBpcmVzU29vblV0Yy5kaWZmKG5vd1V0YykpXG5cdFx0XHRsb2dnZXIuZGVidWcoYHJlZnJlc2hMb29wIGRlbGF5OiB3YWl0IGZvciB0b2tlbiB0byBiZSBjbG9zZSB0byBleHBpcmF0aW9uLCBkZWxheWluZyAke2V4cGlyZXNTb29uRGVsYXl9IG1zYClcblx0XHRcdHlpZWxkIGRlbGF5KGV4cGlyZXNTb29uRGVsYXkpXG5cdFx0XHQvLyByZXN0YXJ0IGxvb3AgdG8gcmVjaGVjayB0b2tlblxuXHRcdFx0Y29uc3QgZWxhcHNlZCA9IG1vbWVudC51dGMoZ2V0U2VydmVyTm93VXRjKCkudG9JU09TdHJpbmcoKSkuZGlmZihub3dVdGMpXG5cdFx0XHRsb2dnZXIuZGVidWcoYHJlZnJlc2hMb29wIGRlbGF5OiBmaW5pc2hlZCBhZnRlciAke2VsYXBzZWR9IG1zYClcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXG5cdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCBleHBpcmluZyBzb29uJylcblxuXHRcdC8vIE5PVEU6IHVzZXIgY2FuIG5ldmVyIGJlIGlkbGUgb24gTE9DQUwsIHNvIGxvY2FsIHNlc3Npb25zIHdpbGwgc3RheSBhbGl2ZSBpbmRlZmluaXRlbHlcblx0XHRpZiAoIWlzVXNlcklkbGUoKSkge1xuXHRcdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCB1c2VyIG5vdCBpZGxlLCB0cmlnZ2VyIGF1dG8tcmVmcmVzaCcpXG5cdFx0XHQvLyBhdXRvbWF0aWNhbGx5IHJlZnJlc2ggdG9rZW4gdG8gZXh0ZW5kIHNlc3Npb24gaWYgdXNlciBpcyBub3QgaWRsZVxuXHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwocGVyZm9ybVRva2VuUmVmcmVzaCwgb2F1dGhUb2tlbilcblx0XHRcdGNvbnRpbnVlXG5cdFx0fVxuXG5cdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCB1c2VyIGlkbGUsIHRyaWdnZXIgZXhwaXJpbmcgc29vbicpXG5cblx0XHQvLyBpZiB1c2VyIGlzIGlkbGUgYW5kIHRva2VuIGlzIGV4cGlyaW5nIHNvb24sIHNlbmQgYWN0aW9uIHRvIGRpc3BsYXkgRXhwaXJpbmdTZXNzaW9uQWxlcnRcblx0XHR5aWVsZCBwdXQ8QXV0aEFjdGlvbj4oeyB0eXBlOiBBVVRIX0FDVElPTl9UWVBFLkVYUElSSU5HX1NPT04gfSlcblx0XHQvLyB3YWl0IGZvciB1c2VyIHRvIHRha2UgYW4gYWN0aW9uLCBvciBmb3IgdG9rZW4gdG8gZXhwaXJlXG5cdFx0Ly8gaWYgdXNlciBsb2dzIG91dCwgdGhlIHJvb3QgYGF1dGhTYWdhYCB3aWxsIGNhbmNlbCB0aGlzIGxvb3Bcblx0XHRjb25zdCB7IHRva2VuRXhwaXJlZCB9ID0geWllbGQgcmFjZSh7XG5cdFx0XHRleHRlbnNpb25SZXF1ZXN0ZWQ6IHRha2UoQVVUSF9BQ1RJT05fVFlQRS5FWFRFTlNJT05fUkVRVUVTVEVEKSxcblx0XHRcdHRva2VuRXhwaXJlZDogZGVsYXkodGltZVVudGlsRXhwaXJlcylcblx0XHR9KVxuXHRcdGlmICh0b2tlbkV4cGlyZWQpIHtcblx0XHRcdGxvZ2dlci5kZWJ1ZygncmVmcmVzaExvb3AgdG9rZW4gZXhwaXJlZCwgdHJpZ2dlciBleHBpcmVkIGxvZyBvdXQnKVxuXHRcdFx0Ly8gdXNlciBmYWlsZWQgdG8gcmVxdWVzdCBhbiBleHRlbnNpb24gYW5kIHRva2VuIGlzIGV4cGlyZWRcblx0XHRcdHlpZWxkIHB1dDxBdXRoTG9nT3V0QWN0aW9uPih7IHR5cGU6IEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VULCB0b2tlbkV4cGlyZWQ6IHRydWUgfSlcblx0XHRcdC8vIGJyZWFrIGxvb3Bcblx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdFx0bG9nZ2VyLmRlYnVnKCdyZWZyZXNoTG9vcCB1c2VyIHRyaWdnZXIgcmVmcmVzaCcpXG5cblx0XHQvLyB1c2VyIHJlcXVlc3RlZCBleHRlbnNpb24sIHRyaWdnZXIgdG9rZW4gcmVmcmVzaFxuXHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdH1cblxuXHRsb2dnZXIuZGVidWcoJ3JlZnJlc2hMb29wIGRvbmUnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogYXV0aFNhZ2EoXG5cdGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2VQYXJhbTogQXV0aFBlcnNpc3RlbmNlU2VydmljZSxcblx0dGlja2V0UHJvdmlkZXJTZXJ2aWNlOiBUaWNrZXRQcm92aWRlclNlcnZpY2UsXG5cdGNvZGVQcm92aWRlclNlcnZpY2U6IENvZGVQcm92aWRlclNlcnZpY2Vcbik6IFNhZ2FJdGVyYXRvciB7XG5cdGxvZ2dlciA9IGdldExvZ2dlcigpXG5cdGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UgPSBhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlUGFyYW1cblxuXHQvLyB0cnkgdG8gZ2V0IHBlcnNpc3RlZCB0b2tlbiAobm9ybWFsbHkgaW4gQXN5bmNTdG9yYWdlIG9yIExvY2FsU3RvcmFnZSlcblx0bGV0IG9hdXRoVG9rZW46IE9BdXRoVG9rZW5SZXNwb25zZSA9IHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5nZXRQZXJzaXN0ZWRUb2tlbilcblxuXHQvLyBpZiB0b2tlbiBpcyBleHBpcmVkLCB0cnkgdG8gcmVmcmVzaCBpdCBiZWZvcmUgaW5pdGlhbGl6aW5nIGF1dGhcblx0Ly8gaWYgdW5hYmxlIHRvIHJlZnJlc2gsIGNsZWFyIGRhdGEgYW5kIGluaXQgYXV0aCB3aXRoIG5vIHRva2VuXG5cdGlmIChpc1Rva2VuRXhwaXJlZChvYXV0aFRva2VuKSkge1xuXHRcdGlmIChpc1Rva2VuUmVmcmVzaGFibGUob2F1dGhUb2tlbikpIHtcblx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKHBlcmZvcm1Ub2tlblJlZnJlc2gsIG9hdXRoVG9rZW4pXG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZ2dlci5kZWJ1ZygndG9rZW4gZXhwaXJlZCwgY2xlYXIgcGVyc2lzdGVkIHVzZXIgZGF0YSBhbmQgdG9rZW4nKVxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0XHRcdC8vIGNsZWFyIHRoZSBleHBpcmVkIHRva2VuIGFuZCB1c2VyIGRhdGEgZnJvbSBzdG9yYWdlXG5cdFx0XHR5aWVsZCBjYWxsKGNsZWFyVXNlckRhdGFBbmRUb2tlbilcblx0XHR9XG5cdH1cblxuXHQvLyBnZXQgYXV0aCBwYXJhbWV0ZXJzXG5cdGNvbnN0IGNhc1RpY2tldCA9IHRpY2tldFByb3ZpZGVyU2VydmljZS5nZXRUaWNrZXQoKVxuXHRjb25zdCBzZXJ2aWNlID0gdGlja2V0UHJvdmlkZXJTZXJ2aWNlLmdldEFwcFNlcnZpY2VOYW1lKClcblx0Y29uc3QgaGFzQ2FzVGlja2V0ID0gISFjYXNUaWNrZXQgJiYgISFzZXJ2aWNlXG5cblx0Y29uc3QgY29kZSA9IGNvZGVQcm92aWRlclNlcnZpY2UuZ2V0Q29kZSgpXG5cdGNvbnN0IHN0YXRlID0gY29kZVByb3ZpZGVyU2VydmljZS5nZXRTdGF0ZSgpXG5cblx0Ly8gYXV0by1sb2dpbiAvIFNTTyBmb3IgUHVyZHVlXG5cdGNvbnN0IHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIgPSB5aWVsZCBjYWxsKGdldFB1cmR1ZUlkZW50aXR5UHJvdmlkZXJGcm9tTG9jYXRpb24pXG5cdGlmIChwdXJkdWVJZGVudGl0eVByb3ZpZGVyKSB7XG5cdFx0Y29uc3QgaXNDYXNHYXRld2F5UmVxdWVzdGVkOiBib29sZWFuID0geWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLmdldElzQ2FzR2F0ZXdheVJlcXVlc3RlZClcblxuXHRcdC8vIHN0YXJ0IGF1dG8tbG9naW4gLyBTU08sIGlmIG5vdCBhbHJlYWR5IHJlcXVlc3RlZCwgbm90IGF1dGhlbnRpY2F0ZWQsIGFuZCBoYXMgbm8gdmFsaWQgYXV0aCBwYXJhbWV0ZXJzXG5cdFx0aWYgKCFpc0Nhc0dhdGV3YXlSZXF1ZXN0ZWQgJiYgIW9hdXRoVG9rZW4gJiYgIWhhc0Nhc1RpY2tldCAmJiAhY29kZSkge1xuXHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RJc0Nhc0dhdGV3YXlSZXF1ZXN0ZWQsIHRydWUpXG5cdFx0XHQvLyBzdG9yZSBwYXRobmFtZSBmb3IgcG9zdC1sb2dpbiByZWRpcmVjdCBpZiBub3QgYWxyZWFkeSBzZXRcblx0XHRcdC8vIGNvdWxkIGhhdmUgYmVlbiBzZXQgZnJvbSB1c2VyIGxvZ2dpbmcgb3V0LCBzZWUgYEF1dGhlbnRpY2F0ZWRDb21wb25lbnRgXG5cdFx0XHRjb25zdCByZXR1cm5VcmwgPSB5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UuZ2V0UmV0dXJuVXJsKVxuXHRcdFx0aWYgKCFyZXR1cm5VcmwpIHtcblx0XHRcdFx0eWllbGQgY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RSZXR1cm5VcmwsIHdpbmRvd1NlcnZpY2UuZ2V0TG9jYXRpb24oKS5wYXRobmFtZSlcblx0XHRcdH1cblx0XHRcdHlpZWxkIGNhbGwod2luZG93U2VydmljZS5yZXBsYWNlLCBwdXJkdWVJZGVudGl0eVByb3ZpZGVyLmxvZ2luVXJsKVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXG5cdFx0Ly8gZmluaXNoIGF1dG8tbG9naW4gcHJvY2VzcywgaWYgaXQgd2FzIHJlcXVlc3RlZCBhbmQgaGFzIGEgdmFsaWQgYXV0aCBwYXJhbWV0ZXJcblx0XHRpZiAoaXNDYXNHYXRld2F5UmVxdWVzdGVkICYmIChoYXNDYXNUaWNrZXQgfHwgY29kZSkpIHtcblx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0SXNDYXNHYXRld2F5UmVxdWVzdGVkLCBmYWxzZSlcblx0XHRcdC8vIHBlcnNpc3QgUHVyZHVlIGlkZW50aXR5UHJvdmlkZXIgZm9yIGBpZGVudGl0eVByb3ZpZGVyU2FnYWAgbG9nb3V0IGxvZ2ljXG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdElkZW50aXR5UHJvdmlkZXIsIHB1cmR1ZUlkZW50aXR5UHJvdmlkZXIpXG5cdFx0XHQvLyBjb250aW51ZSB0byBleGNoYW5naW5nIENBUyBgdGlja2V0YCBvciBgY29kZWAgZm9yIHRva2VuXG5cdFx0fVxuXHR9XG5cblx0Ly8gaWYgQ0FTIHRpY2tldCBleGlzdHMgKG5vcm1hbGx5IGluIHRoZSBVUkwpLCB1c2UgaXQgdG8gZ2V0IGEgbmV3IHRva2VuXG5cdGlmIChoYXNDYXNUaWNrZXQpIHtcblx0XHR0aWNrZXRQcm92aWRlclNlcnZpY2UucmVtb3ZlVGlja2V0KClcblxuXHRcdC8vIGNsZWFyIHRoZSBjdXJyZW50IHRva2VuIGFuZCB1c2VyIGRhdGEgaWYgYSBuZXcgdG9rZW4gaXMgYWJvdXQgdG8gYmUgZ2VuZXJhdGVkXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGNhbGwoY2xlYXJVc2VyRGF0YUFuZFRva2VuKVxuXHRcdFx0b2F1dGhUb2tlbiA9IG51bGxcblx0XHR9XG5cdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoY2FzVGlja2V0TG9naW5GbG93LCBjYXNUaWNrZXQsIHNlcnZpY2UpXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGNhbGwoYXV0aFBlcnNpc3RlbmNlU2VydmljZS5wZXJzaXN0VG9rZW4sIG9hdXRoVG9rZW4pXG5cdFx0fVxuXHR9XG5cblx0Ly8gaWYgT0F1dGggQ29kZSBleGlzdHMgKG5vcm1hbGx5IGluIHRoZSBVUkwpLCB1c2UgaXQgdG8gZ2V0IGEgbmV3IHRva2VuXG5cdGlmIChjb2RlKSB7XG5cdFx0Y29kZVByb3ZpZGVyU2VydmljZS5yZW1vdmVDb2RlQW5kU3RhdGUoKVxuXG5cdFx0Ly8gY2xlYXIgdGhlIGN1cnJlbnQgdG9rZW4gYW5kIHVzZXIgZGF0YSBpZiBhIG5ldyB0b2tlbiBpcyBhYm91dCB0byBiZSBnZW5lcmF0ZWRcblx0XHRpZiAob2F1dGhUb2tlbikge1xuXHRcdFx0eWllbGQgY2FsbChjbGVhclVzZXJEYXRhQW5kVG9rZW4pXG5cdFx0XHRvYXV0aFRva2VuID0gbnVsbFxuXHRcdH1cblxuXHRcdC8vIGlmIE9BdXRoIHN0YXRlIGV4aXN0cyAobm9ybWFsbHkgaW4gdGhlIFVSTCksIHVzZSBpdCBpbiBhZGRpdGlvbiB0byB0aGUgY29kZSBmb3IgUEtDRSBsb2dpbiBmbG93XG5cdFx0aWYgKHN0YXRlKSB7XG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChnZXRUb2tlbkZyb21Db2RlQW5kU3RhdGUsIGNvZGUsIHN0YXRlKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRvYXV0aFRva2VuID0geWllbGQgY2FsbChnZXRUb2tlbkZyb21Db2RlLCBjb2RlKVxuXHRcdH1cblxuXHRcdGlmIChvYXV0aFRva2VuKSB7XG5cdFx0XHR5aWVsZCBjYWxsKGF1dGhQZXJzaXN0ZW5jZVNlcnZpY2UucGVyc2lzdFRva2VuLCBvYXV0aFRva2VuKVxuXHRcdH1cblx0fVxuXG5cdHlpZWxkIHB1dDxBdXRoVG9rZW5BY3Rpb24+KHsgdHlwZTogQVVUSF9UT0tFTl9BQ1RJT05fVFlQRS5BVVRIX0lOSVRJQUxJWkVELCBvYXV0aFRva2VuIH0pXG5cblx0eWllbGQgdGFrZUV2ZXJ5KE1PREVMX0ZFVENIX0VSUk9SX0FDVElPTl9UWVBFLlRSWV9GRVRDSF9GQUlMRUQsIGhhbmRsZUF1dGhGYWlsdXJlKVxuXG5cdGRvIHtcblx0XHRpZiAoIW9hdXRoVG9rZW4pIHtcblx0XHRcdGNvbnN0IHtcblx0XHRcdFx0Y2FzVjFBY3Rpb24sXG5cdFx0XHRcdGxvY2FsTG9naW5BY3Rpb24sXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvblxuXHRcdFx0fToge1xuXHRcdFx0XHRjYXNWMUFjdGlvbj86IEF1dGhDYXNWMUxvZ2luUmVxdWVzdEFjdGlvblxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uPzogQXV0aExvY2FsTG9naW5SZXF1ZXN0QWN0aW9uXG5cdFx0XHRcdHBrY2VMb2dpbkFjdGlvbj86IEF1dGhQS0NFTG9naW5SZXF1ZXN0QWN0aW9uXG5cdFx0XHR9ID0geWllbGQgcmFjZSh7XG5cdFx0XHRcdGNhc1YxQWN0aW9uOiB0YWtlKEFVVEhfQ0FTX1YxX0xPR0lOX1JFUVVFU1RfQUNUSU9OX1RZUEUuQ0FTX1YxX0xPR0lOX1JFUVVFU1QpLFxuXHRcdFx0XHRsb2NhbExvZ2luQWN0aW9uOiB0YWtlKEFVVEhfTE9DQUxfTE9HSU5fUkVRVUVTVF9BQ1RJT05fVFlQRS5MT0NBTF9MT0dJTl9SRVFVRVNUKSxcblx0XHRcdFx0cGtjZUxvZ2luQWN0aW9uOiB0YWtlKEFVVEhfUEtDRV9MT0dJTl9SRVFVRVNUX0FDVElPTl9UWVBFLlBLQ0VfTE9HSU5fUkVRVUVTVClcblx0XHRcdH0pXG5cblx0XHRcdHlpZWxkIHB1dDxBdXRoQWN0aW9uPih7IHR5cGU6IEFVVEhfQUNUSU9OX1RZUEUuTE9HSU5fUkVRVUVTVEVEIH0pXG5cdFx0XHRpZiAoY2FzVjFBY3Rpb24pIHtcblx0XHRcdFx0b2F1dGhUb2tlbiA9IHlpZWxkIGNhbGwoY2FzVjFMb2dpbkZsb3csIGNhc1YxQWN0aW9uKVxuXHRcdFx0fSBlbHNlIGlmIChsb2NhbExvZ2luQWN0aW9uKSB7XG5cdFx0XHRcdG9hdXRoVG9rZW4gPSB5aWVsZCBjYWxsKGxvY2FsTG9naW5GbG93LCBsb2NhbExvZ2luQWN0aW9uKVxuXHRcdFx0fSBlbHNlIGlmIChwa2NlTG9naW5BY3Rpb24pIHtcblx0XHRcdFx0Ly8gb2F1dGhUb2tlbiBpcyBub3QgcmV0dXJuZWQgaGVyZSwgYXMgdGhpcyBmbG93IHdpbGwgcmVzdWx0IGluIGEgd2luZG93IHJlZGlyZWN0XG5cdFx0XHRcdHlpZWxkIGNhbGwocGtjZUxvZ2luRmxvdywgcGtjZUxvZ2luQWN0aW9uKVxuXHRcdFx0XHQvLyBicmVhayBleGVjdXRpb25cblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9hdXRoVG9rZW4pIHtcblx0XHRcdHlpZWxkIGFsbCh7XG5cdFx0XHRcdHBlcnNpc3RUb2tlbjogY2FsbChhdXRoUGVyc2lzdGVuY2VTZXJ2aWNlLnBlcnNpc3RUb2tlbiwgb2F1dGhUb2tlbiksXG5cdFx0XHRcdGxvZ2luU3VjY2VzczogcHV0PEF1dGhUb2tlblN1Y2Nlc3NBY3Rpb24+KHtcblx0XHRcdFx0XHR0eXBlOiBBVVRIX1RPS0VOX1NVQ0NFU1NfQUNUSU9OX1RZUEUuR0VUX1RPS0VOX1NVQ0NFRURFRCxcblx0XHRcdFx0XHRvYXV0aFRva2VuXG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXG5cdFx0XHQvLyBzdGFydCBub24tYmxvY2tpbmcgcmVmcmVzaCBsb29wXG5cdFx0XHRjb25zdCByZWZyZXNoTG9vcFRhc2s6IFRhc2sgPSB5aWVsZCBmb3JrKHJlZnJlc2hMb29wKVxuXG5cdFx0XHQvLyBpZiB1c2VyIGxvZ3Mgb3V0IG9yIHRva2VuIGV4cGlyZXMsIGNhbmNlbCB0aGUgcmVmcmVzaCBsb29wXG5cdFx0XHR5aWVsZCB0YWtlKEFVVEhfTE9HX09VVF9BQ1RJT05fVFlQRS5MT0dfT1VUKVxuXHRcdFx0eWllbGQgY2FuY2VsKHJlZnJlc2hMb29wVGFzaylcblx0XHR9IGVsc2Uge1xuXHRcdFx0eWllbGQgcHV0PEF1dGhBY3Rpb24+KHsgdHlwZTogQVVUSF9BQ1RJT05fVFlQRS5MT0dJTl9GQUlMRUQgfSlcblx0XHR9XG5cblx0XHR5aWVsZCBjYWxsKGNsZWFyVXNlckRhdGFBbmRUb2tlbilcblx0XHRvYXV0aFRva2VuID0gbnVsbFxuXHR9IHdoaWxlICh0cnVlKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLElBQUFBLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQVNBLElBQUFNLEtBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLEtB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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.
|
|
3
|
+
"version": "7.6.1-next.2.23",
|
|
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",
|