@projectcor/maia-components 2.29.0 → 2.30.1-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 (669) hide show
  1. package/CHANGELOG.md +656 -0
  2. package/lib/App.js +55 -0
  3. package/lib/components/atoms/ActionableButton.js +60 -0
  4. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +89 -0
  5. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +21 -0
  6. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +9 -0
  7. package/lib/components/atoms/AgentActivityIndicator/index.js +2 -0
  8. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +209 -0
  9. package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +93 -0
  10. package/lib/components/atoms/ApprovalBox/index.js +2 -0
  11. package/lib/components/atoms/AttachmentCard/AttachmentCard.js +218 -0
  12. package/lib/components/atoms/AttachmentCard/AttachmentCard.styles.js +52 -0
  13. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +448 -0
  14. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.styles.js +58 -0
  15. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +55 -0
  16. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.styles.js +14 -0
  17. package/lib/components/atoms/AttachmentCard/index.js +4 -0
  18. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +442 -0
  19. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +119 -0
  20. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +222 -0
  21. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +313 -0
  22. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +128 -0
  23. package/lib/components/atoms/AttachmentPreviewModal/index.js +2 -0
  24. package/lib/components/atoms/Backdrop/Backdrop.js +17 -0
  25. package/lib/components/atoms/Backdrop/Backdrop.styles.js +9 -0
  26. package/lib/components/atoms/Backdrop/index.js +2 -0
  27. package/lib/components/atoms/CardItem.js +7 -0
  28. package/lib/components/atoms/CardMenu/CardMenu.js +131 -0
  29. package/lib/components/atoms/CardMenu/index.js +2 -0
  30. package/lib/components/atoms/CardMenu/styles.js +21 -0
  31. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +77 -0
  32. package/lib/components/atoms/ChatClientSelector/index.js +2 -0
  33. package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +9 -0
  34. package/lib/components/atoms/ChatDisclaimerMessage/index.js +2 -0
  35. package/lib/components/atoms/ChatDisclaimerMessage/styles.js +6 -0
  36. package/lib/components/atoms/Checkbox/Checkbox.js +34 -0
  37. package/lib/components/atoms/Checkbox/index.js +2 -0
  38. package/lib/components/atoms/Checkbox/styles.js +39 -0
  39. package/lib/components/atoms/Chip/Chip.js +150 -0
  40. package/lib/components/atoms/Chip/index.js +2 -0
  41. package/lib/components/atoms/Chip/styles.js +43 -0
  42. package/lib/components/atoms/ChipLlm/ChipLlm.js +45 -0
  43. package/lib/components/atoms/ChipLlm/ChipLlm.style.js +21 -0
  44. package/lib/components/atoms/ChipLlm/index.js +2 -0
  45. package/lib/components/atoms/ChipStatus/ChipStatus.interface.js +2 -0
  46. package/lib/components/atoms/ChipStatus/ChipStatus.js +14 -0
  47. package/lib/components/atoms/ChipStatus/ChipStatus.styles.js +27 -0
  48. package/lib/components/atoms/ChipStatus/index.js +2 -0
  49. package/lib/components/atoms/ClearButton.js +6 -0
  50. package/lib/components/atoms/ClientSelector/ClientSelector.js +146 -0
  51. package/lib/components/atoms/ClientSelector/ClientSelector.styles.js +15 -0
  52. package/lib/components/atoms/ClientSelector/index.js +2 -0
  53. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +38 -0
  54. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +188 -0
  55. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +39 -0
  56. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +445 -0
  57. package/lib/components/atoms/ContextMentionChip/index.js +4 -0
  58. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +533 -0
  59. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +10 -0
  60. package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
  61. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +282 -0
  62. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +148 -0
  63. package/lib/components/atoms/ContextMentionItem/index.js +2 -0
  64. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +290 -0
  65. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +108 -0
  66. package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
  67. package/lib/components/atoms/CopyToClipboard.js +70 -0
  68. package/lib/components/atoms/EditableLabel/EditableLabel.js +110 -0
  69. package/lib/components/atoms/EditableLabel/index.js +2 -0
  70. package/lib/components/atoms/EditableLabel/styles.js +7 -0
  71. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.js +22 -0
  72. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.styles.js +18 -0
  73. package/lib/components/atoms/EmptySearchClients/index.js +2 -0
  74. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.js +19 -0
  75. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.styles.js +15 -0
  76. package/lib/components/atoms/EmptySearchProjects/index.js +2 -0
  77. package/lib/components/atoms/EntitySelector/EntitySelector.js +247 -0
  78. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +38 -0
  79. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +67 -0
  80. package/lib/components/atoms/EntitySelector/index.js +2 -0
  81. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.js +14 -0
  82. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.styles.js +15 -0
  83. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.js +14 -0
  84. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.style.js +15 -0
  85. package/lib/components/atoms/ErrorSearchFaqs/index.js +2 -0
  86. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +18 -0
  87. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.style.js +15 -0
  88. package/lib/components/atoms/ErrorSearchProjects/index.js +2 -0
  89. package/lib/components/atoms/Expand/Expand.js +32 -0
  90. package/lib/components/atoms/Expand/index.js +2 -0
  91. package/lib/components/atoms/Fade/Fade.js +56 -0
  92. package/lib/components/atoms/Fade/index.js +2 -0
  93. package/lib/components/atoms/FeedbackButton/FeedbackButton.js +59 -0
  94. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +14 -0
  95. package/lib/components/atoms/FeedbackButton/index.js +2 -0
  96. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +138 -0
  97. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +44 -0
  98. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +43 -0
  99. package/lib/components/atoms/FrequentlyAskedQuestions/index.js +2 -0
  100. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +122 -0
  101. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +43 -0
  102. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +62 -0
  103. package/lib/components/atoms/FrequentlyUsedActions/index.js +2 -0
  104. package/lib/components/atoms/GoBackButton.js +24 -0
  105. package/lib/components/atoms/HelpButton.js +44 -0
  106. package/lib/components/atoms/IconButton.js +56 -0
  107. package/lib/components/atoms/ImagePreview/ImagePreview.js +96 -0
  108. package/lib/components/atoms/ImagePreview/ImagePreview.styles.js +70 -0
  109. package/lib/components/atoms/Input/CustomInput.interface.js +2 -0
  110. package/lib/components/atoms/Input/CustomInput.js +91 -0
  111. package/lib/components/atoms/Input/CustomInput.styles.js +39 -0
  112. package/lib/components/atoms/Input/index.js +2 -0
  113. package/lib/components/atoms/ListMenuOption/ListMenuOption.js +41 -0
  114. package/lib/components/atoms/ListMenuOption/index.js +2 -0
  115. package/lib/components/atoms/ListMenuOption/styles.js +9 -0
  116. package/lib/components/atoms/Loader.js +41 -0
  117. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.js +11 -0
  118. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.style.js +6 -0
  119. package/lib/components/atoms/LoadingFaqs/index.js +2 -0
  120. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.js +11 -0
  121. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.styles.js +6 -0
  122. package/lib/components/atoms/LoadingSearchClients/index.js +2 -0
  123. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.js +14 -0
  124. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.style.js +10 -0
  125. package/lib/components/atoms/LoadingSearchProjects/index.js +2 -0
  126. package/lib/components/atoms/LoadingText/LoadingText.js +18 -0
  127. package/lib/components/atoms/LoadingText/index.js +2 -0
  128. package/lib/components/atoms/LoadingText/styles.js +7 -0
  129. package/lib/components/atoms/MAIAButton/MAIAButton.js +33 -0
  130. package/lib/components/atoms/MAIAButton/index.js +2 -0
  131. package/lib/components/atoms/MAIAError/MAIAError.js +15 -0
  132. package/lib/components/atoms/MAIAError/index.js +2 -0
  133. package/lib/components/atoms/MAIAInput/MAIAInput.js +1233 -0
  134. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +266 -0
  135. package/lib/components/atoms/MAIAInput/index.js +2 -0
  136. package/lib/components/atoms/MAIAInput/maiaInputLayout.js +25 -0
  137. package/lib/components/atoms/MAIAInput/styles.js +186 -0
  138. package/lib/components/atoms/MAIAMessage/MAIAMessage.interfaces.js +2 -0
  139. package/lib/components/atoms/MAIAMessage/MAIAMessage.js +22 -0
  140. package/lib/components/atoms/MAIAMessage/index.js +2 -0
  141. package/lib/components/atoms/MAIAMessage/styles.js +7 -0
  142. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.config.js +23 -0
  143. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.interfaces.js +2 -0
  144. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.js +51 -0
  145. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.styles.js +26 -0
  146. package/lib/components/atoms/MaiaStreamdown/index.js +2 -0
  147. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.js +18 -0
  148. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +84 -0
  149. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.js +15 -0
  150. package/lib/components/atoms/MaiaWrapper/index.js +3 -0
  151. package/lib/components/atoms/MaiaWrapper/styles.js +21 -0
  152. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.interface.js +2 -0
  153. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.js +84 -0
  154. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +53 -0
  155. package/lib/components/atoms/ModalClientAccess/index.js +2 -0
  156. package/lib/components/atoms/ModalInfo/ModalInfo.js +52 -0
  157. package/lib/components/atoms/ModalInfo/ModalInfoContent.js +7 -0
  158. package/lib/components/atoms/ModalInfo/index.js +3 -0
  159. package/lib/components/atoms/ModalInfo/styles.js +7 -0
  160. package/lib/components/atoms/ModalProject/ModalProject.interface.js +2 -0
  161. package/lib/components/atoms/ModalProject/ModalProject.js +112 -0
  162. package/lib/components/atoms/ModalProject/ModalProject.style.js +59 -0
  163. package/lib/components/atoms/ModalProject/index.js +2 -0
  164. package/lib/components/atoms/NextPageLoader.js +33 -0
  165. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.js +28 -0
  166. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +180 -0
  167. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +34 -0
  168. package/lib/components/atoms/OnboardingModalButton/index.js +3 -0
  169. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +131 -0
  170. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.styles.js +59 -0
  171. package/lib/components/atoms/OptionAccessibility/index.js +2 -0
  172. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +27 -0
  173. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +18 -0
  174. package/lib/components/atoms/OptionCorPermission/index.js +2 -0
  175. package/lib/components/atoms/PrimaryButton.js +31 -0
  176. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +77 -0
  177. package/lib/components/atoms/ProjectSelector/ProjectSelector.styles.js +61 -0
  178. package/lib/components/atoms/ProjectSelector/index.js +2 -0
  179. package/lib/components/atoms/SecondaryButton.js +20 -0
  180. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
  181. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +20 -0
  182. package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
  183. package/lib/components/atoms/Skeleton/Skeleton.js +36 -0
  184. package/lib/components/atoms/Skeleton/index.js +2 -0
  185. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +208 -0
  186. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +77 -0
  187. package/lib/components/atoms/SkillsDropdown/index.js +2 -0
  188. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +16 -0
  189. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +24 -0
  190. package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +18 -0
  191. package/lib/components/atoms/SlashCommandChip/index.js +4 -0
  192. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +210 -0
  193. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +53 -0
  194. package/lib/components/atoms/SlashCommandDropdown/index.js +2 -0
  195. package/lib/components/atoms/Switch/Switch.js +27 -0
  196. package/lib/components/atoms/Switch/Switch.styles.js +22 -0
  197. package/lib/components/atoms/Switch/index.js +2 -0
  198. package/lib/components/atoms/TextArea/CustomTextArea.interface.js +2 -0
  199. package/lib/components/atoms/TextArea/CustomTextArea.js +93 -0
  200. package/lib/components/atoms/TextArea/CustomTextArea.styles.js +25 -0
  201. package/lib/components/atoms/TextArea/TextArea.interfaces.js +2 -0
  202. package/lib/components/atoms/TextArea/TextArea.js +172 -0
  203. package/lib/components/atoms/TextArea/TextArea.styles.js +16 -0
  204. package/lib/components/atoms/TextArea/index.js +2 -0
  205. package/lib/components/atoms/ThirdButton.js +19 -0
  206. package/lib/components/atoms/VideoModal/VideoModal.js +76 -0
  207. package/lib/components/atoms/VideoModal/index.js +2 -0
  208. package/lib/components/atoms/WithAppCfg.js +26 -0
  209. package/lib/components/atoms/WithFeatureValidation.js +23 -0
  210. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.js +9 -0
  211. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.styles.js +6 -0
  212. package/lib/components/atoms/WrapperCenterIcon/index.js +2 -0
  213. package/lib/components/atoms/icons/AIIcon.js +23 -0
  214. package/lib/components/atoms/icons/AacFile.js +39 -0
  215. package/lib/components/atoms/icons/AccessibilityIcon.js +42 -0
  216. package/lib/components/atoms/icons/ActionAssignIcon.js +111 -0
  217. package/lib/components/atoms/icons/ActionCalendarIcon.js +112 -0
  218. package/lib/components/atoms/icons/ActionChargeHoursIcon.js +111 -0
  219. package/lib/components/atoms/icons/ActionChatIcon.js +71 -0
  220. package/lib/components/atoms/icons/ActionCreateIcon.js +91 -0
  221. package/lib/components/atoms/icons/ActionCreateReworkIcon.js +39 -0
  222. package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +37 -0
  223. package/lib/components/atoms/icons/ActionEditIcon.js +39 -0
  224. package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +88 -0
  225. package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +37 -0
  226. package/lib/components/atoms/icons/ActionTimeBackIcon.js +112 -0
  227. package/lib/components/atoms/icons/AgentMaiaIcon.js +31 -0
  228. package/lib/components/atoms/icons/Brain.js +77 -0
  229. package/lib/components/atoms/icons/CorAccessIcon.js +41 -0
  230. package/lib/components/atoms/icons/CorLogo.js +76 -0
  231. package/lib/components/atoms/icons/CsvFile.js +41 -0
  232. package/lib/components/atoms/icons/DocFile.js +41 -0
  233. package/lib/components/atoms/icons/DocxFile.js +41 -0
  234. package/lib/components/atoms/icons/EmptyClientIllustration.js +67 -0
  235. package/lib/components/atoms/icons/EmptyHistory.js +46 -0
  236. package/lib/components/atoms/icons/EmptySearchIllustration.js +37 -0
  237. package/lib/components/atoms/icons/EmptyState.js +84 -0
  238. package/lib/components/atoms/icons/EmptyStateAgents.js +58 -0
  239. package/lib/components/atoms/icons/ErrorIcon.js +14 -0
  240. package/lib/components/atoms/icons/ErrorSearchIllustration.js +52 -0
  241. package/lib/components/atoms/icons/ErrorState.js +51 -0
  242. package/lib/components/atoms/icons/FaqChevronIcon.js +39 -0
  243. package/lib/components/atoms/icons/FaqsIcon.js +51 -0
  244. package/lib/components/atoms/icons/FlacIcon.js +39 -0
  245. package/lib/components/atoms/icons/FolderIcon.js +29 -0
  246. package/lib/components/atoms/icons/HomeIcon.js +30 -0
  247. package/lib/components/atoms/icons/ImageFile.js +46 -0
  248. package/lib/components/atoms/icons/M4aFile.js +39 -0
  249. package/lib/components/atoms/icons/MAIAIcon.js +20 -0
  250. package/lib/components/atoms/icons/MAIAIsologo.js +65 -0
  251. package/lib/components/atoms/icons/MDFile.js +41 -0
  252. package/lib/components/atoms/icons/MaiaChatLayoutFloatingIcon.js +41 -0
  253. package/lib/components/atoms/icons/MaiaChatLayoutFullscreenIcon.js +41 -0
  254. package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +33 -0
  255. package/lib/components/atoms/icons/MaiaChatLayoutSidebarIcon.js +41 -0
  256. package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
  257. package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
  258. package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
  259. package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
  260. package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
  261. package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
  262. package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
  263. package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
  264. package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
  265. package/lib/components/atoms/icons/MaiaSettingsProject.js +111 -0
  266. package/lib/components/atoms/icons/MaiaSettingsProjectV2.js +193 -0
  267. package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
  268. package/lib/components/atoms/icons/MaiaStoreIcon.js +31 -0
  269. package/lib/components/atoms/icons/Mp3File.js +39 -0
  270. package/lib/components/atoms/icons/Mp4File.js +39 -0
  271. package/lib/components/atoms/icons/MyAgentsNavIcon.js +51 -0
  272. package/lib/components/atoms/icons/NewChat.js +29 -0
  273. package/lib/components/atoms/icons/NotionIcon.js +36 -0
  274. package/lib/components/atoms/icons/OgaFile.js +39 -0
  275. package/lib/components/atoms/icons/OggFile.js +39 -0
  276. package/lib/components/atoms/icons/PdfFile.js +39 -0
  277. package/lib/components/atoms/icons/PlusIcon.js +29 -0
  278. package/lib/components/atoms/icons/PptFile.js +47 -0
  279. package/lib/components/atoms/icons/PptxFile.js +49 -0
  280. package/lib/components/atoms/icons/RetryIcon.js +34 -0
  281. package/lib/components/atoms/icons/SkillCreatedByIcon.js +20 -0
  282. package/lib/components/atoms/icons/SkillIcon.js +30 -0
  283. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +23 -0
  284. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +23 -0
  285. package/lib/components/atoms/icons/SkillsNavIcon.js +24 -0
  286. package/lib/components/atoms/icons/SubtaskIcon.js +36 -0
  287. package/lib/components/atoms/icons/TaskLinkIcon.js +27 -0
  288. package/lib/components/atoms/icons/TelescopeIcon.js +60 -0
  289. package/lib/components/atoms/icons/TemplateGradientIcon.js +42 -0
  290. package/lib/components/atoms/icons/TextFile.js +41 -0
  291. package/lib/components/atoms/icons/WavFile.js +39 -0
  292. package/lib/components/atoms/icons/WebmFile.js +50 -0
  293. package/lib/components/atoms/icons/XlsFile.js +42 -0
  294. package/lib/components/atoms/icons/XlsxFile.js +42 -0
  295. package/lib/components/atoms/icons/index.js +54 -0
  296. package/lib/components/atoms/index.js +42 -0
  297. package/lib/components/index.js +11 -0
  298. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.interface.js +2 -0
  299. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +236 -0
  300. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +53 -0
  301. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +415 -0
  302. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +152 -0
  303. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +374 -0
  304. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +106 -0
  305. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +92 -0
  306. package/lib/components/molecules/AbmSection/AbmLoaderFiles.styles.js +57 -0
  307. package/lib/components/molecules/AbmSection/index.js +4 -0
  308. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +52 -0
  309. package/lib/components/molecules/ChatAIClientSelector/index.js +2 -0
  310. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +119 -0
  311. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +187 -0
  312. package/lib/components/molecules/ChatAIContent/ChatAIContent.styles.js +6 -0
  313. package/lib/components/molecules/ChatAIContent/index.js +2 -0
  314. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +241 -0
  315. package/lib/components/molecules/ChatAIHistory/index.js +2 -0
  316. package/lib/components/molecules/ChatAIHistory/styles.js +22 -0
  317. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +649 -0
  318. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +115 -0
  319. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +95 -0
  320. package/lib/components/molecules/ChatAIHome/index.js +2 -0
  321. package/lib/components/molecules/ChatAIHome/styles.js +335 -0
  322. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +137 -0
  323. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +853 -0
  324. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +47 -0
  325. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +37 -0
  326. package/lib/components/molecules/ChatAIMessages/README.md +101 -0
  327. package/lib/components/molecules/ChatAIMessages/index.js +2 -0
  328. package/lib/components/molecules/ChatAIMessages/newStyles.js +131 -0
  329. package/lib/components/molecules/ChatAIMessages/styles.js +94 -0
  330. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +1254 -0
  331. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +58 -0
  332. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +127 -0
  333. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +34 -0
  334. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/index.js +2 -0
  335. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +189 -0
  336. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -0
  337. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/index.js +2 -0
  338. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +453 -0
  339. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +108 -0
  340. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/index.js +2 -0
  341. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +48 -0
  342. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +38 -0
  343. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
  344. package/lib/components/molecules/ChatAIModal/constants.js +40 -0
  345. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +16 -0
  346. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +12 -0
  347. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +13 -0
  348. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +3 -0
  349. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +57 -0
  350. package/lib/components/molecules/ChatAIModal/index.js +2 -0
  351. package/lib/components/molecules/ChatAIModal/layout.js +74 -0
  352. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +457 -0
  353. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +218 -0
  354. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +430 -0
  355. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +169 -0
  356. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  357. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +48 -0
  358. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.styles.js +49 -0
  359. package/lib/components/molecules/ChatAIProjectSelector/index.js +2 -0
  360. package/lib/components/molecules/ChatFooter/ChatFooter.js +337 -0
  361. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.js +32 -0
  362. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.styles.js +14 -0
  363. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +201 -0
  364. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +51 -0
  365. package/lib/components/molecules/ChatFooter/index.js +2 -0
  366. package/lib/components/molecules/ChatFooter/styles.js +23 -0
  367. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +60 -0
  368. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
  369. package/lib/components/molecules/ContextMentionInput/index.js +2 -0
  370. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +118 -0
  371. package/lib/components/molecules/MessageFeedback/index.js +2 -0
  372. package/lib/components/molecules/MessageFeedback/styles.js +14 -0
  373. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.js +127 -0
  374. package/lib/components/molecules/ProjectSummaryChat/index.js +2 -0
  375. package/lib/components/molecules/ProjectSummaryChat/styles.js +8 -0
  376. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.js +152 -0
  377. package/lib/components/molecules/ProjectSummaryConfig/index.js +2 -0
  378. package/lib/components/molecules/ProjectSummaryConfig/styles.js +86 -0
  379. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +49 -0
  380. package/lib/components/molecules/ProjectSummaryContent/index.js +2 -0
  381. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.js +19 -0
  382. package/lib/components/molecules/ProjectSummaryModal/index.js +2 -0
  383. package/lib/components/molecules/ProjectSummaryModal/styles.js +2 -0
  384. package/lib/components/molecules/Sidebar/Sidebar.js +716 -0
  385. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +157 -0
  386. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +48 -0
  387. package/lib/components/molecules/Sidebar/Sidebar.styles.js +75 -0
  388. package/lib/components/molecules/Sidebar/index.js +2 -0
  389. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +1449 -0
  390. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +93 -0
  391. package/lib/components/organisms/AbmAgentModal/index.js +2 -0
  392. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +182 -0
  393. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  394. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  395. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +585 -0
  396. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +154 -0
  397. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  398. package/lib/components/organisms/ChatAI/ChatAI.js +167 -0
  399. package/lib/components/organisms/ChatAI/index.js +2 -0
  400. package/lib/components/organisms/ChatAI/styles.js +7 -0
  401. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +23 -0
  402. package/lib/components/organisms/ClientAIButton/index.js +2 -0
  403. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +86 -0
  404. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +39 -0
  405. package/lib/components/organisms/DeleteAgentModal/index.js +2 -0
  406. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +122 -0
  407. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +47 -0
  408. package/lib/components/organisms/DeleteQuestionModal/index.js +2 -0
  409. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +138 -0
  410. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +69 -0
  411. package/lib/components/organisms/EditQuestionModal/index.js +2 -0
  412. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +113 -0
  413. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +54 -0
  414. package/lib/components/organisms/ModalFileExceeds/index.js +2 -0
  415. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.js +26 -0
  416. package/lib/components/organisms/ProjectAIButton/index.js +2 -0
  417. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +60 -0
  418. package/lib/components/organisms/ProjectSummary/index.js +2 -0
  419. package/lib/components/organisms/ProjectSummary/styles.js +7 -0
  420. package/lib/components/organisms/SnackBar/Snackbar.interface.js +2 -0
  421. package/lib/components/organisms/SnackBar/Snackbar.js +73 -0
  422. package/lib/components/organisms/SnackBar/Snackbar.styles.js +9 -0
  423. package/lib/components/organisms/SnackBar/index.js +2 -0
  424. package/lib/components/organisms/SourcesInformation/SourceItem.js +18 -0
  425. package/lib/components/organisms/SourcesInformation/SourceItem.styles.js +14 -0
  426. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +66 -0
  427. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +27 -0
  428. package/lib/components/organisms/SourcesInformation/index.js +2 -0
  429. package/lib/constants/config.js +10 -0
  430. package/lib/constants/formatExtensions.js +55 -0
  431. package/lib/constants/gqlClient.js +4 -0
  432. package/lib/constants/maiaHourAgentAccess.js +15 -0
  433. package/lib/constants/maiaTaskPanelAccess.js +24 -0
  434. package/lib/constants/maiaTaskPanelOutsideClick.js +9 -0
  435. package/lib/constants/maiaTaskPanelZIndex.js +19 -0
  436. package/lib/constants/permissions/config.js +72 -0
  437. package/lib/constants/permissions/index.js +3 -0
  438. package/lib/constants/permissions/types.js +2 -0
  439. package/lib/constants/permissions/utils.js +18 -0
  440. package/lib/constants/plannerSyncEvents.js +15 -0
  441. package/lib/constants/taskLinkIcon.js +15 -0
  442. package/lib/constants/taskUrls.js +11 -0
  443. package/lib/context/cor-user.js +31 -0
  444. package/lib/context/global-context.js +39 -0
  445. package/lib/dev/DevChatAI.js +101 -0
  446. package/lib/dev/DevContextMentionInput.js +67 -0
  447. package/lib/dev/ProjectSummary.js +9 -0
  448. package/lib/dev/Providers.js +27 -0
  449. package/lib/exports.js +2 -0
  450. package/lib/hooks/README.md +192 -0
  451. package/lib/hooks/index.js +30 -0
  452. package/lib/hooks/useAccessClient/index.js +2 -0
  453. package/lib/hooks/useAccessClient/useAccessClient.js +81 -0
  454. package/lib/hooks/useAgentModel/index.js +2 -0
  455. package/lib/hooks/useAgentModel/useAgentModel.js +62 -0
  456. package/lib/hooks/useAgentModel/useCreateAgent.js +175 -0
  457. package/lib/hooks/useAgentModel/useDeleteAgent.js +88 -0
  458. package/lib/hooks/useAgentModel/useUpdateAgent.js +176 -0
  459. package/lib/hooks/useAgentSuggestions.js +60 -0
  460. package/lib/hooks/useCaretPosition.js +65 -0
  461. package/lib/hooks/useChatManager/index.js +2 -0
  462. package/lib/hooks/useChatManager/useChatManager.interface.js +2 -0
  463. package/lib/hooks/useChatManager/useChatManager.js +1782 -0
  464. package/lib/hooks/useChatMessages/index.js +2 -0
  465. package/lib/hooks/useChatMessages/useChatMessages.interface.js +2 -0
  466. package/lib/hooks/useChatMessages/useChatMessages.js +722 -0
  467. package/lib/hooks/useChats/index.js +2 -0
  468. package/lib/hooks/useChats/useChats.interfaces.js +2 -0
  469. package/lib/hooks/useChats/useChats.js +187 -0
  470. package/lib/hooks/useClientSearch.js +163 -0
  471. package/lib/hooks/useContextMentions.js +500 -0
  472. package/lib/hooks/useContextPinPopover.js +228 -0
  473. package/lib/hooks/useDebounce.js +18 -0
  474. package/lib/hooks/useEntitySearch.js +1053 -0
  475. package/lib/hooks/useEvent.js +94 -0
  476. package/lib/hooks/useFrequentlyAskedQuestions.js +150 -0
  477. package/lib/hooks/useFrequentlyUsedActions.js +94 -0
  478. package/lib/hooks/useKnowledge/deleteKnowledge.js +69 -0
  479. package/lib/hooks/useKnowledge/downloadKnowledge.js +81 -0
  480. package/lib/hooks/useKnowledge/index.js +4 -0
  481. package/lib/hooks/useKnowledge/saveKnowledge.js +107 -0
  482. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +156 -0
  483. package/lib/hooks/useMaiaTaskPanelZIndex.js +17 -0
  484. package/lib/hooks/useMentionAllowedTypes.js +120 -0
  485. package/lib/hooks/useMentionPopover.js +342 -0
  486. package/lib/hooks/useMinimizedPillBottomOffset.js +110 -0
  487. package/lib/hooks/useModal/index.js +2 -0
  488. package/lib/hooks/useModal/useModal.interfaces.js +2 -0
  489. package/lib/hooks/useModal/useModal.js +47 -0
  490. package/lib/hooks/useOnboardingNavigation.js +20 -0
  491. package/lib/hooks/useOrchestratorStream/index.js +2 -0
  492. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +2 -0
  493. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +269 -0
  494. package/lib/hooks/useProjectSearch.js +183 -0
  495. package/lib/hooks/useProjectSummary.js +101 -0
  496. package/lib/hooks/useProjectSummaryConfig.js +211 -0
  497. package/lib/hooks/useProjects.js +46 -0
  498. package/lib/hooks/useRecentClientsSearch.js +150 -0
  499. package/lib/hooks/useRecentContexts.js +86 -0
  500. package/lib/hooks/useResize.js +29 -0
  501. package/lib/hooks/useSkillsCatalog.js +66 -0
  502. package/lib/hooks/useSlashCommands.js +84 -0
  503. package/lib/hooks/useSmoothStreamText/index.js +2 -0
  504. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +197 -0
  505. package/lib/hooks/useSnackBarManager/useSnackBarManager.js +41 -0
  506. package/lib/hooks/useStreamResponse.js +112 -0
  507. package/lib/hooks/useStreamdownStyles.js +13 -0
  508. package/lib/hooks/useStreamingMessage/index.js +2 -0
  509. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +18 -0
  510. package/lib/hooks/useT.js +17 -0
  511. package/lib/hooks/useTabTaskDefault.js +33 -0
  512. package/lib/hooks/useTaskPanel.js +22 -0
  513. package/lib/hooks/useTextOverflowEllipsisTooltip.js +34 -0
  514. package/lib/hooks/useToggle.js +19 -0
  515. package/lib/hooks/useToggleFavorite/index.js +2 -0
  516. package/lib/hooks/useToggleFavorite/useToggleFavorite.js +83 -0
  517. package/lib/index.css +76 -0
  518. package/lib/index.js +30 -0
  519. package/lib/lang/br/index.js +793 -0
  520. package/lib/lang/en/index.js +793 -0
  521. package/lib/lang/es/index.js +794 -0
  522. package/lib/lang/fr/index.js +614 -0
  523. package/lib/lang/index.js +24 -0
  524. package/lib/lang/utils.js +33 -0
  525. package/lib/mocks/mockChats.js +395 -0
  526. package/lib/mocks/mockOrchestrator.js +5 -0
  527. package/lib/mocks/mockProject.js +11 -0
  528. package/lib/mocks/mockProjectSummary.js +6 -0
  529. package/lib/mocks/mockedUser.js +169 -0
  530. package/lib/services/apolloClient.js +3 -0
  531. package/lib/services/appcues.js +19 -0
  532. package/lib/services/corpilot/ProjectSummary/getProjectSummary.js +31 -0
  533. package/lib/services/corpilot/ProjectSummary/index.js +5 -0
  534. package/lib/services/corpilot/client.js +27 -0
  535. package/lib/services/corpilot/index.js +5 -0
  536. package/lib/services/maia/Access/updateAccess.js +59 -0
  537. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +46 -0
  538. package/lib/services/maia/Actions/getSlashCommands.js +39 -0
  539. package/lib/services/maia/Actions/index.js +7 -0
  540. package/lib/services/maia/Agents/connectors.js +250 -0
  541. package/lib/services/maia/Agents/createAgent.js +39 -0
  542. package/lib/services/maia/Agents/deleteAgent.js +38 -0
  543. package/lib/services/maia/Agents/fetchAgentDetail.js +122 -0
  544. package/lib/services/maia/Agents/getAgentById.js +162 -0
  545. package/lib/services/maia/Agents/getAgentModels.js +112 -0
  546. package/lib/services/maia/Agents/getAgentSuggestions.js +44 -0
  547. package/lib/services/maia/Agents/getAgents.js +718 -0
  548. package/lib/services/maia/Agents/setAgentToolGroups.js +42 -0
  549. package/lib/services/maia/Agents/toggleFavorite.js +34 -0
  550. package/lib/services/maia/Agents/updateAgent.js +39 -0
  551. package/lib/services/maia/Chats/deleteChat.js +32 -0
  552. package/lib/services/maia/Chats/getChatMessages.js +144 -0
  553. package/lib/services/maia/Chats/getChatsByUserId.js +82 -0
  554. package/lib/services/maia/Chats/index.js +15 -0
  555. package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
  556. package/lib/services/maia/Chats/patchChat.js +43 -0
  557. package/lib/services/maia/Chats/wasHelpfulChat.js +31 -0
  558. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +55 -0
  559. package/lib/services/maia/Faqs/index.js +5 -0
  560. package/lib/services/maia/Knowledge/delete.js +41 -0
  561. package/lib/services/maia/Knowledge/download.js +48 -0
  562. package/lib/services/maia/Knowledge/index.js +3 -0
  563. package/lib/services/maia/Knowledge/save.js +43 -0
  564. package/lib/services/maia/Orchestrator/index.js +7 -0
  565. package/lib/services/maia/Orchestrator/orchestrator.js +246 -0
  566. package/lib/services/maia/RecentClients/getRecentClients.js +43 -0
  567. package/lib/services/maia/RecentClients/index.js +6 -0
  568. package/lib/services/maia/RecentContexts/getRecentContexts.js +54 -0
  569. package/lib/services/maia/RecentContexts/index.js +6 -0
  570. package/lib/services/maia/RecentProjects/getRecentProjects.js +55 -0
  571. package/lib/services/maia/RecentProjects/index.js +6 -0
  572. package/lib/services/maia/RecentTasks/getRecentTasks.js +54 -0
  573. package/lib/services/maia/RecentTasks/index.js +6 -0
  574. package/lib/services/maia/RecentUsers/getRecentUsers.js +59 -0
  575. package/lib/services/maia/RecentUsers/index.js +6 -0
  576. package/lib/services/maia/Skills/createSkill.js +39 -0
  577. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  578. package/lib/services/maia/Skills/generateSkill.js +41 -0
  579. package/lib/services/maia/Skills/getSkills.js +120 -0
  580. package/lib/services/maia/Skills/updateSkill.js +39 -0
  581. package/lib/services/maia/client.js +27 -0
  582. package/lib/services/maia/index.js +17 -0
  583. package/lib/services/query/ClientSearchQuery.js +5 -0
  584. package/lib/services/query/entitySearchQuery.js +18 -0
  585. package/lib/services/query/index.js +2 -0
  586. package/lib/services/query/projectSearchByValueQuery.js +5 -0
  587. package/lib/services/query/taskUserTabQuery.js +8 -0
  588. package/lib/services/query/usersDirectoryQuery.js +19 -0
  589. package/lib/services/types.js +6 -0
  590. package/lib/services/utils/fetchCOR.js +117 -0
  591. package/lib/services/utils/getCookie.js +10 -0
  592. package/lib/services/utils/index.js +3 -0
  593. package/lib/services/utils/mapChatMessages.js +287 -0
  594. package/lib/services/utils/validateIsMaia.js +4 -0
  595. package/lib/store/chatsSidebarOptimistic.js +92 -0
  596. package/lib/store/chatsStore.types.js +2 -0
  597. package/lib/store/chatsStoreLifecycle.js +8 -0
  598. package/lib/store/faqsStore.types.js +2 -0
  599. package/lib/store/index.js +4 -0
  600. package/lib/store/maiaLastChatPersistence.js +35 -0
  601. package/lib/store/sessions/activeView.js +22 -0
  602. package/lib/store/sessions/index.js +9 -0
  603. package/lib/store/sessions/sessionHitlContext.js +15 -0
  604. package/lib/store/sessions/sessionNotificationSound.js +57 -0
  605. package/lib/store/sessions/sessionNotifications.js +110 -0
  606. package/lib/store/sessions/sessionNotifications.types.js +2 -0
  607. package/lib/store/sessions/sessionStreamManager.js +715 -0
  608. package/lib/store/sessions/sessionStreamingText.js +80 -0
  609. package/lib/store/sessions/sessions.types.js +35 -0
  610. package/lib/store/sessions/useSessionMeta.js +39 -0
  611. package/lib/store/sessions/useSessionStreamingText.js +18 -0
  612. package/lib/store/sessions/useSessionsStore.js +197 -0
  613. package/lib/store/useChatsStore.js +387 -0
  614. package/lib/store/useFaqsStore.js +27 -0
  615. package/lib/streamdownStyles.js +9 -0
  616. package/lib/styles/StyledCleanContainer.js +7 -0
  617. package/lib/styles/cascade.js +14 -0
  618. package/lib/styles/config.js +47 -0
  619. package/lib/styles/shared/scrollable.js +3 -0
  620. package/lib/styles/transitions.js +21 -0
  621. package/lib/types/Action.js +2 -0
  622. package/lib/types/AgentSuggestion.js +2 -0
  623. package/lib/types/Chat.js +10 -0
  624. package/lib/types/Client.js +2 -0
  625. package/lib/types/FrequentlyAskedQuestion.js +2 -0
  626. package/lib/types/Project.js +2 -0
  627. package/lib/types/ProjectSummaryConfigKeys.js +9 -0
  628. package/lib/types/Task.js +2 -0
  629. package/lib/types/agent.js +2 -0
  630. package/lib/types/agentModal.js +2 -0
  631. package/lib/types/contextMention.js +37 -0
  632. package/lib/types/global.d.js +2 -0
  633. package/lib/types/skill.js +2 -0
  634. package/lib/types/streamActivity.js +2 -0
  635. package/lib/types/userType.d.js +2 -0
  636. package/lib/utils/actionCategoryMap.js +37 -0
  637. package/lib/utils/actionIconMap.js +61 -0
  638. package/lib/utils/agentDisplayName.js +42 -0
  639. package/lib/utils/chatInputFiles.js +52 -0
  640. package/lib/utils/contextMentionIcons.js +134 -0
  641. package/lib/utils/contextMentionLabel.js +4 -0
  642. package/lib/utils/contextMentionTriggers.js +51 -0
  643. package/lib/utils/contextMentionTypeLabel.js +17 -0
  644. package/lib/utils/corConnectorMentionTypes.js +41 -0
  645. package/lib/utils/ensureStreamdownStyles.js +21 -0
  646. package/lib/utils/entityLinkRender.js +135 -0
  647. package/lib/utils/fileDownloadHelper.js +40 -0
  648. package/lib/utils/formatQuickActionMessage.js +16 -0
  649. package/lib/utils/formatUnreadCount.js +6 -0
  650. package/lib/utils/getUnitFileSize.js +13 -0
  651. package/lib/utils/hitlAnalytics.js +65 -0
  652. package/lib/utils/hoursPlannerQuickActionType.js +64 -0
  653. package/lib/utils/imagePreprocessor.js +108 -0
  654. package/lib/utils/index.js +3 -0
  655. package/lib/utils/maiaHostOpen.js +19 -0
  656. package/lib/utils/maiaStreamdownRehypePlugins.js +27 -0
  657. package/lib/utils/mapBackendLang.js +8 -0
  658. package/lib/utils/normalizeAgentConnectors.js +95 -0
  659. package/lib/utils/openTaskInCorPanel.js +22 -0
  660. package/lib/utils/orchestratorSubagents.js +11 -0
  661. package/lib/utils/renderContextMentions.js +420 -0
  662. package/lib/utils/retryCompletion.js +85 -0
  663. package/lib/utils/slashCommandMarker.js +30 -0
  664. package/lib/utils/sortManagerHoursHomeFuas.js +14 -0
  665. package/lib/utils/sseStreamContent.js +17 -0
  666. package/lib/utils/streamActivityMessages.js +359 -0
  667. package/lib/utils/validateTrimmedFields.js +8 -0
  668. package/package.json +1 -1
  669. package/README.md +0 -2
@@ -0,0 +1,415 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
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 import/no-extraneous-dependencies */
6
+ import React, { useEffect, useState, useMemo, useRef, useCallback } from 'react';
7
+ import { createPortal } from 'react-dom';
8
+ import { Plus } from '@projectcor/icons/lib/components/Plus';
9
+ import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
10
+ import { Open } from '@projectcor/icons/lib/components/Open';
11
+ import { CUSelect } from '@projectcor/selector/lib/components/CUSelect';
12
+ import { ButtonEmoji } from '@projectcor/emoji-reaction';
13
+ import { useTranslation } from 'react-i18next';
14
+ import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
15
+ import { AgentMaiaIcon } from '../../atoms/icons/AgentMaiaIcon';
16
+ import { CustomInput } from '../../atoms/Input';
17
+ import { SCAGSWrapperSelector, SCAGSSelectorModal, SCAGSOption, SCAGSOptionLabel, SCAGSOptionDescription, SCAGSSelectorModalContent, SCAGSWrapperContent, SCAGSWrapperEmoji, SCAGSWrapperAddIcon, SCAGSButtonEmoji, SCAGSWrapperEmojiContent, SCAGSWrapperEmojiIcon, SCAGSWrapper, SCAGSWrapperHeader, SCAGSWrapperHeaderTitle, SCAGSWrapperHeaderInfo, SCAGSWrapperOnboarding, SCAGSWrapperOnboardingContent, SCAGSWrapperOnboardingText, SCAGSWrapperHeaderCreatedByText, SCAGSWrapperHeaderCreatedByTextName, SCAGSWrapperHeaderTitleRequired, SCAGSGeneralCard, SCAGSFieldSurface, SCAGSNoModelsAvailable, SCAGSOptionalFields, SCAGSOptionalLabel } from './AbmGeneralSection.styles';
18
+ import { CustomTextArea } from '../../atoms/TextArea/CustomTextArea';
19
+ import { useUser } from '../../../context/cor-user';
20
+ import { EVENTS, useEvent } from '../../../hooks/useEvent';
21
+ import { useOnboardingNavigation } from '../../../hooks/useOnboardingNavigation';
22
+ import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
23
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
+ var validationFieldsRules = {
25
+ name: 150,
26
+ userPrompt: 5000,
27
+ inputPlaceholder: 100,
28
+ introduction: 400
29
+ };
30
+ var MODEL_OPTION_HEIGHT = 58;
31
+ var MODEL_DROPDOWN_MAX_HEIGHT = 245;
32
+ var MODEL_DROPDOWN_GAP = 4;
33
+ var resolveDropdownPosition = function resolveDropdownPosition(anchor, dropdownHeight) {
34
+ var rect = anchor.getBoundingClientRect();
35
+ var spaceBelow = window.innerHeight - rect.bottom;
36
+ var spaceAbove = rect.top;
37
+ var placement = spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove ? 'bottom' : 'top';
38
+ if (placement === 'bottom') {
39
+ return {
40
+ left: rect.left,
41
+ width: rect.width,
42
+ top: rect.bottom + MODEL_DROPDOWN_GAP,
43
+ placement: placement
44
+ };
45
+ }
46
+ return {
47
+ left: rect.left,
48
+ width: rect.width,
49
+ bottom: window.innerHeight - rect.top + MODEL_DROPDOWN_GAP,
50
+ placement: placement
51
+ };
52
+ };
53
+
54
+ // El picker se portea a un contenedor propio a nivel de body con position:fixed
55
+ // en el origen del viewport, para que el position:absolute que aplica la librería
56
+ // coincida con las coordenadas de getBoundingClientRect (inmune al scroll).
57
+ var EMOJI_PORTAL_ID = 'abm-general-emoji-portal';
58
+ export var AbmGeneralSection = function AbmGeneralSection(_ref) {
59
+ var _values$general$creat, _values$general$creat2, _values$general$userP, _formValues$aiModel4, _values$general$intro, _values$general$input;
60
+ var values = _ref.values,
61
+ handleSetAgentValues = _ref.handleSetAgentValues,
62
+ agentModels = _ref.agentModels,
63
+ loading = _ref.loading,
64
+ tooltipZIndex = _ref.tooltipZIndex;
65
+ var user = useUser();
66
+ var eventAmplitude = useEvent();
67
+ var _useTranslation = useTranslation(['abm_agent_section']),
68
+ t = _useTranslation.t;
69
+ var _useOnboardingNavigat = useOnboardingNavigation(),
70
+ handleOnboardingNavigation = _useOnboardingNavigat.handleOnboardingNavigation;
71
+ var emojiPortalZIndex = useMaiaTaskPanelZIndex(1500, 'nestedModal');
72
+ var modelDropdownZIndex = useMaiaTaskPanelZIndex(1500, 'nestedModal');
73
+ var _useState = useState(false),
74
+ _useState2 = _slicedToArray(_useState, 2),
75
+ openModalAiModel = _useState2[0],
76
+ setOpenModalAiModel = _useState2[1];
77
+ var _useState3 = useState(null),
78
+ _useState4 = _slicedToArray(_useState3, 2),
79
+ dropdownPosition = _useState4[0],
80
+ setDropdownPosition = _useState4[1];
81
+ var _useState5 = useState(null),
82
+ _useState6 = _slicedToArray(_useState5, 2),
83
+ focusedField = _useState6[0],
84
+ setFocusedField = _useState6[1];
85
+ var selectorRef = useRef(null);
86
+ var _useState7 = useState({
87
+ name: values.general.name || '',
88
+ aiModel: values.general.aiModel,
89
+ inputPlaceholder: values.general.inputPlaceholder || '',
90
+ introduction: values.general.introduction || '',
91
+ userPrompt: values.general.userPrompt || '',
92
+ emoji: values.general.emoji || ''
93
+ }),
94
+ _useState8 = _slicedToArray(_useState7, 2),
95
+ formValues = _useState8[0],
96
+ setFormValues = _useState8[1];
97
+ var availableAgentModels = useMemo(function () {
98
+ return agentModels.filter(function (model) {
99
+ return !model.is_deprecated;
100
+ });
101
+ }, [agentModels]);
102
+ var dropdownHeight = useMemo(function () {
103
+ return Math.min(availableAgentModels.length * MODEL_OPTION_HEIGHT + 2, MODEL_DROPDOWN_MAX_HEIGHT);
104
+ }, [availableAgentModels.length]);
105
+ var updateDropdownPosition = useCallback(function () {
106
+ if (!selectorRef.current) return;
107
+ setDropdownPosition(resolveDropdownPosition(selectorRef.current, dropdownHeight));
108
+ }, [dropdownHeight]);
109
+ var handleOpenModalAiModel = function handleOpenModalAiModel() {
110
+ eventAmplitude(EVENTS.selectModel);
111
+ if (!openModalAiModel) {
112
+ updateDropdownPosition();
113
+ }
114
+ setOpenModalAiModel(function (prev) {
115
+ return !prev;
116
+ });
117
+ };
118
+ var handleSelectModel = function handleSelectModel(model, event) {
119
+ var _formValues$aiModel;
120
+ if (event) {
121
+ event.stopPropagation();
122
+ }
123
+ if (model.id !== (formValues === null || formValues === void 0 || (_formValues$aiModel = formValues.aiModel) === null || _formValues$aiModel === void 0 ? void 0 : _formValues$aiModel.id)) {
124
+ eventAmplitude(EVENTS.chooseModel, {
125
+ option: model.display_name
126
+ });
127
+ setFormValues(function (prev) {
128
+ return _objectSpread(_objectSpread({}, prev), {}, {
129
+ aiModel: model
130
+ });
131
+ });
132
+ handleSetAgentValues({
133
+ key: 'aiModel',
134
+ value: model
135
+ });
136
+ }
137
+ setOpenModalAiModel(false);
138
+ };
139
+ useEffect(function () {
140
+ var handleClickOutside = function handleClickOutside(event) {
141
+ if (openModalAiModel) {
142
+ var target = event.target;
143
+ var isInModal = target.closest('[data-selector-modal]');
144
+ var isInOption = target.closest('[data-selector-option]');
145
+ if (!isInModal && !isInOption) {
146
+ setOpenModalAiModel(false);
147
+ }
148
+ }
149
+ };
150
+ var handleKeyDown = function handleKeyDown(event) {
151
+ if (event.key === 'Escape' && openModalAiModel) {
152
+ event.preventDefault();
153
+ event.stopPropagation();
154
+ setOpenModalAiModel(false);
155
+ }
156
+ };
157
+ if (openModalAiModel) {
158
+ document.addEventListener('keydown', handleKeyDown);
159
+ document.addEventListener('click', handleClickOutside);
160
+ return function () {
161
+ document.removeEventListener('keydown', handleKeyDown);
162
+ document.removeEventListener('click', handleClickOutside);
163
+ };
164
+ }
165
+ return undefined;
166
+ }, [openModalAiModel]);
167
+ useEffect(function () {
168
+ if (!openModalAiModel) return undefined;
169
+ var handleReposition = function handleReposition() {
170
+ return updateDropdownPosition();
171
+ };
172
+ window.addEventListener('resize', handleReposition);
173
+ // capture: el ABM scrollea en contenedores internos, no en window
174
+ window.addEventListener('scroll', handleReposition, true);
175
+ return function () {
176
+ window.removeEventListener('resize', handleReposition);
177
+ window.removeEventListener('scroll', handleReposition, true);
178
+ };
179
+ }, [openModalAiModel, updateDropdownPosition]);
180
+ useEffect(function () {
181
+ var container = document.getElementById(EMOJI_PORTAL_ID);
182
+ var created = !container;
183
+ if (!container) {
184
+ container = document.createElement('div');
185
+ container.id = EMOJI_PORTAL_ID;
186
+ container.style.position = 'fixed';
187
+ container.style.top = '0';
188
+ container.style.left = '0';
189
+ document.body.appendChild(container);
190
+ }
191
+ container.style.zIndex = String(emojiPortalZIndex);
192
+ return function () {
193
+ var _container;
194
+ if (created && (_container = container) !== null && _container !== void 0 && _container.parentNode && !container.hasChildNodes()) {
195
+ container.parentNode.removeChild(container);
196
+ }
197
+ };
198
+ }, [emojiPortalZIndex]);
199
+ var handleSetGeneralValues = function handleSetGeneralValues(value, key) {
200
+ handleSetAgentValues({
201
+ key: key,
202
+ value: value
203
+ });
204
+ };
205
+ var handleSelectEmoji = function handleSelectEmoji(emoji) {
206
+ handleSetGeneralValues(emoji.emoji, 'emoji');
207
+ };
208
+ var handleFocus = function handleFocus(fieldName) {
209
+ setFocusedField(fieldName);
210
+ };
211
+ var handleBlur = function handleBlur() {
212
+ setFocusedField(null);
213
+ };
214
+ useEffect(function () {
215
+ setFormValues({
216
+ name: values.general.name || '',
217
+ aiModel: values.general.aiModel,
218
+ inputPlaceholder: values.general.inputPlaceholder || '',
219
+ introduction: values.general.introduction || '',
220
+ userPrompt: values.general.userPrompt || '',
221
+ emoji: values.general.emoji || ''
222
+ });
223
+ }, [values.general]);
224
+ var renderModelDropdown = function renderModelDropdown() {
225
+ if (!openModalAiModel || !dropdownPosition) return null;
226
+ return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(SCAGSSelectorModal, {
227
+ "data-selector-modal": true,
228
+ $left: dropdownPosition.left,
229
+ $width: dropdownPosition.width,
230
+ $top: dropdownPosition.top,
231
+ $bottom: dropdownPosition.bottom,
232
+ $zIndex: modelDropdownZIndex,
233
+ $placement: dropdownPosition.placement,
234
+ children: /*#__PURE__*/_jsx(SCAGSSelectorModalContent, {
235
+ children: availableAgentModels.length === 0 && !loading ? /*#__PURE__*/_jsx(SCAGSNoModelsAvailable, {
236
+ children: t('generalSection.noModelsAvailable')
237
+ }) : availableAgentModels.map(function (model) {
238
+ var _formValues$aiModel2, _formValues$aiModel3;
239
+ return /*#__PURE__*/_jsxs(SCAGSOption, {
240
+ value: model.id,
241
+ isSelected: model.id === (formValues === null || formValues === void 0 || (_formValues$aiModel2 = formValues.aiModel) === null || _formValues$aiModel2 === void 0 ? void 0 : _formValues$aiModel2.id),
242
+ onClick: function onClick(event) {
243
+ return handleSelectModel(model, event);
244
+ },
245
+ "data-selector-option": true,
246
+ children: [/*#__PURE__*/_jsx(SCAGSOptionLabel, {
247
+ isSelected: model.id === (formValues === null || formValues === void 0 || (_formValues$aiModel3 = formValues.aiModel) === null || _formValues$aiModel3 === void 0 ? void 0 : _formValues$aiModel3.id),
248
+ children: model.display_name
249
+ }), model.keyword && /*#__PURE__*/_jsx(SCAGSOptionDescription, {
250
+ children: model.keyword
251
+ })]
252
+ }, model.id);
253
+ })
254
+ })
255
+ }), document.body);
256
+ };
257
+ return /*#__PURE__*/_jsxs(SCAGSWrapper, {
258
+ openModalAiModel: openModalAiModel,
259
+ children: [/*#__PURE__*/_jsxs(SCAGSWrapperHeader, {
260
+ $index: 0,
261
+ children: [/*#__PURE__*/_jsxs(SCAGSWrapperHeaderTitle, {
262
+ children: [/*#__PURE__*/_jsx("span", {
263
+ children: t('generalSection.generalSettings')
264
+ }), /*#__PURE__*/_jsx(SCAGSWrapperHeaderTitleRequired, {
265
+ children: t('generalSection.requiredFieldsLabel')
266
+ })]
267
+ }), /*#__PURE__*/_jsx(SCAGSWrapperHeaderInfo, {
268
+ children: t('generalSection.infoLabel')
269
+ })]
270
+ }), 'created_by' in values.general && values.general.created_by && /*#__PURE__*/_jsx(Tooltip, {
271
+ zIndex: tooltipZIndex,
272
+ title: (_values$general$creat = values.general.created_by) !== null && _values$general$creat !== void 0 && _values$general$creat.is_deleted ? t('generalSection.createdByTooltipDeleted') : t('generalSection.createdByTooltip'),
273
+ children: /*#__PURE__*/_jsxs(SCAGSWrapperHeaderCreatedByText, {
274
+ children: [t('generalSection.createdBy'), ' ', /*#__PURE__*/_jsx(SCAGSWrapperHeaderCreatedByTextName, {
275
+ children: (_values$general$creat2 = values.general.created_by) === null || _values$general$creat2 === void 0 ? void 0 : _values$general$creat2.name
276
+ })]
277
+ })
278
+ }), /*#__PURE__*/_jsxs(SCAGSGeneralCard, {
279
+ $index: 1,
280
+ children: [/*#__PURE__*/_jsxs(SCAGSWrapperContent, {
281
+ children: [/*#__PURE__*/_jsx(SCAGSWrapperEmoji, {
282
+ children: /*#__PURE__*/_jsx(ButtonEmoji, {
283
+ portalId: EMOJI_PORTAL_ID,
284
+ onSelect: handleSelectEmoji,
285
+ renderComponent: function renderComponent(a) {
286
+ return /*#__PURE__*/_jsx(SCAGSButtonEmoji, {
287
+ ref: a.iconRef,
288
+ type: "button",
289
+ onClick: a.handleOpenSuggestionList,
290
+ id: "abm-general-emoji-button",
291
+ children: /*#__PURE__*/_jsxs(SCAGSWrapperEmojiContent, {
292
+ children: [/*#__PURE__*/_jsx(SCAGSWrapperEmojiIcon, {
293
+ children: formValues.emoji || /*#__PURE__*/_jsx(AgentMaiaIcon, {})
294
+ }), /*#__PURE__*/_jsx(SCAGSWrapperAddIcon, {
295
+ children: /*#__PURE__*/_jsx(Plus, {
296
+ width: 20,
297
+ height: 20,
298
+ color: "rgba(135, 64, 191, 1)"
299
+ })
300
+ })]
301
+ })
302
+ });
303
+ },
304
+ companyId: user.company_id.toString()
305
+ })
306
+ }), /*#__PURE__*/_jsx(SCAGSFieldSurface, {
307
+ children: /*#__PURE__*/_jsx(CustomInput, {
308
+ label: "".concat(t('generalSection.name'), " * (").concat(values.general.name.length || 0, "-").concat(validationFieldsRules.name, ")"),
309
+ placeholder: t('generalSection.namePlaceholder'),
310
+ errorMessage: t('generalSection.error.maxCaracterName'),
311
+ value: formValues === null || formValues === void 0 ? void 0 : formValues.name,
312
+ onChange: handleSetGeneralValues,
313
+ inputKey: "name",
314
+ handleFocus: handleFocus,
315
+ handleBlur: handleBlur,
316
+ focusedField: focusedField,
317
+ maxLength: validationFieldsRules.name,
318
+ isTrimmed: true
319
+ })
320
+ })]
321
+ }), /*#__PURE__*/_jsxs(SCAGSWrapperOnboarding, {
322
+ children: [/*#__PURE__*/_jsx(SCAGSFieldSurface, {
323
+ children: /*#__PURE__*/_jsx(CustomTextArea, {
324
+ label: "".concat(t('generalSection.initialPrompt'), " * (").concat(((_values$general$userP = values.general.userPrompt) === null || _values$general$userP === void 0 ? void 0 : _values$general$userP.length) || 0, "-").concat(validationFieldsRules.userPrompt, ")"),
325
+ value: formValues === null || formValues === void 0 ? void 0 : formValues.userPrompt,
326
+ placeholder: t('generalSection.initialPromptPlaceholder'),
327
+ handleChange: handleSetGeneralValues,
328
+ handleFocus: handleFocus,
329
+ handleBlur: handleBlur,
330
+ focusedField: focusedField,
331
+ inputKey: "userPrompt",
332
+ maxLength: validationFieldsRules.userPrompt,
333
+ errorMessage: t('generalSection.error.maxCaracterInitialPrompt'),
334
+ customHeight: 170,
335
+ isTrimmed: true
336
+ })
337
+ }), /*#__PURE__*/_jsxs(SCAGSWrapperOnboardingContent, {
338
+ onClick: function onClick() {
339
+ return handleOnboardingNavigation('howToWritePrompt');
340
+ },
341
+ children: [/*#__PURE__*/_jsx(SCAGSWrapperOnboardingText, {
342
+ children: t('generalSection.howToWritePrompt')
343
+ }), ' ', /*#__PURE__*/_jsx(Open, {
344
+ width: 12,
345
+ height: 12,
346
+ color: "#006faf"
347
+ })]
348
+ })]
349
+ }), /*#__PURE__*/_jsxs(SCAGSWrapperOnboarding, {
350
+ children: [/*#__PURE__*/_jsx(SCAGSWrapperSelector, {
351
+ ref: selectorRef,
352
+ "data-selector-modal": true,
353
+ children: /*#__PURE__*/_jsx(SCAGSFieldSurface, {
354
+ children: /*#__PURE__*/_jsx(CUSelect, {
355
+ title: t('generalSection.modelAiLabel'),
356
+ placeholder: loading ? 'Cargando modelos...' : 'Seleccionar modelo',
357
+ endIcon: /*#__PURE__*/_jsx(ChevronDown, {
358
+ width: "16px",
359
+ height: "16px",
360
+ color: loading ? '#bfbfbf' : '#999999'
361
+ }),
362
+ handleClickAction: handleOpenModalAiModel,
363
+ value: formValues === null || formValues === void 0 || (_formValues$aiModel4 = formValues.aiModel) === null || _formValues$aiModel4 === void 0 ? void 0 : _formValues$aiModel4.display_name,
364
+ disable: loading,
365
+ open: openModalAiModel,
366
+ children: /*#__PURE__*/_jsx("span", {
367
+ hidden: true,
368
+ "aria-hidden": true
369
+ })
370
+ })
371
+ })
372
+ }), /*#__PURE__*/_jsxs(SCAGSWrapperOnboardingContent, {
373
+ onClick: function onClick() {
374
+ return handleOnboardingNavigation('whatIsModelAi');
375
+ },
376
+ children: [/*#__PURE__*/_jsx(SCAGSWrapperOnboardingText, {
377
+ children: t('generalSection.whatIsModelAi')
378
+ }), ' ', /*#__PURE__*/_jsx(Open, {
379
+ width: 12,
380
+ height: 12,
381
+ color: "#006faf"
382
+ })]
383
+ })]
384
+ })]
385
+ }), /*#__PURE__*/_jsxs(SCAGSOptionalFields, {
386
+ $index: 2,
387
+ children: [/*#__PURE__*/_jsx(SCAGSOptionalLabel, {
388
+ children: t('generalSection.optionalLabel')
389
+ }), /*#__PURE__*/_jsx(CustomTextArea, {
390
+ value: formValues === null || formValues === void 0 ? void 0 : formValues.introduction,
391
+ placeholder: t('generalSection.introductionPlaceholder'),
392
+ handleChange: handleSetGeneralValues,
393
+ handleFocus: handleFocus,
394
+ handleBlur: handleBlur,
395
+ focusedField: focusedField,
396
+ inputKey: "introduction",
397
+ label: "".concat(t('generalSection.introduction'), " (").concat(((_values$general$intro = values.general.introduction) === null || _values$general$intro === void 0 ? void 0 : _values$general$intro.length) || 0, "-").concat(validationFieldsRules.introduction, ")"),
398
+ errorMessage: t('generalSection.error.maxCaracterIntroduction'),
399
+ maxLength: validationFieldsRules.introduction
400
+ }), /*#__PURE__*/_jsx(CustomInput, {
401
+ label: "".concat(t('generalSection.inputPlaceholderTitle'), " (").concat(((_values$general$input = values.general.inputPlaceholder) === null || _values$general$input === void 0 ? void 0 : _values$general$input.length) || 0, "-").concat(validationFieldsRules.inputPlaceholder, ")"),
402
+ placeholder: t('generalSection.inputPlaceholder'),
403
+ inputKey: "inputPlaceholder",
404
+ errorMessage: t('generalSection.error.maxInputPlaceholder'),
405
+ value: formValues === null || formValues === void 0 ? void 0 : formValues.inputPlaceholder,
406
+ onChange: handleSetGeneralValues,
407
+ handleFocus: handleFocus,
408
+ handleBlur: handleBlur,
409
+ focusedField: focusedField,
410
+ maxLength: validationFieldsRules.inputPlaceholder
411
+ })]
412
+ }), renderModelDropdown()]
413
+ });
414
+ };
415
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiY3JlYXRlUG9ydGFsIiwiUGx1cyIsIkNoZXZyb25Eb3duIiwiT3BlbiIsIkNVU2VsZWN0IiwiQnV0dG9uRW1vamkiLCJ1c2VUcmFuc2xhdGlvbiIsIlRvb2x0aXAiLCJBZ2VudE1haWFJY29uIiwiQ3VzdG9tSW5wdXQiLCJTQ0FHU1dyYXBwZXJTZWxlY3RvciIsIlNDQUdTU2VsZWN0b3JNb2RhbCIsIlNDQUdTT3B0aW9uIiwiU0NBR1NPcHRpb25MYWJlbCIsIlNDQUdTT3B0aW9uRGVzY3JpcHRpb24iLCJTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50IiwiU0NBR1NXcmFwcGVyQ29udGVudCIsIlNDQUdTV3JhcHBlckVtb2ppIiwiU0NBR1NXcmFwcGVyQWRkSWNvbiIsIlNDQUdTQnV0dG9uRW1vamkiLCJTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQiLCJTQ0FHU1dyYXBwZXJFbW9qaUljb24iLCJTQ0FHU1dyYXBwZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZSIsIlNDQUdTV3JhcHBlckhlYWRlckluZm8iLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nIiwiU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQiLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dCIsIlNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQiLCJTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQiLCJTQ0FHU0dlbmVyYWxDYXJkIiwiU0NBR1NGaWVsZFN1cmZhY2UiLCJTQ0FHU05vTW9kZWxzQXZhaWxhYmxlIiwiU0NBR1NPcHRpb25hbEZpZWxkcyIsIlNDQUdTT3B0aW9uYWxMYWJlbCIsIkN1c3RvbVRleHRBcmVhIiwidXNlVXNlciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlT25ib2FyZGluZ05hdmlnYXRpb24iLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsInZhbGlkYXRpb25GaWVsZHNSdWxlcyIsIm5hbWUiLCJ1c2VyUHJvbXB0IiwiaW5wdXRQbGFjZWhvbGRlciIsImludHJvZHVjdGlvbiIsIk1PREVMX09QVElPTl9IRUlHSFQiLCJNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUIiwiTU9ERUxfRFJPUERPV05fR0FQIiwicmVzb2x2ZURyb3Bkb3duUG9zaXRpb24iLCJhbmNob3IiLCJkcm9wZG93bkhlaWdodCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzcGFjZUJlbG93Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJzcGFjZUFib3ZlIiwidG9wIiwicGxhY2VtZW50IiwibGVmdCIsIndpZHRoIiwiRU1PSklfUE9SVEFMX0lEIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0IiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0MiIsIl92YWx1ZXMkZ2VuZXJhbCR1c2VyUCIsIl9mb3JtVmFsdWVzJGFpTW9kZWw0IiwiX3ZhbHVlcyRnZW5lcmFsJGludHJvIiwiX3ZhbHVlcyRnZW5lcmFsJGlucHV0IiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJhZ2VudE1vZGVscyIsImxvYWRpbmciLCJ0b29sdGlwWkluZGV4IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VPbmJvYXJkaW5nTmF2aWdhdCIsImhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiZW1vamlQb3J0YWxaSW5kZXgiLCJtb2RlbERyb3Bkb3duWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwib3Blbk1vZGFsQWlNb2RlbCIsInNldE9wZW5Nb2RhbEFpTW9kZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3Bkb3duUG9zaXRpb24iLCJzZXREcm9wZG93blBvc2l0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJmb2N1c2VkRmllbGQiLCJzZXRGb2N1c2VkRmllbGQiLCJzZWxlY3RvclJlZiIsIl91c2VTdGF0ZTciLCJnZW5lcmFsIiwiYWlNb2RlbCIsImVtb2ppIiwiX3VzZVN0YXRlOCIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiYXZhaWxhYmxlQWdlbnRNb2RlbHMiLCJmaWx0ZXIiLCJtb2RlbCIsImlzX2RlcHJlY2F0ZWQiLCJNYXRoIiwibWluIiwibGVuZ3RoIiwidXBkYXRlRHJvcGRvd25Qb3NpdGlvbiIsImN1cnJlbnQiLCJoYW5kbGVPcGVuTW9kYWxBaU1vZGVsIiwic2VsZWN0TW9kZWwiLCJwcmV2IiwiaGFuZGxlU2VsZWN0TW9kZWwiLCJldmVudCIsIl9mb3JtVmFsdWVzJGFpTW9kZWwiLCJzdG9wUHJvcGFnYXRpb24iLCJpZCIsImNob29zZU1vZGVsIiwib3B0aW9uIiwiZGlzcGxheV9uYW1lIiwiX29iamVjdFNwcmVhZCIsImtleSIsInZhbHVlIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiaXNJbk1vZGFsIiwiY2xvc2VzdCIsImlzSW5PcHRpb24iLCJoYW5kbGVLZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwiYm9keSIsImFwcGVuZENoaWxkIiwiekluZGV4IiwiU3RyaW5nIiwiX2NvbnRhaW5lciIsInBhcmVudE5vZGUiLCJoYXNDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGQiLCJoYW5kbGVTZXRHZW5lcmFsVmFsdWVzIiwiaGFuZGxlU2VsZWN0RW1vamkiLCJoYW5kbGVGb2N1cyIsImZpZWxkTmFtZSIsImhhbmRsZUJsdXIiLCJyZW5kZXJNb2RlbERyb3Bkb3duIiwiJGxlZnQiLCIkd2lkdGgiLCIkdG9wIiwiJGJvdHRvbSIsIiR6SW5kZXgiLCIkcGxhY2VtZW50IiwiY2hpbGRyZW4iLCJtYXAiLCJfZm9ybVZhbHVlcyRhaU1vZGVsMiIsIl9mb3JtVmFsdWVzJGFpTW9kZWwzIiwiaXNTZWxlY3RlZCIsIm9uQ2xpY2siLCJrZXl3b3JkIiwiJGluZGV4IiwiY3JlYXRlZF9ieSIsInRpdGxlIiwiaXNfZGVsZXRlZCIsInBvcnRhbElkIiwib25TZWxlY3QiLCJyZW5kZXJDb21wb25lbnQiLCJhIiwicmVmIiwiaWNvblJlZiIsInR5cGUiLCJoYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3QiLCJoZWlnaHQiLCJjb2xvciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ0b1N0cmluZyIsImxhYmVsIiwiY29uY2F0IiwicGxhY2Vob2xkZXIiLCJlcnJvck1lc3NhZ2UiLCJvbkNoYW5nZSIsImlucHV0S2V5IiwibWF4TGVuZ3RoIiwiaXNUcmltbWVkIiwiaGFuZGxlQ2hhbmdlIiwiY3VzdG9tSGVpZ2h0IiwiZW5kSWNvbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiZGlzYWJsZSIsIm9wZW4iLCJoaWRkZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1HZW5lcmFsU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgQnV0dG9uRW1vamkgfSBmcm9tICdAcHJvamVjdGNvci9lbW9qaS1yZWFjdGlvbidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHR5cGUgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0FnZW50TWFpYUljb24nXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uLy4uL2F0b21zL0lucHV0J1xuaW1wb3J0IHtcbiAgU0NBR1NXcmFwcGVyU2VsZWN0b3IsXG4gIFNDQUdTU2VsZWN0b3JNb2RhbCxcbiAgU0NBR1NPcHRpb24sXG4gIFNDQUdTT3B0aW9uTGFiZWwsXG4gIFNDQUdTT3B0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUdTU2VsZWN0b3JNb2RhbENvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppLFxuICBTQ0FHU1dyYXBwZXJBZGRJY29uLFxuICBTQ0FHU0J1dHRvbkVtb2ppLFxuICBTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppSWNvbixcbiAgU0NBR1NXcmFwcGVyLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUdTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCxcbiAgU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkLFxuICBTQ0FHU0dlbmVyYWxDYXJkLFxuICBTQ0FHU0ZpZWxkU3VyZmFjZSxcbiAgU0NBR1NOb01vZGVsc0F2YWlsYWJsZSxcbiAgU0NBR1NPcHRpb25hbEZpZWxkcyxcbiAgU0NBR1NPcHRpb25hbExhYmVsLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWEgfSBmcm9tICcuLi8uLi9hdG9tcy9UZXh0QXJlYS9DdXN0b21UZXh0QXJlYSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5jb25zdCB2YWxpZGF0aW9uRmllbGRzUnVsZXMgPSB7XG4gIG5hbWU6IDE1MCxcbiAgdXNlclByb21wdDogNTAwMCxcbiAgaW5wdXRQbGFjZWhvbGRlcjogMTAwLFxuICBpbnRyb2R1Y3Rpb246IDQwMCxcbn1cblxuY29uc3QgTU9ERUxfT1BUSU9OX0hFSUdIVCA9IDU4XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUID0gMjQ1XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9HQVAgPSA0XG5cbnR5cGUgRHJvcGRvd25QbGFjZW1lbnQgPSAndG9wJyB8ICdib3R0b20nXG5cbnR5cGUgRHJvcGRvd25Qb3NpdGlvbiA9IHtcbiAgbGVmdDogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgdG9wPzogbnVtYmVyXG4gIGJvdHRvbT86IG51bWJlclxuICBwbGFjZW1lbnQ6IERyb3Bkb3duUGxhY2VtZW50XG59XG5cbmNvbnN0IHJlc29sdmVEcm9wZG93blBvc2l0aW9uID0gKGFuY2hvcjogSFRNTEVsZW1lbnQsIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBEcm9wZG93blBvc2l0aW9uID0+IHtcbiAgY29uc3QgcmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG4gIGNvbnN0IHBsYWNlbWVudDogRHJvcGRvd25QbGFjZW1lbnQgPSBzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0IHx8IHNwYWNlQmVsb3cgPj0gc3BhY2VBYm92ZSA/ICdib3R0b20nIDogJ3RvcCdcblxuICBpZiAocGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgIHJldHVybiB7XG4gICAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgIHRvcDogcmVjdC5ib3R0b20gKyBNT0RFTF9EUk9QRE9XTl9HQVAsXG4gICAgICBwbGFjZW1lbnQsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LnRvcCArIE1PREVMX0RST1BET1dOX0dBUCxcbiAgICBwbGFjZW1lbnQsXG4gIH1cbn1cblxuLy8gRWwgcGlja2VyIHNlIHBvcnRlYSBhIHVuIGNvbnRlbmVkb3IgcHJvcGlvIGEgbml2ZWwgZGUgYm9keSBjb24gcG9zaXRpb246Zml4ZWRcbi8vIGVuIGVsIG9yaWdlbiBkZWwgdmlld3BvcnQsIHBhcmEgcXVlIGVsIHBvc2l0aW9uOmFic29sdXRlIHF1ZSBhcGxpY2EgbGEgbGlicmVyw61hXG4vLyBjb2luY2lkYSBjb24gbGFzIGNvb3JkZW5hZGFzIGRlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCAoaW5tdW5lIGFsIHNjcm9sbCkuXG5jb25zdCBFTU9KSV9QT1JUQUxfSUQgPSAnYWJtLWdlbmVyYWwtZW1vamktcG9ydGFsJ1xuXG5leHBvcnQgY29uc3QgQWJtR2VuZXJhbFNlY3Rpb24gPSAoe1xuICB2YWx1ZXMsXG4gIGhhbmRsZVNldEFnZW50VmFsdWVzLFxuICBhZ2VudE1vZGVscyxcbiAgbG9hZGluZyxcbiAgdG9vbHRpcFpJbmRleCxcbn06IHtcbiAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW11cbiAgbG9hZGluZzogYm9vbGVhblxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oWydhYm1fYWdlbnRfc2VjdGlvbiddKVxuICBjb25zdCB7IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIH0gPSB1c2VPbmJvYXJkaW5nTmF2aWdhdGlvbigpXG4gIGNvbnN0IGVtb2ppUG9ydGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBtb2RlbERyb3Bkb3duWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBbb3Blbk1vZGFsQWlNb2RlbCwgc2V0T3Blbk1vZGFsQWlNb2RlbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Ryb3Bkb3duUG9zaXRpb24sIHNldERyb3Bkb3duUG9zaXRpb25dID0gdXNlU3RhdGU8RHJvcGRvd25Qb3NpdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtmb2N1c2VkRmllbGQsIHNldEZvY3VzZWRGaWVsZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBzZWxlY3RvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBbZm9ybVZhbHVlcywgc2V0Rm9ybVZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgYWlNb2RlbDogQWdlbnRNb2RlbCB8IG51bGxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgICBpbnRyb2R1Y3Rpb246IHN0cmluZ1xuICAgIHVzZXJQcm9tcHQ6IHN0cmluZ1xuICAgIGVtb2ppOiBzdHJpbmdcbiAgfT4oe1xuICAgIG5hbWU6IHZhbHVlcy5nZW5lcmFsLm5hbWUgfHwgJycsXG4gICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiB2YWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyIHx8ICcnLFxuICAgIGludHJvZHVjdGlvbjogdmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgZW1vamk6IHZhbHVlcy5nZW5lcmFsLmVtb2ppIHx8ICcnLFxuICB9KVxuXG4gIGNvbnN0IGF2YWlsYWJsZUFnZW50TW9kZWxzID0gdXNlTWVtbygoKSA9PiBhZ2VudE1vZGVscy5maWx0ZXIobW9kZWwgPT4gIW1vZGVsLmlzX2RlcHJlY2F0ZWQpLCBbYWdlbnRNb2RlbHNdKVxuXG4gIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBNYXRoLm1pbihhdmFpbGFibGVBZ2VudE1vZGVscy5sZW5ndGggKiBNT0RFTF9PUFRJT05fSEVJR0hUICsgMiwgTU9ERUxfRFJPUERPV05fTUFYX0hFSUdIVCksXG4gICAgW2F2YWlsYWJsZUFnZW50TW9kZWxzLmxlbmd0aF1cbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZURyb3Bkb3duUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RvclJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBzZXREcm9wZG93blBvc2l0aW9uKHJlc29sdmVEcm9wZG93blBvc2l0aW9uKHNlbGVjdG9yUmVmLmN1cnJlbnQsIGRyb3Bkb3duSGVpZ2h0KSlcbiAgfSwgW2Ryb3Bkb3duSGVpZ2h0XSlcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWxBaU1vZGVsID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5zZWxlY3RNb2RlbClcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgIHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKVxuICAgIH1cbiAgICBzZXRPcGVuTW9kYWxBaU1vZGVsKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RNb2RlbCA9IChtb2RlbDogQWdlbnRNb2RlbCwgZXZlbnQ/OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgICBpZiAobW9kZWwuaWQgIT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2hvb3NlTW9kZWwsIHsgb3B0aW9uOiBtb2RlbC5kaXNwbGF5X25hbWUgfSlcbiAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBhaU1vZGVsOiBtb2RlbCxcbiAgICAgIH0pKVxuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXk6ICdhaU1vZGVsJywgdmFsdWU6IG1vZGVsIH0pXG4gICAgfVxuICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmIChvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgICBjb25zdCBpc0luTW9kYWwgPSB0YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2VsZWN0b3ItbW9kYWxdJylcbiAgICAgICAgY29uc3QgaXNJbk9wdGlvbiA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWxlY3Rvci1vcHRpb25dJylcblxuICAgICAgICBpZiAoIWlzSW5Nb2RhbCAmJiAhaXNJbk9wdGlvbikge1xuICAgICAgICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiBvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3Blbk1vZGFsQWlNb2RlbCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbb3Blbk1vZGFsQWlNb2RlbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB1cGRhdGVEcm9wZG93blBvc2l0aW9uKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICAvLyBjYXB0dXJlOiBlbCBBQk0gc2Nyb2xsZWEgZW4gY29udGVuZWRvcmVzIGludGVybm9zLCBubyBlbiB3aW5kb3dcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtvcGVuTW9kYWxBaU1vZGVsLCB1cGRhdGVEcm9wZG93blBvc2l0aW9uXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChFTU9KSV9QT1JUQUxfSUQpXG4gICAgY29uc3QgY3JlYXRlZCA9ICFjb250YWluZXJcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICAgIGNvbnRhaW5lci5pZCA9IEVNT0pJX1BPUlRBTF9JRFxuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLnRvcCA9ICcwJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnMCdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKVxuICAgIH1cbiAgICBjb250YWluZXIuc3R5bGUuekluZGV4ID0gU3RyaW5nKGVtb2ppUG9ydGFsWkluZGV4KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY3JlYXRlZCAmJiBjb250YWluZXI/LnBhcmVudE5vZGUgJiYgIWNvbnRhaW5lci5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2Vtb2ppUG9ydGFsWkluZGV4XSlcblxuICBjb25zdCBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzID0gKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXksIHZhbHVlIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RFbW9qaSA9IGVtb2ppID0+IHtcbiAgICBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzKGVtb2ppLmVtb2ppLCAnZW1vamknKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQoZmllbGROYW1lKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Rm9ybVZhbHVlcyh7XG4gICAgICBuYW1lOiB2YWx1ZXMuZ2VuZXJhbC5uYW1lIHx8ICcnLFxuICAgICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgICBpbnRyb2R1Y3Rpb246IHZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiB8fCAnJyxcbiAgICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgICBlbW9qaTogdmFsdWVzLmdlbmVyYWwuZW1vamkgfHwgJycsXG4gICAgfSlcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsXSlcblxuICBjb25zdCByZW5kZXJNb2RlbERyb3Bkb3duID0gKCkgPT4ge1xuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCB8fCAhZHJvcGRvd25Qb3NpdGlvbikgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsXG4gICAgICAgIGRhdGEtc2VsZWN0b3ItbW9kYWxcbiAgICAgICAgJGxlZnQ9e2Ryb3Bkb3duUG9zaXRpb24ubGVmdH1cbiAgICAgICAgJHdpZHRoPXtkcm9wZG93blBvc2l0aW9uLndpZHRofVxuICAgICAgICAkdG9wPXtkcm9wZG93blBvc2l0aW9uLnRvcH1cbiAgICAgICAgJGJvdHRvbT17ZHJvcGRvd25Qb3NpdGlvbi5ib3R0b219XG4gICAgICAgICR6SW5kZXg9e21vZGVsRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICRwbGFjZW1lbnQ9e2Ryb3Bkb3duUG9zaXRpb24ucGxhY2VtZW50fVxuICAgICAgPlxuICAgICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgICAgICB7YXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoID09PSAwICYmICFsb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNDQUdTTm9Nb2RlbHNBdmFpbGFibGU+e3QoJ2dlbmVyYWxTZWN0aW9uLm5vTW9kZWxzQXZhaWxhYmxlJyl9PC9TQ0FHU05vTW9kZWxzQXZhaWxhYmxlPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBhdmFpbGFibGVBZ2VudE1vZGVscy5tYXAobW9kZWwgPT4gKFxuICAgICAgICAgICAgICA8U0NBR1NPcHRpb25cbiAgICAgICAgICAgICAgICBrZXk9e21vZGVsLmlkfVxuICAgICAgICAgICAgICAgIHZhbHVlPXttb2RlbC5pZH1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXttb2RlbC5pZCA9PT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlU2VsZWN0TW9kZWwobW9kZWwsIGV2ZW50KX1cbiAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdG9yLW9wdGlvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQUdTT3B0aW9uTGFiZWwgaXNTZWxlY3RlZD17bW9kZWwuaWQgPT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkfT5cbiAgICAgICAgICAgICAgICAgIHttb2RlbC5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgPC9TQ0FHU09wdGlvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHttb2RlbC5rZXl3b3JkICYmIDxTQ0FHU09wdGlvbkRlc2NyaXB0aW9uPnttb2RlbC5rZXl3b3JkfTwvU0NBR1NPcHRpb25EZXNjcmlwdGlvbj59XG4gICAgICAgICAgICAgIDwvU0NBR1NPcHRpb24+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsPixcbiAgICAgIGRvY3VtZW50LmJvZHlcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0FHU1dyYXBwZXIgb3Blbk1vZGFsQWlNb2RlbD17b3Blbk1vZGFsQWlNb2RlbH0+XG4gICAgICA8U0NBR1NXcmFwcGVySGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZT5cbiAgICAgICAgICA8c3Bhbj57dCgnZ2VuZXJhbFNlY3Rpb24uZ2VuZXJhbFNldHRpbmdzJyl9PC9zcGFuPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPnt0KCdnZW5lcmFsU2VjdGlvbi5yZXF1aXJlZEZpZWxkc0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPlxuICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVySW5mbz57dCgnZ2VuZXJhbFNlY3Rpb24uaW5mb0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgPC9TQ0FHU1dyYXBwZXJIZWFkZXI+XG4gICAgICB7J2NyZWF0ZWRfYnknIGluIHZhbHVlcy5nZW5lcmFsICYmIHZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnkgJiYgKFxuICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICB2YWx1ZXMuZ2VuZXJhbC5jcmVhdGVkX2J5Py5pc19kZWxldGVkXG4gICAgICAgICAgICAgID8gdCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKVxuICAgICAgICAgICAgICA6IHQoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAge3QoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVyQ3JlYXRlZEJ5VGV4dE5hbWU+e3ZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQ+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgICA8U0NBR1NHZW5lcmFsQ2FyZCAkaW5kZXg9ezF9PlxuICAgICAgICA8U0NBR1NXcmFwcGVyQ29udGVudD5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyRW1vamk+XG4gICAgICAgICAgICA8QnV0dG9uRW1vamlcbiAgICAgICAgICAgICAgcG9ydGFsSWQ9e0VNT0pJX1BPUlRBTF9JRH1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdEVtb2ppfVxuICAgICAgICAgICAgICByZW5kZXJDb21wb25lbnQ9e2EgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8U0NBR1NCdXR0b25FbW9qaVxuICAgICAgICAgICAgICAgICAgICByZWY9e2EuaWNvblJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2EuaGFuZGxlT3BlblN1Z2dlc3Rpb25MaXN0fVxuICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1nZW5lcmFsLWVtb2ppLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUdTV3JhcHBlckVtb2ppSWNvbj57Zm9ybVZhbHVlcy5lbW9qaSB8fCA8QWdlbnRNYWlhSWNvbiAvPn08L1NDQUdTV3JhcHBlckVtb2ppSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gY29sb3I9XCJyZ2JhKDEzNSwgNjQsIDE5MSwgMSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8L1NDQUdTQnV0dG9uRW1vamk+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjb21wYW55SWQ9e3VzZXIuY29tcGFueV9pZC50b1N0cmluZygpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckVtb2ppPlxuICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgIDxDdXN0b21JbnB1dFxuICAgICAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24ubmFtZScpfSAqICgke3ZhbHVlcy5nZW5lcmFsLm5hbWUubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLm5hbWV9KWB9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlPXt0KCdnZW5lcmFsU2VjdGlvbi5lcnJvci5tYXhDYXJhY3Rlck5hbWUnKX1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/Lm5hbWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cIm5hbWVcIlxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5uYW1lfVxuICAgICAgICAgICAgICBpc1RyaW1tZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgPC9TQ0FHU1dyYXBwZXJDb250ZW50PlxuICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICA8Q3VzdG9tVGV4dEFyZWFcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake3QoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHQnKX0gKiAoJHt2YWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0Py5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMudXNlclByb21wdH0pYH1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LnVzZXJQcm9tcHR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cInVzZXJQcm9tcHRcIlxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy51c2VyUHJvbXB0fVxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW5pdGlhbFByb21wdCcpfVxuICAgICAgICAgICAgICBjdXN0b21IZWlnaHQ9ezE3MH1cbiAgICAgICAgICAgICAgaXNUcmltbWVkXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50IG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCdob3dUb1dyaXRlUHJvbXB0Jyl9PlxuICAgICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0Pnt0KCdnZW5lcmFsU2VjdGlvbi5ob3dUb1dyaXRlUHJvbXB0Jyl9PC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57JyAnfVxuICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMwMDZmYWZcIiAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlclNlbGVjdG9yIHJlZj17c2VsZWN0b3JSZWZ9IGRhdGEtc2VsZWN0b3ItbW9kYWw+XG4gICAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICAgIDxDVVNlbGVjdFxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdnZW5lcmFsU2VjdGlvbi5tb2RlbEFpTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17bG9hZGluZyA/ICdDYXJnYW5kbyBtb2RlbG9zLi4uJyA6ICdTZWxlY2Npb25hciBtb2RlbG8nfVxuICAgICAgICAgICAgICAgIGVuZEljb249ezxDaGV2cm9uRG93biB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgY29sb3I9e2xvYWRpbmcgPyAnI2JmYmZiZicgOiAnIzk5OTk5OSd9IC8+fVxuICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrQWN0aW9uPXtoYW5kbGVPcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5haU1vZGVsPy5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZT17bG9hZGluZ31cbiAgICAgICAgICAgICAgICBvcGVuPXtvcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgey8qIENVU2VsZWN0IGV4aWdlIGNoaWxkcmVuIHBhcmEgaGFiaWxpdGFyIGVsIGNsaWNrOyBlbCBtZW7DuiByZWFsIHZhIHBvciBwb3J0YWwuICovfVxuICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgICAgICA8L0NVU2VsZWN0PlxuICAgICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlclNlbGVjdG9yPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbignd2hhdElzTW9kZWxBaScpfT5cbiAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57dCgnZ2VuZXJhbFNlY3Rpb24ud2hhdElzTW9kZWxBaScpfTwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQ+eycgJ31cbiAgICAgICAgICAgIDxPcGVuIHdpZHRoPXsxMn0gaGVpZ2h0PXsxMn0gY29sb3I9XCIjMDA2ZmFmXCIgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50PlxuICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICA8L1NDQUdTR2VuZXJhbENhcmQ+XG4gICAgICA8U0NBR1NPcHRpb25hbEZpZWxkcyAkaW5kZXg9ezJ9PlxuICAgICAgICA8U0NBR1NPcHRpb25hbExhYmVsPnt0KCdnZW5lcmFsU2VjdGlvbi5vcHRpb25hbExhYmVsJyl9PC9TQ0FHU09wdGlvbmFsTGFiZWw+XG4gICAgICAgIDxDdXN0b21UZXh0QXJlYVxuICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5pbnRyb2R1Y3Rpb259XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmludHJvZHVjdGlvblBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICBoYW5kbGVCbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgIGlucHV0S2V5PVwiaW50cm9kdWN0aW9uXCJcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW50cm9kdWN0aW9uJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbj8ubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmludHJvZHVjdGlvbn0pYH1cbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW50cm9kdWN0aW9uJyl9XG4gICAgICAgICAgbWF4TGVuZ3RoPXt2YWxpZGF0aW9uRmllbGRzUnVsZXMuaW50cm9kdWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8Q3VzdG9tSW5wdXRcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlclRpdGxlJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXI/Lmxlbmd0aCB8fCAwfS0ke3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfSlgfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaW5wdXRLZXk9XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heElucHV0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8uaW5wdXRQbGFjZWhvbGRlcn1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU2V0R2VuZXJhbFZhbHVlc31cbiAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICBmb2N1c2VkRmllbGQ9e2ZvY3VzZWRGaWVsZH1cbiAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgPC9TQ0FHU09wdGlvbmFsRmllbGRzPlxuICAgICAge3JlbmRlck1vZGVsRHJvcGRvd24oKX1cbiAgICA8L1NDQUdTV3JhcHBlcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDaEYsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsUUFB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