@projectcor/maia-components 2.11.26-2 → 2.11.26-4
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/ApprovalBox/ApprovalBox.js +56 -25
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +45 -47
- package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +2 -2
- package/lib/components/atoms/icons/index.js +1 -3
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +3 -16
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +44 -54
- package/lib/components/molecules/ChatAIHome/styles.js +35 -43
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -1
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -120
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +15 -28
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +16 -81
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +1 -16
- package/lib/components/molecules/Sidebar/Sidebar.js +322 -257
- 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/useChatManager/useChatManager.js +28 -4
- package/lib/hooks/useChats/useChats.js +4 -12
- package/lib/hooks/useOrchestratorStream/streamRevealSmooth.js +198 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +33 -6
- package/lib/lang/br/index.js +50 -34
- package/lib/lang/en/index.js +42 -26
- package/lib/lang/es/index.js +41 -15
- package/lib/lang/fr/index.js +20 -15
- 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/services/utils/mapChatMessages.js +21 -4
- package/lib/store/chatsStore.types.js +2 -10
- package/lib/store/useChatsStore.js +37 -75
- package/lib/types/Chat.js +1 -3
- package/package.json +1 -1
- package/lib/components/atoms/icons/ChatConversation.js +0 -40
- package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +0 -33
- package/lib/components/molecules/ChatAIModal/layout.js +0 -35
- 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
|
@@ -8,7 +8,6 @@ import { useCallback } from 'react';
|
|
|
8
8
|
import { useUser } from '../../context/cor-user';
|
|
9
9
|
import { useGlobalContext } from '../../context/global-context';
|
|
10
10
|
import { useChatsStore } from '../../store/useChatsStore';
|
|
11
|
-
import { SIDEBAR_SESSIONS_PAGE_LIMIT } from '../../store/chatsStore.types';
|
|
12
11
|
import { useSnackBarManager } from '../useSnackBarManager/useSnackBarManager';
|
|
13
12
|
import { useT } from '../useT';
|
|
14
13
|
import { mapCORLang } from '../../lang/utils';
|
|
@@ -54,22 +53,17 @@ export var useChats = function useChats(_ref) {
|
|
|
54
53
|
var updateChatStore = useChatsStore(function (state) {
|
|
55
54
|
return state.updateChat;
|
|
56
55
|
});
|
|
57
|
-
var sessionsGroupHasMore = useChatsStore(function (state) {
|
|
58
|
-
return state.sessionsGroupHasMore;
|
|
59
|
-
});
|
|
60
56
|
var fetchChatsWithContext = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
61
57
|
var _ref3,
|
|
62
58
|
_ref3$limit,
|
|
63
59
|
limitParam,
|
|
64
60
|
_ref3$offset,
|
|
65
61
|
offsetParam,
|
|
66
|
-
_ref3$showGlobalLoade,
|
|
67
|
-
showGlobalLoader,
|
|
68
62
|
_args = arguments;
|
|
69
63
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
70
64
|
while (1) switch (_context.prev = _context.next) {
|
|
71
65
|
case 0:
|
|
72
|
-
_ref3 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref3$limit = _ref3.limit, limitParam = _ref3$limit === void 0 ?
|
|
66
|
+
_ref3 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref3$limit = _ref3.limit, limitParam = _ref3$limit === void 0 ? 20 : _ref3$limit, _ref3$offset = _ref3.offset, offsetParam = _ref3$offset === void 0 ? 0 : _ref3$offset;
|
|
73
67
|
_context.next = 1;
|
|
74
68
|
return fetchChats({
|
|
75
69
|
agent: agent,
|
|
@@ -77,8 +71,7 @@ export var useChats = function useChats(_ref) {
|
|
|
77
71
|
limit: limitParam,
|
|
78
72
|
offset: offsetParam,
|
|
79
73
|
onError: onError,
|
|
80
|
-
lang: mapCORLang(i18n.language)
|
|
81
|
-
showGlobalLoader: showGlobalLoader
|
|
74
|
+
lang: mapCORLang(i18n.language)
|
|
82
75
|
});
|
|
83
76
|
case 1:
|
|
84
77
|
case "end":
|
|
@@ -171,8 +164,7 @@ export var useChats = function useChats(_ref) {
|
|
|
171
164
|
loadMoreChats: loadMoreChats,
|
|
172
165
|
isLoadingMoreChats: isLoadingMoreChats,
|
|
173
166
|
limit: limit,
|
|
174
|
-
offset: offset
|
|
175
|
-
sessionsGroupHasMore: sessionsGroupHasMore
|
|
167
|
+
offset: offset
|
|
176
168
|
};
|
|
177
169
|
};
|
|
178
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVVzZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlQ2hhdHNTdG9yZSIsIlNJREVCQVJfU0VTU0lPTlNfUEFHRV9MSU1JVCIsInVzZVNuYWNrQmFyTWFuYWdlciIsInVzZVQiLCJtYXBDT1JMYW5nIiwidXNlQ2hhdHMiLCJfcmVmIiwib25FcnJvciIsInVzZXIiLCJfdXNlVCIsInQiLCJpMThuIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsInNlY3Rpb24iLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImNoYXRzIiwic3RhdGUiLCJsb2FkaW5nQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJuZXh0T2Zmc2V0IiwibGltaXQiLCJvZmZzZXQiLCJmZXRjaENoYXRzIiwibG9hZE1vcmVDaGF0c1N0b3JlIiwibG9hZE1vcmVDaGF0cyIsImRlbGV0ZUNoYXRTdG9yZSIsImRlbGV0ZUNoYXQiLCJ1cGRhdGVDaGF0U3RvcmUiLCJ1cGRhdGVDaGF0Iiwic2Vzc2lvbnNHcm91cEhhc01vcmUiLCJmZXRjaENoYXRzV2l0aENvbnRleHQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYzIiwiX3JlZjMkbGltaXQiLCJsaW1pdFBhcmFtIiwiX3JlZjMkb2Zmc2V0Iiwib2Zmc2V0UGFyYW0iLCJfcmVmMyRzaG93R2xvYmFsTG9hZGUiLCJzaG93R2xvYmFsTG9hZGVyIiwiX2FyZ3MiLCJhcmd1bWVudHMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImxlbmd0aCIsInVuZGVmaW5lZCIsImxhbmciLCJsYW5ndWFnZSIsInN0b3AiLCJfcmVmNCIsIl9jYWxsZWUyIiwiY2hhdElkIiwic3VjY2VzcyIsIl9jb250ZXh0MiIsInVzZXJJZCIsImlkIiwidG9TdHJpbmciLCJzZW50IiwiX3giLCJhcHBseSIsIl9yZWY1IiwiX2NhbGxlZTMiLCJjaGF0IiwiX2NvbnRleHQzIiwiX29iamVjdFNwcmVhZCIsInNlc3Npb25FeHRlcm5hbElkIiwidGl0bGUiLCJfeDIiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsImhhc01vcmVDaGF0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0cy91c2VDaGF0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHsgU0lERUJBUl9TRVNTSU9OU19QQUdFX0xJTUlUIH0gZnJvbSAnLi4vLi4vc3RvcmUvY2hhdHNTdG9yZS50eXBlcydcbmltcG9ydCB7IFVzZUNoYXRzUHJvcHMgfSBmcm9tICcuL3VzZUNoYXRzLmludGVyZmFjZXMnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vbGFuZy91dGlscydcblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRzID0gKHsgb25FcnJvciB9OiBVc2VDaGF0c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgeyBhZ2VudCwgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuXG4gIGNvbnN0IGNoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5jaGF0cylcbiAgY29uc3QgbG9hZGluZ0NoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5sb2FkaW5nQ2hhdHMpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVDaGF0cyA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuaXNMb2FkaW5nTW9yZUNoYXRzKVxuICBjb25zdCBuZXh0T2Zmc2V0ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5uZXh0T2Zmc2V0KVxuICBjb25zdCBsaW1pdCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUubGltaXQpXG4gIGNvbnN0IG9mZnNldCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUub2Zmc2V0KVxuICBjb25zdCBmZXRjaENoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5mZXRjaENoYXRzKVxuICBjb25zdCBsb2FkTW9yZUNoYXRzU3RvcmUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmxvYWRNb3JlQ2hhdHMpXG4gIGNvbnN0IGRlbGV0ZUNoYXRTdG9yZSA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuZGVsZXRlQ2hhdClcbiAgY29uc3QgdXBkYXRlQ2hhdFN0b3JlID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS51cGRhdGVDaGF0KVxuICBjb25zdCBzZXNzaW9uc0dyb3VwSGFzTW9yZSA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuc2Vzc2lvbnNHcm91cEhhc01vcmUpXG5cbiAgY29uc3QgZmV0Y2hDaGF0c1dpdGhDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHtcbiAgICAgIGxpbWl0OiBsaW1pdFBhcmFtID0gU0lERUJBUl9TRVNTSU9OU19QQUdFX0xJTUlULFxuICAgICAgb2Zmc2V0OiBvZmZzZXRQYXJhbSA9IDAsXG4gICAgICBzaG93R2xvYmFsTG9hZGVyID0gdHJ1ZSxcbiAgICB9OiB7IGxpbWl0PzogbnVtYmVyOyBvZmZzZXQ/OiBudW1iZXI7IHNob3dHbG9iYWxMb2FkZXI/OiBib29sZWFuIH0gPSB7fSkgPT4ge1xuICAgICAgYXdhaXQgZmV0Y2hDaGF0cyh7XG4gICAgICAgIGFnZW50LFxuICAgICAgICBzZWN0aW9uLFxuICAgICAgICBsaW1pdDogbGltaXRQYXJhbSxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXRQYXJhbSxcbiAgICAgICAgb25FcnJvcixcbiAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgICAgc2hvd0dsb2JhbExvYWRlcixcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWdlbnQsIHNlY3Rpb24sIGZldGNoQ2hhdHMsIG9uRXJyb3IsIGkxOG4ubGFuZ3VhZ2VdXG4gIClcblxuICBjb25zdCBkZWxldGVDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZGVsZXRlQ2hhdFN0b3JlKHsgY2hhdElkLCB1c2VySWQ6IHVzZXIuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ3NuYWNrYmFyLmRlbGV0ZUNoYXQuc3VjY2VzcycpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5kZWxldGVDaGF0LmVycm9yJykpXG4gICAgICB9XG4gICAgfSxcbiAgICBbdXNlci5pZCwgZGVsZXRlQ2hhdFN0b3JlLCBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IsIHRdXG4gIClcblxuICBjb25zdCB1cGRhdGVDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHVwZGF0ZUNoYXRTdG9yZSh7XG4gICAgICAgIHNlc3Npb25FeHRlcm5hbElkOiBjaGF0LnNlc3Npb25FeHRlcm5hbElkLFxuICAgICAgICBpZDogY2hhdC5pZCxcbiAgICAgICAgLi4uKGNoYXQudGl0bGUgIT0gbnVsbCAmJiB7IHRpdGxlOiBjaGF0LnRpdGxlIH0pLFxuICAgICAgfSlcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdzbmFja2Jhci5yZW5hbWVkQ2hhdC5zdWNjZXNzJykpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLnJlbmFtZWRDaGF0LmVycm9yJykpXG4gICAgICB9XG4gICAgfSxcbiAgICBbdXBkYXRlQ2hhdFN0b3JlLCBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IsIHRdXG4gIClcblxuICBjb25zdCBsb2FkTW9yZUNoYXRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGxvYWRNb3JlQ2hhdHNTdG9yZSh7IGFnZW50LCBzZWN0aW9uLCBvbkVycm9yLCBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpIH0pXG4gIH0sIFthZ2VudCwgc2VjdGlvbiwgbG9hZE1vcmVDaGF0c1N0b3JlLCBvbkVycm9yLCBpMThuLmxhbmd1YWdlXSlcblxuICByZXR1cm4ge1xuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBmZXRjaENoYXRzOiBmZXRjaENoYXRzV2l0aENvbnRleHQsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICBjaGF0cyxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGhhc01vcmVDaGF0czogbmV4dE9mZnNldCAhPT0gbnVsbCxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBsaW1pdCxcbiAgICBvZmZzZXQsXG4gICAgc2Vzc2lvbnNHcm91cEhhc01vcmUsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsUUFBUSxPQUFPO0FBQ25DLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFDaEQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLGFBQWEsUUFBUSwyQkFBMkI7QUFDekQsU0FBU0MsMkJBQTJCLFFBQVEsOEJBQThCO0FBRTFFLFNBQVNDLGtCQUFrQixRQUFRLDBDQUEwQztBQUM3RSxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUM5QixTQUFTQyxVQUFVLFFBQVEsa0JBQWtCO0FBRTdDLE9BQU8sSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUFDLElBQUEsRUFBbUM7RUFBQSxJQUE3QkMsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87RUFDaEMsSUFBTUMsSUFBSSxHQUFHVixPQUFPLENBQUMsQ0FBQztFQUN0QixJQUFBVyxLQUFBLEdBQW9CTixJQUFJLENBQUMsQ0FBQztJQUFsQk8sQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7SUFBRUMsSUFBSSxHQUFBRixLQUFBLENBQUpFLElBQUk7RUFDZixJQUFBQyxpQkFBQSxHQUEyQmIsZ0JBQWdCLENBQUMsQ0FBQztJQUFyQ2MsS0FBSyxHQUFBRCxpQkFBQSxDQUFMQyxLQUFLO0lBQUVDLE9BQU8sR0FBQUYsaUJBQUEsQ0FBUEUsT0FBTztFQUN0QixJQUFBQyxtQkFBQSxHQUF1RGIsa0JBQWtCLENBQUMsQ0FBQztJQUFuRWMscUJBQXFCLEdBQUFELG1CQUFBLENBQXJCQyxxQkFBcUI7SUFBRUMsbUJBQW1CLEdBQUFGLG1CQUFBLENBQW5CRSxtQkFBbUI7RUFFbEQsSUFBTUMsS0FBSyxHQUFHbEIsYUFBYSxDQUFDLFVBQUFtQixLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDRCxL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
|
|
170
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVVzZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlQ2hhdHNTdG9yZSIsInVzZVNuYWNrQmFyTWFuYWdlciIsInVzZVQiLCJtYXBDT1JMYW5nIiwidXNlQ2hhdHMiLCJfcmVmIiwib25FcnJvciIsInVzZXIiLCJfdXNlVCIsInQiLCJpMThuIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsInNlY3Rpb24iLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImNoYXRzIiwic3RhdGUiLCJsb2FkaW5nQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJuZXh0T2Zmc2V0IiwibGltaXQiLCJvZmZzZXQiLCJmZXRjaENoYXRzIiwibG9hZE1vcmVDaGF0c1N0b3JlIiwibG9hZE1vcmVDaGF0cyIsImRlbGV0ZUNoYXRTdG9yZSIsImRlbGV0ZUNoYXQiLCJ1cGRhdGVDaGF0U3RvcmUiLCJ1cGRhdGVDaGF0IiwiZmV0Y2hDaGF0c1dpdGhDb250ZXh0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmMyIsIl9yZWYzJGxpbWl0IiwibGltaXRQYXJhbSIsIl9yZWYzJG9mZnNldCIsIm9mZnNldFBhcmFtIiwiX2FyZ3MiLCJhcmd1bWVudHMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImxlbmd0aCIsInVuZGVmaW5lZCIsImxhbmciLCJsYW5ndWFnZSIsInN0b3AiLCJfcmVmNCIsIl9jYWxsZWUyIiwiY2hhdElkIiwic3VjY2VzcyIsIl9jb250ZXh0MiIsInVzZXJJZCIsImlkIiwidG9TdHJpbmciLCJzZW50IiwiX3giLCJhcHBseSIsIl9yZWY1IiwiX2NhbGxlZTMiLCJjaGF0IiwiX2NvbnRleHQzIiwiX29iamVjdFNwcmVhZCIsInNlc3Npb25FeHRlcm5hbElkIiwidGl0bGUiLCJfeDIiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsImhhc01vcmVDaGF0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0cy91c2VDaGF0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHsgVXNlQ2hhdHNQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdHMuaW50ZXJmYWNlcydcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi9sYW5nL3V0aWxzJ1xuXG5leHBvcnQgY29uc3QgdXNlQ2hhdHMgPSAoeyBvbkVycm9yIH06IFVzZUNoYXRzUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB7IGFnZW50LCBzZWN0aW9uIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG5cbiAgY29uc3QgY2hhdHMgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmNoYXRzKVxuICBjb25zdCBsb2FkaW5nQ2hhdHMgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmxvYWRpbmdDaGF0cylcbiAgY29uc3QgaXNMb2FkaW5nTW9yZUNoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5pc0xvYWRpbmdNb3JlQ2hhdHMpXG4gIGNvbnN0IG5leHRPZmZzZXQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLm5leHRPZmZzZXQpXG4gIGNvbnN0IGxpbWl0ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5saW1pdClcbiAgY29uc3Qgb2Zmc2V0ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5vZmZzZXQpXG4gIGNvbnN0IGZldGNoQ2hhdHMgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmZldGNoQ2hhdHMpXG4gIGNvbnN0IGxvYWRNb3JlQ2hhdHNTdG9yZSA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUubG9hZE1vcmVDaGF0cylcbiAgY29uc3QgZGVsZXRlQ2hhdFN0b3JlID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5kZWxldGVDaGF0KVxuICBjb25zdCB1cGRhdGVDaGF0U3RvcmUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnVwZGF0ZUNoYXQpXG5cbiAgY29uc3QgZmV0Y2hDaGF0c1dpdGhDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgbGltaXQ6IGxpbWl0UGFyYW0gPSAyMCwgb2Zmc2V0OiBvZmZzZXRQYXJhbSA9IDAgfTogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0gPSB7fSkgPT4ge1xuICAgICAgYXdhaXQgZmV0Y2hDaGF0cyh7XG4gICAgICAgIGFnZW50LFxuICAgICAgICBzZWN0aW9uLFxuICAgICAgICBsaW1pdDogbGltaXRQYXJhbSxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXRQYXJhbSxcbiAgICAgICAgb25FcnJvcixcbiAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWdlbnQsIHNlY3Rpb24sIGZldGNoQ2hhdHMsIG9uRXJyb3IsIGkxOG4ubGFuZ3VhZ2VdXG4gIClcblxuICBjb25zdCBkZWxldGVDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZGVsZXRlQ2hhdFN0b3JlKHsgY2hhdElkLCB1c2VySWQ6IHVzZXIuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ3NuYWNrYmFyLmRlbGV0ZUNoYXQuc3VjY2VzcycpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5kZWxldGVDaGF0LmVycm9yJykpXG4gICAgICB9XG4gICAgfSxcbiAgICBbdXNlci5pZCwgZGVsZXRlQ2hhdFN0b3JlLCBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IsIHRdXG4gIClcblxuICBjb25zdCB1cGRhdGVDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHVwZGF0ZUNoYXRTdG9yZSh7XG4gICAgICAgIHNlc3Npb25FeHRlcm5hbElkOiBjaGF0LnNlc3Npb25FeHRlcm5hbElkLFxuICAgICAgICBpZDogY2hhdC5pZCxcbiAgICAgICAgLi4uKGNoYXQudGl0bGUgIT0gbnVsbCAmJiB7IHRpdGxlOiBjaGF0LnRpdGxlIH0pLFxuICAgICAgfSlcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdzbmFja2Jhci5yZW5hbWVkQ2hhdC5zdWNjZXNzJykpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLnJlbmFtZWRDaGF0LmVycm9yJykpXG4gICAgICB9XG4gICAgfSxcbiAgICBbdXBkYXRlQ2hhdFN0b3JlLCBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IsIHRdXG4gIClcblxuICBjb25zdCBsb2FkTW9yZUNoYXRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGxvYWRNb3JlQ2hhdHNTdG9yZSh7IGFnZW50LCBzZWN0aW9uLCBvbkVycm9yLCBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpIH0pXG4gIH0sIFthZ2VudCwgc2VjdGlvbiwgbG9hZE1vcmVDaGF0c1N0b3JlLCBvbkVycm9yLCBpMThuLmxhbmd1YWdlXSlcblxuICByZXR1cm4ge1xuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBmZXRjaENoYXRzOiBmZXRjaENoYXRzV2l0aENvbnRleHQsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICBjaGF0cyxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGhhc01vcmVDaGF0czogbmV4dE9mZnNldCAhPT0gbnVsbCxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBsaW1pdCxcbiAgICBvZmZzZXQsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsUUFBUSxPQUFPO0FBQ25DLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFDaEQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLGFBQWEsUUFBUSwyQkFBMkI7QUFFekQsU0FBU0Msa0JBQWtCLFFBQVEsMENBQTBDO0FBQzdFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBQzlCLFNBQVNDLFVBQVUsUUFBUSxrQkFBa0I7QUFFN0MsT0FBTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQUMsSUFBQSxFQUFtQztFQUFBLElBQTdCQyxPQUFPLEdBQUFELElBQUEs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
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
4
|
+
/* eslint-disable no-underscore-dangle -- flags globales window.__MAIA_STREAM_REVEAL_DEBUG__ */
|
|
5
|
+
|
|
6
|
+
/** Valores por defecto del reveal: typing suave sin quedarse demasiado atrás del SSE. */
|
|
7
|
+
export var STREAM_REVEAL_DEFAULTS = {
|
|
8
|
+
maxCharsPerFrame: 8,
|
|
9
|
+
minCharsPerFrame: 1,
|
|
10
|
+
backlogDivisor: 28
|
|
11
|
+
};
|
|
12
|
+
var REPORT_INTERVAL_MS = 1000;
|
|
13
|
+
function isRevealDebugEnabled() {
|
|
14
|
+
return typeof window !== 'undefined' && Boolean(window.__MAIA_STREAM_REVEAL_DEBUG__);
|
|
15
|
+
}
|
|
16
|
+
function isRevealDebugVerbose() {
|
|
17
|
+
return typeof window !== 'undefined' && Boolean(window.__MAIA_STREAM_REVEAL_DEBUG_VERBOSE__);
|
|
18
|
+
}
|
|
19
|
+
function emptyPeriod() {
|
|
20
|
+
return {
|
|
21
|
+
tickCount: 0,
|
|
22
|
+
charsRevealed: 0,
|
|
23
|
+
stepSum: 0,
|
|
24
|
+
maxBacklog: 0,
|
|
25
|
+
setTargetCount: 0,
|
|
26
|
+
sseCharsAppended: 0,
|
|
27
|
+
firstTickAt: 0,
|
|
28
|
+
lastTickAt: 0,
|
|
29
|
+
sumInterTickMs: 0,
|
|
30
|
+
interTickSamples: 0
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Convierte ráfagas irregulares del SSE en actualizaciones de UI más frecuentes y
|
|
36
|
+
* acotadas por frame (estilo “persigue al objetivo”).
|
|
37
|
+
*/
|
|
38
|
+
export function createStreamRevealSmooth(onReveal) {
|
|
39
|
+
var _options$maxCharsPerF, _options$minCharsPerF, _options$backlogDivis;
|
|
40
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
41
|
+
var maxPF = (_options$maxCharsPerF = options.maxCharsPerFrame) !== null && _options$maxCharsPerF !== void 0 ? _options$maxCharsPerF : STREAM_REVEAL_DEFAULTS.maxCharsPerFrame;
|
|
42
|
+
var minPF = (_options$minCharsPerF = options.minCharsPerFrame) !== null && _options$minCharsPerF !== void 0 ? _options$minCharsPerF : STREAM_REVEAL_DEFAULTS.minCharsPerFrame;
|
|
43
|
+
var divisor = (_options$backlogDivis = options.backlogDivisor) !== null && _options$backlogDivis !== void 0 ? _options$backlogDivis : STREAM_REVEAL_DEFAULTS.backlogDivisor;
|
|
44
|
+
var target = '';
|
|
45
|
+
var display = '';
|
|
46
|
+
var raf = null;
|
|
47
|
+
var sessionId = 0;
|
|
48
|
+
var lastReportAt = 0;
|
|
49
|
+
var period = emptyPeriod();
|
|
50
|
+
var prevTargetLen = 0;
|
|
51
|
+
var lastTickPerf = 0;
|
|
52
|
+
var logConstantsOnce = function logConstantsOnce() {
|
|
53
|
+
if (!isRevealDebugEnabled()) return;
|
|
54
|
+
// eslint-disable-next-line no-console
|
|
55
|
+
console.log('[MAIA stream reveal] constantes activas', {
|
|
56
|
+
sessionId: sessionId,
|
|
57
|
+
maxCharsPerFrame: maxPF,
|
|
58
|
+
minCharsPerFrame: minPF,
|
|
59
|
+
backlogDivisor: divisor,
|
|
60
|
+
defaults: _objectSpread({}, STREAM_REVEAL_DEFAULTS),
|
|
61
|
+
hint: 'Ajustar en STREAM_REVEAL_DEFAULTS o vía options si staging/prod se siente lento o entrecortado'
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
var flushPeriodReport = function flushPeriodReport(reason) {
|
|
65
|
+
if (!isRevealDebugEnabled() || period.tickCount === 0 && period.setTargetCount === 0) {
|
|
66
|
+
period = emptyPeriod();
|
|
67
|
+
lastReportAt = performance.now();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
var now = performance.now();
|
|
71
|
+
var elapsed = Math.max(1, now - lastReportAt);
|
|
72
|
+
var wallMs = period.lastTickAt > 0 && period.firstTickAt > 0 ? period.lastTickAt - period.firstTickAt : 0;
|
|
73
|
+
var avgInterTickMs = period.interTickSamples > 0 ? period.sumInterTickMs / period.interTickSamples : null;
|
|
74
|
+
var revealCharsPerSec = elapsed > 0 ? period.charsRevealed / elapsed * 1000 : 0;
|
|
75
|
+
var avgStep = period.tickCount > 0 ? period.stepSum / period.tickCount : 0;
|
|
76
|
+
var avgSseChunk = period.setTargetCount > 0 ? period.sseCharsAppended / period.setTargetCount : 0;
|
|
77
|
+
|
|
78
|
+
// eslint-disable-next-line no-console
|
|
79
|
+
console.log("[MAIA stream reveal] ".concat(reason), {
|
|
80
|
+
sessionId: sessionId,
|
|
81
|
+
windowMs: Math.round(elapsed),
|
|
82
|
+
ticks: period.tickCount,
|
|
83
|
+
charsRevealedInWindow: period.charsRevealed,
|
|
84
|
+
revealCharsPerSec: Math.round(revealCharsPerSec * 10) / 10,
|
|
85
|
+
maxBacklogInWindow: period.maxBacklog,
|
|
86
|
+
avgStep: Math.round(avgStep * 10) / 10,
|
|
87
|
+
setTargetCalls: period.setTargetCount,
|
|
88
|
+
sseCharsAppendedInWindow: period.sseCharsAppended,
|
|
89
|
+
avgSseDeltaCharsPerSetTarget: Math.round(avgSseChunk * 10) / 10,
|
|
90
|
+
avgMsBetweenRevealTicks: avgInterTickMs != null ? Math.round(avgInterTickMs * 10) / 10 : null,
|
|
91
|
+
revealWallMs: wallMs > 0 ? Math.round(wallMs) : null,
|
|
92
|
+
currentLagChars: target.length - display.length
|
|
93
|
+
});
|
|
94
|
+
period = emptyPeriod();
|
|
95
|
+
lastReportAt = now;
|
|
96
|
+
};
|
|
97
|
+
var _tick = function tick() {
|
|
98
|
+
raf = null;
|
|
99
|
+
if (display.length >= target.length) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
var now = performance.now();
|
|
103
|
+
var backlog = target.length - display.length;
|
|
104
|
+
var step = Math.min(maxPF, Math.max(minPF, Math.ceil(backlog / divisor)));
|
|
105
|
+
if (isRevealDebugEnabled()) {
|
|
106
|
+
if (period.tickCount === 0) {
|
|
107
|
+
period.firstTickAt = now;
|
|
108
|
+
} else if (lastTickPerf > 0) {
|
|
109
|
+
period.sumInterTickMs += now - lastTickPerf;
|
|
110
|
+
period.interTickSamples += 1;
|
|
111
|
+
}
|
|
112
|
+
lastTickPerf = now;
|
|
113
|
+
period.tickCount += 1;
|
|
114
|
+
period.charsRevealed += step;
|
|
115
|
+
period.stepSum += step;
|
|
116
|
+
period.maxBacklog = Math.max(period.maxBacklog, backlog);
|
|
117
|
+
period.lastTickAt = now;
|
|
118
|
+
if (isRevealDebugVerbose()) {
|
|
119
|
+
// eslint-disable-next-line no-console
|
|
120
|
+
console.log('[MAIA stream reveal] tick', {
|
|
121
|
+
sessionId: sessionId,
|
|
122
|
+
backlog: backlog,
|
|
123
|
+
step: step,
|
|
124
|
+
displayLen: display.length + step,
|
|
125
|
+
targetLen: target.length
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (lastReportAt === 0) lastReportAt = now;
|
|
129
|
+
if (now - lastReportAt >= REPORT_INTERVAL_MS) {
|
|
130
|
+
flushPeriodReport('periódico (~1s)');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
display = target.slice(0, display.length + step);
|
|
134
|
+
onReveal(display);
|
|
135
|
+
if (display.length < target.length) {
|
|
136
|
+
raf = requestAnimationFrame(_tick);
|
|
137
|
+
} else if (isRevealDebugEnabled()) {
|
|
138
|
+
lastTickPerf = 0;
|
|
139
|
+
flushPeriodReport('alcanzó target (catch-up)');
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
return {
|
|
143
|
+
/** Sustituye el texto objetivo (contenido acumulado del servidor). */setTarget: function setTarget(nextFull) {
|
|
144
|
+
if (isRevealDebugEnabled()) {
|
|
145
|
+
var delta = nextFull.length - prevTargetLen;
|
|
146
|
+
prevTargetLen = nextFull.length;
|
|
147
|
+
period.setTargetCount += 1;
|
|
148
|
+
if (delta > 0) period.sseCharsAppended += delta;
|
|
149
|
+
var now = performance.now();
|
|
150
|
+
if (lastReportAt === 0) lastReportAt = now;
|
|
151
|
+
if (now - lastReportAt >= REPORT_INTERVAL_MS) {
|
|
152
|
+
flushPeriodReport('periódico (~1s, desde setTarget)');
|
|
153
|
+
}
|
|
154
|
+
if (isRevealDebugVerbose()) {
|
|
155
|
+
// eslint-disable-next-line no-console
|
|
156
|
+
console.log('[MAIA stream reveal] setTarget (SSE acumulado)', {
|
|
157
|
+
sessionId: sessionId,
|
|
158
|
+
targetLen: nextFull.length,
|
|
159
|
+
deltaCharsFromPrevTarget: delta,
|
|
160
|
+
displayLen: display.length,
|
|
161
|
+
lagCharsBefore: nextFull.length - display.length
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
target = nextFull;
|
|
166
|
+
if (display.length < target.length && raf == null) {
|
|
167
|
+
raf = requestAnimationFrame(_tick);
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
cancel: function cancel() {
|
|
171
|
+
if (isRevealDebugEnabled() && (period.tickCount > 0 || period.setTargetCount > 0)) {
|
|
172
|
+
flushPeriodReport('cancel');
|
|
173
|
+
}
|
|
174
|
+
if (raf != null) {
|
|
175
|
+
cancelAnimationFrame(raf);
|
|
176
|
+
raf = null;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
/** Limpia estado para un nuevo stream. */reset: function reset() {
|
|
180
|
+
if (isRevealDebugEnabled() && (period.tickCount > 0 || period.setTargetCount > 0)) {
|
|
181
|
+
flushPeriodReport('reset (fin de sesión anterior)');
|
|
182
|
+
}
|
|
183
|
+
if (raf != null) {
|
|
184
|
+
cancelAnimationFrame(raf);
|
|
185
|
+
raf = null;
|
|
186
|
+
}
|
|
187
|
+
target = '';
|
|
188
|
+
display = '';
|
|
189
|
+
sessionId += 1;
|
|
190
|
+
prevTargetLen = 0;
|
|
191
|
+
lastTickPerf = 0;
|
|
192
|
+
period = emptyPeriod();
|
|
193
|
+
lastReportAt = 0;
|
|
194
|
+
logConstantsOnce();
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVFJFQU1fUkVWRUFMX0RFRkFVTFRTIiwibWF4Q2hhcnNQZXJGcmFtZSIsIm1pbkNoYXJzUGVyRnJhbWUiLCJiYWNrbG9nRGl2aXNvciIsIlJFUE9SVF9JTlRFUlZBTF9NUyIsImlzUmV2ZWFsRGVidWdFbmFibGVkIiwid2luZG93IiwiQm9vbGVhbiIsIl9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX18iLCJpc1JldmVhbERlYnVnVmVyYm9zZSIsIl9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX1ZFUkJPU0VfXyIsImVtcHR5UGVyaW9kIiwidGlja0NvdW50IiwiY2hhcnNSZXZlYWxlZCIsInN0ZXBTdW0iLCJtYXhCYWNrbG9nIiwic2V0VGFyZ2V0Q291bnQiLCJzc2VDaGFyc0FwcGVuZGVkIiwiZmlyc3RUaWNrQXQiLCJsYXN0VGlja0F0Iiwic3VtSW50ZXJUaWNrTXMiLCJpbnRlclRpY2tTYW1wbGVzIiwiY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoIiwib25SZXZlYWwiLCJfb3B0aW9ucyRtYXhDaGFyc1BlckYiLCJfb3B0aW9ucyRtaW5DaGFyc1BlckYiLCJfb3B0aW9ucyRiYWNrbG9nRGl2aXMiLCJvcHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwibWF4UEYiLCJtaW5QRiIsImRpdmlzb3IiLCJ0YXJnZXQiLCJkaXNwbGF5IiwicmFmIiwic2Vzc2lvbklkIiwibGFzdFJlcG9ydEF0IiwicGVyaW9kIiwicHJldlRhcmdldExlbiIsImxhc3RUaWNrUGVyZiIsImxvZ0NvbnN0YW50c09uY2UiLCJjb25zb2xlIiwibG9nIiwiZGVmYXVsdHMiLCJfb2JqZWN0U3ByZWFkIiwiaGludCIsImZsdXNoUGVyaW9kUmVwb3J0IiwicmVhc29uIiwicGVyZm9ybWFuY2UiLCJub3ciLCJlbGFwc2VkIiwiTWF0aCIsIm1heCIsIndhbGxNcyIsImF2Z0ludGVyVGlja01zIiwicmV2ZWFsQ2hhcnNQZXJTZWMiLCJhdmdTdGVwIiwiYXZnU3NlQ2h1bmsiLCJjb25jYXQiLCJ3aW5kb3dNcyIsInJvdW5kIiwidGlja3MiLCJjaGFyc1JldmVhbGVkSW5XaW5kb3ciLCJtYXhCYWNrbG9nSW5XaW5kb3ciLCJzZXRUYXJnZXRDYWxscyIsInNzZUNoYXJzQXBwZW5kZWRJbldpbmRvdyIsImF2Z1NzZURlbHRhQ2hhcnNQZXJTZXRUYXJnZXQiLCJhdmdNc0JldHdlZW5SZXZlYWxUaWNrcyIsInJldmVhbFdhbGxNcyIsImN1cnJlbnRMYWdDaGFycyIsInRpY2siLCJiYWNrbG9nIiwic3RlcCIsIm1pbiIsImNlaWwiLCJkaXNwbGF5TGVuIiwidGFyZ2V0TGVuIiwic2xpY2UiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUYXJnZXQiLCJuZXh0RnVsbCIsImRlbHRhIiwiZGVsdGFDaGFyc0Zyb21QcmV2VGFyZ2V0IiwibGFnQ2hhcnNCZWZvcmUiLCJjYW5jZWwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS9zdHJlYW1SZXZlYWxTbW9vdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgLS0gZmxhZ3MgZ2xvYmFsZXMgd2luZG93Ll9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX18gKi9cbmV4cG9ydCB0eXBlIFN0cmVhbVJldmVhbFNtb290aE9wdGlvbnMgPSB7XG4gIC8qKiBUb3BlIGRlIGNhcmFjdGVyZXMgcmV2ZWxhZG9zIHBvciBmcmFtZSAofjYwZnBzKS4gTcOhcyBiYWpvID0gbcOhcyBzdWF2ZS4gKi9cbiAgbWF4Q2hhcnNQZXJGcmFtZT86IG51bWJlclxuICBtaW5DaGFyc1BlckZyYW1lPzogbnVtYmVyXG4gIC8qKlxuICAgKiBFbnRyZSBtw6FzIGFsdG8sIG3DoXMgcGVxdWXDsW9zIGxvcyBwYXNvcyBjdWFuZG8gaGF5IG11Y2hvIHRleHRvIHBlbmRpZW50ZVxuICAgKiAobcOhcyBmbHVpZGV6OyBtw6FzIGZyYW1lcyBoYXN0YSBhbGNhbnphciBlbCBvYmpldGl2byBzaSBlbCBzdHJlYW0gZXMgbXV5IGxhcmdvKS5cbiAgICovXG4gIGJhY2tsb2dEaXZpc29yPzogbnVtYmVyXG59XG5cbi8qKiBWYWxvcmVzIHBvciBkZWZlY3RvIGRlbCByZXZlYWw6IHR5cGluZyBzdWF2ZSBzaW4gcXVlZGFyc2UgZGVtYXNpYWRvIGF0csOhcyBkZWwgU1NFLiAqL1xuZXhwb3J0IGNvbnN0IFNUUkVBTV9SRVZFQUxfREVGQVVMVFMgPSB7XG4gIG1heENoYXJzUGVyRnJhbWU6IDgsXG4gIG1pbkNoYXJzUGVyRnJhbWU6IDEsXG4gIGJhY2tsb2dEaXZpc29yOiAyOCxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFN0cmVhbVJldmVhbFNtb290aE9wdGlvbnNcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvKipcbiAgICAgKiBFbiBjb25zb2xhOiBgd2luZG93Ll9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX18gPSB0cnVlYFxuICAgICAqIExvZ3MgZGUgdmVsb2NpZGFkIGRlIHJldmVhbCwgYmFja2xvZyB2cyBTU0UgeSBjb25zdGFudGVzIGFjdGl2YXMgKGxvY2FsL3N0YWdpbmcvcHJvZCkuXG4gICAgICovXG4gICAgX19NQUlBX1NUUkVBTV9SRVZFQUxfREVCVUdfXz86IGJvb2xlYW5cbiAgICAvKiogU2kgYWRlbcOhcyBlc3TDoSBlbiB0cnVlLCB1biBsb2cgcG9yIGNhZGEgZnJhbWUgZGUgcmV2ZWFsIChtdXkgcnVpZG9zbykuICovXG4gICAgX19NQUlBX1NUUkVBTV9SRVZFQUxfREVCVUdfVkVSQk9TRV9fPzogYm9vbGVhblxuICB9XG59XG5cbmNvbnN0IFJFUE9SVF9JTlRFUlZBTF9NUyA9IDEwMDBcblxuZnVuY3Rpb24gaXNSZXZlYWxEZWJ1Z0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiBCb29sZWFuKHdpbmRvdy5fX01BSUFfU1RSRUFNX1JFVkVBTF9ERUJVR19fKVxufVxuXG5mdW5jdGlvbiBpc1JldmVhbERlYnVnVmVyYm9zZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIEJvb2xlYW4od2luZG93Ll9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX1ZFUkJPU0VfXylcbn1cblxudHlwZSBQZXJpb2RTdGF0cyA9IHtcbiAgdGlja0NvdW50OiBudW1iZXJcbiAgY2hhcnNSZXZlYWxlZDogbnVtYmVyXG4gIHN0ZXBTdW06IG51bWJlclxuICBtYXhCYWNrbG9nOiBudW1iZXJcbiAgc2V0VGFyZ2V0Q291bnQ6IG51bWJlclxuICBzc2VDaGFyc0FwcGVuZGVkOiBudW1iZXJcbiAgZmlyc3RUaWNrQXQ6IG51bWJlclxuICBsYXN0VGlja0F0OiBudW1iZXJcbiAgc3VtSW50ZXJUaWNrTXM6IG51bWJlclxuICBpbnRlclRpY2tTYW1wbGVzOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gZW1wdHlQZXJpb2QoKTogUGVyaW9kU3RhdHMge1xuICByZXR1cm4ge1xuICAgIHRpY2tDb3VudDogMCxcbiAgICBjaGFyc1JldmVhbGVkOiAwLFxuICAgIHN0ZXBTdW06IDAsXG4gICAgbWF4QmFja2xvZzogMCxcbiAgICBzZXRUYXJnZXRDb3VudDogMCxcbiAgICBzc2VDaGFyc0FwcGVuZGVkOiAwLFxuICAgIGZpcnN0VGlja0F0OiAwLFxuICAgIGxhc3RUaWNrQXQ6IDAsXG4gICAgc3VtSW50ZXJUaWNrTXM6IDAsXG4gICAgaW50ZXJUaWNrU2FtcGxlczogMCxcbiAgfVxufVxuXG4vKipcbiAqIENvbnZpZXJ0ZSByw6FmYWdhcyBpcnJlZ3VsYXJlcyBkZWwgU1NFIGVuIGFjdHVhbGl6YWNpb25lcyBkZSBVSSBtw6FzIGZyZWN1ZW50ZXMgeVxuICogYWNvdGFkYXMgcG9yIGZyYW1lIChlc3RpbG8g4oCccGVyc2lndWUgYWwgb2JqZXRpdm/igJ0pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoKFxuICBvblJldmVhbDogKGRpc3BsYXlUZXh0OiBzdHJpbmcpID0+IHZvaWQsXG4gIG9wdGlvbnM6IFN0cmVhbVJldmVhbFNtb290aE9wdGlvbnMgPSB7fVxuKSB7XG4gIGNvbnN0IG1heFBGID0gb3B0aW9ucy5tYXhDaGFyc1BlckZyYW1lID8/IFNUUkVBTV9SRVZFQUxfREVGQVVMVFMubWF4Q2hhcnNQZXJGcmFtZVxuICBjb25zdCBtaW5QRiA9IG9wdGlvbnMubWluQ2hhcnNQZXJGcmFtZSA/PyBTVFJFQU1fUkVWRUFMX0RFRkFVTFRTLm1pbkNoYXJzUGVyRnJhbWVcbiAgY29uc3QgZGl2aXNvciA9IG9wdGlvbnMuYmFja2xvZ0Rpdmlzb3IgPz8gU1RSRUFNX1JFVkVBTF9ERUZBVUxUUy5iYWNrbG9nRGl2aXNvclxuXG4gIGxldCB0YXJnZXQgPSAnJ1xuICBsZXQgZGlzcGxheSA9ICcnXG4gIGxldCByYWY6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgbGV0IHNlc3Npb25JZCA9IDBcbiAgbGV0IGxhc3RSZXBvcnRBdCA9IDBcbiAgbGV0IHBlcmlvZCA9IGVtcHR5UGVyaW9kKClcbiAgbGV0IHByZXZUYXJnZXRMZW4gPSAwXG4gIGxldCBsYXN0VGlja1BlcmYgPSAwXG5cbiAgY29uc3QgbG9nQ29uc3RhbnRzT25jZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzUmV2ZWFsRGVidWdFbmFibGVkKCkpIHJldHVyblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ1tNQUlBIHN0cmVhbSByZXZlYWxdIGNvbnN0YW50ZXMgYWN0aXZhcycsIHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIG1heENoYXJzUGVyRnJhbWU6IG1heFBGLFxuICAgICAgbWluQ2hhcnNQZXJGcmFtZTogbWluUEYsXG4gICAgICBiYWNrbG9nRGl2aXNvcjogZGl2aXNvcixcbiAgICAgIGRlZmF1bHRzOiB7IC4uLlNUUkVBTV9SRVZFQUxfREVGQVVMVFMgfSxcbiAgICAgIGhpbnQ6ICdBanVzdGFyIGVuIFNUUkVBTV9SRVZFQUxfREVGQVVMVFMgbyB2w61hIG9wdGlvbnMgc2kgc3RhZ2luZy9wcm9kIHNlIHNpZW50ZSBsZW50byBvIGVudHJlY29ydGFkbycsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZsdXNoUGVyaW9kUmVwb3J0ID0gKHJlYXNvbjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpc1JldmVhbERlYnVnRW5hYmxlZCgpIHx8IChwZXJpb2QudGlja0NvdW50ID09PSAwICYmIHBlcmlvZC5zZXRUYXJnZXRDb3VudCA9PT0gMCkpIHtcbiAgICAgIHBlcmlvZCA9IGVtcHR5UGVyaW9kKClcbiAgICAgIGxhc3RSZXBvcnRBdCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgbm93ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICBjb25zdCBlbGFwc2VkID0gTWF0aC5tYXgoMSwgbm93IC0gbGFzdFJlcG9ydEF0KVxuICAgIGNvbnN0IHdhbGxNcyA9IHBlcmlvZC5sYXN0VGlja0F0ID4gMCAmJiBwZXJpb2QuZmlyc3RUaWNrQXQgPiAwID8gcGVyaW9kLmxhc3RUaWNrQXQgLSBwZXJpb2QuZmlyc3RUaWNrQXQgOiAwXG4gICAgY29uc3QgYXZnSW50ZXJUaWNrTXMgPSBwZXJpb2QuaW50ZXJUaWNrU2FtcGxlcyA+IDAgPyBwZXJpb2Quc3VtSW50ZXJUaWNrTXMgLyBwZXJpb2QuaW50ZXJUaWNrU2FtcGxlcyA6IG51bGxcbiAgICBjb25zdCByZXZlYWxDaGFyc1BlclNlYyA9IGVsYXBzZWQgPiAwID8gKHBlcmlvZC5jaGFyc1JldmVhbGVkIC8gZWxhcHNlZCkgKiAxMDAwIDogMFxuICAgIGNvbnN0IGF2Z1N0ZXAgPSBwZXJpb2QudGlja0NvdW50ID4gMCA/IHBlcmlvZC5zdGVwU3VtIC8gcGVyaW9kLnRpY2tDb3VudCA6IDBcbiAgICBjb25zdCBhdmdTc2VDaHVuayA9IHBlcmlvZC5zZXRUYXJnZXRDb3VudCA+IDAgPyBwZXJpb2Quc3NlQ2hhcnNBcHBlbmRlZCAvIHBlcmlvZC5zZXRUYXJnZXRDb3VudCA6IDBcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coYFtNQUlBIHN0cmVhbSByZXZlYWxdICR7cmVhc29ufWAsIHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHdpbmRvd01zOiBNYXRoLnJvdW5kKGVsYXBzZWQpLFxuICAgICAgdGlja3M6IHBlcmlvZC50aWNrQ291bnQsXG4gICAgICBjaGFyc1JldmVhbGVkSW5XaW5kb3c6IHBlcmlvZC5jaGFyc1JldmVhbGVkLFxuICAgICAgcmV2ZWFsQ2hhcnNQZXJTZWM6IE1hdGgucm91bmQocmV2ZWFsQ2hhcnNQZXJTZWMgKiAxMCkgLyAxMCxcbiAgICAgIG1heEJhY2tsb2dJbldpbmRvdzogcGVyaW9kLm1heEJhY2tsb2csXG4gICAgICBhdmdTdGVwOiBNYXRoLnJvdW5kKGF2Z1N0ZXAgKiAxMCkgLyAxMCxcbiAgICAgIHNldFRhcmdldENhbGxzOiBwZXJpb2Quc2V0VGFyZ2V0Q291bnQsXG4gICAgICBzc2VDaGFyc0FwcGVuZGVkSW5XaW5kb3c6IHBlcmlvZC5zc2VDaGFyc0FwcGVuZGVkLFxuICAgICAgYXZnU3NlRGVsdGFDaGFyc1BlclNldFRhcmdldDogTWF0aC5yb3VuZChhdmdTc2VDaHVuayAqIDEwKSAvIDEwLFxuICAgICAgYXZnTXNCZXR3ZWVuUmV2ZWFsVGlja3M6IGF2Z0ludGVyVGlja01zICE9IG51bGwgPyBNYXRoLnJvdW5kKGF2Z0ludGVyVGlja01zICogMTApIC8gMTAgOiBudWxsLFxuICAgICAgcmV2ZWFsV2FsbE1zOiB3YWxsTXMgPiAwID8gTWF0aC5yb3VuZCh3YWxsTXMpIDogbnVsbCxcbiAgICAgIGN1cnJlbnRMYWdDaGFyczogdGFyZ2V0Lmxlbmd0aCAtIGRpc3BsYXkubGVuZ3RoLFxuICAgIH0pXG5cbiAgICBwZXJpb2QgPSBlbXB0eVBlcmlvZCgpXG4gICAgbGFzdFJlcG9ydEF0ID0gbm93XG4gIH1cblxuICBjb25zdCB0aWNrID0gKCkgPT4ge1xuICAgIHJhZiA9IG51bGxcbiAgICBpZiAoZGlzcGxheS5sZW5ndGggPj0gdGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgY29uc3QgYmFja2xvZyA9IHRhcmdldC5sZW5ndGggLSBkaXNwbGF5Lmxlbmd0aFxuICAgIGNvbnN0IHN0ZXAgPSBNYXRoLm1pbihtYXhQRiwgTWF0aC5tYXgobWluUEYsIE1hdGguY2VpbChiYWNrbG9nIC8gZGl2aXNvcikpKVxuXG4gICAgaWYgKGlzUmV2ZWFsRGVidWdFbmFibGVkKCkpIHtcbiAgICAgIGlmIChwZXJpb2QudGlja0NvdW50ID09PSAwKSB7XG4gICAgICAgIHBlcmlvZC5maXJzdFRpY2tBdCA9IG5vd1xuICAgICAgfSBlbHNlIGlmIChsYXN0VGlja1BlcmYgPiAwKSB7XG4gICAgICAgIHBlcmlvZC5zdW1JbnRlclRpY2tNcyArPSBub3cgLSBsYXN0VGlja1BlcmZcbiAgICAgICAgcGVyaW9kLmludGVyVGlja1NhbXBsZXMgKz0gMVxuICAgICAgfVxuICAgICAgbGFzdFRpY2tQZXJmID0gbm93XG4gICAgICBwZXJpb2QudGlja0NvdW50ICs9IDFcbiAgICAgIHBlcmlvZC5jaGFyc1JldmVhbGVkICs9IHN0ZXBcbiAgICAgIHBlcmlvZC5zdGVwU3VtICs9IHN0ZXBcbiAgICAgIHBlcmlvZC5tYXhCYWNrbG9nID0gTWF0aC5tYXgocGVyaW9kLm1heEJhY2tsb2csIGJhY2tsb2cpXG4gICAgICBwZXJpb2QubGFzdFRpY2tBdCA9IG5vd1xuXG4gICAgICBpZiAoaXNSZXZlYWxEZWJ1Z1ZlcmJvc2UoKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZygnW01BSUEgc3RyZWFtIHJldmVhbF0gdGljaycsIHtcbiAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgYmFja2xvZyxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIGRpc3BsYXlMZW46IGRpc3BsYXkubGVuZ3RoICsgc3RlcCxcbiAgICAgICAgICB0YXJnZXRMZW46IHRhcmdldC5sZW5ndGgsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChsYXN0UmVwb3J0QXQgPT09IDApIGxhc3RSZXBvcnRBdCA9IG5vd1xuICAgICAgaWYgKG5vdyAtIGxhc3RSZXBvcnRBdCA+PSBSRVBPUlRfSU5URVJWQUxfTVMpIHtcbiAgICAgICAgZmx1c2hQZXJpb2RSZXBvcnQoJ3BlcmnDs2RpY28gKH4xcyknKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRpc3BsYXkgPSB0YXJnZXQuc2xpY2UoMCwgZGlzcGxheS5sZW5ndGggKyBzdGVwKVxuICAgIG9uUmV2ZWFsKGRpc3BsYXkpXG4gICAgaWYgKGRpc3BsYXkubGVuZ3RoIDwgdGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgfSBlbHNlIGlmIChpc1JldmVhbERlYnVnRW5hYmxlZCgpKSB7XG4gICAgICBsYXN0VGlja1BlcmYgPSAwXG4gICAgICBmbHVzaFBlcmlvZFJlcG9ydCgnYWxjYW56w7MgdGFyZ2V0IChjYXRjaC11cCknKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLyoqIFN1c3RpdHV5ZSBlbCB0ZXh0byBvYmpldGl2byAoY29udGVuaWRvIGFjdW11bGFkbyBkZWwgc2Vydmlkb3IpLiAqL1xuICAgIHNldFRhcmdldChuZXh0RnVsbDogc3RyaW5nKSB7XG4gICAgICBpZiAoaXNSZXZlYWxEZWJ1Z0VuYWJsZWQoKSkge1xuICAgICAgICBjb25zdCBkZWx0YSA9IG5leHRGdWxsLmxlbmd0aCAtIHByZXZUYXJnZXRMZW5cbiAgICAgICAgcHJldlRhcmdldExlbiA9IG5leHRGdWxsLmxlbmd0aFxuICAgICAgICBwZXJpb2Quc2V0VGFyZ2V0Q291bnQgKz0gMVxuICAgICAgICBpZiAoZGVsdGEgPiAwKSBwZXJpb2Quc3NlQ2hhcnNBcHBlbmRlZCArPSBkZWx0YVxuXG4gICAgICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgIGlmIChsYXN0UmVwb3J0QXQgPT09IDApIGxhc3RSZXBvcnRBdCA9IG5vd1xuICAgICAgICBpZiAobm93IC0gbGFzdFJlcG9ydEF0ID49IFJFUE9SVF9JTlRFUlZBTF9NUykge1xuICAgICAgICAgIGZsdXNoUGVyaW9kUmVwb3J0KCdwZXJpw7NkaWNvICh+MXMsIGRlc2RlIHNldFRhcmdldCknKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUmV2ZWFsRGVidWdWZXJib3NlKCkpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUubG9nKCdbTUFJQSBzdHJlYW0gcmV2ZWFsXSBzZXRUYXJnZXQgKFNTRSBhY3VtdWxhZG8pJywge1xuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgdGFyZ2V0TGVuOiBuZXh0RnVsbC5sZW5ndGgsXG4gICAgICAgICAgICBkZWx0YUNoYXJzRnJvbVByZXZUYXJnZXQ6IGRlbHRhLFxuICAgICAgICAgICAgZGlzcGxheUxlbjogZGlzcGxheS5sZW5ndGgsXG4gICAgICAgICAgICBsYWdDaGFyc0JlZm9yZTogbmV4dEZ1bGwubGVuZ3RoIC0gZGlzcGxheS5sZW5ndGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0YXJnZXQgPSBuZXh0RnVsbFxuICAgICAgaWYgKGRpc3BsYXkubGVuZ3RoIDwgdGFyZ2V0Lmxlbmd0aCAmJiByYWYgPT0gbnVsbCkge1xuICAgICAgICByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgaWYgKGlzUmV2ZWFsRGVidWdFbmFibGVkKCkgJiYgKHBlcmlvZC50aWNrQ291bnQgPiAwIHx8IHBlcmlvZC5zZXRUYXJnZXRDb3VudCA+IDApKSB7XG4gICAgICAgIGZsdXNoUGVyaW9kUmVwb3J0KCdjYW5jZWwnKVxuICAgICAgfVxuICAgICAgaWYgKHJhZiAhPSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZilcbiAgICAgICAgcmFmID0gbnVsbFxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKiogTGltcGlhIGVzdGFkbyBwYXJhIHVuIG51ZXZvIHN0cmVhbS4gKi9cbiAgICByZXNldCgpIHtcbiAgICAgIGlmIChpc1JldmVhbERlYnVnRW5hYmxlZCgpICYmIChwZXJpb2QudGlja0NvdW50ID4gMCB8fCBwZXJpb2Quc2V0VGFyZ2V0Q291bnQgPiAwKSkge1xuICAgICAgICBmbHVzaFBlcmlvZFJlcG9ydCgncmVzZXQgKGZpbiBkZSBzZXNpw7NuIGFudGVyaW9yKScpXG4gICAgICB9XG4gICAgICBpZiAocmFmICE9IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKVxuICAgICAgICByYWYgPSBudWxsXG4gICAgICB9XG4gICAgICB0YXJnZXQgPSAnJ1xuICAgICAgZGlzcGxheSA9ICcnXG4gICAgICBzZXNzaW9uSWQgKz0gMVxuICAgICAgcHJldlRhcmdldExlbiA9IDBcbiAgICAgIGxhc3RUaWNrUGVyZiA9IDBcbiAgICAgIHBlcmlvZCA9IGVtcHR5UGVyaW9kKClcbiAgICAgIGxhc3RSZXBvcnRBdCA9IDBcbiAgICAgIGxvZ0NvbnN0YW50c09uY2UoKVxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgU3RyZWFtUmV2ZWFsU21vb3RoID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoPlxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTs7QUFZQTtBQUNBLE9BQU8sSUFB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
|
|
@@ -19,6 +19,7 @@ import { useState, useCallback, useRef } from 'react';
|
|
|
19
19
|
import { useTranslation } from 'react-i18next';
|
|
20
20
|
import maia from '../../services/maia';
|
|
21
21
|
import { SECTIONS } from '../../constants/config';
|
|
22
|
+
import { createStreamRevealSmooth } from './streamRevealSmooth';
|
|
22
23
|
export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
23
24
|
var onStreamUpdate = _ref.onStreamUpdate,
|
|
24
25
|
onFinishStream = _ref.onFinishStream,
|
|
@@ -46,6 +47,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
46
47
|
setLoadingMessage = _useState8[1];
|
|
47
48
|
var abortControllerRef = useRef(null);
|
|
48
49
|
var isStoppedRef = useRef(false);
|
|
50
|
+
var streamRevealRef = useRef(null);
|
|
49
51
|
var onStreamUpdateRef = useRef(onStreamUpdate);
|
|
50
52
|
var onFinishStreamRef = useRef(onFinishStream);
|
|
51
53
|
var onStartWritingRef = useRef(onStartWriting);
|
|
@@ -58,9 +60,19 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
58
60
|
onStopRef.current = onStop;
|
|
59
61
|
onErrorRef.current = onError;
|
|
60
62
|
onApprovalRequiredRef.current = onApprovalRequired;
|
|
63
|
+
var getStreamReveal = useCallback(function () {
|
|
64
|
+
if (streamRevealRef.current === null) {
|
|
65
|
+
streamRevealRef.current = createStreamRevealSmooth(function (text) {
|
|
66
|
+
var _onStreamUpdateRef$cu;
|
|
67
|
+
setData(text);
|
|
68
|
+
(_onStreamUpdateRef$cu = onStreamUpdateRef.current) === null || _onStreamUpdateRef$cu === void 0 || _onStreamUpdateRef$cu.call(onStreamUpdateRef, text, null, '');
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return streamRevealRef.current;
|
|
72
|
+
}, []);
|
|
61
73
|
var handleSSEStream = useCallback(/*#__PURE__*/function () {
|
|
62
74
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
|
|
63
|
-
var
|
|
75
|
+
var _data$agent_id, _onFinishStreamRef$cu, _onApprovalRequiredRe, _onErrorRef$current;
|
|
64
76
|
var _response$body, reader, decoder, buffer, accumulatedContent, hasStartedWriting, _yield$reader$read, done, value, lines, _iterator, _step, line, _line$split, _line$split2, eventLine, dataLine, eventType, dataStr, _data, _onStartWritingRef$cu, nodeMessage, finalContent, sources, memorySessionId, suggestions, agentIdRaw, completedAgentId, _onErrorRef$current2, _t, _t2, _t3, _t4;
|
|
65
77
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
66
78
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -150,8 +162,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
150
162
|
(_onStartWritingRef$cu = onStartWritingRef.current) === null || _onStartWritingRef$cu === void 0 || _onStartWritingRef$cu.call(onStartWritingRef);
|
|
151
163
|
}
|
|
152
164
|
accumulatedContent += _data.content;
|
|
153
|
-
|
|
154
|
-
(_onStreamUpdateRef$cu = onStreamUpdateRef.current) === null || _onStreamUpdateRef$cu === void 0 || _onStreamUpdateRef$cu.call(onStreamUpdateRef, accumulatedContent, null, '');
|
|
165
|
+
getStreamReveal().setTarget(accumulatedContent);
|
|
155
166
|
return _context.abrupt("continue", 18);
|
|
156
167
|
case 13:
|
|
157
168
|
// Si el evento node tiene un mensaje, actualizarlo para mostrarlo en el loader
|
|
@@ -175,12 +186,16 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
175
186
|
}
|
|
176
187
|
agentIdRaw = (_data$agent_id = _data.agent_id) !== null && _data$agent_id !== void 0 ? _data$agent_id : _data.agentId;
|
|
177
188
|
completedAgentId = agentIdRaw != null && String(agentIdRaw).trim() !== '' ? String(agentIdRaw).trim() : null;
|
|
189
|
+
getStreamReveal().cancel();
|
|
190
|
+
getStreamReveal().reset();
|
|
178
191
|
setData(finalContent);
|
|
179
192
|
setIsWriting(false);
|
|
180
193
|
setLoadingMessage(null); // Limpiar mensaje cuando se completa
|
|
181
194
|
(_onFinishStreamRef$cu = onFinishStreamRef.current) === null || _onFinishStreamRef$cu === void 0 || _onFinishStreamRef$cu.call(onFinishStreamRef, finalContent, sources, memorySessionId, suggestions, completedAgentId);
|
|
182
195
|
return _context.abrupt("continue", 18);
|
|
183
196
|
case 15:
|
|
197
|
+
getStreamReveal().cancel();
|
|
198
|
+
getStreamReveal().reset();
|
|
184
199
|
setIsWriting(false);
|
|
185
200
|
setLoading(false);
|
|
186
201
|
setLoadingMessage(null); // Limpiar mensaje cuando se requiere aprobación
|
|
@@ -188,6 +203,8 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
188
203
|
return _context.abrupt("continue", 18);
|
|
189
204
|
case 16:
|
|
190
205
|
console.error('SSE Error:', _data.error);
|
|
206
|
+
getStreamReveal().cancel();
|
|
207
|
+
getStreamReveal().reset();
|
|
191
208
|
setIsWriting(false);
|
|
192
209
|
setLoadingMessage(null); // Limpiar mensaje cuando hay error
|
|
193
210
|
(_onErrorRef$current = onErrorRef.current) === null || _onErrorRef$current === void 0 || _onErrorRef$current.call(onErrorRef);
|
|
@@ -224,6 +241,8 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
224
241
|
case 26:
|
|
225
242
|
_context.prev = 26;
|
|
226
243
|
_t4 = _context["catch"](0);
|
|
244
|
+
getStreamReveal().cancel();
|
|
245
|
+
getStreamReveal().reset();
|
|
227
246
|
setIsWriting(false);
|
|
228
247
|
|
|
229
248
|
// Solo ejecutar onError si no fue un stop intencional
|
|
@@ -232,6 +251,8 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
232
251
|
}
|
|
233
252
|
case 27:
|
|
234
253
|
_context.prev = 27;
|
|
254
|
+
getStreamReveal().cancel();
|
|
255
|
+
getStreamReveal().reset();
|
|
235
256
|
setLoading(false);
|
|
236
257
|
setIsWriting(false);
|
|
237
258
|
setLoadingMessage(null);
|
|
@@ -245,7 +266,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
245
266
|
return function (_x) {
|
|
246
267
|
return _ref2.apply(this, arguments);
|
|
247
268
|
};
|
|
248
|
-
}(), [t]);
|
|
269
|
+
}(), [t, getStreamReveal]);
|
|
249
270
|
var askMaia = /*#__PURE__*/function () {
|
|
250
271
|
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {
|
|
251
272
|
var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, faqId, agentSuggestionId, agentEntity, _abortControllerRef$c, response, _t5;
|
|
@@ -256,6 +277,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
256
277
|
_context2.prev = 1;
|
|
257
278
|
setLoading(true);
|
|
258
279
|
setIsWriting(false);
|
|
280
|
+
getStreamReveal().reset();
|
|
259
281
|
setData(null);
|
|
260
282
|
setLoadingMessage(null);
|
|
261
283
|
isStoppedRef.current = false; // Resetear flag al iniciar nueva petición
|
|
@@ -319,10 +341,12 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
319
341
|
}();
|
|
320
342
|
var stopStreaming = useCallback(function () {
|
|
321
343
|
if (abortControllerRef.current) {
|
|
322
|
-
var _onStopRef$current;
|
|
344
|
+
var _streamRevealRef$curr, _streamRevealRef$curr2, _onStopRef$current;
|
|
323
345
|
isStoppedRef.current = true;
|
|
324
346
|
abortControllerRef.current.abort();
|
|
325
347
|
abortControllerRef.current = null;
|
|
348
|
+
(_streamRevealRef$curr = streamRevealRef.current) === null || _streamRevealRef$curr === void 0 || _streamRevealRef$curr.cancel();
|
|
349
|
+
(_streamRevealRef$curr2 = streamRevealRef.current) === null || _streamRevealRef$curr2 === void 0 || _streamRevealRef$curr2.reset();
|
|
326
350
|
setLoading(false);
|
|
327
351
|
setIsWriting(false);
|
|
328
352
|
setLoadingMessage(null);
|
|
@@ -330,6 +354,9 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
330
354
|
}
|
|
331
355
|
}, []);
|
|
332
356
|
var reset = function reset() {
|
|
357
|
+
var _streamRevealRef$curr3, _streamRevealRef$curr4;
|
|
358
|
+
(_streamRevealRef$curr3 = streamRevealRef.current) === null || _streamRevealRef$curr3 === void 0 || _streamRevealRef$curr3.cancel();
|
|
359
|
+
(_streamRevealRef$curr4 = streamRevealRef.current) === null || _streamRevealRef$curr4 === void 0 || _streamRevealRef$curr4.reset();
|
|
333
360
|
setData(null);
|
|
334
361
|
setLoading(false);
|
|
335
362
|
setIsWriting(false);
|
|
@@ -347,4 +374,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
347
374
|
handleSSEStream: handleSSEStream // Exponer para poder usarlo en continue-thread
|
|
348
375
|
};
|
|
349
376
|
};
|
|
350
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJfcmVmIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RhcnRXcml0aW5nIiwib25TdG9wIiwib25FcnJvciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNMb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkaW5nTWVzc2FnZSIsInNldExvYWRpbmdNZXNzYWdlIiwiYWJvcnRDb250cm9sbGVyUmVmIiwiaXNTdG9wcGVkUmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfb25TdHJlYW1VcGRhdGVSZWYkY3UiLCJfZGF0YSRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsIl9vbkVycm9yUmVmJGN1cnJlbnQiLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJoYXNTdGFydGVkV3JpdGluZyIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJfbGluZSRzcGxpdDIiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsImRhdGFTdHIiLCJfZGF0YSIsIl9vblN0YXJ0V3JpdGluZ1JlZiRjdSIsIm5vZGVNZXNzYWdlIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsInN1Z2dlc3Rpb25zIiwiYWdlbnRJZFJhdyIsImNvbXBsZXRlZEFnZW50SWQiLCJfb25FcnJvclJlZiRjdXJyZW50MiIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwidHJpbSIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJjYWxsIiwiY29udGVudCIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsIm1lbW9yeV9zZXNzaW9uX2lkIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdF9yZXBseSIsImFnZW50X2lkIiwiYWdlbnRJZCIsIlN0cmluZyIsImNvbnNvbGUiLCJlcnJvciIsIndhcm4iLCJlIiwiZiIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiYXNrTWFpYSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVmMyIsImhpc3RvcnkiLCJwcm9qZWN0SWQiLCJsYW5nIiwidXNlcklkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjaGF0SWQiLCJtZXNzYWdlSWQiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImF0dGFjaG1lbnRzIiwicHJvamVjdE5hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiYWdlbnRFbnRpdHkiLCJfYWJvcnRDb250cm9sbGVyUmVmJGMiLCJfdDUiLCJfY29udGV4dDIiLCJBYm9ydENvbnRyb2xsZXIiLCJPcmNoZXN0cmF0b3IiLCJvcmNoZXN0cmF0b3IiLCJfb2JqZWN0U3ByZWFkIiwiaW5wdXQiLCJzaWduYWwiLCJfeDIiLCJzdG9wU3RyZWFtaW5nIiwiX29uU3RvcFJlZiRjdXJyZW50IiwiYWJvcnQiLCJyZXNldCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VPcmNoZXN0cmF0b3JTdHJlYW0vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnN0YW50LWNvbmRpdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udGludWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNhc2UtZGVjbGFyYXRpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcyB9IGZyb20gJy4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICAgICAgICBpZiAoIXJlYWRlcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgICAgICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgICAgIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgICAgICBsZXQgaGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UodCgnY2hhdC53cml0aW5nJykpXG4gICAgICAgICAgICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgKz0gZGF0YS5jb250ZW50XG4gICAgICAgICAgICAgICAgICBzZXREYXRhKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/LihhY2N1bXVsYXRlZENvbnRlbnQsIG51bGwsICcnKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICAgICAgLy8gU2kgZWwgZXZlbnRvIG5vZGUgdGllbmUgdW4gbWVuc2FqZSwgYWN0dWFsaXphcmxvIHBhcmEgbW9zdHJhcmxvIGVuIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBc2VndXJhciBxdWUgaXNMb2FkaW5nIGVzdMOpIGVuIHRydWUgcGFyYSBtb3N0cmFyIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vc3RyYXIgbm9tYnJlIHNvbG8gcGFyYSBjcmVhdGVfdGFzaywgZWwgcmVzdG8gbXVlc3RyYSBnZW7DqXJpY29cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZU1lc3NhZ2UgPSBkYXRhLm1lc3NhZ2UuaW5jbHVkZXMoJ2NyZWF0ZV90YXNrJykgPyBkYXRhLm1lc3NhZ2UgOiB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpXG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG5vZGVNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IGRhdGEuY29udGVudCB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBkYXRhLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICAgICAgICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gZGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCB8fCAnJ1xuICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zID0gbnVsbFxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyA9IGRhdGEuc3VnZ2VzdF9yZXBseVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gZGF0YS5zdWdnZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGRhdGEuYWdlbnRfaWQgPz8gZGF0YS5hZ2VudElkXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgIHNldERhdGEoZmluYWxDb250ZW50KVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBzZSBjb21wbGV0YVxuICAgICAgICAgICAgICAgICAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudD8uKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCBzdWdnZXN0aW9ucywgY29tcGxldGVkQWdlbnRJZClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdhcHByb3ZhbF9yZXF1aXJlZCc6XG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBzZSByZXF1aWVyZSBhcHJvYmFjacOzblxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIGhheSBlcnJvclxuICAgICAgICAgICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcblxuICAgICAgICAvLyBTb2xvIGVqZWN1dGFyIG9uRXJyb3Igc2kgbm8gZnVlIHVuIHN0b3AgaW50ZW5jaW9uYWxcbiAgICAgICAgaWYgKCFpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3RdXG4gIClcblxuICBjb25zdCBhc2tNYWlhID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIGhpc3RvcnksXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjb21wYW55SWQsXG4gICAgY2hhdElkLFxuICAgIG1lc3NhZ2VJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGFnZW50TmFtZSxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICBmYXFJZCxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgfToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGhpc3Rvcnk6IENoYXRIaXN0b3J5W11cbiAgICBwcm9qZWN0SWQ6IG51bWJlciB8IG51bGxcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySWQ6IHN0cmluZ1xuICAgIGZpcnN0TmFtZT86IHN0cmluZ1xuICAgIGxhc3ROYW1lPzogc3RyaW5nXG4gICAgY29tcGFueUlkOiBzdHJpbmdcbiAgICBjaGF0SWQ6IHN0cmluZ1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nXG4gICAgY2xpZW50SWQ/OiBudW1iZXJcbiAgICBjbGllbnROYW1lPzogc3RyaW5nXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldERhdGEobnVsbClcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlIC8vIFJlc2V0ZWFyIGZsYWcgYWwgaW5pY2lhciBudWV2YSBwZXRpY2nDs25cblxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogbWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIC4uLihmaXJzdE5hbWUgPyB7IGZpcnN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihsYXN0TmFtZSA/IHsgbGFzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICBjb21wYW55SWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICBhZ2VudE5hbWUsXG4gICAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihwcm9qZWN0TmFtZSA/IHsgcHJvamVjdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50TmFtZSA/IHsgY2xpZW50TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50RW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5IH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yPy4oKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBzZXREYXRhKG51bGwpXG4gICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJl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
|
|
377
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJjcmVhdGVTdHJlYW1SZXZlYWxTbW9vdGgiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJfcmVmIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RhcnRXcml0aW5nIiwib25TdG9wIiwib25FcnJvciIsIm9uQXBwcm92YWxSZXF1aXJlZCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNMb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJsb2FkaW5nTWVzc2FnZSIsInNldExvYWRpbmdNZXNzYWdlIiwiYWJvcnRDb250cm9sbGVyUmVmIiwiaXNTdG9wcGVkUmVmIiwic3RyZWFtUmV2ZWFsUmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJnZXRTdHJlYW1SZXZlYWwiLCJ0ZXh0IiwiX29uU3RyZWFtVXBkYXRlUmVmJGN1IiwiY2FsbCIsImhhbmRsZVNTRVN0cmVhbSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsIl9kYXRhJGFnZW50X2lkIiwiX29uRmluaXNoU3RyZWFtUmVmJGN1IiwiX29uQXBwcm92YWxSZXF1aXJlZFJlIiwiX29uRXJyb3JSZWYkY3VycmVudCIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiX29uU3RhcnRXcml0aW5nUmVmJGN1Iiwibm9kZU1lc3NhZ2UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwic3VnZ2VzdGlvbnMiLCJhZ2VudElkUmF3IiwiY29tcGxldGVkQWdlbnRJZCIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImJvZHkiLCJnZXRSZWFkZXIiLCJFcnJvciIsIlRleHREZWNvZGVyIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJ0cmltIiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsImNvbnRlbnQiLCJzZXRUYXJnZXQiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3RfcmVwbHkiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJTdHJpbmciLCJyZXNldCIsImNvbnNvbGUiLCJlcnJvciIsIndhcm4iLCJlIiwiZiIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiYXNrTWFpYSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVmMyIsImhpc3RvcnkiLCJwcm9qZWN0SWQiLCJsYW5nIiwidXNlcklkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjaGF0SWQiLCJtZXNzYWdlSWQiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImF0dGFjaG1lbnRzIiwicHJvamVjdE5hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiYWdlbnRFbnRpdHkiLCJfYWJvcnRDb250cm9sbGVyUmVmJGMiLCJfdDUiLCJfY29udGV4dDIiLCJBYm9ydENvbnRyb2xsZXIiLCJPcmNoZXN0cmF0b3IiLCJvcmNoZXN0cmF0b3IiLCJfb2JqZWN0U3ByZWFkIiwiaW5wdXQiLCJzaWduYWwiLCJfeDIiLCJzdG9wU3RyZWFtaW5nIiwiX3N0cmVhbVJldmVhbFJlZiRjdXJyIiwiX3N0cmVhbVJldmVhbFJlZiRjdXJyMiIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiX3N0cmVhbVJldmVhbFJlZiRjdXJyMyIsIl9zdHJlYW1SZXZlYWxSZWYkY3VycjQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBDaGF0SGlzdG9yeSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMgfSBmcm9tICcuL3VzZU9yY2hlc3RyYXRvclN0cmVhbS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBjcmVhdGVTdHJlYW1SZXZlYWxTbW9vdGggfSBmcm9tICcuL3N0cmVhbVJldmVhbFNtb290aCdcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHN0cmVhbVJldmVhbFJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVTdHJlYW1SZXZlYWxTbW9vdGg+IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBvblN0cmVhbVVwZGF0ZVJlZiA9IHVzZVJlZihvblN0cmVhbVVwZGF0ZSlcbiAgY29uc3Qgb25GaW5pc2hTdHJlYW1SZWYgPSB1c2VSZWYob25GaW5pc2hTdHJlYW0pXG4gIGNvbnN0IG9uU3RhcnRXcml0aW5nUmVmID0gdXNlUmVmKG9uU3RhcnRXcml0aW5nKVxuICBjb25zdCBvblN0b3BSZWYgPSB1c2VSZWYob25TdG9wKVxuICBjb25zdCBvbkVycm9yUmVmID0gdXNlUmVmKG9uRXJyb3IpXG4gIGNvbnN0IG9uQXBwcm92YWxSZXF1aXJlZFJlZiA9IHVzZVJlZihvbkFwcHJvdmFsUmVxdWlyZWQpXG5cbiAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudCA9IG9uU3RyZWFtVXBkYXRlXG4gIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQgPSBvbkZpbmlzaFN0cmVhbVxuICBvblN0YXJ0V3JpdGluZ1JlZi5jdXJyZW50ID0gb25TdGFydFdyaXRpbmdcbiAgb25TdG9wUmVmLmN1cnJlbnQgPSBvblN0b3BcbiAgb25FcnJvclJlZi5jdXJyZW50ID0gb25FcnJvclxuICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudCA9IG9uQXBwcm92YWxSZXF1aXJlZFxuXG4gIGNvbnN0IGdldFN0cmVhbVJldmVhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc3RyZWFtUmV2ZWFsUmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgIHN0cmVhbVJldmVhbFJlZi5jdXJyZW50ID0gY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoKHRleHQgPT4ge1xuICAgICAgICBzZXREYXRhKHRleHQpXG4gICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0ZXh0LCBudWxsLCAnJylcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBzdHJlYW1SZXZlYWxSZWYuY3VycmVudFxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICAgICAgICBpZiAoIXJlYWRlcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgICAgICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgICAgIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgICAgICBsZXQgaGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UodCgnY2hhdC53cml0aW5nJykpXG4gICAgICAgICAgICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgKz0gZGF0YS5jb250ZW50XG4gICAgICAgICAgICAgICAgICBnZXRTdHJlYW1SZXZlYWwoKS5zZXRUYXJnZXQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICAgICAgLy8gU2kgZWwgZXZlbnRvIG5vZGUgdGllbmUgdW4gbWVuc2FqZSwgYWN0dWFsaXphcmxvIHBhcmEgbW9zdHJhcmxvIGVuIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubWVzc2FnZSAmJiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBc2VndXJhciBxdWUgaXNMb2FkaW5nIGVzdMOpIGVuIHRydWUgcGFyYSBtb3N0cmFyIGVsIGxvYWRlclxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vc3RyYXIgbm9tYnJlIHNvbG8gcGFyYSBjcmVhdGVfdGFzaywgZWwgcmVzdG8gbXVlc3RyYSBnZW7DqXJpY29cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZU1lc3NhZ2UgPSBkYXRhLm1lc3NhZ2UuaW5jbHVkZXMoJ2NyZWF0ZV90YXNrJykgPyBkYXRhLm1lc3NhZ2UgOiB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpXG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG5vZGVNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IGRhdGEuY29udGVudCB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBkYXRhLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICAgICAgICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gZGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCB8fCAnJ1xuICAgICAgICAgICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zID0gbnVsbFxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucyA9IGRhdGEuc3VnZ2VzdF9yZXBseVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gZGF0YS5zdWdnZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IGRhdGEuYWdlbnRfaWQgPz8gZGF0YS5hZ2VudElkXG4gICAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgIGdldFN0cmVhbVJldmVhbCgpLmNhbmNlbCgpXG4gICAgICAgICAgICAgICAgICBnZXRTdHJlYW1SZXZlYWwoKS5yZXNldCgpXG4gICAgICAgICAgICAgICAgICBzZXREYXRhKGZpbmFsQ29udGVudClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gc2UgY29tcGxldGFcbiAgICAgICAgICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgc3VnZ2VzdGlvbnMsIGNvbXBsZXRlZEFnZW50SWQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOlxuICAgICAgICAgICAgICAgICAgZ2V0U3RyZWFtUmV2ZWFsKCkuY2FuY2VsKClcbiAgICAgICAgICAgICAgICAgIGdldFN0cmVhbVJldmVhbCgpLnJlc2V0KClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIHNlIHJlcXVpZXJlIGFwcm9iYWNpw7NuXG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZGF0YS5lcnJvcilcbiAgICAgICAgICAgICAgICAgIGdldFN0cmVhbVJldmVhbCgpLmNhbmNlbCgpXG4gICAgICAgICAgICAgICAgICBnZXRTdHJlYW1SZXZlYWwoKS5yZXNldCgpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIGhheSBlcnJvclxuICAgICAgICAgICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGdldFN0cmVhbVJldmVhbCgpLmNhbmNlbCgpXG4gICAgICAgIGdldFN0cmVhbVJldmVhbCgpLnJlc2V0KClcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgb25FcnJvciBzaSBubyBmdWUgdW4gc3RvcCBpbnRlbmNpb25hbFxuICAgICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBnZXRTdHJlYW1SZXZlYWwoKS5jYW5jZWwoKVxuICAgICAgICBnZXRTdHJlYW1SZXZlYWwoKS5yZXNldCgpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgICAgIH1cbiAgICB9LFxuICAgIFt0LCBnZXRTdHJlYW1SZXZlYWxdXG4gIClcblxuICBjb25zdCBhc2tNYWlhID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIGhpc3RvcnksXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjb21wYW55SWQsXG4gICAgY2hhdElkLFxuICAgIG1lc3NhZ2VJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGFnZW50TmFtZSxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICBmYXFJZCxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgfToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGhpc3Rvcnk6IENoYXRIaXN0b3J5W11cbiAgICBwcm9qZWN0SWQ6IG51bWJlciB8IG51bGxcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySWQ6IHN0cmluZ1xuICAgIGZpcnN0TmFtZT86IHN0cmluZ1xuICAgIGxhc3ROYW1lPzogc3RyaW5nXG4gICAgY29tcGFueUlkOiBzdHJpbmdcbiAgICBjaGF0SWQ6IHN0cmluZ1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nXG4gICAgY2xpZW50SWQ/OiBudW1iZXJcbiAgICBjbGllbnROYW1lPzogc3RyaW5nXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGdldFN0cmVhbVJldmVhbCgpLnJlc2V0KClcbiAgICAgIHNldERhdGEobnVsbClcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlIC8vIFJlc2V0ZWFyIGZsYWcgYWwgaW5pY2lhciBudWV2YSBwZXRpY2nDs25cblxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogbWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIC4uLihmaXJzdE5hbWUgPyB7IGZpcnN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihsYXN0TmFtZSA/IHsgbGFzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICBjb21wYW55SWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICBhZ2VudE5hbWUsXG4gICAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihwcm9qZWN0TmFtZSA/IHsgcHJvamVjdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50TmFtZSA/IHsgY2xpZW50TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50RW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5IH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yPy4oKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHN0cmVhbVJldmVhbFJlZi5jdXJyZW50Py5jYW5jZWwoKVxuICAgICAgc3RyZWFtUmV2ZWFsUmVmLmN1cnJlbnQ/LnJlc2V0KClcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBzdHJlYW1SZXZlYWxSZWYuY3VycmVudD8uY2FuY2VsKClcbiAgICBzdHJlYW1SZXZlYWxSZWYuY3VycmVudD8ucmVzZXQoKVxuICAgIHNldERhdGEobnVsbClcbiAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXNrTWFpYSxcbiAgICByZXNwb25zZTogZGF0YSxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHJlc2V0LFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDckQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUl0QyxTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBQ2pELFNBQVNDLHdCQUF3QixRQUFRLHNCQUFzQjtBQUUvRCxPQUFPLElBQU1DLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUFDLElBQUEsRUFPQTtFQUFBLElBTmhDQyxjQUFjLEdBQUFELElBQUEsQ0FBZEMsY0FBYztJQUNkQyxjQUFjLEdBQUFGLElBQUEsQ0FBZEUsY0FBYztJQUNkQyxjQUFjLEdBQUFILElBQUEsQ0FBZEcsY0FBYztJQUNkQyxNQUFNLEdBQUFKLElBQUEsQ0FBTkksTUFBTTtJQUNOQyxPQUFPLEdBQUFMLElBQUEsQ0FBUEssT0FBTztJQUNQQyxrQkFBa0IsR0FBQU4sSUFBQSxDQUFsQk0sa0JBQWtCO0VBRWxCLElBQUFDLGVBQUEsR0FBY1osY0FBYyxDQUFDLENBQUNFLFFBQVEsQ0FBQ1csTUFBTSxDQUFDLENBQUM7SUFBdkNDLENBQUMsR0FBQUYsZUFBQSxDQUFERSxDQUFDO0VBQ1QsSUFBQUMsU0FBQSxHQUF3QmxCLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDO0lBQUFtQixVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUE5Q0csSUFBSSxHQUFBRixVQUFBO0lBQUVHLE9BQU8sR0FBQUgsVUFBQTtFQUNwQixJQUFBSSxVQUFBLEdBQWdDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBd0IsVUFBQSxHQUFBSixjQUFBLENBQUFHLFVBQUE7SUFBeENFLFNBQVMsR0FBQUQsVUFBQTtJQUFFRSxVQUFVLEdBQUFGLFVBQUE7RUFDNUIsSUFBQUcsVUFBQSxHQUFrQzNCLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTRCLFVBQUEsR0FBQVIsY0FBQSxDQUFBTyxVQUFBO0lBQTFDRSxTQUFTLEdBQUFELFVBQUE7SUFBRUUsWUFBWSxHQUFBRixVQUFBO0VBQzlCLElBQUFHLFVBQUEsR0FBNEMvQixRQUFRLENBQWdCLElBQUksQ0FBQztJQUFBZ0MsVUFBQSxHQUFBWixjQUFBLENBQUFXLFVBQUE7SUFBbEVFLGNBQWMsR0FBQUQsVUFBQTtJQUFFRSxpQkFBaUIsR0FBQUYsVUFBQTtFQUN4QyxJQUFNRyxrQkFBa0IsR0FBR2pDLE1BQU0sQ0FBeUIsSUFBSSxDQUFDO0VBQy9ELElBQU1rQyxZQUFZLEdBQUdsQyxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ2xDLElBQU1tQyxlQUFlLEdBQUduQyxNQUFNLENBQXFELElBQUksQ0FBQztFQUV4RixJQUFNb0MsaUJBQWlCLEdBQUdwQyxNQUFNLENBQUNPLGNBQWMsQ0FBQztFQUNoRCxJQUFNOEIsaUJBQWlCLEdBQUdyQyxNQUFNLENBQUNRLGNBQWMsQ0FBQztFQUNoRCxJQUFNOEIsaUJBQWlCLEdBQUd0QyxNQUFNLENBQUNTLGNBQWMsQ0FBQztFQUNoRCxJQUFNOEIsU0FBUyxHQUFHdkMsTUFBTSxDQUFDVSxNQUFNLENBQUM7RUFDaEMsSUFBTThCLFVBQVUsR0FBR3hDLE1BQU0sQ0FBQ1csT0FBTyxDQUFDO0VBQ2xDLElBQU04QixxQkFBcUIsR0FBR3pDLE1BQU0sQ0FBQ1ksa0JBQWtCLENBQUM7RUFFeER3QixpQkFBaUIsQ0FBQ00sT0FBTyxHQUFHbkMsY0FBYztFQUMxQzhCLGlCQUFpQixDQUFDSyxPQUFPLEdBQUdsQyxjQUFjO0VBQzFDOEIsaUJBQWlCLENBQUNJLE9BQU8sR0FBR2pDLGNBQWM7RUFDMUM4QixTQUFTLENBQUNHLE9BQU8sR0FBR2hDLE1BQU07RUFDMUI4QixVQUFVLENBQUNFLE9BQU8sR0FBRy9CLE9BQU87RUFDNUI4QixxQkFBcUIsQ0FBQ0MsT0FBTyxHQUFHOUIsa0JBQWtCO0VBRWxELElBQU0rQixlQUFlLEdBQUc1QyxXQUFXLENBQUMsWUFBTTtJQUN4QyxJQUFJb0MsZUFBZSxDQUFDTyxPQUFPLEtBQUssSUFBSSxFQUFFO01BQ3BDUCxlQUFlLENBQUNPLE9BQU8sR0FBR3RDLHdCQUF3QixDQUFDLFVBQUF3QyxJQUFJLEVBQUk7UUFBQSxJQUFBQyxxQkFBQTtRQUN6RHpCLE9BQU8sQ0FBQ3dCLElBQUksQ0FBQztRQUNiLENBQUFDLHFCQUFBLEdBQUFULGlCQUFpQixDQUFDTSxPQUFPLGNBQUFHLHFCQUFBLGVBQXpCQSxxQkFBQSxDQUFBQyxJQUFBLENBQUFWLGlCQUFpQixFQUFXUSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztNQUM3QyxDQUFDLENBQUM7SUFDSjtJQUNBLE9BQU9ULGVBQWUsQ0FBQ08sT0FBTztFQUNoQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTUssZUFBZSxHQUFHaEQsV0FBVztJQUFBLElBQUFpRCxLQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FDakMsU0FBQUMsUUFBT0MsUUFBa0I7TUFBQSxJQUFBQyxjQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLG1CQUFBO01BQUEsSUFBQUMsY0FBQSxFQUFBQyxNQUFBLEVBQUFDLE9BQUEsRUFBQUMsTUFBQSxFQUFBQyxrQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyxJQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxTQUFBLEVBQUFDLEtBQUEsRUFBQUMsSUFBQSxFQUFBQyxXQUFBLEVBQUFDLFlBQUEsRUFBQUMsU0FBQSxFQUFBQyxRQUFBLEVBQUFDLFNBQUEsRUFBQUMsT0FBQSxFQUFBQyxLQUFBLEVBQUFDLHFCQUFBLEVBQUFDLFdBQUEsRUFBQUMsWUFBQSxFQUFBQyxPQUFBLEVBQUFDLGVBQUEsRUFBQUMsV0FBQSxFQUFBQyxVQUFBLEVBQUFDLGdCQUFBLEVBQUFDLG9CQUFBLEVBQUFDLEVBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLEdBQUE7TUFBQSxPQUFBeEMsbUJBQUEsQ0FBQXlDLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFBQUYsUUFBQSxDQUFBQyxJQUFBO1lBRWZsQyxNQUFNLElBQUFELGNBQUEsR0FBR0wsUUFBUSxDQUFDMEMsSUFBSSxjQUFBckMsY0FBQSx1QkFBYkEsY0FBQSxDQUFlc0MsU0FBUyxDQUFDLENBQUM7WUFBQSxJQUNwQ3JDLE1BQU07Y0FBQWlDLFFBQUEsQ0FBQUUsSUFBQTtjQUFBO1lBQUE7WUFBQSxNQUNILElBQUlHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztVQUFBO1lBR2xDckMsT0FBTyxHQUFHLElBQUlzQyxXQUFXLENBQUMsQ0FBQztZQUM3QnJDLE1BQU0sR0FBRyxFQUFFO1lBQ1hDLGtCQUFrQixHQUFHLEVBQUU7WUFDdkJDLGlCQUFpQixHQUFHLEtBQUs7VUFBQTtZQUFBLEtBRXRCLElBQUk7Y0FBQTZCLFFBQUEsQ0FBQUUsSUFBQTtjQUFBO1lBQUE7WUFBQSxLQUNMNUQsWUFBWSxDQUFDUSxPQUFPO2NBQUFrRCxRQUFBLENBQUFFLElBQUE7Y0FBQTtZQUFBO1lBQ3RCbkMsTUFBTSxDQUFDd0MsTUFBTSxDQUFDLENBQUM7WUFBQSxPQUFBUCxRQUFBLENBQUFRLE1BQUE7VUFBQTtZQUFBUixRQUFBLENBQUFFLElBQUE7WUFBQSxPQUlhbkMsTUFBTSxDQUFDMEMsSUFBSSxDQUFDLENBQUM7VUFBQTtZQUFBckMsa0JBQUEsR0FBQTRCLFFBQUEsQ0FBQVUsSUFBQTtZQUFuQ3JDLElBQUksR0FBQUQsa0JBQUEsQ0FBSkMsSUFBSTtZQUFFQyxLQUFLLEdBQUFGLGtCQUFBLENBQUxFLEtBQUs7WUFBQSxLQUNmRCxJQUFJO2NBQUEyQixRQUFBLENBQUFFLElBQUE7Y0FBQTtZQUFBO1lBQUEsT0FBQUYsUUFBQSxDQUFBUSxNQUFBO1VBQUE7WUFBQSxLQUlKbEUsWUFBWSxDQUFDUSxPQUFPO2NBQUFrRCxRQUFBLENBQUFFLElBQUE7Y0FBQTtZQUFBO1lBQ3RCbkMsTUFBTSxDQUFDd0MsTUFBTSxDQUFDLENBQUM7WUFBQSxPQUFBUCxRQUFBLENBQUFRLE1BQUE7VUFBQTtZQUlqQnZDLE1BQU0sSUFBSUQsT0FBTyxDQUFDMkMsTUFBTSxDQUFDckMsS0FBSyxFQUFFO2NBQUVzQyxNQUFNLEVBQUU7WUFBSyxDQUFDLENBQUM7WUFDM0NyQyxLQUFLLEdBQUdOLE1BQU0sQ0FBQzRDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDbEM1QyxNQUFNLEdBQUdNLEtBQUssQ0FBQ3VDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRTtZQUFBdEMsU0FBQSxHQUFBdUMsMEJBQUEsQ0FFUHhDLEtBQUs7WUFBQXlCLFFBQUEsQ0FBQUMsSUFBQTtZQUFBekIsU0FBQSxDQUFBd0MsQ0FBQTtVQUFBO1lBQUEsS0FBQXZDLEtBQUEsR0FBQUQsU0FBQSxDQUFBeUMsQ0FBQSxJQUFBNUMsSUFBQTtjQUFBMkIsUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtZQUFieEIsSUFBSSxHQUFBRCxLQUFBLENBQUFILEtBQUE7WUFBQSxNQUNUSSxJQUFJLENBQUN3QyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7Y0FBQWxCLFFBQUEsQ0FBQUUsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBRixRQUFBLENBQUFRLE1BQUE7VUFBQTtZQUFBN0IsV0FBQSxHQUVRRCxJQUFJLENBQUNtQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUFqQyxZQUFBLEdBQUF0RCxjQUFBLENBQUFxRCxXQUFBLE1BQXZDRSxTQUFTLEdBQUFELFlBQUEsS0FBRUUsUUFBUSxHQUFBRixZQUFBO1lBQUEsTUFDdEIsQ0FBQ0MsU0FBUyxJQUFJLENBQUNDLFFBQVE7Y0FBQWtCLFFBQUEsQ0FBQUUsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBRixRQUFBLENBQUFRLE1BQUE7VUFBQTtZQUVyQnpCLFNBQVMsR0FBR0YsU0FBUyxDQUFDc0MsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQ0QsSUFBSSxDQUFDLENBQUM7WUFDbkRsQyxPQUFPLEdBQUdGLFFBQVEsQ0FBQ3FDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUNELElBQUksQ0FBQyxDQUFDO1lBQUFsQixRQUFBLENBQUFDLElBQUE7WUFHN0MxRSxLQUFJLEdBQUc2RixJQUFJLENBQUNDLEtBQUssQ0FBQ3JDLE9BQU8sQ0FBQztZQUFBVyxFQUFBLEdBRXhCWixTQUFTO1lBQUFpQixRQUFBLENBQUFFLElBQUEsR0FBQVAsRUFBQSxLQUNWLE9BQU8sUUFBQUEsRUFBQSxLQVdQLE1BQU0sUUFBQUEsRUFBQSxLQVdOLFVBQVUsUUFBQUEsRUFBQSxLQXFCVixtQkFBbUIsUUFBQUEsRUFBQSxLQVNuQixPQUFPO1lBQUE7VUFBQTtZQW5EVixJQUFJLENBQUN4QixpQkFBaUIsRUFBRTtjQUN0QkEsaUJBQWlCLEdBQUcsSUFBSTtjQUN4Qm5DLFlBQVksQ0FBQyxJQUFJLENBQUM7Y0FDbEJJLGlCQUFpQixDQUFDakIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2NBQ3BDLENBQUErRCxxQkFBQSxHQUFBeEMsaUJBQWlCLENBQUNJLE9BQU8sY0FBQW9DLHFCQUFBLGVBQXpCQSxxQkFBQSxDQUFBaEMsSUFBQSxDQUFBUixpQkFBNEIsQ0FBQztZQUMvQjtZQUNBd0Isa0JBQWtCLElBQUkzQyxLQUFJLENBQUMrRixPQUFPO1lBQ2xDdkUsZUFBZSxDQUFDLENBQUMsQ0FBQ3dFLFNBQVMsQ0FBQ3JELGtCQUFrQixDQUFDO1lBQUEsT0FBQThCLFFBQUEsQ0FBQVEsTUFBQTtVQUFBO1lBSS9DO1lBQ0EsSUFBSWpGLEtBQUksQ0FBQ2lHLE9BQU8sSUFBSSxPQUFPakcsS0FBSSxDQUFDaUcsT0FBTyxLQUFLLFFBQVEsRUFBRTtjQUNwRDtjQUNBNUYsVUFBVSxDQUFDLElBQUksQ0FBQztjQUNoQjtjQUNNdUQsV0FBVyxHQUFHNUQsS0FBSSxDQUFDaUcsT0FBTyxDQUFDQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUdsRyxLQUFJLENBQUNpRyxPQUFPLEdBQUdyRyxDQUFDLENBQUMsc0JBQXNCLENBQUM7Y0FDbkdpQixpQkFBaUIsQ0FBQytDLFdBQVcsQ0FBQztZQUNoQztZQUFDLE9BQUFhLFFBQUEsQ0FBQVEsTUFBQTtVQUFBO1lBSUtwQixZQUFZLEdBQUc3RCxLQUFJLENBQUMrRixPQUFPLElBQUlwRCxrQkFBa0I7WUFDakRtQixPQUFPLEdBQUc5RCxLQUFJLENBQUM4RCxPQUFPLElBQUksSUFBSTtZQUM5QkMsZUFBZSxHQUFHL0QsS0FBSSxDQUFDbUcsaUJBQWlCLElBQUksRUFBRTtZQUNoRG5DLFdBQVcsR0FBRyxJQUFJO1lBQ3RCLElBQUlvQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ3JHLEtBQUksQ0FBQ3NHLGFBQWEsQ0FBQyxFQUFFO2NBQ3JDdEMsV0FBVyxHQUFHaEUsS0FBSSxDQUFDc0csYUFBYTtZQUNsQyxDQUFDLE1BQU0sSUFBSUYsS0FBSyxDQUFDQyxPQUFPLENBQUNyRyxLQUFJLENBQUNnRSxXQUFXLENBQUMsRUFBRTtjQUMxQ0EsV0FBVyxHQUFHaEUsS0FBSSxDQUFDZ0UsV0FBVztZQUNoQztZQUNNQyxVQUFVLElBQUE5QixjQUFBLEdBQUduQyxLQUFJLENBQUN1RyxRQUFRLGNBQUFwRSxjQUFBLGNBQUFBLGNBQUEsR0FBSW5DLEtBQUksQ0FBQ3dHLE9BQU87WUFDMUN0QyxnQkFBZ0IsR0FDcEJELFVBQVUsSUFBSSxJQUFJLElBQUl3QyxNQUFNLENBQUN4QyxVQUFVLENBQUMsQ0FBQzBCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHYyxNQUFNLENBQUN4QyxVQUFVLENBQUMsQ0FBQzBCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSTtZQUMzRm5FLGVBQWUsQ0FBQyxDQUFDLENBQUN3RCxNQUFNLENBQUMsQ0FBQztZQUMxQnhELGVBQWUsQ0FBQyxDQUFDLENBQUNrRixLQUFLLENBQUMsQ0FBQztZQUN6QnpHLE9BQU8sQ0FBQzRELFlBQVksQ0FBQztZQUNyQnBELFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDbkJJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ3hCLENBQUF1QixxQkFBQSxHQUFBbEIsaUJBQWlCLENBQUNLLE9BQU8sY0FBQWEscUJBQUEsZUFBekJBLHFCQUFBLENBQUFULElBQUEsQ0FBQVQsaUJBQWlCLEVBQVcyQyxZQUFZLEVBQUVDLE9BQU8sRUFBRUMsZUFBZSxFQUFFQyxXQUFXLEVBQUVFLGdCQUFnQixDQUFDO1lBQUEsT0FBQU8sUUFBQSxDQUFBUSxNQUFBO1VBQUE7WUFJbEd6RCxlQUFlLENBQUMsQ0FBQyxDQUFDd0QsTUFBTSxDQUFDLENBQUM7WUFDMUJ4RCxlQUFlLENBQUMsQ0FBQyxDQUFDa0YsS0FBSyxDQUFDLENBQUM7WUFDekJqRyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ25CSixVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ2pCUSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBQztZQUN4QixDQUFBd0IscUJBQUEsR0FBQWYscUJBQXFCLENBQUNDLE9BQU8sY0FBQWMscUJBQUEsZUFBN0JBLHFCQUFBLENBQUFWLElBQUEsQ0FBQUwscUJBQXFCLEVBQVd0QixLQUFJLEVBQUUyQyxrQkFBa0IsQ0FBQztZQUFBLE9BQUE4QixRQUFBLENBQUFRLE1BQUE7VUFBQTtZQUl6RDBCLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLFlBQVksRUFBRTVHLEtBQUksQ0FBQzRHLEtBQUssQ0FBQztZQUN2Q3BGLGVBQWUsQ0FBQyxDQUFDLENBQUN3RCxNQUFNLENBQUMsQ0FBQztZQUMxQnhELGVBQWUsQ0FBQyxDQUFDLENBQUNrRixLQUFLLENBQUMsQ0FBQztZQUN6QmpHLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDbkJJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ3hCLENBQUF5QixtQkFBQSxHQUFBakIsVUFBVSxDQUFDRSxPQUFPLGNBQUFlLG1CQUFBLGVBQWxCQSxtQkFBQSxDQUFBWCxJQUFBLENBQUFOLFVBQXFCLENBQUM7WUFBQSxPQUFBb0QsUUFBQSxDQUFBUSxNQUFBO1VBQUE7WUFJdEIwQixPQUFPLENBQUNFLElBQUksQ0FBQyx5QkFBeUIsRUFBRXJELFNBQVMsQ0FBQztVQUFBO1lBQUFpQixRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1lBQUFGLFFBQUEsQ0FBQUMsSUFBQTtZQUFBTCxHQUFBLEdBQUFJLFFBQUE7WUFHdERrQyxPQUFPLENBQUNDLEtBQUssQ0FBQyx5QkFBeUIsRUFBQXZDLEdBQUEsRUFBY1osT0FBTyxDQUFDO1VBQUE7WUFBQWdCLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7WUFBQUYsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtZQUFBRixRQUFBLENBQUFDLElBQUE7WUFBQUosR0FBQSxHQUFBRyxRQUFBO1lBQUF4QixTQUFBLENBQUE2RCxDQUFBLENBQUF4QyxHQUFBO1VBQUE7WUFBQUcsUUFBQSxDQUFBQyxJQUFBO1lBQUF6QixTQUFBLENBQUE4RCxDQUFBO1lBQUEsT0FBQXRDLFFBQUEsQ0FBQXVDLE1BQUE7VUFBQTtZQUFBdkMsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtZQUFBRixRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1lBQUFGLFFBQUEsQ0FBQUMsSUFBQTtZQUFBSCxHQUFBLEdBQUFFLFFBQUE7WUFLbkVqRCxlQUFlLENBQUMsQ0FBQyxDQUFDd0QsTUFBTSxDQUFDLENBQUM7WUFDMUJ4RCxlQUFlLENBQUMsQ0FBQyxDQUFDa0YsS0FBSyxDQUFDLENBQUM7WUFDekJqRyxZQUFZLENBQUMsS0FBSyxDQUFDOztZQUVuQjtZQUNBLElBQUksQ0FBQ00sWUFBWSxDQUFDUSxPQUFPLEVBQUU7Y0FDekIsQ0FBQTRDLG9CQUFBLEdBQUE5QyxVQUFVLENBQUNFLE9BQU8sY0FBQTRDLG9CQUFBLGVBQWxCQSxvQkFBQSxDQUFBeEMsSUFBQSxDQUFBTixVQUFxQixDQUFDO1lBQ3hCO1VBQUM7WUFBQW9ELFFBQUEsQ0FBQUMsSUFBQTtZQUVEbEQsZUFBZSxDQUFDLENBQUMsQ0FBQ3dELE1BQU0sQ0FBQyxDQUFDO1lBQzFCeEQsZUFBZSxDQUFDLENBQUMsQ0FBQ2tGLEtBQUssQ0FBQyxDQUFDO1lBQ3pCckcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUNqQkksWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNuQkksaUJBQWlCLENBQUMsSUFBSSxDQUFDO1lBQUEsT0FBQTRELFFBQUEsQ0FBQXVDLE1BQUE7VUFBQTtVQUFBO1lBQUEsT0FBQXZDLFFBQUEsQ0FBQXdDLElBQUE7UUFBQTtNQUFBLEdBQUFoRixPQUFBO0lBQUEsQ0FFMUI7SUFBQSxpQkFBQWlGLEVBQUE7TUFBQSxPQUFBckYsS0FBQSxDQUFBc0YsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxLQUNELENBQUN4SCxDQUFDLEVBQUU0QixlQUFlLENBQ3JCLENBQUM7RUFFRCxJQUFNNkYsT0FBTztJQUFBLElBQUFDLEtBQUEsR0FBQXhGLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBdUYsU0FBQUMsS0FBQTtNQUFBLElBQUF2QixPQUFBLEVBQUF3QixPQUFBLEVBQUFDLFNBQUEsRUFBQUMsSUFBQSxFQUFBQyxNQUFBLEVBQUFDLFNBQUEsRUFBQUMsUUFBQSxFQUFBQyxTQUFBLEVBQUFDLE1BQUEsRUFBQUMsU0FBQSxFQUFBQyxRQUFBLEVBQUFDLFVBQUEsRUFBQUMsU0FBQSxFQUFBNUIsT0FBQSxFQUFBNkIsaUJBQUEsRUFBQUMsa0JBQUEsRUFBQUMsV0FBQSxFQUFBQyxXQUFBLEVBQUFDLEtBQUEsRUFBQUMsaUJBQUEsRUFBQUMsV0FBQSxFQUFBQyxxQkFBQSxFQUFBMUcsUUFBQSxFQUFBMkcsR0FBQTtNQUFBLE9BQUE5RyxtQkFBQSxDQUFBeUMsSUFBQSxXQUFBc0UsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUFwRSxJQUFBLEdBQUFvRSxTQUFBLENBQUFuRSxJQUFBO1VBQUE7WUFDZHNCLE9BQU8sR0FBQXVCLEtBQUEsQ0FBUHZCLE9BQU8sRUFDUHdCLE9BQU8sR0FBQUQsS0FBQSxDQUFQQyxPQUFPLEVBQ1BDLFNBQVMsR0FBQUYsS0FBQSxDQUFURSxTQUFTLEVBQ1RDLElBQUksR0FBQUgsS0FBQSxDQUFKRyxJQUFJLEVBQ0pDLE1BQU0sR0FBQUosS0FBQSxDQUFOSSxNQUFNLEVBQ05DLFNBQVMsR0FBQUwsS0FBQSxDQUFUSyxTQUFTLEVBQ1RDLFFBQVEsR0FBQU4sS0FBQSxDQUFSTSxRQUFRLEVBQ1JDLFNBQVMsR0FBQVAsS0FBQSxDQUFUTyxTQUFTLEVBQ1RDLE1BQU0sR0FBQVIsS0FBQSxDQUFOUSxNQUFNLEVBQ05DLFNBQVMsR0FBQVQsS0FBQSxDQUFUUyxTQUFTLEVBQ1RDLFFBQVEsR0FBQVYsS0FBQSxDQUFSVSxRQUFRLEVBQ1JDLFVBQVUsR0FBQVgsS0FBQSxDQUFWVyxVQUFVLEVBQ1ZDLFNBQVMsR0FBQVosS0FBQSxDQUFUWSxTQUFTLEVBQ1Q1QixPQUFPLEdBQUFnQixLQUFBLENBQVBoQixPQUFPLEVBQ1A2QixpQkFBaUIsR0FBQWIsS0FBQSxDQUFqQmEsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsR0FBQWQsS0FBQSxDQUFsQmMsa0JBQWtCLEVBQ2xCQyxXQUFXLEdBQUFmLEtBQUEsQ0FBWGUsV0FBVyxFQUNYQyxXQUFXLEdBQUFoQixLQUFBLENBQVhnQixXQUFXLEVBQ1hDLEtBQUssR0FBQWpCLEtBQUEsQ0FBTGlCLEtBQUssRUFDTEMsaUJBQWlCLEdBQUFsQixLQUFBLENBQWpCa0IsaUJBQWlCLEVBQ2pCQyxXQUFXLEdBQUFuQixLQUFBLENBQVhtQixXQUFXO1lBQUFHLFNBQUEsQ0FBQXBFLElBQUE7WUF5QlRyRSxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2hCSSxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ25CZSxlQUFlLENBQUMsQ0FBQyxDQUFDa0YsS0FBSyxDQUFDLENBQUM7WUFDekJ6RyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2JZLGlCQUFpQixDQUFDLElBQUksQ0FBQztZQUN2QkUsWUFBWSxDQUFDUSxPQUFPLEdBQUcsS0FBSyxFQUFDOztZQUU3QlQsa0JBQWtCLENBQUNTLE9BQU8sR0FBRyxJQUFJd0gsZUFBZSxDQUFDLENBQUM7WUFBQUQsU0FBQSxDQUFBbkUsSUFBQTtZQUFBLE9BRTNCNUYsSUFBSSxDQUFDaUssWUFBWSxDQUFDQyxZQUFZLENBQUFDLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBO2NBRWpEQyxLQUFLLEVBQUVsRCxPQUFPO2NBQ2R3QixPQUFPLEVBQVBBLE9BQU87Y0FDUEUsSUFBSSxFQUFKQSxJQUFJO2NBQ0pDLE1BQU0sRUFBTkE7WUFBTSxHQUNGQyxTQUFTLEdBQUc7Y0FBRUEsU0FBUyxFQUFUQTtZQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDOUJDLFFBQVEsR0FBRztjQUFFQSxRQUFRLEVBQVJBO1lBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztjQUNoQ0MsU0FBUyxFQUFUQSxTQUFTO2NBQ1RDLE1BQU0sRUFBTkEsTUFBTTtjQUNOQyxTQUFTLEVBQVRBLFNBQVM7Y0FDVEMsUUFBUSxFQUFSQSxRQUFRO2NBQ1JFLFNBQVMsRUFBVEEsU0FBUztjQUNUNUIsT0FBTyxFQUFQQSxPQUFPO2NBQ1A2QixpQkFBaUIsRUFBakJBLGlCQUFpQjtjQUNqQkMsa0JBQWtCLEVBQWxCQTtZQUFrQixHQUNkWixTQUFTLEdBQUc7Y0FBRUEsU0FBUyxFQUFUQTtZQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDOUJhLFdBQVcsR0FBRztjQUFFQSxXQUFXLEVBQVhBO1lBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUNsQ0MsV0FBVyxHQUFHO2NBQUVBLFdBQVcsRUFBWEE7WUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ2xDTCxVQUFVLEdBQUc7Y0FBRUEsVUFBVSxFQUFWQTtZQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDaENNLEtBQUssR0FBRztjQUFFQSxLQUFLLEVBQUxBO1lBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN0QkMsaUJBQWlCLEdBQUc7Y0FBRUEsaUJBQWlCLEVBQWpCQTtZQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQzlDQyxXQUFXLElBQUksSUFBSSxHQUFHO2NBQUVBLFdBQVcsRUFBWEE7WUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUFDLHFCQUFBLEdBRWhEOUgsa0JBQWtCLENBQUNTLE9BQU8sY0FBQXFILHFCQUFBLHVCQUExQkEscUJBQUEsQ0FBNEJRLE1BQzlCLENBQUM7VUFBQTtZQXpCS2xILFFBQVEsR0FBQTRHLFNBQUEsQ0FBQTNELElBQUE7WUFBQTJELFNBQUEsQ0FBQW5FLElBQUE7WUFBQSxPQTJCUi9DLGVBQWUsQ0FBQ00sUUFBUSxDQUFDO1VBQUE7WUFBQTRHLFNBQUEsQ0FBQW5FLElBQUE7WUFBQTtVQUFBO1lBQUFtRSxTQUFBLENBQUFwRSxJQUFBO1lBQUFtRSxHQUFBLEdBQUFDLFNBQUE7WUFFL0J0SixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLENBQUM7WUFDWGEsVUFBVSxDQUFDLEtBQUssQ0FBQztVQUFBO1VBQUE7WUFBQSxPQUFBeUksU0FBQSxDQUFBN0IsSUFBQTtRQUFBO01BQUEsR0FBQU0sUUFBQTtJQUFBLENBRXBCO0lBQUEsZ0JBdkZLRixPQUFPQSxDQUFBZ0MsR0FBQTtNQUFBLE9BQUEvQixLQUFBLENBQUFILEtBQUEsT0FBQUMsU0FBQTtJQUFBO0VBQUEsR0F1Rlo7RUFFRCxJQUFNa0MsYUFBYSxHQUFHMUssV0FBVyxDQUFDLFlBQU07SUFDdEMsSUFBSWtDLGtCQUFrQixDQUFDUyxPQUFPLEVBQUU7TUFBQSxJQUFBZ0kscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsa0JBQUE7TUFDOUIxSSxZQUFZLENBQUNRLE9BQU8sR0FBRyxJQUFJO01BQzNCVCxrQkFBa0IsQ0FBQ1MsT0FBTyxDQUFDbUksS0FBSyxDQUFDLENBQUM7TUFDbEM1SSxrQkFBa0IsQ0FBQ1MsT0FBTyxHQUFHLElBQUk7TUFDakMsQ0FBQWdJLHFCQUFBLEdBQUF2SSxlQUFlLENBQUNPLE9BQU8sY0FBQWdJLHFCQUFBLGVBQXZCQSxxQkFBQSxDQUF5QnZFLE1BQU0sQ0FBQyxDQUFDO01BQ2pDLENBQUF3RSxzQkFBQSxHQUFBeEksZUFBZSxDQUFDTyxPQUFPLGNBQUFpSSxzQkFBQSxlQUF2QkEsc0JBQUEsQ0FBeUI5QyxLQUFLLENBQUMsQ0FBQztNQUNoQ3JHLFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakJJLFlBQVksQ0FBQyxLQUFLLENBQUM7TUFDbkJJLGlCQUFpQixDQUFDLElBQUksQ0FBQztNQUN2QixDQUFBNEksa0JBQUEsR0FBQXJJLFNBQVMsQ0FBQ0csT0FBTyxjQUFBa0ksa0JBQUEsZUFBakJBLGtCQUFBLENBQUE5SCxJQUFBLENBQUFQLFNBQW9CLENBQUM7SUFDdkI7RUFDRixDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTXNGLEtBQUssR0FBRyxTQUFSQSxLQUFLQSxDQUFBLEVBQVM7SUFBQSxJQUFBaUQsc0JBQUEsRUFBQUMsc0JBQUE7SUFDbEIsQ0FBQUQsc0JBQUEsR0FBQTNJLGVBQWUsQ0FBQ08sT0FBTyxjQUFBb0ksc0JBQUEsZUFBdkJBLHNCQUFBLENBQXlCM0UsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQTRFLHNCQUFBLEdBQUE1SSxlQUFlLENBQUNPLE9BQU8sY0FBQXFJLHNCQUFBLGVBQXZCQSxzQkFBQSxDQUF5QmxELEtBQUssQ0FBQyxDQUFDO0lBQ2hDekcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNiSSxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ2pCSSxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ25CSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDdkJFLFlBQVksQ0FBQ1EsT0FBTyxHQUFHLEtBQUs7RUFDOUIsQ0FBQztFQUVELE9BQU87SUFDTDhGLE9BQU8sRUFBUEEsT0FBTztJQUNQbkYsUUFBUSxFQUFFbEMsSUFBSTtJQUNkSSxTQUFTLEVBQVRBLFNBQVM7SUFDVEksU0FBUyxFQUFUQSxTQUFTO0lBQ1RJLGNBQWMsRUFBZEEsY0FBYztJQUNkOEYsS0FBSyxFQUFMQSxLQUFLO0lBQ0w0QyxhQUFhLEVBQWJBLGFBQWE7SUFDYjFILGVBQWUsRUFBZkEsZUFBZSxDQUFFO0VBQ25CLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
|