@projectcor/maia-components 2.11.63-3 → 2.11.64-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/lib/App.js +2 -6
  2. package/lib/components/atoms/Chip/Chip.js +15 -49
  3. package/lib/components/atoms/Chip/styles.js +3 -7
  4. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +7 -44
  5. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +14 -22
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +5 -8
  7. package/lib/components/atoms/icons/index.js +1 -2
  8. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
  9. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
  10. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
  11. package/lib/components/molecules/AbmSection/index.js +1 -2
  12. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -9
  13. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +4 -6
  14. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +5 -10
  15. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +26 -46
  16. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -14
  17. package/lib/components/molecules/ChatAIModal/constants.js +2 -6
  18. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +2 -2
  19. package/lib/components/molecules/ChatFooter/ChatFooter.js +21 -105
  20. package/lib/components/molecules/ChatFooter/styles.js +2 -11
  21. package/lib/components/molecules/Sidebar/Sidebar.js +43 -68
  22. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +11 -15
  23. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +56 -269
  24. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
  25. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +2 -10
  26. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
  27. package/lib/constants/maiaTaskPanelAccess.js +2 -2
  28. package/lib/constants/permissions/index.js +2 -2
  29. package/lib/constants/permissions/utils.js +4 -1
  30. package/lib/context/global-context.js +1 -8
  31. package/lib/hooks/useAgentModel/useCreateAgent.js +10 -11
  32. package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -12
  33. package/lib/hooks/useChatManager/useChatManager.js +19 -142
  34. package/lib/hooks/useChatMessages/useChatMessages.js +1 -1
  35. package/lib/hooks/useContextMentions.js +6 -16
  36. package/lib/hooks/useEntitySearch.js +128 -73
  37. package/lib/hooks/useMentionAllowedTypes.js +19 -48
  38. package/lib/hooks/useMentionPopover.js +17 -31
  39. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  40. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +7 -16
  41. package/lib/hooks/useProjectSearch.js +28 -4
  42. package/lib/hooks/useProjectSummaryConfig.js +3 -47
  43. package/lib/hooks/useRecentClientsSearch.js +34 -4
  44. package/lib/lang/br/index.js +1 -525
  45. package/lib/lang/en/index.js +1 -525
  46. package/lib/lang/es/index.js +1 -525
  47. package/lib/lang/fr/index.js +2 -257
  48. package/lib/services/maia/Agents/createAgent.js +1 -1
  49. package/lib/services/maia/Agents/getAgentById.js +2 -3
  50. package/lib/services/maia/Agents/getAgents.js +91 -68
  51. package/lib/services/maia/Agents/updateAgent.js +1 -1
  52. package/lib/services/maia/Chats/getChatsByUserId.js +9 -13
  53. package/lib/services/maia/Orchestrator/orchestrator.js +6 -15
  54. package/lib/services/utils/validateIsMaia.js +2 -2
  55. package/lib/types/Chat.js +1 -1
  56. package/lib/types/agent.js +1 -1
  57. package/lib/types/agentModal.js +1 -1
  58. package/lib/types/global.d.js +1 -1
  59. package/lib/utils/hitlAnalytics.js +3 -3
  60. package/package.json +1 -1
  61. package/lib/components/atoms/icons/RocketIcon.js +0 -31
  62. package/lib/components/atoms/icons/WrenchIcon.js +0 -42
  63. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +0 -522
  64. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +0 -234
  65. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +0 -437
  66. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +0 -3
  67. package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +0 -80
  68. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +0 -2
  69. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +0 -722
  70. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +0 -165
  71. package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +0 -2
  72. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.js +0 -486
  73. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.styles.js +0 -184
  74. package/lib/components/molecules/ChatAIMyRoutines/index.js +0 -2
  75. package/lib/components/molecules/SchedulesPage/SchedulesPage.js +0 -610
  76. package/lib/components/molecules/SchedulesPage/index.js +0 -2
  77. package/lib/components/molecules/SkillsPage/SkillsPage.js +0 -708
  78. package/lib/components/molecules/SkillsPage/index.js +0 -2
  79. package/lib/components/molecules/maiaSectionModalStyles.js +0 -91
  80. package/lib/components/molecules/maiaSectionUiTokens.js +0 -31
  81. package/lib/dev/DevAbmAgentModal.js +0 -114
  82. package/lib/dev/mocks/abmModalMocks.js +0 -193
  83. package/lib/hooks/useContextPinPopover.js +0 -228
  84. package/lib/services/maia/Agents/connectors.js +0 -110
  85. package/lib/services/maia/Agents/skills.js +0 -164
  86. package/lib/services/maia/Schedules/createSchedule.js +0 -39
  87. package/lib/services/maia/Schedules/deleteSchedule.js +0 -36
  88. package/lib/services/maia/Schedules/getMySchedules.js +0 -55
  89. package/lib/services/maia/Schedules/getSchedules.js +0 -58
  90. package/lib/services/maia/Schedules/index.js +0 -5
  91. package/lib/types/agentSkill.js +0 -2
  92. package/lib/types/attachment.js +0 -2
@@ -6,10 +6,8 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
  /* eslint-disable no-unused-vars */
7
7
  /* eslint-disable no-undef */
8
8
  /* eslint-disable react/require-default-props */
9
- import { useCallback, useMemo, useRef, useState, useEffect } from 'react';
10
- import { createPortal } from 'react-dom';
9
+ import { useMemo, useRef, useState, useEffect } from 'react';
11
10
  import { Attach } from '@projectcor/icons/lib/components/Attach';
12
- import { Plus } from '@projectcor/icons/lib/components/Plus';
13
11
  import { MODAL_ELEMENTS } from '../../../hooks/useModal/useModal';
14
12
  import { Chip } from '../../atoms/Chip';
15
13
  // eslint-disable-next-line import/no-cycle
@@ -18,9 +16,7 @@ import { ChatFooterFaqs } from './ChatFooterFaqs';
18
16
  import { useGlobalContext } from '../../../context/global-context';
19
17
  import { useT } from '../../../hooks/useT';
20
18
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
21
- // eslint-disable-next-line import/no-cycle
22
- import { useContextPinPopover } from '../../../hooks/useContextPinPopover';
23
- import { StyledChatFooter, ChipsAndFaqsRow, ContextBarLeft, AddContextButton } from './styles';
19
+ import { StyledChatFooter, ChipsAndFaqsRow } from './styles';
24
20
  import { CsvFileIcon, MDFileIcon, DocFileIcon, DocxFileIcon, TextFileIcon, PdfFileIcon, ImageFileIcon, XlsxFileIcon, XlsFileIcon, Mp3FileIcon, WavFileIcon, FlacFileIcon, M4aFileIcon, Mp4FileIcon, OgaFileIcon, OggFileIcon, WebmFileIcon } from '../../atoms/icons';
25
21
  import { ImagePreview } from '../../atoms/ImagePreview/ImagePreview';
26
22
  import { preprocessImageForBackend } from '../../../utils/imagePreprocessor';
@@ -66,25 +62,10 @@ export function ChatFooter(_ref) {
66
62
  chipsProject = _useGlobalContext.chipsProject,
67
63
  client = _useGlobalContext.client,
68
64
  task = _useGlobalContext.task,
69
- section = _useGlobalContext.section,
70
- setProject = _useGlobalContext.setProject,
71
- setClient = _useGlobalContext.setClient,
72
- setTask = _useGlobalContext.setTask,
73
- setChipsProject = _useGlobalContext.setChipsProject;
65
+ section = _useGlobalContext.section;
74
66
  var _useT = useT(),
75
67
  t = _useT.t;
76
68
  var event = useEvent();
77
- var pinButtonRef = useRef(null);
78
- var inputPopoverAnchorRef = useRef(null);
79
- var contextBarAnchorRef = useRef(null);
80
- var isOrchestrator = (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator';
81
- var _useContextPinPopover = useContextPinPopover({
82
- popoverAnchorRef: inputPopoverAnchorRef,
83
- topAnchorRef: contextBarAnchorRef,
84
- triggerRef: pinButtonRef
85
- }),
86
- togglePin = _useContextPinPopover.toggle,
87
- pinPopoverNode = _useContextPinPopover.popoverNode;
88
69
  var _useState = useState([]),
89
70
  _useState2 = _slicedToArray(_useState, 2),
90
71
  attachments = _useState2[0],
@@ -117,61 +98,20 @@ export function ChatFooter(_ref) {
117
98
  document.removeEventListener('chat-session-changed', handleSessionChange);
118
99
  };
119
100
  }, []);
120
- var _useMemo = useMemo(function () {
121
- if (items) return {
122
- chipItems: items
123
- };
124
-
125
- // Mono-contexto: solo la entidad más específica (sin anidar cliente/proyecto/tarea).
126
- if ((agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator') {
127
- if (task !== null && task !== void 0 && task.name) return {
128
- chipItems: [task.name],
129
- chipType: 'task'
130
- };
131
- if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectName) return {
132
- chipItems: [chipsProject.projectName],
133
- chipType: 'project'
134
- };
135
- if (client !== null && client !== void 0 && client.name) return {
136
- chipItems: [client.name],
137
- chipType: 'client'
138
- };
139
- return {
140
- chipItems: []
141
- };
142
- }
143
- if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'client' && client !== null && client !== void 0 && client.name) {
144
- return {
145
- chipItems: [client.name],
146
- chipType: 'client'
147
- };
148
- }
149
- if (task !== null && task !== void 0 && task.name) return {
150
- chipItems: [task.name],
151
- chipType: 'task'
152
- };
153
- if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectName) return {
154
- chipItems: [chipsProject.projectName],
155
- chipType: 'project'
156
- };
157
- if (project !== null && project !== void 0 && project.name) return {
158
- chipItems: [project.name],
159
- chipType: 'project'
160
- };
161
- return {
162
- chipItems: []
163
- };
164
- }, [items, project, chipsProject, agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, client, task === null || task === void 0 ? void 0 : task.name]),
165
- chipItems = _useMemo.chipItems,
166
- chipType = _useMemo.chipType;
167
-
168
- // Quitar el pin ⇒ modo global, sin redirect (el orquestador no pasa por el gate de selectores). RFC §8.
169
- var handleRemoveContext = useCallback(function () {
170
- setProject(null);
171
- setClient === null || setClient === void 0 || setClient(null);
172
- setTask(null);
173
- setChipsProject(null);
174
- }, [setProject, setClient, setTask, setChipsProject]);
101
+ var chipItems = useMemo(function () {
102
+ if (items) return items;
103
+ var tempItems = [];
104
+ if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'client' && client !== null && client !== void 0 && client.name) {
105
+ tempItems.push(client.name);
106
+ } else if (task !== null && task !== void 0 && task.name) {
107
+ tempItems.push(task.name);
108
+ } else if (chipsProject !== null && chipsProject !== void 0 && chipsProject.projectName) {
109
+ tempItems.push(chipsProject.projectName);
110
+ } else if (project !== null && project !== void 0 && project.name) {
111
+ tempItems.push(project.name);
112
+ }
113
+ return tempItems;
114
+ }, [items, project, chipsProject, agent === null || agent === void 0 ? void 0 : agent.entity, client, task === null || task === void 0 ? void 0 : task.name]);
175
115
  var onChange = function onChange() {
176
116
  if (reportedEvent.current) return;
177
117
  event(EVENTS.pmAiTypedText, {
@@ -306,37 +246,13 @@ export function ChatFooter(_ref) {
306
246
  var shouldShowFaqs = showFaqs && section !== 'task';
307
247
  return /*#__PURE__*/_jsxs(StyledChatFooter, {
308
248
  children: [isMAIA && !loadingMessages && /*#__PURE__*/_jsxs(ChipsAndFaqsRow, {
309
- ref: contextBarAnchorRef,
310
- children: [/*#__PURE__*/_jsxs(ContextBarLeft, {
311
- children: [!!chipItems.length && /*#__PURE__*/_jsx(Chip, {
312
- items: chipItems,
313
- type: chipType,
314
- onRemove: isOrchestrator ? handleRemoveContext : undefined,
315
- removeLabel: t('contextPin.remove', {
316
- defaultValue: 'Quitar contexto'
317
- }),
318
- tooltip: isOrchestrator ? t('chat.activity.dynamicContextTooltip') : undefined,
319
- tooltipZIndex: tooltipZIndex
320
- }), isOrchestrator && /*#__PURE__*/_jsxs(AddContextButton, {
321
- ref: pinButtonRef,
322
- type: "button",
323
- onClick: togglePin,
324
- children: [/*#__PURE__*/_jsx(Plus, {
325
- color: "currentColor",
326
- width: 14,
327
- height: 14
328
- }), !chipItems.length && /*#__PURE__*/_jsx("span", {
329
- children: t('contextPin.addContext', {
330
- defaultValue: 'Contexto'
331
- })
332
- })]
333
- })]
249
+ children: [!!chipItems.length && /*#__PURE__*/_jsx(Chip, {
250
+ items: chipItems
334
251
  }), shouldShowFaqs && /*#__PURE__*/_jsx(ChatFooterFaqs, {
335
252
  onSelectFaq: handleSelectFaq,
336
253
  disabled: isFaqInteractionDisabled
337
254
  })]
338
- }), pinPopoverNode && /*#__PURE__*/createPortal(pinPopoverNode, document.body), /*#__PURE__*/_jsx(MAIAInput, {
339
- popoverAnchorRef: inputPopoverAnchorRef,
255
+ }), /*#__PURE__*/_jsx(MAIAInput, {
340
256
  onSendMessage: handleSendMessage,
341
257
  className: MODAL_ELEMENTS,
342
258
  disabled: disabled,
@@ -368,4 +284,4 @@ export function ChatFooter(_ref) {
368
284
  })]
369
285
  });
370
286
  }
371
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsImNyZWF0ZVBvcnRhbCIsIkF0dGFjaCIsIlBsdXMiLCJNT0RBTF9FTEVNRU5UUyIsIkNoaXAiLCJNQUlBSW5wdXQiLCJDaGF0Rm9vdGVyRmFxcyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ1c2VDb250ZXh0UGluUG9wb3ZlciIsIlN0eWxlZENoYXRGb290ZXIiLCJDaGlwc0FuZEZhcXNSb3ciLCJDb250ZXh0QmFyTGVmdCIsIkFkZENvbnRleHRCdXR0b24iLCJDc3ZGaWxlSWNvbiIsIk1ERmlsZUljb24iLCJEb2NGaWxlSWNvbiIsIkRvY3hGaWxlSWNvbiIsIlRleHRGaWxlSWNvbiIsIlBkZkZpbGVJY29uIiwiSW1hZ2VGaWxlSWNvbiIsIlhsc3hGaWxlSWNvbiIsIlhsc0ZpbGVJY29uIiwiTXAzRmlsZUljb24iLCJXYXZGaWxlSWNvbiIsIkZsYWNGaWxlSWNvbiIsIk00YUZpbGVJY29uIiwiTXA0RmlsZUljb24iLCJPZ2FGaWxlSWNvbiIsIk9nZ0ZpbGVJY29uIiwiV2VibUZpbGVJY29uIiwiSW1hZ2VQcmV2aWV3IiwicHJlcHJvY2Vzc0ltYWdlRm9yQmFja2VuZCIsInZhbGlkYXRlSXNNYWlhIiwiQ2hhdERpc2NsYWltZXJNZXNzYWdlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkljb25CeUZpbGVUeXBlIiwiQ2hhdEZvb3RlciIsIl9yZWYiLCJvblNlbmRNZXNzYWdlIiwiaXRlbXMiLCJkaXNhYmxlZCIsImlzU3RyZWFtaW5nIiwiaXNXcml0aW5nIiwib25TdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJfcmVmJHNob3dGYXFzIiwic2hvd0ZhcXMiLCJ0b29sdGlwWkluZGV4IiwiX3VzZUdsb2JhbENvbnRleHQiLCJwcm9qZWN0IiwiYWdlbnQiLCJjaGlwc1Byb2plY3QiLCJjbGllbnQiLCJ0YXNrIiwic2VjdGlvbiIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwic2V0Q2hpcHNQcm9qZWN0IiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJwaW5CdXR0b25SZWYiLCJpbnB1dFBvcG92ZXJBbmNob3JSZWYiLCJjb250ZXh0QmFyQW5jaG9yUmVmIiwiaXNPcmNoZXN0cmF0b3IiLCJ0eXBlIiwiX3VzZUNvbnRleHRQaW5Qb3BvdmVyIiwicG9wb3ZlckFuY2hvclJlZiIsInRvcEFuY2hvclJlZiIsInRyaWdnZXJSZWYiLCJ0b2dnbGVQaW4iLCJ0b2dnbGUiLCJwaW5Qb3BvdmVyTm9kZSIsInBvcG92ZXJOb2RlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYXR0YWNobWVudHMiLCJzZXRBdHRhY2htZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9hZGluZ01lc3NhZ2VzIiwic2V0TG9hZGluZ01lc3NhZ2VzIiwicmVwb3J0ZWRFdmVudCIsImlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCIsImVudGl0eSIsInRlc3QiLCJuYW1lIiwiaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlIiwiZSIsImRldGFpbCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVTZXNzaW9uQ2hhbmdlIiwiX3VzZU1lbW8iLCJjaGlwSXRlbXMiLCJjaGlwVHlwZSIsInByb2plY3ROYW1lIiwiaGFuZGxlUmVtb3ZlQ29udGV4dCIsIm9uQ2hhbmdlIiwiY3VycmVudCIsInBtQWlUeXBlZFRleHQiLCJhZ2VudF90eXBlIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJtZXNzYWdlIiwibmV3QXR0YWNobWVudHMiLCJtZW50aW9ucyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJmdWFJZCIsInNjSWQiLCJhaUNoYXRTZW5kIiwiYWdlbnRfaWQiLCJpZCIsImFnZW50X25hbWUiLCJoYW5kbGVTZWxlY3RGYXEiLCJ1bmRlZmluZWQiLCJoYW5kbGVGaWxlQXR0YWNoIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJmaWxlTmFtZVBhcnRzIiwiZmlsZUV4dGVuc2lvbiIsImlzSW1hZ2VCeUV4dGVuc2lvbiIsImlzSW1hZ2VCeU1pbWUiLCJpc0ltYWdlIiwiZXh0ZW5zaW9uVG9JY29uIiwiaWNvbiIsImV4dGVuc2lvblRvTWltZVR5cGUiLCJtaW1lVHlwZUJ5RXh0ZW5zaW9uIiwicHJvY2Vzc2VkRmlsZSIsImltYWdlVXJsIiwibmV3QXR0YWNobWVudCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJzcGxpdCIsImxlbmd0aCIsImNvbmNhdCIsInBvcCIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJzdGFydHNXaXRoIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsInNlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJzcmMiLCJhbHQiLCJib3JkZXJSYWRpdXMiLCJvcmlnaW5hbEZpbGUiLCJEYXRlIiwibm93IiwiTWF0aCIsInJhbmRvbSIsInNpemUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJmaWx0ZXIiLCJhdHRhY2htZW50IiwiaXNNQUlBIiwiZGlzY2xhaW1lck1lc3NhZ2UiLCJhZ2VudE5hbWUiLCJpc0ZhcUludGVyYWN0aW9uRGlzYWJsZWQiLCJCb29sZWFuIiwic2hvdWxkU2hvd0ZhcXMiLCJjaGlsZHJlbiIsInJlZiIsIm9uUmVtb3ZlIiwicmVtb3ZlTGFiZWwiLCJkZWZhdWx0VmFsdWUiLCJ0b29sdGlwIiwib25DbGljayIsIm9uU2VsZWN0RmFxIiwiYm9keSIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJhdHQiLCJtYXAiLCJOdW1iZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG5pbXBvcnQgeyBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IEF0dGFjaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0F0dGFjaCdcbmltcG9ydCB7IFBsdXMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9QbHVzJ1xuaW1wb3J0IHsgTU9EQUxfRUxFTUVOVFMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNb2RhbC91c2VNb2RhbCdcblxuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uLy4uL2F0b21zL0NoaXAnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBNQUlBSW5wdXQgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBSW5wdXQnXG5pbXBvcnQgeyBDaGF0Rm9vdGVyRmFxcyB9IGZyb20gJy4vQ2hhdEZvb3RlckZhcXMnXG5cbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IHVzZUNvbnRleHRQaW5Qb3BvdmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ29udGV4dFBpblBvcG92ZXInXG5pbXBvcnQgeyBTdHlsZWRDaGF0Rm9vdGVyLCBDaGlwc0FuZEZhcXNSb3csIENvbnRleHRCYXJMZWZ0LCBBZGRDb250ZXh0QnV0dG9uIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQge1xuICBDc3ZGaWxlSWNvbixcbiAgTURGaWxlSWNvbixcbiAgRG9jRmlsZUljb24sXG4gIERvY3hGaWxlSWNvbixcbiAgVGV4dEZpbGVJY29uLFxuICBQZGZGaWxlSWNvbixcbiAgSW1hZ2VGaWxlSWNvbixcbiAgWGxzeEZpbGVJY29uLFxuICBYbHNGaWxlSWNvbixcbiAgTXAzRmlsZUljb24sXG4gIFdhdkZpbGVJY29uLFxuICBGbGFjRmlsZUljb24sXG4gIE00YUZpbGVJY29uLFxuICBNcDRGaWxlSWNvbixcbiAgT2dhRmlsZUljb24sXG4gIE9nZ0ZpbGVJY29uLFxuICBXZWJtRmlsZUljb24sXG59IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgSW1hZ2VQcmV2aWV3IH0gZnJvbSAnLi4vLi4vYXRvbXMvSW1hZ2VQcmV2aWV3L0ltYWdlUHJldmlldydcbmltcG9ydCB7IHByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbWFnZVByZXByb2Nlc3NvcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2F0dGFjaG1lbnQnXG5pbXBvcnQgeyBDaGF0RGlzY2xhaW1lck1lc3NhZ2UgfSBmcm9tICcuLi8uLi9hdG9tcy9DaGF0RGlzY2xhaW1lck1lc3NhZ2UnXG5cbmV4cG9ydCB0eXBlIHsgQXR0YWNobWVudEZpbGUgfVxuXG50eXBlIENoYXRGb290ZXJQcm9wcyA9IHtcbiAgaXRlbXM/OiBzdHJpbmdbXVxuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgb25TZW5kTWVzc2FnZTogKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgIHNjSWQ/OiBzdHJpbmdcbiAgKSA9PiB2b2lkXG4gIG9uU3RvcEdlbmVyYXRpb24/OiAoKCkgPT4gdm9pZCkgfCBudWxsXG4gIGNoYXRJZD86IHN0cmluZyB8IG51bGxcbiAgbmV3Q2hhdEtleT86IG51bWJlclxuICAvKiogU2kgZXMgZmFsc2UsIG5vIHNlIG11ZXN0cmEgZWwgYm90w7NuIGRlIEZBUXMuIERlYmUgc2VyIHRydWUgY3VhbmRvIGN1cnJlbnRPcHRpb24gPT09IGNoYXQuIEVuIHNlY3Rpb24gdGFzayBubyBzZSBtdWVzdHJhIGF1bnF1ZSBzZWEgdHJ1ZS4gKi9cbiAgc2hvd0ZhcXM/OiBib29sZWFuXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IEljb25CeUZpbGVUeXBlID0ge1xuICAndGV4dC9wbGFpbic6IDxUZXh0RmlsZUljb24gLz4sXG4gICd0ZXh0L3gtbWFya2Rvd24nOiA8TURGaWxlSWNvbiAvPixcbiAgJ3RleHQvY3N2JzogPENzdkZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vbXN3b3JkJzogPERvY0ZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnOiA8RG9jeEZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vcGRmJzogPFBkZkZpbGVJY29uIC8+LFxuICAnaW1hZ2UvcG5nJzogPEltYWdlRmlsZUljb24gLz4sXG4gICdpbWFnZS9qcGVnJzogPEltYWdlRmlsZUljb24gLz4sXG4gICdpbWFnZS9qcGcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JzogPFhsc3hGaWxlSWNvbiAvPixcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6IDxYbHNGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL21wZWcnOiA8TXAzRmlsZUljb24gLz4sXG4gICdhdWRpby9mbGFjJzogPEZsYWNGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL21wNCc6IDxNcDRGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL200YSc6IDxNNGFGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL29nZyc6IDxPZ2dGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL29nYSc6IDxPZ2FGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL3dhdic6IDxXYXZGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL3dlYm0nOiA8V2VibUZpbGVJY29uIC8+LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ2hhdEZvb3Rlcih7XG4gIG9uU2VuZE1lc3NhZ2UsXG4gIGl0ZW1zLFxuICBkaXNhYmxlZCxcbiAgaXNTdHJlYW1pbmcsXG4gIGlzV3JpdGluZyxcbiAgb25TdG9wR2VuZXJhdGlvbixcbiAgY2hhdElkLFxuICBuZXdDaGF0S2V5LFxuICBzaG93RmFxcyA9IHRydWUsXG4gIHRvb2x0aXBaSW5kZXgsXG59OiBDaGF0Rm9vdGVyUHJvcHMpIHtcbiAgY29uc3QgeyBwcm9qZWN0LCBhZ2VudCwgY2hpcHNQcm9qZWN0LCBjbGllbnQsIHRhc2ssIHNlY3Rpb24sIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0IH0gPVxuICAgIHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgcGluQnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50PihudWxsKVxuICBjb25zdCBpbnB1dFBvcG92ZXJBbmNob3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNvbnRleHRCYXJBbmNob3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGlzT3JjaGVzdHJhdG9yID0gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InXG4gIGNvbnN0IHsgdG9nZ2xlOiB0b2dnbGVQaW4sIHBvcG92ZXJOb2RlOiBwaW5Qb3BvdmVyTm9kZSB9ID0gdXNlQ29udGV4dFBpblBvcG92ZXIoe1xuICAgIHBvcG92ZXJBbmNob3JSZWY6IGlucHV0UG9wb3ZlckFuY2hvclJlZixcbiAgICB0b3BBbmNob3JSZWY6IGNvbnRleHRCYXJBbmNob3JSZWYsXG4gICAgdHJpZ2dlclJlZjogcGluQnV0dG9uUmVmLFxuICB9KVxuICBjb25zdCBbYXR0YWNobWVudHMsIHNldEF0dGFjaG1lbnRzXSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlW10+KFtdKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2VzLCBzZXRMb2FkaW5nTWVzc2FnZXNdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgLy8gdXNlRWZmZWN0IHRvIGxpc3RlbiBsb2FkaW5nTWVzc2FnZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgPSAoZTogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlcyhlLmRldGFpbC5sb2FkaW5nTWVzc2FnZXMpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgYXMgRXZlbnRMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIGhhbmRsZUxvYWRpbmdNZXNzYWdlc0NoYW5nZSBhcyBFdmVudExpc3RlbmVyKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQ2xlYXIgYXR0YWNobWVudHMgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgc2V0QXR0YWNobWVudHMoW10pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IHsgY2hpcEl0ZW1zLCBjaGlwVHlwZSB9ID0gdXNlTWVtbzx7IGNoaXBJdGVtczogc3RyaW5nW107IGNoaXBUeXBlPzogQ29udGV4dEVudGl0eVR5cGUgfT4oKCkgPT4ge1xuICAgIGlmIChpdGVtcykgcmV0dXJuIHsgY2hpcEl0ZW1zOiBpdGVtcyB9XG5cbiAgICAvLyBNb25vLWNvbnRleHRvOiBzb2xvIGxhIGVudGlkYWQgbcOhcyBlc3BlY8OtZmljYSAoc2luIGFuaWRhciBjbGllbnRlL3Byb3llY3RvL3RhcmVhKS5cbiAgICBpZiAoYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKSB7XG4gICAgICBpZiAodGFzaz8ubmFtZSkgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbdGFzay5uYW1lXSwgY2hpcFR5cGU6ICd0YXNrJyB9XG4gICAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0TmFtZSkgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbY2hpcHNQcm9qZWN0LnByb2plY3ROYW1lXSwgY2hpcFR5cGU6ICdwcm9qZWN0JyB9XG4gICAgICBpZiAoY2xpZW50Py5uYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFtjbGllbnQubmFtZV0sIGNoaXBUeXBlOiAnY2xpZW50JyB9XG4gICAgICByZXR1cm4geyBjaGlwSXRlbXM6IFtdIH1cbiAgICB9XG5cbiAgICBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcgJiYgY2xpZW50Py5uYW1lKSB7XG4gICAgICByZXR1cm4geyBjaGlwSXRlbXM6IFtjbGllbnQubmFtZV0sIGNoaXBUeXBlOiAnY2xpZW50JyB9XG4gICAgfVxuICAgIGlmICh0YXNrPy5uYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFt0YXNrLm5hbWVdLCBjaGlwVHlwZTogJ3Rhc2snIH1cbiAgICBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0TmFtZSkgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbY2hpcHNQcm9qZWN0LnByb2plY3ROYW1lXSwgY2hpcFR5cGU6ICdwcm9qZWN0JyB9XG4gICAgaWYgKHByb2plY3Q/Lm5hbWUpIHJldHVybiB7IGNoaXBJdGVtczogW3Byb2plY3QubmFtZV0sIGNoaXBUeXBlOiAncHJvamVjdCcgfVxuXG4gICAgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbXSB9XG4gIH0sIFtpdGVtcywgcHJvamVjdCwgY2hpcHNQcm9qZWN0LCBhZ2VudD8uZW50aXR5LCBhZ2VudD8udHlwZSwgY2xpZW50LCB0YXNrPy5uYW1lXSlcblxuICAvLyBRdWl0YXIgZWwgcGluIOKHkiBtb2RvIGdsb2JhbCwgc2luIHJlZGlyZWN0IChlbCBvcnF1ZXN0YWRvciBubyBwYXNhIHBvciBlbCBnYXRlIGRlIHNlbGVjdG9yZXMpLiBSRkMgwqc4LlxuICBjb25zdCBoYW5kbGVSZW1vdmVDb250ZXh0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2sobnVsbClcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgfSwgW3NldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0XSlcblxuICBjb25zdCBvbkNoYW5nZSA9ICgpID0+IHtcbiAgICBpZiAocmVwb3J0ZWRFdmVudC5jdXJyZW50KSByZXR1cm5cbiAgICBldmVudChFVkVOVFMucG1BaVR5cGVkVGV4dCwge1xuICAgICAgYWdlbnRfdHlwZTogaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID8gJ21hcmtldHBsYWNlJyA6IGFnZW50Py50eXBlLFxuICAgIH0pXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gdHJ1ZVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIG5ld0F0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHtcbiAgICBldmVudChFVkVOVFMuYWlDaGF0U2VuZCwge1xuICAgICAgYWdlbnRfdHlwZTogaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID8gJ21hcmtldHBsYWNlJyA6IGFnZW50Py50eXBlLFxuICAgICAgYWdlbnRfaWQ6IGFnZW50Py5pZCxcbiAgICAgIGFnZW50X25hbWU6IGFnZW50Py5uYW1lLFxuICAgIH0pXG4gICAgb25TZW5kTWVzc2FnZShtZXNzYWdlLCBuZXdBdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgc2V0QXR0YWNobWVudHMoW10pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RGYXEgPSAobWVzc2FnZTogc3RyaW5nLCBmYXFJZDogc3RyaW5nKSA9PiB7XG4gICAgb25TZW5kTWVzc2FnZShtZXNzYWdlLCB1bmRlZmluZWQsIGZhcUlkLCB1bmRlZmluZWQpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlQXR0YWNoID0gYXN5bmMgKGZpbGU6IEZpbGUpID0+IHtcbiAgICBjb25zdCBmaWxlTmFtZVBhcnRzID0gZmlsZS5uYW1lLnNwbGl0KCcuJylcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG4gICAgY29uc3QgaXNJbWFnZUJ5RXh0ZW5zaW9uID0gWycucG5nJywgJy5qcGcnLCAnLmpwZWcnXS5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKVxuICAgIGNvbnN0IGlzSW1hZ2VCeU1pbWUgPSBmaWxlLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJylcbiAgICBjb25zdCBpc0ltYWdlID0gaXNJbWFnZUJ5TWltZSAmJiBpc0ltYWdlQnlFeHRlbnNpb25cbiAgICAvLyBNYXBlbyBkZSBleHRlbnNpw7NuIGEgaWNvbm8gZGlyZWN0byBwYXJhIGNhc29zIGVzcGVjaWFsZXMgKGF1ZGlvL29nZyB5IGF1ZGlvL21wNClcbiAgICBjb25zdCBleHRlbnNpb25Ub0ljb246IFJlY29yZDxzdHJpbmcsIFJlYWN0Tm9kZT4gPSB7XG4gICAgICAnLm9nZyc6IDxPZ2dGaWxlSWNvbiAvPixcbiAgICAgICcub2dhJzogPE9nYUZpbGVJY29uIC8+LFxuICAgICAgJy5tcDQnOiA8TXA0RmlsZUljb24gLz4sXG4gICAgICAnLm00YSc6IDxNNGFGaWxlSWNvbiAvPixcbiAgICB9XG5cbiAgICBsZXQgaWNvbiA9IEljb25CeUZpbGVUeXBlW2ZpbGUudHlwZV1cblxuICAgIC8vIFNpIGVsIHRpcG8gZXMgYXVkaW8vb2dnIG8gYXVkaW8vbXA0LCB1c2FyIGxhIGV4dGVuc2nDs24gcGFyYSBkZXRlcm1pbmFyIGVsIGljb25vXG4gICAgaWYgKChmaWxlLnR5cGUgPT09ICdhdWRpby9vZ2cnIHx8IGZpbGUudHlwZSA9PT0gJ2F1ZGlvL21wNCcpICYmIGZpbGVFeHRlbnNpb24pIHtcbiAgICAgIGljb24gPSBleHRlbnNpb25Ub0ljb25bZmlsZUV4dGVuc2lvbl0gfHwgaWNvblxuICAgIH1cblxuICAgIGlmICghaWNvbikge1xuICAgICAgY29uc3QgZXh0ZW5zaW9uVG9NaW1lVHlwZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJy50eHQnOiAndGV4dC9wbGFpbicsXG4gICAgICAgICcubWQnOiAndGV4dC94LW1hcmtkb3duJyxcbiAgICAgICAgJy5jc3YnOiAndGV4dC9jc3YnLFxuICAgICAgICAnLmRvYyc6ICdhcHBsaWNhdGlvbi9tc3dvcmQnLFxuICAgICAgICAnLmRvY3gnOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLFxuICAgICAgICAnLnBkZic6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgICAgICAnLnhsc3gnOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnLFxuICAgICAgICAnLnhscyc6ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuICAgICAgICAnLmZsYWMnOiAnYXVkaW8vZmxhYycsXG4gICAgICAgICcubTRhJzogJ2F1ZGlvL200YScsXG4gICAgICAgICcubXAzJzogJ2F1ZGlvL21wZWcnLFxuICAgICAgICAnLm1wNCc6ICdhdWRpby9tcDQnLFxuICAgICAgICAnLm9nYSc6ICdhdWRpby9vZ2EnLFxuICAgICAgICAnLm9nZyc6ICdhdWRpby9vZ2cnLFxuICAgICAgICAnLndhdic6ICdhdWRpby93YXYnLFxuICAgICAgICAnLndlYm0nOiAnYXVkaW8vd2VibScsXG4gICAgICB9XG4gICAgICBjb25zdCBtaW1lVHlwZUJ5RXh0ZW5zaW9uID0gZXh0ZW5zaW9uVG9NaW1lVHlwZVtmaWxlRXh0ZW5zaW9uXVxuICAgICAgaWYgKG1pbWVUeXBlQnlFeHRlbnNpb24pIHtcbiAgICAgICAgaWNvbiA9IEljb25CeUZpbGVUeXBlW21pbWVUeXBlQnlFeHRlbnNpb25dXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpY29uID0gPEF0dGFjaCBjb2xvcj1cInJnYmEoMTM1LCA2NCwgMTkxLCAxKVwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHByb2Nlc3NlZEZpbGUgPSBmaWxlXG5cbiAgICAvLyBTaSBlcyB1bmEgaW1hZ2VuLCBwcmUtcHJvY2VzYXJsYSBwYXJhIGVsIGJhY2tlbmRcbiAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gUHJvY2VzYW5kbyBpbWFnZW5cbiAgICAgICAgcHJvY2Vzc2VkRmlsZSA9IGF3YWl0IHByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQoZmlsZSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByZS1wcm9jZXNhbmRvIGltYWdlbjonLCBlcnJvcilcbiAgICAgICAgLy8gQ29udGludWFyIGNvbiBlbCBhcmNoaXZvIG9yaWdpbmFsIHNpIGhheSBlcnJvclxuICAgICAgfVxuXG4gICAgICBjb25zdCBpbWFnZVVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSlcblxuICAgICAgaWNvbiA9IDxJbWFnZVByZXZpZXcgc3JjPXtpbWFnZVVybH0gYWx0PXtmaWxlLm5hbWV9IHdpZHRoPVwiNjNweFwiIGhlaWdodD1cIjYzcHhcIiBib3JkZXJSYWRpdXM9XCI2cHhcIiAvPlxuICAgIH1cblxuICAgIGNvbnN0IG5ld0F0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlID0ge1xuICAgICAgZmlsZTogcHJvY2Vzc2VkRmlsZSxcbiAgICAgIG9yaWdpbmFsRmlsZTogaXNJbWFnZSA/IGZpbGUgOiB1bmRlZmluZWQsXG4gICAgICBpZDogYCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpfWAsXG4gICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICBzaXplOiBwcm9jZXNzZWRGaWxlLnNpemUsXG4gICAgICB0eXBlOiBwcm9jZXNzZWRGaWxlLnR5cGUsXG4gICAgICBpY29uLFxuICAgIH1cblxuICAgIHNldEF0dGFjaG1lbnRzKHByZXYgPT4gWy4uLnByZXYsIG5ld0F0dGFjaG1lbnRdKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQXR0YWNobWVudCA9IChmaWxlSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5ld0F0dGFjaG1lbnRzID0gYXR0YWNobWVudHMuZmlsdGVyKGF0dGFjaG1lbnQgPT4gYXR0YWNobWVudC5pZCAhPT0gZmlsZUlkKVxuICAgIHNldEF0dGFjaG1lbnRzKG5ld0F0dGFjaG1lbnRzKVxuICB9XG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG4gIGNvbnN0IGRpc2NsYWltZXJNZXNzYWdlID0gaXNNQUlBXG4gICAgPyB0KCdjaGF0LmZvb3Rlci5kaXNjbGFpbWVyJywgeyBhZ2VudE5hbWU6IHQoJ2dsb2JhbHMuYnJhbmROYW1lJykgfSlcbiAgICA6IHQoJ2NoYXQuZm9vdGVyLmRpc2NsYWltZXJBZ2VudCcpXG5cbiAgY29uc3QgaXNGYXFJbnRlcmFjdGlvbkRpc2FibGVkID0gQm9vbGVhbihkaXNhYmxlZCB8fCBpc1N0cmVhbWluZyB8fCBpc1dyaXRpbmcpXG4gIGNvbnN0IHNob3VsZFNob3dGYXFzID0gc2hvd0ZhcXMgJiYgc2VjdGlvbiAhPT0gJ3Rhc2snXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkQ2hhdEZvb3Rlcj5cbiAgICAgIHtpc01BSUEgJiYgIWxvYWRpbmdNZXNzYWdlcyAmJiAoXG4gICAgICAgIDxDaGlwc0FuZEZhcXNSb3cgcmVmPXtjb250ZXh0QmFyQW5jaG9yUmVmfT5cbiAgICAgICAgICA8Q29udGV4dEJhckxlZnQ+XG4gICAgICAgICAgICB7ISFjaGlwSXRlbXMubGVuZ3RoICYmIChcbiAgICAgICAgICAgICAgPENoaXBcbiAgICAgICAgICAgICAgICBpdGVtcz17Y2hpcEl0ZW1zfVxuICAgICAgICAgICAgICAgIHR5cGU9e2NoaXBUeXBlfVxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlPXtpc09yY2hlc3RyYXRvciA/IGhhbmRsZVJlbW92ZUNvbnRleHQgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgcmVtb3ZlTGFiZWw9e3QoJ2NvbnRleHRQaW4ucmVtb3ZlJywgeyBkZWZhdWx0VmFsdWU6ICdRdWl0YXIgY29udGV4dG8nIH0pfVxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2lzT3JjaGVzdHJhdG9yID8gdCgnY2hhdC5hY3Rpdml0eS5keW5hbWljQ29udGV4dFRvb2x0aXAnKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtpc09yY2hlc3RyYXRvciAmJiAoXG4gICAgICAgICAgICAgIDxBZGRDb250ZXh0QnV0dG9uIHJlZj17cGluQnV0dG9uUmVmfSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17dG9nZ2xlUGlufT5cbiAgICAgICAgICAgICAgICA8UGx1cyBjb2xvcj1cImN1cnJlbnRDb2xvclwiIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgICB7IWNoaXBJdGVtcy5sZW5ndGggJiYgPHNwYW4+e3QoJ2NvbnRleHRQaW4uYWRkQ29udGV4dCcsIHsgZGVmYXVsdFZhbHVlOiAnQ29udGV4dG8nIH0pfTwvc3Bhbj59XG4gICAgICAgICAgICAgIDwvQWRkQ29udGV4dEJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Db250ZXh0QmFyTGVmdD5cbiAgICAgICAgICB7c2hvdWxkU2hvd0ZhcXMgJiYgPENoYXRGb290ZXJGYXFzIG9uU2VsZWN0RmFxPXtoYW5kbGVTZWxlY3RGYXF9IGRpc2FibGVkPXtpc0ZhcUludGVyYWN0aW9uRGlzYWJsZWR9IC8+fVxuICAgICAgICA8L0NoaXBzQW5kRmFxc1Jvdz5cbiAgICAgICl9XG4gICAgICB7cGluUG9wb3Zlck5vZGUgJiYgY3JlYXRlUG9ydGFsKHBpblBvcG92ZXJOb2RlLCBkb2N1bWVudC5ib2R5KX1cbiAgICAgIDxNQUlBSW5wdXRcbiAgICAgICAgcG9wb3ZlckFuY2hvclJlZj17aW5wdXRQb3BvdmVyQW5jaG9yUmVmfVxuICAgICAgICBvblNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBwbGFjZWhvbGRlcj17YWdlbnQ/LmlucHV0X3BsYWNlaG9sZGVyIHx8IHQoJ2NoYXQuZm9vdGVyLnBsYWNlaG9sZGVyJyl9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgb25GaWxlQXR0YWNoPXtoYW5kbGVGaWxlQXR0YWNofVxuICAgICAgICBvbkRlbGV0ZUF0dGFjaG1lbnQ9e2hhbmRsZURlbGV0ZUF0dGFjaG1lbnR9XG4gICAgICAgIGF0dGFjaG1lbnRzPXthdHRhY2htZW50c1xuICAgICAgICAgIC5maWx0ZXIoYXR0ID0+ICEhYXR0LmZpbGUpXG4gICAgICAgICAgLm1hcChhdHQgPT4gKHtcbiAgICAgICAgICAgIGZpbGU6IGF0dC5maWxlISxcbiAgICAgICAgICAgIG9yaWdpbmFsRmlsZTogYXR0Lm9yaWdpbmFsRmlsZSxcbiAgICAgICAgICAgIGlkOiBhdHQuaWQsXG4gICAgICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgICAgIHNpemU6IHR5cGVvZiBhdHQuc2l6ZSA9PT0gJ251bWJlcicgPyBhdHQuc2l6ZSA6IE51bWJlcihhdHQuc2l6ZSkgfHwgMCxcbiAgICAgICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICAgICAgaWNvbjogYXR0Lmljb24sXG4gICAgICAgICAgfSkpfVxuICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICBvblN0b3BHZW5lcmF0aW9uPXtvblN0b3BHZW5lcmF0aW9ufVxuICAgICAgICBjaGF0SWQ9e2NoYXRJZCB8fCB1bmRlZmluZWR9XG4gICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAvPlxuICAgICAgPENoYXREaXNjbGFpbWVyTWVzc2FnZSBtZXNzYWdlPXtkaXNjbGFpbWVyTWVzc2FnZX0gLz5c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
287
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJBdHRhY2giLCJNT0RBTF9FTEVNRU5UUyIsIkNoaXAiLCJNQUlBSW5wdXQiLCJDaGF0Rm9vdGVyRmFxcyIsInVzZUdsb2JhbENvbnRleHQiLCJ1c2VUIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJTdHlsZWRDaGF0Rm9vdGVyIiwiQ2hpcHNBbmRGYXFzUm93IiwiQ3N2RmlsZUljb24iLCJNREZpbGVJY29uIiwiRG9jRmlsZUljb24iLCJEb2N4RmlsZUljb24iLCJUZXh0RmlsZUljb24iLCJQZGZGaWxlSWNvbiIsIkltYWdlRmlsZUljb24iLCJYbHN4RmlsZUljb24iLCJYbHNGaWxlSWNvbiIsIk1wM0ZpbGVJY29uIiwiV2F2RmlsZUljb24iLCJGbGFjRmlsZUljb24iLCJNNGFGaWxlSWNvbiIsIk1wNEZpbGVJY29uIiwiT2dhRmlsZUljb24iLCJPZ2dGaWxlSWNvbiIsIldlYm1GaWxlSWNvbiIsIkltYWdlUHJldmlldyIsInByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQiLCJ2YWxpZGF0ZUlzTWFpYSIsIkNoYXREaXNjbGFpbWVyTWVzc2FnZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJJY29uQnlGaWxlVHlwZSIsIkNoYXRGb290ZXIiLCJfcmVmIiwib25TZW5kTWVzc2FnZSIsIml0ZW1zIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwiX3JlZiRzaG93RmFxcyIsInNob3dGYXFzIiwidG9vbHRpcFpJbmRleCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsImFnZW50IiwiY2hpcHNQcm9qZWN0IiwiY2xpZW50IiwidGFzayIsInNlY3Rpb24iLCJfdXNlVCIsInQiLCJldmVudCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImF0dGFjaG1lbnRzIiwic2V0QXR0YWNobWVudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmdNZXNzYWdlcyIsInNldExvYWRpbmdNZXNzYWdlcyIsInJlcG9ydGVkRXZlbnQiLCJpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQiLCJlbnRpdHkiLCJ0ZXN0IiwibmFtZSIsImhhbmRsZUxvYWRpbmdNZXNzYWdlc0NoYW5nZSIsImUiLCJkZXRhaWwiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlU2Vzc2lvbkNoYW5nZSIsImNoaXBJdGVtcyIsInRlbXBJdGVtcyIsInB1c2giLCJwcm9qZWN0TmFtZSIsIm9uQ2hhbmdlIiwiY3VycmVudCIsInBtQWlUeXBlZFRleHQiLCJhZ2VudF90eXBlIiwidHlwZSIsImhhbmRsZVNlbmRNZXNzYWdlIiwibWVzc2FnZSIsIm5ld0F0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWlDaGF0U2VuZCIsImFnZW50X2lkIiwiaWQiLCJhZ2VudF9uYW1lIiwiaGFuZGxlU2VsZWN0RmFxIiwidW5kZWZpbmVkIiwiaGFuZGxlRmlsZUF0dGFjaCIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJmaWxlIiwiX2ZpbGVOYW1lUGFydHMkcG9wIiwiZmlsZU5hbWVQYXJ0cyIsImZpbGVFeHRlbnNpb24iLCJpc0ltYWdlQnlFeHRlbnNpb24iLCJpc0ltYWdlQnlNaW1lIiwiaXNJbWFnZSIsImV4dGVuc2lvblRvSWNvbiIsImljb24iLCJleHRlbnNpb25Ub01pbWVUeXBlIiwibWltZVR5cGVCeUV4dGVuc2lvbiIsInByb2Nlc3NlZEZpbGUiLCJpbWFnZVVybCIsIm5ld0F0dGFjaG1lbnQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3BsaXQiLCJsZW5ndGgiLCJjb25jYXQiLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJzZW50IiwiY29uc29sZSIsImVycm9yIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwic3JjIiwiYWx0IiwiYm9yZGVyUmFkaXVzIiwib3JpZ2luYWxGaWxlIiwiRGF0ZSIsIm5vdyIsIk1hdGgiLCJyYW5kb20iLCJzaXplIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiZmlsdGVyIiwiYXR0YWNobWVudCIsImlzTUFJQSIsImRpc2NsYWltZXJNZXNzYWdlIiwiYWdlbnROYW1lIiwiaXNGYXFJbnRlcmFjdGlvbkRpc2FibGVkIiwiQm9vbGVhbiIsInNob3VsZFNob3dGYXFzIiwiY2hpbGRyZW4iLCJvblNlbGVjdEZhcSIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJhdHQiLCJtYXAiLCJOdW1iZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG5pbXBvcnQgeyBSZWFjdE5vZGUsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQXR0YWNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXR0YWNoJ1xuaW1wb3J0IHsgTU9EQUxfRUxFTUVOVFMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNb2RhbC91c2VNb2RhbCdcblxuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uLy4uL2F0b21zL0NoaXAnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBNQUlBSW5wdXQgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBSW5wdXQnXG5pbXBvcnQgeyBDaGF0Rm9vdGVyRmFxcyB9IGZyb20gJy4vQ2hhdEZvb3RlckZhcXMnXG5cbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgU3R5bGVkQ2hhdEZvb3RlciwgQ2hpcHNBbmRGYXFzUm93IH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQge1xuICBDc3ZGaWxlSWNvbixcbiAgTURGaWxlSWNvbixcbiAgRG9jRmlsZUljb24sXG4gIERvY3hGaWxlSWNvbixcbiAgVGV4dEZpbGVJY29uLFxuICBQZGZGaWxlSWNvbixcbiAgSW1hZ2VGaWxlSWNvbixcbiAgWGxzeEZpbGVJY29uLFxuICBYbHNGaWxlSWNvbixcbiAgTXAzRmlsZUljb24sXG4gIFdhdkZpbGVJY29uLFxuICBGbGFjRmlsZUljb24sXG4gIE00YUZpbGVJY29uLFxuICBNcDRGaWxlSWNvbixcbiAgT2dhRmlsZUljb24sXG4gIE9nZ0ZpbGVJY29uLFxuICBXZWJtRmlsZUljb24sXG59IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgSW1hZ2VQcmV2aWV3IH0gZnJvbSAnLi4vLi4vYXRvbXMvSW1hZ2VQcmV2aWV3L0ltYWdlUHJldmlldydcbmltcG9ydCB7IHByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9pbWFnZVByZXByb2Nlc3NvcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ2hhdERpc2NsYWltZXJNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2hhdERpc2NsYWltZXJNZXNzYWdlJ1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RmlsZSA9IHtcbiAgZmlsZTogRmlsZVxuICBvcmlnaW5hbEZpbGU/OiBGaWxlXG4gIHVybF90aHVtYm5haWw/OiBzdHJpbmdcbiAgdXJsX29yaWdpbmFsPzogc3RyaW5nXG4gIHVybF9maWxlPzogc3RyaW5nXG4gIHJvbGU/OiAndXNlcicgfCAnYXNzaXN0YW50J1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbiAgZXh0Pzogc3RyaW5nXG4gIHN0YXR1cz86ICdwZW5kaW5nJyB8ICdwcm9jZXNzaW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgJ3N0YXJ0ZWQnXG59XG5cbnR5cGUgQ2hhdEZvb3RlclByb3BzID0ge1xuICBpdGVtcz86IHN0cmluZ1tdXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgY2hhdElkPzogc3RyaW5nIHwgbnVsbFxuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIC8qKiBTaSBlcyBmYWxzZSwgbm8gc2UgbXVlc3RyYSBlbCBib3TDs24gZGUgRkFRcy4gRGViZSBzZXIgdHJ1ZSBjdWFuZG8gY3VycmVudE9wdGlvbiA9PT0gY2hhdC4gRW4gc2VjdGlvbiB0YXNrIG5vIHNlIG11ZXN0cmEgYXVucXVlIHNlYSB0cnVlLiAqL1xuICBzaG93RmFxcz86IGJvb2xlYW5cbiAgdG9vbHRpcFpJbmRleD86IG51bWJlclxufVxuXG5leHBvcnQgY29uc3QgSWNvbkJ5RmlsZVR5cGUgPSB7XG4gICd0ZXh0L3BsYWluJzogPFRleHRGaWxlSWNvbiAvPixcbiAgJ3RleHQveC1tYXJrZG93bic6IDxNREZpbGVJY29uIC8+LFxuICAndGV4dC9jc3YnOiA8Q3N2RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi9tc3dvcmQnOiA8RG9jRmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc6IDxEb2N4RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi9wZGYnOiA8UGRmRmlsZUljb24gLz4sXG4gICdpbWFnZS9wbmcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZWcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZyc6IDxJbWFnZUZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnOiA8WGxzeEZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJzogPFhsc0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXBlZyc6IDxNcDNGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL2ZsYWMnOiA8RmxhY0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAnYXVkaW8vbTRhJzogPE00YUZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dnJzogPE9nZ0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dhJzogPE9nYUZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2F2JzogPFdhdkZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2VibSc6IDxXZWJtRmlsZUljb24gLz4sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGF0Rm9vdGVyKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgaXRlbXMsXG4gIGRpc2FibGVkLFxuICBpc1N0cmVhbWluZyxcbiAgaXNXcml0aW5nLFxuICBvblN0b3BHZW5lcmF0aW9uLFxuICBjaGF0SWQsXG4gIG5ld0NoYXRLZXksXG4gIHNob3dGYXFzID0gdHJ1ZSxcbiAgdG9vbHRpcFpJbmRleCxcbn06IENoYXRGb290ZXJQcm9wcykge1xuICBjb25zdCB7IHByb2plY3QsIGFnZW50LCBjaGlwc1Byb2plY3QsIGNsaWVudCwgdGFzaywgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCBbYXR0YWNobWVudHMsIHNldEF0dGFjaG1lbnRzXSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlW10+KFtdKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2VzLCBzZXRMb2FkaW5nTWVzc2FnZXNdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgLy8gdXNlRWZmZWN0IHRvIGxpc3RlbiBsb2FkaW5nTWVzc2FnZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgPSAoZTogQ3VzdG9tRXZlbnQpID0+IHtcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlcyhlLmRldGFpbC5sb2FkaW5nTWVzc2FnZXMpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgYXMgRXZlbnRMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIGhhbmRsZUxvYWRpbmdNZXNzYWdlc0NoYW5nZSBhcyBFdmVudExpc3RlbmVyKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQ2xlYXIgYXR0YWNobWVudHMgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgc2V0QXR0YWNobWVudHMoW10pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNoaXBJdGVtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpdGVtcykgcmV0dXJuIGl0ZW1zXG5cbiAgICBjb25zdCB0ZW1wSXRlbXM6IHN0cmluZ1tdID0gW11cblxuICAgIGlmIChhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JyAmJiBjbGllbnQ/Lm5hbWUpIHtcbiAgICAgIHRlbXBJdGVtcy5wdXNoKGNsaWVudC5uYW1lKVxuICAgIH0gZWxzZSBpZiAodGFzaz8ubmFtZSkge1xuICAgICAgdGVtcEl0ZW1zLnB1c2godGFzay5uYW1lKVxuICAgIH0gZWxzZSBpZiAoY2hpcHNQcm9qZWN0Py5wcm9qZWN0TmFtZSkge1xuICAgICAgdGVtcEl0ZW1zLnB1c2goY2hpcHNQcm9qZWN0LnByb2plY3ROYW1lKVxuICAgIH0gZWxzZSBpZiAocHJvamVjdD8ubmFtZSkge1xuICAgICAgdGVtcEl0ZW1zLnB1c2gocHJvamVjdC5uYW1lKVxuICAgIH1cblxuICAgIHJldHVybiB0ZW1wSXRlbXNcbiAgfSwgW2l0ZW1zLCBwcm9qZWN0LCBjaGlwc1Byb2plY3QsIGFnZW50Py5lbnRpdHksIGNsaWVudCwgdGFzaz8ubmFtZV0pXG5cbiAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHJlcG9ydGVkRXZlbnQuY3VycmVudCkgcmV0dXJuXG4gICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQsIHtcbiAgICAgIGFnZW50X3R5cGU6IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA/ICdtYXJrZXRwbGFjZScgOiBhZ2VudD8udHlwZSxcbiAgICB9KVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBuZXdBdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgIGZhcUlkPzogc3RyaW5nLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgIHNjSWQ/OiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFNlbmQsIHtcbiAgICAgIGFnZW50X3R5cGU6IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA/ICdtYXJrZXRwbGFjZScgOiBhZ2VudD8udHlwZSxcbiAgICAgIGFnZW50X2lkOiBhZ2VudD8uaWQsXG4gICAgICBhZ2VudF9uYW1lOiBhZ2VudD8ubmFtZSxcbiAgICB9KVxuICAgIG9uU2VuZE1lc3NhZ2UobWVzc2FnZSwgbmV3QXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgIHNldEF0dGFjaG1lbnRzKFtdKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0RmFxID0gKG1lc3NhZ2U6IHN0cmluZywgZmFxSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uU2VuZE1lc3NhZ2UobWVzc2FnZSwgdW5kZWZpbmVkLCBmYXFJZCwgdW5kZWZpbmVkKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZUF0dGFjaCA9IGFzeW5jIChmaWxlOiBGaWxlKSA9PiB7XG4gICAgY29uc3QgZmlsZU5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpXG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVOYW1lUGFydHMubGVuZ3RoID4gMSA/IGAuJHtmaWxlTmFtZVBhcnRzLnBvcCgpPy50b0xvd2VyQ2FzZSgpfWAgOiAnJ1xuICAgIGNvbnN0IGlzSW1hZ2VCeUV4dGVuc2lvbiA9IFsnLnBuZycsICcuanBnJywgJy5qcGVnJ10uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbilcbiAgICBjb25zdCBpc0ltYWdlQnlNaW1lID0gZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpXG4gICAgY29uc3QgaXNJbWFnZSA9IGlzSW1hZ2VCeU1pbWUgJiYgaXNJbWFnZUJ5RXh0ZW5zaW9uXG4gICAgLy8gTWFwZW8gZGUgZXh0ZW5zacOzbiBhIGljb25vIGRpcmVjdG8gcGFyYSBjYXNvcyBlc3BlY2lhbGVzIChhdWRpby9vZ2cgeSBhdWRpby9tcDQpXG4gICAgY29uc3QgZXh0ZW5zaW9uVG9JY29uOiBSZWNvcmQ8c3RyaW5nLCBSZWFjdE5vZGU+ID0ge1xuICAgICAgJy5vZ2cnOiA8T2dnRmlsZUljb24gLz4sXG4gICAgICAnLm9nYSc6IDxPZ2FGaWxlSWNvbiAvPixcbiAgICAgICcubXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAgICAgJy5tNGEnOiA8TTRhRmlsZUljb24gLz4sXG4gICAgfVxuXG4gICAgbGV0IGljb24gPSBJY29uQnlGaWxlVHlwZVtmaWxlLnR5cGVdXG5cbiAgICAvLyBTaSBlbCB0aXBvIGVzIGF1ZGlvL29nZyBvIGF1ZGlvL21wNCwgdXNhciBsYSBleHRlbnNpw7NuIHBhcmEgZGV0ZXJtaW5hciBlbCBpY29ub1xuICAgIGlmICgoZmlsZS50eXBlID09PSAnYXVkaW8vb2dnJyB8fCBmaWxlLnR5cGUgPT09ICdhdWRpby9tcDQnKSAmJiBmaWxlRXh0ZW5zaW9uKSB7XG4gICAgICBpY29uID0gZXh0ZW5zaW9uVG9JY29uW2ZpbGVFeHRlbnNpb25dIHx8IGljb25cbiAgICB9XG5cbiAgICBpZiAoIWljb24pIHtcbiAgICAgIGNvbnN0IGV4dGVuc2lvblRvTWltZVR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICcudHh0JzogJ3RleHQvcGxhaW4nLFxuICAgICAgICAnLm1kJzogJ3RleHQveC1tYXJrZG93bicsXG4gICAgICAgICcuY3N2JzogJ3RleHQvY3N2JyxcbiAgICAgICAgJy5kb2MnOiAnYXBwbGljYXRpb24vbXN3b3JkJyxcbiAgICAgICAgJy5kb2N4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyxcbiAgICAgICAgJy5wZGYnOiAnYXBwbGljYXRpb24vcGRmJyxcbiAgICAgICAgJy54bHN4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgICAgICAgJy54bHMnOiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJyxcbiAgICAgICAgJy5mbGFjJzogJ2F1ZGlvL2ZsYWMnLFxuICAgICAgICAnLm00YSc6ICdhdWRpby9tNGEnLFxuICAgICAgICAnLm1wMyc6ICdhdWRpby9tcGVnJyxcbiAgICAgICAgJy5tcDQnOiAnYXVkaW8vbXA0JyxcbiAgICAgICAgJy5vZ2EnOiAnYXVkaW8vb2dhJyxcbiAgICAgICAgJy5vZ2cnOiAnYXVkaW8vb2dnJyxcbiAgICAgICAgJy53YXYnOiAnYXVkaW8vd2F2JyxcbiAgICAgICAgJy53ZWJtJzogJ2F1ZGlvL3dlYm0nLFxuICAgICAgfVxuICAgICAgY29uc3QgbWltZVR5cGVCeUV4dGVuc2lvbiA9IGV4dGVuc2lvblRvTWltZVR5cGVbZmlsZUV4dGVuc2lvbl1cbiAgICAgIGlmIChtaW1lVHlwZUJ5RXh0ZW5zaW9uKSB7XG4gICAgICAgIGljb24gPSBJY29uQnlGaWxlVHlwZVttaW1lVHlwZUJ5RXh0ZW5zaW9uXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWNvbiA9IDxBdHRhY2ggY29sb3I9XCJyZ2JhKDEzNSwgNjQsIDE5MSwgMSlcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBwcm9jZXNzZWRGaWxlID0gZmlsZVxuXG4gICAgLy8gU2kgZXMgdW5hIGltYWdlbiwgcHJlLXByb2Nlc2FybGEgcGFyYSBlbCBiYWNrZW5kXG4gICAgaWYgKGlzSW1hZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFByb2Nlc2FuZG8gaW1hZ2VuXG4gICAgICAgIHByb2Nlc3NlZEZpbGUgPSBhd2FpdCBwcmVwcm9jZXNzSW1hZ2VGb3JCYWNrZW5kKGZpbGUpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcmUtcHJvY2VzYW5kbyBpbWFnZW46JywgZXJyb3IpXG4gICAgICAgIC8vIENvbnRpbnVhciBjb24gZWwgYXJjaGl2byBvcmlnaW5hbCBzaSBoYXkgZXJyb3JcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW1hZ2VVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpXG5cbiAgICAgIGljb24gPSA8SW1hZ2VQcmV2aWV3IHNyYz17aW1hZ2VVcmx9IGFsdD17ZmlsZS5uYW1lfSB3aWR0aD1cIjYzcHhcIiBoZWlnaHQ9XCI2M3B4XCIgYm9yZGVyUmFkaXVzPVwiNnB4XCIgLz5cbiAgICB9XG5cbiAgICBjb25zdCBuZXdBdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSA9IHtcbiAgICAgIGZpbGU6IHByb2Nlc3NlZEZpbGUsXG4gICAgICBvcmlnaW5hbEZpbGU6IGlzSW1hZ2UgPyBmaWxlIDogdW5kZWZpbmVkLFxuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKX1gLFxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgc2l6ZTogcHJvY2Vzc2VkRmlsZS5zaXplLFxuICAgICAgdHlwZTogcHJvY2Vzc2VkRmlsZS50eXBlLFxuICAgICAgaWNvbixcbiAgICB9XG5cbiAgICBzZXRBdHRhY2htZW50cyhwcmV2ID0+IFsuLi5wcmV2LCBuZXdBdHRhY2htZW50XSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoZmlsZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXdBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzLmZpbHRlcihhdHRhY2htZW50ID0+IGF0dGFjaG1lbnQuaWQgIT09IGZpbGVJZClcbiAgICBzZXRBdHRhY2htZW50cyhuZXdBdHRhY2htZW50cylcbiAgfVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBkaXNjbGFpbWVyTWVzc2FnZSA9IGlzTUFJQVxuICAgID8gdCgnY2hhdC5mb290ZXIuZGlzY2xhaW1lcicsIHsgYWdlbnROYW1lOiB0KCdnbG9iYWxzLmJyYW5kTmFtZScpIH0pXG4gICAgOiB0KCdjaGF0LmZvb3Rlci5kaXNjbGFpbWVyQWdlbnQnKVxuXG4gIGNvbnN0IGlzRmFxSW50ZXJhY3Rpb25EaXNhYmxlZCA9IEJvb2xlYW4oZGlzYWJsZWQgfHwgaXNTdHJlYW1pbmcgfHwgaXNXcml0aW5nKVxuICBjb25zdCBzaG91bGRTaG93RmFxcyA9IHNob3dGYXFzICYmIHNlY3Rpb24gIT09ICd0YXNrJ1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZENoYXRGb290ZXI+XG4gICAgICB7aXNNQUlBICYmICFsb2FkaW5nTWVzc2FnZXMgJiYgKFxuICAgICAgICA8Q2hpcHNBbmRGYXFzUm93PlxuICAgICAgICAgIHshIWNoaXBJdGVtcy5sZW5ndGggJiYgPENoaXAgaXRlbXM9e2NoaXBJdGVtc30gLz59XG4gICAgICAgICAge3Nob3VsZFNob3dGYXFzICYmIDxDaGF0Rm9vdGVyRmFxcyBvblNlbGVjdEZhcT17aGFuZGxlU2VsZWN0RmFxfSBkaXNhYmxlZD17aXNGYXFJbnRlcmFjdGlvbkRpc2FibGVkfSAvPn1cbiAgICAgICAgPC9DaGlwc0FuZEZhcXNSb3c+XG4gICAgICApfVxuICAgICAgPE1BSUFJbnB1dFxuICAgICAgICBvblNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBwbGFjZWhvbGRlcj17YWdlbnQ/LmlucHV0X3BsYWNlaG9sZGVyIHx8IHQoJ2NoYXQuZm9vdGVyLnBsYWNlaG9sZGVyJyl9XG4gICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgb25GaWxlQXR0YWNoPXtoYW5kbGVGaWxlQXR0YWNofVxuICAgICAgICBvbkRlbGV0ZUF0dGFjaG1lbnQ9e2hhbmRsZURlbGV0ZUF0dGFjaG1lbnR9XG4gICAgICAgIGF0dGFjaG1lbnRzPXthdHRhY2htZW50c1xuICAgICAgICAgIC5maWx0ZXIoYXR0ID0+ICEhYXR0LmZpbGUpXG4gICAgICAgICAgLm1hcChhdHQgPT4gKHtcbiAgICAgICAgICAgIGZpbGU6IGF0dC5maWxlISxcbiAgICAgICAgICAgIG9yaWdpbmFsRmlsZTogYXR0Lm9yaWdpbmFsRmlsZSxcbiAgICAgICAgICAgIGlkOiBhdHQuaWQsXG4gICAgICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgICAgIHNpemU6IHR5cGVvZiBhdHQuc2l6ZSA9PT0gJ251bWJlcicgPyBhdHQuc2l6ZSA6IE51bWJlcihhdHQuc2l6ZSkgfHwgMCxcbiAgICAgICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICAgICAgaWNvbjogYXR0Lmljb24sXG4gICAgICAgICAgfSkpfVxuICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICBvblN0b3BHZW5lcmF0aW9uPXtvblN0b3BHZW5lcmF0aW9ufVxuICAgICAgICBjaGF0SWQ9e2NoYXRJZCB8fCB1bmRlZmluZWR9XG4gICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAvPlxuICAgICAgPENoYXREaXNjbGFpbWVyTWVzc2FnZSBtZXNzYWdlPXtkaXNjbGFpbWVyTWVzc2FnZX0gLz5cbiAgICA8L1N0eWxlZENoYXRGb290ZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBb0JBLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ3ZFLFNBQVNDLE1B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
@@ -1,19 +1,10 @@
1
1
  import styled from 'styled-components';
2
- import colors from '@projectcor/theme/lib/base/colors';
3
2
  export var StyledChatFooter = styled.div.withConfig({
4
3
  displayName: "styles__StyledChatFooter",
5
4
  componentId: "sc-qhd26v-0"
6
5
  })(["display:flex;flex-direction:column;gap:6px;width:100%;max-width:864px;"]);
7
- export var ContextBarLeft = styled.div.withConfig({
8
- displayName: "styles__ContextBarLeft",
9
- componentId: "sc-qhd26v-1"
10
- })(["display:flex;align-items:center;gap:6px;min-width:0;flex:0 1 auto;"]);
11
- export var AddContextButton = styled.button.withConfig({
12
- displayName: "styles__AddContextButton",
13
- componentId: "sc-qhd26v-2"
14
- })(["display:inline-flex;align-items:center;gap:4px;flex-shrink:0;height:30px;padding:0 10px;border:0.5px dashed #bfbfbf;border-radius:20px;background:transparent;cursor:pointer;color:", ";font-size:12px;line-height:130%;white-space:nowrap;transition:color 0.12s ease,border-color 0.12s ease;&:hover{color:var(--cor-color-grey-900,#202020);border-color:var(--cor-color-grey-900,#202020);}"], colors.secondary);
15
6
  export var ChipsAndFaqsRow = styled.div.withConfig({
16
7
  displayName: "styles__ChipsAndFaqsRow",
17
- componentId: "sc-qhd26v-3"
8
+ componentId: "sc-qhd26v-1"
18
9
  })(["display:flex;align-items:center;justify-content:space-between;gap:6px;box-sizing:border-box;width:100%;min-width:0;& > *:first-child{flex:0 1 auto;min-width:0;max-width:100%;}& > *:last-child{flex-shrink:0;}"]);
19
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjb2xvcnMiLCJTdHlsZWRDaGF0Rm9vdGVyIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJDb250ZXh0QmFyTGVmdCIsIkFkZENvbnRleHRCdXR0b24iLCJidXR0b24iLCJzZWNvbmRhcnkiLCJDaGlwc0FuZEZhcXNSb3ciXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9zdHlsZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcbmltcG9ydCBjb2xvcnMgZnJvbSAnQHByb2plY3Rjb3IvdGhlbWUvbGliL2Jhc2UvY29sb3JzJ1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQ2hhdEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogNnB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA4NjRweDtcbmBcblxuZXhwb3J0IGNvbnN0IENvbnRleHRCYXJMZWZ0ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA2cHg7XG4gIG1pbi13aWR0aDogMDtcbiAgZmxleDogMCAxIGF1dG87XG5gXG5cbmV4cG9ydCBjb25zdCBBZGRDb250ZXh0QnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogNHB4O1xuICBmbGV4LXNocmluazogMDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwYWRkaW5nOiAwIDEwcHg7XG4gIGJvcmRlcjogMC41cHggZGFzaGVkICNiZmJmYmY7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAke2NvbG9ycy5zZWNvbmRhcnl9O1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxMzAlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0cmFuc2l0aW9uOlxuICAgIGNvbG9yIDAuMTJzIGVhc2UsXG4gICAgYm9yZGVyLWNvbG9yIDAuMTJzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWNvci1jb2xvci1ncmV5LTkwMCwgIzIwMjAyMCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb3ItY29sb3ItZ3JleS05MDAsICMyMDIwMjApO1xuICB9XG5gXG5cbmV4cG9ydCBjb25zdCBDaGlwc0FuZEZhcXNSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogNnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAwO1xuXG4gIC8qIENoaXAgYWwgYW5jaG8gZGVsIHRleHRvOyBzaSBubyBlbnRyYSwgZW5jb2dlIHkgdHJ1bmNhLiBGQVEgZmlqbyBhIGxhIGRlcmVjaGEuICovXG4gICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgJiA+ICo6bGFzdC1jaGlsZCB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gIH1cbmBcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxNQUFNLE1BQU0sbUNBQW1DO0FBRXRELE9BQU8sSUFBTUMsZ0JBQWdCLEdBQUdGLE1BQU0sQ0FBQ0csR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLDhFQU16QztBQUVELE9BQU8sSUFBTUMsY0FBYyxHQUFHUCxNQUFNLENBQUNHLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSwwRUFNdkM7QUFFRCxPQUFPLElBQU1FLGdCQUFnQixHQUFHUixNQUFNLENBQUNTLE1BQU0sQ0FBQUwsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSx3WUFXbENMLE1BQU0sQ0FBQ1MsU0FBUyxDQVkxQjtBQUVELE9BQU8sSUFBTUMsZUFBZSxHQUFHWCxNQUFNLENBQUNHLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSx1TkFtQnhDIiwiaWdub3JlTGlzdCI6W119
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJTdHlsZWRDaGF0Rm9vdGVyIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiLCJDaGlwc0FuZEZhcXNSb3ciXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9zdHlsZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcblxuZXhwb3J0IGNvbnN0IFN0eWxlZENoYXRGb290ZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDZweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogODY0cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBDaGlwc0FuZEZhcXNSb3cgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogNnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAwO1xuXG4gIC8qIENoaXAgYWwgYW5jaG8gZGVsIHRleHRvOyBzaSBubyBlbnRyYSwgZW5jb2dlIHkgdHJ1bmNhLiBGQVEgZmlqbyBhIGxhIGRlcmVjaGEuICovXG4gICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICBmbGV4OiAwIDEgYXV0bztcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgJiA+ICo6bGFzdC1jaGlsZCB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gIH1cbmBcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLG1CQUFtQjtBQUV0QyxPQUFPLElBQU1DLGdCQUFnQixHQUFHRCxNQUFNLENBQUNFLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSw4RUFNekM7QUFFRCxPQUFPLElBQU1DLGVBQWUsR0FBR04sTUFBTSxDQUFDRSxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsdU5BbUJ4QyIsImlnbm9yZUxpc3QiOltdfQ==