@projectcor/maia-components 2.11.23-6 → 2.11.24
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.
- package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +2 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.js +6 -4
- package/lib/components/atoms/icons/index.js +1 -2
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +3 -16
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +4 -47
- package/lib/components/molecules/Sidebar/Sidebar.js +325 -259
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +23 -18
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +37 -54
- package/lib/dev/Providers.js +2 -2
- package/lib/hooks/useChats/useChats.js +4 -12
- package/lib/lang/br/index.js +2 -11
- package/lib/lang/en/index.js +2 -11
- package/lib/lang/es/index.js +2 -11
- package/lib/lang/fr/index.js +2 -11
- package/lib/mocks/mockChats.js +395 -0
- package/lib/mocks/mockedUser.js +169 -0
- package/lib/services/maia/Chats/getChatsByUserId.js +8 -14
- package/lib/services/maia/Chats/index.js +1 -5
- package/lib/services/maia/client.js +9 -44
- package/lib/store/chatsStore.types.js +2 -10
- package/lib/store/useChatsStore.js +31 -81
- package/lib/types/Chat.js +1 -3
- package/lib/types/global.d.js +1 -1
- package/package.json +1 -1
- package/lib/components/atoms/icons/ChatConversation.js +0 -40
- package/lib/components/molecules/Sidebar/SidebarChats.styles.js +0 -73
- package/lib/components/molecules/Sidebar/SidebarChatsSection.js +0 -69
- package/lib/components/molecules/Sidebar/SidebarChatsSectionModal.js +0 -151
- package/lib/components/molecules/Sidebar/SidebarHistoryChat.js +0 -238
- package/lib/components/molecules/Sidebar/sidebarChats.helpers.js +0 -70
- package/lib/components/molecules/Sidebar/sidebarChats.types.js +0 -14
- package/lib/dev/fixtures/devUser.js +0 -173
- package/lib/dev/fixtures/mockedUser.js +0 -169
- package/lib/services/maia/Chats/getChatMessagesV2.js +0 -114
- package/lib/services/maia/Chats/getSessionsGroupedV2.js +0 -70
|
@@ -1,25 +1,32 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
6
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
7
|
/* eslint-disable no-param-reassign */
|
|
8
8
|
/* eslint-disable @typescript-eslint/no-shadow */
|
|
9
9
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
10
|
/* eslint-disable no-nested-ternary */
|
|
11
11
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
12
12
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
13
|
-
import { useEffect,
|
|
14
|
-
import { AnimatePresence } from 'framer-motion';
|
|
13
|
+
import { useEffect, useRef, useState } from 'react';
|
|
15
14
|
import { ChevronDoubleLeft } from '@projectcor/icons/lib/components/ChevronDoubleLeft';
|
|
15
|
+
import { CUButton } from '@projectcor/button/lib/components/CUButton';
|
|
16
|
+
import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
|
|
17
|
+
import { Pencil } from '@projectcor/icons/lib/components/Pencil';
|
|
18
|
+
import { Trash } from '@projectcor/icons/lib/components/Trash';
|
|
16
19
|
import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
|
|
17
20
|
import { EmptyHistoryIcon } from '../../atoms/icons/EmptyHistory';
|
|
21
|
+
import { useResizeListener } from '../../../hooks/useResize';
|
|
18
22
|
import { useChats } from '../../../hooks/useChats';
|
|
19
23
|
import { Loader } from '../../atoms/Loader';
|
|
20
|
-
import { ErrorState, MaiaStoreIcon, MyAgentsNavIcon, NewChat } from '../../atoms/icons';
|
|
24
|
+
import { ErrorState, MAIAIcon, MaiaStoreIcon, MyAgentsNavIcon, NewChat } from '../../atoms/icons';
|
|
21
25
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
22
26
|
import { useT } from '../../../hooks/useT';
|
|
27
|
+
import { OptionItem } from '../../atoms/CardMenu/CardMenu';
|
|
28
|
+
import { EditQuestionModal } from '../../organisms/EditQuestionModal';
|
|
29
|
+
import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal';
|
|
23
30
|
import { ErrorIcon } from '../../atoms/icons/ErrorIcon';
|
|
24
31
|
import { useUser } from '../../../context/cor-user';
|
|
25
32
|
import { OnboardingModalButton } from '../../atoms/OnboardingModalButton';
|
|
@@ -27,61 +34,190 @@ import { FeedbackButton } from '../../atoms/FeedbackButton';
|
|
|
27
34
|
import { useGlobalContext } from '../../../context/global-context';
|
|
28
35
|
import { fetchMaia } from '../../../services/maia/client';
|
|
29
36
|
import { mapCORLang } from '../../../lang/utils';
|
|
30
|
-
import { SCSWrapperCollapsedButton, SCSWrapperNewChatIcon } from './Sidebar.styles';
|
|
31
|
-
import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel, SCSSidebarChatsScroll, SCSSidebarErrorStateColumn, SCSSidebarErrorStateTop, SCSSidebarErrorBanner, SCSSidebarErrorBannerIconWrap, SCSSidebarErrorBannerMessage, SCSSidebarLoadingArea, SCSSidebarLoadMoreRow, SCSSidebarEmptyChats, SCSSidebarEmptyChatsText, SCSSidebarChatsFooter, SCSSidebarFooterActions } from './Sidebar.layout.styles';
|
|
32
|
-
import { SCSSidebarSectionModalBackdropMotion } from './SidebarChats.styles';
|
|
33
|
-
import { SidebarChatsSection } from './SidebarChatsSection';
|
|
34
|
-
import { SidebarChatsSectionModal } from './SidebarChatsSectionModal';
|
|
35
|
-
import { buildSidebarSections, groupChatsBySidebarSection } from './sidebarChats.helpers';
|
|
36
|
-
import { SIDEBAR_SECTION_TRANSLATION_KEYS } from './sidebarChats.types';
|
|
37
|
-
import { getChatsStoreState } from '../../../store/useChatsStore';
|
|
38
|
-
import { SECTION_MODAL_SESSIONS_PAGE_LIMIT, SIDEBAR_SESSIONS_PAGE_LIMIT } from '../../../store/chatsStore.types';
|
|
37
|
+
import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon } from './Sidebar.styles';
|
|
38
|
+
import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsHeading, SCSSidebarAgentsHeadingText, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel, SCSSidebarConversationsHeading, SCSSidebarChatsScroll, SCSSidebarErrorStateColumn, SCSSidebarErrorStateTop, SCSSidebarErrorBanner, SCSSidebarErrorBannerIconWrap, SCSSidebarErrorBannerMessage, SCSSidebarLoadingArea, SCSSidebarLoadMoreRow, SCSSidebarEmptyChats, SCSSidebarEmptyChatsText, SCSSidebarChatsFooter, SCSSidebarFooterActions } from './Sidebar.layout.styles';
|
|
39
39
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
40
|
+
var actions = {
|
|
41
|
+
edit: function edit(props) {
|
|
42
|
+
return /*#__PURE__*/_jsx(EditQuestionModal, _objectSpread({}, props));
|
|
43
|
+
},
|
|
44
|
+
"delete": function _delete(props) {
|
|
45
|
+
return /*#__PURE__*/_jsx(DeleteQuestionModal, _objectSpread({}, props));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/** Abrevia "especialista"/"especialist" → "Esp." (ES/PT) y "specialist" → "Spec." (EN) en el nombre del agente. */
|
|
50
|
+
function abbreviateSpecialistInAgentName(agentName) {
|
|
51
|
+
if (!agentName || typeof agentName !== 'string') return agentName;
|
|
52
|
+
return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
|
|
53
|
+
}
|
|
54
|
+
var ListHistoryChat = function ListHistoryChat(_ref) {
|
|
55
|
+
var chat = _ref.chat,
|
|
56
|
+
_onClick = _ref.onClick,
|
|
57
|
+
isModalOpen = _ref.isModalOpen,
|
|
58
|
+
onOpenModal = _ref.onOpenModal,
|
|
59
|
+
onCloseModal = _ref.onCloseModal,
|
|
60
|
+
handlers = _ref.handlers,
|
|
61
|
+
isSelected = _ref.isSelected;
|
|
62
|
+
var textRef = useRef(null);
|
|
63
|
+
var agentRef = useRef(null);
|
|
64
|
+
var _useResizeListener = useResizeListener(textRef, [chat.title]),
|
|
65
|
+
showTooltip = _useResizeListener.showTooltip;
|
|
66
|
+
var _useResizeListener2 = useResizeListener(agentRef, [chat.agent]),
|
|
67
|
+
showTooltipAgent = _useResizeListener2.showTooltip;
|
|
56
68
|
var _useT = useT(),
|
|
57
|
-
t = _useT.t
|
|
58
|
-
|
|
59
|
-
var _useState = useState(true),
|
|
69
|
+
t = _useT.t;
|
|
70
|
+
var _useState = useState(null),
|
|
60
71
|
_useState2 = _slicedToArray(_useState, 2),
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
var
|
|
72
|
+
action = _useState2[0],
|
|
73
|
+
setAction = _useState2[1];
|
|
74
|
+
var menuItems = [{
|
|
75
|
+
label: t('history.menu.rename'),
|
|
76
|
+
onClickItem: function onClickItem(chatId) {
|
|
77
|
+
setAction('edit');
|
|
78
|
+
onOpenModal(chatId);
|
|
79
|
+
},
|
|
80
|
+
Icon: Pencil,
|
|
81
|
+
eventKey: EVENTS.pmAiMenuEdit
|
|
82
|
+
}, {
|
|
83
|
+
label: t('history.menu.delete'),
|
|
84
|
+
onClickItem: function onClickItem(chatId) {
|
|
85
|
+
setAction('delete');
|
|
86
|
+
onOpenModal(chatId);
|
|
87
|
+
},
|
|
88
|
+
Icon: Trash,
|
|
89
|
+
eventKey: EVENTS.pmAiMenuDelete
|
|
90
|
+
}];
|
|
91
|
+
var handleConfirmAction = function handleConfirmAction(chatData) {
|
|
92
|
+
if (action === 'edit') {
|
|
93
|
+
handlers.handleUpdateChat(chatData);
|
|
94
|
+
} else {
|
|
95
|
+
handlers.handleDeleteChat(chatData);
|
|
96
|
+
}
|
|
97
|
+
setAction(null);
|
|
98
|
+
onCloseModal();
|
|
99
|
+
};
|
|
100
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
101
|
+
children: [/*#__PURE__*/_jsxs(SCLHCWrapperContent, {
|
|
102
|
+
onClick: function onClick(e) {
|
|
103
|
+
e.stopPropagation();
|
|
104
|
+
_onClick(chat);
|
|
105
|
+
},
|
|
106
|
+
isModalOpen: isModalOpen,
|
|
107
|
+
isSelected: isSelected,
|
|
108
|
+
children: [/*#__PURE__*/_jsxs(SCLHCWrapper, {
|
|
109
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
110
|
+
title: showTooltip ? chat.title : '',
|
|
111
|
+
children: /*#__PURE__*/_jsx(SCLHCWrapperTitle, {
|
|
112
|
+
ref: textRef,
|
|
113
|
+
children: chat.title || t('conversations.emptyLabel')
|
|
114
|
+
})
|
|
115
|
+
}), /*#__PURE__*/_jsx(Tooltip, {
|
|
116
|
+
title: showTooltipAgent ? chat.agent + (chat.projectName ? " - ".concat(chat.projectName) : '') : '',
|
|
117
|
+
children: /*#__PURE__*/_jsxs(SCLHCWrapperAgent, {
|
|
118
|
+
children: [chat.agentType === 'clone' ? /*#__PURE__*/_jsx(MAIAIcon, {
|
|
119
|
+
width: 14,
|
|
120
|
+
height: 14
|
|
121
|
+
}) : /*#__PURE__*/_jsx("span", {
|
|
122
|
+
style: {
|
|
123
|
+
fontSize: '14px'
|
|
124
|
+
},
|
|
125
|
+
children: chat.emoji
|
|
126
|
+
}), /*#__PURE__*/_jsxs(SCLHCWrapperAgentText, {
|
|
127
|
+
ref: agentRef,
|
|
128
|
+
children: [chat.agentType === 'clone' ? abbreviateSpecialistInAgentName(chat.agent) : chat.agent, chat.projectName && " - ".concat(chat.projectName)]
|
|
129
|
+
})]
|
|
130
|
+
})
|
|
131
|
+
})]
|
|
132
|
+
}), /*#__PURE__*/_jsxs(SCLHCWrapperButtonActions, {
|
|
133
|
+
children: [/*#__PURE__*/_jsx(CUButton, {
|
|
134
|
+
iconOnly: true,
|
|
135
|
+
size: "small",
|
|
136
|
+
variant: "text",
|
|
137
|
+
onClick: function onClick(event) {
|
|
138
|
+
event.stopPropagation();
|
|
139
|
+
onOpenModal(chat.id);
|
|
140
|
+
},
|
|
141
|
+
children: /*#__PURE__*/_jsx(MenuDots, {
|
|
142
|
+
width: 20,
|
|
143
|
+
height: 20
|
|
144
|
+
})
|
|
145
|
+
}), isModalOpen && !action && /*#__PURE__*/_jsx("div", {
|
|
146
|
+
"data-modal-container": true,
|
|
147
|
+
style: {
|
|
148
|
+
position: 'absolute',
|
|
149
|
+
top: '32px',
|
|
150
|
+
right: '16px',
|
|
151
|
+
backgroundColor: 'white',
|
|
152
|
+
zIndex: 1000,
|
|
153
|
+
display: 'flex',
|
|
154
|
+
flexDirection: 'column',
|
|
155
|
+
borderRadius: '4px',
|
|
156
|
+
border: '1px solid rgba(224, 224, 224, 1)',
|
|
157
|
+
minWidth: '124px'
|
|
158
|
+
},
|
|
159
|
+
children: menuItems.map(function (_ref2) {
|
|
160
|
+
var label = _ref2.label,
|
|
161
|
+
onClickItem = _ref2.onClickItem,
|
|
162
|
+
Icon = _ref2.Icon,
|
|
163
|
+
eventKey = _ref2.eventKey;
|
|
164
|
+
return /*#__PURE__*/_jsx(OptionItem, {
|
|
165
|
+
label: label,
|
|
166
|
+
onClick: function onClick() {
|
|
167
|
+
return onClickItem(chat.id);
|
|
168
|
+
},
|
|
169
|
+
Icon: Icon,
|
|
170
|
+
eventKey: eventKey
|
|
171
|
+
}, label);
|
|
172
|
+
})
|
|
173
|
+
})]
|
|
174
|
+
})]
|
|
175
|
+
}, "conversation-".concat(chat.sessionExternalId)), !!action && actions[action]({
|
|
176
|
+
onClose: function onClose() {
|
|
177
|
+
onCloseModal();
|
|
178
|
+
setAction(null);
|
|
179
|
+
},
|
|
180
|
+
chat: chat,
|
|
181
|
+
handlers: {
|
|
182
|
+
handleConfirmAction: handleConfirmAction,
|
|
183
|
+
handleSetIsOpenModal: onCloseModal
|
|
184
|
+
}
|
|
185
|
+
})]
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
export var Sidebar = function Sidebar(_ref3) {
|
|
189
|
+
var _user$permissions;
|
|
190
|
+
var onGoToChat = _ref3.onGoToChat,
|
|
191
|
+
_ref3$onError = _ref3.onError,
|
|
192
|
+
onError = _ref3$onError === void 0 ? function () {
|
|
193
|
+
return null;
|
|
194
|
+
} : _ref3$onError,
|
|
195
|
+
handleGoToHome = _ref3.handleGoToHome,
|
|
196
|
+
handleOpenMarketplace = _ref3.handleOpenMarketplace,
|
|
197
|
+
showNewChat = _ref3.showNewChat,
|
|
198
|
+
refetchChats = _ref3.refetchChats,
|
|
199
|
+
handleSetRefetchChats = _ref3.handleSetRefetchChats,
|
|
200
|
+
hasError = _ref3.hasError,
|
|
201
|
+
resetSelectedChatRef = _ref3.resetSelectedChatRef,
|
|
202
|
+
_ref3$agentsNavActive = _ref3.agentsNavActive,
|
|
203
|
+
agentsNavActive = _ref3$agentsNavActive === void 0 ? null : _ref3$agentsNavActive;
|
|
204
|
+
var _useT2 = useT(),
|
|
205
|
+
t = _useT2.t,
|
|
206
|
+
i18n = _useT2.i18n;
|
|
207
|
+
var _useState3 = useState(true),
|
|
64
208
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
65
|
-
|
|
66
|
-
|
|
209
|
+
isOpen = _useState4[0],
|
|
210
|
+
setIsOpen = _useState4[1];
|
|
67
211
|
var _useState5 = useState(null),
|
|
68
212
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var _useState7 = useState(
|
|
72
|
-
clients: false,
|
|
73
|
-
projects: false,
|
|
74
|
-
agentsByCompany: false
|
|
75
|
-
}),
|
|
213
|
+
isOpenModal = _useState6[0],
|
|
214
|
+
setIsOpenModal = _useState6[1];
|
|
215
|
+
var _useState7 = useState(null),
|
|
76
216
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
var _useState9 = useState(null),
|
|
80
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
81
|
-
selectedChat = _useState0[0],
|
|
82
|
-
setSelectedChat = _useState0[1];
|
|
217
|
+
selectedChat = _useState8[0],
|
|
218
|
+
setSelectedChat = _useState8[1];
|
|
83
219
|
var chatsFetchedRef = useRef(false);
|
|
84
|
-
var
|
|
220
|
+
var chatsContainerRef = useRef(null);
|
|
85
221
|
var user = useUser();
|
|
86
222
|
var eventAmplitude = useEvent();
|
|
87
223
|
var _useGlobalContext = useGlobalContext(),
|
|
@@ -97,31 +233,17 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
97
233
|
deleteChat = _useChats.deleteChat,
|
|
98
234
|
updateChat = _useChats.updateChat,
|
|
99
235
|
fetchChats = _useChats.fetchChats,
|
|
236
|
+
limit = _useChats.limit,
|
|
237
|
+
offset = _useChats.offset,
|
|
100
238
|
hasMoreChats = _useChats.hasMoreChats,
|
|
101
239
|
loadMoreChats = _useChats.loadMoreChats,
|
|
102
|
-
isLoadingMoreChats = _useChats.isLoadingMoreChats
|
|
103
|
-
sessionsGroupHasMore = _useChats.sessionsGroupHasMore;
|
|
104
|
-
var showFullSidebarErrorColumn = hasError && !chats.length;
|
|
105
|
-
var showSidebarErrorFooterBanner = hasError && chats.length > 0;
|
|
240
|
+
isLoadingMoreChats = _useChats.isLoadingMoreChats;
|
|
106
241
|
var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
|
|
107
242
|
var canCreateAgents = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create);
|
|
108
243
|
var canViewAgents = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.view);
|
|
109
|
-
var
|
|
110
|
-
var
|
|
111
|
-
var
|
|
112
|
-
return groupChatsBySidebarSection(chats);
|
|
113
|
-
}, [chats]);
|
|
114
|
-
var sidebarSections = useMemo(function () {
|
|
115
|
-
return buildSidebarSections(groupedChats, function (key) {
|
|
116
|
-
var _user$company;
|
|
117
|
-
return key === 'agentsByCompany' ? t(SIDEBAR_SECTION_TRANSLATION_KEYS[key], {
|
|
118
|
-
companyName: ((_user$company = user.company) === null || _user$company === void 0 ? void 0 : _user$company.trim()) || '—'
|
|
119
|
-
}) : t(SIDEBAR_SECTION_TRANSLATION_KEYS[key]);
|
|
120
|
-
}, sessionsGroupHasMore);
|
|
121
|
-
}, [groupedChats, t, user.company, sessionsGroupHasMore]);
|
|
122
|
-
var expandedSection = expandedSectionModalKey ? sidebarSections.find(function (section) {
|
|
123
|
-
return section.key === expandedSectionModalKey;
|
|
124
|
-
}) || null : null;
|
|
244
|
+
var showMarketplaceSidebarButton = !!canCreateAgents && !!window.MAIA_MARKETPLACE_MAIAKER;
|
|
245
|
+
var agentNavButtonCount = (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0);
|
|
246
|
+
var showAgentsNavBlock = showMarketplaceSidebarButton || canViewAgents;
|
|
125
247
|
useEffect(function () {
|
|
126
248
|
if (resetSelectedChatRef) {
|
|
127
249
|
resetSelectedChatRef.current = function () {
|
|
@@ -135,12 +257,12 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
135
257
|
};
|
|
136
258
|
}, [resetSelectedChatRef]);
|
|
137
259
|
var handleDeleteChat = /*#__PURE__*/function () {
|
|
138
|
-
var
|
|
260
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
|
|
139
261
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
140
262
|
while (1) switch (_context.prev = _context.next) {
|
|
141
263
|
case 0:
|
|
142
264
|
deleteChat(chat.sessionExternalId);
|
|
143
|
-
|
|
265
|
+
setIsOpenModal(null);
|
|
144
266
|
handleGoToHome();
|
|
145
267
|
case 1:
|
|
146
268
|
case "end":
|
|
@@ -149,121 +271,69 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
149
271
|
}, _callee);
|
|
150
272
|
}));
|
|
151
273
|
return function handleDeleteChat(_x) {
|
|
152
|
-
return
|
|
274
|
+
return _ref4.apply(this, arguments);
|
|
153
275
|
};
|
|
154
276
|
}();
|
|
155
277
|
var handleUpdateChat = function handleUpdateChat(chat) {
|
|
156
278
|
updateChat(chat);
|
|
157
|
-
|
|
279
|
+
setIsOpenModal(null);
|
|
158
280
|
};
|
|
159
|
-
var
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
});
|
|
166
|
-
};
|
|
167
|
-
var handleCloseChatMenu = function handleCloseChatMenu() {
|
|
168
|
-
setChatMenuState(null);
|
|
169
|
-
};
|
|
170
|
-
var handleOpenSectionModal = /*#__PURE__*/function () {
|
|
171
|
-
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(sectionKey) {
|
|
172
|
-
var _getChatsStoreState, storeLimit;
|
|
173
|
-
return _regeneratorRuntime.wrap(function (_context2) {
|
|
174
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
175
|
-
case 0:
|
|
176
|
-
setChatMenuState(null);
|
|
177
|
-
_getChatsStoreState = getChatsStoreState(), storeLimit = _getChatsStoreState.limit;
|
|
178
|
-
if (!(storeLimit === SIDEBAR_SESSIONS_PAGE_LIMIT)) {
|
|
179
|
-
_context2.next = 1;
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
_context2.next = 1;
|
|
183
|
-
return fetchChats({
|
|
184
|
-
limit: SECTION_MODAL_SESSIONS_PAGE_LIMIT,
|
|
185
|
-
offset: 0,
|
|
186
|
-
showGlobalLoader: false
|
|
187
|
-
});
|
|
188
|
-
case 1:
|
|
189
|
-
setExpandedSectionModalKey(sectionKey);
|
|
190
|
-
case 2:
|
|
191
|
-
case "end":
|
|
192
|
-
return _context2.stop();
|
|
193
|
-
}
|
|
194
|
-
}, _callee2);
|
|
195
|
-
}));
|
|
196
|
-
return function handleOpenSectionModal(_x2) {
|
|
197
|
-
return _ref3.apply(this, arguments);
|
|
198
|
-
};
|
|
199
|
-
}();
|
|
200
|
-
var handleCloseSectionModal = function handleCloseSectionModal() {
|
|
201
|
-
setExpandedSectionModalKey(null);
|
|
202
|
-
setChatMenuState(null);
|
|
203
|
-
};
|
|
204
|
-
var handleToggleSectionCollapse = function handleToggleSectionCollapse(sectionKey) {
|
|
205
|
-
setCollapsedSections(function (prev) {
|
|
206
|
-
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, sectionKey, !prev[sectionKey]));
|
|
207
|
-
});
|
|
281
|
+
var handleOpenModal = function handleOpenModal(chatId) {
|
|
282
|
+
if (isOpenModal && isOpenModal !== chatId) {
|
|
283
|
+
setIsOpenModal(null);
|
|
284
|
+
} else {
|
|
285
|
+
setIsOpenModal(chatId);
|
|
286
|
+
}
|
|
208
287
|
};
|
|
209
|
-
var
|
|
210
|
-
|
|
211
|
-
onGoToChat(chatData);
|
|
288
|
+
var handleCloseModal = function handleCloseModal() {
|
|
289
|
+
setIsOpenModal(null);
|
|
212
290
|
};
|
|
213
291
|
useEffect(function () {
|
|
214
292
|
var handleClickOutside = function handleClickOutside(event) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
setChatMenuState(null);
|
|
218
|
-
}
|
|
219
|
-
if (expandedSectionModalKey && !target.closest('[data-section-modal-container]')) {
|
|
220
|
-
setExpandedSectionModalKey(null);
|
|
221
|
-
setChatMenuState(null);
|
|
293
|
+
if (isOpenModal && !event.target.closest('[data-modal-container]')) {
|
|
294
|
+
setIsOpenModal(null);
|
|
222
295
|
}
|
|
223
296
|
};
|
|
224
|
-
if (
|
|
297
|
+
if (isOpenModal) {
|
|
225
298
|
document.addEventListener('mousedown', handleClickOutside);
|
|
226
299
|
}
|
|
227
300
|
return function () {
|
|
228
301
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
229
302
|
};
|
|
230
|
-
}, [
|
|
303
|
+
}, [isOpenModal]);
|
|
231
304
|
var handleToggleSidebar = function handleToggleSidebar() {
|
|
232
|
-
if (
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
if (expandedSectionModalKey) {
|
|
236
|
-
setExpandedSectionModalKey(null);
|
|
305
|
+
if (isOpenModal) {
|
|
306
|
+
setIsOpenModal(null);
|
|
237
307
|
}
|
|
238
308
|
setIsOpen(function (prev) {
|
|
239
309
|
return !prev;
|
|
240
310
|
});
|
|
241
311
|
};
|
|
242
312
|
var handleOpenCreateAgent = /*#__PURE__*/function () {
|
|
243
|
-
var
|
|
313
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
244
314
|
var response, data, maiakerAgent;
|
|
245
|
-
return _regeneratorRuntime.wrap(function (
|
|
246
|
-
while (1) switch (
|
|
315
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
316
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
247
317
|
case 0:
|
|
248
|
-
|
|
318
|
+
_context2.next = 1;
|
|
249
319
|
return fetchMaia({
|
|
250
320
|
path: "agents?agent_type=clone&lang=".concat(mapCORLang(i18n.language)),
|
|
251
321
|
method: 'GET'
|
|
252
322
|
});
|
|
253
323
|
case 1:
|
|
254
|
-
response =
|
|
255
|
-
|
|
324
|
+
response = _context2.sent;
|
|
325
|
+
_context2.next = 2;
|
|
256
326
|
return response.json();
|
|
257
327
|
case 2:
|
|
258
|
-
data =
|
|
328
|
+
data = _context2.sent;
|
|
259
329
|
maiakerAgent = (data.data || []).find(function (agent) {
|
|
260
330
|
return agent.type === 'clone' && agent.entity === 'global';
|
|
261
331
|
});
|
|
262
332
|
if (maiakerAgent) {
|
|
263
|
-
|
|
333
|
+
_context2.next = 3;
|
|
264
334
|
break;
|
|
265
335
|
}
|
|
266
|
-
return
|
|
336
|
+
return _context2.abrupt("return");
|
|
267
337
|
case 3:
|
|
268
338
|
setProject(null);
|
|
269
339
|
setClient === null || setClient === void 0 || setClient(null);
|
|
@@ -271,64 +341,85 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
271
341
|
handleGoToHome();
|
|
272
342
|
case 4:
|
|
273
343
|
case "end":
|
|
274
|
-
return
|
|
344
|
+
return _context2.stop();
|
|
275
345
|
}
|
|
276
|
-
},
|
|
346
|
+
}, _callee2);
|
|
277
347
|
}));
|
|
278
348
|
return function handleOpenCreateAgent() {
|
|
279
|
-
return
|
|
349
|
+
return _ref5.apply(this, arguments);
|
|
280
350
|
};
|
|
281
351
|
}();
|
|
282
352
|
useEffect(function () {
|
|
283
353
|
if (isOpen && !chatsFetchedRef.current) {
|
|
284
354
|
chatsFetchedRef.current = true;
|
|
285
355
|
fetchChats({
|
|
286
|
-
limit:
|
|
287
|
-
offset:
|
|
356
|
+
limit: limit,
|
|
357
|
+
offset: offset
|
|
288
358
|
});
|
|
289
359
|
return;
|
|
290
360
|
}
|
|
291
361
|
if (refetchChats) {
|
|
292
362
|
fetchChats({
|
|
293
|
-
limit:
|
|
294
|
-
offset:
|
|
363
|
+
limit: limit,
|
|
364
|
+
offset: offset
|
|
295
365
|
});
|
|
296
366
|
handleSetRefetchChats(false);
|
|
297
367
|
}
|
|
298
|
-
}, [isOpen, refetchChats, handleSetRefetchChats
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
368
|
+
}, [isOpen, refetchChats, handleSetRefetchChats]);
|
|
369
|
+
useEffect(function () {
|
|
370
|
+
var handleScroll = function handleScroll() {
|
|
371
|
+
if (!chatsContainerRef.current || !hasMoreChats || isLoadingMoreChats || hasError) {
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
var _chatsContainerRef$cu = chatsContainerRef.current,
|
|
375
|
+
scrollTop = _chatsContainerRef$cu.scrollTop,
|
|
376
|
+
scrollHeight = _chatsContainerRef$cu.scrollHeight,
|
|
377
|
+
clientHeight = _chatsContainerRef$cu.clientHeight;
|
|
378
|
+
var isAtBottom = scrollTop + clientHeight >= scrollHeight - 10;
|
|
379
|
+
if (isAtBottom) {
|
|
380
|
+
loadMoreChats();
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
var container = chatsContainerRef.current;
|
|
384
|
+
if (container) {
|
|
385
|
+
container.addEventListener('scroll', handleScroll);
|
|
386
|
+
}
|
|
387
|
+
return function () {
|
|
388
|
+
if (container) {
|
|
389
|
+
container.removeEventListener('scroll', handleScroll);
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
}, [hasMoreChats, isLoadingMoreChats, loadMoreChats, hasError]);
|
|
302
393
|
var handleNewChat = /*#__PURE__*/function () {
|
|
303
|
-
var
|
|
304
|
-
return _regeneratorRuntime.wrap(function (
|
|
305
|
-
while (1) switch (
|
|
394
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
395
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
396
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
306
397
|
case 0:
|
|
307
|
-
if (
|
|
308
|
-
|
|
398
|
+
if (isOpenModal) {
|
|
399
|
+
setIsOpenModal(null);
|
|
309
400
|
}
|
|
310
401
|
setSelectedChat(null);
|
|
311
|
-
|
|
402
|
+
_context3.next = 1;
|
|
312
403
|
return fetchChats({
|
|
313
|
-
limit:
|
|
404
|
+
limit: limit,
|
|
314
405
|
offset: 0
|
|
315
406
|
});
|
|
316
407
|
case 1:
|
|
317
408
|
handleGoToHome();
|
|
318
409
|
case 2:
|
|
319
410
|
case "end":
|
|
320
|
-
return
|
|
411
|
+
return _context3.stop();
|
|
321
412
|
}
|
|
322
|
-
},
|
|
413
|
+
}, _callee3);
|
|
323
414
|
}));
|
|
324
415
|
return function handleNewChat() {
|
|
325
|
-
return
|
|
416
|
+
return _ref6.apply(this, arguments);
|
|
326
417
|
};
|
|
327
418
|
}();
|
|
328
419
|
useEffect(function () {
|
|
329
420
|
var handleRefetchSession = function handleRefetchSession() {
|
|
330
421
|
fetchChats({
|
|
331
|
-
limit:
|
|
422
|
+
limit: 20,
|
|
332
423
|
offset: 0
|
|
333
424
|
});
|
|
334
425
|
};
|
|
@@ -336,7 +427,7 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
336
427
|
return function () {
|
|
337
428
|
document.removeEventListener('refetch-session', handleRefetchSession);
|
|
338
429
|
};
|
|
339
|
-
}, [
|
|
430
|
+
}, []);
|
|
340
431
|
var showNewChatButton = !showNewChat && !hasError && !loadingChats && ((userPermissions === null || userPermissions === void 0 ? void 0 : userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access) || !(userPermissions !== null && userPermissions !== void 0 && userPermissions.view) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.is_deleted) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_permissions) && !(selectedAgent !== null && selectedAgent !== void 0 && selectedAgent.has_not_access));
|
|
341
432
|
return /*#__PURE__*/_jsxs(SCSSidebarRoot, {
|
|
342
433
|
$isOpen: isOpen,
|
|
@@ -348,9 +439,9 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
348
439
|
onClick: handleToggleSidebar,
|
|
349
440
|
isOpen: isOpen,
|
|
350
441
|
children: /*#__PURE__*/_jsx(ChevronDoubleLeft, {
|
|
351
|
-
color: "
|
|
352
|
-
width:
|
|
353
|
-
height:
|
|
442
|
+
color: "rgba(102, 102, 102, 1)",
|
|
443
|
+
width: 20,
|
|
444
|
+
height: 20
|
|
354
445
|
})
|
|
355
446
|
})
|
|
356
447
|
}), showNewChatButton ? /*#__PURE__*/_jsx(Tooltip, {
|
|
@@ -358,47 +449,53 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
358
449
|
children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
|
|
359
450
|
onClick: handleNewChat,
|
|
360
451
|
children: /*#__PURE__*/_jsx(NewChat, {
|
|
361
|
-
width:
|
|
362
|
-
height:
|
|
363
|
-
color: "#4D4D4D"
|
|
452
|
+
width: 20,
|
|
453
|
+
height: 20
|
|
364
454
|
})
|
|
365
455
|
})
|
|
366
456
|
}) : null]
|
|
367
457
|
}), /*#__PURE__*/_jsxs(SCSSidebarBody, {
|
|
368
458
|
$isOpen: isOpen,
|
|
369
459
|
children: [isOpen ? /*#__PURE__*/_jsxs(SCSSidebarOpenPanel, {
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
460
|
+
children: [/*#__PURE__*/_jsxs(SCSSidebarAgentsBlock, {
|
|
461
|
+
children: [showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
462
|
+
children: [/*#__PURE__*/_jsx(SCSSidebarAgentsHeading, {
|
|
463
|
+
children: /*#__PURE__*/_jsx(SCSSidebarAgentsHeadingText, {
|
|
464
|
+
children: t('conversations.agentsSectionTitle')
|
|
465
|
+
})
|
|
466
|
+
}), /*#__PURE__*/_jsxs(SCSSidebarAgentsActions, {
|
|
467
|
+
children: [showMarketplaceSidebarButton ? /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
|
|
468
|
+
type: "button",
|
|
469
|
+
onClick: function onClick() {
|
|
470
|
+
eventAmplitude(EVENTS.aiChatMpOpen);
|
|
471
|
+
handleOpenCreateAgent();
|
|
472
|
+
},
|
|
473
|
+
$active: agentsNavActive === 'maiaker',
|
|
474
|
+
children: [/*#__PURE__*/_jsx(MaiaStoreIcon, {
|
|
475
|
+
size: 16
|
|
476
|
+
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
|
|
477
|
+
children: t('conversations.maiakerNav')
|
|
478
|
+
})]
|
|
479
|
+
}) : null, canViewAgents ? /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
|
|
480
|
+
type: "button",
|
|
481
|
+
onClick: handleOpenMarketplace,
|
|
482
|
+
$active: agentsNavActive === 'myAgents',
|
|
483
|
+
children: [/*#__PURE__*/_jsx(MyAgentsNavIcon, {
|
|
484
|
+
size: 16
|
|
485
|
+
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
|
|
486
|
+
children: t('conversations.myAgentsNav')
|
|
487
|
+
})]
|
|
488
|
+
}) : null]
|
|
489
|
+
})]
|
|
490
|
+
}) : null, /*#__PURE__*/_jsx(SCSSidebarConversationsHeading, {
|
|
491
|
+
children: t('conversations.title')
|
|
492
|
+
})]
|
|
396
493
|
}), /*#__PURE__*/_jsx(SCSSidebarChatsScroll, {
|
|
397
|
-
|
|
494
|
+
ref: chatsContainerRef,
|
|
495
|
+
$hasChats: chats.length > 0,
|
|
398
496
|
$offsetVariant: hasError ? 'error' : 'default',
|
|
399
497
|
$agentNavButtonCount: agentNavButtonCount,
|
|
400
|
-
|
|
401
|
-
children: showFullSidebarErrorColumn ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
|
|
498
|
+
children: hasError && !chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorStateColumn, {
|
|
402
499
|
children: [/*#__PURE__*/_jsx(SCSSidebarErrorStateTop, {
|
|
403
500
|
children: /*#__PURE__*/_jsx(ErrorState, {})
|
|
404
501
|
}), /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
|
|
@@ -411,24 +508,25 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
411
508
|
}) : loadingChats ? /*#__PURE__*/_jsx(SCSSidebarLoadingArea, {
|
|
412
509
|
children: /*#__PURE__*/_jsx(Loader, {})
|
|
413
510
|
}) : chats.length ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
414
|
-
children: [
|
|
415
|
-
return /*#__PURE__*/_jsx(
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
511
|
+
children: [chats.map(function (chat) {
|
|
512
|
+
return /*#__PURE__*/_jsx(ListHistoryChat, {
|
|
513
|
+
chat: chat,
|
|
514
|
+
onClick: function onClick(chatData) {
|
|
515
|
+
if (isOpenModal) {
|
|
516
|
+
setIsOpenModal(null);
|
|
517
|
+
}
|
|
518
|
+
setSelectedChat(chatData.sessionExternalId);
|
|
519
|
+
onGoToChat(chatData);
|
|
420
520
|
},
|
|
421
|
-
|
|
422
|
-
|
|
521
|
+
isModalOpen: isOpenModal === chat.id,
|
|
522
|
+
onOpenModal: handleOpenModal,
|
|
523
|
+
onCloseModal: handleCloseModal,
|
|
524
|
+
handlers: {
|
|
525
|
+
handleDeleteChat: handleDeleteChat,
|
|
526
|
+
handleUpdateChat: handleUpdateChat
|
|
423
527
|
},
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
onCloseChatMenu: handleCloseChatMenu,
|
|
427
|
-
handleDeleteChat: handleDeleteChat,
|
|
428
|
-
handleUpdateChat: handleUpdateChat,
|
|
429
|
-
selectedChatSessionExternalId: selectedChat,
|
|
430
|
-
onGoToChat: handleSelectConversation
|
|
431
|
-
}, "chat-section-".concat(section.key));
|
|
528
|
+
isSelected: selectedChat === chat.sessionExternalId
|
|
529
|
+
}, chat.id);
|
|
432
530
|
}), isLoadingMoreChats && /*#__PURE__*/_jsx(SCSSidebarLoadMoreRow, {
|
|
433
531
|
children: /*#__PURE__*/_jsx(Loader, {})
|
|
434
532
|
})]
|
|
@@ -438,7 +536,7 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
438
536
|
})]
|
|
439
537
|
})
|
|
440
538
|
}), /*#__PURE__*/_jsx(SCSSidebarChatsFooter, {
|
|
441
|
-
children:
|
|
539
|
+
children: hasError && chats.length ? /*#__PURE__*/_jsxs(SCSSidebarErrorBanner, {
|
|
442
540
|
children: [/*#__PURE__*/_jsx(SCSSidebarErrorBannerIconWrap, {
|
|
443
541
|
children: /*#__PURE__*/_jsx(ErrorIcon, {})
|
|
444
542
|
}), /*#__PURE__*/_jsx(SCSSidebarErrorBannerMessage, {
|
|
@@ -454,39 +552,7 @@ export var Sidebar = function Sidebar(_ref) {
|
|
|
454
552
|
isOpen: isOpen
|
|
455
553
|
}) : null, /*#__PURE__*/_jsx(OnboardingModalButton, {})]
|
|
456
554
|
})]
|
|
457
|
-
}), /*#__PURE__*/_jsx(AnimatePresence, {
|
|
458
|
-
children: expandedSectionModalKey && expandedSection ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
459
|
-
children: [/*#__PURE__*/_jsx(SCSSidebarSectionModalBackdropMotion, {
|
|
460
|
-
"aria-hidden": true,
|
|
461
|
-
initial: {
|
|
462
|
-
opacity: 0
|
|
463
|
-
},
|
|
464
|
-
animate: {
|
|
465
|
-
opacity: 1
|
|
466
|
-
},
|
|
467
|
-
exit: {
|
|
468
|
-
opacity: 0
|
|
469
|
-
},
|
|
470
|
-
transition: {
|
|
471
|
-
duration: 0.2,
|
|
472
|
-
ease: 'easeOut'
|
|
473
|
-
}
|
|
474
|
-
}, "sidebar-section-chat-backdrop"), /*#__PURE__*/_jsx(SidebarChatsSectionModal, {
|
|
475
|
-
section: expandedSection,
|
|
476
|
-
onClose: handleCloseSectionModal,
|
|
477
|
-
chatMenuState: chatMenuState,
|
|
478
|
-
onOpenChatMenu: handleOpenChatMenu,
|
|
479
|
-
onCloseChatMenu: handleCloseChatMenu,
|
|
480
|
-
handleDeleteChat: handleDeleteChat,
|
|
481
|
-
handleUpdateChat: handleUpdateChat,
|
|
482
|
-
selectedChatSessionExternalId: selectedChat,
|
|
483
|
-
onGoToChat: handleSelectConversation,
|
|
484
|
-
hasMoreChats: hasMoreChats,
|
|
485
|
-
loadMoreChats: loadMoreChats,
|
|
486
|
-
isLoadingMoreChats: isLoadingMoreChats
|
|
487
|
-
}, expandedSectionModalKey)]
|
|
488
|
-
}) : null
|
|
489
555
|
})]
|
|
490
556
|
});
|
|
491
557
|
};
|
|
492
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJBbmltYXRlUHJlc2VuY2UiLCJDaGV2cm9uRG91YmxlTGVmdCIsIlRvb2x0aXAiLCJFbXB0eUhpc3RvcnlJY29uIiwidXNlQ2hhdHMiLCJMb2FkZXIiLCJFcnJvclN0YXRlIiwiTWFpYVN0b3JlSWNvbiIsIk15QWdlbnRzTmF2SWNvbiIsIk5ld0NoYXQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVQiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiT25ib2FyZGluZ01vZGFsQnV0dG9uIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIlNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24iLCJTQ1NXcmFwcGVyTmV3Q2hhdEljb24iLCJTQ1NTaWRlYmFyUm9vdCIsIlNDU1NpZGViYXJUb29sYmFyIiwiU0NTU2lkZWJhckJvZHkiLCJTQ1NTaWRlYmFyT3BlblBhbmVsIiwiU0NTU2lkZWJhckFnZW50c0Jsb2NrIiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwiLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbiIsIlNDU1NpZGViYXJFcnJvclN0YXRlVG9wIiwiU0NTU2lkZWJhckVycm9yQmFubmVyIiwiU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlIiwiU0NTU2lkZWJhckxvYWRpbmdBcmVhIiwiU0NTU2lkZWJhckxvYWRNb3JlUm93IiwiU0NTU2lkZWJhckVtcHR5Q2hhdHMiLCJTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQiLCJTQ1NTaWRlYmFyQ2hhdHNGb290ZXIiLCJTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyIsIlNDU1NpZGViYXJTZWN0aW9uTW9kYWxCYWNrZHJvcE1vdGlvbiIsIlNpZGViYXJDaGF0c1NlY3Rpb24iLCJTaWRlYmFyQ2hhdHNTZWN0aW9uTW9kYWwiLCJidWlsZFNpZGViYXJTZWN0aW9ucyIsImdyb3VwQ2hhdHNCeVNpZGViYXJTZWN0aW9uIiwiU0lERUJBUl9TRUNUSU9OX1RSQU5TTEFUSU9OX0tFWVMiLCJnZXRDaGF0c1N0b3JlU3RhdGUiLCJTRUNUSU9OX01PREFMX1NFU1NJT05TX1BBR0VfTElNSVQiLCJTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJTaWRlYmFyIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25Hb1RvQ2hhdCIsIl9yZWYkb25FcnJvciIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsInNob3dOZXdDaGF0IiwicmVmZXRjaENoYXRzIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiaGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsIl9yZWYkYWdlbnRzTmF2QWN0aXZlIiwiYWdlbnRzTmF2QWN0aXZlIiwiX3VzZVQiLCJ0IiwiaTE4biIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2hhdE1lbnVTdGF0ZSIsInNldENoYXRNZW51U3RhdGUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5Iiwic2V0RXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkiLCJfdXNlU3RhdGU3IiwiY2xpZW50cyIsInByb2plY3RzIiwiYWdlbnRzQnlDb21wYW55IiwiX3VzZVN0YXRlOCIsImNvbGxhcHNlZFNlY3Rpb25zIiwic2V0Q29sbGFwc2VkU2VjdGlvbnMiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsInNpZGViYXJTY3JvbGxSZWYiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJhZ2VudCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsIl91c2VDaGF0cyIsImxvYWRpbmdDaGF0cyIsImNoYXRzIiwiZGVsZXRlQ2hhdCIsInVwZGF0ZUNoYXQiLCJmZXRjaENoYXRzIiwiaGFzTW9yZUNoYXRzIiwibG9hZE1vcmVDaGF0cyIsImlzTG9hZGluZ01vcmVDaGF0cyIsInNlc3Npb25zR3JvdXBIYXNNb3JlIiwic2hvd0Z1bGxTaWRlYmFyRXJyb3JDb2x1bW4iLCJsZW5ndGgiLCJzaG93U2lkZWJhckVycm9yRm9vdGVyQmFubmVyIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGVBZ2VudHMiLCJjcmVhdGUiLCJjYW5WaWV3QWdlbnRzIiwidmlldyIsImFnZW50TmF2QnV0dG9uQ291bnQiLCJzaG93QWdlbnRzTmF2QmxvY2siLCJncm91cGVkQ2hhdHMiLCJzaWRlYmFyU2VjdGlvbnMiLCJrZXkiLCJfdXNlciRjb21wYW55IiwiY29tcGFueU5hbWUiLCJjb21wYW55IiwidHJpbSIsImV4cGFuZGVkU2VjdGlvbiIsImZpbmQiLCJzZWN0aW9uIiwiY3VycmVudCIsImhhbmRsZURlbGV0ZUNoYXQiLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZVVwZGF0ZUNoYXQiLCJoYW5kbGVPcGVuQ2hhdE1lbnUiLCJjaGF0SWQiLCJzdXJmYWNlIiwiaGFuZGxlQ2xvc2VDaGF0TWVudSIsImhhbmRsZU9wZW5TZWN0aW9uTW9kYWwiLCJfcmVmMyIsIl9jYWxsZWUyIiwic2VjdGlvbktleSIsIl9nZXRDaGF0c1N0b3JlU3RhdGUiLCJzdG9yZUxpbWl0IiwiX2NvbnRleHQyIiwibGltaXQiLCJvZmZzZXQiLCJzaG93R2xvYmFsTG9hZGVyIiwiX3gyIiwiaGFuZGxlQ2xvc2VTZWN0aW9uTW9kYWwiLCJoYW5kbGVUb2dnbGVTZWN0aW9uQ29sbGFwc2UiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlU2VsZWN0Q29udmVyc2F0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVDbGlja091dHNpZGUiLCJldmVudCIsInRhcmdldCIsImNsb3Nlc3QiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlVG9nZ2xlU2lkZWJhciIsImhhbmRsZU9wZW5DcmVhdGVBZ2VudCIsIl9yZWY0IiwiX2NhbGxlZTMiLCJyZXNwb25zZSIsImRhdGEiLCJtYWlha2VyQWdlbnQiLCJfY29udGV4dDMiLCJwYXRoIiwiY29uY2F0IiwibGFuZ3VhZ2UiLCJtZXRob2QiLCJzZW50IiwianNvbiIsInR5cGUiLCJlbnRpdHkiLCJhYnJ1cHQiLCJoYW5kbGVOZXdDaGF0IiwiX3JlZjUiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsImhhbmRsZVJlZmV0Y2hTZXNzaW9uIiwic2hvd05ld0NoYXRCdXR0b24iLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwiJGlzT3BlbiIsImNoaWxkcmVuIiwidGl0bGUiLCJvbkNsaWNrIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsInJlZiIsImFpQ2hhdE1wT3BlbiIsIiRhY3RpdmUiLCJzaXplIiwiJGhhc0NoYXRzIiwiJG9mZnNldFZhcmlhbnQiLCIkYWdlbnROYXZCdXR0b25Db3VudCIsIiRmaWxsSGVpZ2h0IiwibWFwIiwiY29sbGFwc2VkIiwib25Ub2dnbGVDb2xsYXBzZSIsIm9uT3Blbk1vcmUiLCJvbk9wZW5DaGF0TWVudSIsIm9uQ2xvc2VDaGF0TWVudSIsInNlbGVjdGVkQ2hhdFNlc3Npb25FeHRlcm5hbElkIiwiJGp1c3RpZnlCZXR3ZWVuIiwiaW5pdGlhbCIsIm9wYWNpdHkiLCJhbmltYXRlIiwiZXhpdCIsInRyYW5zaXRpb24iLCJkdXJhdGlvbiIsImVhc2UiLCJvbkNsb3NlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IE11dGFibGVSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQW5pbWF0ZVByZXNlbmNlIH0gZnJvbSAnZnJhbWVyLW1vdGlvbidcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZUNoYXRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2hhdHMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBFcnJvclN0YXRlLCBNYWlhU3RvcmVJY29uLCBNeUFnZW50c05hdkljb24sIE5ld0NoYXQgfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgRXJyb3JJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvRXJyb3JJY29uJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBPbmJvYXJkaW5nTW9kYWxCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9PbmJvYXJkaW5nTW9kYWxCdXR0b24nXG5pbXBvcnQgeyBGZWVkYmFja0J1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL0ZlZWRiYWNrQnV0dG9uJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiwgU0NTV3JhcHBlck5ld0NoYXRJY29uIH0gZnJvbSAnLi9TaWRlYmFyLnN0eWxlcydcbmltcG9ydCB7XG4gIFNDU1NpZGViYXJSb290LFxuICBTQ1NTaWRlYmFyVG9vbGJhcixcbiAgU0NTU2lkZWJhckJvZHksXG4gIFNDU1NpZGViYXJPcGVuUGFuZWwsXG4gIFNDU1NpZGViYXJBZ2VudHNCbG9jayxcbiAgU0NTU2lkZWJhckFnZW50c0FjdGlvbnMsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsLFxuICBTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwsXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSxcbiAgU0NTU2lkZWJhckxvYWRpbmdBcmVhLFxuICBTQ1NTaWRlYmFyTG9hZE1vcmVSb3csXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzLFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQsXG4gIFNDU1NpZGViYXJDaGF0c0Zvb3RlcixcbiAgU0NTU2lkZWJhckZvb3RlckFjdGlvbnMsXG59IGZyb20gJy4vU2lkZWJhci5sYXlvdXQuc3R5bGVzJ1xuaW1wb3J0IHsgU0NTU2lkZWJhclNlY3Rpb25Nb2RhbEJhY2tkcm9wTW90aW9uIH0gZnJvbSAnLi9TaWRlYmFyQ2hhdHMuc3R5bGVzJ1xuaW1wb3J0IHsgU2lkZWJhckNoYXRzU2VjdGlvbiB9IGZyb20gJy4vU2lkZWJhckNoYXRzU2VjdGlvbidcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NlY3Rpb25Nb2RhbCB9IGZyb20gJy4vU2lkZWJhckNoYXRzU2VjdGlvbk1vZGFsJ1xuaW1wb3J0IHsgYnVpbGRTaWRlYmFyU2VjdGlvbnMsIGdyb3VwQ2hhdHNCeVNpZGViYXJTZWN0aW9uIH0gZnJvbSAnLi9zaWRlYmFyQ2hhdHMuaGVscGVycydcbmltcG9ydCB0eXBlIHsgU2lkZWJhckNoYXRNZW51U3VyZmFjZSwgU2lkZWJhckNoYXRNZW51U3RhdGUsIFNpZGViYXJTZWN0aW9uS2V5IH0gZnJvbSAnLi9zaWRlYmFyQ2hhdHMudHlwZXMnXG5pbXBvcnQgeyBTSURFQkFSX1NFQ1RJT05fVFJBTlNMQVRJT05fS0VZUyB9IGZyb20gJy4vc2lkZWJhckNoYXRzLnR5cGVzJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB7IFNFQ1RJT05fTU9EQUxfU0VTU0lPTlNfUEFHRV9MSU1JVCwgU0lERUJBUl9TRVNTSU9OU19QQUdFX0xJTUlUIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvY2hhdHNTdG9yZS50eXBlcydcblxuZXhwb3J0IGNvbnN0IFNpZGViYXIgPSAoe1xuICBvbkdvVG9DaGF0LFxuICBvbkVycm9yID0gKCkgPT4gbnVsbCxcbiAgaGFuZGxlR29Ub0hvbWUsXG4gIGhhbmRsZU9wZW5NYXJrZXRwbGFjZSxcbiAgc2hvd05ld0NoYXQsXG4gIHJlZmV0Y2hDaGF0cyxcbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzLFxuICBoYXNFcnJvcixcbiAgcmVzZXRTZWxlY3RlZENoYXRSZWYsXG4gIGFnZW50c05hdkFjdGl2ZSA9IG51bGwsXG59OiB7XG4gIG9uR29Ub0NoYXQ6IChjaGF0SWQ6IHN0cmluZykgPT4gdm9pZFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIGhhbmRsZUdvVG9Ib21lOiAoKSA9PiB2b2lkXG4gIGhhbmRsZU9wZW5NYXJrZXRwbGFjZTogKCkgPT4gdm9pZFxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICByZXNldFNlbGVjdGVkQ2hhdFJlZj86IE11dGFibGVSZWZPYmplY3Q8KCgpID0+IHZvaWQpIHwgbnVsbD5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciBvIE1pcyBhZ2VudGVzICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCBudWxsXG59KSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbY2hhdE1lbnVTdGF0ZSwgc2V0Q2hhdE1lbnVTdGF0ZV0gPSB1c2VTdGF0ZTxTaWRlYmFyQ2hhdE1lbnVTdGF0ZT4obnVsbClcbiAgY29uc3QgW2V4cGFuZGVkU2VjdGlvbk1vZGFsS2V5LCBzZXRFeHBhbmRlZFNlY3Rpb25Nb2RhbEtleV0gPSB1c2VTdGF0ZTxTaWRlYmFyU2VjdGlvbktleSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtjb2xsYXBzZWRTZWN0aW9ucywgc2V0Q29sbGFwc2VkU2VjdGlvbnNdID0gdXNlU3RhdGU8UmVjb3JkPFNpZGViYXJTZWN0aW9uS2V5LCBib29sZWFuPj4oe1xuICAgIGNsaWVudHM6IGZhbHNlLFxuICAgIHByb2plY3RzOiBmYWxzZSxcbiAgICBhZ2VudHNCeUNvbXBhbnk6IGZhbHNlLFxuICB9KVxuICBjb25zdCBbc2VsZWN0ZWRDaGF0LCBzZXRTZWxlY3RlZENoYXRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2hhdHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzaWRlYmFyU2Nyb2xsUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGFnZW50OiBzZWxlY3RlZEFnZW50LCBzZWxlY3RBZ2VudCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3Qge1xuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBjaGF0cyxcbiAgICBkZWxldGVDaGF0LFxuICAgIHVwZGF0ZUNoYXQsXG4gICAgZmV0Y2hDaGF0cyxcbiAgICBoYXNNb3JlQ2hhdHMsXG4gICAgbG9hZE1vcmVDaGF0cyxcbiAgICBpc0xvYWRpbmdNb3JlQ2hhdHMsXG4gICAgc2Vzc2lvbnNHcm91cEhhc01vcmUsXG4gIH0gPSB1c2VDaGF0cyh7XG4gICAgb25FcnJvcixcbiAgfSlcblxuICBjb25zdCBzaG93RnVsbFNpZGViYXJFcnJvckNvbHVtbiA9IGhhc0Vycm9yICYmICFjaGF0cy5sZW5ndGhcbiAgY29uc3Qgc2hvd1NpZGViYXJFcnJvckZvb3RlckJhbm5lciA9IGhhc0Vycm9yICYmIGNoYXRzLmxlbmd0aCA+IDBcblxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IGNhbkNyZWF0ZUFnZW50cyA9ICEhdXNlclBlcm1pc3Npb25zPy5jcmVhdGVcbiAgY29uc3QgY2FuVmlld0FnZW50cyA9ICEhdXNlclBlcm1pc3Npb25zPy52aWV3XG4gIGNvbnN0IGFnZW50TmF2QnV0dG9uQ291bnQgPSAoY2FuQ3JlYXRlQWdlbnRzID8gMiA6IGNhblZpZXdBZ2VudHMgPyAxIDogMCkgYXMgMCB8IDEgfCAyXG4gIGNvbnN0IHNob3dBZ2VudHNOYXZCbG9jayA9IGNhbkNyZWF0ZUFnZW50cyB8fCBjYW5WaWV3QWdlbnRzXG5cbiAgY29uc3QgZ3JvdXBlZENoYXRzID0gdXNlTWVtbygoKSA9PiBncm91cENoYXRzQnlTaWRlYmFyU2VjdGlvbihjaGF0cyksIFtjaGF0c10pXG5cbiAgY29uc3Qgc2lkZWJhclNlY3Rpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgYnVpbGRTaWRlYmFyU2VjdGlvbnMoXG4gICAgICAgIGdyb3VwZWRDaGF0cyxcbiAgICAgICAga2V5ID0+XG4gICAgICAgICAga2V5ID09PSAnYWdlbnRzQnlDb21wYW55J1xuICAgICAgICAgICAgPyB0KFNJREVCQVJfU0VDVElPTl9UUkFOU0xBVElPTl9LRVlTW2tleV0sIHsgY29tcGFueU5hbWU6IHVzZXIuY29tcGFueT8udHJpbSgpIHx8ICfigJQnIH0pXG4gICAgICAgICAgICA6IHQoU0lERUJBUl9TRUNUSU9OX1RSQU5TTEFUSU9OX0tFWVNba2V5XSksXG4gICAgICAgIHNlc3Npb25zR3JvdXBIYXNNb3JlXG4gICAgICApLFxuICAgIFtncm91cGVkQ2hhdHMsIHQsIHVzZXIuY29tcGFueSwgc2Vzc2lvbnNHcm91cEhhc01vcmVdXG4gIClcblxuICBjb25zdCBleHBhbmRlZFNlY3Rpb24gPSBleHBhbmRlZFNlY3Rpb25Nb2RhbEtleVxuICAgID8gc2lkZWJhclNlY3Rpb25zLmZpbmQoc2VjdGlvbiA9PiBzZWN0aW9uLmtleSA9PT0gZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkpIHx8IG51bGxcbiAgICA6IG51bGxcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9ICgpID0+IHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmKSB7XG4gICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVzZXRTZWxlY3RlZENoYXRSZWZdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUNoYXQgPSBhc3luYyAoY2hhdDogYW55KSA9PiB7XG4gICAgZGVsZXRlQ2hhdChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgIHNldENoYXRNZW51U3RhdGUobnVsbClcbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVVcGRhdGVDaGF0ID0gKGNoYXQ6IGFueSkgPT4ge1xuICAgIHVwZGF0ZUNoYXQoY2hhdClcbiAgICBzZXRDaGF0TWVudVN0YXRlKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuQ2hhdE1lbnUgPSAoY2hhdElkOiBzdHJpbmcsIHN1cmZhY2U6IFNpZGViYXJDaGF0TWVudVN1cmZhY2UpID0+IHtcbiAgICBzZXRDaGF0TWVudVN0YXRlKHByZXYgPT4gKHByZXY/LmNoYXRJZCA9PT0gY2hhdElkICYmIHByZXY/LnN1cmZhY2UgPT09IHN1cmZhY2UgPyBudWxsIDogeyBjaGF0SWQsIHN1cmZhY2UgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZUNoYXRNZW51ID0gKCkgPT4ge1xuICAgIHNldENoYXRNZW51U3RhdGUobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5TZWN0aW9uTW9kYWwgPSBhc3luYyAoc2VjdGlvbktleTogU2lkZWJhclNlY3Rpb25LZXkpID0+IHtcbiAgICBzZXRDaGF0TWVudVN0YXRlKG51bGwpXG4gICAgY29uc3QgeyBsaW1pdDogc3RvcmVMaW1pdCB9ID0gZ2V0Q2hhdHNTdG9yZVN0YXRlKClcbiAgICBpZiAoc3RvcmVMaW1pdCA9PT0gU0lERUJBUl9TRVNTSU9OU19QQUdFX0xJTUlUKSB7XG4gICAgICBhd2FpdCBmZXRjaENoYXRzKHtcbiAgICAgICAgbGltaXQ6IFNFQ1RJT05fTU9EQUxfU0VTU0lPTlNfUEFHRV9MSU1JVCxcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICBzaG93R2xvYmFsTG9hZGVyOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfVxuICAgIHNldEV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5KHNlY3Rpb25LZXkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVNlY3Rpb25Nb2RhbCA9ICgpID0+IHtcbiAgICBzZXRFeHBhbmRlZFNlY3Rpb25Nb2RhbEtleShudWxsKVxuICAgIHNldENoYXRNZW51U3RhdGUobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZVNlY3Rpb25Db2xsYXBzZSA9IChzZWN0aW9uS2V5OiBTaWRlYmFyU2VjdGlvbktleSkgPT4ge1xuICAgIHNldENvbGxhcHNlZFNlY3Rpb25zKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBbc2VjdGlvbktleV06ICFwcmV2W3NlY3Rpb25LZXldLFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0Q29udmVyc2F0aW9uID0gKGNoYXREYXRhOiBhbnkpID0+IHtcbiAgICBzZXRTZWxlY3RlZENoYXQoY2hhdERhdGEuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgb25Hb1RvQ2hhdChjaGF0RGF0YSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgRWxlbWVudFxuICAgICAgaWYgKGNoYXRNZW51U3RhdGUgJiYgIXRhcmdldC5jbG9zZXN0KCdbZGF0YS1tb2RhbC1jb250YWluZXJdJykpIHtcbiAgICAgICAgc2V0Q2hhdE1lbnVTdGF0ZShudWxsKVxuICAgICAgfVxuICAgICAgaWYgKGV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5ICYmICF0YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2VjdGlvbi1tb2RhbC1jb250YWluZXJdJykpIHtcbiAgICAgICAgc2V0RXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkobnVsbClcbiAgICAgICAgc2V0Q2hhdE1lbnVTdGF0ZShudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGF0TWVudVN0YXRlIHx8IGV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5KSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFtjaGF0TWVudVN0YXRlLCBleHBhbmRlZFNlY3Rpb25Nb2RhbEtleV0pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlU2lkZWJhciA9ICgpID0+IHtcbiAgICBpZiAoY2hhdE1lbnVTdGF0ZSkge1xuICAgICAgc2V0Q2hhdE1lbnVTdGF0ZShudWxsKVxuICAgIH1cbiAgICBpZiAoZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkpIHtcbiAgICAgIHNldEV4cGFuZGVkU2VjdGlvbk1vZGFsS2V5KG51bGwpXG4gICAgfVxuICAgIHNldElzT3BlbihwcmV2ID0+ICFwcmV2KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkNyZWF0ZUFnZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICB9KVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudDogYW55KSA9PiBhZ2VudC50eXBlID09PSAnY2xvbmUnICYmIGFnZW50LmVudGl0eSA9PT0gJ2dsb2JhbCcpXG5cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiAhY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0OiBTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQsIG9mZnNldDogMCB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChyZWZldGNoQ2hhdHMpIHtcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdDogU0lERUJBUl9TRVNTSU9OU19QQUdFX0xJTUlULCBvZmZzZXQ6IDAgfSlcbiAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyhmYWxzZSlcbiAgICB9XG4gIH0sIFtpc09wZW4sIHJlZmV0Y2hDaGF0cywgaGFuZGxlU2V0UmVmZXRjaENoYXRzLCBmZXRjaENoYXRzXSlcblxuICAvKiogRWwgc2Nyb2xsIGluZmluaXRvIGRlIHNlc2lvbmVzIHZpdmUgc29sbyBlbiBlbCBtb2RhbCBkZSBzZWNjacOzbiAoYFNpZGViYXJDaGF0c1NlY3Rpb25Nb2RhbGApLiAqL1xuXG4gIGNvbnN0IGhhbmRsZU5ld0NoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGNoYXRNZW51U3RhdGUpIHtcbiAgICAgIHNldENoYXRNZW51U3RhdGUobnVsbClcbiAgICB9XG4gICAgc2V0U2VsZWN0ZWRDaGF0KG51bGwpXG4gICAgYXdhaXQgZmV0Y2hDaGF0cyh7XG4gICAgICBsaW1pdDogZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkgPyBTRUNUSU9OX01PREFMX1NFU1NJT05TX1BBR0VfTElNSVQgOiBTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQsXG4gICAgICBvZmZzZXQ6IDAsXG4gICAgfSlcbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlZmV0Y2hTZXNzaW9uID0gKCkgPT4ge1xuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0OiBTSURFQkFSX1NFU1NJT05TX1BBR0VfTElNSVQsIG9mZnNldDogMCB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgfVxuICB9LCBbZmV0Y2hDaGF0c10pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXRCdXR0b24gPVxuICAgICFzaG93TmV3Q2hhdCAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nQ2hhdHMgJiZcbiAgICAoKHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpIHx8XG4gICAgICAoIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9hY2Nlc3MpKVxuXG4gIHJldHVybiAoXG4gICAgPFNDU1NpZGViYXJSb290ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICA8U0NTU2lkZWJhclRvb2xiYXIgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2lzT3BlbiA/IHQoJ2NvbnZlcnNhdGlvbnMuY29sbGFwc2UnKSA6IHQoJ2NvbnZlcnNhdGlvbnMuZXhwYW5kJyl9PlxuICAgICAgICAgIDxTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZVNpZGViYXJ9IGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlTGVmdCBjb2xvcj1cIiM0RDRENERcIiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgPC9TQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgIHtzaG93TmV3Q2hhdEJ1dHRvbiA/IChcbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5uZXdDaGF0Jyl9PlxuICAgICAgICAgICAgPFNDU1dyYXBwZXJOZXdDaGF0SWNvbiBvbkNsaWNrPXtoYW5kbGVOZXdDaGF0fT5cbiAgICAgICAgICAgICAgPE5ld0NoYXQgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSBjb2xvcj1cIiM0RDRENERcIiAvPlxuICAgICAgICAgICAgPC9TQ1NXcmFwcGVyTmV3Q2hhdEljb24+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NTU2lkZWJhclRvb2xiYXI+XG4gICAgICA8U0NTU2lkZWJhckJvZHkgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICA8U0NTU2lkZWJhck9wZW5QYW5lbCByZWY9e3NpZGViYXJTY3JvbGxSZWZ9PlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAge3Nob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0FjdGlvbnM+XG4gICAgICAgICAgICAgICAgICB7Y2FuQ3JlYXRlQWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBPcGVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNyZWF0ZUFnZW50KClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE1haWFTdG9yZUljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubWFpYWtlck5hdicpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAge2NhblZpZXdBZ2VudHMgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cyd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TXlBZ2VudHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15QWdlbnRzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNTY3JvbGxcbiAgICAgICAgICAgICAgJGhhc0NoYXRzPXtjaGF0cy5sZW5ndGggPiAwICYmICFzaG93RnVsbFNpZGViYXJFcnJvckNvbHVtbn1cbiAgICAgICAgICAgICAgJG9mZnNldFZhcmlhbnQ9e2hhc0Vycm9yID8gJ2Vycm9yJyA6ICdkZWZhdWx0J31cbiAgICAgICAgICAgICAgJGFnZW50TmF2QnV0dG9uQ291bnQ9e2FnZW50TmF2QnV0dG9uQ291bnR9XG4gICAgICAgICAgICAgICRmaWxsSGVpZ2h0PXtzaG93RnVsbFNpZGViYXJFcnJvckNvbHVtbn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3Nob3dGdWxsU2lkZWJhckVycm9yQ29sdW1uID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcD5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yU3RhdGUgLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICkgOiBsb2FkaW5nQ2hhdHMgPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgICAgIDxMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgKSA6IGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge3NpZGViYXJTZWN0aW9ucy5tYXAoc2VjdGlvbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxTaWRlYmFyQ2hhdHNTZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtgY2hhdC1zZWN0aW9uLSR7c2VjdGlvbi5rZXl9YH1cbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uPXtzZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZD17Y29sbGFwc2VkU2VjdGlvbnNbc2VjdGlvbi5rZXldfVxuICAgICAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlQ29sbGFwc2U9eygpID0+IGhhbmRsZVRvZ2dsZVNlY3Rpb25Db2xsYXBzZShzZWN0aW9uLmtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9yZT17KCkgPT4gaGFuZGxlT3BlblNlY3Rpb25Nb2RhbChzZWN0aW9uLmtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgY2hhdE1lbnVTdGF0ZT17Y2hhdE1lbnVTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBvbk9wZW5DaGF0TWVudT17aGFuZGxlT3BlbkNoYXRNZW51fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VDaGF0TWVudT17aGFuZGxlQ2xvc2VDaGF0TWVudX1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZWxldGVDaGF0PXtoYW5kbGVEZWxldGVDaGF0fVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQ9e2hhbmRsZVVwZGF0ZUNoYXR9XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGF0U2Vzc2lvbkV4dGVybmFsSWQ9e3NlbGVjdGVkQ2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkdvVG9DaGF0PXtoYW5kbGVTZWxlY3RDb252ZXJzYXRpb259XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdNb3JlQ2hhdHMgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgICAgIDxFbXB0eUhpc3RvcnlJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0Pnt0KCdjb252ZXJzYXRpb25zLmVtcHR5Jyl9PC9TQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRW1wdHlDaGF0cz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzU2Nyb2xsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICAgICAge3Nob3dTaWRlYmFyRXJyb3JGb290ZXJCYW5uZXIgPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPnt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9PC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgIDwvU0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyAkaXNPcGVuPXtpc09wZW59ICRqdXN0aWZ5QmV0d2Vlbj17ISFzZWxlY3RlZEFnZW50fT5cbiAgICAgICAgICB7c2VsZWN0ZWRBZ2VudCA/IDxGZWVkYmFja0J1dHRvbiBzZWxlY3RlZEFnZW50PXtzZWxlY3RlZEFnZW50fSBpc09wZW49e2lzT3Blbn0gLz4gOiBudWxsfVxuICAgICAgICAgIDxPbmJvYXJkaW5nTW9kYWxCdXR0b24gLz5cbiAgICAgICAgPC9TQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucz5cbiAgICAgIDwvU0NTU2lkZWJhckJvZHk+XG4gICAgICA8QW5pbWF0ZVByZXNlbmNlPlxuICAgICAgICB7ZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXkgJiYgZXhwYW5kZWRTZWN0aW9uID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhclNlY3Rpb25Nb2RhbEJhY2tkcm9wTW90aW9uXG4gICAgICAgICAgICAgIGtleT1cInNpZGViYXItc2VjdGlvbi1jaGF0LWJhY2tkcm9wXCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgaW5pdGlhbD17eyBvcGFjaXR5OiAwIH19XG4gICAgICAgICAgICAgIGFuaW1hdGU9e3sgb3BhY2l0eTogMSB9fVxuICAgICAgICAgICAgICBleGl0PXt7IG9wYWNpdHk6IDAgfX1cbiAgICAgICAgICAgICAgdHJhbnNpdGlvbj17eyBkdXJhdGlvbjogMC4yLCBlYXNlOiAnZWFzZU91dCcgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U2lkZWJhckNoYXRzU2VjdGlvbk1vZGFsXG4gICAgICAgICAgICAgIGtleT17ZXhwYW5kZWRTZWN0aW9uTW9kYWxLZXl9XG4gICAgICAgICAgICAgIHNlY3Rpb249e2V4cGFuZGVkU2VjdGlvbn1cbiAgICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTZWN0aW9uTW9kYWx9XG4gICAgICAgICAgICAgIGNoYXRNZW51U3RhdGU9e2NoYXRNZW51U3RhdGV9XG4gICAgICAgICAgICAgIG9uT3BlbkNoYXRNZW51PXtoYW5kbGVPcGVuQ2hhdE1lbnV9XG4gICAgICAgICAgICAgIG9uQ2xvc2VDaGF0TWVudT17aGFuZGxlQ2xvc2VDaGF0TWVudX1cbiAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQ2hhdD17aGFuZGxlRGVsZXRlQ2hhdH1cbiAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlQ2hhdD17aGFuZGxlVXBkYXRlQ2hhdH1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRDaGF0U2Vzc2lvbkV4dGVybmFsSWQ9e3NlbGVjdGVkQ2hhdH1cbiAgICAgICAgICAgICAgb25Hb1RvQ2hhdD17aGFuZGxlU2VsZWN0Q29udmVyc2F0aW9ufVxuICAgICAgICAgICAgICBoYXNNb3JlQ2hhdHM9e2hhc01vcmVDaGF0c31cbiAgICAgICAgICAgICAgbG9hZE1vcmVDaGF0cz17bG9hZE1vcmVDaGF0c31cbiAgICAgICAgICAgICAgaXNMb2FkaW5nTW9yZUNoYXRzPXtpc0xvYWRpbmdNb3JlQ2hhdHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvQW5pbWF0ZVByZXNlbmNlPlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBMkJBLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQzlFLFNBQVNDLGVBQWUsUUFBUSxlQUFlO0FBQy9DLFNBQVNDLGlCQUFpQixRQUFRLG9EQUFvRDtBQUV0RixTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLGdDQUFnQztBQUNqRSxTQUFTQyxRQUFRLFFBQVEseUJBQXlCO0FBQ2xELFNBQVNDLE1BQU0sUUFBUSxvQkFBb0I7QUFDM0MsU0FBU0MsVUFBVSxFQUFFQyxhQUFhLEVBQUVDLGVBQWUsRUFBRUMsT0FBTyxRQUFRLG1CQUFtQjtBQUN2RixTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyxTQUFTLFFBQVEsNkJBQTZCO0FBQ3ZELFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MscUJBQXFCLFFBQVEsbUNBQW1DO0FBQ3pFLFNBQVNDLGNBQWMsUUFBUSw0QkFBNEI7QUFDM0QsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLFNBQVMsUUFBUSwrQkFBK0I7QUFDekQsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUNoRCxTQUFTQyx5QkFBeUIsRUFBRUMscUJBQXFCLFFBQVEsa0JBQWtCO0FBQ25GLFNBQ0VDLGNBQWMsRUFDZEMsaUJBQWlCLEVBQ2pCQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMscUJBQXFCLEVBQ3JCQyx1QkFBdUIsRUFDdkJDLDBCQUEwQixFQUMxQkMseUJBQXlCLEVBQ3pCQyxxQkFBcUIsRUFDckJDLDBCQUEwQixFQUMxQkMs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
|
|
558
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25Eb3VibGVMZWZ0IiwiQ1VCdXR0b24iLCJNZW51RG90cyIsIlBlbmNpbCIsIlRyYXNoIiwiVG9vbHRpcCIsIkVtcHR5SGlzdG9yeUljb24iLCJ1c2VSZXNpemVMaXN0ZW5lciIsInVzZUNoYXRzIiwiTG9hZGVyIiwiRXJyb3JTdGF0ZSIsIk1BSUFJY29uIiwiTWFpYVN0b3JlSWNvbiIsIk15QWdlbnRzTmF2SWNvbiIsIk5ld0NoYXQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVQiLCJPcHRpb25JdGVtIiwiRWRpdFF1ZXN0aW9uTW9kYWwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiRXJyb3JJY29uIiwidXNlVXNlciIsIk9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIkZlZWRiYWNrQnV0dG9uIiwidXNlR2xvYmFsQ29udGV4dCIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJTQ0xIQ1dyYXBwZXIiLCJTQ0xIQ1dyYXBwZXJBZ2VudCIsIlNDTEhDV3JhcHBlckFnZW50VGV4dCIsIlNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMiLCJTQ0xIQ1dyYXBwZXJDb250ZW50IiwiU0NMSENXcmFwcGVyVGl0bGUiLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwiU0NTU2lkZWJhclJvb3QiLCJTQ1NTaWRlYmFyVG9vbGJhciIsIlNDU1NpZGViYXJCb2R5IiwiU0NTU2lkZWJhck9wZW5QYW5lbCIsIlNDU1NpZGViYXJBZ2VudHNCbG9jayIsIlNDU1NpZGViYXJBZ2VudHNIZWFkaW5nIiwiU0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0IiwiU0NTU2lkZWJhckFnZW50c0FjdGlvbnMiLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbiIsIlNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwiLCJTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmciLCJTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwiLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbiIsIlNDU1NpZGViYXJFcnJvclN0YXRlVG9wIiwiU0NTU2lkZWJhckVycm9yQmFubmVyIiwiU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlIiwiU0NTU2lkZWJhckxvYWRpbmdBcmVhIiwiU0NTU2lkZWJhckxvYWRNb3JlUm93IiwiU0NTU2lkZWJhckVtcHR5Q2hhdHMiLCJTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQiLCJTQ1NTaWRlYmFyQ2hhdHNGb290ZXIiLCJTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImFjdGlvbnMiLCJlZGl0IiwicHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwiZGVsZXRlIiwiYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSIsImFnZW50TmFtZSIsInJlcGxhY2UiLCJMaXN0SGlzdG9yeUNoYXQiLCJfcmVmIiwiY2hhdCIsIm9uQ2xpY2siLCJpc01vZGFsT3BlbiIsIm9uT3Blbk1vZGFsIiwib25DbG9zZU1vZGFsIiwiaGFuZGxlcnMiLCJpc1NlbGVjdGVkIiwidGV4dFJlZiIsImFnZW50UmVmIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwidGl0bGUiLCJzaG93VG9vbHRpcCIsIl91c2VSZXNpemVMaXN0ZW5lcjIiLCJhZ2VudCIsInNob3dUb29sdGlwQWdlbnQiLCJfdXNlVCIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhY3Rpb24iLCJzZXRBY3Rpb24iLCJtZW51SXRlbXMiLCJsYWJlbCIsIm9uQ2xpY2tJdGVtIiwiY2hhdElkIiwiSWNvbiIsImV2ZW50S2V5IiwicG1BaU1lbnVFZGl0IiwicG1BaU1lbnVEZWxldGUiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdERhdGEiLCJoYW5kbGVVcGRhdGVDaGF0IiwiaGFuZGxlRGVsZXRlQ2hhdCIsImNoaWxkcmVuIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInJlZiIsInByb2plY3ROYW1lIiwiY29uY2F0IiwiYWdlbnRUeXBlIiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImZvbnRTaXplIiwiZW1vamkiLCJpY29uT25seSIsInNpemUiLCJ2YXJpYW50IiwiZXZlbnQiLCJpZCIsInBvc2l0aW9uIiwidG9wIiwicmlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ6SW5kZXgiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsIm1pbldpZHRoIiwibWFwIiwiX3JlZjIiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsIm9uQ2xvc2UiLCJoYW5kbGVTZXRJc09wZW5Nb2RhbCIsIlNpZGViYXIiLCJfcmVmMyIsIl91c2VyJHBlcm1pc3Npb25zIiwib25Hb1RvQ2hhdCIsIl9yZWYzJG9uRXJyb3IiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJzaG93TmV3Q2hhdCIsInJlZmV0Y2hDaGF0cyIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfdXNlVDIiLCJpMThuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsImNoYXRzQ29udGFpbmVyUmVmIiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RlZEFnZW50Iiwic2VsZWN0QWdlbnQiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwiX3VzZUNoYXRzIiwibG9hZGluZ0NoYXRzIiwiY2hhdHMiLCJkZWxldGVDaGF0IiwidXBkYXRlQ2hhdCIsImZldGNoQ2hhdHMiLCJsaW1pdCIsIm9mZnNldCIsImhhc01vcmVDaGF0cyIsImxvYWRNb3JlQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50cyIsImNyZWF0ZSIsImNhblZpZXdBZ2VudHMiLCJ2aWV3Iiwic2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiIsIndpbmRvdyIsIk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUiIsImFnZW50TmF2QnV0dG9uQ291bnQiLCJzaG93QWdlbnRzTmF2QmxvY2siLCJjdXJyZW50IiwiX3JlZjQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVPcGVuTW9kYWwiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiY2xvc2VzdCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVUb2dnbGVTaWRlYmFyIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50IiwiX3JlZjUiLCJfY2FsbGVlMiIsInJlc3BvbnNlIiwiZGF0YSIsIm1haWFrZXJBZ2VudCIsIl9jb250ZXh0MiIsInBhdGgiLCJsYW5ndWFnZSIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiZmluZCIsInR5cGUiLCJlbnRpdHkiLCJhYnJ1cHQiLCJoYW5kbGVTY3JvbGwiLCJfY2hhdHNDb250YWluZXJSZWYkY3UiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpc0F0Qm90dG9tIiwiY29udGFpbmVyIiwiaGFuZGxlTmV3Q2hhdCIsIl9yZWY2IiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsIiRpc09wZW4iLCJjb2xvciIsImFpQ2hhdE1wT3BlbiIsIiRhY3RpdmUiLCIkaGFzQ2hhdHMiLCJsZW5ndGgiLCIkb2Zmc2V0VmFyaWFudCIsIiRhZ2VudE5hdkJ1dHRvbkNvdW50IiwiJGp1c3RpZnlCZXR3ZWVuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IE11dGFibGVSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hldnJvbkRvdWJsZUxlZnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG91YmxlTGVmdCdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IEVycm9yU3RhdGUsIE1BSUFJY29uLCBNYWlhU3RvcmVJY29uLCBNeUFnZW50c05hdkljb24sIE5ld0NoYXQgfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgT3B0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2F0b21zL0NhcmRNZW51L0NhcmRNZW51J1xuaW1wb3J0IHsgRWRpdFF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRWRpdFF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBFcnJvckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9FcnJvckljb24nXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IE9uYm9hcmRpbmdNb2RhbEJ1dHRvbiB9IGZyb20gJy4uLy4uL2F0b21zL09uYm9hcmRpbmdNb2RhbEJ1dHRvbidcbmltcG9ydCB7IEZlZWRiYWNrQnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvRmVlZGJhY2tCdXR0b24nXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQge1xuICBTQ0xIQ1dyYXBwZXIsXG4gIFNDTEhDV3JhcHBlckFnZW50LFxuICBTQ0xIQ1dyYXBwZXJBZ2VudFRleHQsXG4gIFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMsXG4gIFNDTEhDV3JhcHBlckNvbnRlbnQsXG4gIFNDTEhDV3JhcHBlclRpdGxlLFxuICBTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uLFxuICBTQ1NXcmFwcGVyTmV3Q2hhdEljb24sXG59IGZyb20gJy4vU2lkZWJhci5zdHlsZXMnXG5pbXBvcnQge1xuICBTQ1NTaWRlYmFyUm9vdCxcbiAgU0NTU2lkZWJhclRvb2xiYXIsXG4gIFNDU1NpZGViYXJCb2R5LFxuICBTQ1NTaWRlYmFyT3BlblBhbmVsLFxuICBTQ1NTaWRlYmFyQWdlbnRzQmxvY2ssXG4gIFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nLFxuICBTQ1NTaWRlYmFyQWdlbnRzSGVhZGluZ1RleHQsXG4gIFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbixcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbCxcbiAgU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nLFxuICBTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwsXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcCxcbiAgU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSxcbiAgU0NTU2lkZWJhckxvYWRpbmdBcmVhLFxuICBTQ1NTaWRlYmFyTG9hZE1vcmVSb3csXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzLFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQsXG4gIFNDU1NpZGViYXJDaGF0c0Zvb3RlcixcbiAgU0NTU2lkZWJhckZvb3RlckFjdGlvbnMsXG59IGZyb20gJy4vU2lkZWJhci5sYXlvdXQuc3R5bGVzJ1xuXG5jb25zdCBhY3Rpb25zID0ge1xuICBlZGl0OiAocHJvcHM6IGFueSkgPT4gPEVkaXRRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG4gIGRlbGV0ZTogKHByb3BzOiBhbnkpID0+IDxEZWxldGVRdWVzdGlvbk1vZGFsIHsuLi5wcm9wc30gLz4sXG59XG5cbi8qKiBBYnJldmlhIFwiZXNwZWNpYWxpc3RhXCIvXCJlc3BlY2lhbGlzdFwiIOKGkiBcIkVzcC5cIiAoRVMvUFQpIHkgXCJzcGVjaWFsaXN0XCIg4oaSIFwiU3BlYy5cIiAoRU4pIGVuIGVsIG5vbWJyZSBkZWwgYWdlbnRlLiAqL1xuZnVuY3Rpb24gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShhZ2VudE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghYWdlbnROYW1lIHx8IHR5cGVvZiBhZ2VudE5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gYWdlbnROYW1lXG4gIHJldHVybiBhZ2VudE5hbWUucmVwbGFjZSgvXFxiKGVzcGVjaWFsaXN0YXxlc3BlY2lhbGlzdClcXGIvZ2ksICdFc3AuJykucmVwbGFjZSgvXFxic3BlY2lhbGlzdFxcYi9naSwgJ1NwZWMuJylcbn1cblxuY29uc3QgTGlzdEhpc3RvcnlDaGF0ID0gKHtcbiAgY2hhdCxcbiAgb25DbGljayxcbiAgaXNNb2RhbE9wZW4sXG4gIG9uT3Blbk1vZGFsLFxuICBvbkNsb3NlTW9kYWwsXG4gIGhhbmRsZXJzLFxuICBpc1NlbGVjdGVkLFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxufSkgPT4ge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBhZ2VudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2NoYXQudGl0bGVdKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcihhZ2VudFJlZiwgW2NoYXQuYWdlbnRdKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBbYWN0aW9uLCBzZXRBY3Rpb25dID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBtZW51SXRlbXMgPSBbXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5yZW5hbWUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdlZGl0JylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFBlbmNpbCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVFZGl0LFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5kZWxldGUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdkZWxldGUnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogVHJhc2gsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RGVsZXRlLFxuICAgIH0sXG4gIF1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gKGNoYXREYXRhOiBhbnkpID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnZWRpdCcpIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZVVwZGF0ZUNoYXQoY2hhdERhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZURlbGV0ZUNoYXQoY2hhdERhdGEpXG4gICAgfVxuICAgIHNldEFjdGlvbihudWxsKVxuICAgIG9uQ2xvc2VNb2RhbCgpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U0NMSENXcmFwcGVyQ29udGVudFxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgb25DbGljayhjaGF0KVxuICAgICAgICB9fVxuICAgICAgICBrZXk9e2Bjb252ZXJzYXRpb24tJHtjaGF0LnNlc3Npb25FeHRlcm5hbElkfWB9XG4gICAgICAgIGlzTW9kYWxPcGVuPXtpc01vZGFsT3Blbn1cbiAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgID5cbiAgICAgICAgPFNDTEhDV3JhcHBlcj5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBjaGF0LnRpdGxlIDogJyd9PlxuICAgICAgICAgICAgPFNDTEhDV3JhcHBlclRpdGxlIHJlZj17dGV4dFJlZn0+e2NoYXQudGl0bGUgfHwgdCgnY29udmVyc2F0aW9ucy5lbXB0eUxhYmVsJyl9PC9TQ0xIQ1dyYXBwZXJUaXRsZT5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUb29sdGlwQWdlbnQgPyBjaGF0LmFnZW50ICsgKGNoYXQucHJvamVjdE5hbWUgPyBgIC0gJHtjaGF0LnByb2plY3ROYW1lfWAgOiAnJykgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgICAgIHtjaGF0LmFnZW50VHlwZSA9PT0gJ2Nsb25lJyA/IChcbiAgICAgICAgICAgICAgICA8TUFJQUljb24gd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGZvbnRTaXplOiAnMTRweCcgfX0+e2NoYXQuZW1vaml9PC9zcGFuPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudFRleHQgcmVmPXthZ2VudFJlZn0+XG4gICAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnID8gYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZShjaGF0LmFnZW50KSA6IGNoYXQuYWdlbnR9XG4gICAgICAgICAgICAgICAge2NoYXQucHJvamVjdE5hbWUgJiYgYCAtICR7Y2hhdC5wcm9qZWN0TmFtZX1gfVxuICAgICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50VGV4dD5cbiAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDTEhDV3JhcHBlcj5cbiAgICAgICAgPFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgb25PcGVuTW9kYWwoY2hhdC5pZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE1lbnVEb3RzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgIHtpc01vZGFsT3BlbiAmJiAhYWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS1tb2RhbC1jb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICczMnB4JyxcbiAgICAgICAgICAgICAgICByaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjI0LCAyMjQsIDIyNCwgMSknLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMTI0cHgnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfVxuICAgICAgICAgICAgICAgICAgSWNvbj17SWNvbn1cbiAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtldmVudEtleX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgIDwvU0NMSENXcmFwcGVyQ29udGVudD5cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHtcbiAgb25Hb1RvQ2hhdCxcbiAgb25FcnJvciA9ICgpID0+IG51bGwsXG4gIGhhbmRsZUdvVG9Ib21lLFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2U6ICgpID0+IHZvaWRcbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgcmVmZXRjaENoYXRzOiBib29sZWFuXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0czogKHJlZmV0Y2g6IGJvb2xlYW4pID0+IHZvaWRcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgcmVzZXRTZWxlY3RlZENoYXRSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PCgoKSA9PiB2b2lkKSB8IG51bGw+XG4gIC8qKiBSZXNhbHRhIE1haWFrZXIgbyBNaXMgYWdlbnRlcyAqL1xuICBhZ2VudHNOYXZBY3RpdmU/OiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgbnVsbFxufSkgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2lzT3Blbk1vZGFsLCBzZXRJc09wZW5Nb2RhbF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2VsZWN0ZWRDaGF0LCBzZXRTZWxlY3RlZENoYXRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgY2hhdHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBjaGF0c0NvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgfSA9IHVzZUNoYXRzKHtcbiAgICBvbkVycm9yLFxuICB9KVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBjYW5WaWV3QWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LnZpZXdcbiAgY29uc3Qgc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA9ICEhY2FuQ3JlYXRlQWdlbnRzICYmICEhd2luZG93Lk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUlxuICBjb25zdCBhZ2VudE5hdkJ1dHRvbkNvdW50ID0gKChzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gMSA6IDApICsgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkpIGFzIDAgfCAxIHwgMlxuICBjb25zdCBzaG93QWdlbnRzTmF2QmxvY2sgPSBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9ICgpID0+IHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmKSB7XG4gICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVzZXRTZWxlY3RlZENoYXRSZWZdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUNoYXQgPSBhc3luYyAoY2hhdDogYW55KSA9PiB7XG4gICAgZGVsZXRlQ2hhdChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQ2hhdCA9IChjaGF0OiBhbnkpID0+IHtcbiAgICB1cGRhdGVDaGF0KGNoYXQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCAmJiBpc09wZW5Nb2RhbCAhPT0gY2hhdElkKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChjaGF0SWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChpc09wZW5Nb2RhbCAmJiAhKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KCdbZGF0YS1tb2RhbC1jb250YWluZXJdJykpIHtcbiAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzT3Blbk1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVTaWRlYmFyID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgc2V0SXNPcGVuKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgIGNvbnN0IG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGFnZW50OiBhbnkpID0+IGFnZW50LnR5cGUgPT09ICdjbG9uZScgJiYgYWdlbnQuZW50aXR5ID09PSAnZ2xvYmFsJylcblxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuICYmICFjaGF0c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChyZWZldGNoQ2hhdHMpIHtcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHMoZmFsc2UpXG4gICAgfVxuICB9LCBbaXNPcGVuLCByZWZldGNoQ2hhdHMsIGhhbmRsZVNldFJlZmV0Y2hDaGF0c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIWhhc01vcmVDaGF0cyB8fCBpc0xvYWRpbmdNb3JlQ2hhdHMgfHwgaGFzRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgICAgY29uc3QgaXNBdEJvdHRvbSA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSAxMFxuXG4gICAgICBpZiAoaXNBdEJvdHRvbSkge1xuICAgICAgICBsb2FkTW9yZUNoYXRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hhc01vcmVDaGF0cywgaXNMb2FkaW5nTW9yZUNoYXRzLCBsb2FkTW9yZUNoYXRzLCBoYXNFcnJvcl0pXG5cbiAgY29uc3QgaGFuZGxlTmV3Q2hhdCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIGF3YWl0IGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0OiAwIH0pXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZWZldGNoU2Vzc2lvbiA9ICgpID0+IHtcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdDogMjAsIG9mZnNldDogMCB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdEJ1dHRvbiA9XG4gICAgIXNob3dOZXdDaGF0ICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmdDaGF0cyAmJlxuICAgICgodXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykgfHxcbiAgICAgICghdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NTU2lkZWJhclJvb3QgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgIDxTQ1NTaWRlYmFyVG9vbGJhciAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNPcGVuID8gdCgnY29udmVyc2F0aW9ucy5jb2xsYXBzZScpIDogdCgnY29udmVyc2F0aW9ucy5leHBhbmQnKX0+XG4gICAgICAgICAgPFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24gb25DbGljaz17aGFuZGxlVG9nZ2xlU2lkZWJhcn0gaXNPcGVuPXtpc09wZW59PlxuICAgICAgICAgICAgPENoZXZyb25Eb3VibGVMZWZ0IGNvbG9yPVwicmdiYSgxMDIsIDEwMiwgMTAyLCAxKVwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L1NDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAge3Nob3dOZXdDaGF0QnV0dG9uID8gKFxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjb252ZXJzYXRpb25zLm5ld0NoYXQnKX0+XG4gICAgICAgICAgICA8U0NTV3JhcHBlck5ld0NoYXRJY29uIG9uQ2xpY2s9e2hhbmRsZU5ld0NoYXR9PlxuICAgICAgICAgICAgICA8TmV3Q2hhdCB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICA8L1NDU1dyYXBwZXJOZXdDaGF0SWNvbj5cbiAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ1NTaWRlYmFyVG9vbGJhcj5cbiAgICAgIDxTQ1NTaWRlYmFyQm9keSAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICB7aXNPcGVuID8gKFxuICAgICAgICAgIDxTQ1NTaWRlYmFyT3BlblBhbmVsPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNCbG9jaz5cbiAgICAgICAgICAgICAge3Nob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNIZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0Pnt0KCdjb252ZXJzYXRpb25zLmFnZW50c1NlY3Rpb25UaXRsZScpfTwvU0NTU2lkZWJhckFnZW50c0hlYWRpbmdUZXh0PlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzSGVhZGluZz5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdE1wT3BlbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNyZWF0ZUFnZW50KClcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdtYWlha2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm1haWFrZXJOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cyd9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPE15QWdlbnRzTmF2SWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15QWdlbnRzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+e3QoJ2NvbnZlcnNhdGlvbnMudGl0bGUnKX08L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz5cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c1Njcm9sbFxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAkaGFzQ2hhdHM9e2NoYXRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXthZ2VudE5hdkJ1dHRvbkNvdW50fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICkgOiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtjaGF0cy5tYXAoY2hhdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPExpc3RIaXN0b3J5Q2hhdFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhdD17Y2hhdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NoYXREYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENoYXQoY2hhdERhdGEuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uR29Ub0NoYXQoY2hhdERhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2RhbE9wZW49e2lzT3Blbk1vZGFsID09PSBjaGF0LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuTW9kYWw9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2VNb2RhbD17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURlbGV0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUNoYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c2VsZWN0ZWRDaGF0ID09PSBjaGF0LnNlc3Npb25FeHRlcm5hbElkfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAge2lzTG9hZGluZ01vcmVDaGF0cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZE1vcmVSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICAgICAgPEVtcHR5SGlzdG9yeUljb24gLz5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQ+e3QoJ2NvbnZlcnNhdGlvbnMuZW1wdHknKX08L1NDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFbXB0eUNoYXRzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQ2hhdHNTY3JvbGw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgY2hhdHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXI+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXA+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT57dCgnY29udmVyc2F0aW9ucy5lcnJvcicpfTwvU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZT5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c0Zvb3Rlcj5cbiAgICAgICAgICA8L1NDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICA8U0NTU2lkZWJhckZvb3RlckFjdGlvbnMgJGlzT3Blbj17aXNPcGVufSAkanVzdGlmeUJldHdlZW49eyEhc2VsZWN0ZWRBZ2VudH0+XG4gICAgICAgICAge3NlbGVjdGVkQWdlbnQgPyA8RmVlZGJhY2tCdXR0b24gc2VsZWN0ZWRBZ2VudD17c2VsZWN0ZWRBZ2VudH0gaXNPcGVuPXtpc09wZW59IC8+IDogbnVsbH1cbiAgICAgICAgICA8T25ib2FyZGluZ01vZGFsQnV0dG9uIC8+XG4gICAgICAgIDwvU0NTU2lkZWJhckZvb3RlckFjdGlvbnM+XG4gICAgICA8L1NDU1NpZGViYXJCb2R5PlxuICAgIDwvU0NTU2lkZWJhclJvb3Q+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBMkJBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNyRSxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFT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
|