@projectcor/maia-components 2.38.4 → 2.39.1

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 (171) hide show
  1. package/CHANGELOG.md +798 -0
  2. package/lib/components/atoms/ActionableButton.js +1 -6
  3. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +135 -0
  4. package/lib/components/atoms/Checkbox/Checkbox.spec.js +27 -0
  5. package/lib/components/atoms/Chip/Chip.spec.js +32 -0
  6. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +29 -0
  7. package/lib/components/atoms/Fade/Fade.spec.js +31 -0
  8. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +4 -14
  9. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +3 -12
  10. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +4 -20
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -18
  12. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +42 -0
  13. package/lib/components/atoms/MAIAInput/MAIAInput.js +14 -29
  14. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +300 -0
  15. package/lib/components/atoms/MAIAInput/styles.js +29 -36
  16. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +3 -3
  17. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +68 -0
  18. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +2 -2
  19. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
  20. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +85 -0
  21. package/lib/components/atoms/Switch/Switch.spec.js +41 -0
  22. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +77 -0
  23. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +5 -16
  24. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +246 -0
  25. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +2 -23
  26. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +5 -33
  27. package/lib/components/molecules/ChatAIHome/styles.js +2 -11
  28. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +20 -31
  29. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
  30. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +2 -7
  31. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +291 -0
  32. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
  33. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +56 -0
  34. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +124 -0
  35. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +202 -134
  36. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  37. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +1 -8
  38. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +9 -15
  39. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +3 -18
  40. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -2
  41. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -13
  42. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -14
  43. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  44. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +2 -12
  45. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +3 -3
  46. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +10 -34
  47. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +128 -0
  48. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +6 -14
  49. package/lib/components/molecules/ChatFooter/ChatFooter.js +45 -66
  50. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +105 -0
  51. package/lib/components/molecules/ChatFooter/styles.js +6 -12
  52. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
  53. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +5 -15
  54. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
  55. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  56. package/lib/components/molecules/Sidebar/Sidebar.spec.js +208 -0
  57. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +11 -30
  58. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +335 -0
  59. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +18 -31
  60. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +23 -43
  61. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +405 -0
  62. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +2 -2
  63. package/lib/components/organisms/ChatAI/ChatAI.js +1 -6
  64. package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
  65. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
  66. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
  67. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
  68. package/lib/constants/formatExtensions.js +7 -8
  69. package/lib/constants/permissions/utils.spec.js +34 -0
  70. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +95 -0
  71. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +96 -0
  72. package/lib/hooks/useCaretPosition.spec.js +58 -0
  73. package/lib/hooks/useChatManager/useChatManager.js +34 -55
  74. package/lib/hooks/useDebounce.spec.js +42 -0
  75. package/lib/hooks/useEvent.spec.js +40 -0
  76. package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
  77. package/lib/hooks/useModal/useModal.spec.js +73 -0
  78. package/lib/hooks/useResize.spec.js +37 -0
  79. package/lib/hooks/useSkillsCatalog.spec.js +88 -0
  80. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
  81. package/lib/hooks/useT.spec.js +20 -0
  82. package/lib/hooks/useToggle.spec.js +33 -0
  83. package/lib/lang/br/index.js +2 -6
  84. package/lib/lang/en/index.js +2 -6
  85. package/lib/lang/es/index.js +2 -6
  86. package/lib/lang/fr/index.js +3 -7
  87. package/lib/lib/utils.js +9 -0
  88. package/lib/services/maia/Access/updateAccess.spec.js +108 -0
  89. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +69 -0
  90. package/lib/services/maia/Actions/getSlashCommands.spec.js +74 -0
  91. package/lib/services/maia/Agents/createAgent.spec.js +55 -0
  92. package/lib/services/maia/Agents/deleteAgent.spec.js +42 -0
  93. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
  94. package/lib/services/maia/Agents/getAgentById.spec.js +55 -0
  95. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +82 -0
  96. package/lib/services/maia/Agents/getAgents.js +5 -5
  97. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
  98. package/lib/services/maia/Agents/toggleFavorite.spec.js +47 -0
  99. package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
  100. package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
  101. package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
  102. package/lib/services/maia/Chats/getChatsByUserId.spec.js +149 -0
  103. package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
  104. package/lib/services/maia/Chats/patchChat.spec.js +41 -0
  105. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
  106. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
  107. package/lib/services/maia/Knowledge/delete.spec.js +45 -0
  108. package/lib/services/maia/Knowledge/download.spec.js +78 -0
  109. package/lib/services/maia/Knowledge/save.spec.js +58 -0
  110. package/lib/services/maia/Orchestrator/orchestrator.spec.js +72 -0
  111. package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
  112. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +83 -0
  113. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
  114. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
  115. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
  116. package/lib/services/maia/Skills/createSkill.spec.js +68 -0
  117. package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
  118. package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
  119. package/lib/services/maia/Skills/getSkills.spec.js +152 -0
  120. package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
  121. package/lib/services/maia/client.spec.js +56 -0
  122. package/lib/services/maia/index.js +2 -4
  123. package/lib/services/utils/fetchCOR.js +57 -106
  124. package/lib/services/utils/fetchCOR.spec.js +211 -0
  125. package/lib/services/utils/getCookie.spec.js +20 -0
  126. package/lib/services/utils/index.js +1 -2
  127. package/lib/store/chatsSidebarOptimistic.spec.js +120 -0
  128. package/lib/store/index.js +1 -2
  129. package/lib/store/maiaLastChatPersistence.spec.js +22 -0
  130. package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
  131. package/lib/store/sessions/sessionStreamManager.js +35 -70
  132. package/lib/store/sessions/sessions.types.js +1 -1
  133. package/lib/store/sessions/sessions.types.spec.js +16 -0
  134. package/lib/store/sessions/useSessionsStore.spec.js +135 -0
  135. package/lib/store/useChatsStore.spec.js +619 -0
  136. package/lib/store/useFaqsStore.spec.js +57 -0
  137. package/lib/utils/agentDisplayName.spec.js +44 -0
  138. package/lib/utils/autoApproveStorage.spec.js +25 -0
  139. package/lib/utils/chatInputFiles.spec.js +39 -0
  140. package/lib/utils/contextMentionLabel.spec.js +13 -0
  141. package/lib/utils/contextMentionTriggers.spec.js +38 -0
  142. package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
  143. package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
  144. package/lib/utils/fileDownloadHelper.spec.js +67 -0
  145. package/lib/utils/formatQuickActionMessage.spec.js +27 -0
  146. package/lib/utils/formatUnreadCount.spec.js +12 -0
  147. package/lib/utils/getUnitFileSize.spec.js +18 -0
  148. package/lib/utils/hitlAnalytics.spec.js +100 -0
  149. package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -0
  150. package/lib/utils/mapBackendLang.spec.js +19 -0
  151. package/lib/utils/normalizeAgentConnectors.spec.js +89 -0
  152. package/lib/utils/orchestratorSubagents.spec.js +32 -0
  153. package/lib/utils/reasoningMappers.spec.js +103 -0
  154. package/lib/utils/retryCompletion.spec.js +99 -0
  155. package/lib/utils/skillContentSize.spec.js +13 -0
  156. package/lib/utils/slashCommandMarker.spec.js +43 -0
  157. package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
  158. package/lib/utils/sseStreamContent.spec.js +31 -0
  159. package/lib/utils/streamActivityMessages.spec.js +98 -0
  160. package/lib/utils/validateTrimmedFields.spec.js +26 -0
  161. package/package.json +2 -2
  162. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +0 -30
  163. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +0 -47
  164. package/lib/components/molecules/UsageBlockedBanner/index.js +0 -2
  165. package/lib/lang/__mocks__/index.js +0 -9
  166. package/lib/services/maia/Usage/getUsage.js +0 -45
  167. package/lib/services/maia/Usage/index.js +0 -6
  168. package/lib/services/utils/MaiaApiError.js +0 -34
  169. package/lib/store/useUsageStore.js +0 -115
  170. package/lib/types/usage.js +0 -16
  171. package/lib/utils/usageBlockedMessage.js +0 -11
@@ -24,8 +24,6 @@ import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
24
24
  import { getUnitFileSize } from '../../../utils/getUnitFileSize';
25
25
  import { getSkillContentByteLength, isSkillContentOverLimit, SKILL_CONTENT_MAX_BYTES } from '../../../utils/skillContentSize';
26
26
  import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal';
27
- import { getUsageStoreState } from '../../../store/useUsageStore';
28
- import { getUsageBlockedBannerText } from '../../../utils/usageBlockedMessage';
29
27
  import { SCASMByteCounter, SCASMCancelButton, SCASMCloseButton, SCASMBody, SCASMDeleteSlot, SCASMFieldBox, SCASMFieldInput, SCASMFieldLabel, SCASMFieldTextarea, SCASMFooter, SCASMHeader, SCASMHeaderTitle, SCASMHiddenFileInput, SCASMInstructionsField, SCASMInstructionsHeader, SCASMInstructionsPanel, SCASMInstructionsTextarea, SCASMInstructionsTitle, SCASMMetadataItem, SCASMPreviewBody, SCASMPreviewContentBox, SCASMPreviewContentPanel, SCASMPreviewDescription, SCASMPreviewHeadingBlock, SCASMPreviewMetadataLabel, SCASMPreviewMetadataRow, SCASMPreviewMetadataValue, SCASMPreviewName, SCASMSaveOutlinedButton, SCASMSavePrimaryButton, SCASMSwitchLabel, SCASMSwitchRow, SCASMUploadButton, SCASMUseSkillButton, SCASMWrapper } from './AbmSkillModal.styles';
30
28
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
31
29
  export var SKILL_USE_AFTER_SAVE_EVENT = 'maia-use-skill-after-save';
@@ -133,31 +131,18 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
133
131
  handleClose();
134
132
  }, [eventAmplitude, handleClose, values]);
135
133
  var handleBackdropClick = useCallback(function (event) {
136
- if (event.target === event.currentTarget) {
134
+ if (isReadOnly && event.target === event.currentTarget) {
137
135
  handleCancel();
138
136
  }
139
- }, [handleCancel]);
140
- var showUsageBlockedError = function showUsageBlockedError() {
141
- var _getUsageStoreState = getUsageStoreState(),
142
- blocked = _getUsageStoreState.blocked;
143
- if (!blocked) return false;
144
- handleSnackbarError(getUsageBlockedBannerText());
145
- return true;
146
- };
137
+ }, [handleCancel, isReadOnly]);
147
138
  useEffect(function () {
148
139
  var handleSetSkillValues = function handleSetSkillValues(event) {
149
- var _skillValues$values;
140
+ var _skillValues$values, _skillValues$values2, _skillValues$values3;
150
141
  var _ref2 = event.detail || {},
151
142
  skillValues = _ref2.skillValues,
152
143
  analyticsSource = _ref2.analyticsSource;
153
144
  if (!skillValues) return;
154
- var incomingValues = skillValues.values || {};
155
- var isViewOnly = !!incomingValues.isReadOnly;
156
- if (getUsageStoreState().blocked && !isViewOnly) {
157
- handleSnackbarError(getUsageBlockedBannerText());
158
- return;
159
- }
160
- var incomingGeneral = _objectSpread(_objectSpread({}, initialValues.general), incomingValues.general);
145
+ var incomingGeneral = _objectSpread(_objectSpread({}, initialValues.general), (_skillValues$values = skillValues.values) === null || _skillValues$values === void 0 ? void 0 : _skillValues$values.general);
161
146
  var incomingName = (incomingGeneral.name || '').trim();
162
147
  var incomingDescription = (incomingGeneral.description || '').trim();
163
148
  var incomingContent = (incomingGeneral.content || '').trim();
@@ -169,20 +154,20 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
169
154
  content: incomingContent,
170
155
  access_type: incomingAccessType
171
156
  };
172
- initialRef.current = incomingValues.isEditing ? editingBaseline : emptyBaseline;
157
+ initialRef.current = (_skillValues$values2 = skillValues.values) !== null && _skillValues$values2 !== void 0 && _skillValues$values2.isEditing ? editingBaseline : emptyBaseline;
173
158
  setValues(_objectSpread(_objectSpread(_objectSpread({}, initialValues), skillValues.values), {}, {
174
159
  general: _objectSpread(_objectSpread({}, incomingGeneral), {}, {
175
160
  description: parsedDescription,
176
161
  access_type: incomingAccessType
177
162
  })
178
163
  }));
179
- setPendingUpload(((_skillValues$values = skillValues.values) === null || _skillValues$values === void 0 ? void 0 : _skillValues$values.intent) === 'upload');
164
+ setPendingUpload(((_skillValues$values3 = skillValues.values) === null || _skillValues$values3 === void 0 ? void 0 : _skillValues$values3.intent) === 'upload');
180
165
  setIsOpen(!!skillValues.isOpen);
181
166
  if (skillValues.isOpen) {
182
- var _incomingValues = _objectSpread(_objectSpread({}, initialValues), skillValues.values);
167
+ var incomingValues = _objectSpread(_objectSpread({}, initialValues), skillValues.values);
183
168
  var source = analyticsSource === 'dropdown' || analyticsSource === 'empty' || analyticsSource === 'catalog' ? analyticsSource : 'catalog';
184
169
  eventAmplitude(EVENTS.aiChatSkillAbmAccess, {
185
- option: resolveSkillAbmOption(_incomingValues),
170
+ option: resolveSkillAbmOption(incomingValues),
186
171
  source: source
187
172
  });
188
173
  }
@@ -191,7 +176,7 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
191
176
  return function () {
192
177
  document.removeEventListener('abm-skill-modal-set-values', handleSetSkillValues);
193
178
  };
194
- }, [eventAmplitude, handleSnackbarError, user.role_id]);
179
+ }, [eventAmplitude, user.role_id]);
195
180
  useEffect(function () {
196
181
  if (isOpen && pendingUpload) {
197
182
  var _fileInputRef$current;
@@ -410,17 +395,11 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
410
395
  }
411
396
  return _context4.abrupt("return");
412
397
  case 1:
413
- if (!showUsageBlockedError()) {
414
- _context4.next = 2;
415
- break;
416
- }
417
- return _context4.abrupt("return");
418
- case 2:
419
398
  setIsSubmitting(true);
420
- _context4.prev = 3;
421
- _context4.next = 4;
399
+ _context4.prev = 2;
400
+ _context4.next = 3;
422
401
  return persistSkill();
423
- case 4:
402
+ case 3:
424
403
  savedSkill = _context4.sent;
425
404
  if (savedSkill) {
426
405
  eventAmplitude(EVENTS.aiChatSkillAbmConfirm, {
@@ -431,26 +410,27 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
431
410
  });
432
411
  document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
433
412
  detail: {
434
- skill: savedSkill
413
+ skill: savedSkill,
414
+ useFirstAgent: true
435
415
  }
436
416
  }));
437
417
  }
438
418
  handleClose();
439
- _context4.next = 6;
419
+ _context4.next = 5;
440
420
  break;
421
+ case 4:
422
+ _context4.prev = 4;
423
+ _t3 = _context4["catch"](2);
424
+ handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
441
425
  case 5:
442
426
  _context4.prev = 5;
443
- _t3 = _context4["catch"](3);
444
- handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
445
- case 6:
446
- _context4.prev = 6;
447
427
  setIsSubmitting(false);
448
- return _context4.finish(6);
449
- case 7:
428
+ return _context4.finish(5);
429
+ case 6:
450
430
  case "end":
451
431
  return _context4.stop();
452
432
  }
453
- }, _callee4, null, [[3, 5, 6, 7]]);
433
+ }, _callee4, null, [[2, 4, 5, 6]]);
454
434
  }));
455
435
  return function handleSaveAndUse() {
456
436
  return _ref6.apply(this, arguments);
@@ -728,4 +708,4 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
728
708
  }) : null]
729
709
  }), container);
730
710
  };
731
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwiRmlsZVVwbG9hZCIsInVzZVRyYW5zbGF0aW9uIiwiQmFja2Ryb3AiLCJMb2FkZXIiLCJTd2l0Y2giLCJTRUNUSU9OUyIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVNuYWNrQmFyTWFuYWdlciIsImZvcm1hdERhdGUiLCJjcmVhdGVTa2lsbCIsInVwZGF0ZVNraWxsIiwiZGVsZXRlU2tpbGwiLCJnZXRVbml0RmlsZVNpemUiLCJnZXRTa2lsbENvbnRlbnRCeXRlTGVuZ3RoIiwiaXNTa2lsbENvbnRlbnRPdmVyTGltaXQiLCJTS0lMTF9DT05URU5UX01BWF9CWVRFUyIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJnZXRVc2FnZVN0b3JlU3RhdGUiLCJnZXRVc2FnZUJsb2NrZWRCYW5uZXJUZXh0IiwiU0NBU01CeXRlQ291bnRlciIsIlNDQVNNQ2FuY2VsQnV0dG9uIiwiU0NBU01DbG9zZUJ1dHRvbiIsIlNDQVNNQm9keSIsIlNDQVNNRGVsZXRlU2xvdCIsIlNDQVNNRmllbGRCb3giLCJTQ0FTTUZpZWxkSW5wdXQiLCJTQ0FTTUZpZWxkTGFiZWwiLCJTQ0FTTUZpZWxkVGV4dGFyZWEiLCJTQ0FTTUZvb3RlciIsIlNDQVNNSGVhZGVyIiwiU0NBU01IZWFkZXJUaXRsZSIsIlNDQVNNSGlkZGVuRmlsZUlucHV0IiwiU0NBU01JbnN0cnVjdGlvbnNGaWVsZCIsIlNDQVNNSW5zdHJ1Y3Rpb25zSGVhZGVyIiwiU0NBU01JbnN0cnVjdGlvbnNQYW5lbCIsIlNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWEiLCJTQ0FTTUluc3RydWN0aW9uc1RpdGxlIiwiU0NBU01NZXRhZGF0YUl0ZW0iLCJTQ0FTTVByZXZpZXdCb2R5IiwiU0NBU01QcmV2aWV3Q29udGVudEJveCIsIlNDQVNNUHJldmlld0NvbnRlbnRQYW5lbCIsIlNDQVNNUHJldmlld0Rlc2NyaXB0aW9uIiwiU0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrIiwiU0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbCIsIlNDQVNNUHJldmlld01ldGFkYXRhUm93IiwiU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZSIsIlNDQVNNUHJldmlld05hbWUiLCJTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvbiIsIlNDQVNNU2F2ZVByaW1hcnlCdXR0b24iLCJTQ0FTTVN3aXRjaExhYmVsIiwiU0NBU01Td2l0Y2hSb3ciLCJTQ0FTTVVwbG9hZEJ1dHRvbiIsIlNDQVNNVXNlU2tpbGxCdXR0b24iLCJTQ0FTTVdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCIsInJlc29sdmVTa2lsbEFibU9wdGlvbiIsInNraWxsVmFsdWVzIiwiaXNSZWFkT25seSIsImlzRWRpdGluZyIsImluaXRpYWxWYWx1ZXMiLCJnZW5lcmFsIiwiaWQiLCJ1bmRlZmluZWQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiYWNjZXNzX3R5cGUiLCJlbXB0eUJhc2VsaW5lIiwicGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50IiwiZnJvbnRtYXR0ZXJNYXRjaCIsIm1hdGNoIiwiZGVzY3JpcHRpb25NYXRjaCIsInRyaW0iLCJBYm1Ta2lsbE1vZGFsIiwiX3JlZiIsIl92YWx1ZXMkZ2VuZXJhbCIsIl92YWx1ZXMkZ2VuZXJhbDIiLCJfdmFsdWVzJGdlbmVyYWwzIiwiX3ZhbHVlcyRnZW5lcmFsNCIsIl92YWx1ZXMkZ2VuZXJhbDUiLCJfdmFsdWVzJGdlbmVyYWw3IiwiX3ZhbHVlcyRnZW5lcmFsMCIsIl92YWx1ZXMkZ2VuZXJhbDEiLCJhZGRTa2lsbCIsInVwZGF0ZVNraWxsSW5MaXN0IiwicmVtb3ZlU2tpbGwiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzU3VibWl0dGluZyIsInNldElzU3VibWl0dGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd0RlbGV0ZSIsInNldFNob3dEZWxldGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInBlbmRpbmdVcGxvYWQiLCJzZXRQZW5kaW5nVXBsb2FkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJmaWxlSW5wdXRSZWYiLCJpbml0aWFsUmVmIiwiaXNTaGFyZWRTa2lsbCIsImlzU2hhcmVkIiwiY2FuU2hhcmVXaXRoQ29tcGFueSIsInJvbGVfaWQiLCJhY2Nlc3NUeXBlIiwiZWZmZWN0aXZlQWNjZXNzVHlwZSIsInNraWxsSWQiLCJjb250ZW50Qnl0ZXMiLCJpc092ZXJMaW1pdCIsImlzVmFsaWQiLCJoYXNDaGFuZ2VzIiwiY3VycmVudCIsImNyZWF0ZWRCeUxhYmVsIiwiX3ZhbHVlcyRnZW5lcmFsNiIsImNyZWF0ZWRCeSIsImNyZWF0ZWRfYnlfbmFtZSIsImNvbmNhdCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwibGFzdFVwZGF0ZWRMYWJlbCIsIl92YWx1ZXMkZ2VuZXJhbDgiLCJfdmFsdWVzJGdlbmVyYWw5IiwidXBkYXRlZEF0IiwidXBkYXRlZF9hdCIsImNyZWF0ZWRfYXQiLCJwYXJzZWQiLCJEYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiaGFuZGxlQ2xvc2UiLCJoYW5kbGVDYW5jZWwiLCJhaUNoYXRTa2lsbEFibUNhbmNlbCIsIm9wdGlvbiIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJzaG93VXNhZ2VCbG9ja2VkRXJyb3IiLCJfZ2V0VXNhZ2VTdG9yZVN0YXRlIiwiYmxvY2tlZCIsImhhbmRsZVNldFNraWxsVmFsdWVzIiwiX3NraWxsVmFsdWVzJHZhbHVlcyIsIl9yZWYyIiwiZGV0YWlsIiwiYW5hbHl0aWNzU291cmNlIiwiaW5jb21pbmdWYWx1ZXMiLCJpc1ZpZXdPbmx5IiwiaW5jb21pbmdHZW5lcmFsIiwiX29iamVjdFNwcmVhZCIsImluY29taW5nTmFtZSIsImluY29taW5nRGVzY3JpcHRpb24iLCJpbmNvbWluZ0NvbnRlbnQiLCJpbmNvbWluZ0FjY2Vzc1R5cGUiLCJwYXJzZWREZXNjcmlwdGlvbiIsImVkaXRpbmdCYXNlbGluZSIsImludGVudCIsInNvdXJjZSIsImFpQ2hhdFNraWxsQWJtQWNjZXNzIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImNsaWNrIiwiaGFuZGxlQ2hhbmdlRmllbGQiLCJmaWVsZCIsInZhbHVlIiwibGVuZ3RoIiwicHJldiIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUFjY2Vzc1R5cGVDaGFuZ2UiLCJjaGVja2VkIiwiaGFuZGxlVXBsb2FkQ2xpY2siLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQyIiwiaGFuZGxlRmlsZUNoYW5nZSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfZXZlbnQkdGFyZ2V0JGZpbGVzIiwiZmlsZSIsImlzTWFya2Rvd24iLCJ0ZXh0IiwiYmFzZU5hbWUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJmaWxlcyIsImFicnVwdCIsInRlc3QiLCJhaUNoYXRTa2lsbFVwbG9hZCIsInJlc3VsdCIsInNpemUiLCJzZW50IiwicmVwbGFjZSIsIl9wcmV2JGdlbmVyYWwiLCJfcHJldiRnZW5lcmFsMiIsIl9wcmV2JGdlbmVyYWwzIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJwZXJzaXN0U2tpbGwiLCJfcmVmNCIsIl9jYWxsZWUyIiwicGF5bG9hZCIsInVwZGF0ZWQiLCJjcmVhdGVkIiwiX2NvbnRleHQyIiwiaGFuZGxlU2F2ZSIsIl9yZWY1IiwiX2NhbGxlZTMiLCJzYXZlZFNraWxsIiwiX3QyIiwiX2NvbnRleHQzIiwiYWlDaGF0U2tpbGxBYm1Db25maXJtIiwiYWN0aW9uIiwic2tpbGxfaWQiLCJmaW5pc2giLCJoYW5kbGVTYXZlQW5kVXNlIiwiX3JlZjYiLCJfY2FsbGVlNCIsIl90MyIsIl9jb250ZXh0NCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsIiwiaGFuZGxlQ29uZmlybURlbGV0ZSIsIl9yZWY3IiwiX2NhbGxlZTUiLCJfdDQiLCJfY29udGV4dDUiLCJhaUNoYXRTa2lsbEFibURlbGV0ZSIsImhhbmRsZUVkaXRGcm9tVmlldyIsImhhbmRsZVVzZVNraWxsIiwiYWlDaGF0U2tpbGxVc2UiLCJpc19zaGFyZWQiLCJ1c2VGaXJzdEFnZW50IiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJlZGl0T3JDcmVhdGVUaXRsZSIsInZpZXdUaXRsZSIsIm1vZGFsVGl0bGUiLCJwcmV2aWV3Qm9keSIsImNoaWxkcmVuIiwiekluZGV4Iiwib25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsInR5cGUiLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwiJGhlaWdodCIsImh0bWxGb3IiLCJtYXhMZW5ndGgiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwib25DaGFuZ2UiLCIkY2xpcE92ZXJmbG93IiwicmVmIiwiYWNjZXB0IiwiJG92ZXJMaW1pdCIsInVzZWQiLCJtYXgiLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdCIsInRpdGxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIE1vdXNlRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvRmlsZVVwbG9hZCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tICcuLi8uLi9hdG9tcy9Td2l0Y2gnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyLCBpc0NvbGxhYm9yYXRvclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9jcmVhdGVTa2lsbCdcbmltcG9ydCB7IHVwZGF0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvdXBkYXRlU2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgU2tpbGwsIFNraWxsQWNjZXNzVHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgZ2V0VW5pdEZpbGVTaXplIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0VW5pdEZpbGVTaXplJ1xuaW1wb3J0IHtcbiAgZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCxcbiAgaXNTa2lsbENvbnRlbnRPdmVyTGltaXQsXG4gIFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9za2lsbENvbnRlbnRTaXplJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IGdldFVzYWdlU3RvcmVTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZVVzYWdlU3RvcmUnXG5pbXBvcnQgeyBnZXRVc2FnZUJsb2NrZWRCYW5uZXJUZXh0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXNhZ2VCbG9ja2VkTWVzc2FnZSdcbmltcG9ydCB7XG4gIFNDQVNNQnl0ZUNvdW50ZXIsXG4gIFNDQVNNQ2FuY2VsQnV0dG9uLFxuICBTQ0FTTUNsb3NlQnV0dG9uLFxuICBTQ0FTTUJvZHksXG4gIFNDQVNNRGVsZXRlU2xvdCxcbiAgU0NBU01GaWVsZEJveCxcbiAgU0NBU01GaWVsZElucHV0LFxuICBTQ0FTTUZpZWxkTGFiZWwsXG4gIFNDQVNNRmllbGRUZXh0YXJlYSxcbiAgU0NBU01Gb290ZXIsXG4gIFNDQVNNSGVhZGVyLFxuICBTQ0FTTUhlYWRlclRpdGxlLFxuICBTQ0FTTUhpZGRlbkZpbGVJbnB1dCxcbiAgU0NBU01JbnN0cnVjdGlvbnNGaWVsZCxcbiAgU0NBU01JbnN0cnVjdGlvbnNIZWFkZXIsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zUGFuZWwsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWEsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGUsXG4gIFNDQVNNTWV0YWRhdGFJdGVtLFxuICBTQ0FTTVByZXZpZXdCb2R5LFxuICBTQ0FTTVByZXZpZXdDb250ZW50Qm94LFxuICBTQ0FTTVByZXZpZXdDb250ZW50UGFuZWwsXG4gIFNDQVNNUHJldmlld0Rlc2NyaXB0aW9uLFxuICBTQ0FTTVByZXZpZXdIZWFkaW5nQmxvY2ssXG4gIFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWwsXG4gIFNDQVNNUHJldmlld01ldGFkYXRhUm93LFxuICBTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlLFxuICBTQ0FTTVByZXZpZXdOYW1lLFxuICBTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvbixcbiAgU0NBU01TYXZlUHJpbWFyeUJ1dHRvbixcbiAgU0NBU01Td2l0Y2hMYWJlbCxcbiAgU0NBU01Td2l0Y2hSb3csXG4gIFNDQVNNVXBsb2FkQnV0dG9uLFxuICBTQ0FTTVVzZVNraWxsQnV0dG9uLFxuICBTQ0FTTVdyYXBwZXIsXG59IGZyb20gJy4vQWJtU2tpbGxNb2RhbC5zdHlsZXMnXG5cbmV4cG9ydCBjb25zdCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCA9ICdtYWlhLXVzZS1za2lsbC1hZnRlci1zYXZlJ1xuXG50eXBlIFNraWxsTW9kYWxHZW5lcmFsID0ge1xuICBpZD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGNvbnRlbnQ/OiBzdHJpbmdcbiAgYWNjZXNzX3R5cGU/OiBTa2lsbEFjY2Vzc1R5cGVcbiAgY3JlYXRlZF9ieV9uYW1lPzogc3RyaW5nXG4gIGNyZWF0ZWRfYXQ/OiBzdHJpbmdcbiAgdXBkYXRlZF9hdD86IHN0cmluZ1xufVxuXG50eXBlIFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogYm9vbGVhblxuICBpc1JlYWRPbmx5PzogYm9vbGVhblxuICBpc1NoYXJlZD86IGJvb2xlYW5cbiAgaW50ZW50PzogJ2dlbmVyYXRlJyB8ICd3cml0ZScgfCAndXBsb2FkJ1xuICBnZW5lcmFsPzogU2tpbGxNb2RhbEdlbmVyYWxcbn1cblxudHlwZSBTa2lsbEFibU9wdGlvbiA9ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnXG50eXBlIFNraWxsQWJtQWNjZXNzU291cmNlID0gJ2NhdGFsb2cnIHwgJ2Ryb3Bkb3duJyB8ICdlbXB0eSdcblxuY29uc3QgcmVzb2x2ZVNraWxsQWJtT3B0aW9uID0gKHNraWxsVmFsdWVzOiBTa2lsbE1vZGFsVmFsdWVzKTogU2tpbGxBYm1PcHRpb24gPT4ge1xuICBpZiAoc2tpbGxWYWx1ZXMuaXNSZWFkT25seSkgcmV0dXJuICd2aWV3J1xuICBpZiAoc2tpbGxWYWx1ZXMuaXNFZGl0aW5nKSByZXR1cm4gJ2VkaXQnXG4gIHJldHVybiAnY3JlYXRlJ1xufVxuXG50eXBlIEFibVNraWxsTW9kYWxQcm9wcyA9IHtcbiAgYWRkU2tpbGw/OiAoc2tpbGw6IFNraWxsKSA9PiB2b2lkXG4gIHVwZGF0ZVNraWxsSW5MaXN0PzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICByZW1vdmVTa2lsbD86IChza2lsbElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuY29uc3QgaW5pdGlhbFZhbHVlczogU2tpbGxNb2RhbFZhbHVlcyA9IHtcbiAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgZ2VuZXJhbDoge1xuICAgIGlkOiB1bmRlZmluZWQsXG4gICAgbmFtZTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGNvbnRlbnQ6ICcnLFxuICAgIGFjY2Vzc190eXBlOiAnb25seV9tZScsXG4gIH0sXG59XG5cbnR5cGUgU2tpbGxGb3JtQmFzZWxpbmUgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIGNvbnRlbnQ6IHN0cmluZ1xuICBhY2Nlc3NfdHlwZTogU2tpbGxBY2Nlc3NUeXBlXG59XG5cbmNvbnN0IGVtcHR5QmFzZWxpbmU6IFNraWxsRm9ybUJhc2VsaW5lID0ge1xuICBuYW1lOiAnJyxcbiAgZGVzY3JpcHRpb246ICcnLFxuICBjb250ZW50OiAnJyxcbiAgYWNjZXNzX3R5cGU6ICdvbmx5X21lJyxcbn1cblxuY29uc3QgcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50ID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGZyb250bWF0dGVyTWF0Y2ggPSBjb250ZW50Lm1hdGNoKC9eLS0tXFxzKlxcbihbXFxzXFxTXSo/KVxcbi0tLS8pXG4gIGlmICghZnJvbnRtYXR0ZXJNYXRjaCkgcmV0dXJuICcnXG4gIGNvbnN0IGRlc2NyaXB0aW9uTWF0Y2ggPSBmcm9udG1hdHRlck1hdGNoWzFdLm1hdGNoKC9eZGVzY3JpcHRpb246XFxzKiguKykkL20pXG4gIHJldHVybiBkZXNjcmlwdGlvbk1hdGNoID8gZGVzY3JpcHRpb25NYXRjaFsxXS50cmltKCkgOiAnJ1xufVxuXG5leHBvcnQgY29uc3QgQWJtU2tpbGxNb2RhbCA9ICh7IGFkZFNraWxsLCB1cGRhdGVTa2lsbEluTGlzdCwgcmVtb3ZlU2tpbGwgfTogQWJtU2tpbGxNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dEZWxldGUsIHNldFNob3dEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwZW5kaW5nVXBsb2FkLCBzZXRQZW5kaW5nVXBsb2FkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGU8U2tpbGxNb2RhbFZhbHVlcz4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGluaXRpYWxSZWYgPSB1c2VSZWY8U2tpbGxGb3JtQmFzZWxpbmU+KGVtcHR5QmFzZWxpbmUpXG5cbiAgY29uc3QgaXNSZWFkT25seSA9ICEhdmFsdWVzLmlzUmVhZE9ubHlcbiAgY29uc3QgaXNTaGFyZWRTa2lsbCA9ICEhdmFsdWVzLmlzU2hhcmVkXG4gIGNvbnN0IGNhblNoYXJlV2l0aENvbXBhbnkgPSAhaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgJiYgIWlzUmVhZE9ubHlcblxuICBjb25zdCBuYW1lID0gdmFsdWVzLmdlbmVyYWw/Lm5hbWUgfHwgJydcbiAgY29uc3QgZGVzY3JpcHRpb24gPSB2YWx1ZXMuZ2VuZXJhbD8uZGVzY3JpcHRpb24gfHwgJydcbiAgY29uc3QgY29udGVudCA9IHZhbHVlcy5nZW5lcmFsPy5jb250ZW50IHx8ICcnXG4gIGNvbnN0IGFjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IHZhbHVlcy5nZW5lcmFsPy5hY2Nlc3NfdHlwZSB8fCAnb25seV9tZSdcbiAgY29uc3QgZWZmZWN0aXZlQWNjZXNzVHlwZTogU2tpbGxBY2Nlc3NUeXBlID0gY2FuU2hhcmVXaXRoQ29tcGFueSA/IGFjY2Vzc1R5cGUgOiAnb25seV9tZSdcbiAgY29uc3Qgc2tpbGxJZCA9IHZhbHVlcy5nZW5lcmFsPy5pZFxuICBjb25zdCBjb250ZW50Qnl0ZXMgPSB1c2VNZW1vKCgpID0+IGdldFNraWxsQ29udGVudEJ5dGVMZW5ndGgoY29udGVudCksIFtjb250ZW50XSlcbiAgY29uc3QgaXNPdmVyTGltaXQgPSBjb250ZW50Qnl0ZXMgPiBTS0lMTF9DT05URU5UX01BWF9CWVRFU1xuICBjb25zdCBpc1ZhbGlkID0gISFuYW1lLnRyaW0oKSAmJiAhIWNvbnRlbnQudHJpbSgpICYmICFpc092ZXJMaW1pdFxuICBjb25zdCBoYXNDaGFuZ2VzID1cbiAgICBuYW1lLnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50Lm5hbWUgfHxcbiAgICBkZXNjcmlwdGlvbi50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5kZXNjcmlwdGlvbiB8fFxuICAgIGNvbnRlbnQudHJpbSgpICE9PSBpbml0aWFsUmVmLmN1cnJlbnQuY29udGVudCB8fFxuICAgIChjYW5TaGFyZVdpdGhDb21wYW55ICYmIGVmZmVjdGl2ZUFjY2Vzc1R5cGUgIT09IGluaXRpYWxSZWYuY3VycmVudC5hY2Nlc3NfdHlwZSlcblxuICBjb25zdCBjcmVhdGVkQnlMYWJlbCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZWRCeSA9IHZhbHVlcy5nZW5lcmFsPy5jcmVhdGVkX2J5X25hbWU/LnRyaW0oKVxuICAgIGlmIChjcmVhdGVkQnkpIHJldHVybiBjcmVhdGVkQnlcbiAgICByZXR1cm4gaXNTaGFyZWRTa2lsbCA/ICcnIDogYCR7dXNlci5maXJzdE5hbWV9ICR7dXNlci5sYXN0TmFtZX1gLnRyaW0oKVxuICB9LCBbdmFsdWVzLmdlbmVyYWw/LmNyZWF0ZWRfYnlfbmFtZSwgdXNlci5maXJzdE5hbWUsIHVzZXIubGFzdE5hbWUsIGlzU2hhcmVkU2tpbGxdKVxuXG4gIGNvbnN0IGxhc3RVcGRhdGVkTGFiZWwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1cGRhdGVkQXQgPSB2YWx1ZXMuZ2VuZXJhbD8udXBkYXRlZF9hdCB8fCB2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9hdFxuICAgIGlmICghdXBkYXRlZEF0KSByZXR1cm4gJydcbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgRGF0ZSh1cGRhdGVkQXQpXG4gICAgaWYgKE51bWJlci5pc05hTihwYXJzZWQuZ2V0VGltZSgpKSkgcmV0dXJuICcnXG4gICAgcmV0dXJuIGZvcm1hdERhdGUocGFyc2VkKVxuICB9LCBbdmFsdWVzLmdlbmVyYWw/LnVwZGF0ZWRfYXQsIHZhbHVlcy5nZW5lcmFsPy5jcmVhdGVkX2F0XSlcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgc2V0U2hvd0RlbGV0ZShmYWxzZSlcbiAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgIHNldFZhbHVlcyhpbml0aWFsVmFsdWVzKVxuICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGVtcHR5QmFzZWxpbmVcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibUNhbmNlbCwgeyBvcHRpb246IHJlc29sdmVTa2lsbEFibU9wdGlvbih2YWx1ZXMpIH0pXG4gICAgaGFuZGxlQ2xvc2UoKVxuICB9LCBbZXZlbnRBbXBsaXR1ZGUsIGhhbmRsZUNsb3NlLCB2YWx1ZXNdKVxuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgaGFuZGxlQ2FuY2VsKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtoYW5kbGVDYW5jZWxdXG4gIClcblxuICBjb25zdCBzaG93VXNhZ2VCbG9ja2VkRXJyb3IgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBibG9ja2VkIH0gPSBnZXRVc2FnZVN0b3JlU3RhdGUoKVxuICAgIGlmICghYmxvY2tlZCkgcmV0dXJuIGZhbHNlXG4gICAgaGFuZGxlU25hY2tiYXJFcnJvcihnZXRVc2FnZUJsb2NrZWRCYW5uZXJUZXh0KCkpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2V0U2tpbGxWYWx1ZXMgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbFZhbHVlcywgYW5hbHl0aWNzU291cmNlIH0gPSBldmVudC5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGxWYWx1ZXMpIHJldHVyblxuXG4gICAgICBjb25zdCBpbmNvbWluZ1ZhbHVlcyA9IHNraWxsVmFsdWVzLnZhbHVlcyB8fCB7fVxuICAgICAgY29uc3QgaXNWaWV3T25seSA9ICEhaW5jb21pbmdWYWx1ZXMuaXNSZWFkT25seVxuICAgICAgaWYgKGdldFVzYWdlU3RvcmVTdGF0ZSgpLmJsb2NrZWQgJiYgIWlzVmlld09ubHkpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihnZXRVc2FnZUJsb2NrZWRCYW5uZXJUZXh0KCkpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBpbmNvbWluZ0dlbmVyYWwgPSB7XG4gICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuZ2VuZXJhbCxcbiAgICAgICAgLi4uaW5jb21pbmdWYWx1ZXMuZ2VuZXJhbCxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluY29taW5nTmFtZSA9IChpbmNvbWluZ0dlbmVyYWwubmFtZSB8fCAnJykudHJpbSgpXG4gICAgICBjb25zdCBpbmNvbWluZ0Rlc2NyaXB0aW9uID0gKGluY29taW5nR2VuZXJhbC5kZXNjcmlwdGlvbiB8fCAnJykudHJpbSgpXG4gICAgICBjb25zdCBpbmNvbWluZ0NvbnRlbnQgPSAoaW5jb21pbmdHZW5lcmFsLmNvbnRlbnQgfHwgJycpLnRyaW0oKVxuICAgICAgY29uc3QgaW5jb21pbmdBY2Nlc3NUeXBlOiBTa2lsbEFjY2Vzc1R5cGUgPSBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKVxuICAgICAgICA/ICdvbmx5X21lJ1xuICAgICAgICA6IGluY29taW5nR2VuZXJhbC5hY2Nlc3NfdHlwZSB8fCAnb25seV9tZSdcbiAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID1cbiAgICAgICAgaW5jb21pbmdEZXNjcmlwdGlvbiB8fCAoaW5jb21pbmdDb250ZW50ID8gcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50KGluY29taW5nQ29udGVudCkgOiAnJylcblxuICAgICAgY29uc3QgZWRpdGluZ0Jhc2VsaW5lOiBTa2lsbEZvcm1CYXNlbGluZSA9IHtcbiAgICAgICAgbmFtZTogaW5jb21pbmdOYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogcGFyc2VkRGVzY3JpcHRpb24sXG4gICAgICAgIGNvbnRlbnQ6IGluY29taW5nQ29udGVudCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IGluY29taW5nQWNjZXNzVHlwZSxcbiAgICAgIH1cbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGluY29taW5nVmFsdWVzLmlzRWRpdGluZyA/IGVkaXRpbmdCYXNlbGluZSA6IGVtcHR5QmFzZWxpbmVcblxuICAgICAgc2V0VmFsdWVzKHtcbiAgICAgICAgLi4uaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgLi4uc2tpbGxWYWx1ZXMudmFsdWVzLFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4uaW5jb21pbmdHZW5lcmFsLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwYXJzZWREZXNjcmlwdGlvbixcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogaW5jb21pbmdBY2Nlc3NUeXBlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldFBlbmRpbmdVcGxvYWQoc2tpbGxWYWx1ZXMudmFsdWVzPy5pbnRlbnQgPT09ICd1cGxvYWQnKVxuICAgICAgc2V0SXNPcGVuKCEhc2tpbGxWYWx1ZXMuaXNPcGVuKVxuXG4gICAgICBpZiAoc2tpbGxWYWx1ZXMuaXNPcGVuKSB7XG4gICAgICAgIGNvbnN0IGluY29taW5nVmFsdWVzID0geyAuLi5pbml0aWFsVmFsdWVzLCAuLi5za2lsbFZhbHVlcy52YWx1ZXMgfVxuICAgICAgICBjb25zdCBzb3VyY2U6IFNraWxsQWJtQWNjZXNzU291cmNlID1cbiAgICAgICAgICBhbmFseXRpY3NTb3VyY2UgPT09ICdkcm9wZG93bicgfHwgYW5hbHl0aWNzU291cmNlID09PSAnZW1wdHknIHx8IGFuYWx5dGljc1NvdXJjZSA9PT0gJ2NhdGFsb2cnXG4gICAgICAgICAgICA/IGFuYWx5dGljc1NvdXJjZVxuICAgICAgICAgICAgOiAnY2F0YWxvZydcbiAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsQWJtQWNjZXNzLCB7XG4gICAgICAgICAgb3B0aW9uOiByZXNvbHZlU2tpbGxBYm1PcHRpb24oaW5jb21pbmdWYWx1ZXMpLFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldFNraWxsVmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldFNraWxsVmFsdWVzKVxuICAgIH1cbiAgfSwgW2V2ZW50QW1wbGl0dWRlLCBoYW5kbGVTbmFja2JhckVycm9yLCB1c2VyLnJvbGVfaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiBwZW5kaW5nVXBsb2FkKSB7XG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgICB9XG4gIH0sIFtpc09wZW4sIHBlbmRpbmdVcGxvYWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUZpZWxkID0gKGZpZWxkOiAnbmFtZScgfCAnZGVzY3JpcHRpb24nIHwgJ2NvbnRlbnQnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGZpZWxkID09PSAnY29udGVudCcgJiYgaXNTa2lsbENvbnRlbnRPdmVyTGltaXQodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoIC0gY29udGVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuY29udGVudFNpemVFcnJvcicpKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZ2VuZXJhbDogeyAuLi5wcmV2LmdlbmVyYWwsIFtmaWVsZF06IHZhbHVlIH0sXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoIWNhblNoYXJlV2l0aENvbXBhbnkpIHJldHVyblxuICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgIGFjY2Vzc190eXBlOiBjaGVja2VkID8gJ2NvbXBhbnknIDogJ29ubHlfbWUnLFxuICAgICAgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwbG9hZENsaWNrID0gKCkgPT4ge1xuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlQ2hhbmdlID0gYXN5bmMgKGV2ZW50OiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXM/LlswXVxuICAgIGlmIChmaWxlSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQudmFsdWUgPSAnJ1xuICAgIH1cbiAgICBpZiAoIWZpbGUpIHJldHVyblxuXG4gICAgY29uc3QgaXNNYXJrZG93biA9IC9cXC4obWR8bWFya2Rvd24pJC9pLnRlc3QoZmlsZS5uYW1lKVxuICAgIGlmICghaXNNYXJrZG93bikge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXBsb2FkLCB7IHJlc3VsdDogJ3R5cGVfZXJyb3InIH0pXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmlsZS5zaXplID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVMpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFVwbG9hZCwgeyByZXN1bHQ6ICdzaXplX2Vycm9yJyB9KVxuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgZmlsZS50ZXh0KClcbiAgICAgIGlmIChpc1NraWxsQ29udGVudE92ZXJMaW1pdCh0ZXh0KSkge1xuICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxVcGxvYWQsIHsgcmVzdWx0OiAnc2l6ZV9lcnJvcicgfSlcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50KHRleHQpXG4gICAgICBzZXRWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGNvbnRlbnQ6IHRleHQsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHByZXYuZ2VuZXJhbD8uZGVzY3JpcHRpb24/LnRyaW0oKVxuICAgICAgICAgICAgPyBwcmV2LmdlbmVyYWwuZGVzY3JpcHRpb25cbiAgICAgICAgICAgIDogcGFyc2VkRGVzY3JpcHRpb24gfHwgcHJldi5nZW5lcmFsPy5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBwcmV2LmdlbmVyYWw/Lm5hbWU/LnRyaW0oKSA/IHByZXYuZ2VuZXJhbC5uYW1lIDogYmFzZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFVwbG9hZCwgeyByZXN1bHQ6ICdzdWNjZXNzJyB9KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGVyc2lzdFNraWxsID0gYXN5bmMgKCk6IFByb21pc2U8U2tpbGwgfCBudWxsPiA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIG5hbWU6IG5hbWUudHJpbSgpLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLnRyaW0oKSxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnQudHJpbSgpLFxuICAgICAgYWNjZXNzX3R5cGU6IGVmZmVjdGl2ZUFjY2Vzc1R5cGUsXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlcy5pc0VkaXRpbmcgJiYgc2tpbGxJZCkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IHVwZGF0ZVNraWxsKHNraWxsSWQsIHBheWxvYWQpXG4gICAgICB1cGRhdGVTa2lsbEluTGlzdD8uKHVwZGF0ZWQpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMudXBkYXRlU3VjY2VzcycpKVxuICAgICAgcmV0dXJuIHVwZGF0ZWRcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgY3JlYXRlU2tpbGwocGF5bG9hZClcbiAgICBhZGRTa2lsbD8uKGNyZWF0ZWQpXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLmNyZWF0ZVN1Y2Nlc3MnKSlcbiAgICByZXR1cm4gY3JlYXRlZFxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nIHx8ICFoYXNDaGFuZ2VzKSByZXR1cm5cbiAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2F2ZWRTa2lsbCA9IGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBpZiAoc2F2ZWRTa2lsbCkge1xuICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxBYm1Db25maXJtLCB7XG4gICAgICAgICAgb3B0aW9uOiB2YWx1ZXMuaXNFZGl0aW5nID8gJ2VkaXQnIDogJ2NyZWF0ZScsXG4gICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXG4gICAgICAgICAgYWNjZXNzX3R5cGU6IGVmZmVjdGl2ZUFjY2Vzc1R5cGUsXG4gICAgICAgICAgc2tpbGxfaWQ6IHNhdmVkU2tpbGwuaWQsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLnVwZGF0ZUVycm9yJykgOiB0KCdteVNraWxscy5jcmVhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZUFuZFVzZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nKSByZXR1cm5cbiAgICBpZiAoc2hvd1VzYWdlQmxvY2tlZEVycm9yKCkpIHJldHVyblxuICAgIHNldElzU3VibWl0dGluZyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzYXZlZFNraWxsID0gYXdhaXQgcGVyc2lzdFNraWxsKClcbiAgICAgIGlmIChzYXZlZFNraWxsKSB7XG4gICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibUNvbmZpcm0sIHtcbiAgICAgICAgICBvcHRpb246IHZhbHVlcy5pc0VkaXRpbmcgPyAnZWRpdCcgOiAnY3JlYXRlJyxcbiAgICAgICAgICBhY3Rpb246ICdzYXZlX2FuZF91c2UnLFxuICAgICAgICAgIGFjY2Vzc190eXBlOiBlZmZlY3RpdmVBY2Nlc3NUeXBlLFxuICAgICAgICAgIHNraWxsX2lkOiBzYXZlZFNraWxsLmlkLFxuICAgICAgICB9KVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICAgICAgZGV0YWlsOiB7IHNraWxsOiBzYXZlZFNraWxsIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoc2tpbGxJZClcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibURlbGV0ZSwgeyBza2lsbF9pZDogc2tpbGxJZCwgc291cmNlOiAnbW9kYWwnIH0pXG4gICAgICByZW1vdmVTa2lsbD8uKHNraWxsSWQpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMuZGVsZXRlU3VjY2VzcycpKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmRlbGV0ZUVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdEZyb21WaWV3ID0gKCkgPT4ge1xuICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7IC4uLnByZXYsIGlzUmVhZE9ubHk6IGZhbHNlIH0pKVxuICB9XG5cbiAgLyoqIFNraWxsIGFqZW5hIGVuIG1vZG8gbGVjdHVyYTogYWJyZSB1biBjaGF0IG51ZXZvIGNvbiBlbCBwcmltZXIgYWdlbnRlIHkgbGEgbWVuY2nDs24geWEgcHVlc3RhLiAqL1xuICBjb25zdCBoYW5kbGVVc2VTa2lsbCA9ICgpID0+IHtcbiAgICBpZiAoIXNraWxsSWQpIHJldHVyblxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFVzZSwge1xuICAgICAgc2tpbGxfaWQ6IHNraWxsSWQsXG4gICAgICBhY2Nlc3NfdHlwZTogYWNjZXNzVHlwZSxcbiAgICAgIHNvdXJjZTogJ3ZpZXdfbW9kYWwnLFxuICAgICAgaXNfc2hhcmVkOiBpc1NoYXJlZFNraWxsLFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbDogeyBpZDogc2tpbGxJZCwgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIGFjY2Vzc190eXBlOiBhY2Nlc3NUeXBlIH0sXG4gICAgICAgICAgdXNlRmlyc3RBZ2VudDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICAgIGhhbmRsZUNsb3NlKClcbiAgfVxuXG4gIGlmICghaXNPcGVuKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKVxuICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuIG51bGxcblxuICBjb25zdCBlZGl0T3JDcmVhdGVUaXRsZSA9IHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy5lZGl0VGl0bGUnKSA6IHQoJ215U2tpbGxzLmNyZWF0ZVRpdGxlJylcbiAgY29uc3Qgdmlld1RpdGxlID0gaXNTaGFyZWRTa2lsbCA/IHQoJ215U2tpbGxzLnZpZXdUaXRsZScpIDogdCgnbXlTa2lsbHMudmlld093blRpdGxlJylcbiAgY29uc3QgbW9kYWxUaXRsZSA9IGlzUmVhZE9ubHkgPyB2aWV3VGl0bGUgOiBlZGl0T3JDcmVhdGVUaXRsZVxuXG4gIGNvbnN0IHByZXZpZXdCb2R5ID0gKFxuICAgIDxTQ0FTTVByZXZpZXdCb2R5PlxuICAgICAgPFNDQVNNUHJldmlld0hlYWRpbmdCbG9jaz5cbiAgICAgICAgPFNDQVNNUHJldmlld05hbWU+e25hbWV9PC9TQ0FTTVByZXZpZXdOYW1lPlxuICAgICAgICB7ZGVzY3JpcHRpb24gPyA8U0NBU01QcmV2aWV3RGVzY3JpcHRpb24+e2Rlc2NyaXB0aW9ufTwvU0NBU01QcmV2aWV3RGVzY3JpcHRpb24+IDogbnVsbH1cbiAgICAgIDwvU0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrPlxuXG4gICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFSb3c+XG4gICAgICAgIHtjcmVhdGVkQnlMYWJlbCA/IChcbiAgICAgICAgICA8U0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD57dCgnbXlTa2lsbHMuY3JlYXRlZEJ5Jyl9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+e2NyZWF0ZWRCeUxhYmVsfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT5cbiAgICAgICAgICA8L1NDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAge2xhc3RVcGRhdGVkTGFiZWwgPyAoXG4gICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmxhc3RVcGRhdGVkJyl9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+e2xhc3RVcGRhdGVkTGFiZWx9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgIDwvU0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IWlzU2hhcmVkU2tpbGwgPyAoXG4gICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmVuYWJsZWRMYWJlbCcpfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgICAgICB7YWNjZXNzVHlwZSA9PT0gJ2NvbXBhbnknID8gdCgnbXlTa2lsbHMudmlzaWJpbGl0eUV2ZXJ5b25lJykgOiB0KCdteVNraWxscy52aXNpYmlsaXR5T25seU1lJyl9XG4gICAgICAgICAgICA8L1NDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+XG4gICAgICAgICAgPC9TQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDQVNNUHJldmlld01ldGFkYXRhUm93PlxuXG4gICAgICA8U0NBU01QcmV2aWV3Q29udGVudFBhbmVsPlxuICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNUaXRsZT57dCgnbXlTa2lsbHMuaW5zdHJ1Y3Rpb25zTGFiZWwnKX08L1NDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+XG4gICAgICAgIDxTQ0FTTVByZXZpZXdDb250ZW50Qm94Pntjb250ZW50fTwvU0NBU01QcmV2aWV3Q29udGVudEJveD5cbiAgICAgIDwvU0NBU01QcmV2aWV3Q29udGVudFBhbmVsPlxuICAgIDwvU0NBU01QcmV2aWV3Qm9keT5cbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17MTExMn0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBU01XcmFwcGVyIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgPFNDQVNNSGVhZGVyPlxuICAgICAgICAgIDxTQ0FTTUhlYWRlclRpdGxlPnttb2RhbFRpdGxlfTwvU0NBU01IZWFkZXJUaXRsZT5cbiAgICAgICAgICA8U0NBU01DbG9zZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2FuY2VsfSBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5jbG9zZScpfT5cbiAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiNhNmE2YTZcIiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgPC9TQ0FTTUNsb3NlQnV0dG9uPlxuICAgICAgICA8L1NDQVNNSGVhZGVyPlxuXG4gICAgICAgIHtpc1JlYWRPbmx5ID8gKFxuICAgICAgICAgIHByZXZpZXdCb2R5XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNDQVNNQm9keT5cbiAgICAgICAgICAgIDxTQ0FTTUZpZWxkQm94ICRoZWlnaHQ9ezUwfT5cbiAgICAgICAgICAgICAgPFNDQVNNRmllbGRMYWJlbCBodG1sRm9yPVwic2tpbGwtbmFtZS1pbnB1dFwiPnt0KCdteVNraWxscy5uYW1lTGFiZWwnKX08L1NDQVNNRmllbGRMYWJlbD5cbiAgICAgICAgICAgICAgPFNDQVNNRmllbGRJbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwic2tpbGwtbmFtZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG1heExlbmd0aD17MTUwfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17bmFtZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnbmFtZScsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NDQVNNRmllbGRCb3g+XG5cbiAgICAgICAgICAgIDxTQ0FTTUZpZWxkQm94ICRoZWlnaHQ9ezEyMH0gJGNsaXBPdmVyZmxvdz5cbiAgICAgICAgICAgICAgPFNDQVNNRmllbGRMYWJlbCBodG1sRm9yPVwic2tpbGwtZGVzY3JpcHRpb24taW5wdXRcIj57dCgnbXlTa2lsbHMuZGVzY3JpcHRpb25MYWJlbCcpfTwvU0NBU01GaWVsZExhYmVsPlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZFRleHRhcmVhXG4gICAgICAgICAgICAgICAgaWQ9XCJza2lsbC1kZXNjcmlwdGlvbi1pbnB1dFwiXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoPXs1MDB9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLmRlc2NyaXB0aW9uUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17ZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gaGFuZGxlQ2hhbmdlRmllbGQoJ2Rlc2NyaXB0aW9uJywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU0NBU01GaWVsZEJveD5cblxuICAgICAgICAgICAge2NhblNoYXJlV2l0aENvbXBhbnkgPyAoXG4gICAgICAgICAgICAgIDxTQ0FTTVN3aXRjaFJvdz5cbiAgICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXthY2Nlc3NUeXBlID09PSAnY29tcGFueSd9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQWNjZXNzVHlwZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5zaGFyZVdpdGhDb21wYW55Jyl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8U0NBU01Td2l0Y2hMYWJlbD57dCgnbXlTa2lsbHMuc2hhcmVXaXRoQ29tcGFueScpfTwvU0NBU01Td2l0Y2hMYWJlbD5cbiAgICAgICAgICAgICAgPC9TQ0FTTVN3aXRjaFJvdz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNQYW5lbD5cbiAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc1RpdGxlPnt0KCdteVNraWxscy5pbnN0cnVjdGlvbnNMYWJlbCcpfTwvU0NBU01JbnN0cnVjdGlvbnNUaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NBU01VcGxvYWRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVVwbG9hZENsaWNrfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgICAgICAgIDxGaWxlVXBsb2FkIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gY29sb3I9XCIjMDhDXCIgLz5cbiAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy51cGxvYWRNZCcpfVxuICAgICAgICAgICAgICAgIDwvU0NBU01VcGxvYWRCdXR0b24+XG4gICAgICAgICAgICAgICAgPFNDQVNNSGlkZGVuRmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgIGFjY2VwdD1cIi5tZCwubWFya2Rvd24sdGV4dC9tYXJrZG93blwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDQVNNSW5zdHJ1Y3Rpb25zSGVhZGVyPlxuXG4gICAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc0ZpZWxkPlxuICAgICAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc1RleHRhcmVhXG4gICAgICAgICAgICAgICAgICBpZD1cInNraWxsLWNvbnRlbnQtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLmNvbnRlbnRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCdjb250ZW50JywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NDQVNNSW5zdHJ1Y3Rpb25zRmllbGQ+XG4gICAgICAgICAgICAgIDxTQ0FTTUJ5dGVDb3VudGVyICRvdmVyTGltaXQ9e2lzT3ZlckxpbWl0fSBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuYnl0ZXNDb3VudGVyJywge1xuICAgICAgICAgICAgICAgICAgdXNlZDogZ2V0VW5pdEZpbGVTaXplKGNvbnRlbnRCeXRlcyksXG4gICAgICAgICAgICAgICAgICBtYXg6IGdldFVuaXRGaWxlU2l6ZShTS0lMTF9DT05URU5UX01BWF9CWVRFUyksXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvU0NBU01CeXRlQ291bnRlcj5cbiAgICAgICAgICAgIDwvU0NBU01JbnN0cnVjdGlvbnNQYW5lbD5cbiAgICAgICAgICA8L1NDQVNNQm9keT5cbiAgICAgICAgKX1cblxuICAgICAgICA8U0NBU01Gb290ZXI+XG4gICAgICAgICAge2lzUmVhZE9ubHkgJiYgaXNTaGFyZWRTa2lsbCA/IChcbiAgICAgICAgICAgIDxTQ0FTTVVzZVNraWxsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVVc2VTa2lsbH0+XG4gICAgICAgICAgICAgIHt0KCdteVNraWxscy51c2VTa2lsbCcpfVxuICAgICAgICAgICAgPC9TQ0FTTVVzZVNraWxsQnV0dG9uPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAge2lzUmVhZE9ubHkgJiYgIWlzU2hhcmVkU2tpbGwgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8U0NBU01EZWxldGVTbG90PlxuICAgICAgICAgICAgICAgIDxTQ0FTTUNhbmNlbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0RlbGV0ZSh0cnVlKX0+XG4gICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTUNhbmNlbEJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgIDxTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVFZGl0RnJvbVZpZXd9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgIDwvU0NBU01TYXZlUHJpbWFyeUJ1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgeyFpc1JlYWRPbmx5ID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3ZhbHVlcy5pc0VkaXRpbmcgPyAoXG4gICAgICAgICAgICAgICAgPFNDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FTTUNhbmNlbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0RlbGV0ZSh0cnVlKX0gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5kZWxldGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NBU01DYW5jZWxCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U0NBU01TYXZlT3V0bGluZWRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVNhdmVBbmRVc2V9IGRpc2FibGVkPXshaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgIHtpc1N1Ym1pdHRpbmcgPyA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+IDogdCgnbXlTa2lsbHMuc2F2ZUFuZFVzZScpfVxuICAgICAgICAgICAgICA8L1NDQVNNU2F2ZU91dGxpbmVkQnV0dG9uPlxuICAgICAgICAgICAgICA8U0NBU01TYXZlUHJpbWFyeUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNhdmV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpc1N1Ym1pdHRpbmcgPyA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+IDogdCgnbXlTa2lsbHMuc2F2ZScpfVxuICAgICAgICAgICAgICA8L1NDQVNNU2F2ZVByaW1hcnlCdXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TQ0FTTUZvb3Rlcj5cbiAgICAgIDwvU0NBU01XcmFwcGVyPlxuXG4gICAgICB7c2hvd0RlbGV0ZSAmJiBza2lsbElkID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbmFtZSwgaWQ6IHNraWxsSWQgfX1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBjb250YWluZXJcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLFNBQWtDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2xHLFNBQVNDLFlBQVks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
711
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwiRmlsZVVwbG9hZCIsInVzZVRyYW5zbGF0aW9uIiwiQmFja2Ryb3AiLCJMb2FkZXIiLCJTd2l0Y2giLCJTRUNUSU9OUyIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVNuYWNrQmFyTWFuYWdlciIsImZvcm1hdERhdGUiLCJjcmVhdGVTa2lsbCIsInVwZGF0ZVNraWxsIiwiZGVsZXRlU2tpbGwiLCJnZXRVbml0RmlsZVNpemUiLCJnZXRTa2lsbENvbnRlbnRCeXRlTGVuZ3RoIiwiaXNTa2lsbENvbnRlbnRPdmVyTGltaXQiLCJTS0lMTF9DT05URU5UX01BWF9CWVRFUyIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTQ0FTTUJ5dGVDb3VudGVyIiwiU0NBU01DYW5jZWxCdXR0b24iLCJTQ0FTTUNsb3NlQnV0dG9uIiwiU0NBU01Cb2R5IiwiU0NBU01EZWxldGVTbG90IiwiU0NBU01GaWVsZEJveCIsIlNDQVNNRmllbGRJbnB1dCIsIlNDQVNNRmllbGRMYWJlbCIsIlNDQVNNRmllbGRUZXh0YXJlYSIsIlNDQVNNRm9vdGVyIiwiU0NBU01IZWFkZXIiLCJTQ0FTTUhlYWRlclRpdGxlIiwiU0NBU01IaWRkZW5GaWxlSW5wdXQiLCJTQ0FTTUluc3RydWN0aW9uc0ZpZWxkIiwiU0NBU01JbnN0cnVjdGlvbnNIZWFkZXIiLCJTQ0FTTUluc3RydWN0aW9uc1BhbmVsIiwiU0NBU01JbnN0cnVjdGlvbnNUZXh0YXJlYSIsIlNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGUiLCJTQ0FTTU1ldGFkYXRhSXRlbSIsIlNDQVNNUHJldmlld0JvZHkiLCJTQ0FTTVByZXZpZXdDb250ZW50Qm94IiwiU0NBU01QcmV2aWV3Q29udGVudFBhbmVsIiwiU0NBU01QcmV2aWV3RGVzY3JpcHRpb24iLCJTQ0FTTVByZXZpZXdIZWFkaW5nQmxvY2siLCJTQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsIiwiU0NBU01QcmV2aWV3TWV0YWRhdGFSb3ciLCJTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlIiwiU0NBU01QcmV2aWV3TmFtZSIsIlNDQVNNU2F2ZU91dGxpbmVkQnV0dG9uIiwiU0NBU01TYXZlUHJpbWFyeUJ1dHRvbiIsIlNDQVNNU3dpdGNoTGFiZWwiLCJTQ0FTTVN3aXRjaFJvdyIsIlNDQVNNVXBsb2FkQnV0dG9uIiwiU0NBU01Vc2VTa2lsbEJ1dHRvbiIsIlNDQVNNV3JhcHBlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwicmVzb2x2ZVNraWxsQWJtT3B0aW9uIiwic2tpbGxWYWx1ZXMiLCJpc1JlYWRPbmx5IiwiaXNFZGl0aW5nIiwiaW5pdGlhbFZhbHVlcyIsImdlbmVyYWwiLCJpZCIsInVuZGVmaW5lZCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImNvbnRlbnQiLCJhY2Nlc3NfdHlwZSIsImVtcHR5QmFzZWxpbmUiLCJwYXJzZURlc2NyaXB0aW9uRnJvbUNvbnRlbnQiLCJmcm9udG1hdHRlck1hdGNoIiwibWF0Y2giLCJkZXNjcmlwdGlvbk1hdGNoIiwidHJpbSIsIkFibVNraWxsTW9kYWwiLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsIiwiX3ZhbHVlcyRnZW5lcmFsMiIsIl92YWx1ZXMkZ2VuZXJhbDMiLCJfdmFsdWVzJGdlbmVyYWw0IiwiX3ZhbHVlcyRnZW5lcmFsNSIsIl92YWx1ZXMkZ2VuZXJhbDciLCJfdmFsdWVzJGdlbmVyYWwwIiwiX3ZhbHVlcyRnZW5lcmFsMSIsImFkZFNraWxsIiwidXBkYXRlU2tpbGxJbkxpc3QiLCJyZW1vdmVTa2lsbCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93RGVsZXRlIiwic2V0U2hvd0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwicGVuZGluZ1VwbG9hZCIsInNldFBlbmRpbmdVcGxvYWQiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInZhbHVlcyIsInNldFZhbHVlcyIsImZpbGVJbnB1dFJlZiIsImluaXRpYWxSZWYiLCJpc1NoYXJlZFNraWxsIiwiaXNTaGFyZWQiLCJjYW5TaGFyZVdpdGhDb21wYW55Iiwicm9sZV9pZCIsImFjY2Vzc1R5cGUiLCJlZmZlY3RpdmVBY2Nlc3NUeXBlIiwic2tpbGxJZCIsImNvbnRlbnRCeXRlcyIsImlzT3ZlckxpbWl0IiwiaXNWYWxpZCIsImhhc0NoYW5nZXMiLCJjdXJyZW50IiwiY3JlYXRlZEJ5TGFiZWwiLCJfdmFsdWVzJGdlbmVyYWw2IiwiY3JlYXRlZEJ5IiwiY3JlYXRlZF9ieV9uYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJsYXN0VXBkYXRlZExhYmVsIiwiX3ZhbHVlcyRnZW5lcmFsOCIsIl92YWx1ZXMkZ2VuZXJhbDkiLCJ1cGRhdGVkQXQiLCJ1cGRhdGVkX2F0IiwiY3JlYXRlZF9hdCIsInBhcnNlZCIsIkRhdGUiLCJOdW1iZXIiLCJpc05hTiIsImdldFRpbWUiLCJoYW5kbGVDbG9zZSIsImhhbmRsZUNhbmNlbCIsImFpQ2hhdFNraWxsQWJtQ2FuY2VsIiwib3B0aW9uIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImhhbmRsZVNldFNraWxsVmFsdWVzIiwiX3NraWxsVmFsdWVzJHZhbHVlcyIsIl9za2lsbFZhbHVlcyR2YWx1ZXMyIiwiX3NraWxsVmFsdWVzJHZhbHVlczMiLCJfcmVmMiIsImRldGFpbCIsImFuYWx5dGljc1NvdXJjZSIsImluY29taW5nR2VuZXJhbCIsIl9vYmplY3RTcHJlYWQiLCJpbmNvbWluZ05hbWUiLCJpbmNvbWluZ0Rlc2NyaXB0aW9uIiwiaW5jb21pbmdDb250ZW50IiwiaW5jb21pbmdBY2Nlc3NUeXBlIiwicGFyc2VkRGVzY3JpcHRpb24iLCJlZGl0aW5nQmFzZWxpbmUiLCJpbnRlbnQiLCJpbmNvbWluZ1ZhbHVlcyIsInNvdXJjZSIsImFpQ2hhdFNraWxsQWJtQWNjZXNzIiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImNsaWNrIiwiaGFuZGxlQ2hhbmdlRmllbGQiLCJmaWVsZCIsInZhbHVlIiwibGVuZ3RoIiwicHJldiIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUFjY2Vzc1R5cGVDaGFuZ2UiLCJjaGVja2VkIiwiaGFuZGxlVXBsb2FkQ2xpY2siLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQyIiwiaGFuZGxlRmlsZUNoYW5nZSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfZXZlbnQkdGFyZ2V0JGZpbGVzIiwiZmlsZSIsImlzTWFya2Rvd24iLCJ0ZXh0IiwiYmFzZU5hbWUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJmaWxlcyIsImFicnVwdCIsInRlc3QiLCJhaUNoYXRTa2lsbFVwbG9hZCIsInJlc3VsdCIsInNpemUiLCJzZW50IiwicmVwbGFjZSIsIl9wcmV2JGdlbmVyYWwiLCJfcHJldiRnZW5lcmFsMiIsIl9wcmV2JGdlbmVyYWwzIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJwZXJzaXN0U2tpbGwiLCJfcmVmNCIsIl9jYWxsZWUyIiwicGF5bG9hZCIsInVwZGF0ZWQiLCJjcmVhdGVkIiwiX2NvbnRleHQyIiwiaGFuZGxlU2F2ZSIsIl9yZWY1IiwiX2NhbGxlZTMiLCJzYXZlZFNraWxsIiwiX3QyIiwiX2NvbnRleHQzIiwiYWlDaGF0U2tpbGxBYm1Db25maXJtIiwiYWN0aW9uIiwic2tpbGxfaWQiLCJmaW5pc2giLCJoYW5kbGVTYXZlQW5kVXNlIiwiX3JlZjYiLCJfY2FsbGVlNCIsIl90MyIsIl9jb250ZXh0NCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsIiwidXNlRmlyc3RBZ2VudCIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmNyIsIl9jYWxsZWU1IiwiX3Q0IiwiX2NvbnRleHQ1IiwiYWlDaGF0U2tpbGxBYm1EZWxldGUiLCJoYW5kbGVFZGl0RnJvbVZpZXciLCJoYW5kbGVVc2VTa2lsbCIsImFpQ2hhdFNraWxsVXNlIiwiaXNfc2hhcmVkIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJlZGl0T3JDcmVhdGVUaXRsZSIsInZpZXdUaXRsZSIsIm1vZGFsVGl0bGUiLCJwcmV2aWV3Qm9keSIsImNoaWxkcmVuIiwiekluZGV4Iiwib25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsInR5cGUiLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwiJGhlaWdodCIsImh0bWxGb3IiLCJtYXhMZW5ndGgiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwib25DaGFuZ2UiLCIkY2xpcE92ZXJmbG93IiwicmVmIiwiYWNjZXB0IiwiJG92ZXJMaW1pdCIsInVzZWQiLCJtYXgiLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdCIsInRpdGxlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIE1vdXNlRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvRmlsZVVwbG9hZCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tICcuLi8uLi9hdG9tcy9Td2l0Y2gnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyLCBpc0NvbGxhYm9yYXRvclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9jcmVhdGVTa2lsbCdcbmltcG9ydCB7IHVwZGF0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvdXBkYXRlU2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgU2tpbGwsIFNraWxsQWNjZXNzVHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgZ2V0VW5pdEZpbGVTaXplIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0VW5pdEZpbGVTaXplJ1xuaW1wb3J0IHtcbiAgZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCxcbiAgaXNTa2lsbENvbnRlbnRPdmVyTGltaXQsXG4gIFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9za2lsbENvbnRlbnRTaXplJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7XG4gIFNDQVNNQnl0ZUNvdW50ZXIsXG4gIFNDQVNNQ2FuY2VsQnV0dG9uLFxuICBTQ0FTTUNsb3NlQnV0dG9uLFxuICBTQ0FTTUJvZHksXG4gIFNDQVNNRGVsZXRlU2xvdCxcbiAgU0NBU01GaWVsZEJveCxcbiAgU0NBU01GaWVsZElucHV0LFxuICBTQ0FTTUZpZWxkTGFiZWwsXG4gIFNDQVNNRmllbGRUZXh0YXJlYSxcbiAgU0NBU01Gb290ZXIsXG4gIFNDQVNNSGVhZGVyLFxuICBTQ0FTTUhlYWRlclRpdGxlLFxuICBTQ0FTTUhpZGRlbkZpbGVJbnB1dCxcbiAgU0NBU01JbnN0cnVjdGlvbnNGaWVsZCxcbiAgU0NBU01JbnN0cnVjdGlvbnNIZWFkZXIsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zUGFuZWwsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWEsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGUsXG4gIFNDQVNNTWV0YWRhdGFJdGVtLFxuICBTQ0FTTVByZXZpZXdCb2R5LFxuICBTQ0FTTVByZXZpZXdDb250ZW50Qm94LFxuICBTQ0FTTVByZXZpZXdDb250ZW50UGFuZWwsXG4gIFNDQVNNUHJldmlld0Rlc2NyaXB0aW9uLFxuICBTQ0FTTVByZXZpZXdIZWFkaW5nQmxvY2ssXG4gIFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWwsXG4gIFNDQVNNUHJldmlld01ldGFkYXRhUm93LFxuICBTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlLFxuICBTQ0FTTVByZXZpZXdOYW1lLFxuICBTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvbixcbiAgU0NBU01TYXZlUHJpbWFyeUJ1dHRvbixcbiAgU0NBU01Td2l0Y2hMYWJlbCxcbiAgU0NBU01Td2l0Y2hSb3csXG4gIFNDQVNNVXBsb2FkQnV0dG9uLFxuICBTQ0FTTVVzZVNraWxsQnV0dG9uLFxuICBTQ0FTTVdyYXBwZXIsXG59IGZyb20gJy4vQWJtU2tpbGxNb2RhbC5zdHlsZXMnXG5cbmV4cG9ydCBjb25zdCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCA9ICdtYWlhLXVzZS1za2lsbC1hZnRlci1zYXZlJ1xuXG50eXBlIFNraWxsTW9kYWxHZW5lcmFsID0ge1xuICBpZD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGNvbnRlbnQ/OiBzdHJpbmdcbiAgYWNjZXNzX3R5cGU/OiBTa2lsbEFjY2Vzc1R5cGVcbiAgY3JlYXRlZF9ieV9uYW1lPzogc3RyaW5nXG4gIGNyZWF0ZWRfYXQ/OiBzdHJpbmdcbiAgdXBkYXRlZF9hdD86IHN0cmluZ1xufVxuXG50eXBlIFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogYm9vbGVhblxuICBpc1JlYWRPbmx5PzogYm9vbGVhblxuICBpc1NoYXJlZD86IGJvb2xlYW5cbiAgaW50ZW50PzogJ2dlbmVyYXRlJyB8ICd3cml0ZScgfCAndXBsb2FkJ1xuICBnZW5lcmFsPzogU2tpbGxNb2RhbEdlbmVyYWxcbn1cblxudHlwZSBTa2lsbEFibU9wdGlvbiA9ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnXG50eXBlIFNraWxsQWJtQWNjZXNzU291cmNlID0gJ2NhdGFsb2cnIHwgJ2Ryb3Bkb3duJyB8ICdlbXB0eSdcblxuY29uc3QgcmVzb2x2ZVNraWxsQWJtT3B0aW9uID0gKHNraWxsVmFsdWVzOiBTa2lsbE1vZGFsVmFsdWVzKTogU2tpbGxBYm1PcHRpb24gPT4ge1xuICBpZiAoc2tpbGxWYWx1ZXMuaXNSZWFkT25seSkgcmV0dXJuICd2aWV3J1xuICBpZiAoc2tpbGxWYWx1ZXMuaXNFZGl0aW5nKSByZXR1cm4gJ2VkaXQnXG4gIHJldHVybiAnY3JlYXRlJ1xufVxuXG50eXBlIEFibVNraWxsTW9kYWxQcm9wcyA9IHtcbiAgYWRkU2tpbGw/OiAoc2tpbGw6IFNraWxsKSA9PiB2b2lkXG4gIHVwZGF0ZVNraWxsSW5MaXN0PzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICByZW1vdmVTa2lsbD86IChza2lsbElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuY29uc3QgaW5pdGlhbFZhbHVlczogU2tpbGxNb2RhbFZhbHVlcyA9IHtcbiAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgZ2VuZXJhbDoge1xuICAgIGlkOiB1bmRlZmluZWQsXG4gICAgbmFtZTogJycsXG4gICAgZGVzY3JpcHRpb246ICcnLFxuICAgIGNvbnRlbnQ6ICcnLFxuICAgIGFjY2Vzc190eXBlOiAnb25seV9tZScsXG4gIH0sXG59XG5cbnR5cGUgU2tpbGxGb3JtQmFzZWxpbmUgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIGNvbnRlbnQ6IHN0cmluZ1xuICBhY2Nlc3NfdHlwZTogU2tpbGxBY2Nlc3NUeXBlXG59XG5cbmNvbnN0IGVtcHR5QmFzZWxpbmU6IFNraWxsRm9ybUJhc2VsaW5lID0ge1xuICBuYW1lOiAnJyxcbiAgZGVzY3JpcHRpb246ICcnLFxuICBjb250ZW50OiAnJyxcbiAgYWNjZXNzX3R5cGU6ICdvbmx5X21lJyxcbn1cblxuY29uc3QgcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50ID0gKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGZyb250bWF0dGVyTWF0Y2ggPSBjb250ZW50Lm1hdGNoKC9eLS0tXFxzKlxcbihbXFxzXFxTXSo/KVxcbi0tLS8pXG4gIGlmICghZnJvbnRtYXR0ZXJNYXRjaCkgcmV0dXJuICcnXG4gIGNvbnN0IGRlc2NyaXB0aW9uTWF0Y2ggPSBmcm9udG1hdHRlck1hdGNoWzFdLm1hdGNoKC9eZGVzY3JpcHRpb246XFxzKiguKykkL20pXG4gIHJldHVybiBkZXNjcmlwdGlvbk1hdGNoID8gZGVzY3JpcHRpb25NYXRjaFsxXS50cmltKCkgOiAnJ1xufVxuXG5leHBvcnQgY29uc3QgQWJtU2tpbGxNb2RhbCA9ICh7IGFkZFNraWxsLCB1cGRhdGVTa2lsbEluTGlzdCwgcmVtb3ZlU2tpbGwgfTogQWJtU2tpbGxNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dEZWxldGUsIHNldFNob3dEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwZW5kaW5nVXBsb2FkLCBzZXRQZW5kaW5nVXBsb2FkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGU8U2tpbGxNb2RhbFZhbHVlcz4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGluaXRpYWxSZWYgPSB1c2VSZWY8U2tpbGxGb3JtQmFzZWxpbmU+KGVtcHR5QmFzZWxpbmUpXG5cbiAgY29uc3QgaXNSZWFkT25seSA9ICEhdmFsdWVzLmlzUmVhZE9ubHlcbiAgY29uc3QgaXNTaGFyZWRTa2lsbCA9ICEhdmFsdWVzLmlzU2hhcmVkXG4gIGNvbnN0IGNhblNoYXJlV2l0aENvbXBhbnkgPSAhaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgJiYgIWlzUmVhZE9ubHlcblxuICBjb25zdCBuYW1lID0gdmFsdWVzLmdlbmVyYWw/Lm5hbWUgfHwgJydcbiAgY29uc3QgZGVzY3JpcHRpb24gPSB2YWx1ZXMuZ2VuZXJhbD8uZGVzY3JpcHRpb24gfHwgJydcbiAgY29uc3QgY29udGVudCA9IHZhbHVlcy5nZW5lcmFsPy5jb250ZW50IHx8ICcnXG4gIGNvbnN0IGFjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IHZhbHVlcy5nZW5lcmFsPy5hY2Nlc3NfdHlwZSB8fCAnb25seV9tZSdcbiAgY29uc3QgZWZmZWN0aXZlQWNjZXNzVHlwZTogU2tpbGxBY2Nlc3NUeXBlID0gY2FuU2hhcmVXaXRoQ29tcGFueSA/IGFjY2Vzc1R5cGUgOiAnb25seV9tZSdcbiAgY29uc3Qgc2tpbGxJZCA9IHZhbHVlcy5nZW5lcmFsPy5pZFxuICBjb25zdCBjb250ZW50Qnl0ZXMgPSB1c2VNZW1vKCgpID0+IGdldFNraWxsQ29udGVudEJ5dGVMZW5ndGgoY29udGVudCksIFtjb250ZW50XSlcbiAgY29uc3QgaXNPdmVyTGltaXQgPSBjb250ZW50Qnl0ZXMgPiBTS0lMTF9DT05URU5UX01BWF9CWVRFU1xuICBjb25zdCBpc1ZhbGlkID0gISFuYW1lLnRyaW0oKSAmJiAhIWNvbnRlbnQudHJpbSgpICYmICFpc092ZXJMaW1pdFxuICBjb25zdCBoYXNDaGFuZ2VzID1cbiAgICBuYW1lLnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50Lm5hbWUgfHxcbiAgICBkZXNjcmlwdGlvbi50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5kZXNjcmlwdGlvbiB8fFxuICAgIGNvbnRlbnQudHJpbSgpICE9PSBpbml0aWFsUmVmLmN1cnJlbnQuY29udGVudCB8fFxuICAgIChjYW5TaGFyZVdpdGhDb21wYW55ICYmIGVmZmVjdGl2ZUFjY2Vzc1R5cGUgIT09IGluaXRpYWxSZWYuY3VycmVudC5hY2Nlc3NfdHlwZSlcblxuICBjb25zdCBjcmVhdGVkQnlMYWJlbCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZWRCeSA9IHZhbHVlcy5nZW5lcmFsPy5jcmVhdGVkX2J5X25hbWU/LnRyaW0oKVxuICAgIGlmIChjcmVhdGVkQnkpIHJldHVybiBjcmVhdGVkQnlcbiAgICByZXR1cm4gaXNTaGFyZWRTa2lsbCA/ICcnIDogYCR7dXNlci5maXJzdE5hbWV9ICR7dXNlci5sYXN0TmFtZX1gLnRyaW0oKVxuICB9LCBbdmFsdWVzLmdlbmVyYWw/LmNyZWF0ZWRfYnlfbmFtZSwgdXNlci5maXJzdE5hbWUsIHVzZXIubGFzdE5hbWUsIGlzU2hhcmVkU2tpbGxdKVxuXG4gIGNvbnN0IGxhc3RVcGRhdGVkTGFiZWwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1cGRhdGVkQXQgPSB2YWx1ZXMuZ2VuZXJhbD8udXBkYXRlZF9hdCB8fCB2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9hdFxuICAgIGlmICghdXBkYXRlZEF0KSByZXR1cm4gJydcbiAgICBjb25zdCBwYXJzZWQgPSBuZXcgRGF0ZSh1cGRhdGVkQXQpXG4gICAgaWYgKE51bWJlci5pc05hTihwYXJzZWQuZ2V0VGltZSgpKSkgcmV0dXJuICcnXG4gICAgcmV0dXJuIGZvcm1hdERhdGUocGFyc2VkKVxuICB9LCBbdmFsdWVzLmdlbmVyYWw/LnVwZGF0ZWRfYXQsIHZhbHVlcy5nZW5lcmFsPy5jcmVhdGVkX2F0XSlcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgc2V0U2hvd0RlbGV0ZShmYWxzZSlcbiAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgIHNldFZhbHVlcyhpbml0aWFsVmFsdWVzKVxuICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGVtcHR5QmFzZWxpbmVcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibUNhbmNlbCwgeyBvcHRpb246IHJlc29sdmVTa2lsbEFibU9wdGlvbih2YWx1ZXMpIH0pXG4gICAgaGFuZGxlQ2xvc2UoKVxuICB9LCBbZXZlbnRBbXBsaXR1ZGUsIGhhbmRsZUNsb3NlLCB2YWx1ZXNdKVxuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChpc1JlYWRPbmx5ICYmIGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICBoYW5kbGVDYW5jZWwoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUNhbmNlbCwgaXNSZWFkT25seV1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2V0U2tpbGxWYWx1ZXMgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbFZhbHVlcywgYW5hbHl0aWNzU291cmNlIH0gPSBldmVudC5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGxWYWx1ZXMpIHJldHVyblxuXG4gICAgICBjb25zdCBpbmNvbWluZ0dlbmVyYWwgPSB7XG4gICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuZ2VuZXJhbCxcbiAgICAgICAgLi4uc2tpbGxWYWx1ZXMudmFsdWVzPy5nZW5lcmFsLFxuICAgICAgfVxuICAgICAgY29uc3QgaW5jb21pbmdOYW1lID0gKGluY29taW5nR2VuZXJhbC5uYW1lIHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nRGVzY3JpcHRpb24gPSAoaW5jb21pbmdHZW5lcmFsLmRlc2NyaXB0aW9uIHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nQ29udGVudCA9IChpbmNvbWluZ0dlbmVyYWwuY29udGVudCB8fCAnJykudHJpbSgpXG4gICAgICBjb25zdCBpbmNvbWluZ0FjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpXG4gICAgICAgID8gJ29ubHlfbWUnXG4gICAgICAgIDogaW5jb21pbmdHZW5lcmFsLmFjY2Vzc190eXBlIHx8ICdvbmx5X21lJ1xuICAgICAgY29uc3QgcGFyc2VkRGVzY3JpcHRpb24gPVxuICAgICAgICBpbmNvbWluZ0Rlc2NyaXB0aW9uIHx8IChpbmNvbWluZ0NvbnRlbnQgPyBwYXJzZURlc2NyaXB0aW9uRnJvbUNvbnRlbnQoaW5jb21pbmdDb250ZW50KSA6ICcnKVxuXG4gICAgICBjb25zdCBlZGl0aW5nQmFzZWxpbmU6IFNraWxsRm9ybUJhc2VsaW5lID0ge1xuICAgICAgICBuYW1lOiBpbmNvbWluZ05hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwYXJzZWREZXNjcmlwdGlvbixcbiAgICAgICAgY29udGVudDogaW5jb21pbmdDb250ZW50LFxuICAgICAgICBhY2Nlc3NfdHlwZTogaW5jb21pbmdBY2Nlc3NUeXBlLFxuICAgICAgfVxuICAgICAgaW5pdGlhbFJlZi5jdXJyZW50ID0gc2tpbGxWYWx1ZXMudmFsdWVzPy5pc0VkaXRpbmcgPyBlZGl0aW5nQmFzZWxpbmUgOiBlbXB0eUJhc2VsaW5lXG5cbiAgICAgIHNldFZhbHVlcyh7XG4gICAgICAgIC4uLmluaXRpYWxWYWx1ZXMsXG4gICAgICAgIC4uLnNraWxsVmFsdWVzLnZhbHVlcyxcbiAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgIC4uLmluY29taW5nR2VuZXJhbCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGFyc2VkRGVzY3JpcHRpb24sXG4gICAgICAgICAgYWNjZXNzX3R5cGU6IGluY29taW5nQWNjZXNzVHlwZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKHNraWxsVmFsdWVzLnZhbHVlcz8uaW50ZW50ID09PSAndXBsb2FkJylcbiAgICAgIHNldElzT3BlbighIXNraWxsVmFsdWVzLmlzT3BlbilcblxuICAgICAgaWYgKHNraWxsVmFsdWVzLmlzT3Blbikge1xuICAgICAgICBjb25zdCBpbmNvbWluZ1ZhbHVlcyA9IHsgLi4uaW5pdGlhbFZhbHVlcywgLi4uc2tpbGxWYWx1ZXMudmFsdWVzIH1cbiAgICAgICAgY29uc3Qgc291cmNlOiBTa2lsbEFibUFjY2Vzc1NvdXJjZSA9XG4gICAgICAgICAgYW5hbHl0aWNzU291cmNlID09PSAnZHJvcGRvd24nIHx8IGFuYWx5dGljc1NvdXJjZSA9PT0gJ2VtcHR5JyB8fCBhbmFseXRpY3NTb3VyY2UgPT09ICdjYXRhbG9nJ1xuICAgICAgICAgICAgPyBhbmFseXRpY3NTb3VyY2VcbiAgICAgICAgICAgIDogJ2NhdGFsb2cnXG4gICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibUFjY2Vzcywge1xuICAgICAgICAgIG9wdGlvbjogcmVzb2x2ZVNraWxsQWJtT3B0aW9uKGluY29taW5nVmFsdWVzKSxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICB9XG4gIH0sIFtldmVudEFtcGxpdHVkZSwgdXNlci5yb2xlX2lkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc09wZW4gJiYgcGVuZGluZ1VwbG9hZCkge1xuICAgICAgc2V0UGVuZGluZ1VwbG9hZChmYWxzZSlcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBwZW5kaW5nVXBsb2FkXSlcblxuICBjb25zdCBoYW5kbGVDaGFuZ2VGaWVsZCA9IChmaWVsZDogJ25hbWUnIHwgJ2Rlc2NyaXB0aW9uJyB8ICdjb250ZW50JywgdmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmIChmaWVsZCA9PT0gJ2NvbnRlbnQnICYmIGlzU2tpbGxDb250ZW50T3ZlckxpbWl0KHZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCAtIGNvbnRlbnQubGVuZ3RoID4gMSkge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmNvbnRlbnRTaXplRXJyb3InKSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIGdlbmVyYWw6IHsgLi4ucHJldi5nZW5lcmFsLCBbZmllbGRdOiB2YWx1ZSB9LFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQWNjZXNzVHlwZUNoYW5nZSA9IChjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKCFjYW5TaGFyZVdpdGhDb21wYW55KSByZXR1cm5cbiAgICBzZXRWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICBhY2Nlc3NfdHlwZTogY2hlY2tlZCA/ICdjb21wYW55JyA6ICdvbmx5X21lJyxcbiAgICAgIH0sXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVVcGxvYWRDbGljayA9ICgpID0+IHtcbiAgICBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZUNoYW5nZSA9IGFzeW5jIChldmVudDogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzPy5bMF1cbiAgICBpZiAoZmlsZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICB9XG4gICAgaWYgKCFmaWxlKSByZXR1cm5cblxuICAgIGNvbnN0IGlzTWFya2Rvd24gPSAvXFwuKG1kfG1hcmtkb3duKSQvaS50ZXN0KGZpbGUubmFtZSlcbiAgICBpZiAoIWlzTWFya2Rvd24pIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFVwbG9hZCwgeyByZXN1bHQ6ICd0eXBlX2Vycm9yJyB9KVxuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRFcnJvcicpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGZpbGUuc2l6ZSA+IFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxVcGxvYWQsIHsgcmVzdWx0OiAnc2l6ZV9lcnJvcicgfSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkU2l6ZUVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBpZiAoaXNTa2lsbENvbnRlbnRPdmVyTGltaXQodGV4dCkpIHtcbiAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXBsb2FkLCB7IHJlc3VsdDogJ3NpemVfZXJyb3InIH0pXG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkU2l6ZUVycm9yJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgYmFzZU5hbWUgPSBmaWxlLm5hbWUucmVwbGFjZSgvXFwuKG1kfG1hcmtkb3duKSQvaSwgJycpXG4gICAgICBjb25zdCBwYXJzZWREZXNjcmlwdGlvbiA9IHBhcnNlRGVzY3JpcHRpb25Gcm9tQ29udGVudCh0ZXh0KVxuICAgICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICBjb250ZW50OiB0ZXh0LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcmV2LmdlbmVyYWw/LmRlc2NyaXB0aW9uPy50cmltKClcbiAgICAgICAgICAgID8gcHJldi5nZW5lcmFsLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICA6IHBhcnNlZERlc2NyaXB0aW9uIHx8IHByZXYuZ2VuZXJhbD8uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgbmFtZTogcHJldi5nZW5lcmFsPy5uYW1lPy50cmltKCkgPyBwcmV2LmdlbmVyYWwubmFtZSA6IGJhc2VOYW1lLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxVcGxvYWQsIHsgcmVzdWx0OiAnc3VjY2VzcycgfSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBlcnNpc3RTa2lsbCA9IGFzeW5jICgpOiBQcm9taXNlPFNraWxsIHwgbnVsbD4gPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBuYW1lOiBuYW1lLnRyaW0oKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbi50cmltKCksXG4gICAgICBjb250ZW50OiBjb250ZW50LnRyaW0oKSxcbiAgICAgIGFjY2Vzc190eXBlOiBlZmZlY3RpdmVBY2Nlc3NUeXBlLFxuICAgIH1cblxuICAgIGlmICh2YWx1ZXMuaXNFZGl0aW5nICYmIHNraWxsSWQpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTa2lsbChza2lsbElkLCBwYXlsb2FkKVxuICAgICAgdXBkYXRlU2tpbGxJbkxpc3Q/Lih1cGRhdGVkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLnVwZGF0ZVN1Y2Nlc3MnKSlcbiAgICAgIHJldHVybiB1cGRhdGVkXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVNraWxsKHBheWxvYWQpXG4gICAgYWRkU2tpbGw/LihjcmVhdGVkKVxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5jcmVhdGVTdWNjZXNzJykpXG4gICAgcmV0dXJuIGNyZWF0ZWRcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlcykgcmV0dXJuXG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNhdmVkU2tpbGwgPSBhd2FpdCBwZXJzaXN0U2tpbGwoKVxuICAgICAgaWYgKHNhdmVkU2tpbGwpIHtcbiAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsQWJtQ29uZmlybSwge1xuICAgICAgICAgIG9wdGlvbjogdmFsdWVzLmlzRWRpdGluZyA/ICdlZGl0JyA6ICdjcmVhdGUnLFxuICAgICAgICAgIGFjdGlvbjogJ3NhdmUnLFxuICAgICAgICAgIGFjY2Vzc190eXBlOiBlZmZlY3RpdmVBY2Nlc3NUeXBlLFxuICAgICAgICAgIHNraWxsX2lkOiBzYXZlZFNraWxsLmlkLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNhdmVBbmRVc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZykgcmV0dXJuXG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNhdmVkU2tpbGwgPSBhd2FpdCBwZXJzaXN0U2tpbGwoKVxuICAgICAgaWYgKHNhdmVkU2tpbGwpIHtcbiAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsQWJtQ29uZmlybSwge1xuICAgICAgICAgIG9wdGlvbjogdmFsdWVzLmlzRWRpdGluZyA/ICdlZGl0JyA6ICdjcmVhdGUnLFxuICAgICAgICAgIGFjdGlvbjogJ3NhdmVfYW5kX3VzZScsXG4gICAgICAgICAgYWNjZXNzX3R5cGU6IGVmZmVjdGl2ZUFjY2Vzc1R5cGUsXG4gICAgICAgICAgc2tpbGxfaWQ6IHNhdmVkU2tpbGwuaWQsXG4gICAgICAgIH0pXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5ULCB7XG4gICAgICAgICAgICBkZXRhaWw6IHsgc2tpbGw6IHNhdmVkU2tpbGwsIHVzZUZpcnN0QWdlbnQ6IHRydWUgfSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLnVwZGF0ZUVycm9yJykgOiB0KCdteVNraWxscy5jcmVhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29uZmlybURlbGV0ZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXNraWxsSWQpIHJldHVyblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkZWxldGVTa2lsbChza2lsbElkKVxuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsQWJtRGVsZXRlLCB7IHNraWxsX2lkOiBza2lsbElkLCBzb3VyY2U6ICdtb2RhbCcgfSlcbiAgICAgIHJlbW92ZVNraWxsPy4oc2tpbGxJZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0RnJvbVZpZXcgPSAoKSA9PiB7XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHsgLi4ucHJldiwgaXNSZWFkT25seTogZmFsc2UgfSkpXG4gIH1cblxuICAvKiogU2tpbGwgYWplbmEgZW4gbW9kbyBsZWN0dXJhOiBhYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiB5YSBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gKCkgPT4ge1xuICAgIGlmICghc2tpbGxJZCkgcmV0dXJuXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXNlLCB7XG4gICAgICBza2lsbF9pZDogc2tpbGxJZCxcbiAgICAgIGFjY2Vzc190eXBlOiBhY2Nlc3NUeXBlLFxuICAgICAgc291cmNlOiAndmlld19tb2RhbCcsXG4gICAgICBpc19zaGFyZWQ6IGlzU2hhcmVkU2tpbGwsXG4gICAgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50KFNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5ULCB7XG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIHNraWxsOiB7IGlkOiBza2lsbElkLCBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgYWNjZXNzX3R5cGU6IGFjY2Vzc1R5cGUgfSxcbiAgICAgICAgICB1c2VGaXJzdEFnZW50OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApXG4gICAgaGFuZGxlQ2xvc2UoKVxuICB9XG5cbiAgaWYgKCFpc09wZW4pIHJldHVybiBudWxsXG5cbiAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLXJvb3QtYWN0aW9ucycpXG4gIGlmICghY29udGFpbmVyKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGVkaXRPckNyZWF0ZVRpdGxlID0gdmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLmVkaXRUaXRsZScpIDogdCgnbXlTa2lsbHMuY3JlYXRlVGl0bGUnKVxuICBjb25zdCB2aWV3VGl0bGUgPSBpc1NoYXJlZFNraWxsID8gdCgnbXlTa2lsbHMudmlld1RpdGxlJykgOiB0KCdteVNraWxscy52aWV3T3duVGl0bGUnKVxuICBjb25zdCBtb2RhbFRpdGxlID0gaXNSZWFkT25seSA/IHZpZXdUaXRsZSA6IGVkaXRPckNyZWF0ZVRpdGxlXG5cbiAgY29uc3QgcHJldmlld0JvZHkgPSAoXG4gICAgPFNDQVNNUHJldmlld0JvZHk+XG4gICAgICA8U0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrPlxuICAgICAgICA8U0NBU01QcmV2aWV3TmFtZT57bmFtZX08L1NDQVNNUHJldmlld05hbWU+XG4gICAgICAgIHtkZXNjcmlwdGlvbiA/IDxTQ0FTTVByZXZpZXdEZXNjcmlwdGlvbj57ZGVzY3JpcHRpb259PC9TQ0FTTVByZXZpZXdEZXNjcmlwdGlvbj4gOiBudWxsfVxuICAgICAgPC9TQ0FTTVByZXZpZXdIZWFkaW5nQmxvY2s+XG5cbiAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YVJvdz5cbiAgICAgICAge2NyZWF0ZWRCeUxhYmVsID8gKFxuICAgICAgICAgIDxTQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPnt0KCdteVNraWxscy5jcmVhdGVkQnknKX08L1NDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT57Y3JlYXRlZEJ5TGFiZWx9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgIDwvU0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7bGFzdFVwZGF0ZWRMYWJlbCA/IChcbiAgICAgICAgICA8U0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD57dCgnbXlTa2lsbHMubGFzdFVwZGF0ZWQnKX08L1NDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT57bGFzdFVwZGF0ZWRMYWJlbH08L1NDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+XG4gICAgICAgICAgPC9TQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshaXNTaGFyZWRTa2lsbCA/IChcbiAgICAgICAgICA8U0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD57dCgnbXlTa2lsbHMuZW5hYmxlZExhYmVsJyl9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+XG4gICAgICAgICAgICAgIHthY2Nlc3NUeXBlID09PSAnY29tcGFueScgPyB0KCdteVNraWxscy52aXNpYmlsaXR5RXZlcnlvbmUnKSA6IHQoJ215U2tpbGxzLnZpc2liaWxpdHlPbmx5TWUnKX1cbiAgICAgICAgICAgIDwvU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT5cbiAgICAgICAgICA8L1NDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NBU01QcmV2aWV3TWV0YWRhdGFSb3c+XG5cbiAgICAgIDxTQ0FTTVByZXZpZXdDb250ZW50UGFuZWw+XG4gICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc1RpdGxlPnt0KCdteVNraWxscy5pbnN0cnVjdGlvbnNMYWJlbCcpfTwvU0NBU01JbnN0cnVjdGlvbnNUaXRsZT5cbiAgICAgICAgPFNDQVNNUHJldmlld0NvbnRlbnRCb3g+e2NvbnRlbnR9PC9TQ0FTTVByZXZpZXdDb250ZW50Qm94PlxuICAgICAgPC9TQ0FTTVByZXZpZXdDb250ZW50UGFuZWw+XG4gICAgPC9TQ0FTTVByZXZpZXdCb2R5PlxuICApXG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8QmFja2Ryb3AgekluZGV4PXsxMTEyfSBvbkNsaWNrPXtoYW5kbGVCYWNrZHJvcENsaWNrfT5cbiAgICAgIDxTQ0FTTVdyYXBwZXIgb25DbGljaz17ZXZlbnQgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9PlxuICAgICAgICA8U0NBU01IZWFkZXI+XG4gICAgICAgICAgPFNDQVNNSGVhZGVyVGl0bGU+e21vZGFsVGl0bGV9PC9TQ0FTTUhlYWRlclRpdGxlPlxuICAgICAgICAgIDxTQ0FTTUNsb3NlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9IGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNsb3NlJyl9PlxuICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICA8L1NDQVNNQ2xvc2VCdXR0b24+XG4gICAgICAgIDwvU0NBU01IZWFkZXI+XG5cbiAgICAgICAge2lzUmVhZE9ubHkgPyAoXG4gICAgICAgICAgcHJldmlld0JvZHlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8U0NBU01Cb2R5PlxuICAgICAgICAgICAgPFNDQVNNRmllbGRCb3ggJGhlaWdodD17NTB9PlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZExhYmVsIGh0bWxGb3I9XCJza2lsbC1uYW1lLWlucHV0XCI+e3QoJ215U2tpbGxzLm5hbWVMYWJlbCcpfTwvU0NBU01GaWVsZExhYmVsPlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZElucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJza2lsbC1uYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsxNTB9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtuYW1lfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCduYW1lJywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU0NBU01GaWVsZEJveD5cblxuICAgICAgICAgICAgPFNDQVNNRmllbGRCb3ggJGhlaWdodD17MTIwfSAkY2xpcE92ZXJmbG93PlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZExhYmVsIGh0bWxGb3I9XCJza2lsbC1kZXNjcmlwdGlvbi1pbnB1dFwiPnt0KCdteVNraWxscy5kZXNjcmlwdGlvbkxhYmVsJyl9PC9TQ0FTTUZpZWxkTGFiZWw+XG4gICAgICAgICAgICAgIDxTQ0FTTUZpZWxkVGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cInNraWxsLWRlc2NyaXB0aW9uLWlucHV0XCJcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezUwMH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnZGVzY3JpcHRpb24nLCBldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TQ0FTTUZpZWxkQm94PlxuXG4gICAgICAgICAgICB7Y2FuU2hhcmVXaXRoQ29tcGFueSA/IChcbiAgICAgICAgICAgICAgPFNDQVNNU3dpdGNoUm93PlxuICAgICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FjY2Vzc1R5cGUgPT09ICdjb21wYW55J31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLnNoYXJlV2l0aENvbXBhbnknKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVN3aXRjaExhYmVsPnt0KCdteVNraWxscy5zaGFyZVdpdGhDb21wYW55Jyl9PC9TQ0FTTVN3aXRjaExhYmVsPlxuICAgICAgICAgICAgICA8L1NDQVNNU3dpdGNoUm93PlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc1BhbmVsPlxuICAgICAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNIZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+e3QoJ215U2tpbGxzLmluc3RydWN0aW9uc0xhYmVsJyl9PC9TQ0FTTUluc3RydWN0aW9uc1RpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVVwbG9hZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlVXBsb2FkQ2xpY2t9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgICAgPEZpbGVVcGxvYWQgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj1cIiMwOENcIiAvPlxuICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVwbG9hZE1kJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTVVwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8U0NBU01IaWRkZW5GaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiLm1kLC5tYXJrZG93bix0ZXh0L21hcmtkb3duXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NBU01JbnN0cnVjdGlvbnNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQ+XG4gICAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIGlkPVwic2tpbGwtY29udGVudC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuY29udGVudFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGVudH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gaGFuZGxlQ2hhbmdlRmllbGQoJ2NvbnRlbnQnLCBldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NBU01JbnN0cnVjdGlvbnNGaWVsZD5cbiAgICAgICAgICAgICAgPFNDQVNNQnl0ZUNvdW50ZXIgJG92ZXJMaW1pdD17aXNPdmVyTGltaXR9IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5ieXRlc0NvdW50ZXInLCB7XG4gICAgICAgICAgICAgICAgICB1c2VkOiBnZXRVbml0RmlsZVNpemUoY29udGVudEJ5dGVzKSxcbiAgICAgICAgICAgICAgICAgIG1heDogZ2V0VW5pdEZpbGVTaXplKFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTKSxcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9TQ0FTTUJ5dGVDb3VudGVyPlxuICAgICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc1BhbmVsPlxuICAgICAgICAgIDwvU0NBU01Cb2R5PlxuICAgICAgICApfVxuXG4gICAgICAgIDxTQ0FTTUZvb3Rlcj5cbiAgICAgICAgICB7aXNSZWFkT25seSAmJiBpc1NoYXJlZFNraWxsID8gKFxuICAgICAgICAgICAgPFNDQVNNVXNlU2tpbGxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVVzZVNraWxsfT5cbiAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVzZVNraWxsJyl9XG4gICAgICAgICAgICA8L1NDQVNNVXNlU2tpbGxCdXR0b24+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7aXNSZWFkT25seSAmJiAhaXNTaGFyZWRTa2lsbCA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxTQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgICAgPFNDQVNNQ2FuY2VsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RGVsZXRlKHRydWUpfT5cbiAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5kZWxldGUnKX1cbiAgICAgICAgICAgICAgICA8L1NDQVNNQ2FuY2VsQnV0dG9uPlxuICAgICAgICAgICAgICA8L1NDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgPFNDQVNNU2F2ZVByaW1hcnlCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUVkaXRGcm9tVmlld30+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmVkaXQnKX1cbiAgICAgICAgICAgICAgPC9TQ0FTTVNhdmVQcmltYXJ5QnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7IWlzUmVhZE9ubHkgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dmFsdWVzLmlzRWRpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8U0NBU01EZWxldGVTbG90PlxuICAgICAgICAgICAgICAgICAgPFNDQVNNQ2FuY2VsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RGVsZXRlKHRydWUpfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FTTUNhbmNlbEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1NDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlU2F2ZUFuZFVzZX0gZGlzYWJsZWQ9eyFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlQW5kVXNlJyl9XG4gICAgICAgICAgICAgIDwvU0NBU01TYXZlT3V0bGluZWRCdXR0b24+XG4gICAgICAgICAgICAgIDxTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2F2ZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nIHx8ICFoYXNDaGFuZ2VzfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlJyl9XG4gICAgICAgICAgICAgIDwvU0NBU01TYXZlUHJpbWFyeUJ1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1NDQVNNRm9vdGVyPlxuICAgICAgPC9TQ0FTTVdyYXBwZXI+XG5cbiAgICAgIHtzaG93RGVsZXRlICYmIHNraWxsSWQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0RlbGV0ZShmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IGhhbmRsZUNvbmZpcm1EZWxldGUsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXt7IHRpdGxlOiBuYW1lLCBpZDogc2tpbGxJZCB9fVxuICAgICAgICAgIGFjdGlvbj1cInNraWxsXCJcbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvQmFja2Ryb3A+LFxuICAgIGNvbnRhaW5lclxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0EsU0FBa0NBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDbEcsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxVQUFVLFFBQVEsNkNBQTZDO0FBQ3hFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFFBQVEsUUFBUSxzQkFBc0I7QUFDL0MsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVNDLFFBQVEsUUFBUSwyQkFBMkI7QUFDcEQsU0FBU0MsT0FBTyxFQUFFQyxrQkFBa0IsUUFBUSwyQkFBMkI7QUFDdkUsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQzFELFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBQ2hELFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxXQUFXLFFBQVEsMkNBQTJDO0FBRXZFLFNBQVNDLGVBQWUsUUFBUSxnQ0FBZ0M7QUFDaEUsU0FDRUMseUJBQXlCLEVBQ3pCQyx1QkFBdUIsRUFDdkJDLHVCQUF1QixRQUNsQixpQ0FBaUM7QUFDeEMsU0FBU0MsbUJBQW1CLFFBQVEsNENBQTRDO0FBQ2hGLFNBQ0VDLGdCQUFnQixFQUNoQkMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFDaEJDLFNBQVMsRUFDVEMsZUFBZSxFQUNmQyxhQUFhLEVBQ2JDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxrQkFB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