@projectcor/maia-components 2.11.110-1 → 2.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (668) hide show
  1. package/README.md +2 -0
  2. package/package.json +3 -3
  3. package/CHANGELOG.md +0 -642
  4. package/lib/App.js +0 -55
  5. package/lib/components/atoms/ActionableButton.js +0 -60
  6. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +0 -89
  7. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +0 -21
  8. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +0 -9
  9. package/lib/components/atoms/AgentActivityIndicator/index.js +0 -2
  10. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +0 -209
  11. package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +0 -93
  12. package/lib/components/atoms/ApprovalBox/index.js +0 -2
  13. package/lib/components/atoms/AttachmentCard/AttachmentCard.js +0 -218
  14. package/lib/components/atoms/AttachmentCard/AttachmentCard.styles.js +0 -52
  15. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +0 -448
  16. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.styles.js +0 -58
  17. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +0 -55
  18. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.styles.js +0 -14
  19. package/lib/components/atoms/AttachmentCard/index.js +0 -4
  20. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +0 -442
  21. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +0 -119
  22. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +0 -222
  23. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +0 -313
  24. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +0 -128
  25. package/lib/components/atoms/AttachmentPreviewModal/index.js +0 -2
  26. package/lib/components/atoms/Backdrop/Backdrop.js +0 -17
  27. package/lib/components/atoms/Backdrop/Backdrop.styles.js +0 -9
  28. package/lib/components/atoms/Backdrop/index.js +0 -2
  29. package/lib/components/atoms/CardItem.js +0 -7
  30. package/lib/components/atoms/CardMenu/CardMenu.js +0 -131
  31. package/lib/components/atoms/CardMenu/index.js +0 -2
  32. package/lib/components/atoms/CardMenu/styles.js +0 -21
  33. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +0 -77
  34. package/lib/components/atoms/ChatClientSelector/index.js +0 -2
  35. package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +0 -9
  36. package/lib/components/atoms/ChatDisclaimerMessage/index.js +0 -2
  37. package/lib/components/atoms/ChatDisclaimerMessage/styles.js +0 -6
  38. package/lib/components/atoms/Checkbox/Checkbox.js +0 -34
  39. package/lib/components/atoms/Checkbox/index.js +0 -2
  40. package/lib/components/atoms/Checkbox/styles.js +0 -39
  41. package/lib/components/atoms/Chip/Chip.js +0 -150
  42. package/lib/components/atoms/Chip/index.js +0 -2
  43. package/lib/components/atoms/Chip/styles.js +0 -43
  44. package/lib/components/atoms/ChipLlm/ChipLlm.js +0 -45
  45. package/lib/components/atoms/ChipLlm/ChipLlm.style.js +0 -21
  46. package/lib/components/atoms/ChipLlm/index.js +0 -2
  47. package/lib/components/atoms/ChipStatus/ChipStatus.interface.js +0 -2
  48. package/lib/components/atoms/ChipStatus/ChipStatus.js +0 -14
  49. package/lib/components/atoms/ChipStatus/ChipStatus.styles.js +0 -27
  50. package/lib/components/atoms/ChipStatus/index.js +0 -2
  51. package/lib/components/atoms/ClearButton.js +0 -6
  52. package/lib/components/atoms/ClientSelector/ClientSelector.js +0 -146
  53. package/lib/components/atoms/ClientSelector/ClientSelector.styles.js +0 -15
  54. package/lib/components/atoms/ClientSelector/index.js +0 -2
  55. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +0 -38
  56. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +0 -188
  57. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +0 -39
  58. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +0 -445
  59. package/lib/components/atoms/ContextMentionChip/index.js +0 -4
  60. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +0 -533
  61. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +0 -10
  62. package/lib/components/atoms/ContextMentionEditor/index.js +0 -2
  63. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +0 -282
  64. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +0 -148
  65. package/lib/components/atoms/ContextMentionItem/index.js +0 -2
  66. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +0 -290
  67. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +0 -108
  68. package/lib/components/atoms/ContextMentionPopover/index.js +0 -3
  69. package/lib/components/atoms/CopyToClipboard.js +0 -70
  70. package/lib/components/atoms/EditableLabel/EditableLabel.js +0 -110
  71. package/lib/components/atoms/EditableLabel/index.js +0 -2
  72. package/lib/components/atoms/EditableLabel/styles.js +0 -7
  73. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.js +0 -22
  74. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.styles.js +0 -18
  75. package/lib/components/atoms/EmptySearchClients/index.js +0 -2
  76. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.js +0 -19
  77. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.styles.js +0 -15
  78. package/lib/components/atoms/EmptySearchProjects/index.js +0 -2
  79. package/lib/components/atoms/EntitySelector/EntitySelector.js +0 -247
  80. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +0 -38
  81. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +0 -67
  82. package/lib/components/atoms/EntitySelector/index.js +0 -2
  83. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.js +0 -14
  84. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.styles.js +0 -15
  85. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.js +0 -14
  86. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.style.js +0 -15
  87. package/lib/components/atoms/ErrorSearchFaqs/index.js +0 -2
  88. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +0 -18
  89. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.style.js +0 -15
  90. package/lib/components/atoms/ErrorSearchProjects/index.js +0 -2
  91. package/lib/components/atoms/Expand/Expand.js +0 -32
  92. package/lib/components/atoms/Expand/index.js +0 -2
  93. package/lib/components/atoms/Fade/Fade.js +0 -56
  94. package/lib/components/atoms/Fade/index.js +0 -2
  95. package/lib/components/atoms/FeedbackButton/FeedbackButton.js +0 -59
  96. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +0 -14
  97. package/lib/components/atoms/FeedbackButton/index.js +0 -2
  98. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +0 -138
  99. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +0 -44
  100. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +0 -43
  101. package/lib/components/atoms/FrequentlyAskedQuestions/index.js +0 -2
  102. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +0 -122
  103. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +0 -43
  104. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +0 -62
  105. package/lib/components/atoms/FrequentlyUsedActions/index.js +0 -2
  106. package/lib/components/atoms/GoBackButton.js +0 -24
  107. package/lib/components/atoms/HelpButton.js +0 -44
  108. package/lib/components/atoms/IconButton.js +0 -56
  109. package/lib/components/atoms/ImagePreview/ImagePreview.js +0 -96
  110. package/lib/components/atoms/ImagePreview/ImagePreview.styles.js +0 -70
  111. package/lib/components/atoms/Input/CustomInput.interface.js +0 -2
  112. package/lib/components/atoms/Input/CustomInput.js +0 -91
  113. package/lib/components/atoms/Input/CustomInput.styles.js +0 -39
  114. package/lib/components/atoms/Input/index.js +0 -2
  115. package/lib/components/atoms/ListMenuOption/ListMenuOption.js +0 -41
  116. package/lib/components/atoms/ListMenuOption/index.js +0 -2
  117. package/lib/components/atoms/ListMenuOption/styles.js +0 -9
  118. package/lib/components/atoms/Loader.js +0 -41
  119. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.js +0 -11
  120. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.style.js +0 -6
  121. package/lib/components/atoms/LoadingFaqs/index.js +0 -2
  122. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.js +0 -11
  123. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.styles.js +0 -6
  124. package/lib/components/atoms/LoadingSearchClients/index.js +0 -2
  125. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.js +0 -14
  126. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.style.js +0 -10
  127. package/lib/components/atoms/LoadingSearchProjects/index.js +0 -2
  128. package/lib/components/atoms/LoadingText/LoadingText.js +0 -18
  129. package/lib/components/atoms/LoadingText/index.js +0 -2
  130. package/lib/components/atoms/LoadingText/styles.js +0 -7
  131. package/lib/components/atoms/MAIAButton/MAIAButton.js +0 -33
  132. package/lib/components/atoms/MAIAButton/index.js +0 -2
  133. package/lib/components/atoms/MAIAError/MAIAError.js +0 -15
  134. package/lib/components/atoms/MAIAError/index.js +0 -2
  135. package/lib/components/atoms/MAIAInput/MAIAInput.js +0 -1233
  136. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +0 -266
  137. package/lib/components/atoms/MAIAInput/index.js +0 -2
  138. package/lib/components/atoms/MAIAInput/maiaInputLayout.js +0 -25
  139. package/lib/components/atoms/MAIAInput/styles.js +0 -186
  140. package/lib/components/atoms/MAIAMessage/MAIAMessage.interfaces.js +0 -2
  141. package/lib/components/atoms/MAIAMessage/MAIAMessage.js +0 -22
  142. package/lib/components/atoms/MAIAMessage/index.js +0 -2
  143. package/lib/components/atoms/MAIAMessage/styles.js +0 -7
  144. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.config.js +0 -23
  145. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.interfaces.js +0 -2
  146. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.js +0 -51
  147. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.styles.js +0 -26
  148. package/lib/components/atoms/MaiaStreamdown/index.js +0 -2
  149. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.js +0 -18
  150. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +0 -84
  151. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.js +0 -15
  152. package/lib/components/atoms/MaiaWrapper/index.js +0 -3
  153. package/lib/components/atoms/MaiaWrapper/styles.js +0 -21
  154. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.interface.js +0 -2
  155. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.js +0 -84
  156. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +0 -53
  157. package/lib/components/atoms/ModalClientAccess/index.js +0 -2
  158. package/lib/components/atoms/ModalInfo/ModalInfo.js +0 -52
  159. package/lib/components/atoms/ModalInfo/ModalInfoContent.js +0 -7
  160. package/lib/components/atoms/ModalInfo/index.js +0 -3
  161. package/lib/components/atoms/ModalInfo/styles.js +0 -7
  162. package/lib/components/atoms/ModalProject/ModalProject.interface.js +0 -2
  163. package/lib/components/atoms/ModalProject/ModalProject.js +0 -112
  164. package/lib/components/atoms/ModalProject/ModalProject.style.js +0 -59
  165. package/lib/components/atoms/ModalProject/index.js +0 -2
  166. package/lib/components/atoms/NextPageLoader.js +0 -33
  167. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.js +0 -28
  168. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +0 -180
  169. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +0 -34
  170. package/lib/components/atoms/OnboardingModalButton/index.js +0 -3
  171. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +0 -131
  172. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.styles.js +0 -59
  173. package/lib/components/atoms/OptionAccessibility/index.js +0 -2
  174. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +0 -27
  175. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +0 -18
  176. package/lib/components/atoms/OptionCorPermission/index.js +0 -2
  177. package/lib/components/atoms/PrimaryButton.js +0 -31
  178. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +0 -77
  179. package/lib/components/atoms/ProjectSelector/ProjectSelector.styles.js +0 -61
  180. package/lib/components/atoms/ProjectSelector/index.js +0 -2
  181. package/lib/components/atoms/SecondaryButton.js +0 -20
  182. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +0 -20
  183. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +0 -20
  184. package/lib/components/atoms/SessionGeneratingDot/index.js +0 -2
  185. package/lib/components/atoms/Skeleton/Skeleton.js +0 -36
  186. package/lib/components/atoms/Skeleton/index.js +0 -2
  187. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -208
  188. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -77
  189. package/lib/components/atoms/SkillsDropdown/index.js +0 -2
  190. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +0 -16
  191. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +0 -24
  192. package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +0 -18
  193. package/lib/components/atoms/SlashCommandChip/index.js +0 -4
  194. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +0 -210
  195. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +0 -53
  196. package/lib/components/atoms/SlashCommandDropdown/index.js +0 -2
  197. package/lib/components/atoms/Switch/Switch.js +0 -27
  198. package/lib/components/atoms/Switch/Switch.styles.js +0 -22
  199. package/lib/components/atoms/Switch/index.js +0 -2
  200. package/lib/components/atoms/TextArea/CustomTextArea.interface.js +0 -2
  201. package/lib/components/atoms/TextArea/CustomTextArea.js +0 -93
  202. package/lib/components/atoms/TextArea/CustomTextArea.styles.js +0 -25
  203. package/lib/components/atoms/TextArea/TextArea.interfaces.js +0 -2
  204. package/lib/components/atoms/TextArea/TextArea.js +0 -172
  205. package/lib/components/atoms/TextArea/TextArea.styles.js +0 -16
  206. package/lib/components/atoms/TextArea/index.js +0 -2
  207. package/lib/components/atoms/ThirdButton.js +0 -19
  208. package/lib/components/atoms/VideoModal/VideoModal.js +0 -76
  209. package/lib/components/atoms/VideoModal/index.js +0 -2
  210. package/lib/components/atoms/WithAppCfg.js +0 -26
  211. package/lib/components/atoms/WithFeatureValidation.js +0 -23
  212. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.js +0 -9
  213. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.styles.js +0 -6
  214. package/lib/components/atoms/WrapperCenterIcon/index.js +0 -2
  215. package/lib/components/atoms/icons/AIIcon.js +0 -23
  216. package/lib/components/atoms/icons/AacFile.js +0 -39
  217. package/lib/components/atoms/icons/AccessibilityIcon.js +0 -42
  218. package/lib/components/atoms/icons/ActionAssignIcon.js +0 -111
  219. package/lib/components/atoms/icons/ActionCalendarIcon.js +0 -112
  220. package/lib/components/atoms/icons/ActionChargeHoursIcon.js +0 -111
  221. package/lib/components/atoms/icons/ActionChatIcon.js +0 -71
  222. package/lib/components/atoms/icons/ActionCreateIcon.js +0 -91
  223. package/lib/components/atoms/icons/ActionCreateReworkIcon.js +0 -39
  224. package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +0 -37
  225. package/lib/components/atoms/icons/ActionEditIcon.js +0 -39
  226. package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +0 -88
  227. package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +0 -37
  228. package/lib/components/atoms/icons/ActionTimeBackIcon.js +0 -112
  229. package/lib/components/atoms/icons/AgentMaiaIcon.js +0 -31
  230. package/lib/components/atoms/icons/Brain.js +0 -77
  231. package/lib/components/atoms/icons/CorAccessIcon.js +0 -41
  232. package/lib/components/atoms/icons/CorLogo.js +0 -76
  233. package/lib/components/atoms/icons/CsvFile.js +0 -41
  234. package/lib/components/atoms/icons/DocFile.js +0 -41
  235. package/lib/components/atoms/icons/DocxFile.js +0 -41
  236. package/lib/components/atoms/icons/EmptyClientIllustration.js +0 -67
  237. package/lib/components/atoms/icons/EmptyHistory.js +0 -46
  238. package/lib/components/atoms/icons/EmptySearchIllustration.js +0 -37
  239. package/lib/components/atoms/icons/EmptyState.js +0 -84
  240. package/lib/components/atoms/icons/EmptyStateAgents.js +0 -58
  241. package/lib/components/atoms/icons/ErrorIcon.js +0 -14
  242. package/lib/components/atoms/icons/ErrorSearchIllustration.js +0 -52
  243. package/lib/components/atoms/icons/ErrorState.js +0 -51
  244. package/lib/components/atoms/icons/FaqChevronIcon.js +0 -39
  245. package/lib/components/atoms/icons/FaqsIcon.js +0 -51
  246. package/lib/components/atoms/icons/FlacIcon.js +0 -39
  247. package/lib/components/atoms/icons/FolderIcon.js +0 -29
  248. package/lib/components/atoms/icons/HomeIcon.js +0 -30
  249. package/lib/components/atoms/icons/ImageFile.js +0 -46
  250. package/lib/components/atoms/icons/M4aFile.js +0 -39
  251. package/lib/components/atoms/icons/MAIAIcon.js +0 -20
  252. package/lib/components/atoms/icons/MAIAIsologo.js +0 -65
  253. package/lib/components/atoms/icons/MDFile.js +0 -41
  254. package/lib/components/atoms/icons/MaiaChatLayoutFloatingIcon.js +0 -41
  255. package/lib/components/atoms/icons/MaiaChatLayoutFullscreenIcon.js +0 -41
  256. package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +0 -33
  257. package/lib/components/atoms/icons/MaiaChatLayoutSidebarIcon.js +0 -41
  258. package/lib/components/atoms/icons/MaiaInputAddIcon.js +0 -42
  259. package/lib/components/atoms/icons/MaiaInputAttachIcon.js +0 -29
  260. package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +0 -33
  261. package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +0 -35
  262. package/lib/components/atoms/icons/MaiaInputMentionIcon.js +0 -44
  263. package/lib/components/atoms/icons/MaiaInputRobotIcon.js +0 -29
  264. package/lib/components/atoms/icons/MaiaInputSendIcon.js +0 -29
  265. package/lib/components/atoms/icons/MaiaInputSlashIcon.js +0 -29
  266. package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +0 -35
  267. package/lib/components/atoms/icons/MaiaSettingsProject.js +0 -111
  268. package/lib/components/atoms/icons/MaiaSettingsProjectV2.js +0 -193
  269. package/lib/components/atoms/icons/MaiaSparkleIcon.js +0 -75
  270. package/lib/components/atoms/icons/MaiaStoreIcon.js +0 -31
  271. package/lib/components/atoms/icons/Mp3File.js +0 -39
  272. package/lib/components/atoms/icons/Mp4File.js +0 -39
  273. package/lib/components/atoms/icons/MyAgentsNavIcon.js +0 -51
  274. package/lib/components/atoms/icons/NewChat.js +0 -29
  275. package/lib/components/atoms/icons/NotionIcon.js +0 -36
  276. package/lib/components/atoms/icons/OgaFile.js +0 -39
  277. package/lib/components/atoms/icons/OggFile.js +0 -39
  278. package/lib/components/atoms/icons/PdfFile.js +0 -39
  279. package/lib/components/atoms/icons/PlusIcon.js +0 -29
  280. package/lib/components/atoms/icons/PptFile.js +0 -47
  281. package/lib/components/atoms/icons/PptxFile.js +0 -49
  282. package/lib/components/atoms/icons/RetryIcon.js +0 -34
  283. package/lib/components/atoms/icons/SkillCreatedByIcon.js +0 -20
  284. package/lib/components/atoms/icons/SkillIcon.js +0 -30
  285. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
  286. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
  287. package/lib/components/atoms/icons/SkillsNavIcon.js +0 -24
  288. package/lib/components/atoms/icons/SubtaskIcon.js +0 -36
  289. package/lib/components/atoms/icons/TaskLinkIcon.js +0 -27
  290. package/lib/components/atoms/icons/TelescopeIcon.js +0 -60
  291. package/lib/components/atoms/icons/TemplateGradientIcon.js +0 -42
  292. package/lib/components/atoms/icons/TextFile.js +0 -41
  293. package/lib/components/atoms/icons/WavFile.js +0 -39
  294. package/lib/components/atoms/icons/WebmFile.js +0 -50
  295. package/lib/components/atoms/icons/XlsFile.js +0 -42
  296. package/lib/components/atoms/icons/XlsxFile.js +0 -42
  297. package/lib/components/atoms/icons/index.js +0 -54
  298. package/lib/components/atoms/index.js +0 -42
  299. package/lib/components/index.js +0 -11
  300. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.interface.js +0 -2
  301. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +0 -149
  302. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +0 -53
  303. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +0 -415
  304. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +0 -152
  305. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +0 -374
  306. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +0 -106
  307. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +0 -92
  308. package/lib/components/molecules/AbmSection/AbmLoaderFiles.styles.js +0 -57
  309. package/lib/components/molecules/AbmSection/index.js +0 -4
  310. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +0 -52
  311. package/lib/components/molecules/ChatAIClientSelector/index.js +0 -2
  312. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +0 -119
  313. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +0 -187
  314. package/lib/components/molecules/ChatAIContent/ChatAIContent.styles.js +0 -6
  315. package/lib/components/molecules/ChatAIContent/index.js +0 -2
  316. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +0 -241
  317. package/lib/components/molecules/ChatAIHistory/index.js +0 -2
  318. package/lib/components/molecules/ChatAIHistory/styles.js +0 -22
  319. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +0 -649
  320. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +0 -115
  321. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +0 -95
  322. package/lib/components/molecules/ChatAIHome/index.js +0 -2
  323. package/lib/components/molecules/ChatAIHome/styles.js +0 -335
  324. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +0 -137
  325. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +0 -853
  326. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +0 -47
  327. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +0 -37
  328. package/lib/components/molecules/ChatAIMessages/README.md +0 -101
  329. package/lib/components/molecules/ChatAIMessages/index.js +0 -2
  330. package/lib/components/molecules/ChatAIMessages/newStyles.js +0 -131
  331. package/lib/components/molecules/ChatAIMessages/styles.js +0 -94
  332. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +0 -1254
  333. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +0 -58
  334. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +0 -127
  335. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +0 -34
  336. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/index.js +0 -2
  337. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +0 -189
  338. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +0 -26
  339. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/index.js +0 -2
  340. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +0 -453
  341. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +0 -108
  342. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/index.js +0 -2
  343. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +0 -48
  344. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +0 -38
  345. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +0 -2
  346. package/lib/components/molecules/ChatAIModal/constants.js +0 -40
  347. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +0 -16
  348. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +0 -12
  349. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +0 -13
  350. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +0 -3
  351. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +0 -57
  352. package/lib/components/molecules/ChatAIModal/index.js +0 -2
  353. package/lib/components/molecules/ChatAIModal/layout.js +0 -74
  354. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +0 -457
  355. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +0 -218
  356. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +0 -430
  357. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +0 -169
  358. package/lib/components/molecules/ChatAIMySkills/index.js +0 -2
  359. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +0 -48
  360. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.styles.js +0 -49
  361. package/lib/components/molecules/ChatAIProjectSelector/index.js +0 -2
  362. package/lib/components/molecules/ChatFooter/ChatFooter.js +0 -337
  363. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.js +0 -32
  364. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.styles.js +0 -14
  365. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +0 -201
  366. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +0 -51
  367. package/lib/components/molecules/ChatFooter/index.js +0 -2
  368. package/lib/components/molecules/ChatFooter/styles.js +0 -23
  369. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +0 -60
  370. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +0 -6
  371. package/lib/components/molecules/ContextMentionInput/index.js +0 -2
  372. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +0 -118
  373. package/lib/components/molecules/MessageFeedback/index.js +0 -2
  374. package/lib/components/molecules/MessageFeedback/styles.js +0 -14
  375. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.js +0 -127
  376. package/lib/components/molecules/ProjectSummaryChat/index.js +0 -2
  377. package/lib/components/molecules/ProjectSummaryChat/styles.js +0 -8
  378. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.js +0 -152
  379. package/lib/components/molecules/ProjectSummaryConfig/index.js +0 -2
  380. package/lib/components/molecules/ProjectSummaryConfig/styles.js +0 -86
  381. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +0 -49
  382. package/lib/components/molecules/ProjectSummaryContent/index.js +0 -2
  383. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.js +0 -19
  384. package/lib/components/molecules/ProjectSummaryModal/index.js +0 -2
  385. package/lib/components/molecules/ProjectSummaryModal/styles.js +0 -2
  386. package/lib/components/molecules/Sidebar/Sidebar.js +0 -716
  387. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +0 -157
  388. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +0 -48
  389. package/lib/components/molecules/Sidebar/Sidebar.styles.js +0 -75
  390. package/lib/components/molecules/Sidebar/index.js +0 -2
  391. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +0 -1420
  392. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +0 -93
  393. package/lib/components/organisms/AbmAgentModal/index.js +0 -2
  394. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +0 -182
  395. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +0 -34
  396. package/lib/components/organisms/AbmSkillGenerateModal/index.js +0 -2
  397. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +0 -585
  398. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +0 -154
  399. package/lib/components/organisms/AbmSkillModal/index.js +0 -2
  400. package/lib/components/organisms/ChatAI/ChatAI.js +0 -167
  401. package/lib/components/organisms/ChatAI/index.js +0 -2
  402. package/lib/components/organisms/ChatAI/styles.js +0 -7
  403. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +0 -23
  404. package/lib/components/organisms/ClientAIButton/index.js +0 -2
  405. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +0 -86
  406. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +0 -39
  407. package/lib/components/organisms/DeleteAgentModal/index.js +0 -2
  408. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +0 -122
  409. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +0 -47
  410. package/lib/components/organisms/DeleteQuestionModal/index.js +0 -2
  411. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +0 -138
  412. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +0 -69
  413. package/lib/components/organisms/EditQuestionModal/index.js +0 -2
  414. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +0 -113
  415. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +0 -54
  416. package/lib/components/organisms/ModalFileExceeds/index.js +0 -2
  417. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.js +0 -26
  418. package/lib/components/organisms/ProjectAIButton/index.js +0 -2
  419. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +0 -60
  420. package/lib/components/organisms/ProjectSummary/index.js +0 -2
  421. package/lib/components/organisms/ProjectSummary/styles.js +0 -7
  422. package/lib/components/organisms/SnackBar/Snackbar.interface.js +0 -2
  423. package/lib/components/organisms/SnackBar/Snackbar.js +0 -73
  424. package/lib/components/organisms/SnackBar/Snackbar.styles.js +0 -9
  425. package/lib/components/organisms/SnackBar/index.js +0 -2
  426. package/lib/components/organisms/SourcesInformation/SourceItem.js +0 -18
  427. package/lib/components/organisms/SourcesInformation/SourceItem.styles.js +0 -14
  428. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +0 -66
  429. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +0 -27
  430. package/lib/components/organisms/SourcesInformation/index.js +0 -2
  431. package/lib/constants/config.js +0 -10
  432. package/lib/constants/formatExtensions.js +0 -55
  433. package/lib/constants/gqlClient.js +0 -4
  434. package/lib/constants/maiaHourAgentAccess.js +0 -15
  435. package/lib/constants/maiaTaskPanelAccess.js +0 -24
  436. package/lib/constants/maiaTaskPanelOutsideClick.js +0 -9
  437. package/lib/constants/maiaTaskPanelZIndex.js +0 -19
  438. package/lib/constants/permissions/config.js +0 -72
  439. package/lib/constants/permissions/index.js +0 -3
  440. package/lib/constants/permissions/types.js +0 -2
  441. package/lib/constants/permissions/utils.js +0 -18
  442. package/lib/constants/plannerSyncEvents.js +0 -15
  443. package/lib/constants/taskLinkIcon.js +0 -15
  444. package/lib/constants/taskUrls.js +0 -11
  445. package/lib/context/cor-user.js +0 -31
  446. package/lib/context/global-context.js +0 -39
  447. package/lib/dev/DevChatAI.js +0 -101
  448. package/lib/dev/DevContextMentionInput.js +0 -67
  449. package/lib/dev/ProjectSummary.js +0 -9
  450. package/lib/dev/Providers.js +0 -27
  451. package/lib/exports.js +0 -2
  452. package/lib/hooks/README.md +0 -192
  453. package/lib/hooks/index.js +0 -30
  454. package/lib/hooks/useAccessClient/index.js +0 -2
  455. package/lib/hooks/useAccessClient/useAccessClient.js +0 -81
  456. package/lib/hooks/useAgentModel/index.js +0 -2
  457. package/lib/hooks/useAgentModel/useAgentModel.js +0 -62
  458. package/lib/hooks/useAgentModel/useCreateAgent.js +0 -128
  459. package/lib/hooks/useAgentModel/useDeleteAgent.js +0 -88
  460. package/lib/hooks/useAgentModel/useUpdateAgent.js +0 -129
  461. package/lib/hooks/useAgentSuggestions.js +0 -60
  462. package/lib/hooks/useCaretPosition.js +0 -65
  463. package/lib/hooks/useChatManager/index.js +0 -2
  464. package/lib/hooks/useChatManager/useChatManager.interface.js +0 -2
  465. package/lib/hooks/useChatManager/useChatManager.js +0 -1782
  466. package/lib/hooks/useChatMessages/index.js +0 -2
  467. package/lib/hooks/useChatMessages/useChatMessages.interface.js +0 -2
  468. package/lib/hooks/useChatMessages/useChatMessages.js +0 -722
  469. package/lib/hooks/useChats/index.js +0 -2
  470. package/lib/hooks/useChats/useChats.interfaces.js +0 -2
  471. package/lib/hooks/useChats/useChats.js +0 -187
  472. package/lib/hooks/useClientSearch.js +0 -163
  473. package/lib/hooks/useContextMentions.js +0 -500
  474. package/lib/hooks/useContextPinPopover.js +0 -228
  475. package/lib/hooks/useDebounce.js +0 -18
  476. package/lib/hooks/useEntitySearch.js +0 -1053
  477. package/lib/hooks/useEvent.js +0 -93
  478. package/lib/hooks/useFrequentlyAskedQuestions.js +0 -150
  479. package/lib/hooks/useFrequentlyUsedActions.js +0 -94
  480. package/lib/hooks/useKnowledge/deleteKnowledge.js +0 -69
  481. package/lib/hooks/useKnowledge/downloadKnowledge.js +0 -81
  482. package/lib/hooks/useKnowledge/index.js +0 -4
  483. package/lib/hooks/useKnowledge/saveKnowledge.js +0 -107
  484. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +0 -156
  485. package/lib/hooks/useMaiaTaskPanelZIndex.js +0 -17
  486. package/lib/hooks/useMentionAllowedTypes.js +0 -120
  487. package/lib/hooks/useMentionPopover.js +0 -342
  488. package/lib/hooks/useMinimizedPillBottomOffset.js +0 -110
  489. package/lib/hooks/useModal/index.js +0 -2
  490. package/lib/hooks/useModal/useModal.interfaces.js +0 -2
  491. package/lib/hooks/useModal/useModal.js +0 -47
  492. package/lib/hooks/useOnboardingNavigation.js +0 -20
  493. package/lib/hooks/useOrchestratorStream/index.js +0 -2
  494. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +0 -2
  495. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +0 -269
  496. package/lib/hooks/useProjectSearch.js +0 -183
  497. package/lib/hooks/useProjectSummary.js +0 -101
  498. package/lib/hooks/useProjectSummaryConfig.js +0 -211
  499. package/lib/hooks/useProjects.js +0 -46
  500. package/lib/hooks/useRecentClientsSearch.js +0 -150
  501. package/lib/hooks/useRecentContexts.js +0 -86
  502. package/lib/hooks/useResize.js +0 -29
  503. package/lib/hooks/useSkillsCatalog.js +0 -66
  504. package/lib/hooks/useSlashCommands.js +0 -84
  505. package/lib/hooks/useSmoothStreamText/index.js +0 -2
  506. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +0 -197
  507. package/lib/hooks/useSnackBarManager/useSnackBarManager.js +0 -41
  508. package/lib/hooks/useStreamResponse.js +0 -112
  509. package/lib/hooks/useStreamdownStyles.js +0 -13
  510. package/lib/hooks/useStreamingMessage/index.js +0 -2
  511. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +0 -18
  512. package/lib/hooks/useT.js +0 -17
  513. package/lib/hooks/useTabTaskDefault.js +0 -33
  514. package/lib/hooks/useTaskPanel.js +0 -22
  515. package/lib/hooks/useTextOverflowEllipsisTooltip.js +0 -34
  516. package/lib/hooks/useToggle.js +0 -19
  517. package/lib/hooks/useToggleFavorite/index.js +0 -2
  518. package/lib/hooks/useToggleFavorite/useToggleFavorite.js +0 -83
  519. package/lib/index.css +0 -76
  520. package/lib/index.js +0 -30
  521. package/lib/lang/br/index.js +0 -785
  522. package/lib/lang/en/index.js +0 -785
  523. package/lib/lang/es/index.js +0 -786
  524. package/lib/lang/fr/index.js +0 -606
  525. package/lib/lang/index.js +0 -24
  526. package/lib/lang/utils.js +0 -33
  527. package/lib/mocks/mockChats.js +0 -395
  528. package/lib/mocks/mockOrchestrator.js +0 -5
  529. package/lib/mocks/mockProject.js +0 -11
  530. package/lib/mocks/mockProjectSummary.js +0 -6
  531. package/lib/mocks/mockedUser.js +0 -169
  532. package/lib/services/apolloClient.js +0 -3
  533. package/lib/services/appcues.js +0 -19
  534. package/lib/services/corpilot/ProjectSummary/getProjectSummary.js +0 -31
  535. package/lib/services/corpilot/ProjectSummary/index.js +0 -5
  536. package/lib/services/corpilot/client.js +0 -27
  537. package/lib/services/corpilot/index.js +0 -5
  538. package/lib/services/maia/Access/updateAccess.js +0 -59
  539. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +0 -46
  540. package/lib/services/maia/Actions/getSlashCommands.js +0 -39
  541. package/lib/services/maia/Actions/index.js +0 -7
  542. package/lib/services/maia/Agents/createAgent.js +0 -39
  543. package/lib/services/maia/Agents/deleteAgent.js +0 -38
  544. package/lib/services/maia/Agents/fetchAgentDetail.js +0 -122
  545. package/lib/services/maia/Agents/getAgentById.js +0 -162
  546. package/lib/services/maia/Agents/getAgentModels.js +0 -112
  547. package/lib/services/maia/Agents/getAgentSuggestions.js +0 -44
  548. package/lib/services/maia/Agents/getAgents.js +0 -718
  549. package/lib/services/maia/Agents/setAgentToolGroups.js +0 -42
  550. package/lib/services/maia/Agents/toggleFavorite.js +0 -34
  551. package/lib/services/maia/Agents/updateAgent.js +0 -39
  552. package/lib/services/maia/Chats/deleteChat.js +0 -32
  553. package/lib/services/maia/Chats/getChatMessages.js +0 -144
  554. package/lib/services/maia/Chats/getChatsByUserId.js +0 -82
  555. package/lib/services/maia/Chats/index.js +0 -15
  556. package/lib/services/maia/Chats/markSessionAsRead.js +0 -32
  557. package/lib/services/maia/Chats/patchChat.js +0 -43
  558. package/lib/services/maia/Chats/wasHelpfulChat.js +0 -31
  559. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +0 -55
  560. package/lib/services/maia/Faqs/index.js +0 -5
  561. package/lib/services/maia/Knowledge/delete.js +0 -41
  562. package/lib/services/maia/Knowledge/download.js +0 -48
  563. package/lib/services/maia/Knowledge/index.js +0 -3
  564. package/lib/services/maia/Knowledge/save.js +0 -43
  565. package/lib/services/maia/Orchestrator/index.js +0 -7
  566. package/lib/services/maia/Orchestrator/orchestrator.js +0 -246
  567. package/lib/services/maia/RecentClients/getRecentClients.js +0 -43
  568. package/lib/services/maia/RecentClients/index.js +0 -6
  569. package/lib/services/maia/RecentContexts/getRecentContexts.js +0 -54
  570. package/lib/services/maia/RecentContexts/index.js +0 -6
  571. package/lib/services/maia/RecentProjects/getRecentProjects.js +0 -55
  572. package/lib/services/maia/RecentProjects/index.js +0 -6
  573. package/lib/services/maia/RecentTasks/getRecentTasks.js +0 -54
  574. package/lib/services/maia/RecentTasks/index.js +0 -6
  575. package/lib/services/maia/RecentUsers/getRecentUsers.js +0 -59
  576. package/lib/services/maia/RecentUsers/index.js +0 -6
  577. package/lib/services/maia/Skills/createSkill.js +0 -39
  578. package/lib/services/maia/Skills/deleteSkill.js +0 -38
  579. package/lib/services/maia/Skills/generateSkill.js +0 -41
  580. package/lib/services/maia/Skills/getSkills.js +0 -120
  581. package/lib/services/maia/Skills/updateSkill.js +0 -39
  582. package/lib/services/maia/client.js +0 -27
  583. package/lib/services/maia/index.js +0 -17
  584. package/lib/services/query/ClientSearchQuery.js +0 -5
  585. package/lib/services/query/entitySearchQuery.js +0 -18
  586. package/lib/services/query/index.js +0 -2
  587. package/lib/services/query/projectSearchByValueQuery.js +0 -5
  588. package/lib/services/query/taskUserTabQuery.js +0 -8
  589. package/lib/services/query/usersDirectoryQuery.js +0 -19
  590. package/lib/services/types.js +0 -6
  591. package/lib/services/utils/fetchCOR.js +0 -117
  592. package/lib/services/utils/getCookie.js +0 -10
  593. package/lib/services/utils/index.js +0 -3
  594. package/lib/services/utils/mapChatMessages.js +0 -287
  595. package/lib/services/utils/validateIsMaia.js +0 -4
  596. package/lib/store/chatsSidebarOptimistic.js +0 -92
  597. package/lib/store/chatsStore.types.js +0 -2
  598. package/lib/store/chatsStoreLifecycle.js +0 -8
  599. package/lib/store/faqsStore.types.js +0 -2
  600. package/lib/store/index.js +0 -4
  601. package/lib/store/maiaLastChatPersistence.js +0 -35
  602. package/lib/store/sessions/activeView.js +0 -22
  603. package/lib/store/sessions/index.js +0 -9
  604. package/lib/store/sessions/sessionHitlContext.js +0 -15
  605. package/lib/store/sessions/sessionNotificationSound.js +0 -57
  606. package/lib/store/sessions/sessionNotifications.js +0 -110
  607. package/lib/store/sessions/sessionNotifications.types.js +0 -2
  608. package/lib/store/sessions/sessionStreamManager.js +0 -715
  609. package/lib/store/sessions/sessionStreamingText.js +0 -80
  610. package/lib/store/sessions/sessions.types.js +0 -35
  611. package/lib/store/sessions/useSessionMeta.js +0 -39
  612. package/lib/store/sessions/useSessionStreamingText.js +0 -18
  613. package/lib/store/sessions/useSessionsStore.js +0 -197
  614. package/lib/store/useChatsStore.js +0 -387
  615. package/lib/store/useFaqsStore.js +0 -27
  616. package/lib/streamdownStyles.js +0 -9
  617. package/lib/styles/StyledCleanContainer.js +0 -7
  618. package/lib/styles/cascade.js +0 -14
  619. package/lib/styles/config.js +0 -47
  620. package/lib/styles/shared/scrollable.js +0 -3
  621. package/lib/styles/transitions.js +0 -21
  622. package/lib/types/Action.js +0 -2
  623. package/lib/types/AgentSuggestion.js +0 -2
  624. package/lib/types/Chat.js +0 -10
  625. package/lib/types/Client.js +0 -2
  626. package/lib/types/FrequentlyAskedQuestion.js +0 -2
  627. package/lib/types/Project.js +0 -2
  628. package/lib/types/ProjectSummaryConfigKeys.js +0 -9
  629. package/lib/types/Task.js +0 -2
  630. package/lib/types/agent.js +0 -2
  631. package/lib/types/agentModal.js +0 -2
  632. package/lib/types/contextMention.js +0 -37
  633. package/lib/types/global.d.js +0 -2
  634. package/lib/types/skill.js +0 -2
  635. package/lib/types/streamActivity.js +0 -2
  636. package/lib/types/userType.d.js +0 -2
  637. package/lib/utils/actionCategoryMap.js +0 -37
  638. package/lib/utils/actionIconMap.js +0 -61
  639. package/lib/utils/agentDisplayName.js +0 -42
  640. package/lib/utils/chatInputFiles.js +0 -52
  641. package/lib/utils/contextMentionIcons.js +0 -134
  642. package/lib/utils/contextMentionLabel.js +0 -4
  643. package/lib/utils/contextMentionTriggers.js +0 -51
  644. package/lib/utils/contextMentionTypeLabel.js +0 -17
  645. package/lib/utils/corConnectorMentionTypes.js +0 -41
  646. package/lib/utils/ensureStreamdownStyles.js +0 -21
  647. package/lib/utils/entityLinkRender.js +0 -135
  648. package/lib/utils/fileDownloadHelper.js +0 -40
  649. package/lib/utils/formatQuickActionMessage.js +0 -16
  650. package/lib/utils/formatUnreadCount.js +0 -6
  651. package/lib/utils/getUnitFileSize.js +0 -13
  652. package/lib/utils/hitlAnalytics.js +0 -65
  653. package/lib/utils/hoursPlannerQuickActionType.js +0 -64
  654. package/lib/utils/imagePreprocessor.js +0 -108
  655. package/lib/utils/index.js +0 -3
  656. package/lib/utils/maiaHostOpen.js +0 -19
  657. package/lib/utils/maiaStreamdownRehypePlugins.js +0 -27
  658. package/lib/utils/mapBackendLang.js +0 -8
  659. package/lib/utils/normalizeAgentConnectors.js +0 -70
  660. package/lib/utils/openTaskInCorPanel.js +0 -22
  661. package/lib/utils/orchestratorSubagents.js +0 -11
  662. package/lib/utils/renderContextMentions.js +0 -420
  663. package/lib/utils/retryCompletion.js +0 -85
  664. package/lib/utils/slashCommandMarker.js +0 -30
  665. package/lib/utils/sortManagerHoursHomeFuas.js +0 -14
  666. package/lib/utils/sseStreamContent.js +0 -17
  667. package/lib/utils/streamActivityMessages.js +0 -359
  668. package/lib/utils/validateTrimmedFields.js +0 -8
@@ -1,500 +0,0 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import { useCallback, useRef, useState } from 'react';
3
- import { serializeMention } from '../utils/renderContextMentions';
4
- import { serializeSlashCommand } from '../utils/slashCommandMarker';
5
-
6
- /** Trigger `#` que abre el listado de skills. Misma forma que el de slash. */
7
-
8
- /**
9
- * Inspecciona la selección actual. Formato: [límite de palabra] @+ query hasta el caret.
10
- * Permite espacios simples dentro del query (p. ej. "@Juan Perez") y cierra
11
- * el trigger cuando detecta dos espacios consecutivos.
12
- * La tab objetivo es la que corresponde al número de `@` (1 = primera tab visible, etc.).
13
- */
14
- var detectMentionTrigger = function detectMentionTrigger(editorEl, range) {
15
- if (!editorEl || !editorEl.contains(range.startContainer)) {
16
- return {
17
- active: false,
18
- query: '',
19
- atRunLength: 0,
20
- anchor: null
21
- };
22
- }
23
- var node = range.startContainer;
24
- if (node.nodeType !== Node.TEXT_NODE) {
25
- return {
26
- active: false,
27
- query: '',
28
- atRunLength: 0,
29
- anchor: null
30
- };
31
- }
32
- var text = node.data;
33
- var caret = range.startOffset;
34
- var i = caret - 1;
35
- if (i < 0) {
36
- return {
37
- active: false,
38
- query: '',
39
- atRunLength: 0,
40
- anchor: null
41
- };
42
- }
43
- while (i >= 0 && text[i] !== '@') i -= 1;
44
- if (i < 0 || text[i] !== '@') {
45
- return {
46
- active: false,
47
- query: '',
48
- atRunLength: 0,
49
- anchor: null
50
- };
51
- }
52
- var runEnd = i;
53
- while (i >= 0 && text[i] === '@') {
54
- i -= 1;
55
- }
56
- var runStart = i + 1;
57
- var atRunLength = runEnd - runStart + 1;
58
- var prev = runStart > 0 ? text.charAt(runStart - 1) : '';
59
- var isBoundary = !prev || /[\s([{]/.test(prev);
60
- if (!isBoundary) {
61
- return {
62
- active: false,
63
- query: '',
64
- atRunLength: 0,
65
- anchor: null
66
- };
67
- }
68
- var hasSlashSuffix = text[runEnd + 1] === '/';
69
- var queryStart = hasSlashSuffix ? runEnd + 2 : runEnd + 1;
70
- var query = text.slice(queryStart, caret);
71
- if (/\n|\r/.test(query)) {
72
- return {
73
- active: false,
74
- query: '',
75
- atRunLength: 0,
76
- anchor: null
77
- };
78
- }
79
- if (query.includes(' ')) {
80
- return {
81
- active: false,
82
- query: '',
83
- atRunLength: 0,
84
- anchor: null
85
- };
86
- }
87
- return {
88
- active: true,
89
- query: query,
90
- atRunLength: hasSlashSuffix ? -atRunLength : atRunLength,
91
- anchor: {
92
- node: node,
93
- offset: runStart
94
- }
95
- };
96
- };
97
-
98
- /** Detecta un trigger de un solo caracter (`/` o `#`) en límite de palabra, con query hasta el caret. */
99
- var detectCharTrigger = function detectCharTrigger(editorEl, range, _char) {
100
- if (!editorEl || !editorEl.contains(range.startContainer)) {
101
- return {
102
- active: false,
103
- query: '',
104
- anchor: null
105
- };
106
- }
107
- var node = range.startContainer;
108
- if (node.nodeType !== Node.TEXT_NODE) {
109
- return {
110
- active: false,
111
- query: '',
112
- anchor: null
113
- };
114
- }
115
- var text = node.data;
116
- var caret = range.startOffset;
117
- var i = caret - 1;
118
- if (i < 0) {
119
- return {
120
- active: false,
121
- query: '',
122
- anchor: null
123
- };
124
- }
125
- while (i >= 0 && text[i] !== _char) i -= 1;
126
- if (i < 0 || text[i] !== _char) {
127
- return {
128
- active: false,
129
- query: '',
130
- anchor: null
131
- };
132
- }
133
- var triggerIndex = i;
134
- var prev = triggerIndex > 0 ? text.charAt(triggerIndex - 1) : '';
135
- var isBoundary = !prev || /[\s([{]/.test(prev);
136
- if (!isBoundary) {
137
- return {
138
- active: false,
139
- query: '',
140
- anchor: null
141
- };
142
- }
143
- var query = text.slice(triggerIndex + 1, caret);
144
- if (/\n|\r/.test(query)) {
145
- return {
146
- active: false,
147
- query: '',
148
- anchor: null
149
- };
150
- }
151
- if (query.includes(' ')) {
152
- return {
153
- active: false,
154
- query: '',
155
- anchor: null
156
- };
157
- }
158
- return {
159
- active: true,
160
- query: query,
161
- anchor: {
162
- node: node,
163
- offset: triggerIndex
164
- }
165
- };
166
- };
167
- export var useContextMentions = function useContextMentions() {
168
- var editorRef = useRef(null);
169
- var _useState = useState({
170
- active: false,
171
- query: '',
172
- atRunLength: 0,
173
- anchor: null
174
- }),
175
- _useState2 = _slicedToArray(_useState, 2),
176
- trigger = _useState2[0],
177
- setTrigger = _useState2[1];
178
- var _useState3 = useState({
179
- active: false,
180
- query: '',
181
- anchor: null
182
- }),
183
- _useState4 = _slicedToArray(_useState3, 2),
184
- slashTrigger = _useState4[0],
185
- setSlashTrigger = _useState4[1];
186
- var _useState5 = useState({
187
- active: false,
188
- query: '',
189
- anchor: null
190
- }),
191
- _useState6 = _slicedToArray(_useState5, 2),
192
- hashTrigger = _useState6[0],
193
- setHashTrigger = _useState6[1];
194
- var detectTrigger = useCallback(function () {
195
- var selection = window.getSelection();
196
- if (!selection || selection.rangeCount === 0 || !editorRef.current) {
197
- return {
198
- active: false,
199
- query: '',
200
- atRunLength: 0,
201
- anchor: null
202
- };
203
- }
204
- return detectMentionTrigger(editorRef.current, selection.getRangeAt(0));
205
- }, []);
206
- var detectSlash = useCallback(function () {
207
- var selection = window.getSelection();
208
- if (!selection || selection.rangeCount === 0 || !editorRef.current) {
209
- return {
210
- active: false,
211
- query: '',
212
- anchor: null
213
- };
214
- }
215
- return detectCharTrigger(editorRef.current, selection.getRangeAt(0), '/');
216
- }, []);
217
- var detectHash = useCallback(function () {
218
- var selection = window.getSelection();
219
- if (!selection || selection.rangeCount === 0 || !editorRef.current) {
220
- return {
221
- active: false,
222
- query: '',
223
- anchor: null
224
- };
225
- }
226
- return detectCharTrigger(editorRef.current, selection.getRangeAt(0), '#');
227
- }, []);
228
- var updateTrigger = useCallback(function () {
229
- var next = detectTrigger();
230
- setTrigger(next);
231
- return next;
232
- }, [detectTrigger]);
233
- var closeTrigger = useCallback(function () {
234
- setTrigger({
235
- active: false,
236
- query: '',
237
- atRunLength: 0,
238
- anchor: null
239
- });
240
- }, []);
241
- var updateSlashTrigger = useCallback(function () {
242
- var next = detectSlash();
243
- setSlashTrigger(next);
244
- return next;
245
- }, [detectSlash]);
246
- var closeSlashTrigger = useCallback(function () {
247
- setSlashTrigger({
248
- active: false,
249
- query: '',
250
- anchor: null
251
- });
252
- }, []);
253
- var updateHashTrigger = useCallback(function () {
254
- var next = detectHash();
255
- setHashTrigger(next);
256
- return next;
257
- }, [detectHash]);
258
- var closeHashTrigger = useCallback(function () {
259
- setHashTrigger({
260
- active: false,
261
- query: '',
262
- anchor: null
263
- });
264
- }, []);
265
-
266
- /**
267
- * Ajusta la cantidad de `@` del trigger activo sin perder el query actual.
268
- * Ej.: `@@abc` -> `@abc` al cambiar de tab.
269
- */
270
- var syncTriggerAtRunLength = useCallback(function (nextAtRunLength) {
271
- var nextHasSlash = nextAtRunLength < 0;
272
- var safeNext = Math.max(1, Math.floor(Math.abs(nextAtRunLength)));
273
- var current = detectTrigger();
274
- if (!current.active || !current.anchor) return;
275
- var _current$anchor = current.anchor,
276
- node = _current$anchor.node,
277
- offset = _current$anchor.offset;
278
- if (node.nodeType !== Node.TEXT_NODE) return;
279
- var textNode = node;
280
- var full = textNode.data;
281
- var currentRunLen = Math.abs(current.atRunLength);
282
- var currentHasSlash = current.atRunLength < 0;
283
- var queryLen = currentRunLen + (currentHasSlash ? 1 : 0) + current.query.length;
284
- var before = full.slice(0, offset);
285
- var after = full.slice(offset + queryLen);
286
- var nextRun = nextHasSlash ? "".concat('@'.repeat(safeNext), "/") : '@'.repeat(safeNext);
287
- // Si venimos del tab skill, el query tiene '/' como prefijo — limpiarlo al cambiar de tab.
288
- var cleanQuery = current.query.startsWith('/') ? current.query.slice(1) : current.query;
289
- var nextValue = "".concat(before).concat(nextRun).concat(cleanQuery).concat(after);
290
-
291
- // eslint-disable-next-line no-param-reassign
292
- textNode.data = nextValue;
293
- var selection = window.getSelection();
294
- if (selection) {
295
- var range = document.createRange();
296
- var caretOffset = before.length + nextRun.length + cleanQuery.length;
297
- range.setStart(textNode, Math.min(caretOffset, textNode.data.length));
298
- range.collapse(true);
299
- selection.removeAllRanges();
300
- selection.addRange(range);
301
- }
302
- var updated = detectTrigger();
303
- setTrigger(updated);
304
- }, [detectTrigger]);
305
-
306
- /**
307
- * Reemplaza el `@query` pendiente por un chip atómico con la mention.
308
- * Requiere que el caller provea el DOM del chip (se inserta tal cual).
309
- */
310
- var replaceTriggerWithChip = useCallback(function (chipNode, mention) {
311
- var current = detectTrigger();
312
- if (!current.active || !current.anchor) return;
313
- var _current$anchor2 = current.anchor,
314
- node = _current$anchor2.node,
315
- offset = _current$anchor2.offset;
316
- var textNode = node;
317
- var full = textNode.data;
318
- var currentRunLen = Math.abs(current.atRunLength);
319
- var currentHasSlash = current.atRunLength < 0;
320
- var queryLen = currentRunLen + (currentHasSlash ? 1 : 0) + current.query.length;
321
- var after = full.slice(offset + queryLen);
322
-
323
- // Truncar el texto hasta antes del run de `@…`
324
- // eslint-disable-next-line no-param-reassign
325
- textNode.data = full.slice(0, offset);
326
-
327
- // Insertar el chip justo después del nodo de texto
328
- chipNode.setAttribute('data-mention', 'true');
329
- chipNode.setAttribute('data-mention-id', String(mention.id));
330
- chipNode.setAttribute('data-mention-type', mention.type);
331
- chipNode.setAttribute('data-mention-label', mention.label);
332
- chipNode.setAttribute('contenteditable', 'false');
333
- var parent = textNode.parentNode;
334
- if (!parent) return;
335
- var spaceNode = document.createTextNode("\xA0".concat(after));
336
- parent.insertBefore(chipNode, textNode.nextSibling);
337
- parent.insertBefore(spaceNode, chipNode.nextSibling);
338
-
339
- // Reposicionar caret después del chip (antes del espacio non-breaking)
340
- var selection = window.getSelection();
341
- if (selection) {
342
- var range = document.createRange();
343
- range.setStart(spaceNode, 1);
344
- range.collapse(true);
345
- selection.removeAllRanges();
346
- selection.addRange(range);
347
- }
348
- closeTrigger();
349
- }, [detectTrigger, closeTrigger]);
350
- var replaceTriggerWithSlashChip = useCallback(function (chipNode, slashCommand) {
351
- var current = detectSlash();
352
- if (!current.active || !current.anchor) return;
353
- var _current$anchor3 = current.anchor,
354
- node = _current$anchor3.node,
355
- offset = _current$anchor3.offset;
356
- var textNode = node;
357
- var full = textNode.data;
358
- var triggerLen = 1 + current.query.length;
359
- var after = full.slice(offset + triggerLen);
360
- textNode.data = full.slice(0, offset);
361
- chipNode.setAttribute('data-slash-command', 'true');
362
- chipNode.setAttribute('data-slash-id', String(slashCommand.id));
363
- chipNode.setAttribute('data-slash-label', slashCommand.label);
364
- chipNode.setAttribute('contenteditable', 'false');
365
- var parent = textNode.parentNode;
366
- if (!parent) return;
367
- var spaceNode = document.createTextNode(" ".concat(after));
368
- parent.insertBefore(chipNode, textNode.nextSibling);
369
- parent.insertBefore(spaceNode, chipNode.nextSibling);
370
- var selection = window.getSelection();
371
- if (selection) {
372
- var range = document.createRange();
373
- range.setStart(spaceNode, 1);
374
- range.collapse(true);
375
- selection.removeAllRanges();
376
- selection.addRange(range);
377
- }
378
- closeSlashTrigger();
379
- }, [detectSlash, closeSlashTrigger]);
380
-
381
- /**
382
- * Reemplaza el `#query` pendiente por un chip de skill. La skill sigue viajando
383
- * como mention (`data-mention*`) para que el backend la resuelva por id.
384
- */
385
- var replaceTriggerWithSkillChip = useCallback(function (chipNode, mention) {
386
- var current = detectHash();
387
- if (!current.active || !current.anchor) return;
388
- var _current$anchor4 = current.anchor,
389
- node = _current$anchor4.node,
390
- offset = _current$anchor4.offset;
391
- var textNode = node;
392
- var full = textNode.data;
393
- var triggerLen = 1 + current.query.length;
394
- var after = full.slice(offset + triggerLen);
395
- textNode.data = full.slice(0, offset);
396
- chipNode.setAttribute('data-mention', 'true');
397
- chipNode.setAttribute('data-mention-id', String(mention.id));
398
- chipNode.setAttribute('data-mention-type', mention.type);
399
- chipNode.setAttribute('data-mention-label', mention.label);
400
- chipNode.setAttribute('contenteditable', 'false');
401
- var parent = textNode.parentNode;
402
- if (!parent) return;
403
- var spaceNode = document.createTextNode("\xA0".concat(after));
404
- parent.insertBefore(chipNode, textNode.nextSibling);
405
- parent.insertBefore(spaceNode, chipNode.nextSibling);
406
- var selection = window.getSelection();
407
- if (selection) {
408
- var range = document.createRange();
409
- range.setStart(spaceNode, 1);
410
- range.collapse(true);
411
- selection.removeAllRanges();
412
- selection.addRange(range);
413
- }
414
- closeHashTrigger();
415
- }, [detectHash, closeHashTrigger]);
416
- var serialize = useCallback(function () {
417
- var el = editorRef.current;
418
- if (!el) return {
419
- text: '',
420
- mentions: [],
421
- slashCommands: []
422
- };
423
- var mentions = [];
424
- var slashCommands = [];
425
- var text = '';
426
- var _walk = function walk(node) {
427
- if (node.nodeType === Node.TEXT_NODE) {
428
- text += node.data;
429
- return;
430
- }
431
- if (node.nodeType === Node.ELEMENT_NODE) {
432
- var _elNode$dataset, _elNode$dataset2;
433
- var elNode = node;
434
- if (((_elNode$dataset = elNode.dataset) === null || _elNode$dataset === void 0 ? void 0 : _elNode$dataset.mention) === 'true') {
435
- var _elNode$dataset$menti, _ref, _ref2, _elNode$dataset$menti2;
436
- var mention = {
437
- id: (_elNode$dataset$menti = elNode.dataset.mentionId) !== null && _elNode$dataset$menti !== void 0 ? _elNode$dataset$menti : '',
438
- type: (_ref = elNode.dataset.mentionType) !== null && _ref !== void 0 ? _ref : 'user',
439
- label: (_ref2 = (_elNode$dataset$menti2 = elNode.dataset.mentionLabel) !== null && _elNode$dataset$menti2 !== void 0 ? _elNode$dataset$menti2 : elNode.textContent) !== null && _ref2 !== void 0 ? _ref2 : ''
440
- };
441
- mentions.push(mention);
442
- text += serializeMention(mention);
443
- return;
444
- }
445
- if (((_elNode$dataset2 = elNode.dataset) === null || _elNode$dataset2 === void 0 ? void 0 : _elNode$dataset2.slashCommand) === 'true') {
446
- var _elNode$dataset$slash, _ref3, _elNode$dataset$slash2, _elNode$textContent;
447
- var slash = {
448
- id: (_elNode$dataset$slash = elNode.dataset.slashId) !== null && _elNode$dataset$slash !== void 0 ? _elNode$dataset$slash : '',
449
- label: (_ref3 = (_elNode$dataset$slash2 = elNode.dataset.slashLabel) !== null && _elNode$dataset$slash2 !== void 0 ? _elNode$dataset$slash2 : (_elNode$textContent = elNode.textContent) === null || _elNode$textContent === void 0 ? void 0 : _elNode$textContent.replace(/^\//, '')) !== null && _ref3 !== void 0 ? _ref3 : ''
450
- };
451
- slashCommands.push(slash);
452
- text += serializeSlashCommand(slash);
453
- return;
454
- }
455
- if (elNode.tagName === 'BR') {
456
- text += '\n';
457
- return;
458
- }
459
- elNode.childNodes.forEach(_walk);
460
- if (elNode.tagName === 'DIV' || elNode.tagName === 'P') text += '\n';
461
- }
462
- };
463
- el.childNodes.forEach(_walk);
464
- return {
465
- text: text.replace(/\n+$/, ''),
466
- mentions: mentions,
467
- slashCommands: slashCommands
468
- };
469
- }, []);
470
- var clear = useCallback(function () {
471
- if (editorRef.current) editorRef.current.innerHTML = '';
472
- closeTrigger();
473
- closeSlashTrigger();
474
- closeHashTrigger();
475
- }, [closeTrigger, closeSlashTrigger, closeHashTrigger]);
476
- var focus = useCallback(function () {
477
- var _editorRef$current;
478
- (_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 || _editorRef$current.focus();
479
- }, []);
480
- return {
481
- editorRef: editorRef,
482
- trigger: trigger,
483
- updateTrigger: updateTrigger,
484
- closeTrigger: closeTrigger,
485
- syncTriggerAtRunLength: syncTriggerAtRunLength,
486
- replaceTriggerWithChip: replaceTriggerWithChip,
487
- slashTrigger: slashTrigger,
488
- updateSlashTrigger: updateSlashTrigger,
489
- closeSlashTrigger: closeSlashTrigger,
490
- replaceTriggerWithSlashChip: replaceTriggerWithSlashChip,
491
- hashTrigger: hashTrigger,
492
- updateHashTrigger: updateHashTrigger,
493
- closeHashTrigger: closeHashTrigger,
494
- replaceTriggerWithSkillChip: replaceTriggerWithSkillChip,
495
- serialize: serialize,
496
- clear: clear,
497
- focus: focus
498
- };
499
- };
500
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZVN0YXRlIiwic2VyaWFsaXplTWVudGlvbiIsInNlcmlhbGl6ZVNsYXNoQ29tbWFuZCIsImRldGVjdE1lbnRpb25UcmlnZ2VyIiwiZWRpdG9yRWwiLCJyYW5nZSIsImNvbnRhaW5zIiwic3RhcnRDb250YWluZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiYW5jaG9yIiwibm9kZSIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsInRleHQiLCJkYXRhIiwiY2FyZXQiLCJzdGFydE9mZnNldCIsImkiLCJydW5FbmQiLCJydW5TdGFydCIsInByZXYiLCJjaGFyQXQiLCJpc0JvdW5kYXJ5IiwidGVzdCIsImhhc1NsYXNoU3VmZml4IiwicXVlcnlTdGFydCIsInNsaWNlIiwiaW5jbHVkZXMiLCJvZmZzZXQiLCJkZXRlY3RDaGFyVHJpZ2dlciIsImNoYXIiLCJ0cmlnZ2VySW5kZXgiLCJ1c2VDb250ZXh0TWVudGlvbnMiLCJlZGl0b3JSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0cmlnZ2VyIiwic2V0VHJpZ2dlciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2xhc2hUcmlnZ2VyIiwic2V0U2xhc2hUcmlnZ2VyIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJoYXNoVHJpZ2dlciIsInNldEhhc2hUcmlnZ2VyIiwiZGV0ZWN0VHJpZ2dlciIsInNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJhbmdlQ291bnQiLCJjdXJyZW50IiwiZ2V0UmFuZ2VBdCIsImRldGVjdFNsYXNoIiwiZGV0ZWN0SGFzaCIsInVwZGF0ZVRyaWdnZXIiLCJuZXh0IiwiY2xvc2VUcmlnZ2VyIiwidXBkYXRlU2xhc2hUcmlnZ2VyIiwiY2xvc2VTbGFzaFRyaWdnZXIiLCJ1cGRhdGVIYXNoVHJpZ2dlciIsImNsb3NlSGFzaFRyaWdnZXIiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwibmV4dEF0UnVuTGVuZ3RoIiwibmV4dEhhc1NsYXNoIiwic2FmZU5leHQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJhYnMiLCJfY3VycmVudCRhbmNob3IiLCJ0ZXh0Tm9kZSIsImZ1bGwiLCJjdXJyZW50UnVuTGVuIiwiY3VycmVudEhhc1NsYXNoIiwicXVlcnlMZW4iLCJsZW5ndGgiLCJiZWZvcmUiLCJhZnRlciIsIm5leHRSdW4iLCJjb25jYXQiLCJyZXBlYXQiLCJjbGVhblF1ZXJ5Iiwic3RhcnRzV2l0aCIsIm5leHRWYWx1ZSIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJjYXJldE9mZnNldCIsInNldFN0YXJ0IiwibWluIiwiY29sbGFwc2UiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInVwZGF0ZWQiLCJyZXBsYWNlVHJpZ2dlcldpdGhDaGlwIiwiY2hpcE5vZGUiLCJtZW50aW9uIiwiX2N1cnJlbnQkYW5jaG9yMiIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsImlkIiwidHlwZSIsImxhYmVsIiwicGFyZW50IiwicGFyZW50Tm9kZSIsInNwYWNlTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJyZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAiLCJzbGFzaENvbW1hbmQiLCJfY3VycmVudCRhbmNob3IzIiwidHJpZ2dlckxlbiIsInJlcGxhY2VUcmlnZ2VyV2l0aFNraWxsQ2hpcCIsIl9jdXJyZW50JGFuY2hvcjQiLCJzZXJpYWxpemUiLCJlbCIsIm1lbnRpb25zIiwic2xhc2hDb21tYW5kcyIsIndhbGsiLCJFTEVNRU5UX05PREUiLCJfZWxOb2RlJGRhdGFzZXQiLCJfZWxOb2RlJGRhdGFzZXQyIiwiZWxOb2RlIiwiZGF0YXNldCIsIl9lbE5vZGUkZGF0YXNldCRtZW50aSIsIl9yZWYiLCJfcmVmMiIsIl9lbE5vZGUkZGF0YXNldCRtZW50aTIiLCJtZW50aW9uSWQiLCJtZW50aW9uVHlwZSIsIm1lbnRpb25MYWJlbCIsInRleHRDb250ZW50IiwicHVzaCIsIl9lbE5vZGUkZGF0YXNldCRzbGFzaCIsIl9yZWYzIiwiX2VsTm9kZSRkYXRhc2V0JHNsYXNoMiIsIl9lbE5vZGUkdGV4dENvbnRlbnQiLCJzbGFzaCIsInNsYXNoSWQiLCJzbGFzaExhYmVsIiwicmVwbGFjZSIsInRhZ05hbWUiLCJjaGlsZE5vZGVzIiwiZm9yRWFjaCIsImNsZWFyIiwiaW5uZXJIVE1MIiwiZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQ29udGV4dE1lbnRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgc2VyaWFsaXplTWVudGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IHNlcmlhbGl6ZVNsYXNoQ29tbWFuZCB9IGZyb20gJy4uL3V0aWxzL3NsYXNoQ29tbWFuZE1hcmtlcidcbmltcG9ydCB0eXBlIHsgU2xhc2hDb21tYW5kQ2hpcERhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL1NsYXNoQ29tbWFuZENoaXAvYnVpbGRTbGFzaENoaXBFbGVtZW50J1xuXG5leHBvcnQgdHlwZSBNZW50aW9uVHJpZ2dlclN0YXRlID0ge1xuICBhY3RpdmU6IGJvb2xlYW5cbiAgcXVlcnk6IHN0cmluZ1xuICAvKiogQ2FudGlkYWQgZGUgYEBgIGNvbnNlY3V0aXZvcyBkZWwgdHJpZ2dlciAoYEBgIOKGkiAxLCBgQEBgIOKGkiAyKS4gTWFwZWEgYSBsYSB0YWIgZW4gb3JkZW4uICovXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXJcbiAgLyoqIFBvc2ljacOzbiBkZWwgcHJpbWVyIGBAYCBkZWwgcnVuIChyZWVtcGxhem8gZGVsIGNoaXApLiAqL1xuICBhbmNob3I6IHsgbm9kZTogTm9kZTsgb2Zmc2V0OiBudW1iZXIgfSB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgU2xhc2hUcmlnZ2VyU3RhdGUgPSB7XG4gIGFjdGl2ZTogYm9vbGVhblxuICBxdWVyeTogc3RyaW5nXG4gIGFuY2hvcjogeyBub2RlOiBOb2RlOyBvZmZzZXQ6IG51bWJlciB9IHwgbnVsbFxufVxuXG4vKiogVHJpZ2dlciBgI2AgcXVlIGFicmUgZWwgbGlzdGFkbyBkZSBza2lsbHMuIE1pc21hIGZvcm1hIHF1ZSBlbCBkZSBzbGFzaC4gKi9cbmV4cG9ydCB0eXBlIEhhc2hUcmlnZ2VyU3RhdGUgPSBTbGFzaFRyaWdnZXJTdGF0ZVxuXG4vKipcbiAqIEluc3BlY2Npb25hIGxhIHNlbGVjY2nDs24gYWN0dWFsLiBGb3JtYXRvOiBbbMOtbWl0ZSBkZSBwYWxhYnJhXSBAKyBxdWVyeSBoYXN0YSBlbCBjYXJldC5cbiAqIFBlcm1pdGUgZXNwYWNpb3Mgc2ltcGxlcyBkZW50cm8gZGVsIHF1ZXJ5IChwLiBlai4gXCJASnVhbiBQZXJlelwiKSB5IGNpZXJyYVxuICogZWwgdHJpZ2dlciBjdWFuZG8gZGV0ZWN0YSBkb3MgZXNwYWNpb3MgY29uc2VjdXRpdm9zLlxuICogTGEgdGFiIG9iamV0aXZvIGVzIGxhIHF1ZSBjb3JyZXNwb25kZSBhbCBuw7ptZXJvIGRlIGBAYCAoMSA9IHByaW1lcmEgdGFiIHZpc2libGUsIGV0Yy4pLlxuICovXG5jb25zdCBkZXRlY3RNZW50aW9uVHJpZ2dlciA9IChlZGl0b3JFbDogSFRNTEVsZW1lbnQgfCBudWxsLCByYW5nZTogUmFuZ2UpOiBNZW50aW9uVHJpZ2dlclN0YXRlID0+IHtcbiAgaWYgKCFlZGl0b3JFbCB8fCAhZWRpdG9yRWwuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXJcbiAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICBjb25zdCBjYXJldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0XG4gIGxldCBpID0gY2FyZXQgLSAxXG4gIGlmIChpIDwgMCkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gIT09ICdAJykgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSAnQCcpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3QgcnVuRW5kID0gaVxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gPT09ICdAJykge1xuICAgIGkgLT0gMVxuICB9XG4gIGNvbnN0IHJ1blN0YXJ0ID0gaSArIDFcbiAgY29uc3QgYXRSdW5MZW5ndGggPSBydW5FbmQgLSBydW5TdGFydCArIDFcbiAgY29uc3QgcHJldiA9IHJ1blN0YXJ0ID4gMCA/IHRleHQuY2hhckF0KHJ1blN0YXJ0IC0gMSkgOiAnJ1xuICBjb25zdCBpc0JvdW5kYXJ5ID0gIXByZXYgfHwgL1tcXHMoW3tdLy50ZXN0KHByZXYpXG4gIGlmICghaXNCb3VuZGFyeSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBoYXNTbGFzaFN1ZmZpeCA9IHRleHRbcnVuRW5kICsgMV0gPT09ICcvJ1xuICBjb25zdCBxdWVyeVN0YXJ0ID0gaGFzU2xhc2hTdWZmaXggPyBydW5FbmQgKyAyIDogcnVuRW5kICsgMVxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2UocXVlcnlTdGFydCwgY2FyZXQpXG4gIGlmICgvXFxufFxcci8udGVzdChxdWVyeSkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGlmIChxdWVyeS5pbmNsdWRlcygnICAnKSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBxdWVyeSxcbiAgICBhdFJ1bkxlbmd0aDogaGFzU2xhc2hTdWZmaXggPyAtYXRSdW5MZW5ndGggOiBhdFJ1bkxlbmd0aCxcbiAgICBhbmNob3I6IHsgbm9kZSwgb2Zmc2V0OiBydW5TdGFydCB9LFxuICB9XG59XG5cbi8qKiBEZXRlY3RhIHVuIHRyaWdnZXIgZGUgdW4gc29sbyBjYXJhY3RlciAoYC9gIG8gYCNgKSBlbiBsw61taXRlIGRlIHBhbGFicmEsIGNvbiBxdWVyeSBoYXN0YSBlbCBjYXJldC4gKi9cbmNvbnN0IGRldGVjdENoYXJUcmlnZ2VyID0gKGVkaXRvckVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHJhbmdlOiBSYW5nZSwgY2hhcjogc3RyaW5nKTogU2xhc2hUcmlnZ2VyU3RhdGUgPT4ge1xuICBpZiAoIWVkaXRvckVsIHx8ICFlZGl0b3JFbC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgY29uc3Qgbm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyXG4gIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICBjb25zdCBjYXJldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0XG4gIGxldCBpID0gY2FyZXQgLSAxXG4gIGlmIChpIDwgMCkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIHdoaWxlIChpID49IDAgJiYgdGV4dFtpXSAhPT0gY2hhcikgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSBjaGFyKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3QgdHJpZ2dlckluZGV4ID0gaVxuICBjb25zdCBwcmV2ID0gdHJpZ2dlckluZGV4ID4gMCA/IHRleHQuY2hhckF0KHRyaWdnZXJJbmRleCAtIDEpIDogJydcbiAgY29uc3QgaXNCb3VuZGFyeSA9ICFwcmV2IHx8IC9bXFxzKFt7XS8udGVzdChwcmV2KVxuICBpZiAoIWlzQm91bmRhcnkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2UodHJpZ2dlckluZGV4ICsgMSwgY2FyZXQpXG4gIGlmICgvXFxufFxcci8udGVzdChxdWVyeSkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgaWYgKHF1ZXJ5LmluY2x1ZGVzKCcgICcpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgcmV0dXJuIHsgYWN0aXZlOiB0cnVlLCBxdWVyeSwgYW5jaG9yOiB7IG5vZGUsIG9mZnNldDogdHJpZ2dlckluZGV4IH0gfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ29udGV4dE1lbnRpb25zID0gKCkgPT4ge1xuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSB1c2VTdGF0ZTxNZW50aW9uVHJpZ2dlclN0YXRlPih7XG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICBxdWVyeTogJycsXG4gICAgYXRSdW5MZW5ndGg6IDAsXG4gICAgYW5jaG9yOiBudWxsLFxuICB9KVxuICBjb25zdCBbc2xhc2hUcmlnZ2VyLCBzZXRTbGFzaFRyaWdnZXJdID0gdXNlU3RhdGU8U2xhc2hUcmlnZ2VyU3RhdGU+KHtcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIHF1ZXJ5OiAnJyxcbiAgICBhbmNob3I6IG51bGwsXG4gIH0pXG4gIGNvbnN0IFtoYXNoVHJpZ2dlciwgc2V0SGFzaFRyaWdnZXJdID0gdXNlU3RhdGU8SGFzaFRyaWdnZXJTdGF0ZT4oe1xuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgcXVlcnk6ICcnLFxuICAgIGFuY2hvcjogbnVsbCxcbiAgfSlcblxuICBjb25zdCBkZXRlY3RUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCk6IE1lbnRpb25UcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgICB9XG4gICAgcmV0dXJuIGRldGVjdE1lbnRpb25UcmlnZ2VyKGVkaXRvclJlZi5jdXJyZW50LCBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKSlcbiAgfSwgW10pXG5cbiAgY29uc3QgZGV0ZWN0U2xhc2ggPSB1c2VDYWxsYmFjaygoKTogU2xhc2hUcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICAgIH1cbiAgICByZXR1cm4gZGV0ZWN0Q2hhclRyaWdnZXIoZWRpdG9yUmVmLmN1cnJlbnQsIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLCAnLycpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGRldGVjdEhhc2ggPSB1c2VDYWxsYmFjaygoKTogSGFzaFRyaWdnZXJTdGF0ZSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDAgfHwgIWVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gICAgfVxuICAgIHJldHVybiBkZXRlY3RDaGFyVHJpZ2dlcihlZGl0b3JSZWYuY3VycmVudCwgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCksICcjJylcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gZGV0ZWN0VHJpZ2dlcigpXG4gICAgc2V0VHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RUcmlnZ2VyXSlcblxuICBjb25zdCBjbG9zZVRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9KVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTbGFzaFRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IGRldGVjdFNsYXNoKClcbiAgICBzZXRTbGFzaFRyaWdnZXIobmV4dClcbiAgICByZXR1cm4gbmV4dFxuICB9LCBbZGV0ZWN0U2xhc2hdKVxuXG4gIGNvbnN0IGNsb3NlU2xhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNsYXNoVHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZUhhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBkZXRlY3RIYXNoKClcbiAgICBzZXRIYXNoVHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RIYXNoXSlcblxuICBjb25zdCBjbG9zZUhhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEhhc2hUcmlnZ2VyKHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfSlcbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEFqdXN0YSBsYSBjYW50aWRhZCBkZSBgQGAgZGVsIHRyaWdnZXIgYWN0aXZvIHNpbiBwZXJkZXIgZWwgcXVlcnkgYWN0dWFsLlxuICAgKiBFai46IGBAQGFiY2AgLT4gYEBhYmNgIGFsIGNhbWJpYXIgZGUgdGFiLlxuICAgKi9cbiAgY29uc3Qgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0QXRSdW5MZW5ndGg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV4dEhhc1NsYXNoID0gbmV4dEF0UnVuTGVuZ3RoIDwgMFxuICAgICAgY29uc3Qgc2FmZU5leHQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKE1hdGguYWJzKG5leHRBdFJ1bkxlbmd0aCkpKVxuICAgICAgY29uc3QgY3VycmVudCA9IGRldGVjdFRyaWdnZXIoKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkgcmV0dXJuXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IGN1cnJlbnRSdW5MZW4gPSBNYXRoLmFicyhjdXJyZW50LmF0UnVuTGVuZ3RoKVxuICAgICAgY29uc3QgY3VycmVudEhhc1NsYXNoID0gY3VycmVudC5hdFJ1bkxlbmd0aCA8IDBcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuID0gY3VycmVudFJ1bkxlbiArIChjdXJyZW50SGFzU2xhc2ggPyAxIDogMCkgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYmVmb3JlID0gZnVsbC5zbGljZSgwLCBvZmZzZXQpXG4gICAgICBjb25zdCBhZnRlciA9IGZ1bGwuc2xpY2Uob2Zmc2V0ICsgcXVlcnlMZW4pXG4gICAgICBjb25zdCBuZXh0UnVuID0gbmV4dEhhc1NsYXNoID8gYCR7J0AnLnJlcGVhdChzYWZlTmV4dCl9L2AgOiAnQCcucmVwZWF0KHNhZmVOZXh0KVxuICAgICAgLy8gU2kgdmVuaW1vcyBkZWwgdGFiIHNraWxsLCBlbCBxdWVyeSB0aWVuZSAnLycgY29tbyBwcmVmaWpvIOKAlCBsaW1waWFybG8gYWwgY2FtYmlhciBkZSB0YWIuXG4gICAgICBjb25zdCBjbGVhblF1ZXJ5ID0gY3VycmVudC5xdWVyeS5zdGFydHNXaXRoKCcvJykgPyBjdXJyZW50LnF1ZXJ5LnNsaWNlKDEpIDogY3VycmVudC5xdWVyeVxuICAgICAgY29uc3QgbmV4dFZhbHVlID0gYCR7YmVmb3JlfSR7bmV4dFJ1bn0ke2NsZWFuUXVlcnl9JHthZnRlcn1gXG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgdGV4dE5vZGUuZGF0YSA9IG5leHRWYWx1ZVxuXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIGNvbnN0IGNhcmV0T2Zmc2V0ID0gYmVmb3JlLmxlbmd0aCArIG5leHRSdW4ubGVuZ3RoICsgY2xlYW5RdWVyeS5sZW5ndGhcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIE1hdGgubWluKGNhcmV0T2Zmc2V0LCB0ZXh0Tm9kZS5kYXRhLmxlbmd0aCkpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIHNldFRyaWdnZXIodXBkYXRlZClcbiAgICB9LFxuICAgIFtkZXRlY3RUcmlnZ2VyXVxuICApXG5cbiAgLyoqXG4gICAqIFJlZW1wbGF6YSBlbCBgQHF1ZXJ5YCBwZW5kaWVudGUgcG9yIHVuIGNoaXAgYXTDs21pY28gY29uIGxhIG1lbnRpb24uXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBjYWxsZXIgcHJvdmVhIGVsIERPTSBkZWwgY2hpcCAoc2UgaW5zZXJ0YSB0YWwgY3VhbCkuXG4gICAqL1xuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhDaGlwID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoaXBOb2RlOiBIVE1MRWxlbWVudCwgbWVudGlvbjogQ29udGV4dE1lbnRpb24pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIGlmICghY3VycmVudC5hY3RpdmUgfHwgIWN1cnJlbnQuYW5jaG9yKSByZXR1cm5cblxuICAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgfSA9IGN1cnJlbnQuYW5jaG9yXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IGN1cnJlbnRSdW5MZW4gPSBNYXRoLmFicyhjdXJyZW50LmF0UnVuTGVuZ3RoKVxuICAgICAgY29uc3QgY3VycmVudEhhc1NsYXNoID0gY3VycmVudC5hdFJ1bkxlbmd0aCA8IDBcbiAgICAgIGNvbnN0IHF1ZXJ5TGVuID0gY3VycmVudFJ1bkxlbiArIChjdXJyZW50SGFzU2xhc2ggPyAxIDogMCkgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHF1ZXJ5TGVuKVxuXG4gICAgICAvLyBUcnVuY2FyIGVsIHRleHRvIGhhc3RhIGFudGVzIGRlbCBydW4gZGUgYEDigKZgXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgLy8gSW5zZXJ0YXIgZWwgY2hpcCBqdXN0byBkZXNwdcOpcyBkZWwgbm9kbyBkZSB0ZXh0b1xuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24nLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1pZCcsIFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1sYWJlbCcsIG1lbnRpb24ubGFiZWwpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3Qgc3BhY2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxcdTAwYTAke2FmdGVyfWApXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaXBOb2RlLCB0ZXh0Tm9kZS5uZXh0U2libGluZylcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3BhY2VOb2RlLCBjaGlwTm9kZS5uZXh0U2libGluZylcblxuICAgICAgLy8gUmVwb3NpY2lvbmFyIGNhcmV0IGRlc3B1w6lzIGRlbCBjaGlwIChhbnRlcyBkZWwgZXNwYWNpbyBub24tYnJlYWtpbmcpXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHNwYWNlTm9kZSwgMSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgY2xvc2VUcmlnZ2VyKClcbiAgICB9LFxuICAgIFtkZXRlY3RUcmlnZ2VyLCBjbG9zZVRyaWdnZXJdXG4gIClcblxuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hpcE5vZGU6IEhUTUxFbGVtZW50LCBzbGFzaENvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZGV0ZWN0U2xhc2goKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZSBhcyBUZXh0XG4gICAgICBjb25zdCBmdWxsID0gdGV4dE5vZGUuZGF0YVxuICAgICAgY29uc3QgdHJpZ2dlckxlbiA9IDEgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHRyaWdnZXJMZW4pXG5cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXNsYXNoLWNvbW1hbmQnLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhc2gtaWQnLCBTdHJpbmcoc2xhc2hDb21tYW5kLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1zbGFzaC1sYWJlbCcsIHNsYXNoQ29tbWFuZC5sYWJlbClcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgJ2ZhbHNlJylcblxuICAgICAgY29uc3QgcGFyZW50ID0gdGV4dE5vZGUucGFyZW50Tm9kZVxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVyblxuXG4gICAgICBjb25zdCBzcGFjZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgICR7YWZ0ZXJ9YClcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY2hpcE5vZGUsIHRleHROb2RlLm5leHRTaWJsaW5nKVxuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShzcGFjZU5vZGUsIGNoaXBOb2RlLm5leHRTaWJsaW5nKVxuXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHNwYWNlTm9kZSwgMSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgY2xvc2VTbGFzaFRyaWdnZXIoKVxuICAgIH0sXG4gICAgW2RldGVjdFNsYXNoLCBjbG9zZVNsYXNoVHJpZ2dlcl1cbiAgKVxuXG4gIC8qKlxuICAgKiBSZWVtcGxhemEgZWwgYCNxdWVyeWAgcGVuZGllbnRlIHBvciB1biBjaGlwIGRlIHNraWxsLiBMYSBza2lsbCBzaWd1ZSB2aWFqYW5kb1xuICAgKiBjb21vIG1lbnRpb24gKGBkYXRhLW1lbnRpb24qYCkgcGFyYSBxdWUgZWwgYmFja2VuZCBsYSByZXN1ZWx2YSBwb3IgaWQuXG4gICAqL1xuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhTa2lsbENoaXAgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hpcE5vZGU6IEhUTUxFbGVtZW50LCBtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IGRldGVjdEhhc2goKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZSBhcyBUZXh0XG4gICAgICBjb25zdCBmdWxsID0gdGV4dE5vZGUuZGF0YVxuICAgICAgY29uc3QgdHJpZ2dlckxlbiA9IDEgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHRyaWdnZXJMZW4pXG5cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24nLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1pZCcsIFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1sYWJlbCcsIG1lbnRpb24ubGFiZWwpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3Qgc3BhY2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxcdTAwYTAke2FmdGVyfWApXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaXBOb2RlLCB0ZXh0Tm9kZS5uZXh0U2libGluZylcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3BhY2VOb2RlLCBjaGlwTm9kZS5uZXh0U2libGluZylcblxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICByYW5nZS5zZXRTdGFydChzcGFjZU5vZGUsIDEpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNsb3NlSGFzaFRyaWdnZXIoKVxuICAgIH0sXG4gICAgW2RldGVjdEhhc2gsIGNsb3NlSGFzaFRyaWdnZXJdXG4gIClcblxuICBjb25zdCBzZXJpYWxpemUgPSB1c2VDYWxsYmFjaygoKToge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgc2xhc2hDb21tYW5kczogU2xhc2hDb21tYW5kQ2hpcERhdGFbXVxuICB9ID0+IHtcbiAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuIHsgdGV4dDogJycsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfVxuICAgIGNvbnN0IG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdID0gW11cbiAgICBjb25zdCBzbGFzaENvbW1hbmRzOiBTbGFzaENvbW1hbmRDaGlwRGF0YVtdID0gW11cbiAgICBsZXQgdGV4dCA9ICcnXG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICB0ZXh0ICs9IChub2RlIGFzIFRleHQpLmRhdGFcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgY29uc3QgZWxOb2RlID0gbm9kZSBhcyBIVE1MRWxlbWVudFxuICAgICAgICBpZiAoZWxOb2RlLmRhdGFzZXQ/Lm1lbnRpb24gPT09ICd0cnVlJykge1xuICAgICAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICAgICAgaWQ6IGVsTm9kZS5kYXRhc2V0Lm1lbnRpb25JZCA/PyAnJyxcbiAgICAgICAgICAgIHR5cGU6IChlbE5vZGUuZGF0YXNldC5tZW50aW9uVHlwZSBhcyBDb250ZXh0TWVudGlvblsndHlwZSddKSA/PyAndXNlcicsXG4gICAgICAgICAgICBsYWJlbDogZWxOb2RlLmRhdGFzZXQubWVudGlvbkxhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudCA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgbWVudGlvbnMucHVzaChtZW50aW9uKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplTWVudGlvbihtZW50aW9uKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUuZGF0YXNldD8uc2xhc2hDb21tYW5kID09PSAndHJ1ZScpIHtcbiAgICAgICAgICBjb25zdCBzbGFzaDogU2xhc2hDb21tYW5kQ2hpcERhdGEgPSB7XG4gICAgICAgICAgICBpZDogZWxOb2RlLmRhdGFzZXQuc2xhc2hJZCA/PyAnJyxcbiAgICAgICAgICAgIGxhYmVsOiBlbE5vZGUuZGF0YXNldC5zbGFzaExhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudD8ucmVwbGFjZSgvXlxcLy8sICcnKSA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgc2xhc2hDb21tYW5kcy5wdXNoKHNsYXNoKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplU2xhc2hDb21tYW5kKHNsYXNoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICAgIHRleHQgKz0gJ1xcbidcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBlbE5vZGUuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspXG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0RJVicgfHwgZWxOb2RlLnRhZ05hbWUgPT09ICdQJykgdGV4dCArPSAnXFxuJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKVxuICAgIHJldHVybiB7IHRleHQ6IHRleHQucmVwbGFjZSgvXFxuKyQvLCAnJyksIG1lbnRpb25zLCBzbGFzaENvbW1hbmRzIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgY2xlYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSBlZGl0b3JSZWYuY3VycmVudC5pbm5lckhUTUwgPSAnJ1xuICAgIGNsb3NlVHJpZ2dlcigpXG4gICAgY2xvc2VTbGFzaFRyaWdnZXIoKVxuICAgIGNsb3NlSGFzaFRyaWdnZXIoKVxuICB9LCBbY2xvc2VUcmlnZ2VyLCBjbG9zZVNsYXNoVHJpZ2dlciwgY2xvc2VIYXNoVHJpZ2dlcl0pXG5cbiAgY29uc3QgZm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHtcbiAgICBlZGl0b3JSZWYsXG4gICAgdHJpZ2dlcixcbiAgICB1cGRhdGVUcmlnZ2VyLFxuICAgIGNsb3NlVHJpZ2dlcixcbiAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAsXG4gICAgc2xhc2hUcmlnZ2VyLFxuICAgIHVwZGF0ZVNsYXNoVHJpZ2dlcixcbiAgICBjbG9zZVNsYXNoVHJpZ2dlcixcbiAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgaGFzaFRyaWdnZXIsXG4gICAgdXBkYXRlSGFzaFRyaWdnZXIsXG4gICAgY2xvc2VIYXNoVHJpZ2dlcixcbiAgICByZXBsYWNlVHJpZ2dlcldpdGhTa2lsbENoaXAsXG4gICAgc2VyaWFsaXplLFxuICAgIGNsZWFyLFxuICAgIGZvY3VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFckQsU0FBU0MsZ0JBQWdCLFFBQVEsZ0NBQWdDO0FBQ2pFLFNBQVNDLHFCQUFxQixRQUFRLDZCQUE2Qjs7QUFrQm5FOztBQUdBO0FBQ0E7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