@projectcor/maia-components 2.11.66-8 → 2.11.67-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/lib/components/atoms/Chip/Chip.js +15 -50
  2. package/lib/components/atoms/Chip/styles.js +5 -9
  3. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +9 -5
  4. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +4 -2
  5. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +35 -8
  6. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +37 -28
  7. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +30 -42
  8. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +13 -21
  9. package/lib/components/atoms/MAIAInput/MAIAInput.js +29 -24
  10. package/lib/components/atoms/icons/MAIAIsologo.js +5 -2
  11. package/lib/components/atoms/icons/SkillIcon.js +30 -0
  12. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  13. package/lib/components/atoms/icons/TaskLinkIcon.js +27 -0
  14. package/lib/components/atoms/icons/index.js +3 -1
  15. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +19 -2
  16. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +48 -298
  17. package/lib/components/molecules/ChatAIHome/styles.js +26 -63
  18. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +150 -57
  19. package/lib/components/molecules/ChatAIMessages/newStyles.js +12 -21
  20. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +80 -223
  21. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +4 -27
  22. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +46 -19
  23. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  24. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +123 -28
  25. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +66 -41
  26. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  27. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  28. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  29. package/lib/components/molecules/ChatFooter/ChatFooter.js +24 -78
  30. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +7 -22
  31. package/lib/components/molecules/ChatFooter/styles.js +2 -11
  32. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
  33. package/lib/components/molecules/Sidebar/Sidebar.js +66 -21
  34. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +40 -26
  35. package/lib/components/molecules/Sidebar/Sidebar.styles.js +10 -7
  36. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  37. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  38. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  39. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  40. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  41. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  42. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
  43. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
  44. package/lib/constants/config.js +4 -1
  45. package/lib/constants/maiaTaskPanelAccess.js +5 -7
  46. package/lib/constants/permissions/index.js +2 -2
  47. package/lib/constants/permissions/utils.js +4 -1
  48. package/lib/constants/taskLinkIcon.js +15 -6
  49. package/lib/constants/taskUrls.js +1 -3
  50. package/lib/context/global-context.js +1 -8
  51. package/lib/hooks/index.js +1 -2
  52. package/lib/hooks/useChatManager/useChatManager.js +125 -149
  53. package/lib/hooks/useChatMessages/useChatMessages.js +5 -34
  54. package/lib/hooks/useContextMentions.js +60 -15
  55. package/lib/hooks/useEntitySearch.js +337 -96
  56. package/lib/hooks/useEvent.js +4 -3
  57. package/lib/hooks/useFrequentlyAskedQuestions.js +10 -12
  58. package/lib/hooks/useFrequentlyUsedActions.js +3 -5
  59. package/lib/hooks/useMentionAllowedTypes.js +41 -16
  60. package/lib/hooks/useMentionPopover.js +54 -49
  61. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  62. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +18 -27
  63. package/lib/hooks/useProjectSearch.js +28 -4
  64. package/lib/hooks/useProjectSummaryConfig.js +4 -74
  65. package/lib/hooks/useRecentClientsSearch.js +34 -4
  66. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +16 -24
  67. package/lib/lang/br/index.js +60 -32
  68. package/lib/lang/en/index.js +60 -32
  69. package/lib/lang/es/index.js +60 -32
  70. package/lib/lang/fr/index.js +60 -32
  71. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +3 -6
  72. package/lib/services/maia/Agents/getAgents.js +223 -199
  73. package/lib/services/maia/Chats/getChatMessages.js +6 -34
  74. package/lib/services/maia/Chats/getChatsByUserId.js +2 -10
  75. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +4 -6
  76. package/lib/services/maia/Orchestrator/orchestrator.js +5 -21
  77. package/lib/services/maia/Skills/createSkill.js +39 -0
  78. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  79. package/lib/services/maia/Skills/generateSkill.js +41 -0
  80. package/lib/services/maia/Skills/getSkills.js +90 -0
  81. package/lib/services/maia/Skills/updateSkill.js +39 -0
  82. package/lib/services/maia/index.js +2 -4
  83. package/lib/services/utils/validateIsMaia.js +2 -2
  84. package/lib/types/agent.js +1 -1
  85. package/lib/types/contextMention.js +1 -1
  86. package/lib/types/skill.js +2 -0
  87. package/lib/utils/agentDisplayName.js +19 -11
  88. package/lib/utils/contextMentionIcons.js +35 -16
  89. package/lib/utils/contextMentionTriggers.js +53 -0
  90. package/lib/utils/corConnectorMentionTypes.js +37 -0
  91. package/lib/utils/hitlAnalytics.js +6 -5
  92. package/lib/utils/normalizeAgentConnectors.js +32 -0
  93. package/lib/utils/renderContextMentions.js +9 -6
  94. package/package.json +1 -1
  95. package/lib/hooks/useContextPinPopover.js +0 -235
  96. package/lib/hooks/useRecentContexts.js +0 -86
  97. package/lib/services/maia/RecentContexts/getRecentContexts.js +0 -54
  98. package/lib/services/maia/RecentContexts/index.js +0 -6
  99. package/lib/utils/entityLinkRender.js +0 -132
@@ -1,8 +1,9 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
4
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
5
  import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
6
+ import { Search } from '@projectcor/icons/lib/components/Search';
6
7
  import { Star } from '@projectcor/icons/lib/components/Star';
7
8
  import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
8
9
  import { useTranslation } from 'react-i18next';
@@ -14,23 +15,65 @@ import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal/DeleteQ
14
15
  import { SECTIONS } from '../../../constants/config';
15
16
  import { Loader } from '../../atoms/Loader';
16
17
  import { Fade } from '../../atoms/Fade';
18
+ import { Skeleton } from '../../atoms/Skeleton/Skeleton';
17
19
  import { useToggleFavorite } from '../../../hooks';
18
20
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
19
- import { SCMABody, SCMACardBody, SCMACardButton, SCMACardFooter, SCMACardHeader, SCMACardTopRow, SCMACardIntroText, SCMACardMenu, SCMACardMenuItem, SCMACardMenuItems, SCMAFavoriteButton, SCMAFavoriteStarWrap, SCMACardFooterDate, SCMACardTitleEmoji, SCMACardTitleName, SCMACardsOuter, SCMACardsRow, SCMAEmptyStateRoot, SCMAEmptyStateColumn, SCMAEmptyStateTitleBlock, SCMAEmptyStateTitle, SCMAEmptyStateSubtitle, SCMAEmptyStateButton, SCMAKebabButton, SCMALoadMoreWrapper, SCMAMyAgentsContainer, SCMATitle, SCMATitleInner, SCMATitleWrap, SCMAActionsRow, SCMACreateManualButton, SCMACreateManualButtonText } from './ChatAIMyAgents.styles';
21
+ import { SCMABody, SCMACardBody, SCMACardButton, SCMACardFooter, SCMACardHeader, SCMACardTopRow, SCMACardIntroText, SCMACardMenu, SCMACardMenuItem, SCMACardMenuItems, SCMAFavoriteButton, SCMAFavoriteStarWrap, SCMACardFooterDate, SCMACardTitleEmoji, SCMACardTitleName, SCMACardsOuter, SCMACardsRow, SCMAEmptyStateRoot, SCMAEmptyStateColumn, SCMAEmptyStateTitleBlock, SCMAEmptyStateTitle, SCMAEmptyStateSubtitle, SCMAEmptyStateButton, SCMAKebabButton, SCMALoadMoreWrapper, SCMALogoContainer, SCMAMyAgentsContainer, SCMATitle, SCMATitleInner, SCMATitleWrap, SCMAActionsRow, SCMACreateManualButton, SCMACreateManualButtonText, SCMACardSkeletonItem, SCMASearchWrapper, SCMASearchInput, SCMASearchHint, SCMASearchNoResults } from './ChatAIMyAgents.styles';
20
22
  import { MAIAIsologo } from '../../atoms/icons';
21
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
- export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
24
+ var AgentSearchInput = /*#__PURE__*/React.memo(function (_ref) {
25
+ var onSearch = _ref.onSearch,
26
+ placeholder = _ref.placeholder,
27
+ hint = _ref.hint;
28
+ var _useState = useState(''),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ value = _useState2[0],
31
+ setValue = _useState2[1];
32
+ var debounceRef = useRef(null);
33
+ var showHint = value.length > 0 && value.length < 3;
34
+ var handleChange = useCallback(function (e) {
35
+ var val = e.target.value;
36
+ setValue(val);
37
+ if (debounceRef.current) clearTimeout(debounceRef.current);
38
+ debounceRef.current = setTimeout(function () {
39
+ if (val === '' || val.length >= 3) onSearch(val);
40
+ }, 350);
41
+ }, [onSearch]);
42
+ useEffect(function () {
43
+ return function () {
44
+ if (debounceRef.current) clearTimeout(debounceRef.current);
45
+ };
46
+ }, []);
47
+ return /*#__PURE__*/_jsxs(SCMASearchWrapper, {
48
+ children: [/*#__PURE__*/_jsx(Search, {
49
+ width: 16,
50
+ height: 16,
51
+ color: "#999"
52
+ }), /*#__PURE__*/_jsx(SCMASearchInput, {
53
+ type: "text",
54
+ value: value,
55
+ onChange: handleChange,
56
+ placeholder: placeholder
57
+ }), showHint ? /*#__PURE__*/_jsx(SCMASearchHint, {
58
+ children: hint
59
+ }) : null]
60
+ });
61
+ });
62
+ export var ChatAIMyAgents = function ChatAIMyAgents(_ref2) {
23
63
  var _user$permissions;
24
- var onBack = _ref.onBack,
25
- agents = _ref.agents,
26
- onDeleteAgent = _ref.onDeleteAgent,
27
- onFavoriteAgentUpdate = _ref.onFavoriteAgentUpdate,
28
- _ref$hasMoreAgents = _ref.hasMoreAgents,
29
- hasMoreAgents = _ref$hasMoreAgents === void 0 ? false : _ref$hasMoreAgents,
30
- _ref$loadingMoreAgent = _ref.loadingMoreAgents,
31
- loadingMoreAgents = _ref$loadingMoreAgent === void 0 ? false : _ref$loadingMoreAgent,
32
- onLoadMoreAgents = _ref.onLoadMoreAgents,
33
- onGoToMaiaker = _ref.onGoToMaiaker;
64
+ var onBack = _ref2.onBack,
65
+ agents = _ref2.agents,
66
+ onDeleteAgent = _ref2.onDeleteAgent,
67
+ onFavoriteAgentUpdate = _ref2.onFavoriteAgentUpdate,
68
+ _ref2$hasMoreAgents = _ref2.hasMoreAgents,
69
+ hasMoreAgents = _ref2$hasMoreAgents === void 0 ? false : _ref2$hasMoreAgents,
70
+ _ref2$loadingMoreAgen = _ref2.loadingMoreAgents,
71
+ loadingMoreAgents = _ref2$loadingMoreAgen === void 0 ? false : _ref2$loadingMoreAgen,
72
+ onLoadMoreAgents = _ref2.onLoadMoreAgents,
73
+ onGoToMaiaker = _ref2.onGoToMaiaker,
74
+ onSearchAgents = _ref2.onSearchAgents,
75
+ _ref2$searchLoadingAg = _ref2.searchLoadingAgents,
76
+ searchLoadingAgents = _ref2$searchLoadingAg === void 0 ? false : _ref2$searchLoadingAg;
34
77
  var _useTranslation = useTranslation([SECTIONS.chatAI, SECTIONS.abmAgent]),
35
78
  t = _useTranslation.t;
36
79
  var user = useUser();
@@ -45,14 +88,14 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
45
88
  var customAgents = agents.filter(function (agent) {
46
89
  return agent.type === 'custom' && !agent.is_deleted;
47
90
  });
48
- var _useState = useState(null),
49
- _useState2 = _slicedToArray(_useState, 2),
50
- menuOpenForAgentId = _useState2[0],
51
- setMenuOpenForAgentId = _useState2[1];
52
91
  var _useState3 = useState(null),
53
92
  _useState4 = _slicedToArray(_useState3, 2),
54
- agentToDelete = _useState4[0],
55
- setAgentToDelete = _useState4[1];
93
+ menuOpenForAgentId = _useState4[0],
94
+ setMenuOpenForAgentId = _useState4[1];
95
+ var _useState5 = useState(null),
96
+ _useState6 = _slicedToArray(_useState5, 2),
97
+ agentToDelete = _useState6[0],
98
+ setAgentToDelete = _useState6[1];
56
99
  var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
57
100
  var canCreateAgent = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create) && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
58
101
  var canEdit = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.edit) && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
@@ -61,6 +104,14 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
61
104
  var _useToggleFavorite = useToggleFavorite(),
62
105
  toggleFavorite = _useToggleFavorite.toggleFavorite;
63
106
  var eventAmplitude = useEvent();
107
+ var _useState7 = useState(false),
108
+ _useState8 = _slicedToArray(_useState7, 2),
109
+ isSearchActive = _useState8[0],
110
+ setIsSearchActive = _useState8[1];
111
+ var handleSearchAgents = useCallback(function (query) {
112
+ setIsSearchActive(query !== '');
113
+ onSearchAgents === null || onSearchAgents === void 0 || onSearchAgents(query);
114
+ }, [onSearchAgents]);
64
115
  var openCreateAgentModal = useCallback(function () {
65
116
  eventAmplitude(EVENTS.openModal, {
66
117
  option: 'create_agent'
@@ -147,7 +198,7 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
147
198
  }, undefined, isFavorite);
148
199
  };
149
200
  var handleConfirmDelete = /*#__PURE__*/function () {
150
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
201
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
151
202
  var _t;
152
203
  return _regeneratorRuntime.wrap(function (_context) {
153
204
  while (1) switch (_context.prev = _context.next) {
@@ -177,7 +228,7 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
177
228
  }, _callee, null, [[0, 2]]);
178
229
  }));
179
230
  return function handleConfirmDelete(_x) {
180
- return _ref2.apply(this, arguments);
231
+ return _ref3.apply(this, arguments);
181
232
  };
182
233
  }();
183
234
  useEffect(function () {
@@ -223,10 +274,12 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
223
274
  }, [customAgents.length, hasMoreAgents, loadingMoreAgents, onLoadMoreAgents]);
224
275
  return /*#__PURE__*/_jsxs(SCMAMyAgentsContainer, {
225
276
  id: "my-agents-scroll-container",
226
- $hasAgents: !!customAgents.length,
227
- children: [/*#__PURE__*/_jsx(MAIAIsologo, {}), /*#__PURE__*/_jsxs(SCMABody, {
277
+ $hasAgents: !!customAgents.length || isSearchActive,
278
+ children: [/*#__PURE__*/_jsx(SCMALogoContainer, {
279
+ children: /*#__PURE__*/_jsx(MAIAIsologo, {})
280
+ }), /*#__PURE__*/_jsxs(SCMABody, {
228
281
  $canCreateAgent: canCreateAgent,
229
- children: [customAgents.length ? /*#__PURE__*/_jsxs(SCMATitleWrap, {
282
+ children: [customAgents.length || isSearchActive ? /*#__PURE__*/_jsxs(SCMATitleWrap, {
230
283
  children: [/*#__PURE__*/_jsx(SCMATitleInner, {
231
284
  children: /*#__PURE__*/_jsx(SCMATitle, {
232
285
  children: t('marketplace.myAgentsReadyTitle')
@@ -239,8 +292,48 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
239
292
  children: t('marketplace.createAgent')
240
293
  })
241
294
  })
295
+ }) : null, onSearchAgents ? /*#__PURE__*/_jsx(AgentSearchInput, {
296
+ onSearch: handleSearchAgents,
297
+ placeholder: t('marketplace.searchAgentPlaceholder'),
298
+ hint: t('marketplace.searchMinLength')
242
299
  }) : null]
243
- }) : null, customAgents.length ? /*#__PURE__*/_jsx(SCMACardsOuter, {
300
+ }) : null, searchLoadingAgents ? /*#__PURE__*/_jsx(SCMACardsOuter, {
301
+ children: /*#__PURE__*/_jsx(SCMACardsRow, {
302
+ children: Array.from({
303
+ length: 6
304
+ }).map(function (_, i) {
305
+ return (
306
+ /*#__PURE__*/
307
+ // eslint-disable-next-line react/no-array-index-key
308
+ _jsxs(SCMACardSkeletonItem, {
309
+ children: [/*#__PURE__*/_jsx(Skeleton, {
310
+ variant: "circular",
311
+ width: 16,
312
+ height: 16
313
+ }), /*#__PURE__*/_jsx(Skeleton, {
314
+ variant: "text",
315
+ height: 14
316
+ }), /*#__PURE__*/_jsx(Skeleton, {
317
+ variant: "text",
318
+ height: 14,
319
+ width: "75%"
320
+ }), /*#__PURE__*/_jsx(Skeleton, {
321
+ variant: "text",
322
+ height: 12
323
+ }), /*#__PURE__*/_jsx(Skeleton, {
324
+ variant: "text",
325
+ height: 12,
326
+ width: "85%"
327
+ }), /*#__PURE__*/_jsx(Skeleton, {
328
+ variant: "text",
329
+ height: 11,
330
+ width: "40%"
331
+ })]
332
+ }, i)
333
+ );
334
+ })
335
+ })
336
+ }) : null, !searchLoadingAgents && customAgents.length ? /*#__PURE__*/_jsx(SCMACardsOuter, {
244
337
  children: /*#__PURE__*/_jsx(SCMACardsRow, {
245
338
  children: customAgents.map(function (agent, index) {
246
339
  var _agent$emoji;
@@ -330,7 +423,9 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
330
423
  }, agent.id);
331
424
  })
332
425
  })
333
- }) : /*#__PURE__*/_jsxs(SCMAEmptyStateRoot, {
426
+ }) : null, !searchLoadingAgents && !customAgents.length && isSearchActive ? /*#__PURE__*/_jsx(SCMASearchNoResults, {
427
+ children: t('marketplace.searchNoResults')
428
+ }) : null, !searchLoadingAgents && !customAgents.length && !isSearchActive ? /*#__PURE__*/_jsxs(SCMAEmptyStateRoot, {
334
429
  children: [/*#__PURE__*/_jsx(SCMAEmptyStateColumn, {
335
430
  children: /*#__PURE__*/_jsxs(SCMAEmptyStateTitleBlock, {
336
431
  children: [/*#__PURE__*/_jsx(SCMAEmptyStateTitle, {
@@ -344,7 +439,7 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
344
439
  onClick: handleEmptyStatePrimaryAction,
345
440
  children: t('marketplace.myAgentsEmptyStateButton')
346
441
  }) : null]
347
- }), loadingMoreAgents ? /*#__PURE__*/_jsx(SCMALoadMoreWrapper, {
442
+ }) : null, loadingMoreAgents ? /*#__PURE__*/_jsx(SCMALoadMoreWrapper, {
348
443
  children: /*#__PURE__*/_jsx(Fade, {
349
444
  children: /*#__PURE__*/_jsx(Loader, {
350
445
  size: "small"
@@ -363,4 +458,4 @@ export var ChatAIMyAgents = function ChatAIMyAgents(_ref) {
363
458
  }) : null]
364
459
  });
365
460
  };
366
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTdGFyIiwiVG9vbHRpcCIsInVzZVRyYW5zbGF0aW9uIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJkZWxldGVBZ2VudCIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTRUNUSU9OUyIsIkxvYWRlciIsIkZhZGUiLCJ1c2VUb2dnbGVGYXZvcml0ZSIsIkVWRU5UUyIsInVzZUV2ZW50IiwiU0NNQUJvZHkiLCJTQ01BQ2FyZEJvZHkiLCJTQ01BQ2FyZEJ1dHRvbiIsIlNDTUFDYXJkRm9vdGVyIiwiU0NNQUNhcmRIZWFkZXIiLCJTQ01BQ2FyZFRvcFJvdyIsIlNDTUFDYXJkSW50cm9UZXh0IiwiU0NNQUNhcmRNZW51IiwiU0NNQUNhcmRNZW51SXRlbSIsIlNDTUFDYXJkTWVudUl0ZW1zIiwiU0NNQUZhdm9yaXRlQnV0dG9uIiwiU0NNQUZhdm9yaXRlU3RhcldyYXAiLCJTQ01BQ2FyZEZvb3RlckRhdGUiLCJTQ01BQ2FyZFRpdGxlRW1vamkiLCJTQ01BQ2FyZFRpdGxlTmFtZSIsIlNDTUFDYXJkc091dGVyIiwiU0NNQUNhcmRzUm93IiwiU0NNQUVtcHR5U3RhdGVSb290IiwiU0NNQUVtcHR5U3RhdGVDb2x1bW4iLCJTQ01BRW1wdHlTdGF0ZVRpdGxlQmxvY2siLCJTQ01BRW1wdHlTdGF0ZVRpdGxlIiwiU0NNQUVtcHR5U3RhdGVTdWJ0aXRsZSIsIlNDTUFFbXB0eVN0YXRlQnV0dG9uIiwiU0NNQUtlYmFiQnV0dG9uIiwiU0NNQUxvYWRNb3JlV3JhcHBlciIsIlNDTUFNeUFnZW50c0NvbnRhaW5lciIsIlNDTUFUaXRsZSIsIlNDTUFUaXRsZUlubmVyIiwiU0NNQVRpdGxlV3JhcCIsIlNDTUFBY3Rpb25zUm93IiwiU0NNQUNyZWF0ZU1hbnVhbEJ1dHRvbiIsIlNDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0IiwiTUFJQUlzb2xvZ28iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQ2hhdEFJTXlBZ2VudHMiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkJhY2siLCJhZ2VudHMiLCJvbkRlbGV0ZUFnZW50Iiwib25GYXZvcml0ZUFnZW50VXBkYXRlIiwiX3JlZiRoYXNNb3JlQWdlbnRzIiwiaGFzTW9yZUFnZW50cyIsIl9yZWYkbG9hZGluZ01vcmVBZ2VudCIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJhYm1BZ2VudCIsInQiLCJ1c2VyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJjdXN0b21BZ2VudHMiLCJmaWx0ZXIiLCJhZ2VudCIsInR5cGUiLCJpc19kZWxldGVkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwibWVudU9wZW5Gb3JBZ2VudElkIiwic2V0TWVudU9wZW5Gb3JBZ2VudElkIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJhZ2VudFRvRGVsZXRlIiwic2V0QWdlbnRUb0RlbGV0ZSIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuQ3JlYXRlQWdlbnQiLCJjcmVhdGUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY2FuRWRpdCIsImVkaXQiLCJjYW5EZWxldGUiLCJjYW5TaG93TWVudSIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwiZXZlbnRBbXBsaXR1ZGUiLCJvcGVuQ3JlYXRlQWdlbnRNb2RhbCIsIm9wZW5Nb2RhbCIsIm9wdGlvbiIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwiYWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpc09wZW4iLCJoYW5kbGVFbXB0eVN0YXRlUHJpbWFyeUFjdGlvbiIsInVzZU1hcmtldHBsYWNlTWFpYWtlciIsIk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUiIsImhhbmRsZUxvYWRNb3JlIiwiZGVsZXRlTW9kYWxDaGF0IiwidGl0bGUiLCJuYW1lIiwiaWQiLCJoYW5kbGVVc2VBZ2VudCIsIm5vcm1hbGl6ZVRleHQiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsImdldENyZWF0ZWRBdExhYmVsIiwiY3JlYXRlZEF0IiwiY3JlYXRlZF9hdCIsImNyZWF0ZWRBdERhdGUiLCJEYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiZGlmZk1zIiwibm93IiwiZGF5TXMiLCJkYXlzIiwiTWF0aCIsIm1heCIsImZsb29yIiwiaGFuZGxlT3BlbkVkaXRBZ2VudCIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJoYW5kbGVUb2dnbGVGYXZvcml0ZSIsImV2ZW50IiwiaXNGYXZvcml0ZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidXBkYXRlZEFnZW50IiwidW5kZWZpbmVkIiwiaGFuZGxlQ29uZmlybURlbGV0ZSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjaGF0IiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIm5zIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVDbGlja091dHNpZGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwib25TY3JvbGwiLCJzY3JvbGxUb3AiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJuZWFyQm90dG9tIiwibGVuZ3RoIiwiJGhhc0FnZW50cyIsImNoaWxkcmVuIiwiJGNhbkNyZWF0ZUFnZW50Iiwib25DbGljayIsIm1hcCIsImluZGV4IiwiX2FnZW50JGVtb2ppIiwiJGluZGV4IiwiZW1vamkiLCJ0cmltIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsImludHJvZHVjdGlvbiIsImlzX2Zhdm9yaXRlIiwiJGFsd2F5c1Zpc2libGUiLCJmaWxsIiwidmFyaWFudCIsImNsYXNzTmFtZSIsInNpemUiLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiYWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU15QWdlbnRzL0NoYXRBSU15QWdlbnRzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IE1lbnVEb3RzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvTWVudURvdHMnXG5pbXBvcnQgeyBTdGFyIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU3RhcidcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgZGVsZXRlQWdlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9kZWxldGVBZ2VudCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcbmltcG9ydCB7IEZhZGUgfSBmcm9tICcuLi8uLi9hdG9tcy9GYWRlJ1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi9ob29rcydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7XG4gIFNDTUFCb2R5LFxuICBTQ01BQ2FyZEJvZHksXG4gIFNDTUFDYXJkQnV0dG9uLFxuICBTQ01BQ2FyZEZvb3RlcixcbiAgU0NNQUNhcmRIZWFkZXIsXG4gIFNDTUFDYXJkVG9wUm93LFxuICBTQ01BQ2FyZEludHJvVGV4dCxcbiAgU0NNQUNhcmRNZW51LFxuICBTQ01BQ2FyZE1lbnVJdGVtLFxuICBTQ01BQ2FyZE1lbnVJdGVtcyxcbiAgU0NNQUZhdm9yaXRlQnV0dG9uLFxuICBTQ01BRmF2b3JpdGVTdGFyV3JhcCxcbiAgU0NNQUNhcmRGb290ZXJEYXRlLFxuICBTQ01BQ2FyZFRpdGxlRW1vamksXG4gIFNDTUFDYXJkVGl0bGVOYW1lLFxuICBTQ01BQ2FyZHNPdXRlcixcbiAgU0NNQUNhcmRzUm93LFxuICBTQ01BRW1wdHlTdGF0ZVJvb3QsXG4gIFNDTUFFbXB0eVN0YXRlQ29sdW1uLFxuICBTQ01BRW1wdHlTdGF0ZVRpdGxlQmxvY2ssXG4gIFNDTUFFbXB0eVN0YXRlVGl0bGUsXG4gIFNDTUFFbXB0eVN0YXRlU3VidGl0bGUsXG4gIFNDTUFFbXB0eVN0YXRlQnV0dG9uLFxuICBTQ01BS2ViYWJCdXR0b24sXG4gIFNDTUFMb2FkTW9yZVdyYXBwZXIsXG4gIFNDTUFNeUFnZW50c0NvbnRhaW5lcixcbiAgU0NNQVRpdGxlLFxuICBTQ01BVGl0bGVJbm5lcixcbiAgU0NNQVRpdGxlV3JhcCxcbiAgU0NNQUFjdGlvbnNSb3csXG4gIFNDTUFDcmVhdGVNYW51YWxCdXR0b24sXG4gIFNDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0LFxufSBmcm9tICcuL0NoYXRBSU15QWdlbnRzLnN0eWxlcydcbmltcG9ydCB7IE1BSUFJc29sb2dvIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5cbnR5cGUgQ2hhdEFJTXlBZ2VudHNQcm9wcyA9IHtcbiAgb25CYWNrOiAoKSA9PiB2b2lkXG4gIGFnZW50czogQWdlbnRbXVxuICBvbkRlbGV0ZUFnZW50PzogKGFnZW50SWQ6IHN0cmluZykgPT4gdm9pZFxuICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU/OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIGhhc01vcmVBZ2VudHM/OiBib29sZWFuXG4gIGxvYWRpbmdNb3JlQWdlbnRzPzogYm9vbGVhblxuICBvbkxvYWRNb3JlQWdlbnRzPzogKCkgPT4gdm9pZFxuICBvbkdvVG9NYWlha2VyPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU15QWdlbnRzID0gKHtcbiAgb25CYWNrLFxuICBhZ2VudHMsXG4gIG9uRGVsZXRlQWdlbnQsXG4gIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZSxcbiAgaGFzTW9yZUFnZW50cyA9IGZhbHNlLFxuICBsb2FkaW5nTW9yZUFnZW50cyA9IGZhbHNlLFxuICBvbkxvYWRNb3JlQWdlbnRzLFxuICBvbkdvVG9NYWlha2VyLFxufTogQ2hhdEFJTXlBZ2VudHNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUksIFNFQ1RJT05TLmFibUFnZW50XSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IHNlbGVjdEFnZW50LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldFRhc2sgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgY3VzdG9tQWdlbnRzID0gYWdlbnRzLmZpbHRlcihhZ2VudCA9PiBhZ2VudC50eXBlID09PSAnY3VzdG9tJyAmJiAhYWdlbnQuaXNfZGVsZXRlZClcbiAgY29uc3QgW21lbnVPcGVuRm9yQWdlbnRJZCwgc2V0TWVudU9wZW5Gb3JBZ2VudElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFthZ2VudFRvRGVsZXRlLCBzZXRBZ2VudFRvRGVsZXRlXSA9IHVzZVN0YXRlPEFnZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBjYW5DcmVhdGVBZ2VudCA9ICEhdXNlclBlcm1pc3Npb25zPy5jcmVhdGUgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBjb25zdCBjYW5FZGl0ID0gISF1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBjb25zdCBjYW5EZWxldGUgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3QgY2FuU2hvd01lbnUgPSBjYW5FZGl0IHx8IGNhbkRlbGV0ZVxuICBjb25zdCB7IHRvZ2dsZUZhdm9yaXRlIH0gPSB1c2VUb2dnbGVGYXZvcml0ZSgpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IG9wZW5DcmVhdGVBZ2VudE1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5vcGVuTW9kYWwsIHsgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1hZ2VudC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBhZ2VudFZhbHVlczoge1xuICAgICAgICAgICAgdmFsdWVzOiB7XG4gICAgICAgICAgICAgIGlzRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIClcbiAgfSwgW2V2ZW50QW1wbGl0dWRlXSlcblxuICBjb25zdCBoYW5kbGVFbXB0eVN0YXRlUHJpbWFyeUFjdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB1c2VNYXJrZXRwbGFjZU1haWFrZXIgPSAhIXdpbmRvdy5NQUlBX01BUktFVFBMQUNFX01BSUFLRVIgJiYgdHlwZW9mIG9uR29Ub01haWFrZXIgPT09ICdmdW5jdGlvbidcbiAgICBpZiAodXNlTWFya2V0cGxhY2VNYWlha2VyKSB7XG4gICAgICBvbkdvVG9NYWlha2VyKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBvcGVuQ3JlYXRlQWdlbnRNb2RhbCgpXG4gIH0sIFtvbkdvVG9NYWlha2VyLCBvcGVuQ3JlYXRlQWdlbnRNb2RhbF0pXG5cbiAgY29uc3QgaGFuZGxlTG9hZE1vcmUgPSAoKSA9PiB7XG4gICAgaWYgKCFvbkxvYWRNb3JlQWdlbnRzIHx8ICFoYXNNb3JlQWdlbnRzIHx8IGxvYWRpbmdNb3JlQWdlbnRzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb25Mb2FkTW9yZUFnZW50cygpXG4gIH1cblxuICBjb25zdCBkZWxldGVNb2RhbENoYXQgPSB1c2VNZW1vKFxuICAgICgpID0+IChhZ2VudFRvRGVsZXRlID8geyB0aXRsZTogYWdlbnRUb0RlbGV0ZS5uYW1lLCBpZDogYWdlbnRUb0RlbGV0ZS5pZCB9IDogbnVsbCksXG4gICAgW2FnZW50VG9EZWxldGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVVc2VBZ2VudCA9IChhZ2VudDogQWdlbnQpID0+IHtcbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRUYXNrKG51bGwpXG4gICAgc2VsZWN0QWdlbnQoYWdlbnQpXG4gICAgb25CYWNrKClcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZVRleHQgPSAodmFsdWU/OiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZVswXSB8fCAnJ1xuICAgIHJldHVybiB2YWx1ZSB8fCAnJ1xuICB9XG5cbiAgY29uc3QgZ2V0Q3JlYXRlZEF0TGFiZWwgPSAoYWdlbnQ6IEFnZW50KSA9PiB7XG4gICAgY29uc3QgY3JlYXRlZEF0ID0gKGFnZW50IGFzIEFnZW50ICYgeyBjcmVhdGVkX2F0Pzogc3RyaW5nIH0pLmNyZWF0ZWRfYXRcbiAgICBpZiAoIWNyZWF0ZWRBdCkgcmV0dXJuICcnXG5cbiAgICBjb25zdCBjcmVhdGVkQXREYXRlID0gbmV3IERhdGUoY3JlYXRlZEF0KVxuICAgIGlmIChOdW1iZXIuaXNOYU4oY3JlYXRlZEF0RGF0ZS5nZXRUaW1lKCkpKSByZXR1cm4gJydcblxuICAgIGNvbnN0IGRpZmZNcyA9IERhdGUubm93KCkgLSBjcmVhdGVkQXREYXRlLmdldFRpbWUoKVxuICAgIGNvbnN0IGRheU1zID0gMTAwMCAqIDYwICogNjAgKiAyNFxuICAgIGNvbnN0IGRheXMgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKGRpZmZNcyAvIGRheU1zKSlcblxuICAgIGlmIChkYXlzID09PSAwKSByZXR1cm4gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNUb2RheScpXG4gICAgaWYgKGRheXMgPT09IDEpIHJldHVybiB0KCdtYXJrZXRwbGFjZS5teUFnZW50c09uZURheUFnbycpXG4gICAgcmV0dXJuIHQoJ21hcmtldHBsYWNlLm15QWdlbnRzRGF5c0FnbycsIHsgZGF5cyB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3BlbkVkaXRBZ2VudCA9IChhZ2VudDogQWdlbnQpID0+IHtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICAgIGtub3dsZWRnZTogYWdlbnQ/Lmtub3dsZWRnZSB8fCBbXSxcbiAgICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IGFnZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgaWQ6IGFnZW50LmlkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gICAgc2V0TWVudU9wZW5Gb3JBZ2VudElkKG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZSA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4sIGFnZW50OiBBZ2VudCwgaXNGYXZvcml0ZTogYm9vbGVhbikgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICBhZ2VudC5pZCxcbiAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT8uKHVwZGF0ZWRBZ2VudClcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBpc0Zhdm9yaXRlXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybURlbGV0ZSA9IGFzeW5jIChjaGF0OiB7IGlkOiBzdHJpbmcgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVBZ2VudChjaGF0LmlkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudERlbGV0ZWQnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KSlcbiAgICAgIG9uRGVsZXRlQWdlbnQ/LihjaGF0LmlkKVxuICAgICAgc2V0QWdlbnRUb0RlbGV0ZShudWxsKVxuICAgICAgc2V0TWVudU9wZW5Gb3JBZ2VudElkKG51bGwpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBZ2VudENyZWF0ZWQnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KSlcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9ICgpID0+IHtcbiAgICAgIGlmIChtZW51T3BlbkZvckFnZW50SWQpIHtcbiAgICAgICAgc2V0TWVudU9wZW5Gb3JBZ2VudElkKG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW21lbnVPcGVuRm9yQWdlbnRJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXktYWdlbnRzLXNjcm9sbC1jb250YWluZXInKVxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWhhc01vcmVBZ2VudHMgfHwgbG9hZGluZ01vcmVBZ2VudHMpIHJldHVyblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIGNsaWVudEhlaWdodCwgc2Nyb2xsSGVpZ2h0IH0gPSBjb250YWluZXJcbiAgICAgIGNvbnN0IG5lYXJCb3R0b20gPSBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gNDBcbiAgICAgIGlmIChuZWFyQm90dG9tKSB7XG4gICAgICAgIGhhbmRsZUxvYWRNb3JlKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBvblNjcm9sbClcbiAgICB9XG4gIH0sIFtoYXNNb3JlQWdlbnRzLCBsb2FkaW5nTW9yZUFnZW50cywgb25Mb2FkTW9yZUFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXktYWdlbnRzLXNjcm9sbC1jb250YWluZXInKVxuICAgIGlmICghY29udGFpbmVyIHx8ICFoYXNNb3JlQWdlbnRzIHx8IGxvYWRpbmdNb3JlQWdlbnRzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgPD0gY29udGFpbmVyLmNsaWVudEhlaWdodCArIDEpIHtcbiAgICAgIGhhbmRsZUxvYWRNb3JlKClcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbY3VzdG9tQWdlbnRzLmxlbmd0aCwgaGFzTW9yZUFnZW50cywgbG9hZGluZ01vcmVBZ2VudHMsIG9uTG9hZE1vcmVBZ2VudHNdKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTUFNeUFnZW50c0NvbnRhaW5lciBpZD1cIm15LWFnZW50cy1zY3JvbGwtY29udGFpbmVyXCIgJGhhc0FnZW50cz17ISFjdXN0b21BZ2VudHMubGVuZ3RofT5cbiAgICAgIDxNQUlBSXNvbG9nbyAvPlxuXG4gICAgICA8U0NNQUJvZHkgJGNhbkNyZWF0ZUFnZW50PXtjYW5DcmVhdGVBZ2VudH0+XG4gICAgICAgIHtjdXN0b21BZ2VudHMubGVuZ3RoID8gKFxuICAgICAgICAgIDxTQ01BVGl0bGVXcmFwPlxuICAgICAgICAgICAgPFNDTUFUaXRsZUlubmVyPlxuICAgICAgICAgICAgICA8U0NNQVRpdGxlPnt0KCdtYXJrZXRwbGFjZS5teUFnZW50c1JlYWR5VGl0bGUnKX08L1NDTUFUaXRsZT5cbiAgICAgICAgICAgIDwvU0NNQVRpdGxlSW5uZXI+XG4gICAgICAgICAgICB7Y2FuQ3JlYXRlQWdlbnQgPyAoXG4gICAgICAgICAgICAgIDxTQ01BQWN0aW9uc1Jvdz5cbiAgICAgICAgICAgICAgICA8U0NNQUNyZWF0ZU1hbnVhbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b3BlbkNyZWF0ZUFnZW50TW9kYWx9PlxuICAgICAgICAgICAgICAgICAgPFNDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0Pnt0KCdtYXJrZXRwbGFjZS5jcmVhdGVBZ2VudCcpfTwvU0NNQUNyZWF0ZU1hbnVhbEJ1dHRvblRleHQ+XG4gICAgICAgICAgICAgICAgPC9TQ01BQ3JlYXRlTWFudWFsQnV0dG9uPlxuICAgICAgICAgICAgICA8L1NDTUFBY3Rpb25zUm93PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01BVGl0bGVXcmFwPlxuICAgICAgICApIDogbnVsbH1cblxuICAgICAgICB7Y3VzdG9tQWdlbnRzLmxlbmd0aCA/IChcbiAgICAgICAgICA8U0NNQUNhcmRzT3V0ZXI+XG4gICAgICAgICAgICA8U0NNQUNhcmRzUm93PlxuICAgICAgICAgICAgICB7Y3VzdG9tQWdlbnRzLm1hcCgoYWdlbnQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgPFNDTUFDYXJkQnV0dG9uIGtleT17YWdlbnQuaWR9ICRpbmRleD17aW5kZXh9IHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVVc2VBZ2VudChhZ2VudCl9PlxuICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkVGl0bGVFbW9qaSBhcmlhLWhpZGRlbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHthZ2VudC5lbW9qaT8udHJpbSgpID8gYWdlbnQuZW1vamkgOiAnXFx1MDBhMCd9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZFRpdGxlRW1vamk+XG4gICAgICAgICAgICAgICAgICAgICAge2NhblNob3dNZW51ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTUFLZWJhYkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnbWFya2V0cGxhY2UuY2FyZE1lbnVBcmlhTGFiZWwnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1lbnVPcGVuRm9yQWdlbnRJZChwcmV2ID0+IChwcmV2ID09PSBhZ2VudC5pZCA/IG51bGwgOiBhZ2VudC5pZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51RG90cyBjb2xvcj1cIiM5OTlcIiB3aWR0aD17MTV9IGhlaWdodD17MTV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFLZWJhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkVGl0bGVOYW1lPnthZ2VudC5uYW1lfTwvU0NNQUNhcmRUaXRsZU5hbWU+XG4gICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkSW50cm9UZXh0Pntub3JtYWxpemVUZXh0KGFnZW50LmludHJvZHVjdGlvbil9PC9TQ01BQ2FyZEludHJvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZEZvb3RlckRhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q3JlYXRlZEF0TGFiZWwoYWdlbnQpIHx8IHQoJ21hcmtldHBsYWNlLm15QWdlbnRzRmFsbGJhY2tEYXRlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZEZvb3RlckRhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2FnZW50LmlzX2Zhdm9yaXRlID8gdCgnYWdlbnRzLnJlbW92ZUZhdm9yaXRlJykgOiB0KCdhZ2VudHMuYWRkRmF2b3JpdGUnKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUZhdm9yaXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXthZ2VudC5pc19mYXZvcml0ZSA/IHQoJ2FnZW50cy5yZW1vdmVGYXZvcml0ZScpIDogdCgnYWdlbnRzLmFkZEZhdm9yaXRlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICRhbHdheXNWaXNpYmxlPXshIWFnZW50LmlzX2Zhdm9yaXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVUb2dnbGVGYXZvcml0ZShldmVudCwgYWdlbnQsICEhYWdlbnQuaXNfZmF2b3JpdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUZhdm9yaXRlU3RhcldyYXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YWdlbnQuaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnIzk5OSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPXthZ2VudC5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICdub25lJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2FnZW50LmlzX2Zhdm9yaXRlID8gJycgOiAnc3Rhci1mYXZvcml0ZS1pY29uJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFGYXZvcml0ZVN0YXJXcmFwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01BRmF2b3JpdGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkRm9vdGVyPlxuICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZEJvZHk+XG4gICAgICAgICAgICAgICAgICB7bWVudU9wZW5Gb3JBZ2VudElkID09PSBhZ2VudC5pZCAmJiBjYW5TaG93TWVudSA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkTWVudVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZE1lbnVJdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5FZGl0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wZW5FZGl0QWdlbnQoYWdlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdlZGl0JywgeyBuczogU0VDVElPTlMuYWJtQWdlbnQgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAge2NhbkRlbGV0ZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBZ2VudFRvRGVsZXRlKGFnZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnZGVsZXRlJywgeyBuczogU0VDVElPTlMuYWJtQWdlbnQgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51SXRlbXM+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRNZW51PlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ01BQ2FyZEJ1dHRvbj5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NDTUFDYXJkc1Jvdz5cbiAgICAgICAgICA8L1NDTUFDYXJkc091dGVyPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICAgICA8U0NNQUVtcHR5U3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlVGl0bGU+e3QoJ21hcmtldHBsYWNlLm15QWdlbnRzRW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01BRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAge2NhbkNyZWF0ZUFnZW50XG4gICAgICAgICAgICAgICAgICAgID8gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNFbXB0eVN0YXRlRGVzY3JpcHRpb24nKVxuICAgICAgICAgICAgICAgICAgICA6IHQoJ21hcmtldHBsYWNlLm15QWdlbnRzRW1wdHlTdGF0ZURlc2NyaXB0aW9uTm9QZXJtJyl9XG4gICAgICAgICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L1NDTUFFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgIDwvU0NNQUVtcHR5U3RhdGVDb2x1bW4+XG4gICAgICAgICAgICB7Y2FuQ3JlYXRlQWdlbnQgPyAoXG4gICAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlRW1wdHlTdGF0ZVByaW1hcnlBY3Rpb259PlxuICAgICAgICAgICAgICAgIHt0KCdtYXJrZXRwbGFjZS5teUFnZW50c0VtcHR5U3RhdGVCdXR0b24nKX1cbiAgICAgICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNQUVtcHR5U3RhdGVSb290PlxuICAgICAgICApfVxuICAgICAgICB7bG9hZGluZ01vcmVBZ2VudHMgPyAoXG4gICAgICAgICAgPFNDTUFMb2FkTW9yZVdyYXBwZXI+XG4gICAgICAgICAgICA8RmFkZT5cbiAgICAgICAgICAgICAgPExvYWRlciBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgPC9GYWRlPlxuICAgICAgICAgIDwvU0NNQUxvYWRNb3JlV3JhcHBlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDTUFCb2R5PlxuICAgICAge2RlbGV0ZU1vZGFsQ2hhdCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBZ2VudFRvRGVsZXRlKG51bGwpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17ZGVsZXRlTW9kYWxDaGF0fVxuICAgICAgICAgIGFjdGlvbj1cImFnZW50XCJcbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NNQU15QWdlbnRzQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDeEUsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsZ0JBQWdCLFFBQVEsaUNBQWlDO0FBQ2xFLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFFbkQsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxrQkFBa0IsUUFBUSxzREFBc0Q7QUFDekYsU0FBU0MsbUJBQW1CLFFBQVEseURBQXlEO0FBQzdGLFNBQVNDLFFBQVEsUUFBUSwyQkFBMkI7QUFDcEQsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxJQUFJLFFBQVEsa0JBQWtCO0FBQ3ZD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
461
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJTdGFyIiwiVG9vbHRpcCIsInVzZVRyYW5zbGF0aW9uIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVVzZXIiLCJkZWxldGVBZ2VudCIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTRUNUSU9OUyIsIkxvYWRlciIsIkZhZGUiLCJTa2VsZXRvbiIsInVzZVRvZ2dsZUZhdm9yaXRlIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJTQ01BQm9keSIsIlNDTUFDYXJkQm9keSIsIlNDTUFDYXJkQnV0dG9uIiwiU0NNQUNhcmRGb290ZXIiLCJTQ01BQ2FyZEhlYWRlciIsIlNDTUFDYXJkVG9wUm93IiwiU0NNQUNhcmRJbnRyb1RleHQiLCJTQ01BQ2FyZE1lbnUiLCJTQ01BQ2FyZE1lbnVJdGVtIiwiU0NNQUNhcmRNZW51SXRlbXMiLCJTQ01BRmF2b3JpdGVCdXR0b24iLCJTQ01BRmF2b3JpdGVTdGFyV3JhcCIsIlNDTUFDYXJkRm9vdGVyRGF0ZSIsIlNDTUFDYXJkVGl0bGVFbW9qaSIsIlNDTUFDYXJkVGl0bGVOYW1lIiwiU0NNQUNhcmRzT3V0ZXIiLCJTQ01BQ2FyZHNSb3ciLCJTQ01BRW1wdHlTdGF0ZVJvb3QiLCJTQ01BRW1wdHlTdGF0ZUNvbHVtbiIsIlNDTUFFbXB0eVN0YXRlVGl0bGVCbG9jayIsIlNDTUFFbXB0eVN0YXRlVGl0bGUiLCJTQ01BRW1wdHlTdGF0ZVN1YnRpdGxlIiwiU0NNQUVtcHR5U3RhdGVCdXR0b24iLCJTQ01BS2ViYWJCdXR0b24iLCJTQ01BTG9hZE1vcmVXcmFwcGVyIiwiU0NNQUxvZ29Db250YWluZXIiLCJTQ01BTXlBZ2VudHNDb250YWluZXIiLCJTQ01BVGl0bGUiLCJTQ01BVGl0bGVJbm5lciIsIlNDTUFUaXRsZVdyYXAiLCJTQ01BQWN0aW9uc1JvdyIsIlNDTUFDcmVhdGVNYW51YWxCdXR0b24iLCJTQ01BQ3JlYXRlTWFudWFsQnV0dG9uVGV4dCIsIlNDTUFDYXJkU2tlbGV0b25JdGVtIiwiU0NNQVNlYXJjaFdyYXBwZXIiLCJTQ01BU2VhcmNoSW5wdXQiLCJTQ01BU2VhcmNoSGludCIsIlNDTUFTZWFyY2hOb1Jlc3VsdHMiLCJNQUlBSXNvbG9nbyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBZ2VudFNlYXJjaElucHV0IiwibWVtbyIsIl9yZWYiLCJvblNlYXJjaCIsInBsYWNlaG9sZGVyIiwiaGludCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInZhbHVlIiwic2V0VmFsdWUiLCJkZWJvdW5jZVJlZiIsInNob3dIaW50IiwibGVuZ3RoIiwiaGFuZGxlQ2hhbmdlIiwiZSIsInZhbCIsInRhcmdldCIsImN1cnJlbnQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidHlwZSIsIm9uQ2hhbmdlIiwiQ2hhdEFJTXlBZ2VudHMiLCJfcmVmMiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25CYWNrIiwiYWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsIl9yZWYyJGhhc01vcmVBZ2VudHMiLCJoYXNNb3JlQWdlbnRzIiwiX3JlZjIkbG9hZGluZ01vcmVBZ2VuIiwibG9hZGluZ01vcmVBZ2VudHMiLCJvbkxvYWRNb3JlQWdlbnRzIiwib25Hb1RvTWFpYWtlciIsIm9uU2VhcmNoQWdlbnRzIiwiX3JlZjIkc2VhcmNoTG9hZGluZ0FnIiwic2VhcmNoTG9hZGluZ0FnZW50cyIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsImFibUFnZW50IiwidCIsInVzZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50Iiwic2V0UHJvamVjdCIsInNldENsaWVudCIsInNldFRhc2siLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImN1c3RvbUFnZW50cyIsImZpbHRlciIsImFnZW50IiwiaXNfZGVsZXRlZCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibWVudU9wZW5Gb3JBZ2VudElkIiwic2V0TWVudU9wZW5Gb3JBZ2VudElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJhZ2VudFRvRGVsZXRlIiwic2V0QWdlbnRUb0RlbGV0ZSIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY2FuQ3JlYXRlQWdlbnQiLCJjcmVhdGUiLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiY2FuRWRpdCIsImVkaXQiLCJjYW5EZWxldGUiLCJjYW5TaG93TWVudSIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzU2VhcmNoQWN0aXZlIiwic2V0SXNTZWFyY2hBY3RpdmUiLCJoYW5kbGVTZWFyY2hBZ2VudHMiLCJxdWVyeSIsIm9wZW5DcmVhdGVBZ2VudE1vZGFsIiwib3Blbk1vZGFsIiwib3B0aW9uIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJhZ2VudFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImlzT3BlbiIsImhhbmRsZUVtcHR5U3RhdGVQcmltYXJ5QWN0aW9uIiwidXNlTWFya2V0cGxhY2VNYWlha2VyIiwiTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSIiwiaGFuZGxlTG9hZE1vcmUiLCJkZWxldGVNb2RhbENoYXQiLCJ0aXRsZSIsIm5hbWUiLCJpZCIsImhhbmRsZVVzZUFnZW50Iiwibm9ybWFsaXplVGV4dCIsIkFycmF5IiwiaXNBcnJheSIsImdldENyZWF0ZWRBdExhYmVsIiwiY3JlYXRlZEF0IiwiY3JlYXRlZF9hdCIsImNyZWF0ZWRBdERhdGUiLCJEYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiZGlmZk1zIiwibm93IiwiZGF5TXMiLCJkYXlzIiwiTWF0aCIsIm1heCIsImZsb29yIiwiaGFuZGxlT3BlbkVkaXRBZ2VudCIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJoYW5kbGVUb2dnbGVGYXZvcml0ZSIsImV2ZW50IiwiaXNGYXZvcml0ZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwidXBkYXRlZEFnZW50IiwidW5kZWZpbmVkIiwiaGFuZGxlQ29uZmlybURlbGV0ZSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjaGF0IiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIm5zIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVDbGlja091dHNpZGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwib25TY3JvbGwiLCJzY3JvbGxUb3AiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJuZWFyQm90dG9tIiwiJGhhc0FnZW50cyIsIiRjYW5DcmVhdGVBZ2VudCIsIm9uQ2xpY2siLCJmcm9tIiwibWFwIiwiXyIsImkiLCJ2YXJpYW50IiwiaW5kZXgiLCJfYWdlbnQkZW1vamkiLCIkaW5kZXgiLCJlbW9qaSIsInRyaW0iLCJpbnRyb2R1Y3Rpb24iLCJpc19mYXZvcml0ZSIsIiRhbHdheXNWaXNpYmxlIiwiZmlsbCIsImNsYXNzTmFtZSIsInNpemUiLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiYWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU15QWdlbnRzL0NoYXRBSU15QWdlbnRzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFNlYXJjaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1NlYXJjaCdcbmltcG9ydCB7IFN0YXIgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9TdGFyJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBkZWxldGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2RlbGV0ZUFnZW50J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgRmFkZSB9IGZyb20gJy4uLy4uL2F0b21zL0ZhZGUnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uLy4uL2F0b21zL1NrZWxldG9uL1NrZWxldG9uJ1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi9ob29rcydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7XG4gIFNDTUFCb2R5LFxuICBTQ01BQ2FyZEJvZHksXG4gIFNDTUFDYXJkQnV0dG9uLFxuICBTQ01BQ2FyZEZvb3RlcixcbiAgU0NNQUNhcmRIZWFkZXIsXG4gIFNDTUFDYXJkVG9wUm93LFxuICBTQ01BQ2FyZEludHJvVGV4dCxcbiAgU0NNQUNhcmRNZW51LFxuICBTQ01BQ2FyZE1lbnVJdGVtLFxuICBTQ01BQ2FyZE1lbnVJdGVtcyxcbiAgU0NNQUZhdm9yaXRlQnV0dG9uLFxuICBTQ01BRmF2b3JpdGVTdGFyV3JhcCxcbiAgU0NNQUNhcmRGb290ZXJEYXRlLFxuICBTQ01BQ2FyZFRpdGxlRW1vamksXG4gIFNDTUFDYXJkVGl0bGVOYW1lLFxuICBTQ01BQ2FyZHNPdXRlcixcbiAgU0NNQUNhcmRzUm93LFxuICBTQ01BRW1wdHlTdGF0ZVJvb3QsXG4gIFNDTUFFbXB0eVN0YXRlQ29sdW1uLFxuICBTQ01BRW1wdHlTdGF0ZVRpdGxlQmxvY2ssXG4gIFNDTUFFbXB0eVN0YXRlVGl0bGUsXG4gIFNDTUFFbXB0eVN0YXRlU3VidGl0bGUsXG4gIFNDTUFFbXB0eVN0YXRlQnV0dG9uLFxuICBTQ01BS2ViYWJCdXR0b24sXG4gIFNDTUFMb2FkTW9yZVdyYXBwZXIsXG4gIFNDTUFMb2dvQ29udGFpbmVyLFxuICBTQ01BTXlBZ2VudHNDb250YWluZXIsXG4gIFNDTUFUaXRsZSxcbiAgU0NNQVRpdGxlSW5uZXIsXG4gIFNDTUFUaXRsZVdyYXAsXG4gIFNDTUFBY3Rpb25zUm93LFxuICBTQ01BQ3JlYXRlTWFudWFsQnV0dG9uLFxuICBTQ01BQ3JlYXRlTWFudWFsQnV0dG9uVGV4dCxcbiAgU0NNQUNhcmRTa2VsZXRvbkl0ZW0sXG4gIFNDTUFTZWFyY2hXcmFwcGVyLFxuICBTQ01BU2VhcmNoSW5wdXQsXG4gIFNDTUFTZWFyY2hIaW50LFxuICBTQ01BU2VhcmNoTm9SZXN1bHRzLFxufSBmcm9tICcuL0NoYXRBSU15QWdlbnRzLnN0eWxlcydcbmltcG9ydCB7IE1BSUFJc29sb2dvIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5cbmNvbnN0IEFnZW50U2VhcmNoSW5wdXQgPSBSZWFjdC5tZW1vKFxuICAoeyBvblNlYXJjaCwgcGxhY2Vob2xkZXIsIGhpbnQgfTogeyBvblNlYXJjaDogKHE6IHN0cmluZykgPT4gdm9pZDsgcGxhY2Vob2xkZXI6IHN0cmluZzsgaGludDogc3RyaW5nIH0pID0+IHtcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuICAgIGNvbnN0IGRlYm91bmNlUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcbiAgICBjb25zdCBzaG93SGludCA9IHZhbHVlLmxlbmd0aCA+IDAgJiYgdmFsdWUubGVuZ3RoIDwgM1xuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgY29uc3QgeyB2YWx1ZTogdmFsIH0gPSBlLnRhcmdldFxuICAgICAgICBzZXRWYWx1ZSh2YWwpXG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgICAgZGVib3VuY2VSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbC5sZW5ndGggPj0gMykgb25TZWFyY2godmFsKVxuICAgICAgICB9LCAzNTApXG4gICAgICB9LFxuICAgICAgW29uU2VhcmNoXVxuICAgIClcblxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+ICgpID0+IHtcbiAgICAgICAgaWYgKGRlYm91bmNlUmVmLmN1cnJlbnQpIGNsZWFyVGltZW91dChkZWJvdW5jZVJlZi5jdXJyZW50KVxuICAgICAgfSxcbiAgICAgIFtdXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01BU2VhcmNoV3JhcHBlcj5cbiAgICAgICAgPFNlYXJjaCB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IGNvbG9yPVwiIzk5OVwiIC8+XG4gICAgICAgIDxTQ01BU2VhcmNoSW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT17dmFsdWV9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn0gLz5cbiAgICAgICAge3Nob3dIaW50ID8gPFNDTUFTZWFyY2hIaW50PntoaW50fTwvU0NNQVNlYXJjaEhpbnQ+IDogbnVsbH1cbiAgICAgIDwvU0NNQVNlYXJjaFdyYXBwZXI+XG4gICAgKVxuICB9XG4pXG5cbnR5cGUgQ2hhdEFJTXlBZ2VudHNQcm9wcyA9IHtcbiAgb25CYWNrOiAoKSA9PiB2b2lkXG4gIGFnZW50czogQWdlbnRbXVxuICBvbkRlbGV0ZUFnZW50PzogKGFnZW50SWQ6IHN0cmluZykgPT4gdm9pZFxuICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU/OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIGhhc01vcmVBZ2VudHM/OiBib29sZWFuXG4gIGxvYWRpbmdNb3JlQWdlbnRzPzogYm9vbGVhblxuICBvbkxvYWRNb3JlQWdlbnRzPzogKCkgPT4gdm9pZFxuICBvbkdvVG9NYWlha2VyPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbiAgb25TZWFyY2hBZ2VudHM/OiAocXVlcnk6IHN0cmluZykgPT4gdm9pZFxuICBzZWFyY2hMb2FkaW5nQWdlbnRzPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTXlBZ2VudHMgPSAoe1xuICBvbkJhY2ssXG4gIGFnZW50cyxcbiAgb25EZWxldGVBZ2VudCxcbiAgb25GYXZvcml0ZUFnZW50VXBkYXRlLFxuICBoYXNNb3JlQWdlbnRzID0gZmFsc2UsXG4gIGxvYWRpbmdNb3JlQWdlbnRzID0gZmFsc2UsXG4gIG9uTG9hZE1vcmVBZ2VudHMsXG4gIG9uR29Ub01haWFrZXIsXG4gIG9uU2VhcmNoQWdlbnRzLFxuICBzZWFyY2hMb2FkaW5nQWdlbnRzID0gZmFsc2UsXG59OiBDaGF0QUlNeUFnZW50c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSSwgU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzayB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBjdXN0b21BZ2VudHMgPSBhZ2VudHMuZmlsdGVyKGFnZW50ID0+IGFnZW50LnR5cGUgPT09ICdjdXN0b20nICYmICFhZ2VudC5pc19kZWxldGVkKVxuICBjb25zdCBbbWVudU9wZW5Gb3JBZ2VudElkLCBzZXRNZW51T3BlbkZvckFnZW50SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2FnZW50VG9EZWxldGUsIHNldEFnZW50VG9EZWxldGVdID0gdXNlU3RhdGU8QWdlbnQgfCBudWxsPihudWxsKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IGNhbkNyZWF0ZUFnZW50ID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZSAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhbkVkaXQgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZWRpdCAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhbkRlbGV0ZSA9ICEhdXNlclBlcm1pc3Npb25zPy5kZWxldGUgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBjb25zdCBjYW5TaG93TWVudSA9IGNhbkVkaXQgfHwgY2FuRGVsZXRlXG4gIGNvbnN0IHsgdG9nZ2xlRmF2b3JpdGUgfSA9IHVzZVRvZ2dsZUZhdm9yaXRlKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IFtpc1NlYXJjaEFjdGl2ZSwgc2V0SXNTZWFyY2hBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoQWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgIHNldElzU2VhcmNoQWN0aXZlKHF1ZXJ5ICE9PSAnJylcbiAgICAgIG9uU2VhcmNoQWdlbnRzPy4ocXVlcnkpXG4gICAgfSxcbiAgICBbb25TZWFyY2hBZ2VudHNdXG4gIClcblxuICBjb25zdCBvcGVuQ3JlYXRlQWdlbnRNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMub3Blbk1vZGFsLCB7IG9wdGlvbjogJ2NyZWF0ZV9hZ2VudCcgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgYWdlbnRWYWx1ZXM6IHtcbiAgICAgICAgICAgIHZhbHVlczoge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gIH0sIFtldmVudEFtcGxpdHVkZV0pXG5cbiAgY29uc3QgaGFuZGxlRW1wdHlTdGF0ZVByaW1hcnlBY3Rpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdXNlTWFya2V0cGxhY2VNYWlha2VyID0gISF3aW5kb3cuTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSICYmIHR5cGVvZiBvbkdvVG9NYWlha2VyID09PSAnZnVuY3Rpb24nXG4gICAgaWYgKHVzZU1hcmtldHBsYWNlTWFpYWtlcikge1xuICAgICAgb25Hb1RvTWFpYWtlcigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgb3BlbkNyZWF0ZUFnZW50TW9kYWwoKVxuICB9LCBbb25Hb1RvTWFpYWtlciwgb3BlbkNyZWF0ZUFnZW50TW9kYWxdKVxuXG4gIGNvbnN0IGhhbmRsZUxvYWRNb3JlID0gKCkgPT4ge1xuICAgIGlmICghb25Mb2FkTW9yZUFnZW50cyB8fCAhaGFzTW9yZUFnZW50cyB8fCBsb2FkaW5nTW9yZUFnZW50cykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIG9uTG9hZE1vcmVBZ2VudHMoKVxuICB9XG5cbiAgY29uc3QgZGVsZXRlTW9kYWxDaGF0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoYWdlbnRUb0RlbGV0ZSA/IHsgdGl0bGU6IGFnZW50VG9EZWxldGUubmFtZSwgaWQ6IGFnZW50VG9EZWxldGUuaWQgfSA6IG51bGwpLFxuICAgIFthZ2VudFRvRGVsZXRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlVXNlQWdlbnQgPSAoYWdlbnQ6IEFnZW50KSA9PiB7XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzayhudWxsKVxuICAgIHNlbGVjdEFnZW50KGFnZW50KVxuICAgIG9uQmFjaygpXG4gIH1cblxuICBjb25zdCBub3JtYWxpemVUZXh0ID0gKHZhbHVlPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWVbMF0gfHwgJydcbiAgICByZXR1cm4gdmFsdWUgfHwgJydcbiAgfVxuXG4gIGNvbnN0IGdldENyZWF0ZWRBdExhYmVsID0gKGFnZW50OiBBZ2VudCkgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZWRBdCA9IChhZ2VudCBhcyBBZ2VudCAmIHsgY3JlYXRlZF9hdD86IHN0cmluZyB9KS5jcmVhdGVkX2F0XG4gICAgaWYgKCFjcmVhdGVkQXQpIHJldHVybiAnJ1xuXG4gICAgY29uc3QgY3JlYXRlZEF0RGF0ZSA9IG5ldyBEYXRlKGNyZWF0ZWRBdClcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGNyZWF0ZWRBdERhdGUuZ2V0VGltZSgpKSkgcmV0dXJuICcnXG5cbiAgICBjb25zdCBkaWZmTXMgPSBEYXRlLm5vdygpIC0gY3JlYXRlZEF0RGF0ZS5nZXRUaW1lKClcbiAgICBjb25zdCBkYXlNcyA9IDEwMDAgKiA2MCAqIDYwICogMjRcbiAgICBjb25zdCBkYXlzID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihkaWZmTXMgLyBkYXlNcykpXG5cbiAgICBpZiAoZGF5cyA9PT0gMCkgcmV0dXJuIHQoJ21hcmtldHBsYWNlLm15QWdlbnRzVG9kYXknKVxuICAgIGlmIChkYXlzID09PSAxKSByZXR1cm4gdCgnbWFya2V0cGxhY2UubXlBZ2VudHNPbmVEYXlBZ28nKVxuICAgIHJldHVybiB0KCdtYXJrZXRwbGFjZS5teUFnZW50c0RheXNBZ28nLCB7IGRheXMgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5FZGl0QWdlbnQgPSAoYWdlbnQ6IEFnZW50KSA9PiB7XG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIGFnZW50VmFsdWVzOiB7XG4gICAgICAgICAgICB2YWx1ZXM6IHtcbiAgICAgICAgICAgICAgaXNFZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICBrbm93bGVkZ2U6IGFnZW50Py5rbm93bGVkZ2UgfHwgW10sXG4gICAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBhZ2VudC5uYW1lLFxuICAgICAgICAgICAgICAgIGlkOiBhZ2VudC5pZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICAgIHNldE1lbnVPcGVuRm9yQWdlbnRJZChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlRmF2b3JpdGUgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBhZ2VudDogQWdlbnQsIGlzRmF2b3JpdGU6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgYWdlbnQuaWQsXG4gICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU/Lih1cGRhdGVkQWdlbnQpXG4gICAgICB9LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgaXNGYXZvcml0ZVxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlQWdlbnQoY2hhdC5pZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnREZWxldGVkJywgeyBuczogU0VDVElPTlMuYWJtQWdlbnQgfSkpXG4gICAgICBvbkRlbGV0ZUFnZW50Py4oY2hhdC5pZClcbiAgICAgIHNldEFnZW50VG9EZWxldGUobnVsbClcbiAgICAgIHNldE1lbnVPcGVuRm9yQWdlbnRJZChudWxsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJywgeyBuczogU0VDVElPTlMuYWJtQWdlbnQgfSkpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JBZ2VudElkKSB7XG4gICAgICAgIHNldE1lbnVPcGVuRm9yQWdlbnRJZChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvckFnZW50SWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215LWFnZW50cy1zY3JvbGwtY29udGFpbmVyJylcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IG9uU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgaWYgKCFoYXNNb3JlQWdlbnRzIHx8IGxvYWRpbmdNb3JlQWdlbnRzKSByZXR1cm5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBjbGllbnRIZWlnaHQsIHNjcm9sbEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBuZWFyQm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDQwXG4gICAgICBpZiAobmVhckJvdHRvbSkge1xuICAgICAgICBoYW5kbGVMb2FkTW9yZSgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gICAgfVxuICB9LCBbaGFzTW9yZUFnZW50cywgbG9hZGluZ01vcmVBZ2VudHMsIG9uTG9hZE1vcmVBZ2VudHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215LWFnZW50cy1zY3JvbGwtY29udGFpbmVyJylcbiAgICBpZiAoIWNvbnRhaW5lciB8fCAhaGFzTW9yZUFnZW50cyB8fCBsb2FkaW5nTW9yZUFnZW50cykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChjb250YWluZXIuc2Nyb2xsSGVpZ2h0IDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxKSB7XG4gICAgICBoYW5kbGVMb2FkTW9yZSgpXG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSwgW2N1c3RvbUFnZW50cy5sZW5ndGgsIGhhc01vcmVBZ2VudHMsIGxvYWRpbmdNb3JlQWdlbnRzLCBvbkxvYWRNb3JlQWdlbnRzXSlcblxuICByZXR1cm4gKFxuICAgIDxTQ01BTXlBZ2VudHNDb250YWluZXIgaWQ9XCJteS1hZ2VudHMtc2Nyb2xsLWNvbnRhaW5lclwiICRoYXNBZ2VudHM9eyEhY3VzdG9tQWdlbnRzLmxlbmd0aCB8fCBpc1NlYXJjaEFjdGl2ZX0+XG4gICAgICA8U0NNQUxvZ29Db250YWluZXI+XG4gICAgICAgIDxNQUlBSXNvbG9nbyAvPlxuICAgICAgPC9TQ01BTG9nb0NvbnRhaW5lcj5cblxuICAgICAgPFNDTUFCb2R5ICRjYW5DcmVhdGVBZ2VudD17Y2FuQ3JlYXRlQWdlbnR9PlxuICAgICAgICB7Y3VzdG9tQWdlbnRzLmxlbmd0aCB8fCBpc1NlYXJjaEFjdGl2ZSA/IChcbiAgICAgICAgICA8U0NNQVRpdGxlV3JhcD5cbiAgICAgICAgICAgIDxTQ01BVGl0bGVJbm5lcj5cbiAgICAgICAgICAgICAgPFNDTUFUaXRsZT57dCgnbWFya2V0cGxhY2UubXlBZ2VudHNSZWFkeVRpdGxlJyl9PC9TQ01BVGl0bGU+XG4gICAgICAgICAgICA8L1NDTUFUaXRsZUlubmVyPlxuICAgICAgICAgICAge2NhbkNyZWF0ZUFnZW50ID8gKFxuICAgICAgICAgICAgICA8U0NNQUFjdGlvbnNSb3c+XG4gICAgICAgICAgICAgICAgPFNDTUFDcmVhdGVNYW51YWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e29wZW5DcmVhdGVBZ2VudE1vZGFsfT5cbiAgICAgICAgICAgICAgICAgIDxTQ01BQ3JlYXRlTWFudWFsQnV0dG9uVGV4dD57dCgnbWFya2V0cGxhY2UuY3JlYXRlQWdlbnQnKX08L1NDTUFDcmVhdGVNYW51YWxCdXR0b25UZXh0PlxuICAgICAgICAgICAgICAgIDwvU0NNQUNyZWF0ZU1hbnVhbEJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TQ01BQWN0aW9uc1Jvdz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge29uU2VhcmNoQWdlbnRzID8gKFxuICAgICAgICAgICAgICA8QWdlbnRTZWFyY2hJbnB1dFxuICAgICAgICAgICAgICAgIG9uU2VhcmNoPXtoYW5kbGVTZWFyY2hBZ2VudHN9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ21hcmtldHBsYWNlLnNlYXJjaEFnZW50UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICBoaW50PXt0KCdtYXJrZXRwbGFjZS5zZWFyY2hNaW5MZW5ndGgnKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNQVRpdGxlV3JhcD5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAge3NlYXJjaExvYWRpbmdBZ2VudHMgPyAoXG4gICAgICAgICAgPFNDTUFDYXJkc091dGVyPlxuICAgICAgICAgICAgPFNDTUFDYXJkc1Jvdz5cbiAgICAgICAgICAgICAge0FycmF5LmZyb20oeyBsZW5ndGg6IDYgfSkubWFwKChfLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgICAgICAgIDxTQ01BQ2FyZFNrZWxldG9uSXRlbSBrZXk9e2l9PlxuICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJjaXJjdWxhclwiIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwidGV4dFwiIGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cInRleHRcIiBoZWlnaHQ9ezE0fSB3aWR0aD1cIjc1JVwiIC8+XG4gICAgICAgICAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cInRleHRcIiBoZWlnaHQ9ezEyfSAvPlxuICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJ0ZXh0XCIgaGVpZ2h0PXsxMn0gd2lkdGg9XCI4NSVcIiAvPlxuICAgICAgICAgICAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJ0ZXh0XCIgaGVpZ2h0PXsxMX0gd2lkdGg9XCI0MCVcIiAvPlxuICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRTa2VsZXRvbkl0ZW0+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TQ01BQ2FyZHNSb3c+XG4gICAgICAgICAgPC9TQ01BQ2FyZHNPdXRlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshc2VhcmNoTG9hZGluZ0FnZW50cyAmJiBjdXN0b21BZ2VudHMubGVuZ3RoID8gKFxuICAgICAgICAgIDxTQ01BQ2FyZHNPdXRlcj5cbiAgICAgICAgICAgIDxTQ01BQ2FyZHNSb3c+XG4gICAgICAgICAgICAgIHtjdXN0b21BZ2VudHMubWFwKChhZ2VudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICA8U0NNQUNhcmRCdXR0b24ga2V5PXthZ2VudC5pZH0gJGluZGV4PXtpbmRleH0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZVVzZUFnZW50KGFnZW50KX0+XG4gICAgICAgICAgICAgICAgICA8U0NNQUNhcmRIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRUaXRsZUVtb2ppIGFyaWEtaGlkZGVuPlxuICAgICAgICAgICAgICAgICAgICAgICAge2FnZW50LmVtb2ppPy50cmltKCkgPyBhZ2VudC5lbW9qaSA6ICdcXHUwMGEwJ31cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkVGl0bGVFbW9qaT5cbiAgICAgICAgICAgICAgICAgICAgICB7Y2FuU2hvd01lbnUgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUtlYmFiQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdtYXJrZXRwbGFjZS5jYXJkTWVudUFyaWFMYWJlbCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWVudU9wZW5Gb3JBZ2VudElkKHByZXYgPT4gKHByZXYgPT09IGFnZW50LmlkID8gbnVsbCA6IGFnZW50LmlkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVEb3RzIGNvbG9yPVwiIzk5OVwiIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUtlYmFiQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRUaXRsZU5hbWU+e2FnZW50Lm5hbWV9PC9TQ01BQ2FyZFRpdGxlTmFtZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRIZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8U0NNQUNhcmRCb2R5PlxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRJbnRyb1RleHQ+e25vcm1hbGl6ZVRleHQoYWdlbnQuaW50cm9kdWN0aW9uKX08L1NDTUFDYXJkSW50cm9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkRm9vdGVyRGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtnZXRDcmVhdGVkQXRMYWJlbChhZ2VudCkgfHwgdCgnbWFya2V0cGxhY2UubXlBZ2VudHNGYWxsYmFja0RhdGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkRm9vdGVyRGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YWdlbnQuaXNfZmF2b3JpdGUgPyB0KCdhZ2VudHMucmVtb3ZlRmF2b3JpdGUnKSA6IHQoJ2FnZW50cy5hZGRGYXZvcml0ZScpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01BRmF2b3JpdGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2FnZW50LmlzX2Zhdm9yaXRlID8gdCgnYWdlbnRzLnJlbW92ZUZhdm9yaXRlJykgOiB0KCdhZ2VudHMuYWRkRmF2b3JpdGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsd2F5c1Zpc2libGU9eyEhYWdlbnQuaXNfZmF2b3JpdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZVRvZ2dsZUZhdm9yaXRlKGV2ZW50LCBhZ2VudCwgISFhZ2VudC5pc19mYXZvcml0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01BRmF2b3JpdGVTdGFyV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE2fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXthZ2VudC5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICcjOTk5J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9e2FnZW50LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJ25vbmUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YWdlbnQuaXNfZmF2b3JpdGUgPyAnJyA6ICdzdGFyLWZhdm9yaXRlLWljb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNQUZhdm9yaXRlU3RhcldyYXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTUFGYXZvcml0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNQUNhcmRGb290ZXI+XG4gICAgICAgICAgICAgICAgICA8L1NDTUFDYXJkQm9keT5cbiAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvckFnZW50SWQgPT09IGFnZW50LmlkICYmIGNhblNob3dNZW51ID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRNZW51XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUFDYXJkTWVudUl0ZW1zPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhbkVkaXQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01BQ2FyZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkVkaXRBZ2VudChhZ2VudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2VkaXQnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2FuRGVsZXRlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNQUNhcmRNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFnZW50VG9EZWxldGUoYWdlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdkZWxldGUnLCB7IG5zOiBTRUNUSU9OUy5hYm1BZ2VudCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnVJdGVtcz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01BQ2FyZE1lbnU+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L1NDTUFDYXJkQnV0dG9uPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU0NNQUNhcmRzUm93PlxuICAgICAgICAgIDwvU0NNQUNhcmRzT3V0ZXI+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IXNlYXJjaExvYWRpbmdBZ2VudHMgJiYgIWN1c3RvbUFnZW50cy5sZW5ndGggJiYgaXNTZWFyY2hBY3RpdmUgPyAoXG4gICAgICAgICAgPFNDTUFTZWFyY2hOb1Jlc3VsdHM+e3QoJ21hcmtldHBsYWNlLnNlYXJjaE5vUmVzdWx0cycpfTwvU0NNQVNlYXJjaE5vUmVzdWx0cz5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshc2VhcmNoTG9hZGluZ0FnZW50cyAmJiAhY3VzdG9tQWdlbnRzLmxlbmd0aCAmJiAhaXNTZWFyY2hBY3RpdmUgPyAoXG4gICAgICAgICAgPFNDTUFFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgICAgIDxTQ01BRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgICAgICA8U0NNQUVtcHR5U3RhdGVUaXRsZT57dCgnbWFya2V0cGxhY2UubXlBZ2VudHNFbXB0eVN0YXRlVGl0bGUnKX08L1NDTUFFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICB7Y2FuQ3JlYXRlQWdlbnRcbiAgICAgICAgICAgICAgICAgICAgPyB0KCdtYXJrZXRwbGFjZS5teUFnZW50c0VtcHR5U3RhdGVEZXNjcmlwdGlvbicpXG4gICAgICAgICAgICAgICAgICAgIDogdCgnbWFya2V0cGxhY2UubXlBZ2VudHNFbXB0eVN0YXRlRGVzY3JpcHRpb25Ob1Blcm0nKX1cbiAgICAgICAgICAgICAgICA8L1NDTUFFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvU0NNQUVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZUNvbHVtbj5cbiAgICAgICAgICAgIHtjYW5DcmVhdGVBZ2VudCA/IChcbiAgICAgICAgICAgICAgPFNDTUFFbXB0eVN0YXRlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVFbXB0eVN0YXRlUHJpbWFyeUFjdGlvbn0+XG4gICAgICAgICAgICAgICAge3QoJ21hcmtldHBsYWNlLm15QWdlbnRzRW1wdHlTdGF0ZUJ1dHRvbicpfVxuICAgICAgICAgICAgICA8L1NDTUFFbXB0eVN0YXRlQnV0dG9uPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01BRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7bG9hZGluZ01vcmVBZ2VudHMgPyAoXG4gICAgICAgICAgPFNDTUFMb2FkTW9yZVdyYXBwZXI+XG4gICAgICAgICAgICA8RmFkZT5cbiAgICAgICAgICAgICAgPExvYWRlciBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgPC9GYWRlPlxuICAgICAgICAgIDwvU0NNQUxvYWRNb3JlV3JhcHBlcj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDTUFCb2R5PlxuICAgICAge2RlbGV0ZU1vZGFsQ2hhdCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBZ2VudFRvRGVsZXRlKG51bGwpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17ZGVsZXRlTW9kYWxDaGF0fVxuICAgICAgICAgIGFjdGlvbj1cImFnZW50XCJcbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NNQU15QWdlbnRzQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRixTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUNsRSxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBRW5ELFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLG1CQUFtQixRQUFRLHlEQUF5RDtBQUM3RixTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLE1BQU0sUUFBUSxvQkFBb0I7QUFDM0MsU0FBU0MsSUFBSSxRQUFRLGtCQUFrQjtBQUN2QyxTQUFTQyxRQUFRLFFBQVEsK0JBQStCO0FBQ3hELFNBQVNDLGlCQUFpQixRQUFRLGdCQUFnQjtBQUNsRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FDRUMsUUFBUSxFQUNSQyxZQUFZLEVBQ1pDLGNBQWMsRUFDZEMsY0FBYyxFQUNkQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMsaUJBQWlCLEVBQ2pCQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLG9CQUFvQixFQUNwQkMsa0JBQWtCLEVBQ2xCQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsb0JBQW9CLEVBQ3BCQyx3QkFBd0IsRUFDeEJDLG1CQUFtQixFQUNuQkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLGVBQWUsRUFDZkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFDakJDLHFCQUFxQixFQUNyQkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLGFBQWEsRUFDYkMsY0FBYyxFQUNkQyxzQkFBc0IsRUFDdEJDLDBCQUEwQixFQUMxQkMsb0JBQW9CLEVBQ3BCQyxpQkFBaUIsRUFDakJDLGVBQWUsRUFDZkMsY0FBYyxFQUNkQyxtQkFBbUIsUUFDZCx5QkFBeUI7QUFDaEMsU0FBU0MsV0FBVyxRQUFRLG1CQUFtQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFFL0MsSUFBTUMsZ0JBQWdCLGdCQUFHbEUsS0FBSyxDQUFDbUUsSUFBSSxDQUNqQyxVQUFBQyxJQUFBLEVBQTJHO0VBQUEsSUFBeEdDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0lBQUVDLFdBQVcsR0FBQUYsSUFBQSxDQUFYRSxXQUFXO0lBQUVDLElBQUksR0FBQUgsSUFBQSxDQUFKRyxJQUFJO0VBQzVCLElBQUFDLFNBQUEsR0FBMEJuRSxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQUFvRSxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUEvQkcsS0FBSyxHQUFBRixVQUFBO0lBQUVHLFFBQVEsR0FBQUgsVUFBQTtFQUN0QixJQUFNSSxXQUFXLEdBQUd6RSxNQUFNLENBQXVDLElBQUksQ0FBQztFQUN0RSxJQUFNMEUsUUFBUSxHQUFHSCxLQUFLLENBQUNJLE1BQU0sR0FBRyxDQUFDLElBQUlKLEtBQUssQ0FBQ0ksTUFBTSxHQUFHLENBQUM7RUFFckQsSUFBTUMsWUFBWSxHQUFHL0UsV0FBVyxDQUM5QixVQUFDZ0YsQ0FBc0MsRUFBSztJQUMxQyxJQUFlQyxHQUFHLEdBQUtELENBQUMsQ0FBQ0UsTUFBTSxDQUF2QlIsS0FBSztJQUNiQyxRQUFRLENBQUNNLEdBQUcsQ0FBQztJQUNiLElBQUlMLFdBQVcsQ0FBQ08sT0FBTyxFQUFFQyxZQUFZLENBQUNSLFdBQVcsQ0FBQ08sT0FBTyxDQUFDO0lBQzFEUCxXQUFXLENBQUNPLE9BQU8sR0FBR0UsVUFBVSxDQUFDLFlBQU07TUFDckMsSUFBSUosR0FBRyxLQUFLLEVBQUUsSUFBSUEsR0FBRyxDQUFDSCxNQUFNLElBQUksQ0FBQyxFQUFFVixRQUFRLENBQUNhLEdBQUcsQ0FBQztJQUNsRCxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQ1QsQ0FBQyxFQUNELENBQUNiLFFBQVEsQ0FDWCxDQUFDO0VBRURuRSxTQUFTLENBQ1A7SUFBQSxPQUFNLFlBQU07TUFDVixJQUFJMkUsV0FBVyxDQUFDTyxPQUFPLEVBQUVDLFlBQVksQ0FBQ1IsV0FBVyxDQUFDTyxPQUFPLENBQUM7SUFDNUQsQ0FBQztFQUFBLEdBQ0QsRUFDRixDQUFDO0VBRUQsb0JBQ0VuQixLQUFBLENBQUNSLGlCQUFpQjtJQUFBOEIsUUFBQSxnQkFDaEJ4QixJQUFBLENBQUN4RCxNQUFNO01BQUNpRixLQUFLLEVBQUUsRUFBRztNQUFDQyxNQUFNLEVBQUUsRUFBRztNQUFDQyxLQUFLLEVBQUM7SUFBTSxDQUFFLENBQUMsZUFDOUMzQixJQUFBLENBQUNMLGVBQWU7TUFBQ2lDLElBQUksRUFBQyxNQUFNO01BQUNoQixLQUFLLEVBQUVBLEtBQU07TUFBQ2lCLFFBQVEsRUFBRVosWUFBYTtNQUFDVixXQUFXLEVBQUVBO0lBQVksQ0FBRSxDQUFDLEVBQzlGUSxRQUFRLGdCQUFHZixJQUFBLENBQUNKLGNBQWM7TUFBQTRCLFFBQUEsRUFBRWhCO0lBQUksQ0FBaUIsQ0FBQyxHQUFHLElBQUk7RUFBQSxDQUN6QyxDQUFDO0FBRXhCLENBQ0YsQ0FBQztBQWVELE9BQU8sSUFBTXNCLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBQUMsS0FBQSxFQVdBO0VBQUEsSUFBQUMsaUJBQUE7RUFBQSxJQVZ6QkMsTUFBTSxHQUFBRixLQUFBLENBQU5FLE1BQU07SUFDTkMsTUFBTSxHQUFBSCxLQUFBLENBQU5HLE1BQU07SUFDTkMsYUFBYSxHQUFBSixLQUFBLENBQWJJLGFBQWE7SUFDYkMscUJBQXFCLEdBQUFMLEtBQUEsQ0FBckJLLHFCQUFxQjtJQUFBQyxtQkFBQSxHQUFBTixLQUFBLENBQ3JCTyxhQUFhO0lBQWJBLGFBQWEsR0FBQUQsbUJBQUEsY0FBRyxLQUFLLEdBQUFBLG1CQUFBO0lBQUFFLHFCQUFBLEdBQUFSLEtBQUEsQ0FDckJTLGlCQUFpQjtJQUFqQkEsaUJBQWlCLEdBQUFELHFCQUFBLGNBQUcsS0FBSyxHQUFBQSxxQkFBQTtJQUN6QkUsZ0JBQWdCLEdBQUFWLEtBQUEsQ0FBaEJVLGdCQUFnQjtJQUNoQkMsYUFBYSxHQUFBWCxLQUFBLENBQWJXLGFBQWE7SUFDYkMsY0FBYyxHQUFBWixLQUFBLENBQWRZLGNBQWM7SUFBQUMscUJBQUEsR0FBQWIsS0FBQSxDQUNkYyxtQkFBbUI7SUFBbkJBLG1CQUFtQixHQUFBRCxxQkFBQSxjQUFHLEtBQUssR0FBQUEscUJBQUE7RUFFM0IsSUFBQUUsZUFBQSxHQUFjbkcsY0FBYyxDQUFDLENBQUNNLFFBQVEsQ0FBQzhGLE1BQU0sRUFBRTlGLFFBQVEsQ0FBQytGLFFBQVEsQ0FBQyxDQUFDO0lBQTFEQyxDQUFDLEdBQUFILGVBQUEsQ0FBREcsQ0FBQztFQUNULElBQU1DLElBQUksR0FBR3JHLE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQUFzRyxpQkFBQSxHQUF3RHZHLGdCQUFnQixDQUFDLENBQUM7SUFBbEV3RyxXQUFXLEdBQUFELGlCQUFBLENBQVhDLFdBQVc7SUFBRUMsVUFBVSxHQUFBRixpQkFBQSxDQUFWRSxVQUFVO0lBQUVDLFNBQVMsR0FBQUgsaUJBQUEsQ0FBVEcsU0FBUztJQUFFQyxPQUFPLEdBQUFKLGlCQUFBLENBQVBJLE9BQU87RUFDbkQsSUFBQUMsbUJBQUEsR0FBdUR6RyxrQkFBa0IsQ0FBQyxDQUFDO0lBQW5FMEcscUJBQXFCLEdBQUFELG1CQUFBLENBQXJCQyxxQkFBcUI7SUFBRUMsbUJBQW1CLEdBQUFGLG1CQUFBLENBQW5CRSxtQkFBbUI7RUFDbEQsSUFBTUMsWUFBWSxHQUFHekIsTUFBTSxDQUFDMEIsTUFBTSxDQUFDLFVBQUFDLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNqQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUNpQyxLQUFLLENBQUNDLFVBQVU7RUFBQSxFQUFDO0VBQ3pGLElBQUFDLFVBQUEsR0FBb0R6SCxRQUFRLENBQWdCLElBQUksQ0FBQztJQUFBMEgsVUFBQSxHQUFBckQsY0FBQSxDQUFBb0QsVUFBQTtJQUExRUUsa0JBQWtCLEdBQUFELFVBQUE7SUFBRUUscUJBQXFCLEdBQUFGLFVBQUE7RUFDaEQsSUFBQUcsVUFBQSxHQUEwQzdILFFBQVEsQ0FBZSxJQUFJLENBQUM7SUFBQThILFVBQUEsR0FBQXpELGNBQUEsQ0FBQXdELFVBQUE7SUFBL0RFLGFBQWEsR0FBQUQsVUFBQTtJQUFFRSxnQkFBZ0IsR0FBQUYsVUFBQTtFQUN0QyxJQUFNRyxlQUFlLEdBQUdyQixJQUFJLGFBQUpBLElBQUksZ0JBQUFsQixpQkFBQSxHQUFKa0IsSUFBSSxDQUFFc0IsV0FBVyxjQUFBeEMsaUJBQUEsdUJBQWpCQSxpQkFBQSxDQUFtQnlDLFNBQVM7RUFDcEQsSUFBTUMsY0FBYyxHQUFHLENBQUMsRUFBQ0gsZUFBZSxhQUFmQSxlQUFlLGVBQWZBLGVBQWUsQ0FBRUksTUFBTSxLQUFJLENBQUMsQ0FBQ0MsTUFBTSxDQUFDQyx3Q0FBd0M7RUFDckcsSUFBTUMsT0FBTyxHQUFHLENBQUMsRUFBQ1AsZUFBZSxhQUFmQSxlQUFlLGVBQWZBLGVBQWUsQ0FBRVEsSUFBSSxLQUFJLENBQUMsQ0FBQ0gsTUFBTSxDQUFDQyx3Q0FBd0M7RUFDNUYsSUFBTUcsU0FBUyxHQUFHLENBQUMsRUFBQ1QsZUFBZSxhQUFmQSxlQUFlLGVBQWZBLGVBQWUsVUFBUSxLQUFJLENBQUMsQ0FBQ0ssTUFBTSxDQUFDQyx3Q0FBd0M7RUFDaEcsSUFBTUksV0FBVyxHQUFHSCxPQUFPLElBQUlFLFNBQVM7RUFDeEMsSUFBQUUsa0JBQUEsR0FBMkI3SCxpQkFBaUIsQ0FBQyxDQUFDO0lBQXRDOEgsY0FBYyxHQUFBRCxrQkFBQSxDQUFkQyxjQUFjO0VBQ3RCLElBQU1DLGNBQWMsR0FBRzdILFFBQVEsQ0FBQyxDQUFDO0VBQ2pDLElBQUE4SCxVQUFBLEdBQTRDL0ksUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBZ0osVUFBQSxHQUFBM0UsY0FBQSxDQUFBMEUsVUFBQTtJQUFwREUsY0FBYyxHQUFBRCxVQUFBO0lBQUVFLGlCQUFpQixHQUFBRixVQUFBO0VBRXhDLElBQU1HLGtCQUFrQixHQUFHdkosV0FBVyxDQUNwQyxVQUFDd0osS0FBYSxFQUFLO0lBQ2pCRixpQkFBaUIsQ0FBQ0UsS0FBSyxLQUFLLEVBQUUsQ0FBQztJQUMvQi9DLGNBQWMsYUFBZEEsY0FBYyxlQUFkQSxjQUFjLENBQUcrQyxLQUFLLENBQUM7RUFDekIsQ0FBQyxFQUNELENBQUMvQyxjQUFjLENBQ2pCLENBQUM7RUFFRCxJQUFNZ0Qsb0JBQW9CLEdBQUd6SixXQUFXLENBQUMsWUFBTTtJQUM3Q2tKLGNBQWMsQ0FBQzlILE1BQU0sQ0FBQ3NJLFNBQVMsRUFBRTtNQUFFQyxNQUFNLEVBQUU7SUFBZSxDQUFDLENBQUM7SUFDNURDLFFBQVEsQ0FBQ0MsYUFBYSxDQUNwQixJQUFJQyxXQUFXLENBQUMsNEJBQTRCLEVBQUU7TUFDNUNDLE1BQU0sRUFBRTtRQUNOQyxXQUFXLEVBQUU7VUFDWEMsTUFBTSxFQUFFO1lBQ05DLFNBQVMsRUFBRTtVQUNiLENBQUM7VUFDREMsTUFBTSxFQUFFO1FBQ1Y7TUFDRjtJQUNGLENBQUMsQ0FDSCxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNqQixjQUFjLENBQUMsQ0FBQztFQUVwQixJQUFNa0IsNkJBQTZCLEdBQUdwSyxXQUFXLENBQUMsWUFBTTtJQUN0RCxJQUFNcUsscUJBQXFCLEdBQUcsQ0FBQyxDQUFDM0IsTUFBTSxDQUFDNEIsd0JBQXdCLElBQUksT0FBTzlELGFBQWEsS0FBSyxVQUFVO0lBQ3RHLElBQUk2RCxxQkFBcUIsRUFBRTtNQUN6QjdELGFBQWEsQ0FBQyxDQUFDO01BQ2Y7SUFDRjtJQUNBaUQsb0JBQW9CLENBQUMsQ0FBQztFQUN4QixDQUFDLEVBQUUsQ0FBQ2pELGFBQWEsRUFBRWlELG9CQUFvQixDQUFDLENBQUM7RUFFekMsSUFBTWMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBLEVBQVM7SUFDM0IsSUFBSSxDQUFDaEUsZ0JBQWdCLElBQUksQ0FBQ0gsYUFBYSxJQUFJRSxpQkFBaUIsRUFBRTtNQUM1RDtJQUNGO0lBQ0FDLGdCQUFnQixDQUFDLENBQUM7RUFDcEIsQ0FBQztFQUVELElBQU1pRSxlQUFlLEdBQUd0SyxPQUFPLENBQzdCO0lBQUEsT0FBT2lJLGFBQWEsR0FBRztNQUFFc0MsS0FBSyxFQUFFdEMsYUFBYSxDQUFDdUMsSUFBSTtNQUFFQyxFQUFFLEVBQUV4QyxhQUFhLENBQUN3QztJQUFHLENBQUMsR0FBRyxJQUFJO0VBQUEsQ0FBQyxFQUNsRixDQUFDeEMsYUFBYSxDQUNoQixDQUFDO0VBRUQsSUFBTXlDLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSWpELEtBQVksRUFBSztJQUN2Q1IsVUFBVSxDQUFDLElBQUksQ0FBQztJQUNoQkMsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRyxJQUFJLENBQUM7SUFDakJDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDYkgsV0FBVyxDQUFDUyxLQUFLLENBQUM7SUFDbEI1QixNQUFNLENBQUMsQ0FBQztFQUNWLENBQUM7RUFFRCxJQUFNOEUsYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJbkcsS0FBZ0MsRUFBSztJQUMxRCxJQUFJb0csS0FBSyxDQUFDQyxPQUFPLENBQUNyRyxLQUFLLENBQUMsRUFBRSxPQUFPQSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtJQUMvQyxPQUFPQSxLQUFLLElBQUksRUFBRTtFQUNwQixDQUFDO0VBRUQsSUFBTXNHLGlCQUFpQixHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUlyRCxLQUFZLEVBQUs7SUFDMUMsSUFBTXNELFNBQVMsR0FBSXRELEtBQUssQ0FBcUN1RCxVQUFVO0lBQ3ZFLElBQUksQ0FBQ0QsU0FBUyxFQUFFLE9BQU8sRUFBRTtJQUV6QixJQUFNRSxhQUFhLEdBQUcsSUFBSUMsSUFBSSxDQUFDSCxTQUFTLENBQUM7SUFDekMsSUFBSUksTUFBTSxDQUFDQyxLQUFLLENBQUNILGFBQWEsQ0FBQ0ksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRTtJQUVwRCxJQUFNQyxNQUFNLEdBQUdKLElBQUksQ0FBQ0ssR0FBRyxDQUFDLENBQUMsR0FBR04sYUFBYSxDQUFDSSxPQUFPLENBQUMsQ0FBQztJQUNuRCxJQUFNRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUNqQyxJQUFNQyxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDRSxLQUFLLENBQUNOLE1BQU0sR0FBR0UsS0FBSyxDQUFDLENBQUM7SUFFcEQsSUFBSUMsSUFBSSxLQUFLLENBQUMsRUFBRSxPQUFPNUUsQ0FBQyxDQUFDLDJCQUEyQixDQUFDO0lBQ3JELElBQUk0RSxJQUFJLEtBQUssQ0FBQyxFQUFFLE9BQU81RSxDQUFDLENBQUMsK0JBQStCLENBQUM7SUFDekQsT0FBT0EsQ0FBQyxDQUFDLDZCQUE2QixFQUFFO01BQUU0RSxJQUFJLEVBQUpBO0lBQUssQ0FBQyxDQUFDO0VBQ25ELENBQUM7RUFFRCxJQUFNSSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJcEUsS0FBWSxFQUFLO0lBQzVDaUMsUUFBUSxDQUFDQyxhQUFhLENBQ3BCLElBQUlDLFdBQVcsQ0FBQyw0QkFBNEIsRUFBRTtNQUM1Q0MsTUFBTSxFQUFFO1FBQ05DLFdBQVcsRUFBRTtVQUNYQyxNQUFNLEVBQUU7WUFDTkMsU0FBUyxFQUFFLElBQUk7WUFDZjhCLFNBQVMsRUFBRSxDQUFBckUsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVxRSxTQUFTLEtBQUksRUFBRTtZQUNqQ0MsT0FBTyxFQUFFO2NBQ1B2QixJQUFJLEVBQUUvQyxLQUFLLENBQUMrQyxJQUFJO2NBQ2hCQyxFQUFFLEVBQUVoRCxLQUFLLENBQUNnRDtZQUNaO1VBQ0YsQ0FBQztVQUNEUixNQUFNLEVBQUU7UUFDVjtNQUNGO0lBQ0YsQ0FBQyxDQUNILENBQUM7SUFDRG5DLHFCQUFxQixDQUFDLElBQUksQ0FBQztFQUM3QixDQUFDO0VBRUQsSUFBTWtFLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEtBQTBDLEVBQUV4RSxLQUFZLEVBQUV5RSxVQUFtQixFQUFLO0lBQzlHRCxLQUFLLENBQUNFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RCRixLQUFLLENBQUNHLGVBQWUsQ0FBQyxDQUFDO0lBRXZCckQsY0FBYyxDQUNadEIsS0FBSyxDQUFDZ0QsRUFBRSxFQUNSLFVBQUE0QixZQUFZLEVBQUk7TUFDZHJHLHFCQUFxQixhQUFyQkEscUJBQXFCLGVBQXJCQSxxQkFBcUIsQ0FBR3FHLFlBQVksQ0FBQztJQUN2QyxDQUFDLEVBQ0RDLFNBQVMsRUFDVEosVUFDRixDQUFDO0VBQ0gsQ0FBQztFQUVELElBQU1LLG1CQUFtQjtJQUFBLElBQUFDLEtBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQU9DLElBQW9CO01BQUEsSUFBQUMsRUFBQTtNQUFBLE9BQUFKLG1CQUFBLENBQUFLLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1VBQUE7WUFBQUYsUUFBQSxDQUFBQyxJQUFBO1lBQUFELFFBQUEsQ0FBQUUsSUFBQTtZQUFBLE9BRTdDeE0sV0FBVyxDQUFDbU0sSUFBSSxDQUFDcEMsRUFBRSxDQUFDO1VBQUE7WUFDMUJwRCxxQkFBcUIsQ0FBQ1IsQ0FBQyxDQUFDLHFCQUFxQixFQUFFO2NBQUVzRyxFQUFFLEVBQUV0TSxRQUFRLENBQUMrRjtZQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzFFYixhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFHOEcsSUFBSSxDQUFDcEMsRUFBRSxDQUFDO1lBQ3hCdkMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3RCSixxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFBQWtGLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7WUFBQUYsUUFBQSxDQUFBQyxJQUFBO1lBQUFILEVBQUEsR0FBQUUsUUFBQTtZQUUzQjFGLG1CQUFtQixDQUFDVCxDQUFDLENBQUMsbUJBQW1CLEVBQUU7Y0FBRXNHLEVBQUUsRUFBRXRNLFFBQVEsQ0FBQytGO1lBQVMsQ0FBQyxDQUFDLENBQUM7VUFBQTtVQUFBO1lBQUEsT0FBQW9HLFFBQUEsQ0FBQUksSUFBQTtRQUFBO01BQUEsR0FBQVIsT0FBQTtJQUFBLENBRXpFO0lBQUEsZ0JBVktMLG1CQUFtQkEsQ0FBQWMsRUFBQTtNQUFBLE9BQUFiLEtBQUEsQ0FBQWMsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxHQVV4QjtFQUVEeE4sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNeU4sa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBQSxFQUFTO01BQy9CLElBQUkzRixrQkFBa0IsRUFBRTtRQUN0QkMscUJBQXFCLENBQUMsSUFBSSxDQUFDO01BQzdCO0lBQ0YsQ0FBQztJQUVENEIsUUFBUSxDQUFDK0QsZ0JBQWdCLENBQUMsT0FBTyxFQUFFRCxrQkFBa0IsQ0FBQztJQUN0RCxPQUFPLFlBQU07TUFDWDlELFFBQVEsQ0FBQ2dFLG1CQUFtQixDQUFDLE9BQU8sRUFBRUYsa0JBQWtCLENBQUM7SUFDM0QsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDM0Ysa0JBQWtCLENBQUMsQ0FBQztFQUV4QjlILFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTTROLFNBQVMsR0FBR2pFLFFBQVEsQ0FBQ2tFLGNBQWMsQ0FBQyw0QkFBNEIsQ0FBQztJQUN2RSxJQUFJLENBQUNELFNBQVMsRUFBRTtNQUNkLE9BQU9yQixTQUFTO0lBQ2xCO0lBRUEsSUFBTXVCLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFBLEVBQVM7TUFDckIsSUFBSSxDQUFDM0gsYUFBYSxJQUFJRSxpQkFBaUIsRUFBRTtNQUN6QyxJQUFRMEgsU0FBUyxHQUFpQ0gsU0FBUyxDQUFuREcsU0FBUztRQUFFQyxZQUFZLEdBQW1CSixTQUFTLENBQXhDSSxZQUFZO1FBQUVDLFlBQVksR0FBS0wsU0FBUyxDQUExQkssWUFBWTtNQUM3QyxJQUFNQyxVQUFVLEdBQUdILFNBQVMsR0FBR0MsWUFBWSxJQUFJQyxZQUFZLEdBQUcsRUFBRTtNQUNoRSxJQUFJQyxVQUFVLEVBQUU7UUFDZDVELGNBQWMsQ0FBQyxDQUFDO01BQ2xCO0lBQ0YsQ0FBQztJQUVEc0QsU0FBUyxDQUFDRixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUVJLFFBQVEsQ0FBQztJQUM5QyxPQUFPLFlBQU07TUFDWEYsU0FBUyxDQUFDRCxtQkFBbUIsQ0FBQyxRQUFRLEVBQUVHLFFBQVEsQ0FBQztJQUNuRCxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUMzSCxhQUFhLEVBQUVFLGlCQUFpQixFQUFFQyxnQkFBZ0IsQ0FBQyxDQUFDO0VBRXhEdEcsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNNE4sU0FBUyxHQUFHakUsUUFBUSxDQUFDa0UsY0FBYyxDQUFDLDRCQUE0QixDQUFDO0lBQ3ZFLElBQUksQ0FBQ0QsU0FBUyxJQUFJLENBQUN6SCxhQUFhLElBQUlFLGlCQUFpQixFQUFFO01BQ3JELE9BQU9rRyxTQUFTO0lBQ2xCO0lBRUEsSUFBSXFCLFNBQVMsQ0FBQ0ssWUFBWSxJQUFJTCxTQUFTLENBQUNJLFlBQVksR0FBRyxDQUFDLEVBQUU7TUFDeEQxRCxjQUFjLENBQUMsQ0FBQztJQUNsQjtJQUNBLE9BQU9pQyxTQUFTO0VBQ2xCLENBQUMsRUFBRSxDQUFDL0UsWUFBWSxDQUFDM0MsTUFBTSxFQUFFc0IsYUFBYSxFQUFFRSxpQkFBaUIsRUFBRUMsZ0JBQWdCLENBQUMsQ0FBQztFQUU3RSxvQkFDRXZDLEtBQUEsQ0FBQ2hCLHFCQUFxQjtJQUFDMkgsRUFBRSxFQUFDLDRCQUE0QjtJQUFDeUQsVUFBVSxFQUFFLENBQUMsQ0FBQzNHLFlBQVksQ0FBQzNDLE1BQU0sSUFBSXVFLGNBQWU7SUFBQS9ELFFBQUEsZ0JBQ3pHeEIsSUFBQSxDQUFDZixpQkFBaUI7TUFBQXVDLFFBQUEsZUFDaEJ4QixJQUFBLENBQUNGLFdBQVcsSUFBRTtJQUFDLENBQ0UsQ0FBQyxlQUVwQkksS0FBQSxDQUFDMUMsUUFBUTtNQUFDK00sZUFBZSxFQUFFN0YsY0FBZTtNQUFBbEQsUUFBQSxHQUN2Q21DLFlBQVksQ0FBQzNDLE1BQU0sSUFBSXVFLGNBQWMsZ0JBQ3BDckYsS0FBQSxDQUFDYixhQUFhO1FBQUFtQyxRQUFBLGdCQUNaeEIsSUFBQSxDQUFDWixjQUFjO1VBQUFvQyxRQUFBLGVBQ2J4QixJQUFBLENBQUNiLFNBQVM7WUFBQXFDLFFBQUEsRUFBRXlCLENBQUMsQ0FBQyxnQ0FBZ0M7VUFBQyxDQUFZO1FBQUMsQ0FDOUMsQ0FBQyxFQUNoQnlCLGNBQWMsZ0JBQ2IxRSxJQUFBLENBQUNWLGNBQWM7VUFBQWtDLFFBQUEsZUFDYnhCLElBQUEsQ0FBQ1Qsc0JBQXNCO1lBQUNxQyxJQUFJLEVBQUMsUUFBUTtZQUFDNEksT0FBTyxFQUFFN0Usb0JBQXFCO1lBQUFuRSxRQUFBLGVBQ2xFeEIsSUFBQSxDQUFDUiwwQkFBMEI7Y0FBQWdDLFFBQUEsRUFBRXlCLENBQUMsQ0FBQyx5QkFBeUI7WUFBQyxDQUE2QjtVQUFDLENBQ2pFO1FBQUMsQ0FDWCxDQUFDLEdBQ2YsSUFBSSxFQUNQTixjQUFjLGdCQUNiM0MsSUFBQSxDQUFDRyxnQkFBZ0I7VUFDZkcsUUFBUSxFQUFFbUYsa0JBQW1CO1VBQzdCbEYsV0FBVyxFQUFFMEMsQ0FBQyxDQUFDLG9DQUFvQyxDQUFFO1VBQ3JEekMsSUFBSSxFQUFFeUMsQ0FBQyxDQUFDLDZCQUE2QjtRQUFFLENBQ3hDLENBQUMsR0FDQSxJQUFJO01BQUEsQ0FDSyxDQUFDLEdBQ2QsSUFBSSxFQUVQSixtQkFBbUIsZ0JBQ2xCN0MsSUFBQSxDQUFDekIsY0FBYztRQUFBaUQsUUFBQSxlQUNieEIsSUFBQSxDQUFDeEIsWUFBWTtVQUFBZ0QsUUFBQSxFQUNWd0YsS0FBSyxDQUFDeUQsSUFBSSxDQUFDO1lBQUV6SixNQUFNLEVBQUU7VUFBRSxDQUFDLENBQUMsQ0FBQzBKLEdBQUcsQ0FBQyxVQUFDQyxDQUFDLEVBQUVDLENBQUM7WUFBQTtjQUFBO2NBQ2xDO2NBQ0ExSyxLQUFBLENBQUNULG9CQUFvQjtnQkFBQStCLFFBQUEsZ0JBQ25CeEIsSUFBQSxDQUFDNUMsUUFBUTtrQkFBQ3lOLE9BQU8sRUFBQyxVQUFVO2tCQUFDcEosS0FBSyxFQUFFLEVBQUc7a0JBQUNDLE1BQU0sRUFBRTtnQkFBRyxDQUFFLENBQUMsZUFDdEQxQixJQUFBLENBQUM1QyxRQUFRO2tCQUFDeU4sT0FBTyxFQUFDLE1BQU07a0JBQUNuSixNQUFNLEVBQUU7Z0JBQUcsQ0FBRSxDQUFDLGVBQ3ZDMUIsSUFBQSxDQUFDNUMsUUFBUTtrQkFBQ3lOLE9BQU8sRUFBQyxNQUFNO2tCQUFDbkosTUFBTSxFQUFFLEVBQUc7a0JBQUNELEtBQUssRUFBQztnQkFBSyxDQUFFLENBQUMsZUFDbkR6QixJQUFBLENBQUM1QyxRQUFRO2tCQUFDeU4sT0FBTyxFQUFDLE1BQU07a0JBQUNuSixNQUFNLEVBQUU7Z0JBQUcsQ0FBRSxDQUFDLGVBQ3ZDMUIsSUFBQSxDQUFDNUMsUUFBUTtrQkFBQ3lOLE9BQU8sRUFBQyxNQUFNO2tCQUFDbkosTUFBTSxFQUFFLEVBQUc7a0JBQUNELEtBQUssRUFBQztnQkFBSyxDQUFFLENBQUMsZUFDbkR6QixJQUFBLENBQUM1QyxRQUFRO2tCQUFDeU4sT0FBTyxFQUFDLE1BQU07a0JBQUNuSixNQUFNLEVBQUUsRUFBRztrQkFBQ0QsS0FBSyxFQUFDO2dCQUFLLENBQUUsQ0FBQztjQUFBLEdBTjFCbUosQ0FPTDtZQUFDO1VBQUEsQ0FDeEI7UUFBQyxDQUNVO01BQUMsQ0FDRCxDQUFDLEdBQ2YsSUFBSSxFQUNQLENBQUMvSCxtQkFBbUIsSUFBSWMsWUFBWSxDQUFDM0MsTUFBTSxnQkFDMUNoQixJQUFBLENBQUN6QixjQUFjO1FBQUFpRCxRQUFBLGVBQ2J4QixJQUFBLENBQUN4QixZQUFZO1VBQUFnRCxRQUFBLEVBQ1ZtQyxZQUFZLENBQUMrRyxHQUFHLENBQUMsVUFBQzdHLEtBQUssRUFBRWlILEtBQUs7WUFBQSxJQUFBQyxZQUFBO1lBQUEsb0JBQzdCN0ssS0FBQSxDQUFDeEMsY0FBYztjQUFnQnNOLE1BQU0sRUFBRUYsS0FBTTtjQUFDbEosSUFBSSxFQUFDLFFBQVE7Y0FBQzRJLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO2dCQUFBLE9BQVExRCxjQUFjLENBQUNqRCxLQUFLLENBQUM7Y0FBQSxDQUFDO2NBQUFyQyxRQUFBLGdCQUMvRnRCLEtBQUEsQ0FBQ3RDLGNBQWM7Z0JBQUE0RCxRQUFBLGdCQUNidEIsS0FBQSxDQUFDckMsY0FBYztrQkFBQTJELFFBQUEsZ0JBQ2J4QixJQUFBLENBQUMzQixrQkFBa0I7b0JBQUMsbUJBQVc7b0JBQUFtRCxRQUFBLEVBQzVCLENBQUF1SixZQUFBLEdBQUFsSCxLQUFLLENBQUNvSCxLQUFLLGNBQUFGLFlBQUEsZUFBWEEsWUFBQSxDQUFhRyxJQUFJLENBQUMsQ0FBQyxHQUFHckgsS0FBSyxDQUFDb0gsS0FBSyxHQUFHO2tCQUFRLENBQzNCLENBQUMsRUFDcEJoRyxXQUFXLGdCQUNWakYsSUFBQSxDQUFDakIsZUFBZTtvQkFDZDZDLElBQUksRUFBQyxRQUFRO29CQUNiLGNBQVlxQixDQUFDLENBQUMsK0JBQStCLENBQUU7b0JBQy9DdUgsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUVuQyxLQUFLLEVBQUk7c0JBQ2hCQSxLQUFLLENBQUNFLGNBQWMsQ0FBQyxDQUFDO3NCQUN0QkYsS0FBSyxDQUFDRyxlQUFlLENBQUMsQ0FBQztzQkFDdkJ0RSxxQkFBcUIsQ0FBQyxVQUFBbUYsSUFBSTt3QkFBQSxPQUFLQSxJQUFJLEtBQUt4RixLQUFLLENBQUNnRCxFQUFFLEdBQUcsSUFBSSxHQUFHaEQsS0FBSyxDQUFDZ0QsRUFBRTtzQkFBQSxDQUFDLENBQUM7b0JBQ3RFLENBQUU7b0JBQUFyRixRQUFBLGVBRUZ4QixJQUFBLENBQUN6RCxRQUFRO3NCQUFDb0YsS0FBSyxFQUFDLE1BQU07c0JBQUNGLEtBQUssRUFBRSxFQUFHO3NCQUFDQyxNQUFNLEVBQUU7b0JBQUcsQ0FBRTtrQkFBQyxDQUNqQyxDQUFDLEdBQ2hCLElBQUk7Z0JBQUEsQ0FDTSxDQUFDLGVBQ2pCMUIsSUFBQSxDQUFDMUIsaUJBQWlCO2tCQUFBa0QsUUFBQSxFQUFFcUMsS0FBSyxDQUFDK0M7Z0JBQUksQ0FBb0IsQ0FBQztjQUFBLENBQ3JDLENBQUMsZUFDakIxRyxLQUFBLENBQUN6QyxZQUFZO2dCQUFBK0QsUUFBQSxnQkFDWHhCLElBQUEsQ0FBQ2xDLGlCQUFpQjtrQkFBQTBELFFBQUEsRUFBRXVGLGFBQWEsQ0FBQ2xELEtBQUssQ0FBQ3NILFlBQVk7Z0JBQUMsQ0FBb0IsQ0FBQyxlQUMxRWpMLEtBQUEsQ0FBQ3ZDLGNBQWM7a0JBQUE2RCxRQUFBLGdCQUNieEIsSUFBQSxDQUFDNUIsa0JBQWtCO29CQUFBb0QsUUFBQSxFQUNoQjBGLGlCQUFpQixDQUFDckQsS0FBSyxDQUFDLElBQUlaLENBQUMsQ0FBQyxrQ0FBa0M7a0JBQUMsQ0FDaEQsQ0FBQyxlQUNyQmpELElBQUEsQ0FBQ3RELE9BQU87b0JBQUNpSyxLQUFLLEVBQUU5QyxLQUFLLENBQUN1SCxXQUFXLEdBQUduSSxDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBR0EsQ0FBQyxDQUFDLG9CQUFvQixDQUFFO29CQUFBekIsUUFBQSxlQUN2RnhCLElBQUEsQ0FBQzlCLGtCQUFrQjtzQkFDakIwRCxJQUFJLEVBQUMsUUFBUTtzQkFDYixjQUFZaUMsS0FBSyxDQUFDdUgsV0FBVyxHQUFHbkksQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEdBQUdBLENBQUMsQ0FBQyxvQkFBb0IsQ0FBRTtzQkFDckZvSSxjQUFjLEVBQUUsQ0FBQyxDQUFDeEgsS0FBSyxDQUFDdUgsV0FBWTtzQkFDcENaLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFbkMsS0FBSzt3QkFBQSxPQUFJRCxvQkFBb0IsQ0FBQ0MsS0FBSyxFQUFFeEUsS0FBSyxFQUFFLENBQUMsQ0FBQ0EsS0FBSyxDQUFDdUgsV0FBVyxDQUFDO3NCQUFBLENBQUM7c0JBQUE1SixRQUFBLGVBRTFFeEIsSUFBQSxDQUFDN0Isb0JBQW9CO3dCQUFBcUQsUUFBQSxlQUNuQnhCLElBQUEsQ0FBQ3ZELElBQUk7MEJBQ0hnRixLQUFLLEVBQUUsRUFBRzswQkFDVkMsTUFBTSxFQUFFLEVBQUc7MEJBQ1hDLEtBQUssRUFBRWtDLEtBQUssQ0FBQ3VILFdBQVcsR0FBRyxTQUFTLEdBQUcsTUFBTzswQkFDOUNFLElBQUksRUFBRXpILEtBQUssQ0FBQ3VILFdBQVcsR0FBRyxTQUFTLEdBQUcsTUFBTzswQkFDN0NQLE9BQU8sRUFBQyxPQUFPOzBCQUNmVSxTQUFTLEVBQUUxSCxLQUFLLENBQUN1SCxXQUFXLEdBQUcsRUFBRSxHQUFHO3dCQUFxQixDQUMxRDtzQkFBQyxDQUNrQjtvQkFBQyxDQUNMO2tCQUFDLENBQ2QsQ0FBQztnQkFBQSxDQUNJLENBQUM7Y0FBQSxDQUNMLENBQUMsRUFDZG5ILGtCQUFrQixLQUFLSixLQUFLLENBQUNnRCxFQUFFLElBQUk1QixXQUFXLGdCQUM3Q2pGLElBQUEsQ0FBQ2pDLFlBQVk7Z0JBQ1h5TSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRW5DLEtBQUssRUFBSTtrQkFDaEJBLEtBQUssQ0FBQ0UsY0FBYyxDQUFDLENBQUM7a0JBQ3RCRixLQUFLLENBQUNHLGVBQWUsQ0FBQyxDQUFDO2dCQUN6QixDQUFFO2dCQUFBaEgsUUFBQSxlQUVGdEIsS0FBQSxDQUFDakMsaUJBQWlCO2tCQUFBdUQsUUFBQSxHQUNmc0QsT0FBTyxnQkFDTjlFLElBQUEsQ0FBQ2hDLGdCQUFnQjtvQkFDZjRELElBQUksRUFBQyxRQUFRO29CQUNiNEksT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtzQkFDYnZDLG1CQUFtQixDQUFDcEUsS0FBSyxDQUFDO29CQUM1QixDQUFFO29CQUFBckMsUUFBQSxFQUVEeUIsQ0FBQyxDQUFDLE1BQU0sRUFBRTtzQkFBRXNHLEVBQUUsRUFBRXRNLFFBQVEsQ0FBQytGO29CQUFTLENBQUM7a0JBQUMsQ0FDckIsQ0FBQyxHQUNqQixJQUFJLEVBQ1BnQyxTQUFTLGdCQUNSaEYsSUFBQSxDQUFDaEMsZ0JBQWdCO29CQUNmNEQsSUFBSSxFQUFDLFFBQVE7b0JBQ2I0SSxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO3NCQUNibEcsZ0JBQWdCLENBQUNULEtBQUssQ0FBQztvQkFDekIsQ0FBRTtvQkFBQXJDLFFBQUEsRUFFRHlCLENBQUMsQ0FBQyxRQUFRLEVBQUU7c0JBQUVzRyxFQUFFLEVBQUV0TSxRQUFRLENBQUMrRjtvQkFBUyxDQUFDO2tCQUFDLENBQ3ZCLENBQUMsR0FDakIsSUFBSTtnQkFBQSxDQUNTO2NBQUMsQ0FDUixDQUFDLEdBQ2IsSUFBSTtZQUFBLEdBL0VXYSxLQUFLLENBQUNnRCxFQWdGWCxDQUFDO1VBQUEsQ0FDbEI7UUFBQyxDQUNVO01BQUMsQ0FDRCxDQUFDLEdBQ2YsSUFBSSxFQUNQLENBQUNoRSxtQkFBbUIsSUFBSSxDQUFDYyxZQUFZLENBQUMzQyxNQUFNLElBQUl1RSxjQUFjLGdCQUM3RHZGLElBQUEsQ0FBQ0gsbUJBQW1CO1FBQUEyQixRQUFBLEVBQUV5QixDQUFDLENBQUMsNkJBQTZCO01BQUMsQ0FBc0IsQ0FBQyxHQUMzRSxJQUFJLEVBQ1AsQ0FBQ0osbUJBQW1CLElBQUksQ0FBQ2MsWUFBWSxDQUFDM0MsTUFBTSxJQUFJLENBQUN1RSxjQUFjLGdCQUM5RHJGLEtBQUEsQ0FBQ3pCLGtCQUFrQjtRQUFBK0MsUUFBQSxnQkFDakJ4QixJQUFBLENBQUN0QixvQkFBb0I7VUFBQThDLFFBQUEsZUFDbkJ0QixLQUFBLENBQUN2Qix3QkFBd0I7WUFBQTZDLFFBQUEsZ0JBQ3ZCeEIsSUFBQSxDQUFDcEIsbUJBQW1CO2NBQUE0QyxRQUFBLEVBQUV5QixDQUFDLENBQUMscUNBQXFDO1lBQUMsQ0FBc0IsQ0FBQyxlQUNyRmpELElBQUEsQ0FBQ25CLHNCQUFzQjtjQUFBMkMsUUFBQSxFQUNwQmtELGNBQWMsR0FDWHpCLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxHQUM5Q0EsQ0FBQyxDQUFDLGlEQUFpRDtZQUFDLENBQ2xDLENBQUM7VUFBQSxDQUNEO1FBQUMsQ0FDUCxDQUFDLEVBQ3RCeUIsY0FBYyxnQkFDYjFFLElBQUEsQ0FBQ2xCLG9CQUFvQjtVQUFDOEMsSUFBSSxFQUFDLFFBQVE7VUFBQzRJLE9BQU8sRUFBRWxFLDZCQUE4QjtVQUFBOUUsUUFBQSxFQUN4RXlCLENBQUMsQ0FBQyxzQ0FBc0M7UUFBQyxDQUN0QixDQUFDLEdBQ3JCLElBQUk7TUFBQSxDQUNVLENBQUMsR0FDbkIsSUFBSSxFQUNQVCxpQkFBaUIsZ0JBQ2hCeEMsSUFBQSxDQUFDaEIsbUJBQW1CO1FBQUF3QyxRQUFBLGVBQ2xCeEIsSUFBQSxDQUFDN0MsSUFBSTtVQUFBcUUsUUFBQSxlQUNIeEIsSUFBQSxDQUFDOUMsTUFBTTtZQUFDc08sSUFBSSxFQUFDO1VBQU8sQ0FBRTtRQUFDLENBQ25CO01BQUMsQ0FDWSxDQUFDLEdBQ3BCLElBQUk7SUFBQSxDQUNBLENBQUMsRUFDVjlFLGVBQWUsZ0JBQ2QxRyxJQUFBLENBQUNoRCxtQkFBbUI7TUFDbEJ5TyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtRQUFBLE9BQVFuSCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7TUFBQSxDQUFDO01BQ3RDb0gsUUFBUSxFQUFFO1FBQ1JDLG1CQUFtQixFQUFFaEQ7TUFDdkIsQ0FBRTtNQUNGTSxJQUFJLEVBQUV2QyxlQUFnQjtNQUN0QmtGLE1BQU0sRUFBQztJQUFPLENBQ2YsQ0FBQyxHQUNBLElBQUk7RUFBQSxDQUNhLENBQUM7QUFFNUIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==