@projectcor/maia-components 2.42.1-3 → 2.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/lib/App.js +19 -44
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +14 -10
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +1 -1
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +37 -57
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +12 -18
- package/lib/components/index.js +1 -2
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +93 -6
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -21
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -9
- package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -29
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +1 -8
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -25
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +61 -65
- package/lib/components/molecules/ChatFooter/ChatFooter.js +3 -5
- package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +38 -6
- package/lib/constants/maiaExternalConnectorsAccess.js +10 -0
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/dev/DevReasoningTimeline.js +17 -11
- package/lib/dev/Providers.js +3 -5
- package/lib/hooks/useAgentModel/useCreateAgent.js +70 -15
- package/lib/hooks/useAgentModel/useUpdateAgent.js +67 -12
- package/lib/hooks/useChatManager/useChatManager.js +7 -7
- package/lib/hooks/useEvent.js +2 -1
- package/lib/hooks/useFrequentlyUsedActions.js +20 -63
- package/lib/index.js +2 -5
- package/lib/lang/br/index.js +9 -26
- package/lib/lang/en/index.js +9 -26
- package/lib/lang/es/index.js +9 -26
- package/lib/lang/fr/index.js +9 -26
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Agents/connectors.js +258 -0
- package/lib/store/sessions/sessionStreamManager.js +52 -40
- package/lib/styles/cascade.js +3 -29
- package/lib/styles/transitions.js +1 -3
- package/lib/types/agentModal.js +1 -1
- package/lib/types/global.d.js +1 -1
- package/lib/utils/hoursPlannerQuickActionType.js +1 -74
- package/lib/utils/normalizeAgentConnectors.js +28 -3
- package/lib/utils/streamActivityMessages.js +19 -32
- package/package.json +14 -18
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
- package/lib/components/atoms/Chip/Chip.spec.js +0 -82
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
- package/lib/components/atoms/Fade/Fade.spec.js +0 -31
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -303
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -58
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -68
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
- package/lib/components/atoms/Switch/Switch.spec.js +0 -41
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -77
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
- package/lib/components/molecules/AgentInputBlock/index.js +0 -5
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
- package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -291
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -148
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -112
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -234
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -335
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -231
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -267
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -261
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -194
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -105
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -73
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
- package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
- package/lib/components/organisms/ChatAIPage/index.js +0 -3
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
- package/lib/constants/permissions/utils.spec.js +0 -34
- package/lib/dev/DevMaiaPage.js +0 -30
- package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
- package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -95
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -96
- package/lib/hooks/useCaretPosition.spec.js +0 -58
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -279
- package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
- package/lib/hooks/useDebounce.spec.js +0 -42
- package/lib/hooks/useEvent.spec.js +0 -40
- package/lib/hooks/useIsMaiaPageRoute.js +0 -26
- package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
- package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
- package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
- package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
- package/lib/hooks/useModal/useModal.spec.js +0 -73
- package/lib/hooks/useResize.spec.js +0 -37
- package/lib/hooks/useSkillsCatalog.spec.js +0 -88
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
- package/lib/hooks/useT.spec.js +0 -20
- package/lib/hooks/useToggle.spec.js +0 -33
- package/lib/services/maia/Access/updateAccess.spec.js +0 -108
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
- package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -74
- package/lib/services/maia/Agents/createAgent.spec.js +0 -55
- package/lib/services/maia/Agents/deleteAgent.spec.js +0 -42
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
- package/lib/services/maia/Agents/getAgentById.spec.js +0 -55
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -82
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
- package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -47
- package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
- package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
- package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
- package/lib/services/maia/Chats/patchChat.spec.js +0 -41
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
- package/lib/services/maia/Knowledge/delete.spec.js +0 -45
- package/lib/services/maia/Knowledge/download.spec.js +0 -78
- package/lib/services/maia/Knowledge/save.spec.js +0 -58
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -72
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -83
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
- package/lib/services/maia/Skills/createSkill.spec.js +0 -68
- package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
- package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
- package/lib/services/maia/Skills/getSkills.spec.js +0 -152
- package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
- package/lib/services/maia/client.spec.js +0 -56
- package/lib/services/utils/fetchCOR.spec.js +0 -211
- package/lib/services/utils/getCookie.spec.js +0 -20
- package/lib/store/chatsSidebarOptimistic.spec.js +0 -120
- package/lib/store/maiaLastChatPersistence.spec.js +0 -22
- package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
- package/lib/store/sessions/sessions.types.spec.js +0 -16
- package/lib/store/sessions/useSessionsStore.spec.js +0 -135
- package/lib/store/useChatsStore.spec.js +0 -619
- package/lib/store/useFaqsStore.spec.js +0 -57
- package/lib/utils/agentDisplayName.spec.js +0 -44
- package/lib/utils/autoApproveStorage.spec.js +0 -25
- package/lib/utils/chatInputFiles.spec.js +0 -39
- package/lib/utils/contextMentionLabel.spec.js +0 -13
- package/lib/utils/contextMentionTriggers.spec.js +0 -38
- package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
- package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
- package/lib/utils/fileDownloadHelper.spec.js +0 -67
- package/lib/utils/formatQuickActionMessage.spec.js +0 -27
- package/lib/utils/formatUnreadCount.spec.js +0 -12
- package/lib/utils/getUnitFileSize.spec.js +0 -18
- package/lib/utils/hitlAnalytics.spec.js +0 -100
- package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
- package/lib/utils/maiaPageRoute.js +0 -24
- package/lib/utils/maiaPageRoute.spec.js +0 -23
- package/lib/utils/mapBackendLang.spec.js +0 -19
- package/lib/utils/navigateContextEntity.spec.js +0 -50
- package/lib/utils/normalizeAgentConnectors.spec.js +0 -89
- package/lib/utils/orchestratorSubagents.spec.js +0 -32
- package/lib/utils/reasoningMappers.spec.js +0 -103
- package/lib/utils/retryCompletion.spec.js +0 -99
- package/lib/utils/skillContentSize.spec.js +0 -13
- package/lib/utils/slashCommandMarker.spec.js +0 -43
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
- package/lib/utils/sseStreamContent.spec.js +0 -31
- package/lib/utils/streamActivityMessages.spec.js +0 -131
- package/lib/utils/validateTrimmedFields.spec.js +0 -26
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
|
2
|
+
import _toArray from "@babel/runtime/helpers/toArray";
|
|
3
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
+
import { fetchMaia } from '../client';
|
|
7
|
+
export var getAvailableConnectors = /*#__PURE__*/function () {
|
|
8
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
9
|
+
var response;
|
|
10
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
11
|
+
while (1) switch (_context.prev = _context.next) {
|
|
12
|
+
case 0:
|
|
13
|
+
_context.next = 1;
|
|
14
|
+
return fetchMaia({
|
|
15
|
+
path: 'connectors',
|
|
16
|
+
method: 'GET'
|
|
17
|
+
});
|
|
18
|
+
case 1:
|
|
19
|
+
response = _context.sent;
|
|
20
|
+
if (response.ok) {
|
|
21
|
+
_context.next = 2;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
throw new Error('Failed to fetch connectors');
|
|
25
|
+
case 2:
|
|
26
|
+
return _context.abrupt("return", response.json());
|
|
27
|
+
case 3:
|
|
28
|
+
case "end":
|
|
29
|
+
return _context.stop();
|
|
30
|
+
}
|
|
31
|
+
}, _callee);
|
|
32
|
+
}));
|
|
33
|
+
return function getAvailableConnectors() {
|
|
34
|
+
return _ref.apply(this, arguments);
|
|
35
|
+
};
|
|
36
|
+
}();
|
|
37
|
+
export var getAgentConnectors = /*#__PURE__*/function () {
|
|
38
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(agentId) {
|
|
39
|
+
var response;
|
|
40
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
41
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
42
|
+
case 0:
|
|
43
|
+
_context2.next = 1;
|
|
44
|
+
return fetchMaia({
|
|
45
|
+
path: "agents/".concat(agentId, "/connectors"),
|
|
46
|
+
method: 'GET'
|
|
47
|
+
});
|
|
48
|
+
case 1:
|
|
49
|
+
response = _context2.sent;
|
|
50
|
+
if (response.ok) {
|
|
51
|
+
_context2.next = 2;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
throw new Error('Failed to fetch agent connectors');
|
|
55
|
+
case 2:
|
|
56
|
+
return _context2.abrupt("return", response.json());
|
|
57
|
+
case 3:
|
|
58
|
+
case "end":
|
|
59
|
+
return _context2.stop();
|
|
60
|
+
}
|
|
61
|
+
}, _callee2);
|
|
62
|
+
}));
|
|
63
|
+
return function getAgentConnectors(_x) {
|
|
64
|
+
return _ref2.apply(this, arguments);
|
|
65
|
+
};
|
|
66
|
+
}();
|
|
67
|
+
export var saveAgentConnectors = /*#__PURE__*/function () {
|
|
68
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(agentId, connectorSlugs) {
|
|
69
|
+
var response;
|
|
70
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
71
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
72
|
+
case 0:
|
|
73
|
+
_context3.next = 1;
|
|
74
|
+
return fetchMaia({
|
|
75
|
+
path: "agents/".concat(agentId, "/connectors"),
|
|
76
|
+
method: 'POST',
|
|
77
|
+
body: {
|
|
78
|
+
connector_slugs: connectorSlugs
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
case 1:
|
|
82
|
+
response = _context3.sent;
|
|
83
|
+
if (response.ok) {
|
|
84
|
+
_context3.next = 2;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
throw new Error('Failed to save agent connectors');
|
|
88
|
+
case 2:
|
|
89
|
+
return _context3.abrupt("return", response.json());
|
|
90
|
+
case 3:
|
|
91
|
+
case "end":
|
|
92
|
+
return _context3.stop();
|
|
93
|
+
}
|
|
94
|
+
}, _callee3);
|
|
95
|
+
}));
|
|
96
|
+
return function saveAgentConnectors(_x2, _x3) {
|
|
97
|
+
return _ref3.apply(this, arguments);
|
|
98
|
+
};
|
|
99
|
+
}();
|
|
100
|
+
export var openConnectorAuthorizationWindows = function openConnectorAuthorizationWindows(authorizations, popupWindow) {
|
|
101
|
+
if (!authorizations.length) {
|
|
102
|
+
if (popupWindow && !popupWindow.closed) {
|
|
103
|
+
popupWindow.close();
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
var _authorizations = _toArray(authorizations),
|
|
108
|
+
firstAuthorization = _authorizations[0],
|
|
109
|
+
remainingAuthorizations = _arrayLikeToArray(_authorizations).slice(1);
|
|
110
|
+
var opened = null;
|
|
111
|
+
if (popupWindow && !popupWindow.closed) {
|
|
112
|
+
// Navegar el popup que ya abrimos en el click del usuario: si lo abriéramos
|
|
113
|
+
// acá, el browser lo bloquearía por no venir de un gesto.
|
|
114
|
+
// eslint-disable-next-line no-param-reassign
|
|
115
|
+
popupWindow.location.href = firstAuthorization.auth_url;
|
|
116
|
+
opened = popupWindow;
|
|
117
|
+
} else {
|
|
118
|
+
opened = window.open(firstAuthorization.auth_url, '_blank', 'popup=yes,width=560,height=760');
|
|
119
|
+
}
|
|
120
|
+
remainingAuthorizations.forEach(function (authorization) {
|
|
121
|
+
window.open(authorization.auth_url, '_blank', 'popup=yes,width=560,height=760');
|
|
122
|
+
});
|
|
123
|
+
return opened;
|
|
124
|
+
};
|
|
125
|
+
var isConnectorOAuthMessage = function isConnectorOAuthMessage(data) {
|
|
126
|
+
return !!data && _typeof(data) === 'object' && 'type' in data && data.type === 'connector-oauth';
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/** Waits until the OAuth popup finishes, then confirms the company token via GET. */
|
|
130
|
+
export var waitForConnectorAuthorization = /*#__PURE__*/function () {
|
|
131
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(_ref4) {
|
|
132
|
+
var agentId, slugs, popup, _ref4$timeoutMs, timeoutMs, pending, oauthError, authorizedSlugs;
|
|
133
|
+
return _regeneratorRuntime.wrap(function (_context6) {
|
|
134
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
135
|
+
case 0:
|
|
136
|
+
agentId = _ref4.agentId, slugs = _ref4.slugs, popup = _ref4.popup, _ref4$timeoutMs = _ref4.timeoutMs, timeoutMs = _ref4$timeoutMs === void 0 ? 180000 : _ref4$timeoutMs;
|
|
137
|
+
if (slugs.length) {
|
|
138
|
+
_context6.next = 1;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
return _context6.abrupt("return", {
|
|
142
|
+
authorized: []
|
|
143
|
+
});
|
|
144
|
+
case 1:
|
|
145
|
+
pending = new Set(slugs);
|
|
146
|
+
authorizedSlugs = /*#__PURE__*/function () {
|
|
147
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
148
|
+
var connectors;
|
|
149
|
+
return _regeneratorRuntime.wrap(function (_context4) {
|
|
150
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
151
|
+
case 0:
|
|
152
|
+
_context4.next = 1;
|
|
153
|
+
return getAgentConnectors(agentId);
|
|
154
|
+
case 1:
|
|
155
|
+
connectors = _context4.sent;
|
|
156
|
+
return _context4.abrupt("return", connectors.filter(function (connector) {
|
|
157
|
+
return pending.has(connector.slug) && connector.user_authorized;
|
|
158
|
+
}).map(function (connector) {
|
|
159
|
+
return connector.slug;
|
|
160
|
+
}));
|
|
161
|
+
case 2:
|
|
162
|
+
case "end":
|
|
163
|
+
return _context4.stop();
|
|
164
|
+
}
|
|
165
|
+
}, _callee4);
|
|
166
|
+
}));
|
|
167
|
+
return function authorizedSlugs() {
|
|
168
|
+
return _ref6.apply(this, arguments);
|
|
169
|
+
};
|
|
170
|
+
}();
|
|
171
|
+
return _context6.abrupt("return", new Promise(function (resolve) {
|
|
172
|
+
var finished = false;
|
|
173
|
+
// Declarados antes porque `finish` los limpia y a su vez los tres lo invocan.
|
|
174
|
+
// Para cuando alguno puede disparar, el bloque de abajo ya los asignó.
|
|
175
|
+
var onMessage;
|
|
176
|
+
var poll;
|
|
177
|
+
var timer;
|
|
178
|
+
var finish = /*#__PURE__*/function () {
|
|
179
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
|
|
180
|
+
var authorized, _t;
|
|
181
|
+
return _regeneratorRuntime.wrap(function (_context5) {
|
|
182
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
183
|
+
case 0:
|
|
184
|
+
if (!finished) {
|
|
185
|
+
_context5.next = 1;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
return _context5.abrupt("return");
|
|
189
|
+
case 1:
|
|
190
|
+
finished = true;
|
|
191
|
+
window.removeEventListener('message', onMessage);
|
|
192
|
+
window.clearInterval(poll);
|
|
193
|
+
window.clearTimeout(timer);
|
|
194
|
+
_context5.prev = 2;
|
|
195
|
+
_context5.next = 3;
|
|
196
|
+
return authorizedSlugs();
|
|
197
|
+
case 3:
|
|
198
|
+
authorized = _context5.sent;
|
|
199
|
+
resolve({
|
|
200
|
+
authorized: authorized,
|
|
201
|
+
error: authorized.length ? undefined : oauthError
|
|
202
|
+
});
|
|
203
|
+
_context5.next = 5;
|
|
204
|
+
break;
|
|
205
|
+
case 4:
|
|
206
|
+
_context5.prev = 4;
|
|
207
|
+
_t = _context5["catch"](2);
|
|
208
|
+
resolve({
|
|
209
|
+
authorized: [],
|
|
210
|
+
error: oauthError
|
|
211
|
+
});
|
|
212
|
+
case 5:
|
|
213
|
+
case "end":
|
|
214
|
+
return _context5.stop();
|
|
215
|
+
}
|
|
216
|
+
}, _callee5, null, [[2, 4]]);
|
|
217
|
+
}));
|
|
218
|
+
return function finish() {
|
|
219
|
+
return _ref7.apply(this, arguments);
|
|
220
|
+
};
|
|
221
|
+
}();
|
|
222
|
+
onMessage = function onMessage(event) {
|
|
223
|
+
if (!isConnectorOAuthMessage(event.data)) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (event.data.status === 'error') {
|
|
227
|
+
oauthError = event.data.message;
|
|
228
|
+
}
|
|
229
|
+
finish();
|
|
230
|
+
};
|
|
231
|
+
window.addEventListener('message', onMessage);
|
|
232
|
+
poll = window.setInterval(function () {
|
|
233
|
+
if (popup && popup.closed) {
|
|
234
|
+
finish();
|
|
235
|
+
}
|
|
236
|
+
}, 400);
|
|
237
|
+
timer = window.setTimeout(function () {
|
|
238
|
+
oauthError = oauthError || 'timeout';
|
|
239
|
+
finish();
|
|
240
|
+
}, timeoutMs);
|
|
241
|
+
}));
|
|
242
|
+
case 2:
|
|
243
|
+
case "end":
|
|
244
|
+
return _context6.stop();
|
|
245
|
+
}
|
|
246
|
+
}, _callee6);
|
|
247
|
+
}));
|
|
248
|
+
return function waitForConnectorAuthorization(_x4) {
|
|
249
|
+
return _ref5.apply(this, arguments);
|
|
250
|
+
};
|
|
251
|
+
}();
|
|
252
|
+
export var connectorAuthErrorMessage = function connectorAuthErrorMessage(error) {
|
|
253
|
+
if (error.slug === 'netsuite') {
|
|
254
|
+
return error.message;
|
|
255
|
+
}
|
|
256
|
+
return "".concat(error.name, ": ").concat(error.message);
|
|
257
|
+
};
|
|
258
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJnZXRBdmFpbGFibGVDb25uZWN0b3JzIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInBhdGgiLCJtZXRob2QiLCJzZW50Iiwib2siLCJFcnJvciIsImFicnVwdCIsImpzb24iLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJnZXRBZ2VudENvbm5lY3RvcnMiLCJfcmVmMiIsIl9jYWxsZWUyIiwiYWdlbnRJZCIsIl9jb250ZXh0MiIsImNvbmNhdCIsIl94Iiwic2F2ZUFnZW50Q29ubmVjdG9ycyIsIl9yZWYzIiwiX2NhbGxlZTMiLCJjb25uZWN0b3JTbHVncyIsIl9jb250ZXh0MyIsImJvZHkiLCJjb25uZWN0b3Jfc2x1Z3MiLCJfeDIiLCJfeDMiLCJvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MiLCJhdXRob3JpemF0aW9ucyIsInBvcHVwV2luZG93IiwibGVuZ3RoIiwiY2xvc2VkIiwiY2xvc2UiLCJfYXV0aG9yaXphdGlvbnMiLCJfdG9BcnJheSIsImZpcnN0QXV0aG9yaXphdGlvbiIsInJlbWFpbmluZ0F1dGhvcml6YXRpb25zIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJzbGljZSIsIm9wZW5lZCIsImxvY2F0aW9uIiwiaHJlZiIsImF1dGhfdXJsIiwid2luZG93Iiwib3BlbiIsImZvckVhY2giLCJhdXRob3JpemF0aW9uIiwiaXNDb25uZWN0b3JPQXV0aE1lc3NhZ2UiLCJkYXRhIiwiX3R5cGVvZiIsInR5cGUiLCJ3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiIsIl9yZWY1IiwiX2NhbGxlZTYiLCJfcmVmNCIsInNsdWdzIiwicG9wdXAiLCJfcmVmNCR0aW1lb3V0TXMiLCJ0aW1lb3V0TXMiLCJwZW5kaW5nIiwib2F1dGhFcnJvciIsImF1dGhvcml6ZWRTbHVncyIsIl9jb250ZXh0NiIsImF1dGhvcml6ZWQiLCJTZXQiLCJfcmVmNiIsIl9jYWxsZWU0IiwiY29ubmVjdG9ycyIsIl9jb250ZXh0NCIsImZpbHRlciIsImNvbm5lY3RvciIsImhhcyIsInNsdWciLCJ1c2VyX2F1dGhvcml6ZWQiLCJtYXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZpbmlzaGVkIiwib25NZXNzYWdlIiwicG9sbCIsInRpbWVyIiwiZmluaXNoIiwiX3JlZjciLCJfY2FsbGVlNSIsIl90IiwiX2NvbnRleHQ1IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJlcnJvciIsInVuZGVmaW5lZCIsImV2ZW50Iiwic3RhdHVzIiwibWVzc2FnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJzZXRJbnRlcnZhbCIsInNldFRpbWVvdXQiLCJfeDQiLCJjb25uZWN0b3JBdXRoRXJyb3JNZXNzYWdlIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcblxuZXhwb3J0IHR5cGUgQ2F0YWxvZ0Nvbm5lY3RvciA9IHtcbiAgaWQ6IG51bWJlclxuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGljb25fdXJsPzogc3RyaW5nXG4gIHJlcXVpcmVzX2F1dGg6IGJvb2xlYW5cbiAgaXNfYWN0aXZlOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEFnZW50Q29ubmVjdG9yID0gQ2F0YWxvZ0Nvbm5lY3RvciAmIHtcbiAgZW5hYmxlZF9mb3JfYWdlbnQ6IGJvb2xlYW5cbiAgdXNlcl9hdXRob3JpemVkOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFBlbmRpbmdDb25uZWN0b3JBdXRob3JpemF0aW9uID0ge1xuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIGF1dGhfdXJsOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ29ubmVjdG9yQXV0aEVycm9yID0ge1xuICBzbHVnOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIG1lc3NhZ2U6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTYXZlQWdlbnRDb25uZWN0b3JzUmVzcG9uc2UgPSB7XG4gIGFnZW50X2lkOiBzdHJpbmdcbiAgY29ubmVjdG9yX3NsdWdzOiBzdHJpbmdbXVxuICByZXF1aXJlc19hdXRoPzogUGVuZGluZ0Nvbm5lY3RvckF1dGhvcml6YXRpb25bXVxuICBhdXRoX2Vycm9ycz86IENvbm5lY3RvckF1dGhFcnJvcltdXG59XG5cbmV4cG9ydCBjb25zdCBnZXRBdmFpbGFibGVDb25uZWN0b3JzID0gYXN5bmMgKCk6IFByb21pc2U8Q2F0YWxvZ0Nvbm5lY3RvcltdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiAnY29ubmVjdG9ycycsXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmV4cG9ydCBjb25zdCBnZXRBZ2VudENvbm5lY3RvcnMgPSBhc3luYyAoYWdlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxBZ2VudENvbm5lY3RvcltdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiBgYWdlbnRzLyR7YWdlbnRJZH0vY29ubmVjdG9yc2AsXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggYWdlbnQgY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmV4cG9ydCBjb25zdCBzYXZlQWdlbnRDb25uZWN0b3JzID0gYXN5bmMgKFxuICBhZ2VudElkOiBzdHJpbmcsXG4gIGNvbm5lY3RvclNsdWdzOiBzdHJpbmdbXVxuKTogUHJvbWlzZTxTYXZlQWdlbnRDb25uZWN0b3JzUmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6IGBhZ2VudHMvJHthZ2VudElkfS9jb25uZWN0b3JzYCxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBib2R5OiB7XG4gICAgICBjb25uZWN0b3Jfc2x1Z3M6IGNvbm5lY3RvclNsdWdzLFxuICAgIH0sXG4gIH0pXG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHNhdmUgYWdlbnQgY29ubmVjdG9ycycpXG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpXG59XG5cbmV4cG9ydCBjb25zdCBvcGVuQ29ubmVjdG9yQXV0aG9yaXphdGlvbldpbmRvd3MgPSAoXG4gIGF1dGhvcml6YXRpb25zOiBQZW5kaW5nQ29ubmVjdG9yQXV0aG9yaXphdGlvbltdLFxuICBwb3B1cFdpbmRvdz86IFdpbmRvdyB8IG51bGxcbik6IFdpbmRvdyB8IG51bGwgPT4ge1xuICBpZiAoIWF1dGhvcml6YXRpb25zLmxlbmd0aCkge1xuICAgIGlmIChwb3B1cFdpbmRvdyAmJiAhcG9wdXBXaW5kb3cuY2xvc2VkKSB7XG4gICAgICBwb3B1cFdpbmRvdy5jbG9zZSgpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBbZmlyc3RBdXRob3JpemF0aW9uLCAuLi5yZW1haW5pbmdBdXRob3JpemF0aW9uc10gPSBhdXRob3JpemF0aW9uc1xuXG4gIGxldCBvcGVuZWQ6IFdpbmRvdyB8IG51bGwgPSBudWxsXG4gIGlmIChwb3B1cFdpbmRvdyAmJiAhcG9wdXBXaW5kb3cuY2xvc2VkKSB7XG4gICAgLy8gTmF2ZWdhciBlbCBwb3B1cCBxdWUgeWEgYWJyaW1vcyBlbiBlbCBjbGljayBkZWwgdXN1YXJpbzogc2kgbG8gYWJyacOpcmFtb3NcbiAgICAvLyBhY8OhLCBlbCBicm93c2VyIGxvIGJsb3F1ZWFyw61hIHBvciBubyB2ZW5pciBkZSB1biBnZXN0by5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICBwb3B1cFdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZmlyc3RBdXRob3JpemF0aW9uLmF1dGhfdXJsXG4gICAgb3BlbmVkID0gcG9wdXBXaW5kb3dcbiAgfSBlbHNlIHtcbiAgICBvcGVuZWQgPSB3aW5kb3cub3BlbihmaXJzdEF1dGhvcml6YXRpb24uYXV0aF91cmwsICdfYmxhbmsnLCAncG9wdXA9eWVzLHdpZHRoPTU2MCxoZWlnaHQ9NzYwJylcbiAgfVxuXG4gIHJlbWFpbmluZ0F1dGhvcml6YXRpb25zLmZvckVhY2goYXV0aG9yaXphdGlvbiA9PiB7XG4gICAgd2luZG93Lm9wZW4oYXV0aG9yaXphdGlvbi5hdXRoX3VybCwgJ19ibGFuaycsICdwb3B1cD15ZXMsd2lkdGg9NTYwLGhlaWdodD03NjAnKVxuICB9KVxuXG4gIHJldHVybiBvcGVuZWRcbn1cblxuY29uc3QgaXNDb25uZWN0b3JPQXV0aE1lc3NhZ2UgPSAoXG4gIGRhdGE6IHVua25vd25cbik6IGRhdGEgaXMgeyB0eXBlOiBzdHJpbmc7IHN0YXR1czogc3RyaW5nOyBzbHVnPzogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH0gPT5cbiAgISFkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAndHlwZScgaW4gZGF0YSAmJiAoZGF0YSBhcyB7IHR5cGU6IHN0cmluZyB9KS50eXBlID09PSAnY29ubmVjdG9yLW9hdXRoJ1xuXG4vKiogV2FpdHMgdW50aWwgdGhlIE9BdXRoIHBvcHVwIGZpbmlzaGVzLCB0aGVuIGNvbmZpcm1zIHRoZSBjb21wYW55IHRva2VuIHZpYSBHRVQuICovXG5leHBvcnQgY29uc3Qgd2FpdEZvckNvbm5lY3RvckF1dGhvcml6YXRpb24gPSBhc3luYyAoe1xuICBhZ2VudElkLFxuICBzbHVncyxcbiAgcG9wdXAsXG4gIHRpbWVvdXRNcyA9IDE4MF8wMDAsXG59OiB7XG4gIGFnZW50SWQ6IHN0cmluZ1xuICBzbHVnczogc3RyaW5nW11cbiAgcG9wdXA/OiBXaW5kb3cgfCBudWxsXG4gIHRpbWVvdXRNcz86IG51bWJlclxufSk6IFByb21pc2U8eyBhdXRob3JpemVkOiBzdHJpbmdbXTsgZXJyb3I/OiBzdHJpbmcgfT4gPT4ge1xuICBpZiAoIXNsdWdzLmxlbmd0aCkge1xuICAgIHJldHVybiB7IGF1dGhvcml6ZWQ6IFtdIH1cbiAgfVxuXG4gIGNvbnN0IHBlbmRpbmcgPSBuZXcgU2V0KHNsdWdzKVxuICBsZXQgb2F1dGhFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgYXV0aG9yaXplZFNsdWdzID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3RvcnMgPSBhd2FpdCBnZXRBZ2VudENvbm5lY3RvcnMoYWdlbnRJZClcbiAgICByZXR1cm4gY29ubmVjdG9yc1xuICAgICAgLmZpbHRlcihjb25uZWN0b3IgPT4gcGVuZGluZy5oYXMoY29ubmVjdG9yLnNsdWcpICYmIGNvbm5lY3Rvci51c2VyX2F1dGhvcml6ZWQpXG4gICAgICAubWFwKGNvbm5lY3RvciA9PiBjb25uZWN0b3Iuc2x1ZylcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuICAgIC8vIERlY2xhcmFkb3MgYW50ZXMgcG9ycXVlIGBmaW5pc2hgIGxvcyBsaW1waWEgeSBhIHN1IHZleiBsb3MgdHJlcyBsbyBpbnZvY2FuLlxuICAgIC8vIFBhcmEgY3VhbmRvIGFsZ3VubyBwdWVkZSBkaXNwYXJhciwgZWwgYmxvcXVlIGRlIGFiYWpvIHlhIGxvcyBhc2lnbsOzLlxuICAgIGxldCBvbk1lc3NhZ2U6IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB2b2lkXG4gICAgbGV0IHBvbGw6IG51bWJlclxuICAgIGxldCB0aW1lcjogbnVtYmVyXG5cbiAgICBjb25zdCBmaW5pc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoZmluaXNoZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBmaW5pc2hlZCA9IHRydWVcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25NZXNzYWdlKVxuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwocG9sbClcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBhdXRob3JpemVkID0gYXdhaXQgYXV0aG9yaXplZFNsdWdzKClcbiAgICAgICAgcmVzb2x2ZSh7IGF1dGhvcml6ZWQsIGVycm9yOiBhdXRob3JpemVkLmxlbmd0aCA/IHVuZGVmaW5lZCA6IG9hdXRoRXJyb3IgfSlcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXNvbHZlKHsgYXV0aG9yaXplZDogW10sIGVycm9yOiBvYXV0aEVycm9yIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgb25NZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmICghaXNDb25uZWN0b3JPQXV0aE1lc3NhZ2UoZXZlbnQuZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGF0YS5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgICAgb2F1dGhFcnJvciA9IGV2ZW50LmRhdGEubWVzc2FnZVxuICAgICAgfVxuICAgICAgZmluaXNoKClcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIG9uTWVzc2FnZSlcblxuICAgIHBvbGwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHBvcHVwICYmIHBvcHVwLmNsb3NlZCkge1xuICAgICAgICBmaW5pc2goKVxuICAgICAgfVxuICAgIH0sIDQwMClcblxuICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb2F1dGhFcnJvciA9IG9hdXRoRXJyb3IgfHwgJ3RpbWVvdXQnXG4gICAgICBmaW5pc2goKVxuICAgIH0sIHRpbWVvdXRNcylcbiAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGNvbm5lY3RvckF1dGhFcnJvck1lc3NhZ2UgPSAoZXJyb3I6IENvbm5lY3RvckF1dGhFcnJvcik6IHN0cmluZyA9PiB7XG4gIGlmIChlcnJvci5zbHVnID09PSAnbmV0c3VpdGUnKSB7XG4gICAgcmV0dXJuIGVycm9yLm1lc3NhZ2VcbiAgfVxuICByZXR1cm4gYCR7ZXJyb3IubmFtZX06ICR7ZXJyb3IubWVzc2FnZX1gXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsU0FBU0EsU0FBUyxRQUFRLFdBQVc7QUFvQ3JDLE9BQU8sSUFBTUMsc0JBQXNCO0VBQUEsSUFBQUMsSUFBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQUMsUUFBQTtJQUFBLElBQUFDLFFBQUE7SUFBQSxPQUFBSCxtQkFBQSxDQUFBSSxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ2JYLFNBQVMsQ0FBQztZQUMvQlksSUFBSSxFQUFFLFlBQVk7WUFDbEJDLE1BQU0sRUFBRTtVQUNWLENBQUMsQ0FBQztRQUFBO1VBSElOLFFBQVEsR0FBQUUsUUFBQSxDQUFBSyxJQUFBO1VBQUEsSUFLVFAsUUFBUSxDQUFDUSxFQUFFO1lBQUFOLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxNQUNSLElBQUlLLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQztRQUFBO1VBQUEsT0FBQVAsUUFBQSxDQUFBUSxNQUFBLFdBR3hDVixRQUFRLENBQUNXLElBQUksQ0FBQyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFULFFBQUEsQ0FBQVUsSUFBQTtNQUFBO0lBQUEsR0FBQWIsT0FBQTtFQUFBLENBQ3ZCO0VBQUEsZ0JBWFlMLHNCQUFzQkEsQ0FBQTtJQUFBLE9BQUFDLElBQUEsQ0FBQWtCLEtBQUEsT0FBQUMsU0FBQTtFQUFBO0FBQUEsR0FXbEM7QUFFRCxPQUFPLElBQU1DLGtCQUFrQjtFQUFBLElBQUFDLEtBQUEsR0FBQXBCLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBbUIsU0FBT0MsT0FBZTtJQUFBLElBQUFsQixRQUFBO0lBQUEsT0FBQUgsbUJBQUEsQ0FBQUksSUFBQSxXQUFBa0IsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFoQixJQUFBLEdBQUFnQixTQUFBLENBQUFmLElBQUE7UUFBQTtVQUFBZSxTQUFBLENBQUFmLElBQUE7VUFBQSxPQUMvQlgsU0FBUyxDQUFDO1lBQy9CWSxJQUFJLFlBQUFlLE1BQUEsQ0FBWUYsT0FBTyxnQkFBYTtZQUNwQ1osTUFBTSxFQUFFO1VBQ1YsQ0FBQyxDQUFDO1FBQUE7VUFISU4sUUFBUSxHQUFBbUIsU0FBQSxDQUFBWixJQUFBO1VBQUEsSUFLVFAsUUFBUSxDQUFDUSxFQUFFO1lBQUFXLFNBQUEsQ0FBQWYsSUFBQTtZQUFBO1VBQUE7VUFBQSxNQUNSLElBQUlLLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQztRQUFBO1VBQUEsT0FBQVUsU0FBQSxDQUFBVCxNQUFBLFdBRzlDVixRQUFRLENBQUNXLElBQUksQ0FBQyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFRLFNBQUEsQ0FBQVAsSUFBQTtNQUFBO0lBQUEsR0FBQUssUUFBQTtFQUFBLENBQ3ZCO0VBQUEsZ0JBWFlGLGtCQUFrQkEsQ0FBQU0sRUFBQTtJQUFBLE9BQUFMLEtBQUEsQ0FBQUgsS0FBQSxPQUFBQyxTQUFBO0VBQUE7QUFBQSxHQVc5QjtBQUVELE9BQU8sSUFBTVEsbUJBQW1CO0VBQUEsSUFBQUMsS0FBQSxHQUFBM0IsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUEwQixTQUNqQ04sT0FBZSxFQUNmTyxjQUF3QjtJQUFBLElBQUF6QixRQUFBO0lBQUEsT0FBQUgsbUJBQUEsQ0FBQUksSUFBQSxXQUFBeUIsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUF2QixJQUFBLEdBQUF1QixTQUFBLENBQUF0QixJQUFBO1FBQUE7VUFBQXNCLFNBQUEsQ0FBQXRCLElBQUE7VUFBQSxPQUVEWCxTQUFTLENBQUM7WUFDL0JZLElBQUksWUFBQWUsTUFBQSxDQUFZRixPQUFPLGdCQUFhO1lBQ3BDWixNQUFNLEVBQUUsTUFBTTtZQUNkcUIsSUFBSSxFQUFFO2NBQ0pDLGVBQWUsRUFBRUg7WUFDbkI7VUFDRixDQUFDLENBQUM7UUFBQTtVQU5JekIsUUFBUSxHQUFBMEIsU0FBQSxDQUFBbkIsSUFBQTtVQUFBLElBUVRQLFFBQVEsQ0FBQ1EsRUFBRTtZQUFBa0IsU0FBQSxDQUFBdEIsSUFBQTtZQUFBO1VBQUE7VUFBQSxNQUNSLElBQUlLLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQztRQUFBO1VBQUEsT0FBQWlCLFNBQUEsQ0FBQWhCLE1BQUEsV0FHN0NWLFFBQVEsQ0FBQ1csSUFBSSxDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQWUsU0FBQSxDQUFBZCxJQUFBO01BQUE7SUFBQSxHQUFBWSxRQUFBO0VBQUEsQ0FDdkI7RUFBQSxnQkFqQllGLG1CQUFtQkEsQ0FBQU8sR0FBQSxFQUFBQyxHQUFBO0lBQUEsT0FBQVAsS0FBQSxDQUFBVixLQUFBLE9BQUFDLFNBQUE7RUFBQTtBQUFBLEdBaUIvQjtBQUVELE9BQU8sSUFBTWlCLGlDQUFpQyxHQUFHLFNBQXBDQSxpQ0FBaUNBLENBQzVDQyxjQUErQyxFQUMvQ0MsV0FBMkIsRUFDVDtFQUNsQixJQUFJLENBQUNELGNBQWMsQ0FBQ0UsTUFBTSxFQUFFO0lBQzFCLElBQUlELFdBQVcsSUFBSSxDQUFDQSxXQUFXLENBQUNFLE1BQU0sRUFBRTtNQUN0Q0YsV0FBVyxDQUFDRyxLQUFLLENBQUMsQ0FBQztJQUNyQjtJQUNBLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBQUMsZUFBQSxHQUFBQyxRQUFBLENBQXlETixjQUFjO0lBQWhFTyxrQkFBa0IsR0FBQUYsZUFBQTtJQUFLRyx1QkFBdUIsR0FBQUMsaUJBQUEsQ0FBQUosZUFBQSxFQUFBSyxLQUFBO0VBRXJELElBQUlDLE1BQXFCLEdBQUcsSUFBSTtFQUNoQyxJQUFJVixXQUFXLElBQUksQ0FBQ0EsV0FBVyxDQUFDRSxNQUFNLEVBQUU7SUFDdEM7SUFDQTtJQUNBO0lBQ0FGLFdBQVcsQ0FBQ1csUUFBUSxDQUFDQyxJQUFJLEdBQUdOLGtCQUFrQixDQUFDTyxRQUFRO0lBQ3ZESCxNQUFNLEdBQUdWLFdBQVc7RUFDdEIsQ0FBQyxNQUFNO0lBQ0xVLE1BQU0sR0FBR0ksTUFBTSxDQUFDQyxJQUFJLENBQUNULGtCQUFrQixDQUFDTyxRQUFRLEVBQUUsUUFBUSxFQUFFLGdDQUFnQyxDQUFDO0VBQy9GO0VBRUFOLHVCQUF1QixDQUFDUyxPQUFPLENBQUMsVUFBQUMsYUFBYSxFQUFJO0lBQy9DSCxNQUFNLENBQUNDLElBQUksQ0FBQ0UsYUFBYSxDQUFDSixRQUFRLEVBQUUsUUFBUSxFQUFFLGdDQUFnQyxDQUFDO0VBQ2pGLENBQUMsQ0FBQztFQUVGLE9BQU9ILE1BQU07QUFDZixDQUFDO0FBRUQsSUFBTVEsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FDM0JDLElBQWE7RUFBQSxPQUViLENBQUMsQ0FBQ0EsSUFBSSxJQUFJQyxPQUFBLENBQU9ELElBQUksTUFBSyxRQUFRLElBQUksTUFBTSxJQUFJQSxJQUFJLElBQUtBLElBQUksQ0FBc0JFLElBQUksS0FBSyxpQkFBaUI7QUFBQTs7QUFFL0c7QUFDQSxPQUFPLElBQU1DLDZCQUE2QjtFQUFBLElBQUFDLEtBQUEsR0FBQTVELGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBMkQsU0FBQUMsS0FBQTtJQUFBLElBQUF4QyxPQUFBLEVBQUF5QyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsZUFBQSxFQUFBQyxTQUFBLEVBQUFDLE9BQUEsRUFBQUMsVUFBQSxFQUFBQyxlQUFBO0lBQUEsT0FBQXBFLG1CQUFBLENBQUFJLElBQUEsV0FBQWlFLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBL0QsSUFBQSxHQUFBK0QsU0FBQSxDQUFBOUQsSUFBQTtRQUFBO1VBQzNDYyxPQUFPLEdBQUF3QyxLQUFBLENBQVB4QyxPQUFPLEVBQ1B5QyxLQUFLLEdBQUFELEtBQUEsQ0FBTEMsS0FBSyxFQUNMQyxLQUFLLEdBQUFGLEtBQUEsQ0FBTEUsS0FBSyxFQUFBQyxlQUFBLEdBQUFILEtBQUEsQ0FDTEksU0FBUyxFQUFUQSxTQUFTLEdBQUFELGVBQUEsY0FBRyxNQUFPLEdBQUFBLGVBQUE7VUFBQSxJQU9kRixLQUFLLENBQUN6QixNQUFNO1lBQUFnQyxTQUFBLENBQUE5RCxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUE4RCxTQUFBLENBQUF4RCxNQUFBLFdBQ1I7WUFBRXlELFVBQVUsRUFBRTtVQUFHLENBQUM7UUFBQTtVQUdyQkosT0FBTyxHQUFHLElBQUlLLEdBQUcsQ0FBQ1QsS0FBSyxDQUFDO1VBR3hCTSxlQUFlO1lBQUEsSUFBQUksS0FBQSxHQUFBekUsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUF3RSxTQUFBO2NBQUEsSUFBQUMsVUFBQTtjQUFBLE9BQUExRSxtQkFBQSxDQUFBSSxJQUFBLFdBQUF1RSxTQUFBO2dCQUFBLGtCQUFBQSxTQUFBLENBQUFyRSxJQUFBLEdBQUFxRSxTQUFBLENBQUFwRSxJQUFBO2tCQUFBO29CQUFBb0UsU0FBQSxDQUFBcEUsSUFBQTtvQkFBQSxPQUNHVyxrQkFBa0IsQ0FBQ0csT0FBTyxDQUFDO2tCQUFBO29CQUE5Q3FELFVBQVUsR0FBQUMsU0FBQSxDQUFBakUsSUFBQTtvQkFBQSxPQUFBaUUsU0FBQSxDQUFBOUQsTUFBQSxXQUNUNkQsVUFBVSxDQUNkRSxNQUFNLENBQUMsVUFBQUMsU0FBUztzQkFBQSxPQUFJWCxPQUFPLENBQUNZLEdBQUcsQ0FBQ0QsU0FBUyxDQUFDRSxJQUFJLENBQUMsSUFBSUYsU0FBUyxDQUFDRyxlQUFlO29CQUFBLEVBQUMsQ0FDN0VDLEdBQUcsQ0FBQyxVQUFBSixTQUFTO3NCQUFBLE9BQUlBLFNBQVMsQ0FBQ0UsSUFBSTtvQkFBQSxFQUFDO2tCQUFBO2tCQUFBO29CQUFBLE9BQUFKLFNBQUEsQ0FBQTVELElBQUE7Z0JBQUE7Y0FBQSxHQUFBMEQsUUFBQTtZQUFBLENBQ3BDO1lBQUEsZ0JBTEtMLGVBQWVBLENBQUE7Y0FBQSxPQUFBSSxLQUFBLENBQUF4RCxLQUFBLE9BQUFDLFNBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQW9ELFNBQUEsQ0FBQXhELE1BQUEsV0FPZCxJQUFJcUUsT0FBTyxDQUFDLFVBQUFDLE9BQU8sRUFBSTtZQUM1QixJQUFJQyxRQUFRLEdBQUcsS0FBSztZQUNwQjtZQUNBO1lBQ0EsSUFBSUMsU0FBd0M7WUFDNUMsSUFBSUMsSUFBWTtZQUNoQixJQUFJQyxLQUFhO1lBRWpCLElBQU1DLE1BQU07Y0FBQSxJQUFBQyxLQUFBLEdBQUExRixpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQXlGLFNBQUE7Z0JBQUEsSUFBQXBCLFVBQUEsRUFBQXFCLEVBQUE7Z0JBQUEsT0FBQTNGLG1CQUFBLENBQUFJLElBQUEsV0FBQXdGLFNBQUE7a0JBQUEsa0JBQUFBLFNBQUEsQ0FBQXRGLElBQUEsR0FBQXNGLFNBQUEsQ0FBQXJGLElBQUE7b0JBQUE7c0JBQUEsS0FDVDZFLFFBQVE7d0JBQUFRLFNBQUEsQ0FBQXJGLElBQUE7d0JBQUE7c0JBQUE7c0JBQUEsT0FBQXFGLFNBQUEsQ0FBQS9FLE1BQUE7b0JBQUE7c0JBR1p1RSxRQUFRLEdBQUcsSUFBSTtzQkFDZmxDLE1BQU0sQ0FBQzJDLG1CQUFtQixDQUFDLFNBQVMsRUFBRVIsU0FBUyxDQUFDO3NCQUNoRG5DLE1BQU0sQ0FBQzRDLGFBQWEsQ0FBQ1IsSUFBSSxDQUFDO3NCQUMxQnBDLE1BQU0sQ0FBQzZDLFlBQVksQ0FBQ1IsS0FBSyxDQUFDO3NCQUFBSyxTQUFBLENBQUF0RixJQUFBO3NCQUFBc0YsU0FBQSxDQUFBckYsSUFBQTtzQkFBQSxPQUVDNkQsZUFBZSxDQUFDLENBQUM7b0JBQUE7c0JBQXBDRSxVQUFVLEdBQUFzQixTQUFBLENBQUFsRixJQUFBO3NCQUNoQnlFLE9BQU8sQ0FBQzt3QkFBRWIsVUFBVSxFQUFWQSxVQUFVO3dCQUFFMEIsS0FBSyxFQUFFMUIsVUFBVSxDQUFDakMsTUFBTSxHQUFHNEQsU0FBUyxHQUFHOUI7c0JBQVcsQ0FBQyxDQUFDO3NCQUFBeUIsU0FBQSxDQUFBckYsSUFBQTtzQkFBQTtvQkFBQTtzQkFBQXFGLFNBQUEsQ0FBQXRGLElBQUE7c0JBQUFxRixFQUFBLEdBQUFDLFNBQUE7c0JBRTFFVCxPQUFPLENBQUM7d0JBQUViLFVBQVUsRUFBRSxFQUFFO3dCQUFFMEIsS0FBSyxFQUFFN0I7c0JBQVcsQ0FBQyxDQUFDO29CQUFBO29CQUFBO3NCQUFBLE9BQUF5QixTQUFBLENBQUE3RSxJQUFBO2tCQUFBO2dCQUFBLEdBQUEyRSxRQUFBO2NBQUEsQ0FFakQ7Y0FBQSxnQkFkS0YsTUFBTUEsQ0FBQTtnQkFBQSxPQUFBQyxLQUFBLENBQUF6RSxLQUFBLE9BQUFDLFNBQUE7Y0FBQTtZQUFBLEdBY1g7WUFFRG9FLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJYSxLQUFtQixFQUFLO2NBQ25DLElBQUksQ0FBQzVDLHVCQUF1QixDQUFDNEMsS0FBSyxDQUFDM0MsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hDO2NBQ0Y7Y0FDQSxJQUFJMkMsS0FBSyxDQUFDM0MsSUFBSSxDQUFDNEMsTUFBTSxLQUFLLE9BQU8sRUFBRTtnQkFDakNoQyxVQUFVLEdBQUcrQixLQUFLLENBQUMzQyxJQUFJLENBQUM2QyxPQUFPO2NBQ2pDO2NBQ0FaLE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztZQUVEdEMsTUFBTSxDQUFDbUQsZ0JBQWdCLENBQUMsU0FBUyxFQUFFaEIsU0FBUyxDQUFDO1lBRTdDQyxJQUFJLEdBQUdwQyxNQUFNLENBQUNvRCxXQUFXLENBQUMsWUFBTTtjQUM5QixJQUFJdkMsS0FBSyxJQUFJQSxLQUFLLENBQUN6QixNQUFNLEVBQUU7Z0JBQ3pCa0QsTUFBTSxDQUFDLENBQUM7Y0FDVjtZQUNGLENBQUMsRUFBRSxHQUFHLENBQUM7WUFFUEQsS0FBSyxHQUFHckMsTUFBTSxDQUFDcUQsVUFBVSxDQUFDLFlBQU07Y0FDOUJwQyxVQUFVLEdBQUdBLFVBQVUsSUFBSSxTQUFTO2NBQ3BDcUIsTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDLEVBQUV2QixTQUFTLENBQUM7VUFDZixDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQUksU0FBQSxDQUFBdEQsSUFBQTtNQUFBO0lBQUEsR0FBQTZDLFFBQUE7RUFBQSxDQUNIO0VBQUEsZ0JBeEVZRiw2QkFBNkJBLENBQUE4QyxHQUFBO0lBQUEsT0FBQTdDLEtBQUEsQ0FBQTNDLEtBQUEsT0FBQUMsU0FBQTtFQUFBO0FBQUEsR0F3RXpDO0FBRUQsT0FBTyxJQUFNd0YseUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSVQsS0FBeUIsRUFBYTtFQUM5RSxJQUFJQSxLQUFLLENBQUNqQixJQUFJLEtBQUssVUFBVSxFQUFFO0lBQzdCLE9BQU9pQixLQUFLLENBQUNJLE9BQU87RUFDdEI7RUFDQSxVQUFBN0UsTUFBQSxDQUFVeUUsS0FBSyxDQUFDVSxJQUFJLFFBQUFuRixNQUFBLENBQUt5RSxLQUFLLENBQUNJLE9BQU87QUFDeEMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|