@projectcor/maia-components 2.11.19-0 → 2.11.19-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +2 -3
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +5 -6
- package/lib/components/atoms/icons/index.js +1 -3
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +5 -24
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +53 -17
- package/lib/components/molecules/ChatAIHome/styles.js +42 -34
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +6 -49
- package/lib/components/molecules/ChatAIMessages/newStyles.js +21 -24
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -115
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +41 -16
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +13 -5
- package/lib/components/molecules/ChatAIModal/constants.js +2 -6
- package/lib/components/molecules/Sidebar/Sidebar.js +197 -162
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +1 -13
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +1 -10
- package/lib/hooks/useChatManager/useChatManager.js +103 -113
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -14
- package/lib/lang/br/index.js +9 -68
- package/lib/lang/en/index.js +9 -68
- package/lib/lang/es/index.js +7 -66
- package/lib/lang/fr/index.js +4 -52
- package/lib/services/maia/Agents/getAgents.js +8 -5
- package/lib/services/maia/Orchestrator/orchestrator.js +25 -29
- package/lib/services/utils/mapChatMessages.js +149 -39
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/package.json +1 -1
- package/lib/components/atoms/icons/MaiaStoreIcon.js +0 -31
- package/lib/components/atoms/icons/MyAgentsNavIcon.js +0 -51
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +0 -50
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +0 -62
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +0 -43
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +0 -37
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +0 -351
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +0 -165
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +0 -114
|
@@ -39,7 +39,6 @@ import { Feedback } from '../MessageFeedback/MessageFeedback';
|
|
|
39
39
|
import { useGlobalContext } from '../../../context/global-context';
|
|
40
40
|
import { MAIAIcon } from '../../atoms/icons';
|
|
41
41
|
import { TASK_URL_REGEX_PATTERN } from '../../../constants/taskUrls';
|
|
42
|
-
import { ChatAISuggestions } from './ChatAISuggestions';
|
|
43
42
|
|
|
44
43
|
/** Contexto con el texto del mensaje en streaming. Solo el componente que lo consume re-renderiza cuando cambia. */
|
|
45
44
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
@@ -246,13 +245,6 @@ var StreamingMessageBody = /*#__PURE__*/memo(function (props) {
|
|
|
246
245
|
sources: props.sources,
|
|
247
246
|
handleFeedback: props.handleFeedbackClick,
|
|
248
247
|
disableFeedback: props.disableFeedback
|
|
249
|
-
}), props.isAssistant && !props.isError && !props.isFrontendCancelled && !props.approval && /*#__PURE__*/_jsx(ChatAISuggestions, {
|
|
250
|
-
suggestions: props.suggestions || [],
|
|
251
|
-
onSelectSuggestion: function onSelectSuggestion(suggestion) {
|
|
252
|
-
return props.handleSuggestionClick(props.messageId, suggestion);
|
|
253
|
-
},
|
|
254
|
-
disabled: props.suggestionsDisabled,
|
|
255
|
-
hidden: !!props.isStreaming || !props.isLastMessage || !!props.suggestionsDisabled
|
|
256
248
|
})]
|
|
257
249
|
});
|
|
258
250
|
});
|
|
@@ -267,7 +259,6 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
267
259
|
options = props.options,
|
|
268
260
|
isChangeProject = props.isChangeProject,
|
|
269
261
|
handleSelectOption = props.handleSelectOption,
|
|
270
|
-
handleSuggestionClick = props.handleSuggestionClick,
|
|
271
262
|
handleFeedback = props.handleFeedback,
|
|
272
263
|
handleApprovalDecision = props.handleApprovalDecision,
|
|
273
264
|
disableFeedback = props.disableFeedback,
|
|
@@ -275,10 +266,7 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
275
266
|
sources = props.sources,
|
|
276
267
|
attachments = props.attachments,
|
|
277
268
|
approval = props.approval,
|
|
278
|
-
approvalStatus = props.approvalStatus
|
|
279
|
-
suggestions = props.suggestions,
|
|
280
|
-
hasSelectedSuggestion = props.hasSelectedSuggestion,
|
|
281
|
-
isLastMessage = props.isLastMessage;
|
|
269
|
+
approvalStatus = props.approvalStatus;
|
|
282
270
|
var _useState5 = useState(null),
|
|
283
271
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
284
272
|
previewAttachment = _useState6[0],
|
|
@@ -368,14 +356,10 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
368
356
|
actions: approval.pending_actions,
|
|
369
357
|
status: approvalStatus,
|
|
370
358
|
onApprove: function onApprove(threadIds) {
|
|
371
|
-
return threadIds
|
|
372
|
-
return handleApprovalDecision(id, 'approve');
|
|
373
|
-
});
|
|
359
|
+
return handleApprovalDecision(threadIds, 'approve');
|
|
374
360
|
},
|
|
375
361
|
onReject: function onReject(threadIds) {
|
|
376
|
-
return threadIds
|
|
377
|
-
return handleApprovalDecision(id, 'reject');
|
|
378
|
-
});
|
|
362
|
+
return handleApprovalDecision(threadIds, 'reject');
|
|
379
363
|
},
|
|
380
364
|
isProjectDeleted: ((_props$projectMetadat = props.projectMetadata) === null || _props$projectMetadat === void 0 ? void 0 : _props$projectMetadat.is_deleted) === true,
|
|
381
365
|
isExpanded: props.expanded
|
|
@@ -389,13 +373,8 @@ var MessageItem = /*#__PURE__*/memo(function (props) {
|
|
|
389
373
|
approval: approval,
|
|
390
374
|
isError: isError,
|
|
391
375
|
sources: sources,
|
|
392
|
-
suggestions: suggestions,
|
|
393
376
|
handleFeedbackClick: handleFeedbackClick,
|
|
394
|
-
disableFeedback: disableFeedback !== null && disableFeedback !== void 0 ? disableFeedback : null
|
|
395
|
-
handleSuggestionClick: handleSuggestionClick,
|
|
396
|
-
suggestionsDisabled: !!props.isStreaming || !!hasSelectedSuggestion,
|
|
397
|
-
messageId: id,
|
|
398
|
-
isLastMessage: isLastMessage
|
|
377
|
+
disableFeedback: disableFeedback !== null && disableFeedback !== void 0 ? disableFeedback : null
|
|
399
378
|
})]
|
|
400
379
|
}), /*#__PURE__*/_jsx(AttachmentPreviewModal, {
|
|
401
380
|
isOpen: !!previewAttachment,
|
|
@@ -418,8 +397,7 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
418
397
|
t = _useT.t;
|
|
419
398
|
var _useGlobalContext3 = useGlobalContext(),
|
|
420
399
|
isWebSearchActive = _useGlobalContext3.isWebSearchActive,
|
|
421
|
-
isDeepSearchActive = _useGlobalContext3.isDeepSearchActive
|
|
422
|
-
agent = _useGlobalContext3.agent;
|
|
400
|
+
isDeepSearchActive = _useGlobalContext3.isDeepSearchActive;
|
|
423
401
|
var authUser = useUser();
|
|
424
402
|
var messagesRef = useRef(null);
|
|
425
403
|
var chatInitializedRef = useRef(false);
|
|
@@ -433,10 +411,6 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
433
411
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
434
412
|
showScrollToBottom = _useState8[0],
|
|
435
413
|
setShowScrollToBottom = _useState8[1];
|
|
436
|
-
var _useState9 = useState({}),
|
|
437
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
438
|
-
selectedSuggestionMessageIds = _useState0[0],
|
|
439
|
-
setSelectedSuggestionMessageIds = _useState0[1];
|
|
440
414
|
var streamingMessagePropsRef = useRef({});
|
|
441
415
|
var streamingMessageIdRef = useRef(null);
|
|
442
416
|
var _useChatManager = useChatManager({
|
|
@@ -463,14 +437,6 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
463
437
|
var handleSelectOption = useCallback(function (option) {
|
|
464
438
|
changeProject(option);
|
|
465
439
|
}, [changeProject]);
|
|
466
|
-
var handleSuggestionClick = useCallback(function (messageId, suggestion) {
|
|
467
|
-
if (!(suggestion !== null && suggestion !== void 0 && suggestion.trim())) return;
|
|
468
|
-
if (selectedSuggestionMessageIds[messageId]) return;
|
|
469
|
-
setSelectedSuggestionMessageIds(function (prev) {
|
|
470
|
-
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, messageId, true));
|
|
471
|
-
});
|
|
472
|
-
sendMessage(suggestion);
|
|
473
|
-
}, [sendMessage, selectedSuggestionMessageIds]);
|
|
474
440
|
var handleClickScrollToBottom = useCallback(function () {
|
|
475
441
|
if (messagesRef.current) {
|
|
476
442
|
messagesRef.current.scrollTo({
|
|
@@ -683,7 +649,6 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
683
649
|
}).at(-1);
|
|
684
650
|
var hasAttachments = Array.isArray(lastUserMessage === null || lastUserMessage === void 0 ? void 0 : lastUserMessage.attachments) && lastUserMessage.attachments.length || Array.isArray(lastUserMessage === null || lastUserMessage === void 0 ? void 0 : lastUserMessage.sources) && lastUserMessage.sources.length;
|
|
685
651
|
var isScrollOnParent = !!expanded;
|
|
686
|
-
var isMarketplaceGlobalAgent = (agent === null || agent === void 0 ? void 0 : agent.entity) === 'global' && /(maiaker|marketplace)/i.test((agent === null || agent === void 0 ? void 0 : agent.name) || '');
|
|
687
652
|
|
|
688
653
|
// DEBUG streaming: re-renders del contenedor. Habilitar con window.MAIA_DEBUG_STREAMING_RENDER = true
|
|
689
654
|
var listRenderCountRef = useRef(0);
|
|
@@ -745,11 +710,8 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
745
710
|
handleSelectOption: handleSelectOption,
|
|
746
711
|
handleFeedback: handleFeedback,
|
|
747
712
|
handleApprovalDecision: handleApprovalDecision,
|
|
748
|
-
handleSuggestionClick: handleSuggestionClick,
|
|
749
|
-
hasSelectedSuggestion: !!selectedSuggestionMessageIds[message.id],
|
|
750
713
|
disableFeedback: messageFeedback,
|
|
751
714
|
isStreaming: true,
|
|
752
|
-
isLastMessage: isLastMessage,
|
|
753
715
|
expanded: expanded
|
|
754
716
|
});
|
|
755
717
|
}
|
|
@@ -762,11 +724,8 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
762
724
|
handleSelectOption: handleSelectOption,
|
|
763
725
|
handleFeedback: handleFeedback,
|
|
764
726
|
handleApprovalDecision: handleApprovalDecision,
|
|
765
|
-
handleSuggestionClick: handleSuggestionClick,
|
|
766
|
-
hasSelectedSuggestion: !!selectedSuggestionMessageIds[message.id],
|
|
767
727
|
disableFeedback: messageFeedback,
|
|
768
728
|
isStreaming: false,
|
|
769
|
-
isLastMessage: isLastMessage,
|
|
770
729
|
expanded: expanded
|
|
771
730
|
}));
|
|
772
731
|
})
|
|
@@ -787,14 +746,12 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
787
746
|
onScroll: handleScrollToBottom,
|
|
788
747
|
children: /*#__PURE__*/_jsx(SCMessagesInner, {
|
|
789
748
|
$scrollOnParent: isScrollOnParent,
|
|
790
|
-
$isMarketplaceGlobal: isMarketplaceGlobalAgent,
|
|
791
749
|
children: messagesContent
|
|
792
750
|
})
|
|
793
751
|
}) : /*#__PURE__*/_jsx(SCMessagesInner, {
|
|
794
752
|
ref: messagesRef,
|
|
795
753
|
onScroll: handleScrollToBottom,
|
|
796
754
|
$scrollOnParent: false,
|
|
797
|
-
$isMarketplaceGlobal: isMarketplaceGlobalAgent,
|
|
798
755
|
children: messagesContent
|
|
799
756
|
}), showScrollToBottom && /*#__PURE__*/_jsx(ScrollToBottomButton, {
|
|
800
757
|
type: "button",
|
|
@@ -808,4 +765,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref8) {
|
|
|
808
765
|
});
|
|
809
766
|
};
|
|
810
767
|
export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
|
|
811
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJDaGF0QUlTdWdnZXN0aW9ucyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlN0cmVhbWluZ01lc3NhZ2VDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNvZGUiLCJ0aGVtZXMiLCJBc3Npc3RhbnRBdmF0YXJJbm5lciIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJjaGlsZHJlbiIsInR5cGUiLCJ3aWR0aCIsImhlaWdodCIsImVtb2ppIiwiQXNzaXN0YW50QXZhdGFyIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiTWVzc2FnZUNvbXBvbmVudCIsIl9vYmplY3RTcHJlYWQiLCJNZXNzYWdlQ29udGVudFdyYXBwZXIiLCJfcmVmMiIsIl9leGNsdWRlZDIiLCJNZXNzYWdlQ29udGVudENvbXBvbmVudCIsIk1lc3NhZ2VPcHRpb25zIiwiX3JlZjMiLCJvcHRpb25zIiwiaGFuZGxlU2VsZWN0T3B0aW9uIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2VsZWN0ZWRPcHRpb24iLCJzZXRTZWxlY3RlZE9wdGlvbiIsImhhbmRsZVNlbGVjdCIsIm9wdGlvbiIsIm1hcCIsIiRoYXNTZWxlY3Rpb24iLCIkZGltbWVkIiwiaWQiLCJvbkNsaWNrIiwibmFtZSIsIkFzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvY2FsQWdlbnQiLCJzZXRMb2NhbEFnZW50IiwiX3VzZUdsb2JhbENvbnRleHQyIiwiZ2V0VGFiU2VnbWVudEZyb21IcmVmIiwiaHJlZiIsIm1hdGNoIiwidGVzdCIsImV4dHJhY3RUYXNrc0Zyb21NZXNzYWdlIiwibWVzc2FnZSIsInRhc2tVcmxSZWdleCIsIlJlZ0V4cCIsInRhc2tzIiwic2VlbklkcyIsIlNldCIsImV4ZWMiLCJ0YXNrSWQiLCJ1cmwiLCJoYXMiLCJhZGQiLCJlc2NhcGVkVXJsIiwicmVwbGFjZSIsIm1hcmtkb3duTGlua1JlZ2V4IiwiY29uY2F0IiwibGlua01hdGNoIiwidGl0bGUiLCJwdXNoIiwiaGFzVGFza0xpbmtzIiwidGV4dCIsImxlbmd0aCIsIlRhc2tMaW5rIiwiX3JlZjQiLCJ0YWJTZWdtZW50IiwiX3VzZVRhc2tQYW5lbCIsImJ1aWxkT3BlblRhc2siLCJvcGVuVGFzayIsImhhbmRsZUNsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJDdXN0b21MaW5rIiwiX3JlZjUiLCJyZXN0IiwiX2V4Y2x1ZGVkMyIsInRhc2tNYXRjaCIsIlN0cmVhbWluZ01lc3NhZ2VCb2R5IiwiZnJvbUNvbnRleHQiLCJ1c2VDb250ZXh0IiwiZGlzcGxheVRleHQiLCJpc1N0cmVhbWluZyIsImRlYnVnQ291bnRSZWYiLCJ3aW5kb3ciLCJNQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIiLCJjdXJyZW50IiwiY29uc29sZSIsImxvZyIsImNvdW50IiwibGVuIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsImlzQXNzaXN0YW50IiwicGx1Z2lucyIsImNvbXBvbmVudHMiLCJhIiwibGlua1NhZmV0eSIsImVuYWJsZWQiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJtZXNzYWdlSWQiLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfbWVzc2FnZSRsZW5ndGgiLCJfcmVmNiIsIl9yZWY3IiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwicmVuZGVyQ291bnRSZWYiLCJwcmV2TWVzc2FnZUxlblJlZiIsIl9tZXNzYWdlJGxlbmd0aDIiLCJwcmV2TGVuIiwicmVuZGVyQ291bnQiLCJtZXNzYWdlTGVuIiwicHJldk1lc3NhZ2VMZW4iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4IiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsImZvckVhY2giLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmOCIsIl9sYXN0TXNnJHVzZXIiLCJfbGFzdE1zZyRtZXNzYWdlMiIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0MyIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwibWVzc2FnZXNSZWYiLCJjaGF0SW5pdGlhbGl6ZWRSZWYiLCJpc0xvYWRpbmdNb3JlUmVmIiwidXNlclNjcm9sbGluZ1JlZiIsInNjcm9sbFRocmVzaG9sZFJlZiIsImxhc3RTY3JvbGxUb3BSZWYiLCJzaG93U2Nyb2xsVG9Cb3R0b21SZWYiLCJzY3JvbGxSYWZSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dTY3JvbGxUb0JvdHRvbSIsInNldFNob3dTY3JvbGxUb0JvdHRvbSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsInNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYiLCJzdHJlYW1pbmdNZXNzYWdlSWRSZWYiLCJfdXNlQ2hhdE1hbmFnZXIiLCJjaGF0SWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwiYWN0aXZlTG9hZGluZ3MiLCJzZW5kTWVzc2FnZSIsImNoYW5nZVByb2plY3QiLCJpbml0aWFsaXplQ2hhdCIsImhhbmRsZVNjcm9sbCIsInN0b3BHZW5lcmF0aW9uIiwidHJpbSIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJzY3JvbGxIZWlnaHQiLCJiZWhhdmlvciIsInNldFRpbWVvdXQiLCJfbWVzc2FnZXNSZWYkY3VycmVudCIsInNjcm9sbFRvcCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzU2Nyb2xsaW5nVXAiLCJpc05lYXJCb3R0b20iLCJkaWRTZXRTdGF0ZSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJsYXN0TWVzc2FnZSIsImhhc0FwcHJvdmFsIiwiaXNBdEJvdHRvbSIsInNjcm9sbFRvQm90dG9tIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQyIiwiaXNOZXdBbnN3ZXJNZXNzYWdlIiwiaXNOZXdVc2VyTWVzc2FnZSIsImlzTmV3QXBwcm92YWxNZXNzYWdlIiwiaGFzTWVzc2FnZXMiLCJpc05vdEluaXRpYWxNZXNzYWdlIiwibXNnIiwic2Nyb2xsRGVsYXkiLCJkb1Njcm9sbCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50MyIsIl9tZXNzYWdlc1JlZiRjdXJyZW50NCIsImxhc3RVc2VyTWVzc2FnZSIsImF0IiwiaGFzQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJpc1Njcm9sbE9uUGFyZW50IiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiZW50aXR5IiwibGlzdFJlbmRlckNvdW50UmVmIiwiX2xhc3RNc2ckaWQiLCJfbGFzdE1zZyRtZXNzYWdlJGxlbmciLCJfbGFzdE1zZyRtZXNzYWdlIiwibGFzdE1zZyIsImxhc3RLZXkiLCJsYXN0TWVzc2FnZUtleSIsImxhc3RNZXNzYWdlTGVuIiwibWVzc2FnZXNDb3VudCIsImV4cGFuZGVkUmVmIiwic2F2ZWRTY3JvbGxUb3AiLCJpc1N0cmVhbWluZ0FjdGl2ZSIsInN0cmVhbWluZ1RleHQiLCJtZXNzYWdlc0NvbnRlbnQiLCJQcm92aWRlciIsInZhbHVlIiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsImlzQXNzaXN0YW50TWVzc2FnZSIsIm1lc3NhZ2VLZXkiLCJfbWVzc2FnZSRpZDIiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSwgVGFza0luZm8gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVGFza1BhbmVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGFza1BhbmVsJ1xuXG5pbXBvcnQgeyBMb2FkaW5nVGV4dCB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRpbmdUZXh0J1xuaW1wb3J0IHsgTG9hZGVyIH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGVyJ1xuXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcblxuaW1wb3J0IHsgTWVzc2FnZUZyb21Vc2VyLCBNZXNzYWdlRnJvbU90aGVyLCBNZXNzYWdlQ29udGVudEZyb21Vc2VyLCBNZXNzYWdlQ29udGVudEZyb21PdGhlciB9IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgTWVzc2FnZUZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHtcbiAgU0NDQUlNZXNzYWdlV3JhcHBlcixcbiAgU2Nyb2xsVG9Cb3R0b21CdXR0b24sXG4gIFNDTWVzc2FnZXNPdXRlcixcbiAgU0NNZXNzYWdlc1Njcm9sbCxcbiAgU0NNZXNzYWdlc0lubmVyLFxuICBTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbixcbiAgU0NPcHRpb25zTGlzdCxcbiAgU0NPcHRpb25JdGVtLFxuICBTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIsXG4gIFNDQXNzaXN0YW50TmFtZSxcbiAgU0NBc3Npc3RhbnRBdmF0YXIsXG4gIFNDVGFza0xpbmssXG4gIFNDTWVzc2FnZUl0ZW1XcmFwcGVyLFxuICBTQ01lc3NhZ2VJdGVtSW5uZXIsXG4gIFNDQXR0YWNobWVudHNSb3csXG4gIFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uLFxufSBmcm9tICcuL25ld1N0eWxlcydcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgTUFJQUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBDaGF0QUlTdWdnZXN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJU3VnZ2VzdGlvbnMnXG5cbi8qKiBDb250ZXh0byBjb24gZWwgdGV4dG8gZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nLiBTb2xvIGVsIGNvbXBvbmVudGUgcXVlIGxvIGNvbnN1bWUgcmUtcmVuZGVyaXphIGN1YW5kbyBjYW1iaWEuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8c3RyaW5nPignJylcblxuY29uc3QgY29kZSA9IGNyZWF0ZUNvZGVQbHVnaW4oeyB0aGVtZXM6IFsnZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddIH0pXG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhcklubmVyOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIHJldHVybiAoXG4gICAgPFNDQXNzaXN0YW50QXZhdGFyPlxuICAgICAge2FnZW50Py50eXBlID09PSAnY2xvbmUnID8gPE1BSUFJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4gOiBhZ2VudD8uZW1vaml9XG4gICAgPC9TQ0Fzc2lzdGFudEF2YXRhcj5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXIgPSBtZW1vKEFzc2lzdGFudEF2YXRhcklubmVyKVxuXG50eXBlIENoYXRBSU1lc3NhZ2VzUHJvcHMgPSB7XG4gIHVzZXJJbml0aWFsTWVzc2FnZTogeyBtZXNzYWdlOiBzdHJpbmc7IGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdOyBmYXFJZD86IHN0cmluZyB9XG4gIGluaXRpYWxDaGF0SWQ6IHN0cmluZyB8IG51bGxcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBvblNlbmRNZXNzYWdlUmVhZHk/OiAoXG4gICAgc2VuZE1lc3NhZ2U6IChtZXNzYWdlOiBzdHJpbmcsIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSwgZmFxSWQ/OiBzdHJpbmcpID0+IHZvaWQsXG4gICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgaXNXcml0aW5nOiBib29sZWFuXG4gICkgPT4gdm9pZFxuICBpc0Rpc2FibGVkPzogYm9vbGVhblxuICBvblNjcm9sbFRvQm90dG9tPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlSXRlbVByb3BzID0gQ2hhdE1lc3NhZ2UgJiB7XG4gIGF1dGhVc2VyOiBDT1JVc2VyXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj86IGJvb2xlYW5cbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWQ6IHN0cmluZywgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7bG9jYWxBZ2VudD8ubmFtZSAmJiAoXG4gICAgICAgIDxTQ0Fzc2lzdGFudE5hbWU+e2xvY2FsQWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyAnTUFJQScgOiBsb2NhbEFnZW50Py5uYW1lfTwvU0NBc3Npc3RhbnROYW1lPlxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG4vLyBDb21wb25lbnQgZm9yIHRhc2sgbGlua3MgdGhhdCB1c2VzIHRoZSB1c2VUYXNrUGFuZWwgaG9va1xuY29uc3QgVGFza0xpbms6IEZDPHsgaHJlZjogc3RyaW5nOyB0YXNrSWQ6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiA9ICh7IGhyZWYsIHRhc2tJZCwgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB0YWJTZWdtZW50ID0gZ2V0VGFiU2VnbWVudEZyb21IcmVmKGhyZWYpXG4gIGNvbnN0IHsgYnVpbGRPcGVuVGFzayB9ID0gdXNlVGFza1BhbmVsKHRhc2tJZCwgdGFiU2VnbWVudClcbiAgY29uc3Qgb3BlblRhc2sgPSBidWlsZE9wZW5UYXNrKClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIC8vIFNpIGVzIENtZC9DdHJsICsgY2xpY2ssIGRlamFyIHF1ZSBzZSBhYnJhIGVuIG51ZXZhIHBlc3Rhw7FhIChjb21wb3J0YW1pZW50byBwb3IgZGVmZWN0bylcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2soKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NUYXNrTGluayBocmVmPXtocmVmfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TQ1Rhc2tMaW5rPlxuICApXG59XG5cbi8vIEN1c3RvbSBsaW5rIGNvbXBvbmVudCBmb3IgU3RyZWFtZG93bjogdGFzayBVUkxzIG9wZW4gdGhlIHRhc2sgcGFuZWwsIG90aGVyIGxpbmtzIHJlbmRlciBub3JtYWxseVxudHlwZSBDdXN0b21MaW5rUHJvcHMgPSBSZWFjdC5BbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4gJiB7IG5vZGU/OiB1bmtub3duIH1cbmNvbnN0IEN1c3RvbUxpbms6IEZDPEN1c3RvbUxpbmtQcm9wcz4gPSAoeyBocmVmLCBjaGlsZHJlbiwgLi4ucmVzdCB9KSA9PiB7XG4gIGlmICghaHJlZiB8fCB0eXBlb2YgaHJlZiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4gIGNvbnN0IHRhc2tNYXRjaCA9IGhyZWYubWF0Y2gobmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOKSlcbiAgaWYgKHRhc2tNYXRjaCkge1xuICAgIGNvbnN0IHRhc2tJZCA9IHRhc2tNYXRjaFsxXVxuICAgIHJldHVybiAoXG4gICAgICA8VGFza0xpbmsgaHJlZj17aHJlZn0gdGFza0lkPXt0YXNrSWR9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBjb25zdCBmcm9tQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQpXG4gICAgY29uc3QgZGlzcGxheVRleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IGZyb21Db250ZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIGNvbnN0IGRlYnVnQ291bnRSZWYgPSBSZWFjdC51c2VSZWYoMClcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiAmJiBwcm9wcy5pc1N0cmVhbWluZykge1xuICAgICAgZGVidWdDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZygnW1N0cmVhbWluZ01lc3NhZ2VCb2R5XSByZW5kZXInLCB7IGNvdW50OiBkZWJ1Z0NvdW50UmVmLmN1cnJlbnQsIGxlbjogZGlzcGxheVRleHQ/Lmxlbmd0aCB9KVxuICAgIH1cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtwcm9wcy5pc0Fzc2lzdGFudCAmJiBoYXNUYXNrTGlua3MoZGlzcGxheVRleHQpID8gJ2hhcy10YXNrLWxpbmtzJyA6ICcnfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgIGlzQW5pbWF0aW5nPXshIXByb3BzLmlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgPC9TQ0NBSU1lc3NhZ2VXcmFwcGVyPlxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmICFwcm9wcy5pc1N0cmVhbWluZyAmJiAoXG4gICAgICAgICAgPE1lc3NhZ2VGZWVkYmFja1xuICAgICAgICAgICAgY29udGVudD17ZGlzcGxheVRleHR9XG4gICAgICAgICAgICBzb3VyY2VzPXtwcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e3Byb3BzLmhhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e3Byb3BzLmRpc2FibGVGZWVkYmFja31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmIChcbiAgICAgICAgICA8Q2hhdEFJU3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtwcm9wcy5zdWdnZXN0aW9ucyB8fCBbXX1cbiAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IE1lc3NhZ2VJdGVtID0gbWVtbygocHJvcHM6IE1lc3NhZ2VJdGVtUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHVzZXIsXG4gICAgbWVzc2FnZSxcbiAgICBpc1N0cmVhbWluZyxcbiAgICBpc0Vycm9yLFxuICAgIGF1dGhVc2VyLFxuICAgIG9wdGlvbnMsXG4gICAgaXNDaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBkaXNhYmxlRmVlZGJhY2ssXG4gICAgcm9sZSxcbiAgICBzb3VyY2VzLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFwcHJvdmFsLFxuICAgIGFwcHJvdmFsU3RhdHVzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG5cbiAgLy8gREVCVUcgc3RyZWFtaW5nOiB2ZXIgcmUtcmVuZGVycyB5IHJlbW91bnRzLiBIYWJpbGl0YXIgY29uIHdpbmRvdy5NQUlBX0RFQlVHX1NUUkVBTUlOR19SRU5ERVIgPSB0cnVlXG4gIGNvbnN0IHJlbmRlckNvdW50UmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHByZXZNZXNzYWdlTGVuUmVmID0gdXNlUmVmPG51bWJlcj4obWVzc2FnZT8ubGVuZ3RoID8/IDApXG4gIHJlbmRlckNvdW50UmVmLmN1cnJlbnQgKz0gMVxuICBpZiAoaXNTdHJlYW1pbmcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUikge1xuICAgIGNvbnN0IHByZXZMZW4gPSBwcmV2TWVzc2FnZUxlblJlZi5jdXJyZW50XG4gICAgcHJldk1lc3NhZ2VMZW5SZWYuY3VycmVudCA9IG1lc3NhZ2U/Lmxlbmd0aCA/PyAwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnW01lc3NhZ2VJdGVtXSByZW5kZXInLCB7XG4gICAgICBtZXNzYWdlSWQ6IGlkLFxuICAgICAgcmVuZGVyQ291bnQ6IHJlbmRlckNvdW50UmVmLmN1cnJlbnQsXG4gICAgICBtZXNzYWdlTGVuOiBtZXNzYWdlPy5sZW5ndGgsXG4gICAgICBwcmV2TWVzc2FnZUxlbjogcHJldkxlbixcbiAgICAgIGlzU3RyZWFtaW5nOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50Q2xpY2sgPSAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICAvLyBQZXJtaXRpciBwcmV2aXN1YWxpemFjacOzbiBzaSB0aWVuZSBhcmNoaXZvIGxvY2FsIG8gVVJMcyBkZWwgYmFja2VuZFxuICAgIGlmIChcbiAgICAgIGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQub3JpZ2luYWxGaWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfZmlsZVxuICAgICkge1xuICAgICAgc2V0UHJldmlld0F0dGFjaG1lbnQoYXR0YWNobWVudClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVByZXZpZXcgPSAoKSA9PiB7XG4gICAgc2V0UHJldmlld0F0dGFjaG1lbnQobnVsbClcbiAgfVxuXG4gIGlmIChpc0NoYW5nZVByb2plY3QgJiYgb3B0aW9ucykge1xuICAgIHJldHVybiAoXG4gICAgICA8TWVzc2FnZVdyYXBwZXIga2V5PXtpZH0gaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn0gZGF0YS1tZXNzYWdlLWlkPXtpZH0gaGFzRmVlZGJhY2s9e2ZhbHNlfT5cbiAgICAgICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAgICAgIHtpc0Fzc2lzdGFudCAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgICAgICA8TWVzc2FnZUNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICBpc0NoYW5nZVByb2plY3Q9e2lzQ2hhbmdlUHJvamVjdH1cbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIG1lc3NhZ2VFeHRyYUNvbnRlbnQ9ezxNZXNzYWdlT3B0aW9ucyBvcHRpb25zPXtvcHRpb25zIGFzIGFueX0gaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259IC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gICAgICA8L01lc3NhZ2VXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrQ2xpY2sgPSAoZmVlZGJhY2s6IEZlZWRiYWNrKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gaWRcbiAgICAgIC5zcGxpdCgnLScpXG4gICAgICAuZmlsdGVyKHF1ZXN0aW9uSWQgPT4gcXVlc3Rpb25JZCAhPT0gJ2Fuc3dlcicpXG4gICAgICAuam9pbignLScpXG4gICAgaGFuZGxlRmVlZGJhY2s/LihmZWVkYmFjaywgc2Vzc2lvbklkKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICB7ISEoYXR0YWNobWVudHMgfHwgc291cmNlcyk/Lmxlbmd0aCAmJiAhaXNBc3Npc3RhbnQgJiYgKFxuICAgICAgICAgIDxTQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICAgICAgeyhhdHRhY2htZW50cyB8fCBzb3VyY2VzKT8ubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAvLyBEZXRlY3RhciBzaSBlcyB1biBhcmNoaXZvIGRlIGF1ZGlvXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudD8udHlwZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50TmFtZSA9IGF0dGFjaG1lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgaXNBdWRpb0ZpbGUgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpIHx8XG4gICAgICAgICAgICAgICAgWydmbGFjJywgJ200YScsICdtcDMnLCAnbXA0JywgJ29nYScsICdvZ2cnLCAnd2F2JywgJ3dlYm0nXS5pbmNsdWRlcyhhdHRhY2htZW50VHlwZSkgfHxcbiAgICAgICAgICAgICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnROYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgaWYgKGlzQXVkaW9GaWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxBdHRhY2htZW50Q2FyZEF1ZGlvIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH0gYXR0YWNobWVudD17YXR0YWNobWVudH0gLz5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEF0dGFjaG1lbnRDYXJkXG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50PXthdHRhY2htZW50fVxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25JbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50Q2xpY2soYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICApfVxuICAgICAgICB7YXBwcm92YWwgJiYgYXBwcm92YWwucGVuZGluZ19hY3Rpb25zICYmIChcbiAgICAgICAgICA8U0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4+XG4gICAgICAgICAgICA8QXBwcm92YWxCb3hcbiAgICAgICAgICAgICAgYWN0aW9ucz17YXBwcm92YWwucGVuZGluZ19hY3Rpb25zfVxuICAgICAgICAgICAgICBzdGF0dXM9e2FwcHJvdmFsU3RhdHVzfVxuICAgICAgICAgICAgICBvbkFwcHJvdmU9e3RocmVhZElkcyA9PiB0aHJlYWRJZHMuZm9yRWFjaChpZCA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKGlkLCAnYXBwcm92ZScpKX1cbiAgICAgICAgICAgICAgb25SZWplY3Q9e3RocmVhZElkcyA9PiB0aHJlYWRJZHMuZm9yRWFjaChpZCA9PiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uKGlkLCAncmVqZWN0JykpfVxuICAgICAgICAgICAgICBpc1Byb2plY3REZWxldGVkPXtwcm9wcy5wcm9qZWN0TWV0YWRhdGE/LmlzX2RlbGV0ZWQgPT09IHRydWV9XG4gICAgICAgICAgICAgIGlzRXhwYW5kZWQ9e3Byb3BzLmV4cGFuZGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICApfVxuICAgICAgICB7KCEhbWVzc2FnZSB8fCBpc1N0cmVhbWluZykgJiYgIWFwcHJvdmFsICYmIChcbiAgICAgICAgICA8U3RyZWFtaW5nTWVzc2FnZUJvZHlcbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2UgPz8gJyd9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17ISFpc1N0cmVhbWluZ31cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9XG4gICAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgICAgYXBwcm92YWw9e2FwcHJvdmFsfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIHNvdXJjZXM9e3NvdXJjZXN9XG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17c3VnZ2VzdGlvbnN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFja0NsaWNrPXtoYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtkaXNhYmxlRmVlZGJhY2sgPz8gbnVsbH1cbiAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhIWhhc1NlbGVjdGVkU3VnZ2VzdGlvbn1cbiAgICAgICAgICAgIG1lc3NhZ2VJZD17aWR9XG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgIDxBdHRhY2htZW50UHJldmlld01vZGFsXG4gICAgICAgIGlzT3Blbj17ISFwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VQcmV2aWV3fVxuICAgICAgICBhdHRhY2htZW50PXtwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgIC8+XG4gICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgKVxufSlcblxuY29uc3QgQ2hhdEFJTWVzc2FnZXNJbm5lciA9ICh7XG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgaW5pdGlhbENoYXRJZCxcbiAgb25FcnJvcixcbiAgb25TZW5kTWVzc2FnZVJlYWR5LFxuICBvblNjcm9sbFRvQm90dG9tLFxuICBhdHRhY2htZW50cyxcbiAgYWdlbnRzLFxuICBleHBhbmRlZCxcbn06IENoYXRBSU1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlLCBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmID0gdXNlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuICB9ID0gdXNlQ2hhdE1hbmFnZXIoe1xuICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCB1bmRlZmluZWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIG9uRXJyb3IsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYWdlbnRzLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGNoYW5nZVByb2plY3Qob3B0aW9uKVxuICAgIH0sXG4gICAgW2NoYW5nZVByb2plY3RdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdWdnZXN0aW9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFzdWdnZXN0aW9uPy50cmltKCkpIHJldHVyblxuICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZUlkXSkgcmV0dXJuXG4gICAgICBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzKHByZXYgPT4gKHsgLi4ucHJldiwgW21lc3NhZ2VJZF06IHRydWUgfSkpXG4gICAgICBzZW5kTWVzc2FnZShzdWdnZXN0aW9uKVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlLCBzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUbyh7XG4gICAgICAgIHRvcDogbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIH0pXG4gICAgICAvLyBBY3R1YWxpemFyIGVzdGFkbyBkZXNwdcOpcyBkZSB1biBicmV2ZSBkZWxheSBwYXJhIHBlcm1pdGlyIHF1ZSBlbCBzY3JvbGwgc2UgY29tcGxldGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9LCA1MDApXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgY29uc3QgZGlkU2V0U3RhdGUgPSBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvd1xuICAgICAgICBpZiAoZGlkU2V0U3RhdGUpIHtcbiAgICAgICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsXVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChzZW5kTWVzc2FnZVJlZi5jdXJyZW50LCBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZylcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlTWVzc2FnZXNcbiAgfSwgW2lzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgLy8gQ3VhbmRvIGVsIGFnZW50ZSBlbXBpZXphIGEgcmVzcG9uZGVyLCByZXNldGVhciBlbCBmbGFnIHkgZWwgdW1icmFsIHBhcmEgYWN0aXZhciBlbCBhdXRvLXNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaW5pdGlhbGl6ZUNoYXQoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gU2Nyb2xsIGN1YW5kbyBsbGVnYSB1biBtZW5zYWplIGRlIGFwcm9iYWNpw7NuIChBcHByb3ZhbEJveCkuIFNpbiBSZXNpemVPYnNlcnZlciBlbiBlbFxuICAvLyBjb250ZW5lZG9yOiBvYnNlcnZhcmxvIGRpc3BhcmFiYSBjYWxsYmFja3MgYWwgY2FtYmlhciBlbCBsYXlvdXQvc2Nyb2xsYmFyIHkgY2FkYSB1bm9cbiAgLy8gbGxhbWFiYSBzY3JvbGxUb0JvdHRvbSgpLCBwcm92b2NhbmRvIHRpcm9uZXMgYWwgc2Nyb2xsZWFyLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCB8fCBsb2FkaW5nTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGhhc0FwcHJvdmFsID0gbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG5cbiAgICBpZiAoIWhhc0FwcHJvdmFsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG5cbiAgICBpZiAoIShpc0F0Qm90dG9tIHx8ICF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdWVuY2lhIGluaWNpYWwgZGUgc2Nyb2xsIHBhcmEgY3VhbmRvIGVsIEFwcHJvdmFsQm94IGFjYWJhIGRlIHJlbmRlcml6YXJzZVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsVG9Cb3R0b20sIDEwMClcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTaSBlbCB1c3VhcmlvIGVzdMOhIHNjcm9sbGVhbmRvIG1hbnVhbG1lbnRlLCBubyBoYWNlciBhdXRvIHNjcm9sbFxuICAgIGlmICh1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgJiYgd2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG5cbiAgICBjb25zdCBpc05ld0Fuc3dlck1lc3NhZ2UgPSBsYXN0TWVzc2FnZSAmJiBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhbnN3ZXItJylcbiAgICBjb25zdCBpc05ld1VzZXJNZXNzYWdlID0gbGFzdE1lc3NhZ2UgJiYgbGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgncXVlc3Rpb24tJylcbiAgICBjb25zdCBpc05ld0FwcHJvdmFsTWVzc2FnZSA9IGxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhcHByb3ZhbC0nKSB8fCAhIWxhc3RNZXNzYWdlLmFwcHJvdmFsKVxuICAgIGNvbnN0IGlzQXRCb3R0b20gPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcCA8PSBjb250YWluZXIuY2xpZW50SGVpZ2h0ICsgMTAwXG4gICAgY29uc3QgaGFzTWVzc2FnZXMgPSAhIW1lc3NhZ2VzLmxlbmd0aFxuICAgIGNvbnN0IGlzTm90SW5pdGlhbE1lc3NhZ2UgPSAhbWVzc2FnZXMuc29tZShtc2cgPT4gbXNnLmlkID09PSAndXNlci1pbml0aWFsLW1lc3NhZ2UnKVxuXG4gICAgaWYgKChpc05ld0Fuc3dlck1lc3NhZ2UgfHwgaXNOZXdVc2VyTWVzc2FnZSB8fCBpc05ld0FwcHJvdmFsTWVzc2FnZSkgJiYgaXNBdEJvdHRvbSkge1xuICAgICAgLy8gUGFyYSBtZW5zYWplcyBkZSBhcHJvYmFjacOzbiwgdXNhciB1biBwZXF1ZcOxbyBkZWxheSBwYXJhIGFzZWd1cmFyIHF1ZSBlbCBBcHByb3ZhbEJveCBzZSBoYXlhIHJlbmRlcml6YWRvXG4gICAgICBjb25zdCBzY3JvbGxEZWxheSA9IGlzTmV3QXBwcm92YWxNZXNzYWdlID8gMTAwIDogMFxuICAgICAgY29uc3QgZG9TY3JvbGwgPSAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKHNjcm9sbERlbGF5ID4gMCkge1xuICAgICAgICBzZXRUaW1lb3V0KGRvU2Nyb2xsLCBzY3JvbGxEZWxheSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvU2Nyb2xsKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaGFzTWVzc2FnZXMgJiZcbiAgICAgIGlzTm90SW5pdGlhbE1lc3NhZ2UgJiZcbiAgICAgICFpc05ld0Fuc3dlck1lc3NhZ2UgJiZcbiAgICAgICFpc05ld1VzZXJNZXNzYWdlICYmXG4gICAgICAhaXNOZXdBcHByb3ZhbE1lc3NhZ2VcbiAgICApIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgd2FpdGluZ1Jlc3BvbnNlXSlcblxuICAvLyBWZXJpZmljYXIgZWwgZXN0YWRvIGluaWNpYWwgZGVsIHNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50ICYmICFsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLmxlbmd0aF0pXG5cbiAgLy8gT2J0ZW5lciBlbCDDumx0aW1vIG1lbnNhamUgZGVsIHVzdWFyaW8gcGFyYSB2ZXJpZmljYXIgc2kgdGllbmUgYXR0YWNobWVudHNcbiAgY29uc3QgbGFzdFVzZXJNZXNzYWdlID0gbWVzc2FnZXNcbiAgICAuZmlsdGVyKG1zZyA9PiBtc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgbXNnLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkpXG4gICAgLmF0KC0xKVxuXG4gIGNvbnN0IGhhc0F0dGFjaG1lbnRzID1cbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LmF0dGFjaG1lbnRzKSAmJiBsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoKSB8fFxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uc291cmNlcykgJiYgbGFzdFVzZXJNZXNzYWdlLnNvdXJjZXMubGVuZ3RoKVxuXG4gIGNvbnN0IGlzU2Nyb2xsT25QYXJlbnQgPSAhIWV4cGFuZGVkXG4gIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gIC8vIERFQlVHIHN0cmVhbWluZzogcmUtcmVuZGVycyBkZWwgY29udGVuZWRvci4gSGFiaWxpdGFyIGNvbiB3aW5kb3cuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSID0gdHJ1ZVxuICBjb25zdCBsaXN0UmVuZGVyQ291bnRSZWYgPSB1c2VSZWYoMClcbiAgaWYgKCh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSkuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSKSB7XG4gICAgbGlzdFJlbmRlckNvdW50UmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGxhc3RNc2cgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGxhc3RLZXkgPSBsYXN0TXNnPy5pZCA/PyBgbXNnLSR7bWVzc2FnZXMubGVuZ3RoIC0gMX1gXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnW0NoYXRBSU1lc3NhZ2VzXSByZW5kZXInLCB7XG4gICAgICBjb3VudDogbGlzdFJlbmRlckNvdW50UmVmLmN1cnJlbnQsXG4gICAgICBsYXN0TWVzc2FnZUtleTogbGFzdEtleSxcbiAgICAgIGxhc3RNZXNzYWdlTGVuOiBsYXN0TXNnPy5tZXNzYWdlPy5sZW5ndGggPz8gMCxcbiAgICAgIG1lc3NhZ2VzQ291bnQ6IG1lc3NhZ2VzLmxlbmd0aCxcbiAgICB9KVxuICB9XG5cbiAgLy8gQWwgZXhwYW5kaXIvY29udHJhZXIgZWwgbW9kYWwgZWwgcmVmIHBhc2EgYSBvdHJvIGNvbnRlbmVkb3IgKHNjcm9sbFRvcCBzZSByZXNldGVhIGEgMCkuXG4gIC8vIFJlc3RhdXJhciBsYSBwb3NpY2nDs24gZGUgc2Nyb2xsIGFudGVzIGRlbCBwYWludCBwYXJhIGV2aXRhciBxdWUgbGEgY29udmVyc2FjacOzbiBzYWx0ZSBhcnJpYmEuXG4gIGNvbnN0IGV4cGFuZGVkUmVmID0gdXNlUmVmKGV4cGFuZGVkKVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChleHBhbmRlZFJlZi5jdXJyZW50ICE9PSBleHBhbmRlZCAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzYXZlZFNjcm9sbFRvcFxuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSlcblxuICBjb25zdCBsYXN0TXNnID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgY29uc3QgaXNTdHJlYW1pbmdBY3RpdmUgPVxuICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKSAmJlxuICAgIGxhc3RNc2cgJiZcbiAgICAobGFzdE1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IGxhc3RNc2cudXNlcj8uaWQgPT09ICdhc3Npc3RhbnQnKVxuICBjb25zdCBzdHJlYW1pbmdUZXh0ID0gaXNTdHJlYW1pbmdBY3RpdmUgPyAobGFzdE1zZy5tZXNzYWdlID8/ICcnKSA6ICcnXG5cbiAgaWYgKGxvYWRpbmdNZXNzYWdlcykge1xuICAgIHJldHVybiA8TG9hZGVyIC8+XG4gIH1cblxuICBjb25zdCBtZXNzYWdlc0NvbnRlbnQgPSAoXG4gICAgPD5cbiAgICAgIHtpc0xvYWRpbmdNb3JlTWVzc2FnZXMgJiYgPExvYWRpbmdUZXh0IHRleHQ9e3QoJ2NoYXQubG9hZGluZ01vcmUnKX0gLz59XG4gICAgICA8U3RyZWFtaW5nTWVzc2FnZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3N0cmVhbWluZ1RleHR9PlxuICAgICAgICB7bWVzc2FnZXMubWFwKChtZXNzYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEobWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoIHx8IG1lc3NhZ2Uuc291cmNlcz8ubGVuZ3RoKSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UubWVzc2FnZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UucHJvamVjdD8ubmFtZSAmJlxuICAgICAgICAgICAgIW1lc3NhZ2UuYXBwcm92YWxcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VGZWVkYmFjayA9XG4gICAgICAgICAgICBtZXNzYWdlPy53YXNIZWxwZnVsID09PSB1bmRlZmluZWQgfHwgbWVzc2FnZS53YXNIZWxwZnVsID09PSBudWxsXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG1lc3NhZ2Uud2FzSGVscGZ1bFxuICAgICAgICAgICAgICAgID8gRmVlZGJhY2suVEhVTUJTX1VQXG4gICAgICAgICAgICAgICAgOiBGZWVkYmFjay5USFVNQlNfRE9XTlxuXG4gICAgICAgICAgY29uc3QgaXNBc3Npc3RhbnRNZXNzYWdlID0gbWVzc2FnZS5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IG1lc3NhZ2UudXNlci5pZCA9PT0gJ2Fzc2lzdGFudCdcbiAgICAgICAgICBjb25zdCBpc0xhc3RNZXNzYWdlID0gaW5kZXggPT09IG1lc3NhZ2VzLmxlbmd0aCAtIDFcbiAgICAgICAgICBjb25zdCBpc1N0cmVhbWluZyA9IGlzQXNzaXN0YW50TWVzc2FnZSAmJiBpc0xhc3RNZXNzYWdlICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKVxuXG4gICAgICAgICAgLy8gS2V5IGVzdGFibGU6IHNvbG8gbWVzc2FnZS5pZCBwYXJhIGV2aXRhciByZW1vdW50IGR1cmFudGUgc3RyZWFtaW5nIChtZXNzYWdlLmRhdGUgcHVlZGUgY2FtYmlhcilcbiAgICAgICAgICBjb25zdCBtZXNzYWdlS2V5ID0gbWVzc2FnZS5pZCA/PyBgbXNnLSR7aW5kZXh9YFxuXG4gICAgICAgICAgaWYgKGlzU3RyZWFtaW5nKSB7XG4gICAgICAgICAgICBpZiAoc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgIT09IG1lc3NhZ2UuaWQpIHtcbiAgICAgICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBtZXNzYWdlLmlkID8/IG51bGxcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICBzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIHsgbWVzc2FnZTogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXV0aFVzZXIsXG4gICAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjayxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgICAgICAgICAgICAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb246ICEhc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlLmlkXSxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjazogbWVzc2FnZUZlZWRiYWNrLFxuICAgICAgICAgICAgICAgICAgaXNTdHJlYW1pbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICBpc0xhc3RNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gPE1lc3NhZ2VJdGVtIGtleT17bWVzc2FnZUtleX0gey4uLihzdHJlYW1pbmdNZXNzYWdlUHJvcHNSZWYuY3VycmVudCBhcyBNZXNzYWdlSXRlbVByb3BzKX0gLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICB7Li4ubWVzc2FnZX1cbiAgICAgICAgICAgICAga2V5PXttZXNzYWdlS2V5fVxuICAgICAgICAgICAgICBhdXRoVXNlcj17YXV0aFVzZXJ9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufVxuICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb249e2hhbmRsZUFwcHJvdmFsRGVjaXNpb259XG4gICAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb249eyEhc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlLmlkXX1cbiAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXttZXNzYWdlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtmYWxzZX1cbiAgICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC9TdHJlYW1pbmdNZXNzYWdlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIHsod2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlIHx8IE9iamVjdC5rZXlzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgIDxTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICA8TG9hZGluZ1RleHRcbiAgICAgICAgICAgICAga2V5PVwibG9hZGluZy1hY3RpdmVcIlxuICAgICAgICAgICAgICB0ZXh0PXtcbiAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5maW5kKG1zZyA9PiBtc2cgIT09IHQoJ2NoYXQucHJvY2Vzc2luZycpKSB8fCB0KCdjaGF0LnByb2Nlc3NpbmcnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAod2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlKSAmJiAoXG4gICAgICAgICAgICAgIDxMb2FkaW5nVGV4dFxuICAgICAgICAgICAgICAgIHRleHQ9e1xuICAgICAgICAgICAgICAgICAgbG9hZGluZ01lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgIChpc1dlYlNlYXJjaEFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICA/ICdCdXNjYW5kbyBlbiBsYSB3ZWInXG4gICAgICAgICAgICAgICAgICAgIDogaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJylcbiAgICAgICAgICAgICAgICAgICAgICA6IGhhc0F0dGFjaG1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoYXQuZ2VuZXJhdGluZ0F0dGFjaG1lbnQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdjaGF0LmdlbmVyYXRpbmcnKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICl9XG4gICAgPC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VzT3V0ZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fT5cbiAgICAgIHtpc1Njcm9sbE9uUGFyZW50ID8gKFxuICAgICAgICA8U0NNZXNzYWdlc1Njcm9sbCByZWY9e21lc3NhZ2VzUmVmfSBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fSAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXJcbiAgICAgICAgICByZWY9e21lc3NhZ2VzUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX1cbiAgICAgICAgICAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQVFDLElBQUksRUFBYUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUFDLGFBQUEsSUFBQUMsY0FBQSxRQUFRLE9BQU87QUFDN0csU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFFcEYsU0FBc0JDLGVBQWUsUUFBa0IscUJBQXFCO0FBRTVFLFNBQWtCQyxPQUFPLFFBQVEs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
|
|
768
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJMb2FkaW5nVGV4dCIsIkxvYWRlciIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwiU0NBc3Npc3RhbnRBdmF0YXIiLCJTQ1Rhc2tMaW5rIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJNQUlBSWNvbiIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJTdHJlYW1pbmdNZXNzYWdlQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJjb2RlIiwidGhlbWVzIiwiQXNzaXN0YW50QXZhdGFySW5uZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwiY2hpbGRyZW4iLCJ0eXBlIiwid2lkdGgiLCJoZWlnaHQiLCJlbW9qaSIsIkFzc2lzdGFudEF2YXRhciIsIk1lc3NhZ2VXcmFwcGVyIiwiX3JlZiIsImlzQ3VycmVudFVzZXIiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIk1lc3NhZ2VDb21wb25lbnQiLCJfb2JqZWN0U3ByZWFkIiwiTWVzc2FnZUNvbnRlbnRXcmFwcGVyIiwiX3JlZjIiLCJfZXhjbHVkZWQyIiwiTWVzc2FnZUNvbnRlbnRDb21wb25lbnQiLCJNZXNzYWdlT3B0aW9ucyIsIl9yZWYzIiwib3B0aW9ucyIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlbGVjdGVkT3B0aW9uIiwic2V0U2VsZWN0ZWRPcHRpb24iLCJoYW5kbGVTZWxlY3QiLCJvcHRpb24iLCJtYXAiLCIkaGFzU2VsZWN0aW9uIiwiJGRpbW1lZCIsImlkIiwib25DbGljayIsIm5hbWUiLCJBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2NhbEFnZW50Iiwic2V0TG9jYWxBZ2VudCIsIl91c2VHbG9iYWxDb250ZXh0MiIsImdldFRhYlNlZ21lbnRGcm9tSHJlZiIsImhyZWYiLCJtYXRjaCIsInRlc3QiLCJleHRyYWN0VGFza3NGcm9tTWVzc2FnZSIsIm1lc3NhZ2UiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJ0YXNrcyIsInNlZW5JZHMiLCJTZXQiLCJleGVjIiwidGFza0lkIiwidXJsIiwiaGFzIiwiYWRkIiwiZXNjYXBlZFVybCIsInJlcGxhY2UiLCJtYXJrZG93bkxpbmtSZWdleCIsImNvbmNhdCIsImxpbmtNYXRjaCIsInRpdGxlIiwicHVzaCIsImhhc1Rhc2tMaW5rcyIsInRleHQiLCJsZW5ndGgiLCJUYXNrTGluayIsIl9yZWY0IiwidGFiU2VnbWVudCIsIl91c2VUYXNrUGFuZWwiLCJidWlsZE9wZW5UYXNrIiwib3BlblRhc2siLCJoYW5kbGVDbGljayIsImUiLCJtZXRhS2V5IiwiY3RybEtleSIsInByZXZlbnREZWZhdWx0IiwiQ3VzdG9tTGluayIsIl9yZWY1IiwicmVzdCIsIl9leGNsdWRlZDMiLCJ0YXNrTWF0Y2giLCJTdHJlYW1pbmdNZXNzYWdlQm9keSIsImZyb21Db250ZXh0IiwidXNlQ29udGV4dCIsImRpc3BsYXlUZXh0IiwiaXNTdHJlYW1pbmciLCJkZWJ1Z0NvdW50UmVmIiwid2luZG93IiwiTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSIiwiY3VycmVudCIsImNvbnNvbGUiLCJsb2ciLCJjb3VudCIsImxlbiIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJjbGFzc05hbWUiLCJpc0Fzc2lzdGFudCIsInBsdWdpbnMiLCJjb21wb25lbnRzIiwiYSIsImxpbmtTYWZldHkiLCJlbmFibGVkIiwiaXNBbmltYXRpbmciLCJzaGlraVRoZW1lIiwiY29udHJvbHMiLCJ0YWJsZSIsImlzRXJyb3IiLCJhcHByb3ZhbCIsImNvbnRlbnQiLCJzb3VyY2VzIiwiaGFuZGxlRmVlZGJhY2siLCJoYW5kbGVGZWVkYmFja0NsaWNrIiwiZGlzYWJsZUZlZWRiYWNrIiwiTWVzc2FnZUl0ZW0iLCJfbWVzc2FnZSRsZW5ndGgiLCJfcmVmNiIsIl9yZWY3IiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwicmVuZGVyQ291bnRSZWYiLCJwcmV2TWVzc2FnZUxlblJlZiIsIl9tZXNzYWdlJGxlbmd0aDIiLCJwcmV2TGVuIiwibWVzc2FnZUlkIiwicmVuZGVyQ291bnQiLCJtZXNzYWdlTGVuIiwicHJldk1lc3NhZ2VMZW4iLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwiaW5jbHVkZXMiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4IiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsIm9uUmVqZWN0IiwiaXNQcm9qZWN0RGVsZXRlZCIsInByb2plY3RNZXRhZGF0YSIsImlzX2RlbGV0ZWQiLCJpc0V4cGFuZGVkIiwiZXhwYW5kZWQiLCJpc09wZW4iLCJvbkNsb3NlIiwiQ2hhdEFJTWVzc2FnZXNJbm5lciIsIl9yZWY4IiwiX2xhc3RNc2ckdXNlciIsIl9sYXN0TXNnJG1lc3NhZ2UyIiwidXNlckluaXRpYWxNZXNzYWdlIiwiaW5pdGlhbENoYXRJZCIsIm9uRXJyb3IiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJvblNjcm9sbFRvQm90dG9tIiwiYWdlbnRzIiwiX3VzZVQiLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQzIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJtZXNzYWdlc1JlZiIsImNoYXRJbml0aWFsaXplZFJlZiIsImlzTG9hZGluZ01vcmVSZWYiLCJ1c2VyU2Nyb2xsaW5nUmVmIiwic2Nyb2xsVGhyZXNob2xkUmVmIiwibGFzdFNjcm9sbFRvcFJlZiIsInNob3dTY3JvbGxUb0JvdHRvbVJlZiIsInNjcm9sbFJhZlJlZiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd1Njcm9sbFRvQm90dG9tIiwic2V0U2hvd1Njcm9sbFRvQm90dG9tIiwic3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmIiwic3RyZWFtaW5nTWVzc2FnZUlkUmVmIiwiX3VzZUNoYXRNYW5hZ2VyIiwiY2hhdElkIiwidW5kZWZpbmVkIiwibWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsImFjdGl2ZUxvYWRpbmdzIiwic2VuZE1lc3NhZ2UiLCJjaGFuZ2VQcm9qZWN0IiwiaW5pdGlhbGl6ZUNoYXQiLCJoYW5kbGVTY3JvbGwiLCJzdG9wR2VuZXJhdGlvbiIsImhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20iLCJzY3JvbGxUbyIsInRvcCIsInNjcm9sbEhlaWdodCIsImJlaGF2aW9yIiwic2V0VGltZW91dCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50Iiwic2Nyb2xsVG9wIiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwic2hvdWxkU2hvdyIsImhhbmRsZVNjcm9sbFRvQm90dG9tIiwiY29udGFpbmVyIiwiY3VycmVudFRhcmdldCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNTY3JvbGxpbmdVcCIsImlzTmVhckJvdHRvbSIsImRpZFNldFN0YXRlIiwic2VuZE1lc3NhZ2VSZWYiLCJzdG9wR2VuZXJhdGlvblJlZiIsIm9uU2VuZE1lc3NhZ2VSZWFkeVJlZiIsImxhc3RNZXNzYWdlIiwiaGFzQXBwcm92YWwiLCJpc0F0Qm90dG9tIiwic2Nyb2xsVG9Cb3R0b20iLCJfbWVzc2FnZXNSZWYkY3VycmVudDIiLCJpc05ld0Fuc3dlck1lc3NhZ2UiLCJpc05ld1VzZXJNZXNzYWdlIiwiaXNOZXdBcHByb3ZhbE1lc3NhZ2UiLCJoYXNNZXNzYWdlcyIsImlzTm90SW5pdGlhbE1lc3NhZ2UiLCJtc2ciLCJzY3JvbGxEZWxheSIsImRvU2Nyb2xsIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQzIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQ0IiwibGFzdFVzZXJNZXNzYWdlIiwiYXQiLCJoYXNBdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImlzU2Nyb2xsT25QYXJlbnQiLCJsaXN0UmVuZGVyQ291bnRSZWYiLCJfbGFzdE1zZyRpZCIsIl9sYXN0TXNnJG1lc3NhZ2UkbGVuZyIsIl9sYXN0TXNnJG1lc3NhZ2UiLCJsYXN0TXNnIiwibGFzdEtleSIsImxhc3RNZXNzYWdlS2V5IiwibGFzdE1lc3NhZ2VMZW4iLCJtZXNzYWdlc0NvdW50IiwiZXhwYW5kZWRSZWYiLCJzYXZlZFNjcm9sbFRvcCIsImlzU3RyZWFtaW5nQWN0aXZlIiwic3RyZWFtaW5nVGV4dCIsIm1lc3NhZ2VzQ29udGVudCIsIlByb3ZpZGVyIiwidmFsdWUiLCJfbWVzc2FnZSRhdHRhY2htZW50cyIsIl9tZXNzYWdlJHNvdXJjZXMiLCJfbWVzc2FnZSRwcm9qZWN0IiwiX21lc3NhZ2UkaWQiLCJwcm9qZWN0IiwibWVzc2FnZUZlZWRiYWNrIiwid2FzSGVscGZ1bCIsIlRIVU1CU19VUCIsIlRIVU1CU19ET1dOIiwiaXNBc3Npc3RhbnRNZXNzYWdlIiwiaXNMYXN0TWVzc2FnZSIsIm1lc3NhZ2VLZXkiLCJfbWVzc2FnZSRpZDIiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXkiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiY29sb3IiLCJDaGF0QUlNZXNzYWdlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9DaGF0QUlNZXNzYWdlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnN0YWJsZS1uZXN0ZWQtY29tcG9uZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgbWVtbywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFN0cmVhbWRvd24gfSBmcm9tICdzdHJlYW1kb3duJ1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJ0BzdHJlYW1kb3duL2NvZGUnXG5pbXBvcnQgeyBBcnJvd1NtYWxsRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Fycm93U21hbGxEb3duJ1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXBwcm92YWxCb3ggfSBmcm9tICcuLi8uLi9hdG9tcy9BcHByb3ZhbEJveC9BcHByb3ZhbEJveCdcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TW9kYWwgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsJ1xuaW1wb3J0IHsgQXR0YWNobWVudENhcmRBdWRpbyB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkQXVkaW8nXG5pbXBvcnQgeyBNQUlBTWVzc2FnZVByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQU1lc3NhZ2UvTUFJQU1lc3NhZ2UuaW50ZXJmYWNlcydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0SGlzdG9yeVJvbGUsIFRhc2tJbmZvIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcblxuaW1wb3J0IHsgQ09SVXNlciwgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgdXNlQ2hhdE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlcidcbmltcG9ydCB7IHVzZVRhc2tQYW5lbCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVRhc2tQYW5lbCdcblxuaW1wb3J0IHsgTG9hZGluZ1RleHQgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkaW5nVGV4dCdcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4sXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyLFxuICBTQ0Fzc2lzdGFudE5hbWUsXG4gIFNDQXNzaXN0YW50QXZhdGFyLFxuICBTQ1Rhc2tMaW5rLFxuICBTQ01lc3NhZ2VJdGVtV3JhcHBlcixcbiAgU0NNZXNzYWdlSXRlbUlubmVyLFxuICBTQ0F0dGFjaG1lbnRzUm93LFxuICBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbixcbn0gZnJvbSAnLi9uZXdTdHlsZXMnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuXG4vKiogQ29udGV4dG8gY29uIGVsIHRleHRvIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZy4gU29sbyBlbCBjb21wb25lbnRlIHF1ZSBsbyBjb25zdW1lIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhLiAqL1xuY29uc3QgU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PHN0cmluZz4oJycpXG5cbmNvbnN0IGNvZGUgPSBjcmVhdGVDb2RlUGx1Z2luKHsgdGhlbWVzOiBbJ2dpdGh1Yi1saWdodCcsICdnaXRodWItbGlnaHQnXSB9KVxuXG5jb25zdCBBc3Npc3RhbnRBdmF0YXJJbm5lcjogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudEF2YXRhcj5cbiAgICAgIHthZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IDxNQUlBSWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+IDogYWdlbnQ/LmVtb2ppfVxuICAgIDwvU0NBc3Npc3RhbnRBdmF0YXI+XG4gIClcbn1cblxuY29uc3QgQXNzaXN0YW50QXZhdGFyID0gbWVtbyhBc3Npc3RhbnRBdmF0YXJJbm5lcilcblxudHlwZSBDaGF0QUlNZXNzYWdlc1Byb3BzID0ge1xuICB1c2VySW5pdGlhbE1lc3NhZ2U6IHsgbWVzc2FnZTogc3RyaW5nOyBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXTsgZmFxSWQ/OiBzdHJpbmcgfVxuICBpbml0aWFsQ2hhdElkOiBzdHJpbmcgfCBudWxsXG4gIG9uRXJyb3I6ICgpID0+IHZvaWRcbiAgb25TZW5kTWVzc2FnZVJlYWR5PzogKFxuICAgIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sIGZhcUlkPzogc3RyaW5nKSA9PiB2b2lkLFxuICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuLFxuICAgIGlzV3JpdGluZzogYm9vbGVhblxuICApID0+IHZvaWRcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TY3JvbGxUb0JvdHRvbT86ICgpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGFnZW50cz86IEFnZW50W11cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUl0ZW1Qcm9wcyA9IENoYXRNZXNzYWdlICYge1xuICBhdXRoVXNlcjogQ09SVXNlclxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWRzOiBzdHJpbmdbXSwgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7bG9jYWxBZ2VudD8ubmFtZSAmJiAoXG4gICAgICAgIDxTQ0Fzc2lzdGFudE5hbWU+e2xvY2FsQWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyAnTUFJQScgOiBsb2NhbEFnZW50Py5uYW1lfTwvU0NBc3Npc3RhbnROYW1lPlxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG4vLyBDb21wb25lbnQgZm9yIHRhc2sgbGlua3MgdGhhdCB1c2VzIHRoZSB1c2VUYXNrUGFuZWwgaG9va1xuY29uc3QgVGFza0xpbms6IEZDPHsgaHJlZjogc3RyaW5nOyB0YXNrSWQ6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiA9ICh7IGhyZWYsIHRhc2tJZCwgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB0YWJTZWdtZW50ID0gZ2V0VGFiU2VnbWVudEZyb21IcmVmKGhyZWYpXG4gIGNvbnN0IHsgYnVpbGRPcGVuVGFzayB9ID0gdXNlVGFza1BhbmVsKHRhc2tJZCwgdGFiU2VnbWVudClcbiAgY29uc3Qgb3BlblRhc2sgPSBidWlsZE9wZW5UYXNrKClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIC8vIFNpIGVzIENtZC9DdHJsICsgY2xpY2ssIGRlamFyIHF1ZSBzZSBhYnJhIGVuIG51ZXZhIHBlc3Rhw7FhIChjb21wb3J0YW1pZW50byBwb3IgZGVmZWN0bylcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2soKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NUYXNrTGluayBocmVmPXtocmVmfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TQ1Rhc2tMaW5rPlxuICApXG59XG5cbi8vIEN1c3RvbSBsaW5rIGNvbXBvbmVudCBmb3IgU3RyZWFtZG93bjogdGFzayBVUkxzIG9wZW4gdGhlIHRhc2sgcGFuZWwsIG90aGVyIGxpbmtzIHJlbmRlciBub3JtYWxseVxudHlwZSBDdXN0b21MaW5rUHJvcHMgPSBSZWFjdC5BbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4gJiB7IG5vZGU/OiB1bmtub3duIH1cbmNvbnN0IEN1c3RvbUxpbms6IEZDPEN1c3RvbUxpbmtQcm9wcz4gPSAoeyBocmVmLCBjaGlsZHJlbiwgLi4ucmVzdCB9KSA9PiB7XG4gIGlmICghaHJlZiB8fCB0eXBlb2YgaHJlZiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4gIGNvbnN0IHRhc2tNYXRjaCA9IGhyZWYubWF0Y2gobmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOKSlcbiAgaWYgKHRhc2tNYXRjaCkge1xuICAgIGNvbnN0IHRhc2tJZCA9IHRhc2tNYXRjaFsxXVxuICAgIHJldHVybiAoXG4gICAgICA8VGFza0xpbmsgaHJlZj17aHJlZn0gdGFza0lkPXt0YXNrSWR9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s6IChmOiBGZWVkYmFjaykgPT4gdm9pZFxuICAgIGRpc2FibGVGZWVkYmFjazogRmVlZGJhY2sgfCBudWxsXG4gIH0pID0+IHtcbiAgICBjb25zdCBmcm9tQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoU3RyZWFtaW5nTWVzc2FnZUNvbnRleHQpXG4gICAgY29uc3QgZGlzcGxheVRleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IGZyb21Db250ZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIGNvbnN0IGRlYnVnQ291bnRSZWYgPSBSZWFjdC51c2VSZWYoMClcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiAmJiBwcm9wcy5pc1N0cmVhbWluZykge1xuICAgICAgZGVidWdDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZygnW1N0cmVhbWluZ01lc3NhZ2VCb2R5XSByZW5kZXInLCB7IGNvdW50OiBkZWJ1Z0NvdW50UmVmLmN1cnJlbnQsIGxlbjogZGlzcGxheVRleHQ/Lmxlbmd0aCB9KVxuICAgIH1cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtwcm9wcy5pc0Fzc2lzdGFudCAmJiBoYXNUYXNrTGlua3MoZGlzcGxheVRleHQpID8gJ2hhcy10YXNrLWxpbmtzJyA6ICcnfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgIGlzQW5pbWF0aW5nPXshIXByb3BzLmlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgPC9TQ0NBSU1lc3NhZ2VXcmFwcGVyPlxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmICFwcm9wcy5pc1N0cmVhbWluZyAmJiAoXG4gICAgICAgICAgPE1lc3NhZ2VGZWVkYmFja1xuICAgICAgICAgICAgY29udGVudD17ZGlzcGxheVRleHR9XG4gICAgICAgICAgICBzb3VyY2VzPXtwcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e3Byb3BzLmhhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e3Byb3BzLmRpc2FibGVGZWVkYmFja31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IE1lc3NhZ2VJdGVtID0gbWVtbygocHJvcHM6IE1lc3NhZ2VJdGVtUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHVzZXIsXG4gICAgbWVzc2FnZSxcbiAgICBpc1N0cmVhbWluZyxcbiAgICBpc0Vycm9yLFxuICAgIGF1dGhVc2VyLFxuICAgIG9wdGlvbnMsXG4gICAgaXNDaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGRpc2FibGVGZWVkYmFjayxcbiAgICByb2xlLFxuICAgIHNvdXJjZXMsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYXBwcm92YWwsXG4gICAgYXBwcm92YWxTdGF0dXMsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IFtwcmV2aWV3QXR0YWNobWVudCwgc2V0UHJldmlld0F0dGFjaG1lbnRdID0gdXNlU3RhdGU8QXR0YWNobWVudEZpbGUgfCBudWxsPihudWxsKVxuICBjb25zdCBpc0N1cnJlbnRVc2VyID0gcm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgdXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKVxuICBjb25zdCBpc0Fzc2lzdGFudCA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgdXNlci5pZCA9PT0gJ2Fzc2lzdGFudCdcblxuICAvLyBERUJVRyBzdHJlYW1pbmc6IHZlciByZS1yZW5kZXJzIHkgcmVtb3VudHMuIEhhYmlsaXRhciBjb24gd2luZG93Lk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiA9IHRydWVcbiAgY29uc3QgcmVuZGVyQ291bnRSZWYgPSB1c2VSZWYoMClcbiAgY29uc3QgcHJldk1lc3NhZ2VMZW5SZWYgPSB1c2VSZWY8bnVtYmVyPihtZXNzYWdlPy5sZW5ndGggPz8gMClcbiAgcmVuZGVyQ291bnRSZWYuY3VycmVudCArPSAxXG4gIGlmIChpc1N0cmVhbWluZyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSkuTUFJQV9ERUJVR19TVFJFQU1JTkdfUkVOREVSKSB7XG4gICAgY29uc3QgcHJldkxlbiA9IHByZXZNZXNzYWdlTGVuUmVmLmN1cnJlbnRcbiAgICBwcmV2TWVzc2FnZUxlblJlZi5jdXJyZW50ID0gbWVzc2FnZT8ubGVuZ3RoID8/IDBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKCdbTWVzc2FnZUl0ZW1dIHJlbmRlcicsIHtcbiAgICAgIG1lc3NhZ2VJZDogaWQsXG4gICAgICByZW5kZXJDb3VudDogcmVuZGVyQ291bnRSZWYuY3VycmVudCxcbiAgICAgIG1lc3NhZ2VMZW46IG1lc3NhZ2U/Lmxlbmd0aCxcbiAgICAgIHByZXZNZXNzYWdlTGVuOiBwcmV2TGVuLFxuICAgICAgaXNTdHJlYW1pbmc6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaG1lbnRDbGljayA9IChhdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSkgPT4ge1xuICAgIC8vIFBlcm1pdGlyIHByZXZpc3VhbGl6YWNpw7NuIHNpIHRpZW5lIGFyY2hpdm8gbG9jYWwgbyBVUkxzIGRlbCBiYWNrZW5kXG4gICAgaWYgKFxuICAgICAgYXR0YWNobWVudC5maWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC5vcmlnaW5hbEZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50LnVybF90aHVtYm5haWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9maWxlXG4gICAgKSB7XG4gICAgICBzZXRQcmV2aWV3QXR0YWNobWVudChhdHRhY2htZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlUHJldmlldyA9ICgpID0+IHtcbiAgICBzZXRQcmV2aWV3QXR0YWNobWVudChudWxsKVxuICB9XG5cbiAgaWYgKGlzQ2hhbmdlUHJvamVjdCAmJiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNZXNzYWdlV3JhcHBlciBrZXk9e2lkfSBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfSBkYXRhLW1lc3NhZ2UtaWQ9e2lkfSBoYXNGZWVkYmFjaz17ZmFsc2V9PlxuICAgICAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAge2lzQXNzaXN0YW50ICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgICAgIDxNZXNzYWdlQ29udGVudFdyYXBwZXJcbiAgICAgICAgICAgIGlzQ2hhbmdlUHJvamVjdD17aXNDaGFuZ2VQcm9qZWN0fVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZX1cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgbWVzc2FnZUV4dHJhQ29udGVudD17PE1lc3NhZ2VPcHRpb25zIG9wdGlvbnM9e29wdGlvbnMgYXMgYW55fSBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn0gLz59XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgICAgIDwvTWVzc2FnZVdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2tDbGljayA9IChmZWVkYmFjazogRmVlZGJhY2spID0+IHtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSBpZFxuICAgICAgLnNwbGl0KCctJylcbiAgICAgIC5maWx0ZXIocXVlc3Rpb25JZCA9PiBxdWVzdGlvbklkICE9PSAnYW5zd2VyJylcbiAgICAgIC5qb2luKCctJylcbiAgICBoYW5kbGVGZWVkYmFjaz8uKGZlZWRiYWNrLCBzZXNzaW9uSWQpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgIHtpc0Fzc2lzdGFudCAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgIDxTQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICAgIHshIShhdHRhY2htZW50cyB8fCBzb3VyY2VzKT8ubGVuZ3RoICYmICFpc0Fzc2lzdGFudCAmJiAoXG4gICAgICAgICAgPFNDQXR0YWNobWVudHNSb3c+XG4gICAgICAgICAgICB7KGF0dGFjaG1lbnRzIHx8IHNvdXJjZXMpPy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIC8vIERldGVjdGFyIHNpIGVzIHVuIGFyY2hpdm8gZGUgYXVkaW9cbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50Py50eXBlPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lID0gYXR0YWNobWVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBpc0F1ZGlvRmlsZSA9XG4gICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUuc3RhcnRzV2l0aCgnYXVkaW8vJykgfHxcbiAgICAgICAgICAgICAgICBbJ2ZsYWMnLCAnbTRhJywgJ21wMycsICdtcDQnLCAnb2dhJywgJ29nZycsICd3YXYnLCAnd2VibSddLmluY2x1ZGVzKGF0dGFjaG1lbnRUeXBlKSB8fFxuICAgICAgICAgICAgICAgIFsnLmZsYWMnLCAnLm00YScsICcubXAzJywgJy5tcDQnLCAnLm9nYScsICcub2dnJywgJy53YXYnLCAnLndlYm0nXS5zb21lKGV4dCA9PlxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudE5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICBpZiAoaXNBdWRpb0ZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEF0dGFjaG1lbnRDYXJkQXVkaW8ga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfSBhdHRhY2htZW50PXthdHRhY2htZW50fSAvPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QXR0YWNobWVudENhcmRcbiAgICAgICAgICAgICAgICAgIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUF0dGFjaG1lbnRDbGljayhhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDQXR0YWNobWVudHNSb3c+XG4gICAgICAgICl9XG4gICAgICAgIHthcHByb3ZhbCAmJiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMgJiYgKFxuICAgICAgICAgIDxTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgICAgIDxBcHByb3ZhbEJveFxuICAgICAgICAgICAgICBhY3Rpb25zPXthcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnN9XG4gICAgICAgICAgICAgIHN0YXR1cz17YXBwcm92YWxTdGF0dXN9XG4gICAgICAgICAgICAgIG9uQXBwcm92ZT17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAnYXBwcm92ZScpfVxuICAgICAgICAgICAgICBvblJlamVjdD17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAncmVqZWN0Jyl9XG4gICAgICAgICAgICAgIGlzUHJvamVjdERlbGV0ZWQ9e3Byb3BzLnByb2plY3RNZXRhZGF0YT8uaXNfZGVsZXRlZCA9PT0gdHJ1ZX1cbiAgICAgICAgICAgICAgaXNFeHBhbmRlZD17cHJvcHMuZXhwYW5kZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4+XG4gICAgICAgICl9XG4gICAgICAgIHsoISFtZXNzYWdlIHx8IGlzU3RyZWFtaW5nKSAmJiAhYXBwcm92YWwgJiYgKFxuICAgICAgICAgIDxTdHJlYW1pbmdNZXNzYWdlQm9keVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZSA/PyAnJ31cbiAgICAgICAgICAgIGlzU3RyZWFtaW5nPXshIWlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH1cbiAgICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgICBhcHByb3ZhbD17YXBwcm92YWx9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgc291cmNlcz17c291cmNlc31cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s9e2hhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e2Rpc2FibGVGZWVkYmFjayA/PyBudWxsfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgIDxBdHRhY2htZW50UHJldmlld01vZGFsXG4gICAgICAgIGlzT3Blbj17ISFwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VQcmV2aWV3fVxuICAgICAgICBhdHRhY2htZW50PXtwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgIC8+XG4gICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgKVxufSlcblxuY29uc3QgQ2hhdEFJTWVzc2FnZXNJbm5lciA9ICh7XG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgaW5pdGlhbENoYXRJZCxcbiAgb25FcnJvcixcbiAgb25TZW5kTWVzc2FnZVJlYWR5LFxuICBvblNjcm9sbFRvQm90dG9tLFxuICBhdHRhY2htZW50cyxcbiAgYWdlbnRzLFxuICBleHBhbmRlZCxcbn06IENoYXRBSU1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNoYXRJbml0aWFsaXplZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaXNMb2FkaW5nTW9yZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgdXNlclNjcm9sbGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsVGhyZXNob2xkUmVmID0gdXNlUmVmKDM5KVxuICBjb25zdCBsYXN0U2Nyb2xsVG9wUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNob3dTY3JvbGxUb0JvdHRvbVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2Nyb2xsUmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzaG93U2Nyb2xsVG9Cb3R0b20sIHNldFNob3dTY3JvbGxUb0JvdHRvbV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmID0gdXNlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7fSlcbiAgY29uc3Qgc3RyZWFtaW5nTWVzc2FnZUlkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3Qge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuICB9ID0gdXNlQ2hhdE1hbmFnZXIoe1xuICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCB1bmRlZmluZWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIG9uRXJyb3IsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYWdlbnRzLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGNoYW5nZVByb2plY3Qob3B0aW9uKVxuICAgIH0sXG4gICAgW2NoYW5nZVByb2plY3RdXG4gIClcblxuICBjb25zdCBoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvKHtcbiAgICAgICAgdG9wOiBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgfSlcbiAgICAgIC8vIEFjdHVhbGl6YXIgZXN0YWRvIGRlc3B1w6lzIGRlIHVuIGJyZXZlIGRlbGF5IHBhcmEgcGVybWl0aXIgcXVlIGVsIHNjcm9sbCBzZSBjb21wbGV0ZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgIH1cbiAgICAgIH0sIDUwMClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZVNjcm9sbFRvQm90dG9tID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LlVJRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBlLmN1cnJlbnRUYXJnZXRcblxuICAgICAgaWYgKHNjcm9sbFJhZlJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHNjcm9sbFJhZlJlZi5jdXJyZW50KVxuICAgICAgfVxuXG4gICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNjcm9sbFJhZlJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgfSA9IGNvbnRhaW5lclxuXG4gICAgICAgIGNvbnN0IGlzU2Nyb2xsaW5nVXAgPSBzY3JvbGxUb3AgPCBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAoaXNTY3JvbGxpbmdVcCkge1xuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMTVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzTmVhckJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodCA8IHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzTmVhckJvdHRvbSkge1xuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICAgICAgfVxuXG4gICAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9ICFpc05lYXJCb3R0b21cbiAgICAgICAgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50ID0gc2Nyb2xsVG9wXG5cbiAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICBjb25zdCBkaWRTZXRTdGF0ZSA9IHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ICE9PSBzaG91bGRTaG93XG4gICAgICAgIGlmIChkaWRTZXRTdGF0ZSkge1xuICAgICAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmVhckJvdHRvbSAmJiBvblNjcm9sbFRvQm90dG9tKSB7XG4gICAgICAgICAgb25TY3JvbGxUb0JvdHRvbSgpXG4gICAgICAgIH1cblxuICAgICAgICBoYW5kbGVTY3JvbGwoY29udGFpbmVyKVxuICAgICAgfSlcbiAgICB9LFxuICAgIFtvblNjcm9sbFRvQm90dG9tLCBoYW5kbGVTY3JvbGxdXG4gIClcblxuICAvLyByZWZzIHRvIHN0YWJpbGl6ZSBmdW5jdGlvbnMgYW5kIGF2b2lkIHVubmVjZXNzYXJ5IHJlLXJlbmRlcnNcbiAgY29uc3Qgc2VuZE1lc3NhZ2VSZWYgPSB1c2VSZWYoc2VuZE1lc3NhZ2UpXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uUmVmID0gdXNlUmVmKHN0b3BHZW5lcmF0aW9uKVxuICBjb25zdCBvblNlbmRNZXNzYWdlUmVhZHlSZWYgPSB1c2VSZWYob25TZW5kTWVzc2FnZVJlYWR5KVxuXG4gIC8vIHVwZGF0ZSByZWZzIHdoZW4gZnVuY3Rpb25zIGNoYW5nZVxuICBzZW5kTWVzc2FnZVJlZi5jdXJyZW50ID0gc2VuZE1lc3NhZ2VcbiAgc3RvcEdlbmVyYXRpb25SZWYuY3VycmVudCA9IHN0b3BHZW5lcmF0aW9uXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50ID0gb25TZW5kTWVzc2FnZVJlYWR5XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQpIHtcbiAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KHNlbmRNZXNzYWdlUmVmLmN1cnJlbnQsIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQsIHdhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCA9IGlzTG9hZGluZ01vcmVNZXNzYWdlc1xuICB9LCBbaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSlcblxuICAvLyBDdWFuZG8gZWwgYWdlbnRlIGVtcGllemEgYSByZXNwb25kZXIsIHJlc2V0ZWFyIGVsIGZsYWcgeSBlbCB1bWJyYWwgcGFyYSBhY3RpdmFyIGVsIGF1dG8tc2Nyb2xsXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdhaXRpbmdSZXNwb25zZSkge1xuICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2VdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBpbml0aWFsaXplQ2hhdCgpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBTY3JvbGwgY3VhbmRvIGxsZWdhIHVuIG1lbnNhamUgZGUgYXByb2JhY2nDs24gKEFwcHJvdmFsQm94KS4gU2luIFJlc2l6ZU9ic2VydmVyIGVuIGVsXG4gIC8vIGNvbnRlbmVkb3I6IG9ic2VydmFybG8gZGlzcGFyYWJhIGNhbGxiYWNrcyBhbCBjYW1iaWFyIGVsIGxheW91dC9zY3JvbGxiYXIgeSBjYWRhIHVub1xuICAvLyBsbGFtYWJhIHNjcm9sbFRvQm90dG9tKCksIHByb3ZvY2FuZG8gdGlyb25lcyBhbCBzY3JvbGxlYXIuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50IHx8IGxvYWRpbmdNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgaGFzQXBwcm92YWwgPSBsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYXBwcm92YWwtJykgfHwgISFsYXN0TWVzc2FnZS5hcHByb3ZhbClcblxuICAgIGlmICghaGFzQXBwcm92YWwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wIDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxMDBcblxuICAgIGlmICghKGlzQXRCb3R0b20gfHwgIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBzY3JvbGxUb0JvdHRvbSA9ICgpID0+IHtcbiAgICAgIGlmIChtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHRcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZWN1ZW5jaWEgaW5pY2lhbCBkZSBzY3JvbGwgcGFyYSBjdWFuZG8gZWwgQXBwcm92YWxCb3ggYWNhYmEgZGUgcmVuZGVyaXphcnNlXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHNjcm9sbFRvQm90dG9tKClcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgc2V0VGltZW91dChzY3JvbGxUb0JvdHRvbSwgMTAwKVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbbWVzc2FnZXMsIGxvYWRpbmdNZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFNpIGVsIHVzdWFyaW8gZXN0w6Egc2Nyb2xsZWFuZG8gbWFudWFsbWVudGUsIG5vIGhhY2VyIGF1dG8gc2Nyb2xsXG4gICAgaWYgKHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCAmJiB3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQgfHwgbG9hZGluZ01lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cblxuICAgIGNvbnN0IGlzTmV3QW5zd2VyTWVzc2FnZSA9IGxhc3RNZXNzYWdlICYmIGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2Fuc3dlci0nKVxuICAgIGNvbnN0IGlzTmV3VXNlck1lc3NhZ2UgPSBsYXN0TWVzc2FnZSAmJiBsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdxdWVzdGlvbi0nKVxuICAgIGNvbnN0IGlzTmV3QXBwcm92YWxNZXNzYWdlID0gbGFzdE1lc3NhZ2UgJiYgKGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ2FwcHJvdmFsLScpIHx8ICEhbGFzdE1lc3NhZ2UuYXBwcm92YWwpXG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wIDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxMDBcbiAgICBjb25zdCBoYXNNZXNzYWdlcyA9ICEhbWVzc2FnZXMubGVuZ3RoXG4gICAgY29uc3QgaXNOb3RJbml0aWFsTWVzc2FnZSA9ICFtZXNzYWdlcy5zb21lKG1zZyA9PiBtc2cuaWQgPT09ICd1c2VyLWluaXRpYWwtbWVzc2FnZScpXG5cbiAgICBpZiAoKGlzTmV3QW5zd2VyTWVzc2FnZSB8fCBpc05ld1VzZXJNZXNzYWdlIHx8IGlzTmV3QXBwcm92YWxNZXNzYWdlKSAmJiBpc0F0Qm90dG9tKSB7XG4gICAgICAvLyBQYXJhIG1lbnNhamVzIGRlIGFwcm9iYWNpw7NuLCB1c2FyIHVuIHBlcXVlw7FvIGRlbGF5IHBhcmEgYXNlZ3VyYXIgcXVlIGVsIEFwcHJvdmFsQm94IHNlIGhheWEgcmVuZGVyaXphZG9cbiAgICAgIGNvbnN0IHNjcm9sbERlbGF5ID0gaXNOZXdBcHByb3ZhbE1lc3NhZ2UgPyAxMDAgOiAwXG4gICAgICBjb25zdCBkb1Njcm9sbCA9ICgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBpZiAobWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZiAoc2Nyb2xsRGVsYXkgPiAwKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZG9TY3JvbGwsIHNjcm9sbERlbGF5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9TY3JvbGwoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBoYXNNZXNzYWdlcyAmJlxuICAgICAgaXNOb3RJbml0aWFsTWVzc2FnZSAmJlxuICAgICAgIWlzTmV3QW5zd2VyTWVzc2FnZSAmJlxuICAgICAgIWlzTmV3VXNlck1lc3NhZ2UgJiZcbiAgICAgICFpc05ld0FwcHJvdmFsTWVzc2FnZVxuICAgICkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0XG4gICAgICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9LCBbbWVzc2FnZXMsIGxvYWRpbmdNZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCB3YWl0aW5nUmVzcG9uc2VdKVxuXG4gIC8vIFZlcmlmaWNhciBlbCBlc3RhZG8gaW5pY2lhbCBkZWwgc2Nyb2xsXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2VzUmVmLmN1cnJlbnQgJiYgIWxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcbiAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgICAgY29uc3Qgc2hvdWxkU2hvdyA9IGRpc3RhbmNlRnJvbUJvdHRvbSA+IDUwXG4gICAgICBzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCA9IHNob3VsZFNob3dcbiAgICAgIHNldFNob3dTY3JvbGxUb0JvdHRvbShzaG91bGRTaG93KVxuICAgIH1cbiAgfSwgW2xvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMubGVuZ3RoXSlcblxuICAvLyBPYnRlbmVyIGVsIMO6bHRpbW8gbWVuc2FqZSBkZWwgdXN1YXJpbyBwYXJhIHZlcmlmaWNhciBzaSB0aWVuZSBhdHRhY2htZW50c1xuICBjb25zdCBsYXN0VXNlck1lc3NhZ2UgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIobXNnID0+IG1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCBtc2cudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSlcbiAgICAuYXQoLTEpXG5cbiAgY29uc3QgaGFzQXR0YWNobWVudHMgPVxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uYXR0YWNobWVudHMpICYmIGxhc3RVc2VyTWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGgpIHx8XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5zb3VyY2VzKSAmJiBsYXN0VXNlck1lc3NhZ2Uuc291cmNlcy5sZW5ndGgpXG5cbiAgY29uc3QgaXNTY3JvbGxPblBhcmVudCA9ICEhZXhwYW5kZWRcblxuICAvLyBERUJVRyBzdHJlYW1pbmc6IHJlLXJlbmRlcnMgZGVsIGNvbnRlbmVkb3IuIEhhYmlsaXRhciBjb24gd2luZG93Lk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUiA9IHRydWVcbiAgY29uc3QgbGlzdFJlbmRlckNvdW50UmVmID0gdXNlUmVmKDApXG4gIGlmICgod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZykgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKHdpbmRvdyBhcyBhbnkpLk1BSUFfREVCVUdfU1RSRUFNSU5HX1JFTkRFUikge1xuICAgIGxpc3RSZW5kZXJDb3VudFJlZi5jdXJyZW50ICs9IDFcbiAgICBjb25zdCBsYXN0TXNnID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICBjb25zdCBsYXN0S2V5ID0gbGFzdE1zZz8uaWQgPz8gYG1zZy0ke21lc3NhZ2VzLmxlbmd0aCAtIDF9YFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ1tDaGF0QUlNZXNzYWdlc10gcmVuZGVyJywge1xuICAgICAgY291bnQ6IGxpc3RSZW5kZXJDb3VudFJlZi5jdXJyZW50LFxuICAgICAgbGFzdE1lc3NhZ2VLZXk6IGxhc3RLZXksXG4gICAgICBsYXN0TWVzc2FnZUxlbjogbGFzdE1zZz8ubWVzc2FnZT8ubGVuZ3RoID8/IDAsXG4gICAgICBtZXNzYWdlc0NvdW50OiBtZXNzYWdlcy5sZW5ndGgsXG4gICAgfSlcbiAgfVxuXG4gIC8vIEFsIGV4cGFuZGlyL2NvbnRyYWVyIGVsIG1vZGFsIGVsIHJlZiBwYXNhIGEgb3RybyBjb250ZW5lZG9yIChzY3JvbGxUb3Agc2UgcmVzZXRlYSBhIDApLlxuICAvLyBSZXN0YXVyYXIgbGEgcG9zaWNpw7NuIGRlIHNjcm9sbCBhbnRlcyBkZWwgcGFpbnQgcGFyYSBldml0YXIgcXVlIGxhIGNvbnZlcnNhY2nDs24gc2FsdGUgYXJyaWJhLlxuICBjb25zdCBleHBhbmRlZFJlZiA9IHVzZVJlZihleHBhbmRlZClcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXhwYW5kZWRSZWYuY3VycmVudCAhPT0gZXhwYW5kZWQgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxUb3AgPSBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnRcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gc2F2ZWRTY3JvbGxUb3BcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH0gZWxzZSB7XG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9XG4gIH0sIFtleHBhbmRlZF0pXG5cbiAgY29uc3QgbGFzdE1zZyA9IG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gIGNvbnN0IGlzU3RyZWFtaW5nQWN0aXZlID1cbiAgICAod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZykgJiZcbiAgICBsYXN0TXNnICYmXG4gICAgKGxhc3RNc2cucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCBsYXN0TXNnLnVzZXI/LmlkID09PSAnYXNzaXN0YW50JylcbiAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IGlzU3RyZWFtaW5nQWN0aXZlID8gKGxhc3RNc2cubWVzc2FnZSA/PyAnJykgOiAnJ1xuXG4gIGlmIChsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICByZXR1cm4gPExvYWRlciAvPlxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXNDb250ZW50ID0gKFxuICAgIDw+XG4gICAgICB7aXNMb2FkaW5nTW9yZU1lc3NhZ2VzICYmIDxMb2FkaW5nVGV4dCB0ZXh0PXt0KCdjaGF0LmxvYWRpbmdNb3JlJyl9IC8+fVxuICAgICAgPFN0cmVhbWluZ01lc3NhZ2VDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzdHJlYW1pbmdUZXh0fT5cbiAgICAgICAge21lc3NhZ2VzLm1hcCgobWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKG1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aCB8fCBtZXNzYWdlLnNvdXJjZXM/Lmxlbmd0aCkgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLm1lc3NhZ2UgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLnByb2plY3Q/Lm5hbWUgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLmFwcHJvdmFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICBjb25zdCBtZXNzYWdlRmVlZGJhY2sgPVxuICAgICAgICAgICAgbWVzc2FnZT8ud2FzSGVscGZ1bCA9PT0gdW5kZWZpbmVkIHx8IG1lc3NhZ2Uud2FzSGVscGZ1bCA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiBtZXNzYWdlLndhc0hlbHBmdWxcbiAgICAgICAgICAgICAgICA/IEZlZWRiYWNrLlRIVU1CU19VUFxuICAgICAgICAgICAgICAgIDogRmVlZGJhY2suVEhVTUJTX0RPV05cblxuICAgICAgICAgIGNvbnN0IGlzQXNzaXN0YW50TWVzc2FnZSA9IG1lc3NhZ2Uucm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCBtZXNzYWdlLnVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gICAgICAgICAgY29uc3QgaXNMYXN0TWVzc2FnZSA9IGluZGV4ID09PSBtZXNzYWdlcy5sZW5ndGggLSAxXG4gICAgICAgICAgY29uc3QgaXNTdHJlYW1pbmcgPSBpc0Fzc2lzdGFudE1lc3NhZ2UgJiYgaXNMYXN0TWVzc2FnZSAmJiAod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZylcblxuICAgICAgICAgIC8vIEtleSBlc3RhYmxlOiBzb2xvIG1lc3NhZ2UuaWQgcGFyYSBldml0YXIgcmVtb3VudCBkdXJhbnRlIHN0cmVhbWluZyAobWVzc2FnZS5kYXRlIHB1ZWRlIGNhbWJpYXIpXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUtleSA9IG1lc3NhZ2UuaWQgPz8gYG1zZy0ke2luZGV4fWBcblxuICAgICAgICAgIGlmIChpc1N0cmVhbWluZykge1xuICAgICAgICAgICAgaWYgKHN0cmVhbWluZ01lc3NhZ2VJZFJlZi5jdXJyZW50ICE9PSBtZXNzYWdlLmlkKSB7XG4gICAgICAgICAgICAgIHN0cmVhbWluZ01lc3NhZ2VJZFJlZi5jdXJyZW50ID0gbWVzc2FnZS5pZCA/PyBudWxsXG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICB7IG1lc3NhZ2U6IHVuZGVmaW5lZCB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGF1dGhVc2VyLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgICAgICAgICAgICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrOiBtZXNzYWdlRmVlZGJhY2ssXG4gICAgICAgICAgICAgICAgICBpc1N0cmVhbWluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGVkLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDxNZXNzYWdlSXRlbSBrZXk9e21lc3NhZ2VLZXl9IHsuLi4oc3RyZWFtaW5nTWVzc2FnZVByb3BzUmVmLmN1cnJlbnQgYXMgTWVzc2FnZUl0ZW1Qcm9wcyl9IC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0cmVhbWluZ01lc3NhZ2VJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWVzc2FnZUl0ZW1cbiAgICAgICAgICAgICAgey4uLm1lc3NhZ2V9XG4gICAgICAgICAgICAgIGtleT17bWVzc2FnZUtleX1cbiAgICAgICAgICAgICAgYXV0aFVzZXI9e2F1dGhVc2VyfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn1cbiAgICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e2hhbmRsZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uPXtoYW5kbGVBcHByb3ZhbERlY2lzaW9ufVxuICAgICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e21lc3NhZ2VGZWVkYmFja31cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2ZhbHNlfVxuICAgICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICA8L1N0cmVhbWluZ01lc3NhZ2VDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgeyh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UgfHwgT2JqZWN0LmtleXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgPFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgICAgIHtPYmplY3Qua2V5cyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIDxMb2FkaW5nVGV4dFxuICAgICAgICAgICAgICBrZXk9XCJsb2FkaW5nLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIHRleHQ9e1xuICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmZpbmQobXNnID0+IG1zZyAhPT0gdCgnY2hhdC5wcm9jZXNzaW5nJykpIHx8IHQoJ2NoYXQucHJvY2Vzc2luZycpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UpICYmIChcbiAgICAgICAgICAgICAgPExvYWRpbmdUZXh0XG4gICAgICAgICAgICAgICAgdGV4dD17XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nTWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgKGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gJ0J1c2NhbmRvIGVuIGxhIHdlYidcbiAgICAgICAgICAgICAgICAgICAgOiBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKVxuICAgICAgICAgICAgICAgICAgICAgIDogaGFzQXR0YWNobWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoYXQuZ2VuZXJhdGluZycpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZXNPdXRlciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9PlxuICAgICAge2lzU2Nyb2xsT25QYXJlbnQgPyAoXG4gICAgICAgIDxTQ01lc3NhZ2VzU2Nyb2xsIHJlZj17bWVzc2FnZXNSZWZ9IG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX0+XG4gICAgICAgICAgPFNDTWVzc2FnZXNJbm5lciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9PnttZXNzYWdlc0NvbnRlbnR9PC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgcmVmPXttZXNzYWdlc1JlZn0gb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfSAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfT5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQVFDLElBQUksRUFBYUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUFDLGFBQUEsSUFBQUMsY0FBQSxRQUFRLE9BQU87QUFDN0csU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFFcEYsU0FBc0JDLGVBQWUsUUFBa0IscUJBQXFCO0FBRTVFLFNBQWtCQyxPQUFPLFFBQVEsMkJBQTJCO0FB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
|