@projectcor/maia-components 2.11.104-0 → 2.11.104

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.
@@ -33,7 +33,7 @@ var markOpenedSessionAsReadIfVisible = function markOpenedSessionAsReadIfVisible
33
33
  activeChatId = _getChatsStoreState.activeChatId,
34
34
  markChatAsRead = _getChatsStoreState.markChatAsRead;
35
35
  if (!isChatViewVisible || activeChatId !== sessionId) return;
36
- void markChatAsRead(sessionId);
36
+ markChatAsRead(sessionId);
37
37
  };
38
38
  var buildInitialMessagePlaceholder = function buildInitialMessagePlaceholder(userInitialMessage, currentUser) {
39
39
  return [_objectSpread(_objectSpread({
@@ -746,4 +746,4 @@ export var useChatMessages = function useChatMessages(_ref) {
746
746
  handleScroll: handleScroll
747
747
  };
748
748
  };
749
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlU2Vzc2lvbnNTdG9yZSIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsImdldENoYXRzU3RvcmVTdGF0ZSIsImhhc01lYW5pbmdmdWxVc2VySW5pdGlhbE1lc3NhZ2UiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJCb29sZWFuIiwibWVzc2FnZSIsInRyaW0iLCJhdHRhY2htZW50cyIsImxlbmd0aCIsImZ1YUlkIiwic2NJZCIsIm1hcmtPcGVuZWRTZXNzaW9uQXNSZWFkSWZWaXNpYmxlIiwic2Vzc2lvbklkIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImlzQ2hhdFZpZXdWaXNpYmxlIiwiYWN0aXZlQ2hhdElkIiwibWFya0NoYXRBc1JlYWQiLCJidWlsZEluaXRpYWxNZXNzYWdlUGxhY2Vob2xkZXIiLCJjdXJyZW50VXNlciIsIl9vYmplY3RTcHJlYWQiLCJpZCIsImRhdGUiLCJEYXRlIiwidXNlciIsIm1lbnRpb25zIiwiY29udGV4dE1lc3NhZ2UiLCJyZXdyaXRlVGFza1VybHNJbkNvbnRlbnQiLCJjb250ZW50IiwidGFiU2VnbWVudCIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInJlcGxhY2UiLCJ1cmwiLCJ1c2VDaGF0TWVzc2FnZXMiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkVycm9yIiwiY2hhdElkIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJsb2FkaW5nTWVzc2FnZXMiLCJzZXRMb2FkaW5nTWVzc2FnZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsInNldENoaXBzUHJvamVjdCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwicHJvamVjdCIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwidGFiVGFza0RlZmF1bHQiLCJyZWZldGNoVGFiVGFza0RlZmF1bHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsInNldElzTG9hZGluZ01vcmVNZXNzYWdlcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibGFzdEV2YWx1YXRlZEtleSIsInNldExhc3RFdmFsdWF0ZWRLZXkiLCJpc0xvYWRpbmdSZWYiLCJpbml0aWFsTG9hZERvbmUiLCJwcmV2aW91c0NoYXRJZCIsImxvYWRTZXFSZWYiLCJzeW5jTWVzc2FnZXNUb1N0b3JlIiwidGFyZ2V0Q2hhdElkIiwibmV4dE1lc3NhZ2VzIiwibGFzdEV2YWx1YXRlZEtleVZhbHVlIiwiZ2V0U3RhdGUiLCJ1bmRlZmluZWQiLCJwYXRjaFZpZXdDYWNoZSIsInNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJwcm9qZWN0SWRNZXNzYWdlIiwicHJvamVjdE5hbWVGcm9tU2Vzc2lvbiIsImNsaWVudElkRnJvbVNlc3Npb24iLCJjbGllbnROYW1lRnJvbVNlc3Npb24iLCJ0YXNrSWRGcm9tU2Vzc2lvbiIsInRhc2tOYW1lRnJvbVNlc3Npb24iLCJwcm9qZWN0cyIsImhhc011bHRpQWdlbnRzQWNjZXNzIiwicHJvamVjdElkTnVtIiwiZm91bmRQcm9qZWN0IiwiX2ZvdW5kUHJvamVjdCRjbGllbnQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIm5hbWUiLCJOdW1iZXIiLCJhYnJ1cHQiLCJzZW50Iiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImZpbmQiLCJwIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50IiwicHJvamVjdElkIiwiU3RyaW5nIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZXN0b3JlU2Vzc2lvbkZyb21TdG9yZSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfY2FjaGUkbGFzdEV2YWx1YXRlZEsiLCJzZXNzaW9uc1N0b3JlIiwiY2FjaGVkTWVzc2FnZXMiLCJjYWNoZSIsIl9jb250ZXh0MiIsImdldE1lc3NhZ2VzIiwiZ2V0Vmlld0NhY2hlIiwiY3VycmVudCIsImFnZW50U25hcHNob3QiLCJjb252ZXJzYXRpb25NZXRhIiwic2Vzc2lvbk1ldGFFdmVudCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiX3gyIiwibG9hZE1lc3NhZ2VzIiwiX3JlZjUiLCJfY2FsbGVlMyIsIm9wdGlvbnMiLCJzZXEiLCJzZWxlY3RBZ2VudEZvclNlc3Npb24iLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQiLCJpdGVtcyIsIm5leHRJdGVtIiwiYWdlbnREZWxldGVkIiwiYWdlbnROb1Blcm1pc3Npb24iLCJoYXNBZ2VudEFjY2VzcyIsImhhc0FnZW50UGVybWlzc2lvbiIsImFnZW50VHlwZUZyb21TZXNzaW9uIiwiYWdlbnRFbnRpdHlGcm9tU2Vzc2lvbiIsInByb2plY3REZWxldGVkIiwiYWdlbnRJbkxpc3QiLCJjb250ZXh0UHJvamVjdElkIiwiaXRlbXNUb1NldCIsInRhYiIsInNlc3Npb25NZXRhIiwiZmluYWxNZXNzYWdlcyIsInRhaWwiLCJleGlzdGluZ0lkcyIsImV4dHJhIiwicGFnaW5hdGlvbktleSIsIl90IiwiX2NvbnRleHQzIiwiZm9yY2UiLCJjYW5SZXN0b3JlU2Vzc2lvbiIsImNvbnNvbGUiLCJpbmZvIiwiQ2hhdHMiLCJnZXRDaGF0TWVzc2FnZXMiLCJvZmZzZXQiLCJjYW5jZWxsZWRUZXh0IiwibGFuZyIsImxhbmd1YWdlIiwiYWdlbnRUeXBlIiwiYWdlbnRFbnRpdHkiLCJjbGllbnRJZCIsInRhc2tJZCIsInRhc2tOYW1lIiwiY3VycmVudENoYXRJZCIsImN1cnJlbnRTZXEiLCJpdGVtQ291bnQiLCJ1c2VyUGVybWlzc2lvbnNWaWV3IiwidmlldyIsImFnZW50SW5BZ2VudHNMaXN0IiwiYSIsImVtb2ppIiwidHlwZSIsImlzX2RlbGV0ZWQiLCJkZWxldGVkX2F0IiwiZGVsZXRlZEF0IiwiY29ubmVjdG9ycyIsImFnZW50IiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYXNfbm90X2FjY2VzcyIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJwYXJzZUludCIsImNvbmNhdCIsIm1hcCIsIml0ZW0iLCJnZXRNZXRhIiwic3RhdHVzIiwiU2V0IiwiZmlsdGVyIiwiaGFzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2V0Vmlld0NhY2hlIiwiaHlkcmF0ZWRGcm9tQXBpIiwiZmluaXNoIiwiX3gzIiwibG9hZE1vcmVNZXNzYWdlcyIsIl9yZWY2IiwiX2NhbGxlZTQiLCJjb250YWluZXIiLCJvbGRTY3JvbGxIZWlnaHQiLCJvbGRTY3JvbGxUb3AiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQyIiwiaXRlbXNUb01lcmdlIiwibmV3TWVzc2FnZXMiLCJfdDIiLCJfY29udGV4dDQiLCJzY3JvbGxIZWlnaHQiLCJzY3JvbGxUb3AiLCJzbGljZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lclJlZiIsIm5ld1Njcm9sbEhlaWdodCIsImhlaWdodERpZmZlcmVuY2UiLCJfeDQiLCJoYW5kbGVTY3JvbGwiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxQZXJjZW50YWdlIiwiZnJvbUNoYXRJZCIsImNhblJlc3RvcmUiLCJmcm9tIiwidG8iLCJwZW5kaW5nSW5pdGlhbE1lc3NhZ2UiLCJlcnJvciIsImRpZFJld3JpdGVSZWYiLCJuZWVkc1Jld3JpdGUiLCJzb21lIiwibXNnIiwibWF0Y2hlcyIsIm1hdGNoIiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsInJld3JpdHRlbiIsImFkZE1lc3NhZ2UiLCJleGlzdGluZ01lc3NhZ2VJbmRleCIsImZpbmRJbmRleCIsInJlbW92ZU1lc3NhZ2UiLCJtZXNzYWdlSWQiLCJoYXNNb3JlTWVzc2FnZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1lc3NhZ2VzL3VzZUNoYXRNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgYnVpbGRDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IFVzZUNoYXRNZXNzYWdlc1Byb3BzIH0gZnJvbSAnLi91c2VDaGF0TWVzc2FnZXMuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvdXNlU2Vzc2lvbnNTdG9yZSdcbmltcG9ydCB7IGlzQWN0aXZlU2Vzc2lvblN0YXR1cyB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25zLnR5cGVzJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlIH0gZnJvbSAnLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB0eXBlIHsgQWdlbnQgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbkNvbnZlcnNhdGlvbk1ldGEsIFNlc3Npb25NZXRhRXZlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9ucy50eXBlcydcblxudHlwZSBMb2FkTWVzc2FnZXNPcHRpb25zID0ge1xuICAvKiogSWdub3JhIGNhY2hlIGVuIG1lbW9yaWEgeSB2dWVsdmUgYSBwZWRpciBnZXRDaGF0TWVzc2FnZXMuICovXG4gIGZvcmNlPzogYm9vbGVhblxufVxuXG50eXBlIFVzZXJJbml0aWFsTWVzc2FnZSA9IFVzZUNoYXRNZXNzYWdlc1Byb3BzWyd1c2VySW5pdGlhbE1lc3NhZ2UnXVxuXG4vKiogRWwgbW9kYWwgdXNhIGB7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfWAgY29tbyBcInNpbiBtZW5zYWplIGluaWNpYWxcIjsgbm8gZXMgZmFsc3kuICovXG5jb25zdCBoYXNNZWFuaW5nZnVsVXNlckluaXRpYWxNZXNzYWdlID0gKHVzZXJJbml0aWFsTWVzc2FnZT86IFVzZXJJbml0aWFsTWVzc2FnZSk6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbihcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UgJiZcbiAgICAodXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSB8fFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGggfHxcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB8fFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLnNjSWQpXG4gIClcblxuLyoqIE1hcmNhIGxhIHNlc2nDs24gY29tbyBsZcOtZGEgY3VhbmRvIHRlcm1pbsOzIGRlIGhpZHJhdGFyc2UgeSBzaWd1ZSBzaWVuZG8gbGEgYWN0aXZhIHkgdmlzaWJsZS4gKi9cbmNvbnN0IG1hcmtPcGVuZWRTZXNzaW9uQXNSZWFkSWZWaXNpYmxlID0gKHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgaXNDaGF0Vmlld1Zpc2libGUsIGFjdGl2ZUNoYXRJZCwgbWFya0NoYXRBc1JlYWQgfSA9IGdldENoYXRzU3RvcmVTdGF0ZSgpXG4gIGlmICghaXNDaGF0Vmlld1Zpc2libGUgfHwgYWN0aXZlQ2hhdElkICE9PSBzZXNzaW9uSWQpIHJldHVyblxuICB2b2lkIG1hcmtDaGF0QXNSZWFkKHNlc3Npb25JZClcbn1cblxuY29uc3QgYnVpbGRJbml0aWFsTWVzc2FnZVBsYWNlaG9sZGVyID0gKFxuICB1c2VySW5pdGlhbE1lc3NhZ2U6IE5vbk51bGxhYmxlPFVzZXJJbml0aWFsTWVzc2FnZT4sXG4gIGN1cnJlbnRVc2VyOiBVc2VDaGF0TWVzc2FnZXNQcm9wc1snY3VycmVudFVzZXInXVxuKTogQ2hhdE1lc3NhZ2VbXSA9PiBbXG4gIHtcbiAgICBpZDogJ3VzZXItaW5pdGlhbC1tZXNzYWdlJyxcbiAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgIG1lc3NhZ2U6IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkodXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsIHtcbiAgICAgIGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQsXG4gICAgICBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCxcbiAgICB9KSxcbiAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgPyB7IGNvbnRleHRNZXNzYWdlOiBidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucykgfVxuICAgICAgOiB7fSksXG4gIH0sXG5dXG5cbmNvbnN0IHJld3JpdGVUYXNrVXJsc0luQ29udGVudCA9IChjb250ZW50OiBzdHJpbmcsIHRhYlNlZ21lbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICByZXR1cm4gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNZXNzYWdlcyA9ICh7XG4gIG9uRXJyb3IsXG4gIGNoYXRJZCxcbiAgY3VycmVudFVzZXIsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlcywgc2V0TG9hZGluZ01lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZVN0YXRlPENoYXRNZXNzYWdlW10+KCgpID0+XG4gICAgaGFzTWVhbmluZ2Z1bFVzZXJJbml0aWFsTWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UpICYmIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgPyBidWlsZEluaXRpYWxNZXNzYWdlUGxhY2Vob2xkZXIodXNlckluaXRpYWxNZXNzYWdlLCBjdXJyZW50VXNlcilcbiAgICAgIDogW11cbiAgKVxuICBjb25zdCB7IGZldGNoUHJvamVjdHMgfSA9IHVzZVByb2plY3RzKClcbiAgY29uc3QgeyBzZWxlY3RBZ2VudCwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2ssIHByb2plY3QgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IGdldFRhYlRhc2tEZWZhdWx0LCB0YWJUYXNrRGVmYXVsdCwgcmVmZXRjaFRhYlRhc2tEZWZhdWx0IH0gPSB1c2VUYWJUYXNrRGVmYXVsdCgpXG4gIGNvbnN0IFtpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIHNldElzTG9hZGluZ01vcmVNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xhc3RFdmFsdWF0ZWRLZXksIHNldExhc3RFdmFsdWF0ZWRLZXldID0gdXNlU3RhdGU8bnVtYmVyIHwgdW5kZWZpbmVkPigwKVxuICBjb25zdCBpc0xvYWRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGluaXRpYWxMb2FkRG9uZSA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcHJldmlvdXNDaGF0SWQgPSB1c2VSZWYoY2hhdElkKVxuICBjb25zdCBsb2FkU2VxUmVmID0gdXNlUmVmKDApXG5cbiAgY29uc3Qgc3luY01lc3NhZ2VzVG9TdG9yZSA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXRDaGF0SWQ6IHN0cmluZywgbmV4dE1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdLCBsYXN0RXZhbHVhdGVkS2V5VmFsdWU/OiBudW1iZXIpID0+IHtcbiAgICAgIHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5zZXRNZXNzYWdlcyh0YXJnZXRDaGF0SWQsIG5leHRNZXNzYWdlcylcbiAgICAgIGlmIChsYXN0RXZhbHVhdGVkS2V5VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkucGF0Y2hWaWV3Q2FjaGUodGFyZ2V0Q2hhdElkLCB7IGxhc3RFdmFsdWF0ZWRLZXk6IGxhc3RFdmFsdWF0ZWRLZXlWYWx1ZSB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgIH06IHtcbiAgICAgIHByb2plY3RJZE1lc3NhZ2U6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudElkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgICAgdGFza0lkRnJvbVNlc3Npb246IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICB9KSA9PiB7XG4gICAgICAvLyBUYXJlYSBkZSBsYSBjb252ZXJzYWNpw7NuOiBzZSBkZXJpdmEgZGUgbGEgbWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBwYXJhIG1vc3RyYXIgZWwgY2hpcFxuICAgICAgLy8gZGUgbGEgdGFyZWEgKHkgcmVlbnZpYXIgbGEgbWV0YWRhdGEgZW4gY2FkYSBtZW5zYWplKSBzaW4gaW1wb3J0YXIgZGVzZGUgZMOzbmRlIHNlIGFicmEuXG4gICAgICBpZiAodGFza0lkRnJvbVNlc3Npb24gIT0gbnVsbCAmJiB0YXNrTmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldFRhc2soeyBpZDogdGFza0lkRnJvbVNlc3Npb24sIG5hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRhc2sobnVsbClcbiAgICAgIH1cblxuICAgICAgLy8gQ29udmVyc2FjacOzbiBjb24gY2xpZW50X21ldGFkYXRhOiBzZXRlYXIgY2xpZW50ZSB5IGxpbXBpYXIgcHJveWVjdG9cbiAgICAgIGlmIChjbGllbnRJZEZyb21TZXNzaW9uICE9IG51bGwgJiYgY2xpZW50TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgIHNldENsaWVudCh7IGlkOiBOdW1iZXIoY2xpZW50SWRGcm9tU2Vzc2lvbiksIG5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbiB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICBjb25zdCBoYXNNdWx0aUFnZW50c0FjY2VzcyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICAgICAgaWYgKHByb2plY3RJZE1lc3NhZ2UgJiYgaGFzTXVsdGlBZ2VudHNBY2Nlc3MpIHtcbiAgICAgICAgY29uc3QgcHJvamVjdElkTnVtID0gTnVtYmVyKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICAgIGNvbnN0IGZvdW5kUHJvamVjdCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBwcm9qZWN0SWROdW0pXG5cbiAgICAgICAgaWYgKGZvdW5kUHJvamVjdCkge1xuICAgICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgICBwcm9qZWN0TmFtZTogZm91bmRQcm9qZWN0Lm5hbWUsXG4gICAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZFByb2plY3QuY2xpZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmRQcm9qZWN0LmlkKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3QoZm91bmRQcm9qZWN0KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lRnJvbVNlc3Npb24pIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICBjbGllbnROYW1lOiAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBwcm9qZWN0SWROdW0sIG5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtmZXRjaFByb2plY3RzLCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgc2V0VGFza11cbiAgKVxuXG4gIGNvbnN0IHJlc3RvcmVTZXNzaW9uRnJvbVN0b3JlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHRhcmdldENoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzZXNzaW9uc1N0b3JlID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpXG4gICAgICBjb25zdCBjYWNoZWRNZXNzYWdlcyA9IHNlc3Npb25zU3RvcmUuZ2V0TWVzc2FnZXModGFyZ2V0Q2hhdElkKVxuICAgICAgY29uc3QgY2FjaGUgPSBzZXNzaW9uc1N0b3JlLmdldFZpZXdDYWNoZSh0YXJnZXRDaGF0SWQpXG5cbiAgICAgIHNldE1lc3NhZ2VzKGNhY2hlZE1lc3NhZ2VzKVxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleShjYWNoZT8ubGFzdEV2YWx1YXRlZEtleSA/PyAwKVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSB0cnVlXG5cbiAgICAgIGlmIChjYWNoZT8uYWdlbnRTbmFwc2hvdCkge1xuICAgICAgICBzZWxlY3RBZ2VudChjYWNoZS5hZ2VudFNuYXBzaG90KVxuICAgICAgfVxuXG4gICAgICBpZiAoY2FjaGU/LmNvbnZlcnNhdGlvbk1ldGEpIHtcbiAgICAgICAgYXdhaXQgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSh7XG4gICAgICAgICAgcHJvamVjdElkTWVzc2FnZTogY2FjaGUuY29udmVyc2F0aW9uTWV0YS5wcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb246IGNhY2hlLmNvbnZlcnNhdGlvbk1ldGEucHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZEZyb21TZXNzaW9uOiBjYWNoZS5jb252ZXJzYXRpb25NZXRhLmNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uOiBjYWNoZS5jb252ZXJzYXRpb25NZXRhLmNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrSWRGcm9tU2Vzc2lvbjogY2FjaGUuY29udmVyc2F0aW9uTWV0YS50YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrTmFtZUZyb21TZXNzaW9uOiBjYWNoZS5jb252ZXJzYXRpb25NZXRhLnRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChjYWNoZT8uc2Vzc2lvbk1ldGFFdmVudCkge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIHtcbiAgICAgICAgICAgIGRldGFpbDogY2FjaGUuc2Vzc2lvbk1ldGFFdmVudCxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIG1hcmtPcGVuZWRTZXNzaW9uQXNSZWFkSWZWaXNpYmxlKHRhcmdldENoYXRJZClcbiAgICB9LFxuICAgIFtzZWxlY3RBZ2VudCwgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YV1cbiAgKVxuXG4gIGNvbnN0IGxvYWRNZXNzYWdlcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcHRpb25zPzogTG9hZE1lc3NhZ2VzT3B0aW9ucykgPT4ge1xuICAgICAgaWYgKCFvcHRpb25zPy5mb3JjZSAmJiB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuY2FuUmVzdG9yZVNlc3Npb24oY2hhdElkKSkge1xuICAgICAgICBhd2FpdCByZXN0b3JlU2Vzc2lvbkZyb21TdG9yZShjaGF0SWQpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsb2FkU2VxUmVmLmN1cnJlbnQgKz0gMVxuICAgICAgY29uc3Qgc2VxID0gbG9hZFNlcVJlZi5jdXJyZW50XG4gICAgICBjb25zdCB0YXJnZXRDaGF0SWQgPSBjaGF0SWRcblxuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKHRydWUpXG4gICAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1lc3NhZ2VzXSBsb2FkTWVzc2FnZXMgc3RhcnQnLCB7IGNoYXRJZDogdGFyZ2V0Q2hhdElkLCBzZXEsIGZvcmNlOiBvcHRpb25zPy5mb3JjZSB9KVxuICAgICAgICBsZXQgYWdlbnRTbmFwc2hvdDogQWdlbnQgfCBudWxsID0gbnVsbFxuICAgICAgICBjb25zdCBzZWxlY3RBZ2VudEZvclNlc3Npb24gPSAobmV4dDogQWdlbnQpID0+IHtcbiAgICAgICAgICBzZWxlY3RBZ2VudChuZXh0KVxuICAgICAgICAgIGFnZW50U25hcHNob3QgPSBuZXh0XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgIG5leHRJdGVtLFxuICAgICAgICAgIGFnZW50RGVsZXRlZCxcbiAgICAgICAgICBhZ2VudE5vUGVybWlzc2lvbixcbiAgICAgICAgICBoYXNBZ2VudEFjY2VzcyxcbiAgICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24sXG4gICAgICAgICAgYWdlbnRUeXBlOiBhZ2VudFR5cGVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBhZ2VudEVudGl0eTogYWdlbnRFbnRpdHlGcm9tU2Vzc2lvbixcbiAgICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgcHJvamVjdERlbGV0ZWQsXG4gICAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZTogY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tJZDogdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza05hbWU6IHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgICAgY2hhdElkOiB0YXJnZXRDaGF0SWQsXG4gICAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGNhbmNlbGxlZFRleHQ6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoc2VxICE9PSBsb2FkU2VxUmVmLmN1cnJlbnQgfHwgdGFyZ2V0Q2hhdElkICE9PSBjaGF0SWQpIHtcbiAgICAgICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWVzc2FnZXNdIGxvYWRNZXNzYWdlcyBzdGFsZSByZXNwb25zZSBkaXNjYXJkZWQnLCB7XG4gICAgICAgICAgICB0YXJnZXRDaGF0SWQsXG4gICAgICAgICAgICBjdXJyZW50Q2hhdElkOiBjaGF0SWQsXG4gICAgICAgICAgICBzZXEsXG4gICAgICAgICAgICBjdXJyZW50U2VxOiBsb2FkU2VxUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBpdGVtQ291bnQ6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1lc3NhZ2VzXSBsb2FkTWVzc2FnZXMgcmVzdWx0OicsIHtcbiAgICAgICAgICBjaGF0SWQ6IHRhcmdldENoYXRJZCxcbiAgICAgICAgICBpdGVtQ291bnQ6IGl0ZW1zLmxlbmd0aCxcbiAgICAgICAgICBhZ2VudE5vUGVybWlzc2lvbixcbiAgICAgICAgICBhZ2VudERlbGV0ZWQ6ICEhYWdlbnREZWxldGVkLFxuICAgICAgICAgIGhhc0FnZW50QWNjZXNzLFxuICAgICAgICAgIGhhc0FnZW50UGVybWlzc2lvbixcbiAgICAgICAgICB1c2VyUGVybWlzc2lvbnNWaWV3OiB1c2VyUGVybWlzc2lvbnM/LnZpZXcsXG4gICAgICAgICAgYWdlbnRJbkFnZW50c0xpc3Q6IGFnZW50Tm9QZXJtaXNzaW9uID8gISFhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKSA6IG51bGwsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGFnZW50RGVsZXRlZCkge1xuICAgICAgICAgIHNlbGVjdEFnZW50Rm9yU2Vzc2lvbih7XG4gICAgICAgICAgICBpZDogYWdlbnREZWxldGVkLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnREZWxldGVkLm5hbWUsXG4gICAgICAgICAgICBlbW9qaTogYWdlbnREZWxldGVkLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgICBpc19kZWxldGVkOiB0cnVlLFxuICAgICAgICAgICAgZGVsZXRlZF9hdDogYWdlbnREZWxldGVkLmRlbGV0ZWRBdCxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbj8uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gZXN0w6EgZW4gbGEgbGlzdGEgcGVybyB0aWVuZSBwZXJtaXNvcywgYWNjZXNvIHkgbm8gZXN0w6EgZWxpbWluYWRvLCBzZXRlYXJsbyBub3JtYWxtZW50ZVxuICAgICAgICAvLyBFeGNsdWlyIGFnZW50ZXMgbm8tY3VzdG9tIHBhcmEgdXN1YXJpb3MgY29uIHJvbGVzIGRlc2hhYmlsaXRhZG9zXG4gICAgICAgIGlmIChcbiAgICAgICAgICBhZ2VudE5vUGVybWlzc2lvbiAmJlxuICAgICAgICAgICFhZ2VudERlbGV0ZWQgJiZcbiAgICAgICAgICB1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICAgICBoYXNBZ2VudEFjY2VzcyAmJlxuICAgICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICAgICFhZ2VudHMuZmluZChhZ2VudCA9PiBhZ2VudC5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpXG4gICAgICAgICkge1xuICAgICAgICAgIHNlbGVjdEFnZW50Rm9yU2Vzc2lvbih7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICBpc19mcm9tX2NvbnZlcnNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIGVzdMOhIGVuIGxhIGxpc3RhIHkgdGllbmUgYWNjZXNvL3Blcm1pc29zLCBhY3R1YWxpemFyIHByb2plY3RfZGVsZXRlZCAobyBsaW1waWFybG8gYWwgY2FtYmlhciBkZSBjaGF0KVxuICAgICAgICBpZiAoXG4gICAgICAgICAgYWdlbnROb1Blcm1pc3Npb24gJiZcbiAgICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgICAgaGFzQWdlbnRBY2Nlc3MgJiZcbiAgICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24gJiZcbiAgICAgICAgICBhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhZ2VudEluTGlzdCA9IGFnZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gYWdlbnROb1Blcm1pc3Npb24uaWQpXG4gICAgICAgICAgaWYgKGFnZW50SW5MaXN0KSB7XG4gICAgICAgICAgICBzZWxlY3RBZ2VudEZvclNlc3Npb24oe1xuICAgICAgICAgICAgICAuLi5hZ2VudEluTGlzdCxcbiAgICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7IHByb2plY3RfZGVsZXRlZDogdW5kZWZpbmVkIH0pLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gdGllbmUgYWNjZXNvIG8gcGVybWlzb3Mgc2Vnw7puIGxhIHJlc3B1ZXN0YSBkZSBzZXNzaW9ucywgc2VsZWNjaW9uYXJsbyBjb24gZWwgZmxhZyBjb3JyZXNwb25kaWVudGVcbiAgICAgICAgLy8gTGEgdmFsaWRhY2nDs24gYWhvcmEgc2UgYmFzYSBlbiBsYXMgcHJvcGllZGFkZXMgaGFzX2FnZW50X2FjY2VzcyB5IGhhc19hZ2VudF9wZXJtaXNzaW9uIGRlIGxhIHJlc3B1ZXN0YVxuICAgICAgICBpZiAoYWdlbnROb1Blcm1pc3Npb24gJiYgIWFnZW50RGVsZXRlZCkge1xuICAgICAgICAgIGlmICghaGFzQWdlbnRBY2Nlc3MpIHtcbiAgICAgICAgICAgIC8vIENhc28gMTogTm8gdGllbmUgYWNjZXNvIGFsIGFnZW50ZVxuICAgICAgICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1lc3NhZ2VzXSBCUkFOQ0g6IGhhc19ub3RfYWNjZXNzIOKAlCBoYXNBZ2VudEFjY2VzczonLCBoYXNBZ2VudEFjY2VzcylcbiAgICAgICAgICAgIHNlbGVjdEFnZW50Rm9yU2Vzc2lvbih7XG4gICAgICAgICAgICAgIGlkOiBhZ2VudE5vUGVybWlzc2lvbi5pZCxcbiAgICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgICB0eXBlOiBhZ2VudE5vUGVybWlzc2lvbi50eXBlIGFzICdwbScgfCAnY3VzdG9tJyB8ICdjbG9uZScgfCAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgICAgaGFzX25vdF9hY2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDoge30pLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNBZ2VudFBlcm1pc3Npb24pIHtcbiAgICAgICAgICAgIC8vIENhc28gMjogTm8gdGllbmUgcGVybWlzb3MgcGFyYSB2aXN1YWxpemFyL2ludGVyYWN0dWFyIGNvbiBlbCBhZ2VudGVcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNZXNzYWdlc10gQlJBTkNIOiBoYXNfbm90X3Blcm1pc3Npb25zIOKAlCBoYXNBZ2VudFBlcm1pc3Npb246JywgaGFzQWdlbnRQZXJtaXNzaW9uKVxuICAgICAgICAgICAgc2VsZWN0QWdlbnRGb3JTZXNzaW9uKHtcbiAgICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgICBlbW9qaTogYWdlbnROb1Blcm1pc3Npb24uZW1vamksXG4gICAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyB8ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgICAgICBoYXNfbm90X3Blcm1pc3Npb25zOiB0cnVlLFxuICAgICAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9qZWN0RGVsZXRlZCkge1xuICAgICAgICAgICAgLy8gQ2FzbyAzOiBFbCBwcm95ZWN0byBkZSBsYSBjb252ZXJzYWNpw7NuIGZ1ZSBlbGltaW5hZG9cbiAgICAgICAgICAgIHNlbGVjdEFnZW50Rm9yU2Vzc2lvbih7XG4gICAgICAgICAgICAgIGlkOiBhZ2VudE5vUGVybWlzc2lvbi5pZCxcbiAgICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgICB0eXBlOiBhZ2VudE5vUGVybWlzc2lvbi50eXBlIGFzICdwbScgfCAnY3VzdG9tJyB8ICdjbG9uZScgfCAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgICAgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSh7XG4gICAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiAoYWdlbnRfdHlwZSAvIGFnZW50X2VudGl0eSArIGNvbnRleHRvKSBwYXJhIGVsIGNhcnRlbCBkZVxuICAgICAgICAvLyBcImNvbnRpbnVhciBlbiB1biBjaGF0IG51ZXZvXCIgZGVsIGZvb3RlciBjdWFuZG8gc2UgYWJyZSB1bmEgY29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3kuXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLWNoYXQtc2Vzc2lvbi1tZXRhJywge1xuICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICAgICAgYWdlbnRUeXBlOiBhZ2VudFR5cGVGcm9tU2Vzc2lvbixcbiAgICAgICAgICAgICAgYWdlbnRFbnRpdHk6IGFnZW50RW50aXR5RnJvbVNlc3Npb24sXG4gICAgICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICAgIHRhc2tJZDogdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgICAgICAgIHRhc2tOYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG5cbiAgICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgY29uIGVsIHRhYiBkZWwgdXN1YXJpbyAobWUpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0SWRNZXNzYWdlID8gcGFyc2VJbnQoU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLCAxMCkgOiBudWxsXG4gICAgICAgIGxldCBpdGVtc1RvU2V0ID0gaXRlbXNcbiAgICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQpIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCgxKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBpdGVtc1RvU2V0ID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBsYSBzZXNpw7NuIHNpZ3VlIGdlbmVyYW5kbyAoc3RyZWFtIGVuIGJhY2tncm91bmQpLCByZWNvbnN0cnVpbW9zIGVsXG4gICAgICAgIC8vIHRhaWwgZW4gdnVlbG8gKHByZWd1bnRhICsgcGxhY2Vob2xkZXIpIHF1ZSBhw7puIG5vIGVzdMOhIHBlcnNpc3RpZG8gZW4gZWxcbiAgICAgICAgLy8gYmFja2VuZCwgbWVyZ2XDoW5kb2xvIGFsIGhpc3RvcmlhbCBjYXJnYWRvIHNpbiBkdXBsaWNhciBwb3IgaWQuXG4gICAgICAgIGNvbnN0IHNlc3Npb25NZXRhID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLmdldE1ldGEoY2hhdElkKVxuICAgICAgICBsZXQgZmluYWxNZXNzYWdlcyA9IGl0ZW1zVG9TZXRcbiAgICAgICAgaWYgKHNlc3Npb25NZXRhICYmIGlzQWN0aXZlU2Vzc2lvblN0YXR1cyhzZXNzaW9uTWV0YS5zdGF0dXMpKSB7XG4gICAgICAgICAgY29uc3QgdGFpbCA9IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5nZXRNZXNzYWdlcyhjaGF0SWQpXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KGl0ZW1zVG9TZXQubWFwKGl0ZW0gPT4gaXRlbS5pZCkpXG4gICAgICAgICAgY29uc3QgZXh0cmEgPSB0YWlsLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoaXRlbS5pZCkpXG4gICAgICAgICAgaWYgKGV4dHJhLmxlbmd0aCkge1xuICAgICAgICAgICAgZmluYWxNZXNzYWdlcyA9IFsuLi5pdGVtc1RvU2V0LCAuLi5leHRyYV1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb252ZXJzYXRpb25NZXRhOiBTZXNzaW9uQ29udmVyc2F0aW9uTWV0YSA9IHtcbiAgICAgICAgICBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlc3Npb25NZXRhRXZlbnQ6IFNlc3Npb25NZXRhRXZlbnREZXRhaWwgPSB7XG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIGFnZW50VHlwZTogYWdlbnRUeXBlRnJvbVNlc3Npb24sXG4gICAgICAgICAgYWdlbnRFbnRpdHk6IGFnZW50RW50aXR5RnJvbVNlc3Npb24sXG4gICAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrSWQ6IHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TWVzc2FnZXMoZmluYWxNZXNzYWdlcylcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbktleSA9IE51bWJlcihuZXh0SXRlbSlcbiAgICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleShwYWdpbmF0aW9uS2V5KVxuICAgICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IHRydWVcblxuICAgICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuc2V0TWVzc2FnZXModGFyZ2V0Q2hhdElkLCBmaW5hbE1lc3NhZ2VzKVxuICAgICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuc2V0Vmlld0NhY2hlKHRhcmdldENoYXRJZCwge1xuICAgICAgICAgIGh5ZHJhdGVkRnJvbUFwaTogdHJ1ZSxcbiAgICAgICAgICBsYXN0RXZhbHVhdGVkS2V5OiBwYWdpbmF0aW9uS2V5LFxuICAgICAgICAgIGNvbnZlcnNhdGlvbk1ldGEsXG4gICAgICAgICAgc2Vzc2lvbk1ldGFFdmVudCxcbiAgICAgICAgICBhZ2VudFNuYXBzaG90LFxuICAgICAgICB9KVxuXG4gICAgICAgIG1hcmtPcGVuZWRTZXNzaW9uQXNSZWFkSWZWaXNpYmxlKHRhcmdldENoYXRJZClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChzZXEgPT09IGxvYWRTZXFSZWYuY3VycmVudCAmJiB0YXJnZXRDaGF0SWQgPT09IGNoYXRJZCkge1xuICAgICAgICAgIG9uRXJyb3I/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChzZXEgPT09IGxvYWRTZXFSZWYuY3VycmVudCAmJiB0YXJnZXRDaGF0SWQgPT09IGNoYXRJZCkge1xuICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlcyhmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgY2hhdElkLFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhLFxuICAgICAgb25FcnJvcixcbiAgICAgIGdldFRhYlRhc2tEZWZhdWx0LFxuICAgICAgcmVzdG9yZVNlc3Npb25Gcm9tU3RvcmUsXG4gICAgICBzZWxlY3RBZ2VudCxcbiAgICAgIGFnZW50cyxcbiAgICAgIHQsXG4gICAgICBpMThuLmxhbmd1YWdlLFxuICAgICAgdXNlclBlcm1pc3Npb25zPy52aWV3LFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGxvYWRNb3JlTWVzc2FnZXMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmIChpc0xvYWRpbmdSZWYuY3VycmVudCB8fCAhbGFzdEV2YWx1YXRlZEtleSB8fCAhY29udGFpbmVyKSByZXR1cm5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXModHJ1ZSlcblxuICAgICAgICBjb25zdCBvbGRTY3JvbGxIZWlnaHQgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0XG4gICAgICAgIGNvbnN0IG9sZFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3BcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgbmV4dEl0ZW0sXG4gICAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrSWQ6IHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB9ID0gYXdhaXQgbWFpYS5DaGF0cy5nZXRDaGF0TWVzc2FnZXMoe1xuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICBjdXJyZW50VXNlcixcbiAgICAgICAgICBvZmZzZXQ6IGxhc3RFdmFsdWF0ZWRLZXksXG4gICAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhKHtcbiAgICAgICAgICBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBTaSBoYXkgcHJveWVjdG8gZW4gbGEgY29udmVyc2FjacOzbiwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgY2FyZ2Fkb3NcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3RJZE1lc3NhZ2UgPyBwYXJzZUludChTdHJpbmcocHJvamVjdElkTWVzc2FnZSksIDEwKSA6IG51bGxcbiAgICAgICAgbGV0IGl0ZW1zVG9NZXJnZSA9IGl0ZW1zXG4gICAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgaXRlbXNUb01lcmdlID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5tZXNzYWdlcy5zbGljZSgwLCAxKSwgLi4uaXRlbXNUb01lcmdlLCAuLi5tZXNzYWdlcy5zbGljZSgxKV1cbiAgICAgICAgc2V0TWVzc2FnZXMobmV3TWVzc2FnZXMpXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25LZXkgPSBOdW1iZXIobmV4dEl0ZW0pXG4gICAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkocGFnaW5hdGlvbktleSlcbiAgICAgICAgc3luY01lc3NhZ2VzVG9TdG9yZShjaGF0SWQsIG5ld01lc3NhZ2VzLCBwYWdpbmF0aW9uS2V5KVxuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IGNvbnRhaW5lclxuICAgICAgICAgICAgaWYgKGNvbnRhaW5lclJlZikge1xuICAgICAgICAgICAgICBjb25zdCBuZXdTY3JvbGxIZWlnaHQgPSBjb250YWluZXJSZWYuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodERpZmZlcmVuY2UgPSBuZXdTY3JvbGxIZWlnaHQgLSBvbGRTY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgY29udGFpbmVyUmVmLnNjcm9sbFRvcCA9IG9sZFNjcm9sbFRvcCArIGhlaWdodERpZmZlcmVuY2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgb25FcnJvcj8uKClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzTG9hZGluZ01vcmVNZXNzYWdlcyhmYWxzZSlcbiAgICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgY2hhdElkLFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgb25FcnJvcixcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgZ2V0VGFiVGFza0RlZmF1bHQsXG4gICAgICBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhLFxuICAgICAgc3luY01lc3NhZ2VzVG9TdG9yZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmICghY29udGFpbmVyIHx8IGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFpbml0aWFsTG9hZERvbmUuY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBzY3JvbGxQZXJjZW50YWdlID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0ID4gMCA/IChzY3JvbGxUb3AgLyAoc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0KSkgKiAxMDAgOiAwXG5cbiAgICAgIGlmIChzY3JvbGxQZXJjZW50YWdlIDwgMTApIHtcbiAgICAgICAgbG9hZE1vcmVNZXNzYWdlcyhjb250YWluZXIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbbG9hZE1vcmVNZXNzYWdlc11cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoYXRJZCAhPT0gcHJldmlvdXNDaGF0SWQuY3VycmVudCkge1xuICAgICAgY29uc3QgZnJvbUNoYXRJZCA9IHByZXZpb3VzQ2hhdElkLmN1cnJlbnRcbiAgICAgIGNvbnN0IGNhblJlc3RvcmUgPSB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuY2FuUmVzdG9yZVNlc3Npb24oY2hhdElkKVxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1lc3NhZ2VzXSBzZXNzaW9uIHN3aXRjaCcsIHsgZnJvbTogZnJvbUNoYXRJZCwgdG86IGNoYXRJZCwgY2FuUmVzdG9yZSB9KVxuXG4gICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IGZhbHNlXG4gICAgICBwcmV2aW91c0NoYXRJZC5jdXJyZW50ID0gY2hhdElkXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KDApXG4gICAgICBsb2FkU2VxUmVmLmN1cnJlbnQgKz0gMVxuXG4gICAgICByZWZldGNoVGFiVGFza0RlZmF1bHQoKVxuXG4gICAgICBjb25zdCBwZW5kaW5nSW5pdGlhbE1lc3NhZ2UgPSBoYXNNZWFuaW5nZnVsVXNlckluaXRpYWxNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZSlcblxuICAgICAgaWYgKCFwZW5kaW5nSW5pdGlhbE1lc3NhZ2UgJiYgY2FuUmVzdG9yZSkge1xuICAgICAgICByZXN0b3JlU2Vzc2lvbkZyb21TdG9yZShjaGF0SWQpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1lc3NhZ2VzXSByZXN0b3JlU2Vzc2lvbkZyb21TdG9yZSBmYWlsZWQnLCBlcnJvcilcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldE1lc3NhZ2VzKFxuICAgICAgICBwZW5kaW5nSW5pdGlhbE1lc3NhZ2UgJiYgdXNlckluaXRpYWxNZXNzYWdlXG4gICAgICAgICAgPyBidWlsZEluaXRpYWxNZXNzYWdlUGxhY2Vob2xkZXIodXNlckluaXRpYWxNZXNzYWdlLCBjdXJyZW50VXNlcilcbiAgICAgICAgICA6IFtdXG4gICAgICApXG5cbiAgICAgIC8vIExpbXBpYXIgZWwgZXN0YWRvIGRlbCBwcm95ZWN0byB5IGxhIHRhcmVhIGN1YW5kbyBjYW1iaWEgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIGlmICghcGVuZGluZ0luaXRpYWxNZXNzYWdlKSB7XG4gICAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgY2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBjdXJyZW50VXNlcixcbiAgICBsb2FkTWVzc2FnZXMsXG4gICAgcmVzdG9yZVNlc3Npb25Gcm9tU3RvcmUsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0VGFzayxcbiAgICByZWZldGNoVGFiVGFza0RlZmF1bHQsXG4gIF0pXG5cbiAgLy8gQ3VhbmRvIHRhYlRhc2tEZWZhdWx0IHBhc2EgYSBlc3RhciBkaXNwb25pYmxlIGRlc3B1w6lzIGRlIGNhcmdhciwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgeWEgY2FyZ2Fkb3MuXG4gIC8vIFJlZiBwYXJhIGV2aXRhciBidWNsZTogc2V0TWVzc2FnZXMocmV3cml0dGVuKSBjYW1iaWEgbWVzc2FnZXMgeSByZS1lamVjdXRhIGVsIGVmZWN0bzsgc29sbyByZWVzY3JpYmltb3MgdW5hIHZleiBwb3IgbG90ZS5cbiAgY29uc3QgZGlkUmV3cml0ZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhYlRhc2tEZWZhdWx0IHx8ICFwcm9qZWN0Py5pZCB8fCBtZXNzYWdlcy5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgIGNvbnN0IHRhYlNlZ21lbnQgPSBgLyR7dGFiVGFza0RlZmF1bHR9YFxuICAgIGNvbnN0IG5lZWRzUmV3cml0ZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtc2cubWVzc2FnZSB8fCAnJ1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGNvbnRlbnQubWF0Y2godGFza1VybFJlZ2V4KVxuICAgICAgaWYgKCFtYXRjaGVzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIG1hdGNoZXMuc29tZSh1cmwgPT4gIXVybC5lbmRzV2l0aChgLyR7dGFiVGFza0RlZmF1bHR9YCkgJiYgIXVybC5pbmNsdWRlcyhgLyR7dGFiVGFza0RlZmF1bHR9P2ApKVxuICAgIH0pXG4gICAgaWYgKCFuZWVkc1Jld3JpdGUpIHtcbiAgICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGRpZFJld3JpdGVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgZGlkUmV3cml0ZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGNvbnN0IHJld3JpdHRlbiA9IG1lc3NhZ2VzLm1hcChtc2cgPT4gKHtcbiAgICAgIC4uLm1zZyxcbiAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChtc2cubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgfSkpXG4gICAgc2V0TWVzc2FnZXMocmV3cml0dGVuKVxuICAgIHN5bmNNZXNzYWdlc1RvU3RvcmUoY2hhdElkLCByZXdyaXR0ZW4pXG4gIH0sIFt0YWJUYXNrRGVmYXVsdCwgcHJvamVjdD8uaWQsIG1lc3NhZ2VzLCBjaGF0SWQsIHN5bmNNZXNzYWdlc1RvU3RvcmVdKVxuXG4gIGNvbnN0IGFkZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZTogQ2hhdE1lc3NhZ2UpID0+IHtcbiAgICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2VJbmRleCA9IHByZXYuZmluZEluZGV4KG1zZyA9PiBtc2cuaWQgPT09IG1lc3NhZ2UuaWQpXG5cbiAgICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZUluZGV4ID49IDApIHtcbiAgICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5wcmV2XVxuICAgICAgICAgIG5ld01lc3NhZ2VzW2V4aXN0aW5nTWVzc2FnZUluZGV4XSA9IG1lc3NhZ2VcbiAgICAgICAgICBzeW5jTWVzc2FnZXNUb1N0b3JlKGNoYXRJZCwgbmV3TWVzc2FnZXMpXG4gICAgICAgICAgcmV0dXJuIG5ld01lc3NhZ2VzXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ucHJldiwgbWVzc2FnZV1cbiAgICAgICAgc3luY01lc3NhZ2VzVG9TdG9yZShjaGF0SWQsIG5ld01lc3NhZ2VzKVxuICAgICAgICByZXR1cm4gbmV3TWVzc2FnZXNcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2hhdElkLCBzeW5jTWVzc2FnZXNUb1N0b3JlXVxuICApXG5cbiAgY29uc3QgcmVtb3ZlTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgc2V0TWVzc2FnZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IG5ld01lc3NhZ2VzID0gcHJldi5maWx0ZXIobXNnID0+IG1zZy5pZCAhPT0gbWVzc2FnZUlkKVxuICAgICAgICBzeW5jTWVzc2FnZXNUb1N0b3JlKGNoYXRJZCwgbmV3TWVzc2FnZXMpXG4gICAgICAgIHJldHVybiBuZXdNZXNzYWdlc1xuICAgICAgfSlcbiAgICB9LFxuICAgIFtjaGF0SWQsIHN5bmNNZXNzYWdlc1RvU3RvcmVdXG4gIClcblxuICByZXR1cm4ge1xuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBtZXNzYWdlcyxcbiAgICBoYXNNb3JlTWVzc2FnZXM6ICEhbGFzdEV2YWx1YXRlZEtleSxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgbG9hZE1lc3NhZ2VzLFxuICAgIGxvYWRNb3JlTWVzc2FnZXMsXG4gICAgYWRkTWVzc2FnZSxcbiAgICByZW1vdmVNZXNzYWdlLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQSxTQUFT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
749
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJidWlsZENvbnRleHRNZXNzYWdlIiwibWFpYSIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwidXNlVXNlciIsInVzZVRhYlRhc2tEZWZhdWx0IiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIm1hcENPUkxhbmciLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlU2Vzc2lvbnNTdG9yZSIsImlzQWN0aXZlU2Vzc2lvblN0YXR1cyIsImdldENoYXRzU3RvcmVTdGF0ZSIsImhhc01lYW5pbmdmdWxVc2VySW5pdGlhbE1lc3NhZ2UiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlckluaXRpYWxNZXNzYWdlJG0iLCJfdXNlckluaXRpYWxNZXNzYWdlJGEiLCJCb29sZWFuIiwibWVzc2FnZSIsInRyaW0iLCJhdHRhY2htZW50cyIsImxlbmd0aCIsImZ1YUlkIiwic2NJZCIsIm1hcmtPcGVuZWRTZXNzaW9uQXNSZWFkSWZWaXNpYmxlIiwic2Vzc2lvbklkIiwiX2dldENoYXRzU3RvcmVTdGF0ZSIsImlzQ2hhdFZpZXdWaXNpYmxlIiwiYWN0aXZlQ2hhdElkIiwibWFya0NoYXRBc1JlYWQiLCJidWlsZEluaXRpYWxNZXNzYWdlUGxhY2Vob2xkZXIiLCJjdXJyZW50VXNlciIsIl9vYmplY3RTcHJlYWQiLCJpZCIsImRhdGUiLCJEYXRlIiwidXNlciIsIm1lbnRpb25zIiwiY29udGV4dE1lc3NhZ2UiLCJyZXdyaXRlVGFza1VybHNJbkNvbnRlbnQiLCJjb250ZW50IiwidGFiU2VnbWVudCIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInJlcGxhY2UiLCJ1cmwiLCJ1c2VDaGF0TWVzc2FnZXMiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkVycm9yIiwiY2hhdElkIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJpMThuIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJsb2FkaW5nTWVzc2FnZXMiLCJzZXRMb2FkaW5nTWVzc2FnZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsInNldENoaXBzUHJvamVjdCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwicHJvamVjdCIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwidGFiVGFza0RlZmF1bHQiLCJyZWZldGNoVGFiVGFza0RlZmF1bHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsInNldElzTG9hZGluZ01vcmVNZXNzYWdlcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibGFzdEV2YWx1YXRlZEtleSIsInNldExhc3RFdmFsdWF0ZWRLZXkiLCJpc0xvYWRpbmdSZWYiLCJpbml0aWFsTG9hZERvbmUiLCJwcmV2aW91c0NoYXRJZCIsImxvYWRTZXFSZWYiLCJzeW5jTWVzc2FnZXNUb1N0b3JlIiwidGFyZ2V0Q2hhdElkIiwibmV4dE1lc3NhZ2VzIiwibGFzdEV2YWx1YXRlZEtleVZhbHVlIiwiZ2V0U3RhdGUiLCJ1bmRlZmluZWQiLCJwYXRjaFZpZXdDYWNoZSIsInNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJwcm9qZWN0SWRNZXNzYWdlIiwicHJvamVjdE5hbWVGcm9tU2Vzc2lvbiIsImNsaWVudElkRnJvbVNlc3Npb24iLCJjbGllbnROYW1lRnJvbVNlc3Npb24iLCJ0YXNrSWRGcm9tU2Vzc2lvbiIsInRhc2tOYW1lRnJvbVNlc3Npb24iLCJwcm9qZWN0cyIsImhhc011bHRpQWdlbnRzQWNjZXNzIiwicHJvamVjdElkTnVtIiwiZm91bmRQcm9qZWN0IiwiX2ZvdW5kUHJvamVjdCRjbGllbnQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIm5hbWUiLCJOdW1iZXIiLCJhYnJ1cHQiLCJzZW50Iiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImZpbmQiLCJwIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50IiwicHJvamVjdElkIiwiU3RyaW5nIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZXN0b3JlU2Vzc2lvbkZyb21TdG9yZSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfY2FjaGUkbGFzdEV2YWx1YXRlZEsiLCJzZXNzaW9uc1N0b3JlIiwiY2FjaGVkTWVzc2FnZXMiLCJjYWNoZSIsIl9jb250ZXh0MiIsImdldE1lc3NhZ2VzIiwiZ2V0Vmlld0NhY2hlIiwiY3VycmVudCIsImFnZW50U25hcHNob3QiLCJjb252ZXJzYXRpb25NZXRhIiwic2Vzc2lvbk1ldGFFdmVudCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiX3gyIiwibG9hZE1lc3NhZ2VzIiwiX3JlZjUiLCJfY2FsbGVlMyIsIm9wdGlvbnMiLCJzZXEiLCJzZWxlY3RBZ2VudEZvclNlc3Npb24iLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQiLCJpdGVtcyIsIm5leHRJdGVtIiwiYWdlbnREZWxldGVkIiwiYWdlbnROb1Blcm1pc3Npb24iLCJoYXNBZ2VudEFjY2VzcyIsImhhc0FnZW50UGVybWlzc2lvbiIsImFnZW50VHlwZUZyb21TZXNzaW9uIiwiYWdlbnRFbnRpdHlGcm9tU2Vzc2lvbiIsInByb2plY3REZWxldGVkIiwiYWdlbnRJbkxpc3QiLCJjb250ZXh0UHJvamVjdElkIiwiaXRlbXNUb1NldCIsInRhYiIsInNlc3Npb25NZXRhIiwiZmluYWxNZXNzYWdlcyIsInRhaWwiLCJleGlzdGluZ0lkcyIsImV4dHJhIiwicGFnaW5hdGlvbktleSIsIl90IiwiX2NvbnRleHQzIiwiZm9yY2UiLCJjYW5SZXN0b3JlU2Vzc2lvbiIsImNvbnNvbGUiLCJpbmZvIiwiQ2hhdHMiLCJnZXRDaGF0TWVzc2FnZXMiLCJvZmZzZXQiLCJjYW5jZWxsZWRUZXh0IiwibGFuZyIsImxhbmd1YWdlIiwiYWdlbnRUeXBlIiwiYWdlbnRFbnRpdHkiLCJjbGllbnRJZCIsInRhc2tJZCIsInRhc2tOYW1lIiwiY3VycmVudENoYXRJZCIsImN1cnJlbnRTZXEiLCJpdGVtQ291bnQiLCJ1c2VyUGVybWlzc2lvbnNWaWV3IiwidmlldyIsImFnZW50SW5BZ2VudHNMaXN0IiwiYSIsImVtb2ppIiwidHlwZSIsImlzX2RlbGV0ZWQiLCJkZWxldGVkX2F0IiwiZGVsZXRlZEF0IiwiY29ubmVjdG9ycyIsImFnZW50IiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYXNfbm90X2FjY2VzcyIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJwYXJzZUludCIsImNvbmNhdCIsIm1hcCIsIml0ZW0iLCJnZXRNZXRhIiwic3RhdHVzIiwiU2V0IiwiZmlsdGVyIiwiaGFzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2V0Vmlld0NhY2hlIiwiaHlkcmF0ZWRGcm9tQXBpIiwiZmluaXNoIiwiX3gzIiwibG9hZE1vcmVNZXNzYWdlcyIsIl9yZWY2IiwiX2NhbGxlZTQiLCJjb250YWluZXIiLCJvbGRTY3JvbGxIZWlnaHQiLCJvbGRTY3JvbGxUb3AiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQyIiwiaXRlbXNUb01lcmdlIiwibmV3TWVzc2FnZXMiLCJfdDIiLCJfY29udGV4dDQiLCJzY3JvbGxIZWlnaHQiLCJzY3JvbGxUb3AiLCJzbGljZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lclJlZiIsIm5ld1Njcm9sbEhlaWdodCIsImhlaWdodERpZmZlcmVuY2UiLCJfeDQiLCJoYW5kbGVTY3JvbGwiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxQZXJjZW50YWdlIiwiZnJvbUNoYXRJZCIsImNhblJlc3RvcmUiLCJmcm9tIiwidG8iLCJwZW5kaW5nSW5pdGlhbE1lc3NhZ2UiLCJlcnJvciIsImRpZFJld3JpdGVSZWYiLCJuZWVkc1Jld3JpdGUiLCJzb21lIiwibXNnIiwibWF0Y2hlcyIsIm1hdGNoIiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsInJld3JpdHRlbiIsImFkZE1lc3NhZ2UiLCJleGlzdGluZ01lc3NhZ2VJbmRleCIsImZpbmRJbmRleCIsInJlbW92ZU1lc3NhZ2UiLCJtZXNzYWdlSWQiLCJoYXNNb3JlTWVzc2FnZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1lc3NhZ2VzL3VzZUNoYXRNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgYnVpbGRDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IFVzZUNoYXRNZXNzYWdlc1Byb3BzIH0gZnJvbSAnLi91c2VDaGF0TWVzc2FnZXMuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvc2Vzc2lvbnMvdXNlU2Vzc2lvbnNTdG9yZSdcbmltcG9ydCB7IGlzQWN0aXZlU2Vzc2lvblN0YXR1cyB9IGZyb20gJy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25zLnR5cGVzJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlIH0gZnJvbSAnLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB0eXBlIHsgQWdlbnQgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbkNvbnZlcnNhdGlvbk1ldGEsIFNlc3Npb25NZXRhRXZlbnREZXRhaWwgfSBmcm9tICcuLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9ucy50eXBlcydcblxudHlwZSBMb2FkTWVzc2FnZXNPcHRpb25zID0ge1xuICAvKiogSWdub3JhIGNhY2hlIGVuIG1lbW9yaWEgeSB2dWVsdmUgYSBwZWRpciBnZXRDaGF0TWVzc2FnZXMuICovXG4gIGZvcmNlPzogYm9vbGVhblxufVxuXG50eXBlIFVzZXJJbml0aWFsTWVzc2FnZSA9IFVzZUNoYXRNZXNzYWdlc1Byb3BzWyd1c2VySW5pdGlhbE1lc3NhZ2UnXVxuXG4vKiogRWwgbW9kYWwgdXNhIGB7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfWAgY29tbyBcInNpbiBtZW5zYWplIGluaWNpYWxcIjsgbm8gZXMgZmFsc3kuICovXG5jb25zdCBoYXNNZWFuaW5nZnVsVXNlckluaXRpYWxNZXNzYWdlID0gKHVzZXJJbml0aWFsTWVzc2FnZT86IFVzZXJJbml0aWFsTWVzc2FnZSk6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbihcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UgJiZcbiAgICAodXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSB8fFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGggfHxcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZS5mdWFJZCB8fFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLnNjSWQpXG4gIClcblxuLyoqIE1hcmNhIGxhIHNlc2nDs24gY29tbyBsZcOtZGEgY3VhbmRvIHRlcm1pbsOzIGRlIGhpZHJhdGFyc2UgeSBzaWd1ZSBzaWVuZG8gbGEgYWN0aXZhIHkgdmlzaWJsZS4gKi9cbmNvbnN0IG1hcmtPcGVuZWRTZXNzaW9uQXNSZWFkSWZWaXNpYmxlID0gKHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGNvbnN0IHsgaXNDaGF0Vmlld1Zpc2libGUsIGFjdGl2ZUNoYXRJZCwgbWFya0NoYXRBc1JlYWQgfSA9IGdldENoYXRzU3RvcmVTdGF0ZSgpXG4gIGlmICghaXNDaGF0Vmlld1Zpc2libGUgfHwgYWN0aXZlQ2hhdElkICE9PSBzZXNzaW9uSWQpIHJldHVyblxuICBtYXJrQ2hhdEFzUmVhZChzZXNzaW9uSWQpXG59XG5cbmNvbnN0IGJ1aWxkSW5pdGlhbE1lc3NhZ2VQbGFjZWhvbGRlciA9IChcbiAgdXNlckluaXRpYWxNZXNzYWdlOiBOb25OdWxsYWJsZTxVc2VySW5pdGlhbE1lc3NhZ2U+LFxuICBjdXJyZW50VXNlcjogVXNlQ2hhdE1lc3NhZ2VzUHJvcHNbJ2N1cnJlbnRVc2VyJ11cbik6IENoYXRNZXNzYWdlW10gPT4gW1xuICB7XG4gICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICBtZXNzYWdlOiBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlLCB7XG4gICAgICBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkLFxuICAgICAgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQsXG4gICAgfSksXG4gICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHM6IHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cyB9IDoge30pLFxuICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgIDoge30pLFxuICB9LFxuXVxuXG5jb25zdCByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nLCB0YWJTZWdtZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWVzc2FnZXMgPSAoe1xuICBvbkVycm9yLFxuICBjaGF0SWQsXG4gIGN1cnJlbnRVc2VyLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZXMsIHNldExvYWRpbmdNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZTxDaGF0TWVzc2FnZVtdPigoKSA9PlxuICAgIGhhc01lYW5pbmdmdWxVc2VySW5pdGlhbE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlKSAmJiB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgID8gYnVpbGRJbml0aWFsTWVzc2FnZVBsYWNlaG9sZGVyKHVzZXJJbml0aWFsTWVzc2FnZSwgY3VycmVudFVzZXIpXG4gICAgICA6IFtdXG4gIClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgc2VsZWN0QWdlbnQsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRUYXNrLCBwcm9qZWN0IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCwgdGFiVGFza0RlZmF1bHQsIHJlZmV0Y2hUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuICBjb25zdCBbaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsYXN0RXZhbHVhdGVkS2V5LCBzZXRMYXN0RXZhbHVhdGVkS2V5XSA9IHVzZVN0YXRlPG51bWJlciB8IHVuZGVmaW5lZD4oMClcbiAgY29uc3QgaXNMb2FkaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBpbml0aWFsTG9hZERvbmUgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHByZXZpb3VzQ2hhdElkID0gdXNlUmVmKGNoYXRJZClcbiAgY29uc3QgbG9hZFNlcVJlZiA9IHVzZVJlZigwKVxuXG4gIGNvbnN0IHN5bmNNZXNzYWdlc1RvU3RvcmUgPSB1c2VDYWxsYmFjayhcbiAgICAodGFyZ2V0Q2hhdElkOiBzdHJpbmcsIG5leHRNZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSwgbGFzdEV2YWx1YXRlZEtleVZhbHVlPzogbnVtYmVyKSA9PiB7XG4gICAgICB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuc2V0TWVzc2FnZXModGFyZ2V0Q2hhdElkLCBuZXh0TWVzc2FnZXMpXG4gICAgICBpZiAobGFzdEV2YWx1YXRlZEtleVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLnBhdGNoVmlld0NhY2hlKHRhcmdldENoYXRJZCwgeyBsYXN0RXZhbHVhdGVkS2V5OiBsYXN0RXZhbHVhdGVkS2V5VmFsdWUgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCBzZXRDb252ZXJzYXRpb25Db250ZXh0RnJvbU1ldGFkYXRhID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHtcbiAgICAgIHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgIHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICB9OiB7XG4gICAgICBwcm9qZWN0SWRNZXNzYWdlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgICBjbGllbnRJZEZyb21TZXNzaW9uOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgICBjbGllbnROYW1lRnJvbVNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIHRhc2tJZEZyb21TZXNzaW9uOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgICB0YXNrTmFtZUZyb21TZXNzaW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgfSkgPT4ge1xuICAgICAgLy8gVGFyZWEgZGUgbGEgY29udmVyc2FjacOzbjogc2UgZGVyaXZhIGRlIGxhIG1ldGFkYXRhIGRlIGxhIHNlc3Npb24gcGFyYSBtb3N0cmFyIGVsIGNoaXBcbiAgICAgIC8vIGRlIGxhIHRhcmVhICh5IHJlZW52aWFyIGxhIG1ldGFkYXRhIGVuIGNhZGEgbWVuc2FqZSkgc2luIGltcG9ydGFyIGRlc2RlIGTDs25kZSBzZSBhYnJhLlxuICAgICAgaWYgKHRhc2tJZEZyb21TZXNzaW9uICE9IG51bGwgJiYgdGFza05hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICBzZXRUYXNrKHsgaWQ6IHRhc2tJZEZyb21TZXNzaW9uLCBuYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUYXNrKG51bGwpXG4gICAgICB9XG5cbiAgICAgIC8vIENvbnZlcnNhY2nDs24gY29uIGNsaWVudF9tZXRhZGF0YTogc2V0ZWFyIGNsaWVudGUgeSBsaW1waWFyIHByb3llY3RvXG4gICAgICBpZiAoY2xpZW50SWRGcm9tU2Vzc2lvbiAhPSBudWxsICYmIGNsaWVudE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICBzZXRDbGllbnQoeyBpZDogTnVtYmVyKGNsaWVudElkRnJvbVNlc3Npb24pLCBuYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgY29uc3QgaGFzTXVsdGlBZ2VudHNBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgIGlmIChwcm9qZWN0SWRNZXNzYWdlICYmIGhhc011bHRpQWdlbnRzQWNjZXNzKSB7XG4gICAgICAgIGNvbnN0IHByb2plY3RJZE51bSA9IE51bWJlcihwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgICBjb25zdCBmb3VuZFByb2plY3QgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcHJvamVjdElkTnVtKVxuXG4gICAgICAgIGlmIChmb3VuZFByb2plY3QpIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kUHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogZm91bmRQcm9qZWN0LmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kUHJvamVjdC5pZCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRQcm9qZWN0KGZvdW5kUHJvamVjdClcbiAgICAgICAgfSBlbHNlIGlmIChwcm9qZWN0TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHNldFByb2plY3QoeyBpZDogcHJvamVjdElkTnVtLCBuYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgfSxcbiAgICBbZmV0Y2hQcm9qZWN0cywgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3QsIHNldFRhc2tdXG4gIClcblxuICBjb25zdCByZXN0b3JlU2Vzc2lvbkZyb21TdG9yZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh0YXJnZXRDaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc2Vzc2lvbnNTdG9yZSA9IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKVxuICAgICAgY29uc3QgY2FjaGVkTWVzc2FnZXMgPSBzZXNzaW9uc1N0b3JlLmdldE1lc3NhZ2VzKHRhcmdldENoYXRJZClcbiAgICAgIGNvbnN0IGNhY2hlID0gc2Vzc2lvbnNTdG9yZS5nZXRWaWV3Q2FjaGUodGFyZ2V0Q2hhdElkKVxuXG4gICAgICBzZXRNZXNzYWdlcyhjYWNoZWRNZXNzYWdlcylcbiAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoY2FjaGU/Lmxhc3RFdmFsdWF0ZWRLZXkgPz8gMClcbiAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gdHJ1ZVxuXG4gICAgICBpZiAoY2FjaGU/LmFnZW50U25hcHNob3QpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoY2FjaGUuYWdlbnRTbmFwc2hvdClcbiAgICAgIH1cblxuICAgICAgaWYgKGNhY2hlPy5jb252ZXJzYXRpb25NZXRhKSB7XG4gICAgICAgIGF3YWl0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEoe1xuICAgICAgICAgIHByb2plY3RJZE1lc3NhZ2U6IGNhY2hlLmNvbnZlcnNhdGlvbk1ldGEucHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uOiBjYWNoZS5jb252ZXJzYXRpb25NZXRhLnByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50SWRGcm9tU2Vzc2lvbjogY2FjaGUuY29udmVyc2F0aW9uTWV0YS5jbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbjogY2FjaGUuY29udmVyc2F0aW9uTWV0YS5jbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkRnJvbVNlc3Npb246IGNhY2hlLmNvbnZlcnNhdGlvbk1ldGEudGFza0lkRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza05hbWVGcm9tU2Vzc2lvbjogY2FjaGUuY29udmVyc2F0aW9uTWV0YS50YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoY2FjaGU/LnNlc3Npb25NZXRhRXZlbnQpIHtcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCB7XG4gICAgICAgICAgICBkZXRhaWw6IGNhY2hlLnNlc3Npb25NZXRhRXZlbnQsXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBtYXJrT3BlbmVkU2Vzc2lvbkFzUmVhZElmVmlzaWJsZSh0YXJnZXRDaGF0SWQpXG4gICAgfSxcbiAgICBbc2VsZWN0QWdlbnQsIHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGFdXG4gIClcblxuICBjb25zdCBsb2FkTWVzc2FnZXMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAob3B0aW9ucz86IExvYWRNZXNzYWdlc09wdGlvbnMpID0+IHtcbiAgICAgIGlmICghb3B0aW9ucz8uZm9yY2UgJiYgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLmNhblJlc3RvcmVTZXNzaW9uKGNoYXRJZCkpIHtcbiAgICAgICAgYXdhaXQgcmVzdG9yZVNlc3Npb25Gcm9tU3RvcmUoY2hhdElkKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbG9hZFNlcVJlZi5jdXJyZW50ICs9IDFcbiAgICAgIGNvbnN0IHNlcSA9IGxvYWRTZXFSZWYuY3VycmVudFxuICAgICAgY29uc3QgdGFyZ2V0Q2hhdElkID0gY2hhdElkXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNldExvYWRpbmdNZXNzYWdlcyh0cnVlKVxuICAgICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNZXNzYWdlc10gbG9hZE1lc3NhZ2VzIHN0YXJ0JywgeyBjaGF0SWQ6IHRhcmdldENoYXRJZCwgc2VxLCBmb3JjZTogb3B0aW9ucz8uZm9yY2UgfSlcbiAgICAgICAgbGV0IGFnZW50U25hcHNob3Q6IEFnZW50IHwgbnVsbCA9IG51bGxcbiAgICAgICAgY29uc3Qgc2VsZWN0QWdlbnRGb3JTZXNzaW9uID0gKG5leHQ6IEFnZW50KSA9PiB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQobmV4dClcbiAgICAgICAgICBhZ2VudFNuYXBzaG90ID0gbmV4dFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICBuZXh0SXRlbSxcbiAgICAgICAgICBhZ2VudERlbGV0ZWQsXG4gICAgICAgICAgYWdlbnROb1Blcm1pc3Npb24sXG4gICAgICAgICAgaGFzQWdlbnRBY2Nlc3MsXG4gICAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uLFxuICAgICAgICAgIGFnZW50VHlwZTogYWdlbnRUeXBlRnJvbVNlc3Npb24sXG4gICAgICAgICAgYWdlbnRFbnRpdHk6IGFnZW50RW50aXR5RnJvbVNlc3Npb24sXG4gICAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHByb2plY3REZWxldGVkLFxuICAgICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrSWQ6IHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lOiB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB9ID0gYXdhaXQgbWFpYS5DaGF0cy5nZXRDaGF0TWVzc2FnZXMoe1xuICAgICAgICAgIGNoYXRJZDogdGFyZ2V0Q2hhdElkLFxuICAgICAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICBjYW5jZWxsZWRUZXh0OiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgICAgIGxhbmc6IG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHNlcSAhPT0gbG9hZFNlcVJlZi5jdXJyZW50IHx8IHRhcmdldENoYXRJZCAhPT0gY2hhdElkKSB7XG4gICAgICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1lc3NhZ2VzXSBsb2FkTWVzc2FnZXMgc3RhbGUgcmVzcG9uc2UgZGlzY2FyZGVkJywge1xuICAgICAgICAgICAgdGFyZ2V0Q2hhdElkLFxuICAgICAgICAgICAgY3VycmVudENoYXRJZDogY2hhdElkLFxuICAgICAgICAgICAgc2VxLFxuICAgICAgICAgICAgY3VycmVudFNlcTogbG9hZFNlcVJlZi5jdXJyZW50LFxuICAgICAgICAgICAgaXRlbUNvdW50OiBpdGVtcy5sZW5ndGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNZXNzYWdlc10gbG9hZE1lc3NhZ2VzIHJlc3VsdDonLCB7XG4gICAgICAgICAgY2hhdElkOiB0YXJnZXRDaGF0SWQsXG4gICAgICAgICAgaXRlbUNvdW50OiBpdGVtcy5sZW5ndGgsXG4gICAgICAgICAgYWdlbnROb1Blcm1pc3Npb24sXG4gICAgICAgICAgYWdlbnREZWxldGVkOiAhIWFnZW50RGVsZXRlZCxcbiAgICAgICAgICBoYXNBZ2VudEFjY2VzcyxcbiAgICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24sXG4gICAgICAgICAgdXNlclBlcm1pc3Npb25zVmlldzogdXNlclBlcm1pc3Npb25zPy52aWV3LFxuICAgICAgICAgIGFnZW50SW5BZ2VudHNMaXN0OiBhZ2VudE5vUGVybWlzc2lvbiA/ICEhYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZCkgOiBudWxsLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgICBzZWxlY3RBZ2VudEZvclNlc3Npb24oe1xuICAgICAgICAgICAgaWQ6IGFnZW50RGVsZXRlZC5pZCxcbiAgICAgICAgICAgIG5hbWU6IGFnZW50RGVsZXRlZC5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50RGVsZXRlZC5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6ICdjdXN0b20nLFxuICAgICAgICAgICAgaXNfZGVsZXRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlbGV0ZWRfYXQ6IGFnZW50RGVsZXRlZC5kZWxldGVkQXQsXG4gICAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24/LmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIGVzdMOhIGVuIGxhIGxpc3RhIHBlcm8gdGllbmUgcGVybWlzb3MsIGFjY2VzbyB5IG5vIGVzdMOhIGVsaW1pbmFkbywgc2V0ZWFybG8gbm9ybWFsbWVudGVcbiAgICAgICAgLy8gRXhjbHVpciBhZ2VudGVzIG5vLWN1c3RvbSBwYXJhIHVzdWFyaW9zIGNvbiByb2xlcyBkZXNoYWJpbGl0YWRvc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWdlbnROb1Blcm1pc3Npb24gJiZcbiAgICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgICAgdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgICAgaGFzQWdlbnRBY2Nlc3MgJiZcbiAgICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24gJiZcbiAgICAgICAgICAhYWdlbnRzLmZpbmQoYWdlbnQgPT4gYWdlbnQuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgICApIHtcbiAgICAgICAgICBzZWxlY3RBZ2VudEZvclNlc3Npb24oe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyB8ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgICAgaXNfZnJvbV9jb252ZXJzYXRpb246IHRydWUsXG4gICAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7fSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIGVsIGFnZW50ZSBlc3TDoSBlbiBsYSBsaXN0YSB5IHRpZW5lIGFjY2Vzby9wZXJtaXNvcywgYWN0dWFsaXphciBwcm9qZWN0X2RlbGV0ZWQgKG8gbGltcGlhcmxvIGFsIGNhbWJpYXIgZGUgY2hhdClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uICYmXG4gICAgICAgICAgIWFnZW50RGVsZXRlZCAmJlxuICAgICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uICYmXG4gICAgICAgICAgYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRJbkxpc3QgPSBhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgICAgIGlmIChhZ2VudEluTGlzdCkge1xuICAgICAgICAgICAgc2VsZWN0QWdlbnRGb3JTZXNzaW9uKHtcbiAgICAgICAgICAgICAgLi4uYWdlbnRJbkxpc3QsXG4gICAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAgIC4uLihwcm9qZWN0RGVsZXRlZCA/IHsgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSB9IDogeyBwcm9qZWN0X2RlbGV0ZWQ6IHVuZGVmaW5lZCB9KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgZWwgYWdlbnRlIG5vIHRpZW5lIGFjY2VzbyBvIHBlcm1pc29zIHNlZ8O6biBsYSByZXNwdWVzdGEgZGUgc2Vzc2lvbnMsIHNlbGVjY2lvbmFybG8gY29uIGVsIGZsYWcgY29ycmVzcG9uZGllbnRlXG4gICAgICAgIC8vIExhIHZhbGlkYWNpw7NuIGFob3JhIHNlIGJhc2EgZW4gbGFzIHByb3BpZWRhZGVzIGhhc19hZ2VudF9hY2Nlc3MgeSBoYXNfYWdlbnRfcGVybWlzc2lvbiBkZSBsYSByZXNwdWVzdGFcbiAgICAgICAgaWYgKGFnZW50Tm9QZXJtaXNzaW9uICYmICFhZ2VudERlbGV0ZWQpIHtcbiAgICAgICAgICBpZiAoIWhhc0FnZW50QWNjZXNzKSB7XG4gICAgICAgICAgICAvLyBDYXNvIDE6IE5vIHRpZW5lIGFjY2VzbyBhbCBhZ2VudGVcbiAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNZXNzYWdlc10gQlJBTkNIOiBoYXNfbm90X2FjY2VzcyDigJQgaGFzQWdlbnRBY2Nlc3M6JywgaGFzQWdlbnRBY2Nlc3MpXG4gICAgICAgICAgICBzZWxlY3RBZ2VudEZvclNlc3Npb24oe1xuICAgICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICAgIG5hbWU6IGFnZW50Tm9QZXJtaXNzaW9uLm5hbWUsXG4gICAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICAgIGhhc19ub3RfYWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAuLi4oYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyA/IHsgY29ubmVjdG9yczogYWdlbnROb1Blcm1pc3Npb24uY29ubmVjdG9ycyB9IDoge30pLFxuICAgICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzQWdlbnRQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICAvLyBDYXNvIDI6IE5vIHRpZW5lIHBlcm1pc29zIHBhcmEgdmlzdWFsaXphci9pbnRlcmFjdHVhciBjb24gZWwgYWdlbnRlXG4gICAgICAgICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWVzc2FnZXNdIEJSQU5DSDogaGFzX25vdF9wZXJtaXNzaW9ucyDigJQgaGFzQWdlbnRQZXJtaXNzaW9uOicsIGhhc0FnZW50UGVybWlzc2lvbilcbiAgICAgICAgICAgIHNlbGVjdEFnZW50Rm9yU2Vzc2lvbih7XG4gICAgICAgICAgICAgIGlkOiBhZ2VudE5vUGVybWlzc2lvbi5pZCxcbiAgICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgICB0eXBlOiBhZ2VudE5vUGVybWlzc2lvbi50eXBlIGFzICdwbScgfCAnY3VzdG9tJyB8ICdjbG9uZScgfCAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgICAgaGFzX25vdF9wZXJtaXNzaW9uczogdHJ1ZSxcbiAgICAgICAgICAgICAgLi4uKGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgPyB7IGNvbm5lY3RvcnM6IGFnZW50Tm9QZXJtaXNzaW9uLmNvbm5lY3RvcnMgfSA6IHt9KSxcbiAgICAgICAgICAgICAgLi4uKHByb2plY3REZWxldGVkID8geyBwcm9qZWN0X2RlbGV0ZWQ6IHsgbmFtZTogcHJvamVjdERlbGV0ZWQubmFtZSB9IH0gOiB7fSksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSBpZiAocHJvamVjdERlbGV0ZWQpIHtcbiAgICAgICAgICAgIC8vIENhc28gMzogRWwgcHJveWVjdG8gZGUgbGEgY29udmVyc2FjacOzbiBmdWUgZWxpbWluYWRvXG4gICAgICAgICAgICBzZWxlY3RBZ2VudEZvclNlc3Npb24oe1xuICAgICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICAgIG5hbWU6IGFnZW50Tm9QZXJtaXNzaW9uLm5hbWUsXG4gICAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnIHwgJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICAgIC4uLihhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzID8geyBjb25uZWN0b3JzOiBhZ2VudE5vUGVybWlzc2lvbi5jb25uZWN0b3JzIH0gOiB7fSksXG4gICAgICAgICAgICAgIHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHNldENvbnZlcnNhdGlvbkNvbnRleHRGcm9tTWV0YWRhdGEoe1xuICAgICAgICAgIHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrTmFtZUZyb21TZXNzaW9uLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIE1ldGFkYXRhIGRlIGxhIHNlc3Npb24gKGFnZW50X3R5cGUgLyBhZ2VudF9lbnRpdHkgKyBjb250ZXh0bykgcGFyYSBlbCBjYXJ0ZWwgZGVcbiAgICAgICAgLy8gXCJjb250aW51YXIgZW4gdW4gY2hhdCBudWV2b1wiIGRlbCBmb290ZXIgY3VhbmRvIHNlIGFicmUgdW5hIGNvbnZlcnNhY2nDs24gZGUgdW4gY2xvbmUgbGVnYWN5LlxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgICAgIGFnZW50VHlwZTogYWdlbnRUeXBlRnJvbVNlc3Npb24sXG4gICAgICAgICAgICAgIGFnZW50RW50aXR5OiBhZ2VudEVudGl0eUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICAgICAgY2xpZW50TmFtZTogY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgICB0YXNrSWQ6IHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgICAgICB0YXNrTmFtZTogdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFNpIGhheSBwcm95ZWN0byBlbiBsYSBjb252ZXJzYWNpw7NuLCByZWVzY3JpYmlyIFVSTHMgZGUgdGFyZWFzIGNvbiBlbCB0YWIgZGVsIHVzdWFyaW8gKG1lKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdElkTWVzc2FnZSA/IHBhcnNlSW50KFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSwgMTApIDogbnVsbFxuICAgICAgICBsZXQgaXRlbXNUb1NldCA9IGl0ZW1zXG4gICAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgaXRlbXNUb1NldCA9IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KGl0ZW0ubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgLy8gU2kgbGEgc2VzacOzbiBzaWd1ZSBnZW5lcmFuZG8gKHN0cmVhbSBlbiBiYWNrZ3JvdW5kKSwgcmVjb25zdHJ1aW1vcyBlbFxuICAgICAgICAvLyB0YWlsIGVuIHZ1ZWxvIChwcmVndW50YSArIHBsYWNlaG9sZGVyKSBxdWUgYcO6biBubyBlc3TDoSBwZXJzaXN0aWRvIGVuIGVsXG4gICAgICAgIC8vIGJhY2tlbmQsIG1lcmdlw6FuZG9sbyBhbCBoaXN0b3JpYWwgY2FyZ2FkbyBzaW4gZHVwbGljYXIgcG9yIGlkLlxuICAgICAgICBjb25zdCBzZXNzaW9uTWV0YSA9IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKS5nZXRNZXRhKGNoYXRJZClcbiAgICAgICAgbGV0IGZpbmFsTWVzc2FnZXMgPSBpdGVtc1RvU2V0XG4gICAgICAgIGlmIChzZXNzaW9uTWV0YSAmJiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMoc2Vzc2lvbk1ldGEuc3RhdHVzKSkge1xuICAgICAgICAgIGNvbnN0IHRhaWwgPSB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKCkuZ2V0TWVzc2FnZXMoY2hhdElkKVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChpdGVtc1RvU2V0Lm1hcChpdGVtID0+IGl0ZW0uaWQpKVxuICAgICAgICAgIGNvbnN0IGV4dHJhID0gdGFpbC5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGl0ZW0uaWQpKVxuICAgICAgICAgIGlmIChleHRyYS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZpbmFsTWVzc2FnZXMgPSBbLi4uaXRlbXNUb1NldCwgLi4uZXh0cmFdXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udmVyc2F0aW9uTWV0YTogU2Vzc2lvbkNvbnZlcnNhdGlvbk1ldGEgPSB7XG4gICAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZXNzaW9uTWV0YUV2ZW50OiBTZXNzaW9uTWV0YUV2ZW50RGV0YWlsID0ge1xuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICBhZ2VudFR5cGU6IGFnZW50VHlwZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGFnZW50RW50aXR5OiBhZ2VudEVudGl0eUZyb21TZXNzaW9uLFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkOiB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrTmFtZTogdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfVxuXG4gICAgICAgIHNldE1lc3NhZ2VzKGZpbmFsTWVzc2FnZXMpXG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25LZXkgPSBOdW1iZXIobmV4dEl0ZW0pXG4gICAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkocGFnaW5hdGlvbktleSlcbiAgICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSB0cnVlXG5cbiAgICAgICAgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLnNldE1lc3NhZ2VzKHRhcmdldENoYXRJZCwgZmluYWxNZXNzYWdlcylcbiAgICAgICAgdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLnNldFZpZXdDYWNoZSh0YXJnZXRDaGF0SWQsIHtcbiAgICAgICAgICBoeWRyYXRlZEZyb21BcGk6IHRydWUsXG4gICAgICAgICAgbGFzdEV2YWx1YXRlZEtleTogcGFnaW5hdGlvbktleSxcbiAgICAgICAgICBjb252ZXJzYXRpb25NZXRhLFxuICAgICAgICAgIHNlc3Npb25NZXRhRXZlbnQsXG4gICAgICAgICAgYWdlbnRTbmFwc2hvdCxcbiAgICAgICAgfSlcblxuICAgICAgICBtYXJrT3BlbmVkU2Vzc2lvbkFzUmVhZElmVmlzaWJsZSh0YXJnZXRDaGF0SWQpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoc2VxID09PSBsb2FkU2VxUmVmLmN1cnJlbnQgJiYgdGFyZ2V0Q2hhdElkID09PSBjaGF0SWQpIHtcbiAgICAgICAgICBvbkVycm9yPy4oKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoc2VxID09PSBsb2FkU2VxUmVmLmN1cnJlbnQgJiYgdGFyZ2V0Q2hhdElkID09PSBjaGF0SWQpIHtcbiAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZXMoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGNoYXRJZCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBnZXRUYWJUYXNrRGVmYXVsdCxcbiAgICAgIHJlc3RvcmVTZXNzaW9uRnJvbVN0b3JlLFxuICAgICAgc2VsZWN0QWdlbnQsXG4gICAgICBhZ2VudHMsXG4gICAgICB0LFxuICAgICAgaTE4bi5sYW5ndWFnZSxcbiAgICAgIHVzZXJQZXJtaXNzaW9ucz8udmlldyxcbiAgICBdXG4gIClcblxuICBjb25zdCBsb2FkTW9yZU1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoaXNMb2FkaW5nUmVmLmN1cnJlbnQgfHwgIWxhc3RFdmFsdWF0ZWRLZXkgfHwgIWNvbnRhaW5lcikgcmV0dXJuXG4gICAgICB0cnkge1xuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKHRydWUpXG5cbiAgICAgICAgY29uc3Qgb2xkU2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyLnNjcm9sbEhlaWdodFxuICAgICAgICBjb25zdCBvbGRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgIG5leHRJdGVtLFxuICAgICAgICAgIHByb2plY3RJZDogcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICBjbGllbnROYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgdGFza0lkOiB0YXNrSWRGcm9tU2Vzc2lvbixcbiAgICAgICAgICB0YXNrTmFtZTogdGFza05hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICAgIGxhbmc6IG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXdhaXQgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSh7XG4gICAgICAgICAgcHJvamVjdElkTWVzc2FnZSxcbiAgICAgICAgICBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgICAgY2xpZW50TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIHRhc2tOYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgZW4gbG9zIG1lbnNhamVzIGNhcmdhZG9zXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0SWRNZXNzYWdlID8gcGFyc2VJbnQoU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLCAxMCkgOiBudWxsXG4gICAgICAgIGxldCBpdGVtc1RvTWVyZ2UgPSBpdGVtc1xuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KDEpXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGl0ZW1zVG9NZXJnZSA9IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KGl0ZW0ubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMuc2xpY2UoMCwgMSksIC4uLml0ZW1zVG9NZXJnZSwgLi4ubWVzc2FnZXMuc2xpY2UoMSldXG4gICAgICAgIHNldE1lc3NhZ2VzKG5ld01lc3NhZ2VzKVxuICAgICAgICBjb25zdCBwYWdpbmF0aW9uS2V5ID0gTnVtYmVyKG5leHRJdGVtKVxuICAgICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KHBhZ2luYXRpb25LZXkpXG4gICAgICAgIHN5bmNNZXNzYWdlc1RvU3RvcmUoY2hhdElkLCBuZXdNZXNzYWdlcywgcGFnaW5hdGlvbktleSlcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBjb250YWluZXJcbiAgICAgICAgICAgIGlmIChjb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3U2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyUmVmLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHREaWZmZXJlbmNlID0gbmV3U2Nyb2xsSGVpZ2h0IC0gb2xkU2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5zY3JvbGxUb3AgPSBvbGRTY3JvbGxUb3AgKyBoZWlnaHREaWZmZXJlbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uRXJyb3I/LigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMoZmFsc2UpXG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGNoYXRJZCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIGdldFRhYlRhc2tEZWZhdWx0LFxuICAgICAgc2V0Q29udmVyc2F0aW9uQ29udGV4dEZyb21NZXRhZGF0YSxcbiAgICAgIHN5bmNNZXNzYWdlc1RvU3RvcmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWNvbnRhaW5lciB8fCBpc0xvYWRpbmdSZWYuY3VycmVudCB8fCAhaW5pdGlhbExvYWREb25lLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuICAgICAgY29uc3Qgc2Nyb2xsUGVyY2VudGFnZSA9IHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCA+IDAgPyAoc2Nyb2xsVG9wIC8gKHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCkpICogMTAwIDogMFxuXG4gICAgICBpZiAoc2Nyb2xsUGVyY2VudGFnZSA8IDEwKSB7XG4gICAgICAgIGxvYWRNb3JlTWVzc2FnZXMoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2xvYWRNb3JlTWVzc2FnZXNdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGF0SWQgIT09IHByZXZpb3VzQ2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGZyb21DaGF0SWQgPSBwcmV2aW91c0NoYXRJZC5jdXJyZW50XG4gICAgICBjb25zdCBjYW5SZXN0b3JlID0gdXNlU2Vzc2lvbnNTdG9yZS5nZXRTdGF0ZSgpLmNhblJlc3RvcmVTZXNzaW9uKGNoYXRJZClcbiAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNZXNzYWdlc10gc2Vzc2lvbiBzd2l0Y2gnLCB7IGZyb206IGZyb21DaGF0SWQsIHRvOiBjaGF0SWQsIGNhblJlc3RvcmUgfSlcblxuICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcHJldmlvdXNDaGF0SWQuY3VycmVudCA9IGNoYXRJZFxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleSgwKVxuICAgICAgbG9hZFNlcVJlZi5jdXJyZW50ICs9IDFcblxuICAgICAgcmVmZXRjaFRhYlRhc2tEZWZhdWx0KClcblxuICAgICAgY29uc3QgcGVuZGluZ0luaXRpYWxNZXNzYWdlID0gaGFzTWVhbmluZ2Z1bFVzZXJJbml0aWFsTWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UpXG5cbiAgICAgIGlmICghcGVuZGluZ0luaXRpYWxNZXNzYWdlICYmIGNhblJlc3RvcmUpIHtcbiAgICAgICAgcmVzdG9yZVNlc3Npb25Gcm9tU3RvcmUoY2hhdElkKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNZXNzYWdlc10gcmVzdG9yZVNlc3Npb25Gcm9tU3RvcmUgZmFpbGVkJywgZXJyb3IpXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXRNZXNzYWdlcyhcbiAgICAgICAgcGVuZGluZ0luaXRpYWxNZXNzYWdlICYmIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgICAgID8gYnVpbGRJbml0aWFsTWVzc2FnZVBsYWNlaG9sZGVyKHVzZXJJbml0aWFsTWVzc2FnZSwgY3VycmVudFVzZXIpXG4gICAgICAgICAgOiBbXVxuICAgICAgKVxuXG4gICAgICAvLyBMaW1waWFyIGVsIGVzdGFkbyBkZWwgcHJveWVjdG8geSBsYSB0YXJlYSBjdWFuZG8gY2FtYmlhIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuXG4gICAgICBpZiAoIXBlbmRpbmdJbml0aWFsTWVzc2FnZSkge1xuICAgICAgICBsb2FkTWVzc2FnZXMoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGNoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgY3VycmVudFVzZXIsXG4gICAgbG9hZE1lc3NhZ2VzLFxuICAgIHJlc3RvcmVTZXNzaW9uRnJvbVN0b3JlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldFRhc2ssXG4gICAgcmVmZXRjaFRhYlRhc2tEZWZhdWx0LFxuICBdKVxuXG4gIC8vIEN1YW5kbyB0YWJUYXNrRGVmYXVsdCBwYXNhIGEgZXN0YXIgZGlzcG9uaWJsZSBkZXNwdcOpcyBkZSBjYXJnYXIsIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgZW4gbG9zIG1lbnNhamVzIHlhIGNhcmdhZG9zLlxuICAvLyBSZWYgcGFyYSBldml0YXIgYnVjbGU6IHNldE1lc3NhZ2VzKHJld3JpdHRlbikgY2FtYmlhIG1lc3NhZ2VzIHkgcmUtZWplY3V0YSBlbCBlZmVjdG87IHNvbG8gcmVlc2NyaWJpbW9zIHVuYSB2ZXogcG9yIGxvdGUuXG4gIGNvbnN0IGRpZFJld3JpdGVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF0YWJUYXNrRGVmYXVsdCB8fCAhcHJvamVjdD8uaWQgfHwgbWVzc2FnZXMubGVuZ3RoID09PSAwKSByZXR1cm5cbiAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICBjb25zdCB0YWJTZWdtZW50ID0gYC8ke3RhYlRhc2tEZWZhdWx0fWBcbiAgICBjb25zdCBuZWVkc1Jld3JpdGUgPSBtZXNzYWdlcy5zb21lKG1zZyA9PiB7XG4gICAgICBjb25zdCBjb250ZW50ID0gbXNnLm1lc3NhZ2UgfHwgJydcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBjb250ZW50Lm1hdGNoKHRhc2tVcmxSZWdleClcbiAgICAgIGlmICghbWF0Y2hlcz8ubGVuZ3RoKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiBtYXRjaGVzLnNvbWUodXJsID0+ICF1cmwuZW5kc1dpdGgoYC8ke3RhYlRhc2tEZWZhdWx0fWApICYmICF1cmwuaW5jbHVkZXMoYC8ke3RhYlRhc2tEZWZhdWx0fT9gKSlcbiAgICB9KVxuICAgIGlmICghbmVlZHNSZXdyaXRlKSB7XG4gICAgICBkaWRSZXdyaXRlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChkaWRSZXdyaXRlUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IHRydWVcbiAgICBjb25zdCByZXdyaXR0ZW4gPSBtZXNzYWdlcy5tYXAobXNnID0+ICh7XG4gICAgICAuLi5tc2csXG4gICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQobXNnLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgIH0pKVxuICAgIHNldE1lc3NhZ2VzKHJld3JpdHRlbilcbiAgICBzeW5jTWVzc2FnZXNUb1N0b3JlKGNoYXRJZCwgcmV3cml0dGVuKVxuICB9LCBbdGFiVGFza0RlZmF1bHQsIHByb2plY3Q/LmlkLCBtZXNzYWdlcywgY2hhdElkLCBzeW5jTWVzc2FnZXNUb1N0b3JlXSlcblxuICBjb25zdCBhZGRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKG1lc3NhZ2U6IENoYXRNZXNzYWdlKSA9PiB7XG4gICAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlSW5kZXggPSBwcmV2LmZpbmRJbmRleChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlLmlkKVxuXG4gICAgICAgIGlmIChleGlzdGluZ01lc3NhZ2VJbmRleCA+PSAwKSB7XG4gICAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ucHJldl1cbiAgICAgICAgICBuZXdNZXNzYWdlc1tleGlzdGluZ01lc3NhZ2VJbmRleF0gPSBtZXNzYWdlXG4gICAgICAgICAgc3luY01lc3NhZ2VzVG9TdG9yZShjaGF0SWQsIG5ld01lc3NhZ2VzKVxuICAgICAgICAgIHJldHVybiBuZXdNZXNzYWdlc1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld01lc3NhZ2VzID0gWy4uLnByZXYsIG1lc3NhZ2VdXG4gICAgICAgIHN5bmNNZXNzYWdlc1RvU3RvcmUoY2hhdElkLCBuZXdNZXNzYWdlcylcbiAgICAgICAgcmV0dXJuIG5ld01lc3NhZ2VzXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NoYXRJZCwgc3luY01lc3NhZ2VzVG9TdG9yZV1cbiAgKVxuXG4gIGNvbnN0IHJlbW92ZU1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IHByZXYuZmlsdGVyKG1zZyA9PiBtc2cuaWQgIT09IG1lc3NhZ2VJZClcbiAgICAgICAgc3luY01lc3NhZ2VzVG9TdG9yZShjaGF0SWQsIG5ld01lc3NhZ2VzKVxuICAgICAgICByZXR1cm4gbmV3TWVzc2FnZXNcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2hhdElkLCBzeW5jTWVzc2FnZXNUb1N0b3JlXVxuICApXG5cbiAgcmV0dXJuIHtcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgbWVzc2FnZXMsXG4gICAgaGFzTW9yZU1lc3NhZ2VzOiAhIWxhc3RFdmFsdWF0ZWRLZXksXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIGxvYWRNZXNzYWdlcyxcbiAgICBsb2FkTW9yZU1lc3NhZ2VzLFxuICAgIGFkZE1lc3NhZ2UsXG4gICAgcmVtb3ZlTWVzc2FnZSxcbiAgICBoYW5kbGVTY3JvbGwsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsU0FBU0EsV0FB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