@projectcor/maia-components 2.35.4-3 → 2.35.6

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 (206) hide show
  1. package/lib/App.js +19 -44
  2. package/lib/components/atoms/ActionableButton.js +6 -1
  3. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +20 -4
  4. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +18 -7
  5. package/lib/components/atoms/MAIAInput/MAIAInput.js +26 -10
  6. package/lib/components/atoms/MAIAInput/styles.js +34 -27
  7. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  8. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +14 -10
  9. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +1 -1
  10. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +37 -57
  11. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +12 -18
  12. package/lib/components/index.js +1 -2
  13. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  14. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +16 -5
  15. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +23 -2
  16. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +33 -5
  17. package/lib/components/molecules/ChatAIHome/styles.js +11 -2
  18. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +31 -20
  19. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +9 -10
  20. package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -29
  21. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +2 -4
  22. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  23. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +8 -1
  24. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +15 -9
  25. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +14 -3
  26. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -2
  27. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +74 -67
  28. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +14 -5
  29. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  30. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +12 -2
  31. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +3 -3
  32. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +36 -7
  33. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +10 -6
  34. package/lib/components/molecules/ChatFooter/ChatFooter.js +64 -48
  35. package/lib/components/molecules/ChatFooter/styles.js +12 -6
  36. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +15 -5
  37. package/lib/components/molecules/Sidebar/Sidebar.js +22 -27
  38. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  39. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +33 -0
  40. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +47 -0
  41. package/lib/components/molecules/UsageBlockedBanner/index.js +2 -0
  42. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +37 -12
  43. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +38 -19
  44. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +43 -18
  45. package/lib/components/organisms/ChatAI/ChatAI.js +6 -1
  46. package/lib/constants/permissions/index.js +2 -2
  47. package/lib/constants/permissions/utils.js +1 -4
  48. package/lib/dev/DevReasoningTimeline.js +17 -11
  49. package/lib/hooks/useChatManager/useChatManager.js +55 -34
  50. package/lib/index.js +2 -5
  51. package/lib/lang/br/index.js +4 -26
  52. package/lib/lang/en/index.js +4 -26
  53. package/lib/lang/es/index.js +4 -26
  54. package/lib/lang/fr/index.js +5 -27
  55. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  56. package/lib/services/maia/Orchestrator/orchestrator.js +5 -11
  57. package/lib/services/maia/Usage/getUsage.js +45 -0
  58. package/lib/services/maia/Usage/index.js +6 -0
  59. package/lib/services/maia/index.js +4 -2
  60. package/lib/services/utils/MaiaApiError.js +34 -0
  61. package/lib/services/utils/fetchCOR.js +106 -57
  62. package/lib/services/utils/index.js +2 -1
  63. package/lib/store/faqsStore.types.js +1 -1
  64. package/lib/store/index.js +2 -1
  65. package/lib/store/sessions/sessionStreamManager.js +112 -74
  66. package/lib/store/sessions/sessions.types.js +1 -1
  67. package/lib/store/useChatsStore.js +3 -3
  68. package/lib/store/useUsageStore.js +108 -0
  69. package/lib/styles/cascade.js +3 -29
  70. package/lib/styles/transitions.js +1 -3
  71. package/lib/types/Chat.js +1 -1
  72. package/lib/types/FrequentlyAskedQuestion.js +1 -1
  73. package/lib/types/global.d.js +1 -1
  74. package/lib/types/usage.js +9 -0
  75. package/lib/utils/streamActivityMessages.js +19 -32
  76. package/package.json +6 -9
  77. package/CHANGELOG.md +0 -727
  78. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -107
  79. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  80. package/lib/components/atoms/Chip/Chip.spec.js +0 -32
  81. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  82. package/lib/components/atoms/Fade/Fade.spec.js +0 -31
  83. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  84. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -201
  85. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  86. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  87. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -58
  88. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -68
  89. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  90. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  91. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
  92. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  93. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  94. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -291
  95. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  96. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -112
  97. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  98. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  99. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -203
  100. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -335
  101. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -237
  102. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  103. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -486
  104. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -231
  105. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  106. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  107. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
  108. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  109. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -229
  110. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -142
  111. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -144
  112. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  113. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  114. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  115. package/lib/components/organisms/ChatAIPage/pageHomeMockCards.js +0 -17
  116. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  117. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  118. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  119. package/lib/dev/DevMaiaPage.js +0 -30
  120. package/lib/hooks/useCaretPosition.spec.js +0 -58
  121. package/lib/hooks/useDebounce.spec.js +0 -42
  122. package/lib/hooks/useEvent.spec.js +0 -35
  123. package/lib/hooks/useIsMaiaPageRoute.js +0 -26
  124. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  125. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -100
  126. package/lib/hooks/useModal/useModal.spec.js +0 -73
  127. package/lib/hooks/useResize.spec.js +0 -37
  128. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  129. package/lib/hooks/useT.spec.js +0 -20
  130. package/lib/hooks/useToggle.spec.js +0 -33
  131. package/lib/services/maia/Access/updateAccess.spec.js +0 -108
  132. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -69
  133. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -74
  134. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  135. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -42
  136. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  137. package/lib/services/maia/Agents/getAgentById.spec.js +0 -55
  138. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -82
  139. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  140. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -47
  141. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  142. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  143. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  144. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  145. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  146. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  147. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  148. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  149. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  150. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  151. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  152. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  153. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -83
  154. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  155. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  156. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  157. package/lib/services/maia/Skills/createSkill.spec.js +0 -59
  158. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  159. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  160. package/lib/services/maia/Skills/updateSkill.spec.js +0 -55
  161. package/lib/services/maia/client.spec.js +0 -56
  162. package/lib/services/utils/fetchCOR.spec.js +0 -211
  163. package/lib/services/utils/getCookie.spec.js +0 -20
  164. package/lib/store/chatsSidebarOptimistic.spec.js +0 -120
  165. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  166. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  167. package/lib/store/sessions/sessions.types.spec.js +0 -16
  168. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  169. package/lib/store/useChatsStore.spec.js +0 -619
  170. package/lib/store/useFaqsStore.spec.js +0 -57
  171. package/lib/test/buttonMock.js +0 -22
  172. package/lib/test/fetchPolyfill.js +0 -160
  173. package/lib/test/fileMock.js +0 -2
  174. package/lib/test/global-context.js +0 -49
  175. package/lib/test/iconMock.js +0 -19
  176. package/lib/test/mockFetch.js +0 -49
  177. package/lib/test/portalRoot.js +0 -13
  178. package/lib/test/styleMock.js +0 -2
  179. package/lib/test/test-utils.js +0 -26
  180. package/lib/test/tooltipMock.js +0 -11
  181. package/lib/utils/agentDisplayName.spec.js +0 -44
  182. package/lib/utils/autoApproveStorage.spec.js +0 -25
  183. package/lib/utils/chatInputFiles.spec.js +0 -39
  184. package/lib/utils/contextMentionLabel.spec.js +0 -13
  185. package/lib/utils/contextMentionTriggers.spec.js +0 -36
  186. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  187. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  188. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  189. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  190. package/lib/utils/formatUnreadCount.spec.js +0 -12
  191. package/lib/utils/getUnitFileSize.spec.js +0 -18
  192. package/lib/utils/hitlAnalytics.spec.js +0 -100
  193. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
  194. package/lib/utils/maiaPageRoute.js +0 -24
  195. package/lib/utils/maiaPageRoute.spec.js +0 -23
  196. package/lib/utils/mapBackendLang.spec.js +0 -19
  197. package/lib/utils/normalizeAgentConnectors.spec.js +0 -59
  198. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  199. package/lib/utils/reasoningMappers.spec.js +0 -103
  200. package/lib/utils/retryCompletion.spec.js +0 -99
  201. package/lib/utils/skillContentSize.spec.js +0 -13
  202. package/lib/utils/slashCommandMarker.spec.js +0 -43
  203. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  204. package/lib/utils/sseStreamContent.spec.js +0 -31
  205. package/lib/utils/streamActivityMessages.spec.js +0 -131
  206. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -11,6 +11,7 @@ import { Loader } from '../../atoms/Loader';
11
11
  import { SECTIONS } from '../../../constants/config';
12
12
  import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
13
13
  import { generateSkill } from '../../../services/maia/Skills/generateSkill';
14
+ import { getUsageStoreState } from '../../../store/useUsageStore';
14
15
  import { SCASGCancelButton, SCASGCloseButton, SCASGFooter, SCASGGenerateButton, SCASGHeader, SCASGHeaderTitle, SCASGTextarea, SCASGWrapper } from './AbmSkillGenerateModal.styles';
15
16
 
16
17
  /** Open this modal from anywhere with: document.dispatchEvent(new CustomEvent('abm-skill-generate-open')) */
@@ -46,6 +47,14 @@ export var AbmSkillGenerateModal = function AbmSkillGenerateModal() {
46
47
  }, []);
47
48
  useEffect(function () {
48
49
  var handleOpen = function handleOpen() {
50
+ if (getUsageStoreState().blocked) {
51
+ var _getUsageStoreState = getUsageStoreState(),
52
+ quotaExceededMessage = _getUsageStoreState.quotaExceededMessage;
53
+ handleSnackbarError(quotaExceededMessage || t('usageBlocked', {
54
+ defaultValue: 'Te quedaste sin usos de IA.'
55
+ }));
56
+ return;
57
+ }
49
58
  setInput('');
50
59
  isOpenRef.current = true;
51
60
  setIsOpen(true);
@@ -54,10 +63,10 @@ export var AbmSkillGenerateModal = function AbmSkillGenerateModal() {
54
63
  return function () {
55
64
  document.removeEventListener(SKILL_GENERATE_OPEN_EVENT, handleOpen);
56
65
  };
57
- }, []);
66
+ }, [handleSnackbarError, t]);
58
67
  var handleGenerate = /*#__PURE__*/function () {
59
68
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
60
- var text, _yield$generateSkill, content, _t;
69
+ var text, _getUsageStoreState2, quotaExceededMessage, _yield$generateSkill, content, _t;
61
70
  return _regeneratorRuntime.wrap(function (_context) {
62
71
  while (1) switch (_context.prev = _context.next) {
63
72
  case 0:
@@ -68,19 +77,29 @@ export var AbmSkillGenerateModal = function AbmSkillGenerateModal() {
68
77
  }
69
78
  return _context.abrupt("return");
70
79
  case 1:
80
+ if (!getUsageStoreState().blocked) {
81
+ _context.next = 2;
82
+ break;
83
+ }
84
+ _getUsageStoreState2 = getUsageStoreState(), quotaExceededMessage = _getUsageStoreState2.quotaExceededMessage;
85
+ handleSnackbarError(quotaExceededMessage || t('usageBlocked', {
86
+ defaultValue: 'Te quedaste sin usos de IA.'
87
+ }));
88
+ return _context.abrupt("return");
89
+ case 2:
71
90
  setIsGenerating(true);
72
- _context.prev = 2;
73
- _context.next = 3;
91
+ _context.prev = 3;
92
+ _context.next = 4;
74
93
  return generateSkill(text);
75
- case 3:
94
+ case 4:
76
95
  _yield$generateSkill = _context.sent;
77
96
  content = _yield$generateSkill.content;
78
97
  if (isOpenRef.current) {
79
- _context.next = 4;
98
+ _context.next = 5;
80
99
  break;
81
100
  }
82
101
  return _context.abrupt("return");
83
- case 4:
102
+ case 5:
84
103
  // Hand off to the full editor (write/preview) with the generated content for review + save.
85
104
  document.dispatchEvent(new CustomEvent('abm-skill-modal-set-values', {
86
105
  detail: {
@@ -97,27 +116,27 @@ export var AbmSkillGenerateModal = function AbmSkillGenerateModal() {
97
116
  }
98
117
  }));
99
118
  handleClose();
100
- _context.next = 7;
119
+ _context.next = 8;
101
120
  break;
102
- case 5:
103
- _context.prev = 5;
104
- _t = _context["catch"](2);
121
+ case 6:
122
+ _context.prev = 6;
123
+ _t = _context["catch"](3);
105
124
  if (isOpenRef.current) {
106
- _context.next = 6;
125
+ _context.next = 7;
107
126
  break;
108
127
  }
109
128
  return _context.abrupt("return");
110
- case 6:
111
- handleSnackbarError(t('mySkills.generateError'));
112
129
  case 7:
113
- _context.prev = 7;
114
- setIsGenerating(false);
115
- return _context.finish(7);
130
+ handleSnackbarError(t('mySkills.generateError'));
116
131
  case 8:
132
+ _context.prev = 8;
133
+ setIsGenerating(false);
134
+ return _context.finish(8);
135
+ case 9:
117
136
  case "end":
118
137
  return _context.stop();
119
138
  }
120
- }, _callee, null, [[2, 5, 7, 8]]);
139
+ }, _callee, null, [[3, 6, 8, 9]]);
121
140
  }));
122
141
  return function handleGenerate() {
123
142
  return _ref.apply(this, arguments);
@@ -172,4 +191,4 @@ export var AbmSkillGenerateModal = function AbmSkillGenerateModal() {
172
191
  })
173
192
  }), container);
174
193
  };
175
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlUG9ydGFsIiwiQ3Jvc3MiLCJ1c2VUcmFuc2xhdGlvbiIsIkJhY2tkcm9wIiwiTG9hZGVyIiwiU0VDVElPTlMiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJnZW5lcmF0ZVNraWxsIiwiU0NBU0dDYW5jZWxCdXR0b24iLCJTQ0FTR0Nsb3NlQnV0dG9uIiwiU0NBU0dGb290ZXIiLCJTQ0FTR0dlbmVyYXRlQnV0dG9uIiwiU0NBU0dIZWFkZXIiLCJTQ0FTR0hlYWRlclRpdGxlIiwiU0NBU0dUZXh0YXJlYSIsIlNDQVNHV3JhcHBlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJTS0lMTF9HRU5FUkFURV9PUEVOX0VWRU5UIiwicGFyc2VTa2lsbE5hbWUiLCJjb250ZW50IiwibWF0Y2giLCJ0cmltIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0dlbmVyYXRpbmciLCJzZXRJc0dlbmVyYXRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlucHV0Iiwic2V0SW5wdXQiLCJpc09wZW5SZWYiLCJoYW5kbGVDbG9zZSIsImN1cnJlbnQiLCJoYW5kbGVPcGVuIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUdlbmVyYXRlIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwidGV4dCIsIl95aWVsZCRnZW5lcmF0ZVNraWxsIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImFicnVwdCIsInNlbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImdlbmVyYWwiLCJuYW1lIiwiZmluaXNoIiwic3RvcCIsImFwcGx5IiwiYXJndW1lbnRzIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInR5cGUiLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwiYXV0b0ZvY3VzIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJ0YXJnZXQiLCJzaXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibVNraWxsR2VuZXJhdGVNb2RhbC9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGdlbmVyYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9nZW5lcmF0ZVNraWxsJ1xuaW1wb3J0IHtcbiAgU0NBU0dDYW5jZWxCdXR0b24sXG4gIFNDQVNHQ2xvc2VCdXR0b24sXG4gIFNDQVNHRm9vdGVyLFxuICBTQ0FTR0dlbmVyYXRlQnV0dG9uLFxuICBTQ0FTR0hlYWRlcixcbiAgU0NBU0dIZWFkZXJUaXRsZSxcbiAgU0NBU0dUZXh0YXJlYSxcbiAgU0NBU0dXcmFwcGVyLFxufSBmcm9tICcuL0FibVNraWxsR2VuZXJhdGVNb2RhbC5zdHlsZXMnXG5cbi8qKiBPcGVuIHRoaXMgbW9kYWwgZnJvbSBhbnl3aGVyZSB3aXRoOiBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnYWJtLXNraWxsLWdlbmVyYXRlLW9wZW4nKSkgKi9cbmV4cG9ydCBjb25zdCBTS0lMTF9HRU5FUkFURV9PUEVOX0VWRU5UID0gJ2FibS1za2lsbC1nZW5lcmF0ZS1vcGVuJ1xuXG5jb25zdCBwYXJzZVNraWxsTmFtZSA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGNvbnRlbnQubWF0Y2goL15uYW1lOlxccyooLispJC9tKVxuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXS50cmltKCkgOiAnJ1xufVxuXG5leHBvcnQgY29uc3QgQWJtU2tpbGxHZW5lcmF0ZU1vZGFsID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzR2VuZXJhdGluZywgc2V0SXNHZW5lcmF0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaW5wdXQsIHNldElucHV0XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBpc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldElzT3BlbihmYWxzZSlcbiAgICBzZXRJc0dlbmVyYXRpbmcoZmFsc2UpXG4gICAgc2V0SW5wdXQoJycpXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlT3BlbiA9ICgpID0+IHtcbiAgICAgIHNldElucHV0KCcnKVxuICAgICAgaXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBzZXRJc09wZW4odHJ1ZSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihTS0lMTF9HRU5FUkFURV9PUEVOX0VWRU5ULCBoYW5kbGVPcGVuKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFNLSUxMX0dFTkVSQVRFX09QRU5fRVZFTlQsIGhhbmRsZU9wZW4pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVHZW5lcmF0ZSA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0ZXh0ID0gaW5wdXQudHJpbSgpXG4gICAgaWYgKCF0ZXh0IHx8IGlzR2VuZXJhdGluZykgcmV0dXJuXG4gICAgc2V0SXNHZW5lcmF0aW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgY29udGVudCB9ID0gYXdhaXQgZ2VuZXJhdGVTa2lsbCh0ZXh0KVxuICAgICAgLy8gU2kgZWwgdXN1YXJpbyBjZXJyw7MgZWwgbW9kYWwgbWllbnRyYXMgZ2VuZXJhYmEsIG5vIGFicmlyIGVsIGVkaXRvci5cbiAgICAgIGlmICghaXNPcGVuUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgLy8gSGFuZCBvZmYgdG8gdGhlIGZ1bGwgZWRpdG9yICh3cml0ZS9wcmV2aWV3KSB3aXRoIHRoZSBnZW5lcmF0ZWQgY29udGVudCBmb3IgcmV2aWV3ICsgc2F2ZS5cbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICBza2lsbFZhbHVlczoge1xuICAgICAgICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGdlbmVyYWw6IHsgbmFtZTogcGFyc2VTa2lsbE5hbWUoY29udGVudCksIGNvbnRlbnQgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWlzT3BlblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZ2VuZXJhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc0dlbmVyYXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc09wZW4pIHJldHVybiBudWxsXG5cbiAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXJvb3QtYWN0aW9ucycpXG4gIGlmICghY29udGFpbmVyKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17MTExMn0gb25DbGljaz17aGFuZGxlQ2xvc2V9PlxuICAgICAgPFNDQVNHV3JhcHBlciBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX0+XG4gICAgICAgIDxTQ0FTR0hlYWRlcj5cbiAgICAgICAgICA8U0NBU0dIZWFkZXJUaXRsZT57dCgnbXlTa2lsbHMuY3JlYXRlV2l0aE1haWEnKX08L1NDQVNHSGVhZGVyVGl0bGU+XG4gICAgICAgICAgPFNDQVNHQ2xvc2VCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfSBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5jbG9zZScpfT5cbiAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiNhNmE2YTZcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgPC9TQ0FTR0Nsb3NlQnV0dG9uPlxuICAgICAgICA8L1NDQVNHSGVhZGVyPlxuXG4gICAgICAgIDxTQ0FTR1RleHRhcmVhXG4gICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLmdlbmVyYXRlUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICB2YWx1ZT17aW5wdXR9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzR2VuZXJhdGluZ31cbiAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gc2V0SW5wdXQoZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgLz5cblxuICAgICAgICA8U0NBU0dGb290ZXI+XG4gICAgICAgICAgPFNDQVNHQ2FuY2VsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbG9zZX0gZGlzYWJsZWQ9e2lzR2VuZXJhdGluZ30+XG4gICAgICAgICAgICB7dCgnbXlTa2lsbHMuY2FuY2VsJyl9XG4gICAgICAgICAgPC9TQ0FTR0NhbmNlbEJ1dHRvbj5cbiAgICAgICAgICA8U0NBU0dHZW5lcmF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlR2VuZXJhdGV9IGRpc2FibGVkPXshaW5wdXQudHJpbSgpIHx8IGlzR2VuZXJhdGluZ30+XG4gICAgICAgICAgICB7aXNHZW5lcmF0aW5nID8gPExvYWRlciBzaXplPVwic21hbGxcIiAvPiA6IHQoJ215U2tpbGxzLmNyZWF0ZVdpdGhNYWlhJyl9XG4gICAgICAgICAgPC9TQ0FTR0dlbmVyYXRlQnV0dG9uPlxuICAgICAgICA8L1NDQVNHRm9vdGVyPlxuICAgICAgPC9TQ0FTR1dyYXBwZXI+XG4gICAgPC9CYWNrZHJvcD4sXG4gICAgY29udGFpbmVyXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFFBQVEsUUFBUSxzQkFBc0I7QUFDL0MsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxhQUFhLFFBQVEsNkNBQTZDO0FBQzNFLFNBQ0VDLGlCQUFpQixFQUNqQkMsZ0JBQWdCLEVBQ2hCQyxXQUFXLEVBQ1hDLG1CQUFtQixFQUNuQkMsV0FBVyxFQUNYQyxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsWUFBWSxRQUNQLGdDQUFnQzs7QUFFdkM7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBO0FBQ0EsT0FBTyxJQUFNQyx5QkFBeUIsR0FBRyx5QkFBeUI7QUFFbEUsSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJQyxPQUFlLEVBQWE7RUFDbEQsSUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUNDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztFQUM5QyxPQUFPQSxLQUFLLEdBQUdBLEtB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
194
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlUG9ydGFsIiwiQ3Jvc3MiLCJ1c2VUcmFuc2xhdGlvbiIsIkJhY2tkcm9wIiwiTG9hZGVyIiwiU0VDVElPTlMiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJnZW5lcmF0ZVNraWxsIiwiZ2V0VXNhZ2VTdG9yZVN0YXRlIiwiU0NBU0dDYW5jZWxCdXR0b24iLCJTQ0FTR0Nsb3NlQnV0dG9uIiwiU0NBU0dGb290ZXIiLCJTQ0FTR0dlbmVyYXRlQnV0dG9uIiwiU0NBU0dIZWFkZXIiLCJTQ0FTR0hlYWRlclRpdGxlIiwiU0NBU0dUZXh0YXJlYSIsIlNDQVNHV3JhcHBlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJTS0lMTF9HRU5FUkFURV9PUEVOX0VWRU5UIiwicGFyc2VTa2lsbE5hbWUiLCJjb250ZW50IiwibWF0Y2giLCJ0cmltIiwiQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0dlbmVyYXRpbmciLCJzZXRJc0dlbmVyYXRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlucHV0Iiwic2V0SW5wdXQiLCJpc09wZW5SZWYiLCJoYW5kbGVDbG9zZSIsImN1cnJlbnQiLCJoYW5kbGVPcGVuIiwiYmxvY2tlZCIsIl9nZXRVc2FnZVN0b3JlU3RhdGUiLCJxdW90YUV4Y2VlZGVkTWVzc2FnZSIsImRlZmF1bHRWYWx1ZSIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVHZW5lcmF0ZSIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInRleHQiLCJfZ2V0VXNhZ2VTdG9yZVN0YXRlMiIsIl95aWVsZCRnZW5lcmF0ZVNraWxsIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImFicnVwdCIsInNlbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImdlbmVyYWwiLCJuYW1lIiwiZmluaXNoIiwic3RvcCIsImFwcGx5IiwiYXJndW1lbnRzIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInR5cGUiLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwiYXV0b0ZvY3VzIiwicGxhY2Vob2xkZXIiLCJ2YWx1ZSIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJ0YXJnZXQiLCJzaXplIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibVNraWxsR2VuZXJhdGVNb2RhbC9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGdlbmVyYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9nZW5lcmF0ZVNraWxsJ1xuaW1wb3J0IHsgZ2V0VXNhZ2VTdG9yZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlVXNhZ2VTdG9yZSdcbmltcG9ydCB7XG4gIFNDQVNHQ2FuY2VsQnV0dG9uLFxuICBTQ0FTR0Nsb3NlQnV0dG9uLFxuICBTQ0FTR0Zvb3RlcixcbiAgU0NBU0dHZW5lcmF0ZUJ1dHRvbixcbiAgU0NBU0dIZWFkZXIsXG4gIFNDQVNHSGVhZGVyVGl0bGUsXG4gIFNDQVNHVGV4dGFyZWEsXG4gIFNDQVNHV3JhcHBlcixcbn0gZnJvbSAnLi9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwuc3R5bGVzJ1xuXG4vKiogT3BlbiB0aGlzIG1vZGFsIGZyb20gYW55d2hlcmUgd2l0aDogZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1nZW5lcmF0ZS1vcGVuJykpICovXG5leHBvcnQgY29uc3QgU0tJTExfR0VORVJBVEVfT1BFTl9FVkVOVCA9ICdhYm0tc2tpbGwtZ2VuZXJhdGUtb3BlbidcblxuY29uc3QgcGFyc2VTa2lsbE5hbWUgPSAoY29udGVudDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbWF0Y2ggPSBjb250ZW50Lm1hdGNoKC9ebmFtZTpcXHMqKC4rKSQvbSlcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0udHJpbSgpIDogJydcbn1cblxuZXhwb3J0IGNvbnN0IEFibVNraWxsR2VuZXJhdGVNb2RhbCA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0dlbmVyYXRpbmcsIHNldElzR2VuZXJhdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lucHV0LCBzZXRJbnB1dF0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgaXNPcGVuUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgc2V0SXNHZW5lcmF0aW5nKGZhbHNlKVxuICAgIHNldElucHV0KCcnKVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU9wZW4gPSAoKSA9PiB7XG4gICAgICBpZiAoZ2V0VXNhZ2VTdG9yZVN0YXRlKCkuYmxvY2tlZCkge1xuICAgICAgICBjb25zdCB7IHF1b3RhRXhjZWVkZWRNZXNzYWdlIH0gPSBnZXRVc2FnZVN0b3JlU3RhdGUoKVxuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHF1b3RhRXhjZWVkZWRNZXNzYWdlIHx8IHQoJ3VzYWdlQmxvY2tlZCcsIHsgZGVmYXVsdFZhbHVlOiAnVGUgcXVlZGFzdGUgc2luIHVzb3MgZGUgSUEuJyB9KSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBzZXRJbnB1dCgnJylcbiAgICAgIGlzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgc2V0SXNPcGVuKHRydWUpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoU0tJTExfR0VORVJBVEVfT1BFTl9FVkVOVCwgaGFuZGxlT3BlbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihTS0lMTF9HRU5FUkFURV9PUEVOX0VWRU5ULCBoYW5kbGVPcGVuKVxuICAgIH1cbiAgfSwgW2hhbmRsZVNuYWNrYmFyRXJyb3IsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZUdlbmVyYXRlID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRleHQgPSBpbnB1dC50cmltKClcbiAgICBpZiAoIXRleHQgfHwgaXNHZW5lcmF0aW5nKSByZXR1cm5cbiAgICBpZiAoZ2V0VXNhZ2VTdG9yZVN0YXRlKCkuYmxvY2tlZCkge1xuICAgICAgY29uc3QgeyBxdW90YUV4Y2VlZGVkTWVzc2FnZSB9ID0gZ2V0VXNhZ2VTdG9yZVN0YXRlKClcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IocXVvdGFFeGNlZWRlZE1lc3NhZ2UgfHwgdCgndXNhZ2VCbG9ja2VkJywgeyBkZWZhdWx0VmFsdWU6ICdUZSBxdWVkYXN0ZSBzaW4gdXNvcyBkZSBJQS4nIH0pKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldElzR2VuZXJhdGluZyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGNvbnRlbnQgfSA9IGF3YWl0IGdlbmVyYXRlU2tpbGwodGV4dClcbiAgICAgIC8vIFNpIGVsIHVzdWFyaW8gY2VycsOzIGVsIG1vZGFsIG1pZW50cmFzIGdlbmVyYWJhLCBubyBhYnJpciBlbCBlZGl0b3IuXG4gICAgICBpZiAoIWlzT3BlblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgIC8vIEhhbmQgb2ZmIHRvIHRoZSBmdWxsIGVkaXRvciAod3JpdGUvcHJldmlldykgd2l0aCB0aGUgZ2VuZXJhdGVkIGNvbnRlbnQgZm9yIHJldmlldyArIHNhdmUuXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgc2tpbGxWYWx1ZXM6IHtcbiAgICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgICAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBnZW5lcmFsOiB7IG5hbWU6IHBhcnNlU2tpbGxOYW1lKGNvbnRlbnQpLCBjb250ZW50IH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFpc09wZW5SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmdlbmVyYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNHZW5lcmF0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGlmICghaXNPcGVuKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKVxuICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuIG51bGxcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxCYWNrZHJvcCB6SW5kZXg9ezExMTJ9IG9uQ2xpY2s9e2hhbmRsZUNsb3NlfT5cbiAgICAgIDxTQ0FTR1dyYXBwZXIgb25DbGljaz17ZXZlbnQgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9PlxuICAgICAgICA8U0NBU0dIZWFkZXI+XG4gICAgICAgICAgPFNDQVNHSGVhZGVyVGl0bGU+e3QoJ215U2tpbGxzLmNyZWF0ZVdpdGhNYWlhJyl9PC9TQ0FTR0hlYWRlclRpdGxlPlxuICAgICAgICAgIDxTQ0FTR0Nsb3NlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbG9zZX0gYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuY2xvc2UnKX0+XG4gICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgIDwvU0NBU0dDbG9zZUJ1dHRvbj5cbiAgICAgICAgPC9TQ0FTR0hlYWRlcj5cblxuICAgICAgICA8U0NBU0dUZXh0YXJlYVxuICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5nZW5lcmF0ZVBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgdmFsdWU9e2lucHV0fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0dlbmVyYXRpbmd9XG4gICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHNldElucHV0KGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgIC8+XG5cbiAgICAgICAgPFNDQVNHRm9vdGVyPlxuICAgICAgICAgIDxTQ0FTR0NhbmNlbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9IGRpc2FibGVkPXtpc0dlbmVyYXRpbmd9PlxuICAgICAgICAgICAge3QoJ215U2tpbGxzLmNhbmNlbCcpfVxuICAgICAgICAgIDwvU0NBU0dDYW5jZWxCdXR0b24+XG4gICAgICAgICAgPFNDQVNHR2VuZXJhdGVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUdlbmVyYXRlfSBkaXNhYmxlZD17IWlucHV0LnRyaW0oKSB8fCBpc0dlbmVyYXRpbmd9PlxuICAgICAgICAgICAge2lzR2VuZXJhdGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5jcmVhdGVXaXRoTWFpYScpfVxuICAgICAgICAgIDwvU0NBU0dHZW5lcmF0ZUJ1dHRvbj5cbiAgICAgICAgPC9TQ0FTR0Zvb3Rlcj5cbiAgICAgIDwvU0NBU0dXcmFwcGVy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
@@ -21,6 +21,7 @@ import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
21
21
  import { getUnitFileSize } from '../../../utils/getUnitFileSize';
22
22
  import { getSkillContentByteLength, isSkillContentOverLimit, SKILL_CONTENT_MAX_BYTES } from '../../../utils/skillContentSize';
23
23
  import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal';
24
+ import { getUsageStoreState } from '../../../store/useUsageStore';
24
25
  import { SCASMByteCounter, SCASMCancelButton, SCASMCloseButton, SCASMContent, SCASMDeleteSlot, SCASMField, SCASMFieldHeader, SCASMFooter, SCASMHeader, SCASMHeaderActions, SCASMHeaderTitle, SCASMHiddenFileInput, SCASMInput, SCASMLabel, SCASMPreview, SCASMPreviewEmpty, SCASMSaveButton, SCASMTextarea, SCASMToggleButton, SCASMToggleGroup, SCASMUploadButton, SCASMWrapper } from './AbmSkillModal.styles';
25
26
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
26
27
  var initialValues = {
@@ -98,12 +99,30 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
98
99
  handleClose();
99
100
  }
100
101
  }, [handleClose]);
102
+ var showUsageBlockedError = function showUsageBlockedError() {
103
+ var _getUsageStoreState = getUsageStoreState(),
104
+ blocked = _getUsageStoreState.blocked,
105
+ quotaExceededMessage = _getUsageStoreState.quotaExceededMessage;
106
+ if (!blocked) return false;
107
+ handleSnackbarError(quotaExceededMessage || t('usageBlocked', {
108
+ defaultValue: 'Te quedaste sin usos de IA.'
109
+ }));
110
+ return true;
111
+ };
101
112
  useEffect(function () {
102
113
  var handleSetSkillValues = function handleSetSkillValues(event) {
103
114
  var _skillValues$values, _skillValues$values2, _skillValues$values3, _skillValues$values4, _skillValues$values5, _skillValues$values6;
104
115
  var _ref2 = event.detail || {},
105
116
  skillValues = _ref2.skillValues;
106
117
  if (!skillValues) return;
118
+ if (getUsageStoreState().blocked) {
119
+ var _getUsageStoreState2 = getUsageStoreState(),
120
+ quotaExceededMessage = _getUsageStoreState2.quotaExceededMessage;
121
+ handleSnackbarError(quotaExceededMessage || t('usageBlocked', {
122
+ defaultValue: 'Te quedaste sin usos de IA.'
123
+ }));
124
+ return;
125
+ }
107
126
  var incomingName = (((_skillValues$values = skillValues.values) === null || _skillValues$values === void 0 || (_skillValues$values = _skillValues$values.general) === null || _skillValues$values === void 0 ? void 0 : _skillValues$values.name) || '').trim();
108
127
  var incomingContent = (((_skillValues$values2 = skillValues.values) === null || _skillValues$values2 === void 0 || (_skillValues$values2 = _skillValues$values2.general) === null || _skillValues$values2 === void 0 ? void 0 : _skillValues$values2.content) || '').trim();
109
128
  // Editing an existing skill -> baseline is its values; creating -> empty baseline.
@@ -240,50 +259,56 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
240
259
  }
241
260
  return _context2.abrupt("return");
242
261
  case 1:
262
+ if (!showUsageBlockedError()) {
263
+ _context2.next = 2;
264
+ break;
265
+ }
266
+ return _context2.abrupt("return");
267
+ case 2:
243
268
  setIsSubmitting(true);
244
- _context2.prev = 2;
269
+ _context2.prev = 3;
245
270
  if (!(values.isEditing && skillId)) {
246
- _context2.next = 4;
271
+ _context2.next = 5;
247
272
  break;
248
273
  }
249
- _context2.next = 3;
274
+ _context2.next = 4;
250
275
  return updateSkill(skillId, {
251
276
  name: name.trim(),
252
277
  content: content.trim()
253
278
  });
254
- case 3:
279
+ case 4:
255
280
  updated = _context2.sent;
256
281
  updateSkillInList === null || updateSkillInList === void 0 || updateSkillInList(updated);
257
282
  handleSnackbarSuccess(t('mySkills.updateSuccess'));
258
- _context2.next = 6;
283
+ _context2.next = 7;
259
284
  break;
260
- case 4:
261
- _context2.next = 5;
285
+ case 5:
286
+ _context2.next = 6;
262
287
  return createSkill({
263
288
  name: name.trim(),
264
289
  content: content.trim()
265
290
  });
266
- case 5:
291
+ case 6:
267
292
  created = _context2.sent;
268
293
  addSkill === null || addSkill === void 0 || addSkill(created);
269
294
  handleSnackbarSuccess(t('mySkills.createSuccess'));
270
- case 6:
295
+ case 7:
271
296
  handleClose();
272
- _context2.next = 8;
297
+ _context2.next = 9;
273
298
  break;
274
- case 7:
275
- _context2.prev = 7;
276
- _t2 = _context2["catch"](2);
277
- handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
278
299
  case 8:
279
300
  _context2.prev = 8;
280
- setIsSubmitting(false);
281
- return _context2.finish(8);
301
+ _t2 = _context2["catch"](3);
302
+ handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
282
303
  case 9:
304
+ _context2.prev = 9;
305
+ setIsSubmitting(false);
306
+ return _context2.finish(9);
307
+ case 10:
283
308
  case "end":
284
309
  return _context2.stop();
285
310
  }
286
- }, _callee2, null, [[2, 7, 8, 9]]);
311
+ }, _callee2, null, [[3, 8, 9, 10]]);
287
312
  }));
288
313
  return function handleSave() {
289
314
  return _ref4.apply(this, arguments);
@@ -461,4 +486,4 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
461
486
  }) : null]
462
487
  }), container);
463
488
  };
464
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwidXNlVHJhbnNsYXRpb24iLCJNYWlhU3RyZWFtZG93biIsIkJhY2tkcm9wIiwiTG9hZGVyIiwiU0VDVElPTlMiLCJ1c2VVc2VyIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiY3JlYXRlU2tpbGwiLCJ1cGRhdGVTa2lsbCIsImRlbGV0ZVNraWxsIiwiZ2V0VW5pdEZpbGVTaXplIiwiZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCIsImlzU2tpbGxDb250ZW50T3ZlckxpbWl0IiwiU0tJTExfQ09OVEVOVF9NQVhfQllURVMiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiU0NBU01CeXRlQ291bnRlciIsIlNDQVNNQ2FuY2VsQnV0dG9uIiwiU0NBU01DbG9zZUJ1dHRvbiIsIlNDQVNNQ29udGVudCIsIlNDQVNNRGVsZXRlU2xvdCIsIlNDQVNNRmllbGQiLCJTQ0FTTUZpZWxkSGVhZGVyIiwiU0NBU01Gb290ZXIiLCJTQ0FTTUhlYWRlciIsIlNDQVNNSGVhZGVyQWN0aW9ucyIsIlNDQVNNSGVhZGVyVGl0bGUiLCJTQ0FTTUhpZGRlbkZpbGVJbnB1dCIsIlNDQVNNSW5wdXQiLCJTQ0FTTUxhYmVsIiwiU0NBU01QcmV2aWV3IiwiU0NBU01QcmV2aWV3RW1wdHkiLCJTQ0FTTVNhdmVCdXR0b24iLCJTQ0FTTVRleHRhcmVhIiwiU0NBU01Ub2dnbGVCdXR0b24iLCJTQ0FTTVRvZ2dsZUdyb3VwIiwiU0NBU01VcGxvYWRCdXR0b24iLCJTQ0FTTVdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiaW5pdGlhbFZhbHVlcyIsImlzRWRpdGluZyIsImdlbmVyYWwiLCJpZCIsInVuZGVmaW5lZCIsIm5hbWUiLCJjb250ZW50IiwiQWJtU2tpbGxNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl92YWx1ZXMkZ2VuZXJhbCIsIl92YWx1ZXMkZ2VuZXJhbDIiLCJfdmFsdWVzJGdlbmVyYWwzIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsInVzZXIiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93RGVsZXRlIiwic2V0U2hvd0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd1ByZXZpZXciLCJzZXRTaG93UHJldmlldyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwicGVuZGluZ1VwbG9hZCIsInNldFBlbmRpbmdVcGxvYWQiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJmaWxlSW5wdXRSZWYiLCJpbml0aWFsUmVmIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGUiLCJjcmVhdGUiLCJjYW5FZGl0IiwiZWRpdCIsImNhbkRlbGV0ZSIsInNraWxsSWQiLCJjb250ZW50Qnl0ZXMiLCJpc092ZXJMaW1pdCIsImlzVmFsaWQiLCJ0cmltIiwiaGFzQ2hhbmdlcyIsImN1cnJlbnQiLCJoYW5kbGVDbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGVTZXRTa2lsbFZhbHVlcyIsIl9za2lsbFZhbHVlcyR2YWx1ZXMiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzMiIsIl9za2lsbFZhbHVlcyR2YWx1ZXMzIiwiX3NraWxsVmFsdWVzJHZhbHVlczQiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzNSIsIl9za2lsbFZhbHVlcyR2YWx1ZXM2IiwiX3JlZjIiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsImluY29taW5nTmFtZSIsImluY29taW5nQ29udGVudCIsIl9vYmplY3RTcHJlYWQiLCJoYXNDb250ZW50IiwiaW50ZW50IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImNsaWNrIiwiaGFuZGxlQ2hhbmdlRmllbGQiLCJmaWVsZCIsInZhbHVlIiwibGVuZ3RoIiwicHJldiIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZVVwbG9hZENsaWNrIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50MiIsImhhbmRsZUZpbGVDaGFuZ2UiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2V2ZW50JHRhcmdldCRmaWxlcyIsImZpbGUiLCJpc01hcmtkb3duIiwidGV4dCIsImJhc2VOYW1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiZmlsZXMiLCJhYnJ1cHQiLCJ0ZXN0Iiwic2l6ZSIsInNlbnQiLCJyZXBsYWNlIiwiX3ByZXYkZ2VuZXJhbCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU2F2ZSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJ1cGRhdGVkIiwiY3JlYXRlZCIsIl90MiIsIl9jb250ZXh0MiIsImZpbmlzaCIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmNSIsIl9jYWxsZWUzIiwiX3QzIiwiX2NvbnRleHQzIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJzdG9wUHJvcGFnYXRpb24iLCJ0eXBlIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsImh0bWxGb3IiLCJtYXhMZW5ndGgiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJyZWYiLCJhY2NlcHQiLCIkYWN0aXZlIiwidmFyaWFudCIsIiRvdmVyTGltaXQiLCJ1c2VkIiwibWF4Iiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXQiLCJ0aXRsZSIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENoYW5nZUV2ZW50LCBNb3VzZUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgTWFpYVN0cmVhbWRvd24gfSBmcm9tICcuLi8uLi9hdG9tcy9NYWlhU3RyZWFtZG93bidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBjcmVhdGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2NyZWF0ZVNraWxsJ1xuaW1wb3J0IHsgdXBkYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy91cGRhdGVTa2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgZ2V0VW5pdEZpbGVTaXplIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0VW5pdEZpbGVTaXplJ1xuaW1wb3J0IHtcbiAgZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCxcbiAgaXNTa2lsbENvbnRlbnRPdmVyTGltaXQsXG4gIFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9za2lsbENvbnRlbnRTaXplJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7XG4gIFNDQVNNQnl0ZUNvdW50ZXIsXG4gIFNDQVNNQ2FuY2VsQnV0dG9uLFxuICBTQ0FTTUNsb3NlQnV0dG9uLFxuICBTQ0FTTUNvbnRlbnQsXG4gIFNDQVNNRGVsZXRlU2xvdCxcbiAgU0NBU01GaWVsZCxcbiAgU0NBU01GaWVsZEhlYWRlcixcbiAgU0NBU01Gb290ZXIsXG4gIFNDQVNNSGVhZGVyLFxuICBTQ0FTTUhlYWRlckFjdGlvbnMsXG4gIFNDQVNNSGVhZGVyVGl0bGUsXG4gIFNDQVNNSGlkZGVuRmlsZUlucHV0LFxuICBTQ0FTTUlucHV0LFxuICBTQ0FTTUxhYmVsLFxuICBTQ0FTTVByZXZpZXcsXG4gIFNDQVNNUHJldmlld0VtcHR5LFxuICBTQ0FTTVNhdmVCdXR0b24sXG4gIFNDQVNNVGV4dGFyZWEsXG4gIFNDQVNNVG9nZ2xlQnV0dG9uLFxuICBTQ0FTTVRvZ2dsZUdyb3VwLFxuICBTQ0FTTVVwbG9hZEJ1dHRvbixcbiAgU0NBU01XcmFwcGVyLFxufSBmcm9tICcuL0FibVNraWxsTW9kYWwuc3R5bGVzJ1xuXG50eXBlIFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogYm9vbGVhblxuICBnZW5lcmFsPzoge1xuICAgIGlkPzogc3RyaW5nXG4gICAgbmFtZT86IHN0cmluZ1xuICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgfVxufVxuXG50eXBlIEFibVNraWxsTW9kYWxQcm9wcyA9IHtcbiAgYWRkU2tpbGw/OiAoc2tpbGw6IFNraWxsKSA9PiB2b2lkXG4gIHVwZGF0ZVNraWxsSW5MaXN0PzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICByZW1vdmVTa2lsbD86IChza2lsbElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuY29uc3QgaW5pdGlhbFZhbHVlczogU2tpbGxNb2RhbFZhbHVlcyA9IHtcbiAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgZ2VuZXJhbDogeyBpZDogdW5kZWZpbmVkLCBuYW1lOiAnJywgY29udGVudDogJycgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEFibVNraWxsTW9kYWwgPSAoeyBhZGRTa2lsbCwgdXBkYXRlU2tpbGxJbkxpc3QsIHJlbW92ZVNraWxsIH06IEFibVNraWxsTW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dEZWxldGUsIHNldFNob3dEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93UHJldmlldywgc2V0U2hvd1ByZXZpZXddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwZW5kaW5nVXBsb2FkLCBzZXRQZW5kaW5nVXBsb2FkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGU8U2tpbGxNb2RhbFZhbHVlcz4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIC8vIEJhc2VsaW5lIHRvIGRldGVjdCBjaGFuZ2VzOiB0aGUgbG9hZGVkIHZhbHVlcyB3aGVuIGVkaXRpbmcsIGVtcHR5IHdoZW4gY3JlYXRpbmdcbiAgLy8gKGEgbmV3L2dlbmVyYXRlZC91cGxvYWRlZCBza2lsbCBhbHdheXMgY291bnRzIGFzIGEgY2hhbmdlKS5cbiAgY29uc3QgaW5pdGlhbFJlZiA9IHVzZVJlZjx7IG5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+KHsgbmFtZTogJycsIGNvbnRlbnQ6ICcnIH0pXG5cbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBjYW5DcmVhdGUgPSAhIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlXG4gIGNvbnN0IGNhbkVkaXQgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZWRpdFxuICBjb25zdCBjYW5EZWxldGUgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlXG5cbiAgY29uc3QgbmFtZSA9IHZhbHVlcy5nZW5lcmFsPy5uYW1lIHx8ICcnXG4gIGNvbnN0IGNvbnRlbnQgPSB2YWx1ZXMuZ2VuZXJhbD8uY29udGVudCB8fCAnJ1xuICBjb25zdCBza2lsbElkID0gdmFsdWVzLmdlbmVyYWw/LmlkXG4gIGNvbnN0IGNvbnRlbnRCeXRlcyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aChjb250ZW50KSwgW2NvbnRlbnRdKVxuICBjb25zdCBpc092ZXJMaW1pdCA9IGNvbnRlbnRCeXRlcyA+IFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTXG4gIGNvbnN0IGlzVmFsaWQgPSAhIW5hbWUudHJpbSgpICYmICEhY29udGVudC50cmltKCkgJiYgIWlzT3ZlckxpbWl0XG4gIGNvbnN0IGhhc0NoYW5nZXMgPSBuYW1lLnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50Lm5hbWUgfHwgY29udGVudC50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5jb250ZW50XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIHNldFNob3dEZWxldGUoZmFsc2UpXG4gICAgc2V0U2hvd1ByZXZpZXcoZmFsc2UpXG4gICAgc2V0UGVuZGluZ1VwbG9hZChmYWxzZSlcbiAgICBzZXRWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlQ2xvc2VdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNldFNraWxsVmFsdWVzID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpbGxWYWx1ZXMgfSA9IGV2ZW50LmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbFZhbHVlcykgcmV0dXJuXG4gICAgICBjb25zdCBpbmNvbWluZ05hbWUgPSAoc2tpbGxWYWx1ZXMudmFsdWVzPy5nZW5lcmFsPy5uYW1lIHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nQ29udGVudCA9IChza2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWw/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxuICAgICAgLy8gRWRpdGluZyBhbiBleGlzdGluZyBza2lsbCAtPiBiYXNlbGluZSBpcyBpdHMgdmFsdWVzOyBjcmVhdGluZyAtPiBlbXB0eSBiYXNlbGluZS5cbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHNraWxsVmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nXG4gICAgICAgID8geyBuYW1lOiBpbmNvbWluZ05hbWUsIGNvbnRlbnQ6IGluY29taW5nQ29udGVudCB9XG4gICAgICAgIDogeyBuYW1lOiAnJywgY29udGVudDogJycgfVxuXG4gICAgICBzZXRWYWx1ZXMoe1xuICAgICAgICAuLi5pbml0aWFsVmFsdWVzLFxuICAgICAgICAuLi5za2lsbFZhbHVlcy52YWx1ZXMsXG4gICAgICAgIGdlbmVyYWw6IHsgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLCAuLi5za2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWwgfSxcbiAgICAgIH0pXG4gICAgICAvLyBDb24gY29udGVuaWRvIChlZGljacOzbiBvIHNraWxsIHlhIGdlbmVyYWRhKSBhcnJhbmNhbW9zIGVuIFwiVmlzdGEgcHJldmlhXCI7IHZhY8OtYSwgZW4gXCJFZGl0YXJcIi5cbiAgICAgIGNvbnN0IGhhc0NvbnRlbnQgPSAhIXNraWxsVmFsdWVzLnZhbHVlcz8uZ2VuZXJhbD8uY29udGVudD8udHJpbSgpXG4gICAgICBzZXRTaG93UHJldmlldyhoYXNDb250ZW50KVxuICAgICAgLy8gU2kgdmlubyBjb24gaW50ZW50IFwidXBsb2FkXCIsIGFicmltb3MgZWwgc2VsZWN0b3IgZGUgYXJjaGl2b3MgYWwgbW9udGFyLlxuICAgICAgc2V0UGVuZGluZ1VwbG9hZChza2lsbFZhbHVlcy52YWx1ZXM/LmludGVudCA9PT0gJ3VwbG9hZCcpXG4gICAgICBzZXRJc09wZW4oISFza2lsbFZhbHVlcy5pc09wZW4pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIFdoZW4gb3BlbmVkIHdpdGggdGhlIFwidXBsb2FkXCIgaW50ZW50LCBvcGVuIHRoZSBPUyBmaWxlIHBpY2tlciBvbmNlIG1vdW50ZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiBwZW5kaW5nVXBsb2FkKSB7XG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgICB9XG4gIH0sIFtpc09wZW4sIHBlbmRpbmdVcGxvYWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUZpZWxkID0gKGZpZWxkOiAnbmFtZScgfCAnY29udGVudCcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZmllbGQgPT09ICdjb250ZW50JyAmJiBpc1NraWxsQ29udGVudE92ZXJMaW1pdCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggLSBjb250ZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5jb250ZW50U2l6ZUVycm9yJykpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7IC4uLnByZXYuZ2VuZXJhbCwgW2ZpZWxkXTogdmFsdWUgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwbG9hZENsaWNrID0gKCkgPT4ge1xuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlQ2hhbmdlID0gYXN5bmMgKGV2ZW50OiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXM/LlswXVxuICAgIC8vIFJlc2V0IHRoZSBpbnB1dCAodmlhIHJlZikgc28gc2VsZWN0aW5nIHRoZSBzYW1lIGZpbGUgYWdhaW4gc3RpbGwgZmlyZXMgb25DaGFuZ2UuXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBjb25zdCBpc01hcmtkb3duID0gL1xcLihtZHxtYXJrZG93bikkL2kudGVzdChmaWxlLm5hbWUpXG4gICAgaWYgKCFpc01hcmtkb3duKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmlsZS5zaXplID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVMpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkU2l6ZUVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBpZiAoaXNTa2lsbENvbnRlbnRPdmVyTGltaXQodGV4dCkpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgY29udGVudDogdGV4dCxcbiAgICAgICAgICAvLyBPbmx5IGZpbGwgdGhlIG5hbWUgZnJvbSB0aGUgZmlsZW5hbWUgd2hlbiBpdCdzIHN0aWxsIGVtcHR5LlxuICAgICAgICAgIG5hbWU6IHByZXYuZ2VuZXJhbD8ubmFtZT8udHJpbSgpID8gcHJldi5nZW5lcmFsLm5hbWUgOiBiYXNlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0pKVxuICAgICAgLy8gVHJhcyBzdWJpciB1biAubWQgbW9zdHJhbW9zIGVsIHJlc3VsdGFkbyByZW5kZXJpemFkbyBwb3IgZGVmZWN0by5cbiAgICAgIHNldFNob3dQcmV2aWV3KHRydWUpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTYXZlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmcpIHJldHVyblxuICAgIHNldElzU3VibWl0dGluZyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAodmFsdWVzLmlzRWRpdGluZyAmJiBza2lsbElkKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTa2lsbChza2lsbElkLCB7IG5hbWU6IG5hbWUudHJpbSgpLCBjb250ZW50OiBjb250ZW50LnRyaW0oKSB9KVxuICAgICAgICB1cGRhdGVTa2lsbEluTGlzdD8uKHVwZGF0ZWQpXG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy51cGRhdGVTdWNjZXNzJykpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgY3JlYXRlU2tpbGwoeyBuYW1lOiBuYW1lLnRyaW0oKSwgY29udGVudDogY29udGVudC50cmltKCkgfSlcbiAgICAgICAgYWRkU2tpbGw/LihjcmVhdGVkKVxuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMuY3JlYXRlU3VjY2VzcycpKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoc2tpbGxJZClcbiAgICAgIHJlbW92ZVNraWxsPy4oc2tpbGxJZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGxcbiAgaWYgKCFjYW5DcmVhdGUgJiYgIWNhbkVkaXQgJiYgIWNhbkRlbGV0ZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcm9vdC1hY3Rpb25zJylcbiAgaWYgKCFjb250YWluZXIpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8QmFja2Ryb3AgekluZGV4PXsxMTEyfSBvbkNsaWNrPXtoYW5kbGVCYWNrZHJvcENsaWNrfT5cbiAgICAgIDxTQ0FTTVdyYXBwZXIgb25DbGljaz17ZXZlbnQgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9PlxuICAgICAgICA8U0NBU01IZWFkZXI+XG4gICAgICAgICAgPFNDQVNNSGVhZGVyVGl0bGU+e3ZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy5lZGl0VGl0bGUnKSA6IHQoJ215U2tpbGxzLmNyZWF0ZVRpdGxlJyl9PC9TQ0FTTUhlYWRlclRpdGxlPlxuICAgICAgICAgIDxTQ0FTTUNsb3NlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbG9zZX0gYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuY2xvc2UnKX0+XG4gICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgIDwvU0NBU01DbG9zZUJ1dHRvbj5cbiAgICAgICAgPC9TQ0FTTUhlYWRlcj5cblxuICAgICAgICA8U0NBU01Db250ZW50PlxuICAgICAgICAgIDxTQ0FTTUZpZWxkPlxuICAgICAgICAgICAgPFNDQVNNTGFiZWwgaHRtbEZvcj1cInNraWxsLW5hbWUtaW5wdXRcIj57dCgnbXlTa2lsbHMubmFtZUxhYmVsJyl9PC9TQ0FTTUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNSW5wdXRcbiAgICAgICAgICAgICAgaWQ9XCJza2lsbC1uYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBtYXhMZW5ndGg9ezE1MH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICB2YWx1ZT17bmFtZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCduYW1lJywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FTTUZpZWxkPlxuXG4gICAgICAgICAgPFNDQVNNRmllbGQ+XG4gICAgICAgICAgICA8U0NBU01GaWVsZEhlYWRlcj5cbiAgICAgICAgICAgICAgPFNDQVNNTGFiZWwgaHRtbEZvcj1cInNraWxsLWNvbnRlbnQtaW5wdXRcIj57dCgnbXlTa2lsbHMuY29udGVudExhYmVsJyl9PC9TQ0FTTUxhYmVsPlxuICAgICAgICAgICAgICA8U0NBU01IZWFkZXJBY3Rpb25zPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVVwbG9hZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlVXBsb2FkQ2xpY2t9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVwbG9hZE1kJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTVVwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8U0NBU01IaWRkZW5GaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiLm1kLC5tYXJrZG93bix0ZXh0L21hcmtkb3duXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFNDQVNNVG9nZ2xlR3JvdXA+XG4gICAgICAgICAgICAgICAgICA8U0NBU01Ub2dnbGVCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9eyFzaG93UHJldmlld30gb25DbGljaz17KCkgPT4gc2V0U2hvd1ByZXZpZXcoZmFsc2UpfT5cbiAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmVkaXQnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NBU01Ub2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8U0NBU01Ub2dnbGVCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9e3Nob3dQcmV2aWV3fSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UHJldmlldyh0cnVlKX0+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5wcmV2aWV3Jyl9XG4gICAgICAgICAgICAgICAgICA8L1NDQVNNVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU0NBU01Ub2dnbGVHcm91cD5cbiAgICAgICAgICAgICAgPC9TQ0FTTUhlYWRlckFjdGlvbnM+XG4gICAgICAgICAgICA8L1NDQVNNRmllbGRIZWFkZXI+XG4gICAgICAgICAgICB7c2hvd1ByZXZpZXcgPyAoXG4gICAgICAgICAgICAgIDxTQ0FTTVByZXZpZXc+XG4gICAgICAgICAgICAgICAge2NvbnRlbnQudHJpbSgpID8gKFxuICAgICAgICAgICAgICAgICAgPE1haWFTdHJlYW1kb3duIHZhcmlhbnQ9XCJwcmV2aWV3XCI+e2NvbnRlbnR9PC9NYWlhU3RyZWFtZG93bj5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPFNDQVNNUHJldmlld0VtcHR5Pnt0KCdteVNraWxscy5wcmV2aWV3RW1wdHknKX08L1NDQVNNUHJldmlld0VtcHR5PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NBU01QcmV2aWV3PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFNDQVNNVGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cInNraWxsLWNvbnRlbnQtaW5wdXRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5jb250ZW50UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGVudH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnY29udGVudCcsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFNDQVNNQnl0ZUNvdW50ZXIgJG92ZXJMaW1pdD17aXNPdmVyTGltaXR9IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuYnl0ZXNDb3VudGVyJywge1xuICAgICAgICAgICAgICAgIHVzZWQ6IGdldFVuaXRGaWxlU2l6ZShjb250ZW50Qnl0ZXMpLFxuICAgICAgICAgICAgICAgIG1heDogZ2V0VW5pdEZpbGVTaXplKFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTKSxcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDQVNNQnl0ZUNvdW50ZXI+XG4gICAgICAgICAgPC9TQ0FTTUZpZWxkPlxuICAgICAgICA8L1NDQVNNQ29udGVudD5cblxuICAgICAgICA8U0NBU01Gb290ZXI+XG4gICAgICAgICAge3ZhbHVlcy5pc0VkaXRpbmcgJiYgY2FuRGVsZXRlID8gKFxuICAgICAgICAgICAgPFNDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgPFNDQVNNQ2FuY2VsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RGVsZXRlKHRydWUpfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgIDwvU0NBU01DYW5jZWxCdXR0b24+XG4gICAgICAgICAgICA8L1NDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8U0NBU01DYW5jZWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgIHt0KCdteVNraWxscy5jYW5jZWwnKX1cbiAgICAgICAgICA8L1NDQVNNQ2FuY2VsQnV0dG9uPlxuICAgICAgICAgIDxTQ0FTTVNhdmVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9IGRpc2FibGVkPXshaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmcgfHwgIWhhc0NoYW5nZXN9PlxuICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlJyl9XG4gICAgICAgICAgPC9TQ0FTTVNhdmVCdXR0b24+XG4gICAgICAgIDwvU0NBU01Gb290ZXI+XG4gICAgICA8L1NDQVNNV3JhcHBlcj5cblxuICAgICAge3Nob3dEZWxldGUgJiYgc2tpbGxJZCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RGVsZXRlKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e3sgdGl0bGU6IG5hbWUsIGlkOiBza2lsbElkIH19XG4gICAgICAgICAgYWN0aW9uPVwic2tpbGxcIlxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9CYWNrZHJvcD4sXG4gICAgY29udGFpbmVyXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQSxTQUFrQ0EsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNsRyxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxLQUFLLFFBQVEsd0NBQXdD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
489
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwidXNlVHJhbnNsYXRpb24iLCJNYWlhU3RyZWFtZG93biIsIkJhY2tkcm9wIiwiTG9hZGVyIiwiU0VDVElPTlMiLCJ1c2VVc2VyIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiY3JlYXRlU2tpbGwiLCJ1cGRhdGVTa2lsbCIsImRlbGV0ZVNraWxsIiwiZ2V0VW5pdEZpbGVTaXplIiwiZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCIsImlzU2tpbGxDb250ZW50T3ZlckxpbWl0IiwiU0tJTExfQ09OVEVOVF9NQVhfQllURVMiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiZ2V0VXNhZ2VTdG9yZVN0YXRlIiwiU0NBU01CeXRlQ291bnRlciIsIlNDQVNNQ2FuY2VsQnV0dG9uIiwiU0NBU01DbG9zZUJ1dHRvbiIsIlNDQVNNQ29udGVudCIsIlNDQVNNRGVsZXRlU2xvdCIsIlNDQVNNRmllbGQiLCJTQ0FTTUZpZWxkSGVhZGVyIiwiU0NBU01Gb290ZXIiLCJTQ0FTTUhlYWRlciIsIlNDQVNNSGVhZGVyQWN0aW9ucyIsIlNDQVNNSGVhZGVyVGl0bGUiLCJTQ0FTTUhpZGRlbkZpbGVJbnB1dCIsIlNDQVNNSW5wdXQiLCJTQ0FTTUxhYmVsIiwiU0NBU01QcmV2aWV3IiwiU0NBU01QcmV2aWV3RW1wdHkiLCJTQ0FTTVNhdmVCdXR0b24iLCJTQ0FTTVRleHRhcmVhIiwiU0NBU01Ub2dnbGVCdXR0b24iLCJTQ0FTTVRvZ2dsZUdyb3VwIiwiU0NBU01VcGxvYWRCdXR0b24iLCJTQ0FTTVdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiaW5pdGlhbFZhbHVlcyIsImlzRWRpdGluZyIsImdlbmVyYWwiLCJpZCIsInVuZGVmaW5lZCIsIm5hbWUiLCJjb250ZW50IiwiQWJtU2tpbGxNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl92YWx1ZXMkZ2VuZXJhbCIsIl92YWx1ZXMkZ2VuZXJhbDIiLCJfdmFsdWVzJGdlbmVyYWwzIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsInVzZXIiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93RGVsZXRlIiwic2V0U2hvd0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd1ByZXZpZXciLCJzZXRTaG93UHJldmlldyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwicGVuZGluZ1VwbG9hZCIsInNldFBlbmRpbmdVcGxvYWQiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJmaWxlSW5wdXRSZWYiLCJpbml0aWFsUmVmIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGUiLCJjcmVhdGUiLCJjYW5FZGl0IiwiZWRpdCIsImNhbkRlbGV0ZSIsInNraWxsSWQiLCJjb250ZW50Qnl0ZXMiLCJpc092ZXJMaW1pdCIsImlzVmFsaWQiLCJ0cmltIiwiaGFzQ2hhbmdlcyIsImN1cnJlbnQiLCJoYW5kbGVDbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJzaG93VXNhZ2VCbG9ja2VkRXJyb3IiLCJfZ2V0VXNhZ2VTdG9yZVN0YXRlIiwiYmxvY2tlZCIsInF1b3RhRXhjZWVkZWRNZXNzYWdlIiwiZGVmYXVsdFZhbHVlIiwiaGFuZGxlU2V0U2tpbGxWYWx1ZXMiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzIiwiX3NraWxsVmFsdWVzJHZhbHVlczIiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzMyIsIl9za2lsbFZhbHVlcyR2YWx1ZXM0IiwiX3NraWxsVmFsdWVzJHZhbHVlczUiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzNiIsIl9yZWYyIiwiZGV0YWlsIiwic2tpbGxWYWx1ZXMiLCJfZ2V0VXNhZ2VTdG9yZVN0YXRlMiIsImluY29taW5nTmFtZSIsImluY29taW5nQ29udGVudCIsIl9vYmplY3RTcHJlYWQiLCJoYXNDb250ZW50IiwiaW50ZW50IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImNsaWNrIiwiaGFuZGxlQ2hhbmdlRmllbGQiLCJmaWVsZCIsInZhbHVlIiwibGVuZ3RoIiwicHJldiIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZVVwbG9hZENsaWNrIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50MiIsImhhbmRsZUZpbGVDaGFuZ2UiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2V2ZW50JHRhcmdldCRmaWxlcyIsImZpbGUiLCJpc01hcmtkb3duIiwidGV4dCIsImJhc2VOYW1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiZmlsZXMiLCJhYnJ1cHQiLCJ0ZXN0Iiwic2l6ZSIsInNlbnQiLCJyZXBsYWNlIiwiX3ByZXYkZ2VuZXJhbCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU2F2ZSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJ1cGRhdGVkIiwiY3JlYXRlZCIsIl90MiIsIl9jb250ZXh0MiIsImZpbmlzaCIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmNSIsIl9jYWxsZWUzIiwiX3QzIiwiX2NvbnRleHQzIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJzdG9wUHJvcGFnYXRpb24iLCJ0eXBlIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsImh0bWxGb3IiLCJtYXhMZW5ndGgiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJyZWYiLCJhY2NlcHQiLCIkYWN0aXZlIiwidmFyaWFudCIsIiRvdmVyTGltaXQiLCJ1c2VkIiwibWF4Iiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXQiLCJ0aXRsZSIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENoYW5nZUV2ZW50LCBNb3VzZUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgTWFpYVN0cmVhbWRvd24gfSBmcm9tICcuLi8uLi9hdG9tcy9NYWlhU3RyZWFtZG93bidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBjcmVhdGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2NyZWF0ZVNraWxsJ1xuaW1wb3J0IHsgdXBkYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy91cGRhdGVTa2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgZ2V0VW5pdEZpbGVTaXplIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0VW5pdEZpbGVTaXplJ1xuaW1wb3J0IHtcbiAgZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCxcbiAgaXNTa2lsbENvbnRlbnRPdmVyTGltaXQsXG4gIFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9za2lsbENvbnRlbnRTaXplJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IGdldFVzYWdlU3RvcmVTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZVVzYWdlU3RvcmUnXG5pbXBvcnQge1xuICBTQ0FTTUJ5dGVDb3VudGVyLFxuICBTQ0FTTUNhbmNlbEJ1dHRvbixcbiAgU0NBU01DbG9zZUJ1dHRvbixcbiAgU0NBU01Db250ZW50LFxuICBTQ0FTTURlbGV0ZVNsb3QsXG4gIFNDQVNNRmllbGQsXG4gIFNDQVNNRmllbGRIZWFkZXIsXG4gIFNDQVNNRm9vdGVyLFxuICBTQ0FTTUhlYWRlcixcbiAgU0NBU01IZWFkZXJBY3Rpb25zLFxuICBTQ0FTTUhlYWRlclRpdGxlLFxuICBTQ0FTTUhpZGRlbkZpbGVJbnB1dCxcbiAgU0NBU01JbnB1dCxcbiAgU0NBU01MYWJlbCxcbiAgU0NBU01QcmV2aWV3LFxuICBTQ0FTTVByZXZpZXdFbXB0eSxcbiAgU0NBU01TYXZlQnV0dG9uLFxuICBTQ0FTTVRleHRhcmVhLFxuICBTQ0FTTVRvZ2dsZUJ1dHRvbixcbiAgU0NBU01Ub2dnbGVHcm91cCxcbiAgU0NBU01VcGxvYWRCdXR0b24sXG4gIFNDQVNNV3JhcHBlcixcbn0gZnJvbSAnLi9BYm1Ta2lsbE1vZGFsLnN0eWxlcydcblxudHlwZSBTa2lsbE1vZGFsVmFsdWVzID0ge1xuICBpc0VkaXRpbmc6IGJvb2xlYW5cbiAgZ2VuZXJhbD86IHtcbiAgICBpZD86IHN0cmluZ1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgICBjb250ZW50Pzogc3RyaW5nXG4gIH1cbn1cblxudHlwZSBBYm1Ta2lsbE1vZGFsUHJvcHMgPSB7XG4gIGFkZFNraWxsPzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICB1cGRhdGVTa2lsbEluTGlzdD86IChza2lsbDogU2tpbGwpID0+IHZvaWRcbiAgcmVtb3ZlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmNvbnN0IGluaXRpYWxWYWx1ZXM6IFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGdlbmVyYWw6IHsgaWQ6IHVuZGVmaW5lZCwgbmFtZTogJycsIGNvbnRlbnQ6ICcnIH0sXG59XG5cbmV4cG9ydCBjb25zdCBBYm1Ta2lsbE1vZGFsID0gKHsgYWRkU2tpbGwsIHVwZGF0ZVNraWxsSW5MaXN0LCByZW1vdmVTa2lsbCB9OiBBYm1Ta2lsbE1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93RGVsZXRlLCBzZXRTaG93RGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd1ByZXZpZXcsIHNldFNob3dQcmV2aWV3XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcGVuZGluZ1VwbG9hZCwgc2V0UGVuZGluZ1VwbG9hZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlPFNraWxsTW9kYWxWYWx1ZXM+KGluaXRpYWxWYWx1ZXMpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICAvLyBCYXNlbGluZSB0byBkZXRlY3QgY2hhbmdlczogdGhlIGxvYWRlZCB2YWx1ZXMgd2hlbiBlZGl0aW5nLCBlbXB0eSB3aGVuIGNyZWF0aW5nXG4gIC8vIChhIG5ldy9nZW5lcmF0ZWQvdXBsb2FkZWQgc2tpbGwgYWx3YXlzIGNvdW50cyBhcyBhIGNoYW5nZSkuXG4gIGNvbnN0IGluaXRpYWxSZWYgPSB1c2VSZWY8eyBuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9Pih7IG5hbWU6ICcnLCBjb250ZW50OiAnJyB9KVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBjYW5FZGl0ID0gISF1c2VyUGVybWlzc2lvbnM/LmVkaXRcbiAgY29uc3QgY2FuRGVsZXRlID0gISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZVxuXG4gIGNvbnN0IG5hbWUgPSB2YWx1ZXMuZ2VuZXJhbD8ubmFtZSB8fCAnJ1xuICBjb25zdCBjb250ZW50ID0gdmFsdWVzLmdlbmVyYWw/LmNvbnRlbnQgfHwgJydcbiAgY29uc3Qgc2tpbGxJZCA9IHZhbHVlcy5nZW5lcmFsPy5pZFxuICBjb25zdCBjb250ZW50Qnl0ZXMgPSB1c2VNZW1vKCgpID0+IGdldFNraWxsQ29udGVudEJ5dGVMZW5ndGgoY29udGVudCksIFtjb250ZW50XSlcbiAgY29uc3QgaXNPdmVyTGltaXQgPSBjb250ZW50Qnl0ZXMgPiBTS0lMTF9DT05URU5UX01BWF9CWVRFU1xuICBjb25zdCBpc1ZhbGlkID0gISFuYW1lLnRyaW0oKSAmJiAhIWNvbnRlbnQudHJpbSgpICYmICFpc092ZXJMaW1pdFxuICBjb25zdCBoYXNDaGFuZ2VzID0gbmFtZS50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5uYW1lIHx8IGNvbnRlbnQudHJpbSgpICE9PSBpbml0aWFsUmVmLmN1cnJlbnQuY29udGVudFxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldElzT3BlbihmYWxzZSlcbiAgICBzZXRTaG93RGVsZXRlKGZhbHNlKVxuICAgIHNldFNob3dQcmV2aWV3KGZhbHNlKVxuICAgIHNldFBlbmRpbmdVcGxvYWQoZmFsc2UpXG4gICAgc2V0VmFsdWVzKGluaXRpYWxWYWx1ZXMpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUNsb3NlXVxuICApXG5cbiAgY29uc3Qgc2hvd1VzYWdlQmxvY2tlZEVycm9yID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgYmxvY2tlZCwgcXVvdGFFeGNlZWRlZE1lc3NhZ2UgfSA9IGdldFVzYWdlU3RvcmVTdGF0ZSgpXG4gICAgaWYgKCFibG9ja2VkKSByZXR1cm4gZmFsc2VcbiAgICBoYW5kbGVTbmFja2JhckVycm9yKHF1b3RhRXhjZWVkZWRNZXNzYWdlIHx8IHQoJ3VzYWdlQmxvY2tlZCcsIHsgZGVmYXVsdFZhbHVlOiAnVGUgcXVlZGFzdGUgc2luIHVzb3MgZGUgSUEuJyB9KSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRTa2lsbFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IHNraWxsVmFsdWVzIH0gPSBldmVudC5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGxWYWx1ZXMpIHJldHVyblxuXG4gICAgICBpZiAoZ2V0VXNhZ2VTdG9yZVN0YXRlKCkuYmxvY2tlZCkge1xuICAgICAgICBjb25zdCB7IHF1b3RhRXhjZWVkZWRNZXNzYWdlIH0gPSBnZXRVc2FnZVN0b3JlU3RhdGUoKVxuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHF1b3RhRXhjZWVkZWRNZXNzYWdlIHx8IHQoJ3VzYWdlQmxvY2tlZCcsIHsgZGVmYXVsdFZhbHVlOiAnVGUgcXVlZGFzdGUgc2luIHVzb3MgZGUgSUEuJyB9KSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBpbmNvbWluZ05hbWUgPSAoc2tpbGxWYWx1ZXMudmFsdWVzPy5nZW5lcmFsPy5uYW1lIHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nQ29udGVudCA9IChza2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWw/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxuICAgICAgLy8gRWRpdGluZyBhbiBleGlzdGluZyBza2lsbCAtPiBiYXNlbGluZSBpcyBpdHMgdmFsdWVzOyBjcmVhdGluZyAtPiBlbXB0eSBiYXNlbGluZS5cbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHNraWxsVmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nXG4gICAgICAgID8geyBuYW1lOiBpbmNvbWluZ05hbWUsIGNvbnRlbnQ6IGluY29taW5nQ29udGVudCB9XG4gICAgICAgIDogeyBuYW1lOiAnJywgY29udGVudDogJycgfVxuXG4gICAgICBzZXRWYWx1ZXMoe1xuICAgICAgICAuLi5pbml0aWFsVmFsdWVzLFxuICAgICAgICAuLi5za2lsbFZhbHVlcy52YWx1ZXMsXG4gICAgICAgIGdlbmVyYWw6IHsgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLCAuLi5za2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWwgfSxcbiAgICAgIH0pXG4gICAgICAvLyBDb24gY29udGVuaWRvIChlZGljacOzbiBvIHNraWxsIHlhIGdlbmVyYWRhKSBhcnJhbmNhbW9zIGVuIFwiVmlzdGEgcHJldmlhXCI7IHZhY8OtYSwgZW4gXCJFZGl0YXJcIi5cbiAgICAgIGNvbnN0IGhhc0NvbnRlbnQgPSAhIXNraWxsVmFsdWVzLnZhbHVlcz8uZ2VuZXJhbD8uY29udGVudD8udHJpbSgpXG4gICAgICBzZXRTaG93UHJldmlldyhoYXNDb250ZW50KVxuICAgICAgLy8gU2kgdmlubyBjb24gaW50ZW50IFwidXBsb2FkXCIsIGFicmltb3MgZWwgc2VsZWN0b3IgZGUgYXJjaGl2b3MgYWwgbW9udGFyLlxuICAgICAgc2V0UGVuZGluZ1VwbG9hZChza2lsbFZhbHVlcy52YWx1ZXM/LmludGVudCA9PT0gJ3VwbG9hZCcpXG4gICAgICBzZXRJc09wZW4oISFza2lsbFZhbHVlcy5pc09wZW4pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIFdoZW4gb3BlbmVkIHdpdGggdGhlIFwidXBsb2FkXCIgaW50ZW50LCBvcGVuIHRoZSBPUyBmaWxlIHBpY2tlciBvbmNlIG1vdW50ZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiBwZW5kaW5nVXBsb2FkKSB7XG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgICB9XG4gIH0sIFtpc09wZW4sIHBlbmRpbmdVcGxvYWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUZpZWxkID0gKGZpZWxkOiAnbmFtZScgfCAnY29udGVudCcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZmllbGQgPT09ICdjb250ZW50JyAmJiBpc1NraWxsQ29udGVudE92ZXJMaW1pdCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggLSBjb250ZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5jb250ZW50U2l6ZUVycm9yJykpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7IC4uLnByZXYuZ2VuZXJhbCwgW2ZpZWxkXTogdmFsdWUgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwbG9hZENsaWNrID0gKCkgPT4ge1xuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlQ2hhbmdlID0gYXN5bmMgKGV2ZW50OiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXM/LlswXVxuICAgIC8vIFJlc2V0IHRoZSBpbnB1dCAodmlhIHJlZikgc28gc2VsZWN0aW5nIHRoZSBzYW1lIGZpbGUgYWdhaW4gc3RpbGwgZmlyZXMgb25DaGFuZ2UuXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBjb25zdCBpc01hcmtkb3duID0gL1xcLihtZHxtYXJrZG93bikkL2kudGVzdChmaWxlLm5hbWUpXG4gICAgaWYgKCFpc01hcmtkb3duKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmlsZS5zaXplID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVMpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkU2l6ZUVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBpZiAoaXNTa2lsbENvbnRlbnRPdmVyTGltaXQodGV4dCkpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgY29udGVudDogdGV4dCxcbiAgICAgICAgICAvLyBPbmx5IGZpbGwgdGhlIG5hbWUgZnJvbSB0aGUgZmlsZW5hbWUgd2hlbiBpdCdzIHN0aWxsIGVtcHR5LlxuICAgICAgICAgIG5hbWU6IHByZXYuZ2VuZXJhbD8ubmFtZT8udHJpbSgpID8gcHJldi5nZW5lcmFsLm5hbWUgOiBiYXNlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0pKVxuICAgICAgLy8gVHJhcyBzdWJpciB1biAubWQgbW9zdHJhbW9zIGVsIHJlc3VsdGFkbyByZW5kZXJpemFkbyBwb3IgZGVmZWN0by5cbiAgICAgIHNldFNob3dQcmV2aWV3KHRydWUpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTYXZlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmcpIHJldHVyblxuICAgIGlmIChzaG93VXNhZ2VCbG9ja2VkRXJyb3IoKSkgcmV0dXJuXG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGlmICh2YWx1ZXMuaXNFZGl0aW5nICYmIHNraWxsSWQpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IHVwZGF0ZVNraWxsKHNraWxsSWQsIHsgbmFtZTogbmFtZS50cmltKCksIGNvbnRlbnQ6IGNvbnRlbnQudHJpbSgpIH0pXG4gICAgICAgIHVwZGF0ZVNraWxsSW5MaXN0Py4odXBkYXRlZClcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLnVwZGF0ZVN1Y2Nlc3MnKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBjcmVhdGVTa2lsbCh7IG5hbWU6IG5hbWUudHJpbSgpLCBjb250ZW50OiBjb250ZW50LnRyaW0oKSB9KVxuICAgICAgICBhZGRTa2lsbD8uKGNyZWF0ZWQpXG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5jcmVhdGVTdWNjZXNzJykpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLnVwZGF0ZUVycm9yJykgOiB0KCdteVNraWxscy5jcmVhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybURlbGV0ZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXNraWxsSWQpIHJldHVyblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVTa2lsbChza2lsbElkKVxuICAgICAgcmVtb3ZlU2tpbGw/Lihza2lsbElkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLmRlbGV0ZVN1Y2Nlc3MnKSlcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5kZWxldGVFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIGlmICghaXNPcGVuKSByZXR1cm4gbnVsbFxuICBpZiAoIWNhbkNyZWF0ZSAmJiAhY2FuRWRpdCAmJiAhY2FuRGVsZXRlKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKVxuICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuIG51bGxcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxCYWNrZHJvcCB6SW5kZXg9ezExMTJ9IG9uQ2xpY2s9e2hhbmRsZUJhY2tkcm9wQ2xpY2t9PlxuICAgICAgPFNDQVNNV3JhcHBlciBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX0+XG4gICAgICAgIDxTQ0FTTUhlYWRlcj5cbiAgICAgICAgICA8U0NBU01IZWFkZXJUaXRsZT57dmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLmVkaXRUaXRsZScpIDogdCgnbXlTa2lsbHMuY3JlYXRlVGl0bGUnKX08L1NDQVNNSGVhZGVyVGl0bGU+XG4gICAgICAgICAgPFNDQVNNQ2xvc2VCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfSBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5jbG9zZScpfT5cbiAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiNhNmE2YTZcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgPC9TQ0FTTUNsb3NlQnV0dG9uPlxuICAgICAgICA8L1NDQVNNSGVhZGVyPlxuXG4gICAgICAgIDxTQ0FTTUNvbnRlbnQ+XG4gICAgICAgICAgPFNDQVNNRmllbGQ+XG4gICAgICAgICAgICA8U0NBU01MYWJlbCBodG1sRm9yPVwic2tpbGwtbmFtZS1pbnB1dFwiPnt0KCdteVNraWxscy5uYW1lTGFiZWwnKX08L1NDQVNNTGFiZWw+XG4gICAgICAgICAgICA8U0NBU01JbnB1dFxuICAgICAgICAgICAgICBpZD1cInNraWxsLW5hbWUtaW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIG1heExlbmd0aD17MTUwfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMubmFtZVBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgIHZhbHVlPXtuYW1lfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gaGFuZGxlQ2hhbmdlRmllbGQoJ25hbWUnLCBldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQVNNRmllbGQ+XG5cbiAgICAgICAgICA8U0NBU01GaWVsZD5cbiAgICAgICAgICAgIDxTQ0FTTUZpZWxkSGVhZGVyPlxuICAgICAgICAgICAgICA8U0NBU01MYWJlbCBodG1sRm9yPVwic2tpbGwtY29udGVudC1pbnB1dFwiPnt0KCdteVNraWxscy5jb250ZW50TGFiZWwnKX08L1NDQVNNTGFiZWw+XG4gICAgICAgICAgICAgIDxTQ0FTTUhlYWRlckFjdGlvbnM+XG4gICAgICAgICAgICAgICAgPFNDQVNNVXBsb2FkQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVVcGxvYWRDbGlja30gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXBsb2FkTWQnKX1cbiAgICAgICAgICAgICAgICA8L1NDQVNNVXBsb2FkQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxTQ0FTTUhpZGRlbkZpbGVJbnB1dFxuICAgICAgICAgICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgICBhY2NlcHQ9XCIubWQsLm1hcmtkb3duLHRleHQvbWFya2Rvd25cIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8U0NBU01Ub2dnbGVHcm91cD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FTTVRvZ2dsZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17IXNob3dQcmV2aWV3fSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UHJldmlldyhmYWxzZSl9PlxuICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZWRpdCcpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FTTVRvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxTQ0FTTVRvZ2dsZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17c2hvd1ByZXZpZXd9IG9uQ2xpY2s9eygpID0+IHNldFNob3dQcmV2aWV3KHRydWUpfT5cbiAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnByZXZpZXcnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NBU01Ub2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TQ0FTTVRvZ2dsZUdyb3VwPlxuICAgICAgICAgICAgICA8L1NDQVNNSGVhZGVyQWN0aW9ucz5cbiAgICAgICAgICAgIDwvU0NBU01GaWVsZEhlYWRlcj5cbiAgICAgICAgICAgIHtzaG93UHJldmlldyA/IChcbiAgICAgICAgICAgICAgPFNDQVNNUHJldmlldz5cbiAgICAgICAgICAgICAgICB7Y29udGVudC50cmltKCkgPyAoXG4gICAgICAgICAgICAgICAgICA8TWFpYVN0cmVhbWRvd24gdmFyaWFudD1cInByZXZpZXdcIj57Y29udGVudH08L01haWFTdHJlYW1kb3duPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8U0NBU01QcmV2aWV3RW1wdHk+e3QoJ215U2tpbGxzLnByZXZpZXdFbXB0eScpfTwvU0NBU01QcmV2aWV3RW1wdHk+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9TQ0FTTVByZXZpZXc+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U0NBU01UZXh0YXJlYVxuICAgICAgICAgICAgICAgIGlkPVwic2tpbGwtY29udGVudC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLmNvbnRlbnRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjb250ZW50fVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCdjb250ZW50JywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8U0NBU01CeXRlQ291bnRlciAkb3ZlckxpbWl0PXtpc092ZXJMaW1pdH0gYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgIHt0KCdteVNraWxscy5ieXRlc0NvdW50ZXInLCB7XG4gICAgICAgICAgICAgICAgdXNlZDogZ2V0VW5pdEZpbGVTaXplKGNvbnRlbnRCeXRlcyksXG4gICAgICAgICAgICAgICAgbWF4OiBnZXRVbml0RmlsZVNpemUoU0tJTExfQ09OVEVOVF9NQVhfQllURVMpLFxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvU0NBU01CeXRlQ291bnRlcj5cbiAgICAgICAgICA8L1NDQVNNRmllbGQ+XG4gICAgICAgIDwvU0NBU01Db250ZW50PlxuXG4gICAgICAgIDxTQ0FTTUZvb3Rlcj5cbiAgICAgICAgICB7dmFsdWVzLmlzRWRpdGluZyAmJiBjYW5EZWxldGUgPyAoXG4gICAgICAgICAgICA8U0NBU01EZWxldGVTbG90PlxuICAgICAgICAgICAgICA8U0NBU01DYW5jZWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dEZWxldGUodHJ1ZSl9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5kZWxldGUnKX1cbiAgICAgICAgICAgICAgPC9TQ0FTTUNhbmNlbEJ1dHRvbj5cbiAgICAgICAgICAgIDwvU0NBU01EZWxldGVTbG90PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxTQ0FTTUNhbmNlbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAge3QoJ215U2tpbGxzLmNhbmNlbCcpfVxuICAgICAgICAgIDwvU0NBU01DYW5jZWxCdXR0b24+XG4gICAgICAgICAgPFNDQVNNU2F2ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlU2F2ZX0gZGlzYWJsZWQ9eyFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlc30+XG4gICAgICAgICAgICB7aXNTdWJtaXR0aW5nID8gPExvYWRlciBzaXplPVwic21hbGxcIiAvPiA6IHQoJ215U2tpbGxzLnNhdmUnKX1cbiAgICAgICAgICA8L1NDQVNNU2F2ZUJ1dHRvbj5cbiAgICAgICAgPC9TQ0FTTUZvb3Rlcj5cbiAgICAgIDwvU0NBU01XcmFwcGVyPlxuXG4gICAgICB7c2hvd0RlbGV0ZSAmJiBza2lsbElkID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbmFtZSwgaWQ6IHNraWxsSWQgfX1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBjb250YWluZXJcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLFNBQWtDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2xHLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsY0FBYyxRQUFRLDRCQUE0QjtBQUMzRCxTQUFTQyxRQUFRLFFBQVEsc0JBQXNCO0FBQy9DLFNBQVNDLE1BQU0sUUFBUSxvQkFBb0I7QUFD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
@@ -10,6 +10,7 @@ import { GlobalContext } from '../../../context/global-context';
10
10
  import { Features } from '../../atoms/WithFeatureValidation';
11
11
  import { withAppCfg } from '../../atoms/WithAppCfg';
12
12
  import { acquireChatsStore, releaseChatsStore } from '../../../store';
13
+ import { useUsageStore } from '../../../store/useUsageStore';
13
14
  import { readMaiaPanelSession } from '../../../store/maiaPanelSessionPersistence';
14
15
  import { ensureSessionNotificationsInitialized } from '../../../store/sessions/sessionNotifications';
15
16
  import { useUser } from '../../../context/cor-user';
@@ -111,9 +112,13 @@ export var ChatAI = withAppCfg(function (_ref) {
111
112
  useEffect(function () {
112
113
  acquireChatsStore();
113
114
  ensureSessionNotificationsInitialized();
115
+ useUsageStore.getState().fetchUsage()["catch"](function () {
116
+ return undefined;
117
+ });
114
118
  return function () {
115
119
  deepLinkSendPendingRef.current = false;
116
120
  releaseChatsStore();
121
+ useUsageStore.getState().reset();
117
122
  };
118
123
  }, [user.id, user.company_id, initialSection]);
119
124
  var applyHostOpenDetail = useCallback(function (detail) {
@@ -177,4 +182,4 @@ export var ChatAI = withAppCfg(function (_ref) {
177
182
  children: /*#__PURE__*/_jsx(ChatAIModal, {})
178
183
  });
179
184
  }, Features.CHAT_AI);
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VDYWxsYmFjayIsInVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIiwiQ2hhdEFJTW9kYWwiLCJHbG9iYWxDb250ZXh0IiwiRmVhdHVyZXMiLCJ3aXRoQXBwQ2ZnIiwiYWNxdWlyZUNoYXRzU3RvcmUiLCJyZWxlYXNlQ2hhdHNTdG9yZSIsInJlYWRNYWlhUGFuZWxTZXNzaW9uIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInVzZVVzZXIiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwianN4IiwiX2pzeCIsIm5vcm1hbGl6ZUJhbm5lckVudHJ5RmFxIiwiZmFxIiwiX2ZhcSRmYXFJZCIsIl9mYXEkZmFxVGl0bGUiLCJpZCIsImZhcUlkIiwidHJpbSIsInRpdGxlIiwiZmFxVGl0bGUiLCJjb250ZXh0RGF0YSIsIl90eXBlb2YiLCJ1bmRlZmluZWQiLCJfb2JqZWN0U3ByZWFkIiwiQ2hhdEFJIiwiX3JlZiIsIl9zYXZlZEhvc3RDb250ZXh0JHBybyIsImluaXRpYWxFbnRpdHkiLCJlbnRpdHkiLCJpbml0aWFsUHJvamVjdCIsInByb2plY3QiLCJpbml0aWFsQ2xpZW50IiwiY2xpZW50IiwiaW5pdGlhbFRhc2siLCJ0YXNrIiwiX3JlZiRoYXNNdWx0aUFnZW50cyIsImhhc011bHRpQWdlbnRzIiwiX3JlZiRzZWN0aW9uIiwic2VjdGlvbiIsImluaXRpYWxTZWN0aW9uIiwiX3JlZiRmYXEiLCJpbml0aWFsRmFxUHJvcCIsIl9yZWYkaW5pdGlhbERyYWZ0IiwiaW5pdGlhbERyYWZ0IiwiaW5pdGlhbERyYWZ0UHJvcCIsIl9yZWYkbWluaW1pemVkUGlsbEF2byIsIm1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJpbml0aWFsTWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyIsInVzZXIiLCJzYXZlZFNlc3Npb25Pbk1vdW50Iiwic2F2ZWRIb3N0Q29udGV4dCIsImlzRXhwYW5kZWQiLCJob3N0Q29udGV4dCIsIl91c2VTdGF0ZSIsIl9zYXZlZEhvc3RDb250ZXh0JHNlYyIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImhvc3RTZWN0aW9uIiwic2V0SG9zdFNlY3Rpb24iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImhvc3RFbnRpdHkiLCJzZXRIb3N0RW50aXR5IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJob3N0RmFxUHJvcCIsInNldEhvc3RGYXFQcm9wIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJob3N0SW5pdGlhbERyYWZ0UHJvcCIsInNldEhvc3RJbml0aWFsRHJhZnRQcm9wIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJob3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyIsInNldEhvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzIiwiX3VzZVN0YXRlMSIsIl9yZWYyIiwiX3NhdmVkSG9zdENvbnRleHQkY2xpIiwiX3VzZVN0YXRlMTAiLCJob3N0Q2xpZW50Iiwic2V0SG9zdENsaWVudCIsIl91c2VTdGF0ZTExIiwiX3JlZjMiLCJfc2F2ZWRIb3N0Q29udGV4dCR0YXMiLCJfdXNlU3RhdGUxMiIsImhvc3RUYXNrIiwic2V0SG9zdFRhc2siLCJpbml0aWFsUHJvamVjdFZhbHVlIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInNldFByb2plY3QiLCJfdXNlUHJvamVjdFN1bW1hcnlDb24iLCJjb250ZXh0IiwiZGVlcExpbmtTZW5kUGVuZGluZ1JlZiIsImN1cnJlbnQiLCJjb21wYW55X2lkIiwiYXBwbHlIb3N0T3BlbkRldGFpbCIsImRldGFpbCIsIl9kZXRhaWwkZmFxIiwiX2RldGFpbCRpbml0aWFsRHJhZnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9kZXRhaWwkdGFzayIsIm9uT3BlbkZyb21Ib3N0IiwiZXZlbnQiLCJfcmVmNCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJiYW5uZXJFbnRyeUZhcSIsImRyYWZ0IiwicHJvdmlkZXJWYWx1ZSIsIlByb3ZpZGVyIiwidmFsdWUiLCJjaGlsZHJlbiIsIkNIQVRfQUkiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcmdhbmlzbXMvQ2hhdEFJL0NoYXRBSS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlRWZmZWN0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdFN1bW1hcnlDb25maWcgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VQcm9qZWN0U3VtbWFyeUNvbmZpZydcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyBDaGF0QUlNb2RhbCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9DaGF0QUlNb2RhbCdcbmltcG9ydCB7IEdsb2JhbENvbnRleHQsIHR5cGUgQmFubmVyRW50cnlGYXEsIHR5cGUgTWluaW1pemVkUGlsbEF2b2lkQW5jaG9yIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEZlYXR1cmVzIH0gZnJvbSAnLi4vLi4vYXRvbXMvV2l0aEZlYXR1cmVWYWxpZGF0aW9uJ1xuaW1wb3J0IHsgd2l0aEFwcENmZyB9IGZyb20gJy4uLy4uL2F0b21zL1dpdGhBcHBDZmcnXG5pbXBvcnQgeyBhY3F1aXJlQ2hhdHNTdG9yZSwgcmVsZWFzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZSdcbmltcG9ydCB7IHJlYWRNYWlhUGFuZWxTZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYVBhbmVsU2Vzc2lvblBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25Ob3RpZmljYXRpb25zJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCB0eXBlIE1haWFIb3N0T3BlbkRldGFpbCwgdHlwZSBNYWlhSG9zdFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhSG9zdE9wZW4nXG5cbnR5cGUgQ2hhdEFJUHJvcHMgPSB7XG4gIGVudGl0eToge1xuICAgIHByb2plY3RJZDogc3RyaW5nIHwgbnVsbFxuICAgIGNsaWVudElkOiBzdHJpbmcgfCBudWxsXG4gIH1cbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICB0YXNrPzogVGFzayB8IG51bGxcbiAgaGFzTXVsdGlBZ2VudHM/OiBib29sZWFuXG4gIHNlY3Rpb24/OiBNYWlhSG9zdFNlY3Rpb25cbiAgLyoqIEJhbm5lciAvIGhvc3Q6IGFicmUgZWwgY2hhdCBlbnZpYW5kbyBsYSBGQVEgY29tbyBtZW5zYWplIHkgYFgtRmFxLUlkYCBlbiBlbCBvcmNoZXN0cmF0b3IgKi9cbiAgZmFxPzogQmFubmVyRW50cnlGYXEgfCBudWxsXG4gIGluaXRpYWxEcmFmdD86IHN0cmluZyB8IG51bGxcbiAgLyoqIFNlbGVjdG9yZXMgRE9NIGRlbCBob3N0IHF1ZSBlbCBwaWxsIG1pbmltaXphZG8gZGViZSBlc3F1aXZhciBhbCBlc3RhciB2aXNpYmxlLiAqL1xuICBtaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzPzogTWluaW1pemVkUGlsbEF2b2lkQW5jaG9yW11cbn1cblxuY29uc3Qgbm9ybWFsaXplQmFubmVyRW50cnlGYXEgPSAoZmFxOiBCYW5uZXJFbnRyeUZhcSB8IG51bGwgfCB1bmRlZmluZWQpOiBCYW5uZXJFbnRyeUZhcSB8IG51bGwgPT4ge1xuICBjb25zdCBpZCA9IGZhcT8uZmFxSWQ/LnRyaW0oKVxuICBjb25zdCB0aXRsZSA9IGZhcT8uZmFxVGl0bGU/LnRyaW0oKVxuICBpZiAoIXRpdGxlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBjb250ZXh0RGF0YSA9IGZhcT8uY29udGV4dERhdGEgIT0gbnVsbCAmJiB0eXBlb2YgZmFxLmNvbnRleHREYXRhID09PSAnb2JqZWN0JyA/IGZhcS5jb250ZXh0RGF0YSA6IHVuZGVmaW5lZFxuICByZXR1cm4ge1xuICAgIC4uLihpZCA/IHsgZmFxSWQ6IGlkIH0gOiB7fSksXG4gICAgZmFxVGl0bGU6IHRpdGxlLFxuICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJID0gd2l0aEFwcENmZyhcbiAgKHtcbiAgICBlbnRpdHk6IGluaXRpYWxFbnRpdHksXG4gICAgcHJvamVjdDogaW5pdGlhbFByb2plY3QsXG4gICAgY2xpZW50OiBpbml0aWFsQ2xpZW50LFxuICAgIHRhc2s6IGluaXRpYWxUYXNrLFxuICAgIGhhc011bHRpQWdlbnRzID0gZmFsc2UsXG4gICAgc2VjdGlvbjogaW5pdGlhbFNlY3Rpb24gPSAnaGVhZGVyJyxcbiAgICBmYXE6IGluaXRpYWxGYXFQcm9wID0gbnVsbCxcbiAgICBpbml0aWFsRHJhZnQ6IGluaXRpYWxEcmFmdFByb3AgPSBudWxsLFxuICAgIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM6IGluaXRpYWxNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzID0gW10sXG4gIH06IENoYXRBSVByb3BzKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICAgIGNvbnN0IHNhdmVkU2Vzc2lvbk9uTW91bnQgPSByZWFkTWFpYVBhbmVsU2Vzc2lvbih1c2VyLmlkKVxuICAgIGNvbnN0IHNhdmVkSG9zdENvbnRleHQgPSBzYXZlZFNlc3Npb25Pbk1vdW50Py5pc0V4cGFuZGVkID8gc2F2ZWRTZXNzaW9uT25Nb3VudC5ob3N0Q29udGV4dCA6IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgW2hvc3RTZWN0aW9uLCBzZXRIb3N0U2VjdGlvbl0gPSB1c2VTdGF0ZTxNYWlhSG9zdFNlY3Rpb24+KCgpID0+IHNhdmVkSG9zdENvbnRleHQ/LnNlY3Rpb24gPz8gaW5pdGlhbFNlY3Rpb24pXG4gICAgY29uc3QgW2hvc3RFbnRpdHksIHNldEhvc3RFbnRpdHldID0gdXNlU3RhdGUoaW5pdGlhbEVudGl0eSlcbiAgICBjb25zdCBbaG9zdEZhcVByb3AsIHNldEhvc3RGYXFQcm9wXSA9IHVzZVN0YXRlPEJhbm5lckVudHJ5RmFxIHwgbnVsbD4oaW5pdGlhbEZhcVByb3ApXG4gICAgY29uc3QgW2hvc3RJbml0aWFsRHJhZnRQcm9wLCBzZXRIb3N0SW5pdGlhbERyYWZ0UHJvcF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihpbml0aWFsRHJhZnRQcm9wKVxuICAgIGNvbnN0IFtob3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycywgc2V0SG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnNdID0gdXNlU3RhdGUoaW5pdGlhbE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMpXG4gICAgY29uc3QgW2hvc3RDbGllbnQsIHNldEhvc3RDbGllbnRdID0gdXNlU3RhdGU8Q2xpZW50IHwgbnVsbD4oKCkgPT4gc2F2ZWRIb3N0Q29udGV4dD8uY2xpZW50ID8/IGluaXRpYWxDbGllbnQgPz8gbnVsbClcbiAgICBjb25zdCBbaG9zdFRhc2ssIHNldEhvc3RUYXNrXSA9IHVzZVN0YXRlPFRhc2sgfCBudWxsPigoKSA9PiBzYXZlZEhvc3RDb250ZXh0Py50YXNrID8/IGluaXRpYWxUYXNrID8/IG51bGwpXG5cbiAgICBjb25zdCBpbml0aWFsUHJvamVjdFZhbHVlID1cbiAgICAgIHNhdmVkSG9zdENvbnRleHQ/LnByb2plY3QgPz8gKGhvc3RTZWN0aW9uID09PSAncHJvamVjdCcgfHwgaG9zdFNlY3Rpb24gPT09ICd0YXNrJyA/IGluaXRpYWxQcm9qZWN0IDogbnVsbClcbiAgICBjb25zdCBbcHJvamVjdCwgc2V0UHJvamVjdF0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4oaW5pdGlhbFByb2plY3RWYWx1ZSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoKGhvc3RTZWN0aW9uID09PSAncHJvamVjdCcgfHwgaG9zdFNlY3Rpb24gPT09ICd0YXNrJykgJiYgaW5pdGlhbFByb2plY3QgIT0gbnVsbCkge1xuICAgICAgICBzZXRQcm9qZWN0KGluaXRpYWxQcm9qZWN0KVxuICAgICAgfVxuICAgIH0sIFtob3N0U2VjdGlvbiwgaW5pdGlhbFByb2plY3RdKVxuXG4gICAgY29uc3QgeyBjb250ZXh0IH0gPSB1c2VQcm9qZWN0U3VtbWFyeUNvbmZpZyh7XG4gICAgICBzZWN0aW9uOiBob3N0U2VjdGlvbixcbiAgICAgIGVudGl0eTogaG9zdEVudGl0eSxcbiAgICAgIHByb2plY3QsXG4gICAgICBzZXRQcm9qZWN0LFxuICAgICAgY2xpZW50OiBob3N0U2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBob3N0Q2xpZW50IDogdW5kZWZpbmVkLFxuICAgICAgdGFzazogaG9zdFNlY3Rpb24gPT09ICd0YXNrJyA/IGhvc3RUYXNrIDogdW5kZWZpbmVkLFxuICAgICAgaGFzTXVsdGlBZ2VudHMsXG4gICAgfSlcbiAgICBjb25zdCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGFjcXVpcmVDaGF0c1N0b3JlKClcbiAgICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmVsZWFzZUNoYXRzU3RvcmUoKVxuICAgICAgfVxuICAgIH0sIFt1c2VyLmlkLCB1c2VyLmNvbXBhbnlfaWQsIGluaXRpYWxTZWN0aW9uXSlcblxuICAgIGNvbnN0IGFwcGx5SG9zdE9wZW5EZXRhaWwgPSB1c2VDYWxsYmFjaygoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIHNldEhvc3RTZWN0aW9uKGRldGFpbC5zZWN0aW9uKVxuICAgICAgc2V0SG9zdEVudGl0eShkZXRhaWwuZW50aXR5KVxuICAgICAgc2V0SG9zdEZhcVByb3AoZGV0YWlsLmZhcSA/PyBudWxsKVxuICAgICAgc2V0SG9zdEluaXRpYWxEcmFmdFByb3AoZGV0YWlsLmluaXRpYWxEcmFmdCA/PyBudWxsKVxuICAgICAgaWYgKGRldGFpbC5taW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzICE9IG51bGwpIHtcbiAgICAgICAgc2V0SG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMoZGV0YWlsLm1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0UHJvamVjdChkZXRhaWwucHJvamVjdCA/PyBudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldEhvc3RDbGllbnQoZGV0YWlsLmNsaWVudCA/PyBudWxsKVxuICAgICAgfSBlbHNlIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICdwbGFubmVyJykge1xuICAgICAgICBzZXRIb3N0Q2xpZW50KG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldEhvc3RUYXNrKGRldGFpbC50YXNrID8/IG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRIb3N0VGFzayhudWxsKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG9uT3BlbkZyb21Ib3N0ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8TWFpYUhvc3RPcGVuRGV0YWlsPlxuICAgICAgICBpZiAoIWRldGFpbCkgcmV0dXJuXG4gICAgICAgIGFwcGx5SG9zdE9wZW5EZXRhaWwoZGV0YWlsKVxuICAgICAgfVxuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9uT3BlbkZyb21Ib3N0KVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvbk9wZW5Gcm9tSG9zdClcbiAgICAgIH1cbiAgICB9LCBbYXBwbHlIb3N0T3BlbkRldGFpbF0pXG5cbiAgICBjb25zdCBiYW5uZXJFbnRyeUZhcSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBub3JtYWxpemVCYW5uZXJFbnRyeUZhcShob3N0RmFxUHJvcCksXG4gICAgICBbaG9zdEZhcVByb3A/LmZhcUlkLCBob3N0RmFxUHJvcD8uZmFxVGl0bGUsIGhvc3RGYXFQcm9wPy5jb250ZXh0RGF0YV1cbiAgICApXG5cbiAgICBjb25zdCBpbml0aWFsRHJhZnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGRyYWZ0ID0gaG9zdEluaXRpYWxEcmFmdFByb3A/LnRyaW0oKVxuICAgICAgcmV0dXJuIGRyYWZ0IHx8IG51bGxcbiAgICB9LCBbaG9zdEluaXRpYWxEcmFmdFByb3BdKVxuXG4gICAgY29uc3QgcHJvdmlkZXJWYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICAuLi5jb250ZXh0LFxuICAgICAgICBzZWN0aW9uOiBob3N0U2VjdGlvbixcbiAgICAgICAgYmFubmVyRW50cnlGYXEsXG4gICAgICAgIGluaXRpYWxEcmFmdCxcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZixcbiAgICAgICAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9yczogaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMsXG4gICAgICB9KSxcbiAgICAgIFtjb250ZXh0LCBob3N0U2VjdGlvbiwgYmFubmVyRW50cnlGYXEsIGluaXRpYWxEcmFmdCwgaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnNdXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxHbG9iYWxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm92aWRlclZhbHVlfT5cbiAgICAgICAgPENoYXRBSU1vZGFsIC8+XG4gICAgICA8L0dsb2JhbENvbnRleHQuUHJvdmlkZXI+XG4gICAgKVxuICB9LFxuICBGZWF0dXJlcy5DSEFUX0FJXG4pXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsU0FBU0EsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsU0FBUyxFQUFFQyxXQUFXLFFBQVEsT0FBTztBQUN6RSxTQUFTQyx1QkFBdUIsUUFBUSx3Q0FBd0M7QUFJaEYsU0FBU0MsV0FBVyxRQUFRLDZCQUE2QjtBQUN6RCxTQUFTQyxhQUFhLFFBQTRELGlDQUFpQztBQUNuSCxTQUFTQyxRQUFRLFFBQVEsbUNBQW1DO0FBQzVELFNBQVNDLFVBQVUsUUFBUSx3QkFBd0I7QUFDbkQsU0FBU0MsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLGdCQUFnQjtBQUNyRSxTQUFTQyxvQkFBb0IsUUFBUSw0Q0FBNEM7QUFDakYsU0FBU0MscUNBQXFDLFFBQVEsOENBQThDO0FBQ3BHLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MseUJBQXlCLFFB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SUFDN0IsQ0FBQztJQUVEUyxRQUFRLENBQUNDLGdCQUFnQixDQUFDbkcseUJBQXlCLEVBQUUrRixjQUFjLENBQUM7SUFDcEUsT0FBTyxZQUFNO01BQ1hHLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUNwRyx5QkFBeUIsRUFBRStGLGNBQWMsQ0FBQztJQUN6RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNQLG1CQUFtQixDQUFDLENBQUM7RUFFekIsSUFBTWEsY0FBYyxHQUFHbEgsT0FBTyxDQUM1QjtJQUFBLE9BQU1nQix1QkFBdUIsQ0FBQ3NELFdBQVcsQ0FBQztFQUFBLEdBQzFDLENBQUNBLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFakQsS0FBSyxFQUFFaUQsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUU5QyxRQUFRLEVBQUU4QyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRTdDLFdBQVcsQ0FDdEUsQ0FBQztFQUVELElBQU11QixZQUFZLEdBQUdoRCxPQUFPLENBQUMsWUFBTTtJQUNqQyxJQUFNbUgsS0FBSyxHQUFHekMsb0JBQW9CLGFBQXBCQSxvQkFBb0IsdUJBQXBCQSxvQkFBb0IsQ0FBRXBELElBQUksQ0FBQyxDQUFDO0lBQzFDLE9BQU82RixLQUFLLElBQUksSUFBSTtFQUN0QixDQUFDLEVBQUUsQ0FBQ3pDLG9CQUFvQixDQUFDLENBQUM7RUFFMUIsSUFBTTBDLGFBQWEsR0FBR3BILE9BQU8sQ0FDM0I7SUFBQSxPQUFBNEIsYUFBQSxDQUFBQSxhQUFBLEtBQ0txRSxPQUFPO01BQ1Z0RCxPQUFPLEVBQUVtQixXQUFXO01BQ3BCb0QsY0FBYyxFQUFkQSxjQUFjO01BQ2RsRSxZQUFZLEVBQVpBLFlBQVk7TUFDWmtELHNCQUFzQixFQUF0QkEsc0JBQXNCO01BQ3RCL0MseUJBQXlCLEVBQUUyQjtJQUE2QjtFQUFBLENBQ3hELEVBQ0YsQ0FBQ21CLE9BQU8sRUFBRW5DLFdBQVcsRUFBRW9ELGNBQWMsRUFBRWxFLFlBQVksRUFBRThCLDZCQUE2QixDQUNwRixDQUFDO0VBRUQsb0JBQ0UvRCxJQUFBLENBQUNWLGFBQWEsQ0FBQ2dILFFBQVE7SUFBQ0MsS0FBSyxFQUFFRixhQUFjO0lBQUFHLFFBQUEsZUFDM0N4RyxJQUFBLENBQUNYLFdBQVcsSUFBRTtFQUFDLENBQ08sQ0FBQztBQUU3QixDQUFDLEVBQ0RFLFFBQVEsQ0FBQ2tILE9BQ1gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
185
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VDYWxsYmFjayIsInVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIiwiQ2hhdEFJTW9kYWwiLCJHbG9iYWxDb250ZXh0IiwiRmVhdHVyZXMiLCJ3aXRoQXBwQ2ZnIiwiYWNxdWlyZUNoYXRzU3RvcmUiLCJyZWxlYXNlQ2hhdHNTdG9yZSIsInVzZVVzYWdlU3RvcmUiLCJyZWFkTWFpYVBhbmVsU2Vzc2lvbiIsImVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQiLCJ1c2VVc2VyIiwiTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCIsImpzeCIsIl9qc3giLCJub3JtYWxpemVCYW5uZXJFbnRyeUZhcSIsImZhcSIsIl9mYXEkZmFxSWQiLCJfZmFxJGZhcVRpdGxlIiwiaWQiLCJmYXFJZCIsInRyaW0iLCJ0aXRsZSIsImZhcVRpdGxlIiwiY29udGV4dERhdGEiLCJfdHlwZW9mIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIkNoYXRBSSIsIl9yZWYiLCJfc2F2ZWRIb3N0Q29udGV4dCRwcm8iLCJpbml0aWFsRW50aXR5IiwiZW50aXR5IiwiaW5pdGlhbFByb2plY3QiLCJwcm9qZWN0IiwiaW5pdGlhbENsaWVudCIsImNsaWVudCIsImluaXRpYWxUYXNrIiwidGFzayIsIl9yZWYkaGFzTXVsdGlBZ2VudHMiLCJoYXNNdWx0aUFnZW50cyIsIl9yZWYkc2VjdGlvbiIsInNlY3Rpb24iLCJpbml0aWFsU2VjdGlvbiIsIl9yZWYkZmFxIiwiaW5pdGlhbEZhcVByb3AiLCJfcmVmJGluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdFByb3AiLCJfcmVmJG1pbmltaXplZFBpbGxBdm8iLCJtaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzIiwiaW5pdGlhbE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJ1c2VyIiwic2F2ZWRTZXNzaW9uT25Nb3VudCIsInNhdmVkSG9zdENvbnRleHQiLCJpc0V4cGFuZGVkIiwiaG9zdENvbnRleHQiLCJfdXNlU3RhdGUiLCJfc2F2ZWRIb3N0Q29udGV4dCRzZWMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJob3N0U2VjdGlvbiIsInNldEhvc3RTZWN0aW9uIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJob3N0RW50aXR5Iiwic2V0SG9zdEVudGl0eSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaG9zdEZhcVByb3AiLCJzZXRIb3N0RmFxUHJvcCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaG9zdEluaXRpYWxEcmFmdFByb3AiLCJzZXRIb3N0SW5pdGlhbERyYWZ0UHJvcCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyIsIl91c2VTdGF0ZTEiLCJfcmVmMiIsIl9zYXZlZEhvc3RDb250ZXh0JGNsaSIsIl91c2VTdGF0ZTEwIiwiaG9zdENsaWVudCIsInNldEhvc3RDbGllbnQiLCJfdXNlU3RhdGUxMSIsIl9yZWYzIiwiX3NhdmVkSG9zdENvbnRleHQkdGFzIiwiX3VzZVN0YXRlMTIiLCJob3N0VGFzayIsInNldEhvc3RUYXNrIiwiaW5pdGlhbFByb2plY3RWYWx1ZSIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJzZXRQcm9qZWN0IiwiX3VzZVByb2plY3RTdW1tYXJ5Q29uIiwiY29udGV4dCIsImRlZXBMaW5rU2VuZFBlbmRpbmdSZWYiLCJnZXRTdGF0ZSIsImZldGNoVXNhZ2UiLCJjdXJyZW50IiwicmVzZXQiLCJjb21wYW55X2lkIiwiYXBwbHlIb3N0T3BlbkRldGFpbCIsImRldGFpbCIsIl9kZXRhaWwkZmFxIiwiX2RldGFpbCRpbml0aWFsRHJhZnQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9kZXRhaWwkdGFzayIsIm9uT3BlbkZyb21Ib3N0IiwiZXZlbnQiLCJfcmVmNCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJiYW5uZXJFbnRyeUZhcSIsImRyYWZ0IiwicHJvdmlkZXJWYWx1ZSIsIlByb3ZpZGVyIiwidmFsdWUiLCJjaGlsZHJlbiIsIkNIQVRfQUkiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9vcmdhbmlzbXMvQ2hhdEFJL0NoYXRBSS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlRWZmZWN0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdFN1bW1hcnlDb25maWcgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VQcm9qZWN0U3VtbWFyeUNvbmZpZydcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyBDaGF0QUlNb2RhbCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9DaGF0QUlNb2RhbCdcbmltcG9ydCB7IEdsb2JhbENvbnRleHQsIHR5cGUgQmFubmVyRW50cnlGYXEsIHR5cGUgTWluaW1pemVkUGlsbEF2b2lkQW5jaG9yIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEZlYXR1cmVzIH0gZnJvbSAnLi4vLi4vYXRvbXMvV2l0aEZlYXR1cmVWYWxpZGF0aW9uJ1xuaW1wb3J0IHsgd2l0aEFwcENmZyB9IGZyb20gJy4uLy4uL2F0b21zL1dpdGhBcHBDZmcnXG5pbXBvcnQgeyBhY3F1aXJlQ2hhdHNTdG9yZSwgcmVsZWFzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZSdcbmltcG9ydCB7IHVzZVVzYWdlU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VVc2FnZVN0b3JlJ1xuaW1wb3J0IHsgcmVhZE1haWFQYW5lbFNlc3Npb24gfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9tYWlhUGFuZWxTZXNzaW9uUGVyc2lzdGVuY2UnXG5pbXBvcnQgeyBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIHR5cGUgTWFpYUhvc3RPcGVuRGV0YWlsLCB0eXBlIE1haWFIb3N0U2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL21haWFIb3N0T3BlbidcblxudHlwZSBDaGF0QUlQcm9wcyA9IHtcbiAgZW50aXR5OiB7XG4gICAgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsXG4gICAgY2xpZW50SWQ6IHN0cmluZyB8IG51bGxcbiAgfVxuICBwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbFxuICBjbGllbnQ/OiBDbGllbnQgfCBudWxsXG4gIHRhc2s/OiBUYXNrIHwgbnVsbFxuICBoYXNNdWx0aUFnZW50cz86IGJvb2xlYW5cbiAgc2VjdGlvbj86IE1haWFIb3N0U2VjdGlvblxuICAvKiogQmFubmVyIC8gaG9zdDogYWJyZSBlbCBjaGF0IGVudmlhbmRvIGxhIEZBUSBjb21vIG1lbnNhamUgeSBgWC1GYXEtSWRgIGVuIGVsIG9yY2hlc3RyYXRvciAqL1xuICBmYXE/OiBCYW5uZXJFbnRyeUZhcSB8IG51bGxcbiAgaW5pdGlhbERyYWZ0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogU2VsZWN0b3JlcyBET00gZGVsIGhvc3QgcXVlIGVsIHBpbGwgbWluaW1pemFkbyBkZWJlIGVzcXVpdmFyIGFsIGVzdGFyIHZpc2libGUuICovXG4gIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM/OiBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JbXVxufVxuXG5jb25zdCBub3JtYWxpemVCYW5uZXJFbnRyeUZhcSA9IChmYXE6IEJhbm5lckVudHJ5RmFxIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEJhbm5lckVudHJ5RmFxIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGlkID0gZmFxPy5mYXFJZD8udHJpbSgpXG4gIGNvbnN0IHRpdGxlID0gZmFxPy5mYXFUaXRsZT8udHJpbSgpXG4gIGlmICghdGl0bGUpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNvbnRleHREYXRhID0gZmFxPy5jb250ZXh0RGF0YSAhPSBudWxsICYmIHR5cGVvZiBmYXEuY29udGV4dERhdGEgPT09ICdvYmplY3QnID8gZmFxLmNvbnRleHREYXRhIDogdW5kZWZpbmVkXG4gIHJldHVybiB7XG4gICAgLi4uKGlkID8geyBmYXFJZDogaWQgfSA6IHt9KSxcbiAgICBmYXFUaXRsZTogdGl0bGUsXG4gICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUkgPSB3aXRoQXBwQ2ZnKFxuICAoe1xuICAgIGVudGl0eTogaW5pdGlhbEVudGl0eSxcbiAgICBwcm9qZWN0OiBpbml0aWFsUHJvamVjdCxcbiAgICBjbGllbnQ6IGluaXRpYWxDbGllbnQsXG4gICAgdGFzazogaW5pdGlhbFRhc2ssXG4gICAgaGFzTXVsdGlBZ2VudHMgPSBmYWxzZSxcbiAgICBzZWN0aW9uOiBpbml0aWFsU2VjdGlvbiA9ICdoZWFkZXInLFxuICAgIGZhcTogaW5pdGlhbEZhcVByb3AgPSBudWxsLFxuICAgIGluaXRpYWxEcmFmdDogaW5pdGlhbERyYWZ0UHJvcCA9IG51bGwsXG4gICAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9yczogaW5pdGlhbE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMgPSBbXSxcbiAgfTogQ2hhdEFJUHJvcHMpID0+IHtcbiAgICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gICAgY29uc3Qgc2F2ZWRTZXNzaW9uT25Nb3VudCA9IHJlYWRNYWlhUGFuZWxTZXNzaW9uKHVzZXIuaWQpXG4gICAgY29uc3Qgc2F2ZWRIb3N0Q29udGV4dCA9IHNhdmVkU2Vzc2lvbk9uTW91bnQ/LmlzRXhwYW5kZWQgPyBzYXZlZFNlc3Npb25Pbk1vdW50Lmhvc3RDb250ZXh0IDogdW5kZWZpbmVkXG5cbiAgICBjb25zdCBbaG9zdFNlY3Rpb24sIHNldEhvc3RTZWN0aW9uXSA9IHVzZVN0YXRlPE1haWFIb3N0U2VjdGlvbj4oKCkgPT4gc2F2ZWRIb3N0Q29udGV4dD8uc2VjdGlvbiA/PyBpbml0aWFsU2VjdGlvbilcbiAgICBjb25zdCBbaG9zdEVudGl0eSwgc2V0SG9zdEVudGl0eV0gPSB1c2VTdGF0ZShpbml0aWFsRW50aXR5KVxuICAgIGNvbnN0IFtob3N0RmFxUHJvcCwgc2V0SG9zdEZhcVByb3BdID0gdXNlU3RhdGU8QmFubmVyRW50cnlGYXEgfCBudWxsPihpbml0aWFsRmFxUHJvcClcbiAgICBjb25zdCBbaG9zdEluaXRpYWxEcmFmdFByb3AsIHNldEhvc3RJbml0aWFsRHJhZnRQcm9wXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KGluaXRpYWxEcmFmdFByb3ApXG4gICAgY29uc3QgW2hvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzLCBzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9yc10gPSB1c2VTdGF0ZShpbml0aWFsTWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycylcbiAgICBjb25zdCBbaG9zdENsaWVudCwgc2V0SG9zdENsaWVudF0gPSB1c2VTdGF0ZTxDbGllbnQgfCBudWxsPigoKSA9PiBzYXZlZEhvc3RDb250ZXh0Py5jbGllbnQgPz8gaW5pdGlhbENsaWVudCA/PyBudWxsKVxuICAgIGNvbnN0IFtob3N0VGFzaywgc2V0SG9zdFRhc2tdID0gdXNlU3RhdGU8VGFzayB8IG51bGw+KCgpID0+IHNhdmVkSG9zdENvbnRleHQ/LnRhc2sgPz8gaW5pdGlhbFRhc2sgPz8gbnVsbClcblxuICAgIGNvbnN0IGluaXRpYWxQcm9qZWN0VmFsdWUgPVxuICAgICAgc2F2ZWRIb3N0Q29udGV4dD8ucHJvamVjdCA/PyAoaG9zdFNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBob3N0U2VjdGlvbiA9PT0gJ3Rhc2snID8gaW5pdGlhbFByb2plY3QgOiBudWxsKVxuICAgIGNvbnN0IFtwcm9qZWN0LCBzZXRQcm9qZWN0XSA9IHVzZVN0YXRlPFByb2plY3QgfCBudWxsPihpbml0aWFsUHJvamVjdFZhbHVlKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICgoaG9zdFNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBob3N0U2VjdGlvbiA9PT0gJ3Rhc2snKSAmJiBpbml0aWFsUHJvamVjdCAhPSBudWxsKSB7XG4gICAgICAgIHNldFByb2plY3QoaW5pdGlhbFByb2plY3QpXG4gICAgICB9XG4gICAgfSwgW2hvc3RTZWN0aW9uLCBpbml0aWFsUHJvamVjdF0pXG5cbiAgICBjb25zdCB7IGNvbnRleHQgfSA9IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnKHtcbiAgICAgIHNlY3Rpb246IGhvc3RTZWN0aW9uLFxuICAgICAgZW50aXR5OiBob3N0RW50aXR5LFxuICAgICAgcHJvamVjdCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBjbGllbnQ6IGhvc3RTZWN0aW9uID09PSAnY2xpZW50JyA/IGhvc3RDbGllbnQgOiB1bmRlZmluZWQsXG4gICAgICB0YXNrOiBob3N0U2VjdGlvbiA9PT0gJ3Rhc2snID8gaG9zdFRhc2sgOiB1bmRlZmluZWQsXG4gICAgICBoYXNNdWx0aUFnZW50cyxcbiAgICB9KVxuICAgIGNvbnN0IGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgYWNxdWlyZUNoYXRzU3RvcmUoKVxuICAgICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG4gICAgICB1c2VVc2FnZVN0b3JlXG4gICAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAgIC5mZXRjaFVzYWdlKClcbiAgICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlbGVhc2VDaGF0c1N0b3JlKClcbiAgICAgICAgdXNlVXNhZ2VTdG9yZS5nZXRTdGF0ZSgpLnJlc2V0KClcbiAgICAgIH1cbiAgICB9LCBbdXNlci5pZCwgdXNlci5jb21wYW55X2lkLCBpbml0aWFsU2VjdGlvbl0pXG5cbiAgICBjb25zdCBhcHBseUhvc3RPcGVuRGV0YWlsID0gdXNlQ2FsbGJhY2soKGRldGFpbDogTWFpYUhvc3RPcGVuRGV0YWlsKSA9PiB7XG4gICAgICBzZXRIb3N0U2VjdGlvbihkZXRhaWwuc2VjdGlvbilcbiAgICAgIHNldEhvc3RFbnRpdHkoZGV0YWlsLmVudGl0eSlcbiAgICAgIHNldEhvc3RGYXFQcm9wKGRldGFpbC5mYXEgPz8gbnVsbClcbiAgICAgIHNldEhvc3RJbml0aWFsRHJhZnRQcm9wKGRldGFpbC5pbml0aWFsRHJhZnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWwubWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyAhPSBudWxsKSB7XG4gICAgICAgIHNldEhvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzKGRldGFpbC5taW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFByb2plY3QoZGV0YWlsLnByb2plY3QgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAnY2xpZW50Jykge1xuICAgICAgICBzZXRIb3N0Q2xpZW50KGRldGFpbC5jbGllbnQgPz8gbnVsbClcbiAgICAgIH0gZWxzZSBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGRldGFpbC5zZWN0aW9uID09PSAncGxhbm5lcicpIHtcbiAgICAgICAgc2V0SG9zdENsaWVudChudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRIb3N0VGFzayhkZXRhaWwudGFzayA/PyBudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SG9zdFRhc2sobnVsbClcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBvbk9wZW5Gcm9tSG9zdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PE1haWFIb3N0T3BlbkRldGFpbD5cbiAgICAgICAgaWYgKCFkZXRhaWwpIHJldHVyblxuICAgICAgICBhcHBseUhvc3RPcGVuRGV0YWlsKGRldGFpbClcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvbk9wZW5Gcm9tSG9zdClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgb25PcGVuRnJvbUhvc3QpXG4gICAgICB9XG4gICAgfSwgW2FwcGx5SG9zdE9wZW5EZXRhaWxdKVxuXG4gICAgY29uc3QgYmFubmVyRW50cnlGYXEgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gbm9ybWFsaXplQmFubmVyRW50cnlGYXEoaG9zdEZhcVByb3ApLFxuICAgICAgW2hvc3RGYXFQcm9wPy5mYXFJZCwgaG9zdEZhcVByb3A/LmZhcVRpdGxlLCBob3N0RmFxUHJvcD8uY29udGV4dERhdGFdXG4gICAgKVxuXG4gICAgY29uc3QgaW5pdGlhbERyYWZ0ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBjb25zdCBkcmFmdCA9IGhvc3RJbml0aWFsRHJhZnRQcm9wPy50cmltKClcbiAgICAgIHJldHVybiBkcmFmdCB8fCBudWxsXG4gICAgfSwgW2hvc3RJbml0aWFsRHJhZnRQcm9wXSlcblxuICAgIGNvbnN0IHByb3ZpZGVyVmFsdWUgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgLi4uY29udGV4dCxcbiAgICAgICAgc2VjdGlvbjogaG9zdFNlY3Rpb24sXG4gICAgICAgIGJhbm5lckVudHJ5RmFxLFxuICAgICAgICBpbml0aWFsRHJhZnQsXG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYsXG4gICAgICAgIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM6IGhvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzLFxuICAgICAgfSksXG4gICAgICBbY29udGV4dCwgaG9zdFNlY3Rpb24sIGJhbm5lckVudHJ5RmFxLCBpbml0aWFsRHJhZnQsIGhvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzXVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8R2xvYmFsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cHJvdmlkZXJWYWx1ZX0+XG4gICAgICAgIDxDaGF0QUlNb2RhbCAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfSxcbiAgRmVhdHVyZXMuQ0hBVF9BSVxuKVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQVNBLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDekUsU0FBU0MsdUJBQXVCLFFBQVEsd0NBQXdDO0FBSWhGLFNBQVNDLFdBQVcsUUFBUSw2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