@projectcor/maia-components 2.35.3-0 → 2.35.4-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +6 -2
  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/MAIAButton/MAIAButton.spec.js +42 -0
  9. package/lib/components/atoms/MAIAInput/MAIAInput.js +45 -3
  10. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +283 -0
  11. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +68 -0
  12. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
  13. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +85 -0
  14. package/lib/components/atoms/Switch/Switch.spec.js +41 -0
  15. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +77 -0
  16. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
  17. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +291 -0
  18. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
  19. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +20 -5
  20. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +128 -0
  21. package/lib/components/molecules/ChatFooter/ChatFooter.js +13 -1
  22. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +105 -0
  23. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
  24. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
  25. package/lib/components/molecules/Sidebar/Sidebar.js +9 -3
  26. package/lib/components/molecules/Sidebar/Sidebar.spec.js +183 -0
  27. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +12 -7
  28. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +335 -0
  29. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +66 -7
  30. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +293 -0
  31. package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
  32. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
  33. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
  34. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
  35. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +95 -0
  36. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +96 -0
  37. package/lib/hooks/useCaretPosition.spec.js +58 -0
  38. package/lib/hooks/useDebounce.spec.js +42 -0
  39. package/lib/hooks/useEvent.js +15 -2
  40. package/lib/hooks/useEvent.spec.js +40 -0
  41. package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
  42. package/lib/hooks/useModal/useModal.spec.js +73 -0
  43. package/lib/hooks/useResize.spec.js +37 -0
  44. package/lib/hooks/useSkillsCatalog.spec.js +88 -0
  45. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
  46. package/lib/hooks/useT.spec.js +20 -0
  47. package/lib/hooks/useToggle.spec.js +33 -0
  48. package/lib/services/maia/Access/updateAccess.spec.js +108 -0
  49. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +69 -0
  50. package/lib/services/maia/Actions/getSlashCommands.spec.js +74 -0
  51. package/lib/services/maia/Agents/createAgent.spec.js +55 -0
  52. package/lib/services/maia/Agents/deleteAgent.spec.js +42 -0
  53. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
  54. package/lib/services/maia/Agents/getAgentById.spec.js +55 -0
  55. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +82 -0
  56. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
  57. package/lib/services/maia/Agents/toggleFavorite.spec.js +47 -0
  58. package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
  59. package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
  60. package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
  61. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  62. package/lib/services/maia/Chats/getChatsByUserId.spec.js +149 -0
  63. package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
  64. package/lib/services/maia/Chats/patchChat.spec.js +41 -0
  65. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
  66. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
  67. package/lib/services/maia/Knowledge/delete.spec.js +45 -0
  68. package/lib/services/maia/Knowledge/download.spec.js +78 -0
  69. package/lib/services/maia/Knowledge/save.spec.js +58 -0
  70. package/lib/services/maia/Orchestrator/orchestrator.spec.js +72 -0
  71. package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
  72. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +83 -0
  73. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
  74. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
  75. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
  76. package/lib/services/maia/Skills/createSkill.spec.js +68 -0
  77. package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
  78. package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
  79. package/lib/services/maia/Skills/getSkills.spec.js +152 -0
  80. package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
  81. package/lib/services/maia/client.spec.js +56 -0
  82. package/lib/services/utils/fetchCOR.spec.js +211 -0
  83. package/lib/services/utils/getCookie.spec.js +20 -0
  84. package/lib/store/chatsSidebarOptimistic.spec.js +120 -0
  85. package/lib/store/faqsStore.types.js +1 -1
  86. package/lib/store/maiaLastChatPersistence.spec.js +22 -0
  87. package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
  88. package/lib/store/sessions/sessions.types.spec.js +16 -0
  89. package/lib/store/sessions/useSessionsStore.spec.js +135 -0
  90. package/lib/store/useChatsStore.js +3 -3
  91. package/lib/store/useChatsStore.spec.js +619 -0
  92. package/lib/store/useFaqsStore.spec.js +57 -0
  93. package/lib/test/buttonMock.js +22 -0
  94. package/lib/test/fetchPolyfill.js +160 -0
  95. package/lib/test/fileMock.js +2 -0
  96. package/lib/test/global-context.js +49 -0
  97. package/lib/test/iconMock.js +19 -0
  98. package/lib/test/mockFetch.js +49 -0
  99. package/lib/test/portalRoot.js +13 -0
  100. package/lib/test/styleMock.js +2 -0
  101. package/lib/test/test-utils.js +26 -0
  102. package/lib/test/tooltipMock.js +11 -0
  103. package/lib/types/Chat.js +1 -1
  104. package/lib/types/FrequentlyAskedQuestion.js +1 -1
  105. package/lib/utils/agentDisplayName.spec.js +44 -0
  106. package/lib/utils/autoApproveStorage.spec.js +25 -0
  107. package/lib/utils/chatInputFiles.spec.js +39 -0
  108. package/lib/utils/contextMentionLabel.spec.js +13 -0
  109. package/lib/utils/contextMentionTriggers.spec.js +38 -0
  110. package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
  111. package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
  112. package/lib/utils/fileDownloadHelper.spec.js +67 -0
  113. package/lib/utils/formatQuickActionMessage.spec.js +27 -0
  114. package/lib/utils/formatUnreadCount.spec.js +12 -0
  115. package/lib/utils/getUnitFileSize.spec.js +18 -0
  116. package/lib/utils/hitlAnalytics.spec.js +100 -0
  117. package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -0
  118. package/lib/utils/mapBackendLang.spec.js +19 -0
  119. package/lib/utils/normalizeAgentConnectors.spec.js +89 -0
  120. package/lib/utils/orchestratorSubagents.spec.js +32 -0
  121. package/lib/utils/reasoningMappers.spec.js +103 -0
  122. package/lib/utils/retryCompletion.spec.js +99 -0
  123. package/lib/utils/skillContentSize.spec.js +13 -0
  124. package/lib/utils/slashCommandMarker.spec.js +43 -0
  125. package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
  126. package/lib/utils/sseStreamContent.spec.js +31 -0
  127. package/lib/utils/streamActivityMessages.spec.js +98 -0
  128. package/lib/utils/validateTrimmedFields.spec.js +26 -0
  129. package/package.json +9 -6
@@ -15,6 +15,7 @@ import { Loader } from '../../atoms/Loader';
15
15
  import { Switch } from '../../atoms/Switch';
16
16
  import { SECTIONS } from '../../../constants/config';
17
17
  import { useUser, isCollaboratorRole } from '../../../context/cor-user';
18
+ import { EVENTS, useEvent } from '../../../hooks/useEvent';
18
19
  import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
19
20
  import { formatDate } from '../../../lang/utils';
20
21
  import { createSkill } from '../../../services/maia/Skills/createSkill';
@@ -26,6 +27,11 @@ import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal'
26
27
  import { SCASMByteCounter, SCASMCancelButton, SCASMCloseButton, SCASMBody, SCASMDeleteOutlinedButton, 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';
27
28
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
28
29
  export var SKILL_USE_AFTER_SAVE_EVENT = 'maia-use-skill-after-save';
30
+ var resolveSkillAbmOption = function resolveSkillAbmOption(skillValues) {
31
+ if (skillValues.isReadOnly) return 'view';
32
+ if (skillValues.isEditing) return 'edit';
33
+ return 'create';
34
+ };
29
35
  var initialValues = {
30
36
  isEditing: false,
31
37
  general: {
@@ -56,6 +62,7 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
56
62
  var _useTranslation = useTranslation([SECTIONS.chatAI]),
57
63
  t = _useTranslation.t;
58
64
  var user = useUser();
65
+ var eventAmplitude = useEvent();
59
66
  var _useSnackBarManager = useSnackBarManager(),
60
67
  handleSnackbarSuccess = _useSnackBarManager.handleSnackbarSuccess,
61
68
  handleSnackbarError = _useSnackBarManager.handleSnackbarError;
@@ -117,16 +124,23 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
117
124
  setValues(initialValues);
118
125
  initialRef.current = emptyBaseline;
119
126
  }, []);
127
+ var handleCancel = useCallback(function () {
128
+ eventAmplitude(EVENTS.aiChatSkillAbmCancel, {
129
+ option: resolveSkillAbmOption(values)
130
+ });
131
+ handleClose();
132
+ }, [eventAmplitude, handleClose, values]);
120
133
  var handleBackdropClick = useCallback(function (event) {
121
134
  if (event.target === event.currentTarget) {
122
- handleClose();
135
+ handleCancel();
123
136
  }
124
- }, [handleClose]);
137
+ }, [handleCancel]);
125
138
  useEffect(function () {
126
139
  var handleSetSkillValues = function handleSetSkillValues(event) {
127
140
  var _skillValues$values, _skillValues$values2, _skillValues$values3;
128
141
  var _ref2 = event.detail || {},
129
- skillValues = _ref2.skillValues;
142
+ skillValues = _ref2.skillValues,
143
+ analyticsSource = _ref2.analyticsSource;
130
144
  if (!skillValues) return;
131
145
  var incomingGeneral = _objectSpread(_objectSpread({}, initialValues.general), (_skillValues$values = skillValues.values) === null || _skillValues$values === void 0 ? void 0 : _skillValues$values.general);
132
146
  var incomingName = (incomingGeneral.name || '').trim();
@@ -149,12 +163,20 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
149
163
  }));
150
164
  setPendingUpload(((_skillValues$values3 = skillValues.values) === null || _skillValues$values3 === void 0 ? void 0 : _skillValues$values3.intent) === 'upload');
151
165
  setIsOpen(!!skillValues.isOpen);
166
+ if (skillValues.isOpen) {
167
+ var incomingValues = _objectSpread(_objectSpread({}, initialValues), skillValues.values);
168
+ var source = analyticsSource === 'dropdown' || analyticsSource === 'empty' || analyticsSource === 'catalog' ? analyticsSource : 'catalog';
169
+ eventAmplitude(EVENTS.aiChatSkillAbmAccess, {
170
+ option: resolveSkillAbmOption(incomingValues),
171
+ source: source
172
+ });
173
+ }
152
174
  };
153
175
  document.addEventListener('abm-skill-modal-set-values', handleSetSkillValues);
154
176
  return function () {
155
177
  document.removeEventListener('abm-skill-modal-set-values', handleSetSkillValues);
156
178
  };
157
- }, [user.role_id]);
179
+ }, [eventAmplitude, user.role_id]);
158
180
  useEffect(function () {
159
181
  if (isOpen && pendingUpload) {
160
182
  var _fileInputRef$current;
@@ -211,6 +233,9 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
211
233
  _context.next = 2;
212
234
  break;
213
235
  }
236
+ eventAmplitude(EVENTS.aiChatSkillUpload, {
237
+ result: 'type_error'
238
+ });
214
239
  handleSnackbarError(t('mySkills.uploadError'));
215
240
  return _context.abrupt("return");
216
241
  case 2:
@@ -218,6 +243,9 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
218
243
  _context.next = 3;
219
244
  break;
220
245
  }
246
+ eventAmplitude(EVENTS.aiChatSkillUpload, {
247
+ result: 'size_error'
248
+ });
221
249
  handleSnackbarError(t('mySkills.uploadSizeError'));
222
250
  return _context.abrupt("return");
223
251
  case 3:
@@ -230,6 +258,9 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
230
258
  _context.next = 5;
231
259
  break;
232
260
  }
261
+ eventAmplitude(EVENTS.aiChatSkillUpload, {
262
+ result: 'size_error'
263
+ });
233
264
  handleSnackbarError(t('mySkills.uploadSizeError'));
234
265
  return _context.abrupt("return");
235
266
  case 5:
@@ -245,6 +276,9 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
245
276
  })
246
277
  });
247
278
  });
279
+ eventAmplitude(EVENTS.aiChatSkillUpload, {
280
+ result: 'success'
281
+ });
248
282
  _context.next = 7;
249
283
  break;
250
284
  case 6:
@@ -304,7 +338,7 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
304
338
  }();
305
339
  var handleSave = /*#__PURE__*/function () {
306
340
  var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
307
- var _t2;
341
+ var savedSkill, _t2;
308
342
  return _regeneratorRuntime.wrap(function (_context3) {
309
343
  while (1) switch (_context3.prev = _context3.next) {
310
344
  case 0:
@@ -319,6 +353,15 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
319
353
  _context3.next = 3;
320
354
  return persistSkill();
321
355
  case 3:
356
+ savedSkill = _context3.sent;
357
+ if (savedSkill) {
358
+ eventAmplitude(EVENTS.aiChatSkillAbmConfirm, {
359
+ option: values.isEditing ? 'edit' : 'create',
360
+ action: 'save',
361
+ access_type: effectiveAccessType,
362
+ skill_id: savedSkill.id
363
+ });
364
+ }
322
365
  handleClose();
323
366
  _context3.next = 5;
324
367
  break;
@@ -359,6 +402,12 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
359
402
  case 3:
360
403
  savedSkill = _context4.sent;
361
404
  if (savedSkill) {
405
+ eventAmplitude(EVENTS.aiChatSkillAbmConfirm, {
406
+ option: values.isEditing ? 'edit' : 'create',
407
+ action: 'save_and_use',
408
+ access_type: effectiveAccessType,
409
+ skill_id: savedSkill.id
410
+ });
362
411
  document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
363
412
  detail: {
364
413
  skill: savedSkill
@@ -402,6 +451,10 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
402
451
  _context5.next = 2;
403
452
  return deleteSkill(skillId);
404
453
  case 2:
454
+ eventAmplitude(EVENTS.aiChatSkillAbmDelete, {
455
+ skill_id: skillId,
456
+ source: 'modal'
457
+ });
405
458
  removeSkill === null || removeSkill === void 0 || removeSkill(skillId);
406
459
  handleSnackbarSuccess(t('mySkills.deleteSuccess'));
407
460
  handleClose();
@@ -432,6 +485,12 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
432
485
  /** Skill ajena en modo lectura: abre un chat nuevo con el primer agente y la mención ya puesta. */
433
486
  var handleUseSkill = function handleUseSkill() {
434
487
  if (!skillId) return;
488
+ eventAmplitude(EVENTS.aiChatSkillUse, {
489
+ skill_id: skillId,
490
+ access_type: accessType,
491
+ source: 'view_modal',
492
+ is_shared: isSharedSkill
493
+ });
435
494
  document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
436
495
  detail: {
437
496
  skill: {
@@ -499,7 +558,7 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
499
558
  children: modalTitle
500
559
  }), /*#__PURE__*/_jsx(SCASMCloseButton, {
501
560
  type: "button",
502
- onClick: handleClose,
561
+ onClick: handleCancel,
503
562
  "aria-label": t('mySkills.close'),
504
563
  children: /*#__PURE__*/_jsx(Cross, {
505
564
  color: "#a6a6a6",
@@ -648,4 +707,4 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
648
707
  }) : null]
649
708
  }), container);
650
709
  };
651
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwiRmlsZVVwbG9hZCIsInVzZVRyYW5zbGF0aW9uIiwiQmFja2Ryb3AiLCJMb2FkZXIiLCJTd2l0Y2giLCJTRUNUSU9OUyIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmb3JtYXREYXRlIiwiY3JlYXRlU2tpbGwiLCJ1cGRhdGVTa2lsbCIsImRlbGV0ZVNraWxsIiwiZ2V0VW5pdEZpbGVTaXplIiwiZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCIsImlzU2tpbGxDb250ZW50T3ZlckxpbWl0IiwiU0tJTExfQ09OVEVOVF9NQVhfQllURVMiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiU0NBU01CeXRlQ291bnRlciIsIlNDQVNNQ2FuY2VsQnV0dG9uIiwiU0NBU01DbG9zZUJ1dHRvbiIsIlNDQVNNQm9keSIsIlNDQVNNRGVsZXRlT3V0bGluZWRCdXR0b24iLCJTQ0FTTURlbGV0ZVNsb3QiLCJTQ0FTTUZpZWxkQm94IiwiU0NBU01GaWVsZElucHV0IiwiU0NBU01GaWVsZExhYmVsIiwiU0NBU01GaWVsZFRleHRhcmVhIiwiU0NBU01Gb290ZXIiLCJTQ0FTTUhlYWRlciIsIlNDQVNNSGVhZGVyVGl0bGUiLCJTQ0FTTUhpZGRlbkZpbGVJbnB1dCIsIlNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQiLCJTQ0FTTUluc3RydWN0aW9uc0hlYWRlciIsIlNDQVNNSW5zdHJ1Y3Rpb25zUGFuZWwiLCJTQ0FTTUluc3RydWN0aW9uc1RleHRhcmVhIiwiU0NBU01JbnN0cnVjdGlvbnNUaXRsZSIsIlNDQVNNTWV0YWRhdGFJdGVtIiwiU0NBU01QcmV2aWV3Qm9keSIsIlNDQVNNUHJldmlld0NvbnRlbnRCb3giLCJTQ0FTTVByZXZpZXdDb250ZW50UGFuZWwiLCJTQ0FTTVByZXZpZXdEZXNjcmlwdGlvbiIsIlNDQVNNUHJldmlld0hlYWRpbmdCbG9jayIsIlNDQVNNUHJldmlld01ldGFkYXRhTGFiZWwiLCJTQ0FTTVByZXZpZXdNZXRhZGF0YVJvdyIsIlNDQVNNUHJldmlld01ldGFkYXRhVmFsdWUiLCJTQ0FTTVByZXZpZXdOYW1lIiwiU0NBU01TYXZlT3V0bGluZWRCdXR0b24iLCJTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uIiwiU0NBU01Td2l0Y2hMYWJlbCIsIlNDQVNNU3dpdGNoUm93IiwiU0NBU01VcGxvYWRCdXR0b24iLCJTQ0FTTVVzZVNraWxsQnV0dG9uIiwiU0NBU01XcmFwcGVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQiLCJpbml0aWFsVmFsdWVzIiwiaXNFZGl0aW5nIiwiZ2VuZXJhbCIsImlkIiwidW5kZWZpbmVkIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiY29udGVudCIsImFjY2Vzc190eXBlIiwiZW1wdHlCYXNlbGluZSIsInBhcnNlRGVzY3JpcHRpb25Gcm9tQ29udGVudCIsImZyb250bWF0dGVyTWF0Y2giLCJtYXRjaCIsImRlc2NyaXB0aW9uTWF0Y2giLCJ0cmltIiwiQWJtU2tpbGxNb2RhbCIsIl9yZWYiLCJfdmFsdWVzJGdlbmVyYWwiLCJfdmFsdWVzJGdlbmVyYWwyIiwiX3ZhbHVlcyRnZW5lcmFsMyIsIl92YWx1ZXMkZ2VuZXJhbDQiLCJfdmFsdWVzJGdlbmVyYWw1IiwiX3ZhbHVlcyRnZW5lcmFsNyIsIl92YWx1ZXMkZ2VuZXJhbDAiLCJfdmFsdWVzJGdlbmVyYWwxIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsInVzZXIiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93RGVsZXRlIiwic2V0U2hvd0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwicGVuZGluZ1VwbG9hZCIsInNldFBlbmRpbmdVcGxvYWQiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInZhbHVlcyIsInNldFZhbHVlcyIsImZpbGVJbnB1dFJlZiIsImluaXRpYWxSZWYiLCJpc1JlYWRPbmx5IiwiaXNTaGFyZWRTa2lsbCIsImlzU2hhcmVkIiwiY2FuU2hhcmVXaXRoQ29tcGFueSIsInJvbGVfaWQiLCJhY2Nlc3NUeXBlIiwiZWZmZWN0aXZlQWNjZXNzVHlwZSIsInNraWxsSWQiLCJjb250ZW50Qnl0ZXMiLCJpc092ZXJMaW1pdCIsImlzVmFsaWQiLCJoYXNDaGFuZ2VzIiwiY3VycmVudCIsImNyZWF0ZWRCeUxhYmVsIiwiX3ZhbHVlcyRnZW5lcmFsNiIsImNyZWF0ZWRCeSIsImNyZWF0ZWRfYnlfbmFtZSIsImNvbmNhdCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwibGFzdFVwZGF0ZWRMYWJlbCIsIl92YWx1ZXMkZ2VuZXJhbDgiLCJfdmFsdWVzJGdlbmVyYWw5IiwidXBkYXRlZEF0IiwidXBkYXRlZF9hdCIsImNyZWF0ZWRfYXQiLCJwYXJzZWQiLCJEYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiaGFuZGxlQ2xvc2UiLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiaGFuZGxlU2V0U2tpbGxWYWx1ZXMiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzIiwiX3NraWxsVmFsdWVzJHZhbHVlczIiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzMyIsIl9yZWYyIiwiZGV0YWlsIiwic2tpbGxWYWx1ZXMiLCJpbmNvbWluZ0dlbmVyYWwiLCJfb2JqZWN0U3ByZWFkIiwiaW5jb21pbmdOYW1lIiwiaW5jb21pbmdEZXNjcmlwdGlvbiIsImluY29taW5nQ29udGVudCIsImluY29taW5nQWNjZXNzVHlwZSIsInBhcnNlZERlc2NyaXB0aW9uIiwiZWRpdGluZ0Jhc2VsaW5lIiwiaW50ZW50IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImNsaWNrIiwiaGFuZGxlQ2hhbmdlRmllbGQiLCJmaWVsZCIsInZhbHVlIiwibGVuZ3RoIiwicHJldiIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUFjY2Vzc1R5cGVDaGFuZ2UiLCJjaGVja2VkIiwiaGFuZGxlVXBsb2FkQ2xpY2siLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQyIiwiaGFuZGxlRmlsZUNoYW5nZSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfZXZlbnQkdGFyZ2V0JGZpbGVzIiwiZmlsZSIsImlzTWFya2Rvd24iLCJ0ZXh0IiwiYmFzZU5hbWUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJmaWxlcyIsImFicnVwdCIsInRlc3QiLCJzaXplIiwic2VudCIsInJlcGxhY2UiLCJfcHJldiRnZW5lcmFsIiwiX3ByZXYkZ2VuZXJhbDIiLCJfcHJldiRnZW5lcmFsMyIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwicGVyc2lzdFNraWxsIiwiX3JlZjQiLCJfY2FsbGVlMiIsInBheWxvYWQiLCJ1cGRhdGVkIiwiY3JlYXRlZCIsIl9jb250ZXh0MiIsImhhbmRsZVNhdmUiLCJfcmVmNSIsIl9jYWxsZWUzIiwiX3QyIiwiX2NvbnRleHQzIiwiZmluaXNoIiwiaGFuZGxlU2F2ZUFuZFVzZSIsIl9yZWY2IiwiX2NhbGxlZTQiLCJzYXZlZFNraWxsIiwiX3QzIiwiX2NvbnRleHQ0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50Iiwic2tpbGwiLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjciLCJfY2FsbGVlNSIsIl90NCIsIl9jb250ZXh0NSIsImhhbmRsZUVkaXRGcm9tVmlldyIsImhhbmRsZVVzZVNraWxsIiwidXNlRmlyc3RBZ2VudCIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiZWRpdE9yQ3JlYXRlVGl0bGUiLCJ2aWV3VGl0bGUiLCJtb2RhbFRpdGxlIiwicHJldmlld0JvZHkiLCJjaGlsZHJlbiIsInpJbmRleCIsIm9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJ0eXBlIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsIiRoZWlnaHQiLCJodG1sRm9yIiwibWF4TGVuZ3RoIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwiJGNsaXBPdmVyZmxvdyIsInJlZiIsImFjY2VwdCIsIiRvdmVyTGltaXQiLCJ1c2VkIiwibWF4Iiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXQiLCJ0aXRsZSIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENoYW5nZUV2ZW50LCBNb3VzZUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0ZpbGVVcGxvYWQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSAnLi4vLi4vYXRvbXMvU3dpdGNoJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlVXNlciwgaXNDb2xsYWJvcmF0b3JSb2xlIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGNyZWF0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvY3JlYXRlU2tpbGwnXG5pbXBvcnQgeyB1cGRhdGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL3VwZGF0ZVNraWxsJ1xuaW1wb3J0IHsgZGVsZXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9kZWxldGVTa2lsbCdcbmltcG9ydCB7IFNraWxsLCBTa2lsbEFjY2Vzc1R5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGdldFVuaXRGaWxlU2l6ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2dldFVuaXRGaWxlU2l6ZSdcbmltcG9ydCB7XG4gIGdldFNraWxsQ29udGVudEJ5dGVMZW5ndGgsXG4gIGlzU2tpbGxDb250ZW50T3ZlckxpbWl0LFxuICBTS0lMTF9DT05URU5UX01BWF9CWVRFUyxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc2tpbGxDb250ZW50U2l6ZSdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQge1xuICBTQ0FTTUJ5dGVDb3VudGVyLFxuICBTQ0FTTUNhbmNlbEJ1dHRvbixcbiAgU0NBU01DbG9zZUJ1dHRvbixcbiAgU0NBU01Cb2R5LFxuICBTQ0FTTURlbGV0ZU91dGxpbmVkQnV0dG9uLFxuICBTQ0FTTURlbGV0ZVNsb3QsXG4gIFNDQVNNRmllbGRCb3gsXG4gIFNDQVNNRmllbGRJbnB1dCxcbiAgU0NBU01GaWVsZExhYmVsLFxuICBTQ0FTTUZpZWxkVGV4dGFyZWEsXG4gIFNDQVNNRm9vdGVyLFxuICBTQ0FTTUhlYWRlcixcbiAgU0NBU01IZWFkZXJUaXRsZSxcbiAgU0NBU01IaWRkZW5GaWxlSW5wdXQsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zSGVhZGVyLFxuICBTQ0FTTUluc3RydWN0aW9uc1BhbmVsLFxuICBTQ0FTTUluc3RydWN0aW9uc1RleHRhcmVhLFxuICBTQ0FTTUluc3RydWN0aW9uc1RpdGxlLFxuICBTQ0FTTU1ldGFkYXRhSXRlbSxcbiAgU0NBU01QcmV2aWV3Qm9keSxcbiAgU0NBU01QcmV2aWV3Q29udGVudEJveCxcbiAgU0NBU01QcmV2aWV3Q29udGVudFBhbmVsLFxuICBTQ0FTTVByZXZpZXdEZXNjcmlwdGlvbixcbiAgU0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrLFxuICBTQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsLFxuICBTQ0FTTVByZXZpZXdNZXRhZGF0YVJvdyxcbiAgU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZSxcbiAgU0NBU01QcmV2aWV3TmFtZSxcbiAgU0NBU01TYXZlT3V0bGluZWRCdXR0b24sXG4gIFNDQVNNU2F2ZVByaW1hcnlCdXR0b24sXG4gIFNDQVNNU3dpdGNoTGFiZWwsXG4gIFNDQVNNU3dpdGNoUm93LFxuICBTQ0FTTVVwbG9hZEJ1dHRvbixcbiAgU0NBU01Vc2VTa2lsbEJ1dHRvbixcbiAgU0NBU01XcmFwcGVyLFxufSBmcm9tICcuL0FibVNraWxsTW9kYWwuc3R5bGVzJ1xuXG5leHBvcnQgY29uc3QgU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQgPSAnbWFpYS11c2Utc2tpbGwtYWZ0ZXItc2F2ZSdcblxudHlwZSBTa2lsbE1vZGFsR2VuZXJhbCA9IHtcbiAgaWQ/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBjb250ZW50Pzogc3RyaW5nXG4gIGFjY2Vzc190eXBlPzogU2tpbGxBY2Nlc3NUeXBlXG4gIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICBjcmVhdGVkX2F0Pzogc3RyaW5nXG4gIHVwZGF0ZWRfYXQ/OiBzdHJpbmdcbn1cblxudHlwZSBTa2lsbE1vZGFsVmFsdWVzID0ge1xuICBpc0VkaXRpbmc6IGJvb2xlYW5cbiAgaXNSZWFkT25seT86IGJvb2xlYW5cbiAgaXNTaGFyZWQ/OiBib29sZWFuXG4gIGludGVudD86ICdnZW5lcmF0ZScgfCAnd3JpdGUnIHwgJ3VwbG9hZCdcbiAgZ2VuZXJhbD86IFNraWxsTW9kYWxHZW5lcmFsXG59XG5cbnR5cGUgQWJtU2tpbGxNb2RhbFByb3BzID0ge1xuICBhZGRTa2lsbD86IChza2lsbDogU2tpbGwpID0+IHZvaWRcbiAgdXBkYXRlU2tpbGxJbkxpc3Q/OiAoc2tpbGw6IFNraWxsKSA9PiB2b2lkXG4gIHJlbW92ZVNraWxsPzogKHNraWxsSWQ6IHN0cmluZykgPT4gdm9pZFxufVxuXG5jb25zdCBpbml0aWFsVmFsdWVzOiBTa2lsbE1vZGFsVmFsdWVzID0ge1xuICBpc0VkaXRpbmc6IGZhbHNlLFxuICBnZW5lcmFsOiB7XG4gICAgaWQ6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgY29udGVudDogJycsXG4gICAgYWNjZXNzX3R5cGU6ICdvbmx5X21lJyxcbiAgfSxcbn1cblxudHlwZSBTa2lsbEZvcm1CYXNlbGluZSA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgY29udGVudDogc3RyaW5nXG4gIGFjY2Vzc190eXBlOiBTa2lsbEFjY2Vzc1R5cGVcbn1cblxuY29uc3QgZW1wdHlCYXNlbGluZTogU2tpbGxGb3JtQmFzZWxpbmUgPSB7XG4gIG5hbWU6ICcnLFxuICBkZXNjcmlwdGlvbjogJycsXG4gIGNvbnRlbnQ6ICcnLFxuICBhY2Nlc3NfdHlwZTogJ29ubHlfbWUnLFxufVxuXG5jb25zdCBwYXJzZURlc2NyaXB0aW9uRnJvbUNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJNYXRjaCA9IGNvbnRlbnQubWF0Y2goL14tLS1cXHMqXFxuKFtcXHNcXFNdKj8pXFxuLS0tLylcbiAgaWYgKCFmcm9udG1hdHRlck1hdGNoKSByZXR1cm4gJydcbiAgY29uc3QgZGVzY3JpcHRpb25NYXRjaCA9IGZyb250bWF0dGVyTWF0Y2hbMV0ubWF0Y2goL15kZXNjcmlwdGlvbjpcXHMqKC4rKSQvbSlcbiAgcmV0dXJuIGRlc2NyaXB0aW9uTWF0Y2ggPyBkZXNjcmlwdGlvbk1hdGNoWzFdLnRyaW0oKSA6ICcnXG59XG5cbmV4cG9ydCBjb25zdCBBYm1Ta2lsbE1vZGFsID0gKHsgYWRkU2tpbGwsIHVwZGF0ZVNraWxsSW5MaXN0LCByZW1vdmVTa2lsbCB9OiBBYm1Ta2lsbE1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93RGVsZXRlLCBzZXRTaG93RGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcGVuZGluZ1VwbG9hZCwgc2V0UGVuZGluZ1VwbG9hZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlPFNraWxsTW9kYWxWYWx1ZXM+KGluaXRpYWxWYWx1ZXMpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBpbml0aWFsUmVmID0gdXNlUmVmPFNraWxsRm9ybUJhc2VsaW5lPihlbXB0eUJhc2VsaW5lKVxuXG4gIGNvbnN0IGlzUmVhZE9ubHkgPSAhIXZhbHVlcy5pc1JlYWRPbmx5XG4gIGNvbnN0IGlzU2hhcmVkU2tpbGwgPSAhIXZhbHVlcy5pc1NoYXJlZFxuICBjb25zdCBjYW5TaGFyZVdpdGhDb21wYW55ID0gIWlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpICYmICFpc1JlYWRPbmx5XG5cbiAgY29uc3QgbmFtZSA9IHZhbHVlcy5nZW5lcmFsPy5uYW1lIHx8ICcnXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gdmFsdWVzLmdlbmVyYWw/LmRlc2NyaXB0aW9uIHx8ICcnXG4gIGNvbnN0IGNvbnRlbnQgPSB2YWx1ZXMuZ2VuZXJhbD8uY29udGVudCB8fCAnJ1xuICBjb25zdCBhY2Nlc3NUeXBlOiBTa2lsbEFjY2Vzc1R5cGUgPSB2YWx1ZXMuZ2VuZXJhbD8uYWNjZXNzX3R5cGUgfHwgJ29ubHlfbWUnXG4gIGNvbnN0IGVmZmVjdGl2ZUFjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IGNhblNoYXJlV2l0aENvbXBhbnkgPyBhY2Nlc3NUeXBlIDogJ29ubHlfbWUnXG4gIGNvbnN0IHNraWxsSWQgPSB2YWx1ZXMuZ2VuZXJhbD8uaWRcbiAgY29uc3QgY29udGVudEJ5dGVzID0gdXNlTWVtbygoKSA9PiBnZXRTa2lsbENvbnRlbnRCeXRlTGVuZ3RoKGNvbnRlbnQpLCBbY29udGVudF0pXG4gIGNvbnN0IGlzT3ZlckxpbWl0ID0gY29udGVudEJ5dGVzID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVNcbiAgY29uc3QgaXNWYWxpZCA9ICEhbmFtZS50cmltKCkgJiYgISFjb250ZW50LnRyaW0oKSAmJiAhaXNPdmVyTGltaXRcbiAgY29uc3QgaGFzQ2hhbmdlcyA9XG4gICAgbmFtZS50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5uYW1lIHx8XG4gICAgZGVzY3JpcHRpb24udHJpbSgpICE9PSBpbml0aWFsUmVmLmN1cnJlbnQuZGVzY3JpcHRpb24gfHxcbiAgICBjb250ZW50LnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50LmNvbnRlbnQgfHxcbiAgICAoY2FuU2hhcmVXaXRoQ29tcGFueSAmJiBlZmZlY3RpdmVBY2Nlc3NUeXBlICE9PSBpbml0aWFsUmVmLmN1cnJlbnQuYWNjZXNzX3R5cGUpXG5cbiAgY29uc3QgY3JlYXRlZEJ5TGFiZWwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjcmVhdGVkQnkgPSB2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9ieV9uYW1lPy50cmltKClcbiAgICBpZiAoY3JlYXRlZEJ5KSByZXR1cm4gY3JlYXRlZEJ5XG4gICAgcmV0dXJuIGlzU2hhcmVkU2tpbGwgPyAnJyA6IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YC50cmltKClcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsPy5jcmVhdGVkX2J5X25hbWUsIHVzZXIuZmlyc3ROYW1lLCB1c2VyLmxhc3ROYW1lLCBpc1NoYXJlZFNraWxsXSlcblxuICBjb25zdCBsYXN0VXBkYXRlZExhYmVsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZEF0ID0gdmFsdWVzLmdlbmVyYWw/LnVwZGF0ZWRfYXQgfHwgdmFsdWVzLmdlbmVyYWw/LmNyZWF0ZWRfYXRcbiAgICBpZiAoIXVwZGF0ZWRBdCkgcmV0dXJuICcnXG4gICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUodXBkYXRlZEF0KVxuICAgIGlmIChOdW1iZXIuaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkpIHJldHVybiAnJ1xuICAgIHJldHVybiBmb3JtYXREYXRlKHBhcnNlZClcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsPy51cGRhdGVkX2F0LCB2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9hdF0pXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIHNldFNob3dEZWxldGUoZmFsc2UpXG4gICAgc2V0UGVuZGluZ1VwbG9hZChmYWxzZSlcbiAgICBzZXRWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgICBpbml0aWFsUmVmLmN1cnJlbnQgPSBlbXB0eUJhc2VsaW5lXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZUNsb3NlXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRTa2lsbFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IHNraWxsVmFsdWVzIH0gPSBldmVudC5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGxWYWx1ZXMpIHJldHVyblxuXG4gICAgICBjb25zdCBpbmNvbWluZ0dlbmVyYWwgPSB7XG4gICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuZ2VuZXJhbCxcbiAgICAgICAgLi4uc2tpbGxWYWx1ZXMudmFsdWVzPy5nZW5lcmFsLFxuICAgICAgfVxuICAgICAgY29uc3QgaW5jb21pbmdOYW1lID0gKGluY29taW5nR2VuZXJhbC5uYW1lIHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nRGVzY3JpcHRpb24gPSAoaW5jb21pbmdHZW5lcmFsLmRlc2NyaXB0aW9uIHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nQ29udGVudCA9IChpbmNvbWluZ0dlbmVyYWwuY29udGVudCB8fCAnJykudHJpbSgpXG4gICAgICBjb25zdCBpbmNvbWluZ0FjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IGlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpXG4gICAgICAgID8gJ29ubHlfbWUnXG4gICAgICAgIDogaW5jb21pbmdHZW5lcmFsLmFjY2Vzc190eXBlIHx8ICdvbmx5X21lJ1xuICAgICAgY29uc3QgcGFyc2VkRGVzY3JpcHRpb24gPVxuICAgICAgICBpbmNvbWluZ0Rlc2NyaXB0aW9uIHx8IChpbmNvbWluZ0NvbnRlbnQgPyBwYXJzZURlc2NyaXB0aW9uRnJvbUNvbnRlbnQoaW5jb21pbmdDb250ZW50KSA6ICcnKVxuXG4gICAgICBjb25zdCBlZGl0aW5nQmFzZWxpbmU6IFNraWxsRm9ybUJhc2VsaW5lID0ge1xuICAgICAgICBuYW1lOiBpbmNvbWluZ05hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwYXJzZWREZXNjcmlwdGlvbixcbiAgICAgICAgY29udGVudDogaW5jb21pbmdDb250ZW50LFxuICAgICAgICBhY2Nlc3NfdHlwZTogaW5jb21pbmdBY2Nlc3NUeXBlLFxuICAgICAgfVxuICAgICAgaW5pdGlhbFJlZi5jdXJyZW50ID0gc2tpbGxWYWx1ZXMudmFsdWVzPy5pc0VkaXRpbmcgPyBlZGl0aW5nQmFzZWxpbmUgOiBlbXB0eUJhc2VsaW5lXG5cbiAgICAgIHNldFZhbHVlcyh7XG4gICAgICAgIC4uLmluaXRpYWxWYWx1ZXMsXG4gICAgICAgIC4uLnNraWxsVmFsdWVzLnZhbHVlcyxcbiAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgIC4uLmluY29taW5nR2VuZXJhbCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogcGFyc2VkRGVzY3JpcHRpb24sXG4gICAgICAgICAgYWNjZXNzX3R5cGU6IGluY29taW5nQWNjZXNzVHlwZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKHNraWxsVmFsdWVzLnZhbHVlcz8uaW50ZW50ID09PSAndXBsb2FkJylcbiAgICAgIHNldElzT3BlbighIXNraWxsVmFsdWVzLmlzT3BlbilcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldFNraWxsVmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldFNraWxsVmFsdWVzKVxuICAgIH1cbiAgfSwgW3VzZXIucm9sZV9pZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuICYmIHBlbmRpbmdVcGxvYWQpIHtcbiAgICAgIHNldFBlbmRpbmdVcGxvYWQoZmFsc2UpXG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgcGVuZGluZ1VwbG9hZF0pXG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlRmllbGQgPSAoZmllbGQ6ICduYW1lJyB8ICdkZXNjcmlwdGlvbicgfCAnY29udGVudCcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZmllbGQgPT09ICdjb250ZW50JyAmJiBpc1NraWxsQ29udGVudE92ZXJMaW1pdCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggLSBjb250ZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5jb250ZW50U2l6ZUVycm9yJykpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7IC4uLnByZXYuZ2VuZXJhbCwgW2ZpZWxkXTogdmFsdWUgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUFjY2Vzc1R5cGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmICghY2FuU2hhcmVXaXRoQ29tcGFueSkgcmV0dXJuXG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7XG4gICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IGNoZWNrZWQgPyAnY29tcGFueScgOiAnb25seV9tZScsXG4gICAgICB9LFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBsb2FkQ2xpY2sgPSAoKSA9PiB7XG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVDaGFuZ2UgPSBhc3luYyAoZXZlbnQ6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlcz8uWzBdXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBjb25zdCBpc01hcmtkb3duID0gL1xcLihtZHxtYXJrZG93bikkL2kudGVzdChmaWxlLm5hbWUpXG4gICAgaWYgKCFpc01hcmtkb3duKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmlsZS5zaXplID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVMpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkU2l6ZUVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBpZiAoaXNTa2lsbENvbnRlbnRPdmVyTGltaXQodGV4dCkpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50KHRleHQpXG4gICAgICBzZXRWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGNvbnRlbnQ6IHRleHQsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHByZXYuZ2VuZXJhbD8uZGVzY3JpcHRpb24/LnRyaW0oKVxuICAgICAgICAgICAgPyBwcmV2LmdlbmVyYWwuZGVzY3JpcHRpb25cbiAgICAgICAgICAgIDogcGFyc2VkRGVzY3JpcHRpb24gfHwgcHJldi5nZW5lcmFsPy5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBwcmV2LmdlbmVyYWw/Lm5hbWU/LnRyaW0oKSA/IHByZXYuZ2VuZXJhbC5uYW1lIDogYmFzZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBlcnNpc3RTa2lsbCA9IGFzeW5jICgpOiBQcm9taXNlPFNraWxsIHwgbnVsbD4gPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBuYW1lOiBuYW1lLnRyaW0oKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbi50cmltKCksXG4gICAgICBjb250ZW50OiBjb250ZW50LnRyaW0oKSxcbiAgICAgIGFjY2Vzc190eXBlOiBlZmZlY3RpdmVBY2Nlc3NUeXBlLFxuICAgIH1cblxuICAgIGlmICh2YWx1ZXMuaXNFZGl0aW5nICYmIHNraWxsSWQpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTa2lsbChza2lsbElkLCBwYXlsb2FkKVxuICAgICAgdXBkYXRlU2tpbGxJbkxpc3Q/Lih1cGRhdGVkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLnVwZGF0ZVN1Y2Nlc3MnKSlcbiAgICAgIHJldHVybiB1cGRhdGVkXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVNraWxsKHBheWxvYWQpXG4gICAgYWRkU2tpbGw/LihjcmVhdGVkKVxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5jcmVhdGVTdWNjZXNzJykpXG4gICAgcmV0dXJuIGNyZWF0ZWRcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlcykgcmV0dXJuXG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLnVwZGF0ZUVycm9yJykgOiB0KCdteVNraWxscy5jcmVhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZUFuZFVzZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nKSByZXR1cm5cbiAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2F2ZWRTa2lsbCA9IGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBpZiAoc2F2ZWRTa2lsbCkge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICAgICAgZGV0YWlsOiB7IHNraWxsOiBzYXZlZFNraWxsIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoc2tpbGxJZClcbiAgICAgIHJlbW92ZVNraWxsPy4oc2tpbGxJZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0RnJvbVZpZXcgPSAoKSA9PiB7XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHsgLi4ucHJldiwgaXNSZWFkT25seTogZmFsc2UgfSkpXG4gIH1cblxuICAvKiogU2tpbGwgYWplbmEgZW4gbW9kbyBsZWN0dXJhOiBhYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiB5YSBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gKCkgPT4ge1xuICAgIGlmICghc2tpbGxJZCkgcmV0dXJuXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbDogeyBpZDogc2tpbGxJZCwgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIGFjY2Vzc190eXBlOiBhY2Nlc3NUeXBlIH0sXG4gICAgICAgICAgdXNlRmlyc3RBZ2VudDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICAgIGhhbmRsZUNsb3NlKClcbiAgfVxuXG4gIGlmICghaXNPcGVuKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKVxuICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuIG51bGxcblxuICBjb25zdCBlZGl0T3JDcmVhdGVUaXRsZSA9IHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy5lZGl0VGl0bGUnKSA6IHQoJ215U2tpbGxzLmNyZWF0ZVRpdGxlJylcbiAgY29uc3Qgdmlld1RpdGxlID0gaXNTaGFyZWRTa2lsbCA/IHQoJ215U2tpbGxzLnZpZXdUaXRsZScpIDogdCgnbXlTa2lsbHMudmlld093blRpdGxlJylcbiAgY29uc3QgbW9kYWxUaXRsZSA9IGlzUmVhZE9ubHkgPyB2aWV3VGl0bGUgOiBlZGl0T3JDcmVhdGVUaXRsZVxuXG4gIGNvbnN0IHByZXZpZXdCb2R5ID0gKFxuICAgIDxTQ0FTTVByZXZpZXdCb2R5PlxuICAgICAgPFNDQVNNUHJldmlld0hlYWRpbmdCbG9jaz5cbiAgICAgICAgPFNDQVNNUHJldmlld05hbWU+e25hbWV9PC9TQ0FTTVByZXZpZXdOYW1lPlxuICAgICAgICB7ZGVzY3JpcHRpb24gPyA8U0NBU01QcmV2aWV3RGVzY3JpcHRpb24+e2Rlc2NyaXB0aW9ufTwvU0NBU01QcmV2aWV3RGVzY3JpcHRpb24+IDogbnVsbH1cbiAgICAgIDwvU0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrPlxuXG4gICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFSb3c+XG4gICAgICAgIHtjcmVhdGVkQnlMYWJlbCA/IChcbiAgICAgICAgICA8U0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD57dCgnbXlTa2lsbHMuY3JlYXRlZEJ5Jyl9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+e2NyZWF0ZWRCeUxhYmVsfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT5cbiAgICAgICAgICA8L1NDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAge2xhc3RVcGRhdGVkTGFiZWwgPyAoXG4gICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmxhc3RVcGRhdGVkJyl9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+e2xhc3RVcGRhdGVkTGFiZWx9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgIDwvU0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IWlzU2hhcmVkU2tpbGwgPyAoXG4gICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmVuYWJsZWRMYWJlbCcpfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgICAgICB7YWNjZXNzVHlwZSA9PT0gJ2NvbXBhbnknID8gdCgnbXlTa2lsbHMudmlzaWJpbGl0eUV2ZXJ5b25lJykgOiB0KCdteVNraWxscy52aXNpYmlsaXR5T25seU1lJyl9XG4gICAgICAgICAgICA8L1NDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+XG4gICAgICAgICAgPC9TQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDQVNNUHJldmlld01ldGFkYXRhUm93PlxuXG4gICAgICA8U0NBU01QcmV2aWV3Q29udGVudFBhbmVsPlxuICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNUaXRsZT57dCgnbXlTa2lsbHMuaW5zdHJ1Y3Rpb25zTGFiZWwnKX08L1NDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+XG4gICAgICAgIDxTQ0FTTVByZXZpZXdDb250ZW50Qm94Pntjb250ZW50fTwvU0NBU01QcmV2aWV3Q29udGVudEJveD5cbiAgICAgIDwvU0NBU01QcmV2aWV3Q29udGVudFBhbmVsPlxuICAgIDwvU0NBU01QcmV2aWV3Qm9keT5cbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17MTExMn0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBU01XcmFwcGVyIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgPFNDQVNNSGVhZGVyPlxuICAgICAgICAgIDxTQ0FTTUhlYWRlclRpdGxlPnttb2RhbFRpdGxlfTwvU0NBU01IZWFkZXJUaXRsZT5cbiAgICAgICAgICA8U0NBU01DbG9zZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9IGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNsb3NlJyl9PlxuICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICA8L1NDQVNNQ2xvc2VCdXR0b24+XG4gICAgICAgIDwvU0NBU01IZWFkZXI+XG5cbiAgICAgICAge2lzUmVhZE9ubHkgPyAoXG4gICAgICAgICAgcHJldmlld0JvZHlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8U0NBU01Cb2R5PlxuICAgICAgICAgICAgPFNDQVNNRmllbGRCb3ggJGhlaWdodD17NTB9PlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZExhYmVsIGh0bWxGb3I9XCJza2lsbC1uYW1lLWlucHV0XCI+e3QoJ215U2tpbGxzLm5hbWVMYWJlbCcpfTwvU0NBU01GaWVsZExhYmVsPlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZElucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJza2lsbC1uYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsxNTB9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtuYW1lfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCduYW1lJywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU0NBU01GaWVsZEJveD5cblxuICAgICAgICAgICAgPFNDQVNNRmllbGRCb3ggJGhlaWdodD17MTIwfSAkY2xpcE92ZXJmbG93PlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZExhYmVsIGh0bWxGb3I9XCJza2lsbC1kZXNjcmlwdGlvbi1pbnB1dFwiPnt0KCdteVNraWxscy5kZXNjcmlwdGlvbkxhYmVsJyl9PC9TQ0FTTUZpZWxkTGFiZWw+XG4gICAgICAgICAgICAgIDxTQ0FTTUZpZWxkVGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cInNraWxsLWRlc2NyaXB0aW9uLWlucHV0XCJcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezUwMH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnZGVzY3JpcHRpb24nLCBldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TQ0FTTUZpZWxkQm94PlxuXG4gICAgICAgICAgICB7Y2FuU2hhcmVXaXRoQ29tcGFueSA/IChcbiAgICAgICAgICAgICAgPFNDQVNNU3dpdGNoUm93PlxuICAgICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FjY2Vzc1R5cGUgPT09ICdjb21wYW55J31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLnNoYXJlV2l0aENvbXBhbnknKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVN3aXRjaExhYmVsPnt0KCdteVNraWxscy5zaGFyZVdpdGhDb21wYW55Jyl9PC9TQ0FTTVN3aXRjaExhYmVsPlxuICAgICAgICAgICAgICA8L1NDQVNNU3dpdGNoUm93PlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc1BhbmVsPlxuICAgICAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNIZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+e3QoJ215U2tpbGxzLmluc3RydWN0aW9uc0xhYmVsJyl9PC9TQ0FTTUluc3RydWN0aW9uc1RpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVVwbG9hZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlVXBsb2FkQ2xpY2t9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgICAgPEZpbGVVcGxvYWQgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj1cIiMwOENcIiAvPlxuICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVwbG9hZE1kJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTVVwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8U0NBU01IaWRkZW5GaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiLm1kLC5tYXJrZG93bix0ZXh0L21hcmtkb3duXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NBU01JbnN0cnVjdGlvbnNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQ+XG4gICAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIGlkPVwic2tpbGwtY29udGVudC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuY29udGVudFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGVudH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gaGFuZGxlQ2hhbmdlRmllbGQoJ2NvbnRlbnQnLCBldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NBU01JbnN0cnVjdGlvbnNGaWVsZD5cbiAgICAgICAgICAgICAgPFNDQVNNQnl0ZUNvdW50ZXIgJG92ZXJMaW1pdD17aXNPdmVyTGltaXR9IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5ieXRlc0NvdW50ZXInLCB7XG4gICAgICAgICAgICAgICAgICB1c2VkOiBnZXRVbml0RmlsZVNpemUoY29udGVudEJ5dGVzKSxcbiAgICAgICAgICAgICAgICAgIG1heDogZ2V0VW5pdEZpbGVTaXplKFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTKSxcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9TQ0FTTUJ5dGVDb3VudGVyPlxuICAgICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc1BhbmVsPlxuICAgICAgICAgIDwvU0NBU01Cb2R5PlxuICAgICAgICApfVxuXG4gICAgICAgIDxTQ0FTTUZvb3Rlcj5cbiAgICAgICAgICB7aXNSZWFkT25seSAmJiBpc1NoYXJlZFNraWxsID8gKFxuICAgICAgICAgICAgPFNDQVNNVXNlU2tpbGxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVVzZVNraWxsfT5cbiAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVzZVNraWxsJyl9XG4gICAgICAgICAgICA8L1NDQVNNVXNlU2tpbGxCdXR0b24+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7aXNSZWFkT25seSAmJiAhaXNTaGFyZWRTa2lsbCA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxTQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgICAgPFNDQVNNRGVsZXRlT3V0bGluZWRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dEZWxldGUodHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgIDwvU0NBU01EZWxldGVPdXRsaW5lZEJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgIDxTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVFZGl0RnJvbVZpZXd9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgIDwvU0NBU01TYXZlUHJpbWFyeUJ1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgeyFpc1JlYWRPbmx5ID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3ZhbHVlcy5pc0VkaXRpbmcgPyAoXG4gICAgICAgICAgICAgICAgPFNDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FTTUNhbmNlbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0RlbGV0ZSh0cnVlKX0gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5kZWxldGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NBU01DYW5jZWxCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U0NBU01TYXZlT3V0bGluZWRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVNhdmVBbmRVc2V9IGRpc2FibGVkPXshaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgIHtpc1N1Ym1pdHRpbmcgPyA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+IDogdCgnbXlTa2lsbHMuc2F2ZUFuZFVzZScpfVxuICAgICAgICAgICAgICA8L1NDQVNNU2F2ZU91dGxpbmVkQnV0dG9uPlxuICAgICAgICAgICAgICA8U0NBU01TYXZlUHJpbWFyeUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNhdmV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpc1N1Ym1pdHRpbmcgPyA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+IDogdCgnbXlTa2lsbHMuc2F2ZScpfVxuICAgICAgICAgICAgICA8L1NDQVNNU2F2ZVByaW1hcnlCdXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TQ0FTTUZvb3Rlcj5cbiAgICAgIDwvU0NBU01XcmFwcGVyPlxuXG4gICAgICB7c2hvd0RlbGV0ZSAmJiBza2lsbElkID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbmFtZSwgaWQ6IHNraWxsSWQgfX1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBjb250YWluZXJcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLFNBQWtDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2xHLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsVUFBVSxRQUFRLDZDQUE2QztBQUN4RSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxRQUFRLFFBQVEsc0JBQXNCO0FBQy9DLFNBQVNDLE1BQU0sUUFBUSxvQkFBb0I7QUFDM0MsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLE9BQU8sRUFBRUMsa0JBQWtCLFFBQVEsMkJBQTJCO0FBQ3ZFLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBQ2hELFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxXQUFXLFFBQVEsMkNBQTJDO0FBRXZFLFNBQVNDLGVBQWUsUUFBUSxnQ0FBZ0M7QUFDaEUsU0FDRUMs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
710
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwiRmlsZVVwbG9hZCIsInVzZVRyYW5zbGF0aW9uIiwiQmFja2Ryb3AiLCJMb2FkZXIiLCJTd2l0Y2giLCJTRUNUSU9OUyIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVNuYWNrQmFyTWFuYWdlciIsImZvcm1hdERhdGUiLCJjcmVhdGVTa2lsbCIsInVwZGF0ZVNraWxsIiwiZGVsZXRlU2tpbGwiLCJnZXRVbml0RmlsZVNpemUiLCJnZXRTa2lsbENvbnRlbnRCeXRlTGVuZ3RoIiwiaXNTa2lsbENvbnRlbnRPdmVyTGltaXQiLCJTS0lMTF9DT05URU5UX01BWF9CWVRFUyIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJTQ0FTTUJ5dGVDb3VudGVyIiwiU0NBU01DYW5jZWxCdXR0b24iLCJTQ0FTTUNsb3NlQnV0dG9uIiwiU0NBU01Cb2R5IiwiU0NBU01EZWxldGVPdXRsaW5lZEJ1dHRvbiIsIlNDQVNNRGVsZXRlU2xvdCIsIlNDQVNNRmllbGRCb3giLCJTQ0FTTUZpZWxkSW5wdXQiLCJTQ0FTTUZpZWxkTGFiZWwiLCJTQ0FTTUZpZWxkVGV4dGFyZWEiLCJTQ0FTTUZvb3RlciIsIlNDQVNNSGVhZGVyIiwiU0NBU01IZWFkZXJUaXRsZSIsIlNDQVNNSGlkZGVuRmlsZUlucHV0IiwiU0NBU01JbnN0cnVjdGlvbnNGaWVsZCIsIlNDQVNNSW5zdHJ1Y3Rpb25zSGVhZGVyIiwiU0NBU01JbnN0cnVjdGlvbnNQYW5lbCIsIlNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWEiLCJTQ0FTTUluc3RydWN0aW9uc1RpdGxlIiwiU0NBU01NZXRhZGF0YUl0ZW0iLCJTQ0FTTVByZXZpZXdCb2R5IiwiU0NBU01QcmV2aWV3Q29udGVudEJveCIsIlNDQVNNUHJldmlld0NvbnRlbnRQYW5lbCIsIlNDQVNNUHJldmlld0Rlc2NyaXB0aW9uIiwiU0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrIiwiU0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbCIsIlNDQVNNUHJldmlld01ldGFkYXRhUm93IiwiU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZSIsIlNDQVNNUHJldmlld05hbWUiLCJTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvbiIsIlNDQVNNU2F2ZVByaW1hcnlCdXR0b24iLCJTQ0FTTVN3aXRjaExhYmVsIiwiU0NBU01Td2l0Y2hSb3ciLCJTQ0FTTVVwbG9hZEJ1dHRvbiIsIlNDQVNNVXNlU2tpbGxCdXR0b24iLCJTQ0FTTVdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCIsInJlc29sdmVTa2lsbEFibU9wdGlvbiIsInNraWxsVmFsdWVzIiwiaXNSZWFkT25seSIsImlzRWRpdGluZyIsImluaXRpYWxWYWx1ZXMiLCJnZW5lcmFsIiwiaWQiLCJ1bmRlZmluZWQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiYWNjZXNzX3R5cGUiLCJlbXB0eUJhc2VsaW5lIiwicGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50IiwiZnJvbnRtYXR0ZXJNYXRjaCIsIm1hdGNoIiwiZGVzY3JpcHRpb25NYXRjaCIsInRyaW0iLCJBYm1Ta2lsbE1vZGFsIiwiX3JlZiIsIl92YWx1ZXMkZ2VuZXJhbCIsIl92YWx1ZXMkZ2VuZXJhbDIiLCJfdmFsdWVzJGdlbmVyYWwzIiwiX3ZhbHVlcyRnZW5lcmFsNCIsIl92YWx1ZXMkZ2VuZXJhbDUiLCJfdmFsdWVzJGdlbmVyYWw3IiwiX3ZhbHVlcyRnZW5lcmFsMCIsIl92YWx1ZXMkZ2VuZXJhbDEiLCJhZGRTa2lsbCIsInVwZGF0ZVNraWxsSW5MaXN0IiwicmVtb3ZlU2tpbGwiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzU3VibWl0dGluZyIsInNldElzU3VibWl0dGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd0RlbGV0ZSIsInNldFNob3dEZWxldGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInBlbmRpbmdVcGxvYWQiLCJzZXRQZW5kaW5nVXBsb2FkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJmaWxlSW5wdXRSZWYiLCJpbml0aWFsUmVmIiwiaXNTaGFyZWRTa2lsbCIsImlzU2hhcmVkIiwiY2FuU2hhcmVXaXRoQ29tcGFueSIsInJvbGVfaWQiLCJhY2Nlc3NUeXBlIiwiZWZmZWN0aXZlQWNjZXNzVHlwZSIsInNraWxsSWQiLCJjb250ZW50Qnl0ZXMiLCJpc092ZXJMaW1pdCIsImlzVmFsaWQiLCJoYXNDaGFuZ2VzIiwiY3VycmVudCIsImNyZWF0ZWRCeUxhYmVsIiwiX3ZhbHVlcyRnZW5lcmFsNiIsImNyZWF0ZWRCeSIsImNyZWF0ZWRfYnlfbmFtZSIsImNvbmNhdCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwibGFzdFVwZGF0ZWRMYWJlbCIsIl92YWx1ZXMkZ2VuZXJhbDgiLCJfdmFsdWVzJGdlbmVyYWw5IiwidXBkYXRlZEF0IiwidXBkYXRlZF9hdCIsImNyZWF0ZWRfYXQiLCJwYXJzZWQiLCJEYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiaGFuZGxlQ2xvc2UiLCJoYW5kbGVDYW5jZWwiLCJhaUNoYXRTa2lsbEFibUNhbmNlbCIsIm9wdGlvbiIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGVTZXRTa2lsbFZhbHVlcyIsIl9za2lsbFZhbHVlcyR2YWx1ZXMiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzMiIsIl9za2lsbFZhbHVlcyR2YWx1ZXMzIiwiX3JlZjIiLCJkZXRhaWwiLCJhbmFseXRpY3NTb3VyY2UiLCJpbmNvbWluZ0dlbmVyYWwiLCJfb2JqZWN0U3ByZWFkIiwiaW5jb21pbmdOYW1lIiwiaW5jb21pbmdEZXNjcmlwdGlvbiIsImluY29taW5nQ29udGVudCIsImluY29taW5nQWNjZXNzVHlwZSIsInBhcnNlZERlc2NyaXB0aW9uIiwiZWRpdGluZ0Jhc2VsaW5lIiwiaW50ZW50IiwiaW5jb21pbmdWYWx1ZXMiLCJzb3VyY2UiLCJhaUNoYXRTa2lsbEFibUFjY2VzcyIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQiLCJjbGljayIsImhhbmRsZUNoYW5nZUZpZWxkIiwiZmllbGQiLCJ2YWx1ZSIsImxlbmd0aCIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlIiwiY2hlY2tlZCIsImhhbmRsZVVwbG9hZENsaWNrIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50MiIsImhhbmRsZUZpbGVDaGFuZ2UiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2V2ZW50JHRhcmdldCRmaWxlcyIsImZpbGUiLCJpc01hcmtkb3duIiwidGV4dCIsImJhc2VOYW1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiZmlsZXMiLCJhYnJ1cHQiLCJ0ZXN0IiwiYWlDaGF0U2tpbGxVcGxvYWQiLCJyZXN1bHQiLCJzaXplIiwic2VudCIsInJlcGxhY2UiLCJfcHJldiRnZW5lcmFsIiwiX3ByZXYkZ2VuZXJhbDIiLCJfcHJldiRnZW5lcmFsMyIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwicGVyc2lzdFNraWxsIiwiX3JlZjQiLCJfY2FsbGVlMiIsInBheWxvYWQiLCJ1cGRhdGVkIiwiY3JlYXRlZCIsIl9jb250ZXh0MiIsImhhbmRsZVNhdmUiLCJfcmVmNSIsIl9jYWxsZWUzIiwic2F2ZWRTa2lsbCIsIl90MiIsIl9jb250ZXh0MyIsImFpQ2hhdFNraWxsQWJtQ29uZmlybSIsImFjdGlvbiIsInNraWxsX2lkIiwiZmluaXNoIiwiaGFuZGxlU2F2ZUFuZFVzZSIsIl9yZWY2IiwiX2NhbGxlZTQiLCJfdDMiLCJfY29udGV4dDQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJza2lsbCIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmNyIsIl9jYWxsZWU1IiwiX3Q0IiwiX2NvbnRleHQ1IiwiYWlDaGF0U2tpbGxBYm1EZWxldGUiLCJoYW5kbGVFZGl0RnJvbVZpZXciLCJoYW5kbGVVc2VTa2lsbCIsImFpQ2hhdFNraWxsVXNlIiwiaXNfc2hhcmVkIiwidXNlRmlyc3RBZ2VudCIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiZWRpdE9yQ3JlYXRlVGl0bGUiLCJ2aWV3VGl0bGUiLCJtb2RhbFRpdGxlIiwicHJldmlld0JvZHkiLCJjaGlsZHJlbiIsInpJbmRleCIsIm9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJ0eXBlIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsIiRoZWlnaHQiLCJodG1sRm9yIiwibWF4TGVuZ3RoIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwiJGNsaXBPdmVyZmxvdyIsInJlZiIsImFjY2VwdCIsIiRvdmVyTGltaXQiLCJ1c2VkIiwibWF4Iiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXQiLCJ0aXRsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENoYW5nZUV2ZW50LCBNb3VzZUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgRmlsZVVwbG9hZCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0ZpbGVVcGxvYWQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBCYWNrZHJvcCB9IGZyb20gJy4uLy4uL2F0b21zL0JhY2tkcm9wJ1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuaW1wb3J0IHsgU3dpdGNoIH0gZnJvbSAnLi4vLi4vYXRvbXMvU3dpdGNoJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlVXNlciwgaXNDb2xsYWJvcmF0b3JSb2xlIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGNyZWF0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvY3JlYXRlU2tpbGwnXG5pbXBvcnQgeyB1cGRhdGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL3VwZGF0ZVNraWxsJ1xuaW1wb3J0IHsgZGVsZXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9kZWxldGVTa2lsbCdcbmltcG9ydCB7IFNraWxsLCBTa2lsbEFjY2Vzc1R5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGdldFVuaXRGaWxlU2l6ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2dldFVuaXRGaWxlU2l6ZSdcbmltcG9ydCB7XG4gIGdldFNraWxsQ29udGVudEJ5dGVMZW5ndGgsXG4gIGlzU2tpbGxDb250ZW50T3ZlckxpbWl0LFxuICBTS0lMTF9DT05URU5UX01BWF9CWVRFUyxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvc2tpbGxDb250ZW50U2l6ZSdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQge1xuICBTQ0FTTUJ5dGVDb3VudGVyLFxuICBTQ0FTTUNhbmNlbEJ1dHRvbixcbiAgU0NBU01DbG9zZUJ1dHRvbixcbiAgU0NBU01Cb2R5LFxuICBTQ0FTTURlbGV0ZU91dGxpbmVkQnV0dG9uLFxuICBTQ0FTTURlbGV0ZVNsb3QsXG4gIFNDQVNNRmllbGRCb3gsXG4gIFNDQVNNRmllbGRJbnB1dCxcbiAgU0NBU01GaWVsZExhYmVsLFxuICBTQ0FTTUZpZWxkVGV4dGFyZWEsXG4gIFNDQVNNRm9vdGVyLFxuICBTQ0FTTUhlYWRlcixcbiAgU0NBU01IZWFkZXJUaXRsZSxcbiAgU0NBU01IaWRkZW5GaWxlSW5wdXQsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zSGVhZGVyLFxuICBTQ0FTTUluc3RydWN0aW9uc1BhbmVsLFxuICBTQ0FTTUluc3RydWN0aW9uc1RleHRhcmVhLFxuICBTQ0FTTUluc3RydWN0aW9uc1RpdGxlLFxuICBTQ0FTTU1ldGFkYXRhSXRlbSxcbiAgU0NBU01QcmV2aWV3Qm9keSxcbiAgU0NBU01QcmV2aWV3Q29udGVudEJveCxcbiAgU0NBU01QcmV2aWV3Q29udGVudFBhbmVsLFxuICBTQ0FTTVByZXZpZXdEZXNjcmlwdGlvbixcbiAgU0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrLFxuICBTQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsLFxuICBTQ0FTTVByZXZpZXdNZXRhZGF0YVJvdyxcbiAgU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZSxcbiAgU0NBU01QcmV2aWV3TmFtZSxcbiAgU0NBU01TYXZlT3V0bGluZWRCdXR0b24sXG4gIFNDQVNNU2F2ZVByaW1hcnlCdXR0b24sXG4gIFNDQVNNU3dpdGNoTGFiZWwsXG4gIFNDQVNNU3dpdGNoUm93LFxuICBTQ0FTTVVwbG9hZEJ1dHRvbixcbiAgU0NBU01Vc2VTa2lsbEJ1dHRvbixcbiAgU0NBU01XcmFwcGVyLFxufSBmcm9tICcuL0FibVNraWxsTW9kYWwuc3R5bGVzJ1xuXG5leHBvcnQgY29uc3QgU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQgPSAnbWFpYS11c2Utc2tpbGwtYWZ0ZXItc2F2ZSdcblxudHlwZSBTa2lsbE1vZGFsR2VuZXJhbCA9IHtcbiAgaWQ/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBjb250ZW50Pzogc3RyaW5nXG4gIGFjY2Vzc190eXBlPzogU2tpbGxBY2Nlc3NUeXBlXG4gIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICBjcmVhdGVkX2F0Pzogc3RyaW5nXG4gIHVwZGF0ZWRfYXQ/OiBzdHJpbmdcbn1cblxudHlwZSBTa2lsbE1vZGFsVmFsdWVzID0ge1xuICBpc0VkaXRpbmc6IGJvb2xlYW5cbiAgaXNSZWFkT25seT86IGJvb2xlYW5cbiAgaXNTaGFyZWQ/OiBib29sZWFuXG4gIGludGVudD86ICdnZW5lcmF0ZScgfCAnd3JpdGUnIHwgJ3VwbG9hZCdcbiAgZ2VuZXJhbD86IFNraWxsTW9kYWxHZW5lcmFsXG59XG5cbnR5cGUgU2tpbGxBYm1PcHRpb24gPSAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3J1xudHlwZSBTa2lsbEFibUFjY2Vzc1NvdXJjZSA9ICdjYXRhbG9nJyB8ICdkcm9wZG93bicgfCAnZW1wdHknXG5cbmNvbnN0IHJlc29sdmVTa2lsbEFibU9wdGlvbiA9IChza2lsbFZhbHVlczogU2tpbGxNb2RhbFZhbHVlcyk6IFNraWxsQWJtT3B0aW9uID0+IHtcbiAgaWYgKHNraWxsVmFsdWVzLmlzUmVhZE9ubHkpIHJldHVybiAndmlldydcbiAgaWYgKHNraWxsVmFsdWVzLmlzRWRpdGluZykgcmV0dXJuICdlZGl0J1xuICByZXR1cm4gJ2NyZWF0ZSdcbn1cblxudHlwZSBBYm1Ta2lsbE1vZGFsUHJvcHMgPSB7XG4gIGFkZFNraWxsPzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICB1cGRhdGVTa2lsbEluTGlzdD86IChza2lsbDogU2tpbGwpID0+IHZvaWRcbiAgcmVtb3ZlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmNvbnN0IGluaXRpYWxWYWx1ZXM6IFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGdlbmVyYWw6IHtcbiAgICBpZDogdW5kZWZpbmVkLFxuICAgIG5hbWU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICBjb250ZW50OiAnJyxcbiAgICBhY2Nlc3NfdHlwZTogJ29ubHlfbWUnLFxuICB9LFxufVxuXG50eXBlIFNraWxsRm9ybUJhc2VsaW5lID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBjb250ZW50OiBzdHJpbmdcbiAgYWNjZXNzX3R5cGU6IFNraWxsQWNjZXNzVHlwZVxufVxuXG5jb25zdCBlbXB0eUJhc2VsaW5lOiBTa2lsbEZvcm1CYXNlbGluZSA9IHtcbiAgbmFtZTogJycsXG4gIGRlc2NyaXB0aW9uOiAnJyxcbiAgY29udGVudDogJycsXG4gIGFjY2Vzc190eXBlOiAnb25seV9tZScsXG59XG5cbmNvbnN0IHBhcnNlRGVzY3JpcHRpb25Gcm9tQ29udGVudCA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBmcm9udG1hdHRlck1hdGNoID0gY29udGVudC5tYXRjaCgvXi0tLVxccypcXG4oW1xcc1xcU10qPylcXG4tLS0vKVxuICBpZiAoIWZyb250bWF0dGVyTWF0Y2gpIHJldHVybiAnJ1xuICBjb25zdCBkZXNjcmlwdGlvbk1hdGNoID0gZnJvbnRtYXR0ZXJNYXRjaFsxXS5tYXRjaCgvXmRlc2NyaXB0aW9uOlxccyooLispJC9tKVxuICByZXR1cm4gZGVzY3JpcHRpb25NYXRjaCA/IGRlc2NyaXB0aW9uTWF0Y2hbMV0udHJpbSgpIDogJydcbn1cblxuZXhwb3J0IGNvbnN0IEFibVNraWxsTW9kYWwgPSAoeyBhZGRTa2lsbCwgdXBkYXRlU2tpbGxJbkxpc3QsIHJlbW92ZVNraWxsIH06IEFibVNraWxsTW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93RGVsZXRlLCBzZXRTaG93RGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcGVuZGluZ1VwbG9hZCwgc2V0UGVuZGluZ1VwbG9hZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlPFNraWxsTW9kYWxWYWx1ZXM+KGluaXRpYWxWYWx1ZXMpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBpbml0aWFsUmVmID0gdXNlUmVmPFNraWxsRm9ybUJhc2VsaW5lPihlbXB0eUJhc2VsaW5lKVxuXG4gIGNvbnN0IGlzUmVhZE9ubHkgPSAhIXZhbHVlcy5pc1JlYWRPbmx5XG4gIGNvbnN0IGlzU2hhcmVkU2tpbGwgPSAhIXZhbHVlcy5pc1NoYXJlZFxuICBjb25zdCBjYW5TaGFyZVdpdGhDb21wYW55ID0gIWlzQ29sbGFib3JhdG9yUm9sZSh1c2VyLnJvbGVfaWQpICYmICFpc1JlYWRPbmx5XG5cbiAgY29uc3QgbmFtZSA9IHZhbHVlcy5nZW5lcmFsPy5uYW1lIHx8ICcnXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gdmFsdWVzLmdlbmVyYWw/LmRlc2NyaXB0aW9uIHx8ICcnXG4gIGNvbnN0IGNvbnRlbnQgPSB2YWx1ZXMuZ2VuZXJhbD8uY29udGVudCB8fCAnJ1xuICBjb25zdCBhY2Nlc3NUeXBlOiBTa2lsbEFjY2Vzc1R5cGUgPSB2YWx1ZXMuZ2VuZXJhbD8uYWNjZXNzX3R5cGUgfHwgJ29ubHlfbWUnXG4gIGNvbnN0IGVmZmVjdGl2ZUFjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IGNhblNoYXJlV2l0aENvbXBhbnkgPyBhY2Nlc3NUeXBlIDogJ29ubHlfbWUnXG4gIGNvbnN0IHNraWxsSWQgPSB2YWx1ZXMuZ2VuZXJhbD8uaWRcbiAgY29uc3QgY29udGVudEJ5dGVzID0gdXNlTWVtbygoKSA9PiBnZXRTa2lsbENvbnRlbnRCeXRlTGVuZ3RoKGNvbnRlbnQpLCBbY29udGVudF0pXG4gIGNvbnN0IGlzT3ZlckxpbWl0ID0gY29udGVudEJ5dGVzID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVNcbiAgY29uc3QgaXNWYWxpZCA9ICEhbmFtZS50cmltKCkgJiYgISFjb250ZW50LnRyaW0oKSAmJiAhaXNPdmVyTGltaXRcbiAgY29uc3QgaGFzQ2hhbmdlcyA9XG4gICAgbmFtZS50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5uYW1lIHx8XG4gICAgZGVzY3JpcHRpb24udHJpbSgpICE9PSBpbml0aWFsUmVmLmN1cnJlbnQuZGVzY3JpcHRpb24gfHxcbiAgICBjb250ZW50LnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50LmNvbnRlbnQgfHxcbiAgICAoY2FuU2hhcmVXaXRoQ29tcGFueSAmJiBlZmZlY3RpdmVBY2Nlc3NUeXBlICE9PSBpbml0aWFsUmVmLmN1cnJlbnQuYWNjZXNzX3R5cGUpXG5cbiAgY29uc3QgY3JlYXRlZEJ5TGFiZWwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBjcmVhdGVkQnkgPSB2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9ieV9uYW1lPy50cmltKClcbiAgICBpZiAoY3JlYXRlZEJ5KSByZXR1cm4gY3JlYXRlZEJ5XG4gICAgcmV0dXJuIGlzU2hhcmVkU2tpbGwgPyAnJyA6IGAke3VzZXIuZmlyc3ROYW1lfSAke3VzZXIubGFzdE5hbWV9YC50cmltKClcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsPy5jcmVhdGVkX2J5X25hbWUsIHVzZXIuZmlyc3ROYW1lLCB1c2VyLmxhc3ROYW1lLCBpc1NoYXJlZFNraWxsXSlcblxuICBjb25zdCBsYXN0VXBkYXRlZExhYmVsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZEF0ID0gdmFsdWVzLmdlbmVyYWw/LnVwZGF0ZWRfYXQgfHwgdmFsdWVzLmdlbmVyYWw/LmNyZWF0ZWRfYXRcbiAgICBpZiAoIXVwZGF0ZWRBdCkgcmV0dXJuICcnXG4gICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUodXBkYXRlZEF0KVxuICAgIGlmIChOdW1iZXIuaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkpIHJldHVybiAnJ1xuICAgIHJldHVybiBmb3JtYXREYXRlKHBhcnNlZClcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsPy51cGRhdGVkX2F0LCB2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9hdF0pXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIHNldFNob3dEZWxldGUoZmFsc2UpXG4gICAgc2V0UGVuZGluZ1VwbG9hZChmYWxzZSlcbiAgICBzZXRWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgICBpbml0aWFsUmVmLmN1cnJlbnQgPSBlbXB0eUJhc2VsaW5lXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxBYm1DYW5jZWwsIHsgb3B0aW9uOiByZXNvbHZlU2tpbGxBYm1PcHRpb24odmFsdWVzKSB9KVxuICAgIGhhbmRsZUNsb3NlKClcbiAgfSwgW2V2ZW50QW1wbGl0dWRlLCBoYW5kbGVDbG9zZSwgdmFsdWVzXSlcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgIGhhbmRsZUNhbmNlbCgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlQ2FuY2VsXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRTa2lsbFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IHNraWxsVmFsdWVzLCBhbmFseXRpY3NTb3VyY2UgfSA9IGV2ZW50LmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbFZhbHVlcykgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGluY29taW5nR2VuZXJhbCA9IHtcbiAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLFxuICAgICAgICAuLi5za2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWwsXG4gICAgICB9XG4gICAgICBjb25zdCBpbmNvbWluZ05hbWUgPSAoaW5jb21pbmdHZW5lcmFsLm5hbWUgfHwgJycpLnRyaW0oKVxuICAgICAgY29uc3QgaW5jb21pbmdEZXNjcmlwdGlvbiA9IChpbmNvbWluZ0dlbmVyYWwuZGVzY3JpcHRpb24gfHwgJycpLnRyaW0oKVxuICAgICAgY29uc3QgaW5jb21pbmdDb250ZW50ID0gKGluY29taW5nR2VuZXJhbC5jb250ZW50IHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nQWNjZXNzVHlwZTogU2tpbGxBY2Nlc3NUeXBlID0gaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZClcbiAgICAgICAgPyAnb25seV9tZSdcbiAgICAgICAgOiBpbmNvbWluZ0dlbmVyYWwuYWNjZXNzX3R5cGUgfHwgJ29ubHlfbWUnXG4gICAgICBjb25zdCBwYXJzZWREZXNjcmlwdGlvbiA9XG4gICAgICAgIGluY29taW5nRGVzY3JpcHRpb24gfHwgKGluY29taW5nQ29udGVudCA/IHBhcnNlRGVzY3JpcHRpb25Gcm9tQ29udGVudChpbmNvbWluZ0NvbnRlbnQpIDogJycpXG5cbiAgICAgIGNvbnN0IGVkaXRpbmdCYXNlbGluZTogU2tpbGxGb3JtQmFzZWxpbmUgPSB7XG4gICAgICAgIG5hbWU6IGluY29taW5nTmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHBhcnNlZERlc2NyaXB0aW9uLFxuICAgICAgICBjb250ZW50OiBpbmNvbWluZ0NvbnRlbnQsXG4gICAgICAgIGFjY2Vzc190eXBlOiBpbmNvbWluZ0FjY2Vzc1R5cGUsXG4gICAgICB9XG4gICAgICBpbml0aWFsUmVmLmN1cnJlbnQgPSBza2lsbFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZyA/IGVkaXRpbmdCYXNlbGluZSA6IGVtcHR5QmFzZWxpbmVcblxuICAgICAgc2V0VmFsdWVzKHtcbiAgICAgICAgLi4uaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgLi4uc2tpbGxWYWx1ZXMudmFsdWVzLFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4uaW5jb21pbmdHZW5lcmFsLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBwYXJzZWREZXNjcmlwdGlvbixcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogaW5jb21pbmdBY2Nlc3NUeXBlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldFBlbmRpbmdVcGxvYWQoc2tpbGxWYWx1ZXMudmFsdWVzPy5pbnRlbnQgPT09ICd1cGxvYWQnKVxuICAgICAgc2V0SXNPcGVuKCEhc2tpbGxWYWx1ZXMuaXNPcGVuKVxuXG4gICAgICBpZiAoc2tpbGxWYWx1ZXMuaXNPcGVuKSB7XG4gICAgICAgIGNvbnN0IGluY29taW5nVmFsdWVzID0geyAuLi5pbml0aWFsVmFsdWVzLCAuLi5za2lsbFZhbHVlcy52YWx1ZXMgfVxuICAgICAgICBjb25zdCBzb3VyY2U6IFNraWxsQWJtQWNjZXNzU291cmNlID1cbiAgICAgICAgICBhbmFseXRpY3NTb3VyY2UgPT09ICdkcm9wZG93bicgfHwgYW5hbHl0aWNzU291cmNlID09PSAnZW1wdHknIHx8IGFuYWx5dGljc1NvdXJjZSA9PT0gJ2NhdGFsb2cnXG4gICAgICAgICAgICA/IGFuYWx5dGljc1NvdXJjZVxuICAgICAgICAgICAgOiAnY2F0YWxvZydcbiAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsQWJtQWNjZXNzLCB7XG4gICAgICAgICAgb3B0aW9uOiByZXNvbHZlU2tpbGxBYm1PcHRpb24oaW5jb21pbmdWYWx1ZXMpLFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldFNraWxsVmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldFNraWxsVmFsdWVzKVxuICAgIH1cbiAgfSwgW2V2ZW50QW1wbGl0dWRlLCB1c2VyLnJvbGVfaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiBwZW5kaW5nVXBsb2FkKSB7XG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgICB9XG4gIH0sIFtpc09wZW4sIHBlbmRpbmdVcGxvYWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUZpZWxkID0gKGZpZWxkOiAnbmFtZScgfCAnZGVzY3JpcHRpb24nIHwgJ2NvbnRlbnQnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGZpZWxkID09PSAnY29udGVudCcgJiYgaXNTa2lsbENvbnRlbnRPdmVyTGltaXQodmFsdWUpKSB7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoIC0gY29udGVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuY29udGVudFNpemVFcnJvcicpKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZ2VuZXJhbDogeyAuLi5wcmV2LmdlbmVyYWwsIFtmaWVsZF06IHZhbHVlIH0sXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlID0gKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoIWNhblNoYXJlV2l0aENvbXBhbnkpIHJldHVyblxuICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgIGFjY2Vzc190eXBlOiBjaGVja2VkID8gJ2NvbXBhbnknIDogJ29ubHlfbWUnLFxuICAgICAgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwbG9hZENsaWNrID0gKCkgPT4ge1xuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlQ2hhbmdlID0gYXN5bmMgKGV2ZW50OiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXM/LlswXVxuICAgIGlmIChmaWxlSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQudmFsdWUgPSAnJ1xuICAgIH1cbiAgICBpZiAoIWZpbGUpIHJldHVyblxuXG4gICAgY29uc3QgaXNNYXJrZG93biA9IC9cXC4obWR8bWFya2Rvd24pJC9pLnRlc3QoZmlsZS5uYW1lKVxuICAgIGlmICghaXNNYXJrZG93bikge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXBsb2FkLCB7IHJlc3VsdDogJ3R5cGVfZXJyb3InIH0pXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmlsZS5zaXplID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVMpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFVwbG9hZCwgeyByZXN1bHQ6ICdzaXplX2Vycm9yJyB9KVxuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgZmlsZS50ZXh0KClcbiAgICAgIGlmIChpc1NraWxsQ29udGVudE92ZXJMaW1pdCh0ZXh0KSkge1xuICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxVcGxvYWQsIHsgcmVzdWx0OiAnc2l6ZV9lcnJvcicgfSlcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50KHRleHQpXG4gICAgICBzZXRWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGNvbnRlbnQ6IHRleHQsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHByZXYuZ2VuZXJhbD8uZGVzY3JpcHRpb24/LnRyaW0oKVxuICAgICAgICAgICAgPyBwcmV2LmdlbmVyYWwuZGVzY3JpcHRpb25cbiAgICAgICAgICAgIDogcGFyc2VkRGVzY3JpcHRpb24gfHwgcHJldi5nZW5lcmFsPy5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBwcmV2LmdlbmVyYWw/Lm5hbWU/LnRyaW0oKSA/IHByZXYuZ2VuZXJhbC5uYW1lIDogYmFzZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFVwbG9hZCwgeyByZXN1bHQ6ICdzdWNjZXNzJyB9KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGVyc2lzdFNraWxsID0gYXN5bmMgKCk6IFByb21pc2U8U2tpbGwgfCBudWxsPiA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIG5hbWU6IG5hbWUudHJpbSgpLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLnRyaW0oKSxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnQudHJpbSgpLFxuICAgICAgYWNjZXNzX3R5cGU6IGVmZmVjdGl2ZUFjY2Vzc1R5cGUsXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlcy5pc0VkaXRpbmcgJiYgc2tpbGxJZCkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IHVwZGF0ZVNraWxsKHNraWxsSWQsIHBheWxvYWQpXG4gICAgICB1cGRhdGVTa2lsbEluTGlzdD8uKHVwZGF0ZWQpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMudXBkYXRlU3VjY2VzcycpKVxuICAgICAgcmV0dXJuIHVwZGF0ZWRcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgY3JlYXRlU2tpbGwocGF5bG9hZClcbiAgICBhZGRTa2lsbD8uKGNyZWF0ZWQpXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLmNyZWF0ZVN1Y2Nlc3MnKSlcbiAgICByZXR1cm4gY3JlYXRlZFxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nIHx8ICFoYXNDaGFuZ2VzKSByZXR1cm5cbiAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2F2ZWRTa2lsbCA9IGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBpZiAoc2F2ZWRTa2lsbCkge1xuICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxBYm1Db25maXJtLCB7XG4gICAgICAgICAgb3B0aW9uOiB2YWx1ZXMuaXNFZGl0aW5nID8gJ2VkaXQnIDogJ2NyZWF0ZScsXG4gICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXG4gICAgICAgICAgYWNjZXNzX3R5cGU6IGVmZmVjdGl2ZUFjY2Vzc1R5cGUsXG4gICAgICAgICAgc2tpbGxfaWQ6IHNhdmVkU2tpbGwuaWQsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLnVwZGF0ZUVycm9yJykgOiB0KCdteVNraWxscy5jcmVhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZUFuZFVzZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nKSByZXR1cm5cbiAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2F2ZWRTa2lsbCA9IGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBpZiAoc2F2ZWRTa2lsbCkge1xuICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxBYm1Db25maXJtLCB7XG4gICAgICAgICAgb3B0aW9uOiB2YWx1ZXMuaXNFZGl0aW5nID8gJ2VkaXQnIDogJ2NyZWF0ZScsXG4gICAgICAgICAgYWN0aW9uOiAnc2F2ZV9hbmRfdXNlJyxcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogZWZmZWN0aXZlQWNjZXNzVHlwZSxcbiAgICAgICAgICBza2lsbF9pZDogc2F2ZWRTa2lsbC5pZCxcbiAgICAgICAgfSlcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgICAgIGRldGFpbDogeyBza2lsbDogc2F2ZWRTa2lsbCB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih2YWx1ZXMuaXNFZGl0aW5nID8gdCgnbXlTa2lsbHMudXBkYXRlRXJyb3InKSA6IHQoJ215U2tpbGxzLmNyZWF0ZUVycm9yJykpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzU3VibWl0dGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDb25maXJtRGVsZXRlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghc2tpbGxJZCkgcmV0dXJuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVNraWxsKHNraWxsSWQpXG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxBYm1EZWxldGUsIHsgc2tpbGxfaWQ6IHNraWxsSWQsIHNvdXJjZTogJ21vZGFsJyB9KVxuICAgICAgcmVtb3ZlU2tpbGw/Lihza2lsbElkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLmRlbGV0ZVN1Y2Nlc3MnKSlcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5kZWxldGVFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUVkaXRGcm9tVmlldyA9ICgpID0+IHtcbiAgICBzZXRWYWx1ZXMocHJldiA9PiAoeyAuLi5wcmV2LCBpc1JlYWRPbmx5OiBmYWxzZSB9KSlcbiAgfVxuXG4gIC8qKiBTa2lsbCBhamVuYSBlbiBtb2RvIGxlY3R1cmE6IGFicmUgdW4gY2hhdCBudWV2byBjb24gZWwgcHJpbWVyIGFnZW50ZSB5IGxhIG1lbmNpw7NuIHlhIHB1ZXN0YS4gKi9cbiAgY29uc3QgaGFuZGxlVXNlU2tpbGwgPSAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxVc2UsIHtcbiAgICAgIHNraWxsX2lkOiBza2lsbElkLFxuICAgICAgYWNjZXNzX3R5cGU6IGFjY2Vzc1R5cGUsXG4gICAgICBzb3VyY2U6ICd2aWV3X21vZGFsJyxcbiAgICAgIGlzX3NoYXJlZDogaXNTaGFyZWRTa2lsbCxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgc2tpbGw6IHsgaWQ6IHNraWxsSWQsIG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBhY2Nlc3NfdHlwZTogYWNjZXNzVHlwZSB9LFxuICAgICAgICAgIHVzZUZpcnN0QWdlbnQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIClcbiAgICBoYW5kbGVDbG9zZSgpXG4gIH1cblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGxcblxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcm9vdC1hY3Rpb25zJylcbiAgaWYgKCFjb250YWluZXIpIHJldHVybiBudWxsXG5cbiAgY29uc3QgZWRpdE9yQ3JlYXRlVGl0bGUgPSB2YWx1ZXMuaXNFZGl0aW5nID8gdCgnbXlTa2lsbHMuZWRpdFRpdGxlJykgOiB0KCdteVNraWxscy5jcmVhdGVUaXRsZScpXG4gIGNvbnN0IHZpZXdUaXRsZSA9IGlzU2hhcmVkU2tpbGwgPyB0KCdteVNraWxscy52aWV3VGl0bGUnKSA6IHQoJ215U2tpbGxzLnZpZXdPd25UaXRsZScpXG4gIGNvbnN0IG1vZGFsVGl0bGUgPSBpc1JlYWRPbmx5ID8gdmlld1RpdGxlIDogZWRpdE9yQ3JlYXRlVGl0bGVcblxuICBjb25zdCBwcmV2aWV3Qm9keSA9IChcbiAgICA8U0NBU01QcmV2aWV3Qm9keT5cbiAgICAgIDxTQ0FTTVByZXZpZXdIZWFkaW5nQmxvY2s+XG4gICAgICAgIDxTQ0FTTVByZXZpZXdOYW1lPntuYW1lfTwvU0NBU01QcmV2aWV3TmFtZT5cbiAgICAgICAge2Rlc2NyaXB0aW9uID8gPFNDQVNNUHJldmlld0Rlc2NyaXB0aW9uPntkZXNjcmlwdGlvbn08L1NDQVNNUHJldmlld0Rlc2NyaXB0aW9uPiA6IG51bGx9XG4gICAgICA8L1NDQVNNUHJldmlld0hlYWRpbmdCbG9jaz5cblxuICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhUm93PlxuICAgICAgICB7Y3JlYXRlZEJ5TGFiZWwgPyAoXG4gICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmNyZWF0ZWRCeScpfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPntjcmVhdGVkQnlMYWJlbH08L1NDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+XG4gICAgICAgICAgPC9TQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHtsYXN0VXBkYXRlZExhYmVsID8gKFxuICAgICAgICAgIDxTQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPnt0KCdteVNraWxscy5sYXN0VXBkYXRlZCcpfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPntsYXN0VXBkYXRlZExhYmVsfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT5cbiAgICAgICAgICA8L1NDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgeyFpc1NoYXJlZFNraWxsID8gKFxuICAgICAgICAgIDxTQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPnt0KCdteVNraWxscy5lbmFibGVkTGFiZWwnKX08L1NDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT5cbiAgICAgICAgICAgICAge2FjY2Vzc1R5cGUgPT09ICdjb21wYW55JyA/IHQoJ215U2tpbGxzLnZpc2liaWxpdHlFdmVyeW9uZScpIDogdCgnbXlTa2lsbHMudmlzaWJpbGl0eU9ubHlNZScpfVxuICAgICAgICAgICAgPC9TQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgIDwvU0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TQ0FTTVByZXZpZXdNZXRhZGF0YVJvdz5cblxuICAgICAgPFNDQVNNUHJldmlld0NvbnRlbnRQYW5lbD5cbiAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+e3QoJ215U2tpbGxzLmluc3RydWN0aW9uc0xhYmVsJyl9PC9TQ0FTTUluc3RydWN0aW9uc1RpdGxlPlxuICAgICAgICA8U0NBU01QcmV2aWV3Q29udGVudEJveD57Y29udGVudH08L1NDQVNNUHJldmlld0NvbnRlbnRCb3g+XG4gICAgICA8L1NDQVNNUHJldmlld0NvbnRlbnRQYW5lbD5cbiAgICA8L1NDQVNNUHJldmlld0JvZHk+XG4gIClcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxCYWNrZHJvcCB6SW5kZXg9ezExMTJ9IG9uQ2xpY2s9e2hhbmRsZUJhY2tkcm9wQ2xpY2t9PlxuICAgICAgPFNDQVNNV3JhcHBlciBvbkNsaWNrPXtldmVudCA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKX0+XG4gICAgICAgIDxTQ0FTTUhlYWRlcj5cbiAgICAgICAgICA8U0NBU01IZWFkZXJUaXRsZT57bW9kYWxUaXRsZX08L1NDQVNNSGVhZGVyVGl0bGU+XG4gICAgICAgICAgPFNDQVNNQ2xvc2VCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNhbmNlbH0gYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuY2xvc2UnKX0+XG4gICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgIDwvU0NBU01DbG9zZUJ1dHRvbj5cbiAgICAgICAgPC9TQ0FTTUhlYWRlcj5cblxuICAgICAgICB7aXNSZWFkT25seSA/IChcbiAgICAgICAgICBwcmV2aWV3Qm9keVxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTQ0FTTUJvZHk+XG4gICAgICAgICAgICA8U0NBU01GaWVsZEJveCAkaGVpZ2h0PXs1MH0+XG4gICAgICAgICAgICAgIDxTQ0FTTUZpZWxkTGFiZWwgaHRtbEZvcj1cInNraWxsLW5hbWUtaW5wdXRcIj57dCgnbXlTa2lsbHMubmFtZUxhYmVsJyl9PC9TQ0FTTUZpZWxkTGFiZWw+XG4gICAgICAgICAgICAgIDxTQ0FTTUZpZWxkSW5wdXRcbiAgICAgICAgICAgICAgICBpZD1cInNraWxsLW5hbWUtaW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezE1MH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMubmFtZVBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e25hbWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gaGFuZGxlQ2hhbmdlRmllbGQoJ25hbWUnLCBldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TQ0FTTUZpZWxkQm94PlxuXG4gICAgICAgICAgICA8U0NBU01GaWVsZEJveCAkaGVpZ2h0PXsxMjB9ICRjbGlwT3ZlcmZsb3c+XG4gICAgICAgICAgICAgIDxTQ0FTTUZpZWxkTGFiZWwgaHRtbEZvcj1cInNraWxsLWRlc2NyaXB0aW9uLWlucHV0XCI+e3QoJ215U2tpbGxzLmRlc2NyaXB0aW9uTGFiZWwnKX08L1NDQVNNRmllbGRMYWJlbD5cbiAgICAgICAgICAgICAgPFNDQVNNRmllbGRUZXh0YXJlYVxuICAgICAgICAgICAgICAgIGlkPVwic2tpbGwtZGVzY3JpcHRpb24taW5wdXRcIlxuICAgICAgICAgICAgICAgIG1heExlbmd0aD17NTAwfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5kZXNjcmlwdGlvblBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCdkZXNjcmlwdGlvbicsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NDQVNNRmllbGRCb3g+XG5cbiAgICAgICAgICAgIHtjYW5TaGFyZVdpdGhDb21wYW55ID8gKFxuICAgICAgICAgICAgICA8U0NBU01Td2l0Y2hSb3c+XG4gICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17YWNjZXNzVHlwZSA9PT0gJ2NvbXBhbnknfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUFjY2Vzc1R5cGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuc2hhcmVXaXRoQ29tcGFueScpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFNDQVNNU3dpdGNoTGFiZWw+e3QoJ215U2tpbGxzLnNoYXJlV2l0aENvbXBhbnknKX08L1NDQVNNU3dpdGNoTGFiZWw+XG4gICAgICAgICAgICAgIDwvU0NBU01Td2l0Y2hSb3c+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zUGFuZWw+XG4gICAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc0hlYWRlcj5cbiAgICAgICAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNUaXRsZT57dCgnbXlTa2lsbHMuaW5zdHJ1Y3Rpb25zTGFiZWwnKX08L1NDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDQVNNVXBsb2FkQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVVcGxvYWRDbGlja30gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAgICA8RmlsZVVwbG9hZCB3aWR0aD17MTh9IGhlaWdodD17MTh9IGNvbG9yPVwiIzA4Q1wiIC8+XG4gICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXBsb2FkTWQnKX1cbiAgICAgICAgICAgICAgICA8L1NDQVNNVXBsb2FkQnV0dG9uPlxuICAgICAgICAgICAgICAgIDxTQ0FTTUhpZGRlbkZpbGVJbnB1dFxuICAgICAgICAgICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgICBhY2NlcHQ9XCIubWQsLm1hcmtkb3duLHRleHQvbWFya2Rvd25cIlxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc0hlYWRlcj5cblxuICAgICAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNGaWVsZD5cbiAgICAgICAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNUZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgaWQ9XCJza2lsbC1jb250ZW50LWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5jb250ZW50UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb250ZW50fVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnY29udGVudCcsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc0ZpZWxkPlxuICAgICAgICAgICAgICA8U0NBU01CeXRlQ291bnRlciAkb3ZlckxpbWl0PXtpc092ZXJMaW1pdH0gYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmJ5dGVzQ291bnRlcicsIHtcbiAgICAgICAgICAgICAgICAgIHVzZWQ6IGdldFVuaXRGaWxlU2l6ZShjb250ZW50Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgbWF4OiBnZXRVbml0RmlsZVNpemUoU0tJTExfQ09OVEVOVF9NQVhfQllURVMpLFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L1NDQVNNQnl0ZUNvdW50ZXI+XG4gICAgICAgICAgICA8L1NDQVNNSW5zdHJ1Y3Rpb25zUGFuZWw+XG4gICAgICAgICAgPC9TQ0FTTUJvZHk+XG4gICAgICAgICl9XG5cbiAgICAgICAgPFNDQVNNRm9vdGVyPlxuICAgICAgICAgIHtpc1JlYWRPbmx5ICYmIGlzU2hhcmVkU2tpbGwgPyAoXG4gICAgICAgICAgICA8U0NBU01Vc2VTa2lsbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlVXNlU2tpbGx9PlxuICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXNlU2tpbGwnKX1cbiAgICAgICAgICAgIDwvU0NBU01Vc2VTa2lsbEJ1dHRvbj5cbiAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgIHtpc1JlYWRPbmx5ICYmICFpc1NoYXJlZFNraWxsID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFNDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgICA8U0NBU01EZWxldGVPdXRsaW5lZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0RlbGV0ZSh0cnVlKX0+XG4gICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZU91dGxpbmVkQnV0dG9uPlxuICAgICAgICAgICAgICA8L1NDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgPFNDQVNNU2F2ZVByaW1hcnlCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUVkaXRGcm9tVmlld30+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmVkaXQnKX1cbiAgICAgICAgICAgICAgPC9TQ0FTTVNhdmVQcmltYXJ5QnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7IWlzUmVhZE9ubHkgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dmFsdWVzLmlzRWRpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8U0NBU01EZWxldGVTbG90PlxuICAgICAgICAgICAgICAgICAgPFNDQVNNQ2FuY2VsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RGVsZXRlKHRydWUpfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FTTUNhbmNlbEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1NDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlU2F2ZUFuZFVzZX0gZGlzYWJsZWQ9eyFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlQW5kVXNlJyl9XG4gICAgICAgICAgICAgIDwvU0NBU01TYXZlT3V0bGluZWRCdXR0b24+XG4gICAgICAgICAgICAgIDxTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2F2ZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nIHx8ICFoYXNDaGFuZ2VzfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlJyl9XG4gICAgICAgICAgICAgIDwvU0NBU01TYXZlUHJpbWFyeUJ1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L1NDQVNNRm9vdGVyPlxuICAgICAgPC9TQ0FTTVdyYXBwZXI+XG5cbiAgICAgIHtzaG93RGVsZXRlICYmIHNraWxsSWQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0RlbGV0ZShmYWxzZSl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IGhhbmRsZUNvbmZpcm1EZWxldGUsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXt7IHRpdGxlOiBuYW1lLCBpZDogc2tpbGxJZCB9fVxuICAgICAgICAgIGFjdGlvbj1cInNraWxsXCJcbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvQmFja2Ryb3A+LFxuICAgIGNvbnRhaW5lclxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0EsU0FBa0NBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDbEcsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxVQUFVLFFBQVEsNkNBQTZDO0FBQ3hFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLFFBQVEsUUFBUSxzQkFBc0I7QUFDL0MsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVNDLFFBQVEsUUFBUSwyQkFBMkI7QUFDcEQsU0FBU0MsT0FBTyxFQUFFQyxrQkFBa0IsUUFBUSwyQkFBMkI7QUFDdkUsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQzFELFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBQ2hELFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxXQUFXLFFBQVEsMkNBQTJDO0FBRXZFLFNBQVNDLGVBQWUsUUFBUSxnQ0FBZ0M7QUFDaEUsU0FDRUMseUJBQXlCLEVBQ3pCQyx1QkFBdUIsRUFDdkJDLHVCQUF1QixRQUNsQixpQ0FBaUM7QUFDeEMsU0FBU0MsbUJBQW1CLFFBQVEsNENBQTRDO0FBQ2hGLFNBQ0VDLGdCQUFnQixFQUNoQkMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFDaEJDLFNBQVMsRUFDVEMseUJBQXlCLEVBQ3pCQyxlQUFlLEVB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