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

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 +14 -8
  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 +44 -9
  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,137 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+ /* eslint-disable react/function-component-definition */
5
+ import { useState, useCallback } from 'react';
6
+ import { ArrowRight } from '@projectcor/icons/lib/components/ArrowRight';
7
+ import { useT } from '../../../hooks/useT';
8
+ import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
9
+ import { fetchAgentDetailAndParsedForAbm } from '../../../services/maia/Agents/fetchAgentDetail';
10
+ import { SCSuggestionsWrapper, SCSuggestionsTitle, SCSuggestionsList, SCSuggestionButton, SCSuggestionText } from './ChatAISuggestions.styles';
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ export var ChatAICreateAgentActions = function ChatAICreateAgentActions(_ref) {
13
+ var agentId = _ref.agentId,
14
+ _ref$hidden = _ref.hidden,
15
+ hidden = _ref$hidden === void 0 ? false : _ref$hidden,
16
+ _ref$disabled = _ref.disabled,
17
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled;
18
+ var _useT = useT(),
19
+ t = _useT.t;
20
+ var _useSnackBarManager = useSnackBarManager(),
21
+ handleSnackbarError = _useSnackBarManager.handleSnackbarError;
22
+ var _useState = useState(null),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ busy = _useState2[0],
25
+ setBusy = _useState2[1];
26
+ var runAction = useCallback(/*#__PURE__*/function () {
27
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(action) {
28
+ var _yield$fetchAgentDeta, chatAgent, abmParsed, message, _t;
29
+ return _regeneratorRuntime.wrap(function (_context) {
30
+ while (1) switch (_context.prev = _context.next) {
31
+ case 0:
32
+ if (!(!(agentId !== null && agentId !== void 0 && agentId.trim()) || disabled || hidden || busy)) {
33
+ _context.next = 1;
34
+ break;
35
+ }
36
+ return _context.abrupt("return");
37
+ case 1:
38
+ if (window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) {
39
+ _context.next = 2;
40
+ break;
41
+ }
42
+ return _context.abrupt("return");
43
+ case 2:
44
+ setBusy(action);
45
+ _context.prev = 3;
46
+ _context.next = 4;
47
+ return fetchAgentDetailAndParsedForAbm(agentId);
48
+ case 4:
49
+ _yield$fetchAgentDeta = _context.sent;
50
+ chatAgent = _yield$fetchAgentDeta.chatAgent;
51
+ abmParsed = _yield$fetchAgentDeta.abmParsed;
52
+ if (!(action === 'start_chat')) {
53
+ _context.next = 5;
54
+ break;
55
+ }
56
+ // Igual que ChatAIMyAgents: setProject/client, selectAgent, volver al home del modal
57
+ document.dispatchEvent(new CustomEvent('maia-open-new-chat-with-agent', {
58
+ detail: {
59
+ agent: chatAgent
60
+ }
61
+ }));
62
+ return _context.abrupt("return");
63
+ case 5:
64
+ document.dispatchEvent(new CustomEvent('abm-agent-modal-set-values', {
65
+ detail: {
66
+ agentValues: {
67
+ values: {
68
+ isEditing: true,
69
+ general: {
70
+ id: abmParsed.id,
71
+ name: abmParsed.name
72
+ }
73
+ },
74
+ prefetchedAgentById: abmParsed,
75
+ isOpen: true,
76
+ initialSection: 'knowledge'
77
+ }
78
+ }
79
+ }));
80
+ _context.next = 7;
81
+ break;
82
+ case 6:
83
+ _context.prev = 6;
84
+ _t = _context["catch"](3);
85
+ message = _t instanceof Error ? _t.message : t('chat.createAgentActionLoadError');
86
+ handleSnackbarError(message);
87
+ case 7:
88
+ _context.prev = 7;
89
+ setBusy(null);
90
+ return _context.finish(7);
91
+ case 8:
92
+ case "end":
93
+ return _context.stop();
94
+ }
95
+ }, _callee, null, [[3, 6, 7, 8]]);
96
+ }));
97
+ return function (_x) {
98
+ return _ref2.apply(this, arguments);
99
+ };
100
+ }(), [agentId, disabled, hidden, busy, handleSnackbarError, t]);
101
+ if (!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS) return null;
102
+ return /*#__PURE__*/_jsxs(SCSuggestionsWrapper, {
103
+ $hidden: hidden,
104
+ children: [/*#__PURE__*/_jsx(SCSuggestionsTitle, {
105
+ children: t('chat.createAgentActionsTitle')
106
+ }), /*#__PURE__*/_jsxs(SCSuggestionsList, {
107
+ children: [/*#__PURE__*/_jsxs(SCSuggestionButton, {
108
+ type: "button",
109
+ onClick: function onClick() {
110
+ return runAction('start_chat');
111
+ },
112
+ disabled: disabled || hidden || busy !== null,
113
+ children: [/*#__PURE__*/_jsx(ArrowRight, {
114
+ width: 12,
115
+ height: 12,
116
+ color: "#20201F"
117
+ }), /*#__PURE__*/_jsx(SCSuggestionText, {
118
+ children: t('chat.createAgentActionStartChat')
119
+ })]
120
+ }), /*#__PURE__*/_jsxs(SCSuggestionButton, {
121
+ type: "button",
122
+ onClick: function onClick() {
123
+ return runAction('knowledge');
124
+ },
125
+ disabled: disabled || hidden || busy !== null,
126
+ children: [/*#__PURE__*/_jsx(ArrowRight, {
127
+ width: 12,
128
+ height: 12,
129
+ color: "#20201F"
130
+ }), /*#__PURE__*/_jsx(SCSuggestionText, {
131
+ children: t('chat.createAgentActionKnowledge')
132
+ })]
133
+ })]
134
+ })]
135
+ });
136
+ };
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwiQXJyb3dSaWdodCIsInVzZVQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaEFnZW50RGV0YWlsQW5kUGFyc2VkRm9yQWJtIiwiU0NTdWdnZXN0aW9uc1dyYXBwZXIiLCJTQ1N1Z2dlc3Rpb25zVGl0bGUiLCJTQ1N1Z2dlc3Rpb25zTGlzdCIsIlNDU3VnZ2VzdGlvbkJ1dHRvbiIsIlNDU3VnZ2VzdGlvblRleHQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIiwiX3JlZiIsImFnZW50SWQiLCJfcmVmJGhpZGRlbiIsImhpZGRlbiIsIl9yZWYkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIl91c2VUIiwidCIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYnVzeSIsInNldEJ1c3kiLCJydW5BY3Rpb24iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiYWN0aW9uIiwiX3lpZWxkJGZldGNoQWdlbnREZXRhIiwiY2hhdEFnZW50IiwiYWJtUGFyc2VkIiwibWVzc2FnZSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJ0cmltIiwiYWJydXB0Iiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsInNlbnQiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImFnZW50IiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJnZW5lcmFsIiwiaWQiLCJuYW1lIiwicHJlZmV0Y2hlZEFnZW50QnlJZCIsImlzT3BlbiIsImluaXRpYWxTZWN0aW9uIiwiRXJyb3IiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsIiRoaWRkZW4iLCJjaGlsZHJlbiIsInR5cGUiLCJvbkNsaWNrIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9DaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEFycm93UmlnaHQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BcnJvd1JpZ2h0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbEFuZFBhcnNlZEZvckFibSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQge1xuICBTQ1N1Z2dlc3Rpb25zV3JhcHBlcixcbiAgU0NTdWdnZXN0aW9uc1RpdGxlLFxuICBTQ1N1Z2dlc3Rpb25zTGlzdCxcbiAgU0NTdWdnZXN0aW9uQnV0dG9uLFxuICBTQ1N1Z2dlc3Rpb25UZXh0LFxufSBmcm9tICcuL0NoYXRBSVN1Z2dlc3Rpb25zLnN0eWxlcydcblxuZXhwb3J0IHR5cGUgQ3JlYXRlQWdlbnRGb2xsb3dVcEFjdGlvbiA9ICdzdGFydF9jaGF0JyB8ICdrbm93bGVkZ2UnXG5cbnR5cGUgQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zUHJvcHMgPSB7XG4gIGFnZW50SWQ6IHN0cmluZ1xuICBoaWRkZW4/OiBib29sZWFuXG4gIGRpc2FibGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zID0gKHtcbiAgYWdlbnRJZCxcbiAgaGlkZGVuID0gZmFsc2UsXG4gIGRpc2FibGVkID0gZmFsc2UsXG59OiBDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG4gIGNvbnN0IFtidXN5LCBzZXRCdXN5XSA9IHVzZVN0YXRlPENyZWF0ZUFnZW50Rm9sbG93VXBBY3Rpb24gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IHJ1bkFjdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhY3Rpb246IENyZWF0ZUFnZW50Rm9sbG93VXBBY3Rpb24pID0+IHtcbiAgICAgIGlmICghYWdlbnRJZD8udHJpbSgpIHx8IGRpc2FibGVkIHx8IGhpZGRlbiB8fCBidXN5KSByZXR1cm5cbiAgICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldEJ1c3koYWN0aW9uKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBjaGF0QWdlbnQsIGFibVBhcnNlZCB9ID0gYXdhaXQgZmV0Y2hBZ2VudERldGFpbEFuZFBhcnNlZEZvckFibShhZ2VudElkKVxuICAgICAgICBpZiAoYWN0aW9uID09PSAnc3RhcnRfY2hhdCcpIHtcbiAgICAgICAgICAvLyBJZ3VhbCBxdWUgQ2hhdEFJTXlBZ2VudHM6IHNldFByb2plY3QvY2xpZW50LCBzZWxlY3RBZ2VudCwgdm9sdmVyIGFsIGhvbWUgZGVsIG1vZGFsXG4gICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1vcGVuLW5ldy1jaGF0LXdpdGgtYWdlbnQnLCB7XG4gICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICBhZ2VudFZhbHVlczoge1xuICAgICAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICAgICAgaXNFZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAgICAgICBpZDogYWJtUGFyc2VkLmlkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhYm1QYXJzZWQubmFtZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkOiBhYm1QYXJzZWQsXG4gICAgICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgICAgICAgIGluaXRpYWxTZWN0aW9uOiAna25vd2xlZGdlJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogdCgnY2hhdC5jcmVhdGVBZ2VudEFjdGlvbkxvYWRFcnJvcicpXG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IobWVzc2FnZSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldEJ1c3kobnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudElkLCBkaXNhYmxlZCwgaGlkZGVuLCBidXN5LCBoYW5kbGVTbmFja2JhckVycm9yLCB0XVxuICApXG5cbiAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykgcmV0dXJuIG51bGxcblxuICByZXR1cm4gKFxuICAgIDxTQ1N1Z2dlc3Rpb25zV3JhcHBlciAkaGlkZGVuPXtoaWRkZW59PlxuICAgICAgPFNDU3VnZ2VzdGlvbnNUaXRsZT57dCgnY2hhdC5jcmVhdGVBZ2VudEFjdGlvbnNUaXRsZScpfTwvU0NTdWdnZXN0aW9uc1RpdGxlPlxuICAgICAgPFNDU3VnZ2VzdGlvbnNMaXN0PlxuICAgICAgICA8U0NTdWdnZXN0aW9uQnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gcnVuQWN0aW9uKCdzdGFydF9jaGF0Jyl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGhpZGRlbiB8fCBidXN5ICE9PSBudWxsfVxuICAgICAgICA+XG4gICAgICAgICAgPEFycm93UmlnaHQgd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICAgIDxTQ1N1Z2dlc3Rpb25UZXh0Pnt0KCdjaGF0LmNyZWF0ZUFnZW50QWN0aW9uU3RhcnRDaGF0Jyl9PC9TQ1N1Z2dlc3Rpb25UZXh0PlxuICAgICAgICA8L1NDU3VnZ2VzdGlvbkJ1dHRvbj5cbiAgICAgICAgPFNDU3VnZ2VzdGlvbkJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHJ1bkFjdGlvbigna25vd2xlZGdlJyl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGhpZGRlbiB8fCBidXN5ICE9PSBudWxsfVxuICAgICAgICA+XG4gICAgICAgICAgPEFycm93UmlnaHQgd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMyMDIwMUZcIiAvPlxuICAgICAgICAgIDxTQ1N1Z2dlc3Rpb25UZXh0Pnt0KCdjaGF0LmNyZWF0ZUFnZW50QWN0aW9uS25vd2xlZGdlJyl9PC9TQ1N1Z2dlc3Rpb25UZXh0PlxuICAgICAgICA8L1NDU3VnZ2VzdGlvbkJ1dHRvbj5cbiAgICAgIDwvU0NTdWdnZXN0aW9uc0xpc3Q+XG4gICAgPC9TQ1N1Z2dlc3Rpb25zV3JhcHBlcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDN0MsU0FBU0MsVUFBVSxRQUFRLDZDQUE2QztBQUN4RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQywrQkFBK0IsUUFBUSxnREFBZ0Q7QUFDaEcsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxnQkFBZ0IsUUFDWCw0QkFBNEI7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsSUFBQSxJQUFBQyxLQUFBO0FBVW5DLE9BQU8sSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBQUMsSUFBQSxFQUlBO0VBQUEsSUFIbkNDLE9BQU8sR0FBQUQsSUFBQSxDQUFQQyxPQUFPO0lBQUFDLFdBQUEsR0FBQUYsSUFBQSxDQUNQRyxNQUFNO0lBQU5BLE1BQU0sR0FBQUQsV0FBQSxjQUFHLEtBQUssR0FBQUEsV0FBQTtJQUFBRSxhQUFBLEdBQUFKLElBQUEsQ0FDZEssUUFBUTtJQUFSQSxRQUFRLEdBQUFELGFBQUEsY0FBRyxLQUFLLEdBQUFBLGFBQUE7RUFFaEIsSUFBQUUsS0FBQSxHQUFjbkIsSUFBSSxDQUFDLENBQUM7SUFBWm9CLENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0VBQ1QsSUFBQUMsbUJBQUEsR0FBZ0NwQixrQkFBa0IsQ0FBQyxDQUFD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