@projectcor/maia-components 2.35.6 → 2.35.9

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.
@@ -572,7 +572,7 @@ export var useChatManager = function useChatManager(_ref4) {
572
572
  var isUsageBlocked = getUsageStoreState().blocked;
573
573
  var message = isAccessDenied ? t('chat.errorAccessDenied') : isPromptTooLong ? t('chat.errorPromptTooLong', {
574
574
  used: (_errorRawMessage$matc = errorRawMessage === null || errorRawMessage === void 0 || (_errorRawMessage$matc2 = errorRawMessage.match(/(\d+) tokens/)) === null || _errorRawMessage$matc2 === void 0 ? void 0 : _errorRawMessage$matc2[1]) !== null && _errorRawMessage$matc !== void 0 ? _errorRawMessage$matc : ''
575
- }) : isUsageQuotaExceeded && errorRawMessage ? errorRawMessage : isUsageQuotaExceeded ? t('chat.usage.blockedBanner') : t('chat.error');
575
+ }) : isUsageQuotaExceeded ? t('chat.usage.blockedBanner') : t('chat.error');
576
576
  commitToSession(sessionId, _objectSpread(_objectSpread({
577
577
  id: "answer-".concat(messageId),
578
578
  message: message,
@@ -1849,4 +1849,4 @@ export var useChatManager = function useChatManager(_ref4) {
1849
1849
  isDisabled: waitingResponse || loadingMessages
1850
1850
  };
1851
1851
  };
1852
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiZmx1c2hTeW5jIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJ0cmFja01hbnVhbEhpdGxFdmVudHMiLCJzZXNzaW9uU3RyZWFtaW5nVGV4dCIsInVzZVNlc3Npb25zU3RvcmUiLCJ1c2VTZXNzaW9uTWV0YSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyIsImFjdGl2ZVZpZXciLCJub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQiLCJidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUiLCJlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCIsInN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwiZmluZFVzZXJNZXNzYWdlRm9yUmV0cnkiLCJtZXNzYWdlc1dpdGhvdXRSZXRyaWVkVHVybiIsInJlc29sdmVSZXRyeVR1cm5JZCIsImdldENoYXRzU3RvcmVTdGF0ZSIsInVzZUNoYXRzU3RvcmUiLCJnZXRVc2FnZVN0b3JlU3RhdGUiLCJpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yIiwicmVhc29uaW5nU3RvcmUiLCJidWlsZFJlYXNvbmluZ1RyYWNlIiwibWFwUmVhc29uaW5nVHJhY2UiLCJyZWFzb25pbmdUcmFjZUZvciIsIm1lc3NhZ2VJZCIsInNuYXBzaG90IiwiZ2V0U25hcHNob3QiLCJzdGVwcyIsImxlbmd0aCIsInN1bW1hcnkiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzIiwidGhyZWFkSWRzIiwiYWN0aXZlTWVzc2FnZXMiLCJmcm9tQWN0aXZlVmlldyIsIm1lc3NhZ2UiLCJfbWVzc2FnZSRhcHByb3ZhbCIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsInRocmVhZF9pZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJnZXQiLCJfdXNlU2Vzc2lvbnNTdG9yZSRnZXQiLCJnZXRTdGF0ZSIsIm1lc3NhZ2VzIiwic2Vzc2lvbkVudHJ5IiwiT2JqZWN0IiwiZW50cmllcyIsIl9yZWYyIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsInNlc3Npb25NZXNzYWdlcyIsIl9tZXNzYWdlJGFwcHJvdmFsMiIsIl9zZXNzaW9uRW50cnkiLCJmb3VuZCIsIl9tZXNzYWdlJGFwcHJvdmFsMyIsInVzZUNoYXRNYW5hZ2VyIiwiX3JlZjQiLCJpbml0aWFsQ2hhdElkIiwiY2hhdElkIiwidXNlckluaXRpYWxNZXNzYWdlIiwib25FcnJvciIsIl9yZWY0JGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImlzQXV0b0FwcHJvdmVBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJldmVudCIsIl91c2VQcm9qZWN0cyIsImZldGNoUHJvamVjdHMiLCJfdXNlU3RhYmxlQ2FsbGJhY2tzIiwiX3VzZVRhYlRhc2tEZWZhdWx0IiwiZ2V0VGFiVGFza0RlZmF1bHQiLCJjdXJyZW50TWVzc2FnZUlkIiwiY3VycmVudFVzZXJRdWVzdGlvbiIsImN1cnJlbnRDaGF0SWQiLCJzZXRBY3RpdmVDaGF0SWQiLCJzdGF0ZSIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsInRyYWNrZWRNYW51YWxIaXRsS2V5c1JlZiIsIlNldCIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwicmV0cnlTbmFwc2hvdFJlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYiLCJhY3RpdmVTdHJlYW1DaGF0SWRSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVNlc3Npb25JZCIsInNldEFjdGl2ZVNlc3Npb25JZCIsImlzTW91bnRlZFJlZiIsImxhc3RIYW5kbGVkVGVybWluYWxSZWYiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImlzQXV0b0FwcHJvdmVBY3RpdmVSZWYiLCJjb250ZXh0UmVmIiwiX3VzZUNoYXRNZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwicmVwbGFjZU1lc3NhZ2VzIiwiaGFuZGxlU2Nyb2xsIiwiY29tbWl0VG9TZXNzaW9uIiwiaXMiLCJkcm9wRnJvbVNlc3Npb24iLCJjbGVhclNlc3Npb25UYWlsIiwic2V0TWVzc2FnZXMiLCJzZXQiLCJhY3RpdmVTZXNzaW9uTWV0YSIsIl9hY3RpdmVTZXNzaW9uTWV0YSRmaSIsInN0YXR1cyIsImlzVGVybWluYWwiLCJrZXkiLCJmaW5pc2hlZEF0IiwidGFpbCIsImdldE1lc3NhZ2VzIiwiaGFzU3RhbGVQbGFjZWhvbGRlciIsIm1zZyIsImZvcmNlIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsInByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiIsInByZXZpb3VzSW5pdGlhbENoYXRJZCIsImlzQWN0aXZlIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJjdHgiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwicGxhY2Vob2xkZXJJZCIsImNsZWFyIiwicmV0cnlTbmFwc2hvdCIsInNob3ciLCJzZXZlcml0eSIsImlzQWNjZXNzRGVuaWVkIiwiaXNQcm9tcHRUb29Mb25nIiwiaXNVc2FnZVF1b3RhRXhjZWVkZWQiLCJpc1VzYWdlQmxvY2tlZCIsImJsb2NrZWQiLCJ1c2VkIiwiaXNFcnJvciIsInN1Z2dlc3Rpb25zIiwiZGF0ZSIsIkRhdGUiLCJ1c2VyIiwiQVNTSVNUQU5UIiwibWFya0NoYXRBc1VucmVhZCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsImNvbnRlbnQiLCJwbGFjZWhvbGRlckV4aXN0cyIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiY29tcGxldGVkQWdlbnRJZCIsIl9yZXNvbHZlZENvbnRleHQiLCJyZWFzb25pbmciLCJfcmVhc29uaW5nVHJhY2VGb3IiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfd2luZG93JHRhc2tQYW5lbCIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwiX2VkaXRBZ2VudEZvbGxvd1VwIiwidGVtcE1lc3NhZ2VJZCIsImZpbmFsTWVzc2FnZUlkIiwiZmluYWxUcmFjZSIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiY29uZmlndXJlZEFnZW50SWQiLCJtYW51YWxBcHByb3ZhbEZvckFuYWx5dGljcyIsIndhc01hbnVhbENyZWF0ZUFnZW50QXBwcm92ZWQiLCJ3YXNFZGl0QWdlbnRBcHByb3ZlZCIsImVkaXRBZ2VudEZvbGxvd1VwIiwiZnJvbVN0cmVhbSIsImZyb21BcmdzIiwicmVzb2x2ZWRBZ2VudElkIiwidGFza0lkc0Zyb21VcmxzIiwidGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCIsInRhc2tJZHNGcm9tRGVsZXRpb25UZXh0IiwidGFza0lkc0ZvckRhc2hib2FyZCIsInNob3VsZFN5bmNEYXNoYm9hcmQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJpc09uUHJvamVjdFJvdXRlIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJvcGVuVGFza1BhbmVsSWQiLCJtYW51YWxBcHByb3ZhbCIsIm1hbnVhbFdhc1Rhc2tFZGl0IiwibWFudWFsV2FzVGFza0RlbGV0ZSIsImhvdXJzVG9vbHNGcm9tQXBwcm92YWwiLCJ3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkIiwibWFudWFsSG91cnNUb29sIiwid2FzSG91cnNDaGFyZ2VNYW51YWxBcHByb3ZlZCIsInRvb2xzIiwiX21hbnVhbEFwcHJvdmFsJHRvb2xBIiwibWFudWFsUHNldWRvQWN0aW9uIiwiYWZmZWN0ZWRUYXNrSWRzIiwiX3dpbmRvdyR0YXNrUGFuZWwyIiwiX3dpbmRvdyR0YXNrUGFuZWwyJHJlIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImlzQ2hhdFZpZXdWaXNpYmxlIiwibWFya0NoYXRBc1JlYWQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInJlbmFtZSIsImFicnVwdCIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImF0IiwiYXBwcm92YWxTdGF0dXMiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWlDaGF0SGl0bE9wdGlvbiIsImFnZW50X3R5cGUiLCJhY3Rpb25fdHlwZSIsImRlY2lzaW9uIiwib3B0aW9uIiwiY3JlYXRlZF9hZ2VudF9pZCIsInJlc29sdXRpb25fc291cmNlIiwic2VudCIsInJlcGxhY2UiLCJ1cmwiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV3UHJvamVjdERhc2hib2FyZCIsImFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkIiwiY2FsbCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJzb3VyY2UiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwidGhlbiIsImNoYXRBZ2VudCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl94OCIsIl94OSIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU3RyZWFtU3RvcCIsInBhcnRpYWxUZXh0Iiwic3RvcHBlZFRyYWNlIiwiZmluaXNoIiwicmVtb3ZlIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJfbWFwUmVhc29uaW5nVHJhY2UiLCJoaXRsQ29udGV4dCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiYXV0b19hcHByb3ZlZCIsImFwcHJvdmFsX3N0YXR1cyIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdDIiLCJfcmVmNiIsIl90b29sX25hbWUiLCJfdG9vbF9hcmdzIiwiaW1wcmVzc2lvbiIsImFpQ2hhdEhpdGwiLCJmaXJzdEFjdGlvbiIsImFwcHJvdmFsTWVzc2FnZUlkIiwiYXBwcm92YWxUcmFjZSIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJhc2tNYWlhIiwicmV0cnlDb21wbGV0aW9uIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNyIsIl9jYWxsZWUyIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJ3aWxsU3RhcnROZXdTdHJlYW0iLCJfbm9ybWFsaXplU2VuZE1lc3NhZ2UiLCJlZmZlY3RpdmVNZW50aW9ucyIsImNvbnRleHRNZXNzYWdlIiwicGF5bG9hZEZ1YUlkIiwicGF5bG9hZFNjSWQiLCJwYXlsb2FkQ29udGV4dERhdGEiLCJkaXNwbGF5TWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJfY29udGV4dFJlZiRjdXJyZW50IiwiY3R4Q2hpcHNQcm9qZWN0IiwiY3R4VGFzayIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWQiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJfY29udGV4dFJlZiRjdXJyZW50JHAiLCJoaXN0b3J5IiwicHJvamVjdFRvUmVxdWVzdCIsInByb2plY3RzIiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDIiLCJnZXRBY3RpdmVDb3VudCIsImNvbnRleHREYXRhIiwicG1BaVR5cGVkVGV4dCIsInRpdGxlIiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwicHJvamVjdE5hbWUiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiYWdlbnRUeXBlIiwiZW1vamkiLCJhZ2VudEVtb2ppIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJjaGFuZ2VQcm9qZWN0IiwicmV0cnlNZXNzYWdlIiwiX3JlZjgiLCJfY2FsbGVlNCIsIl91c2VyTWVzc2FnZSRtZXNzYWdlIiwiX3VzZXJNZXNzYWdlJGF0dGFjaG1lIiwiX3VzZXJNZXNzYWdlJHNvdXJjZXMiLCJfbWVzc2FnZSRtZW1vcnlTZXNzaW8iLCJfdHJ1bmNhdGVkJGF0IiwicHJldmlvdXNNZXNzYWdlcyIsInVzZXJNZXNzYWdlIiwidHVybklkIiwidXNlT3JjaGVzdHJhdG9yRmFsbGJhY2siLCJ0cnVuY2F0ZWQiLCJwbGFjZWhvbGRlciIsIm5leHRNZXNzYWdlcyIsIl9jb250ZXh0UmVmJGN1cnJlbnQyIiwicmVwbGF5VmlhT3JjaGVzdHJhdG9yIiwicmVzdWx0IiwiX2NvbnRleHQ0IiwiaXRlbSIsIl9yZWY5IiwiX2NhbGxlZTMiLCJfdCIsIl9jb250ZXh0MyIsInN0YXJ0ZWQiLCJyZWFzb24iLCJfeDE1IiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmMCIsIl9jYWxsZWU1IiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsInJlc3BvbnNlIiwiX2NvbnRleHQ1IiwiQ2hhdHMiLCJ3YXNIZWxwZnVsQ2hhdCIsIlRIVU1CU19VUCIsIndhc0hlbHBmdWwiLCJfeDE2IiwiX3gxNyIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmMSIsIl9jYWxsZWU2IiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJmb3VuZFNlc3Npb25JZCIsIm5ld1N0YXR1cyIsImlzQWN0aXZlU2Vzc2lvbiIsInN0cmVhbU1lc3NhZ2VJZCIsImhpdGxDdHgiLCJyZWxlYXNlQWN0aXZlUHJvY2Vzc2luZyIsIl9jb250ZXh0NiIsInN0YXJ0Q29udGludWVTdHJlYW0iLCJjb250aW51ZVJlcXVlc3QiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsImNhbGxiYWNrcyIsImZpbmlzaFBheWxvYWQiLCJyZXNvbHZlZENvbnRleHQiLCJhcHByb3ZhbFBheWxvYWQiLCJfeDE4IiwiX3gxOSIsIl94MjAiLCJpbml0aWFsaXplQ2hhdCIsIl9jYWxsZWU3IiwiX3VzZXJJbml0aWFsTWVzc2FnZSRtIiwiX3VzZXJJbml0aWFsTWVzc2FnZSRhIiwiX3JlZjExIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiaGFzSW5pdGlhbEZ1YSIsImhhc0luaXRpYWxTYyIsIl9jb250ZXh0UmVmJGN1cnJlbnQzIiwiaW5pdGlhbERpc3BsYXlNZXNzYWdlIiwiX2NvbnRleHQ3IiwiQm9vbGVhbiIsInJlc2V0Q2hhdCIsInByZXZpb3VzU2Vzc2lvbklkIiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmbHVzaFN5bmMgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkLCBpc0hvdXJzQ2hhcmdlVG9vbCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9wbGFubmVyU3luY0V2ZW50cydcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuaW1wb3J0IHtcbiAgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsXG4gIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUsXG4gIG5vcm1hbGl6ZUhpdGxUb29sTmFtZSxcbiAgdHJhY2tNYW51YWxIaXRsRXZlbnRzLFxufSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHsgdHlwZSBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1pbmdUZXh0J1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyB1c2VTZXNzaW9uTWV0YSB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25NZXRhJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbU1hbmFnZXIsIE1BWF9DT05DVVJSRU5UX1NUUkVBTVMgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtTWFuYWdlcidcbmltcG9ydCB7IGFjdGl2ZVZpZXcgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9hY3RpdmVWaWV3J1xuaW1wb3J0IHsgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUsIGVuc3VyZVNlc3Npb25JblNpZGViYXIgfSBmcm9tICcuLi8uLi9zdG9yZS9jaGF0c1NpZGViYXJPcHRpbWlzdGljJ1xuaW1wb3J0IHsgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgZmluZFVzZXJNZXNzYWdlRm9yUmV0cnksIG1lc3NhZ2VzV2l0aG91dFJldHJpZWRUdXJuLCByZXNvbHZlUmV0cnlUdXJuSWQgfSBmcm9tICcuLi8uLi91dGlscy9yZXRyeUNvbXBsZXRpb24nXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUNvbnRleHQgfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IGdldENoYXRzU3RvcmVTdGF0ZSwgdXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQgeyBnZXRVc2FnZVN0b3JlU3RhdGUsIGlzVXNhZ2VRdW90YUV4Y2VlZGVkRXJyb3IgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VVc2FnZVN0b3JlJ1xuaW1wb3J0IHsgcmVhc29uaW5nU3RvcmUgfSBmcm9tICcuLi91c2VSZWFzb25pbmdUcmFjZSdcbmltcG9ydCB7IGJ1aWxkUmVhc29uaW5nVHJhY2UsIG1hcFJlYXNvbmluZ1RyYWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVhc29uaW5nTWFwcGVycydcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nVHJhY2UsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3JlYXNvbmluZydcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuLyoqIFRyYWNlIGFjdW11bGFkbyBlbiB2aXZvIHBhcmEgYG1lc3NhZ2VJZGAsIG8gbnVsbCBzaSBlbCBzdG9yZSBhcHVudGEgYSBvdHJvIG1lbnNhamUuICovXG5jb25zdCByZWFzb25pbmdUcmFjZUZvciA9IChtZXNzYWdlSWQ6IHN0cmluZyk6IFJlYXNvbmluZ1RyYWNlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHNuYXBzaG90ID0gcmVhc29uaW5nU3RvcmUuZ2V0U25hcHNob3QobWVzc2FnZUlkKVxuICBpZiAoIXNuYXBzaG90LnN0ZXBzLmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIGJ1aWxkUmVhc29uaW5nVHJhY2Uoc25hcHNob3Quc3RlcHMsIHNuYXBzaG90LnN1bW1hcnkpXG59XG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuLyoqIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBwaW4gdmlzaWJsZTsgc2kgbm8gaGF5IHBpbiwgcmVzdGF1cmFyIGRlc2RlIGhpc3RvcmlhbC4gKi9cbmNvbnN0IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0ID0gKFxuICBjaGlwc1Byb2plY3Q6IHsgcHJvamVjdElkPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBsYXN0TWVzc2FnZVByb2plY3RJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG4gIGlmIChjaGlwc1Byb2plY3RJZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShjaGlwc1Byb2plY3RJZCkpIHtcbiAgICByZXR1cm4gY2hpcHNQcm9qZWN0SWRcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgcmVzb2x2ZUNsaWVudFBheWxvYWQgPSAoXG4gIGN0eENsaWVudDogeyBpZD86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3R4UHJvamVjdDogUHJvamVjdCB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgY2xpZW50SWQ/OiBudW1iZXI7IGNsaWVudE5hbWU/OiBzdHJpbmcgfSA9PiB7XG4gIGlmIChjdHhDbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IGN0eENsaWVudC5pZCwgLi4uKGN0eENsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhDbGllbnQubmFtZSB9IDoge30pIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBOdW1iZXIoY3R4UHJvamVjdC5jbGllbnRJZCkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudElkOiBjdHhQcm9qZWN0LmNsaWVudC5pZCxcbiAgICAgIC4uLihjdHhQcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhQcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgZmluZE1lc3NhZ2VXaXRoQXBwcm92YWxCeVRocmVhZElkcyA9IChcbiAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgYWN0aXZlTWVzc2FnZXM6IENoYXRNZXNzYWdlW11cbik6IHsgbWVzc2FnZTogQ2hhdE1lc3NhZ2U7IHNlc3Npb25JZDogc3RyaW5nIH0gfCBudWxsID0+IHtcbiAgY29uc3QgZnJvbUFjdGl2ZVZpZXcgPSBhY3RpdmVNZXNzYWdlcy5maW5kKG1lc3NhZ2UgPT5cbiAgICBtZXNzYWdlLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IHRocmVhZElkcy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgKVxuICBpZiAoZnJvbUFjdGl2ZVZpZXc/LmFwcHJvdmFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGZyb21BY3RpdmVWaWV3LFxuICAgICAgc2Vzc2lvbklkOiBmcm9tQWN0aXZlVmlldy5hcHByb3ZhbC5zZXNzaW9uX2lkIHx8IGFjdGl2ZVZpZXcuZ2V0KCkgfHwgJycsXG4gICAgfVxuICB9XG5cbiAgY29uc3QgeyBtZXNzYWdlcyB9ID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpXG4gIGNvbnN0IHNlc3Npb25FbnRyeSA9IE9iamVjdC5lbnRyaWVzKG1lc3NhZ2VzKS5maW5kKChbLCBzZXNzaW9uTWVzc2FnZXNdKSA9PlxuICAgIHNlc3Npb25NZXNzYWdlcy5zb21lKG1lc3NhZ2UgPT5cbiAgICAgIG1lc3NhZ2UuYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgIClcbiAgKVxuICBpZiAoc2Vzc2lvbkVudHJ5KSB7XG4gICAgY29uc3QgW3Nlc3Npb25JZCwgc2Vzc2lvbk1lc3NhZ2VzXSA9IHNlc3Npb25FbnRyeVxuICAgIGNvbnN0IGZvdW5kID0gc2Vzc2lvbk1lc3NhZ2VzLmZpbmQobWVzc2FnZSA9PlxuICAgICAgbWVzc2FnZS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgKVxuICAgIGlmIChmb3VuZD8uYXBwcm92YWwpIHtcbiAgICAgIHJldHVybiB7IG1lc3NhZ2U6IGZvdW5kLCBzZXNzaW9uSWQ6IGZvdW5kLmFwcHJvdmFsLnNlc3Npb25faWQgfHwgc2Vzc2lvbklkIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHNldENsaWVudCxcbiAgICB0YXNrLFxuICAgIHNldFRhc2ssXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCBzZXRBY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldEFjdGl2ZUNoYXRJZClcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBFdml0YSBkdXBsaWNhciBBSV9DSEFUX0hJVEwgLyBBSV9DSEFUX0hJVExfT1BUSU9OIGVuIHByZWFwcm9iYWNpb25lcyAobWFudWFsIG8gYXV0bykgcG9yIGxvdGUuICovXG4gIGNvbnN0IHRyYWNrZWRNYW51YWxIaXRsS2V5c1JlZiA9IHVzZVJlZjxTZXQ8c3RyaW5nPj4obmV3IFNldCgpKVxuICAvKiogQ29udGV4dG8gZGVsIG1lbnNhamUgZGUgYXByb2JhY2nDs24gcHJldmlvIGFsIGVqZWN1dGFyIGNvbnRpbnVlLXRocmVhZC4gKi9cbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYgPSB1c2VSZWY8SGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsPihudWxsKVxuICAvKiogTWVuc2FqZXMgYSByZXN0YXVyYXIgc2kgYHJldHJ5X2NvbXBsZXRpb25gIGZhbGxhIGFudGVzIGRlIHBlcnNpc3RpciBlbCByZWVtcGxhem8uICovXG4gIGNvbnN0IHJldHJ5U25hcHNob3RSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2xlYXJTdHJlYW1VaVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG4gIC8qKlxuICAgKiBTZXNpw7NuIGFjdHVhbG1lbnRlIHZpc2libGUuIFNlIG1hbnRpZW5lIGVuIHN0YXRlIChubyBzb2xvIGVuIHJlZikgcGFyYSBxdWVcbiAgICogZWwgbW90b3IgZGUgc3RyZWFtaW5nIHB1ZWRhIGxlZXIgcmVhY3RpdmFtZW50ZSBsb3MgZmxhZ3MgZGUgRVNUQSBzZXNpw7NuXG4gICAqIGRlc2RlIGVsIHN0b3JlLCBtaWVudHJhcyBvdHJhcyBzaWd1ZW4gZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQuXG4gICAqL1xuICBjb25zdCBbYWN0aXZlU2Vzc2lvbklkLCBzZXRBY3RpdmVTZXNzaW9uSWRdID0gdXNlU3RhdGU8c3RyaW5nPihjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gIC8qKiBUcnVlIG1pZW50cmFzIGVzdGEgaW5zdGFuY2lhIGVzdMOpIG1vbnRhZGEgKGV2aXRhIHNldFN0YXRlIHRyYXMgZGVzbW9udGFyKS4gKi9cbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlUmVmKHRydWUpXG4gIC8qKiBFdml0YSByZWNvbmNpbGlhciBkb3MgdmVjZXMgZWwgbWlzbW8gZXN0YWRvIHRlcm1pbmFsIGRlIHVuYSBzZXNpw7NuLiAqL1xuICBjb25zdCBsYXN0SGFuZGxlZFRlcm1pbmFsUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaXNXZWJTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc0RlZXBTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYgPSB1c2VSZWYoaXNBdXRvQXBwcm92ZUFjdGl2ZSlcbiAgLyoqIEV2aXRhIGNsb3N1cmVzIG9ic29sZXRhcyBjdWFuZG8gZWwgZm9vdGVyIGNvbnNlcnZhIHNlbmRNZXNzYWdlIGVudHJlIHJlbmRlcnMuICovXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9KVxuICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZi5jdXJyZW50ID0gaXNBdXRvQXBwcm92ZUFjdGl2ZVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSwgaXNBdXRvQXBwcm92ZUFjdGl2ZV0pXG5cbiAgY29uc3Qge1xuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBtZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgbG9hZE1lc3NhZ2VzLFxuICAgIGFkZE1lc3NhZ2UsXG4gICAgcmVtb3ZlTWVzc2FnZSxcbiAgICByZXBsYWNlTWVzc2FnZXMsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICB9ID0gdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgIGN1cnJlbnRVc2VyLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBvbkVycm9yLFxuICAgIGFnZW50cyxcbiAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICAvKipcbiAgICogRXNjcmliZSB1biBtZW5zYWplIGVuIGVsIHN0b3JlIHBvci1zZXNpw7NuIHksIHNpIGxhIHNlc2nDs24gZXMgbGEgYWN0aXZhLFxuICAgKiB0YW1iacOpbiBlbiBsYSB2aXN0YSBsb2NhbC4gUGVybWl0ZSBxdWUgc2VzaW9uZXMgZW4gYmFja2dyb3VuZCBhY3VtdWxlbiBzdVxuICAgKiByZXN1bHRhZG8gc2luIHBpc2FyIGVsIGNoYXQgcXVlIGVsIHVzdWFyaW8gZXN0w6EgbWlyYW5kby5cbiAgICovXG4gIGNvbnN0IGNvbW1pdFRvU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICAgIHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5hZGRNZXNzYWdlKHNlc3Npb25JZCwgbWVzc2FnZSlcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgYWRkTWVzc2FnZShtZXNzYWdlKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBkcm9wRnJvbVNlc3Npb24gPSB1c2VDYWxsYmFjayhcbiAgICAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkucmVtb3ZlTWVzc2FnZShzZXNzaW9uSWQsIG1lc3NhZ2VJZClcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgcmVtb3ZlTWVzc2FnZShtZXNzYWdlSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIC8qKiBMaW1waWEgZWwgdGFpbCBlbiB2dWVsbyBkZSB1bmEgc2VzacOzbiAodHJhcyB0ZXJtaW5hcjsgZWwgYmFja2VuZCBwYXNhIGEgc2VyIGZ1ZW50ZSkuICovXG4gIGNvbnN0IGNsZWFyU2Vzc2lvblRhaWwgPSB1c2VDYWxsYmFjaygoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuc2V0TWVzc2FnZXMoc2Vzc2lvbklkLCBbXSlcbiAgfSwgW10pXG5cbiAgLy8gUmVnaXN0cmFyIGxhIHNlc2nDs24gdmlzaWJsZSBlbiBlbCB0cmFja2VyIGdsb2JhbCBwYXJhIHF1ZSBsb3MgY2FsbGJhY2tzIGRlbFxuICAvLyBtb3RvciAocXVlIHB1ZWRlbiBwZXJ0ZW5lY2VyIGEgdW5hIGluc3RhbmNpYSB5YSBkZXNtb250YWRhKSBzZXBhbiBjdcOhbCBlcyBsYVxuICAvLyBzZXNpw7NuIGFjdGl2YSBhY3R1YWwuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWN0aXZlVmlldy5zZXQoYWN0aXZlU2Vzc2lvbklkKVxuICB9LCBbYWN0aXZlU2Vzc2lvbklkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoYWN0aXZlVmlldy5pcyhjdXJyZW50Q2hhdElkLmN1cnJlbnQpKSB7XG4gICAgICAgIGFjdGl2ZVZpZXcuc2V0KG51bGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBSZWNvbmNpbGlhY2nDs246IHNpIGxhIHNlc2nDs24gYWN0aXZhIHRlcm1pbmEgKGNvbXBsZXRlL2Vycm9yKSBwZXJvIGVsIHN0b3JlXG4gIC8vIHBvci1zZXNpw7NuIHRvZGF2w61hIHRpZW5lIHVuIHBsYWNlaG9sZGVyIGRlIHN0cmVhbWluZywgcmVmcmVzY2Ftb3MgZGVzZGVcbiAgLy8gZWwgYmFja2VuZC4gVXNhbW9zIGVsIHN0b3JlIChubyBtZXNzYWdlc1JlZik6IGhhbmRsZVN0cmVhbUZpbmlzaCBsaW1waWEgZWxcbiAgLy8gcGxhY2Vob2xkZXIgYWjDrSBkZSBmb3JtYSBzw61uY3JvbmE7IG1lc3NhZ2VzUmVmIHB1ZWRlIHF1ZWRhciBzdGFsZSB1biByZW5kZXJcbiAgLy8gcG9ycXVlIHNldFN0YXR1cyAoWnVzdGFuZCkgeSByZW1vdmVNZXNzYWdlIChSZWFjdCkgbm8gYmF0Y2hhbiBqdW50b3MuXG4gIC8vIGBjYW5jZWxsZWRgIHF1ZWRhIGFmdWVyYTogZWwgc3RvcCB5YSByZWNvbmNpbGlhIGxvY2FsIChwYXJjaWFsICsgYnVyYnVqYSBkZVxuICAvLyBjYW5jZWxhZG8pIHkgcmVjYXJnYXIgYWPDoSBtb3N0cmFiYSBsYSBwYW50YWxsYSBkZSBjYXJnYSBkZWwgY2hhdCBlbnRlcm8uXG4gIGNvbnN0IGFjdGl2ZVNlc3Npb25NZXRhID0gdXNlU2Vzc2lvbk1ldGEoYWN0aXZlU2Vzc2lvbklkKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1cyA9IGFjdGl2ZVNlc3Npb25NZXRhPy5zdGF0dXNcbiAgICBpZiAoIXN0YXR1cykgcmV0dXJuXG4gICAgY29uc3QgaXNUZXJtaW5hbCA9IHN0YXR1cyA9PT0gJ2NvbXBsZXRlJyB8fCBzdGF0dXMgPT09ICdlcnJvcidcbiAgICBpZiAoIWlzVGVybWluYWwpIHJldHVyblxuICAgIGNvbnN0IGtleSA9IGAke2FjdGl2ZVNlc3Npb25JZH06JHtzdGF0dXN9OiR7YWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQgPz8gJyd9YFxuICAgIGlmIChsYXN0SGFuZGxlZFRlcm1pbmFsUmVmLmN1cnJlbnQgPT09IGtleSkgcmV0dXJuXG4gICAgbGFzdEhhbmRsZWRUZXJtaW5hbFJlZi5jdXJyZW50ID0ga2V5XG5cbiAgICBjb25zdCB0YWlsID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLmdldE1lc3NhZ2VzKGFjdGl2ZVNlc3Npb25JZClcbiAgICBjb25zdCBoYXNTdGFsZVBsYWNlaG9sZGVyID0gdGFpbC5zb21lKG1zZyA9PiBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKG1zZy5pZCkpXG4gICAgaWYgKGhhc1N0YWxlUGxhY2Vob2xkZXIpIHtcbiAgICAgIGxvYWRNZXNzYWdlcyh7IGZvcmNlOiB0cnVlIH0pXG4gICAgfVxuICB9LCBbYWN0aXZlU2Vzc2lvbk1ldGE/LnN0YXR1cywgYWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQsIGFjdGl2ZVNlc3Npb25JZCwgbG9hZE1lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIGNvbnN0IHByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihpbml0aWFsQ2hhdElkKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNJbml0aWFsQ2hhdElkID0gcHJldmlvdXNJbml0aWFsQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0luaXRpYWxDaGF0SWRSZWYuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcblxuICAgIC8vIENoYXQgbnVldm8gLyBob21lOiBpbml0aWFsQ2hhdElkIHBhc2EgYSBudWxsLCBhc8OtIHF1ZSBsYSByYW1hIGRlIGFiYWpvIG5vXG4gICAgLy8gYXBsaWNhLiBIYXkgcXVlIHJvdGFyIGEgdW5hIHNlc2nDs24gbnVldmEgaWd1YWw6IHNpIHNlZ3VpbW9zIGFwdW50YW5kbyBhIGxhXG4gICAgLy8gYW50ZXJpb3IsIGBhY3RpdmVWaWV3YCBsYSBzaWd1ZSBtYXJjYW5kbyBjb21vIGFjdGl2YSB5IGN1YW5kbyB0ZXJtaW5hIG5vIHNlXG4gICAgLy8gbm90aWZpY2EgKHkgc3UgcmVzcHVlc3RhIHNlIGNvbW1pdGVhIHNvYnJlIGxhIHZpc3RhIG51ZXZhKS4gRWwgw6FyYm9sIG5vXG4gICAgLy8gcmVtb250YSBlbiBlc3RlIGZsdWpvIChubyBoYXkgYGtleWApIHkgbmFkaWUgY29uc3VtZSBgcmVzZXRDaGF0YC5cbiAgICBpZiAoIWluaXRpYWxDaGF0SWQgJiYgcHJldmlvdXNJbml0aWFsQ2hhdElkKSB7XG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgc2V0QWN0aXZlU2Vzc2lvbklkKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIE5PIGFib3J0YW1vcyBlbCBzdHJlYW0gYW50ZXJpb3I6IHB1ZWRlIHNlZ3VpciBnZW5lcmFuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIC8vIFNvbG8gY2FtYmlhbW9zIGRlIHNlc2nDs24gYWN0aXZhOyBlbCBtb3RvciBydXRlYSBjYWRhIHN0cmVhbSBwb3Igc3VcbiAgICAgIC8vIHNlc3Npb25JZCwgYXPDrSBxdWUgbG9zIHRva2VucyBkZSBsYSBzZXNpw7NuIHByZXZpYSBzaWd1ZW4gYXBsaWPDoW5kb3NlIGFcbiAgICAgIC8vIEVTQSBzZXNpw7NuIChzdG9yZSksIG5vIGEgbGEgbnVldmEuXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBzZXRBY3RpdmVTZXNzaW9uSWQoaW5pdGlhbENoYXRJZClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgLy8gaXNQcm9jZXNzaW5nUmVmIHJlZmxlamEgc2kgbGEgc2VzacOzbiBBQ1RJVkEgZXN0w6Egb2N1cGFkYS4gU2kgbGEgc2VzacOzblxuICAgICAgLy8gYSBsYSBxdWUgZW50cmFtb3Mgc2lndWUgZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQsIHF1ZWRhIGJsb3F1ZWFkYTsgc2kgbm8sXG4gICAgICAvLyBzZSBoYWJpbGl0YSBlbCBlbnbDrW8gYXVucXVlIG90cmFzIHNlc2lvbmVzIHNpZ2FuIGdlbmVyYW5kby5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoaW5pdGlhbENoYXRJZClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICAvLyBsb2FkTWVzc2FnZXMgbG8gZGlzcGFyYSB1c2VDaGF0TWVzc2FnZXMgYWwgY2FtYmlhciBjaGF0SWQgKGNvbiBjYWNoZSBlbiBtZW1vcmlhKS5cbiAgICB9XG4gIH0sIFtpbml0aWFsQ2hhdElkLCBwcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRBY3RpdmVDaGF0SWQoaW5pdGlhbENoYXRJZCB8fCBudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZCwgc2V0QWN0aXZlQ2hhdElkXSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgbWVzc2FnZUlkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIGNvbnN0IHJldHJ5U25hcHNob3QgPSByZXRyeVNuYXBzaG90UmVmLmN1cnJlbnRcbiAgICAgIGlmIChyZXRyeVNuYXBzaG90KSB7XG4gICAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IHJldHJ5U25hcHNob3RcbiAgICAgICAgcmVwbGFjZU1lc3NhZ2VzKHJldHJ5U25hcHNob3QpXG4gICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdlcnJvcicsIG1lc3NhZ2U6IHQoJ2NoYXQuZXJyb3InKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQWNjZXNzRGVuaWVkID0gZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgY29uc3QgaXNQcm9tcHRUb29Mb25nID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSAnaW52YWxpZF9yZXF1ZXN0X2Vycm9yJyAmJiBlcnJvclJhd01lc3NhZ2U/LmluY2x1ZGVzKCdwcm9tcHQgaXMgdG9vIGxvbmcnKVxuICAgICAgY29uc3QgaXNVc2FnZVF1b3RhRXhjZWVkZWQgPSBpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yKGVycm9yTWVzc2FnZSlcbiAgICAgIGNvbnN0IGlzVXNhZ2VCbG9ja2VkID0gZ2V0VXNhZ2VTdG9yZVN0YXRlKCkuYmxvY2tlZFxuICAgICAgY29uc3QgbWVzc2FnZSA9IGlzQWNjZXNzRGVuaWVkXG4gICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgIDogaXNQcm9tcHRUb29Mb25nXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yUHJvbXB0VG9vTG9uZycsIHsgdXNlZDogZXJyb3JSYXdNZXNzYWdlPy5tYXRjaCgvKFxcZCspIHRva2Vucy8pPy5bMV0gPz8gJycgfSlcbiAgICAgICAgICA6IGlzVXNhZ2VRdW90YUV4Y2VlZGVkICYmIGVycm9yUmF3TWVzc2FnZVxuICAgICAgICAgICAgPyBlcnJvclJhd01lc3NhZ2VcbiAgICAgICAgICAgIDogaXNVc2FnZVF1b3RhRXhjZWVkZWRcbiAgICAgICAgICAgICAgPyB0KCdjaGF0LnVzYWdlLmJsb2NrZWRCYW5uZXInKVxuICAgICAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7bWVzc2FnZUlkfWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIC8vIENoaXAgXCJSZWludGVudGFyXCIgc29sbyBlbiBlbCBlcnJvciBnZW7DqXJpY28gKHAuIGVqLiA1MDApOyBubyBhcGxpY2EgYSBhY2Nlc3MgZGVuaWVkIG5pIHByb21wdCB0b28gbG9uZy5cbiAgICAgICAgLi4uKCFpc0FjY2Vzc0RlbmllZCAmJiAhaXNQcm9tcHRUb29Mb25nICYmICFpc1VzYWdlUXVvdGFFeGNlZWRlZCAmJiAhaXNVc2FnZUJsb2NrZWRcbiAgICAgICAgICA/IHsgc3VnZ2VzdGlvbnM6IFt0KCdjaGF0LnJldHJ5JyldIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgY2xlYXJTZXNzaW9uVGFpbChzZXNzaW9uSWQpXG5cbiAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHJlcGxhY2VNZXNzYWdlcywgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQgfSA9IGN0eFxuXG4gICAgICAvLyBBc2VndXJhbW9zIGVsIHBsYWNlaG9sZGVyIHVuYSDDum5pY2EgdmV6IHBvciBzdHJlYW0sIHRhbnRvIGVuIGVsIHN0b3JlXG4gICAgICAvLyBkZSBsYSBzZXNpw7NuIGNvbW8gZW4gbGEgdmlzdGEgc2kgZXMgbGEgYWN0aXZhLiBFbCB0ZXh0byBlbiB2aXZvIHZpYWphXG4gICAgICAvLyBwb3Igc2Vzc2lvblN0cmVhbWluZ1RleHQgKGV4dGVybm8pLCBzaW4gcmUtcmVuZGVyIGRlbCDDoXJib2wgY29tcGxldG8uXG4gICAgICBjb25zdCBwbGFjZWhvbGRlckV4aXN0cyA9IHVzZVNlc3Npb25zU3RvcmVcbiAgICAgICAgLmdldFN0YXRlKClcbiAgICAgICAgLmdldE1lc3NhZ2VzKHNlc3Npb25JZClcbiAgICAgICAgLnNvbWUobXNnID0+IG1zZy5pZCA9PT0gcGxhY2Vob2xkZXJJZClcblxuICAgICAgaWYgKCFwbGFjZWhvbGRlckV4aXN0cykge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG4gICAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgICBpZDogcGxhY2Vob2xkZXJJZCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gcGxhY2Vob2xkZXJJZFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IHNlc3Npb25JZFxuICAgICAgfVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zZXRUZXh0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGVudClcbiAgICB9LFxuICAgIFtjb21taXRUb1Nlc3Npb25dXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1GaW5pc2ggPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBjdHg6IFN0cmVhbUNvbnRleHQsXG4gICAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgICBzb3VyY2VzOiBhbnksXG4gICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgIHJhd0F0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBjb21wbGV0ZWRBZ2VudElkPzogc3RyaW5nIHwgbnVsbCxcbiAgICAgIC8qKiBQb3NpY2lvbmFsOiBtYXN0ZXIgbm8gbG8gY29uc3VtZSwgcGVybyBgcmVhc29uaW5nYCB2aWVuZSBkZXNwdcOpcy4gKi9cbiAgICAgIF9yZXNvbHZlZENvbnRleHQ/OiBhbnksXG4gICAgICByZWFzb25pbmc/OiBSZWFzb25pbmdUcmFjZVBheWxvYWQgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuICAgICAgcmV0cnlTbmFwc2hvdFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gcGxhY2Vob2xkZXJJZFxuICAgICAgLy8gRWwgcGxhY2Vob2xkZXIgc2FsZSBkZWwgc3RvcmUgcG9yLXNlc2nDs24geWE6IGVsIGVmZWN0byBkZSByZWNvbmNpbGlhY2nDs25cbiAgICAgIC8vIGxvIHVzYSBwYXJhIGRldGVjdGFyIHJlc3B1ZXN0YXMgaHXDqXJmYW5hcyB5IGRlIGFjw6EgYWwgY29tbWl0IHB1ZWRlIGhhYmVyXG4gICAgICAvLyB1biBhd2FpdC4gTGEgdmlzdGEgbG9jYWwgbG8gc3VlbHRhIG3DoXMgYWJham8sIGp1bnRvIGFsIGNvbW1pdC5cbiAgICAgIHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5yZW1vdmVNZXNzYWdlKHNlc3Npb25JZCwgdGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIEVsIHRyYWNlIGFjdW11bGFkbyBlbiB2aXZvIGVzdMOhIGtleWVkIHBvciBlbCBwbGFjZWhvbGRlcjsgbG8gbW92ZW1vcyBhbFxuICAgICAgLy8gaWQgZGVmaW5pdGl2byBwYXJhIHF1ZSBlbCBibG9xdWUgZGUgcmF6b25hbWllbnRvIHNvYnJldml2YSBhbCBzd2FwLlxuICAgICAgY29uc3QgZmluYWxNZXNzYWdlSWQgPSBgYW5zd2VyLSR7bWVtb3J5U2Vzc2lvbklkfWBcbiAgICAgIC8vIFByZWZlcmlyIGVsIHNuYXBzaG90IGVuIHZpdm8gKG5hcnJhY2nDs24gYW5jbGFkYSBhbCBpbmljaW8pIHNvYnJlIGVsXG4gICAgICAvLyBgY29tcGxldGVgIGRlbCBiYWNrLCBxdWUgc3VlbGUgbWFuZGFyIGVzYSBuYXJyYWNpw7NuIGFsIGZpbmFsLlxuICAgICAgY29uc3QgZmluYWxUcmFjZSA9IHJlYXNvbmluZ1RyYWNlRm9yKHRlbXBNZXNzYWdlSWQpID8/IG1hcFJlYXNvbmluZ1RyYWNlKHJlYXNvbmluZylcbiAgICAgIHJlYXNvbmluZ1N0b3JlLnJlbmFtZSh0ZW1wTWVzc2FnZUlkLCBmaW5hbE1lc3NhZ2VJZClcblxuICAgICAgLy8gU2VzacOzbiBlbiBiYWNrZ3JvdW5kOiBjZXJyYW1vcyBsZWFuLiBFbCBiYWNrZW5kIHlhIHBlcnNpc3Rpw7MgbGFcbiAgICAgIC8vIHJlc3B1ZXN0YSwgYXPDrSBxdWUgYWwgdm9sdmVyIGEgbGEgc2VzacOzbiBzZSBjYXJnYSBkZXNkZSBhaMOtLiBBdmlzYW1vc1xuICAgICAgLy8gcXVlIHRlcm1pbsOzICh1bnJlYWQgKyBldmVudG8gcGFyYSB0b2FzdC9zb25pZG8pLlxuICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IGZpbmFsTWVzc2FnZUlkLFxuICAgICAgICAgIG1lc3NhZ2U6IGNvbnRlbnQsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgICByZWFzb25pbmc6IGZpbmFsVHJhY2UsXG4gICAgICAgIH0pXG4gICAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuICAgICAgICBnZXRDaGF0c1N0b3JlU3RhdGUoKS5tYXJrQ2hhdEFzVW5yZWFkKHNlc3Npb25JZClcbiAgICAgICAgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kKHNlc3Npb25JZCwgJ2NvbXBsZXRlJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hbnVhbEFwcHJvdmFsRm9yQW5hbHl0aWNzID0gbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHdhc01hbnVhbENyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBtYW51YWxBcHByb3ZhbEZvckFuYWx5dGljcyAmJiBub3JtYWxpemVIaXRsVG9vbE5hbWUobWFudWFsQXBwcm92YWxGb3JBbmFseXRpY3MudG9vbE5hbWUpID09PSAnY3JlYXRlX2FnZW50J1xuXG4gICAgICBpZiAod2FzTWFudWFsQ3JlYXRlQWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBldmVudChFVkVOVFMuYWlDaGF0SGl0bE9wdGlvbiwge1xuICAgICAgICAgIGFnZW50X3R5cGU6IGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUoYWdlbnQpLFxuICAgICAgICAgIGFjdGlvbl90eXBlOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgcmVzb2x1dGlvbl9zb3VyY2U6ICdtYW51YWwnLFxuICAgICAgICAgIG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcsXG4gICAgICAgICAgLi4uKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSA/IHsgY3JlYXRlZF9hZ2VudF9pZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2FzRWRpdEFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG5cbiAgICAgIGxldCBlZGl0QWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0VkaXRBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGNvbnN0IGZyb21TdHJlYW0gPSBjb21wbGV0ZWRBZ2VudElkPy50cmltKClcbiAgICAgICAgY29uc3QgZnJvbUFyZ3MgPSBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRBZ2VudElkID0gZnJvbVN0cmVhbSB8fCBmcm9tQXJnc1xuICAgICAgICBpZiAocmVzb2x2ZWRBZ2VudElkKSB7XG4gICAgICAgICAgZWRpdEFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IHJlc29sdmVkQWdlbnRJZCB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFza0lkc0Zyb21VcmxzID0gbWF0Y2hlcy5tYXAobWF0Y2ggPT4gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSlcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwgPSBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0ID1cbiAgICAgICAgd2FzVGFza0RlbGV0ZSAmJiB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID09PSAwICYmIHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID09PSAwXG4gICAgICAgICAgPyBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQoY29udGVudClcbiAgICAgICAgICA6IFtdXG4gICAgICBjb25zdCB0YXNrSWRzRm9yRGFzaGJvYXJkID1cbiAgICAgICAgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRhc2tJZHNGcm9tVXJsc1xuICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWxcbiAgICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGlvblRleHRcblxuICAgICAgY29uc3Qgc2hvdWxkU3luY0Rhc2hib2FyZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgKHdhc1Rhc2tDcmVhdGlvbiB8fCB3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlKSAmJlxuICAgICAgICB0YXNrSWRzRm9yRGFzaGJvYXJkLmxlbmd0aCA+IDBcblxuICAgICAgaWYgKHNob3VsZFN5bmNEYXNoYm9hcmQpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IHRhc2tJZHNGb3JEYXNoYm9hcmRcbiAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGNvbnRlbnRUb0FkZCA9IGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBpc09uUHJvamVjdFJvdXRlID0gY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZFxuXG4gICAgICAgIGlmIChpc09uUHJvamVjdFJvdXRlKSB7XG4gICAgICAgICAgaWYgKHdhc1Rhc2tDcmVhdGlvbikge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tFZGl0KSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tEZWxldGUpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5kZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVmZXRjaCBkZWwgdGFzayBwYW5lbCBzaSBlc3TDoSBhYmllcnRvIHkgbGEgdG9vbCBhcHJvYmFkYSBlZGl0w7MvYm9ycsOzIGVzYSB0YXJlYS5cbiAgICAgIC8vIEN1YnJlIGxvcyBkb3MgZmx1am9zIGRlIGFwcHJvdmFsOlxuICAgICAgLy8gICAxKSBBcHByb3ZhbCBwb3IgYm90w7NuIOKGkiBgcHJldmlvdXNNZXNzYWdlLmFwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc2AgKHbDrWEgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSlcbiAgICAgIC8vICAgMikgTWFudWFsIGFwcHJvdmFsICh1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIpIOKGkiBgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRgXG4gICAgICBjb25zdCBvcGVuVGFza1BhbmVsSWQgPSB3aW5kb3cudGFza1BhbmVsPy50YXNrSWRcbiAgICAgIGNvbnN0IG1hbnVhbEFwcHJvdmFsID0gbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRcbiAgICAgIGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50ID0gbnVsbCAvLyBjb25zdW1pciB1bmEgc29sYSB2ZXpcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tFZGl0ID0gISFtYW51YWxBcHByb3ZhbCAmJiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRGVsZXRlID0gISFtYW51YWxBcHByb3ZhbCAmJiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcblxuICAgICAgLy8gU3luYyBQbGFubmVyOiBhdmlzYXIgY2FyZ2EgZGUgaG9yYXMgY29uZmlybWFkYSAoY3JlYXRlX2hvdXIgLyBjcmVhdGVfaG91cnMpLlxuICAgICAgY29uc3QgaG91cnNUb29sc0Zyb21BcHByb3ZhbCA9IHBlbmRpbmdBY3Rpb25zXG4gICAgICAgIC5tYXAoKGFjdGlvbjogUGVuZGluZ0FjdGlvbikgPT4gYWN0aW9uLnRvb2xfbmFtZSlcbiAgICAgICAgLmZpbHRlcigodG9vbE5hbWUpOiB0b29sTmFtZSBpcyBzdHJpbmcgPT4gaXNIb3Vyc0NoYXJnZVRvb2wodG9vbE5hbWUpKVxuICAgICAgY29uc3Qgd2FzSG91cnNDaGFyZ2VBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgIGNvbnN0IG1hbnVhbEhvdXJzVG9vbCA9IG1hbnVhbEFwcHJvdmFsPy50b29sTmFtZVxuICAgICAgY29uc3Qgd2FzSG91cnNDaGFyZ2VNYW51YWxBcHByb3ZlZCA9IGlzSG91cnNDaGFyZ2VUb29sKG1hbnVhbEhvdXJzVG9vbClcblxuICAgICAgaWYgKHdhc0hvdXJzQ2hhcmdlQXBwcm92ZWQgfHwgd2FzSG91cnNDaGFyZ2VNYW51YWxBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCB0b29scyA9IHdhc0hvdXJzQ2hhcmdlQXBwcm92ZWQgPyBob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsIDogbWFudWFsSG91cnNUb29sID8gW21hbnVhbEhvdXJzVG9vbF0gOiBbXVxuICAgICAgICBkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQoe1xuICAgICAgICAgIHNvdXJjZTogJ21haWEnLFxuICAgICAgICAgIHRvb2xzLFxuICAgICAgICAgIHNlc3Npb25JZDogbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3BlblRhc2tQYW5lbElkICYmICh3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlIHx8IG1hbnVhbFdhc1Rhc2tFZGl0IHx8IG1hbnVhbFdhc1Rhc2tEZWxldGUpKSB7XG4gICAgICAgIGNvbnN0IG1hbnVhbFBzZXVkb0FjdGlvbjogUGVuZGluZ0FjdGlvbiB8IG51bGwgPSBtYW51YWxBcHByb3ZhbFxuICAgICAgICAgID8gKHsgdG9vbF9uYW1lOiBtYW51YWxBcHByb3ZhbC50b29sTmFtZSwgdG9vbF9hcmdzOiBtYW51YWxBcHByb3ZhbC50b29sQXJncyA/PyB7fSB9IGFzIFBlbmRpbmdBY3Rpb24pXG4gICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGFmZmVjdGVkVGFza0lkcyA9IFtcbiAgICAgICAgICAuLi5leHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tVXJscyxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLFxuICAgICAgICAgIC4uLihtYW51YWxQc2V1ZG9BY3Rpb24gPyBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MoW21hbnVhbFBzZXVkb0FjdGlvbl0pIDogW10pLFxuICAgICAgICBdLm1hcChTdHJpbmcpXG4gICAgICAgIGlmIChhZmZlY3RlZFRhc2tJZHMuaW5jbHVkZXMoU3RyaW5nKG9wZW5UYXNrUGFuZWxJZCkpKSB7XG4gICAgICAgICAgd2luZG93LnRhc2tQYW5lbD8ucmVmZXRjaFRhc2s/LigpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU3dhcCBwbGFjZWhvbGRlciDihpIgbWVuc2FqZSBmaW5hbC4gVmEgZW4gYGZsdXNoU3luY2AgcG9ycXVlIGVsIG1vdG9yIHlhXG4gICAgICAvLyBkZWrDsyBlbmNvbGFkYXMgbGFzIGVzY3JpdHVyYXMgZGUgZmluIGRlIHN0cmVhbSAoaXNXcml0aW5nLCBhY3Rpdml0eSxcbiAgICAgIC8vIHN0YXR1cyksIHkgZXNhcyB2aWFqYW4gZW4gU3luY0xhbmUgcG9yIHNlciBkZSB1biBzdG9yZSBleHRlcm5vIG1pZW50cmFzXG4gICAgICAvLyBxdWUgZXN0b3Mgc2V0U3RhdGUgdmlhamFuIGVuIERlZmF1bHRMYW5lLiBTaW4gZm9yemFybG8sIFJlYWN0IHBpbnRhXG4gICAgICAvLyBwcmltZXJvIGVsIHBsYWNlaG9sZGVyIHlhIHNpbiBpbmRpY2Fkb3IgZGUgYWN0aXZpZGFkICh0dXJubyA0MXB4IG3DoXNcbiAgICAgIC8vIGJham8pIHkgcmVjacOpbiB+MjVtcyBkZXNwdcOpcyBlbCBtZW5zYWplIGRlZmluaXRpdm86IGVzZSBzYWx0byBkZSBpZGEgeVxuICAgICAgLy8gdnVlbHRhIGVyYSBlbCBmbGlja2VyIGRlIGZpbiBkZSBzdHJlYW0uIENvbiBlbCBmbHVzaCwgdG9kbyBlbCBmaW4gZGVcbiAgICAgIC8vIHN0cmVhbSBlbnRyYSBlbiB1biDDum5pY28gY29tbWl0LlxuICAgICAgZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgZHJvcEZyb21TZXNzaW9uKHNlc3Npb25JZCwgdGVtcE1lc3NhZ2VJZClcbiAgICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICAgIGlkOiBmaW5hbE1lc3NhZ2VJZCxcbiAgICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgICAgIHJlYXNvbmluZzogZmluYWxUcmFjZSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBjbGVhclNlc3Npb25UYWlsKHNlc3Npb25JZClcblxuICAgICAgaWYgKGNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChjcmVhdGVBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gYcOxYWRpciBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8gYWwgbGlzdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZWRpdEFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChlZGl0QWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyByZWZyZXNjYXIgZWwgYWdlbnRlIGVkaXRhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0cnlTbmFwc2hvdFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICBjb25zdCB7IGlzQ2hhdFZpZXdWaXNpYmxlLCBtYXJrQ2hhdEFzUmVhZCB9ID0gZ2V0Q2hhdHNTdG9yZVN0YXRlKClcbiAgICAgIGlmIChpc0FjdGl2ZSAmJiBpc0NoYXRWaWV3VmlzaWJsZSkge1xuICAgICAgICBhd2FpdCBtYXJrQ2hhdEFzUmVhZChzZXNzaW9uSWQsIHsgZm9yY2U6IHRydWUgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHByb2plY3QsIGdldFRhYlRhc2tEZWZhdWx0LCBldmVudCwgYWdlbnRdXG4gIClcblxuICAvLyBgcGFydGlhbFRleHRgIGxvIHJlc2NhdGEgYHN0b3BTdHJlYW1gIGFudGVzIGRlIGxpbXBpYXIgZWwgc3RvcmUgZXh0ZXJubzogZWwgdGV4dG8gZW4gdml2b1xuICAvLyBubyB2aXZlIGVuIGBtZXNzYWdlc2AsIGFzw60gcXVlIHNpbiBlc3RvIGxhIHJlc3B1ZXN0YSBhIG1lZGlhcyBkZXNhcGFyZWNlIGRlIHBhbnRhbGxhIGF1bnF1ZVxuICAvLyBlbCBiYWNrZW5kIHPDrSBsYSBoYXlhIHBlcnNpc3RpZG8uXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjayhcbiAgICAocGFydGlhbFRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gRWwgc3RvcCBzaWVtcHJlIGFwbGljYSBhIGxhIHNlc2nDs24gYWN0aXZhIChib3TDs24gZGVsIGlucHV0IHZpc2libGUpLlxuICAgICAgY29uc3Qgc2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IHN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudClcbiAgICAgIGNvbnN0IGZpbmFsTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gXG4gICAgICBjb25zdCBzdG9wcGVkVHJhY2UgPSByZWFzb25pbmdUcmFjZUZvcih0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIGlmIChzdG9wcGVkVHJhY2U/LnN0ZXBzLmxlbmd0aCkge1xuICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2godGVtcE1lc3NhZ2VJZCwgbnVsbClcbiAgICAgICAgcmVhc29uaW5nU3RvcmUucmVuYW1lKHRlbXBNZXNzYWdlSWQsIGZpbmFsTWVzc2FnZUlkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVhc29uaW5nU3RvcmUucmVtb3ZlKHRlbXBNZXNzYWdlSWQpXG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJ0aWFsVGV4dCkge1xuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IGZpbmFsTWVzc2FnZUlkLFxuICAgICAgICAgIG1lc3NhZ2U6IHBhcnRpYWxUZXh0LFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgICAuLi4oc3RvcHBlZFRyYWNlID8geyByZWFzb25pbmc6IHN0b3BwZWRUcmFjZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBgJHtmaW5hbE1lc3NhZ2VJZH0tY2FuY2VsbGVkYCxcbiAgICAgICAgbWVzc2FnZTogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgY2xlYXJTZXNzaW9uVGFpbChzZXNzaW9uSWQpXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXRyeVNuYXBzaG90UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGN0eDogU3RyZWFtQ29udGV4dCwgYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQpLFxuICAgICAgfVxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgfVxuXG4gICAgICAvLyBQcmVhcHJvYmFkbzogcG9yIGRldGVjY2nDs24gbWFudWFsIG8gcG9yIGF1dG8tYXBwcm92ZS4gRW4gYW1ib3MgY2Fzb3MgZWxcbiAgICAgIC8vIHN0cmVhbSBjb250aW7DumEgeSBubyBoYXkgcXVlIHBpbnRhciBsYSBjYWphIGRlIGFwcm9iYWNpw7NuLlxuICAgICAgaWYgKGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCB8fCBhcHByb3ZhbC5hdXRvX2FwcHJvdmVkIHx8IGFwcHJvdmFsLmFwcHJvdmFsX3N0YXR1cyA9PT0gJ2FwcHJvdmVkJykge1xuICAgICAgICB0cmFja01hbnVhbEhpdGxFdmVudHMoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgeyBpbXByZXNzaW9uOiBFVkVOVFMuYWlDaGF0SGl0bCwgb3B0aW9uOiBFVkVOVFMuYWlDaGF0SGl0bE9wdGlvbiB9LFxuICAgICAgICAgIGFnZW50LFxuICAgICAgICAgIGFwcHJvdmFsLFxuICAgICAgICAgIHRyYWNrZWRNYW51YWxIaXRsS2V5c1JlZi5jdXJyZW50LFxuICAgICAgICAgIGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA/ICdtYW51YWwnIDogJ2F1dG8nXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBmaXJzdEFjdGlvbiA9IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8uWzBdXG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gKGFwcHJvdmFsIGFzIHsgdG9vbF9uYW1lPzogc3RyaW5nIH0pLnRvb2xfbmFtZSA/PyBmaXJzdEFjdGlvbj8udG9vbF9uYW1lID8/ICcnXG4gICAgICAgIGNvbnN0IHRvb2xBcmdzID1cbiAgICAgICAgICAoKGFwcHJvdmFsIGFzIHsgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkudG9vbF9hcmdzID8/XG4gICAgICAgICAgICAoZmlyc3RBY3Rpb24/LnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCkpIHx8XG4gICAgICAgICAgbnVsbFxuICAgICAgICBpZiAodG9vbE5hbWUgJiYgaXNBY3RpdmUpIHtcbiAgICAgICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IHsgdG9vbE5hbWUsIHRvb2xBcmdzIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgY29uc3QgYXBwcm92YWxNZXNzYWdlSWQgPSBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YFxuICAgICAgcmVhc29uaW5nU3RvcmUucmVuYW1lKHBsYWNlaG9sZGVySWQsIGFwcHJvdmFsTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXBwcm92YWxUcmFjZSA9IG1hcFJlYXNvbmluZ1RyYWNlKGFwcHJvdmFsLnJlYXNvbmluZykgPz8gcmVhc29uaW5nVHJhY2VGb3IoYXBwcm92YWxNZXNzYWdlSWQpXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBhcHByb3ZhbE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICAgIHJlYXNvbmluZzogYXBwcm92YWxUcmFjZSxcbiAgICAgIH0pXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdhcHByb3ZhbF9yZXF1aXJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQsIGNvbW1pdFRvU2Vzc2lvbiwgZHJvcEZyb21TZXNzaW9uLCBldmVudF1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIHJldHJ5Q29tcGxldGlvbixcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgYWN0aXZlU2Vzc2lvbklkLFxuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldEFjdGl2ZUxvYWRpbmdzKHt9KVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBQb29sIGRlIHVzb3MgYWdvdGFkbzogbm8gZW52aWFyIChiYW5uZXIgQmxvcXVlbyArIGlucHV0IGRpc2FibGVkKS5cbiAgICAgIGlmIChnZXRVc2FnZVN0b3JlU3RhdGUoKS5ibG9ja2VkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBUb3BlIGRlIGNvbmN1cnJlbmNpYTogc2kgZXN0YSBzZXNpw7NuIG5vIGVzdMOhIGdlbmVyYW5kbyB5IHlhIGhheVxuICAgICAgLy8gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyBhY3RpdmFzLCBhdmlzYW1vcyB5IG5vIGFycmFuY2Ftb3Mgb3RyYS5cbiAgICAgIGNvbnN0IHdpbGxTdGFydE5ld1N0cmVhbSA9ICFzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBpZiAod2lsbFN0YXJ0TmV3U3RyZWFtICYmIHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIHNldEFjdGl2ZUNoYXRJZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHRpdGxlOiBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUoZGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQoY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50KVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBzZXNzaW9uSWRcbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZClcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgY29udGV4dFJlZi5jdXJyZW50LnByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihjdHhUYXNrPy5pZCAhPSBudWxsXG4gICAgICAgICAgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpLCAuLi4oY3R4VGFzay5uYW1lID8geyB0YXNrTmFtZTogY3R4VGFzay5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBjb21taXRUb1Nlc3Npb24sXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKG9wdGlvbi5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogTnVtYmVyKG9wdGlvbi5jbGllbnRJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCByZXRyeU1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICAgIGlmIChnZXRVc2FnZVN0b3JlU3RhdGUoKS5ibG9ja2VkKSByZXR1cm5cblxuICAgICAgY29uc3Qgc2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoc2Vzc2lvbklkKSkgcmV0dXJuXG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGlmICghcHJldmlvdXNNZXNzYWdlcy5zb21lKGl0ZW0gPT4gaXRlbS5pZCA9PT0gbWVzc2FnZS5pZCkpIHJldHVyblxuXG4gICAgICBjb25zdCB1c2VyTWVzc2FnZSA9IGZpbmRVc2VyTWVzc2FnZUZvclJldHJ5KHByZXZpb3VzTWVzc2FnZXMsIG1lc3NhZ2UpXG4gICAgICBpZiAoIXVzZXJNZXNzYWdlPy5tZXNzYWdlPy50cmltKCkgJiYgIXVzZXJNZXNzYWdlPy5hdHRhY2htZW50cz8ubGVuZ3RoICYmICF1c2VyTWVzc2FnZT8uc291cmNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0dXJuSWQgPSByZXNvbHZlUmV0cnlUdXJuSWQobWVzc2FnZSlcbiAgICAgIGNvbnN0IHVzZU9yY2hlc3RyYXRvckZhbGxiYWNrID0gbWVzc2FnZS5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFtZXNzYWdlLm1lbW9yeVNlc3Npb25JZD8udHJpbSgpXG4gICAgICBpZiAoIXR1cm5JZCAmJiAhdXNlT3JjaGVzdHJhdG9yRmFsbGJhY2spIHJldHVyblxuXG4gICAgICBjb25zdCB0cnVuY2F0ZWQgPSBtZXNzYWdlc1dpdGhvdXRSZXRyaWVkVHVybihwcmV2aW91c01lc3NhZ2VzLCBtZXNzYWdlKVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IHByZXZpb3VzTWVzc2FnZXNcbiAgICAgIHNldEFjdGl2ZUNoYXRJZChzZXNzaW9uSWQpXG5cbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IHVzZXJNZXNzYWdlLm1lc3NhZ2VcbiAgICAgIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQgPSBgYW5zd2VyLSR7bmV3TWVzc2FnZUlkfS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlcklkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IHNlc3Npb25JZFxuXG4gICAgICBjb25zdCBwbGFjZWhvbGRlcjogQ2hhdE1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiBzdHJlYW1pbmdQbGFjZWhvbGRlcklkLFxuICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6IGFnZW50Py5uYW1lIHx8ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9XG4gICAgICBjb25zdCBuZXh0TWVzc2FnZXMgPSBbLi4udHJ1bmNhdGVkLCBwbGFjZWhvbGRlcl1cbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBuZXh0TWVzc2FnZXNcbiAgICAgIHJlcGxhY2VNZXNzYWdlcyhuZXh0TWVzc2FnZXMpXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHN0cmVhbWluZ1BsYWNlaG9sZGVySWQpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IHRydW5jYXRlZC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgY29uc3QgcHJvamVjdFRvUmVxdWVzdCA9IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0KGN0eENoaXBzUHJvamVjdCwgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdD8ucHJvamVjdElkKVxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gdHJ1bmNhdGVkLmF0KC0xKT8uYWdlbnRJZCB8fCBtZXNzYWdlLmFnZW50SWRcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheSh1c2VyTWVzc2FnZS5hdHRhY2htZW50cylcbiAgICAgICAgPyB1c2VyTWVzc2FnZS5hdHRhY2htZW50c1xuICAgICAgICA6IEFycmF5LmlzQXJyYXkodXNlck1lc3NhZ2Uuc291cmNlcylcbiAgICAgICAgICA/IHVzZXJNZXNzYWdlLnNvdXJjZXNcbiAgICAgICAgICA6IFtdXG5cbiAgICAgIGNvbnN0IHJlcGxheVZpYU9yY2hlc3RyYXRvciA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgaGlzdG9yeSA9IHRydW5jYXRlZC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuICAgICAgICBjb25zdCBwcm9qZWN0cyA9IHByb2plY3RUb1JlcXVlc3QgPyBhd2FpdCBmZXRjaFByb2plY3RzKFtwcm9qZWN0VG9SZXF1ZXN0XSkgOiBudWxsXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogdXNlck1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhdElkOiBzZXNzaW9uSWQsXG4gICAgICAgICAgbWVzc2FnZUlkOiBuZXdNZXNzYWdlSWQsXG4gICAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBhZ2VudElkOiBTdHJpbmcoY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCB8fCAnJyksXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAgIC4uLih1c2VyTWVzc2FnZS5jb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2U6IHVzZXJNZXNzYWdlLmNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXN1bHQuc3RhcnRlZCkge1xuICAgICAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gcHJldmlvdXNNZXNzYWdlc1xuICAgICAgICAgIHJlcGxhY2VNZXNzYWdlcyhwcmV2aW91c01lc3NhZ2VzKVxuICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIGlmIChyZXN1bHQucmVhc29uID09PSAnbGltaXQnKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3NuYWNrYmFyLWV2ZW50Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1c2VPcmNoZXN0cmF0b3JGYWxsYmFjayB8fCAhdHVybklkKSB7XG4gICAgICAgIGF3YWl0IHJlcGxheVZpYU9yY2hlc3RyYXRvcigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXRyeUNvbXBsZXRpb24oe1xuICAgICAgICBjaGF0SWQ6IHNlc3Npb25JZCxcbiAgICAgICAgbWVzc2FnZUlkOiBuZXdNZXNzYWdlSWQsXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZDogdHVybklkLFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICBhZ2VudElkOiBTdHJpbmcoY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCB8fCAnJyksXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihwcm9qZWN0VG9SZXF1ZXN0ID8geyBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGwgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVzdWx0LnN0YXJ0ZWQpIHJldHVyblxuXG4gICAgICBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ3R1cm5fbm90X2ZvdW5kJykge1xuICAgICAgICBhd2FpdCByZXBsYXlWaWFPcmNoZXN0cmF0b3IoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmV0cnlTbmFwc2hvdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IHByZXZpb3VzTWVzc2FnZXNcbiAgICAgIHJlcGxhY2VNZXNzYWdlcyhwcmV2aW91c01lc3NhZ2VzKVxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ2xpbWl0Jykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICAgIHJlcGxhY2VNZXNzYWdlcyxcbiAgICAgIHJldHJ5Q29tcGxldGlvbixcbiAgICAgIGFza01haWEsXG4gICAgICBmZXRjaFByb2plY3RzLFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICBzZXRBY3RpdmVDaGF0SWQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGdldFVzYWdlU3RvcmVTdGF0ZSgpLmJsb2NrZWQpIHJldHVyblxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmQgPSBmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzKHRocmVhZElkcywgbWVzc2FnZXNSZWYuY3VycmVudClcbiAgICAgIGlmICghZm91bmQ/Lm1lc3NhZ2UuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG1lc3NhZ2U6IG1lc3NhZ2VXaXRoQXBwcm92YWwsIHNlc3Npb25JZDogZm91bmRTZXNzaW9uSWQgfSA9IGZvdW5kXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBpZiAoIWFwcHJvdmFsKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXNzaW9uSWQgPSBhcHByb3ZhbC5zZXNzaW9uX2lkIHx8IGZvdW5kU2Vzc2lvbklkXG4gICAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZXNzaW9uX2lkIGRpc3BvbmlibGUgcGFyYSBhcHByb3ZhbDonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoc2Vzc2lvbklkKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcbiAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBtZXNzYWdlV2l0aEFwcHJvdmFsLm1lc3NhZ2UsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHMsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQWN0aXZlU2Vzc2lvbiA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuICAgICAgaWYgKGlzQWN0aXZlU2Vzc2lvbikge1xuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHsgLi4ubWVzc2FnZVdpdGhBcHByb3ZhbCwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuXG4gICAgICBjb25zdCBzdHJlYW1NZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgaWYgKGlzQWN0aXZlU2Vzc2lvbikge1xuICAgICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBzdHJlYW1NZXNzYWdlSWRcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGl0bEN0eDogU3RyZWFtQ29udGV4dCA9IHtcbiAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICBtZXNzYWdlSWQ6IHN0cmVhbU1lc3NhZ2VJZCxcbiAgICAgICAgcGxhY2Vob2xkZXJJZDogc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQoc3RyZWFtTWVzc2FnZUlkKSxcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmICghaXNBY3RpdmVTZXNzaW9uKSByZXR1cm5cbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uU3RyZWFtTWFuYWdlci5zdGFydENvbnRpbnVlU3RyZWFtKHtcbiAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICBwbGFjZWhvbGRlcklkOiBoaXRsQ3R4LnBsYWNlaG9sZGVySWQsXG4gICAgICAgIGNvbnRpbnVlUmVxdWVzdDoge1xuICAgICAgICAgIHRocmVhZElkcyxcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgfSxcbiAgICAgICAgdCxcbiAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ6IGhpdGxDb250ZXh0LFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUsXG4gICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlOiBjb250ZW50ID0+IGhhbmRsZVN0cmVhbVVwZGF0ZShoaXRsQ3R4LCBjb250ZW50KSxcbiAgICAgICAgICBvbkZpbmlzaFN0cmVhbTogZmluaXNoUGF5bG9hZCA9PiB7XG4gICAgICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goXG4gICAgICAgICAgICAgIGhpdGxDdHgsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQuY29udGVudCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5zb3VyY2VzLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLm1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5hdHRhY2htZW50cyxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5zdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5jb21wbGV0ZWRBZ2VudElkLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnJlc29sdmVkQ29udGV4dCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5yZWFzb25pbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKGhpdGxDdHgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IChhcHByb3ZhbFBheWxvYWQsIGFjY3VtdWxhdGVkQ29udGVudCkgPT4ge1xuICAgICAgICAgICAgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcoKVxuICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZChoaXRsQ3R4LCBhcHByb3ZhbFBheWxvYWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKCFyZXN1bHQuc3RhcnRlZCkge1xuICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgIGlmIChyZXN1bHQucmVhc29uID09PSAnbGltaXQnKSB7XG4gICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbixcbiAgICAgIGhhbmRsZVN0cmVhbUVycm9yLFxuICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgICAgaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBudWxsKSA/PyBjdHhQcm9qZWN0Py5pZCA/PyBudWxsXG5cbiAgICAgIGNvbnN0IGluaXRpYWxEaXNwbGF5TWVzc2FnZSA9IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkodXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCxcbiAgICAgICAgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQsXG4gICAgICB9KVxuXG4gICAgICBlbnN1cmVTZXNzaW9uSW5TaWRlYmFyKHtcbiAgICAgICAgc2Vzc2lvbklkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIHRpdGxlOiBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUoaW5pdGlhbERpc3BsYXlNZXNzYWdlKSxcbiAgICAgICAgYWdlbnQsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMsXG4gICAgICB9KVxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBjdHhQcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogdXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgPyB7IGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkID8geyBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogdXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGluaXRpYWxDaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgYXV0aFVzZXIsXG4gICAgYWdlbnQsXG4gICAgYXNrTWFpYSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHByZXZpb3VzU2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIocHJldmlvdXNTZXNzaW9uSWQpXG4gICAgcmVhc29uaW5nU3RvcmUuY2xlYXIoKVxuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgc2V0QWN0aXZlU2Vzc2lvbklkKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBzZXRBY3RpdmVDaGF0SWQobnVsbClcbiAgfSwgW3NldEFjdGl2ZUNoYXRJZF0pXG5cbiAgY29uc3Qgc3RvcEdlbmVyYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcFN0cmVhbWluZygpXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbc3RvcFN0cmVhbWluZ10pXG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgY3VycmVudFByb2plY3QsXG4gICAgY3VycmVudENoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgIGN1cnJlbnRNZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcblxuICAgIHNlbmRNZXNzYWdlLFxuICAgIHJldHJ5TWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVNDLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFDbkMsU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFHOUIsU0FBU0MsT0FBTyxRQUFpQix3QkFBd0I7QUFDekQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsNERBQTREO0FBQ3JGLFNBQXVDQyxlQUFlLFFBQXdDLGtCQUFrQjtBQUNoSCxTQUF5Q0MsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ2hHLFNBQVNDLGtDQUFrQyxRQUFRLHNDQUFzQztBQUd6RixTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFB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
1852
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiZmx1c2hTeW5jIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQiLCJpc0hvdXJzQ2hhcmdlVG9vbCIsImZldGNoQWdlbnREZXRhaWwiLCJidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCIsImdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUiLCJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJ0cmFja01hbnVhbEhpdGxFdmVudHMiLCJzZXNzaW9uU3RyZWFtaW5nVGV4dCIsInVzZVNlc3Npb25zU3RvcmUiLCJ1c2VTZXNzaW9uTWV0YSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyIsImFjdGl2ZVZpZXciLCJub3RpZnlTZXNzaW9uRmluaXNoZWRJbkJhY2tncm91bmQiLCJidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUiLCJlbnN1cmVTZXNzaW9uSW5TaWRlYmFyIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCIsInN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwiZmluZFVzZXJNZXNzYWdlRm9yUmV0cnkiLCJtZXNzYWdlc1dpdGhvdXRSZXRyaWVkVHVybiIsInJlc29sdmVSZXRyeVR1cm5JZCIsImdldENoYXRzU3RvcmVTdGF0ZSIsInVzZUNoYXRzU3RvcmUiLCJnZXRVc2FnZVN0b3JlU3RhdGUiLCJpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yIiwicmVhc29uaW5nU3RvcmUiLCJidWlsZFJlYXNvbmluZ1RyYWNlIiwibWFwUmVhc29uaW5nVHJhY2UiLCJyZWFzb25pbmdUcmFjZUZvciIsIm1lc3NhZ2VJZCIsInNuYXBzaG90IiwiZ2V0U25hcHNob3QiLCJzdGVwcyIsImxlbmd0aCIsInN1bW1hcnkiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzIiwidGhyZWFkSWRzIiwiYWN0aXZlTWVzc2FnZXMiLCJmcm9tQWN0aXZlVmlldyIsIm1lc3NhZ2UiLCJfbWVzc2FnZSRhcHByb3ZhbCIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsInRocmVhZF9pZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJnZXQiLCJfdXNlU2Vzc2lvbnNTdG9yZSRnZXQiLCJnZXRTdGF0ZSIsIm1lc3NhZ2VzIiwic2Vzc2lvbkVudHJ5IiwiT2JqZWN0IiwiZW50cmllcyIsIl9yZWYyIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsInNlc3Npb25NZXNzYWdlcyIsIl9tZXNzYWdlJGFwcHJvdmFsMiIsIl9zZXNzaW9uRW50cnkiLCJmb3VuZCIsIl9tZXNzYWdlJGFwcHJvdmFsMyIsInVzZUNoYXRNYW5hZ2VyIiwiX3JlZjQiLCJpbml0aWFsQ2hhdElkIiwiY2hhdElkIiwidXNlckluaXRpYWxNZXNzYWdlIiwib25FcnJvciIsIl9yZWY0JGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInRhc2siLCJzZXRUYXNrIiwiYWdlbnQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImlzQXV0b0FwcHJvdmVBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJldmVudCIsIl91c2VQcm9qZWN0cyIsImZldGNoUHJvamVjdHMiLCJfdXNlU3RhYmxlQ2FsbGJhY2tzIiwiX3VzZVRhYlRhc2tEZWZhdWx0IiwiZ2V0VGFiVGFza0RlZmF1bHQiLCJjdXJyZW50TWVzc2FnZUlkIiwiY3VycmVudFVzZXJRdWVzdGlvbiIsImN1cnJlbnRDaGF0SWQiLCJzZXRBY3RpdmVDaGF0SWQiLCJzdGF0ZSIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImxhc3RNYW51YWxBcHByb3ZhbFJlZiIsInRyYWNrZWRNYW51YWxIaXRsS2V5c1JlZiIsIlNldCIsImhpdGxFeGVjdXRpb25Db250ZXh0UmVmIiwicmV0cnlTbmFwc2hvdFJlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYiLCJhY3RpdmVTdHJlYW1DaGF0SWRSZWYiLCJjbGVhclN0cmVhbVVpUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVNlc3Npb25JZCIsInNldEFjdGl2ZVNlc3Npb25JZCIsImlzTW91bnRlZFJlZiIsImxhc3RIYW5kbGVkVGVybWluYWxSZWYiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImlzQXV0b0FwcHJvdmVBY3RpdmVSZWYiLCJjb250ZXh0UmVmIiwiX3VzZUNoYXRNZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwicmVwbGFjZU1lc3NhZ2VzIiwiaGFuZGxlU2Nyb2xsIiwiY29tbWl0VG9TZXNzaW9uIiwiaXMiLCJkcm9wRnJvbVNlc3Npb24iLCJjbGVhclNlc3Npb25UYWlsIiwic2V0TWVzc2FnZXMiLCJzZXQiLCJhY3RpdmVTZXNzaW9uTWV0YSIsIl9hY3RpdmVTZXNzaW9uTWV0YSRmaSIsInN0YXR1cyIsImlzVGVybWluYWwiLCJrZXkiLCJmaW5pc2hlZEF0IiwidGFpbCIsImdldE1lc3NhZ2VzIiwiaGFzU3RhbGVQbGFjZWhvbGRlciIsIm1zZyIsImZvcmNlIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsInByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiIsInByZXZpb3VzSW5pdGlhbENoYXRJZCIsImlzQWN0aXZlIiwiaGFuZGxlU3RyZWFtRXJyb3IiLCJjdHgiLCJlcnJvck1lc3NhZ2UiLCJlcnJvclJhd01lc3NhZ2UiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMiLCJfZXJyb3JSYXdNZXNzYWdlJG1hdGMyIiwicGxhY2Vob2xkZXJJZCIsImNsZWFyIiwicmV0cnlTbmFwc2hvdCIsInNob3ciLCJzZXZlcml0eSIsImlzQWNjZXNzRGVuaWVkIiwiaXNQcm9tcHRUb29Mb25nIiwiaXNVc2FnZVF1b3RhRXhjZWVkZWQiLCJpc1VzYWdlQmxvY2tlZCIsImJsb2NrZWQiLCJ1c2VkIiwiaXNFcnJvciIsInN1Z2dlc3Rpb25zIiwiZGF0ZSIsIkRhdGUiLCJ1c2VyIiwiQVNTSVNUQU5UIiwibWFya0NoYXRBc1VucmVhZCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsImNvbnRlbnQiLCJwbGFjZWhvbGRlckV4aXN0cyIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwiY29tcGxldGVkQWdlbnRJZCIsIl9yZXNvbHZlZENvbnRleHQiLCJyZWFzb25pbmciLCJfcmVhc29uaW5nVHJhY2VGb3IiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfd2luZG93JHRhc2tQYW5lbCIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwiX2VkaXRBZ2VudEZvbGxvd1VwIiwidGVtcE1lc3NhZ2VJZCIsImZpbmFsTWVzc2FnZUlkIiwiZmluYWxUcmFjZSIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwiVEFTS19DUkVBVElPTl9UT09MUyIsIlRBU0tfRURJVF9UT09MUyIsIlRBU0tfREVMRVRFX1RPT0xTIiwid2FzVGFza0NyZWF0aW9uIiwid2FzVGFza0VkaXQiLCJ3YXNUYXNrRGVsZXRlIiwid2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCIsIndhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiY29uZmlndXJlZEFnZW50SWQiLCJtYW51YWxBcHByb3ZhbEZvckFuYWx5dGljcyIsIndhc01hbnVhbENyZWF0ZUFnZW50QXBwcm92ZWQiLCJ3YXNFZGl0QWdlbnRBcHByb3ZlZCIsImVkaXRBZ2VudEZvbGxvd1VwIiwiZnJvbVN0cmVhbSIsImZyb21BcmdzIiwicmVzb2x2ZWRBZ2VudElkIiwidGFza0lkc0Zyb21VcmxzIiwidGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCIsInRhc2tJZHNGcm9tRGVsZXRpb25UZXh0IiwidGFza0lkc0ZvckRhc2hib2FyZCIsInNob3VsZFN5bmNEYXNoYm9hcmQiLCJ0YXNrSWRzIiwidGFiIiwidGFiU2VnbWVudCIsImxhc3RQcm9qZWN0TWVzc2FnZSIsImNvbnRleHRQcm9qZWN0SWRSYXciLCJjb250ZXh0UHJvamVjdElkIiwicGF0aE1hdGNoIiwicm91dGVQcm9qZWN0SWQiLCJpc09uUHJvamVjdFJvdXRlIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMiIsIl93aW5kb3ckbmV3UHJvamVjdERhczMiLCJfd2luZG93JG5ld1Byb2plY3REYXM0IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNSIsIl93aW5kb3ckbmV3UHJvamVjdERhczYiLCJvcGVuVGFza1BhbmVsSWQiLCJtYW51YWxBcHByb3ZhbCIsIm1hbnVhbFdhc1Rhc2tFZGl0IiwibWFudWFsV2FzVGFza0RlbGV0ZSIsImhvdXJzVG9vbHNGcm9tQXBwcm92YWwiLCJ3YXNIb3Vyc0NoYXJnZUFwcHJvdmVkIiwibWFudWFsSG91cnNUb29sIiwid2FzSG91cnNDaGFyZ2VNYW51YWxBcHByb3ZlZCIsInRvb2xzIiwiX21hbnVhbEFwcHJvdmFsJHRvb2xBIiwibWFudWFsUHNldWRvQWN0aW9uIiwiYWZmZWN0ZWRUYXNrSWRzIiwiX3dpbmRvdyR0YXNrUGFuZWwyIiwiX3dpbmRvdyR0YXNrUGFuZWwyJHJlIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImlzQ2hhdFZpZXdWaXNpYmxlIiwibWFya0NoYXRBc1JlYWQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInJlbmFtZSIsImFicnVwdCIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImF0IiwiYXBwcm92YWxTdGF0dXMiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWlDaGF0SGl0bE9wdGlvbiIsImFnZW50X3R5cGUiLCJhY3Rpb25fdHlwZSIsImRlY2lzaW9uIiwib3B0aW9uIiwiY3JlYXRlZF9hZ2VudF9pZCIsInJlc29sdXRpb25fc291cmNlIiwic2VudCIsInJlcGxhY2UiLCJ1cmwiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV3UHJvamVjdERhc2hib2FyZCIsImFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkIiwiY2FsbCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0YXNrSWQiLCJzb3VyY2UiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwidGhlbiIsImNoYXRBZ2VudCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0b3AiLCJfeCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl94OCIsIl94OSIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU3RyZWFtU3RvcCIsInBhcnRpYWxUZXh0Iiwic3RvcHBlZFRyYWNlIiwiZmluaXNoIiwicmVtb3ZlIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJfbWFwUmVhc29uaW5nVHJhY2UiLCJoaXRsQ29udGV4dCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiYXV0b19hcHByb3ZlZCIsImFwcHJvdmFsX3N0YXR1cyIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdDIiLCJfcmVmNiIsIl90b29sX25hbWUiLCJfdG9vbF9hcmdzIiwiaW1wcmVzc2lvbiIsImFpQ2hhdEhpdGwiLCJmaXJzdEFjdGlvbiIsImFwcHJvdmFsTWVzc2FnZUlkIiwiYXBwcm92YWxUcmFjZSIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJhc2tNYWlhIiwicmV0cnlDb21wbGV0aW9uIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNyIsIl9jYWxsZWUyIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJ3aWxsU3RhcnROZXdTdHJlYW0iLCJfbm9ybWFsaXplU2VuZE1lc3NhZ2UiLCJlZmZlY3RpdmVNZW50aW9ucyIsImNvbnRleHRNZXNzYWdlIiwicGF5bG9hZEZ1YUlkIiwicGF5bG9hZFNjSWQiLCJwYXlsb2FkQ29udGV4dERhdGEiLCJkaXNwbGF5TWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJfY29udGV4dFJlZiRjdXJyZW50IiwiY3R4Q2hpcHNQcm9qZWN0IiwiY3R4VGFzayIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWQiLCJmaW5hbE1lc3NhZ2UiLCJfb3B0aW9ucyRwcm9qZWN0Q2hhbmciLCJfY29udGV4dFJlZiRjdXJyZW50JHAiLCJoaXN0b3J5IiwicHJvamVjdFRvUmVxdWVzdCIsInByb2plY3RzIiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDIiLCJnZXRBY3RpdmVDb3VudCIsImNvbnRleHREYXRhIiwicG1BaVR5cGVkVGV4dCIsInRpdGxlIiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwicHJvamVjdE5hbWUiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiYWdlbnRUeXBlIiwiZW1vamkiLCJhZ2VudEVtb2ppIiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJjaGFuZ2VQcm9qZWN0IiwicmV0cnlNZXNzYWdlIiwiX3JlZjgiLCJfY2FsbGVlNCIsIl91c2VyTWVzc2FnZSRtZXNzYWdlIiwiX3VzZXJNZXNzYWdlJGF0dGFjaG1lIiwiX3VzZXJNZXNzYWdlJHNvdXJjZXMiLCJfbWVzc2FnZSRtZW1vcnlTZXNzaW8iLCJfdHJ1bmNhdGVkJGF0IiwicHJldmlvdXNNZXNzYWdlcyIsInVzZXJNZXNzYWdlIiwidHVybklkIiwidXNlT3JjaGVzdHJhdG9yRmFsbGJhY2siLCJ0cnVuY2F0ZWQiLCJwbGFjZWhvbGRlciIsIm5leHRNZXNzYWdlcyIsIl9jb250ZXh0UmVmJGN1cnJlbnQyIiwicmVwbGF5VmlhT3JjaGVzdHJhdG9yIiwicmVzdWx0IiwiX2NvbnRleHQ0IiwiaXRlbSIsIl9yZWY5IiwiX2NhbGxlZTMiLCJfdCIsIl9jb250ZXh0MyIsInN0YXJ0ZWQiLCJyZWFzb24iLCJfeDE1IiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmMCIsIl9jYWxsZWU1IiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsInJlc3BvbnNlIiwiX2NvbnRleHQ1IiwiQ2hhdHMiLCJ3YXNIZWxwZnVsQ2hhdCIsIlRIVU1CU19VUCIsIndhc0hlbHBmdWwiLCJfeDE2IiwiX3gxNyIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmMSIsIl9jYWxsZWU2IiwiZWRpdGVkQWN0aW9ucyIsIm1lc3NhZ2VXaXRoQXBwcm92YWwiLCJmb3VuZFNlc3Npb25JZCIsIm5ld1N0YXR1cyIsImlzQWN0aXZlU2Vzc2lvbiIsInN0cmVhbU1lc3NhZ2VJZCIsImhpdGxDdHgiLCJyZWxlYXNlQWN0aXZlUHJvY2Vzc2luZyIsIl9jb250ZXh0NiIsInN0YXJ0Q29udGludWVTdHJlYW0iLCJjb250aW51ZVJlcXVlc3QiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsImNhbGxiYWNrcyIsImZpbmlzaFBheWxvYWQiLCJyZXNvbHZlZENvbnRleHQiLCJhcHByb3ZhbFBheWxvYWQiLCJfeDE4IiwiX3gxOSIsIl94MjAiLCJpbml0aWFsaXplQ2hhdCIsIl9jYWxsZWU3IiwiX3VzZXJJbml0aWFsTWVzc2FnZSRtIiwiX3VzZXJJbml0aWFsTWVzc2FnZSRhIiwiX3JlZjExIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJoYXNJbml0aWFsQXR0YWNobWVudHMiLCJoYXNJbml0aWFsRmFxIiwiaGFzSW5pdGlhbEZ1YSIsImhhc0luaXRpYWxTYyIsIl9jb250ZXh0UmVmJGN1cnJlbnQzIiwiaW5pdGlhbERpc3BsYXlNZXNzYWdlIiwiX2NvbnRleHQ3IiwiQm9vbGVhbiIsInJlc2V0Q2hhdCIsInByZXZpb3VzU2Vzc2lvbklkIiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmbHVzaFN5bmMgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZGlzcGF0Y2hNYWlhSG91cnNDaGFyZ2VkLCBpc0hvdXJzQ2hhcmdlVG9vbCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9wbGFubmVyU3luY0V2ZW50cydcbmltcG9ydCB7IGZldGNoQWdlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9mZXRjaEFnZW50RGV0YWlsJ1xuaW1wb3J0IHtcbiAgYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QsXG4gIGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUsXG4gIG5vcm1hbGl6ZUhpdGxUb29sTmFtZSxcbiAgdHJhY2tNYW51YWxIaXRsRXZlbnRzLFxufSBmcm9tICcuLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHsgdHlwZSBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1pbmdUZXh0J1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyB1c2VTZXNzaW9uTWV0YSB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25NZXRhJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbU1hbmFnZXIsIE1BWF9DT05DVVJSRU5UX1NUUkVBTVMgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtTWFuYWdlcidcbmltcG9ydCB7IGFjdGl2ZVZpZXcgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9hY3RpdmVWaWV3J1xuaW1wb3J0IHsgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUsIGVuc3VyZVNlc3Npb25JblNpZGViYXIgfSBmcm9tICcuLi8uLi9zdG9yZS9jaGF0c1NpZGViYXJPcHRpbWlzdGljJ1xuaW1wb3J0IHsgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgZmluZFVzZXJNZXNzYWdlRm9yUmV0cnksIG1lc3NhZ2VzV2l0aG91dFJldHJpZWRUdXJuLCByZXNvbHZlUmV0cnlUdXJuSWQgfSBmcm9tICcuLi8uLi91dGlscy9yZXRyeUNvbXBsZXRpb24nXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUNvbnRleHQgfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IGdldENoYXRzU3RvcmVTdGF0ZSwgdXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQgeyBnZXRVc2FnZVN0b3JlU3RhdGUsIGlzVXNhZ2VRdW90YUV4Y2VlZGVkRXJyb3IgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VVc2FnZVN0b3JlJ1xuaW1wb3J0IHsgcmVhc29uaW5nU3RvcmUgfSBmcm9tICcuLi91c2VSZWFzb25pbmdUcmFjZSdcbmltcG9ydCB7IGJ1aWxkUmVhc29uaW5nVHJhY2UsIG1hcFJlYXNvbmluZ1RyYWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVhc29uaW5nTWFwcGVycydcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nVHJhY2UsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3JlYXNvbmluZydcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuLyoqIFRyYWNlIGFjdW11bGFkbyBlbiB2aXZvIHBhcmEgYG1lc3NhZ2VJZGAsIG8gbnVsbCBzaSBlbCBzdG9yZSBhcHVudGEgYSBvdHJvIG1lbnNhamUuICovXG5jb25zdCByZWFzb25pbmdUcmFjZUZvciA9IChtZXNzYWdlSWQ6IHN0cmluZyk6IFJlYXNvbmluZ1RyYWNlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHNuYXBzaG90ID0gcmVhc29uaW5nU3RvcmUuZ2V0U25hcHNob3QobWVzc2FnZUlkKVxuICBpZiAoIXNuYXBzaG90LnN0ZXBzLmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIGJ1aWxkUmVhc29uaW5nVHJhY2Uoc25hcHNob3Quc3RlcHMsIHNuYXBzaG90LnN1bW1hcnkpXG59XG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuLyoqIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBwaW4gdmlzaWJsZTsgc2kgbm8gaGF5IHBpbiwgcmVzdGF1cmFyIGRlc2RlIGhpc3RvcmlhbC4gKi9cbmNvbnN0IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0ID0gKFxuICBjaGlwc1Byb2plY3Q6IHsgcHJvamVjdElkPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBsYXN0TWVzc2FnZVByb2plY3RJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG4gIGlmIChjaGlwc1Byb2plY3RJZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShjaGlwc1Byb2plY3RJZCkpIHtcbiAgICByZXR1cm4gY2hpcHNQcm9qZWN0SWRcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgcmVzb2x2ZUNsaWVudFBheWxvYWQgPSAoXG4gIGN0eENsaWVudDogeyBpZD86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3R4UHJvamVjdDogUHJvamVjdCB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgY2xpZW50SWQ/OiBudW1iZXI7IGNsaWVudE5hbWU/OiBzdHJpbmcgfSA9PiB7XG4gIGlmIChjdHhDbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IGN0eENsaWVudC5pZCwgLi4uKGN0eENsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhDbGllbnQubmFtZSB9IDoge30pIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBOdW1iZXIoY3R4UHJvamVjdC5jbGllbnRJZCkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudElkOiBjdHhQcm9qZWN0LmNsaWVudC5pZCxcbiAgICAgIC4uLihjdHhQcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhQcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgZmluZE1lc3NhZ2VXaXRoQXBwcm92YWxCeVRocmVhZElkcyA9IChcbiAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgYWN0aXZlTWVzc2FnZXM6IENoYXRNZXNzYWdlW11cbik6IHsgbWVzc2FnZTogQ2hhdE1lc3NhZ2U7IHNlc3Npb25JZDogc3RyaW5nIH0gfCBudWxsID0+IHtcbiAgY29uc3QgZnJvbUFjdGl2ZVZpZXcgPSBhY3RpdmVNZXNzYWdlcy5maW5kKG1lc3NhZ2UgPT5cbiAgICBtZXNzYWdlLmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnM/LnNvbWUoYWN0aW9uID0+IHRocmVhZElkcy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgKVxuICBpZiAoZnJvbUFjdGl2ZVZpZXc/LmFwcHJvdmFsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGZyb21BY3RpdmVWaWV3LFxuICAgICAgc2Vzc2lvbklkOiBmcm9tQWN0aXZlVmlldy5hcHByb3ZhbC5zZXNzaW9uX2lkIHx8IGFjdGl2ZVZpZXcuZ2V0KCkgfHwgJycsXG4gICAgfVxuICB9XG5cbiAgY29uc3QgeyBtZXNzYWdlcyB9ID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpXG4gIGNvbnN0IHNlc3Npb25FbnRyeSA9IE9iamVjdC5lbnRyaWVzKG1lc3NhZ2VzKS5maW5kKChbLCBzZXNzaW9uTWVzc2FnZXNdKSA9PlxuICAgIHNlc3Npb25NZXNzYWdlcy5zb21lKG1lc3NhZ2UgPT5cbiAgICAgIG1lc3NhZ2UuYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgIClcbiAgKVxuICBpZiAoc2Vzc2lvbkVudHJ5KSB7XG4gICAgY29uc3QgW3Nlc3Npb25JZCwgc2Vzc2lvbk1lc3NhZ2VzXSA9IHNlc3Npb25FbnRyeVxuICAgIGNvbnN0IGZvdW5kID0gc2Vzc2lvbk1lc3NhZ2VzLmZpbmQobWVzc2FnZSA9PlxuICAgICAgbWVzc2FnZS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgKVxuICAgIGlmIChmb3VuZD8uYXBwcm92YWwpIHtcbiAgICAgIHJldHVybiB7IG1lc3NhZ2U6IGZvdW5kLCBzZXNzaW9uSWQ6IGZvdW5kLmFwcHJvdmFsLnNlc3Npb25faWQgfHwgc2Vzc2lvbklkIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHNldENsaWVudCxcbiAgICB0YXNrLFxuICAgIHNldFRhc2ssXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIGNvbnN0IGN1cnJlbnRNZXNzYWdlSWQgPSB1c2VSZWYodXVpZHY0KCkpXG4gIGNvbnN0IGN1cnJlbnRVc2VyUXVlc3Rpb24gPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY3VycmVudENoYXRJZCA9IHVzZVJlZihpbml0aWFsQ2hhdElkIHx8IHV1aWR2NCgpKVxuICBjb25zdCBzZXRBY3RpdmVDaGF0SWQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldEFjdGl2ZUNoYXRJZClcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBFdml0YSBkdXBsaWNhciBBSV9DSEFUX0hJVEwgLyBBSV9DSEFUX0hJVExfT1BUSU9OIGVuIHByZWFwcm9iYWNpb25lcyAobWFudWFsIG8gYXV0bykgcG9yIGxvdGUuICovXG4gIGNvbnN0IHRyYWNrZWRNYW51YWxIaXRsS2V5c1JlZiA9IHVzZVJlZjxTZXQ8c3RyaW5nPj4obmV3IFNldCgpKVxuICAvKiogQ29udGV4dG8gZGVsIG1lbnNhamUgZGUgYXByb2JhY2nDs24gcHJldmlvIGFsIGVqZWN1dGFyIGNvbnRpbnVlLXRocmVhZC4gKi9cbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYgPSB1c2VSZWY8SGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsPihudWxsKVxuICAvKiogTWVuc2FqZXMgYSByZXN0YXVyYXIgc2kgYHJldHJ5X2NvbXBsZXRpb25gIGZhbGxhIGFudGVzIGRlIHBlcnNpc3RpciBlbCByZWVtcGxhem8uICovXG4gIGNvbnN0IHJldHJ5U25hcHNob3RSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2xlYXJTdHJlYW1VaVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IFthY3RpdmVMb2FkaW5ncywgc2V0QWN0aXZlTG9hZGluZ3NdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pXG4gIC8qKlxuICAgKiBTZXNpw7NuIGFjdHVhbG1lbnRlIHZpc2libGUuIFNlIG1hbnRpZW5lIGVuIHN0YXRlIChubyBzb2xvIGVuIHJlZikgcGFyYSBxdWVcbiAgICogZWwgbW90b3IgZGUgc3RyZWFtaW5nIHB1ZWRhIGxlZXIgcmVhY3RpdmFtZW50ZSBsb3MgZmxhZ3MgZGUgRVNUQSBzZXNpw7NuXG4gICAqIGRlc2RlIGVsIHN0b3JlLCBtaWVudHJhcyBvdHJhcyBzaWd1ZW4gZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQuXG4gICAqL1xuICBjb25zdCBbYWN0aXZlU2Vzc2lvbklkLCBzZXRBY3RpdmVTZXNzaW9uSWRdID0gdXNlU3RhdGU8c3RyaW5nPihjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gIC8qKiBUcnVlIG1pZW50cmFzIGVzdGEgaW5zdGFuY2lhIGVzdMOpIG1vbnRhZGEgKGV2aXRhIHNldFN0YXRlIHRyYXMgZGVzbW9udGFyKS4gKi9cbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlUmVmKHRydWUpXG4gIC8qKiBFdml0YSByZWNvbmNpbGlhciBkb3MgdmVjZXMgZWwgbWlzbW8gZXN0YWRvIHRlcm1pbmFsIGRlIHVuYSBzZXNpw7NuLiAqL1xuICBjb25zdCBsYXN0SGFuZGxlZFRlcm1pbmFsUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaXNXZWJTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc0RlZXBTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYgPSB1c2VSZWYoaXNBdXRvQXBwcm92ZUFjdGl2ZSlcbiAgLyoqIEV2aXRhIGNsb3N1cmVzIG9ic29sZXRhcyBjdWFuZG8gZWwgZm9vdGVyIGNvbnNlcnZhIHNlbmRNZXNzYWdlIGVudHJlIHJlbmRlcnMuICovXG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9KVxuICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaXNBdXRvQXBwcm92ZUFjdGl2ZVJlZi5jdXJyZW50ID0gaXNBdXRvQXBwcm92ZUFjdGl2ZVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSwgaXNBdXRvQXBwcm92ZUFjdGl2ZV0pXG5cbiAgY29uc3Qge1xuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBtZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgbG9hZE1lc3NhZ2VzLFxuICAgIGFkZE1lc3NhZ2UsXG4gICAgcmVtb3ZlTWVzc2FnZSxcbiAgICByZXBsYWNlTWVzc2FnZXMsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICB9ID0gdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgIGN1cnJlbnRVc2VyLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBvbkVycm9yLFxuICAgIGFnZW50cyxcbiAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICAvKipcbiAgICogRXNjcmliZSB1biBtZW5zYWplIGVuIGVsIHN0b3JlIHBvci1zZXNpw7NuIHksIHNpIGxhIHNlc2nDs24gZXMgbGEgYWN0aXZhLFxuICAgKiB0YW1iacOpbiBlbiBsYSB2aXN0YSBsb2NhbC4gUGVybWl0ZSBxdWUgc2VzaW9uZXMgZW4gYmFja2dyb3VuZCBhY3VtdWxlbiBzdVxuICAgKiByZXN1bHRhZG8gc2luIHBpc2FyIGVsIGNoYXQgcXVlIGVsIHVzdWFyaW8gZXN0w6EgbWlyYW5kby5cbiAgICovXG4gIGNvbnN0IGNvbW1pdFRvU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChzZXNzaW9uSWQ6IHN0cmluZywgbWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICAgIHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5hZGRNZXNzYWdlKHNlc3Npb25JZCwgbWVzc2FnZSlcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgYWRkTWVzc2FnZShtZXNzYWdlKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBkcm9wRnJvbVNlc3Npb24gPSB1c2VDYWxsYmFjayhcbiAgICAoc2Vzc2lvbklkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkucmVtb3ZlTWVzc2FnZShzZXNzaW9uSWQsIG1lc3NhZ2VJZClcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiBhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgcmVtb3ZlTWVzc2FnZShtZXNzYWdlSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIC8qKiBMaW1waWEgZWwgdGFpbCBlbiB2dWVsbyBkZSB1bmEgc2VzacOzbiAodHJhcyB0ZXJtaW5hcjsgZWwgYmFja2VuZCBwYXNhIGEgc2VyIGZ1ZW50ZSkuICovXG4gIGNvbnN0IGNsZWFyU2Vzc2lvblRhaWwgPSB1c2VDYWxsYmFjaygoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuc2V0TWVzc2FnZXMoc2Vzc2lvbklkLCBbXSlcbiAgfSwgW10pXG5cbiAgLy8gUmVnaXN0cmFyIGxhIHNlc2nDs24gdmlzaWJsZSBlbiBlbCB0cmFja2VyIGdsb2JhbCBwYXJhIHF1ZSBsb3MgY2FsbGJhY2tzIGRlbFxuICAvLyBtb3RvciAocXVlIHB1ZWRlbiBwZXJ0ZW5lY2VyIGEgdW5hIGluc3RhbmNpYSB5YSBkZXNtb250YWRhKSBzZXBhbiBjdcOhbCBlcyBsYVxuICAvLyBzZXNpw7NuIGFjdGl2YSBhY3R1YWwuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWN0aXZlVmlldy5zZXQoYWN0aXZlU2Vzc2lvbklkKVxuICB9LCBbYWN0aXZlU2Vzc2lvbklkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoYWN0aXZlVmlldy5pcyhjdXJyZW50Q2hhdElkLmN1cnJlbnQpKSB7XG4gICAgICAgIGFjdGl2ZVZpZXcuc2V0KG51bGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBSZWNvbmNpbGlhY2nDs246IHNpIGxhIHNlc2nDs24gYWN0aXZhIHRlcm1pbmEgKGNvbXBsZXRlL2Vycm9yKSBwZXJvIGVsIHN0b3JlXG4gIC8vIHBvci1zZXNpw7NuIHRvZGF2w61hIHRpZW5lIHVuIHBsYWNlaG9sZGVyIGRlIHN0cmVhbWluZywgcmVmcmVzY2Ftb3MgZGVzZGVcbiAgLy8gZWwgYmFja2VuZC4gVXNhbW9zIGVsIHN0b3JlIChubyBtZXNzYWdlc1JlZik6IGhhbmRsZVN0cmVhbUZpbmlzaCBsaW1waWEgZWxcbiAgLy8gcGxhY2Vob2xkZXIgYWjDrSBkZSBmb3JtYSBzw61uY3JvbmE7IG1lc3NhZ2VzUmVmIHB1ZWRlIHF1ZWRhciBzdGFsZSB1biByZW5kZXJcbiAgLy8gcG9ycXVlIHNldFN0YXR1cyAoWnVzdGFuZCkgeSByZW1vdmVNZXNzYWdlIChSZWFjdCkgbm8gYmF0Y2hhbiBqdW50b3MuXG4gIC8vIGBjYW5jZWxsZWRgIHF1ZWRhIGFmdWVyYTogZWwgc3RvcCB5YSByZWNvbmNpbGlhIGxvY2FsIChwYXJjaWFsICsgYnVyYnVqYSBkZVxuICAvLyBjYW5jZWxhZG8pIHkgcmVjYXJnYXIgYWPDoSBtb3N0cmFiYSBsYSBwYW50YWxsYSBkZSBjYXJnYSBkZWwgY2hhdCBlbnRlcm8uXG4gIGNvbnN0IGFjdGl2ZVNlc3Npb25NZXRhID0gdXNlU2Vzc2lvbk1ldGEoYWN0aXZlU2Vzc2lvbklkKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXR1cyA9IGFjdGl2ZVNlc3Npb25NZXRhPy5zdGF0dXNcbiAgICBpZiAoIXN0YXR1cykgcmV0dXJuXG4gICAgY29uc3QgaXNUZXJtaW5hbCA9IHN0YXR1cyA9PT0gJ2NvbXBsZXRlJyB8fCBzdGF0dXMgPT09ICdlcnJvcidcbiAgICBpZiAoIWlzVGVybWluYWwpIHJldHVyblxuICAgIGNvbnN0IGtleSA9IGAke2FjdGl2ZVNlc3Npb25JZH06JHtzdGF0dXN9OiR7YWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQgPz8gJyd9YFxuICAgIGlmIChsYXN0SGFuZGxlZFRlcm1pbmFsUmVmLmN1cnJlbnQgPT09IGtleSkgcmV0dXJuXG4gICAgbGFzdEhhbmRsZWRUZXJtaW5hbFJlZi5jdXJyZW50ID0ga2V5XG5cbiAgICBjb25zdCB0YWlsID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLmdldE1lc3NhZ2VzKGFjdGl2ZVNlc3Npb25JZClcbiAgICBjb25zdCBoYXNTdGFsZVBsYWNlaG9sZGVyID0gdGFpbC5zb21lKG1zZyA9PiBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKG1zZy5pZCkpXG4gICAgaWYgKGhhc1N0YWxlUGxhY2Vob2xkZXIpIHtcbiAgICAgIGxvYWRNZXNzYWdlcyh7IGZvcmNlOiB0cnVlIH0pXG4gICAgfVxuICB9LCBbYWN0aXZlU2Vzc2lvbk1ldGE/LnN0YXR1cywgYWN0aXZlU2Vzc2lvbk1ldGE/LmZpbmlzaGVkQXQsIGFjdGl2ZVNlc3Npb25JZCwgbG9hZE1lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIGNvbnN0IHByZXZpb3VzSW5pdGlhbENoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPihpbml0aWFsQ2hhdElkKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcHJldmlvdXNJbml0aWFsQ2hhdElkID0gcHJldmlvdXNJbml0aWFsQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0luaXRpYWxDaGF0SWRSZWYuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcblxuICAgIC8vIENoYXQgbnVldm8gLyBob21lOiBpbml0aWFsQ2hhdElkIHBhc2EgYSBudWxsLCBhc8OtIHF1ZSBsYSByYW1hIGRlIGFiYWpvIG5vXG4gICAgLy8gYXBsaWNhLiBIYXkgcXVlIHJvdGFyIGEgdW5hIHNlc2nDs24gbnVldmEgaWd1YWw6IHNpIHNlZ3VpbW9zIGFwdW50YW5kbyBhIGxhXG4gICAgLy8gYW50ZXJpb3IsIGBhY3RpdmVWaWV3YCBsYSBzaWd1ZSBtYXJjYW5kbyBjb21vIGFjdGl2YSB5IGN1YW5kbyB0ZXJtaW5hIG5vIHNlXG4gICAgLy8gbm90aWZpY2EgKHkgc3UgcmVzcHVlc3RhIHNlIGNvbW1pdGVhIHNvYnJlIGxhIHZpc3RhIG51ZXZhKS4gRWwgw6FyYm9sIG5vXG4gICAgLy8gcmVtb250YSBlbiBlc3RlIGZsdWpvIChubyBoYXkgYGtleWApIHkgbmFkaWUgY29uc3VtZSBgcmVzZXRDaGF0YC5cbiAgICBpZiAoIWluaXRpYWxDaGF0SWQgJiYgcHJldmlvdXNJbml0aWFsQ2hhdElkKSB7XG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgICAgc2V0QWN0aXZlU2Vzc2lvbklkKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIE5PIGFib3J0YW1vcyBlbCBzdHJlYW0gYW50ZXJpb3I6IHB1ZWRlIHNlZ3VpciBnZW5lcmFuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIC8vIFNvbG8gY2FtYmlhbW9zIGRlIHNlc2nDs24gYWN0aXZhOyBlbCBtb3RvciBydXRlYSBjYWRhIHN0cmVhbSBwb3Igc3VcbiAgICAgIC8vIHNlc3Npb25JZCwgYXPDrSBxdWUgbG9zIHRva2VucyBkZSBsYSBzZXNpw7NuIHByZXZpYSBzaWd1ZW4gYXBsaWPDoW5kb3NlIGFcbiAgICAgIC8vIEVTQSBzZXNpw7NuIChzdG9yZSksIG5vIGEgbGEgbnVldmEuXG5cbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSBpbml0aWFsQ2hhdElkXG4gICAgICBzZXRBY3RpdmVTZXNzaW9uSWQoaW5pdGlhbENoYXRJZClcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgLy8gaXNQcm9jZXNzaW5nUmVmIHJlZmxlamEgc2kgbGEgc2VzacOzbiBBQ1RJVkEgZXN0w6Egb2N1cGFkYS4gU2kgbGEgc2VzacOzblxuICAgICAgLy8gYSBsYSBxdWUgZW50cmFtb3Mgc2lndWUgZ2VuZXJhbmRvIGVuIGJhY2tncm91bmQsIHF1ZWRhIGJsb3F1ZWFkYTsgc2kgbm8sXG4gICAgICAvLyBzZSBoYWJpbGl0YSBlbCBlbnbDrW8gYXVucXVlIG90cmFzIHNlc2lvbmVzIHNpZ2FuIGdlbmVyYW5kby5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoaW5pdGlhbENoYXRJZClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICAvLyBsb2FkTWVzc2FnZXMgbG8gZGlzcGFyYSB1c2VDaGF0TWVzc2FnZXMgYWwgY2FtYmlhciBjaGF0SWQgKGNvbiBjYWNoZSBlbiBtZW1vcmlhKS5cbiAgICB9XG4gIH0sIFtpbml0aWFsQ2hhdElkLCBwcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0VGFza10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRBY3RpdmVDaGF0SWQoaW5pdGlhbENoYXRJZCB8fCBudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZCwgc2V0QWN0aXZlQ2hhdElkXSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGVycm9yTWVzc2FnZT86IHN0cmluZywgZXJyb3JSYXdNZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgbWVzc2FnZUlkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIGNvbnN0IHJldHJ5U25hcHNob3QgPSByZXRyeVNuYXBzaG90UmVmLmN1cnJlbnRcbiAgICAgIGlmIChyZXRyeVNuYXBzaG90KSB7XG4gICAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IHJldHJ5U25hcHNob3RcbiAgICAgICAgcmVwbGFjZU1lc3NhZ2VzKHJldHJ5U25hcHNob3QpXG4gICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdlcnJvcicsIG1lc3NhZ2U6IHQoJ2NoYXQuZXJyb3InKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQWNjZXNzRGVuaWVkID0gZXJyb3JNZXNzYWdlID09PSBcIkFjY2VzcyBkZW5pZWQ6IFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoaXMgYWdlbnRcIlxuICAgICAgY29uc3QgaXNQcm9tcHRUb29Mb25nID1cbiAgICAgICAgZXJyb3JNZXNzYWdlID09PSAnaW52YWxpZF9yZXF1ZXN0X2Vycm9yJyAmJiBlcnJvclJhd01lc3NhZ2U/LmluY2x1ZGVzKCdwcm9tcHQgaXMgdG9vIGxvbmcnKVxuICAgICAgY29uc3QgaXNVc2FnZVF1b3RhRXhjZWVkZWQgPSBpc1VzYWdlUXVvdGFFeGNlZWRlZEVycm9yKGVycm9yTWVzc2FnZSlcbiAgICAgIGNvbnN0IGlzVXNhZ2VCbG9ja2VkID0gZ2V0VXNhZ2VTdG9yZVN0YXRlKCkuYmxvY2tlZFxuICAgICAgY29uc3QgbWVzc2FnZSA9IGlzQWNjZXNzRGVuaWVkXG4gICAgICAgID8gdCgnY2hhdC5lcnJvckFjY2Vzc0RlbmllZCcpXG4gICAgICAgIDogaXNQcm9tcHRUb29Mb25nXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yUHJvbXB0VG9vTG9uZycsIHsgdXNlZDogZXJyb3JSYXdNZXNzYWdlPy5tYXRjaCgvKFxcZCspIHRva2Vucy8pPy5bMV0gPz8gJycgfSlcbiAgICAgICAgICA6IGlzVXNhZ2VRdW90YUV4Y2VlZGVkXG4gICAgICAgICAgICA/IHQoJ2NoYXQudXNhZ2UuYmxvY2tlZEJhbm5lcicpXG4gICAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7bWVzc2FnZUlkfWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGlzRXJyb3I6IHRydWUsXG4gICAgICAgIC8vIENoaXAgXCJSZWludGVudGFyXCIgc29sbyBlbiBlbCBlcnJvciBnZW7DqXJpY28gKHAuIGVqLiA1MDApOyBubyBhcGxpY2EgYSBhY2Nlc3MgZGVuaWVkIG5pIHByb21wdCB0b28gbG9uZy5cbiAgICAgICAgLi4uKCFpc0FjY2Vzc0RlbmllZCAmJiAhaXNQcm9tcHRUb29Mb25nICYmICFpc1VzYWdlUXVvdGFFeGNlZWRlZCAmJiAhaXNVc2FnZUJsb2NrZWRcbiAgICAgICAgICA/IHsgc3VnZ2VzdGlvbnM6IFt0KCdjaGF0LnJldHJ5JyldIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgY2xlYXJTZXNzaW9uVGFpbChzZXNzaW9uSWQpXG5cbiAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHJlcGxhY2VNZXNzYWdlcywgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChjdHg6IFN0cmVhbUNvbnRleHQsIGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQgfSA9IGN0eFxuXG4gICAgICAvLyBBc2VndXJhbW9zIGVsIHBsYWNlaG9sZGVyIHVuYSDDum5pY2EgdmV6IHBvciBzdHJlYW0sIHRhbnRvIGVuIGVsIHN0b3JlXG4gICAgICAvLyBkZSBsYSBzZXNpw7NuIGNvbW8gZW4gbGEgdmlzdGEgc2kgZXMgbGEgYWN0aXZhLiBFbCB0ZXh0byBlbiB2aXZvIHZpYWphXG4gICAgICAvLyBwb3Igc2Vzc2lvblN0cmVhbWluZ1RleHQgKGV4dGVybm8pLCBzaW4gcmUtcmVuZGVyIGRlbCDDoXJib2wgY29tcGxldG8uXG4gICAgICBjb25zdCBwbGFjZWhvbGRlckV4aXN0cyA9IHVzZVNlc3Npb25zU3RvcmVcbiAgICAgICAgLmdldFN0YXRlKClcbiAgICAgICAgLmdldE1lc3NhZ2VzKHNlc3Npb25JZClcbiAgICAgICAgLnNvbWUobXNnID0+IG1zZy5pZCA9PT0gcGxhY2Vob2xkZXJJZClcblxuICAgICAgaWYgKCFwbGFjZWhvbGRlckV4aXN0cykge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG4gICAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgICBpZDogcGxhY2Vob2xkZXJJZCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChhY3RpdmVWaWV3LmlzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gcGxhY2Vob2xkZXJJZFxuICAgICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IHNlc3Npb25JZFxuICAgICAgfVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zZXRUZXh0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGVudClcbiAgICB9LFxuICAgIFtjb21taXRUb1Nlc3Npb25dXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1GaW5pc2ggPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBjdHg6IFN0cmVhbUNvbnRleHQsXG4gICAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgICBzb3VyY2VzOiBhbnksXG4gICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgIHJhd0F0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBjb21wbGV0ZWRBZ2VudElkPzogc3RyaW5nIHwgbnVsbCxcbiAgICAgIC8qKiBQb3NpY2lvbmFsOiBtYXN0ZXIgbm8gbG8gY29uc3VtZSwgcGVybyBgcmVhc29uaW5nYCB2aWVuZSBkZXNwdcOpcy4gKi9cbiAgICAgIF9yZXNvbHZlZENvbnRleHQ/OiBhbnksXG4gICAgICByZWFzb25pbmc/OiBSZWFzb25pbmdUcmFjZVBheWxvYWQgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCB9ID0gY3R4XG4gICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuICAgICAgcmV0cnlTbmFwc2hvdFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gcGxhY2Vob2xkZXJJZFxuICAgICAgLy8gRWwgcGxhY2Vob2xkZXIgc2FsZSBkZWwgc3RvcmUgcG9yLXNlc2nDs24geWE6IGVsIGVmZWN0byBkZSByZWNvbmNpbGlhY2nDs25cbiAgICAgIC8vIGxvIHVzYSBwYXJhIGRldGVjdGFyIHJlc3B1ZXN0YXMgaHXDqXJmYW5hcyB5IGRlIGFjw6EgYWwgY29tbWl0IHB1ZWRlIGhhYmVyXG4gICAgICAvLyB1biBhd2FpdC4gTGEgdmlzdGEgbG9jYWwgbG8gc3VlbHRhIG3DoXMgYWJham8sIGp1bnRvIGFsIGNvbW1pdC5cbiAgICAgIHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5yZW1vdmVNZXNzYWdlKHNlc3Npb25JZCwgdGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIEVsIHRyYWNlIGFjdW11bGFkbyBlbiB2aXZvIGVzdMOhIGtleWVkIHBvciBlbCBwbGFjZWhvbGRlcjsgbG8gbW92ZW1vcyBhbFxuICAgICAgLy8gaWQgZGVmaW5pdGl2byBwYXJhIHF1ZSBlbCBibG9xdWUgZGUgcmF6b25hbWllbnRvIHNvYnJldml2YSBhbCBzd2FwLlxuICAgICAgY29uc3QgZmluYWxNZXNzYWdlSWQgPSBgYW5zd2VyLSR7bWVtb3J5U2Vzc2lvbklkfWBcbiAgICAgIC8vIFByZWZlcmlyIGVsIHNuYXBzaG90IGVuIHZpdm8gKG5hcnJhY2nDs24gYW5jbGFkYSBhbCBpbmljaW8pIHNvYnJlIGVsXG4gICAgICAvLyBgY29tcGxldGVgIGRlbCBiYWNrLCBxdWUgc3VlbGUgbWFuZGFyIGVzYSBuYXJyYWNpw7NuIGFsIGZpbmFsLlxuICAgICAgY29uc3QgZmluYWxUcmFjZSA9IHJlYXNvbmluZ1RyYWNlRm9yKHRlbXBNZXNzYWdlSWQpID8/IG1hcFJlYXNvbmluZ1RyYWNlKHJlYXNvbmluZylcbiAgICAgIHJlYXNvbmluZ1N0b3JlLnJlbmFtZSh0ZW1wTWVzc2FnZUlkLCBmaW5hbE1lc3NhZ2VJZClcblxuICAgICAgLy8gU2VzacOzbiBlbiBiYWNrZ3JvdW5kOiBjZXJyYW1vcyBsZWFuLiBFbCBiYWNrZW5kIHlhIHBlcnNpc3Rpw7MgbGFcbiAgICAgIC8vIHJlc3B1ZXN0YSwgYXPDrSBxdWUgYWwgdm9sdmVyIGEgbGEgc2VzacOzbiBzZSBjYXJnYSBkZXNkZSBhaMOtLiBBdmlzYW1vc1xuICAgICAgLy8gcXVlIHRlcm1pbsOzICh1bnJlYWQgKyBldmVudG8gcGFyYSB0b2FzdC9zb25pZG8pLlxuICAgICAgaWYgKCFpc0FjdGl2ZSkge1xuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IGZpbmFsTWVzc2FnZUlkLFxuICAgICAgICAgIG1lc3NhZ2U6IGNvbnRlbnQsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgICByZWFzb25pbmc6IGZpbmFsVHJhY2UsXG4gICAgICAgIH0pXG4gICAgICAgIGNsZWFyU2Vzc2lvblRhaWwoc2Vzc2lvbklkKVxuICAgICAgICBnZXRDaGF0c1N0b3JlU3RhdGUoKS5tYXJrQ2hhdEFzVW5yZWFkKHNlc3Npb25JZClcbiAgICAgICAgbm90aWZ5U2Vzc2lvbkZpbmlzaGVkSW5CYWNrZ3JvdW5kKHNlc3Npb25JZCwgJ2NvbXBsZXRlJylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hbnVhbEFwcHJvdmFsRm9yQW5hbHl0aWNzID0gbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHdhc01hbnVhbENyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBtYW51YWxBcHByb3ZhbEZvckFuYWx5dGljcyAmJiBub3JtYWxpemVIaXRsVG9vbE5hbWUobWFudWFsQXBwcm92YWxGb3JBbmFseXRpY3MudG9vbE5hbWUpID09PSAnY3JlYXRlX2FnZW50J1xuXG4gICAgICBpZiAod2FzTWFudWFsQ3JlYXRlQWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBldmVudChFVkVOVFMuYWlDaGF0SGl0bE9wdGlvbiwge1xuICAgICAgICAgIGFnZW50X3R5cGU6IGdldEhpdGxBbmFseXRpY3NBZ2VudFR5cGUoYWdlbnQpLFxuICAgICAgICAgIGFjdGlvbl90eXBlOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgcmVzb2x1dGlvbl9zb3VyY2U6ICdtYW51YWwnLFxuICAgICAgICAgIG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcsXG4gICAgICAgICAgLi4uKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSA/IHsgY3JlYXRlZF9hZ2VudF9pZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd2FzRWRpdEFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG5cbiAgICAgIGxldCBlZGl0QWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0VkaXRBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGNvbnN0IGZyb21TdHJlYW0gPSBjb21wbGV0ZWRBZ2VudElkPy50cmltKClcbiAgICAgICAgY29uc3QgZnJvbUFyZ3MgPSBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRBZ2VudElkID0gZnJvbVN0cmVhbSB8fCBmcm9tQXJnc1xuICAgICAgICBpZiAocmVzb2x2ZWRBZ2VudElkKSB7XG4gICAgICAgICAgZWRpdEFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IHJlc29sdmVkQWdlbnRJZCB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFza0lkc0Zyb21VcmxzID0gbWF0Y2hlcy5tYXAobWF0Y2ggPT4gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSlcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwgPSBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0ID1cbiAgICAgICAgd2FzVGFza0RlbGV0ZSAmJiB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID09PSAwICYmIHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID09PSAwXG4gICAgICAgICAgPyBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQoY29udGVudClcbiAgICAgICAgICA6IFtdXG4gICAgICBjb25zdCB0YXNrSWRzRm9yRGFzaGJvYXJkID1cbiAgICAgICAgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRhc2tJZHNGcm9tVXJsc1xuICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWxcbiAgICAgICAgICAgIDogdGFza0lkc0Zyb21EZWxldGlvblRleHRcblxuICAgICAgY29uc3Qgc2hvdWxkU3luY0Rhc2hib2FyZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgKHdhc1Rhc2tDcmVhdGlvbiB8fCB3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlKSAmJlxuICAgICAgICB0YXNrSWRzRm9yRGFzaGJvYXJkLmxlbmd0aCA+IDBcblxuICAgICAgaWYgKHNob3VsZFN5bmNEYXNoYm9hcmQpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IHRhc2tJZHNGb3JEYXNoYm9hcmRcbiAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGNvbnRlbnRUb0FkZCA9IGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBpc09uUHJvamVjdFJvdXRlID0gY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZFxuXG4gICAgICAgIGlmIChpc09uUHJvamVjdFJvdXRlKSB7XG4gICAgICAgICAgaWYgKHdhc1Rhc2tDcmVhdGlvbikge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tFZGl0KSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9IGVsc2UgaWYgKHdhc1Rhc2tEZWxldGUpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5kZWxldGVFeGlzdGluZ1Rhc2tGcm9tRGFzaGJvYXJkPy4odGFza0lkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVmZXRjaCBkZWwgdGFzayBwYW5lbCBzaSBlc3TDoSBhYmllcnRvIHkgbGEgdG9vbCBhcHJvYmFkYSBlZGl0w7MvYm9ycsOzIGVzYSB0YXJlYS5cbiAgICAgIC8vIEN1YnJlIGxvcyBkb3MgZmx1am9zIGRlIGFwcHJvdmFsOlxuICAgICAgLy8gICAxKSBBcHByb3ZhbCBwb3IgYm90w7NuIOKGkiBgcHJldmlvdXNNZXNzYWdlLmFwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc2AgKHbDrWEgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSlcbiAgICAgIC8vICAgMikgTWFudWFsIGFwcHJvdmFsICh1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIpIOKGkiBgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRgXG4gICAgICBjb25zdCBvcGVuVGFza1BhbmVsSWQgPSB3aW5kb3cudGFza1BhbmVsPy50YXNrSWRcbiAgICAgIGNvbnN0IG1hbnVhbEFwcHJvdmFsID0gbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnRcbiAgICAgIGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50ID0gbnVsbCAvLyBjb25zdW1pciB1bmEgc29sYSB2ZXpcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tFZGl0ID0gISFtYW51YWxBcHByb3ZhbCAmJiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRGVsZXRlID0gISFtYW51YWxBcHByb3ZhbCAmJiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcblxuICAgICAgLy8gU3luYyBQbGFubmVyOiBhdmlzYXIgY2FyZ2EgZGUgaG9yYXMgY29uZmlybWFkYSAoY3JlYXRlX2hvdXIgLyBjcmVhdGVfaG91cnMpLlxuICAgICAgY29uc3QgaG91cnNUb29sc0Zyb21BcHByb3ZhbCA9IHBlbmRpbmdBY3Rpb25zXG4gICAgICAgIC5tYXAoKGFjdGlvbjogUGVuZGluZ0FjdGlvbikgPT4gYWN0aW9uLnRvb2xfbmFtZSlcbiAgICAgICAgLmZpbHRlcigodG9vbE5hbWUpOiB0b29sTmFtZSBpcyBzdHJpbmcgPT4gaXNIb3Vyc0NoYXJnZVRvb2wodG9vbE5hbWUpKVxuICAgICAgY29uc3Qgd2FzSG91cnNDaGFyZ2VBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgIGNvbnN0IG1hbnVhbEhvdXJzVG9vbCA9IG1hbnVhbEFwcHJvdmFsPy50b29sTmFtZVxuICAgICAgY29uc3Qgd2FzSG91cnNDaGFyZ2VNYW51YWxBcHByb3ZlZCA9IGlzSG91cnNDaGFyZ2VUb29sKG1hbnVhbEhvdXJzVG9vbClcblxuICAgICAgaWYgKHdhc0hvdXJzQ2hhcmdlQXBwcm92ZWQgfHwgd2FzSG91cnNDaGFyZ2VNYW51YWxBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCB0b29scyA9IHdhc0hvdXJzQ2hhcmdlQXBwcm92ZWQgPyBob3Vyc1Rvb2xzRnJvbUFwcHJvdmFsIDogbWFudWFsSG91cnNUb29sID8gW21hbnVhbEhvdXJzVG9vbF0gOiBbXVxuICAgICAgICBkaXNwYXRjaE1haWFIb3Vyc0NoYXJnZWQoe1xuICAgICAgICAgIHNvdXJjZTogJ21haWEnLFxuICAgICAgICAgIHRvb2xzLFxuICAgICAgICAgIHNlc3Npb25JZDogbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3BlblRhc2tQYW5lbElkICYmICh3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlIHx8IG1hbnVhbFdhc1Rhc2tFZGl0IHx8IG1hbnVhbFdhc1Rhc2tEZWxldGUpKSB7XG4gICAgICAgIGNvbnN0IG1hbnVhbFBzZXVkb0FjdGlvbjogUGVuZGluZ0FjdGlvbiB8IG51bGwgPSBtYW51YWxBcHByb3ZhbFxuICAgICAgICAgID8gKHsgdG9vbF9uYW1lOiBtYW51YWxBcHByb3ZhbC50b29sTmFtZSwgdG9vbF9hcmdzOiBtYW51YWxBcHByb3ZhbC50b29sQXJncyA/PyB7fSB9IGFzIFBlbmRpbmdBY3Rpb24pXG4gICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGFmZmVjdGVkVGFza0lkcyA9IFtcbiAgICAgICAgICAuLi5leHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tVXJscyxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLFxuICAgICAgICAgIC4uLihtYW51YWxQc2V1ZG9BY3Rpb24gPyBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MoW21hbnVhbFBzZXVkb0FjdGlvbl0pIDogW10pLFxuICAgICAgICBdLm1hcChTdHJpbmcpXG4gICAgICAgIGlmIChhZmZlY3RlZFRhc2tJZHMuaW5jbHVkZXMoU3RyaW5nKG9wZW5UYXNrUGFuZWxJZCkpKSB7XG4gICAgICAgICAgd2luZG93LnRhc2tQYW5lbD8ucmVmZXRjaFRhc2s/LigpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU3dhcCBwbGFjZWhvbGRlciDihpIgbWVuc2FqZSBmaW5hbC4gVmEgZW4gYGZsdXNoU3luY2AgcG9ycXVlIGVsIG1vdG9yIHlhXG4gICAgICAvLyBkZWrDsyBlbmNvbGFkYXMgbGFzIGVzY3JpdHVyYXMgZGUgZmluIGRlIHN0cmVhbSAoaXNXcml0aW5nLCBhY3Rpdml0eSxcbiAgICAgIC8vIHN0YXR1cyksIHkgZXNhcyB2aWFqYW4gZW4gU3luY0xhbmUgcG9yIHNlciBkZSB1biBzdG9yZSBleHRlcm5vIG1pZW50cmFzXG4gICAgICAvLyBxdWUgZXN0b3Mgc2V0U3RhdGUgdmlhamFuIGVuIERlZmF1bHRMYW5lLiBTaW4gZm9yemFybG8sIFJlYWN0IHBpbnRhXG4gICAgICAvLyBwcmltZXJvIGVsIHBsYWNlaG9sZGVyIHlhIHNpbiBpbmRpY2Fkb3IgZGUgYWN0aXZpZGFkICh0dXJubyA0MXB4IG3DoXNcbiAgICAgIC8vIGJham8pIHkgcmVjacOpbiB+MjVtcyBkZXNwdcOpcyBlbCBtZW5zYWplIGRlZmluaXRpdm86IGVzZSBzYWx0byBkZSBpZGEgeVxuICAgICAgLy8gdnVlbHRhIGVyYSBlbCBmbGlja2VyIGRlIGZpbiBkZSBzdHJlYW0uIENvbiBlbCBmbHVzaCwgdG9kbyBlbCBmaW4gZGVcbiAgICAgIC8vIHN0cmVhbSBlbnRyYSBlbiB1biDDum5pY28gY29tbWl0LlxuICAgICAgZmx1c2hTeW5jKCgpID0+IHtcbiAgICAgICAgZHJvcEZyb21TZXNzaW9uKHNlc3Npb25JZCwgdGVtcE1lc3NhZ2VJZClcbiAgICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICAgIGlkOiBmaW5hbE1lc3NhZ2VJZCxcbiAgICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgICAgIHJlYXNvbmluZzogZmluYWxUcmFjZSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICBjbGVhclNlc3Npb25UYWlsKHNlc3Npb25JZClcblxuICAgICAgaWYgKGNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChjcmVhdGVBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gYcOxYWRpciBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8gYWwgbGlzdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZWRpdEFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChlZGl0QWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyByZWZyZXNjYXIgZWwgYWdlbnRlIGVkaXRhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0cnlTbmFwc2hvdFJlZi5jdXJyZW50ID0gbnVsbFxuXG4gICAgICBjb25zdCB7IGlzQ2hhdFZpZXdWaXNpYmxlLCBtYXJrQ2hhdEFzUmVhZCB9ID0gZ2V0Q2hhdHNTdG9yZVN0YXRlKClcbiAgICAgIGlmIChpc0FjdGl2ZSAmJiBpc0NoYXRWaWV3VmlzaWJsZSkge1xuICAgICAgICBhd2FpdCBtYXJrQ2hhdEFzUmVhZChzZXNzaW9uSWQsIHsgZm9yY2U6IHRydWUgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHByb2plY3QsIGdldFRhYlRhc2tEZWZhdWx0LCBldmVudCwgYWdlbnRdXG4gIClcblxuICAvLyBgcGFydGlhbFRleHRgIGxvIHJlc2NhdGEgYHN0b3BTdHJlYW1gIGFudGVzIGRlIGxpbXBpYXIgZWwgc3RvcmUgZXh0ZXJubzogZWwgdGV4dG8gZW4gdml2b1xuICAvLyBubyB2aXZlIGVuIGBtZXNzYWdlc2AsIGFzw60gcXVlIHNpbiBlc3RvIGxhIHJlc3B1ZXN0YSBhIG1lZGlhcyBkZXNhcGFyZWNlIGRlIHBhbnRhbGxhIGF1bnF1ZVxuICAvLyBlbCBiYWNrZW5kIHPDrSBsYSBoYXlhIHBlcnNpc3RpZG8uXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjayhcbiAgICAocGFydGlhbFRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gRWwgc3RvcCBzaWVtcHJlIGFwbGljYSBhIGxhIHNlc2nDs24gYWN0aXZhIChib3TDs24gZGVsIGlucHV0IHZpc2libGUpLlxuICAgICAgY29uc3Qgc2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQoKVxuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IHN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkKGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudClcbiAgICAgIGNvbnN0IGZpbmFsTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gXG4gICAgICBjb25zdCBzdG9wcGVkVHJhY2UgPSByZWFzb25pbmdUcmFjZUZvcih0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIGlmIChzdG9wcGVkVHJhY2U/LnN0ZXBzLmxlbmd0aCkge1xuICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2godGVtcE1lc3NhZ2VJZCwgbnVsbClcbiAgICAgICAgcmVhc29uaW5nU3RvcmUucmVuYW1lKHRlbXBNZXNzYWdlSWQsIGZpbmFsTWVzc2FnZUlkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVhc29uaW5nU3RvcmUucmVtb3ZlKHRlbXBNZXNzYWdlSWQpXG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJ0aWFsVGV4dCkge1xuICAgICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgICAgaWQ6IGZpbmFsTWVzc2FnZUlkLFxuICAgICAgICAgIG1lc3NhZ2U6IHBhcnRpYWxUZXh0LFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgICAuLi4oc3RvcHBlZFRyYWNlID8geyByZWFzb25pbmc6IHN0b3BwZWRUcmFjZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBgJHtmaW5hbE1lc3NhZ2VJZH0tY2FuY2VsbGVkYCxcbiAgICAgICAgbWVzc2FnZTogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgY2xlYXJTZXNzaW9uVGFpbChzZXNzaW9uSWQpXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXRyeVNuYXBzaG90UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfSxcbiAgICBbY29tbWl0VG9TZXNzaW9uLCBkcm9wRnJvbVNlc3Npb24sIGNsZWFyU2Vzc2lvblRhaWwsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGN0eDogU3RyZWFtQ29udGV4dCwgYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkIH0gPSBjdHhcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gYWN0aXZlVmlldy5pcyhzZXNzaW9uSWQpXG5cbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgIGRyb3BGcm9tU2Vzc2lvbihzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG5cbiAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IG51bGxcblxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQpLFxuICAgICAgfVxuICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuICAgICAgfVxuXG4gICAgICAvLyBQcmVhcHJvYmFkbzogcG9yIGRldGVjY2nDs24gbWFudWFsIG8gcG9yIGF1dG8tYXBwcm92ZS4gRW4gYW1ib3MgY2Fzb3MgZWxcbiAgICAgIC8vIHN0cmVhbSBjb250aW7DumEgeSBubyBoYXkgcXVlIHBpbnRhciBsYSBjYWphIGRlIGFwcm9iYWNpw7NuLlxuICAgICAgaWYgKGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCB8fCBhcHByb3ZhbC5hdXRvX2FwcHJvdmVkIHx8IGFwcHJvdmFsLmFwcHJvdmFsX3N0YXR1cyA9PT0gJ2FwcHJvdmVkJykge1xuICAgICAgICB0cmFja01hbnVhbEhpdGxFdmVudHMoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgeyBpbXByZXNzaW9uOiBFVkVOVFMuYWlDaGF0SGl0bCwgb3B0aW9uOiBFVkVOVFMuYWlDaGF0SGl0bE9wdGlvbiB9LFxuICAgICAgICAgIGFnZW50LFxuICAgICAgICAgIGFwcHJvdmFsLFxuICAgICAgICAgIHRyYWNrZWRNYW51YWxIaXRsS2V5c1JlZi5jdXJyZW50LFxuICAgICAgICAgIGFwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA/ICdtYW51YWwnIDogJ2F1dG8nXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBmaXJzdEFjdGlvbiA9IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8uWzBdXG4gICAgICAgIGNvbnN0IHRvb2xOYW1lID0gKGFwcHJvdmFsIGFzIHsgdG9vbF9uYW1lPzogc3RyaW5nIH0pLnRvb2xfbmFtZSA/PyBmaXJzdEFjdGlvbj8udG9vbF9uYW1lID8/ICcnXG4gICAgICAgIGNvbnN0IHRvb2xBcmdzID1cbiAgICAgICAgICAoKGFwcHJvdmFsIGFzIHsgdG9vbF9hcmdzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfSkudG9vbF9hcmdzID8/XG4gICAgICAgICAgICAoZmlyc3RBY3Rpb24/LnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCkpIHx8XG4gICAgICAgICAgbnVsbFxuICAgICAgICBpZiAodG9vbE5hbWUgJiYgaXNBY3RpdmUpIHtcbiAgICAgICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IHsgdG9vbE5hbWUsIHRvb2xBcmdzIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgY29uc3QgYXBwcm92YWxNZXNzYWdlSWQgPSBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YFxuICAgICAgcmVhc29uaW5nU3RvcmUucmVuYW1lKHBsYWNlaG9sZGVySWQsIGFwcHJvdmFsTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXBwcm92YWxUcmFjZSA9IG1hcFJlYXNvbmluZ1RyYWNlKGFwcHJvdmFsLnJlYXNvbmluZykgPz8gcmVhc29uaW5nVHJhY2VGb3IoYXBwcm92YWxNZXNzYWdlSWQpXG4gICAgICBjb21taXRUb1Nlc3Npb24oc2Vzc2lvbklkLCB7XG4gICAgICAgIGlkOiBhcHByb3ZhbE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICAgIHJlYXNvbmluZzogYXBwcm92YWxUcmFjZSxcbiAgICAgIH0pXG4gICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubWFya0NoYXRBc1VucmVhZChzZXNzaW9uSWQpXG4gICAgICAgIG5vdGlmeVNlc3Npb25GaW5pc2hlZEluQmFja2dyb3VuZChzZXNzaW9uSWQsICdhcHByb3ZhbF9yZXF1aXJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQsIGNvbW1pdFRvU2Vzc2lvbiwgZHJvcEZyb21TZXNzaW9uLCBldmVudF1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIHJldHJ5Q29tcGxldGlvbixcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgfSA9IHVzZU9yY2hlc3RyYXRvclN0cmVhbSh7XG4gICAgYWN0aXZlU2Vzc2lvbklkLFxuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCA9ICgpID0+IHtcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldEFjdGl2ZUxvYWRpbmdzKHt9KVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBQb29sIGRlIHVzb3MgYWdvdGFkbzogbm8gZW52aWFyIChiYW5uZXIgQmxvcXVlbyArIGlucHV0IGRpc2FibGVkKS5cbiAgICAgIGlmIChnZXRVc2FnZVN0b3JlU3RhdGUoKS5ibG9ja2VkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBUb3BlIGRlIGNvbmN1cnJlbmNpYTogc2kgZXN0YSBzZXNpw7NuIG5vIGVzdMOhIGdlbmVyYW5kbyB5IHlhIGhheVxuICAgICAgLy8gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyBhY3RpdmFzLCBhdmlzYW1vcyB5IG5vIGFycmFuY2Ftb3Mgb3RyYS5cbiAgICAgIGNvbnN0IHdpbGxTdGFydE5ld1N0cmVhbSA9ICFzZXNzaW9uU3RyZWFtTWFuYWdlci5pc0FjdGl2ZShjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBpZiAod2lsbFN0YXJ0TmV3U3RyZWFtICYmIHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIHNldEFjdGl2ZUNoYXRJZChjdXJyZW50Q2hhdElkLmN1cnJlbnQpXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIGNvbnN0IHNlc3Npb25JZCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG5cbiAgICAgIGVuc3VyZVNlc3Npb25JblNpZGViYXIoe1xuICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgIHRpdGxlOiBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUoZGlzcGxheU1lc3NhZ2UpLFxuICAgICAgICBhZ2VudCxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgY29tbWl0VG9TZXNzaW9uKHNlc3Npb25JZCwge1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQoY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50KVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBzZXNzaW9uSWRcbiAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZClcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHtcbiAgICAgICAgaWQ6IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQsXG4gICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogYWdlbnQ/Lm5hbWUgfHwgJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG5cbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgY29udGV4dFJlZi5jdXJyZW50LnByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihjdHhUYXNrPy5pZCAhPSBudWxsXG4gICAgICAgICAgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpLCAuLi4oY3R4VGFzay5uYW1lID8geyB0YXNrTmFtZTogY3R4VGFzay5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRnVhSWQgPyB7IGZ1YUlkOiBwYXlsb2FkRnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRTY0lkID8geyBzY0lkOiBwYXlsb2FkU2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBjb21taXRUb1Nlc3Npb24sXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGFza01haWEoe1xuICAgICAgICAgIG1lc3NhZ2U6IGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogb3B0aW9uLmlkLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKG9wdGlvbi5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogTnVtYmVyKG9wdGlvbi5jbGllbnRJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCByZXRyeU1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSByZXR1cm5cbiAgICAgIGlmIChnZXRVc2FnZVN0b3JlU3RhdGUoKS5ibG9ja2VkKSByZXR1cm5cblxuICAgICAgY29uc3Qgc2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoc2Vzc2lvbklkKSkgcmV0dXJuXG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdzbmFja2Jhci1ldmVudCcsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGlmICghcHJldmlvdXNNZXNzYWdlcy5zb21lKGl0ZW0gPT4gaXRlbS5pZCA9PT0gbWVzc2FnZS5pZCkpIHJldHVyblxuXG4gICAgICBjb25zdCB1c2VyTWVzc2FnZSA9IGZpbmRVc2VyTWVzc2FnZUZvclJldHJ5KHByZXZpb3VzTWVzc2FnZXMsIG1lc3NhZ2UpXG4gICAgICBpZiAoIXVzZXJNZXNzYWdlPy5tZXNzYWdlPy50cmltKCkgJiYgIXVzZXJNZXNzYWdlPy5hdHRhY2htZW50cz8ubGVuZ3RoICYmICF1c2VyTWVzc2FnZT8uc291cmNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0dXJuSWQgPSByZXNvbHZlUmV0cnlUdXJuSWQobWVzc2FnZSlcbiAgICAgIGNvbnN0IHVzZU9yY2hlc3RyYXRvckZhbGxiYWNrID0gbWVzc2FnZS5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFtZXNzYWdlLm1lbW9yeVNlc3Npb25JZD8udHJpbSgpXG4gICAgICBpZiAoIXR1cm5JZCAmJiAhdXNlT3JjaGVzdHJhdG9yRmFsbGJhY2spIHJldHVyblxuXG4gICAgICBjb25zdCB0cnVuY2F0ZWQgPSBtZXNzYWdlc1dpdGhvdXRSZXRyaWVkVHVybihwcmV2aW91c01lc3NhZ2VzLCBtZXNzYWdlKVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IHByZXZpb3VzTWVzc2FnZXNcbiAgICAgIHNldEFjdGl2ZUNoYXRJZChzZXNzaW9uSWQpXG5cbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IHVzZXJNZXNzYWdlLm1lc3NhZ2VcbiAgICAgIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQgPSBgYW5zd2VyLSR7bmV3TWVzc2FnZUlkfS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlcklkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IHNlc3Npb25JZFxuXG4gICAgICBjb25zdCBwbGFjZWhvbGRlcjogQ2hhdE1lc3NhZ2UgPSB7XG4gICAgICAgIGlkOiBzdHJlYW1pbmdQbGFjZWhvbGRlcklkLFxuICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6IGFnZW50Py5uYW1lIHx8ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9XG4gICAgICBjb25zdCBuZXh0TWVzc2FnZXMgPSBbLi4udHJ1bmNhdGVkLCBwbGFjZWhvbGRlcl1cbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBuZXh0TWVzc2FnZXNcbiAgICAgIHJlcGxhY2VNZXNzYWdlcyhuZXh0TWVzc2FnZXMpXG4gICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHN0cmVhbWluZ1BsYWNlaG9sZGVySWQpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IHRydW5jYXRlZC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgY29uc3QgcHJvamVjdFRvUmVxdWVzdCA9IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0KGN0eENoaXBzUHJvamVjdCwgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdD8ucHJvamVjdElkKVxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gdHJ1bmNhdGVkLmF0KC0xKT8uYWdlbnRJZCB8fCBtZXNzYWdlLmFnZW50SWRcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheSh1c2VyTWVzc2FnZS5hdHRhY2htZW50cylcbiAgICAgICAgPyB1c2VyTWVzc2FnZS5hdHRhY2htZW50c1xuICAgICAgICA6IEFycmF5LmlzQXJyYXkodXNlck1lc3NhZ2Uuc291cmNlcylcbiAgICAgICAgICA/IHVzZXJNZXNzYWdlLnNvdXJjZXNcbiAgICAgICAgICA6IFtdXG5cbiAgICAgIGNvbnN0IHJlcGxheVZpYU9yY2hlc3RyYXRvciA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgaGlzdG9yeSA9IHRydW5jYXRlZC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuICAgICAgICBjb25zdCBwcm9qZWN0cyA9IHByb2plY3RUb1JlcXVlc3QgPyBhd2FpdCBmZXRjaFByb2plY3RzKFtwcm9qZWN0VG9SZXF1ZXN0XSkgOiBudWxsXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogdXNlck1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhdElkOiBzZXNzaW9uSWQsXG4gICAgICAgICAgbWVzc2FnZUlkOiBuZXdNZXNzYWdlSWQsXG4gICAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBhZ2VudElkOiBTdHJpbmcoY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCB8fCAnJyksXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgICAgLi4uKHByb2plY3RzPy5sZW5ndGggPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0c1swXS5uYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAgIC4uLih1c2VyTWVzc2FnZS5jb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2U6IHVzZXJNZXNzYWdlLmNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXN1bHQuc3RhcnRlZCkge1xuICAgICAgICAgIHJldHJ5U25hcHNob3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gcHJldmlvdXNNZXNzYWdlc1xuICAgICAgICAgIHJlcGxhY2VNZXNzYWdlcyhwcmV2aW91c01lc3NhZ2VzKVxuICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIGlmIChyZXN1bHQucmVhc29uID09PSAnbGltaXQnKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3NuYWNrYmFyLWV2ZW50Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh1c2VPcmNoZXN0cmF0b3JGYWxsYmFjayB8fCAhdHVybklkKSB7XG4gICAgICAgIGF3YWl0IHJlcGxheVZpYU9yY2hlc3RyYXRvcigpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXRyeUNvbXBsZXRpb24oe1xuICAgICAgICBjaGF0SWQ6IHNlc3Npb25JZCxcbiAgICAgICAgbWVzc2FnZUlkOiBuZXdNZXNzYWdlSWQsXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZDogdHVybklkLFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICBhZ2VudElkOiBTdHJpbmcoY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCB8fCAnJyksXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihwcm9qZWN0VG9SZXF1ZXN0ID8geyBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGwgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVzdWx0LnN0YXJ0ZWQpIHJldHVyblxuXG4gICAgICBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ3R1cm5fbm90X2ZvdW5kJykge1xuICAgICAgICBhd2FpdCByZXBsYXlWaWFPcmNoZXN0cmF0b3IoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgcmV0cnlTbmFwc2hvdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IHByZXZpb3VzTWVzc2FnZXNcbiAgICAgIHJlcGxhY2VNZXNzYWdlcyhwcmV2aW91c01lc3NhZ2VzKVxuICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAocmVzdWx0LnJlYXNvbiA9PT0gJ2xpbWl0Jykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICAgIHJlcGxhY2VNZXNzYWdlcyxcbiAgICAgIHJldHJ5Q29tcGxldGlvbixcbiAgICAgIGFza01haWEsXG4gICAgICBmZXRjaFByb2plY3RzLFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICBzZXRBY3RpdmVDaGF0SWQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGdldFVzYWdlU3RvcmVTdGF0ZSgpLmJsb2NrZWQpIHJldHVyblxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmQgPSBmaW5kTWVzc2FnZVdpdGhBcHByb3ZhbEJ5VGhyZWFkSWRzKHRocmVhZElkcywgbWVzc2FnZXNSZWYuY3VycmVudClcbiAgICAgIGlmICghZm91bmQ/Lm1lc3NhZ2UuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG1lc3NhZ2U6IG1lc3NhZ2VXaXRoQXBwcm92YWwsIHNlc3Npb25JZDogZm91bmRTZXNzaW9uSWQgfSA9IGZvdW5kXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBpZiAoIWFwcHJvdmFsKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBzZXNzaW9uSWQgPSBhcHByb3ZhbC5zZXNzaW9uX2lkIHx8IGZvdW5kU2Vzc2lvbklkXG4gICAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZXNzaW9uX2lkIGRpc3BvbmlibGUgcGFyYSBhcHByb3ZhbDonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuaXNBY3RpdmUoc2Vzc2lvbklkKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2hvdzogdHJ1ZSwgc2V2ZXJpdHk6ICdpbmZvJywgbWVzc2FnZTogdCgnY2hhdC50b29NYW55QWN0aXZlU2Vzc2lvbnMnKSB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcbiAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBtZXNzYWdlV2l0aEFwcHJvdmFsLm1lc3NhZ2UsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHMsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQWN0aXZlU2Vzc2lvbiA9IGFjdGl2ZVZpZXcuaXMoc2Vzc2lvbklkKVxuICAgICAgaWYgKGlzQWN0aXZlU2Vzc2lvbikge1xuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdFRvU2Vzc2lvbihzZXNzaW9uSWQsIHsgLi4ubWVzc2FnZVdpdGhBcHByb3ZhbCwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuXG4gICAgICBjb25zdCBzdHJlYW1NZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgaWYgKGlzQWN0aXZlU2Vzc2lvbikge1xuICAgICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBzdHJlYW1NZXNzYWdlSWRcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGl0bEN0eDogU3RyZWFtQ29udGV4dCA9IHtcbiAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICBtZXNzYWdlSWQ6IHN0cmVhbU1lc3NhZ2VJZCxcbiAgICAgICAgcGxhY2Vob2xkZXJJZDogc3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQoc3RyZWFtTWVzc2FnZUlkKSxcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmICghaXNBY3RpdmVTZXNzaW9uKSByZXR1cm5cbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZXNzaW9uU3RyZWFtTWFuYWdlci5zdGFydENvbnRpbnVlU3RyZWFtKHtcbiAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICBwbGFjZWhvbGRlcklkOiBoaXRsQ3R4LnBsYWNlaG9sZGVySWQsXG4gICAgICAgIGNvbnRpbnVlUmVxdWVzdDoge1xuICAgICAgICAgIHRocmVhZElkcyxcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgfSxcbiAgICAgICAgdCxcbiAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ6IGhpdGxDb250ZXh0LFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUsXG4gICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlOiBjb250ZW50ID0+IGhhbmRsZVN0cmVhbVVwZGF0ZShoaXRsQ3R4LCBjb250ZW50KSxcbiAgICAgICAgICBvbkZpbmlzaFN0cmVhbTogZmluaXNoUGF5bG9hZCA9PiB7XG4gICAgICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goXG4gICAgICAgICAgICAgIGhpdGxDdHgsXG4gICAgICAgICAgICAgIGZpbmlzaFBheWxvYWQuY29udGVudCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5zb3VyY2VzLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLm1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5hdHRhY2htZW50cyxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5zdWdnZXN0aW9ucyxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5jb21wbGV0ZWRBZ2VudElkLFxuICAgICAgICAgICAgICBmaW5pc2hQYXlsb2FkLnJlc29sdmVkQ29udGV4dCxcbiAgICAgICAgICAgICAgZmluaXNoUGF5bG9hZC5yZWFzb25pbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHJlbGVhc2VBY3RpdmVQcm9jZXNzaW5nKClcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKGhpdGxDdHgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWQ6IChhcHByb3ZhbFBheWxvYWQsIGFjY3VtdWxhdGVkQ29udGVudCkgPT4ge1xuICAgICAgICAgICAgcmVsZWFzZUFjdGl2ZVByb2Nlc3NpbmcoKVxuICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZChoaXRsQ3R4LCBhcHByb3ZhbFBheWxvYWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKCFyZXN1bHQuc3RhcnRlZCkge1xuICAgICAgICByZWxlYXNlQWN0aXZlUHJvY2Vzc2luZygpXG4gICAgICAgIGlmIChyZXN1bHQucmVhc29uID09PSAnbGltaXQnKSB7XG4gICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnc25hY2tiYXItZXZlbnQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBzaG93OiB0cnVlLCBzZXZlcml0eTogJ2luZm8nLCBtZXNzYWdlOiB0KCdjaGF0LnRvb01hbnlBY3RpdmVTZXNzaW9ucycpIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGNvbW1pdFRvU2Vzc2lvbixcbiAgICAgIGhhbmRsZVN0cmVhbUVycm9yLFxuICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgICAgaGFuZGxlU3RyZWFtRmluaXNoLFxuICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBudWxsKSA/PyBjdHhQcm9qZWN0Py5pZCA/PyBudWxsXG5cbiAgICAgIGNvbnN0IGluaXRpYWxEaXNwbGF5TWVzc2FnZSA9IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkodXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCxcbiAgICAgICAgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQsXG4gICAgICB9KVxuXG4gICAgICBlbnN1cmVTZXNzaW9uSW5TaWRlYmFyKHtcbiAgICAgICAgc2Vzc2lvbklkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIHRpdGxlOiBidWlsZFNpZGViYXJTZXNzaW9uVGl0bGUoaW5pdGlhbERpc3BsYXlNZXNzYWdlKSxcbiAgICAgICAgYWdlbnQsXG4gICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMsXG4gICAgICB9KVxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzQXV0b0FwcHJvdmVBY3RpdmU6IGlzQXV0b0FwcHJvdmVBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBjdHhQcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogdXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgPyB7IGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkID8geyBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbW9qaSAhPSBudWxsID8geyBhZ2VudEVtb2ppOiBhZ2VudC5lbW9qaSB9IDoge30pLFxuICAgICAgICAuLi4oYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpXG4gICAgICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YTogdXNlckluaXRpYWxNZXNzYWdlLmNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGluaXRpYWxDaGF0SWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgYXV0aFVzZXIsXG4gICAgYWdlbnQsXG4gICAgYXNrTWFpYSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHByZXZpb3VzU2Vzc2lvbklkID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIocHJldmlvdXNTZXNzaW9uSWQpXG4gICAgcmVhc29uaW5nU3RvcmUuY2xlYXIoKVxuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgc2V0QWN0aXZlU2Vzc2lvbklkKGN1cnJlbnRDaGF0SWQuY3VycmVudClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICBzZXRBY3RpdmVDaGF0SWQobnVsbClcbiAgfSwgW3NldEFjdGl2ZUNoYXRJZF0pXG5cbiAgY29uc3Qgc3RvcEdlbmVyYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcFN0cmVhbWluZygpXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbc3RvcFN0cmVhbWluZ10pXG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgY3VycmVudFByb2plY3QsXG4gICAgY3VycmVudENoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgIGN1cnJlbnRNZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcblxuICAgIHNlbmRNZXNzYWdlLFxuICAgIHJldHJ5TWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVNDLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFDbkMsU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFHOUIsU0FBU0MsT0FBTyxRQUFpQix3QkFBd0I7QUFDekQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsNERBQTREO0FBQ3JGLFNBQXVDQyxlQUFlLFFBQXdDLGtCQUFrQjtBQUNoSCxTQUF5Q0MsbUJBQW1CLFFBQVEsNEJBQTRCO0FBQ2hHLFNBQVNDLGtDQUFrQyxRQUFRLHNDQUFzQztBQUd6RixTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFDakUsU0FBU0Msd0JBQXdCLEVBQUVDLGlCQUFpQixRQUFRLG1DQUFtQztBQUMvRixTQUFTQyxnQkFBZ0IsUUFBUSw2Q0FBNkM7QUFDOUUs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