@projectcor/maia-components 2.11.54-0 → 2.11.54-1

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 (77) hide show
  1. package/lib/App.js +1 -1
  2. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +83 -0
  3. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +21 -0
  4. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +7 -0
  5. package/lib/components/atoms/AgentActivityIndicator/index.js +2 -0
  6. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +3 -2
  7. package/lib/components/atoms/Backdrop/Backdrop.js +2 -2
  8. package/lib/components/atoms/EntitySelector/EntitySelector.js +17 -9
  9. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +38 -0
  10. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +6 -2
  11. package/lib/components/atoms/Fade/Fade.js +56 -0
  12. package/lib/components/atoms/Fade/index.js +2 -0
  13. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +28 -17
  14. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +44 -0
  15. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +6 -2
  16. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +28 -17
  17. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +43 -0
  18. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +6 -2
  19. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +3 -2
  20. package/lib/components/atoms/ModalProject/ModalProject.style.js +3 -2
  21. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +3 -2
  22. package/lib/components/atoms/Skeleton/Skeleton.js +36 -0
  23. package/lib/components/atoms/Skeleton/index.js +2 -0
  24. package/lib/components/atoms/icons/MAIAIsologo.js +51 -9
  25. package/lib/components/atoms/index.js +4 -1
  26. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +3 -1
  27. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +10 -3
  28. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +7 -2
  29. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +20 -10
  30. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +6 -2
  31. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +26 -19
  32. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +51 -35
  33. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +187 -0
  34. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +70 -60
  35. package/lib/components/molecules/ChatAIHistory/styles.js +6 -2
  36. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +11 -18
  37. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +10 -5
  38. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +8 -4
  39. package/lib/components/molecules/ChatAIHome/styles.js +7 -3
  40. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +23 -10
  41. package/lib/components/molecules/ChatAIMessages/newStyles.js +4 -3
  42. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +4 -2
  43. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +2 -1
  44. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +9 -5
  45. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +4 -3
  46. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +8 -4
  47. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +14 -9
  48. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +24 -17
  49. package/lib/components/molecules/Sidebar/Sidebar.js +20 -8
  50. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -5
  51. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +48 -0
  52. package/lib/components/molecules/Sidebar/Sidebar.styles.js +20 -13
  53. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +9 -2
  54. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +8 -3
  55. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +3 -2
  56. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +3 -2
  57. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +3 -2
  58. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +3 -2
  59. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +3 -2
  60. package/lib/hooks/useChatManager/useChatManager.js +141 -44
  61. package/lib/hooks/useChatMessages/useChatMessages.js +10 -32
  62. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  63. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +195 -82
  64. package/lib/lang/br/index.js +56 -2
  65. package/lib/lang/en/index.js +56 -2
  66. package/lib/lang/es/index.js +56 -2
  67. package/lib/lang/fr/index.js +55 -1
  68. package/lib/services/maia/Chats/getChatMessages.js +4 -28
  69. package/lib/store/useChatsStore.js +2 -4
  70. package/lib/styles/cascade.js +14 -0
  71. package/lib/styles/transitions.js +21 -0
  72. package/lib/types/Chat.js +1 -1
  73. package/lib/types/streamActivity.js +2 -0
  74. package/lib/utils/debugMaiaSseLog.js +27 -0
  75. package/lib/utils/sseStreamContent.js +17 -0
  76. package/lib/utils/streamActivityMessages.js +361 -0
  77. package/package.json +1 -1
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Fusiona un chunk SSE con el texto acumulado.
3
+ * Si el backend reenvía el mensaje completo (evento `content` o token snapshot),
4
+ * reemplaza en lugar de concatenar para evitar duplicar texto.
5
+ */
6
+ export var mergeStreamChunk = function mergeStreamChunk(accumulated, chunk) {
7
+ if (!chunk) return accumulated;
8
+ if (!accumulated) return chunk;
9
+ if (chunk === accumulated) return accumulated;
10
+ if (chunk.startsWith(accumulated)) return chunk;
11
+ if (accumulated.startsWith(chunk)) return accumulated;
12
+ return accumulated + chunk;
13
+ };
14
+ export var isCompleteLikeSsePayload = function isCompleteLikeSsePayload(data) {
15
+ return data.memory_session_id != null && String(data.memory_session_id).trim() !== '';
16
+ };
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZXJnZVN0cmVhbUNodW5rIiwiYWNjdW11bGF0ZWQiLCJjaHVuayIsInN0YXJ0c1dpdGgiLCJpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQiLCJkYXRhIiwibWVtb3J5X3Nlc3Npb25faWQiLCJTdHJpbmciLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGdXNpb25hIHVuIGNodW5rIFNTRSBjb24gZWwgdGV4dG8gYWN1bXVsYWRvLlxuICogU2kgZWwgYmFja2VuZCByZWVudsOtYSBlbCBtZW5zYWplIGNvbXBsZXRvIChldmVudG8gYGNvbnRlbnRgIG8gdG9rZW4gc25hcHNob3QpLFxuICogcmVlbXBsYXphIGVuIGx1Z2FyIGRlIGNvbmNhdGVuYXIgcGFyYSBldml0YXIgZHVwbGljYXIgdGV4dG8uXG4gKi9cbmV4cG9ydCBjb25zdCBtZXJnZVN0cmVhbUNodW5rID0gKGFjY3VtdWxhdGVkOiBzdHJpbmcsIGNodW5rOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIWNodW5rKSByZXR1cm4gYWNjdW11bGF0ZWRcbiAgaWYgKCFhY2N1bXVsYXRlZCkgcmV0dXJuIGNodW5rXG4gIGlmIChjaHVuayA9PT0gYWNjdW11bGF0ZWQpIHJldHVybiBhY2N1bXVsYXRlZFxuICBpZiAoY2h1bmsuc3RhcnRzV2l0aChhY2N1bXVsYXRlZCkpIHJldHVybiBjaHVua1xuICBpZiAoYWNjdW11bGF0ZWQuc3RhcnRzV2l0aChjaHVuaykpIHJldHVybiBhY2N1bXVsYXRlZFxuICByZXR1cm4gYWNjdW11bGF0ZWQgKyBjaHVua1xufVxuXG5leHBvcnQgY29uc3QgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkID0gKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogYm9vbGVhbiA9PlxuICBkYXRhLm1lbW9yeV9zZXNzaW9uX2lkICE9IG51bGwgJiYgU3RyaW5nKGRhdGEubWVtb3J5X3Nlc3Npb25faWQpLnRyaW0oKSAhPT0gJydcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUEsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSUMsV0FBbUIsRUFBRUMsS0FBYSxFQUFhO0VBQzlFLElBQUksQ0FBQ0EsS0FBSyxFQUFFLE9BQU9ELFdBQVc7RUFDOUIsSUFBSSxDQUFDQSxXQUFXLEVBQUUsT0FBT0MsS0FBSztFQUM5QixJQUFJQSxLQUFLLEtBQUtELFdBQVcsRUFBRSxPQUFPQSxXQUFXO0VBQzdDLElBQUlDLEtBQUssQ0FBQ0MsVUFBVSxDQUFDRixXQUFXLENBQUMsRUFBRSxPQUFPQyxLQUFLO0VBQy9DLElBQUlELFdBQVcsQ0FBQ0UsVUFBVSxDQUFDRCxLQUFLLENBQUMsRUFBRSxPQUFPRCxXQUFXO0VBQ3JELE9BQU9BLFdBQVcsR0FBR0MsS0FBSztBQUM1QixDQUFDO0FBRUQsT0FBTyxJQUFNRSx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJQyxJQUE2QjtFQUFBLE9BQ3BFQSxJQUFJLENBQUNDLGlCQUFpQixJQUFJLElBQUksSUFBSUMsTUFBTSxDQUFDRixJQUFJLENBQUNDLGlCQUFpQixDQUFDLENBQUNFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUFBIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,361 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import { normalizeHitlToolName } from './hitlAnalytics';
3
+ import { logHitlApprovalContext } from './debugMaiaSseLog';
4
+ var THINKING_MESSAGE_KEYS = ['chat.activity.thinking.analyzing', 'chat.activity.thinking.reviewing', 'chat.activity.thinking.planning'];
5
+ var GENERATING_MESSAGE_KEYS = ['chat.activity.generating.considering', 'chat.activity.generating.almostReady', 'chat.activity.generating.preparing'];
6
+ var SEARCH_MESSAGE_KEYS = ['chat.activity.search.scanning', 'chat.activity.search.summarizing'];
7
+ var DEEP_SEARCH_MESSAGE_KEYS = ['chat.activity.deepSearch.exploring', 'chat.activity.deepSearch.crossChecking'];
8
+ var ATTACHMENT_MESSAGE_KEYS = ['chat.activity.attachment.reading', 'chat.activity.attachment.extracting'];
9
+ export var WRITING_ACTIVITY_MESSAGE_KEY = 'chat.activity.writing.composing';
10
+
11
+ /** Tools HITL / node SSE → key i18n del indicador de actividad (tiempo presente continuo). */
12
+ var HITL_TOOL_ACTIVITY_KEYS = {
13
+ create_task: 'chat.activity.creatingTask',
14
+ clone_task: 'chat.activity.creatingTask',
15
+ create_tasks_batch: 'chat.activity.creatingTasksBatch',
16
+ create_agent: 'chat.activity.creatingAgent',
17
+ edit_agent: 'chat.activity.editingAgent',
18
+ edit_task: 'chat.activity.editingTask',
19
+ edit_tasks_batch: 'chat.activity.editingTasksBatch',
20
+ delete_task: 'chat.activity.deletingTask',
21
+ delete_tasks_batch: 'chat.activity.deletingTasksBatch',
22
+ task_assign: 'chat.activity.assigningUser',
23
+ task_unassign: 'chat.activity.unassigningUser',
24
+ assign_task_label: 'chat.activity.assigningLabel',
25
+ update_task_type: 'chat.activity.updatingTaskType',
26
+ update_estimated_hours: 'chat.activity.updatingEstimatedHours',
27
+ update_deliverable: 'chat.activity.updatingDeliverable',
28
+ create_hour: 'chat.activity.loggingHours',
29
+ create_checklist: 'chat.activity.creatingChecklist',
30
+ get_task_date_hours: 'chat.activity.queryingHours',
31
+ configure_agent_access: 'chat.activity.configuringAgentAccess',
32
+ send_task_message: 'chat.activity.sendingTaskMessage',
33
+ delete_checklist_item: 'chat.activity.deletingChecklistItem',
34
+ remove_task_type: 'chat.activity.removingTaskType',
35
+ remove_task_label: 'chat.activity.removingLabel',
36
+ count_deliverable: 'chat.activity.updatingDeliverableCount',
37
+ create_rework: 'chat.activity.creatingRework',
38
+ update_rework: 'chat.activity.updatingRework'
39
+ };
40
+ var HITL_TOOL_NAMES_BY_SPECIFICITY = Object.keys(HITL_TOOL_ACTIVITY_KEYS).sort(function (a, b) {
41
+ return b.length - a.length;
42
+ });
43
+
44
+ /** Mensajes genéricos del backend cuando no hay detalle de tool (continue-thread). */
45
+ var isGenericResumeNodeMessage = function isGenericResumeNodeMessage(message) {
46
+ var normalized = message.trim().toLowerCase();
47
+ return normalized.startsWith('ejecutando acción aprobada') || normalized.startsWith('executing approved action') || normalized.startsWith('executando ação aprovada');
48
+ };
49
+ export var mapHitlToolNameToStreamActivity = function mapHitlToolNameToStreamActivity(toolName, t, options) {
50
+ var normalized = normalizeHitlToolName(toolName);
51
+ var key = HITL_TOOL_ACTIVITY_KEYS[normalized];
52
+ if (key) {
53
+ return {
54
+ phase: 'action',
55
+ message: t(key)
56
+ };
57
+ }
58
+ if (options !== null && options !== void 0 && options.useResumingFallback) {
59
+ return {
60
+ phase: 'action',
61
+ message: t('chat.activity.resumingAction')
62
+ };
63
+ }
64
+ return {
65
+ phase: 'action',
66
+ message: t('chat.executingAction')
67
+ };
68
+ };
69
+ var resolveHitlToolFromNodeMessage = function resolveHitlToolFromNodeMessage(nodeMessage) {
70
+ var normalized = nodeMessage.toLowerCase().trim();
71
+ if (!normalized) return null;
72
+ if (HITL_TOOL_ACTIVITY_KEYS[normalized]) {
73
+ return normalized;
74
+ }
75
+ var asToolName = normalizeHitlToolName(normalized.replace(/\s+/g, '_'));
76
+ if (HITL_TOOL_ACTIVITY_KEYS[asToolName]) {
77
+ return asToolName;
78
+ }
79
+ var matchedTool = HITL_TOOL_NAMES_BY_SPECIFICITY.find(function (toolName) {
80
+ return normalized.includes(toolName);
81
+ });
82
+ return matchedTool !== null && matchedTool !== void 0 ? matchedTool : null;
83
+ };
84
+ export var mapNodeMessageToStreamActivity = function mapNodeMessageToStreamActivity(nodeMessage, t, options) {
85
+ var normalized = nodeMessage.toLowerCase();
86
+ var hitlTool = resolveHitlToolFromNodeMessage(nodeMessage);
87
+ if (hitlTool) {
88
+ return mapHitlToolNameToStreamActivity(hitlTool, t, options);
89
+ }
90
+ if (normalized.includes('response_file_generation') || normalized.includes('generando archivo') || normalized.includes('generating file')) {
91
+ return {
92
+ phase: 'action',
93
+ message: t('chat.activity.generatingFile')
94
+ };
95
+ }
96
+ if (normalized.includes('tavily') || normalized.includes('search_web') || normalized.includes('buscando en la web') || normalized.includes('searching the web')) {
97
+ return {
98
+ phase: 'search',
99
+ message: t(SEARCH_MESSAGE_KEYS[0])
100
+ };
101
+ }
102
+ var trimmedMessage = nodeMessage.trim();
103
+ if (trimmedMessage && !isGenericResumeNodeMessage(trimmedMessage)) {
104
+ return {
105
+ phase: 'action',
106
+ message: trimmedMessage
107
+ };
108
+ }
109
+ if (isGenericResumeNodeMessage(trimmedMessage) || options !== null && options !== void 0 && options.useResumingFallback) {
110
+ return {
111
+ phase: 'action',
112
+ message: t('chat.activity.resumingAction')
113
+ };
114
+ }
115
+ return {
116
+ phase: 'action',
117
+ message: t('chat.executingAction')
118
+ };
119
+ };
120
+ var resolvePendingActionsForThread = function resolvePendingActionsForThread(context, threadId) {
121
+ var _ref, _context$pendingActio, _context$approval, _context$threadIds;
122
+ var pending = (_ref = (_context$pendingActio = context === null || context === void 0 ? void 0 : context.pendingActions) !== null && _context$pendingActio !== void 0 ? _context$pendingActio : context === null || context === void 0 || (_context$approval = context.approval) === null || _context$approval === void 0 ? void 0 : _context$approval.pending_actions) !== null && _ref !== void 0 ? _ref : [];
123
+ if (!pending.length) return [];
124
+ if (threadId) {
125
+ var forThread = pending.filter(function (action) {
126
+ return action.thread_id === threadId;
127
+ });
128
+ if (forThread.length) return forThread;
129
+ }
130
+ if (context !== null && context !== void 0 && (_context$threadIds = context.threadIds) !== null && _context$threadIds !== void 0 && _context$threadIds.length) {
131
+ return pending.filter(function (action) {
132
+ var _context$threadIds2;
133
+ return (_context$threadIds2 = context.threadIds) === null || _context$threadIds2 === void 0 ? void 0 : _context$threadIds2.includes(action.thread_id);
134
+ });
135
+ }
136
+ return pending;
137
+ };
138
+ var detectToolsFromPendingActions = function detectToolsFromPendingActions(actions) {
139
+ return _toConsumableArray(new Set(actions.map(function (action) {
140
+ return normalizeHitlToolName(action.tool_name);
141
+ }).filter(Boolean)));
142
+ };
143
+
144
+ /** Resuelve indicador HITL priorizando pending_actions del mensaje de aprobación anterior. */
145
+ export var resolveHitlNodeStreamActivity = function resolveHitlNodeStreamActivity(nodeMessage, t, context, threadId, options) {
146
+ var pendingForThread = resolvePendingActionsForThread(context, threadId);
147
+ var detectedTools = detectToolsFromPendingActions(pendingForThread);
148
+ if (options !== null && options !== void 0 && options.logSource) {
149
+ logHitlApprovalContext(options.logSource, {
150
+ messageId: context === null || context === void 0 ? void 0 : context.messageId,
151
+ messageText: context === null || context === void 0 ? void 0 : context.messageText,
152
+ threadId: threadId,
153
+ threadIds: context === null || context === void 0 ? void 0 : context.threadIds,
154
+ nodeMessage: nodeMessage,
155
+ pendingActions: pendingForThread,
156
+ detectedTools: detectedTools
157
+ });
158
+ }
159
+ var trimmedNodeMessage = nodeMessage.trim();
160
+ var activityFromNodeMessage = trimmedNodeMessage && !isGenericResumeNodeMessage(trimmedNodeMessage) ? {
161
+ phase: 'action',
162
+ message: trimmedNodeMessage
163
+ } : null;
164
+ var resolveAndLog = function resolveAndLog(activity) {
165
+ if (options !== null && options !== void 0 && options.logSource) {
166
+ logHitlApprovalContext("".concat(options.logSource, ":resolved"), {
167
+ detectedTools: detectedTools,
168
+ resolvedActivity: activity
169
+ });
170
+ }
171
+ return activity;
172
+ };
173
+ if (detectedTools.length >= 1) {
174
+ if (activityFromNodeMessage) {
175
+ return resolveAndLog(activityFromNodeMessage);
176
+ }
177
+ return resolveAndLog(mapHitlToolNameToStreamActivity(detectedTools[0], t, options));
178
+ }
179
+ return resolveAndLog(mapNodeMessageToStreamActivity(nodeMessage, t, options));
180
+ };
181
+ export var resolveInitialHitlStreamActivity = function resolveInitialHitlStreamActivity(t, context, options) {
182
+ var pendingActions = resolvePendingActionsForThread(context);
183
+ var detectedTools = detectToolsFromPendingActions(pendingActions);
184
+ if (options !== null && options !== void 0 && options.logSource) {
185
+ logHitlApprovalContext(options.logSource, {
186
+ messageId: context === null || context === void 0 ? void 0 : context.messageId,
187
+ messageText: context === null || context === void 0 ? void 0 : context.messageText,
188
+ threadIds: context === null || context === void 0 ? void 0 : context.threadIds,
189
+ pendingActions: pendingActions,
190
+ detectedTools: detectedTools
191
+ });
192
+ }
193
+ if (detectedTools.length >= 1) {
194
+ var activity = mapHitlToolNameToStreamActivity(detectedTools[0], t, {
195
+ useResumingFallback: true
196
+ });
197
+ if (options !== null && options !== void 0 && options.logSource) {
198
+ logHitlApprovalContext("".concat(options.logSource, ":resolved"), {
199
+ detectedTools: detectedTools,
200
+ resolvedActivity: activity
201
+ });
202
+ }
203
+ return activity;
204
+ }
205
+ return {
206
+ phase: 'processing',
207
+ message: t('chat.processing')
208
+ };
209
+ };
210
+ export var ACTIVITY_MESSAGE_ROTATE_MS = 3200;
211
+ var ROTATABLE_PHASES = ['generating', 'thinking', 'search', 'deep_search', 'attachment'];
212
+ var getMessageKeysForPhase = function getMessageKeysForPhase(phase) {
213
+ switch (phase) {
214
+ case 'generating':
215
+ return GENERATING_MESSAGE_KEYS;
216
+ case 'thinking':
217
+ return THINKING_MESSAGE_KEYS;
218
+ case 'search':
219
+ return SEARCH_MESSAGE_KEYS;
220
+ case 'deep_search':
221
+ return DEEP_SEARCH_MESSAGE_KEYS;
222
+ case 'attachment':
223
+ return ATTACHMENT_MESSAGE_KEYS;
224
+ default:
225
+ return null;
226
+ }
227
+ };
228
+ export var getStreamActivityMessageAtIndex = function getStreamActivityMessageAtIndex(phase, index, t) {
229
+ if (phase === 'writing') {
230
+ return t(WRITING_ACTIVITY_MESSAGE_KEY);
231
+ }
232
+ var keys = getMessageKeysForPhase(phase);
233
+ if (!(keys !== null && keys !== void 0 && keys.length)) {
234
+ return '';
235
+ }
236
+ var clampedIndex = Math.min(Math.max(0, index), keys.length - 1);
237
+ return t(keys[clampedIndex]);
238
+ };
239
+ export var getThinkingLoadingMessage = function getThinkingLoadingMessage(index, t) {
240
+ return getStreamActivityMessageAtIndex('thinking', index, t);
241
+ };
242
+ export var getGeneratingLoadingMessage = function getGeneratingLoadingMessage(index, t) {
243
+ return getStreamActivityMessageAtIndex('generating', index, t);
244
+ };
245
+ export var canAdvanceStreamActivityMessage = function canAdvanceStreamActivityMessage(phase, currentIndex) {
246
+ var keys = getMessageKeysForPhase(phase);
247
+ if (!keys) {
248
+ return false;
249
+ }
250
+ return currentIndex < keys.length - 1;
251
+ };
252
+ export var advanceStreamActivityMessage = function advanceStreamActivityMessage(activity, currentIndex, t) {
253
+ if (!canAdvanceStreamActivityMessage(activity.phase, currentIndex)) {
254
+ return null;
255
+ }
256
+ var nextIndex = currentIndex + 1;
257
+ return {
258
+ activity: {
259
+ phase: activity.phase,
260
+ message: getStreamActivityMessageAtIndex(activity.phase, nextIndex, t)
261
+ },
262
+ nextIndex: nextIndex
263
+ };
264
+ };
265
+ export var canRotateStreamActivityPhase = function canRotateStreamActivityPhase(phase) {
266
+ return ROTATABLE_PHASES.includes(phase);
267
+ };
268
+ export var getWritingStreamActivity = function getWritingStreamActivity(t) {
269
+ return {
270
+ phase: 'writing',
271
+ message: t(WRITING_ACTIVITY_MESSAGE_KEY)
272
+ };
273
+ };
274
+ export var getInitialStreamActivity = function getInitialStreamActivity(t, options) {
275
+ if (options.isWebSearchActive) {
276
+ return {
277
+ phase: 'search',
278
+ message: t(SEARCH_MESSAGE_KEYS[0])
279
+ };
280
+ }
281
+ if (options.isDeepSearchActive) {
282
+ return {
283
+ phase: 'deep_search',
284
+ message: t(DEEP_SEARCH_MESSAGE_KEYS[0])
285
+ };
286
+ }
287
+ if (options.hasAttachments) {
288
+ return {
289
+ phase: 'attachment',
290
+ message: t(ATTACHMENT_MESSAGE_KEYS[0])
291
+ };
292
+ }
293
+ return {
294
+ phase: 'generating',
295
+ message: t(GENERATING_MESSAGE_KEYS[0])
296
+ };
297
+ };
298
+ export var resolveStreamLoadingDisplay = function resolveStreamLoadingDisplay(params) {
299
+ if (params.streamActivity) {
300
+ return params.streamActivity;
301
+ }
302
+ var activeKeys = Object.keys(params.activeLoadings);
303
+ if (activeKeys.length > 0) {
304
+ var firstKey = activeKeys[0];
305
+ var raw = params.activeLoadings[firstKey];
306
+ if (raw && raw !== params.t('chat.processing')) {
307
+ var hitlTool = resolveHitlToolFromNodeMessage(raw);
308
+ if (hitlTool) {
309
+ return mapHitlToolNameToStreamActivity(hitlTool, params.t);
310
+ }
311
+ var trimmed = raw.trim();
312
+ if (trimmed && !isGenericResumeNodeMessage(trimmed)) {
313
+ return {
314
+ phase: 'action',
315
+ message: trimmed
316
+ };
317
+ }
318
+ return mapNodeMessageToStreamActivity(raw, params.t, {
319
+ useResumingFallback: true
320
+ });
321
+ }
322
+ return {
323
+ phase: 'processing',
324
+ message: params.t('chat.processing')
325
+ };
326
+ }
327
+ if (params.loadingMessage) {
328
+ if (params.loadingMessage === params.t('chat.writing') || params.loadingMessage === params.t(WRITING_ACTIVITY_MESSAGE_KEY)) {
329
+ return getWritingStreamActivity(params.t);
330
+ }
331
+ if (params.loadingMessage === params.t('chat.generating')) {
332
+ return {
333
+ phase: 'generating',
334
+ message: params.loadingMessage
335
+ };
336
+ }
337
+ if (params.loadingMessage === params.t('chat.generatingWebSearch') || params.loadingMessage === params.t('chat.generatingDeepSearch') || params.loadingMessage === params.t('chat.generatingAttachment')) {
338
+ return getInitialStreamActivity(params.t, {
339
+ isWebSearchActive: params.loadingMessage === params.t('chat.generatingWebSearch'),
340
+ isDeepSearchActive: params.loadingMessage === params.t('chat.generatingDeepSearch'),
341
+ hasAttachments: params.loadingMessage === params.t('chat.generatingAttachment')
342
+ });
343
+ }
344
+ return {
345
+ phase: 'action',
346
+ message: params.loadingMessage
347
+ };
348
+ }
349
+ if (params.waitingResponse) {
350
+ return getInitialStreamActivity(params.t, {
351
+ isWebSearchActive: params.isWebSearchActive,
352
+ isDeepSearchActive: params.isDeepSearchActive,
353
+ hasAttachments: params.hasAttachments
354
+ });
355
+ }
356
+ return null;
357
+ };
358
+ export var isStreamingPlaceholderMessageId = function isStreamingPlaceholderMessageId(messageId) {
359
+ return typeof messageId === 'string' && messageId.includes('-streaming');
360
+ };
361
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJsb2dIaXRsQXBwcm92YWxDb250ZXh0IiwiVEhJTktJTkdfTUVTU0FHRV9LRVlTIiwiR0VORVJBVElOR19NRVNTQUdFX0tFWVMiLCJTRUFSQ0hfTUVTU0FHRV9LRVlTIiwiREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTIiwiQVRUQUNITUVOVF9NRVNTQUdFX0tFWVMiLCJXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZIiwiSElUTF9UT09MX0FDVElWSVRZX0tFWVMiLCJjcmVhdGVfdGFzayIsImNsb25lX3Rhc2siLCJjcmVhdGVfdGFza3NfYmF0Y2giLCJjcmVhdGVfYWdlbnQiLCJlZGl0X2FnZW50IiwiZWRpdF90YXNrIiwiZWRpdF90YXNrc19iYXRjaCIsImRlbGV0ZV90YXNrIiwiZGVsZXRlX3Rhc2tzX2JhdGNoIiwidGFza19hc3NpZ24iLCJ0YXNrX3VuYXNzaWduIiwiYXNzaWduX3Rhc2tfbGFiZWwiLCJ1cGRhdGVfdGFza190eXBlIiwidXBkYXRlX2VzdGltYXRlZF9ob3VycyIsInVwZGF0ZV9kZWxpdmVyYWJsZSIsImNyZWF0ZV9ob3VyIiwiY3JlYXRlX2NoZWNrbGlzdCIsImdldF90YXNrX2RhdGVfaG91cnMiLCJjb25maWd1cmVfYWdlbnRfYWNjZXNzIiwic2VuZF90YXNrX21lc3NhZ2UiLCJkZWxldGVfY2hlY2tsaXN0X2l0ZW0iLCJyZW1vdmVfdGFza190eXBlIiwicmVtb3ZlX3Rhc2tfbGFiZWwiLCJjb3VudF9kZWxpdmVyYWJsZSIsImNyZWF0ZV9yZXdvcmsiLCJ1cGRhdGVfcmV3b3JrIiwiSElUTF9UT09MX05BTUVTX0JZX1NQRUNJRklDSVRZIiwiT2JqZWN0Iiwia2V5cyIsInNvcnQiLCJhIiwiYiIsImxlbmd0aCIsImlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlIiwibWVzc2FnZSIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJzdGFydHNXaXRoIiwibWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eSIsInRvb2xOYW1lIiwidCIsIm9wdGlvbnMiLCJrZXkiLCJwaGFzZSIsInVzZVJlc3VtaW5nRmFsbGJhY2siLCJyZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2UiLCJub2RlTWVzc2FnZSIsImFzVG9vbE5hbWUiLCJyZXBsYWNlIiwibWF0Y2hlZFRvb2wiLCJmaW5kIiwiaW5jbHVkZXMiLCJtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkiLCJoaXRsVG9vbCIsInRyaW1tZWRNZXNzYWdlIiwicmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkIiwiY29udGV4dCIsInRocmVhZElkIiwiX3JlZiIsIl9jb250ZXh0JHBlbmRpbmdBY3RpbyIsIl9jb250ZXh0JGFwcHJvdmFsIiwiX2NvbnRleHQkdGhyZWFkSWRzIiwicGVuZGluZyIsInBlbmRpbmdBY3Rpb25zIiwiYXBwcm92YWwiLCJwZW5kaW5nX2FjdGlvbnMiLCJmb3JUaHJlYWQiLCJmaWx0ZXIiLCJhY3Rpb24iLCJ0aHJlYWRfaWQiLCJ0aHJlYWRJZHMiLCJfY29udGV4dCR0aHJlYWRJZHMyIiwiZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMiLCJhY3Rpb25zIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwibWFwIiwidG9vbF9uYW1lIiwiQm9vbGVhbiIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicGVuZGluZ0ZvclRocmVhZCIsImRldGVjdGVkVG9vbHMiLCJsb2dTb3VyY2UiLCJtZXNzYWdlSWQiLCJtZXNzYWdlVGV4dCIsInRyaW1tZWROb2RlTWVzc2FnZSIsImFjdGl2aXR5RnJvbU5vZGVNZXNzYWdlIiwicmVzb2x2ZUFuZExvZyIsImFjdGl2aXR5IiwiY29uY2F0IiwicmVzb2x2ZWRBY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMiLCJST1RBVEFCTEVfUEhBU0VTIiwiZ2V0TWVzc2FnZUtleXNGb3JQaGFzZSIsImdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgiLCJpbmRleCIsImNsYW1wZWRJbmRleCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlIiwiZ2V0R2VuZXJhdGluZ0xvYWRpbmdNZXNzYWdlIiwiY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSIsImN1cnJlbnRJbmRleCIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJuZXh0SW5kZXgiLCJjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlIiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJoYXNBdHRhY2htZW50cyIsInJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSIsInBhcmFtcyIsInN0cmVhbUFjdGl2aXR5IiwiYWN0aXZlS2V5cyIsImFjdGl2ZUxvYWRpbmdzIiwiZmlyc3RLZXkiLCJyYXciLCJ0cmltbWVkIiwibG9hZGluZ01lc3NhZ2UiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtQWN0aXZpdHlQaGFzZSB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QsIFBlbmRpbmdBY3Rpb24gfSBmcm9tICcuLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgbm9ybWFsaXplSGl0bFRvb2xOYW1lIH0gZnJvbSAnLi9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHsgbG9nSGl0bEFwcHJvdmFsQ29udGV4dCB9IGZyb20gJy4vZGVidWdNYWlhU3NlTG9nJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxuY29uc3QgVEhJTktJTkdfTUVTU0FHRV9LRVlTID0gW1xuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5hbmFseXppbmcnLFxuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5yZXZpZXdpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5wbGFubmluZycsXG5dIGFzIGNvbnN0XG5cbmNvbnN0IEdFTkVSQVRJTkdfTUVTU0FHRV9LRVlTID0gW1xuICAnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nLmNvbnNpZGVyaW5nJyxcbiAgJ2NoYXQuYWN0aXZpdHkuZ2VuZXJhdGluZy5hbG1vc3RSZWFkeScsXG4gICdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmcucHJlcGFyaW5nJyxcbl0gYXMgY29uc3RcblxuY29uc3QgU0VBUkNIX01FU1NBR0VfS0VZUyA9IFsnY2hhdC5hY3Rpdml0eS5zZWFyY2guc2Nhbm5pbmcnLCAnY2hhdC5hY3Rpdml0eS5zZWFyY2guc3VtbWFyaXppbmcnXSBhcyBjb25zdFxuXG5jb25zdCBERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVMgPSBbXG4gICdjaGF0LmFjdGl2aXR5LmRlZXBTZWFyY2guZXhwbG9yaW5nJyxcbiAgJ2NoYXQuYWN0aXZpdHkuZGVlcFNlYXJjaC5jcm9zc0NoZWNraW5nJyxcbl0gYXMgY29uc3RcblxuY29uc3QgQVRUQUNITUVOVF9NRVNTQUdFX0tFWVMgPSBbJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5yZWFkaW5nJywgJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5leHRyYWN0aW5nJ10gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkgPSAnY2hhdC5hY3Rpdml0eS53cml0aW5nLmNvbXBvc2luZycgYXMgY29uc3RcblxuLyoqIFRvb2xzIEhJVEwgLyBub2RlIFNTRSDihpIga2V5IGkxOG4gZGVsIGluZGljYWRvciBkZSBhY3RpdmlkYWQgKHRpZW1wbyBwcmVzZW50ZSBjb250aW51bykuICovXG5jb25zdCBISVRMX1RPT0xfQUNUSVZJVFlfS0VZUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgY3JlYXRlX3Rhc2s6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nVGFzaycsXG4gIGNsb25lX3Rhc2s6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nVGFzaycsXG4gIGNyZWF0ZV90YXNrc19iYXRjaDogJ2NoYXQuYWN0aXZpdHkuY3JlYXRpbmdUYXNrc0JhdGNoJyxcbiAgY3JlYXRlX2FnZW50OiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ0FnZW50JyxcbiAgZWRpdF9hZ2VudDogJ2NoYXQuYWN0aXZpdHkuZWRpdGluZ0FnZW50JyxcbiAgZWRpdF90YXNrOiAnY2hhdC5hY3Rpdml0eS5lZGl0aW5nVGFzaycsXG4gIGVkaXRfdGFza3NfYmF0Y2g6ICdjaGF0LmFjdGl2aXR5LmVkaXRpbmdUYXNrc0JhdGNoJyxcbiAgZGVsZXRlX3Rhc2s6ICdjaGF0LmFjdGl2aXR5LmRlbGV0aW5nVGFzaycsXG4gIGRlbGV0ZV90YXNrc19iYXRjaDogJ2NoYXQuYWN0aXZpdHkuZGVsZXRpbmdUYXNrc0JhdGNoJyxcbiAgdGFza19hc3NpZ246ICdjaGF0LmFjdGl2aXR5LmFzc2lnbmluZ1VzZXInLFxuICB0YXNrX3VuYXNzaWduOiAnY2hhdC5hY3Rpdml0eS51bmFzc2lnbmluZ1VzZXInLFxuICBhc3NpZ25fdGFza19sYWJlbDogJ2NoYXQuYWN0aXZpdHkuYXNzaWduaW5nTGFiZWwnLFxuICB1cGRhdGVfdGFza190eXBlOiAnY2hhdC5hY3Rpdml0eS51cGRhdGluZ1Rhc2tUeXBlJyxcbiAgdXBkYXRlX2VzdGltYXRlZF9ob3VyczogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdFc3RpbWF0ZWRIb3VycycsXG4gIHVwZGF0ZV9kZWxpdmVyYWJsZTogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdEZWxpdmVyYWJsZScsXG4gIGNyZWF0ZV9ob3VyOiAnY2hhdC5hY3Rpdml0eS5sb2dnaW5nSG91cnMnLFxuICBjcmVhdGVfY2hlY2tsaXN0OiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ0NoZWNrbGlzdCcsXG4gIGdldF90YXNrX2RhdGVfaG91cnM6ICdjaGF0LmFjdGl2aXR5LnF1ZXJ5aW5nSG91cnMnLFxuICBjb25maWd1cmVfYWdlbnRfYWNjZXNzOiAnY2hhdC5hY3Rpdml0eS5jb25maWd1cmluZ0FnZW50QWNjZXNzJyxcbiAgc2VuZF90YXNrX21lc3NhZ2U6ICdjaGF0LmFjdGl2aXR5LnNlbmRpbmdUYXNrTWVzc2FnZScsXG4gIGRlbGV0ZV9jaGVja2xpc3RfaXRlbTogJ2NoYXQuYWN0aXZpdHkuZGVsZXRpbmdDaGVja2xpc3RJdGVtJyxcbiAgcmVtb3ZlX3Rhc2tfdHlwZTogJ2NoYXQuYWN0aXZpdHkucmVtb3ZpbmdUYXNrVHlwZScsXG4gIHJlbW92ZV90YXNrX2xhYmVsOiAnY2hhdC5hY3Rpdml0eS5yZW1vdmluZ0xhYmVsJyxcbiAgY291bnRfZGVsaXZlcmFibGU6ICdjaGF0LmFjdGl2aXR5LnVwZGF0aW5nRGVsaXZlcmFibGVDb3VudCcsXG4gIGNyZWF0ZV9yZXdvcms6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nUmV3b3JrJyxcbiAgdXBkYXRlX3Jld29yazogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdSZXdvcmsnLFxufVxuXG5jb25zdCBISVRMX1RPT0xfTkFNRVNfQllfU1BFQ0lGSUNJVFkgPSBPYmplY3Qua2V5cyhISVRMX1RPT0xfQUNUSVZJVFlfS0VZUykuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcblxuLyoqIE1lbnNhamVzIGdlbsOpcmljb3MgZGVsIGJhY2tlbmQgY3VhbmRvIG5vIGhheSBkZXRhbGxlIGRlIHRvb2wgKGNvbnRpbnVlLXRocmVhZCkuICovXG5jb25zdCBpc0dlbmVyaWNSZXN1bWVOb2RlTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgcmV0dXJuIChcbiAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2VqZWN1dGFuZG8gYWNjacOzbiBhcHJvYmFkYScpIHx8XG4gICAgbm9ybWFsaXplZC5zdGFydHNXaXRoKCdleGVjdXRpbmcgYXBwcm92ZWQgYWN0aW9uJykgfHxcbiAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2V4ZWN1dGFuZG8gYcOnw6NvIGFwcm92YWRhJylcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eSA9IChcbiAgdG9vbE5hbWU6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIG9wdGlvbnM/OiB7IHVzZVJlc3VtaW5nRmFsbGJhY2s/OiBib29sZWFuIH1cbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUhpdGxUb29sTmFtZSh0b29sTmFtZSlcbiAgY29uc3Qga2V5ID0gSElUTF9UT09MX0FDVElWSVRZX0tFWVNbbm9ybWFsaXplZF1cbiAgaWYgKGtleSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdChrZXkpIH1cbiAgfVxuICBpZiAob3B0aW9ucz8udXNlUmVzdW1pbmdGYWxsYmFjaykge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5hY3Rpdml0eS5yZXN1bWluZ0FjdGlvbicpIH1cbiAgfVxuICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJykgfVxufVxuXG5jb25zdCByZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2UgPSAobm9kZU1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9kZU1lc3NhZ2UudG9Mb3dlckNhc2UoKS50cmltKClcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4gbnVsbFxuXG4gIGlmIChISVRMX1RPT0xfQUNUSVZJVFlfS0VZU1tub3JtYWxpemVkXSkge1xuICAgIHJldHVybiBub3JtYWxpemVkXG4gIH1cblxuICBjb25zdCBhc1Rvb2xOYW1lID0gbm9ybWFsaXplSGl0bFRvb2xOYW1lKG5vcm1hbGl6ZWQucmVwbGFjZSgvXFxzKy9nLCAnXycpKVxuICBpZiAoSElUTF9UT09MX0FDVElWSVRZX0tFWVNbYXNUb29sTmFtZV0pIHtcbiAgICByZXR1cm4gYXNUb29sTmFtZVxuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFRvb2wgPSBISVRMX1RPT0xfTkFNRVNfQllfU1BFQ0lGSUNJVFkuZmluZCh0b29sTmFtZSA9PiBub3JtYWxpemVkLmluY2x1ZGVzKHRvb2xOYW1lKSlcbiAgcmV0dXJuIG1hdGNoZWRUb29sID8/IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IG1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eSA9IChcbiAgbm9kZU1lc3NhZ2U6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIG9wdGlvbnM/OiB7IHVzZVJlc3VtaW5nRmFsbGJhY2s/OiBib29sZWFuIH1cbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vZGVNZXNzYWdlLnRvTG93ZXJDYXNlKClcblxuICBjb25zdCBoaXRsVG9vbCA9IHJlc29sdmVIaXRsVG9vbEZyb21Ob2RlTWVzc2FnZShub2RlTWVzc2FnZSlcbiAgaWYgKGhpdGxUb29sKSB7XG4gICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoaGl0bFRvb2wsIHQsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAoXG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygncmVzcG9uc2VfZmlsZV9nZW5lcmF0aW9uJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdnZW5lcmFuZG8gYXJjaGl2bycpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnZ2VuZXJhdGluZyBmaWxlJylcbiAgKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmdGaWxlJykgfVxuICB9XG4gIGlmIChcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCd0YXZpbHknKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3NlYXJjaF93ZWInKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2J1c2NhbmRvIGVuIGxhIHdlYicpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnc2VhcmNoaW5nIHRoZSB3ZWInKVxuICApIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ3NlYXJjaCcsIG1lc3NhZ2U6IHQoU0VBUkNIX01FU1NBR0VfS0VZU1swXSkgfVxuICB9XG5cbiAgY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSBub2RlTWVzc2FnZS50cmltKClcbiAgaWYgKHRyaW1tZWRNZXNzYWdlICYmICFpc0dlbmVyaWNSZXN1bWVOb2RlTWVzc2FnZSh0cmltbWVkTWVzc2FnZSkpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHRyaW1tZWRNZXNzYWdlIH1cbiAgfVxuXG4gIGlmIChpc0dlbmVyaWNSZXN1bWVOb2RlTWVzc2FnZSh0cmltbWVkTWVzc2FnZSkgfHwgb3B0aW9ucz8udXNlUmVzdW1pbmdGYWxsYmFjaykge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5hY3Rpdml0eS5yZXN1bWluZ0FjdGlvbicpIH1cbiAgfVxuICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuZXhlY3V0aW5nQWN0aW9uJykgfVxufVxuXG5leHBvcnQgdHlwZSBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgbWVzc2FnZUlkPzogc3RyaW5nXG4gIG1lc3NhZ2VUZXh0Pzogc3RyaW5nXG4gIGFwcHJvdmFsPzogQXBwcm92YWxSZXF1ZXN0XG4gIHBlbmRpbmdBY3Rpb25zPzogUGVuZGluZ0FjdGlvbltdXG4gIHRocmVhZElkcz86IHN0cmluZ1tdXG59XG5cbmNvbnN0IHJlc29sdmVQZW5kaW5nQWN0aW9uc0ZvclRocmVhZCA9IChcbiAgY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkLFxuICB0aHJlYWRJZD86IHN0cmluZ1xuKTogUGVuZGluZ0FjdGlvbltdID0+IHtcbiAgY29uc3QgcGVuZGluZyA9IGNvbnRleHQ/LnBlbmRpbmdBY3Rpb25zID8/IGNvbnRleHQ/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgPz8gW11cbiAgaWYgKCFwZW5kaW5nLmxlbmd0aCkgcmV0dXJuIFtdXG5cbiAgaWYgKHRocmVhZElkKSB7XG4gICAgY29uc3QgZm9yVGhyZWFkID0gcGVuZGluZy5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQgPT09IHRocmVhZElkKVxuICAgIGlmIChmb3JUaHJlYWQubGVuZ3RoKSByZXR1cm4gZm9yVGhyZWFkXG4gIH1cblxuICBpZiAoY29udGV4dD8udGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gcGVuZGluZy5maWx0ZXIoYWN0aW9uID0+IGNvbnRleHQudGhyZWFkSWRzPy5pbmNsdWRlcyhhY3Rpb24udGhyZWFkX2lkKSlcbiAgfVxuXG4gIHJldHVybiBwZW5kaW5nXG59XG5cbmNvbnN0IGRldGVjdFRvb2xzRnJvbVBlbmRpbmdBY3Rpb25zID0gKGFjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IHN0cmluZ1tdID0+IFtcbiAgLi4ubmV3IFNldChhY3Rpb25zLm1hcChhY3Rpb24gPT4gbm9ybWFsaXplSGl0bFRvb2xOYW1lKGFjdGlvbi50b29sX25hbWUpKS5maWx0ZXIoQm9vbGVhbikpLFxuXVxuXG4vKiogUmVzdWVsdmUgaW5kaWNhZG9yIEhJVEwgcHJpb3JpemFuZG8gcGVuZGluZ19hY3Rpb25zIGRlbCBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIGFudGVyaW9yLiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5ID0gKFxuICBub2RlTWVzc2FnZTogc3RyaW5nLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgY29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbCxcbiAgdGhyZWFkSWQ/OiBzdHJpbmcsXG4gIG9wdGlvbnM/OiB7IHVzZVJlc3VtaW5nRmFsbGJhY2s/OiBib29sZWFuOyBsb2dTb3VyY2U/OiBzdHJpbmcgfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBwZW5kaW5nRm9yVGhyZWFkID0gcmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkKGNvbnRleHQsIHRocmVhZElkKVxuICBjb25zdCBkZXRlY3RlZFRvb2xzID0gZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMocGVuZGluZ0ZvclRocmVhZClcblxuICBpZiAob3B0aW9ucz8ubG9nU291cmNlKSB7XG4gICAgbG9nSGl0bEFwcHJvdmFsQ29udGV4dChvcHRpb25zLmxvZ1NvdXJjZSwge1xuICAgICAgbWVzc2FnZUlkOiBjb250ZXh0Py5tZXNzYWdlSWQsXG4gICAgICBtZXNzYWdlVGV4dDogY29udGV4dD8ubWVzc2FnZVRleHQsXG4gICAgICB0aHJlYWRJZCxcbiAgICAgIHRocmVhZElkczogY29udGV4dD8udGhyZWFkSWRzLFxuICAgICAgbm9kZU1lc3NhZ2UsXG4gICAgICBwZW5kaW5nQWN0aW9uczogcGVuZGluZ0ZvclRocmVhZCxcbiAgICAgIGRldGVjdGVkVG9vbHMsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHRyaW1tZWROb2RlTWVzc2FnZSA9IG5vZGVNZXNzYWdlLnRyaW0oKVxuICBjb25zdCBhY3Rpdml0eUZyb21Ob2RlTWVzc2FnZSA9XG4gICAgdHJpbW1lZE5vZGVNZXNzYWdlICYmICFpc0dlbmVyaWNSZXN1bWVOb2RlTWVzc2FnZSh0cmltbWVkTm9kZU1lc3NhZ2UpXG4gICAgICA/IHsgcGhhc2U6ICdhY3Rpb24nIGFzIGNvbnN0LCBtZXNzYWdlOiB0cmltbWVkTm9kZU1lc3NhZ2UgfVxuICAgICAgOiBudWxsXG5cbiAgY29uc3QgcmVzb2x2ZUFuZExvZyA9IChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkpID0+IHtcbiAgICBpZiAob3B0aW9ucz8ubG9nU291cmNlKSB7XG4gICAgICBsb2dIaXRsQXBwcm92YWxDb250ZXh0KGAke29wdGlvbnMubG9nU291cmNlfTpyZXNvbHZlZGAsIHtcbiAgICAgICAgZGV0ZWN0ZWRUb29scyxcbiAgICAgICAgcmVzb2x2ZWRBY3Rpdml0eTogYWN0aXZpdHksXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gYWN0aXZpdHlcbiAgfVxuXG4gIGlmIChkZXRlY3RlZFRvb2xzLmxlbmd0aCA+PSAxKSB7XG4gICAgaWYgKGFjdGl2aXR5RnJvbU5vZGVNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZUFuZExvZyhhY3Rpdml0eUZyb21Ob2RlTWVzc2FnZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVBbmRMb2cobWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eShkZXRlY3RlZFRvb2xzWzBdLCB0LCBvcHRpb25zKSlcbiAgfVxuXG4gIHJldHVybiByZXNvbHZlQW5kTG9nKG1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eShub2RlTWVzc2FnZSwgdCwgb3B0aW9ucykpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSA9IChcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIG9wdGlvbnM/OiB7IGxvZ1NvdXJjZT86IHN0cmluZyB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkKGNvbnRleHQpXG4gIGNvbnN0IGRldGVjdGVkVG9vbHMgPSBkZXRlY3RUb29sc0Zyb21QZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcblxuICBpZiAob3B0aW9ucz8ubG9nU291cmNlKSB7XG4gICAgbG9nSGl0bEFwcHJvdmFsQ29udGV4dChvcHRpb25zLmxvZ1NvdXJjZSwge1xuICAgICAgbWVzc2FnZUlkOiBjb250ZXh0Py5tZXNzYWdlSWQsXG4gICAgICBtZXNzYWdlVGV4dDogY29udGV4dD8ubWVzc2FnZVRleHQsXG4gICAgICB0aHJlYWRJZHM6IGNvbnRleHQ/LnRocmVhZElkcyxcbiAgICAgIHBlbmRpbmdBY3Rpb25zLFxuICAgICAgZGV0ZWN0ZWRUb29scyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGRldGVjdGVkVG9vbHMubGVuZ3RoID49IDEpIHtcbiAgICBjb25zdCBhY3Rpdml0eSA9IG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoZGV0ZWN0ZWRUb29sc1swXSwgdCwgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH0pXG4gICAgaWYgKG9wdGlvbnM/LmxvZ1NvdXJjZSkge1xuICAgICAgbG9nSGl0bEFwcHJvdmFsQ29udGV4dChgJHtvcHRpb25zLmxvZ1NvdXJjZX06cmVzb2x2ZWRgLCB7XG4gICAgICAgIGRldGVjdGVkVG9vbHMsXG4gICAgICAgIHJlc29sdmVkQWN0aXZpdHk6IGFjdGl2aXR5LFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2aXR5XG4gIH1cblxuICByZXR1cm4geyBwaGFzZTogJ3Byb2Nlc3NpbmcnLCBtZXNzYWdlOiB0KCdjaGF0LnByb2Nlc3NpbmcnKSB9XG59XG5cbmV4cG9ydCBjb25zdCBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyA9IDMyMDBcblxuY29uc3QgUk9UQVRBQkxFX1BIQVNFUzogU3RyZWFtQWN0aXZpdHlQaGFzZVtdID0gWydnZW5lcmF0aW5nJywgJ3RoaW5raW5nJywgJ3NlYXJjaCcsICdkZWVwX3NlYXJjaCcsICdhdHRhY2htZW50J11cblxuY29uc3QgZ2V0TWVzc2FnZUtleXNGb3JQaGFzZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSk6IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAocGhhc2UpIHtcbiAgICBjYXNlICdnZW5lcmF0aW5nJzpcbiAgICAgIHJldHVybiBHRU5FUkFUSU5HX01FU1NBR0VfS0VZU1xuICAgIGNhc2UgJ3RoaW5raW5nJzpcbiAgICAgIHJldHVybiBUSElOS0lOR19NRVNTQUdFX0tFWVNcbiAgICBjYXNlICdzZWFyY2gnOlxuICAgICAgcmV0dXJuIFNFQVJDSF9NRVNTQUdFX0tFWVNcbiAgICBjYXNlICdkZWVwX3NlYXJjaCc6XG4gICAgICByZXR1cm4gREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAnYXR0YWNobWVudCc6XG4gICAgICByZXR1cm4gQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSwgaW5kZXg6IG51bWJlciwgdDogVHJhbnNsYXRlRm4pOiBzdHJpbmcgPT4ge1xuICBpZiAocGhhc2UgPT09ICd3cml0aW5nJykge1xuICAgIHJldHVybiB0KFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkpXG4gIH1cblxuICBjb25zdCBrZXlzID0gZ2V0TWVzc2FnZUtleXNGb3JQaGFzZShwaGFzZSlcbiAgaWYgKCFrZXlzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGNvbnN0IGNsYW1wZWRJbmRleCA9IE1hdGgubWluKE1hdGgubWF4KDAsIGluZGV4KSwga2V5cy5sZW5ndGggLSAxKVxuICByZXR1cm4gdChrZXlzW2NsYW1wZWRJbmRleF0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlID0gKGluZGV4OiBudW1iZXIsIHQ6IFRyYW5zbGF0ZUZuKTogc3RyaW5nID0+XG4gIGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoJ3RoaW5raW5nJywgaW5kZXgsIHQpXG5cbmV4cG9ydCBjb25zdCBnZXRHZW5lcmF0aW5nTG9hZGluZ01lc3NhZ2UgPSAoaW5kZXg6IG51bWJlciwgdDogVHJhbnNsYXRlRm4pOiBzdHJpbmcgPT5cbiAgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCgnZ2VuZXJhdGluZycsIGluZGV4LCB0KVxuXG5leHBvcnQgY29uc3QgY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSwgY3VycmVudEluZGV4OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgY29uc3Qga2V5cyA9IGdldE1lc3NhZ2VLZXlzRm9yUGhhc2UocGhhc2UpXG4gIGlmICgha2V5cykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBjdXJyZW50SW5kZXggPCBrZXlzLmxlbmd0aCAtIDFcbn1cblxuZXhwb3J0IGNvbnN0IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UgPSAoXG4gIGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSxcbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIHQ6IFRyYW5zbGF0ZUZuXG4pOiB7IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eTsgbmV4dEluZGV4OiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICBpZiAoIWNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UoYWN0aXZpdHkucGhhc2UsIGN1cnJlbnRJbmRleCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ICsgMVxuICByZXR1cm4ge1xuICAgIGFjdGl2aXR5OiB7XG4gICAgICBwaGFzZTogYWN0aXZpdHkucGhhc2UsXG4gICAgICBtZXNzYWdlOiBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4KGFjdGl2aXR5LnBoYXNlLCBuZXh0SW5kZXgsIHQpLFxuICAgIH0sXG4gICAgbmV4dEluZGV4LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlID0gKHBoYXNlOiBTdHJlYW1BY3Rpdml0eVBoYXNlKTogYm9vbGVhbiA9PiBST1RBVEFCTEVfUEhBU0VTLmluY2x1ZGVzKHBoYXNlKVxuXG5leHBvcnQgY29uc3QgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5ID0gKHQ6IFRyYW5zbGF0ZUZuKTogU3RyZWFtQWN0aXZpdHkgPT4gKHtcbiAgcGhhc2U6ICd3cml0aW5nJyxcbiAgbWVzc2FnZTogdChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zOiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGlmIChvcHRpb25zLmlzV2ViU2VhcmNoQWN0aXZlKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdzZWFyY2gnLCBtZXNzYWdlOiB0KFNFQVJDSF9NRVNTQUdFX0tFWVNbMF0pIH1cbiAgfVxuICBpZiAob3B0aW9ucy5pc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2RlZXBfc2VhcmNoJywgbWVzc2FnZTogdChERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVNbMF0pIH1cbiAgfVxuICBpZiAob3B0aW9ucy5oYXNBdHRhY2htZW50cykge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYXR0YWNobWVudCcsIG1lc3NhZ2U6IHQoQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNbMF0pIH1cbiAgfVxuICByZXR1cm4geyBwaGFzZTogJ2dlbmVyYXRpbmcnLCBtZXNzYWdlOiB0KEdFTkVSQVRJTkdfTUVTU0FHRV9LRVlTWzBdKSB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU3RyZWFtTG9hZGluZ0Rpc3BsYXkgPSAocGFyYW1zOiB7XG4gIHN0cmVhbUFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGxcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyB8IG51bGxcbiAgYWN0aXZlTG9hZGluZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgd2FpdGluZ1Jlc3BvbnNlOiBib29sZWFuXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIGlzRGVlcFNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICBoYXNBdHRhY2htZW50czogYm9vbGVhblxuICB0OiBUcmFuc2xhdGVGblxufSk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCA9PiB7XG4gIGlmIChwYXJhbXMuc3RyZWFtQWN0aXZpdHkpIHtcbiAgICByZXR1cm4gcGFyYW1zLnN0cmVhbUFjdGl2aXR5XG4gIH1cblxuICBjb25zdCBhY3RpdmVLZXlzID0gT2JqZWN0LmtleXMocGFyYW1zLmFjdGl2ZUxvYWRpbmdzKVxuICBpZiAoYWN0aXZlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmlyc3RLZXkgPSBhY3RpdmVLZXlzWzBdXG4gICAgY29uc3QgcmF3ID0gcGFyYW1zLmFjdGl2ZUxvYWRpbmdzW2ZpcnN0S2V5XVxuICAgIGlmIChyYXcgJiYgcmF3ICE9PSBwYXJhbXMudCgnY2hhdC5wcm9jZXNzaW5nJykpIHtcbiAgICAgIGNvbnN0IGhpdGxUb29sID0gcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlKHJhdylcbiAgICAgIGlmIChoaXRsVG9vbCkge1xuICAgICAgICByZXR1cm4gbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eShoaXRsVG9vbCwgcGFyYW1zLnQpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyaW1tZWQgPSByYXcudHJpbSgpXG4gICAgICBpZiAodHJpbW1lZCAmJiAhaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZCkpIHtcbiAgICAgICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0cmltbWVkIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eShyYXcsIHBhcmFtcy50LCB7IHVzZVJlc3VtaW5nRmFsbGJhY2s6IHRydWUgfSlcbiAgICB9XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdwcm9jZXNzaW5nJywgbWVzc2FnZTogcGFyYW1zLnQoJ2NoYXQucHJvY2Vzc2luZycpIH1cbiAgfVxuXG4gIGlmIChwYXJhbXMubG9hZGluZ01lc3NhZ2UpIHtcbiAgICBpZiAoXG4gICAgICBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LndyaXRpbmcnKSB8fFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKVxuICAgICkge1xuICAgICAgcmV0dXJuIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eShwYXJhbXMudClcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZycpKSB7XG4gICAgICByZXR1cm4geyBwaGFzZTogJ2dlbmVyYXRpbmcnLCBtZXNzYWdlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdXZWJTZWFyY2gnKSB8fFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nRGVlcFNlYXJjaCcpIHx8XG4gICAgICBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdBdHRhY2htZW50JylcbiAgICApIHtcbiAgICAgIHJldHVybiBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkocGFyYW1zLnQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ1dlYlNlYXJjaCcpLFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ0F0dGFjaG1lbnQnKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlIH1cbiAgfVxuXG4gIGlmIChwYXJhbXMud2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eShwYXJhbXMudCwge1xuICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IHBhcmFtcy5pc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogcGFyYW1zLmlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgIGhhc0F0dGFjaG1lbnRzOiBwYXJhbXMuaGFzQXR0YWNobWVudHMsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkID0gKG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PlxuICB0eXBlb2YgbWVzc2FnZUlkID09PSAnc3RyaW5nJyAmJiBtZXNzYWdlSWQuaW5jbHVkZXMoJy1zdHJlYW1pbmcnKVxuIl0sIm1hcHBpbmdzIjoiO0FBRUEsU0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.54-0",
3
+ "version": "2.11.54-1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {