@projectcor/maia-components 2.11.69-0 → 2.11.69-2

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 (93) hide show
  1. package/lib/components/atoms/Chip/Chip.js +50 -15
  2. package/lib/components/atoms/Chip/styles.js +9 -5
  3. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +3 -7
  4. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +2 -4
  5. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +2 -29
  6. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +24 -33
  7. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +42 -30
  8. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +21 -13
  9. package/lib/components/atoms/MAIAInput/MAIAInput.js +32 -14
  10. package/lib/components/atoms/icons/index.js +1 -3
  11. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -14
  12. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +297 -46
  13. package/lib/components/molecules/ChatAIHome/styles.js +63 -26
  14. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +54 -148
  15. package/lib/components/molecules/ChatAIMessages/newStyles.js +19 -9
  16. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +222 -76
  17. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +4 -1
  18. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +26 -1
  19. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +22 -29
  20. package/lib/components/molecules/ChatAIModal/constants.js +2 -6
  21. package/lib/components/molecules/ChatFooter/ChatFooter.js +75 -18
  22. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +22 -7
  23. package/lib/components/molecules/ChatFooter/styles.js +11 -2
  24. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +1 -3
  25. package/lib/components/molecules/Sidebar/Sidebar.js +14 -22
  26. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +1 -8
  27. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
  28. package/lib/constants/config.js +1 -4
  29. package/lib/constants/maiaTaskPanelAccess.js +7 -5
  30. package/lib/constants/permissions/index.js +2 -2
  31. package/lib/constants/permissions/utils.js +1 -4
  32. package/lib/constants/taskUrls.js +9 -2
  33. package/lib/context/global-context.js +8 -1
  34. package/lib/hooks/index.js +2 -1
  35. package/lib/hooks/useChatManager/useChatManager.js +149 -125
  36. package/lib/hooks/useChatMessages/useChatMessages.js +34 -5
  37. package/lib/hooks/useContextMentions.js +15 -60
  38. package/lib/hooks/useContextPinPopover.js +235 -0
  39. package/lib/hooks/useEntitySearch.js +96 -337
  40. package/lib/hooks/useEvent.js +2 -1
  41. package/lib/hooks/useFrequentlyAskedQuestions.js +12 -10
  42. package/lib/hooks/useFrequentlyUsedActions.js +5 -3
  43. package/lib/hooks/useMentionAllowedTypes.js +16 -41
  44. package/lib/hooks/useMentionPopover.js +49 -54
  45. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  46. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +27 -18
  47. package/lib/hooks/useProjectSearch.js +4 -28
  48. package/lib/hooks/useProjectSummaryConfig.js +74 -4
  49. package/lib/hooks/useRecentClientsSearch.js +4 -34
  50. package/lib/hooks/useRecentContexts.js +86 -0
  51. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +24 -16
  52. package/lib/lang/br/index.js +30 -55
  53. package/lib/lang/en/index.js +30 -55
  54. package/lib/lang/es/index.js +30 -55
  55. package/lib/lang/fr/index.js +30 -55
  56. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +6 -3
  57. package/lib/services/maia/Agents/getAgents.js +231 -183
  58. package/lib/services/maia/Chats/getChatMessages.js +34 -6
  59. package/lib/services/maia/Chats/getChatsByUserId.js +10 -2
  60. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +6 -4
  61. package/lib/services/maia/Orchestrator/orchestrator.js +21 -5
  62. package/lib/services/maia/RecentContexts/getRecentContexts.js +54 -0
  63. package/lib/services/maia/RecentContexts/index.js +6 -0
  64. package/lib/services/maia/index.js +4 -2
  65. package/lib/services/utils/validateIsMaia.js +2 -2
  66. package/lib/types/agent.js +1 -1
  67. package/lib/types/contextMention.js +1 -1
  68. package/lib/utils/agentDisplayName.js +9 -1
  69. package/lib/utils/contextMentionIcons.js +1 -29
  70. package/lib/utils/entityLinkRender.js +135 -0
  71. package/lib/utils/hitlAnalytics.js +3 -3
  72. package/lib/utils/renderContextMentions.js +6 -9
  73. package/package.json +1 -1
  74. package/lib/components/atoms/icons/SkillIcon.js +0 -30
  75. package/lib/components/atoms/icons/SkillsNavIcon.js +0 -27
  76. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +0 -357
  77. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +0 -145
  78. package/lib/components/molecules/ChatAIMySkills/index.js +0 -2
  79. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +0 -160
  80. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +0 -34
  81. package/lib/components/organisms/AbmSkillGenerateModal/index.js +0 -2
  82. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +0 -446
  83. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +0 -98
  84. package/lib/components/organisms/AbmSkillModal/index.js +0 -2
  85. package/lib/services/maia/Skills/createSkill.js +0 -39
  86. package/lib/services/maia/Skills/deleteSkill.js +0 -38
  87. package/lib/services/maia/Skills/generateSkill.js +0 -41
  88. package/lib/services/maia/Skills/getSkills.js +0 -90
  89. package/lib/services/maia/Skills/updateSkill.js +0 -39
  90. package/lib/types/skill.js +0 -2
  91. package/lib/utils/contextMentionTriggers.js +0 -53
  92. package/lib/utils/corConnectorMentionTypes.js +0 -37
  93. package/lib/utils/normalizeAgentConnectors.js +0 -32
@@ -114,34 +114,34 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
114
114
  var handleSSEStream = useCallback(/*#__PURE__*/function () {
115
115
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response) {
116
116
  var _onErrorRef$current, _data$error, _data$error2;
117
- var pendingContent, rafId, emitThrottled, flushPending, _response$body, reader, decoder, buffer, accumulatedContent, hasStartedWriting, ensureWritingStarted, applyStreamChunk, applyStreamComplete, _yield$reader$read, done, value, lines, _iterator, _step, line, _line$split, _line$split2, eventLine, dataLine, eventType, dataStr, _data, chunk, _chunk, _onApprovalRequiredRe, isManualApproval, _onErrorRef$current2, _t, _t2, _t3, _t4;
117
+ var pendingContent, throttleTimer, emitThrottled, flushPending, _response$body, reader, decoder, buffer, accumulatedContent, hasStartedWriting, ensureWritingStarted, applyStreamChunk, applyStreamComplete, _yield$reader$read, done, value, lines, _iterator, _step, line, _line$split, _line$split2, eventLine, dataLine, eventType, dataStr, _data, chunk, _chunk, _onApprovalRequiredRe, isManualApproval, _onErrorRef$current2, _t, _t2, _t3, _t4;
118
118
  return _regeneratorRuntime.wrap(function (_context) {
119
119
  while (1) switch (_context.prev = _context.next) {
120
120
  case 0:
121
- // rAF-throttle: evita emitir onStreamUpdate más de una vez por frame.
122
- // Acumula el último valor y lo libera en el próximo requestAnimationFrame.
121
+ // Time-throttle: evita emitir onStreamUpdate más de una vez cada ~16ms.
122
+ // Usamos timer para que el stream siga pintando aunque rAF esté throttleado.
123
123
  // Nota: no tocamos el state `data` en el hot path (solo se actualiza en
124
124
  // `complete`/resets) para no re-renderizar a los consumidores del hook
125
125
  // en cada frame; el texto en vivo viaja por el streamingStore.
126
126
  pendingContent = null;
127
- rafId = null;
127
+ throttleTimer = null;
128
128
  emitThrottled = function emitThrottled(content) {
129
129
  pendingContent = content;
130
- if (rafId != null) return;
131
- rafId = requestAnimationFrame(function () {
132
- rafId = null;
130
+ if (throttleTimer != null) return;
131
+ throttleTimer = window.setTimeout(function () {
132
+ throttleTimer = null;
133
133
  if (pendingContent != null) {
134
134
  var _onStreamUpdateRef$cu;
135
135
  var toEmit = pendingContent;
136
136
  pendingContent = null;
137
137
  (_onStreamUpdateRef$cu = onStreamUpdateRef.current) === null || _onStreamUpdateRef$cu === void 0 || _onStreamUpdateRef$cu.call(onStreamUpdateRef, toEmit, null, '');
138
138
  }
139
- });
139
+ }, 16);
140
140
  };
141
141
  flushPending = function flushPending() {
142
- if (rafId != null) {
143
- cancelAnimationFrame(rafId);
144
- rafId = null;
142
+ if (throttleTimer != null) {
143
+ window.clearTimeout(throttleTimer);
144
+ throttleTimer = null;
145
145
  }
146
146
  if (pendingContent != null) {
147
147
  var _onStreamUpdateRef$cu2;
@@ -176,7 +176,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
176
176
  emitThrottled(accumulatedContent);
177
177
  };
178
178
  applyStreamComplete = function applyStreamComplete(payload) {
179
- var _payload$agent_id, _onFinishStreamRef$cu;
179
+ var _payload$agent_id, _subagentRaw$resolved, _onFinishStreamRef$cu;
180
180
  var finalContent = payload.content || accumulatedContent;
181
181
  var sources = payload.sources || null;
182
182
  var memorySessionId = payload.memory_session_id || '';
@@ -189,12 +189,14 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
189
189
  }
190
190
  var agentIdRaw = (_payload$agent_id = payload.agent_id) !== null && _payload$agent_id !== void 0 ? _payload$agent_id : payload.agentId;
191
191
  var completedAgentId = agentIdRaw != null && String(agentIdRaw).trim() !== '' ? String(agentIdRaw).trim() : null;
192
+ var subagentRaw = payload.subagent;
193
+ var resolvedContext = (_subagentRaw$resolved = subagentRaw === null || subagentRaw === void 0 ? void 0 : subagentRaw.resolved_context) !== null && _subagentRaw$resolved !== void 0 ? _subagentRaw$resolved : null;
192
194
  flushPending();
193
195
  setData(finalContent);
194
196
  setLoading(false);
195
197
  setIsWriting(false);
196
198
  clearStreamLoadingState();
197
- (_onFinishStreamRef$cu = onFinishStreamRef.current) === null || _onFinishStreamRef$cu === void 0 || _onFinishStreamRef$cu.call(onFinishStreamRef, finalContent, sources, memorySessionId, attachments, suggestions, completedAgentId);
199
+ (_onFinishStreamRef$cu = onFinishStreamRef.current) === null || _onFinishStreamRef$cu === void 0 || _onFinishStreamRef$cu.call(onFinishStreamRef, finalContent, sources, memorySessionId, attachments, suggestions, completedAgentId, resolvedContext);
198
200
  };
199
201
  case 3:
200
202
  if (!true) {
@@ -284,7 +286,12 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
284
286
  }
285
287
  return _context.abrupt("continue", 21);
286
288
  case 16:
287
- if (_data.message && typeof _data.message === 'string') {
289
+ // El orchestrator delegó a un subagente: NO lo exponemos. Mantenemos
290
+ // el indicador de actividad genérico de MAIA, sin anunciar la
291
+ // transferencia ni el nombre del subagente.
292
+ if (_data.node === 'agent_transfer') {
293
+ setLoading(true);
294
+ } else if (_data.message && typeof _data.message === 'string') {
288
295
  setLoading(true);
289
296
  applyStreamActivity(resolveHitlNodeStreamActivity(_data.message, t, hitlExecutionContextRef === null || hitlExecutionContextRef === void 0 ? void 0 : hitlExecutionContextRef.current, typeof _data.thread_id === 'string' ? _data.thread_id : undefined));
290
297
  }
@@ -374,11 +381,11 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
374
381
  }(), [applyStreamActivity, clearStreamLoadingState, hitlExecutionContextRef, t]);
375
382
  var askMaia = /*#__PURE__*/function () {
376
383
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref3) {
377
- var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, taskId, taskName, faqId, agentSuggestionId, fuaId, scId, agentEntity, contextMessage, contextData, _attachments$length, _abortControllerRef$c, initialActivity, response, _onErrorRef$current3, _t5;
384
+ var message, history, projectId, lang, userId, firstName, lastName, companyId, chatId, messageId, clientId, clientName, feeId, agentName, agentId, isWebSearchActive, isDeepSearchActive, attachments, projectName, taskId, taskName, faqId, agentSuggestionId, fuaId, scId, agentEntity, agentType, contextMessage, contextData, _attachments$length, _abortControllerRef$c, initialActivity, response, _onErrorRef$current3, _t5;
378
385
  return _regeneratorRuntime.wrap(function (_context2) {
379
386
  while (1) switch (_context2.prev = _context2.next) {
380
387
  case 0:
381
- message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, taskId = _ref3.taskId, taskName = _ref3.taskName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, fuaId = _ref3.fuaId, scId = _ref3.scId, agentEntity = _ref3.agentEntity, contextMessage = _ref3.contextMessage, contextData = _ref3.contextData;
388
+ message = _ref3.message, history = _ref3.history, projectId = _ref3.projectId, lang = _ref3.lang, userId = _ref3.userId, firstName = _ref3.firstName, lastName = _ref3.lastName, companyId = _ref3.companyId, chatId = _ref3.chatId, messageId = _ref3.messageId, clientId = _ref3.clientId, clientName = _ref3.clientName, feeId = _ref3.feeId, agentName = _ref3.agentName, agentId = _ref3.agentId, isWebSearchActive = _ref3.isWebSearchActive, isDeepSearchActive = _ref3.isDeepSearchActive, attachments = _ref3.attachments, projectName = _ref3.projectName, taskId = _ref3.taskId, taskName = _ref3.taskName, faqId = _ref3.faqId, agentSuggestionId = _ref3.agentSuggestionId, fuaId = _ref3.fuaId, scId = _ref3.scId, agentEntity = _ref3.agentEntity, agentType = _ref3.agentType, contextMessage = _ref3.contextMessage, contextData = _ref3.contextData;
382
389
  _context2.prev = 1;
383
390
  setLoading(true);
384
391
  setIsWriting(false);
@@ -395,7 +402,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
395
402
 
396
403
  abortControllerRef.current = new AbortController();
397
404
  _context2.next = 2;
398
- return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
405
+ return maia.Orchestrator.orchestrator(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
399
406
  input: message,
400
407
  history: history,
401
408
  lang: lang,
@@ -438,6 +445,8 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
438
445
  scId: scId
439
446
  } : {}), agentEntity != null ? {
440
447
  agentEntity: agentEntity
448
+ } : {}), agentType != null ? {
449
+ agentType: agentType
441
450
  } : {}), contextMessage ? {
442
451
  contextMessage: contextMessage
443
452
  } : {}), contextData ? {
@@ -539,4 +548,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
539
548
  handleSSEStream: handleSSEStream // Exponer para poder usarlo en continue-thread
540
549
  };
541
550
  };
542
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfb25FcnJvclJlZiRjdXJyZW50IiwiX2RhdGEkZXJyb3IiLCJfZGF0YSRlcnJvcjIiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiYXBwbHlTdHJlYW1Db21wbGV0ZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJfbGluZSRzcGxpdDIiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsImRhdGFTdHIiLCJfZGF0YSIsImNodW5rIiwiX2NodW5rIiwiX29uQXBwcm92YWxSZXF1aXJlZFJlIiwiaXNNYW51YWxBcHByb3ZhbCIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsIl9vblN0YXJ0V3JpdGluZ1JlZiRjdSIsInBheWxvYWQiLCJfcGF5bG9hZCRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiY29uc29sZSIsImVycm9yIiwidHlwZSIsIndhcm4iLCJlIiwiZiIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiYXNrTWFpYSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVmMyIsImhpc3RvcnkiLCJwcm9qZWN0SWQiLCJsYW5nIiwidXNlcklkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjaGF0SWQiLCJtZXNzYWdlSWQiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJmZWVJZCIsImFnZW50TmFtZSIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwicHJvamVjdE5hbWUiLCJ0YXNrSWQiLCJ0YXNrTmFtZSIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJmdWFJZCIsInNjSWQiLCJhZ2VudEVudGl0eSIsImNvbnRleHRNZXNzYWdlIiwiY29udGV4dERhdGEiLCJfYXR0YWNobWVudHMkbGVuZ3RoIiwiX2Fib3J0Q29udHJvbGxlclJlZiRjIiwiaW5pdGlhbEFjdGl2aXR5IiwiX29uRXJyb3JSZWYkY3VycmVudDMiLCJfdDUiLCJfY29udGV4dDIiLCJoYXNBdHRhY2htZW50cyIsIkJvb2xlYW4iLCJhdHRhY2htZW50c0NvdW50IiwiQWJvcnRDb250cm9sbGVyIiwiT3JjaGVzdHJhdG9yIiwib3JjaGVzdHJhdG9yIiwiX29iamVjdFNwcmVhZCIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMgfSBmcm9tICcuL3VzZU9yY2hlc3RyYXRvclN0cmVhbS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQge1xuICBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyxcbiAgYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSxcbiAgY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSxcbiAgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSxcbiAgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5LFxuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCwgbWVyZ2VTdHJlYW1DaHVuayB9IGZyb20gJy4uLy4uL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQnXG5cbmV4cG9ydCBjb25zdCB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gPSAoe1xuICBvblN0cmVhbVVwZGF0ZSxcbiAgb25GaW5pc2hTdHJlYW0sXG4gIG9uU3RhcnRXcml0aW5nLFxuICBvblN0b3AsXG4gIG9uRXJyb3IsXG4gIG9uQXBwcm92YWxSZXF1aXJlZCxcbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsXG59OiBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZSwgc2V0TG9hZGluZ01lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3N0cmVhbUFjdGl2aXR5LCBzZXRTdHJlYW1BY3Rpdml0eV0gPSB1c2VTdGF0ZTxTdHJlYW1BY3Rpdml0eSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmID0gdXNlUmVmKDApXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgIHNldFN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgfSwgW10pXG5cbiAgY29uc3QgYXBwbHlTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkpID0+IHtcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2Py5waGFzZSA9PT0gYWN0aXZpdHkucGhhc2UgJiYgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShhY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2Py5waGFzZSAhPT0gYWN0aXZpdHkucGhhc2UpIHtcbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICAgIH1cbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKGFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgICByZXR1cm4gYWN0aXZpdHlcbiAgICB9KVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNMb2FkaW5nIHx8IGlzV3JpdGluZyB8fCAhc3RyZWFtQWN0aXZpdHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKCFjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKHN0cmVhbUFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2V0U3RyZWFtQWN0aXZpdHkocHJldiA9PiB7XG4gICAgICAgIGlmICghcHJldiB8fCAhY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShwcmV2LnBoYXNlKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKHByZXYucGhhc2UsIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZHZhbmNlZCA9IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldiwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCwgdClcbiAgICAgICAgaWYgKCFhZHZhbmNlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IGFkdmFuY2VkLm5leHRJbmRleFxuICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShhZHZhbmNlZC5hY3Rpdml0eS5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gYWR2YW5jZWQuYWN0aXZpdHlcbiAgICAgIH0pXG4gICAgfSwgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMpXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZClcbiAgfSwgW2lzTG9hZGluZywgaXNXcml0aW5nLCBzdHJlYW1BY3Rpdml0eT8ucGhhc2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVNTRVN0cmVhbSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIHJBRi10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBwb3IgZnJhbWUuXG4gICAgICAvLyBBY3VtdWxhIGVsIMO6bHRpbW8gdmFsb3IgeSBsbyBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLlxuICAgICAgLy8gTm90YTogbm8gdG9jYW1vcyBlbCBzdGF0ZSBgZGF0YWAgZW4gZWwgaG90IHBhdGggKHNvbG8gc2UgYWN0dWFsaXphIGVuXG4gICAgICAvLyBgY29tcGxldGVgL3Jlc2V0cykgcGFyYSBubyByZS1yZW5kZXJpemFyIGEgbG9zIGNvbnN1bWlkb3JlcyBkZWwgaG9va1xuICAgICAgLy8gZW4gY2FkYSBmcmFtZTsgZWwgdGV4dG8gZW4gdml2byB2aWFqYSBwb3IgZWwgc3RyZWFtaW5nU3RvcmUuXG4gICAgICBsZXQgcGVuZGluZ0NvbnRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHJldHVyblxuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICAgICAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICAgICAgICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgIHNldElzV3JpdGluZyh0cnVlKVxuICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgICAgICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNvbXBsZXRlID0gKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBwYXlsb2FkLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChwYXlsb2FkLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5hdHRhY2htZW50cykgPyBwYXlsb2FkLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgICAgIGxldCBzdWdnZXN0aW9uczogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdF9yZXBseSkpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdXG4gICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW11cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IHBheWxvYWQuYWdlbnRfaWQgPz8gcGF5bG9hZC5hZ2VudElkXG4gICAgICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9XG4gICAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgc2V0RGF0YShmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgIGZpbmFsQ29udGVudCxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgICAgIGlmIChkYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGRhdGEudGhyZWFkX2lkID09PSAnc3RyaW5nJyA/IGRhdGEudGhyZWFkX2lkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWFudWFsQXBwcm92YWwgPSBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgaWYgKCFpc01hbnVhbEFwcHJvdmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZFJlZi5jdXJyZW50Py4oZGF0YSwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICAgICAgaWYgKGlzTWFudWFsQXBwcm92YWwgJiYgQXJyYXkuaXNBcnJheShkYXRhLnBlbmRpbmdfYWN0aW9ucykgJiYgZGF0YS5wZW5kaW5nX2FjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkocmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnQpKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZGF0YS5lcnJvcilcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbCkgLy8gTGltcGlhciBtZW5zYWplIGN1YW5kbyBoYXkgZXJyb3JcbiAgICAgICAgICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKGRhdGEuZXJyb3I/LnR5cGUsIGRhdGEuZXJyb3I/Lm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5rbm93biBTU0UgZXZlbnQgdHlwZTonLCBldmVudFR5cGUpXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcblxuICAgICAgICAvLyBTb2xvIGVqZWN1dGFyIG9uRXJyb3Igc2kgbm8gZnVlIHVuIHN0b3AgaW50ZW5jaW9uYWxcbiAgICAgICAgaWYgKCFpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eSwgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLCB0XVxuICApXG5cbiAgY29uc3QgYXNrTWFpYSA9IGFzeW5jICh7XG4gICAgbWVzc2FnZSxcbiAgICBoaXN0b3J5LFxuICAgIHByb2plY3RJZCxcbiAgICBsYW5nLFxuICAgIHVzZXJJZCxcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgY29tcGFueUlkLFxuICAgIGNoYXRJZCxcbiAgICBtZXNzYWdlSWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudE5hbWUsXG4gICAgYWdlbnRJZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYXR0YWNobWVudHMsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgdGFza0lkLFxuICAgIHRhc2tOYW1lLFxuICAgIGZhcUlkLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkLFxuICAgIGZ1YUlkLFxuICAgIHNjSWQsXG4gICAgYWdlbnRFbnRpdHksXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gICAgY29udGV4dERhdGEsXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICB0YXNrSWQ/OiBudW1iZXJcbiAgICB0YXNrTmFtZT86IHN0cmluZ1xuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5XG4gICAgY29udGV4dE1lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHM/Lmxlbmd0aCksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IGF0dGFjaG1lbnRzPy5sZW5ndGggPz8gMCxcbiAgICAgIH0pXG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudD8uc2lnbmFsXG4gICAgICApXG5cbiAgICAgIGF3YWl0IGhhbmRsZVNTRVN0cmVhbShyZXNwb25zZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2kgZnVlIHVuIGFib3J0IGludGVuY2lvbmFsIChzdG9wIG1hbnVhbCBvIGNhbWJpbyBkZSBjaGF0KSwgbm8gZGlzcGFyYXIgb25FcnJvclxuICAgICAgLy8gcG9ycXVlIGVzbyBpbnNlcnRhIHVuIFwibWVuc2FqZSBkZSBlcnJvclwiIGVuIGVsIGNoYXQgYWwgcXVlIGFjYWJhbW9zIGRlIG5hdmVnYXIuXG4gICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgIH1cbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcFN0cmVhbWluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlU3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKCFhY3Rpdml0eSkge1xuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIHNldERhdGEobnVsbClcbiAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUt0QyxTQUFTQyxRQUFRLFFBQVEsd0JBQXdCO0FBRWpELFNBQ0VDLDBCQUEwQixFQUMxQkMsNEJBQTRCLEVBQzVCQywrQkFBK0IsRUFDL0JDLDRCQUE0QixFQUM1QkMsd0JBQXdCLEVBQ3hCQyx5QkFBeUIsRUFDekJDLHdCQUF3QixFQUN4QkMsNkJBQTZCLEVBQzdCQyxnQ0FBZ0MsUUFDM0Isb0NBQW9DO0FBQzNDLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFFekYsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFBQyxJQUFBLEVBUUE7RUFBQSxJQVBoQ0MsY0FBYyxHQUFBRCxJQUFBLENBQWRDLGNBQWM7SUFDZEMsY0FBYyxHQUFBRixJQUFBLENBQWRFLGNBQWM7SUFDZEMsY0FBYyxHQUFBSCxJQUFBLENBQWRHLGNBQWM7SUFDZEMsTUFBTSxHQUFBSixJQUFBLENBQU5JLE1BQU07SUFDTkMsT0FBTyxHQUFBTCxJQUFBLENBQVBLLE9BQU87SUFDUEMsa0JBQWtCLEdBQUFOLElBQUEsQ0FBbEJNLGtCQUFrQjtJQUNsQkMsdUJBQXVCLEdBQUFQLElBQUEsQ0FBdkJPLHVCQUF1QjtFQUV2QixJQUFBQyxlQUFBLEdBQWN2QixjQUFjLENBQUMsQ0FBQ0UsUUFBUSxDQUFDc0IsTUFBTSxDQUFDLENBQUM7SUFBdkNDLENBQUMsR0FB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TyxHQUFHLElBQUk7TUFDM0JULGtCQUFrQixDQUFDUyxPQUFPLENBQUN5SyxLQUFLLENBQUMsQ0FBQztNQUNsQ2xMLGtCQUFrQixDQUFDUyxPQUFPLEdBQUcsSUFBSTtNQUNqQ3RCLFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakJJLFlBQVksQ0FBQyxLQUFLLENBQUM7TUFDbkJtQix1QkFBdUIsQ0FBQyxDQUFDO0lBQzNCO0VBQ0YsQ0FBQyxFQUFFLENBQUNBLHVCQUF1QixDQUFDLENBQUM7O0VBRTdCO0VBQ0E7RUFDQTtFQUNBMUQsU0FBUyxDQUFDLFlBQU07SUFDZCxPQUFPLFlBQU07TUFDWCxJQUFJZ0Qsa0JBQWtCLENBQUNTLE9BQU8sRUFBRTtRQUM5QlQsa0JBQWtCLENBQUNTLE9BQU8sQ0FBQ3lLLEtBQUssQ0FBQyxDQUFDO1FBQ2xDbEwsa0JBQWtCLENBQUNTLE9BQU8sR0FBRyxJQUFJO01BQ25DO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNMkssb0JBQW9CLEdBQUd0TyxXQUFXLENBQ3RDLFVBQUM4RCxRQUErQixFQUFLO0lBQ25DLElBQUksQ0FBQ0EsUUFBUSxFQUFFO01BQ2JGLHVCQUF1QixDQUFDLENBQUM7TUFDekI7SUFDRjtJQUNBQyxtQkFBbUIsQ0FBQ0MsUUFBUSxDQUFDO0VBQy9CLENBQUMsRUFDRCxDQUFDRCxtQkFBbUIsRUFBRUQsdUJBQXVCLENBQy9DLENBQUM7RUFFRCxJQUFNMkssS0FBSyxHQUFHLFNBQVJBLEtBQUtBLENBQUEsRUFBUztJQUNsQnRNLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDYkksVUFBVSxDQUFDLEtBQUssQ0FBQztJQUNqQkksWUFBWSxDQUFDLEtBQUssQ0FBQztJQUNuQm1CLHVCQUF1QixDQUFDLENBQUM7SUFDekJULFlBQVksQ0FBQ1EsT0FBTyxHQUFHLEtBQUs7RUFDOUIsQ0FBQztFQUVELE9BQU87SUFDTDBILE9BQU8sRUFBUEEsT0FBTztJQUNQdEcsUUFBUSxFQUFFL0MsSUFBSTtJQUNkSSxTQUFTLEVBQVRBLFNBQVM7SUFDVEksU0FBUyxFQUFUQSxTQUFTO0lBQ1RJLGNBQWMsRUFBZEEsY0FBYztJQUNkSSxjQUFjLEVBQWRBLGNBQWM7SUFDZHNMLG9CQUFvQixFQUFwQkEsb0JBQW9CO0lBQ3BCQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEwsYUFBYSxFQUFiQSxhQUFhO0lBQ2JHLG1CQUFtQixFQUFuQkEsbUJBQW1CO0lBQ25CNUosZUFBZSxFQUFmQSxlQUFlLENBQUU7RUFDbkIsQ0FBQztBQUNILENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
551
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfb25FcnJvclJlZiRjdXJyZW50IiwiX2RhdGEkZXJyb3IiLCJfZGF0YSRlcnJvcjIiLCJwZW5kaW5nQ29udGVudCIsInRocm90dGxlVGltZXIiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaGFzU3RhcnRlZFdyaXRpbmciLCJlbnN1cmVXcml0aW5nU3RhcnRlZCIsImFwcGx5U3RyZWFtQ2h1bmsiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsIl9kYXRhIiwiY2h1bmsiLCJfY2h1bmsiLCJfb25BcHByb3ZhbFJlcXVpcmVkUmUiLCJpc01hbnVhbEFwcHJvdmFsIiwiX29uRXJyb3JSZWYkY3VycmVudDIiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJjb250ZW50Iiwic2V0VGltZW91dCIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjbGVhclRpbWVvdXQiLCJfb25TdHJlYW1VcGRhdGVSZWYkY3UyIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfb25TdGFydFdyaXRpbmdSZWYkY3UiLCJwYXlsb2FkIiwiX3BheWxvYWQkYWdlbnRfaWQiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfb25GaW5pc2hTdHJlYW1SZWYkY3UiLCJmaW5hbENvbnRlbnQiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwibm9kZSIsInRocmVhZF9pZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdfYWN0aW9ucyIsImxlbmd0aCIsImNvbnNvbGUiLCJlcnJvciIsInR5cGUiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImNvbnRleHREYXRhIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsIl9vYmplY3RTcHJlYWQiLCJpbnB1dCIsInNpZ25hbCIsIl94MiIsInN0b3BTdHJlYW1pbmciLCJfb25TdG9wUmVmJGN1cnJlbnQiLCJhYm9ydCIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJ1cGRhdGVTdHJlYW1BY3Rpdml0eSIsInJlc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBDaGF0SGlzdG9yeSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBBZ2VudEVudGl0eSwgQWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMsIFJlc29sdmVkQ29udGV4dCB9IGZyb20gJy4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtLmludGVyZmFjZSdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi8uLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB7XG4gIEFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TLFxuICBhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlLFxuICBjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlLFxuICBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlLFxuICBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHksXG4gIGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UsXG4gIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcblxudHlwZSBTdWJhZ2VudFJhdyA9IHsgbmFtZT86IHN0cmluZzsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfSB8IG51bGwgfCB1bmRlZmluZWRcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxuICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbn06IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlLCBzZXRMb2FkaW5nTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc3RyZWFtQWN0aXZpdHksIHNldFN0cmVhbUFjdGl2aXR5XSA9IHVzZVN0YXRlPFN0cmVhbUFjdGl2aXR5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmPEFib3J0Q29udHJvbGxlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzU3RvcHBlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYgPSB1c2VSZWYoMClcblxuICBjb25zdCBvblN0cmVhbVVwZGF0ZVJlZiA9IHVzZVJlZihvblN0cmVhbVVwZGF0ZSlcbiAgY29uc3Qgb25GaW5pc2hTdHJlYW1SZWYgPSB1c2VSZWYob25GaW5pc2hTdHJlYW0pXG4gIGNvbnN0IG9uU3RhcnRXcml0aW5nUmVmID0gdXNlUmVmKG9uU3RhcnRXcml0aW5nKVxuICBjb25zdCBvblN0b3BSZWYgPSB1c2VSZWYob25TdG9wKVxuICBjb25zdCBvbkVycm9yUmVmID0gdXNlUmVmKG9uRXJyb3IpXG4gIGNvbnN0IG9uQXBwcm92YWxSZXF1aXJlZFJlZiA9IHVzZVJlZihvbkFwcHJvdmFsUmVxdWlyZWQpXG5cbiAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudCA9IG9uU3RyZWFtVXBkYXRlXG4gIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQgPSBvbkZpbmlzaFN0cmVhbVxuICBvblN0YXJ0V3JpdGluZ1JlZi5jdXJyZW50ID0gb25TdGFydFdyaXRpbmdcbiAgb25TdG9wUmVmLmN1cnJlbnQgPSBvblN0b3BcbiAgb25FcnJvclJlZi5jdXJyZW50ID0gb25FcnJvclxuICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudCA9IG9uQXBwcm92YWxSZXF1aXJlZFxuXG4gIGNvbnN0IGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgc2V0U3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICB9LCBbXSlcblxuICBjb25zdCBhcHBseVN0cmVhbUFjdGl2aXR5ID0gdXNlQ2FsbGJhY2soKGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSkgPT4ge1xuICAgIHNldFN0cmVhbUFjdGl2aXR5KHByZXYgPT4ge1xuICAgICAgaWYgKHByZXY/LnBoYXNlID09PSBhY3Rpdml0eS5waGFzZSAmJiBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKGFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgICByZXR1cm4gcHJldlxuICAgICAgfVxuICAgICAgaWYgKHByZXY/LnBoYXNlICE9PSBhY3Rpdml0eS5waGFzZSkge1xuICAgICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgfVxuICAgICAgc2V0TG9hZGluZ01lc3NhZ2UoYWN0aXZpdHkubWVzc2FnZSlcbiAgICAgIHJldHVybiBhY3Rpdml0eVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0xvYWRpbmcgfHwgaXNXcml0aW5nIHx8ICFzdHJlYW1BY3Rpdml0eSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBpZiAoIWNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2Uoc3RyZWFtQWN0aXZpdHkucGhhc2UpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzZXRTdHJlYW1BY3Rpdml0eShwcmV2ID0+IHtcbiAgICAgICAgaWYgKCFwcmV2IHx8ICFjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKHByZXYucGhhc2UpKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldi5waGFzZSwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFkdmFuY2VkID0gYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50LCB0KVxuICAgICAgICBpZiAoIWFkdmFuY2VkKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gYWR2YW5jZWQubmV4dEluZGV4XG4gICAgICAgIHNldExvYWRpbmdNZXNzYWdlKGFkdmFuY2VkLmFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgICAgIHJldHVybiBhZHZhbmNlZC5hY3Rpdml0eVxuICAgICAgfSlcbiAgICB9LCBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUylcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKVxuICB9LCBbaXNMb2FkaW5nLCBpc1dyaXRpbmcsIHN0cmVhbUFjdGl2aXR5Py5waGFzZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlU1NFU3RyZWFtID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgLy8gVGltZS10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBjYWRhIH4xNm1zLlxuICAgICAgLy8gVXNhbW9zIHRpbWVyIHBhcmEgcXVlIGVsIHN0cmVhbSBzaWdhIHBpbnRhbmRvIGF1bnF1ZSByQUYgZXN0w6kgdGhyb3R0bGVhZG8uXG4gICAgICAvLyBOb3RhOiBubyB0b2NhbW9zIGVsIHN0YXRlIGBkYXRhYCBlbiBlbCBob3QgcGF0aCAoc29sbyBzZSBhY3R1YWxpemEgZW5cbiAgICAgIC8vIGBjb21wbGV0ZWAvcmVzZXRzKSBwYXJhIG5vIHJlLXJlbmRlcml6YXIgYSBsb3MgY29uc3VtaWRvcmVzIGRlbCBob29rXG4gICAgICAvLyBlbiBjYWRhIGZyYW1lOyBlbCB0ZXh0byBlbiB2aXZvIHZpYWphIHBvciBlbCBzdHJlYW1pbmdTdG9yZS5cbiAgICAgIGxldCBwZW5kaW5nQ29udGVudDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgICAgIGxldCB0aHJvdHRsZVRpbWVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHJldHVyblxuICAgICAgICB0aHJvdHRsZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTYpXG4gICAgICB9XG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICAgICAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICAgICAgICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgIHNldElzV3JpdGluZyh0cnVlKVxuICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgICAgICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNvbXBsZXRlID0gKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBwYXlsb2FkLnNvdXJjZXMgfHwgbnVsbFxuICAgICAgICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChwYXlsb2FkLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5hdHRhY2htZW50cykgPyBwYXlsb2FkLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgICAgICAgIGxldCBzdWdnZXN0aW9uczogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdF9yZXBseSkpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdXG4gICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW11cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWdlbnRJZFJhdyA9IHBheWxvYWQuYWdlbnRfaWQgPz8gcGF5bG9hZC5hZ2VudElkXG4gICAgICAgICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9XG4gICAgICAgICAgICBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgICAgICAgIGNvbnN0IHN1YmFnZW50UmF3ID0gcGF5bG9hZC5zdWJhZ2VudCBhcyBTdWJhZ2VudFJhd1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkQ29udGV4dCA9IHN1YmFnZW50UmF3Py5yZXNvbHZlZF9jb250ZXh0ID8/IG51bGxcbiAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgIHNldERhdGEoZmluYWxDb250ZW50KVxuICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50Py4oXG4gICAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEFnZW50SWQsXG4gICAgICAgICAgICByZXNvbHZlZENvbnRleHRcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndGhpbmtpbmcnOlxuICAgICAgICAgICAgICAgICAgaWYgKCFoYXNTdGFydGVkV3JpdGluZykge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgIHBoYXNlOiAndGhpbmtpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAndG9rZW4nOiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgICAgICAgICAvLyBFbCBvcmNoZXN0cmF0b3IgZGVsZWfDsyBhIHVuIHN1YmFnZW50ZTogTk8gbG8gZXhwb25lbW9zLiBNYW50ZW5lbW9zXG4gICAgICAgICAgICAgICAgICAvLyBlbCBpbmRpY2Fkb3IgZGUgYWN0aXZpZGFkIGdlbsOpcmljbyBkZSBNQUlBLCBzaW4gYW51bmNpYXIgbGFcbiAgICAgICAgICAgICAgICAgIC8vIHRyYW5zZmVyZW5jaWEgbmkgZWwgbm9tYnJlIGRlbCBzdWJhZ2VudGUuXG4gICAgICAgICAgICAgICAgICBpZiAoZGF0YS5ub2RlID09PSAnYWdlbnRfdHJhbnNmZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5tZXNzYWdlICYmIHR5cGVvZiBkYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBkYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBkYXRhLnRocmVhZF9pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdhcHByb3ZhbF9yZXF1aXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGlmIChpc01hbnVhbEFwcHJvdmFsICYmIEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpICYmIGRhdGEucGVuZGluZ19hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50KSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gaGF5IGVycm9yXG4gICAgICAgICAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiwgdF1cbiAgKVxuXG4gIGNvbnN0IGFza01haWEgPSBhc3luYyAoe1xuICAgIG1lc3NhZ2UsXG4gICAgaGlzdG9yeSxcbiAgICBwcm9qZWN0SWQsXG4gICAgbGFuZyxcbiAgICB1c2VySWQsXG4gICAgZmlyc3ROYW1lLFxuICAgIGxhc3ROYW1lLFxuICAgIGNvbXBhbnlJZCxcbiAgICBjaGF0SWQsXG4gICAgbWVzc2FnZUlkLFxuICAgIGNsaWVudElkLFxuICAgIGNsaWVudE5hbWUsXG4gICAgZmVlSWQsXG4gICAgYWdlbnROYW1lLFxuICAgIGFnZW50SWQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIHByb2plY3ROYW1lLFxuICAgIHRhc2tJZCxcbiAgICB0YXNrTmFtZSxcbiAgICBmYXFJZCxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICBmdWFJZCxcbiAgICBzY0lkLFxuICAgIGFnZW50RW50aXR5LFxuICAgIGFnZW50VHlwZSxcbiAgICBjb250ZXh0TWVzc2FnZSxcbiAgICBjb250ZXh0RGF0YSxcbiAgfToge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGhpc3Rvcnk6IENoYXRIaXN0b3J5W11cbiAgICBwcm9qZWN0SWQ6IG51bWJlciB8IG51bGxcbiAgICBsYW5nOiBzdHJpbmdcbiAgICB1c2VySWQ6IHN0cmluZ1xuICAgIGZpcnN0TmFtZT86IHN0cmluZ1xuICAgIGxhc3ROYW1lPzogc3RyaW5nXG4gICAgY29tcGFueUlkOiBzdHJpbmdcbiAgICBjaGF0SWQ6IHN0cmluZ1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nXG4gICAgY2xpZW50SWQ/OiBudW1iZXJcbiAgICBjbGllbnROYW1lPzogc3RyaW5nXG4gICAgZmVlSWQ/OiBudW1iZXJcbiAgICBhZ2VudE5hbWU6IHN0cmluZ1xuICAgIGFnZW50SWQ6IHN0cmluZ1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICAgIHRhc2tJZD86IG51bWJlclxuICAgIHRhc2tOYW1lPzogc3RyaW5nXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGFnZW50RW50aXR5PzogQWdlbnRFbnRpdHlcbiAgICBhZ2VudFR5cGU/OiBBZ2VudFR5cGVcbiAgICBjb250ZXh0TWVzc2FnZT86IENvbnRleHRNZXNzYWdlXG4gICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIHNldERhdGEobnVsbClcbiAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgICBjb25zdCBpbml0aWFsQWN0aXZpdHkgPSBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwge1xuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgICBoYXNBdHRhY2htZW50czogQm9vbGVhbihhdHRhY2htZW50cz8ubGVuZ3RoKSxcbiAgICAgICAgYXR0YWNobWVudHNDb3VudDogYXR0YWNobWVudHM/Lmxlbmd0aCA/PyAwLFxuICAgICAgfSlcbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoaW5pdGlhbEFjdGl2aXR5KVxuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZSAvLyBSZXNldGVhciBmbGFnIGFsIGluaWNpYXIgbnVldmEgcGV0aWNpw7NuXG5cbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKFxuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQ6IG1lc3NhZ2UsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBsYW5nLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICAuLi4oZmlyc3ROYW1lID8geyBmaXJzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4obGFzdE5hbWUgPyB7IGxhc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgY29tcGFueUlkLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgLi4uKGZlZUlkICE9IG51bGwgPyB7IGZlZUlkIH0gOiB7fSksXG4gICAgICAgICAgYWdlbnROYW1lLFxuICAgICAgICAgIGFnZW50SWQsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIC4uLihwcm9qZWN0SWQgPyB7IHByb2plY3RJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhdHRhY2htZW50cyA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ocHJvamVjdE5hbWUgPyB7IHByb2plY3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNsaWVudE5hbWUgPyB7IGNsaWVudE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza0lkICE9IG51bGwgPyB7IHRhc2tJZCB9IDoge30pLFxuICAgICAgICAgIC4uLih0YXNrTmFtZSA/IHsgdGFza05hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAgIC4uLihmdWFJZCA/IHsgZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudEVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNvbnRleHRNZXNzYWdlID8geyBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQ/LnNpZ25hbFxuICAgICAgKVxuXG4gICAgICBhd2FpdCBoYW5kbGVTU0VTdHJlYW0ocmVzcG9uc2UpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFNpIGZ1ZSB1biBhYm9ydCBpbnRlbmNpb25hbCAoc3RvcCBtYW51YWwgbyBjYW1iaW8gZGUgY2hhdCksIG5vIGRpc3BhcmFyIG9uRXJyb3JcbiAgICAgIC8vIHBvcnF1ZSBlc28gaW5zZXJ0YSB1biBcIm1lbnNhamUgZGUgZXJyb3JcIiBlbiBlbCBjaGF0IGFsIHF1ZSBhY2FiYW1vcyBkZSBuYXZlZ2FyLlxuICAgICAgaWYgKCFpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICB9XG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0b3BTdHJlYW1pbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIG9uU3RvcFJlZi5jdXJyZW50Py4oKVxuICAgIH1cbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXSlcblxuICAvKipcbiAgICogQWJvcnRhIGVsIHN0cmVhbSBlbiBjdXJzbyAoc2kgZXhpc3RlKSBzaW4gZGlzcGFyYXIgYG9uU3RvcGAuXG4gICAqIMOac2VsbyBlbiBjYXNvcyBkb25kZSBubyBxdWVyZW1vcyBhZ3JlZ2FyIGVsIG1lbnNhamUgZGUgXCJjYW5jZWxhZG9cIlxuICAgKiAocG9yIGVqZW1wbG8sIGFsIGNhbWJpYXIgZGUgY2hhdCkuXG4gICAqL1xuICBjb25zdCBhYm9ydFN0cmVhbVNpbGVudGx5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgfVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdKVxuXG4gIC8vIENsZWFudXAgYWwgZGVzbW9udGFyOiBzaSBxdWVkYSB1biBzdHJlYW0gYWN0aXZvLCBhYm9ydGFybG8gcGFyYSBldml0YXJcbiAgLy8gcXVlIGludGVudGUgYWN0dWFsaXphciBlc3RhZG8gZW4gdW4gY29tcG9uZW50ZSB5YSBkZXNtb250YWRvIChmdWdhcyBkZVxuICAvLyBtZW1vcmlhIHkgd2FybmluZ3MpLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZVN0cmVhbUFjdGl2aXR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGwpID0+IHtcbiAgICAgIGlmICghYWN0aXZpdHkpIHtcbiAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpXG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eSwgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdXG4gIClcblxuICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICBzZXREYXRhKG51bGwpXG4gICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXNrTWFpYSxcbiAgICByZXNwb25zZTogZGF0YSxcbiAgICBpc0xvYWRpbmcsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5LFxuICAgIHJlc2V0LFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gICAgYWJvcnRTdHJlYW1TaWxlbnRseSxcbiAgICBoYW5kbGVTU0VTdHJlYW0sIC8vIEV4cG9uZXIgcGFyYSBwb2RlciB1c2FybG8gZW4gY29udGludWUtdGhyZWFkXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFLdEMsU0FBU0MsUUFBUSxRQUFRLHdCQUF3QjtBQUVqRCxTQUNFQywwQkFBMEIsRUFDMUJDLDRCQUE0QixFQUM1QkMsK0JBQStCLEVBQy9CQyw0QkFBNEIsRUFDNUJDLHdCQUF3QixFQUN4QkMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLFFBQzNCLG9DQUFvQztBQUMzQyxTQUFTQyx3QkFBd0IsRUFBRUMsZ0JBQWdCLFFBQVEsOEJBQThCO0FBSXpGLE9BQU8sSUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBQUMsSUFBQSxFQVFBO0VBQUEsSUFQaENDLGNBQWMsR0FBQUQsSUFBQSxDQUFkQyxjQUFjO0lBQ2RDLGNBQWMsR0FBQUYsSUFBQSxDQUFkRSxjQUFjO0lBQ2RDLGNBQWMsR0FBQUgsSUFBQSxDQUFkRyxjQUFjO0lBQ2RDLE1BQU0sR0FBQUosSUFBQSxDQUFOSSxNQUFNO0lBQ05DLE9BQU8sR0FBQUwsSUFBQSxDQUFQSyxPQUFPO0lBQ1BDLGtCQUFrQixHQUFBTixJQUFBLENBQWxCTSxrQkFBa0I7SUFDbEJDLHVCQUF1QixHQUFBUCxJQUFBLENBQXZCTyx1QkFBdUI7RUFFdkIsSUFBQUMsZUFBQSxHQUFjdkIsY0FBYyxDQUFDLENBQUNFLFFBQVEsQ0FBQ3NCLE1BQU0sQ0FBQyxDQUFDO0lBQXZDQyxDQUFDLEdBQUFGLGVBQUEsQ0FBREUs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
@@ -6,7 +6,6 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
6
6
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
7
  import { useLazyQuery } from '@apollo/client';
8
8
  import { useEffect, useState, useCallback } from 'react';
9
- import maia from '../services/maia';
10
9
  import { SEARCH_PROJECTS } from '../services/query/projectSearchByValueQuery';
11
10
  import { SEARCH_QUERY_DEBOUNCE_MS } from '../constants/config';
12
11
  import { useDebounce } from './useDebounce';
@@ -109,39 +108,16 @@ export var useProjectSearch = function useProjectSearch() {
109
108
  recentError = _useState14[0],
110
109
  setRecentError = _useState14[1];
111
110
  var fetchRecentProjectsWithLoading = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
112
- var data, _t;
113
111
  return _regeneratorRuntime.wrap(function (_context) {
114
112
  while (1) switch (_context.prev = _context.next) {
115
113
  case 0:
116
- setLoading(true);
117
- setError(false);
118
- setRecentError(false);
119
- setIsQueryInProgress(true);
120
- setLoadingRecentProjects(true);
121
- _context.prev = 1;
122
- _context.next = 2;
123
- return maia.RecentProjects.getRecentProjects({
124
- corEvents: true
125
- });
126
- case 2:
127
- data = _context.sent;
128
- setRecentProjectsData(Array.isArray(data) ? data : []);
129
- _context.next = 4;
130
- break;
131
- case 3:
132
- _context.prev = 3;
133
- _t = _context["catch"](1);
134
- setRecentError(true);
135
- setRecentProjectsData(null);
136
- case 4:
137
- _context.prev = 4;
114
+ setRecentProjectsData([]);
138
115
  setLoadingRecentProjects(false);
139
- return _context.finish(4);
140
- case 5:
116
+ case 1:
141
117
  case "end":
142
118
  return _context.stop();
143
119
  }
144
- }, _callee, null, [[1, 3, 4, 5]]);
120
+ }, _callee);
145
121
  })), []);
146
122
  var _useLazyQuery = useLazyQuery(SEARCH_PROJECTS, {
147
123
  variables: {
@@ -205,4 +181,4 @@ export var useProjectSearch = function useProjectSearch() {
205
181
  updateSearchValue: updateSearchValue
206
182
  };
207
183
  };
208
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwibWFpYSIsIlNFQVJDSF9QUk9KRUNUUyIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwiVFlQRV9QUk9KRUNUIiwicHJvamVjdCIsImFyY2hpdmVkIiwibWFwcGVyUHJvamVjdHNTZWFyY2giLCJ2YWx1ZXMiLCJtYXAiLCJ2YWx1ZSIsIl92YWx1ZSRjbGllbnRJZCIsIl92YWx1ZSRmZWVJZCIsImlkIiwidGl0bGUiLCJjbGllbnROYW1lIiwicHJvZHVjdE5hbWUiLCJicmFuZE5hbWUiLCJpbmNvbWVUeXBlIiwiY2xpZW50SWQiLCJmZWVJZCIsIkRhdGFQYXJzZWRUb1Byb2plY3RzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwicHJvamVjdHMiLCJzZXRQcm9qZWN0cyIsInNldHRlckRhdGEiLCJhcmdzIiwic2VhcmNoVmFsdWUiLCJsZW5ndGgiLCJhcmciLCJfYXJnJGNsaWVudE5hbWUiLCJwcm9qZWN0TmFtZSIsInRpdGxlSGlnaGxpZ2h0IiwidG9Mb2NhbGVMb3dlckNhc2UiLCJpbmNsdWRlcyIsInRleHRJbmRleCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInN0YXJ0IiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJjbGllbnQiLCJ1c2VQcm9qZWN0U2VhcmNoIiwiX0RhdGFQYXJzZWRUb1Byb2plY3RzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2V0U2VhcmNoVmFsdWUiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImlzUXVlcnlJblByb2dyZXNzIiwic2V0SXNRdWVyeUluUHJvZ3Jlc3MiLCJkZWJvdW5jZWRTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInJlY2VudFByb2plY3RzRGF0YSIsInNldFJlY2VudFByb2plY3RzRGF0YSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJsb2FkaW5nUmVjZW50UHJvamVjdHMiLCJzZXRMb2FkaW5nUmVjZW50UHJvamVjdHMiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwicmVjZW50RXJyb3IiLCJzZXRSZWNlbnRFcnJvciIsImZldGNoUmVjZW50UHJvamVjdHNXaXRoTG9hZGluZyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZGF0YSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFByb2plY3RzIiwiY29yRXZlbnRzIiwic2VudCIsIkFycmF5IiwiaXNBcnJheSIsImZpbmlzaCIsInN0b3AiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJfdXNlTGF6eVF1ZXJ5MiIsImZldGNoU2VhcmNoUHJvamVjdHMiLCJfdXNlTGF6eVF1ZXJ5MiQiLCJzZWFyY2hEYXRhIiwibG9hZGluZ1NlYXJjaFByb2plY3RzIiwic2VhcmNoRXJyb3IiLCJoYW5kbGVGZXRjaFNlYXJjaFByb2plY3RzIiwicSIsImZpbHRlcnMiLCJKU09OIiwic3RyaW5naWZ5Iiwic2VhcmNoIiwidHJpbSIsIm1hcHBlZFByb2plY3RzIiwidXBkYXRlU2VhcmNoVmFsdWUiLCJuZXdTZWFyY2hWYWx1ZSIsImZldGNoUmVjZW50UHJvamVjdHMiLCJyZWNlbnRQcm9qZWN0c0xvYWRpbmciLCJyZWNlbnRQcm9qZWN0c0Vycm9yIiwicmVjZW50UHJvamVjdHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlUHJvamVjdFNlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VMYXp5UXVlcnkgfSBmcm9tICdAYXBvbGxvL2NsaWVudCdcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgU0VBUkNIX1BST0pFQ1RTIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvcHJvamVjdFNlYXJjaEJ5VmFsdWVRdWVyeSdcbmltcG9ydCB7IFNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZSB9IGZyb20gJy4vdXNlRGVib3VuY2UnXG5cbmV4cG9ydCB0eXBlIFByb2plY3RHcmFwaFFMID0ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIHRpdGxlOiBzdHJpbmdcbiAgY2xpZW50TmFtZT86IHN0cmluZyB8IG51bGxcbiAgcHJvZHVjdE5hbWU/OiBzdHJpbmdcbiAgYnJhbmROYW1lPzogc3RyaW5nXG4gIGluY29tZVR5cGU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBQcm9qZWN0U2V0dGVyID0ge1xuICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICB0aXRsZTogc3RyaW5nXG4gIC8qKiBSYW5nbyBkZWwgdMOpcm1pbm8gYnVzY2FkbyBkZW50cm8gZGUgYHRpdGxlYCAoc29sbyByZXN1bHRhZG9zIGRlIGLDunNxdWVkYSkgKi9cbiAgdGl0bGVIaWdobGlnaHQ/OiB7IHN0YXJ0OiBudW1iZXI7IGxlbmd0aDogbnVtYmVyIH1cbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBjbGllbnQ/OiB7XG4gICAgbmFtZTogc3RyaW5nIHwgbnVsbFxuICB9XG4gIHByb2R1Y3ROYW1lPzogc3RyaW5nXG4gIGJyYW5kTmFtZT86IHN0cmluZ1xuICBpbmNvbWVUeXBlPzogc3RyaW5nXG59XG5cbnR5cGUgUHJvamVjdFNlYXJjaFJlc3VsdCA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICB0aXRsZTogc3RyaW5nXG4gIHR5cGU6IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlciB8IHN0cmluZyB8IG51bGxcbiAgZmVlSWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGNsaWVudE5hbWU6IHN0cmluZ1xuICBicmFuZE5hbWU6IHN0cmluZ1xuICBwcm9kdWN0TmFtZTogc3RyaW5nXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgc3RhdHVzOiBzdHJpbmdcbiAgZGVhZGxpbmU6IHN0cmluZ1xuICBkYXRldGltZTogc3RyaW5nXG4gIGFyY2hpdmVkOiBib29sZWFuXG4gIF9fdHlwZW5hbWU6IHN0cmluZ1xufVxuXG50eXBlIFF1ZXJ5U2VhcmNoUHJvamVjdERhdGEgPSB7IHNlYXJjaDogUHJvamVjdFNlYXJjaFJlc3VsdFtdIHwgbnVsbCB9XG5cbmNvbnN0IFRZUEVfUFJPSkVDVCA9IHsgcHJvamVjdDogJ3RydWUnLCBhcmNoaXZlZDogJ2FsbCcgfVxuXG5jb25zdCBtYXBwZXJQcm9qZWN0c1NlYXJjaCA9ICh2YWx1ZXM6IFByb2plY3RTZWFyY2hSZXN1bHRbXSk6IFByb2plY3RHcmFwaFFMW10gPT4ge1xuICByZXR1cm4gdmFsdWVzPy5tYXAodmFsdWUgPT4gKHtcbiAgICBpZDogdmFsdWUuaWQsXG4gICAgdGl0bGU6IHZhbHVlLnRpdGxlLFxuICAgIGNsaWVudE5hbWU6IHZhbHVlLmNsaWVudE5hbWUsXG4gICAgcHJvZHVjdE5hbWU6IHZhbHVlLnByb2R1Y3ROYW1lLFxuICAgIGJyYW5kTmFtZTogdmFsdWUuYnJhbmROYW1lLFxuICAgIGluY29tZVR5cGU6ICcnLFxuICAgIGNsaWVudElkOiB2YWx1ZS5jbGllbnRJZCA/PyBudWxsLFxuICAgIGZlZUlkOiB2YWx1ZS5mZWVJZCA/PyBudWxsLFxuICB9KSlcbn1cblxuZXhwb3J0IGNvbnN0IERhdGFQYXJzZWRUb1Byb2plY3RzID0gKCkgPT4ge1xuICBjb25zdCBbcHJvamVjdHMsIHNldFByb2plY3RzXSA9IHVzZVN0YXRlPFByb2plY3RTZXR0ZXJbXT4oW10pXG4gIGNvbnN0IHNldHRlckRhdGEgPSAoYXJnczogUHJvamVjdEdyYXBoUUxbXSwgc2VhcmNoVmFsdWU/OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICBzZXRQcm9qZWN0cyhbXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0UHJvamVjdHMoXG4gICAgICAgIGFyZ3MubWFwKGFyZyA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSBhcmcudGl0bGUgfHwgJydcbiAgICAgICAgICBsZXQgdGl0bGVIaWdobGlnaHQ6IHsgc3RhcnQ6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXIgfSB8IHVuZGVmaW5lZFxuICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZSAmJiBwcm9qZWN0TmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICBjb25zdCB0ZXh0SW5kZXggPSBwcm9qZWN0TmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgIHRpdGxlSGlnaGxpZ2h0ID0geyBzdGFydDogdGV4dEluZGV4LCBsZW5ndGg6IHNlYXJjaFZhbHVlLmxlbmd0aCB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogYXJnLmlkLFxuICAgICAgICAgICAgbmFtZTogYXJnLnRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb2plY3ROYW1lLFxuICAgICAgICAgICAgLi4uKHRpdGxlSGlnaGxpZ2h0ICYmIHsgdGl0bGVIaWdobGlnaHQgfSksXG4gICAgICAgICAgICAuLi4oYXJnLmNsaWVudElkICE9IG51bGwgPyB7IGNsaWVudElkOiBhcmcuY2xpZW50SWQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLihhcmcuZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IGFyZy5mZWVJZCB9IDoge30pLFxuICAgICAgICAgICAgY2xpZW50OiB7XG4gICAgICAgICAgICAgIG5hbWU6IGFyZy5jbGllbnROYW1lID8/IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IGFyZy5wcm9kdWN0TmFtZSB8fCAnJyxcbiAgICAgICAgICAgIGJyYW5kTmFtZTogYXJnLmJyYW5kTmFtZSB8fCAnJyxcbiAgICAgICAgICAgIGluY29tZVR5cGU6IGFyZy5pbmNvbWVUeXBlIHx8ICcnLFxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcHJvamVjdHMsIHNldHRlckRhdGEgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlUHJvamVjdFNlYXJjaCA9ICgpID0+IHtcbiAgY29uc3QgeyBwcm9qZWN0cywgc2V0dGVyRGF0YSB9ID0gRGF0YVBhcnNlZFRvUHJvamVjdHMoKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbaXNRdWVyeUluUHJvZ3Jlc3MsIHNldElzUXVlcnlJblByb2dyZXNzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFZhbHVlID0gdXNlRGVib3VuY2Uoc2VhcmNoVmFsdWUsIFNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUylcblxuICBjb25zdCBbcmVjZW50UHJvamVjdHNEYXRhLCBzZXRSZWNlbnRQcm9qZWN0c0RhdGFdID0gdXNlU3RhdGU8UHJvamVjdEdyYXBoUUxbXSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtsb2FkaW5nUmVjZW50UHJvamVjdHMsIHNldExvYWRpbmdSZWNlbnRQcm9qZWN0c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3JlY2VudEVycm9yLCBzZXRSZWNlbnRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBmZXRjaFJlY2VudFByb2plY3RzV2l0aExvYWRpbmcgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0TG9hZGluZyh0cnVlKVxuICAgIHNldEVycm9yKGZhbHNlKVxuICAgIHNldFJlY2VudEVycm9yKGZhbHNlKVxuICAgIHNldElzUXVlcnlJblByb2dyZXNzKHRydWUpXG4gICAgc2V0TG9hZGluZ1JlY2VudFByb2plY3RzKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBtYWlhLlJlY2VudFByb2plY3RzLmdldFJlY2VudFByb2plY3RzKHsgY29yRXZlbnRzOiB0cnVlIH0pXG4gICAgICBzZXRSZWNlbnRQcm9qZWN0c0RhdGEoQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHNldFJlY2VudEVycm9yKHRydWUpXG4gICAgICBzZXRSZWNlbnRQcm9qZWN0c0RhdGEobnVsbClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ1JlY2VudFByb2plY3RzKGZhbHNlKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgW2ZldGNoU2VhcmNoUHJvamVjdHMsIHsgZGF0YTogc2VhcmNoRGF0YSwgbG9hZGluZzogbG9hZGluZ1NlYXJjaFByb2plY3RzLCBlcnJvcjogc2VhcmNoRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxRdWVyeVNlYXJjaFByb2plY3REYXRhPihTRUFSQ0hfUFJPSkVDVFMsIHtcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBsaW1pdDogMjAsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgY29uc3QgaGFuZGxlRmV0Y2hTZWFyY2hQcm9qZWN0cyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgZmV0Y2hTZWFyY2hQcm9qZWN0cyh7IHZhcmlhYmxlczogeyBxOiB2YWx1ZSwgZmlsdGVyczogSlNPTi5zdHJpbmdpZnkoVFlQRV9QUk9KRUNUKSB9IH0pXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsb2FkaW5nUmVjZW50UHJvamVjdHMgfHwgbG9hZGluZ1NlYXJjaFByb2plY3RzKSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICB9XG4gICAgaWYgKHJlY2VudEVycm9yIHx8IHNlYXJjaEVycm9yKSB7XG4gICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzUXVlcnlJblByb2dyZXNzKGZhbHNlKVxuICAgIH1cbiAgfSwgW3NlYXJjaEVycm9yLCBsb2FkaW5nU2VhcmNoUHJvamVjdHMsIGxvYWRpbmdSZWNlbnRQcm9qZWN0cywgcmVjZW50RXJyb3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nUmVjZW50UHJvamVjdHMgJiYgIWxvYWRpbmdTZWFyY2hQcm9qZWN0cyAmJiBpc1F1ZXJ5SW5Qcm9ncmVzcykge1xuICAgICAgc2V0SXNRdWVyeUluUHJvZ3Jlc3MoZmFsc2UpXG4gICAgfVxuXG4gICAgaWYgKHNlYXJjaERhdGE/LnNlYXJjaCAmJiBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKCkgJiYgIWxvYWRpbmdTZWFyY2hQcm9qZWN0cykge1xuICAgICAgY29uc3QgbWFwcGVkUHJvamVjdHMgPSBtYXBwZXJQcm9qZWN0c1NlYXJjaChzZWFyY2hEYXRhLnNlYXJjaClcbiAgICAgIHNldHRlckRhdGEobWFwcGVkUHJvamVjdHMsIGRlYm91bmNlZFNlYXJjaFZhbHVlKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgIH1cbiAgICBpZiAocmVjZW50UHJvamVjdHNEYXRhICE9PSBudWxsICYmICFkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKCkgJiYgIWxvYWRpbmdSZWNlbnRQcm9qZWN0cyAmJiAhaXNRdWVyeUluUHJvZ3Jlc3MpIHtcbiAgICAgIHNldHRlckRhdGEocmVjZW50UHJvamVjdHNEYXRhKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgIH1cbiAgfSwgW1xuICAgIHNlYXJjaERhdGEsXG4gICAgcmVjZW50UHJvamVjdHNEYXRhLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIGxvYWRpbmdSZWNlbnRQcm9qZWN0cyxcbiAgICBsb2FkaW5nU2VhcmNoUHJvamVjdHMsXG4gICAgaXNRdWVyeUluUHJvZ3Jlc3MsXG4gIF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpKSB7XG4gICAgICBoYW5kbGVGZXRjaFNlYXJjaFByb2plY3RzKGRlYm91bmNlZFNlYXJjaFZhbHVlKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCByZWNlbnRQcm9qZWN0c0RhdGFdKVxuXG4gIGNvbnN0IHVwZGF0ZVNlYXJjaFZhbHVlID0gKG5ld1NlYXJjaFZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShuZXdTZWFyY2hWYWx1ZSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmV0Y2hSZWNlbnRQcm9qZWN0czogZmV0Y2hSZWNlbnRQcm9qZWN0c1dpdGhMb2FkaW5nLFxuICAgIHJlY2VudFByb2plY3RzTG9hZGluZzogbG9hZGluZyxcbiAgICByZWNlbnRQcm9qZWN0c0Vycm9yOiBlcnJvcixcbiAgICByZWNlbnRQcm9qZWN0czogcHJvamVjdHMsXG4gICAgdXBkYXRlU2VhcmNoVmFsdWUsXG4gIH1c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
184
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwiU0VBUkNIX1BST0pFQ1RTIiwiU0VBUkNIX1FVRVJZX0RFQk9VTkNFX01TIiwidXNlRGVib3VuY2UiLCJUWVBFX1BST0pFQ1QiLCJwcm9qZWN0IiwiYXJjaGl2ZWQiLCJtYXBwZXJQcm9qZWN0c1NlYXJjaCIsInZhbHVlcyIsIm1hcCIsInZhbHVlIiwiX3ZhbHVlJGNsaWVudElkIiwiX3ZhbHVlJGZlZUlkIiwiaWQiLCJ0aXRsZSIsImNsaWVudE5hbWUiLCJwcm9kdWN0TmFtZSIsImJyYW5kTmFtZSIsImluY29tZVR5cGUiLCJjbGllbnRJZCIsImZlZUlkIiwiRGF0YVBhcnNlZFRvUHJvamVjdHMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJwcm9qZWN0cyIsInNldFByb2plY3RzIiwic2V0dGVyRGF0YSIsImFyZ3MiLCJzZWFyY2hWYWx1ZSIsImxlbmd0aCIsImFyZyIsIl9hcmckY2xpZW50TmFtZSIsInByb2plY3ROYW1lIiwidGl0bGVIaWdobGlnaHQiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsImluY2x1ZGVzIiwidGV4dEluZGV4IiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwic3RhcnQiLCJfb2JqZWN0U3ByZWFkIiwibmFtZSIsImNsaWVudCIsInVzZVByb2plY3RTZWFyY2giLCJfRGF0YVBhcnNlZFRvUHJvamVjdHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZXRTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaXNRdWVyeUluUHJvZ3Jlc3MiLCJzZXRJc1F1ZXJ5SW5Qcm9ncmVzcyIsImRlYm91bmNlZFNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwicmVjZW50UHJvamVjdHNEYXRhIiwic2V0UmVjZW50UHJvamVjdHNEYXRhIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImxvYWRpbmdSZWNlbnRQcm9qZWN0cyIsInNldExvYWRpbmdSZWNlbnRQcm9qZWN0cyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJyZWNlbnRFcnJvciIsInNldFJlY2VudEVycm9yIiwiZmV0Y2hSZWNlbnRQcm9qZWN0c1dpdGhMb2FkaW5nIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0b3AiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJfdXNlTGF6eVF1ZXJ5MiIsImZldGNoU2VhcmNoUHJvamVjdHMiLCJfdXNlTGF6eVF1ZXJ5MiQiLCJzZWFyY2hEYXRhIiwiZGF0YSIsImxvYWRpbmdTZWFyY2hQcm9qZWN0cyIsInNlYXJjaEVycm9yIiwiaGFuZGxlRmV0Y2hTZWFyY2hQcm9qZWN0cyIsInEiLCJmaWx0ZXJzIiwiSlNPTiIsInN0cmluZ2lmeSIsInNlYXJjaCIsInRyaW0iLCJtYXBwZWRQcm9qZWN0cyIsInVwZGF0ZVNlYXJjaFZhbHVlIiwibmV3U2VhcmNoVmFsdWUiLCJmZXRjaFJlY2VudFByb2plY3RzIiwicmVjZW50UHJvamVjdHNMb2FkaW5nIiwicmVjZW50UHJvamVjdHNFcnJvciIsInJlY2VudFByb2plY3RzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVByb2plY3RTZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTGF6eVF1ZXJ5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IFNFQVJDSF9QUk9KRUNUUyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L3Byb2plY3RTZWFyY2hCeVZhbHVlUXVlcnknXG5pbXBvcnQgeyBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMgfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlRGVib3VuY2UgfSBmcm9tICcuL3VzZURlYm91bmNlJ1xuXG5leHBvcnQgdHlwZSBQcm9qZWN0R3JhcGhRTCA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICB0aXRsZTogc3RyaW5nXG4gIGNsaWVudE5hbWU/OiBzdHJpbmcgfCBudWxsXG4gIHByb2R1Y3ROYW1lPzogc3RyaW5nXG4gIGJyYW5kTmFtZT86IHN0cmluZ1xuICBpbmNvbWVUeXBlPzogc3RyaW5nXG4gIGNsaWVudElkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBmZWVJZD86IG51bWJlciB8IHN0cmluZyB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgUHJvamVjdFNldHRlciA9IHtcbiAgaWQ6IG51bWJlciB8IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgdGl0bGU6IHN0cmluZ1xuICAvKiogUmFuZ28gZGVsIHTDqXJtaW5vIGJ1c2NhZG8gZGVudHJvIGRlIGB0aXRsZWAgKHNvbG8gcmVzdWx0YWRvcyBkZSBiw7pzcXVlZGEpICovXG4gIHRpdGxlSGlnaGxpZ2h0PzogeyBzdGFydDogbnVtYmVyOyBsZW5ndGg6IG51bWJlciB9XG4gIGNsaWVudElkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBmZWVJZD86IG51bWJlciB8IHN0cmluZyB8IG51bGxcbiAgY2xpZW50Pzoge1xuICAgIG5hbWU6IHN0cmluZyB8IG51bGxcbiAgfVxuICBwcm9kdWN0TmFtZT86IHN0cmluZ1xuICBicmFuZE5hbWU/OiBzdHJpbmdcbiAgaW5jb21lVHlwZT86IHN0cmluZ1xufVxuXG50eXBlIFByb2plY3RTZWFyY2hSZXN1bHQgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgdGl0bGU6IHN0cmluZ1xuICB0eXBlOiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBjbGllbnROYW1lOiBzdHJpbmdcbiAgYnJhbmROYW1lOiBzdHJpbmdcbiAgcHJvZHVjdE5hbWU6IHN0cmluZ1xuICBwcm9qZWN0TmFtZTogc3RyaW5nXG4gIHN0YXR1czogc3RyaW5nXG4gIGRlYWRsaW5lOiBzdHJpbmdcbiAgZGF0ZXRpbWU6IHN0cmluZ1xuICBhcmNoaXZlZDogYm9vbGVhblxuICBfX3R5cGVuYW1lOiBzdHJpbmdcbn1cblxudHlwZSBRdWVyeVNlYXJjaFByb2plY3REYXRhID0geyBzZWFyY2g6IFByb2plY3RTZWFyY2hSZXN1bHRbXSB8IG51bGwgfVxuXG5jb25zdCBUWVBFX1BST0pFQ1QgPSB7IHByb2plY3Q6ICd0cnVlJywgYXJjaGl2ZWQ6ICdhbGwnIH1cblxuY29uc3QgbWFwcGVyUHJvamVjdHNTZWFyY2ggPSAodmFsdWVzOiBQcm9qZWN0U2VhcmNoUmVzdWx0W10pOiBQcm9qZWN0R3JhcGhRTFtdID0+IHtcbiAgcmV0dXJuIHZhbHVlcz8ubWFwKHZhbHVlID0+ICh7XG4gICAgaWQ6IHZhbHVlLmlkLFxuICAgIHRpdGxlOiB2YWx1ZS50aXRsZSxcbiAgICBjbGllbnROYW1lOiB2YWx1ZS5jbGllbnROYW1lLFxuICAgIHByb2R1Y3ROYW1lOiB2YWx1ZS5wcm9kdWN0TmFtZSxcbiAgICBicmFuZE5hbWU6IHZhbHVlLmJyYW5kTmFtZSxcbiAgICBpbmNvbWVUeXBlOiAnJyxcbiAgICBjbGllbnRJZDogdmFsdWUuY2xpZW50SWQgPz8gbnVsbCxcbiAgICBmZWVJZDogdmFsdWUuZmVlSWQgPz8gbnVsbCxcbiAgfSkpXG59XG5cbmV4cG9ydCBjb25zdCBEYXRhUGFyc2VkVG9Qcm9qZWN0cyA9ICgpID0+IHtcbiAgY29uc3QgW3Byb2plY3RzLCBzZXRQcm9qZWN0c10gPSB1c2VTdGF0ZTxQcm9qZWN0U2V0dGVyW10+KFtdKVxuICBjb25zdCBzZXR0ZXJEYXRhID0gKGFyZ3M6IFByb2plY3RHcmFwaFFMW10sIHNlYXJjaFZhbHVlPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgc2V0UHJvamVjdHMoW10pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFByb2plY3RzKFxuICAgICAgICBhcmdzLm1hcChhcmcgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb2plY3ROYW1lID0gYXJnLnRpdGxlIHx8ICcnXG4gICAgICAgICAgbGV0IHRpdGxlSGlnaGxpZ2h0OiB7IHN0YXJ0OiBudW1iZXI7IGxlbmd0aDogbnVtYmVyIH0gfCB1bmRlZmluZWRcbiAgICAgICAgICBpZiAoc2VhcmNoVmFsdWUgJiYgcHJvamVjdE5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgY29uc3QgdGV4dEluZGV4ID0gcHJvamVjdE5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICB0aXRsZUhpZ2hsaWdodCA9IHsgc3RhcnQ6IHRleHRJbmRleCwgbGVuZ3RoOiBzZWFyY2hWYWx1ZS5sZW5ndGggfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGFyZy5pZCxcbiAgICAgICAgICAgIG5hbWU6IGFyZy50aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9qZWN0TmFtZSxcbiAgICAgICAgICAgIC4uLih0aXRsZUhpZ2hsaWdodCAmJiB7IHRpdGxlSGlnaGxpZ2h0IH0pLFxuICAgICAgICAgICAgLi4uKGFyZy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogYXJnLmNsaWVudElkIH0gOiB7fSksXG4gICAgICAgICAgICAuLi4oYXJnLmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBhcmcuZmVlSWQgfSA6IHt9KSxcbiAgICAgICAgICAgIGNsaWVudDoge1xuICAgICAgICAgICAgICBuYW1lOiBhcmcuY2xpZW50TmFtZSA/PyBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb2R1Y3ROYW1lOiBhcmcucHJvZHVjdE5hbWUgfHwgJycsXG4gICAgICAgICAgICBicmFuZE5hbWU6IGFyZy5icmFuZE5hbWUgfHwgJycsXG4gICAgICAgICAgICBpbmNvbWVUeXBlOiBhcmcuaW5jb21lVHlwZSB8fCAnJyxcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHByb2plY3RzLCBzZXR0ZXJEYXRhIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZVByb2plY3RTZWFyY2ggPSAoKSA9PiB7XG4gIGNvbnN0IHsgcHJvamVjdHMsIHNldHRlckRhdGEgfSA9IERhdGFQYXJzZWRUb1Byb2plY3RzKClcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW2lzUXVlcnlJblByb2dyZXNzLCBzZXRJc1F1ZXJ5SW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBkZWJvdW5jZWRTZWFyY2hWYWx1ZSA9IHVzZURlYm91bmNlKHNlYXJjaFZhbHVlLCBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMpXG5cbiAgY29uc3QgW3JlY2VudFByb2plY3RzRGF0YSwgc2V0UmVjZW50UHJvamVjdHNEYXRhXSA9IHVzZVN0YXRlPFByb2plY3RHcmFwaFFMW10gfCBudWxsPihudWxsKVxuICBjb25zdCBbbG9hZGluZ1JlY2VudFByb2plY3RzLCBzZXRMb2FkaW5nUmVjZW50UHJvamVjdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtyZWNlbnRFcnJvciwgc2V0UmVjZW50RXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgZmV0Y2hSZWNlbnRQcm9qZWN0c1dpdGhMb2FkaW5nID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldFJlY2VudFByb2plY3RzRGF0YShbXSlcbiAgICBzZXRMb2FkaW5nUmVjZW50UHJvamVjdHMoZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IFtmZXRjaFNlYXJjaFByb2plY3RzLCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IGxvYWRpbmdTZWFyY2hQcm9qZWN0cywgZXJyb3I6IHNlYXJjaEVycm9yIH1dID1cbiAgICB1c2VMYXp5UXVlcnk8UXVlcnlTZWFyY2hQcm9qZWN0RGF0YT4oU0VBUkNIX1BST0pFQ1RTLCB7XG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgbGltaXQ6IDIwLFxuICAgICAgfSxcbiAgICB9KVxuXG4gIGNvbnN0IGhhbmRsZUZldGNoU2VhcmNoUHJvamVjdHMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGZldGNoU2VhcmNoUHJvamVjdHMoeyB2YXJpYWJsZXM6IHsgcTogdmFsdWUsIGZpbHRlcnM6IEpTT04uc3RyaW5naWZ5KFRZUEVfUFJPSkVDVCkgfSB9KVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobG9hZGluZ1JlY2VudFByb2plY3RzIHx8IGxvYWRpbmdTZWFyY2hQcm9qZWN0cykge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgfVxuICAgIGlmIChyZWNlbnRFcnJvciB8fCBzZWFyY2hFcnJvcikge1xuICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1F1ZXJ5SW5Qcm9ncmVzcyhmYWxzZSlcbiAgICB9XG4gIH0sIFtzZWFyY2hFcnJvciwgbG9hZGluZ1NlYXJjaFByb2plY3RzLCBsb2FkaW5nUmVjZW50UHJvamVjdHMsIHJlY2VudEVycm9yXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbG9hZGluZ1JlY2VudFByb2plY3RzICYmICFsb2FkaW5nU2VhcmNoUHJvamVjdHMgJiYgaXNRdWVyeUluUHJvZ3Jlc3MpIHtcbiAgICAgIHNldElzUXVlcnlJblByb2dyZXNzKGZhbHNlKVxuICAgIH1cblxuICAgIGlmIChzZWFyY2hEYXRhPy5zZWFyY2ggJiYgZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpICYmICFsb2FkaW5nU2VhcmNoUHJvamVjdHMpIHtcbiAgICAgIGNvbnN0IG1hcHBlZFByb2plY3RzID0gbWFwcGVyUHJvamVjdHNTZWFyY2goc2VhcmNoRGF0YS5zZWFyY2gpXG4gICAgICBzZXR0ZXJEYXRhKG1hcHBlZFByb2plY3RzLCBkZWJvdW5jZWRTZWFyY2hWYWx1ZSlcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICB9XG4gICAgaWYgKHJlY2VudFByb2plY3RzRGF0YSAhPT0gbnVsbCAmJiAhZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpICYmICFsb2FkaW5nUmVjZW50UHJvamVjdHMgJiYgIWlzUXVlcnlJblByb2dyZXNzKSB7XG4gICAgICBzZXR0ZXJEYXRhKHJlY2VudFByb2plY3RzRGF0YSlcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICB9XG4gIH0sIFtcbiAgICBzZWFyY2hEYXRhLFxuICAgIHJlY2VudFByb2plY3RzRGF0YSxcbiAgICBkZWJvdW5jZWRTZWFyY2hWYWx1ZSxcbiAgICBsb2FkaW5nUmVjZW50UHJvamVjdHMsXG4gICAgbG9hZGluZ1NlYXJjaFByb2plY3RzLFxuICAgIGlzUXVlcnlJblByb2dyZXNzLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgaGFuZGxlRmV0Y2hTZWFyY2hQcm9qZWN0cyhkZWJvdW5jZWRTZWFyY2hWYWx1ZSlcbiAgICB9XG4gIH0sIFtkZWJvdW5jZWRTZWFyY2hWYWx1ZSwgcmVjZW50UHJvamVjdHNEYXRhXSlcblxuICBjb25zdCB1cGRhdGVTZWFyY2hWYWx1ZSA9IChuZXdTZWFyY2hWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUobmV3U2VhcmNoVmFsdWUpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZldGNoUmVjZW50UHJvamVjdHM6IGZldGNoUmVjZW50UHJvamVjdHNXaXRoTG9hZGluZyxcbiAgICByZWNlbnRQcm9qZWN0c0xvYWRpbmc6IGxvYWRpbmcsXG4gICAgcmVjZW50UHJvamVjdHNFcnJvcjogZXJyb3IsXG4gICAgcmVjZW50UHJvamVjdHM6IHByb2plY3RzLFxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQVNBLFlBQVksUUFBUSxnQkFBZ0I7QUFDN0MsU0FBU0MsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsUUFBUSxPQUFPO0FBRXhELFNBQVNDLGVBQWUsUUFBUSw2Q0FBNkM7QUFDN0UsU0FBU0Msd0JBQXdCLFFBQVEscUJBQXFCO0FBQzlELFNBQVNDLFdBQVcsUUFBUSxlQUFlO0FBZ0QzQyxJQUFNQyxZQUFZLEdBQUc7RUFBRUMsT0FBTyxFQUFFLE1BQU07RUFBRUMsUUFBUSxFQUFFO0FBQU0sQ0FBQztBQUV6RCxJQUFNQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJQyxNQUE2QixFQUF1QjtFQUNoRixPQUFPQSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUMsR0FBRyxDQUFDLFVBQUFDLEtBQUs7SUFBQSxJQUFBQyxlQUFBLEVBQUFDLFlBQUE7SUFBQSxPQUFLO01BQzNCQyxFQUFFLEVBQUVILEtBQUssQ0FBQ0csRUFBRTtNQUNaQyxLQUFLLEVBQUVKLEtBQUssQ0FBQ0ksS0FBSztNQUNsQkMsVUFBVSxFQUFFTCxLQUFLLENBQUNLLFVBQVU7TUFDNUJDLFdBQVcsRUFBRU4sS0FBSyxDQUFDTSxXQUFXO01BQzlCQyxTQUFTLEVBQUVQLEtBQUssQ0FBQ08sU0FBUztNQUMxQkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsUUFBUSxHQUFBUixlQUFBLEdBQUVELEtBQUssQ0FBQ1MsUUFBUSxjQUFBUixlQUFBLGNBQUFBLGVBQUEsR0FBSSxJQUFJO01BQ2hDUyxLQUFLLEdBQUFSLFlBQUEsR0FBRUYsS0FBSyxDQUFDVSxLQUFLLGNBQUFSLFlBQUEsY0FBQUEsWUFBQSxHQUFJO0lBQ3hCLENBQUM7RUFBQSxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsT0FBTyxJQUFNUyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBLEVBQVM7RUFDeEMsSUFBQUMsU0FBQSxHQUFnQ3ZCLFFBQVEsQ0FBa0IsRUFBRSxDQUFDO0lBQUF3QixVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUF0REcsUUFBUSxHQUFBRixVQUFBO0lBQUVHLFdBQVcsR0FBQUgsVUFBQTtFQUM1QixJQUFNSSxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBSUMsSUFBc0IsRUFBRUMsV0FBb0IsRUFBSztJQUNuRSxJQUFJLENBQUNELElBQUksQ0FBQ0UsTUFBTSxFQUFFO01BQ2hCSixXQUFXLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUMsTUFBTTtNQUNMQSxXQUFXLENBQ1RFLElBQUksQ0FBQ25CLEdBQUcsQ0FBQyxVQUFBc0IsR0FBRyxFQUFJO1FBQUEsSUFBQUMsZUFBQTtRQUNkLElBQU1DLFdBQVcsR0FBR0YsR0FBRyxDQUFDakIsS0FBSyxJQUFJLEVBQUU7UUFDbkMsSUFBSW9CLGNBQTZEO1FBQ2pFLElBQUlMLFdBQVcsSUFBSUksV0FBVyxDQUFDRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQ1AsV0FBVyxDQUFDTSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtVQUM1RixJQUFNRSxTQUFTLEdBQUdKLFdBQVcsQ0FBQ0ssV0FBVyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDVixXQUFXLENBQUNTLFdBQVcsQ0FBQyxDQUFDLENBQUM7VUFDOUVKLGNBQWMsR0FBRztZQUFFTSxLQUFLLEVBQUVILFNBQVM7WUFBRVAsTUFBTSxFQUFFRCxXQUFXLENBQUNDO1VBQU8sQ0FBQztRQUNuRTtRQUNBLE9BQUFXLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUE7VUFDRTVCLEVBQUUsRUFBRWtCLEdBQUcsQ0FBQ2xCLEVBQUU7VUFDVjZCLElBQUksRUFBRVgsR0FBRyxDQUFDakIsS0FBSztVQUNmQSxLQUFLLEVBQUVtQjtRQUFXLEdBQ2RDLGNBQWMsSUFBSTtVQUFFQSxjQUFjLEVBQWRBO1FBQWUsQ0FBQyxHQUNwQ0gsR0FBRyxDQUFDWixRQUFRLElBQUksSUFBSSxHQUFHO1VBQUVBLFFBQVEsRUFBRVksR0FBRyxDQUFDWjtRQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDdERZLEdBQUcsQ0FBQ1gsS0FBSyxJQUFJLElBQUksR0FBRztVQUFFQSxLQUFLLEVBQUVXLEdBQUcsQ0FBQ1g7UUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQ2pEdUIsTUFBTSxFQUFFO1lBQ05ELElBQUksR0FBQVYsZUFBQSxHQUFFRCxHQUFHLENBQUNoQixVQUFVLGNBQUFpQixlQUFBLGNBQUFBLGVBQUEsR0FBSTtVQUMxQixDQUFDO1VBQ0RoQixXQUFXLEVBQUVlLEdBQUcsQ0FBQ2YsV0FBVyxJQUFJLEVBQUU7VUFDbENDLFNBQVMsRUFBRWMsR0FBRyxDQUFDZCxTQUFTLElBQUksRUFBRTtVQUM5QkMsVUFBVSxFQUFFYSxHQUFHLENBQUNiLFVBQVUsSUFBSTtRQUFFO01BRXBDLENBQUMsQ0FDSCxDQUFDO0lBQ0g7RUFDRixDQUFDO0VBQ0QsT0FBTztJQUFFTyxRQUFRLEVBQVJBLFFBQVE7SUFBRUUsVUFBVSxFQUFWQTtFQUFXLENBQUM7QUFDakMsQ0FBQztBQUVELE9BQU8sSUFBTWlCLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBUztFQUNwQyxJQUFBQyxxQkFBQSxHQUFpQ3hCLG9CQUFvQixDQUFDLENBQUM7SUFBL0NJLFFBQVEsR0FBQW9CLHFCQUFBLENBQVJwQixRQUFRO0lBQUVFLFVBQVUsR0FBQWtCLHFCQUFBLENBQVZsQixVQUFVO0VBQzVCLElBQUFtQixVQUFBLEdBQThCL0MsUUFBUSxDQUFDLElBQUksQ0FBQztJQUFBZ0QsVUFBQSxHQUFBdkIsY0FBQSxDQUFBc0IsVUFBQTtJQUFyQ0UsT0FBTyxHQUFBRCxVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUMxQixJQUFBRyxVQUFBLEdBQTBCbkQsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBb0QsVUFBQSxHQUFBM0IsY0FBQSxDQUFBMEIsVUFBQTtJQUFsQ0UsS0FBSyxHQUFBRCxVQUFBO0lBQUVFLFFBQVEsR0FBQUYsVUFBQTtFQUN0QixJQUFBRyxVQUFBLEdBQXNDdkQsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUFBd0QsVUFBQSxHQUFBL0IsY0FBQSxDQUFBOEIsVUFBQTtJQUEzQ3pCLFdBQVcsR0FBQTBCLFVBQUE7SUFBRUMsY0FBYyxHQUFBRCxVQUFBO0VBQ2xDLElBQUFFLFVBQUEsR0FBa0QxRCxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUEyRCxVQUFBLEdBQUFsQyxjQUFBLENBQUFpQyxVQUFBO0lBQTFERSxpQkFBaUIsR0FBQUQsVUFBQTtJQUFFRSxvQkFBb0IsR0FBQUYsVUFBQTtFQUU5QyxJQUFNRyxvQkFBb0IsR0FBRzFELFdBQVcsQ0FBQzBCLFdBQVcsRUFBRTNCLHdCQUF3QixDQUFDO0VBRS9FLElBQUE0RCxVQUFBLEdBQW9EL0QsUUFBUSxDQUEwQixJQUFJLENBQUM7SUFBQWdFLFdBQUEsR0FBQXZDLGNBQUEsQ0FBQXNDLFVBQUE7SUFBcEZFLGtCQUFrQixHQUFBRCxXQUFBO0lBQUVFLHFCQUFxQixHQUFBRixXQUFBO0VBQ2hELElBQUFHLFdBQUEsR0FBMERuRSxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUFvRSxXQUFBLEdBQUEzQyxjQUFBLENBQUEwQyxXQUFBO0lBQWxFRSxxQkFBcUIsR0FBQUQsV0FBQTtJQUFFRSx3QkFBd0IsR0FBQUYsV0FBQTtFQUN0RCxJQUFBRyxXQUFBLEdBQXNDdkUsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBd0UsV0FBQSxHQUFBL0MsY0FBQSxDQUFBOEMsV0FBQTtJQUE5Q0UsV0FBVyxHQUFBRCxXQUFBO0lBQUVFLGNBQWMsR0FBQUYsV0FBQTtFQUVsQyxJQUFNRyw4QkFBOEIsR0FBRzFFLFdBQVcsY0FBQTJFLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBQyxRQUFBO0lBQUEsT0FBQUYsbUJBQUEsQ0FBQUcsSUFBQSxXQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7UUFBQTtVQUNqRGpCLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztVQUN6Qkksd0JBQXdCLENBQUMsS0FBSyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFXLFFBQUEsQ0FBQUcsSUFBQTtNQUFBO0lBQUEsR0FBQUwsT0FBQTtFQUFBLENBQ2hDLElBQUUsRUFBRSxDQUFDO0VBRU4sSUFBQU0sYUFBQSxHQUNFdkYsWUFBWSxDQUF5QkksZUFBZSxFQUFFO01BQ3BEb0YsU0FBUyxFQUFFO1FBQ1RDLEtBQUssRUFBRTtNQUNUO0lBQ0YsQ0FBQyxDQUFDO0lBQUFDLGNBQUEsR0FBQS9ELGNBQUEsQ0FBQTRELGFBQUE7SUFMR0ksbUJBQW1CLEdBQUFELGNBQUE7SUFBQUUsZUFBQSxHQUFBRixjQUFBO0lBQVVHLFVBQVUsR0FBQUQsZUFBQSxDQUFoQkUsSUFBSTtJQUF1QkMscUJBQXFCLEdBQUFILGVBQUEsQ0FBOUJ6QyxPQUFPO0lBQWdDNkMsV0FBVyxHQUFBSixlQUFBLENBQWxCckMsS0FBSztFQU9yRixJQUFNMEMseUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSXBGLEtBQWEsRUFBSztJQUNuRDhFLG1CQUFtQixDQUFDO01BQUVILFNBQVMsRUFBRTtRQUFFVSxDQUFDLEVBQUVyRixLQUFLO1FBQUVzRixPQUFPLEVBQUVDLElBQUksQ0FBQ0MsU0FBUyxDQUFDOUYsWUFBWTtNQUFFO0lBQUUsQ0FBQyxDQUFDO0VBQ3pGLENBQUM7RUFFRE4sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJc0UscUJBQXFCLElBQUl3QixxQkFBcUIsRUFBRTtNQUNsRDNDLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDaEJJLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDakI7SUFDQSxJQUFJbUIsV0FBVyxJQUFJcUIsV0FBVyxFQUFFO01BQzlCeEMsUUFBUSxDQUFDLElBQUksQ0FBQztNQUNkSixVQUFVLENBQUMsS0FBSyxDQUFDO01BQ2pCVyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7SUFDN0I7RUFDRixDQUFDLEVBQUUsQ0FBQ2lDLFdBQVcsRUFBRUQscUJBQXFCLEVBQUV4QixxQkFBcUIsRUFBRUksV0FBVyxDQUFDLENBQUM7RUFFNUUxRSxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ3NFLHFCQUFxQixJQUFJLENBQUN3QixxQkFBcUIsSUFBSWpDLGlCQUFpQixFQUFFO01BQ3pFQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7SUFDN0I7SUFFQSxJQUFJOEIsVUFBVSxhQUFWQSxVQUFVLGVBQVZBLFVBQVUsQ0FBRVMsTUFBTSxJQUFJdEMsb0JBQW9CLENBQUN1QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUNSLHFCQUFxQixFQUFFO01BQy9FLElBQU1TLGNBQWMsR0FBRzlGLG9CQUFvQixDQUFDbUYsVUFBVSxDQUFDUyxNQUFNLENBQUM7TUFDOUR4RSxVQUFVLENBQUMwRSxjQUFjLEVBQUV4QyxvQkFBb0IsQ0FBQztNQUNoRFosVUFBVSxDQUFDLEtBQUssQ0FBQztNQUNqQkksUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNqQjtJQUNBLElBQUlXLGtCQUFrQixLQUFLLElBQUksSUFBSSxDQUFDSCxvQkFBb0IsQ0FBQ3VDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQ2hDLHFCQUFxQixJQUFJLENBQUNULGlCQUFpQixFQUFFO01BQy9HaEMsVUFBVSxDQUFDcUMsa0JBQWtCLENBQUM7TUFDOUJmLFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakJJLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDakI7RUFDRixDQUFDLEVBQUUsQ0FDRHFDLFVBQVUsRUFDVjFCLGtCQUFrQixFQUNsQkgsb0JBQW9CLEVBQ3BCTyxxQkFBcUIsRUFDckJ3QixxQkFBcUIsRUFDckJqQyxpQkFBaUIsQ0FDbEIsQ0FBQztFQUVGN0QsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJK0Qsb0JBQW9CLENBQUN1QyxJQUFJLENBQUMsQ0FBQyxFQUFFO01BQy9CTix5QkFBeUIsQ0FBQ2pDLG9CQUFvQixDQUFDO0lBQ2pEO0VBQ0YsQ0FBQyxFQUFFLENBQUNBLG9CQUFvQixFQUFFRyxrQkFBa0IsQ0FBQyxDQUFDO0VBRTlDLElBQU1zQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJQyxjQUFzQixFQUFLO0lBQ3BEL0MsY0FBYyxDQUFDK0MsY0FBYyxDQUFDO0VBQ2hDLENBQUM7RUFFRCxPQUFPO0lBQ0xDLG1CQUFtQixFQUFFOUIsOEJBQThCO0lBQ25EK0IscUJBQXFCLEVBQUV6RCxPQUFPO0lBQzlCMEQsbUJBQW1CLEVBQUV0RCxLQUFLO0lBQzFCdUQsY0FBYyxFQUFFbEYsUUFBUTtJQUN4QjZFLGlCQUFpQixFQUFqQkE7RUFDRixDQUFDO0FBQ0gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==