@projectcor/maia-components 2.11.56 → 2.11.58-0

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.
Files changed (90) hide show
  1. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +3 -2
  2. package/lib/components/atoms/Backdrop/Backdrop.js +2 -2
  3. package/lib/components/atoms/EntitySelector/EntitySelector.js +17 -9
  4. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +38 -0
  5. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +6 -2
  6. package/lib/components/atoms/Fade/Fade.js +56 -0
  7. package/lib/components/atoms/Fade/index.js +2 -0
  8. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +28 -17
  9. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +44 -0
  10. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +6 -2
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +28 -17
  12. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +43 -0
  13. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +6 -2
  14. package/lib/components/atoms/MAIAInput/MAIAInput.js +4 -2
  15. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +3 -2
  16. package/lib/components/atoms/ModalProject/ModalProject.style.js +3 -2
  17. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +3 -2
  18. package/lib/components/atoms/Skeleton/Skeleton.js +36 -0
  19. package/lib/components/atoms/Skeleton/index.js +2 -0
  20. package/lib/components/atoms/icons/MAIAIsologo.js +51 -9
  21. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  22. package/lib/components/atoms/icons/index.js +2 -1
  23. package/lib/components/atoms/index.js +3 -1
  24. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +3 -1
  25. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +10 -3
  26. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +7 -2
  27. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +20 -10
  28. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +6 -2
  29. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +26 -19
  30. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +64 -35
  31. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +187 -0
  32. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +70 -60
  33. package/lib/components/molecules/ChatAIHistory/styles.js +6 -2
  34. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +17 -22
  35. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +10 -5
  36. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +8 -4
  37. package/lib/components/molecules/ChatAIHome/styles.js +6 -4
  38. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +6 -2
  39. package/lib/components/molecules/ChatAIMessages/newStyles.js +4 -3
  40. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +58 -27
  41. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +2 -1
  42. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +9 -5
  43. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
  44. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +4 -3
  45. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  46. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +10 -6
  47. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +14 -9
  48. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  49. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  50. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  51. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +24 -17
  52. package/lib/components/molecules/Sidebar/Sidebar.js +66 -22
  53. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -5
  54. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +48 -0
  55. package/lib/components/molecules/Sidebar/Sidebar.styles.js +20 -13
  56. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +9 -2
  57. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +8 -3
  58. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  59. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  60. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  61. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  62. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  63. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  64. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +3 -2
  65. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
  66. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +3 -2
  67. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +3 -2
  68. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +3 -2
  69. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +3 -2
  70. package/lib/hooks/useChatManager/useChatManager.js +9 -5
  71. package/lib/hooks/useChatMessages/useChatMessages.js +32 -10
  72. package/lib/hooks/useEntitySearch.js +15 -4
  73. package/lib/hooks/useMentionAllowedTypes.js +13 -29
  74. package/lib/lang/br/index.js +48 -1
  75. package/lib/lang/en/index.js +48 -1
  76. package/lib/lang/es/index.js +48 -1
  77. package/lib/lang/fr/index.js +48 -1
  78. package/lib/services/maia/Agents/getAgents.js +155 -135
  79. package/lib/services/maia/Chats/getChatMessages.js +28 -4
  80. package/lib/services/maia/Skills/createSkill.js +39 -0
  81. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  82. package/lib/services/maia/Skills/generateSkill.js +41 -0
  83. package/lib/services/maia/Skills/getSkills.js +90 -0
  84. package/lib/services/maia/Skills/updateSkill.js +39 -0
  85. package/lib/store/useChatsStore.js +2 -4
  86. package/lib/styles/cascade.js +14 -0
  87. package/lib/styles/transitions.js +21 -0
  88. package/lib/types/Chat.js +1 -1
  89. package/lib/types/skill.js +2 -0
  90. package/package.json +1 -1
@@ -319,7 +319,7 @@ var mapMcpSlugsToItems = function mapMcpSlugsToItems(slugs, searchValue) {
319
319
  });
320
320
  };
321
321
  export var useEntitySearch = function useEntitySearch(type, scope) {
322
- var _scope$mcpSlugs;
322
+ var _scope$mcpSlugs, _stableScope$projectI, _stableScope$clientId, _stableScope$agentEnt;
323
323
  var corUser = useUser();
324
324
  var _useT = useT(),
325
325
  t = _useT.t;
@@ -1075,12 +1075,23 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
1075
1075
  }, _callee2, null, [[2, 15, 17, 18]]);
1076
1076
  })), [isLoadingMore, hasMore, currentPage, activePaginationSource, debouncedSearchValue, fetchUsersDirectory, fetchSearchClients, fetchTaskFamilyFallback, fetchProjectsFallback, stableScope.projectId, stableScope.clientId, showProjectNameInTaskRow, corUser, t, syncClientsPagination, syncUsersPagination, syncTaskFallbackPagination, syncProjectFallbackPagination]);
1077
1077
 
1078
+ // Mantenemos una ref a la última fetchRecent para que el effect de recents no se
1079
+ // re-dispare solo porque cambió la identidad de fetchRecent (scope/corUser/t).
1080
+ var fetchRecentRef = useRef(fetchRecent);
1081
+ useEffect(function () {
1082
+ fetchRecentRef.current = fetchRecent;
1083
+ }, [fetchRecent]);
1084
+
1085
+ // Trigger de recents: los recents de user NO dependen del scope, así que cambiar
1086
+ // de proyecto/cliente no debe re-fetchearlos. Los tipos scopeados (project/task) sí.
1087
+ var recentsTrigger = type === 'user' ? 'user' : "".concat(type, "|").concat((_stableScope$projectI = stableScope.projectId) !== null && _stableScope$projectI !== void 0 ? _stableScope$projectI : '', "|").concat((_stableScope$clientId = stableScope.clientId) !== null && _stableScope$clientId !== void 0 ? _stableScope$clientId : '', "|").concat((_stableScope$agentEnt = stableScope.agentEntity) !== null && _stableScope$agentEnt !== void 0 ? _stableScope$agentEnt : '', "|").concat(mcpSlugsKey);
1088
+
1078
1089
  // Cuando se limpia el search, volver a recents
1079
1090
  useEffect(function () {
1080
1091
  if (!debouncedSearchValue.trim()) {
1081
- fetchRecent();
1092
+ fetchRecentRef.current();
1082
1093
  }
1083
- }, [debouncedSearchValue, fetchRecent]);
1094
+ }, [debouncedSearchValue, recentsTrigger]);
1084
1095
  return {
1085
1096
  items: items,
1086
1097
  loading: loading,
@@ -1094,4 +1105,4 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
1094
1105
  fetchRecent: fetchRecent
1095
1106
  };
1096
1107
  };
1097
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudENsaWVudHMiLCJnZXRSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwidXNlVCIsIm5vcm1hbGl6ZVBvc2l0aXZlSW50IiwidmFsdWUiLCJmYWxsYmFjayIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwibm9ybWFsaXplZCIsIk1hdGgiLCJmbG9vciIsIkJBU0VfRklMVEVSU19CWV9UWVBFIiwicHJvamVjdCIsImFyY2hpdmVkIiwidGFzayIsImJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyIsInNjb3BlIiwicmF3Q2xpZW50IiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJyYXdQcm9qZWN0IiwicHJvamVjdElkIiwiYWdlbnRFbnRpdHkiLCJlbnRyaWVzIiwicHVzaENsaWVudCIsInB1c2giLCJwdXNoUHJvamVjdCIsImJ1aWxkVGFza1NlYXJjaEV4dHJhIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhIiwiYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhIiwidHlwZSIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsInEiLCJiYXNlIiwid2l0aFBvc2l0aW9uIiwid2l0aFRlYW1zIiwidHJpbW1lZFEiLCJ0cmltIiwic2VhcmNoSW5wdXQiLCJoaWdobGlnaHRSYW5nZSIsInRleHQiLCJzZWFyY2hWYWx1ZSIsImlkeCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInN0YXJ0IiwiZmlyc3REZWZpbmVkIiwiX2xlbiIsImFyZ3VtZW50cyIsInZhbHVlcyIsIkFycmF5IiwiX2tleSIsImZpbmQiLCJub3JtYWxpemVUcmltbWVkU3RyaW5nIiwiZ2V0VXNlclBvc2l0aW9uTmFtZSIsInVzZXJQb3NpdGlvbiIsIl90eXBlb2YiLCJuYW1lIiwibWFwQ2xpZW50VG9JdGVtIiwiYyIsIl9jJHRvdGFsUHJveWVjdG9zIiwiX2MkdG90YWxQcm95ZWN0b3MyIiwiaWQiLCJwcmltYXJ5IiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJjb3VudCIsInRvdGFsUHJveWVjdG9zIiwiY291bnRMYWJlbCIsInJhdyIsIm1hcFVzZXJUb0l0ZW0iLCJ1IiwiX3UkZmlyc3ROYW1lIiwiX3UkbGFzdE5hbWUiLCJfdSRwaWN0dXJlIiwiX3UkdXNlclBvc2l0aW9uJG5hbWUiLCJfdSR1c2VyUG9zaXRpb24iLCJfdSRlbWFpbCIsImZ1bGxOYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJtYXBDb3JVc2VyVG9Vc2VySXRlbSIsInVzZXIiLCJtZUxhYmVsIiwiX3VzZXIkZmlyc3ROYW1lIiwiX3VzZXIkbGFzdE5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ1c2VyX3Bvc2l0aW9uIiwibWFwUmVjZW50VGFza1RvSXRlbSIsIl90YXNrJHByb2plY3ROYW1lIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwidGl0bGUiLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsIm5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQiLCJyZWNvcmQiLCJfcmVjb3JkJHRpdGxlIiwiX2ZpcnN0RGVmaW5lZCIsIl9yZWNvcmQkcHJvamVjdCIsIl9yZWNvcmQkZmF0aGVyIiwiX3JlY29yZCRmYXRoZXIyIiwidGFza0ZhbWlseUlkIiwiX2lkIiwiZmF0aGVyIiwiaGFzRmF0aGVyIiwidGFza0ZhdGhlciIsIm5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQiLCJfcmVjb3JkJG5hbWUiLCJfZmlyc3REZWZpbmVkMiIsIl9yZWNvcmQkY2xpZW50IiwiX3JlY29yZCRjbGllbnQkbmFtZSIsIl9yZWNvcmQkY2xpZW50MiIsImNsaWVudCIsImNsaWVudE5hbWUiLCJtYXBTZWFyY2hUb0l0ZW0iLCJyIiwiX3IkcHJvamVjdE5hbWUiLCJfciRwcm9qZWN0TmFtZTIiLCJfciRjbGllbnRJZCIsIl9yJGNsaWVudE5hbWUiLCJfciRmZWVJZCIsIl9mYXRoZXIkdGl0bGUiLCJ0YXNrUHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJmb3JtYXRNY3BQcmltYXJ5TGFiZWwiLCJzbHVnIiwicmVwbGFjZSIsImNoYXIiLCJ0b1VwcGVyQ2FzZSIsIm1hcE1jcFNsdWdzVG9JdGVtcyIsInNsdWdzIiwiZmlsdGVyZWQiLCJmaWx0ZXIiLCJzIiwiaW5jbHVkZXMiLCJtYXAiLCJ1c2VFbnRpdHlTZWFyY2giLCJfc2NvcGUkbWNwU2x1Z3MiLCJjb3JVc2VyIiwiX3VzZVQiLCJ0IiwicmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldFNlYXJjaFZhbHVlIiwiZGVib3VuY2VkU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIml0ZW1zIiwic2V0SXRlbXMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJoaWRlUmVjZW50c0xhYmVsIiwic2V0SGlkZVJlY2VudHNMYWJlbCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImhhc01vcmUiLCJzZXRIYXNNb3JlIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImlzTG9hZGluZ01vcmUiLCJzZXRJc0xvYWRpbmdNb3JlIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImN1cnJlbnRQYWdlIiwic2V0Q3VycmVudFBhZ2UiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiYWN0aXZlUGFnaW5hdGlvblNvdXJjZSIsInNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UiLCJtY3BTbHVnc0tleSIsIm1jcFNsdWdzIiwiam9pbiIsInN0YWJsZVNjb3BlIiwiX3Njb3BlJGNsaWVudElkIiwiX3Njb3BlJHByb2plY3RJZCIsIl9zY29wZSRtY3BTbHVnczIiLCJfc2NvcGUkYWdlbnRFbnRpdHkiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJmZXRjaFBvbGljeSIsIl91c2VMYXp5UXVlcnkyIiwiZmV0Y2hTZWFyY2hFbnRpdGllcyIsIl91c2VMYXp5UXVlcnkyJCIsInNlYXJjaERhdGEiLCJkYXRhIiwic2VhcmNoTG9hZGluZyIsInNlYXJjaEVycm9yIiwiX3VzZUxhenlRdWVyeTMiLCJfdXNlTGF6eVF1ZXJ5NCIsImZldGNoU2VhcmNoQ2xpZW50cyIsIl91c2VMYXp5UXVlcnk0JCIsImNsaWVudHNEYXRhIiwiY2xpZW50c0xvYWRpbmciLCJjbGllbnRzRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5NSIsIl91c2VMYXp5UXVlcnk2IiwiZmV0Y2hVc2Vyc0RpcmVjdG9yeSIsIl91c2VMYXp5UXVlcnk2JCIsInVzZXJzRGF0YSIsInVzZXJzTG9hZGluZyIsInVzZXJzRXJyb3IiLCJzeW5jVXNlcnNQYWdpbmF0aW9uIiwicGF5bG9hZCIsIl9wYXlsb2FkJHVzZXJzIiwiX3BheWxvYWQkdXNlcnMyIiwicGFnZSIsInVzZXJzIiwibGFzdFBhZ2UiLCJzeW5jQ2xpZW50c1BhZ2luYXRpb24iLCJfcGF5bG9hZCRjbGllbnRzIiwiX3BheWxvYWQkY2xpZW50czIiLCJjbGllbnRzIiwic3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24iLCJfcGF5bG9hZCR0YXNrRmFtaWx5IiwiX3BheWxvYWQkdGFza0ZhbWlseTIiLCJyYXdQYWdlIiwidGFza0ZhbWlseSIsInN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uIiwiX3BheWxvYWQkcHJvamVjdHMiLCJfcGF5bG9hZCRwcm9qZWN0czIiLCJwcm9qZWN0cyIsIl91c2VMYXp5UXVlcnk3IiwiX3VzZUxhenlRdWVyeTgiLCJmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayIsIl91c2VMYXp5UXVlcnk5IiwiX3VzZUxhenlRdWVyeTAiLCJmZXRjaFByb2plY3RzRmFsbGJhY2siLCJmZXRjaFJlY2VudCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZ2VuZXJhdGlvbiIsIl9zdGFibGVTY29wZSRtY3BTbHVncyIsIm1hcHBlZCIsIl9kYXRhIiwiX21hcHBlZCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdDIiLCJhcmd1bWVudHNGaWx0ZXIiLCJfeWllbGQkZmV0Y2hQcm9qZWN0c0YiLCJmYWxsYmFja0RhdGEiLCJmYWxsYmFja01hcHBlZCIsInJlY2VudFRhc2tGaWx0ZXJzIiwiX2RhdGEyIiwidGFza0l0ZW1zIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtMiIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbCIsIl9mYWxsYmFja0RhdGEiLCJfZGF0YTMkdXNlcnMkZGF0YSIsIl9kYXRhMyR1c2VycyIsIl95aWVsZCRmZXRjaFVzZXJzRGlyZSIsIl9kYXRhMyIsIl9tYXBwZWQyIiwibWVJdGVtIiwid2l0aG91dE1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJzZW50IiwiaXNBcnJheSIsInAiLCJjbGllbnRfaWQiLCJfb2JqZWN0U3ByZWFkIiwicGVyUGFnZSIsIml0ZW0iLCJwcm9qZWN0SWRzIiwiY2xpZW50SWRzIiwicGFnaW5hdGlvbiIsIm9mZnNldCIsInNpemUiLCJmaWx0ZXJzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmluaXNoIiwic3RvcCIsIl9zdGFibGVTY29wZSRtY3BTbHVnczIiLCJleHRyYSIsIl9jbGllbnRzRGF0YSRjbGllbnRzIiwiX3VzZXJzRGF0YSR1c2VycyIsIm1lSWQiLCJoYXNNZUluUmVzdWx0cyIsInNvbWUiLCJzZWFyY2giLCJsb2FkTW9yZSIsIl9jYWxsZWUyIiwic2FmZUN1cnJlbnRQYWdlIiwibmV4dFBhZ2UiLCJsb2FkTW9yZUJhc2VsaW5lR2VuIiwiX2RhdGEkdXNlcnMkZGF0YSIsIl9kYXRhJHVzZXJzIiwiX3lpZWxkJGZldGNoVXNlcnNEaXJlMiIsIm5leHRJdGVtcyIsIl9kYXRhNCRjbGllbnRzJGRhdGEiLCJfZGF0YTQkY2xpZW50cyIsIl95aWVsZCRmZXRjaFNlYXJjaENsaSIsIl9kYXRhNCIsIl9uZXh0SXRlbXMiLCJfZGF0YTUkdGFza0ZhbWlseSRkYXQiLCJfZGF0YTUkdGFza0ZhbWlseSIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbDIiLCJfZGF0YTUiLCJfbmV4dEl0ZW1zMiIsIl9kYXRhNiRwcm9qZWN0cyRkYXRhIiwiX2RhdGE2JHByb2plY3RzIiwiX3lpZWxkJGZldGNoUHJvamVjdHNGMiIsIl9kYXRhNiIsIl9uZXh0SXRlbXMzIiwiX3QyIiwiX2NvbnRleHQyIiwiX3ByZXYkIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJhcHBlbmRlZCIsImhhcyIsImNvbnNvbGUiLCJzb3VyY2UiLCJ1cGRhdGVTZWFyY2hWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VFbnRpdHlTZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTGF6eVF1ZXJ5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBnZXRSZWNlbnRDbGllbnRzIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRDbGllbnRzL2dldFJlY2VudENsaWVudHMnXG5pbXBvcnQgeyBnZXRSZWNlbnRQcm9qZWN0cyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50UHJvamVjdHMvZ2V0UmVjZW50UHJvamVjdHMnXG5pbXBvcnQgeyBnZXRSZWNlbnRUYXNrcyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50VGFza3MvZ2V0UmVjZW50VGFza3MnXG5pbXBvcnQgdHlwZSB7IFJlY2VudFRhc2tJdGVtIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRUYXNrcy9nZXRSZWNlbnRUYXNrcydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgUFJPSkVDVFNfRkFMTEJBQ0ssIFNFQVJDSF9FTlRJVElFUywgVEFTS19GQU1JTFlfRkFMTEJBQ0sgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS9lbnRpdHlTZWFyY2hRdWVyeSdcbmltcG9ydCB7IFNFQVJDSF9DTElFTlRTIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvQ2xpZW50U2VhcmNoUXVlcnknXG5pbXBvcnQgeyBVU0VSU19ESVJFQ1RPUlkgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS91c2Vyc0RpcmVjdG9yeVF1ZXJ5J1xuaW1wb3J0IHsgU0VBUkNIX1FVRVJZX0RFQk9VTkNFX01TIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IHVzZURlYm91bmNlIH0gZnJvbSAnLi91c2VEZWJvdW5jZSdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuL3VzZVQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb25JdGVtIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgdHlwZSB7IEFnZW50RW50aXR5IH0gZnJvbSAnLi4vdHlwZXMvYWdlbnQnXG5cbnR5cGUgUmF3U2VhcmNoUmVzdWx0ID0ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIHRpdGxlOiBzdHJpbmdcbiAgdHlwZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlciB8IHN0cmluZyB8IG51bGxcbiAgZmVlSWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGNsaWVudE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIHByb2plY3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBmYXRoZXI/OiB7IGlkOiBzdHJpbmcgfCBudW1iZXI7IHRpdGxlPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbFxufVxuXG50eXBlIFJhd0NsaWVudCA9IHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgdG90YWxQcm95ZWN0b3M/OiBudW1iZXIgfCBudWxsXG59XG5cbnR5cGUgUmF3RGlyZWN0b3J5VXNlciA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICBmaXJzdE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGxhc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBlbWFpbD86IHN0cmluZyB8IG51bGxcbiAgcGljdHVyZT86IHN0cmluZyB8IG51bGxcbiAgdXNlclBvc2l0aW9uPzogeyBuYW1lPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEVudGl0aWVzRGF0YSA9IHsgc2VhcmNoOiBSYXdTZWFyY2hSZXN1bHRbXSB8IG51bGwgfVxudHlwZSBTZWFyY2hDbGllbnRzRGF0YSA9IHtcbiAgY2xpZW50czoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhOiBSYXdDbGllbnRbXVxuICB9IHwgbnVsbFxufVxudHlwZSBVc2Vyc0RpcmVjdG9yeURhdGEgPSB7XG4gIHVzZXJzOiB7XG4gICAgdG90YWw/OiBudW1iZXIgfCBudWxsXG4gICAgcGVyUGFnZT86IG51bWJlciB8IG51bGxcbiAgICBwYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGxhc3RQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGRhdGE6IFJhd0RpcmVjdG9yeVVzZXJbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBUYXNrRmFtaWx5UmVjb3JkID0ge1xuICBfaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHRpdGxlPzogc3RyaW5nIHwgbnVsbFxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHRhc2tGYXRoZXI/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIGZhdGhlcj86IHsgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsOyB0aXRsZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbiAgcHJvamVjdD86IHsgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsOyBuYW1lPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbFxufVxuXG50eXBlIFRhc2tGYW1pbHlEYXRhID0ge1xuICB0YXNrRmFtaWx5Pzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogVGFza0ZhbWlseVJlY29yZFtdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG50eXBlIEZhbGxiYWNrUHJvamVjdFJlY29yZCA9IHtcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIG5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBjbGllbnQ/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBQcm9qZWN0c0ZhbGxiYWNrRGF0YSA9IHtcbiAgcHJvamVjdHM/OiB7XG4gICAgdG90YWw/OiBudW1iZXIgfCBudWxsXG4gICAgcGVyUGFnZT86IG51bWJlciB8IG51bGxcbiAgICBwYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGxhc3RQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGRhdGE/OiBGYWxsYmFja1Byb2plY3RSZWNvcmRbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBQYWdpbmF0aW9uU291cmNlID0gJ25vbmUnIHwgJ3VzZXJzJyB8ICdjbGllbnRzLXNlYXJjaCcgfCAndGFzay1mYWxsYmFjaycgfCAncHJvamVjdC1mYWxsYmFjaydcblxuY29uc3Qgbm9ybWFsaXplUG9zaXRpdmVJbnQgPSAodmFsdWU6IHVua25vd24sIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkpIHJldHVybiBmYWxsYmFja1xuICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5mbG9vcihwYXJzZWQpXG4gIHJldHVybiBub3JtYWxpemVkID4gMCA/IG5vcm1hbGl6ZWQgOiBmYWxsYmFja1xufVxuXG4vKipcbiAqIFJlc3RyaW5nZSBsb3MgcmVzdWx0YWRvcyBhbCBgY2xpZW50SWRgL2Bwcm9qZWN0SWRgIGRlbCBhZ2VudGUgYWN0aXZvLlxuICogQ3VhbmRvIGVsIGFnZW50ZSBlc3TDoSBzY29wZWFkbyBhIHVuIGNsaWVudC9wcm9qZWN0LCB0YW50byBsb3MgcmVjZW50cyBjb21vXG4gKiBlbCBzZWFyY2ggZGViZW4gZmlsdHJhciBwb3IgZXNlIGNvbnRleHRvLiBTaSBlbCBiYWNrZW5kIG5vIGVudGllbmRlIGFsZ8O6blxuICogY2FtcG8gbG8gaWdub3JhIHkgc2UgY2FlIGFsIGNvbXBvcnRhbWllbnRvIGdsb2JhbC5cbiAqL1xuZXhwb3J0IHR5cGUgRW50aXR5U2VhcmNoU2NvcGUgPSB7XG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIC8qKiBTbHVncyBkZWwgY29uZWN0b3IgTUNQIGRlbCBhZ2VudGUgKGxpc3RhZG8gbG9jYWwsIHNpbiBHcmFwaFFMKS4gKi9cbiAgbWNwU2x1Z3M/OiBzdHJpbmdbXVxuICAvKipcbiAgICogYGVudGl0eWAgZGVsIGFnZW50ZSBhY3Rpdm8uIFBhcmEgZXNwZWNpYWxpc3RhczpcbiAgICogLSBgcHJvamVjdGA6IGLDunNxdWVkYSBkZSB0YXJlYXMgZnVlcnphIGZpbHRybyBwb3IgYHByb2plY3RJZGAgZGVsIGNvbnRleHRvLlxuICAgKiAtIGBjbGllbnRgOiBiw7pzcXVlZGEgZGUgcHJveWVjdG9zIHBvciBgY2xpZW50SWRgOyB0YXJlYXMgcG9yIGNsaWVudGUgKHkgcHJveWVjdG8gc2kgYXBsaWNhKS5cbiAgICovXG4gIGFnZW50RW50aXR5PzogQWdlbnRFbnRpdHkgfCBudWxsXG59XG5cbnR5cGUgU2VhcmNoRmlsdGVyYWJsZVR5cGUgPSAncHJvamVjdCcgfCAndGFzaydcblxuY29uc3QgQkFTRV9GSUxURVJTX0JZX1RZUEU6IFJlY29yZDxTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gIHByb2plY3Q6IHsgcHJvamVjdDogJ3RydWUnLCBhcmNoaXZlZDogJ2FsbCcgfSxcbiAgdGFzazogeyB0YXNrOiAndHJ1ZScsIGFyY2hpdmVkOiAnZmFsc2UnIH0sXG59XG5cbi8qKlxuICogRW50cmFkYXMgcGFyYSBlbCBhcmd1bWVudG8gR3JhcGhRTCBgZXh0cmFgIChKU09OIHN0cmluZyBkZSBhcnJheSkgYWwgYnVzY2FyIHRhcmVhcyBjb24gY29udGV4dG8uXG4gKiBFai46IFt7XCJwcm9qZWN0SWRcIjpcIjg4MTU1MlwifV1cbiAqL1xuY29uc3QgYnVpbGRUYXNrU2VhcmNoRXh0cmFFbnRyaWVzID0gKHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9PiB7XG4gIGNvbnN0IHJhd0NsaWVudCA9XG4gICAgc2NvcGU/LmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc2NvcGU/LmNsaWVudElkICE9PSBudWxsICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gJycgPyBTdHJpbmcoc2NvcGUuY2xpZW50SWQpIDogbnVsbFxuICBjb25zdCByYXdQcm9qZWN0ID1cbiAgICBzY29wZT8ucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gbnVsbCAmJiBzY29wZT8ucHJvamVjdElkICE9PSAnJ1xuICAgICAgPyBTdHJpbmcoc2NvcGUucHJvamVjdElkKVxuICAgICAgOiBudWxsXG5cbiAgY29uc3QgYWdlbnRFbnRpdHkgPSBzY29wZT8uYWdlbnRFbnRpdHlcbiAgY29uc3QgZW50cmllczogQXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSBbXVxuXG4gIGNvbnN0IHB1c2hDbGllbnQgPSAoKSA9PiB7XG4gICAgaWYgKHJhd0NsaWVudCkgZW50cmllcy5wdXNoKHsgY2xpZW50SWQ6IHJhd0NsaWVudCB9KVxuICB9XG4gIGNvbnN0IHB1c2hQcm9qZWN0ID0gKCkgPT4ge1xuICAgIGlmIChyYXdQcm9qZWN0KSBlbnRyaWVzLnB1c2goeyBwcm9qZWN0SWQ6IHJhd1Byb2plY3QgfSlcbiAgfVxuXG4gIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgaWYgKHJhd1Byb2plY3QpIHtcbiAgICAgIHB1c2hQcm9qZWN0KClcbiAgICB9IGVsc2UgaWYgKHJhd0NsaWVudCkge1xuICAgICAgcHVzaENsaWVudCgpXG4gICAgfVxuICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAnY2xpZW50Jykge1xuICAgIHB1c2hDbGllbnQoKVxuICAgIHB1c2hQcm9qZWN0KClcbiAgfSBlbHNlIHtcbiAgICBwdXNoQ2xpZW50KClcbiAgICBwdXNoUHJvamVjdCgpXG4gIH1cblxuICByZXR1cm4gZW50cmllc1xufVxuXG5jb25zdCBidWlsZFRhc2tTZWFyY2hFeHRyYSA9IChzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgZW50cmllcyA9IGJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyhzY29wZSlcbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShlbnRyaWVzKVxufVxuXG4vKipcbiAqIFRhYiBwcm95ZWN0bzogY29uIGBjbGllbnRJZGAgZW4gZWwgc2NvcGUsIGBleHRyYWAgYWNvdGEgbGEgYsO6c3F1ZWRhIGEgcHJveWVjdG9zIGRlIGVzZSBjbGllbnRlLlxuICogRWouOiBgW3tcImNsaWVudElkXCI6XCI0NzEwNVwifV1gIGp1bnRvIGEgYGZpbHRlcnNgIGB7XCJwcm9qZWN0XCI6XCJ0cnVlXCIsXCJhcmNoaXZlZFwiOlwiYWxsXCJ9YC5cbiAqL1xuY29uc3QgYnVpbGRQcm9qZWN0U2VhcmNoRXh0cmEgPSAoc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHJhd0NsaWVudCA9XG4gICAgc2NvcGU/LmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc2NvcGU/LmNsaWVudElkICE9PSBudWxsICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gJycgPyBTdHJpbmcoc2NvcGUuY2xpZW50SWQpIDogbnVsbFxuICBpZiAoIXJhd0NsaWVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoW3sgY2xpZW50SWQ6IHJhd0NsaWVudCB9XSlcbn1cblxuY29uc3QgYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhID0gKHR5cGU6IFNlYXJjaEZpbHRlcmFibGVUeXBlLCBzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKHR5cGUgPT09ICd0YXNrJykgcmV0dXJuIGJ1aWxkVGFza1NlYXJjaEV4dHJhKHNjb3BlKVxuICBpZiAodHlwZSA9PT0gJ3Byb2plY3QnKSByZXR1cm4gYnVpbGRQcm9qZWN0U2VhcmNoRXh0cmEoc2NvcGUpXG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBUYWIgYHRhc2tgIC8gYHByb2plY3RgOiBgZmlsdGVyc2Agc8OzbG8gdGlwbyArIGFyY2hpdmVkICh0YXJlYXM6IG5vIGFyY2hpdmFkYXMpOyBzY29wZSAoY2xpZW50SWQgLyBwcm9qZWN0SWQgZW4gdGFyZWFzKSBlbiBgZXh0cmFgLlxuICovXG5jb25zdCBidWlsZEZpbHRlcnNGb3JUeXBlID0gKHR5cGU6IFNlYXJjaEZpbHRlcmFibGVUeXBlKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShCQVNFX0ZJTFRFUlNfQllfVFlQRS5wcm9qZWN0KVxuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShCQVNFX0ZJTFRFUlNfQllfVFlQRS50YXNrKVxufVxuXG4vKipcbiAqIEZpbHRyb3MgcGFyYSBsYSBxdWVyeSB1c2Vycy4gRWwgYmFja2VuZCBlc3BlcmEgdW4gSlNPTiBzdHJpbmcgY29uXG4gKiB3aXRoUG9zaXRpb24sIHdpdGhUZWFtcyB5IHNlYXJjaElucHV0LiBMZSBhZ3JlZ2Ftb3MgY2xpZW50SWQvcHJvamVjdElkXG4gKiBkZWwgc2NvcGUgZW4gY2FzbyBkZSBxdWUgZWwgYmFja2VuZCBsb3MgYXByb3ZlY2hlIHBhcmEgZmlsdHJhciBwb3JcbiAqIGNvbnRleHRvIChzaSBubyBsb3MgZW50aWVuZGUgbG9zIGlnbm9yYSkuXG4gKi9cbmNvbnN0IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzID0gKHE6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGJhc2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIHdpdGhQb3NpdGlvbjogdHJ1ZSxcbiAgICB3aXRoVGVhbXM6IHRydWUsXG4gIH1cbiAgY29uc3QgdHJpbW1lZFEgPSBxLnRyaW0oKVxuICBpZiAodHJpbW1lZFEpIHtcbiAgICBiYXNlLnNlYXJjaElucHV0ID0gdHJpbW1lZFFcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYmFzZSlcbn1cblxuY29uc3QgaGlnaGxpZ2h0UmFuZ2UgPSAodGV4dDogc3RyaW5nLCBzZWFyY2hWYWx1ZTogc3RyaW5nKSA9PiB7XG4gIGlmICghc2VhcmNoVmFsdWUpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3QgaWR4ID0gdGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKGlkeCA8IDApIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIHsgc3RhcnQ6IGlkeCwgbGVuZ3RoOiBzZWFyY2hWYWx1ZS5sZW5ndGggfVxufVxuXG5jb25zdCBmaXJzdERlZmluZWQgPSA8VD4oLi4udmFsdWVzOiBBcnJheTxUIHwgbnVsbCB8IHVuZGVmaW5lZD4pOiBUIHwgdW5kZWZpbmVkID0+XG4gIHZhbHVlcy5maW5kKHZhbHVlID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpXG5cbmNvbnN0IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuICcnXG4gIHJldHVybiB2YWx1ZS50cmltKClcbn1cblxuY29uc3QgZ2V0VXNlclBvc2l0aW9uTmFtZSA9ICh1c2VyUG9zaXRpb246IFJldHVyblR5cGU8dHlwZW9mIHVzZVVzZXI+Wyd1c2VyX3Bvc2l0aW9uJ10pOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIHVzZXJQb3NpdGlvbiA9PT0gJ3N0cmluZycpIHJldHVybiB1c2VyUG9zaXRpb24udHJpbSgpXG4gIGlmICh1c2VyUG9zaXRpb24gJiYgdHlwZW9mIHVzZXJQb3NpdGlvbiA9PT0gJ29iamVjdCcgJiYgJ25hbWUnIGluIHVzZXJQb3NpdGlvbikge1xuICAgIHJldHVybiBub3JtYWxpemVUcmltbWVkU3RyaW5nKHVzZXJQb3NpdGlvbi5uYW1lKVxuICB9XG4gIHJldHVybiAnJ1xufVxuXG5jb25zdCBtYXBDbGllbnRUb0l0ZW0gPSAoYzogUmF3Q2xpZW50LCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogQ29udGV4dE1lbnRpb25JdGVtID0+ICh7XG4gIGlkOiBjLmlkLFxuICB0eXBlOiAnY2xpZW50JyxcbiAgcHJpbWFyeTogYy5uYW1lLFxuICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShjLm5hbWUsIHNlYXJjaFZhbHVlKSxcbiAgYnJlYWRjcnVtYjoge1xuICAgIGNvdW50OiBjLnRvdGFsUHJveWVjdG9zID8/IHVuZGVmaW5lZCxcbiAgICBjb3VudExhYmVsOiAncHJvamVjdHMnLFxuICB9LFxuICByYXc6IHtcbiAgICBpZDogYy5pZCxcbiAgICBuYW1lOiBjLm5hbWUsXG4gICAgdG90YWxQcm95ZWN0b3M6IGMudG90YWxQcm95ZWN0b3MgPz8gbnVsbCxcbiAgfSxcbn0pXG5cbmNvbnN0IG1hcFVzZXJUb0l0ZW0gPSAodTogUmF3RGlyZWN0b3J5VXNlciwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiB7XG4gIGNvbnN0IGZ1bGxOYW1lID0gYCR7dS5maXJzdE5hbWUgPz8gJyd9ICR7dS5sYXN0TmFtZSA/PyAnJ31gLnRyaW0oKVxuICBjb25zdCBwcmltYXJ5ID0gZnVsbE5hbWUgfHwgdS5lbWFpbCB8fCBTdHJpbmcodS5pZClcblxuICByZXR1cm4ge1xuICAgIGlkOiB1LmlkLFxuICAgIHR5cGU6ICd1c2VyJyxcbiAgICBwcmltYXJ5LFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHByaW1hcnksIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiB1LmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIHBpY3R1cmU6IHUucGljdHVyZSA/PyBudWxsLFxuICAgICAgcG9zaXRpb25OYW1lOiB1LnVzZXJQb3NpdGlvbj8ubmFtZSA/PyBudWxsLFxuICAgICAgZW1haWw6IHUuZW1haWwgPz8gbnVsbCxcbiAgICB9LFxuICB9XG59XG5cbmNvbnN0IG1hcENvclVzZXJUb1VzZXJJdGVtID0gKFxuICB1c2VyOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VVc2VyPixcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyxcbiAgbWVMYWJlbDogc3RyaW5nXG4pOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke3VzZXIuZmlyc3ROYW1lID8/ICcnfSAke3VzZXIubGFzdE5hbWUgPz8gJyd9YC50cmltKClcbiAgLyoqIFNvbG8gY2FyZ28gcmVhbDsgc2luIGZhbGxiYWNrIGEgYHJvbGVgIChsYSBVSSBtdWVzdHJhIOKAnFNpbiBwb3NpY2nDs27igJ0gc2kgZmFsdGEpLiAqL1xuICBjb25zdCBwb3NpdGlvbkxpbmUgPSBnZXRVc2VyUG9zaXRpb25OYW1lKHVzZXIudXNlcl9wb3NpdGlvbikgfHwgbnVsbFxuICBjb25zdCBlbWFpbCA9IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcodXNlci5lbWFpbCkgfHwgbnVsbFxuXG4gIHJldHVybiB7XG4gICAgaWQ6IHVzZXIuaWQsXG4gICAgdHlwZTogJ3VzZXInLFxuICAgIHByaW1hcnk6IG1lTGFiZWwsXG4gICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UobWVMYWJlbCwgc2VhcmNoVmFsdWUpLFxuICAgIHJhdzoge1xuICAgICAgaWQ6IHVzZXIuaWQsXG4gICAgICBuYW1lOiBmdWxsTmFtZSB8fCBTdHJpbmcodXNlci5pZCksXG4gICAgICBwaWN0dXJlOiB1c2VyLnBpY3R1cmUgfHwgbnVsbCxcbiAgICAgIHBvc2l0aW9uTmFtZTogcG9zaXRpb25MaW5lLFxuICAgICAgZW1haWwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBtYXBSZWNlbnRUYXNrVG9JdGVtID0gKFxuICB0YXNrOiBSZWNlbnRUYXNrSXRlbSxcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyxcbiAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gdHJ1ZVxuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgcHJpbWFyeSA9ICh0YXNrLnRpdGxlICYmIHRhc2sudGl0bGUudHJpbSgpKSB8fCBTdHJpbmcodGFzay5pZClcbiAgY29uc3QgcHJvamVjdE5hbWUgPSBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPyAodGFzay5wcm9qZWN0TmFtZSA/PyBudWxsKSA6IG51bGxcbiAgcmV0dXJuIHtcbiAgICBpZDogdGFzay5pZCxcbiAgICB0eXBlOiAndGFzaycsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgYnJlYWRjcnVtYjogcHJvamVjdE5hbWUgPyB7IHBhcmVudDogcHJvamVjdE5hbWUgfSA6IHVuZGVmaW5lZCxcbiAgICByYXc6IHtcbiAgICAgIGlkOiB0YXNrLmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIHByb2plY3ROYW1lLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3Qgbm9ybWFsaXplVGFza0ZhbWlseVJlY29yZCA9IChyZWNvcmQ6IFRhc2tGYW1pbHlSZWNvcmQpOiBSZWNlbnRUYXNrSXRlbSB8IG51bGwgPT4ge1xuICBjb25zdCB7IF9pZDogdGFza0ZhbWlseUlkIH0gPSByZWNvcmRcbiAgY29uc3QgaWQgPSB0YXNrRmFtaWx5SWRcbiAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwgfHwgU3RyaW5nKGlkKSA9PT0gJycpIHJldHVybiBudWxsXG4gIGNvbnN0IHRpdGxlID0gKHJlY29yZC50aXRsZSA/PyAnJykudHJpbSgpIHx8IFN0cmluZyhpZClcbiAgY29uc3QgcHJvamVjdE5hbWUgPSBmaXJzdERlZmluZWQocmVjb3JkLnByb2plY3Q/Lm5hbWUsIHJlY29yZC5mYXRoZXI/LnRpdGxlKSA/PyBudWxsXG4gIGNvbnN0IGhhc0ZhdGhlciA9ICEhZmlyc3REZWZpbmVkKHJlY29yZC50YXNrRmF0aGVyLCByZWNvcmQuZmF0aGVyPy5pZClcbiAgcmV0dXJuIHtcbiAgICBpZCxcbiAgICB0aXRsZSxcbiAgICB0eXBlOiBoYXNGYXRoZXIgPyAnc3VidGFzaycgOiAndGFzaycsXG4gICAgcHJvamVjdE5hbWUsXG4gIH1cbn1cblxuY29uc3Qgbm9ybWFsaXplUHJvamVjdHNGYWxsYmFja1JlY29yZCA9IChyZWNvcmQ6IEZhbGxiYWNrUHJvamVjdFJlY29yZCk6IFJhd1NlYXJjaFJlc3VsdCB8IG51bGwgPT4ge1xuICBjb25zdCB7IGlkIH0gPSByZWNvcmRcbiAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwgfHwgU3RyaW5nKGlkKSA9PT0gJycpIHJldHVybiBudWxsXG4gIGNvbnN0IHRpdGxlID0gcmVjb3JkLm5hbWUgPz8gJydcbiAgY29uc3QgY2xpZW50SWQgPSBmaXJzdERlZmluZWQocmVjb3JkLmNsaWVudElkLCByZWNvcmQuY2xpZW50Py5pZCkgPz8gbnVsbFxuICBjb25zdCBjbGllbnROYW1lID0gcmVjb3JkLmNsaWVudD8ubmFtZSA/PyBudWxsXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdGl0bGUsXG4gICAgdHlwZTogJ3Byb2plY3QnLFxuICAgIGNsaWVudElkLFxuICAgIGNsaWVudE5hbWUsXG4gIH1cbn1cblxuY29uc3QgbWFwU2VhcmNoVG9JdGVtID0gKFxuICByOiBSYXdTZWFyY2hSZXN1bHQsXG4gIHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLFxuICBzZWFyY2hWYWx1ZTogc3RyaW5nLFxuICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPSB0cnVlXG4pOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBwcmltYXJ5ID0gci50aXRsZSB8fCByLnByb2plY3ROYW1lIHx8ICcnXG4gIGxldCBwYXJlbnQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0JykgcGFyZW50ID0gci5jbGllbnROYW1lXG4gIGVsc2UgaWYgKHR5cGUgPT09ICd0YXNrJykgcGFyZW50ID0gdW5kZWZpbmVkXG4gIGVsc2UgcGFyZW50ID0gci5wcm9qZWN0TmFtZSA/PyByLmNsaWVudE5hbWVcblxuICBjb25zdCBmYXRoZXIgPSB0eXBlID09PSAndGFzaycgPyByLmZhdGhlciA6IG51bGxcbiAgY29uc3QgaGFzRmF0aGVyID0gdHlwZSA9PT0gJ3Rhc2snICYmIGZhdGhlciAhPSBudWxsICYmIGZhdGhlci5pZCAhPSBudWxsICYmIFN0cmluZyhmYXRoZXIuaWQpLmxlbmd0aCA+IDBcblxuICBjb25zdCB0YXNrUHJvamVjdE5hbWUgPSB0eXBlID09PSAndGFzaycgJiYgIXNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA/IG51bGwgOiAoci5wcm9qZWN0TmFtZSA/PyBudWxsKVxuXG4gIHJldHVybiB7XG4gICAgaWQ6IHIuaWQsXG4gICAgdHlwZSxcbiAgICBwcmltYXJ5LFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHByaW1hcnksIHNlYXJjaFZhbHVlKSxcbiAgICBicmVhZGNydW1iOiBwYXJlbnQgPyB7IHBhcmVudCB9IDogdW5kZWZpbmVkLFxuICAgIHJhdzoge1xuICAgICAgaWQ6IHIuaWQsXG4gICAgICBuYW1lOiBwcmltYXJ5LFxuICAgICAgY2xpZW50SWQ6IHIuY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgIGNsaWVudE5hbWU6IHIuY2xpZW50TmFtZSA/PyBudWxsLFxuICAgICAgcHJvamVjdE5hbWU6IHRhc2tQcm9qZWN0TmFtZSxcbiAgICAgIGZlZUlkOiByLmZlZUlkID8/IG51bGwsXG4gICAgICBmYXRoZXJJZDogaGFzRmF0aGVyID8gZmF0aGVyLmlkIDogbnVsbCxcbiAgICAgIGZhdGhlclRpdGxlOiBoYXNGYXRoZXIgPyBmYXRoZXIudGl0bGU/LnRyaW0oKSB8fCBudWxsIDogbnVsbCxcbiAgICB9LFxuICB9XG59XG5cbmNvbnN0IGZvcm1hdE1jcFByaW1hcnlMYWJlbCA9IChzbHVnOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc2x1Zy5yZXBsYWNlKC9fL2csICcgJykucmVwbGFjZSgvXFxiXFx3L2csIGNoYXIgPT4gY2hhci50b1VwcGVyQ2FzZSgpKVxuXG5jb25zdCBtYXBNY3BTbHVnc1RvSXRlbXMgPSAoc2x1Z3M6IHN0cmluZ1tdLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogQ29udGV4dE1lbnRpb25JdGVtW10gPT4ge1xuICBjb25zdCBxID0gc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgbGV0IGZpbHRlcmVkID0gc2x1Z3NcbiAgaWYgKHEpIHtcbiAgICBmaWx0ZXJlZCA9IHNsdWdzLmZpbHRlcihzID0+IHtcbiAgICAgIGNvbnN0IHByaW1hcnkgPSBmb3JtYXRNY3BQcmltYXJ5TGFiZWwocylcbiAgICAgIHJldHVybiBzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHwgcHJpbWFyeS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpXG4gICAgfSlcbiAgfVxuICByZXR1cm4gZmlsdGVyZWQubWFwKHNsdWcgPT4ge1xuICAgIGNvbnN0IHByaW1hcnkgPSBmb3JtYXRNY3BQcmltYXJ5TGFiZWwoc2x1ZylcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNsdWcsXG4gICAgICB0eXBlOiAnbWNwJyBhcyBjb25zdCxcbiAgICAgIHByaW1hcnksXG4gICAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgICByYXc6IHtcbiAgICAgICAgaWQ6IHNsdWcsXG4gICAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICB9LFxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUVudGl0eVNlYXJjaCA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSkgPT4ge1xuICBjb25zdCBjb3JVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIC8qKiBFdml0YSBhcGxpY2FyIHJlc3VsdGFkb3MgZGUgdW4gYGZldGNoUmVjZW50YCB2aWVqbyBjdWFuZG8gZWwgdXN1YXJpbyB5YSBjYW1iacOzIGRlIHRhYiAocmFjZSBhc3luYykuICovXG4gIGNvbnN0IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYgPSB1c2VSZWYoMClcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgZGVib3VuY2VkU2VhcmNoVmFsdWUgPSB1c2VEZWJvdW5jZShzZWFyY2hWYWx1ZSwgU0VBUkNIX1FVRVJZX0RFQk9VTkNFX01TKVxuXG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8Q29udGV4dE1lbnRpb25JdGVtW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hpZGVSZWNlbnRzTGFiZWwsIHNldEhpZGVSZWNlbnRzTGFiZWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNMb2FkaW5nTW9yZSwgc2V0SXNMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRQYWdlLCBzZXRDdXJyZW50UGFnZV0gPSB1c2VTdGF0ZSgxKVxuICBjb25zdCBbYWN0aXZlUGFnaW5hdGlvblNvdXJjZSwgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZV0gPSB1c2VTdGF0ZTxQYWdpbmF0aW9uU291cmNlPignbm9uZScpXG5cbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoc2NvcGU/Lm1jcFNsdWdzID8/IFtdKS5qb2luKCd8JylcbiAgY29uc3Qgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gc2NvcGU/LmFnZW50RW50aXR5ICE9PSAncHJvamVjdCdcblxuICAvLyBFc3RhYmlsaXphbW9zIGVsIHNjb3BlIHBhcmEgbm8gZGlzcGFyYXIgZmV0Y2hzIHBvciBjYW1iaW9zIGRlIGlkZW50aWRhZCBkZSBvYmpldG8uXG4gIGNvbnN0IHN0YWJsZVNjb3BlID0gdXNlTWVtbzxFbnRpdHlTZWFyY2hTY29wZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNsaWVudElkOiBzY29wZT8uY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgIHByb2plY3RJZDogc2NvcGU/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgbWNwU2x1Z3M6IHNjb3BlPy5tY3BTbHVncyA/PyBbXSxcbiAgICAgIGFnZW50RW50aXR5OiBzY29wZT8uYWdlbnRFbnRpdHkgPz8gbnVsbCxcbiAgICB9KSxcbiAgICBbc2NvcGU/LmNsaWVudElkLCBzY29wZT8ucHJvamVjdElkLCBtY3BTbHVnc0tleSwgc2NvcGU/LmFnZW50RW50aXR5XVxuICApXG5cbiAgLy8gLS0tIFNlYXJjaDogcHJvamVjdCB8IHRhc2sgKEdyYXBoUUw6IHNlYXJjaCkgLS0tXG4gIGNvbnN0IFtmZXRjaFNlYXJjaEVudGl0aWVzLCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IHNlYXJjaExvYWRpbmcsIGVycm9yOiBzZWFyY2hFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaEVudGl0aWVzRGF0YT4oU0VBUkNIX0VOVElUSUVTLCB7XG4gICAgICB2YXJpYWJsZXM6IHsgbGltaXQ6IDIwIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgfSlcblxuICAvLyAtLS0gU2VhcmNoOiBjbGllbnQgKEdyYXBoUUwpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hDbGllbnRzLCB7IGRhdGE6IGNsaWVudHNEYXRhLCBsb2FkaW5nOiBjbGllbnRzTG9hZGluZywgZXJyb3I6IGNsaWVudHNFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaENsaWVudHNEYXRhPihTRUFSQ0hfQ0xJRU5UUywge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogdXNlciAoR3JhcGhRTDogdXNlcnMpIC0tLVxuICBjb25zdCBbZmV0Y2hVc2Vyc0RpcmVjdG9yeSwgeyBkYXRhOiB1c2Vyc0RhdGEsIGxvYWRpbmc6IHVzZXJzTG9hZGluZywgZXJyb3I6IHVzZXJzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxVc2Vyc0RpcmVjdG9yeURhdGE+KFVTRVJTX0RJUkVDVE9SWSwge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgY29uc3Qgc3luY1VzZXJzUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogVXNlcnNEaXJlY3RvcnlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy51c2Vycz8ucGFnZSwgMSlcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnVzZXJzPy5sYXN0UGFnZSwgcGFnZSlcbiAgICBzZXRDdXJyZW50UGFnZShwYWdlKVxuICAgIHNldEhhc01vcmUocGFnZSA8IGxhc3RQYWdlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jQ2xpZW50c1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFNlYXJjaENsaWVudHNEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy5jbGllbnRzPy5wYWdlLCAxKVxuICAgIGNvbnN0IGxhc3RQYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8uY2xpZW50cz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFRhc2tGYW1pbHlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHJhd1BhZ2UgPSBOdW1iZXIocGF5bG9hZD8udGFza0ZhbWlseT8ucGFnZSlcbiAgICAvLyB0YXNrRmFtaWx5IHVzYSBww6FnaW5hcyAwLWJhc2VkOyBjb252ZXJ0aW1vcyBhIDEtYmFzZWQgcGFyYSBjb25zaXN0ZW5jaWEgY29uIGVsIHJlc3RvXG4gICAgY29uc3QgcGFnZSA9IE51bWJlci5pc0Zpbml0ZShyYXdQYWdlKSAmJiByYXdQYWdlID49IDAgPyBNYXRoLmZsb29yKHJhd1BhZ2UpICsgMSA6IDFcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnRhc2tGYW1pbHk/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBQcm9qZWN0c0ZhbGxiYWNrRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8ucHJvamVjdHM/LnBhZ2UsIDEpXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy5wcm9qZWN0cz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3QgW2ZldGNoVGFza0ZhbWlseUZhbGxiYWNrXSA9IHVzZUxhenlRdWVyeTxUYXNrRmFtaWx5RGF0YT4oVEFTS19GQU1JTFlfRkFMTEJBQ0ssIHtcbiAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gIH0pXG5cbiAgY29uc3QgW2ZldGNoUHJvamVjdHNGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8UHJvamVjdHNGYWxsYmFja0RhdGE+KFBST0pFQ1RTX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IGZldGNoUmVjZW50ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCArPSAxXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudFxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsICcnKSlcbiAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50Q2xpZW50cygpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBtYXBwZWQgPSAoZGF0YSA/PyBbXSkubWFwKGMgPT4gbWFwQ2xpZW50VG9JdGVtKGMsICcnKSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKG1hcHBlZClcbiAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50UHJvamVjdHMoc3RhYmxlU2NvcGUuY2xpZW50SWQgPyB7IGNsaWVudElkOiBzdGFibGVTY29wZS5jbGllbnRJZCB9IDogdW5kZWZpbmVkKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgbGV0IG1hcHBlZCA9IChBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdKS5tYXAocCA9PlxuICAgICAgICAgIG1hcFNlYXJjaFRvSXRlbShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IHAuaWQsXG4gICAgICAgICAgICAgIHRpdGxlOiBwLnRpdGxlLFxuICAgICAgICAgICAgICB0eXBlOiAncHJvamVjdCcsXG4gICAgICAgICAgICAgIGNsaWVudElkOiBwLmNsaWVudElkLFxuICAgICAgICAgICAgICBmZWVJZDogcC5mZWVJZCxcbiAgICAgICAgICAgICAgY2xpZW50TmFtZTogcC5jbGllbnROYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdwcm9qZWN0JyxcbiAgICAgICAgICAgICcnXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIGlmIChtYXBwZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID1cbiAgICAgICAgICAgIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnXG4gICAgICAgICAgICAgID8geyBjbGllbnRfaWQ6IFtTdHJpbmcoc3RhYmxlU2NvcGUuY2xpZW50SWQpXSB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgY29uc3QgeyBkYXRhOiBmYWxsYmFja0RhdGEgfSA9IGF3YWl0IGZldGNoUHJvamVjdHNGYWxsYmFjayh7XG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgICAgY29uc3QgZmFsbGJhY2tNYXBwZWQgPSAoZmFsbGJhY2tEYXRhPy5wcm9qZWN0cz8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAobm9ybWFsaXplUHJvamVjdHNGYWxsYmFja1JlY29yZClcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJhd1NlYXJjaFJlc3VsdCA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IG1hcFNlYXJjaFRvSXRlbShpdGVtLCAncHJvamVjdCcsICcnKSlcbiAgICAgICAgICBtYXBwZWQgPSBmYWxsYmFja01hcHBlZFxuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsbGJhY2tNYXBwZWQubGVuZ3RoID4gMClcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdwcm9qZWN0LWZhbGxiYWNrJylcbiAgICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihmYWxsYmFja0RhdGEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICBsZXQgcmVjZW50VGFza0ZpbHRlcnM6IHsgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgY2xpZW50SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIH0gfCB1bmRlZmluZWRcbiAgICAgICAgaWYgKHN0YWJsZVNjb3BlLmFnZW50RW50aXR5ID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgICByZWNlbnRUYXNrRmlsdGVycyA9IHsgcHJvamVjdElkOiBzdGFibGVTY29wZS5wcm9qZWN0SWQgfVxuICAgICAgICB9IGVsc2UgaWYgKHN0YWJsZVNjb3BlLmFnZW50RW50aXR5ID09PSAnY2xpZW50Jykge1xuICAgICAgICAgIHJlY2VudFRhc2tGaWx0ZXJzID0geyBjbGllbnRJZDogc3RhYmxlU2NvcGUuY2xpZW50SWQgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRUYXNrcyhyZWNlbnRUYXNrRmlsdGVycylcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGxldCB0YXNrSXRlbXMgPSAoZGF0YSA/PyBbXSkubWFwKHRhc2sgPT4gbWFwUmVjZW50VGFza1RvSXRlbSh0YXNrLCAnJywgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSlcbiAgICAgICAgaWYgKHRhc2tJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gICAgICAgICAgaWYgKHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IHVuZGVmaW5lZCAmJiBzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09ICcnKSB7XG4gICAgICAgICAgICBmaWx0ZXIucHJvamVjdElkcyA9IFtTdHJpbmcoc3RhYmxlU2NvcGUucHJvamVjdElkKV1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnKSB7XG4gICAgICAgICAgICBmaWx0ZXIuY2xpZW50SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZGF0YTogZmFsbGJhY2tEYXRhIH0gPSBhd2FpdCBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayh7XG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgZmlsdGVyOiB7IGFyY2hpdmVkOiBmYWxzZSwgLi4uZmlsdGVyIH0sXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAwLCBzaXplOiAyMCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIHRhc2tJdGVtcyA9IChmYWxsYmFja0RhdGE/LnRhc2tGYW1pbHk/LmRhdGEgPz8gW10pXG4gICAgICAgICAgICAubWFwKG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQpXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbCh0YXNrSXRlbXMubGVuZ3RoID4gMClcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd0YXNrLWZhbGxiYWNrJylcbiAgICAgICAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbihmYWxsYmFja0RhdGEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyh0YXNrSXRlbXMpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMoJycpLFxuICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbWFwcGVkID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsICcnKSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1lSXRlbSA9IG1hcENvclVzZXJUb1VzZXJJdGVtKGNvclVzZXIsICcnLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKVxuICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBtYXBwZWQuZmlsdGVyKGl0ZW0gPT4gU3RyaW5nKGl0ZW0uaWQpICE9PSBTdHJpbmcobWVJdGVtLmlkKSlcbiAgICAgICAgc2V0SXRlbXMoW21lSXRlbSwgLi4ud2l0aG91dE1lXSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd1c2VycycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXMoW10pXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICBzZXRDdXJyZW50UGFnZSgxKVxuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgc2V0SXRlbXMoW10pXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiA9PT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgdHlwZSxcbiAgICBzdGFibGVTY29wZSxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIGZldGNoVGFza0ZhbWlseUZhbGxiYWNrLFxuICAgIGZldGNoUHJvamVjdHNGYWxsYmFjayxcbiAgICBzeW5jVXNlcnNQYWdpbmF0aW9uLFxuICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyxcbiAgICBjb3JVc2VyLFxuICAgIHQsXG4gIF0pXG5cbiAgLy8gRGlzcGFyYXIgc2VhcmNoIGFsIGNhbWJpYXIgZGVib3VuY2VkIHZhbHVlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsIHEpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFxKSByZXR1cm5cblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgZmV0Y2hTZWFyY2hDbGllbnRzKHtcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ2NsaWVudHMtc2VhcmNoJylcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKHEpLFxuICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgndXNlcnMnKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gYnVpbGRGaWx0ZXJzRm9yVHlwZSh0eXBlKVxuICAgICAgY29uc3QgZXh0cmEgPSBidWlsZFNlYXJjaEVudGl0aWVzRXh0cmEodHlwZSwgc3RhYmxlU2NvcGUpXG4gICAgICBmZXRjaFNlYXJjaEVudGl0aWVzKHtcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgcSxcbiAgICAgICAgICBmaWx0ZXJzLFxuICAgICAgICAgIC4uLihleHRyYSAhPT0gdW5kZWZpbmVkID8geyBleHRyYSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtkZWJvdW5jZWRTZWFyY2hWYWx1ZSwgdHlwZSwgc3RhYmxlU2NvcGUsIGZldGNoU2VhcmNoRW50aXRpZXMsIGZldGNoU2VhcmNoQ2xpZW50cywgZmV0Y2hVc2Vyc0RpcmVjdG9yeV0pXG5cbiAgLy8gU2luY3Jvbml6YXIgcmVzdWx0YWRvcyBkZSBzZWFyY2hcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZSA9PT0gJ21jcCcpIHJldHVyblxuXG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgIGlmICghcSkgcmV0dXJuXG4gICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0TG9hZGluZyhjbGllbnRzTG9hZGluZylcbiAgICAgIGlmIChjbGllbnRzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50c0RhdGE/LmNsaWVudHM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoY2xpZW50c0RhdGEuY2xpZW50cy5kYXRhLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSkpXG4gICAgICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbihjbGllbnRzRGF0YSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIHNldExvYWRpbmcodXNlcnNMb2FkaW5nKVxuICAgICAgaWYgKHVzZXJzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAodXNlcnNEYXRhPy51c2Vycz8uZGF0YSkge1xuICAgICAgICBjb25zdCBtYXBwZWQgPSB1c2Vyc0RhdGEudXNlcnMuZGF0YS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBjb25zdCBtZUlkID0gU3RyaW5nKGNvclVzZXIuaWQpXG4gICAgICAgIGNvbnN0IGhhc01lSW5SZXN1bHRzID0gbWFwcGVkLnNvbWUoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgPT09IG1lSWQpXG4gICAgICAgIGNvbnN0IHdpdGhvdXRNZSA9IG1hcHBlZC5maWx0ZXIoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgIT09IG1lSWQpXG4gICAgICAgIGNvbnN0IG1lSXRlbSA9IG1hcENvclVzZXJUb1VzZXJJdGVtKGNvclVzZXIsIHEsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpXG4gICAgICAgIHNldEl0ZW1zKGhhc01lSW5SZXN1bHRzID8gW21lSXRlbSwgLi4ud2l0aG91dE1lXSA6IG1hcHBlZClcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbih1c2Vyc0RhdGEpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRMb2FkaW5nKHNlYXJjaExvYWRpbmcpXG4gICAgICBpZiAoc2VhcmNoRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoc2VhcmNoRGF0YT8uc2VhcmNoKSB7XG4gICAgICAgIHNldEl0ZW1zKHNlYXJjaERhdGEuc2VhcmNoLm1hcChyID0+IG1hcFNlYXJjaFRvSXRlbShyLCB0eXBlLCBxLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKSlcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgc2VhcmNoRGF0YSxcbiAgICBjbGllbnRzRGF0YSxcbiAgICB1c2Vyc0RhdGEsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBjbGllbnRzTG9hZGluZyxcbiAgICB1c2Vyc0xvYWRpbmcsXG4gICAgc2VhcmNoRXJyb3IsXG4gICAgY2xpZW50c0Vycm9yLFxuICAgIHVzZXJzRXJyb3IsXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgdHlwZSxcbiAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24sXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICBdKVxuXG4gIGNvbnN0IGxvYWRNb3JlID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmdNb3JlIHx8ICFoYXNNb3JlIHx8IGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHNhZmVDdXJyZW50UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KGN1cnJlbnRQYWdlLCAxKVxuICAgIGNvbnN0IG5leHRQYWdlID0gc2FmZUN1cnJlbnRQYWdlICsgMVxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBjb25zdCBsb2FkTW9yZUJhc2VsaW5lR2VuID0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50XG4gICAgc2V0SXNMb2FkaW5nTW9yZSh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAoYWN0aXZlUGFnaW5hdGlvblNvdXJjZSA9PT0gJ3VzZXJzJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMocSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAobG9hZE1vcmVCYXNlbGluZUdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBpZiAoIXEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lSXRlbSA9XG4gICAgICAgICAgICAgIHByZXZbMF0/LnR5cGUgPT09ICd1c2VyJyA/IHByZXZbMF0gOiBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCAnJywgdCgnY29udGV4dE1lbnRpb24ubWUnKSlcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBwcmV2LmZpbHRlcihpdGVtID0+IFN0cmluZyhpdGVtLmlkKSAhPT0gU3RyaW5nKG1lSXRlbS5pZCkpXG4gICAgICAgICAgICByZXR1cm4gW21lSXRlbSwgLi4ud2l0aG91dE1lLCAuLi5hcHBlbmRlZF1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jVXNlcnNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdjbGllbnRzLXNlYXJjaCcpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFNlYXJjaENsaWVudHMoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5jbGllbnRzPy5kYXRhID8/IFtdKS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgcSkpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY0NsaWVudHNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICd0YXNrLWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5wcm9qZWN0SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5wcm9qZWN0SWQpXVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5jbGllbnRJZHMgPSBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVGFza0ZhbWlseUZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLmZpbHRlciB9LFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogeyBvZmZzZXQ6IChuZXh0UGFnZSAtIDEpICogMjAsIHNpemU6IDIwIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplVGFza0ZhbWlseVJlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdwcm9qZWN0LWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBhcmd1bWVudHNGaWx0ZXIgPVxuICAgICAgICAgIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnXG4gICAgICAgICAgICA/IHsgY2xpZW50X2lkOiBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV0gfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5wcm9qZWN0cz8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAubWFwKG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmF3U2VhcmNoUmVzdWx0ID0+IGl0ZW0gIT09IG51bGwpXG4gICAgICAgICAgLm1hcChpdGVtID0+IG1hcFNlYXJjaFRvSXRlbShpdGVtLCAncHJvamVjdCcsICcnKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICBjb25zb2xlLmVycm9yKCdbdXNlRW50aXR5U2VhcmNoXSBsb2FkTW9yZSBmYWlsZWQnLCB7XG4gICAgICAgIHNvdXJjZTogYWN0aXZlUGFnaW5hdGlvblNvdXJjZSxcbiAgICAgICAgbmV4dFBhZ2UsXG4gICAgICAgIGVycm9yOiBlcnIsXG4gICAgICB9KVxuICAgICAgLy8gRXZpdGEgbG9vcCBkZSByZWludGVudG9zIGF1dG9tw6F0aWNvcyBwb3Igc2Nyb2xsIGN1YW5kbyBiYWNrZW5kIGVzdMOhIGNhw61kbyAoZWouIDUwMykuXG4gICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGhhc01vcmUsXG4gICAgY3VycmVudFBhZ2UsXG4gICAgYWN0aXZlUGFnaW5hdGlvblNvdXJjZSxcbiAgICBkZWJvdW5jZWRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIGZldGNoU2VhcmNoQ2xpZW50cyxcbiAgICBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayxcbiAgICBmZXRjaFByb2plY3RzRmFsbGJhY2ssXG4gICAgc3RhYmxlU2NvcGUucHJvamVjdElkLFxuICAgIHN0YWJsZVNjb3BlLmNsaWVudElkLFxuICAgIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyxcbiAgICBjb3JVc2VyLFxuICAgIHQsXG4gICAgc3luY0NsaWVudHNQYWdpbmF0aW9uLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24sXG4gICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24sXG4gIF0pXG5cbiAgLy8gQ3VhbmRvIHNlIGxpbXBpYSBlbCBzZWFyY2gsIHZvbHZlciBhIHJlY2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgZmV0Y2hSZWNlbnQoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCBmZXRjaFJlY2VudF0pXG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFJlY2VudCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFlBQVksUUFBUSxnQkFBZ0I7QUFDN0MsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUN6RSxTQUFTQyxnQkFBZ0IsUUFBUSxpREFBaUQ7QUFDbEYsU0FBU0MsaUJBQWlCLFFBQVEsbURBQW1EO0FBQ3JGLFNBQVNDLGNB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
1108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudENsaWVudHMiLCJnZXRSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwidXNlVCIsIm5vcm1hbGl6ZVBvc2l0aXZlSW50IiwidmFsdWUiLCJmYWxsYmFjayIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwibm9ybWFsaXplZCIsIk1hdGgiLCJmbG9vciIsIkJBU0VfRklMVEVSU19CWV9UWVBFIiwicHJvamVjdCIsImFyY2hpdmVkIiwidGFzayIsImJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyIsInNjb3BlIiwicmF3Q2xpZW50IiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJyYXdQcm9qZWN0IiwicHJvamVjdElkIiwiYWdlbnRFbnRpdHkiLCJlbnRyaWVzIiwicHVzaENsaWVudCIsInB1c2giLCJwdXNoUHJvamVjdCIsImJ1aWxkVGFza1NlYXJjaEV4dHJhIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhIiwiYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhIiwidHlwZSIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsInEiLCJiYXNlIiwid2l0aFBvc2l0aW9uIiwid2l0aFRlYW1zIiwidHJpbW1lZFEiLCJ0cmltIiwic2VhcmNoSW5wdXQiLCJoaWdobGlnaHRSYW5nZSIsInRleHQiLCJzZWFyY2hWYWx1ZSIsImlkeCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInN0YXJ0IiwiZmlyc3REZWZpbmVkIiwiX2xlbiIsImFyZ3VtZW50cyIsInZhbHVlcyIsIkFycmF5IiwiX2tleSIsImZpbmQiLCJub3JtYWxpemVUcmltbWVkU3RyaW5nIiwiZ2V0VXNlclBvc2l0aW9uTmFtZSIsInVzZXJQb3NpdGlvbiIsIl90eXBlb2YiLCJuYW1lIiwibWFwQ2xpZW50VG9JdGVtIiwiYyIsIl9jJHRvdGFsUHJveWVjdG9zIiwiX2MkdG90YWxQcm95ZWN0b3MyIiwiaWQiLCJwcmltYXJ5IiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJjb3VudCIsInRvdGFsUHJveWVjdG9zIiwiY291bnRMYWJlbCIsInJhdyIsIm1hcFVzZXJUb0l0ZW0iLCJ1IiwiX3UkZmlyc3ROYW1lIiwiX3UkbGFzdE5hbWUiLCJfdSRwaWN0dXJlIiwiX3UkdXNlclBvc2l0aW9uJG5hbWUiLCJfdSR1c2VyUG9zaXRpb24iLCJfdSRlbWFpbCIsImZ1bGxOYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJtYXBDb3JVc2VyVG9Vc2VySXRlbSIsInVzZXIiLCJtZUxhYmVsIiwiX3VzZXIkZmlyc3ROYW1lIiwiX3VzZXIkbGFzdE5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ1c2VyX3Bvc2l0aW9uIiwibWFwUmVjZW50VGFza1RvSXRlbSIsIl90YXNrJHByb2plY3ROYW1lIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwidGl0bGUiLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsIm5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQiLCJyZWNvcmQiLCJfcmVjb3JkJHRpdGxlIiwiX2ZpcnN0RGVmaW5lZCIsIl9yZWNvcmQkcHJvamVjdCIsIl9yZWNvcmQkZmF0aGVyIiwiX3JlY29yZCRmYXRoZXIyIiwidGFza0ZhbWlseUlkIiwiX2lkIiwiZmF0aGVyIiwiaGFzRmF0aGVyIiwidGFza0ZhdGhlciIsIm5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQiLCJfcmVjb3JkJG5hbWUiLCJfZmlyc3REZWZpbmVkMiIsIl9yZWNvcmQkY2xpZW50IiwiX3JlY29yZCRjbGllbnQkbmFtZSIsIl9yZWNvcmQkY2xpZW50MiIsImNsaWVudCIsImNsaWVudE5hbWUiLCJtYXBTZWFyY2hUb0l0ZW0iLCJyIiwiX3IkcHJvamVjdE5hbWUiLCJfciRwcm9qZWN0TmFtZTIiLCJfciRjbGllbnRJZCIsIl9yJGNsaWVudE5hbWUiLCJfciRmZWVJZCIsIl9mYXRoZXIkdGl0bGUiLCJ0YXNrUHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJmb3JtYXRNY3BQcmltYXJ5TGFiZWwiLCJzbHVnIiwicmVwbGFjZSIsImNoYXIiLCJ0b1VwcGVyQ2FzZSIsIm1hcE1jcFNsdWdzVG9JdGVtcyIsInNsdWdzIiwiZmlsdGVyZWQiLCJmaWx0ZXIiLCJzIiwiaW5jbHVkZXMiLCJtYXAiLCJ1c2VFbnRpdHlTZWFyY2giLCJfc2NvcGUkbWNwU2x1Z3MiLCJfc3RhYmxlU2NvcGUkcHJvamVjdEkiLCJfc3RhYmxlU2NvcGUkY2xpZW50SWQiLCJfc3RhYmxlU2NvcGUkYWdlbnRFbnQiLCJjb3JVc2VyIiwiX3VzZVQiLCJ0IiwicmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldFNlYXJjaFZhbHVlIiwiZGVib3VuY2VkU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIml0ZW1zIiwic2V0SXRlbXMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJoaWRlUmVjZW50c0xhYmVsIiwic2V0SGlkZVJlY2VudHNMYWJlbCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImhhc01vcmUiLCJzZXRIYXNNb3JlIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImlzTG9hZGluZ01vcmUiLCJzZXRJc0xvYWRpbmdNb3JlIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImN1cnJlbnRQYWdlIiwic2V0Q3VycmVudFBhZ2UiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiYWN0aXZlUGFnaW5hdGlvblNvdXJjZSIsInNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UiLCJtY3BTbHVnc0tleSIsIm1jcFNsdWdzIiwiam9pbiIsInN0YWJsZVNjb3BlIiwiX3Njb3BlJGNsaWVudElkIiwiX3Njb3BlJHByb2plY3RJZCIsIl9zY29wZSRtY3BTbHVnczIiLCJfc2NvcGUkYWdlbnRFbnRpdHkiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJmZXRjaFBvbGljeSIsIl91c2VMYXp5UXVlcnkyIiwiZmV0Y2hTZWFyY2hFbnRpdGllcyIsIl91c2VMYXp5UXVlcnkyJCIsInNlYXJjaERhdGEiLCJkYXRhIiwic2VhcmNoTG9hZGluZyIsInNlYXJjaEVycm9yIiwiX3VzZUxhenlRdWVyeTMiLCJfdXNlTGF6eVF1ZXJ5NCIsImZldGNoU2VhcmNoQ2xpZW50cyIsIl91c2VMYXp5UXVlcnk0JCIsImNsaWVudHNEYXRhIiwiY2xpZW50c0xvYWRpbmciLCJjbGllbnRzRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5NSIsIl91c2VMYXp5UXVlcnk2IiwiZmV0Y2hVc2Vyc0RpcmVjdG9yeSIsIl91c2VMYXp5UXVlcnk2JCIsInVzZXJzRGF0YSIsInVzZXJzTG9hZGluZyIsInVzZXJzRXJyb3IiLCJzeW5jVXNlcnNQYWdpbmF0aW9uIiwicGF5bG9hZCIsIl9wYXlsb2FkJHVzZXJzIiwiX3BheWxvYWQkdXNlcnMyIiwicGFnZSIsInVzZXJzIiwibGFzdFBhZ2UiLCJzeW5jQ2xpZW50c1BhZ2luYXRpb24iLCJfcGF5bG9hZCRjbGllbnRzIiwiX3BheWxvYWQkY2xpZW50czIiLCJjbGllbnRzIiwic3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24iLCJfcGF5bG9hZCR0YXNrRmFtaWx5IiwiX3BheWxvYWQkdGFza0ZhbWlseTIiLCJyYXdQYWdlIiwidGFza0ZhbWlseSIsInN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uIiwiX3BheWxvYWQkcHJvamVjdHMiLCJfcGF5bG9hZCRwcm9qZWN0czIiLCJwcm9qZWN0cyIsIl91c2VMYXp5UXVlcnk3IiwiX3VzZUxhenlRdWVyeTgiLCJmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayIsIl91c2VMYXp5UXVlcnk5IiwiX3VzZUxhenlRdWVyeTAiLCJmZXRjaFByb2plY3RzRmFsbGJhY2siLCJmZXRjaFJlY2VudCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZ2VuZXJhdGlvbiIsIl9zdGFibGVTY29wZSRtY3BTbHVncyIsIm1hcHBlZCIsIl9kYXRhIiwiX21hcHBlZCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdDIiLCJhcmd1bWVudHNGaWx0ZXIiLCJfeWllbGQkZmV0Y2hQcm9qZWN0c0YiLCJmYWxsYmFja0RhdGEiLCJmYWxsYmFja01hcHBlZCIsInJlY2VudFRhc2tGaWx0ZXJzIiwiX2RhdGEyIiwidGFza0l0ZW1zIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtMiIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbCIsIl9mYWxsYmFja0RhdGEiLCJfZGF0YTMkdXNlcnMkZGF0YSIsIl9kYXRhMyR1c2VycyIsIl95aWVsZCRmZXRjaFVzZXJzRGlyZSIsIl9kYXRhMyIsIl9tYXBwZWQyIiwibWVJdGVtIiwid2l0aG91dE1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJzZW50IiwiaXNBcnJheSIsInAiLCJjbGllbnRfaWQiLCJfb2JqZWN0U3ByZWFkIiwicGVyUGFnZSIsIml0ZW0iLCJwcm9qZWN0SWRzIiwiY2xpZW50SWRzIiwicGFnaW5hdGlvbiIsIm9mZnNldCIsInNpemUiLCJmaWx0ZXJzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmluaXNoIiwic3RvcCIsIl9zdGFibGVTY29wZSRtY3BTbHVnczIiLCJleHRyYSIsIl9jbGllbnRzRGF0YSRjbGllbnRzIiwiX3VzZXJzRGF0YSR1c2VycyIsIm1lSWQiLCJoYXNNZUluUmVzdWx0cyIsInNvbWUiLCJzZWFyY2giLCJsb2FkTW9yZSIsIl9jYWxsZWUyIiwic2FmZUN1cnJlbnRQYWdlIiwibmV4dFBhZ2UiLCJsb2FkTW9yZUJhc2VsaW5lR2VuIiwiX2RhdGEkdXNlcnMkZGF0YSIsIl9kYXRhJHVzZXJzIiwiX3lpZWxkJGZldGNoVXNlcnNEaXJlMiIsIm5leHRJdGVtcyIsIl9kYXRhNCRjbGllbnRzJGRhdGEiLCJfZGF0YTQkY2xpZW50cyIsIl95aWVsZCRmZXRjaFNlYXJjaENsaSIsIl9kYXRhNCIsIl9uZXh0SXRlbXMiLCJfZGF0YTUkdGFza0ZhbWlseSRkYXQiLCJfZGF0YTUkdGFza0ZhbWlseSIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbDIiLCJfZGF0YTUiLCJfbmV4dEl0ZW1zMiIsIl9kYXRhNiRwcm9qZWN0cyRkYXRhIiwiX2RhdGE2JHByb2plY3RzIiwiX3lpZWxkJGZldGNoUHJvamVjdHNGMiIsIl9kYXRhNiIsIl9uZXh0SXRlbXMzIiwiX3QyIiwiX2NvbnRleHQyIiwiX3ByZXYkIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJhcHBlbmRlZCIsImhhcyIsImNvbnNvbGUiLCJzb3VyY2UiLCJmZXRjaFJlY2VudFJlZiIsInJlY2VudHNUcmlnZ2VyIiwidXBkYXRlU2VhcmNoVmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlRW50aXR5U2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUxhenlRdWVyeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50J1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgZ2V0UmVjZW50Q2xpZW50cyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q2xpZW50cy9nZXRSZWNlbnRDbGllbnRzJ1xuaW1wb3J0IHsgZ2V0UmVjZW50UHJvamVjdHMgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFByb2plY3RzL2dldFJlY2VudFByb2plY3RzJ1xuaW1wb3J0IHsgZ2V0UmVjZW50VGFza3MgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFRhc2tzL2dldFJlY2VudFRhc2tzJ1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRUYXNrSXRlbSB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50VGFza3MvZ2V0UmVjZW50VGFza3MnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IFBST0pFQ1RTX0ZBTExCQUNLLCBTRUFSQ0hfRU5USVRJRVMsIFRBU0tfRkFNSUxZX0ZBTExCQUNLIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvZW50aXR5U2VhcmNoUXVlcnknXG5pbXBvcnQgeyBTRUFSQ0hfQ0xJRU5UUyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L0NsaWVudFNlYXJjaFF1ZXJ5J1xuaW1wb3J0IHsgVVNFUlNfRElSRUNUT1JZIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvdXNlcnNEaXJlY3RvcnlRdWVyeSdcbmltcG9ydCB7IFNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZSB9IGZyb20gJy4vdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi91c2VUJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHR5cGUgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uL3R5cGVzL2FnZW50J1xuXG50eXBlIFJhd1NlYXJjaFJlc3VsdCA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICB0aXRsZTogc3RyaW5nXG4gIHR5cGU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBjbGllbnROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwcm9qZWN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZmF0aGVyPzogeyBpZDogc3RyaW5nIHwgbnVtYmVyOyB0aXRsZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBSYXdDbGllbnQgPSB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHRvdGFsUHJveWVjdG9zPzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIFJhd0RpcmVjdG9yeVVzZXIgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgZmlyc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBsYXN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZW1haWw/OiBzdHJpbmcgfCBudWxsXG4gIHBpY3R1cmU/OiBzdHJpbmcgfCBudWxsXG4gIHVzZXJQb3NpdGlvbj86IHsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBTZWFyY2hFbnRpdGllc0RhdGEgPSB7IHNlYXJjaDogUmF3U2VhcmNoUmVzdWx0W10gfCBudWxsIH1cbnR5cGUgU2VhcmNoQ2xpZW50c0RhdGEgPSB7XG4gIGNsaWVudHM6IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YTogUmF3Q2xpZW50W11cbiAgfSB8IG51bGxcbn1cbnR5cGUgVXNlcnNEaXJlY3RvcnlEYXRhID0ge1xuICB1c2Vyczoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhOiBSYXdEaXJlY3RvcnlVc2VyW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgVGFza0ZhbWlseVJlY29yZCA9IHtcbiAgX2lkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0aXRsZT86IHN0cmluZyB8IG51bGxcbiAgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0YXNrRmF0aGVyPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBmYXRoZXI/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgdGl0bGU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG4gIHByb2plY3Q/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBUYXNrRmFtaWx5RGF0YSA9IHtcbiAgdGFza0ZhbWlseT86IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YT86IFRhc2tGYW1pbHlSZWNvcmRbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBGYWxsYmFja1Byb2plY3RSZWNvcmQgPSB7XG4gIGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50PzogeyBpZD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7IG5hbWU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG59XG5cbnR5cGUgUHJvamVjdHNGYWxsYmFja0RhdGEgPSB7XG4gIHByb2plY3RzPzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogRmFsbGJhY2tQcm9qZWN0UmVjb3JkW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgUGFnaW5hdGlvblNvdXJjZSA9ICdub25lJyB8ICd1c2VycycgfCAnY2xpZW50cy1zZWFyY2gnIHwgJ3Rhc2stZmFsbGJhY2snIHwgJ3Byb2plY3QtZmFsbGJhY2snXG5cbmNvbnN0IG5vcm1hbGl6ZVBvc2l0aXZlSW50ID0gKHZhbHVlOiB1bmtub3duLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShwYXJzZWQpKSByZXR1cm4gZmFsbGJhY2tcbiAgY29uc3Qgbm9ybWFsaXplZCA9IE1hdGguZmxvb3IocGFyc2VkKVxuICByZXR1cm4gbm9ybWFsaXplZCA+IDAgPyBub3JtYWxpemVkIDogZmFsbGJhY2tcbn1cblxuLyoqXG4gKiBSZXN0cmluZ2UgbG9zIHJlc3VsdGFkb3MgYWwgYGNsaWVudElkYC9gcHJvamVjdElkYCBkZWwgYWdlbnRlIGFjdGl2by5cbiAqIEN1YW5kbyBlbCBhZ2VudGUgZXN0w6Egc2NvcGVhZG8gYSB1biBjbGllbnQvcHJvamVjdCwgdGFudG8gbG9zIHJlY2VudHMgY29tb1xuICogZWwgc2VhcmNoIGRlYmVuIGZpbHRyYXIgcG9yIGVzZSBjb250ZXh0by4gU2kgZWwgYmFja2VuZCBubyBlbnRpZW5kZSBhbGfDum5cbiAqIGNhbXBvIGxvIGlnbm9yYSB5IHNlIGNhZSBhbCBjb21wb3J0YW1pZW50byBnbG9iYWwuXG4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eVNlYXJjaFNjb3BlID0ge1xuICBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICAvKiogU2x1Z3MgZGVsIGNvbmVjdG9yIE1DUCBkZWwgYWdlbnRlIChsaXN0YWRvIGxvY2FsLCBzaW4gR3JhcGhRTCkuICovXG4gIG1jcFNsdWdzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIGBlbnRpdHlgIGRlbCBhZ2VudGUgYWN0aXZvLiBQYXJhIGVzcGVjaWFsaXN0YXM6XG4gICAqIC0gYHByb2plY3RgOiBiw7pzcXVlZGEgZGUgdGFyZWFzIGZ1ZXJ6YSBmaWx0cm8gcG9yIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0by5cbiAgICogLSBgY2xpZW50YDogYsO6c3F1ZWRhIGRlIHByb3llY3RvcyBwb3IgYGNsaWVudElkYDsgdGFyZWFzIHBvciBjbGllbnRlICh5IHByb3llY3RvIHNpIGFwbGljYSkuXG4gICAqL1xuICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5IHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEZpbHRlcmFibGVUeXBlID0gJ3Byb2plY3QnIHwgJ3Rhc2snXG5cbmNvbnN0IEJBU0VfRklMVEVSU19CWV9UWVBFOiBSZWNvcmQ8U2VhcmNoRmlsdGVyYWJsZVR5cGUsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcm9qZWN0OiB7IHByb2plY3Q6ICd0cnVlJywgYXJjaGl2ZWQ6ICdhbGwnIH0sXG4gIHRhc2s6IHsgdGFzazogJ3RydWUnLCBhcmNoaXZlZDogJ2ZhbHNlJyB9LFxufVxuXG4vKipcbiAqIEVudHJhZGFzIHBhcmEgZWwgYXJndW1lbnRvIEdyYXBoUUwgYGV4dHJhYCAoSlNPTiBzdHJpbmcgZGUgYXJyYXkpIGFsIGJ1c2NhciB0YXJlYXMgY29uIGNvbnRleHRvLlxuICogRWouOiBbe1wicHJvamVjdElkXCI6XCI4ODE1NTJcIn1dXG4gKi9cbmNvbnN0IGJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyA9IChzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogQXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgY29uc3QgcmF3UHJvamVjdCA9XG4gICAgc2NvcGU/LnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5wcm9qZWN0SWQgIT09IG51bGwgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gJydcbiAgICAgID8gU3RyaW5nKHNjb3BlLnByb2plY3RJZClcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gc2NvcGU/LmFnZW50RW50aXR5XG4gIGNvbnN0IGVudHJpZXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gW11cblxuICBjb25zdCBwdXNoQ2xpZW50ID0gKCkgPT4ge1xuICAgIGlmIChyYXdDbGllbnQpIGVudHJpZXMucHVzaCh7IGNsaWVudElkOiByYXdDbGllbnQgfSlcbiAgfVxuICBjb25zdCBwdXNoUHJvamVjdCA9ICgpID0+IHtcbiAgICBpZiAocmF3UHJvamVjdCkgZW50cmllcy5wdXNoKHsgcHJvamVjdElkOiByYXdQcm9qZWN0IH0pXG4gIH1cblxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgIGlmIChyYXdQcm9qZWN0KSB7XG4gICAgICBwdXNoUHJvamVjdCgpXG4gICAgfSBlbHNlIGlmIChyYXdDbGllbnQpIHtcbiAgICAgIHB1c2hDbGllbnQoKVxuICAgIH1cbiAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICBwdXNoQ2xpZW50KClcbiAgICBwdXNoUHJvamVjdCgpXG4gIH0gZWxzZSB7XG4gICAgcHVzaENsaWVudCgpXG4gICAgcHVzaFByb2plY3QoKVxuICB9XG5cbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuY29uc3QgYnVpbGRUYXNrU2VhcmNoRXh0cmEgPSAoc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBidWlsZFRhc2tTZWFyY2hFeHRyYUVudHJpZXMoc2NvcGUpXG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW50cmllcylcbn1cblxuLyoqXG4gKiBUYWIgcHJveWVjdG86IGNvbiBgY2xpZW50SWRgIGVuIGVsIHNjb3BlLCBgZXh0cmFgIGFjb3RhIGxhIGLDunNxdWVkYSBhIHByb3llY3RvcyBkZSBlc2UgY2xpZW50ZS5cbiAqIEVqLjogYFt7XCJjbGllbnRJZFwiOlwiNDcxMDVcIn1dYCBqdW50byBhIGBmaWx0ZXJzYCBge1wicHJvamVjdFwiOlwidHJ1ZVwiLFwiYXJjaGl2ZWRcIjpcImFsbFwifWAuXG4gKi9cbmNvbnN0IGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhID0gKHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgaWYgKCFyYXdDbGllbnQpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFt7IGNsaWVudElkOiByYXdDbGllbnQgfV0pXG59XG5cbmNvbnN0IGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh0eXBlID09PSAndGFzaycpIHJldHVybiBidWlsZFRhc2tTZWFyY2hFeHRyYShzY29wZSlcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0JykgcmV0dXJuIGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhKHNjb3BlKVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogVGFiIGB0YXNrYCAvIGBwcm9qZWN0YDogYGZpbHRlcnNgIHPDs2xvIHRpcG8gKyBhcmNoaXZlZCAodGFyZWFzOiBubyBhcmNoaXZhZGFzKTsgc2NvcGUgKGNsaWVudElkIC8gcHJvamVjdElkIGVuIHRhcmVhcykgZW4gYGV4dHJhYC5cbiAqL1xuY29uc3QgYnVpbGRGaWx0ZXJzRm9yVHlwZSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUucHJvamVjdClcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUudGFzaylcbn1cblxuLyoqXG4gKiBGaWx0cm9zIHBhcmEgbGEgcXVlcnkgdXNlcnMuIEVsIGJhY2tlbmQgZXNwZXJhIHVuIEpTT04gc3RyaW5nIGNvblxuICogd2l0aFBvc2l0aW9uLCB3aXRoVGVhbXMgeSBzZWFyY2hJbnB1dC4gTGUgYWdyZWdhbW9zIGNsaWVudElkL3Byb2plY3RJZFxuICogZGVsIHNjb3BlIGVuIGNhc28gZGUgcXVlIGVsIGJhY2tlbmQgbG9zIGFwcm92ZWNoZSBwYXJhIGZpbHRyYXIgcG9yXG4gKiBjb250ZXh0byAoc2kgbm8gbG9zIGVudGllbmRlIGxvcyBpZ25vcmEpLlxuICovXG5jb25zdCBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyA9IChxOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBiYXNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICB3aXRoUG9zaXRpb246IHRydWUsXG4gICAgd2l0aFRlYW1zOiB0cnVlLFxuICB9XG4gIGNvbnN0IHRyaW1tZWRRID0gcS50cmltKClcbiAgaWYgKHRyaW1tZWRRKSB7XG4gICAgYmFzZS5zZWFyY2hJbnB1dCA9IHRyaW1tZWRRXG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJhc2UpXG59XG5cbmNvbnN0IGhpZ2hsaWdodFJhbmdlID0gKHRleHQ6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoIXNlYXJjaFZhbHVlKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGlkeCA9IHRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gIGlmIChpZHggPCAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiB7IHN0YXJ0OiBpZHgsIGxlbmd0aDogc2VhcmNoVmFsdWUubGVuZ3RoIH1cbn1cblxuY29uc3QgZmlyc3REZWZpbmVkID0gPFQ+KC4uLnZhbHVlczogQXJyYXk8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogVCB8IHVuZGVmaW5lZCA9PlxuICB2YWx1ZXMuZmluZCh2YWx1ZSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuXG5jb25zdCBub3JtYWxpemVUcmltbWVkU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiAnJ1xuICByZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbmNvbnN0IGdldFVzZXJQb3NpdGlvbk5hbWUgPSAodXNlclBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VVc2VyPlsndXNlcl9wb3NpdGlvbiddKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdzdHJpbmcnKSByZXR1cm4gdXNlclBvc2l0aW9uLnRyaW0oKVxuICBpZiAodXNlclBvc2l0aW9uICYmIHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdvYmplY3QnICYmICduYW1lJyBpbiB1c2VyUG9zaXRpb24pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplVHJpbW1lZFN0cmluZyh1c2VyUG9zaXRpb24ubmFtZSlcbiAgfVxuICByZXR1cm4gJydcbn1cblxuY29uc3QgbWFwQ2xpZW50VG9JdGVtID0gKGM6IFJhd0NsaWVudCwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiAoe1xuICBpZDogYy5pZCxcbiAgdHlwZTogJ2NsaWVudCcsXG4gIHByaW1hcnk6IGMubmFtZSxcbiAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UoYy5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gIGJyZWFkY3J1bWI6IHtcbiAgICBjb3VudDogYy50b3RhbFByb3llY3RvcyA/PyB1bmRlZmluZWQsXG4gICAgY291bnRMYWJlbDogJ3Byb2plY3RzJyxcbiAgfSxcbiAgcmF3OiB7XG4gICAgaWQ6IGMuaWQsXG4gICAgbmFtZTogYy5uYW1lLFxuICAgIHRvdGFsUHJveWVjdG9zOiBjLnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gIH0sXG59KVxuXG5jb25zdCBtYXBVc2VyVG9JdGVtID0gKHU6IFJhd0RpcmVjdG9yeVVzZXIsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke3UuZmlyc3ROYW1lID8/ICcnfSAke3UubGFzdE5hbWUgPz8gJyd9YC50cmltKClcbiAgY29uc3QgcHJpbWFyeSA9IGZ1bGxOYW1lIHx8IHUuZW1haWwgfHwgU3RyaW5nKHUuaWQpXG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdS5pZCxcbiAgICB0eXBlOiAndXNlcicsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgcmF3OiB7XG4gICAgICBpZDogdS5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwaWN0dXJlOiB1LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgIHBvc2l0aW9uTmFtZTogdS51c2VyUG9zaXRpb24/Lm5hbWUgPz8gbnVsbCxcbiAgICAgIGVtYWlsOiB1LmVtYWlsID8/IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBtYXBDb3JVc2VyVG9Vc2VySXRlbSA9IChcbiAgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIG1lTGFiZWw6IHN0cmluZ1xuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHt1c2VyLmZpcnN0TmFtZSA/PyAnJ30gJHt1c2VyLmxhc3ROYW1lID8/ICcnfWAudHJpbSgpXG4gIC8qKiBTb2xvIGNhcmdvIHJlYWw7IHNpbiBmYWxsYmFjayBhIGByb2xlYCAobGEgVUkgbXVlc3RyYSDigJxTaW4gcG9zaWNpw7Nu4oCdIHNpIGZhbHRhKS4gKi9cbiAgY29uc3QgcG9zaXRpb25MaW5lID0gZ2V0VXNlclBvc2l0aW9uTmFtZSh1c2VyLnVzZXJfcG9zaXRpb24pIHx8IG51bGxcbiAgY29uc3QgZW1haWwgPSBub3JtYWxpemVUcmltbWVkU3RyaW5nKHVzZXIuZW1haWwpIHx8IG51bGxcblxuICByZXR1cm4ge1xuICAgIGlkOiB1c2VyLmlkLFxuICAgIHR5cGU6ICd1c2VyJyxcbiAgICBwcmltYXJ5OiBtZUxhYmVsLFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKG1lTGFiZWwsIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgbmFtZTogZnVsbE5hbWUgfHwgU3RyaW5nKHVzZXIuaWQpLFxuICAgICAgcGljdHVyZTogdXNlci5waWN0dXJlIHx8IG51bGwsXG4gICAgICBwb3NpdGlvbk5hbWU6IHBvc2l0aW9uTGluZSxcbiAgICAgIGVtYWlsLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3QgbWFwUmVjZW50VGFza1RvSXRlbSA9IChcbiAgdGFzazogUmVjZW50VGFza0l0ZW0sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHRydWVcbik6IENvbnRleHRNZW50aW9uSXRlbSA9PiB7XG4gIGNvbnN0IHByaW1hcnkgPSAodGFzay50aXRsZSAmJiB0YXNrLnRpdGxlLnRyaW0oKSkgfHwgU3RyaW5nKHRhc2suaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID8gKHRhc2sucHJvamVjdE5hbWUgPz8gbnVsbCkgOiBudWxsXG4gIHJldHVybiB7XG4gICAgaWQ6IHRhc2suaWQsXG4gICAgdHlwZTogJ3Rhc2snLFxuICAgIHByaW1hcnksXG4gICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgIGJyZWFkY3J1bWI6IHByb2plY3ROYW1lID8geyBwYXJlbnQ6IHByb2plY3ROYW1lIH0gOiB1bmRlZmluZWQsXG4gICAgcmF3OiB7XG4gICAgICBpZDogdGFzay5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwcm9qZWN0TmFtZSxcbiAgICB9LFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQgPSAocmVjb3JkOiBUYXNrRmFtaWx5UmVjb3JkKTogUmVjZW50VGFza0l0ZW0gfCBudWxsID0+IHtcbiAgY29uc3QgeyBfaWQ6IHRhc2tGYW1pbHlJZCB9ID0gcmVjb3JkXG4gIGNvbnN0IGlkID0gdGFza0ZhbWlseUlkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IChyZWNvcmQudGl0bGUgPz8gJycpLnRyaW0oKSB8fCBTdHJpbmcoaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gZmlyc3REZWZpbmVkKHJlY29yZC5wcm9qZWN0Py5uYW1lLCByZWNvcmQuZmF0aGVyPy50aXRsZSkgPz8gbnVsbFxuICBjb25zdCBoYXNGYXRoZXIgPSAhIWZpcnN0RGVmaW5lZChyZWNvcmQudGFza0ZhdGhlciwgcmVjb3JkLmZhdGhlcj8uaWQpXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdGl0bGUsXG4gICAgdHlwZTogaGFzRmF0aGVyID8gJ3N1YnRhc2snIDogJ3Rhc2snLFxuICAgIHByb2plY3ROYW1lLFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQgPSAocmVjb3JkOiBGYWxsYmFja1Byb2plY3RSZWNvcmQpOiBSYXdTZWFyY2hSZXN1bHQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBpZCB9ID0gcmVjb3JkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IHJlY29yZC5uYW1lID8/ICcnXG4gIGNvbnN0IGNsaWVudElkID0gZmlyc3REZWZpbmVkKHJlY29yZC5jbGllbnRJZCwgcmVjb3JkLmNsaWVudD8uaWQpID8/IG51bGxcbiAgY29uc3QgY2xpZW50TmFtZSA9IHJlY29yZC5jbGllbnQ/Lm5hbWUgPz8gbnVsbFxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRpdGxlLFxuICAgIHR5cGU6ICdwcm9qZWN0JyxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICB9XG59XG5cbmNvbnN0IG1hcFNlYXJjaFRvSXRlbSA9IChcbiAgcjogUmF3U2VhcmNoUmVzdWx0LFxuICB0eXBlOiBDb250ZXh0RW50aXR5VHlwZSxcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyxcbiAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gdHJ1ZVxuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgcHJpbWFyeSA9IHIudGl0bGUgfHwgci5wcm9qZWN0TmFtZSB8fCAnJ1xuICBsZXQgcGFyZW50OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHBhcmVudCA9IHIuY2xpZW50TmFtZVxuICBlbHNlIGlmICh0eXBlID09PSAndGFzaycpIHBhcmVudCA9IHVuZGVmaW5lZFxuICBlbHNlIHBhcmVudCA9IHIucHJvamVjdE5hbWUgPz8gci5jbGllbnROYW1lXG5cbiAgY29uc3QgZmF0aGVyID0gdHlwZSA9PT0gJ3Rhc2snID8gci5mYXRoZXIgOiBudWxsXG4gIGNvbnN0IGhhc0ZhdGhlciA9IHR5cGUgPT09ICd0YXNrJyAmJiBmYXRoZXIgIT0gbnVsbCAmJiBmYXRoZXIuaWQgIT0gbnVsbCAmJiBTdHJpbmcoZmF0aGVyLmlkKS5sZW5ndGggPiAwXG5cbiAgY29uc3QgdGFza1Byb2plY3ROYW1lID0gdHlwZSA9PT0gJ3Rhc2snICYmICFzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPyBudWxsIDogKHIucHJvamVjdE5hbWUgPz8gbnVsbClcblxuICByZXR1cm4ge1xuICAgIGlkOiByLmlkLFxuICAgIHR5cGUsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgYnJlYWRjcnVtYjogcGFyZW50ID8geyBwYXJlbnQgfSA6IHVuZGVmaW5lZCxcbiAgICByYXc6IHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIGNsaWVudElkOiByLmNsaWVudElkID8/IG51bGwsXG4gICAgICBjbGllbnROYW1lOiByLmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3ROYW1lOiB0YXNrUHJvamVjdE5hbWUsXG4gICAgICBmZWVJZDogci5mZWVJZCA/PyBudWxsLFxuICAgICAgZmF0aGVySWQ6IGhhc0ZhdGhlciA/IGZhdGhlci5pZCA6IG51bGwsXG4gICAgICBmYXRoZXJUaXRsZTogaGFzRmF0aGVyID8gZmF0aGVyLnRpdGxlPy50cmltKCkgfHwgbnVsbCA6IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBmb3JtYXRNY3BQcmltYXJ5TGFiZWwgPSAoc2x1Zzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNsdWcucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcYlxcdy9nLCBjaGFyID0+IGNoYXIudG9VcHBlckNhc2UoKSlcblxuY29uc3QgbWFwTWNwU2x1Z3NUb0l0ZW1zID0gKHNsdWdzOiBzdHJpbmdbXSwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbVtdID0+IHtcbiAgY29uc3QgcSA9IHNlYXJjaFZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gIGxldCBmaWx0ZXJlZCA9IHNsdWdzXG4gIGlmIChxKSB7XG4gICAgZmlsdGVyZWQgPSBzbHVncy5maWx0ZXIocyA9PiB7XG4gICAgICBjb25zdCBwcmltYXJ5ID0gZm9ybWF0TWNwUHJpbWFyeUxhYmVsKHMpXG4gICAgICByZXR1cm4gcy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpIHx8IHByaW1hcnkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKVxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIGZpbHRlcmVkLm1hcChzbHVnID0+IHtcbiAgICBjb25zdCBwcmltYXJ5ID0gZm9ybWF0TWNwUHJpbWFyeUxhYmVsKHNsdWcpXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzbHVnLFxuICAgICAgdHlwZTogJ21jcCcgYXMgY29uc3QsXG4gICAgICBwcmltYXJ5LFxuICAgICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgICAgcmF3OiB7XG4gICAgICAgIGlkOiBzbHVnLFxuICAgICAgICBuYW1lOiBwcmltYXJ5LFxuICAgICAgfSxcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VFbnRpdHlTZWFyY2ggPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpID0+IHtcbiAgY29uc3QgY29yVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICAvKiogRXZpdGEgYXBsaWNhciByZXN1bHRhZG9zIGRlIHVuIGBmZXRjaFJlY2VudGAgdmllam8gY3VhbmRvIGVsIHVzdWFyaW8geWEgY2FtYmnDsyBkZSB0YWIgKHJhY2UgYXN5bmMpLiAqL1xuICBjb25zdCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFZhbHVlID0gdXNlRGVib3VuY2Uoc2VhcmNoVmFsdWUsIFNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUylcblxuICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlPENvbnRleHRNZW50aW9uSXRlbVtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoaWRlUmVjZW50c0xhYmVsLCBzZXRIaWRlUmVjZW50c0xhYmVsXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaGFzTW9yZSwgc2V0SGFzTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzTG9hZGluZ01vcmUsIHNldElzTG9hZGluZ01vcmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50UGFnZSwgc2V0Q3VycmVudFBhZ2VdID0gdXNlU3RhdGUoMSlcbiAgY29uc3QgW2FjdGl2ZVBhZ2luYXRpb25Tb3VyY2UsIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2VdID0gdXNlU3RhdGU8UGFnaW5hdGlvblNvdXJjZT4oJ25vbmUnKVxuXG4gIGNvbnN0IG1jcFNsdWdzS2V5ID0gKHNjb3BlPy5tY3BTbHVncyA/PyBbXSkuam9pbignfCcpXG4gIGNvbnN0IHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHNjb3BlPy5hZ2VudEVudGl0eSAhPT0gJ3Byb2plY3QnXG5cbiAgLy8gRXN0YWJpbGl6YW1vcyBlbCBzY29wZSBwYXJhIG5vIGRpc3BhcmFyIGZldGNocyBwb3IgY2FtYmlvcyBkZSBpZGVudGlkYWQgZGUgb2JqZXRvLlxuICBjb25zdCBzdGFibGVTY29wZSA9IHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7XG4gICAgICBjbGllbnRJZDogc2NvcGU/LmNsaWVudElkID8/IG51bGwsXG4gICAgICBwcm9qZWN0SWQ6IHNjb3BlPy5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgIG1jcFNsdWdzOiBzY29wZT8ubWNwU2x1Z3MgPz8gW10sXG4gICAgICBhZ2VudEVudGl0eTogc2NvcGU/LmFnZW50RW50aXR5ID8/IG51bGwsXG4gICAgfSksXG4gICAgW3Njb3BlPy5jbGllbnRJZCwgc2NvcGU/LnByb2plY3RJZCwgbWNwU2x1Z3NLZXksIHNjb3BlPy5hZ2VudEVudGl0eV1cbiAgKVxuXG4gIC8vIC0tLSBTZWFyY2g6IHByb2plY3QgfCB0YXNrIChHcmFwaFFMOiBzZWFyY2gpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hFbnRpdGllcywgeyBkYXRhOiBzZWFyY2hEYXRhLCBsb2FkaW5nOiBzZWFyY2hMb2FkaW5nLCBlcnJvcjogc2VhcmNoRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hFbnRpdGllc0RhdGE+KFNFQVJDSF9FTlRJVElFUywge1xuICAgICAgdmFyaWFibGVzOiB7IGxpbWl0OiAyMCB9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogY2xpZW50IChHcmFwaFFMKSAtLS1cbiAgY29uc3QgW2ZldGNoU2VhcmNoQ2xpZW50cywgeyBkYXRhOiBjbGllbnRzRGF0YSwgbG9hZGluZzogY2xpZW50c0xvYWRpbmcsIGVycm9yOiBjbGllbnRzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hDbGllbnRzRGF0YT4oU0VBUkNIX0NMSUVOVFMsIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIC8vIC0tLSBTZWFyY2g6IHVzZXIgKEdyYXBoUUw6IHVzZXJzKSAtLS1cbiAgY29uc3QgW2ZldGNoVXNlcnNEaXJlY3RvcnksIHsgZGF0YTogdXNlcnNEYXRhLCBsb2FkaW5nOiB1c2Vyc0xvYWRpbmcsIGVycm9yOiB1c2Vyc0Vycm9yIH1dID1cbiAgICB1c2VMYXp5UXVlcnk8VXNlcnNEaXJlY3RvcnlEYXRhPihVU0VSU19ESVJFQ1RPUlksIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIGNvbnN0IHN5bmNVc2Vyc1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFVzZXJzRGlyZWN0b3J5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8udXNlcnM/LnBhZ2UsIDEpXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy51c2Vycz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY0NsaWVudHNQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBTZWFyY2hDbGllbnRzRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8uY2xpZW50cz8ucGFnZSwgMSlcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LmNsaWVudHM/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBUYXNrRmFtaWx5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCByYXdQYWdlID0gTnVtYmVyKHBheWxvYWQ/LnRhc2tGYW1pbHk/LnBhZ2UpXG4gICAgLy8gdGFza0ZhbWlseSB1c2EgcMOhZ2luYXMgMC1iYXNlZDsgY29udmVydGltb3MgYSAxLWJhc2VkIHBhcmEgY29uc2lzdGVuY2lhIGNvbiBlbCByZXN0b1xuICAgIGNvbnN0IHBhZ2UgPSBOdW1iZXIuaXNGaW5pdGUocmF3UGFnZSkgJiYgcmF3UGFnZSA+PSAwID8gTWF0aC5mbG9vcihyYXdQYWdlKSArIDEgOiAxXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy50YXNrRmFtaWx5Py5sYXN0UGFnZSwgcGFnZSlcbiAgICBzZXRDdXJyZW50UGFnZShwYWdlKVxuICAgIHNldEhhc01vcmUocGFnZSA8IGxhc3RQYWdlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogUHJvamVjdHNGYWxsYmFja0RhdGEgfCBudWxsKSA9PiB7XG4gICAgY29uc3QgcGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnByb2plY3RzPy5wYWdlLCAxKVxuICAgIGNvbnN0IGxhc3RQYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8ucHJvamVjdHM/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IFtmZXRjaFRhc2tGYW1pbHlGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8VGFza0ZhbWlseURhdGE+KFRBU0tfRkFNSUxZX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IFtmZXRjaFByb2plY3RzRmFsbGJhY2tdID0gdXNlTGF6eVF1ZXJ5PFByb2plY3RzRmFsbGJhY2tEYXRhPihQUk9KRUNUU19GQUxMQkFDSywge1xuICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlY2VudCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnRcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCAnJykpXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyh0cnVlKVxuICAgIHNldEVycm9yKGZhbHNlKVxuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGdldFJlY2VudENsaWVudHMoKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbWFwcGVkID0gKGRhdGEgPz8gW10pLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCAnJykpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGdldFJlY2VudFByb2plY3RzKHN0YWJsZVNjb3BlLmNsaWVudElkID8geyBjbGllbnRJZDogc3RhYmxlU2NvcGUuY2xpZW50SWQgfSA6IHVuZGVmaW5lZClcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGxldCBtYXBwZWQgPSAoQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXSkubWFwKHAgPT5cbiAgICAgICAgICBtYXBTZWFyY2hUb0l0ZW0oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3Byb2plY3QnLFxuICAgICAgICAgICAgICBjbGllbnRJZDogcC5jbGllbnRJZCxcbiAgICAgICAgICAgICAgZmVlSWQ6IHAuZmVlSWQsXG4gICAgICAgICAgICAgIGNsaWVudE5hbWU6IHAuY2xpZW50TmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAncHJvamVjdCcsXG4gICAgICAgICAgICAnJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICBpZiAobWFwcGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGFyZ3VtZW50c0ZpbHRlciA9XG4gICAgICAgICAgICBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJ1xuICAgICAgICAgICAgICA/IHsgY2xpZW50X2lkOiBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV0gfVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgIGNvbnN0IHsgZGF0YTogZmFsbGJhY2tEYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIC4uLihhcmd1bWVudHNGaWx0ZXIgPyB7IGFyZ3VtZW50czogYXJndW1lbnRzRmlsdGVyIH0gOiB7fSksXG4gICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTWFwcGVkID0gKGZhbGxiYWNrRGF0YT8ucHJvamVjdHM/LmRhdGEgPz8gW10pXG4gICAgICAgICAgICAubWFwKG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQpXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSYXdTZWFyY2hSZXN1bHQgPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoaXRlbSA9PiBtYXBTZWFyY2hUb0l0ZW0oaXRlbSwgJ3Byb2plY3QnLCAnJykpXG4gICAgICAgICAgbWFwcGVkID0gZmFsbGJhY2tNYXBwZWRcbiAgICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbGxiYWNrTWFwcGVkLmxlbmd0aCA+IDApXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgncHJvamVjdC1mYWxsYmFjaycpXG4gICAgICAgICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXMobWFwcGVkKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICAgICAgbGV0IHJlY2VudFRhc2tGaWx0ZXJzOiB7IHByb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7IGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9IHwgdW5kZWZpbmVkXG4gICAgICAgIGlmIChzdGFibGVTY29wZS5hZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgICAgcmVjZW50VGFza0ZpbHRlcnMgPSB7IHByb2plY3RJZDogc3RhYmxlU2NvcGUucHJvamVjdElkIH1cbiAgICAgICAgfSBlbHNlIGlmIChzdGFibGVTY29wZS5hZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgICByZWNlbnRUYXNrRmlsdGVycyA9IHsgY2xpZW50SWQ6IHN0YWJsZVNjb3BlLmNsaWVudElkIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50VGFza3MocmVjZW50VGFza0ZpbHRlcnMpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBsZXQgdGFza0l0ZW1zID0gKGRhdGEgPz8gW10pLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgIGlmICh0YXNrSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuICAgICAgICAgIGlmIChzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSAnJykge1xuICAgICAgICAgICAgZmlsdGVyLnByb2plY3RJZHMgPSBbU3RyaW5nKHN0YWJsZVNjb3BlLnByb2plY3RJZCldXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgICAgICAgICAgZmlsdGVyLmNsaWVudElkcyA9IFtTdHJpbmcoc3RhYmxlU2NvcGUuY2xpZW50SWQpXVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IGRhdGE6IGZhbGxiYWNrRGF0YSB9ID0gYXdhaXQgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2soe1xuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLmZpbHRlciB9LFxuICAgICAgICAgICAgICBwYWdpbmF0aW9uOiB7IG9mZnNldDogMCwgc2l6ZTogMjAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICB0YXNrSXRlbXMgPSAoZmFsbGJhY2tEYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgICAgLm1hcChub3JtYWxpemVUYXNrRmFtaWx5UmVjb3JkKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmVjZW50VGFza0l0ZW0gPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwodGFza0l0ZW1zLmxlbmd0aCA+IDApXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgndGFzay1mYWxsYmFjaycpXG4gICAgICAgICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXModGFza0l0ZW1zKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFVzZXJzRGlyZWN0b3J5KHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKCcnKSxcbiAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IChkYXRhPy51c2Vycz8uZGF0YSA/PyBbXSkubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCAnJykpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBtZUl0ZW0gPSBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCAnJywgdCgnY29udGV4dE1lbnRpb24ubWUnKSlcbiAgICAgICAgY29uc3Qgd2l0aG91dE1lID0gbWFwcGVkLmZpbHRlcihpdGVtID0+IFN0cmluZyhpdGVtLmlkKSAhPT0gU3RyaW5nKG1lSXRlbS5pZCkpXG4gICAgICAgIHNldEl0ZW1zKFttZUl0ZW0sIC4uLndpdGhvdXRNZV0pXG4gICAgICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24oZGF0YSlcbiAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgndXNlcnMnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0Q3VycmVudFBhZ2UoMSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGdlbmVyYXRpb24gPT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHR5cGUsXG4gICAgc3RhYmxlU2NvcGUsXG4gICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSxcbiAgICBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayxcbiAgICBmZXRjaFByb2plY3RzRmFsbGJhY2ssXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICBdKVxuXG4gIC8vIERpc3BhcmFyIHNlYXJjaCBhbCBjYW1iaWFyIGRlYm91bmNlZCB2YWx1ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCBxKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghcSkgcmV0dXJuXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGZldGNoU2VhcmNoQ2xpZW50cyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdjbGllbnRzLXNlYXJjaCcpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyhxKSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ3VzZXJzJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsdGVycyA9IGJ1aWxkRmlsdGVyc0ZvclR5cGUodHlwZSlcbiAgICAgIGNvbnN0IGV4dHJhID0gYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhKHR5cGUsIHN0YWJsZVNjb3BlKVxuICAgICAgZmV0Y2hTZWFyY2hFbnRpdGllcyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIHEsXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAuLi4oZXh0cmEgIT09IHVuZGVmaW5lZCA/IHsgZXh0cmEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbZGVib3VuY2VkU2VhcmNoVmFsdWUsIHR5cGUsIHN0YWJsZVNjb3BlLCBmZXRjaFNlYXJjaEVudGl0aWVzLCBmZXRjaFNlYXJjaENsaWVudHMsIGZldGNoVXNlcnNEaXJlY3RvcnldKVxuXG4gIC8vIFNpbmNyb25pemFyIHJlc3VsdGFkb3MgZGUgc2VhcmNoXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSByZXR1cm5cblxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBpZiAoIXEpIHJldHVyblxuICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIHNldExvYWRpbmcoY2xpZW50c0xvYWRpbmcpXG4gICAgICBpZiAoY2xpZW50c0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGNsaWVudHNEYXRhPy5jbGllbnRzPy5kYXRhKSB7XG4gICAgICAgIHNldEl0ZW1zKGNsaWVudHNEYXRhLmNsaWVudHMuZGF0YS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgcSkpKVxuICAgICAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24oY2xpZW50c0RhdGEpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICBzZXRMb2FkaW5nKHVzZXJzTG9hZGluZylcbiAgICAgIGlmICh1c2Vyc0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHVzZXJzRGF0YT8udXNlcnM/LmRhdGEpIHtcbiAgICAgICAgY29uc3QgbWFwcGVkID0gdXNlcnNEYXRhLnVzZXJzLmRhdGEubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCBxKSlcbiAgICAgICAgY29uc3QgbWVJZCA9IFN0cmluZyhjb3JVc2VyLmlkKVxuICAgICAgICBjb25zdCBoYXNNZUluUmVzdWx0cyA9IG1hcHBlZC5zb21lKGl0ZW0gPT4gU3RyaW5nKGl0ZW0uaWQpID09PSBtZUlkKVxuICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBtYXBwZWQuZmlsdGVyKGl0ZW0gPT4gU3RyaW5nKGl0ZW0uaWQpICE9PSBtZUlkKVxuICAgICAgICBjb25zdCBtZUl0ZW0gPSBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCBxLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKVxuICAgICAgICBzZXRJdGVtcyhoYXNNZUluUmVzdWx0cyA/IFttZUl0ZW0sIC4uLndpdGhvdXRNZV0gOiBtYXBwZWQpXG4gICAgICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24odXNlcnNEYXRhKVxuICAgICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TG9hZGluZyhzZWFyY2hMb2FkaW5nKVxuICAgICAgaWYgKHNlYXJjaEVycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHNlYXJjaERhdGE/LnNlYXJjaCkge1xuICAgICAgICBzZXRJdGVtcyhzZWFyY2hEYXRhLnNlYXJjaC5tYXAociA9PiBtYXBTZWFyY2hUb0l0ZW0ociwgdHlwZSwgcSwgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSkpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHNlYXJjaERhdGEsXG4gICAgY2xpZW50c0RhdGEsXG4gICAgdXNlcnNEYXRhLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgY2xpZW50c0xvYWRpbmcsXG4gICAgdXNlcnNMb2FkaW5nLFxuICAgIHNlYXJjaEVycm9yLFxuICAgIGNsaWVudHNFcnJvcixcbiAgICB1c2Vyc0Vycm9yLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIHR5cGUsXG4gICAgc3luY0NsaWVudHNQYWdpbmF0aW9uLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgXSlcblxuICBjb25zdCBsb2FkTW9yZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nTW9yZSB8fCAhaGFzTW9yZSB8fCBhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzYWZlQ3VycmVudFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChjdXJyZW50UGFnZSwgMSlcbiAgICBjb25zdCBuZXh0UGFnZSA9IHNhZmVDdXJyZW50UGFnZSArIDFcbiAgICBjb25zdCBxID0gZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpXG4gICAgY29uc3QgbG9hZE1vcmVCYXNlbGluZUdlbiA9IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudFxuICAgIHNldElzTG9hZGluZ01vcmUodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICd1c2VycycpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFVzZXJzRGlyZWN0b3J5KHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKHEpLFxuICAgICAgICAgICAgcGFnZTogbmV4dFBhZ2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy51c2Vycz8uZGF0YSA/PyBbXSkubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCBxKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgaWYgKCFxKSB7XG4gICAgICAgICAgICBjb25zdCBtZUl0ZW0gPVxuICAgICAgICAgICAgICBwcmV2WzBdPy50eXBlID09PSAndXNlcicgPyBwcmV2WzBdIDogbWFwQ29yVXNlclRvVXNlckl0ZW0oY29yVXNlciwgJycsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkpKVxuICAgICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhTdHJpbmcoaXRlbS5pZCkpKVxuICAgICAgICAgICAgY29uc3Qgd2l0aG91dE1lID0gcHJldi5maWx0ZXIoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgIT09IFN0cmluZyhtZUl0ZW0uaWQpKVxuICAgICAgICAgICAgcmV0dXJuIFttZUl0ZW0sIC4uLndpdGhvdXRNZSwgLi4uYXBwZW5kZWRdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAnY2xpZW50cy1zZWFyY2gnKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hTZWFyY2hDbGllbnRzKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8uY2xpZW50cz8uZGF0YSA/PyBbXSkubWFwKGMgPT4gbWFwQ2xpZW50VG9JdGVtKGMsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAndGFzay1mYWxsYmFjaycpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuICAgICAgICBpZiAoc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gJycpIHtcbiAgICAgICAgICBmaWx0ZXIucHJvamVjdElkcyA9IFtTdHJpbmcoc3RhYmxlU2NvcGUucHJvamVjdElkKV1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IHVuZGVmaW5lZCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gJycpIHtcbiAgICAgICAgICBmaWx0ZXIuY2xpZW50SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayh7XG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBmaWx0ZXI6IHsgYXJjaGl2ZWQ6IGZhbHNlLCAuLi5maWx0ZXIgfSxcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAobmV4dFBhZ2UgLSAxKSAqIDIwLCBzaXplOiAyMCB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8udGFza0ZhbWlseT8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAubWFwKG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmVjZW50VGFza0l0ZW0gPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAubWFwKHRhc2sgPT4gbWFwUmVjZW50VGFza1RvSXRlbSh0YXNrLCAnJywgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAncHJvamVjdC1mYWxsYmFjaycpIHtcbiAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID1cbiAgICAgICAgICBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJ1xuICAgICAgICAgICAgPyB7IGNsaWVudF9pZDogW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIC4uLihhcmd1bWVudHNGaWx0ZXIgPyB7IGFyZ3VtZW50czogYXJndW1lbnRzRmlsdGVyIH0gOiB7fSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8ucHJvamVjdHM/LmRhdGEgPz8gW10pXG4gICAgICAgICAgLm1hcChub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJhd1NlYXJjaFJlc3VsdCA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAoaXRlbSA9PiBtYXBTZWFyY2hUb0l0ZW0oaXRlbSwgJ3Byb2plY3QnLCAnJykpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24oZGF0YSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgY29uc29sZS5lcnJvcignW3VzZUVudGl0eVNlYXJjaF0gbG9hZE1vcmUgZmFpbGVkJywge1xuICAgICAgICBzb3VyY2U6IGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UsXG4gICAgICAgIG5leHRQYWdlLFxuICAgICAgICBlcnJvcjogZXJyLFxuICAgICAgfSlcbiAgICAgIC8vIEV2aXRhIGxvb3AgZGUgcmVpbnRlbnRvcyBhdXRvbcOhdGljb3MgcG9yIHNjcm9sbCBjdWFuZG8gYmFja2VuZCBlc3TDoSBjYcOtZG8gKGVqLiA1MDMpLlxuICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzTG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBoYXNNb3JlLFxuICAgIGN1cnJlbnRQYWdlLFxuICAgIGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UsXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSxcbiAgICBmZXRjaFNlYXJjaENsaWVudHMsXG4gICAgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2ssXG4gICAgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrLFxuICAgIHN0YWJsZVNjb3BlLnByb2plY3RJZCxcbiAgICBzdGFibGVTY29wZS5jbGllbnRJZCxcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbixcbiAgICBzeW5jVXNlcnNQYWdpbmF0aW9uLFxuICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uLFxuICBdKVxuXG4gIC8vIE1hbnRlbmVtb3MgdW5hIHJlZiBhIGxhIMO6bHRpbWEgZmV0Y2hSZWNlbnQgcGFyYSBxdWUgZWwgZWZmZWN0IGRlIHJlY2VudHMgbm8gc2VcbiAgLy8gcmUtZGlzcGFyZSBzb2xvIHBvcnF1ZSBjYW1iacOzIGxhIGlkZW50aWRhZCBkZSBmZXRjaFJlY2VudCAoc2NvcGUvY29yVXNlci90KS5cbiAgY29uc3QgZmV0Y2hSZWNlbnRSZWYgPSB1c2VSZWYoZmV0Y2hSZWNlbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hSZWNlbnRSZWYuY3VycmVudCA9IGZldGNoUmVjZW50XG4gIH0sIFtmZXRjaFJlY2VudF0pXG5cbiAgLy8gVHJpZ2dlciBkZSByZWNlbnRzOiBsb3MgcmVjZW50cyBkZSB1c2VyIE5PIGRlcGVuZGVuIGRlbCBzY29wZSwgYXPDrSBxdWUgY2FtYmlhclxuICAvLyBkZSBwcm95ZWN0by9jbGllbnRlIG5vIGRlYmUgcmUtZmV0Y2hlYXJsb3MuIExvcyB0aXBvcyBzY29wZWFkb3MgKHByb2plY3QvdGFzaykgc8OtLlxuICBjb25zdCByZWNlbnRzVHJpZ2dlciA9XG4gICAgdHlwZSA9PT0gJ3VzZXInXG4gICAgICA/ICd1c2VyJ1xuICAgICAgOiBgJHt0eXBlfXwke3N0YWJsZVNjb3BlLnByb2plY3RJZCA/PyAnJ318JHtzdGFibGVTY29wZS5jbGllbnRJZCA/PyAnJ318JHtzdGFibGVTY29wZS5hZ2VudEVudGl0eSA/PyAnJ318JHttY3BTbHVnc0tleX1gXG5cbiAgLy8gQ3VhbmRvIHNlIGxpbXBpYSBlbCBzZWFyY2gsIHZvbHZlciBhIHJlY2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgZmV0Y2hSZWNlbnRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbZGVib3VuY2VkU2VhcmNoVmFsdWUsIHJlY2VudHNUcmlnZ2VyXSlcblxuICByZXR1cm4ge1xuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBoYXNNb3JlLFxuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgbG9hZE1vcmUsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgdXBkYXRlU2VhcmNoVmFsdWU6IHNldFNlYXJjaFZhbHVlLFxuICAgIGZldGNoUmVjZW50LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsWUFBWSxRQUFRLGdCQUFnQjtBQUM3QyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGdCQUFnQixRQUFRLGlEQUFpRDtBQUNsRixTQUFTQyxpQkFBaUIsUUFBUSxtREFBbUQ7QUFDckYsU0FBU0MsY0FBYyxRQUFRLDZDQUE2QztBQUU1RSxTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBQzdDLFNBQVNDLGlCQUFpQixFQUFFQyxlQUFlLEVBQUVDLG9CQUFvQixRQUFRLHFDQUFxQztBQUM5RyxTQUFT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