@projectcor/maia-components 2.11.23-2 → 2.11.23-3

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 (70) hide show
  1. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +17 -60
  2. package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +16 -23
  3. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +2 -2
  4. package/lib/components/atoms/icons/ChatConversation.js +40 -0
  5. package/lib/components/atoms/icons/MaiaStoreIcon.js +31 -0
  6. package/lib/components/atoms/icons/MyAgentsNavIcon.js +51 -0
  7. package/lib/components/atoms/icons/index.js +4 -1
  8. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +24 -5
  9. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +16 -3
  10. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +26 -61
  11. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +130 -0
  12. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +91 -0
  13. package/lib/components/molecules/ChatAIHome/styles.js +37 -43
  14. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +137 -0
  15. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +58 -6
  16. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +43 -0
  17. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +37 -0
  18. package/lib/components/molecules/ChatAIMessages/newStyles.js +24 -21
  19. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +184 -14
  20. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +20 -42
  21. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -13
  22. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  23. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +328 -0
  24. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +178 -0
  25. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -3
  26. package/lib/components/molecules/Sidebar/Sidebar.js +331 -453
  27. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +112 -0
  28. package/lib/components/molecules/Sidebar/Sidebar.styles.js +60 -31
  29. package/lib/components/molecules/Sidebar/SidebarChats.styles.js +70 -0
  30. package/lib/components/molecules/Sidebar/SidebarChatsSection.js +69 -0
  31. package/lib/components/molecules/Sidebar/SidebarChatsSectionModal.js +133 -0
  32. package/lib/components/molecules/Sidebar/SidebarHistoryChat.js +238 -0
  33. package/lib/components/molecules/Sidebar/sidebarChats.helpers.js +70 -0
  34. package/lib/components/molecules/Sidebar/sidebarChats.types.js +14 -0
  35. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +99 -52
  36. package/lib/dev/Providers.js +2 -2
  37. package/lib/dev/fixtures/devUser.js +173 -0
  38. package/lib/dev/fixtures/mockedUser.js +169 -0
  39. package/lib/hooks/index.js +4 -1
  40. package/lib/hooks/useAgentSuggestions.js +60 -0
  41. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  42. package/lib/hooks/useChatManager/useChatManager.js +185 -80
  43. package/lib/hooks/useChats/useChats.js +12 -4
  44. package/lib/hooks/useEvent.js +5 -2
  45. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  46. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +19 -7
  47. package/lib/lang/br/index.js +82 -23
  48. package/lib/lang/en/index.js +82 -23
  49. package/lib/lang/es/index.js +80 -21
  50. package/lib/lang/fr/index.js +66 -18
  51. package/lib/services/maia/Agents/fetchAgentDetail.js +122 -0
  52. package/lib/services/maia/Agents/getAgentById.js +9 -5
  53. package/lib/services/maia/Agents/getAgentSuggestions.js +44 -0
  54. package/lib/services/maia/Agents/getAgents.js +9 -10
  55. package/lib/services/maia/Chats/getChatMessagesV2.js +114 -0
  56. package/lib/services/maia/Chats/getChatsByUserId.js +13 -7
  57. package/lib/services/maia/Chats/getSessionsGroupedV2.js +70 -0
  58. package/lib/services/maia/Chats/index.js +5 -1
  59. package/lib/services/maia/Orchestrator/orchestrator.js +29 -22
  60. package/lib/services/maia/client.js +34 -1
  61. package/lib/services/utils/mapChatMessages.js +5 -14
  62. package/lib/store/chatsStore.types.js +10 -2
  63. package/lib/store/useChatsStore.js +81 -31
  64. package/lib/types/AgentSuggestion.js +2 -0
  65. package/lib/types/Chat.js +3 -1
  66. package/lib/types/agent.js +1 -1
  67. package/lib/types/agentModal.js +1 -1
  68. package/package.json +1 -1
  69. package/lib/mocks/mockChats.js +0 -395
  70. package/lib/mocks/mockedUser.js +0 -169
@@ -0,0 +1,238 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ import { useLayoutEffect, useRef, useState } from 'react';
7
+ import { createPortal } from 'react-dom';
8
+ import { CUButton } from '@projectcor/button/lib/components/CUButton';
9
+ import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
10
+ import { Pencil } from '@projectcor/icons/lib/components/Pencil';
11
+ import { Trash } from '@projectcor/icons/lib/components/Trash';
12
+ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
13
+ import { useResizeListener } from '../../../hooks/useResize';
14
+ import { EVENTS } from '../../../hooks/useEvent';
15
+ import { useT } from '../../../hooks/useT';
16
+ import { OptionItem } from '../../atoms/CardMenu/CardMenu';
17
+ import { EditQuestionModal } from '../../organisms/EditQuestionModal';
18
+ import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal';
19
+ import { ChatConversation, MAIAIcon } from '../../atoms/icons';
20
+ import { SCLHCChatMenuPopoverPortal, SCLHCConversationIconSlot, SCLHCConversationKebab, SCLHCConversationRoot, SCLHCConversationSubtitle, SCLHCConversationSubtitleEmoji, SCLHCConversationSubtitleRow, SCLHCConversationTitle, SCLHCConversationTopRow } from './Sidebar.styles';
21
+ import { getSidebarHistorySubtitle } from './sidebarChats.helpers';
22
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
23
+ var actions = {
24
+ edit: function edit(props) {
25
+ return /*#__PURE__*/_jsx(EditQuestionModal, _objectSpread({}, props));
26
+ },
27
+ "delete": function _delete(props) {
28
+ return /*#__PURE__*/_jsx(DeleteQuestionModal, _objectSpread({}, props));
29
+ }
30
+ };
31
+ export var SidebarHistoryChat = function SidebarHistoryChat(_ref) {
32
+ var chat = _ref.chat,
33
+ sectionKey = _ref.sectionKey,
34
+ _onClick = _ref.onClick,
35
+ isModalOpen = _ref.isModalOpen,
36
+ chatMenuSurface = _ref.chatMenuSurface,
37
+ onOpenModal = _ref.onOpenModal,
38
+ onCloseModal = _ref.onCloseModal,
39
+ handlers = _ref.handlers,
40
+ isSelected = _ref.isSelected;
41
+ var textRef = useRef(null);
42
+ var subtitleRef = useRef(null);
43
+ var kebabRef = useRef(null);
44
+ var menuPopoverRef = useRef(null);
45
+ var _useState = useState(null),
46
+ _useState2 = _slicedToArray(_useState, 2),
47
+ menuCoords = _useState2[0],
48
+ setMenuCoords = _useState2[1];
49
+ var _useT = useT(),
50
+ t = _useT.t;
51
+ var _useState3 = useState(null),
52
+ _useState4 = _slicedToArray(_useState3, 2),
53
+ action = _useState4[0],
54
+ setAction = _useState4[1];
55
+ var subtitle = getSidebarHistorySubtitle(chat, sectionKey);
56
+ var subtitleTrimmed = subtitle.trim();
57
+ var _useResizeListener = useResizeListener(textRef, [chat.title]),
58
+ showTooltip = _useResizeListener.showTooltip;
59
+ var agentSubtitleLine = sectionKey === 'agentsByCompany' && (subtitleTrimmed || chat.emoji != null && chat.emoji !== '' || chat.agentType === 'clone');
60
+ var _useResizeListener2 = useResizeListener(subtitleRef, [subtitleTrimmed, sectionKey, chat.emoji, chat.agentType]),
61
+ showTooltipSubtitle = _useResizeListener2.showTooltip;
62
+ var subtitleTooltipTitle = sectionKey === 'agentsByCompany' && chat.emoji && chat.agentType !== 'clone' ? "".concat(chat.emoji, " ").concat(subtitleTrimmed).trim() : subtitleTrimmed;
63
+ var menuItems = [{
64
+ label: t('history.menu.rename'),
65
+ onClickItem: function onClickItem(chatId) {
66
+ setAction('edit');
67
+ onOpenModal(chatId);
68
+ },
69
+ Icon: Pencil,
70
+ eventKey: EVENTS.pmAiMenuEdit
71
+ }, {
72
+ label: t('history.menu.delete'),
73
+ onClickItem: function onClickItem(chatId) {
74
+ setAction('delete');
75
+ onOpenModal(chatId);
76
+ },
77
+ Icon: Trash,
78
+ eventKey: EVENTS.pmAiMenuDelete
79
+ }];
80
+ var handleConfirmAction = function handleConfirmAction(chatData) {
81
+ if (action === 'edit') {
82
+ handlers.handleUpdateChat(chatData);
83
+ } else {
84
+ handlers.handleDeleteChat(chatData);
85
+ }
86
+ setAction(null);
87
+ onCloseModal();
88
+ };
89
+ useLayoutEffect(function () {
90
+ if (!isModalOpen || action) {
91
+ setMenuCoords(null);
92
+ return undefined;
93
+ }
94
+ var anchor = kebabRef.current;
95
+ if (!anchor) {
96
+ return undefined;
97
+ }
98
+ var place = function place() {
99
+ var _menuEl$offsetWidth, _menuEl$offsetHeight;
100
+ var r = anchor.getBoundingClientRect();
101
+ var menuEl = menuPopoverRef.current;
102
+ var w = Math.max((_menuEl$offsetWidth = menuEl === null || menuEl === void 0 ? void 0 : menuEl.offsetWidth) !== null && _menuEl$offsetWidth !== void 0 ? _menuEl$offsetWidth : 124, 124);
103
+ var h = (_menuEl$offsetHeight = menuEl === null || menuEl === void 0 ? void 0 : menuEl.offsetHeight) !== null && _menuEl$offsetHeight !== void 0 ? _menuEl$offsetHeight : 72;
104
+ var gap = 4;
105
+ var pad = 8;
106
+ var top = r.bottom + gap;
107
+ var left = r.right - w;
108
+ if (left < pad) left = pad;
109
+ if (left + w > window.innerWidth - pad) {
110
+ left = Math.max(pad, window.innerWidth - w - pad);
111
+ }
112
+ if (top + h > window.innerHeight - pad) {
113
+ top = r.top - h - gap;
114
+ }
115
+ if (top < pad) top = pad;
116
+ setMenuCoords({
117
+ top: top,
118
+ left: left
119
+ });
120
+ };
121
+ place();
122
+ var raf = requestAnimationFrame(place);
123
+ window.addEventListener('resize', place);
124
+ document.addEventListener('scroll', place, true);
125
+ return function () {
126
+ cancelAnimationFrame(raf);
127
+ window.removeEventListener('resize', place);
128
+ document.removeEventListener('scroll', place, true);
129
+ setMenuCoords(null);
130
+ };
131
+ }, [isModalOpen, action]);
132
+ var menuPortal = isModalOpen && !action && typeof document !== 'undefined' && /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(SCLHCChatMenuPopoverPortal, _objectSpread(_objectSpread({
133
+ ref: menuPopoverRef,
134
+ "data-modal-container": true
135
+ }, chatMenuSurface === 'sectionModal' ? {
136
+ 'data-section-modal-container': true
137
+ } : {}), {}, {
138
+ style: menuCoords ? {
139
+ top: menuCoords.top,
140
+ left: menuCoords.left
141
+ } : {
142
+ top: -9999,
143
+ left: -9999,
144
+ visibility: 'hidden'
145
+ },
146
+ children: menuItems.map(function (_ref2) {
147
+ var label = _ref2.label,
148
+ onClickItem = _ref2.onClickItem,
149
+ Icon = _ref2.Icon,
150
+ eventKey = _ref2.eventKey;
151
+ return /*#__PURE__*/_jsx(OptionItem, {
152
+ label: label,
153
+ onClick: function onClick() {
154
+ return onClickItem(chat.id);
155
+ },
156
+ Icon: Icon,
157
+ eventKey: eventKey
158
+ }, label);
159
+ })
160
+ })), document.body);
161
+ return /*#__PURE__*/_jsxs(_Fragment, {
162
+ children: [/*#__PURE__*/_jsxs(SCLHCConversationRoot, {
163
+ $isSelected: isSelected,
164
+ "data-menu-open": isModalOpen ? 'true' : undefined,
165
+ onClick: function onClick(e) {
166
+ e.stopPropagation();
167
+ _onClick(chat);
168
+ },
169
+ children: [/*#__PURE__*/_jsxs(SCLHCConversationTopRow, {
170
+ children: [/*#__PURE__*/_jsx(SCLHCConversationIconSlot, {
171
+ "aria-hidden": true,
172
+ children: /*#__PURE__*/_jsx(ChatConversation, {
173
+ width: 15,
174
+ height: 15,
175
+ color: "#20201f"
176
+ })
177
+ }), /*#__PURE__*/_jsx(Tooltip, {
178
+ title: showTooltip ? chat.title : '',
179
+ children: /*#__PURE__*/_jsx(SCLHCConversationTitle, {
180
+ ref: textRef,
181
+ children: chat.title || t('conversations.emptyLabel')
182
+ })
183
+ }), /*#__PURE__*/_jsx(SCLHCConversationKebab, {
184
+ ref: kebabRef,
185
+ "data-modal-container": true,
186
+ children: /*#__PURE__*/_jsx(CUButton, {
187
+ iconOnly: true,
188
+ size: "small",
189
+ variant: "text",
190
+ onClick: function onClick(event) {
191
+ event.stopPropagation();
192
+ onOpenModal(chat.id);
193
+ },
194
+ children: /*#__PURE__*/_jsx(MenuDots, {
195
+ width: 15,
196
+ height: 15
197
+ })
198
+ })
199
+ })]
200
+ }), agentSubtitleLine && /*#__PURE__*/_jsx(Tooltip, {
201
+ title: showTooltipSubtitle ? subtitleTooltipTitle : '',
202
+ children: /*#__PURE__*/_jsxs(SCLHCConversationSubtitleRow, {
203
+ children: [chat.agentType === 'clone' && /*#__PURE__*/_jsx(SCLHCConversationSubtitleEmoji, {
204
+ "aria-hidden": true,
205
+ children: /*#__PURE__*/_jsx(MAIAIcon, {
206
+ width: 12,
207
+ height: 12
208
+ })
209
+ }), chat.agentType !== 'clone' && chat.emoji && /*#__PURE__*/_jsx(SCLHCConversationSubtitleEmoji, {
210
+ "aria-hidden": true,
211
+ children: chat.emoji
212
+ }), subtitleTrimmed ? /*#__PURE__*/_jsx(SCLHCConversationSubtitle, {
213
+ ref: subtitleRef,
214
+ $inFlexRow: true,
215
+ children: subtitleTrimmed
216
+ }) : null]
217
+ })
218
+ }), !agentSubtitleLine && subtitleTrimmed && /*#__PURE__*/_jsx(Tooltip, {
219
+ title: showTooltipSubtitle ? subtitleTrimmed : '',
220
+ children: /*#__PURE__*/_jsx(SCLHCConversationSubtitle, {
221
+ ref: subtitleRef,
222
+ children: subtitleTrimmed
223
+ })
224
+ })]
225
+ }, "conversation-".concat(chat.sessionExternalId)), menuPortal, !!action && actions[action]({
226
+ onClose: function onClose() {
227
+ onCloseModal();
228
+ setAction(null);
229
+ },
230
+ chat: chat,
231
+ handlers: {
232
+ handleConfirmAction: handleConfirmAction,
233
+ handleSetIsOpenModal: onCloseModal
234
+ }
235
+ })]
236
+ });
237
+ };
238
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNVQnV0dG9uIiwiTWVudURvdHMiLCJQZW5jaWwiLCJUcmFzaCIsIlRvb2x0aXAiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkVWRU5UUyIsInVzZVQiLCJPcHRpb25JdGVtIiwiRWRpdFF1ZXN0aW9uTW9kYWwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiQ2hhdENvbnZlcnNhdGlvbiIsIk1BSUFJY29uIiwiU0NMSENDaGF0TWVudVBvcG92ZXJQb3J0YWwiLCJTQ0xIQ0NvbnZlcnNhdGlvbkljb25TbG90IiwiU0NMSENDb252ZXJzYXRpb25LZWJhYiIsIlNDTEhDQ29udmVyc2F0aW9uUm9vdCIsIlNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGUiLCJTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlRW1vamkiLCJTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlUm93IiwiU0NMSENDb252ZXJzYXRpb25UaXRsZSIsIlNDTEhDQ29udmVyc2F0aW9uVG9wUm93IiwiZ2V0U2lkZWJhckhpc3RvcnlTdWJ0aXRsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiU2lkZWJhckhpc3RvcnlDaGF0IiwiX3JlZiIsImNoYXQiLCJzZWN0aW9uS2V5Iiwib25DbGljayIsImlzTW9kYWxPcGVuIiwiY2hhdE1lbnVTdXJmYWNlIiwib25PcGVuTW9kYWwiLCJvbkNsb3NlTW9kYWwiLCJoYW5kbGVycyIsImlzU2VsZWN0ZWQiLCJ0ZXh0UmVmIiwic3VidGl0bGVSZWYiLCJrZWJhYlJlZiIsIm1lbnVQb3BvdmVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVudUNvb3JkcyIsInNldE1lbnVDb29yZHMiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGlvbiIsInNldEFjdGlvbiIsInN1YnRpdGxlIiwic3VidGl0bGVUcmltbWVkIiwidHJpbSIsIl91c2VSZXNpemVMaXN0ZW5lciIsInRpdGxlIiwic2hvd1Rvb2x0aXAiLCJhZ2VudFN1YnRpdGxlTGluZSIsImVtb2ppIiwiYWdlbnRUeXBlIiwiX3VzZVJlc2l6ZUxpc3RlbmVyMiIsInNob3dUb29sdGlwU3VidGl0bGUiLCJzdWJ0aXRsZVRvb2x0aXBUaXRsZSIsImNvbmNhdCIsIm1lbnVJdGVtcyIsImxhYmVsIiwib25DbGlja0l0ZW0iLCJjaGF0SWQiLCJJY29uIiwiZXZlbnRLZXkiLCJwbUFpTWVudUVkaXQiLCJwbUFpTWVudURlbGV0ZSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJjaGF0RGF0YSIsImhhbmRsZVVwZGF0ZUNoYXQiLCJoYW5kbGVEZWxldGVDaGF0IiwidW5kZWZpbmVkIiwiYW5jaG9yIiwiY3VycmVudCIsInBsYWNlIiwiX21lbnVFbCRvZmZzZXRXaWR0aCIsIl9tZW51RWwkb2Zmc2V0SGVpZ2h0IiwiciIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm1lbnVFbCIsInciLCJNYXRoIiwibWF4Iiwib2Zmc2V0V2lkdGgiLCJoIiwib2Zmc2V0SGVpZ2h0IiwiZ2FwIiwicGFkIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwid2luZG93IiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0IiwicmFmIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibWVudVBvcnRhbCIsInJlZiIsInN0eWxlIiwidmlzaWJpbGl0eSIsImNoaWxkcmVuIiwibWFwIiwiX3JlZjIiLCJpZCIsImJvZHkiLCIkaXNTZWxlY3RlZCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwiaWNvbk9ubHkiLCJzaXplIiwidmFyaWFudCIsImV2ZW50IiwiJGluRmxleFJvdyIsInNlc3Npb25FeHRlcm5hbElkIiwib25DbG9zZSIsImhhbmRsZVNldElzT3Blbk1vZGFsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhckhpc3RvcnlDaGF0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgRVZFTlRTIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE9wdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9hdG9tcy9DYXJkTWVudS9DYXJkTWVudSdcbmltcG9ydCB7IEVkaXRRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0VkaXRRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgQ2hhdENvbnZlcnNhdGlvbiwgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7XG4gIFNDTEhDQ2hhdE1lbnVQb3BvdmVyUG9ydGFsLFxuICBTQ0xIQ0NvbnZlcnNhdGlvbkljb25TbG90LFxuICBTQ0xIQ0NvbnZlcnNhdGlvbktlYmFiLFxuICBTQ0xIQ0NvbnZlcnNhdGlvblJvb3QsXG4gIFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGUsXG4gIFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGVFbW9qaSxcbiAgU0NMSENDb252ZXJzYXRpb25TdWJ0aXRsZVJvdyxcbiAgU0NMSENDb252ZXJzYXRpb25UaXRsZSxcbiAgU0NMSENDb252ZXJzYXRpb25Ub3BSb3csXG59IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5pbXBvcnQgeyBnZXRTaWRlYmFySGlzdG9yeVN1YnRpdGxlIH0gZnJvbSAnLi9zaWRlYmFyQ2hhdHMuaGVscGVycydcbmltcG9ydCB0eXBlIHsgU2lkZWJhckNoYXRNZW51U3VyZmFjZSwgU2lkZWJhclNlY3Rpb25LZXkgfSBmcm9tICcuL3NpZGViYXJDaGF0cy50eXBlcydcblxuY29uc3QgYWN0aW9ucyA9IHtcbiAgZWRpdDogKHByb3BzOiBhbnkpID0+IDxFZGl0UXVlc3Rpb25Nb2RhbCB7Li4ucHJvcHN9IC8+LFxuICBkZWxldGU6IChwcm9wczogYW55KSA9PiA8RGVsZXRlUXVlc3Rpb25Nb2RhbCB7Li4ucHJvcHN9IC8+LFxufVxuXG5leHBvcnQgY29uc3QgU2lkZWJhckhpc3RvcnlDaGF0ID0gKHtcbiAgY2hhdCxcbiAgc2VjdGlvbktleSxcbiAgb25DbGljayxcbiAgaXNNb2RhbE9wZW4sXG4gIGNoYXRNZW51U3VyZmFjZSxcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG59OiB7XG4gIGNoYXQ6IGFueVxuICBzZWN0aW9uS2V5OiBTaWRlYmFyU2VjdGlvbktleVxuICBvbkNsaWNrOiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIGlzTW9kYWxPcGVuOiBib29sZWFuXG4gIGNoYXRNZW51U3VyZmFjZTogU2lkZWJhckNoYXRNZW51U3VyZmFjZVxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3Qgc3VidGl0bGVSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCBrZWJhYlJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgbWVudVBvcG92ZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFttZW51Q29vcmRzLCBzZXRNZW51Q29vcmRzXSA9IHVzZVN0YXRlPHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgW2FjdGlvbiwgc2V0QWN0aW9uXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qgc3VidGl0bGUgPSBnZXRTaWRlYmFySGlzdG9yeVN1YnRpdGxlKGNoYXQsIHNlY3Rpb25LZXkpXG4gIGNvbnN0IHN1YnRpdGxlVHJpbW1lZCA9IHN1YnRpdGxlLnRyaW0oKVxuXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtjaGF0LnRpdGxlXSlcbiAgY29uc3QgYWdlbnRTdWJ0aXRsZUxpbmUgPVxuICAgIHNlY3Rpb25LZXkgPT09ICdhZ2VudHNCeUNvbXBhbnknICYmXG4gICAgKHN1YnRpdGxlVHJpbW1lZCB8fCAoY2hhdC5lbW9qaSAhPSBudWxsICYmIGNoYXQuZW1vamkgIT09ICcnKSB8fCBjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJylcbiAgY29uc3QgeyBzaG93VG9vbHRpcDogc2hvd1Rvb2x0aXBTdWJ0aXRsZSB9ID0gdXNlUmVzaXplTGlzdGVuZXIoc3VidGl0bGVSZWYsIFtcbiAgICBzdWJ0aXRsZVRyaW1tZWQsXG4gICAgc2VjdGlvbktleSxcbiAgICBjaGF0LmVtb2ppLFxuICAgIGNoYXQuYWdlbnRUeXBlLFxuICBdKVxuXG4gIGNvbnN0IHN1YnRpdGxlVG9vbHRpcFRpdGxlID1cbiAgICBzZWN0aW9uS2V5ID09PSAnYWdlbnRzQnlDb21wYW55JyAmJiBjaGF0LmVtb2ppICYmIGNoYXQuYWdlbnRUeXBlICE9PSAnY2xvbmUnXG4gICAgICA/IGAke2NoYXQuZW1vaml9ICR7c3VidGl0bGVUcmltbWVkfWAudHJpbSgpXG4gICAgICA6IHN1YnRpdGxlVHJpbW1lZFxuXG4gIGNvbnN0IG1lbnVJdGVtcyA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LnJlbmFtZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2VkaXQnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogUGVuY2lsLFxuICAgICAgZXZlbnRLZXk6IEVWRU5UUy5wbUFpTWVudUVkaXQsXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogdCgnaGlzdG9yeS5tZW51LmRlbGV0ZScpLFxuICAgICAgb25DbGlja0l0ZW06IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBzZXRBY3Rpb24oJ2RlbGV0ZScpXG4gICAgICAgIG9uT3Blbk1vZGFsKGNoYXRJZClcbiAgICAgIH0sXG4gICAgICBJY29uOiBUcmFzaCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVEZWxldGUsXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSAoY2hhdERhdGE6IGFueSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09ICdlZGl0Jykge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlVXBkYXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlcnMuaGFuZGxlRGVsZXRlQ2hhdChjaGF0RGF0YSlcbiAgICB9XG4gICAgc2V0QWN0aW9uKG51bGwpXG4gICAgb25DbG9zZU1vZGFsKClcbiAgfVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc01vZGFsT3BlbiB8fCBhY3Rpb24pIHtcbiAgICAgIHNldE1lbnVDb29yZHMobnVsbClcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgY29uc3QgYW5jaG9yID0ga2ViYWJSZWYuY3VycmVudFxuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgcGxhY2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCByID0gYW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBtZW51RWwgPSBtZW51UG9wb3ZlclJlZi5jdXJyZW50XG4gICAgICBjb25zdCB3ID0gTWF0aC5tYXgobWVudUVsPy5vZmZzZXRXaWR0aCA/PyAxMjQsIDEyNClcbiAgICAgIGNvbnN0IGggPSBtZW51RWw/Lm9mZnNldEhlaWdodCA/PyA3MlxuICAgICAgY29uc3QgZ2FwID0gNFxuICAgICAgY29uc3QgcGFkID0gOFxuICAgICAgbGV0IHRvcCA9IHIuYm90dG9tICsgZ2FwXG4gICAgICBsZXQgbGVmdCA9IHIucmlnaHQgLSB3XG4gICAgICBpZiAobGVmdCA8IHBhZCkgbGVmdCA9IHBhZFxuICAgICAgaWYgKGxlZnQgKyB3ID4gd2luZG93LmlubmVyV2lkdGggLSBwYWQpIHtcbiAgICAgICAgbGVmdCA9IE1hdGgubWF4KHBhZCwgd2luZG93LmlubmVyV2lkdGggLSB3IC0gcGFkKVxuICAgICAgfVxuICAgICAgaWYgKHRvcCArIGggPiB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwYWQpIHtcbiAgICAgICAgdG9wID0gci50b3AgLSBoIC0gZ2FwXG4gICAgICB9XG4gICAgICBpZiAodG9wIDwgcGFkKSB0b3AgPSBwYWRcbiAgICAgIHNldE1lbnVDb29yZHMoeyB0b3AsIGxlZnQgfSlcbiAgICB9XG5cbiAgICBwbGFjZSgpXG4gICAgY29uc3QgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHBsYWNlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBwbGFjZSlcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBwbGFjZSwgdHJ1ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHBsYWNlKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgcGxhY2UsIHRydWUpXG4gICAgICBzZXRNZW51Q29vcmRzKG51bGwpXG4gICAgfVxuICB9LCBbaXNNb2RhbE9wZW4sIGFjdGlvbl0pXG5cbiAgY29uc3QgbWVudVBvcnRhbCA9XG4gICAgaXNNb2RhbE9wZW4gJiZcbiAgICAhYWN0aW9uICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0xIQ0NoYXRNZW51UG9wb3ZlclBvcnRhbFxuICAgICAgICByZWY9e21lbnVQb3BvdmVyUmVmfVxuICAgICAgICBkYXRhLW1vZGFsLWNvbnRhaW5lclxuICAgICAgICB7Li4uKGNoYXRNZW51U3VyZmFjZSA9PT0gJ3NlY3Rpb25Nb2RhbCcgPyB7ICdkYXRhLXNlY3Rpb24tbW9kYWwtY29udGFpbmVyJzogdHJ1ZSB9IDoge30pfVxuICAgICAgICBzdHlsZT17XG4gICAgICAgICAgbWVudUNvb3Jkc1xuICAgICAgICAgICAgPyB7IHRvcDogbWVudUNvb3Jkcy50b3AsIGxlZnQ6IG1lbnVDb29yZHMubGVmdCB9XG4gICAgICAgICAgICA6IHsgdG9wOiAtOTk5OSwgbGVmdDogLTk5OTksIHZpc2liaWxpdHk6ICdoaWRkZW4nIH1cbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICA8T3B0aW9uSXRlbSBrZXk9e2xhYmVsfSBsYWJlbD17bGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfSBJY29uPXtJY29ufSBldmVudEtleT17ZXZlbnRLZXl9IC8+XG4gICAgICAgICkpfVxuICAgICAgPC9TQ0xIQ0NoYXRNZW51UG9wb3ZlclBvcnRhbD4sXG4gICAgICBkb2N1bWVudC5ib2R5XG4gICAgKVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTQ0xIQ0NvbnZlcnNhdGlvblJvb3RcbiAgICAgICAgJGlzU2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICAgIGRhdGEtbWVudS1vcGVuPXtpc01vZGFsT3BlbiA/ICd0cnVlJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgIG9uQ2xpY2soY2hhdClcbiAgICAgICAgfX1cbiAgICAgICAga2V5PXtgY29udmVyc2F0aW9uLSR7Y2hhdC5zZXNzaW9uRXh0ZXJuYWxJZH1gfVxuICAgICAgPlxuICAgICAgICA8U0NMSENDb252ZXJzYXRpb25Ub3BSb3c+XG4gICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uSWNvblNsb3QgYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICA8Q2hhdENvbnZlcnNhdGlvbiB3aWR0aD17MTV9IGhlaWdodD17MTV9IGNvbG9yPVwiIzIwMjAxZlwiIC8+XG4gICAgICAgICAgPC9TQ0xIQ0NvbnZlcnNhdGlvbkljb25TbG90PlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcCA/IGNoYXQudGl0bGUgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENDb252ZXJzYXRpb25UaXRsZSByZWY9e3RleHRSZWZ9PntjaGF0LnRpdGxlIHx8IHQoJ2NvbnZlcnNhdGlvbnMuZW1wdHlMYWJlbCcpfTwvU0NMSENDb252ZXJzYXRpb25UaXRsZT5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uS2ViYWIgcmVmPXtrZWJhYlJlZn0gZGF0YS1tb2RhbC1jb250YWluZXI+XG4gICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgaWNvbk9ubHlcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICBvbk9wZW5Nb2RhbChjaGF0LmlkKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8TWVudURvdHMgd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSAvPlxuICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICA8L1NDTEhDQ29udmVyc2F0aW9uS2ViYWI+XG4gICAgICAgIDwvU0NMSENDb252ZXJzYXRpb25Ub3BSb3c+XG4gICAgICAgIHthZ2VudFN1YnRpdGxlTGluZSAmJiAoXG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwU3VidGl0bGUgPyBzdWJ0aXRsZVRvb2x0aXBUaXRsZSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlUm93PlxuICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgPT09ICdjbG9uZScgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlRW1vamkgYXJpYS1oaWRkZW4+XG4gICAgICAgICAgICAgICAgICA8TUFJQUljb24gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSAvPlxuICAgICAgICAgICAgICAgIDwvU0NMSENDb252ZXJzYXRpb25TdWJ0aXRsZUVtb2ppPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7Y2hhdC5hZ2VudFR5cGUgIT09ICdjbG9uZScgJiYgY2hhdC5lbW9qaSAmJiAoXG4gICAgICAgICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGVFbW9qaSBhcmlhLWhpZGRlbj57Y2hhdC5lbW9qaX08L1NDTEhDQ29udmVyc2F0aW9uU3VidGl0bGVFbW9qaT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3N1YnRpdGxlVHJpbW1lZCA/IChcbiAgICAgICAgICAgICAgICA8U0NMSENDb252ZXJzYXRpb25TdWJ0aXRsZSByZWY9e3N1YnRpdGxlUmVmfSAkaW5GbGV4Um93PlxuICAgICAgICAgICAgICAgICAge3N1YnRpdGxlVHJpbW1lZH1cbiAgICAgICAgICAgICAgICA8L1NDTEhDQ29udmVyc2F0aW9uU3VidGl0bGU+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ0xIQ0NvbnZlcnNhdGlvblN1YnRpdGxlUm93PlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKX1cbiAgICAgICAgeyFhZ2VudFN1YnRpdGxlTGluZSAmJiBzdWJ0aXRsZVRyaW1tZWQgJiYgKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcFN1YnRpdGxlID8gc3VidGl0bGVUcmltbWVkIDogJyd9PlxuICAgICAgICAgICAgPFNDTEhDQ29udmVyc2F0aW9uU3VidGl0bGUgcmVmPXtzdWJ0aXRsZVJlZn0+e3N1YnRpdGxlVHJpbW1lZH08L1NDTEhDQ29udmVyc2F0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApfVxuICAgICAgPC9TQ0xIQ0NvbnZlcnNhdGlvblJvb3Q+XG4gICAgICB7bWVudVBvcnRhbH1cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLFNBQVNBLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUN6RCxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLFFBQVEsUUFBUSwyQ0FBMkM7QUFDcEUsU0FBU0MsTUFBTSxRQUFRLHlDQUF5QztBQUNoRSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLE9BQU8sUUFBUSw4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
@@ -0,0 +1,70 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { MAX_VISIBLE_CHATS_PER_SECTION, SIDEBAR_SECTION_ORDER } from './sidebarChats.types';
3
+ export function abbreviateSpecialistInAgentName(agentName) {
4
+ if (!agentName || typeof agentName !== 'string') return agentName;
5
+ return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
6
+ }
7
+ export function groupChatsBySidebarSection(chats) {
8
+ var initialGroups = {
9
+ clients: [],
10
+ projects: [],
11
+ agentsByCompany: []
12
+ };
13
+ chats.forEach(function (chat) {
14
+ var _chatData$agent;
15
+ var chatData = chat;
16
+ var hasClientMetadata = chat.clientId != null || !!chat.clientName;
17
+ var hasProjectMetadata = chat.projectId != null || !!chat.projectName;
18
+ var isCustomAgentSession = chatData.agentType === 'custom';
19
+ /** Temporal: clone cuyo nombre indica Maiaker/marketplace (mismo criterio que ChatAIMessages / ChatFooter). */
20
+ var isCloneMarketplaceSession = chatData.agentType === 'clone' && /(maiaker|marketplace)/i.test(String((_chatData$agent = chatData.agent) !== null && _chatData$agent !== void 0 ? _chatData$agent : ''));
21
+ if (hasProjectMetadata) {
22
+ initialGroups.projects.push(chat);
23
+ return;
24
+ }
25
+ if (hasClientMetadata && !hasProjectMetadata) {
26
+ initialGroups.clients.push(chat);
27
+ return;
28
+ }
29
+ if (isCustomAgentSession || isCloneMarketplaceSession) {
30
+ initialGroups.agentsByCompany.push(chat);
31
+ }
32
+ });
33
+ return initialGroups;
34
+ }
35
+
36
+ /** Subtítulo de la fila según la sección: proyecto, cliente o nombre del agente. */
37
+ export function getSidebarHistorySubtitle(chat, sectionKey) {
38
+ var _chat$projectName, _chat$clientName, _chat$agent2;
39
+ switch (sectionKey) {
40
+ case 'projects':
41
+ return (_chat$projectName = chat.projectName) !== null && _chat$projectName !== void 0 ? _chat$projectName : '';
42
+ case 'clients':
43
+ return (_chat$clientName = chat.clientName) !== null && _chat$clientName !== void 0 ? _chat$clientName : '';
44
+ case 'agentsByCompany':
45
+ if (chat.agentType === 'clone') {
46
+ var _chat$agent;
47
+ return abbreviateSpecialistInAgentName((_chat$agent = chat.agent) !== null && _chat$agent !== void 0 ? _chat$agent : '');
48
+ }
49
+ return (_chat$agent2 = chat.agent) !== null && _chat$agent2 !== void 0 ? _chat$agent2 : '';
50
+ default:
51
+ return '';
52
+ }
53
+ }
54
+ export function buildSidebarSections(groupedChats, getSectionLabel, /** `has_more` del API v2 por grupo; permite “Ver más” aunque solo haya 3 ítems en la primera página. */
55
+ sessionsGroupHasMore) {
56
+ return SIDEBAR_SECTION_ORDER.map(function (sectionKey) {
57
+ var sectionChats = groupedChats[sectionKey];
58
+ if (!sectionChats.length) {
59
+ return null;
60
+ }
61
+ return {
62
+ key: sectionKey,
63
+ label: getSectionLabel(sectionKey),
64
+ chats: sectionChats,
65
+ visibleChats: sectionChats.slice(0, MAX_VISIBLE_CHATS_PER_SECTION),
66
+ hasMore: sectionChats.length > MAX_VISIBLE_CHATS_PER_SECTION || sessionsGroupHasMore[sectionKey]
67
+ };
68
+ }).filter(Boolean);
69
+ }
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfVklTSUJMRV9DSEFUU19QRVJfU0VDVElPTiIsIlNJREVCQVJfU0VDVElPTl9PUkRFUiIsImFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUiLCJhZ2VudE5hbWUiLCJyZXBsYWNlIiwiZ3JvdXBDaGF0c0J5U2lkZWJhclNlY3Rpb24iLCJjaGF0cyIsImluaXRpYWxHcm91cHMiLCJjbGllbnRzIiwicHJvamVjdHMiLCJhZ2VudHNCeUNvbXBhbnkiLCJmb3JFYWNoIiwiY2hhdCIsIl9jaGF0RGF0YSRhZ2VudCIsImNoYXREYXRhIiwiaGFzQ2xpZW50TWV0YWRhdGEiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJoYXNQcm9qZWN0TWV0YWRhdGEiLCJwcm9qZWN0SWQiLCJwcm9qZWN0TmFtZSIsImlzQ3VzdG9tQWdlbnRTZXNzaW9uIiwiYWdlbnRUeXBlIiwiaXNDbG9uZU1hcmtldHBsYWNlU2Vzc2lvbiIsInRlc3QiLCJTdHJpbmciLCJhZ2VudCIsInB1c2giLCJnZXRTaWRlYmFySGlzdG9yeVN1YnRpdGxlIiwic2VjdGlvbktleSIsIl9jaGF0JHByb2plY3ROYW1lIiwiX2NoYXQkY2xpZW50TmFtZSIsIl9jaGF0JGFnZW50MiIsIl9jaGF0JGFnZW50IiwiYnVpbGRTaWRlYmFyU2VjdGlvbnMiLCJncm91cGVkQ2hhdHMiLCJnZXRTZWN0aW9uTGFiZWwiLCJzZXNzaW9uc0dyb3VwSGFzTW9yZSIsIm1hcCIsInNlY3Rpb25DaGF0cyIsImxlbmd0aCIsImtleSIsImxhYmVsIiwidmlzaWJsZUNoYXRzIiwic2xpY2UiLCJoYXNNb3JlIiwiZmlsdGVyIiwiQm9vbGVhbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL3NpZGViYXJDaGF0cy5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gIE1BWF9WSVNJQkxFX0NIQVRTX1BFUl9TRUNUSU9OLFxuICBTSURFQkFSX1NFQ1RJT05fT1JERVIsXG4gIHR5cGUgU2lkZWJhckNoYXRzU2VjdGlvbk1vZGVsLFxuICB0eXBlIFNpZGViYXJTZWN0aW9uS2V5LFxufSBmcm9tICcuL3NpZGViYXJDaGF0cy50eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUoYWdlbnROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWFnZW50TmFtZSB8fCB0eXBlb2YgYWdlbnROYW1lICE9PSAnc3RyaW5nJykgcmV0dXJuIGFnZW50TmFtZVxuICByZXR1cm4gYWdlbnROYW1lLnJlcGxhY2UoL1xcYihlc3BlY2lhbGlzdGF8ZXNwZWNpYWxpc3QpXFxiL2dpLCAnRXNwLicpLnJlcGxhY2UoL1xcYnNwZWNpYWxpc3RcXGIvZ2ksICdTcGVjLicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cENoYXRzQnlTaWRlYmFyU2VjdGlvbihjaGF0czogYW55W10pOiBSZWNvcmQ8U2lkZWJhclNlY3Rpb25LZXksIGFueVtdPiB7XG4gIGNvbnN0IGluaXRpYWxHcm91cHM6IFJlY29yZDxTaWRlYmFyU2VjdGlvbktleSwgYW55W10+ID0ge1xuICAgIGNsaWVudHM6IFtdLFxuICAgIHByb2plY3RzOiBbXSxcbiAgICBhZ2VudHNCeUNvbXBhbnk6IFtdLFxuICB9XG5cbiAgY2hhdHMuZm9yRWFjaChjaGF0ID0+IHtcbiAgICBjb25zdCBjaGF0RGF0YSA9IGNoYXQgYXMgYW55XG4gICAgY29uc3QgaGFzQ2xpZW50TWV0YWRhdGEgPSBjaGF0LmNsaWVudElkICE9IG51bGwgfHwgISFjaGF0LmNsaWVudE5hbWVcbiAgICBjb25zdCBoYXNQcm9qZWN0TWV0YWRhdGEgPSBjaGF0LnByb2plY3RJZCAhPSBudWxsIHx8ICEhY2hhdC5wcm9qZWN0TmFtZVxuICAgIGNvbnN0IGlzQ3VzdG9tQWdlbnRTZXNzaW9uID0gY2hhdERhdGEuYWdlbnRUeXBlID09PSAnY3VzdG9tJ1xuICAgIC8qKiBUZW1wb3JhbDogY2xvbmUgY3V5byBub21icmUgaW5kaWNhIE1haWFrZXIvbWFya2V0cGxhY2UgKG1pc21vIGNyaXRlcmlvIHF1ZSBDaGF0QUlNZXNzYWdlcyAvIENoYXRGb290ZXIpLiAqL1xuICAgIGNvbnN0IGlzQ2xvbmVNYXJrZXRwbGFjZVNlc3Npb24gPVxuICAgICAgY2hhdERhdGEuYWdlbnRUeXBlID09PSAnY2xvbmUnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KFN0cmluZyhjaGF0RGF0YS5hZ2VudCA/PyAnJykpXG5cbiAgICBpZiAoaGFzUHJvamVjdE1ldGFkYXRhKSB7XG4gICAgICBpbml0aWFsR3JvdXBzLnByb2plY3RzLnB1c2goY2hhdClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChoYXNDbGllbnRNZXRhZGF0YSAmJiAhaGFzUHJvamVjdE1ldGFkYXRhKSB7XG4gICAgICBpbml0aWFsR3JvdXBzLmNsaWVudHMucHVzaChjaGF0KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGlzQ3VzdG9tQWdlbnRTZXNzaW9uIHx8IGlzQ2xvbmVNYXJrZXRwbGFjZVNlc3Npb24pIHtcbiAgICAgIGluaXRpYWxHcm91cHMuYWdlbnRzQnlDb21wYW55LnB1c2goY2hhdClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGluaXRpYWxHcm91cHNcbn1cblxuLyoqIFN1YnTDrXR1bG8gZGUgbGEgZmlsYSBzZWfDum4gbGEgc2VjY2nDs246IHByb3llY3RvLCBjbGllbnRlIG8gbm9tYnJlIGRlbCBhZ2VudGUuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2lkZWJhckhpc3RvcnlTdWJ0aXRsZShjaGF0OiBhbnksIHNlY3Rpb25LZXk6IFNpZGViYXJTZWN0aW9uS2V5KTogc3RyaW5nIHtcbiAgc3dpdGNoIChzZWN0aW9uS2V5KSB7XG4gICAgY2FzZSAncHJvamVjdHMnOlxuICAgICAgcmV0dXJuIGNoYXQucHJvamVjdE5hbWUgPz8gJydcbiAgICBjYXNlICdjbGllbnRzJzpcbiAgICAgIHJldHVybiBjaGF0LmNsaWVudE5hbWUgPz8gJydcbiAgICBjYXNlICdhZ2VudHNCeUNvbXBhbnknOlxuICAgICAgaWYgKGNoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnKSB7XG4gICAgICAgIHJldHVybiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGNoYXQuYWdlbnQgPz8gJycpXG4gICAgICB9XG4gICAgICByZXR1cm4gY2hhdC5hZ2VudCA/PyAnJ1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJydcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTaWRlYmFyU2VjdGlvbnMoXG4gIGdyb3VwZWRDaGF0czogUmVjb3JkPFNpZGViYXJTZWN0aW9uS2V5LCBhbnlbXT4sXG4gIGdldFNlY3Rpb25MYWJlbDogKHNlY3Rpb25LZXk6IFNpZGViYXJTZWN0aW9uS2V5KSA9PiBzdHJpbmcsXG4gIC8qKiBgaGFzX21vcmVgIGRlbCBBUEkgdjIgcG9yIGdydXBvOyBwZXJtaXRlIOKAnFZlciBtw6Fz4oCdIGF1bnF1ZSBzb2xvIGhheWEgMyDDrXRlbXMgZW4gbGEgcHJpbWVyYSBww6FnaW5hLiAqL1xuICBzZXNzaW9uc0dyb3VwSGFzTW9yZTogUmVjb3JkPFNpZGViYXJTZWN0aW9uS2V5LCBib29sZWFuPlxuKTogU2lkZWJhckNoYXRzU2VjdGlvbk1vZGVsW10ge1xuICByZXR1cm4gU0lERUJBUl9TRUNUSU9OX09SREVSLm1hcChzZWN0aW9uS2V5ID0+IHtcbiAgICBjb25zdCBzZWN0aW9uQ2hhdHMgPSBncm91cGVkQ2hhdHNbc2VjdGlvbktleV1cbiAgICBpZiAoIXNlY3Rpb25DaGF0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBrZXk6IHNlY3Rpb25LZXksXG4gICAgICBsYWJlbDogZ2V0U2VjdGlvbkxhYmVsKHNlY3Rpb25LZXkpLFxuICAgICAgY2hhdHM6IHNlY3Rpb25DaGF0cyxcbiAgICAgIHZpc2libGVDaGF0czogc2VjdGlvbkNoYXRzLnNsaWNlKDAsIE1BWF9WSVNJQkxFX0NIQVRTX1BFUl9TRUNUSU9OKSxcbiAgICAgIGhhc01vcmU6IHNlY3Rpb25DaGF0cy5sZW5ndGggPiBNQVhfVklTSUJMRV9DSEFUU19QRVJfU0VDVElPTiB8fCBzZXNzaW9uc0dyb3VwSGFzTW9yZVtzZWN0aW9uS2V5XSxcbiAgICB9XG4gIH0pLmZpbHRlcihCb29sZWFuKSBhcyBTaWRlYmFyQ2hhdHNTZWN0aW9uTW9kZWxbXVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQ0VBLDZCQUE2QixFQUM3QkMscUJBQXFCLFFBR2hCLHNCQUFzQjtBQUU3QixPQUFPLFNBQVNDLCtCQUErQkEsQ0FBQ0MsU0FBaUIsRUFBVTtFQUN6RSxJQUFJLENBQUNBLFNBQVMsSUFBSSxPQUFPQSxTQUFTLEtBQUssUUFBUSxFQUFFLE9BQU9BLFNBQVM7RUFDakUsT0FBT0EsU0FBUyxDQUFDQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsTUFBTSxDQUFDLENBQUNBLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUM7QUFDM0c7QUFFQSxPQUFPLFNBQVNDLDBCQUEwQkEsQ0FBQ0MsS0FBWSxFQUFvQztFQUN6RixJQUFNQyxhQUErQyxHQUFHO0lBQ3REQyxPQUFPLEVBQUUsRUFBRTtJQUNYQyxRQUFRLEVBQUUsRUFBRTtJQUNaQyxlQUFlLEVBQUU7RUFDbkIsQ0FBQztFQUVESixLQUFLLENBQUNLLE9BQU8sQ0FBQyxVQUFBQyxJQUFJLEVBQUk7SUFBQSxJQUFBQyxlQUFBO0lBQ3BCLElBQU1DLFFBQVEsR0FBR0YsSUFBVztJQUM1QixJQUFNRyxpQkFBaUIsR0FBR0gsSUFBSSxDQUFDSSxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQ0osSUFBSSxDQUFDSyxVQUFVO0lBQ3BFLElBQU1DLGtCQUFrQixHQUFHTixJQUFJLENBQUNPLFNBQVMsSUFBSSxJQUFJLElB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
@@ -0,0 +1,14 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+
3
+ export var MAX_VISIBLE_CHATS_PER_SECTION = 3;
4
+
5
+ /** Orden fijo de secciones en el sidebar. */
6
+ export var SIDEBAR_SECTION_ORDER = ['clients', 'projects', 'agentsByCompany'];
7
+
8
+ /** Claves i18n bajo `conversations.sections.*` (namespace chat AI). */
9
+ export var SIDEBAR_SECTION_TRANSLATION_KEYS = {
10
+ clients: 'conversations.sections.clients',
11
+ projects: 'conversations.sections.projects',
12
+ agentsByCompany: 'conversations.sections.agentsByCompany'
13
+ };
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfVklTSUJMRV9DSEFUU19QRVJfU0VDVElPTiIsIlNJREVCQVJfU0VDVElPTl9PUkRFUiIsIlNJREVCQVJfU0VDVElPTl9UUkFOU0xBVElPTl9LRVlTIiwiY2xpZW50cyIsInByb2plY3RzIiwiYWdlbnRzQnlDb21wYW55Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvc2lkZWJhckNoYXRzLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuZXhwb3J0IHR5cGUgU2lkZWJhckNoYXRNZW51U3VyZmFjZSA9ICdzaWRlYmFyJyB8ICdzZWN0aW9uTW9kYWwnXG5cbmV4cG9ydCB0eXBlIFNpZGViYXJDaGF0TWVudVN0YXRlID0ge1xuICBjaGF0SWQ6IHN0cmluZ1xuICBzdXJmYWNlOiBTaWRlYmFyQ2hhdE1lbnVTdXJmYWNlXG59IHwgbnVsbFxuXG5leHBvcnQgdHlwZSBTaWRlYmFyU2VjdGlvbktleSA9ICdjbGllbnRzJyB8ICdwcm9qZWN0cycgfCAnYWdlbnRzQnlDb21wYW55J1xuXG5leHBvcnQgY29uc3QgTUFYX1ZJU0lCTEVfQ0hBVFNfUEVSX1NFQ1RJT04gPSAzXG5cbi8qKiBPcmRlbiBmaWpvIGRlIHNlY2Npb25lcyBlbiBlbCBzaWRlYmFyLiAqL1xuZXhwb3J0IGNvbnN0IFNJREVCQVJfU0VDVElPTl9PUkRFUjogU2lkZWJhclNlY3Rpb25LZXlbXSA9IFsnY2xpZW50cycsICdwcm9qZWN0cycsICdhZ2VudHNCeUNvbXBhbnknXVxuXG4vKiogQ2xhdmVzIGkxOG4gYmFqbyBgY29udmVyc2F0aW9ucy5zZWN0aW9ucy4qYCAobmFtZXNwYWNlIGNoYXQgQUkpLiAqL1xuZXhwb3J0IGNvbnN0IFNJREVCQVJfU0VDVElPTl9UUkFOU0xBVElPTl9LRVlTOiBSZWNvcmQ8U2lkZWJhclNlY3Rpb25LZXksIHN0cmluZz4gPSB7XG4gIGNsaWVudHM6ICdjb252ZXJzYXRpb25zLnNlY3Rpb25zLmNsaWVudHMnLFxuICBwcm9qZWN0czogJ2NvbnZlcnNhdGlvbnMuc2VjdGlvbnMucHJvamVjdHMnLFxuICBhZ2VudHNCeUNvbXBhbnk6ICdjb252ZXJzYXRpb25zLnNlY3Rpb25zLmFnZW50c0J5Q29tcGFueScsXG59XG5cbmV4cG9ydCB0eXBlIFNpZGViYXJDaGF0c1NlY3Rpb25Nb2RlbCA9IHtcbiAga2V5OiBTaWRlYmFyU2VjdGlvbktleVxuICBsYWJlbDogc3RyaW5nXG4gIGNoYXRzOiBhbnlbXVxuICB2aXNpYmxlQ2hhdHM6IGFueVtdXG4gIGhhc01vcmU6IGJvb2xlYW5cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBV0EsT0FBTyxJQUFNQSw2QkFBNkIsR0FBRyxDQUFDOztBQUU5QztBQUNBLE9BQU8sSUFBTUMscUJBQTBDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixDQUFDOztBQUVwRztBQUNBLE9BQU8sSUFBTUMsZ0NBQW1FLEdBQUc7RUFDakZDLE9BQU8sRUFBRSxnQ0FBZ0M7RUFDekNDLFFBQVEsRUFBRSxpQ0FBaUM7RUFDM0NDLGVBQWUsRUFBRTtBQUNuQixDQUFDIiwiaWdub3JlTGlzdCI6W119