@projectcor/maia-components 2.11.58 → 2.11.59-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 (77) hide show
  1. package/lib/App.js +4 -2
  2. package/lib/components/atoms/icons/RocketIcon.js +31 -0
  3. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  4. package/lib/components/atoms/icons/WrenchIcon.js +42 -0
  5. package/lib/components/atoms/icons/index.js +3 -1
  6. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
  7. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +510 -0
  8. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +234 -0
  9. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +437 -0
  10. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +3 -0
  11. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
  12. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
  13. package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +80 -0
  14. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +2 -0
  15. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +722 -0
  16. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +165 -0
  17. package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +2 -0
  18. package/lib/components/molecules/AbmSection/index.js +2 -1
  19. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +21 -2
  20. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +60 -16
  21. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
  22. package/lib/components/molecules/ChatAIModal/constants.js +10 -2
  23. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.js +448 -0
  24. package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.styles.js +184 -0
  25. package/lib/components/molecules/ChatAIMyRoutines/index.js +2 -0
  26. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  27. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  28. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  29. package/lib/components/molecules/ChatFooter/ChatFooter.js +1 -1
  30. package/lib/components/molecules/SchedulesPage/SchedulesPage.js +610 -0
  31. package/lib/components/molecules/SchedulesPage/index.js +2 -0
  32. package/lib/components/molecules/Sidebar/Sidebar.js +61 -28
  33. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +15 -11
  34. package/lib/components/molecules/SkillsPage/SkillsPage.js +708 -0
  35. package/lib/components/molecules/SkillsPage/index.js +2 -0
  36. package/lib/components/molecules/maiaSectionModalStyles.js +91 -0
  37. package/lib/components/molecules/maiaSectionUiTokens.js +31 -0
  38. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +247 -50
  39. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
  40. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  41. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  42. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  43. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  44. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  45. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  46. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +16 -2
  47. package/lib/dev/DevAbmAgentModal.js +114 -0
  48. package/lib/dev/mocks/abmModalMocks.js +193 -0
  49. package/lib/hooks/useAgentModel/useCreateAgent.js +11 -10
  50. package/lib/hooks/useAgentModel/useUpdateAgent.js +12 -11
  51. package/lib/lang/br/index.js +294 -1
  52. package/lib/lang/en/index.js +294 -1
  53. package/lib/lang/es/index.js +294 -1
  54. package/lib/lang/fr/index.js +296 -2
  55. package/lib/services/maia/Agents/connectors.js +110 -0
  56. package/lib/services/maia/Agents/createAgent.js +1 -1
  57. package/lib/services/maia/Agents/getAgentById.js +3 -2
  58. package/lib/services/maia/Agents/skills.js +164 -0
  59. package/lib/services/maia/Agents/updateAgent.js +1 -1
  60. package/lib/services/maia/Orchestrator/orchestrator.js +1 -2
  61. package/lib/services/maia/Schedules/createSchedule.js +39 -0
  62. package/lib/services/maia/Schedules/deleteSchedule.js +36 -0
  63. package/lib/services/maia/Schedules/getMySchedules.js +55 -0
  64. package/lib/services/maia/Schedules/getSchedules.js +58 -0
  65. package/lib/services/maia/Schedules/index.js +5 -0
  66. package/lib/services/maia/Skills/createSkill.js +39 -0
  67. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  68. package/lib/services/maia/Skills/generateSkill.js +41 -0
  69. package/lib/services/maia/Skills/getSkills.js +90 -0
  70. package/lib/services/maia/Skills/updateSkill.js +39 -0
  71. package/lib/types/Chat.js +1 -1
  72. package/lib/types/agent.js +1 -1
  73. package/lib/types/agentModal.js +1 -1
  74. package/lib/types/agentSkill.js +2 -0
  75. package/lib/types/attachment.js +2 -0
  76. package/lib/types/skill.js +2 -0
  77. package/package.json +1 -1
@@ -0,0 +1,448 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ import ReactDOM from 'react-dom';
6
+ import { useCallback, useEffect, useRef, useState } from 'react';
7
+ import { useTranslation } from 'react-i18next';
8
+ import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
9
+ import { ChevronDown } from '@projectcor/icons/lib/components/ChevronDown';
10
+ import { Cross } from '@projectcor/icons/lib/components/Cross';
11
+ import { AbmTriggersSection } from '../AbmSection/AbmTriggersSection/AbmTriggersSection';
12
+ import { Backdrop } from '../../atoms/Backdrop';
13
+ import { fetchMaia } from '../../../services/maia/client';
14
+ import { getMySchedules, deleteSchedule } from '../../../services/maia/Schedules';
15
+ import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal/DeleteQuestionModal';
16
+ import { MAIAIsologo } from '../../atoms/icons';
17
+ import { Loader } from '../../atoms/Loader';
18
+ import { maiaSectionUi as u } from '../maiaSectionUiTokens';
19
+ import { SCAgentSelectorContainer, SCAgentSelectorList, SCAgentSelectorLoadingRow, SCAgentSelectorOption, SCAgentSelectorTrigger, MAIA_SECTION_MODAL_Z, SCFieldWithDropdownZ } from '../maiaSectionModalStyles';
20
+ import { SCMRActionsRow, SCMRBody, SCMRCardBody, SCMRCardButton, SCMRCardContentText, SCMRCardFooter, SCMRCardFrequency, SCMRCardHeader, SCMRCardMenu, SCMRCardMenuItem, SCMRCardMenuItems, SCMRCardTitleName, SCMRCardTopRow, SCMRCardsOuter, SCMRCardsRow, SCMRContainer, SCMRCreateButton, SCMRCreateButtonText, SCMREmptyStateButton, SCMREmptyStateColumn, SCMREmptyStateRoot, SCMREmptyStateSubtitle, SCMREmptyStateTitleBlock, SCMREmptyStateTitle, SCMRKebabButton, SCMRLoadWrapper, SCMRModalBodyScroll, SCMRModalCancelButton, SCMRModalCloseButton, SCMRModalContent, SCMRModalFooter, SCMRModalHeader, SCMRModalSaveButton, SCMRModalTitle, SCMRModalWrapper, SCMRStatusBadge, SCMRSubtitle, SCMRTitle, SCMRTitleInner, SCMRTitleWrap } from './ChatAIMyRoutines.styles';
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
+ export var ChatAIMyRoutines = function ChatAIMyRoutines() {
23
+ var _document$getElementB, _selectedAgent$id;
24
+ var _useTranslation = useTranslation('abm_agent_section'),
25
+ t = _useTranslation.t;
26
+ var _useState = useState([]),
27
+ _useState2 = _slicedToArray(_useState, 2),
28
+ routines = _useState2[0],
29
+ setRoutines = _useState2[1];
30
+ var _useState3 = useState(false),
31
+ _useState4 = _slicedToArray(_useState3, 2),
32
+ loading = _useState4[0],
33
+ setLoading = _useState4[1];
34
+ var _useState5 = useState(false),
35
+ _useState6 = _slicedToArray(_useState5, 2),
36
+ showCreatePanel = _useState6[0],
37
+ setShowCreatePanel = _useState6[1];
38
+ var _useState7 = useState(null),
39
+ _useState8 = _slicedToArray(_useState7, 2),
40
+ templateForm = _useState8[0],
41
+ setTemplateForm = _useState8[1];
42
+ var _useState9 = useState([]),
43
+ _useState0 = _slicedToArray(_useState9, 2),
44
+ agents = _useState0[0],
45
+ setAgents = _useState0[1];
46
+ var _useState1 = useState(false),
47
+ _useState10 = _slicedToArray(_useState1, 2),
48
+ loadingAgents = _useState10[0],
49
+ setLoadingAgents = _useState10[1];
50
+ var _useState11 = useState(null),
51
+ _useState12 = _slicedToArray(_useState11, 2),
52
+ selectedAgent = _useState12[0],
53
+ setSelectedAgent = _useState12[1];
54
+ var _useState13 = useState(false),
55
+ _useState14 = _slicedToArray(_useState13, 2),
56
+ dropdownOpen = _useState14[0],
57
+ setDropdownOpen = _useState14[1];
58
+ var _useState15 = useState(0),
59
+ _useState16 = _slicedToArray(_useState15, 2),
60
+ submitCount = _useState16[0],
61
+ setSubmitCount = _useState16[1];
62
+ var _useState17 = useState(false),
63
+ _useState18 = _slicedToArray(_useState17, 2),
64
+ isFormValid = _useState18[0],
65
+ setIsFormValid = _useState18[1];
66
+ var _useState19 = useState(null),
67
+ _useState20 = _slicedToArray(_useState19, 2),
68
+ menuOpenForId = _useState20[0],
69
+ setMenuOpenForId = _useState20[1];
70
+ var _useState21 = useState(null),
71
+ _useState22 = _slicedToArray(_useState21, 2),
72
+ routineToDelete = _useState22[0],
73
+ setRoutineToDelete = _useState22[1];
74
+ var dropdownRef = useRef(null);
75
+ var fetchRoutines = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
76
+ var result, _t;
77
+ return _regeneratorRuntime.wrap(function (_context) {
78
+ while (1) switch (_context.prev = _context.next) {
79
+ case 0:
80
+ setLoading(true);
81
+ _context.prev = 1;
82
+ _context.next = 2;
83
+ return getMySchedules({
84
+ limit: 100,
85
+ offset: 0
86
+ });
87
+ case 2:
88
+ result = _context.sent;
89
+ setRoutines(result.data);
90
+ _context.next = 4;
91
+ break;
92
+ case 3:
93
+ _context.prev = 3;
94
+ _t = _context["catch"](1);
95
+ case 4:
96
+ _context.prev = 4;
97
+ setLoading(false);
98
+ return _context.finish(4);
99
+ case 5:
100
+ case "end":
101
+ return _context.stop();
102
+ }
103
+ }, _callee, null, [[1, 3, 4, 5]]);
104
+ })), []);
105
+ var fetchAgents = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
106
+ var response, data, agentList, _t2;
107
+ return _regeneratorRuntime.wrap(function (_context2) {
108
+ while (1) switch (_context2.prev = _context2.next) {
109
+ case 0:
110
+ setLoadingAgents(true);
111
+ _context2.prev = 1;
112
+ _context2.next = 2;
113
+ return fetchMaia({
114
+ path: 'agents?agent_type=custom&limit=100&offset=0',
115
+ method: 'GET'
116
+ });
117
+ case 2:
118
+ response = _context2.sent;
119
+ _context2.next = 3;
120
+ return response.json();
121
+ case 3:
122
+ data = _context2.sent;
123
+ agentList = (data.data || []).map(function (a) {
124
+ return {
125
+ id: a.id,
126
+ name: a.name,
127
+ emoji: a.emoji || ''
128
+ };
129
+ });
130
+ setAgents(agentList);
131
+ if (agentList.length === 1) {
132
+ setSelectedAgent(agentList[0]);
133
+ setDropdownOpen(false);
134
+ }
135
+ _context2.next = 5;
136
+ break;
137
+ case 4:
138
+ _context2.prev = 4;
139
+ _t2 = _context2["catch"](1);
140
+ case 5:
141
+ _context2.prev = 5;
142
+ setLoadingAgents(false);
143
+ return _context2.finish(5);
144
+ case 6:
145
+ case "end":
146
+ return _context2.stop();
147
+ }
148
+ }, _callee2, null, [[1, 4, 5, 6]]);
149
+ })), []);
150
+ useEffect(function () {
151
+ fetchRoutines();
152
+ }, [fetchRoutines]);
153
+ useEffect(function () {
154
+ if (!showCreatePanel) {
155
+ return undefined;
156
+ }
157
+ setDropdownOpen(false);
158
+ fetchAgents();
159
+ return undefined;
160
+ }, [showCreatePanel, fetchAgents]);
161
+ useEffect(function () {
162
+ if (!dropdownOpen) {
163
+ return undefined;
164
+ }
165
+ var closeIfOutside = function closeIfOutside(e) {
166
+ var _dropdownRef$current;
167
+ if (!((_dropdownRef$current = dropdownRef.current) !== null && _dropdownRef$current !== void 0 && _dropdownRef$current.contains(e.target))) setDropdownOpen(false);
168
+ };
169
+ document.addEventListener('click', closeIfOutside);
170
+ return function () {
171
+ return document.removeEventListener('click', closeIfOutside);
172
+ };
173
+ }, [dropdownOpen]);
174
+ useEffect(function () {
175
+ var handleClickOutside = function handleClickOutside() {
176
+ if (menuOpenForId) setMenuOpenForId(null);
177
+ };
178
+ document.addEventListener('click', handleClickOutside);
179
+ return function () {
180
+ return document.removeEventListener('click', handleClickOutside);
181
+ };
182
+ }, [menuOpenForId]);
183
+ var handleCreateSuccess = useCallback(function () {
184
+ setSubmitCount(0);
185
+ setShowCreatePanel(false);
186
+ setSelectedAgent(null);
187
+ setTemplateForm(null);
188
+ setIsFormValid(false);
189
+ fetchRoutines();
190
+ }, [fetchRoutines]);
191
+ var handleConfirmDelete = useCallback(/*#__PURE__*/function () {
192
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(chat) {
193
+ var _t3;
194
+ return _regeneratorRuntime.wrap(function (_context3) {
195
+ while (1) switch (_context3.prev = _context3.next) {
196
+ case 0:
197
+ _context3.prev = 0;
198
+ _context3.next = 1;
199
+ return deleteSchedule(chat.id);
200
+ case 1:
201
+ setRoutineToDelete(null);
202
+ fetchRoutines();
203
+ _context3.next = 3;
204
+ break;
205
+ case 2:
206
+ _context3.prev = 2;
207
+ _t3 = _context3["catch"](0);
208
+ case 3:
209
+ case "end":
210
+ return _context3.stop();
211
+ }
212
+ }, _callee3, null, [[0, 2]]);
213
+ }));
214
+ return function (_x) {
215
+ return _ref3.apply(this, arguments);
216
+ };
217
+ }(), [fetchRoutines]);
218
+ var frequencyLabel = function frequencyLabel(schedule) {
219
+ var _map$schedule$schedul;
220
+ var map = {
221
+ minutely: t('triggersSection.frequencies.minutely'),
222
+ hourly: t('triggersSection.frequencies.hourly'),
223
+ daily: t('triggersSection.frequencies.daily'),
224
+ weekly: t('triggersSection.frequencies.weekly')
225
+ };
226
+ return (_map$schedule$schedul = map[schedule.schedule_type]) !== null && _map$schedule$schedul !== void 0 ? _map$schedule$schedul : schedule.schedule_type;
227
+ };
228
+ var statusLabel = function statusLabel(status) {
229
+ var _map$status;
230
+ var map = {
231
+ active: t('triggersSection.status.active'),
232
+ paused: t('triggersSection.status.paused'),
233
+ disabled: t('triggersSection.status.disabled')
234
+ };
235
+ return (_map$status = map[status]) !== null && _map$status !== void 0 ? _map$status : status;
236
+ };
237
+ var selectedLabel = selectedAgent ? "".concat(selectedAgent.emoji ? "".concat(selectedAgent.emoji, " ") : '').concat(selectedAgent.name) : t('triggersSection.selectAgent');
238
+ var deleteModalChat = routineToDelete ? {
239
+ title: routineToDelete.name || t('triggersSection.untitledRoutine'),
240
+ id: routineToDelete.id
241
+ } : null;
242
+ var container = (_document$getElementB = document.getElementById('modal-root-actions')) !== null && _document$getElementB !== void 0 ? _document$getElementB : document.body;
243
+ return /*#__PURE__*/_jsxs(SCMRContainer, {
244
+ $hasItems: !!routines.length,
245
+ children: [/*#__PURE__*/_jsx(MAIAIsologo, {}), /*#__PURE__*/_jsxs(SCMRBody, {
246
+ $canCreate: true,
247
+ children: [routines.length ? /*#__PURE__*/_jsxs(SCMRTitleWrap, {
248
+ children: [/*#__PURE__*/_jsxs(SCMRTitleInner, {
249
+ children: [/*#__PURE__*/_jsx(SCMRTitle, {
250
+ children: t('triggersSection.myRoutinesTitle')
251
+ }), /*#__PURE__*/_jsx(SCMRSubtitle, {
252
+ children: t('triggersSection.myRoutinesSubtitle')
253
+ })]
254
+ }), /*#__PURE__*/_jsx(SCMRActionsRow, {
255
+ children: /*#__PURE__*/_jsx(SCMRCreateButton, {
256
+ type: "button",
257
+ onClick: function onClick() {
258
+ return setShowCreatePanel(true);
259
+ },
260
+ children: /*#__PURE__*/_jsx(SCMRCreateButtonText, {
261
+ children: t('triggersSection.newRoutine')
262
+ })
263
+ })
264
+ })]
265
+ }) : null, loading ? /*#__PURE__*/_jsx(SCMRLoadWrapper, {
266
+ children: /*#__PURE__*/_jsx(Loader, {
267
+ size: "small"
268
+ })
269
+ }) : null, !loading && routines.length ? /*#__PURE__*/_jsx(SCMRCardsOuter, {
270
+ children: /*#__PURE__*/_jsx(SCMRCardsRow, {
271
+ children: routines.map(function (routine) {
272
+ var _routine$agent_name;
273
+ return /*#__PURE__*/_jsxs(SCMRCardButton, {
274
+ type: "button",
275
+ children: [/*#__PURE__*/_jsx(SCMRCardHeader, {
276
+ children: /*#__PURE__*/_jsxs(SCMRCardTopRow, {
277
+ children: [/*#__PURE__*/_jsx(SCMRCardTitleName, {
278
+ children: routine.name || t('triggersSection.untitledRoutine')
279
+ }), /*#__PURE__*/_jsx(SCMRKebabButton, {
280
+ type: "button",
281
+ "aria-label": t('triggersSection.deleteRoutine'),
282
+ onClick: function onClick(event) {
283
+ event.preventDefault();
284
+ event.stopPropagation();
285
+ setMenuOpenForId(function (prev) {
286
+ return prev === routine.id ? null : routine.id;
287
+ });
288
+ },
289
+ children: /*#__PURE__*/_jsx(MenuDots, {
290
+ color: "#999",
291
+ width: 15,
292
+ height: 15
293
+ })
294
+ })]
295
+ })
296
+ }), /*#__PURE__*/_jsxs(SCMRCardBody, {
297
+ children: [/*#__PURE__*/_jsx(SCMRCardContentText, {
298
+ children: routine.agent_emoji || routine.agent_name ? "".concat(routine.agent_emoji ? "".concat(routine.agent_emoji, " ") : '').concat((_routine$agent_name = routine.agent_name) !== null && _routine$agent_name !== void 0 ? _routine$agent_name : '') : ''
299
+ }), /*#__PURE__*/_jsxs(SCMRCardFooter, {
300
+ children: [/*#__PURE__*/_jsx(SCMRCardFrequency, {
301
+ children: frequencyLabel(routine)
302
+ }), /*#__PURE__*/_jsx(SCMRStatusBadge, {
303
+ $status: routine.status,
304
+ children: statusLabel(routine.status)
305
+ })]
306
+ })]
307
+ }), menuOpenForId === routine.id ? /*#__PURE__*/_jsx(SCMRCardMenu, {
308
+ onClick: function onClick(event) {
309
+ event.preventDefault();
310
+ event.stopPropagation();
311
+ },
312
+ children: /*#__PURE__*/_jsx(SCMRCardMenuItems, {
313
+ children: /*#__PURE__*/_jsx(SCMRCardMenuItem, {
314
+ type: "button",
315
+ onClick: function onClick() {
316
+ setRoutineToDelete(routine);
317
+ setMenuOpenForId(null);
318
+ },
319
+ children: t('triggersSection.deleteRoutine')
320
+ })
321
+ })
322
+ }) : null]
323
+ }, routine.id);
324
+ })
325
+ })
326
+ }) : null, !loading && !routines.length ? /*#__PURE__*/_jsxs(SCMREmptyStateRoot, {
327
+ children: [/*#__PURE__*/_jsx(SCMREmptyStateColumn, {
328
+ children: /*#__PURE__*/_jsxs(SCMREmptyStateTitleBlock, {
329
+ children: [/*#__PURE__*/_jsx(SCMREmptyStateTitle, {
330
+ children: t('triggersSection.myRoutinesEmptyTitle')
331
+ }), /*#__PURE__*/_jsx(SCMREmptyStateSubtitle, {
332
+ children: t('triggersSection.myRoutinesEmptyDescription')
333
+ })]
334
+ })
335
+ }), /*#__PURE__*/_jsx(SCMREmptyStateButton, {
336
+ type: "button",
337
+ onClick: function onClick() {
338
+ return setShowCreatePanel(true);
339
+ },
340
+ children: t('triggersSection.newRoutine')
341
+ })]
342
+ }) : null]
343
+ }), showCreatePanel && /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(Backdrop, {
344
+ onClick: function onClick() {
345
+ setShowCreatePanel(false);
346
+ setTemplateForm(null);
347
+ },
348
+ zIndex: MAIA_SECTION_MODAL_Z,
349
+ children: /*#__PURE__*/_jsxs(SCMRModalWrapper, {
350
+ onClick: function onClick(e) {
351
+ return e.stopPropagation();
352
+ },
353
+ children: [/*#__PURE__*/_jsxs(SCMRModalHeader, {
354
+ children: [/*#__PURE__*/_jsx(SCMRModalTitle, {
355
+ children: t('triggersSection.newRoutine')
356
+ }), /*#__PURE__*/_jsx(SCMRModalCloseButton, {
357
+ type: "button",
358
+ "aria-label": t('triggersSection.back'),
359
+ onClick: function onClick() {
360
+ setShowCreatePanel(false);
361
+ setTemplateForm(null);
362
+ },
363
+ children: /*#__PURE__*/_jsx(Cross, {
364
+ color: "#a6a6a6",
365
+ width: 18,
366
+ height: 18
367
+ })
368
+ })]
369
+ }), /*#__PURE__*/_jsxs(SCMRModalContent, {
370
+ children: [/*#__PURE__*/_jsxs(SCFieldWithDropdownZ, {
371
+ children: [t('triggersSection.agent'), /*#__PURE__*/_jsxs(SCAgentSelectorContainer, {
372
+ ref: dropdownRef,
373
+ children: [/*#__PURE__*/_jsxs(SCAgentSelectorTrigger, {
374
+ open: dropdownOpen,
375
+ onClick: function onClick() {
376
+ return setDropdownOpen(function (prev) {
377
+ return !prev;
378
+ });
379
+ },
380
+ type: "button",
381
+ children: [/*#__PURE__*/_jsx("span", {
382
+ children: loadingAgents ? t('triggersSection.loadingAgents') : selectedLabel
383
+ }), /*#__PURE__*/_jsx(ChevronDown, {
384
+ width: "14px",
385
+ height: "14px",
386
+ color: dropdownOpen ? u.agentAccent : u.textMuted
387
+ })]
388
+ }), dropdownOpen && /*#__PURE__*/_jsx(SCAgentSelectorList, {
389
+ children: loadingAgents ? /*#__PURE__*/_jsx(SCAgentSelectorLoadingRow, {
390
+ children: t('triggersSection.loadingAgents')
391
+ }) : agents.map(function (agent) {
392
+ return /*#__PURE__*/_jsxs(SCAgentSelectorOption, {
393
+ isSelected: (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) === agent.id,
394
+ onMouseDown: function onMouseDown(e) {
395
+ e.stopPropagation();
396
+ },
397
+ onClick: function onClick() {
398
+ setSelectedAgent(agent);
399
+ setDropdownOpen(false);
400
+ },
401
+ children: [agent.emoji ? "".concat(agent.emoji, " ") : '', agent.name]
402
+ }, agent.id);
403
+ })
404
+ })]
405
+ })]
406
+ }), /*#__PURE__*/_jsx(SCMRModalBodyScroll, {
407
+ children: /*#__PURE__*/_jsx(AbmTriggersSection, {
408
+ agentExternalId: (_selectedAgent$id = selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.id) !== null && _selectedAgent$id !== void 0 ? _selectedAgent$id : null,
409
+ initialForm: templateForm !== null && templateForm !== void 0 ? templateForm : undefined,
410
+ submitCount: submitCount,
411
+ onSuccess: handleCreateSuccess,
412
+ onValidityChange: setIsFormValid,
413
+ standaloneCreateOnly: true
414
+ })
415
+ })]
416
+ }), /*#__PURE__*/_jsxs(SCMRModalFooter, {
417
+ children: [/*#__PURE__*/_jsx(SCMRModalCancelButton, {
418
+ type: "button",
419
+ onClick: function onClick() {
420
+ setShowCreatePanel(false);
421
+ setTemplateForm(null);
422
+ },
423
+ children: t('triggersSection.back')
424
+ }), /*#__PURE__*/_jsx(SCMRModalSaveButton, {
425
+ type: "button",
426
+ disabled: !isFormValid,
427
+ onClick: function onClick() {
428
+ return setSubmitCount(function (prev) {
429
+ return prev + 1;
430
+ });
431
+ },
432
+ children: t('triggersSection.save')
433
+ })]
434
+ })]
435
+ })
436
+ }), container), deleteModalChat ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
437
+ action: "routine",
438
+ chat: deleteModalChat,
439
+ onClose: function onClose() {
440
+ return setRoutineToDelete(null);
441
+ },
442
+ handlers: {
443
+ handleConfirmAction: handleConfirmDelete
444
+ }
445
+ }) : null]
446
+ });
447
+ };
448
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdERPTSIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VUcmFuc2xhdGlvbiIsIk1lbnVEb3RzIiwiQ2hldnJvbkRvd24iLCJDcm9zcyIsIkFibVRyaWdnZXJzU2VjdGlvbiIsIkJhY2tkcm9wIiwiZmV0Y2hNYWlhIiwiZ2V0TXlTY2hlZHVsZXMiLCJkZWxldGVTY2hlZHVsZSIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJNQUlBSXNvbG9nbyIsIkxvYWRlciIsIm1haWFTZWN0aW9uVWkiLCJ1IiwiU0NBZ2VudFNlbGVjdG9yQ29udGFpbmVyIiwiU0NBZ2VudFNlbGVjdG9yTGlzdCIsIlNDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3ciLCJTQ0FnZW50U2VsZWN0b3JPcHRpb24iLCJTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyIiwiTUFJQV9TRUNUSU9OX01PREFMX1oiLCJTQ0ZpZWxkV2l0aERyb3Bkb3duWiIsIlNDTVJBY3Rpb25zUm93IiwiU0NNUkJvZHkiLCJTQ01SQ2FyZEJvZHkiLCJTQ01SQ2FyZEJ1dHRvbiIsIlNDTVJDYXJkQ29udGVudFRleHQiLCJTQ01SQ2FyZEZvb3RlciIsIlNDTVJDYXJkRnJlcXVlbmN5IiwiU0NNUkNhcmRIZWFkZXIiLCJTQ01SQ2FyZE1lbnUiLCJTQ01SQ2FyZE1lbnVJdGVtIiwiU0NNUkNhcmRNZW51SXRlbXMiLCJTQ01SQ2FyZFRpdGxlTmFtZSIsIlNDTVJDYXJkVG9wUm93IiwiU0NNUkNhcmRzT3V0ZXIiLCJTQ01SQ2FyZHNSb3ciLCJTQ01SQ29udGFpbmVyIiwiU0NNUkNyZWF0ZUJ1dHRvbiIsIlNDTVJDcmVhdGVCdXR0b25UZXh0IiwiU0NNUkVtcHR5U3RhdGVCdXR0b24iLCJTQ01SRW1wdHlTdGF0ZUNvbHVtbiIsIlNDTVJFbXB0eVN0YXRlUm9vdCIsIlNDTVJFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2siLCJTQ01SRW1wdHlTdGF0ZVRpdGxlIiwiU0NNUktlYmFiQnV0dG9uIiwiU0NNUkxvYWRXcmFwcGVyIiwiU0NNUk1vZGFsQm9keVNjcm9sbCIsIlNDTVJNb2RhbENhbmNlbEJ1dHRvbiIsIlNDTVJNb2RhbENsb3NlQnV0dG9uIiwiU0NNUk1vZGFsQ29udGVudCIsIlNDTVJNb2RhbEZvb3RlciIsIlNDTVJNb2RhbEhlYWRlciIsIlNDTVJNb2RhbFNhdmVCdXR0b24iLCJTQ01STW9kYWxUaXRsZSIsIlNDTVJNb2RhbFdyYXBwZXIiLCJTQ01SU3RhdHVzQmFkZ2UiLCJTQ01SU3VidGl0bGUiLCJTQ01SVGl0bGUiLCJTQ01SVGl0bGVJbm5lciIsIlNDTVJUaXRsZVdyYXAiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQ2hhdEFJTXlSb3V0aW5lcyIsIl9kb2N1bWVudCRnZXRFbGVtZW50QiIsIl9zZWxlY3RlZEFnZW50JGlkIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInJvdXRpbmVzIiwic2V0Um91dGluZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93Q3JlYXRlUGFuZWwiLCJzZXRTaG93Q3JlYXRlUGFuZWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInRlbXBsYXRlRm9ybSIsInNldFRlbXBsYXRlRm9ybSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiYWdlbnRzIiwic2V0QWdlbnRzIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwibG9hZGluZ0FnZW50cyIsInNldExvYWRpbmdBZ2VudHMiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic2VsZWN0ZWRBZ2VudCIsInNldFNlbGVjdGVkQWdlbnQiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiZHJvcGRvd25PcGVuIiwic2V0RHJvcGRvd25PcGVuIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInN1Ym1pdENvdW50Iiwic2V0U3VibWl0Q291bnQiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwiaXNGb3JtVmFsaWQiLCJzZXRJc0Zvcm1WYWxpZCIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJtZW51T3BlbkZvcklkIiwic2V0TWVudU9wZW5Gb3JJZCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJyb3V0aW5lVG9EZWxldGUiLCJzZXRSb3V0aW5lVG9EZWxldGUiLCJkcm9wZG93blJlZiIsImZldGNoUm91dGluZXMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3VsdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJsaW1pdCIsIm9mZnNldCIsInNlbnQiLCJkYXRhIiwiZmluaXNoIiwic3RvcCIsImZldGNoQWdlbnRzIiwiX2NhbGxlZTIiLCJyZXNwb25zZSIsImFnZW50TGlzdCIsIl90MiIsIl9jb250ZXh0MiIsInBhdGgiLCJtZXRob2QiLCJqc29uIiwibWFwIiwiYSIsImlkIiwibmFtZSIsImVtb2ppIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2xvc2VJZk91dHNpZGUiLCJlIiwiX2Ryb3Bkb3duUmVmJGN1cnJlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiaGFuZGxlQ3JlYXRlU3VjY2VzcyIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmMyIsIl9jYWxsZWUzIiwiY2hhdCIsIl90MyIsIl9jb250ZXh0MyIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJmcmVxdWVuY3lMYWJlbCIsInNjaGVkdWxlIiwiX21hcCRzY2hlZHVsZSRzY2hlZHVsIiwibWludXRlbHkiLCJob3VybHkiLCJkYWlseSIsIndlZWtseSIsInNjaGVkdWxlX3R5cGUiLCJzdGF0dXNMYWJlbCIsInN0YXR1cyIsIl9tYXAkc3RhdHVzIiwiYWN0aXZlIiwicGF1c2VkIiwiZGlzYWJsZWQiLCJzZWxlY3RlZExhYmVsIiwiY29uY2F0IiwiZGVsZXRlTW9kYWxDaGF0IiwidGl0bGUiLCJjb250YWluZXIiLCJnZXRFbGVtZW50QnlJZCIsImJvZHkiLCIkaGFzSXRlbXMiLCJjaGlsZHJlbiIsIiRjYW5DcmVhdGUiLCJ0eXBlIiwib25DbGljayIsInNpemUiLCJyb3V0aW5lIiwiX3JvdXRpbmUkYWdlbnRfbmFtZSIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwiYWdlbnRfZW1vamkiLCJhZ2VudF9uYW1lIiwiJHN0YXR1cyIsImNyZWF0ZVBvcnRhbCIsInpJbmRleCIsInJlZiIsIm9wZW4iLCJhZ2VudEFjY2VudCIsInRleHRNdXRlZCIsImFnZW50IiwiaXNTZWxlY3RlZCIsIm9uTW91c2VEb3duIiwiYWdlbnRFeHRlcm5hbElkIiwiaW5pdGlhbEZvcm0iLCJvblN1Y2Nlc3MiLCJvblZhbGlkaXR5Q2hhbmdlIiwic3RhbmRhbG9uZUNyZWF0ZU9ubHkiLCJhY3Rpb24iLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU15Um91dGluZXMvQ2hhdEFJTXlSb3V0aW5lcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IEFibVRyaWdnZXJzU2VjdGlvbiB9IGZyb20gJy4uL0FibVNlY3Rpb24vQWJtVHJpZ2dlcnNTZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbidcbmltcG9ydCB0eXBlIHsgVHJpZ2dlckZvcm1TdGF0ZSB9IGZyb20gJy4uL0FibVNlY3Rpb24vQWJtVHJpZ2dlcnNTZWN0aW9uL0FibVRyaWdnZXJzU2VjdGlvbi5pbnRlcmZhY2UnXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBnZXRNeVNjaGVkdWxlcywgZGVsZXRlU2NoZWR1bGUsIHR5cGUgU2NoZWR1bGVXaXRoQWdlbnRSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2NoZWR1bGVzJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBNQUlBSXNvbG9nbyB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgbWFpYVNlY3Rpb25VaSBhcyB1IH0gZnJvbSAnLi4vbWFpYVNlY3Rpb25VaVRva2VucydcbmltcG9ydCB7XG4gIFNDQWdlbnRTZWxlY3RvckNvbnRhaW5lcixcbiAgU0NBZ2VudFNlbGVjdG9yTGlzdCxcbiAgU0NBZ2VudFNlbGVjdG9yTG9hZGluZ1JvdyxcbiAgU0NBZ2VudFNlbGVjdG9yT3B0aW9uLFxuICBTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyLFxuICBNQUlBX1NFQ1RJT05fTU9EQUxfWixcbiAgU0NGaWVsZFdpdGhEcm9wZG93blosXG59IGZyb20gJy4uL21haWFTZWN0aW9uTW9kYWxTdHlsZXMnXG5pbXBvcnQge1xuICBTQ01SQWN0aW9uc1JvdyxcbiAgU0NNUkJvZHksXG4gIFNDTVJDYXJkQm9keSxcbiAgU0NNUkNhcmRCdXR0b24sXG4gIFNDTVJDYXJkQ29udGVudFRleHQsXG4gIFNDTVJDYXJkRm9vdGVyLFxuICBTQ01SQ2FyZEZyZXF1ZW5jeSxcbiAgU0NNUkNhcmRIZWFkZXIsXG4gIFNDTVJDYXJkTWVudSxcbiAgU0NNUkNhcmRNZW51SXRlbSxcbiAgU0NNUkNhcmRNZW51SXRlbXMsXG4gIFNDTVJDYXJkVGl0bGVOYW1lLFxuICBTQ01SQ2FyZFRvcFJvdyxcbiAgU0NNUkNhcmRzT3V0ZXIsXG4gIFNDTVJDYXJkc1JvdyxcbiAgU0NNUkNvbnRhaW5lcixcbiAgU0NNUkNyZWF0ZUJ1dHRvbixcbiAgU0NNUkNyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVJFbXB0eVN0YXRlQnV0dG9uLFxuICBTQ01SRW1wdHlTdGF0ZUNvbHVtbixcbiAgU0NNUkVtcHR5U3RhdGVSb290LFxuICBTQ01SRW1wdHlTdGF0ZVN1YnRpdGxlLFxuICBTQ01SRW1wdHlTdGF0ZVRpdGxlQmxvY2ssXG4gIFNDTVJFbXB0eVN0YXRlVGl0bGUsXG4gIFNDTVJLZWJhYkJ1dHRvbixcbiAgU0NNUkxvYWRXcmFwcGVyLFxuICBTQ01STW9kYWxCb2R5U2Nyb2xsLFxuICBTQ01STW9kYWxDYW5jZWxCdXR0b24sXG4gIFNDTVJNb2RhbENsb3NlQnV0dG9uLFxuICBTQ01STW9kYWxDb250ZW50LFxuICBTQ01STW9kYWxGb290ZXIsXG4gIFNDTVJNb2RhbEhlYWRlcixcbiAgU0NNUk1vZGFsU2F2ZUJ1dHRvbixcbiAgU0NNUk1vZGFsVGl0bGUsXG4gIFNDTVJNb2RhbFdyYXBwZXIsXG4gIFNDTVJTdGF0dXNCYWRnZSxcbiAgU0NNUlN1YnRpdGxlLFxuICBTQ01SVGl0bGUsXG4gIFNDTVJUaXRsZUlubmVyLFxuICBTQ01SVGl0bGVXcmFwLFxufSBmcm9tICcuL0NoYXRBSU15Um91dGluZXMuc3R5bGVzJ1xuXG50eXBlIEFnZW50T3B0aW9uID0geyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGVtb2ppOiBzdHJpbmcgfVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTXlSb3V0aW5lcyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYWJtX2FnZW50X3NlY3Rpb24nKVxuICBjb25zdCBbcm91dGluZXMsIHNldFJvdXRpbmVzXSA9IHVzZVN0YXRlPFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2VbXT4oW10pXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd0NyZWF0ZVBhbmVsLCBzZXRTaG93Q3JlYXRlUGFuZWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt0ZW1wbGF0ZUZvcm0sIHNldFRlbXBsYXRlRm9ybV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPFRyaWdnZXJGb3JtU3RhdGU+IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2FnZW50cywgc2V0QWdlbnRzXSA9IHVzZVN0YXRlPEFnZW50T3B0aW9uW10+KFtdKVxuICBjb25zdCBbbG9hZGluZ0FnZW50cywgc2V0TG9hZGluZ0FnZW50c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlbGVjdGVkQWdlbnQsIHNldFNlbGVjdGVkQWdlbnRdID0gdXNlU3RhdGU8QWdlbnRPcHRpb24gfCBudWxsPihudWxsKVxuICBjb25zdCBbZHJvcGRvd25PcGVuLCBzZXREcm9wZG93bk9wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzdWJtaXRDb3VudCwgc2V0U3VibWl0Q291bnRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzRm9ybVZhbGlkLCBzZXRJc0Zvcm1WYWxpZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lbnVPcGVuRm9ySWQsIHNldE1lbnVPcGVuRm9ySWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3JvdXRpbmVUb0RlbGV0ZSwgc2V0Um91dGluZVRvRGVsZXRlXSA9IHVzZVN0YXRlPFNjaGVkdWxlV2l0aEFnZW50UmVzcG9uc2UgfCBudWxsPihudWxsKVxuICBjb25zdCBkcm9wZG93blJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBmZXRjaFJvdXRpbmVzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZ2V0TXlTY2hlZHVsZXMoeyBsaW1pdDogMTAwLCBvZmZzZXQ6IDAgfSlcbiAgICAgIHNldFJvdXRpbmVzKHJlc3VsdC5kYXRhKVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2lsZW50bHkgZmFpbFxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgZmV0Y2hBZ2VudHMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0TG9hZGluZ0FnZW50cyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGg6ICdhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9MTAwJm9mZnNldD0wJyxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBhZ2VudExpc3Q6IEFnZW50T3B0aW9uW10gPSAoZGF0YS5kYXRhIHx8IFtdKS5tYXAoKGE6IGFueSkgPT4gKHtcbiAgICAgICAgaWQ6IGEuaWQsXG4gICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgZW1vamk6IGEuZW1vamkgfHwgJycsXG4gICAgICB9KSlcbiAgICAgIHNldEFnZW50cyhhZ2VudExpc3QpXG4gICAgICBpZiAoYWdlbnRMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzZXRTZWxlY3RlZEFnZW50KGFnZW50TGlzdFswXSlcbiAgICAgICAgc2V0RHJvcGRvd25PcGVuKGZhbHNlKVxuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2lsZW50bHkgZmFpbFxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nQWdlbnRzKGZhbHNlKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFJvdXRpbmVzKClcbiAgfSwgW2ZldGNoUm91dGluZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93Q3JlYXRlUGFuZWwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgc2V0RHJvcGRvd25PcGVuKGZhbHNlKVxuICAgIGZldGNoQWdlbnRzKClcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFtzaG93Q3JlYXRlUGFuZWwsIGZldGNoQWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZHJvcGRvd25PcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IGNsb3NlSWZPdXRzaWRlID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmICghZHJvcGRvd25SZWYuY3VycmVudD8uY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHNldERyb3Bkb3duT3BlbihmYWxzZSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjbG9zZUlmT3V0c2lkZSlcbiAgfSwgW2Ryb3Bkb3duT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JJZCkgc2V0TWVudU9wZW5Gb3JJZChudWxsKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gIH0sIFttZW51T3BlbkZvcklkXSlcblxuICBjb25zdCBoYW5kbGVDcmVhdGVTdWNjZXNzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFN1Ym1pdENvdW50KDApXG4gICAgc2V0U2hvd0NyZWF0ZVBhbmVsKGZhbHNlKVxuICAgIHNldFNlbGVjdGVkQWdlbnQobnVsbClcbiAgICBzZXRUZW1wbGF0ZUZvcm0obnVsbClcbiAgICBzZXRJc0Zvcm1WYWxpZChmYWxzZSlcbiAgICBmZXRjaFJvdXRpbmVzKClcbiAgfSwgW2ZldGNoUm91dGluZXNdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZVNjaGVkdWxlKGNoYXQuaWQpXG4gICAgICAgIHNldFJvdXRpbmVUb0RlbGV0ZShudWxsKVxuICAgICAgICBmZXRjaFJvdXRpbmVzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBzaWxlbnRseSBmYWlsXG4gICAgICB9XG4gICAgfSxcbiAgICBbZmV0Y2hSb3V0aW5lc11cbiAgKVxuXG4gIGNvbnN0IGZyZXF1ZW5jeUxhYmVsID0gKHNjaGVkdWxlOiBTY2hlZHVsZVdpdGhBZ2VudFJlc3BvbnNlKSA9PiB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgbWludXRlbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy5taW51dGVseScpLFxuICAgICAgaG91cmx5OiB0KCd0cmlnZ2Vyc1NlY3Rpb24uZnJlcXVlbmNpZXMuaG91cmx5JyksXG4gICAgICBkYWlseTogdCgndHJpZ2dlcnNTZWN0aW9uLmZyZXF1ZW5jaWVzLmRhaWx5JyksXG4gICAgICB3ZWVrbHk6IHQoJ3RyaWdnZXJzU2VjdGlvbi5mcmVxdWVuY2llcy53ZWVrbHknKSxcbiAgICB9XG4gICAgcmV0dXJuIG1hcFtzY2hlZHVsZS5zY2hlZHVsZV90eXBlXSA/PyBzY2hlZHVsZS5zY2hlZHVsZV90eXBlXG4gIH1cblxuICBjb25zdCBzdGF0dXNMYWJlbCA9IChzdGF0dXM6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIGFjdGl2ZTogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5hY3RpdmUnKSxcbiAgICAgIHBhdXNlZDogdCgndHJpZ2dlcnNTZWN0aW9uLnN0YXR1cy5wYXVzZWQnKSxcbiAgICAgIGRpc2FibGVkOiB0KCd0cmlnZ2Vyc1NlY3Rpb24uc3RhdHVzLmRpc2FibGVkJyksXG4gICAgfVxuICAgIHJldHVybiBtYXBbc3RhdHVzXSA/PyBzdGF0dXNcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGVkTGFiZWwgPSBzZWxlY3RlZEFnZW50XG4gICAgPyBgJHtzZWxlY3RlZEFnZW50LmVtb2ppID8gYCR7c2VsZWN0ZWRBZ2VudC5lbW9qaX0gYCA6ICcnfSR7c2VsZWN0ZWRBZ2VudC5uYW1lfWBcbiAgICA6IHQoJ3RyaWdnZXJzU2VjdGlvbi5zZWxlY3RBZ2VudCcpXG5cbiAgY29uc3QgZGVsZXRlTW9kYWxDaGF0ID0gcm91dGluZVRvRGVsZXRlXG4gICAgPyB7IHRpdGxlOiByb3V0aW5lVG9EZWxldGUubmFtZSB8fCB0KCd0cmlnZ2Vyc1NlY3Rpb24udW50aXRsZWRSb3V0aW5lJyksIGlkOiByb3V0aW5lVG9EZWxldGUuaWQgfVxuICAgIDogbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKSA/PyBkb2N1bWVudC5ib2R5XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNUkNvbnRhaW5lciAkaGFzSXRlbXM9eyEhcm91dGluZXMubGVuZ3RofT5cbiAgICAgIDxNQUlBSXNvbG9nbyAvPlxuXG4gICAgICA8U0NNUkJvZHkgJGNhbkNyZWF0ZT5cbiAgICAgICAge3JvdXRpbmVzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNUlRpdGxlV3JhcD5cbiAgICAgICAgICAgIDxTQ01SVGl0bGVJbm5lcj5cbiAgICAgICAgICAgICAgPFNDTVJUaXRsZT57dCgndHJpZ2dlcnNTZWN0aW9uLm15Um91dGluZXNUaXRsZScpfTwvU0NNUlRpdGxlPlxuICAgICAgICAgICAgICA8U0NNUlN1YnRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc1N1YnRpdGxlJyl9PC9TQ01SU3VidGl0bGU+XG4gICAgICAgICAgICA8L1NDTVJUaXRsZUlubmVyPlxuICAgICAgICAgICAgPFNDTVJBY3Rpb25zUm93PlxuICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0NyZWF0ZVBhbmVsKHRydWUpfT5cbiAgICAgICAgICAgICAgICA8U0NNUkNyZWF0ZUJ1dHRvblRleHQ+e3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9PC9TQ01SQ3JlYXRlQnV0dG9uVGV4dD5cbiAgICAgICAgICAgICAgPC9TQ01SQ3JlYXRlQnV0dG9uPlxuICAgICAgICAgICAgPC9TQ01SQWN0aW9uc1Jvdz5cbiAgICAgICAgICA8L1NDTVJUaXRsZVdyYXA+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgPC9TQ01STG9hZFdyYXBwZXI+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHshbG9hZGluZyAmJiByb3V0aW5lcy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTVJDYXJkc091dGVyPlxuICAgICAgICAgICAgPFNDTVJDYXJkc1Jvdz5cbiAgICAgICAgICAgICAge3JvdXRpbmVzLm1hcChyb3V0aW5lID0+IChcbiAgICAgICAgICAgICAgICA8U0NNUkNhcmRCdXR0b24ga2V5PXtyb3V0aW5lLmlkfSB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICA8U0NNUkNhcmRIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNUkNhcmRUaXRsZU5hbWU+e3JvdXRpbmUubmFtZSB8fCB0KCd0cmlnZ2Vyc1NlY3Rpb24udW50aXRsZWRSb3V0aW5lJyl9PC9TQ01SQ2FyZFRpdGxlTmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNUktlYmFiQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ3RyaWdnZXJzU2VjdGlvbi5kZWxldGVSb3V0aW5lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudU9wZW5Gb3JJZChwcmV2ID0+IChwcmV2ID09PSByb3V0aW5lLmlkID8gbnVsbCA6IHJvdXRpbmUuaWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjOTk5XCIgd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNUktlYmFiQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZEJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZENvbnRlbnRUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgIHtyb3V0aW5lLmFnZW50X2Vtb2ppIHx8IHJvdXRpbmUuYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtyb3V0aW5lLmFnZW50X2Vtb2ppID8gYCR7cm91dGluZS5hZ2VudF9lbW9qaX0gYCA6ICcnfSR7cm91dGluZS5hZ2VudF9uYW1lID8/ICcnfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJyd9XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRDb250ZW50VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZEZyZXF1ZW5jeT57ZnJlcXVlbmN5TGFiZWwocm91dGluZSl9PC9TQ01SQ2FyZEZyZXF1ZW5jeT5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNUlN0YXR1c0JhZGdlICRzdGF0dXM9e3JvdXRpbmUuc3RhdHVzfT57c3RhdHVzTGFiZWwocm91dGluZS5zdGF0dXMpfTwvU0NNUlN0YXR1c0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgPC9TQ01SQ2FyZEJvZHk+XG4gICAgICAgICAgICAgICAgICB7bWVudU9wZW5Gb3JJZCA9PT0gcm91dGluZS5pZCA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDTVJDYXJkTWVudVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZE1lbnVJdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01SQ2FyZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Um91dGluZVRvRGVsZXRlKHJvdXRpbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudU9wZW5Gb3JJZChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgndHJpZ2dlcnNTZWN0aW9uLmRlbGV0ZVJvdXRpbmUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkTWVudUl0ZW1zPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVJDYXJkTWVudT5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NNUkNhcmRCdXR0b24+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TQ01SQ2FyZHNSb3c+XG4gICAgICAgICAgPC9TQ01SQ2FyZHNPdXRlcj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgeyFsb2FkaW5nICYmICFyb3V0aW5lcy5sZW5ndGggPyAoXG4gICAgICAgICAgPFNDTVJFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgPFNDTVJFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgICAgICA8U0NNUkVtcHR5U3RhdGVUaXRsZT57dCgndHJpZ2dlcnNTZWN0aW9uLm15Um91dGluZXNFbXB0eVRpdGxlJyl9PC9TQ01SRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCd0cmlnZ2Vyc1NlY3Rpb24ubXlSb3V0aW5lc0VtcHR5RGVzY3JpcHRpb24nKX08L1NDTVJFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvU0NNUkVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgPC9TQ01SRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgIDxTQ01SRW1wdHlTdGF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0NyZWF0ZVBhbmVsKHRydWUpfT5cbiAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9XG4gICAgICAgICAgICA8L1NDTVJFbXB0eVN0YXRlQnV0dG9uPlxuICAgICAgICAgIDwvU0NNUkVtcHR5U3RhdGVSb290PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NNUkJvZHk+XG5cbiAgICAgIHtzaG93Q3JlYXRlUGFuZWwgJiZcbiAgICAgICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxCYWNrZHJvcFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRTaG93Q3JlYXRlUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICAgIHNldFRlbXBsYXRlRm9ybShudWxsKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHpJbmRleD17TUFJQV9TRUNUSU9OX01PREFMX1p9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNDTVJNb2RhbFdyYXBwZXIgb25DbGljaz17ZSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbEhlYWRlcj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsVGl0bGU+e3QoJ3RyaWdnZXJzU2VjdGlvbi5uZXdSb3V0aW5lJyl9PC9TQ01STW9kYWxUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsQ2xvc2VCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgndHJpZ2dlcnNTZWN0aW9uLmJhY2snKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0NyZWF0ZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBzZXRUZW1wbGF0ZUZvcm0obnVsbClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8L1NDTVJNb2RhbENsb3NlQnV0dG9uPlxuICAgICAgICAgICAgICA8L1NDTVJNb2RhbEhlYWRlcj5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFNDRmllbGRXaXRoRHJvcGRvd25aPlxuICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5hZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgPFNDQWdlbnRTZWxlY3RvckNvbnRhaW5lciByZWY9e2Ryb3Bkb3duUmVmIGFzIGFueX0+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FnZW50U2VsZWN0b3JUcmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgb3Blbj17ZHJvcGRvd25PcGVufVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldERyb3Bkb3duT3BlbihwcmV2ID0+ICFwcmV2KX1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntsb2FkaW5nQWdlbnRzID8gdCgndHJpZ2dlcnNTZWN0aW9uLmxvYWRpbmdBZ2VudHMnKSA6IHNlbGVjdGVkTGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG93biB3aWR0aD1cIjE0cHhcIiBoZWlnaHQ9XCIxNHB4XCIgY29sb3I9e2Ryb3Bkb3duT3BlbiA/IHUuYWdlbnRBY2NlbnQgOiB1LnRleHRNdXRlZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JUcmlnZ2VyPlxuICAgICAgICAgICAgICAgICAgICB7ZHJvcGRvd25PcGVuICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtsb2FkaW5nQWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yTG9hZGluZ1Jvdz57dCgndHJpZ2dlcnNTZWN0aW9uLmxvYWRpbmdBZ2VudHMnKX08L1NDQWdlbnRTZWxlY3RvckxvYWRpbmdSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHMubWFwKGFnZW50ID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBZ2VudFNlbGVjdG9yT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2FnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRBZ2VudD8uaWQgPT09IGFnZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZEFnZW50KGFnZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREcm9wZG93bk9wZW4oZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthZ2VudC5lbW9qaSA/IGAke2FnZW50LmVtb2ppfSBgIDogJyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWdlbnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQWdlbnRTZWxlY3Rvck9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JMaXN0PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FnZW50U2VsZWN0b3JDb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9TQ0ZpZWxkV2l0aERyb3Bkb3duWj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsQm9keVNjcm9sbD5cbiAgICAgICAgICAgICAgICAgIDxBYm1UcmlnZ2Vyc1NlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRFeHRlcm5hbElkPXtzZWxlY3RlZEFnZW50Py5pZCA/PyBudWxsfVxuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRm9ybT17dGVtcGxhdGVGb3JtID8/IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgICAgICAgc3VibWl0Q291bnQ9e3N1Ym1pdENvdW50fVxuICAgICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M9e2hhbmRsZUNyZWF0ZVN1Y2Nlc3N9XG4gICAgICAgICAgICAgICAgICAgIG9uVmFsaWRpdHlDaGFuZ2U9e3NldElzRm9ybVZhbGlkfVxuICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lQ3JlYXRlT25seVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1NDTVJNb2RhbEJvZHlTY3JvbGw+XG4gICAgICAgICAgICAgIDwvU0NNUk1vZGFsQ29udGVudD5cbiAgICAgICAgICAgICAgPFNDTVJNb2RhbEZvb3Rlcj5cbiAgICAgICAgICAgICAgICA8U0NNUk1vZGFsQ2FuY2VsQnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2hvd0NyZWF0ZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBzZXRUZW1wbGF0ZUZvcm0obnVsbClcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoJ3RyaWdnZXJzU2VjdGlvbi5iYWNrJyl9XG4gICAgICAgICAgICAgICAgPC9TQ01STW9kYWxDYW5jZWxCdXR0b24+XG4gICAgICAgICAgICAgICAgPFNDTVJNb2RhbFNhdmVCdXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc0Zvcm1WYWxpZH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFN1Ym1pdENvdW50KHByZXYgPT4gcHJldiArIDEpfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KCd0cmlnZ2Vyc1NlY3Rpb24uc2F2ZScpfVxuICAgICAgICAgICAgICAgIDwvU0NNUk1vZGFsU2F2ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TQ01STW9kYWxGb290ZXI+XG4gICAgICAgICAgICA8L1NDTVJNb2RhbFdyYXBwZXI+XG4gICAgICAgICAgPC9CYWNrZHJvcD4sXG4gICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICl9XG5cbiAgICAgIHtkZWxldGVNb2RhbENoYXQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgYWN0aW9uPVwicm91dGluZVwiXG4gICAgICAgICAgY2hhdD17ZGVsZXRlTW9kYWxDaGF0fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFJvdXRpbmVUb0RlbGV0ZShudWxsKX1cbiAgICAgICAgICBoYW5kbGVycz17eyBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlIH19XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1NDTVJDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQSxPQUFPQSxRQUFRLE1BQU0sV0FBVztBQUNoQyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNo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