@projectcor/maia-components 2.11.59-4 → 2.11.59-6
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/App.js +2 -6
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +3 -11
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +2 -2
- package/lib/components/atoms/icons/index.js +1 -2
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +11 -6
- package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +30 -19
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
- package/lib/components/molecules/AbmSection/index.js +1 -2
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +8 -16
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +19 -20
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
- package/lib/components/molecules/ChatAIModal/constants.js +2 -6
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +2 -2
- package/lib/components/molecules/ChatFooter/ChatFooter.js +1 -1
- package/lib/components/molecules/Sidebar/Sidebar.js +37 -59
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +11 -15
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +50 -264
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
- package/lib/components/organisms/ChatAI/ChatAI.js +7 -3
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +2 -10
- package/lib/context/global-context.js +3 -2
- package/lib/hooks/useAgentModel/useCreateAgent.js +10 -11
- package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -12
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +9 -4
- package/lib/hooks/useContextMentions.js +6 -16
- package/lib/hooks/useMentionAllowedTypes.js +6 -38
- package/lib/hooks/useMentionPopover.js +16 -30
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
- package/lib/lang/br/index.js +1 -519
- package/lib/lang/en/index.js +1 -519
- package/lib/lang/es/index.js +1 -519
- package/lib/lang/fr/index.js +2 -251
- package/lib/services/maia/Agents/createAgent.js +1 -1
- package/lib/services/maia/Agents/getAgentById.js +2 -3
- package/lib/services/maia/Agents/getAgentModels.js +8 -3
- package/lib/services/maia/Agents/updateAgent.js +1 -1
- package/lib/services/maia/Orchestrator/orchestrator.js +18 -3
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/types/agentModal.js +1 -1
- package/package.json +1 -1
- package/lib/components/atoms/icons/RocketIcon.js +0 -31
- package/lib/components/atoms/icons/WrenchIcon.js +0 -42
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +0 -522
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +0 -234
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +0 -437
- package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +0 -3
- package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +0 -80
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.interface.js +0 -2
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +0 -722
- package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +0 -165
- package/lib/components/molecules/AbmSection/AbmTriggersSection/index.js +0 -2
- package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.js +0 -486
- package/lib/components/molecules/ChatAIMyRoutines/ChatAIMyRoutines.styles.js +0 -184
- package/lib/components/molecules/ChatAIMyRoutines/index.js +0 -2
- package/lib/components/molecules/SchedulesPage/SchedulesPage.js +0 -610
- package/lib/components/molecules/SchedulesPage/index.js +0 -2
- package/lib/components/molecules/SkillsPage/SkillsPage.js +0 -708
- package/lib/components/molecules/SkillsPage/index.js +0 -2
- package/lib/components/molecules/maiaSectionModalStyles.js +0 -91
- package/lib/components/molecules/maiaSectionUiTokens.js +0 -31
- package/lib/dev/DevAbmAgentModal.js +0 -114
- package/lib/dev/mocks/abmModalMocks.js +0 -193
- package/lib/services/maia/Agents/connectors.js +0 -110
- package/lib/services/maia/Agents/skills.js +0 -164
- package/lib/services/maia/Schedules/createSchedule.js +0 -39
- package/lib/services/maia/Schedules/deleteSchedule.js +0 -36
- package/lib/services/maia/Schedules/getMySchedules.js +0 -55
- package/lib/services/maia/Schedules/getSchedules.js +0 -58
- package/lib/services/maia/Schedules/index.js +0 -5
- package/lib/types/agentSkill.js +0 -2
- package/lib/types/attachment.js +0 -2
|
@@ -62,11 +62,7 @@ var detectMentionTrigger = function detectMentionTrigger(editorEl, range) {
|
|
|
62
62
|
anchor: null
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
|
|
66
|
-
// Detectar si hay '/' inmediatamente después del run de @ (e.g. "@/" o "@@/")
|
|
67
|
-
var hasSlashSuffix = text[runEnd + 1] === '/';
|
|
68
|
-
var queryStart = hasSlashSuffix ? runEnd + 2 : runEnd + 1;
|
|
69
|
-
var query = text.slice(queryStart, caret);
|
|
65
|
+
var query = text.slice(runEnd + 1, caret);
|
|
70
66
|
if (/\n|\r/.test(query)) {
|
|
71
67
|
return {
|
|
72
68
|
active: false,
|
|
@@ -83,12 +79,10 @@ var detectMentionTrigger = function detectMentionTrigger(editorEl, range) {
|
|
|
83
79
|
anchor: null
|
|
84
80
|
};
|
|
85
81
|
}
|
|
86
|
-
|
|
87
|
-
// Triggers con slash usan atRunLength negativo: -1 = @/, -2 = @@/
|
|
88
82
|
return {
|
|
89
83
|
active: true,
|
|
90
84
|
query: query,
|
|
91
|
-
atRunLength:
|
|
85
|
+
atRunLength: atRunLength,
|
|
92
86
|
anchor: {
|
|
93
87
|
node: node,
|
|
94
88
|
offset: runStart
|
|
@@ -236,8 +230,7 @@ export var useContextMentions = function useContextMentions() {
|
|
|
236
230
|
* Ej.: `@@abc` -> `@abc` al cambiar de tab.
|
|
237
231
|
*/
|
|
238
232
|
var syncTriggerAtRunLength = useCallback(function (nextAtRunLength) {
|
|
239
|
-
var
|
|
240
|
-
var safeNext = Math.max(1, Math.floor(Math.abs(nextAtRunLength)));
|
|
233
|
+
var safeNext = Math.max(1, Math.floor(nextAtRunLength));
|
|
241
234
|
var current = detectTrigger();
|
|
242
235
|
if (!current.active || !current.anchor) return;
|
|
243
236
|
var _current$anchor = current.anchor,
|
|
@@ -246,13 +239,10 @@ export var useContextMentions = function useContextMentions() {
|
|
|
246
239
|
if (node.nodeType !== Node.TEXT_NODE) return;
|
|
247
240
|
var textNode = node;
|
|
248
241
|
var full = textNode.data;
|
|
249
|
-
|
|
250
|
-
var currentRunLen = Math.abs(current.atRunLength);
|
|
251
|
-
var currentHasSlash = current.atRunLength < 0;
|
|
252
|
-
var queryLen = currentRunLen + (currentHasSlash ? 1 : 0) + current.query.length;
|
|
242
|
+
var queryLen = current.atRunLength + current.query.length;
|
|
253
243
|
var before = full.slice(0, offset);
|
|
254
244
|
var after = full.slice(offset + queryLen);
|
|
255
|
-
var nextRun =
|
|
245
|
+
var nextRun = '@'.repeat(safeNext);
|
|
256
246
|
var nextValue = "".concat(before).concat(nextRun).concat(current.query).concat(after);
|
|
257
247
|
|
|
258
248
|
// eslint-disable-next-line no-param-reassign
|
|
@@ -421,4 +411,4 @@ export var useContextMentions = function useContextMentions() {
|
|
|
421
411
|
focus: focus
|
|
422
412
|
};
|
|
423
413
|
};
|
|
424
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZVN0YXRlIiwic2VyaWFsaXplTWVudGlvbiIsInNlcmlhbGl6ZVNsYXNoQ29tbWFuZCIsImRldGVjdE1lbnRpb25UcmlnZ2VyIiwiZWRpdG9yRWwiLCJyYW5nZSIsImNvbnRhaW5zIiwic3RhcnRDb250YWluZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiYW5jaG9yIiwibm9kZSIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsInRleHQiLCJkYXRhIiwiY2FyZXQiLCJzdGFydE9mZnNldCIsImkiLCJydW5FbmQiLCJydW5TdGFydCIsInByZXYiLCJjaGFyQXQiLCJpc0JvdW5kYXJ5IiwidGVzdCIsImhhc1NsYXNoU3VmZml4IiwicXVlcnlTdGFydCIsInNsaWNlIiwiaW5jbHVkZXMiLCJvZmZzZXQiLCJkZXRlY3RTbGFzaFRyaWdnZXIiLCJzbGFzaEluZGV4IiwidXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidHJpZ2dlciIsInNldFRyaWdnZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNsYXNoVHJpZ2dlciIsInNldFNsYXNoVHJpZ2dlciIsImRldGVjdFRyaWdnZXIiLCJzZWxlY3Rpb24iLCJ3aW5kb3ciLCJnZXRTZWxlY3Rpb24iLCJyYW5nZUNvdW50IiwiY3VycmVudCIsImdldFJhbmdlQXQiLCJkZXRlY3RTbGFzaCIsInVwZGF0ZVRyaWdnZXIiLCJuZXh0IiwiY2xvc2VUcmlnZ2VyIiwidXBkYXRlU2xhc2hUcmlnZ2VyIiwiY2xvc2VTbGFzaFRyaWdnZXIiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwibmV4dEF0UnVuTGVuZ3RoIiwibmV4dEhhc1NsYXNoIiwic2FmZU5leHQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJhYnMiLCJfY3VycmVudCRhbmNob3IiLCJ0ZXh0Tm9kZSIsImZ1bGwiLCJjdXJyZW50UnVuTGVuIiwiY3VycmVudEhhc1NsYXNoIiwicXVlcnlMZW4iLCJsZW5ndGgiLCJiZWZvcmUiLCJhZnRlciIsIm5leHRSdW4iLCJjb25jYXQiLCJyZXBlYXQiLCJuZXh0VmFsdWUiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwiY2FyZXRPZmZzZXQiLCJzZXRTdGFydCIsIm1pbiIsImNvbGxhcHNlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJ1cGRhdGVkIiwicmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCIsImNoaXBOb2RlIiwibWVudGlvbiIsIl9jdXJyZW50JGFuY2hvcjIiLCJzZXRBdHRyaWJ1dGUiLCJTdHJpbmciLCJpZCIsInR5cGUiLCJsYWJlbCIsInBhcmVudCIsInBhcmVudE5vZGUiLCJzcGFjZU5vZGUiLCJjcmVhdGVUZXh0Tm9kZSIsImluc2VydEJlZm9yZSIsIm5leHRTaWJsaW5nIiwicmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwIiwic2xhc2hDb21tYW5kIiwiX2N1cnJlbnQkYW5jaG9yMyIsInRyaWdnZXJMZW4iLCJzZXJpYWxpemUiLCJlbCIsIm1lbnRpb25zIiwic2xhc2hDb21tYW5kcyIsIndhbGsiLCJFTEVNRU5UX05PREUiLCJfZWxOb2RlJGRhdGFzZXQiLCJfZWxOb2RlJGRhdGFzZXQyIiwiZWxOb2RlIiwiZGF0YXNldCIsIl9lbE5vZGUkZGF0YXNldCRtZW50aSIsIl9yZWYiLCJfcmVmMiIsIl9lbE5vZGUkZGF0YXNldCRtZW50aTIiLCJtZW50aW9uSWQiLCJtZW50aW9uVHlwZSIsIm1lbnRpb25MYWJlbCIsInRleHRDb250ZW50IiwicHVzaCIsIl9lbE5vZGUkZGF0YXNldCRzbGFzaCIsIl9yZWYzIiwiX2VsTm9kZSRkYXRhc2V0JHNsYXNoMiIsIl9lbE5vZGUkdGV4dENvbnRlbnQiLCJzbGFzaCIsInNsYXNoSWQiLCJzbGFzaExhYmVsIiwicmVwbGFjZSIsInRhZ05hbWUiLCJjaGlsZE5vZGVzIiwiZm9yRWFjaCIsImNsZWFyIiwiaW5uZXJIVE1MIiwiZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQ29udGV4dE1lbnRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgc2VyaWFsaXplTWVudGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IHNlcmlhbGl6ZVNsYXNoQ29tbWFuZCB9IGZyb20gJy4uL3V0aWxzL3NsYXNoQ29tbWFuZE1hcmtlcidcbmltcG9ydCB0eXBlIHsgU2xhc2hDb21tYW5kQ2hpcERhdGEgfSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL1NsYXNoQ29tbWFuZENoaXAvYnVpbGRTbGFzaENoaXBFbGVtZW50J1xuXG5leHBvcnQgdHlwZSBNZW50aW9uVHJpZ2dlclN0YXRlID0ge1xuICBhY3RpdmU6IGJvb2xlYW5cbiAgcXVlcnk6IHN0cmluZ1xuICAvKiogQ2FudGlkYWQgZGUgYEBgIGNvbnNlY3V0aXZvcyBkZWwgdHJpZ2dlciAoYEBgIOKGkiAxLCBgQEBgIOKGkiAyKS4gTWFwZWEgYSBsYSB0YWIgZW4gb3JkZW4uICovXG4gIGF0UnVuTGVuZ3RoOiBudW1iZXJcbiAgLyoqIFBvc2ljacOzbiBkZWwgcHJpbWVyIGBAYCBkZWwgcnVuIChyZWVtcGxhem8gZGVsIGNoaXApLiAqL1xuICBhbmNob3I6IHsgbm9kZTogTm9kZTsgb2Zmc2V0OiBudW1iZXIgfSB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgU2xhc2hUcmlnZ2VyU3RhdGUgPSB7XG4gIGFjdGl2ZTogYm9vbGVhblxuICBxdWVyeTogc3RyaW5nXG4gIGFuY2hvcjogeyBub2RlOiBOb2RlOyBvZmZzZXQ6IG51bWJlciB9IHwgbnVsbFxufVxuXG4vKipcbiAqIEluc3BlY2Npb25hIGxhIHNlbGVjY2nDs24gYWN0dWFsLiBGb3JtYXRvOiBbbMOtbWl0ZSBkZSBwYWxhYnJhXSBAKyBxdWVyeSBoYXN0YSBlbCBjYXJldC5cbiAqIFBlcm1pdGUgZXNwYWNpb3Mgc2ltcGxlcyBkZW50cm8gZGVsIHF1ZXJ5IChwLiBlai4gXCJASnVhbiBQZXJlelwiKSB5IGNpZXJyYVxuICogZWwgdHJpZ2dlciBjdWFuZG8gZGV0ZWN0YSBkb3MgZXNwYWNpb3MgY29uc2VjdXRpdm9zLlxuICogTGEgdGFiIG9iamV0aXZvIGVzIGxhIHF1ZSBjb3JyZXNwb25kZSBhbCBuw7ptZXJvIGRlIGBAYCAoMSA9IHByaW1lcmEgdGFiIHZpc2libGUsIGV0Yy4pLlxuICovXG5jb25zdCBkZXRlY3RNZW50aW9uVHJpZ2dlciA9IChlZGl0b3JFbDogSFRNTEVsZW1lbnQgfCBudWxsLCByYW5nZTogUmFuZ2UpOiBNZW50aW9uVHJpZ2dlclN0YXRlID0+IHtcbiAgaWYgKCFlZGl0b3JFbCB8fCAhZWRpdG9yRWwuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXJcbiAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCB0ZXh0ID0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICBjb25zdCBjYXJldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0XG4gIGxldCBpID0gY2FyZXQgLSAxXG4gIGlmIChpIDwgMCkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gIT09ICdAJykgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSAnQCcpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3QgcnVuRW5kID0gaVxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gPT09ICdAJykge1xuICAgIGkgLT0gMVxuICB9XG4gIGNvbnN0IHJ1blN0YXJ0ID0gaSArIDFcbiAgY29uc3QgYXRSdW5MZW5ndGggPSBydW5FbmQgLSBydW5TdGFydCArIDFcbiAgY29uc3QgcHJldiA9IHJ1blN0YXJ0ID4gMCA/IHRleHQuY2hhckF0KHJ1blN0YXJ0IC0gMSkgOiAnJ1xuICBjb25zdCBpc0JvdW5kYXJ5ID0gIXByZXYgfHwgL1tcXHMoW3tdLy50ZXN0KHByZXYpXG4gIGlmICghaXNCb3VuZGFyeSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICAvLyBEZXRlY3RhciBzaSBoYXkgJy8nIGlubWVkaWF0YW1lbnRlIGRlc3B1w6lzIGRlbCBydW4gZGUgQCAoZS5nLiBcIkAvXCIgbyBcIkBAL1wiKVxuICBjb25zdCBoYXNTbGFzaFN1ZmZpeCA9IHRleHRbcnVuRW5kICsgMV0gPT09ICcvJ1xuICBjb25zdCBxdWVyeVN0YXJ0ID0gaGFzU2xhc2hTdWZmaXggPyBydW5FbmQgKyAyIDogcnVuRW5kICsgMVxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2UocXVlcnlTdGFydCwgY2FyZXQpXG5cbiAgaWYgKC9cXG58XFxyLy50ZXN0KHF1ZXJ5KSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgaWYgKHF1ZXJ5LmluY2x1ZGVzKCcgICcpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIC8vIFRyaWdnZXJzIGNvbiBzbGFzaCB1c2FuIGF0UnVuTGVuZ3RoIG5lZ2F0aXZvOiAtMSA9IEAvLCAtMiA9IEBAL1xuICByZXR1cm4ge1xuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBxdWVyeSxcbiAgICBhdFJ1bkxlbmd0aDogaGFzU2xhc2hTdWZmaXggPyAtYXRSdW5MZW5ndGggOiBhdFJ1bkxlbmd0aCxcbiAgICBhbmNob3I6IHsgbm9kZSwgb2Zmc2V0OiBydW5TdGFydCB9LFxuICB9XG59XG5cbmNvbnN0IGRldGVjdFNsYXNoVHJpZ2dlciA9IChlZGl0b3JFbDogSFRNTEVsZW1lbnQgfCBudWxsLCByYW5nZTogUmFuZ2UpOiBTbGFzaFRyaWdnZXJTdGF0ZSA9PiB7XG4gIGlmICghZWRpdG9yRWwgfHwgIWVkaXRvckVsLmNvbnRhaW5zKHJhbmdlLnN0YXJ0Q29udGFpbmVyKSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuICBjb25zdCBub2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXJcbiAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGNvbnN0IHRleHQgPSAobm9kZSBhcyBUZXh0KS5kYXRhXG4gIGNvbnN0IGNhcmV0ID0gcmFuZ2Uuc3RhcnRPZmZzZXRcbiAgbGV0IGkgPSBjYXJldCAtIDFcbiAgaWYgKGkgPCAwKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgd2hpbGUgKGkgPj0gMCAmJiB0ZXh0W2ldICE9PSAnLycpIGkgLT0gMVxuICBpZiAoaSA8IDAgfHwgdGV4dFtpXSAhPT0gJy8nKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgY29uc3Qgc2xhc2hJbmRleCA9IGlcbiAgY29uc3QgcHJldiA9IHNsYXNoSW5kZXggPiAwID8gdGV4dC5jaGFyQXQoc2xhc2hJbmRleCAtIDEpIDogJydcbiAgY29uc3QgaXNCb3VuZGFyeSA9ICFwcmV2IHx8IC9bXFxzKFt7XS8udGVzdChwcmV2KVxuICBpZiAoIWlzQm91bmRhcnkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBxdWVyeSA9IHRleHQuc2xpY2Uoc2xhc2hJbmRleCArIDEsIGNhcmV0KVxuICBpZiAoL1xcbnxcXHIvLnRlc3QocXVlcnkpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGlmIChxdWVyeS5pbmNsdWRlcygnICAnKSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIHJldHVybiB7IGFjdGl2ZTogdHJ1ZSwgcXVlcnksIGFuY2hvcjogeyBub2RlLCBvZmZzZXQ6IHNsYXNoSW5kZXggfSB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDb250ZXh0TWVudGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IGVkaXRvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFt0cmlnZ2VyLCBzZXRUcmlnZ2VyXSA9IHVzZVN0YXRlPE1lbnRpb25UcmlnZ2VyU3RhdGU+KHtcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIHF1ZXJ5OiAnJyxcbiAgICBhdFJ1bkxlbmd0aDogMCxcbiAgICBhbmNob3I6IG51bGwsXG4gIH0pXG4gIGNvbnN0IFtzbGFzaFRyaWdnZXIsIHNldFNsYXNoVHJpZ2dlcl0gPSB1c2VTdGF0ZTxTbGFzaFRyaWdnZXJTdGF0ZT4oe1xuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgcXVlcnk6ICcnLFxuICAgIGFuY2hvcjogbnVsbCxcbiAgfSlcblxuICBjb25zdCBkZXRlY3RUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCk6IE1lbnRpb25UcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgICB9XG4gICAgcmV0dXJuIGRldGVjdE1lbnRpb25UcmlnZ2VyKGVkaXRvclJlZi5jdXJyZW50LCBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKSlcbiAgfSwgW10pXG5cbiAgY29uc3QgZGV0ZWN0U2xhc2ggPSB1c2VDYWxsYmFjaygoKTogU2xhc2hUcmlnZ2VyU3RhdGUgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwIHx8ICFlZGl0b3JSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICAgIH1cbiAgICByZXR1cm4gZGV0ZWN0U2xhc2hUcmlnZ2VyKGVkaXRvclJlZi5jdXJyZW50LCBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gZGV0ZWN0VHJpZ2dlcigpXG4gICAgc2V0VHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RUcmlnZ2VyXSlcblxuICBjb25zdCBjbG9zZVRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9KVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTbGFzaFRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IGRldGVjdFNsYXNoKClcbiAgICBzZXRTbGFzaFRyaWdnZXIobmV4dClcbiAgICByZXR1cm4gbmV4dFxuICB9LCBbZGV0ZWN0U2xhc2hdKVxuXG4gIGNvbnN0IGNsb3NlU2xhc2hUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNsYXNoVHJpZ2dlcih7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH0pXG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBBanVzdGEgbGEgY2FudGlkYWQgZGUgYEBgIGRlbCB0cmlnZ2VyIGFjdGl2byBzaW4gcGVyZGVyIGVsIHF1ZXJ5IGFjdHVhbC5cbiAgICogRWouOiBgQEBhYmNgIC0+IGBAYWJjYCBhbCBjYW1iaWFyIGRlIHRhYi5cbiAgICovXG4gIGNvbnN0IHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGggPSB1c2VDYWxsYmFjayhcbiAgICAobmV4dEF0UnVuTGVuZ3RoOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG5leHRIYXNTbGFzaCA9IG5leHRBdFJ1bkxlbmd0aCA8IDBcbiAgICAgIGNvbnN0IHNhZmVOZXh0ID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihNYXRoLmFicyhuZXh0QXRSdW5MZW5ndGgpKSlcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICAgIGlmICghY3VycmVudC5hY3RpdmUgfHwgIWN1cnJlbnQuYW5jaG9yKSByZXR1cm5cblxuICAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgfSA9IGN1cnJlbnQuYW5jaG9yXG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHJldHVyblxuICAgICAgY29uc3QgdGV4dE5vZGUgPSBub2RlIGFzIFRleHRcbiAgICAgIGNvbnN0IGZ1bGwgPSB0ZXh0Tm9kZS5kYXRhXG4gICAgICAvLyBsb25naXR1ZCByZWFsIGRlbCB0cmlnZ2VyIGFjdHVhbDogcnVuIGRlIEAgKyBzbGFzaCBvcGNpb25hbCArIHF1ZXJ5XG4gICAgICBjb25zdCBjdXJyZW50UnVuTGVuID0gTWF0aC5hYnMoY3VycmVudC5hdFJ1bkxlbmd0aClcbiAgICAgIGNvbnN0IGN1cnJlbnRIYXNTbGFzaCA9IGN1cnJlbnQuYXRSdW5MZW5ndGggPCAwXG4gICAgICBjb25zdCBxdWVyeUxlbiA9IGN1cnJlbnRSdW5MZW4gKyAoY3VycmVudEhhc1NsYXNoID8gMSA6IDApICsgY3VycmVudC5xdWVyeS5sZW5ndGhcbiAgICAgIGNvbnN0IGJlZm9yZSA9IGZ1bGwuc2xpY2UoMCwgb2Zmc2V0KVxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHF1ZXJ5TGVuKVxuICAgICAgY29uc3QgbmV4dFJ1biA9IG5leHRIYXNTbGFzaCA/IGAkeydAJy5yZXBlYXQoc2FmZU5leHQpfS9gIDogJ0AnLnJlcGVhdChzYWZlTmV4dClcbiAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGAke2JlZm9yZX0ke25leHRSdW59JHtjdXJyZW50LnF1ZXJ5fSR7YWZ0ZXJ9YFxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIHRleHROb2RlLmRhdGEgPSBuZXh0VmFsdWVcblxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICBjb25zdCBjYXJldE9mZnNldCA9IGJlZm9yZS5sZW5ndGggKyBuZXh0UnVuLmxlbmd0aCArIGN1cnJlbnQucXVlcnkubGVuZ3RoXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHRleHROb2RlLCBNYXRoLm1pbihjYXJldE9mZnNldCwgdGV4dE5vZGUuZGF0YS5sZW5ndGgpKVxuICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKVxuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKClcbiAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB1cGRhdGVkID0gZGV0ZWN0VHJpZ2dlcigpXG4gICAgICBzZXRUcmlnZ2VyKHVwZGF0ZWQpXG4gICAgfSxcbiAgICBbZGV0ZWN0VHJpZ2dlcl1cbiAgKVxuXG4gIC8qKlxuICAgKiBSZWVtcGxhemEgZWwgYEBxdWVyeWAgcGVuZGllbnRlIHBvciB1biBjaGlwIGF0w7NtaWNvIGNvbiBsYSBtZW50aW9uLlxuICAgKiBSZXF1aWVyZSBxdWUgZWwgY2FsbGVyIHByb3ZlYSBlbCBET00gZGVsIGNoaXAgKHNlIGluc2VydGEgdGFsIGN1YWwpLlxuICAgKi9cbiAgY29uc3QgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGlwTm9kZTogSFRNTEVsZW1lbnQsIG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZGV0ZWN0VHJpZ2dlcigpXG4gICAgICBpZiAoIWN1cnJlbnQuYWN0aXZlIHx8ICFjdXJyZW50LmFuY2hvcikgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgbm9kZSwgb2Zmc2V0IH0gPSBjdXJyZW50LmFuY2hvclxuICAgICAgY29uc3QgdGV4dE5vZGUgPSBub2RlIGFzIFRleHRcbiAgICAgIGNvbnN0IGZ1bGwgPSB0ZXh0Tm9kZS5kYXRhXG4gICAgICBjb25zdCBxdWVyeUxlbiA9IGN1cnJlbnQuYXRSdW5MZW5ndGggKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHF1ZXJ5TGVuKVxuXG4gICAgICAvLyBUcnVuY2FyIGVsIHRleHRvIGhhc3RhIGFudGVzIGRlbCBydW4gZGUgYEDigKZgXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgLy8gSW5zZXJ0YXIgZWwgY2hpcCBqdXN0byBkZXNwdcOpcyBkZWwgbm9kbyBkZSB0ZXh0b1xuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24nLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1pZCcsIFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1sYWJlbCcsIG1lbnRpb24ubGFiZWwpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3Qgc3BhY2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxcdTAwYTAke2FmdGVyfWApXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaXBOb2RlLCB0ZXh0Tm9kZS5uZXh0U2libGluZylcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3BhY2VOb2RlLCBjaGlwTm9kZS5uZXh0U2libGluZylcblxuICAgICAgLy8gUmVwb3NpY2lvbmFyIGNhcmV0IGRlc3B1w6lzIGRlbCBjaGlwIChhbnRlcyBkZWwgZXNwYWNpbyBub24tYnJlYWtpbmcpXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHNwYWNlTm9kZSwgMSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgY2xvc2VUcmlnZ2VyKClcbiAgICB9LFxuICAgIFtkZXRlY3RUcmlnZ2VyLCBjbG9zZVRyaWdnZXJdXG4gIClcblxuICBjb25zdCByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hpcE5vZGU6IEhUTUxFbGVtZW50LCBzbGFzaENvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZGV0ZWN0U2xhc2goKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZSBhcyBUZXh0XG4gICAgICBjb25zdCBmdWxsID0gdGV4dE5vZGUuZGF0YVxuICAgICAgY29uc3QgdHJpZ2dlckxlbiA9IDEgKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHRyaWdnZXJMZW4pXG5cbiAgICAgIHRleHROb2RlLmRhdGEgPSBmdWxsLnNsaWNlKDAsIG9mZnNldClcblxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXNsYXNoLWNvbW1hbmQnLCAndHJ1ZScpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhc2gtaWQnLCBTdHJpbmcoc2xhc2hDb21tYW5kLmlkKSlcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1zbGFzaC1sYWJlbCcsIHNsYXNoQ29tbWFuZC5sYWJlbClcbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgJ2ZhbHNlJylcblxuICAgICAgY29uc3QgcGFyZW50ID0gdGV4dE5vZGUucGFyZW50Tm9kZVxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVyblxuXG4gICAgICBjb25zdCBzcGFjZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgICR7YWZ0ZXJ9YClcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY2hpcE5vZGUsIHRleHROb2RlLm5leHRTaWJsaW5nKVxuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShzcGFjZU5vZGUsIGNoaXBOb2RlLm5leHRTaWJsaW5nKVxuXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHNwYWNlTm9kZSwgMSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgY2xvc2VTbGFzaFRyaWdnZXIoKVxuICAgIH0sXG4gICAgW2RldGVjdFNsYXNoLCBjbG9zZVNsYXNoVHJpZ2dlcl1cbiAgKVxuXG4gIGNvbnN0IHNlcmlhbGl6ZSA9IHVzZUNhbGxiYWNrKCgpOiB7XG4gICAgdGV4dDogc3RyaW5nXG4gICAgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW11cbiAgICBzbGFzaENvbW1hbmRzOiBTbGFzaENvbW1hbmRDaGlwRGF0YVtdXG4gIH0gPT4ge1xuICAgIGNvbnN0IGVsID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICBpZiAoIWVsKSByZXR1cm4geyB0ZXh0OiAnJywgbWVudGlvbnM6IFtdLCBzbGFzaENvbW1hbmRzOiBbXSB9XG4gICAgY29uc3QgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW10gPSBbXVxuICAgIGNvbnN0IHNsYXNoQ29tbWFuZHM6IFNsYXNoQ29tbWFuZENoaXBEYXRhW10gPSBbXVxuICAgIGxldCB0ZXh0ID0gJydcblxuICAgIGNvbnN0IHdhbGsgPSAobm9kZTogTm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIHRleHQgKz0gKG5vZGUgYXMgVGV4dCkuZGF0YVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICBjb25zdCBlbE5vZGUgPSBub2RlIGFzIEhUTUxFbGVtZW50XG4gICAgICAgIGlmIChlbE5vZGUuZGF0YXNldD8ubWVudGlvbiA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgY29uc3QgbWVudGlvbjogQ29udGV4dE1lbnRpb24gPSB7XG4gICAgICAgICAgICBpZDogZWxOb2RlLmRhdGFzZXQubWVudGlvbklkID8/ICcnLFxuICAgICAgICAgICAgdHlwZTogKGVsTm9kZS5kYXRhc2V0Lm1lbnRpb25UeXBlIGFzIENvbnRleHRNZW50aW9uWyd0eXBlJ10pID8/ICd1c2VyJyxcbiAgICAgICAgICAgIGxhYmVsOiBlbE5vZGUuZGF0YXNldC5tZW50aW9uTGFiZWwgPz8gZWxOb2RlLnRleHRDb250ZW50ID8/ICcnLFxuICAgICAgICAgIH1cbiAgICAgICAgICBtZW50aW9ucy5wdXNoKG1lbnRpb24pXG4gICAgICAgICAgdGV4dCArPSBzZXJpYWxpemVNZW50aW9uKG1lbnRpb24pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsTm9kZS5kYXRhc2V0Py5zbGFzaENvbW1hbmQgPT09ICd0cnVlJykge1xuICAgICAgICAgIGNvbnN0IHNsYXNoOiBTbGFzaENvbW1hbmRDaGlwRGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBlbE5vZGUuZGF0YXNldC5zbGFzaElkID8/ICcnLFxuICAgICAgICAgICAgbGFiZWw6IGVsTm9kZS5kYXRhc2V0LnNsYXNoTGFiZWwgPz8gZWxOb2RlLnRleHRDb250ZW50Py5yZXBsYWNlKC9eXFwvLywgJycpID8/ICcnLFxuICAgICAgICAgIH1cbiAgICAgICAgICBzbGFzaENvbW1hbmRzLnB1c2goc2xhc2gpXG4gICAgICAgICAgdGV4dCArPSBzZXJpYWxpemVTbGFzaENvbW1hbmQoc2xhc2gpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsTm9kZS50YWdOYW1lID09PSAnQlInKSB7XG4gICAgICAgICAgdGV4dCArPSAnXFxuJ1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGVsTm9kZS5jaGlsZE5vZGVzLmZvckVhY2god2FsaylcbiAgICAgICAgaWYgKGVsTm9kZS50YWdOYW1lID09PSAnRElWJyB8fCBlbE5vZGUudGFnTmFtZSA9PT0gJ1AnKSB0ZXh0ICs9ICdcXG4nXG4gICAgICB9XG4gICAgfVxuXG4gICAgZWwuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspXG4gICAgcmV0dXJuIHsgdGV4dDogdGV4dC5yZXBsYWNlKC9cXG4rJC8sICcnKSwgbWVudGlvbnMsIHNsYXNoQ29tbWFuZHMgfVxuICB9LCBbXSlcblxuICBjb25zdCBjbGVhciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoZWRpdG9yUmVmLmN1cnJlbnQpIGVkaXRvclJlZi5jdXJyZW50LmlubmVySFRNTCA9ICcnXG4gICAgY2xvc2VUcmlnZ2VyKClcbiAgICBjbG9zZVNsYXNoVHJpZ2dlcigpXG4gIH0sIFtjbG9zZVRyaWdnZXIsIGNsb3NlU2xhc2hUcmlnZ2VyXSlcblxuICBjb25zdCBmb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICB9LCBbXSlcblxuICByZXR1cm4ge1xuICAgIGVkaXRvclJlZixcbiAgICB0cmlnZ2VyLFxuICAgIHVwZGF0ZVRyaWdnZXIsXG4gICAgY2xvc2VUcmlnZ2VyLFxuICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICBzbGFzaFRyaWdnZXIsXG4gICAgdXBkYXRlU2xhc2hUcmlnZ2VyLFxuICAgIGNsb3NlU2xhc2hUcmlnZ2VyLFxuICAgIHJlcGxhY2VUcmlnZ2VyV2l0aFNsYXNoQ2hpcCxcbiAgICBzZXJpYWxpemUsXG4gICAgY2xlYXIsXG4gICAgZm9jdXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUVyRCxTQUFTQyxnQkFBZ0IsUUFBUSxnQ0FBZ0M7QUFDakUsU0FBU0MscUJBQXFCLFFBQVEsNkJBQTZCO0FBa0JuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJQyxRQUE0QixFQUFFQyxLQUFZLEVBQTBCO0VBQ2hHLElBQUksQ0FBQ0QsUUFBUSxJQUFJLENBQUNBLFFBQVEsQ0FBQ0UsUUFBUSxDQUFDRCxLQUFLLENBQUNFLGNBQWMsQ0FBQyxFQUFFO0lBQ3pELE9BQU87TUFBRUMsTUFBTSxFQUFFLEtBQUs7TUFBRUMsS0FBSyxFQUFFLEVBQUU7TUFBRUMsV0FBVyxFQUFFLENBQUM7TUFBRUMsTUFBTSxFQUFFO0lBQUssQ0FBQztFQUNuRTtFQUNBLElBQU1DLElBQUksR0FBR1AsS0FB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
|
|
414
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZVN0YXRlIiwic2VyaWFsaXplTWVudGlvbiIsInNlcmlhbGl6ZVNsYXNoQ29tbWFuZCIsImRldGVjdE1lbnRpb25UcmlnZ2VyIiwiZWRpdG9yRWwiLCJyYW5nZSIsImNvbnRhaW5zIiwic3RhcnRDb250YWluZXIiLCJhY3RpdmUiLCJxdWVyeSIsImF0UnVuTGVuZ3RoIiwiYW5jaG9yIiwibm9kZSIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsInRleHQiLCJkYXRhIiwiY2FyZXQiLCJzdGFydE9mZnNldCIsImkiLCJydW5FbmQiLCJydW5TdGFydCIsInByZXYiLCJjaGFyQXQiLCJpc0JvdW5kYXJ5IiwidGVzdCIsInNsaWNlIiwiaW5jbHVkZXMiLCJvZmZzZXQiLCJkZXRlY3RTbGFzaFRyaWdnZXIiLCJzbGFzaEluZGV4IiwidXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidHJpZ2dlciIsInNldFRyaWdnZXIiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNsYXNoVHJpZ2dlciIsInNldFNsYXNoVHJpZ2dlciIsImRldGVjdFRyaWdnZXIiLCJzZWxlY3Rpb24iLCJ3aW5kb3ciLCJnZXRTZWxlY3Rpb24iLCJyYW5nZUNvdW50IiwiY3VycmVudCIsImdldFJhbmdlQXQiLCJkZXRlY3RTbGFzaCIsInVwZGF0ZVRyaWdnZXIiLCJuZXh0IiwiY2xvc2VUcmlnZ2VyIiwidXBkYXRlU2xhc2hUcmlnZ2VyIiwiY2xvc2VTbGFzaFRyaWdnZXIiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwibmV4dEF0UnVuTGVuZ3RoIiwic2FmZU5leHQiLCJNYXRoIiwibWF4IiwiZmxvb3IiLCJfY3VycmVudCRhbmNob3IiLCJ0ZXh0Tm9kZSIsImZ1bGwiLCJxdWVyeUxlbiIsImxlbmd0aCIsImJlZm9yZSIsImFmdGVyIiwibmV4dFJ1biIsInJlcGVhdCIsIm5leHRWYWx1ZSIsImNvbmNhdCIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJjYXJldE9mZnNldCIsInNldFN0YXJ0IiwibWluIiwiY29sbGFwc2UiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInVwZGF0ZWQiLCJyZXBsYWNlVHJpZ2dlcldpdGhDaGlwIiwiY2hpcE5vZGUiLCJtZW50aW9uIiwiX2N1cnJlbnQkYW5jaG9yMiIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsImlkIiwidHlwZSIsImxhYmVsIiwicGFyZW50IiwicGFyZW50Tm9kZSIsInNwYWNlTm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJyZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAiLCJzbGFzaENvbW1hbmQiLCJfY3VycmVudCRhbmNob3IzIiwidHJpZ2dlckxlbiIsInNlcmlhbGl6ZSIsImVsIiwibWVudGlvbnMiLCJzbGFzaENvbW1hbmRzIiwid2FsayIsIkVMRU1FTlRfTk9ERSIsIl9lbE5vZGUkZGF0YXNldCIsIl9lbE5vZGUkZGF0YXNldDIiLCJlbE5vZGUiLCJkYXRhc2V0IiwiX2VsTm9kZSRkYXRhc2V0JG1lbnRpIiwiX3JlZiIsIl9yZWYyIiwiX2VsTm9kZSRkYXRhc2V0JG1lbnRpMiIsIm1lbnRpb25JZCIsIm1lbnRpb25UeXBlIiwibWVudGlvbkxhYmVsIiwidGV4dENvbnRlbnQiLCJwdXNoIiwiX2VsTm9kZSRkYXRhc2V0JHNsYXNoIiwiX3JlZjMiLCJfZWxOb2RlJGRhdGFzZXQkc2xhc2gyIiwiX2VsTm9kZSR0ZXh0Q29udGVudCIsInNsYXNoIiwic2xhc2hJZCIsInNsYXNoTGFiZWwiLCJyZXBsYWNlIiwidGFnTmFtZSIsImNoaWxkTm9kZXMiLCJmb3JFYWNoIiwiY2xlYXIiLCJpbm5lckhUTUwiLCJmb2N1cyIsIl9lZGl0b3JSZWYkY3VycmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VDb250ZXh0TWVudGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBzZXJpYWxpemVNZW50aW9uIH0gZnJvbSAnLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuaW1wb3J0IHsgc2VyaWFsaXplU2xhc2hDb21tYW5kIH0gZnJvbSAnLi4vdXRpbHMvc2xhc2hDb21tYW5kTWFya2VyJ1xuaW1wb3J0IHR5cGUgeyBTbGFzaENvbW1hbmRDaGlwRGF0YSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvU2xhc2hDb21tYW5kQ2hpcC9idWlsZFNsYXNoQ2hpcEVsZW1lbnQnXG5cbmV4cG9ydCB0eXBlIE1lbnRpb25UcmlnZ2VyU3RhdGUgPSB7XG4gIGFjdGl2ZTogYm9vbGVhblxuICBxdWVyeTogc3RyaW5nXG4gIC8qKiBDYW50aWRhZCBkZSBgQGAgY29uc2VjdXRpdm9zIGRlbCB0cmlnZ2VyIChgQGAg4oaSIDEsIGBAQGAg4oaSIDIpLiBNYXBlYSBhIGxhIHRhYiBlbiBvcmRlbi4gKi9cbiAgYXRSdW5MZW5ndGg6IG51bWJlclxuICAvKiogUG9zaWNpw7NuIGRlbCBwcmltZXIgYEBgIGRlbCBydW4gKHJlZW1wbGF6byBkZWwgY2hpcCkuICovXG4gIGFuY2hvcjogeyBub2RlOiBOb2RlOyBvZmZzZXQ6IG51bWJlciB9IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBTbGFzaFRyaWdnZXJTdGF0ZSA9IHtcbiAgYWN0aXZlOiBib29sZWFuXG4gIHF1ZXJ5OiBzdHJpbmdcbiAgYW5jaG9yOiB7IG5vZGU6IE5vZGU7IG9mZnNldDogbnVtYmVyIH0gfCBudWxsXG59XG5cbi8qKlxuICogSW5zcGVjY2lvbmEgbGEgc2VsZWNjacOzbiBhY3R1YWwuIEZvcm1hdG86IFtsw61taXRlIGRlIHBhbGFicmFdIEArIHF1ZXJ5IGhhc3RhIGVsIGNhcmV0LlxuICogUGVybWl0ZSBlc3BhY2lvcyBzaW1wbGVzIGRlbnRybyBkZWwgcXVlcnkgKHAuIGVqLiBcIkBKdWFuIFBlcmV6XCIpIHkgY2llcnJhXG4gKiBlbCB0cmlnZ2VyIGN1YW5kbyBkZXRlY3RhIGRvcyBlc3BhY2lvcyBjb25zZWN1dGl2b3MuXG4gKiBMYSB0YWIgb2JqZXRpdm8gZXMgbGEgcXVlIGNvcnJlc3BvbmRlIGFsIG7Dum1lcm8gZGUgYEBgICgxID0gcHJpbWVyYSB0YWIgdmlzaWJsZSwgZXRjLikuXG4gKi9cbmNvbnN0IGRldGVjdE1lbnRpb25UcmlnZ2VyID0gKGVkaXRvckVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHJhbmdlOiBSYW5nZSk6IE1lbnRpb25UcmlnZ2VyU3RhdGUgPT4ge1xuICBpZiAoIWVkaXRvckVsIHx8ICFlZGl0b3JFbC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGNvbnN0IG5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lclxuICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGNvbnN0IHRleHQgPSAobm9kZSBhcyBUZXh0KS5kYXRhXG4gIGNvbnN0IGNhcmV0ID0gcmFuZ2Uuc3RhcnRPZmZzZXRcbiAgbGV0IGkgPSBjYXJldCAtIDFcbiAgaWYgKGkgPCAwKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIHdoaWxlIChpID49IDAgJiYgdGV4dFtpXSAhPT0gJ0AnKSBpIC09IDFcbiAgaWYgKGkgPCAwIHx8IHRleHRbaV0gIT09ICdAJykge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBydW5FbmQgPSBpXG4gIHdoaWxlIChpID49IDAgJiYgdGV4dFtpXSA9PT0gJ0AnKSB7XG4gICAgaSAtPSAxXG4gIH1cbiAgY29uc3QgcnVuU3RhcnQgPSBpICsgMVxuICBjb25zdCBhdFJ1bkxlbmd0aCA9IHJ1bkVuZCAtIHJ1blN0YXJ0ICsgMVxuICBjb25zdCBwcmV2ID0gcnVuU3RhcnQgPiAwID8gdGV4dC5jaGFyQXQocnVuU3RhcnQgLSAxKSA6ICcnXG4gIGNvbnN0IGlzQm91bmRhcnkgPSAhcHJldiB8fCAvW1xccyhbe10vLnRlc3QocHJldilcbiAgaWYgKCFpc0JvdW5kYXJ5KSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIGNvbnN0IHF1ZXJ5ID0gdGV4dC5zbGljZShydW5FbmQgKyAxLCBjYXJldClcbiAgaWYgKC9cXG58XFxyLy50ZXN0KHF1ZXJ5KSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgaWYgKHF1ZXJ5LmluY2x1ZGVzKCcgICcpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIHJldHVybiB7IGFjdGl2ZTogdHJ1ZSwgcXVlcnksIGF0UnVuTGVuZ3RoLCBhbmNob3I6IHsgbm9kZSwgb2Zmc2V0OiBydW5TdGFydCB9IH1cbn1cblxuY29uc3QgZGV0ZWN0U2xhc2hUcmlnZ2VyID0gKGVkaXRvckVsOiBIVE1MRWxlbWVudCB8IG51bGwsIHJhbmdlOiBSYW5nZSk6IFNsYXNoVHJpZ2dlclN0YXRlID0+IHtcbiAgaWYgKCFlZGl0b3JFbCB8fCAhZWRpdG9yRWwuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG4gIGNvbnN0IG5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lclxuICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgY29uc3QgdGV4dCA9IChub2RlIGFzIFRleHQpLmRhdGFcbiAgY29uc3QgY2FyZXQgPSByYW5nZS5zdGFydE9mZnNldFxuICBsZXQgaSA9IGNhcmV0IC0gMVxuICBpZiAoaSA8IDApIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICB3aGlsZSAoaSA+PSAwICYmIHRleHRbaV0gIT09ICcvJykgaSAtPSAxXG4gIGlmIChpIDwgMCB8fCB0ZXh0W2ldICE9PSAnLycpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cblxuICBjb25zdCBzbGFzaEluZGV4ID0gaVxuICBjb25zdCBwcmV2ID0gc2xhc2hJbmRleCA+IDAgPyB0ZXh0LmNoYXJBdChzbGFzaEluZGV4IC0gMSkgOiAnJ1xuICBjb25zdCBpc0JvdW5kYXJ5ID0gIXByZXYgfHwgL1tcXHMoW3tdLy50ZXN0KHByZXYpXG4gIGlmICghaXNCb3VuZGFyeSkge1xuICAgIHJldHVybiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYW5jaG9yOiBudWxsIH1cbiAgfVxuXG4gIGNvbnN0IHF1ZXJ5ID0gdGV4dC5zbGljZShzbGFzaEluZGV4ICsgMSwgY2FyZXQpXG4gIGlmICgvXFxufFxcci8udGVzdChxdWVyeSkpIHtcbiAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gIH1cbiAgaWYgKHF1ZXJ5LmluY2x1ZGVzKCcgICcpKSB7XG4gICAgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfVxuICB9XG5cbiAgcmV0dXJuIHsgYWN0aXZlOiB0cnVlLCBxdWVyeSwgYW5jaG9yOiB7IG5vZGUsIG9mZnNldDogc2xhc2hJbmRleCB9IH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNvbnRleHRNZW50aW9ucyA9ICgpID0+IHtcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3RyaWdnZXIsIHNldFRyaWdnZXJdID0gdXNlU3RhdGU8TWVudGlvblRyaWdnZXJTdGF0ZT4oe1xuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgcXVlcnk6ICcnLFxuICAgIGF0UnVuTGVuZ3RoOiAwLFxuICAgIGFuY2hvcjogbnVsbCxcbiAgfSlcbiAgY29uc3QgW3NsYXNoVHJpZ2dlciwgc2V0U2xhc2hUcmlnZ2VyXSA9IHVzZVN0YXRlPFNsYXNoVHJpZ2dlclN0YXRlPih7XG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICBxdWVyeTogJycsXG4gICAgYW5jaG9yOiBudWxsLFxuICB9KVxuXG4gIGNvbnN0IGRldGVjdFRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKTogTWVudGlvblRyaWdnZXJTdGF0ZSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDAgfHwgIWVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwLCBhbmNob3I6IG51bGwgfVxuICAgIH1cbiAgICByZXR1cm4gZGV0ZWN0TWVudGlvblRyaWdnZXIoZWRpdG9yUmVmLmN1cnJlbnQsIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApKVxuICB9LCBbXSlcblxuICBjb25zdCBkZXRlY3RTbGFzaCA9IHVzZUNhbGxiYWNrKCgpOiBTbGFzaFRyaWdnZXJTdGF0ZSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDAgfHwgIWVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm4geyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGFuY2hvcjogbnVsbCB9XG4gICAgfVxuICAgIHJldHVybiBkZXRlY3RTbGFzaFRyaWdnZXIoZWRpdG9yUmVmLmN1cnJlbnQsIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApKVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBkZXRlY3RUcmlnZ2VyKClcbiAgICBzZXRUcmlnZ2VyKG5leHQpXG4gICAgcmV0dXJuIG5leHRcbiAgfSwgW2RldGVjdFRyaWdnZXJdKVxuXG4gIGNvbnN0IGNsb3NlVHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUcmlnZ2VyKHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhdFJ1bkxlbmd0aDogMCwgYW5jaG9yOiBudWxsIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVwZGF0ZVNsYXNoVHJpZ2dlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBuZXh0ID0gZGV0ZWN0U2xhc2goKVxuICAgIHNldFNsYXNoVHJpZ2dlcihuZXh0KVxuICAgIHJldHVybiBuZXh0XG4gIH0sIFtkZXRlY3RTbGFzaF0pXG5cbiAgY29uc3QgY2xvc2VTbGFzaFRyaWdnZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2xhc2hUcmlnZ2VyKHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnLCBhbmNob3I6IG51bGwgfSlcbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEFqdXN0YSBsYSBjYW50aWRhZCBkZSBgQGAgZGVsIHRyaWdnZXIgYWN0aXZvIHNpbiBwZXJkZXIgZWwgcXVlcnkgYWN0dWFsLlxuICAgKiBFai46IGBAQGFiY2AgLT4gYEBhYmNgIGFsIGNhbWJpYXIgZGUgdGFiLlxuICAgKi9cbiAgY29uc3Qgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXh0QXRSdW5MZW5ndGg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3Qgc2FmZU5leHQgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKG5leHRBdFJ1bkxlbmd0aCkpXG4gICAgICBjb25zdCBjdXJyZW50ID0gZGV0ZWN0VHJpZ2dlcigpXG4gICAgICBpZiAoIWN1cnJlbnQuYWN0aXZlIHx8ICFjdXJyZW50LmFuY2hvcikgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgbm9kZSwgb2Zmc2V0IH0gPSBjdXJyZW50LmFuY2hvclxuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSByZXR1cm5cbiAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZSBhcyBUZXh0XG4gICAgICBjb25zdCBmdWxsID0gdGV4dE5vZGUuZGF0YVxuICAgICAgY29uc3QgcXVlcnlMZW4gPSBjdXJyZW50LmF0UnVuTGVuZ3RoICsgY3VycmVudC5xdWVyeS5sZW5ndGhcbiAgICAgIGNvbnN0IGJlZm9yZSA9IGZ1bGwuc2xpY2UoMCwgb2Zmc2V0KVxuICAgICAgY29uc3QgYWZ0ZXIgPSBmdWxsLnNsaWNlKG9mZnNldCArIHF1ZXJ5TGVuKVxuICAgICAgY29uc3QgbmV4dFJ1biA9ICdAJy5yZXBlYXQoc2FmZU5leHQpXG4gICAgICBjb25zdCBuZXh0VmFsdWUgPSBgJHtiZWZvcmV9JHtuZXh0UnVufSR7Y3VycmVudC5xdWVyeX0ke2FmdGVyfWBcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICB0ZXh0Tm9kZS5kYXRhID0gbmV4dFZhbHVlXG5cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKClcbiAgICAgICAgY29uc3QgY2FyZXRPZmZzZXQgPSBiZWZvcmUubGVuZ3RoICsgbmV4dFJ1bi5sZW5ndGggKyBjdXJyZW50LnF1ZXJ5Lmxlbmd0aFxuICAgICAgICByYW5nZS5zZXRTdGFydCh0ZXh0Tm9kZSwgTWF0aC5taW4oY2FyZXRPZmZzZXQsIHRleHROb2RlLmRhdGEubGVuZ3RoKSlcbiAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXBkYXRlZCA9IGRldGVjdFRyaWdnZXIoKVxuICAgICAgc2V0VHJpZ2dlcih1cGRhdGVkKVxuICAgIH0sXG4gICAgW2RldGVjdFRyaWdnZXJdXG4gIClcblxuICAvKipcbiAgICogUmVlbXBsYXphIGVsIGBAcXVlcnlgIHBlbmRpZW50ZSBwb3IgdW4gY2hpcCBhdMOzbWljbyBjb24gbGEgbWVudGlvbi5cbiAgICogUmVxdWllcmUgcXVlIGVsIGNhbGxlciBwcm92ZWEgZWwgRE9NIGRlbCBjaGlwIChzZSBpbnNlcnRhIHRhbCBjdWFsKS5cbiAgICovXG4gIGNvbnN0IHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hpcE5vZGU6IEhUTUxFbGVtZW50LCBtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IGRldGVjdFRyaWdnZXIoKVxuICAgICAgaWYgKCFjdXJyZW50LmFjdGl2ZSB8fCAhY3VycmVudC5hbmNob3IpIHJldHVyblxuXG4gICAgICBjb25zdCB7IG5vZGUsIG9mZnNldCB9ID0gY3VycmVudC5hbmNob3JcbiAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZSBhcyBUZXh0XG4gICAgICBjb25zdCBmdWxsID0gdGV4dE5vZGUuZGF0YVxuICAgICAgY29uc3QgcXVlcnlMZW4gPSBjdXJyZW50LmF0UnVuTGVuZ3RoICsgY3VycmVudC5xdWVyeS5sZW5ndGhcbiAgICAgIGNvbnN0IGFmdGVyID0gZnVsbC5zbGljZShvZmZzZXQgKyBxdWVyeUxlbilcblxuICAgICAgLy8gVHJ1bmNhciBlbCB0ZXh0byBoYXN0YSBhbnRlcyBkZWwgcnVuIGRlIGBA4oCmYFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICB0ZXh0Tm9kZS5kYXRhID0gZnVsbC5zbGljZSgwLCBvZmZzZXQpXG5cbiAgICAgIC8vIEluc2VydGFyIGVsIGNoaXAganVzdG8gZGVzcHXDqXMgZGVsIG5vZG8gZGUgdGV4dG9cbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uJywgJ3RydWUnKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24taWQnLCBTdHJpbmcobWVudGlvbi5pZCkpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi10eXBlJywgbWVudGlvbi50eXBlKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tbGFiZWwnLCBtZW50aW9uLmxhYmVsKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKVxuXG4gICAgICBjb25zdCBwYXJlbnQgPSB0ZXh0Tm9kZS5wYXJlbnROb2RlXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHNwYWNlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGBcXHUwMGEwJHthZnRlcn1gKVxuICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShjaGlwTm9kZSwgdGV4dE5vZGUubmV4dFNpYmxpbmcpXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHNwYWNlTm9kZSwgY2hpcE5vZGUubmV4dFNpYmxpbmcpXG5cbiAgICAgIC8vIFJlcG9zaWNpb25hciBjYXJldCBkZXNwdcOpcyBkZWwgY2hpcCAoYW50ZXMgZGVsIGVzcGFjaW8gbm9uLWJyZWFraW5nKVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICByYW5nZS5zZXRTdGFydChzcGFjZU5vZGUsIDEpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNsb3NlVHJpZ2dlcigpXG4gICAgfSxcbiAgICBbZGV0ZWN0VHJpZ2dlciwgY2xvc2VUcmlnZ2VyXVxuICApXG5cbiAgY29uc3QgcmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoaXBOb2RlOiBIVE1MRWxlbWVudCwgc2xhc2hDb21tYW5kOiBTbGFzaENvbW1hbmRDaGlwRGF0YSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IGRldGVjdFNsYXNoKClcbiAgICAgIGlmICghY3VycmVudC5hY3RpdmUgfHwgIWN1cnJlbnQuYW5jaG9yKSByZXR1cm5cblxuICAgICAgY29uc3QgeyBub2RlLCBvZmZzZXQgfSA9IGN1cnJlbnQuYW5jaG9yXG4gICAgICBjb25zdCB0ZXh0Tm9kZSA9IG5vZGUgYXMgVGV4dFxuICAgICAgY29uc3QgZnVsbCA9IHRleHROb2RlLmRhdGFcbiAgICAgIGNvbnN0IHRyaWdnZXJMZW4gPSAxICsgY3VycmVudC5xdWVyeS5sZW5ndGhcbiAgICAgIGNvbnN0IGFmdGVyID0gZnVsbC5zbGljZShvZmZzZXQgKyB0cmlnZ2VyTGVuKVxuXG4gICAgICB0ZXh0Tm9kZS5kYXRhID0gZnVsbC5zbGljZSgwLCBvZmZzZXQpXG5cbiAgICAgIGNoaXBOb2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1zbGFzaC1jb21tYW5kJywgJ3RydWUnKVxuICAgICAgY2hpcE5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLXNsYXNoLWlkJywgU3RyaW5nKHNsYXNoQ29tbWFuZC5pZCkpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xhc2gtbGFiZWwnLCBzbGFzaENvbW1hbmQubGFiZWwpXG4gICAgICBjaGlwTm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRleHROb2RlLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3Qgc3BhY2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYCAke2FmdGVyfWApXG4gICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaXBOb2RlLCB0ZXh0Tm9kZS5uZXh0U2libGluZylcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoc3BhY2VOb2RlLCBjaGlwTm9kZS5uZXh0U2libGluZylcblxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICByYW5nZS5zZXRTdGFydChzcGFjZU5vZGUsIDEpXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpXG4gICAgICB9XG5cbiAgICAgIGNsb3NlU2xhc2hUcmlnZ2VyKClcbiAgICB9LFxuICAgIFtkZXRlY3RTbGFzaCwgY2xvc2VTbGFzaFRyaWdnZXJdXG4gIClcblxuICBjb25zdCBzZXJpYWxpemUgPSB1c2VDYWxsYmFjaygoKToge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgc2xhc2hDb21tYW5kczogU2xhc2hDb21tYW5kQ2hpcERhdGFbXVxuICB9ID0+IHtcbiAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuIHsgdGV4dDogJycsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfVxuICAgIGNvbnN0IG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdID0gW11cbiAgICBjb25zdCBzbGFzaENvbW1hbmRzOiBTbGFzaENvbW1hbmRDaGlwRGF0YVtdID0gW11cbiAgICBsZXQgdGV4dCA9ICcnXG5cbiAgICBjb25zdCB3YWxrID0gKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICB0ZXh0ICs9IChub2RlIGFzIFRleHQpLmRhdGFcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgY29uc3QgZWxOb2RlID0gbm9kZSBhcyBIVE1MRWxlbWVudFxuICAgICAgICBpZiAoZWxOb2RlLmRhdGFzZXQ/Lm1lbnRpb24gPT09ICd0cnVlJykge1xuICAgICAgICAgIGNvbnN0IG1lbnRpb246IENvbnRleHRNZW50aW9uID0ge1xuICAgICAgICAgICAgaWQ6IGVsTm9kZS5kYXRhc2V0Lm1lbnRpb25JZCA/PyAnJyxcbiAgICAgICAgICAgIHR5cGU6IChlbE5vZGUuZGF0YXNldC5tZW50aW9uVHlwZSBhcyBDb250ZXh0TWVudGlvblsndHlwZSddKSA/PyAndXNlcicsXG4gICAgICAgICAgICBsYWJlbDogZWxOb2RlLmRhdGFzZXQubWVudGlvbkxhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudCA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgbWVudGlvbnMucHVzaChtZW50aW9uKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplTWVudGlvbihtZW50aW9uKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUuZGF0YXNldD8uc2xhc2hDb21tYW5kID09PSAndHJ1ZScpIHtcbiAgICAgICAgICBjb25zdCBzbGFzaDogU2xhc2hDb21tYW5kQ2hpcERhdGEgPSB7XG4gICAgICAgICAgICBpZDogZWxOb2RlLmRhdGFzZXQuc2xhc2hJZCA/PyAnJyxcbiAgICAgICAgICAgIGxhYmVsOiBlbE5vZGUuZGF0YXNldC5zbGFzaExhYmVsID8/IGVsTm9kZS50ZXh0Q29udGVudD8ucmVwbGFjZSgvXlxcLy8sICcnKSA/PyAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgc2xhc2hDb21tYW5kcy5wdXNoKHNsYXNoKVxuICAgICAgICAgIHRleHQgKz0gc2VyaWFsaXplU2xhc2hDb21tYW5kKHNsYXNoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0JSJykge1xuICAgICAgICAgIHRleHQgKz0gJ1xcbidcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBlbE5vZGUuY2hpbGROb2Rlcy5mb3JFYWNoKHdhbGspXG4gICAgICAgIGlmIChlbE5vZGUudGFnTmFtZSA9PT0gJ0RJVicgfHwgZWxOb2RlLnRhZ05hbWUgPT09ICdQJykgdGV4dCArPSAnXFxuJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNoaWxkTm9kZXMuZm9yRWFjaCh3YWxrKVxuICAgIHJldHVybiB7IHRleHQ6IHRleHQucmVwbGFjZSgvXFxuKyQvLCAnJyksIG1lbnRpb25zLCBzbGFzaENvbW1hbmRzIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgY2xlYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSBlZGl0b3JSZWYuY3VycmVudC5pbm5lckhUTUwgPSAnJ1xuICAgIGNsb3NlVHJpZ2dlcigpXG4gICAgY2xvc2VTbGFzaFRyaWdnZXIoKVxuICB9LCBbY2xvc2VUcmlnZ2VyLCBjbG9zZVNsYXNoVHJpZ2dlcl0pXG5cbiAgY29uc3QgZm9jdXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgfSwgW10pXG5cbiAgcmV0dXJuIHtcbiAgICBlZGl0b3JSZWYsXG4gICAgdHJpZ2dlcixcbiAgICB1cGRhdGVUcmlnZ2VyLFxuICAgIGNsb3NlVHJpZ2dlcixcbiAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgIHJlcGxhY2VUcmlnZ2VyV2l0aENoaXAsXG4gICAgc2xhc2hUcmlnZ2VyLFxuICAgIHVwZGF0ZVNsYXNoVHJpZ2dlcixcbiAgICBjbG9zZVNsYXNoVHJpZ2dlcixcbiAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgc2VyaWFsaXplLFxuICAgIGNsZWFyLFxuICAgIGZvY3VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFckQsU0FBU0MsZ0JBQWdCLFFBQVEsZ0NBQWdDO0FBQ2pFLFNBQVNDLHFCQUFxQixRQUFRLDZCQUE2QjtBQWtCbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSUMsUUFBNEIsRUFBRUMsS0FBWSxFQUEwQjtFQUNoRyxJQUFJLENBQUNELFFBQVEsSUFBSSxDQUFDQSxRQUFRLENBQUNFLFFBQVEsQ0FBQ0Qs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
|
|
@@ -29,41 +29,9 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
|
|
|
29
29
|
var _useGlobalContext = useGlobalContext(),
|
|
30
30
|
agent = _useGlobalContext.agent;
|
|
31
31
|
return useMemo(function () {
|
|
32
|
-
var _agent$connectors$
|
|
33
|
-
// Agentes custom: los tipos disponibles se derivan de sus conectores COR.
|
|
34
|
-
// tasks_read → [user, task]; projects_read → agrega project; clients_read → agrega client.
|
|
35
|
-
// Los conectores están encadenados: clients implica projects, projects implica tasks.
|
|
36
|
-
if ((agent === null || agent === void 0 ? void 0 : agent.type) === 'custom') {
|
|
37
|
-
var _agent$connectors$fin, _agent$connectors, _agent$connectors$fin2, _agent$connectors2, _corTypes$;
|
|
38
|
-
var corSlugs = (_agent$connectors$fin = (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.find(function (c) {
|
|
39
|
-
return c.group === 'COR';
|
|
40
|
-
})) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.slugs) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
|
|
41
|
-
var hasClients = corSlugs.includes('clients_read');
|
|
42
|
-
var hasProjects = corSlugs.includes('projects_read');
|
|
43
|
-
var hasTasks = corSlugs.includes('tasks_read');
|
|
44
|
-
var corTypes = [];
|
|
45
|
-
if (hasClients) {
|
|
46
|
-
corTypes = ['user', 'task', 'project', 'client'];
|
|
47
|
-
} else if (hasProjects) {
|
|
48
|
-
corTypes = ['user', 'task', 'project'];
|
|
49
|
-
} else if (hasTasks) {
|
|
50
|
-
corTypes = ['user', 'task'];
|
|
51
|
-
}
|
|
52
|
-
var _mcpSlugs = (_agent$connectors$fin2 = (_agent$connectors2 = agent.connectors) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.find(function (c) {
|
|
53
|
-
return c.group === 'MCP';
|
|
54
|
-
})) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.slugs) === null || _agent$connectors2 === void 0 ? void 0 : _agent$connectors2.filter(function (s) {
|
|
55
|
-
return typeof s === 'string' && s.trim().length > 0;
|
|
56
|
-
})) !== null && _agent$connectors$fin2 !== void 0 ? _agent$connectors$fin2 : [];
|
|
57
|
-
if (_mcpSlugs.length > 0) {
|
|
58
|
-
corTypes = [].concat(_toConsumableArray(corTypes), ['mcp']);
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
allowedTypes: corTypes,
|
|
62
|
-
defaultType: (_corTypes$ = corTypes[0]) !== null && _corTypes$ !== void 0 ? _corTypes$ : 'user'
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
|
|
32
|
+
var _agent$connectors$fin, _agent$connectors, _allowedTypes$;
|
|
66
33
|
// Las @-mentions (y por ende los fetch de recents) solo aplican a agentes clone.
|
|
34
|
+
// Los agentes no-clone (custom, etc.) no las tienen habilitadas por ahora.
|
|
67
35
|
if ((agent === null || agent === void 0 ? void 0 : agent.type) !== 'clone') {
|
|
68
36
|
return {
|
|
69
37
|
allowedTypes: [],
|
|
@@ -102,11 +70,11 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
|
|
|
102
70
|
return type !== 'user';
|
|
103
71
|
});
|
|
104
72
|
}
|
|
105
|
-
var mcpSlugs = (_agent$connectors$
|
|
73
|
+
var mcpSlugs = (_agent$connectors$fin = agent === null || agent === void 0 || (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.find(function (connector) {
|
|
106
74
|
return connector.group === 'MCP';
|
|
107
|
-
})) === null || _agent$
|
|
75
|
+
})) === null || _agent$connectors === void 0 || (_agent$connectors = _agent$connectors.slugs) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.filter(function (slug) {
|
|
108
76
|
return typeof slug === 'string' && slug.trim().length > 0;
|
|
109
|
-
})) !== null && _agent$connectors$
|
|
77
|
+
})) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
|
|
110
78
|
if (mcpSlugs.length > 0) {
|
|
111
79
|
allowedTypes = [].concat(_toConsumableArray(allowedTypes), ['mcp']);
|
|
112
80
|
}
|
|
@@ -116,4 +84,4 @@ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
|
|
|
116
84
|
};
|
|
117
85
|
}, [agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, agent === null || agent === void 0 ? void 0 : agent.connectors, override]);
|
|
118
86
|
};
|
|
119
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsIkFMTF9UWVBFUyIsIlRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJvdmVycmlkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4zIiwiX2FnZW50JGNvbm5lY3RvcnMzIiwiX2FsbG93ZWRUeXBlcyQiLCJ0eXBlIiwiX2FnZW50JGNvbm5lY3RvcnMkZmluIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4yIiwiX2FnZW50JGNvbm5lY3RvcnMyIiwiX2NvclR5cGVzJCIsImNvclNsdWdzIiwiY29ubmVjdG9ycyIsImZpbmQiLCJjIiwiZ3JvdXAiLCJzbHVncyIsImhhc0NsaWVudHMiLCJpbmNsdWRlcyIsImhhc1Byb2plY3RzIiwiaGFzVGFza3MiLCJjb3JUeXBlcyIsIm1jcFNsdWdzIiwiZmlsdGVyIiwicyIsInRyaW0iLCJsZW5ndGgiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhbGxvd2VkVHlwZXMiLCJkZWZhdWx0VHlwZSIsImVudGl0eSIsImNvbm5lY3RvciIsInNsdWciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVudGlvbkFsbG93ZWRUeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlIH0gZnJvbSAnLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbmNvbnN0IEFMTF9UWVBFUzogQ29udGV4dEVudGl0eVR5cGVbXSA9IFsnY2xpZW50JywgJ3Byb2plY3QnLCAndGFzaycsICd1c2VyJ11cblxuLyoqXG4gKiBSZXN0cmljY2nDs24gdGVtcG9yYWwgZGUgcHJvZHVjdG86IGVsIHBvcG92ZXIgZGUgQC1tZW50aW9ucyAoQ09SICsgTUNQKSBzb2xvIGFwbGljYSBhXG4gKiBhZ2VudGVzIGN1eW8gYGVudGl0eWAgZXMgcHJveWVjdG8gbyBjbGllbnRlICjigJxlc3BlY2lhbGlzdGFz4oCdIGFjb3RhZG9zKS4gRWwgcmVzdG8gbm8gdmUgdGFic1xuICogbmkgTUNQIGF1bnF1ZSB0ZW5nYSBjb25lY3RvcmVzIGFjdGl2b3MuIFBhc2FyIGEgYGZhbHNlYCBjdWFuZG8gc2UgaGFiaWxpdGUgZGUgbnVldm8gZWxcbiAqIGFsY2FuY2UgYW1wbGlvOyBubyBib3JyYXIgZWwgY3VlcnBvIGRlbCBob29rIHF1ZSBxdWVkYSBkZWJham8uXG4gKi9cbmNvbnN0IFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSA9IHRydWVcblxuZXhwb3J0IHR5cGUgVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9IHtcbiAgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdXG4gIGRlZmF1bHRUeXBlOiBDb250ZXh0RW50aXR5VHlwZVxufVxuXG4vKipcbiAqIERlcml2YSBkZWwgYWdlbnQgYWN0aXZvIHF1w6kgdGFicyBkZWwgY29udGV4dCBtZW50aW9uIGRlYmVuIGVzdGFyIGRpc3BvbmlibGVzLlxuICpcbiAqIFJlZ2xhczpcbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdnbG9iYWwnICDihpIgbmluZ3VuYSAoc2luIEAtbWVudGlvbnMpXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAncHJvamVjdCcg4oaSIFt0YXNrLCB1c2VyXVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ2NsaWVudCcgIOKGkiBbcHJvamVjdCwgdGFzaywgdXNlcl1cbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09IG51bGwvb3RybyAg4oaSIHRvZGFzIHNpIGVsIGZsYWcgdGVtcG9yYWwgZXN0w6EgZW4gZmFsc2UgKGNvbnRleHRvIGFtcGxpbylcbiAqICAgLSBhZ2VudC50eXBlICE9PSAnY2xvbmUnICAgICAg4oaSIG5pbmd1bmEgKHNpbiBALW1lbnRpb25zIHBvciBhaG9yYSlcbiAqXG4gKiBFbCBgb3ZlcnJpZGVgIChwcm9wIGBlbmFibGVkVHlwZXNgIGRlbCBjb21wb25lbnRlIGNvbnN1bWlkb3IpIHNpZW1wcmUgZ2FuYS5cbiAqXG4gKiBNaWVudHJhcyBgVEVNUF9DT05URVhUX01FTlRJT05TX1JFUVVJUkVfUFJPSkVDVF9PUl9DTElFTlRfRU5USVRZYCBzZWEgdHJ1ZSwgdHJhcyBlbCBvdmVycmlkZVxuICogc29sbyBzZSBwZXJtaXRlIGNvbnRpbnVhciBzaSBgYWdlbnQuZW50aXR5YCBlcyBgcHJvamVjdGAgbyBgY2xpZW50YCAoc2luIEAgcGFyYSBnbG9iYWwvbnVsbC9vdHJvcykuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VNZW50aW9uQWxsb3dlZFR5cGVzID0gKG92ZXJyaWRlPzogQ29udGV4dEVudGl0eVR5cGVbXSk6IFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICByZXR1cm4gdXNlTWVtbygoKTogVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9PiB7XG4gICAgLy8gQWdlbnRlcyBjdXN0b206IGxvcyB0aXBvcyBkaXNwb25pYmxlcyBzZSBkZXJpdmFuIGRlIHN1cyBjb25lY3RvcmVzIENPUi5cbiAgICAvLyB0YXNrc19yZWFkIOKGkiBbdXNlciwgdGFza107IHByb2plY3RzX3JlYWQg4oaSIGFncmVnYSBwcm9qZWN0OyBjbGllbnRzX3JlYWQg4oaSIGFncmVnYSBjbGllbnQuXG4gICAgLy8gTG9zIGNvbmVjdG9yZXMgZXN0w6FuIGVuY2FkZW5hZG9zOiBjbGllbnRzIGltcGxpY2EgcHJvamVjdHMsIHByb2plY3RzIGltcGxpY2EgdGFza3MuXG4gICAgaWYgKGFnZW50Py50eXBlID09PSAnY3VzdG9tJykge1xuICAgICAgY29uc3QgY29yU2x1Z3MgPSBhZ2VudC5jb25uZWN0b3JzPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ0NPUicpPy5zbHVncyA/PyBbXVxuICAgICAgY29uc3QgaGFzQ2xpZW50cyA9IGNvclNsdWdzLmluY2x1ZGVzKCdjbGllbnRzX3JlYWQnKVxuICAgICAgY29uc3QgaGFzUHJvamVjdHMgPSBjb3JTbHVncy5pbmNsdWRlcygncHJvamVjdHNfcmVhZCcpXG4gICAgICBjb25zdCBoYXNUYXNrcyA9IGNvclNsdWdzLmluY2x1ZGVzKCd0YXNrc19yZWFkJylcblxuICAgICAgbGV0IGNvclR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdID0gW11cbiAgICAgIGlmIChoYXNDbGllbnRzKSB7XG4gICAgICAgIGNvclR5cGVzID0gWyd1c2VyJywgJ3Rhc2snLCAncHJvamVjdCcsICdjbGllbnQnXVxuICAgICAgfSBlbHNlIGlmIChoYXNQcm9qZWN0cykge1xuICAgICAgICBjb3JUeXBlcyA9IFsndXNlcicsICd0YXNrJywgJ3Byb2plY3QnXVxuICAgICAgfSBlbHNlIGlmIChoYXNUYXNrcykge1xuICAgICAgICBjb3JUeXBlcyA9IFsndXNlcicsICd0YXNrJ11cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWNwU2x1Z3MgPVxuICAgICAgICBhZ2VudC5jb25uZWN0b3JzXG4gICAgICAgICAgPy5maW5kKGMgPT4gYy5ncm91cCA9PT0gJ01DUCcpXG4gICAgICAgICAgPy5zbHVncz8uZmlsdGVyKChzKTogcyBpcyBzdHJpbmcgPT4gdHlwZW9mIHMgPT09ICdzdHJpbmcnICYmIHMudHJpbSgpLmxlbmd0aCA+IDApID8/IFtdXG4gICAgICBpZiAobWNwU2x1Z3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb3JUeXBlcyA9IFsuLi5jb3JUeXBlcywgJ21jcCddXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFsbG93ZWRUeXBlczogY29yVHlwZXMsXG4gICAgICAgIGRlZmF1bHRUeXBlOiBjb3JUeXBlc1swXSA/PyAndXNlcicsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGFzIEAtbWVudGlvbnMgKHkgcG9yIGVuZGUgbG9zIGZldGNoIGRlIHJlY2VudHMpIHNvbG8gYXBsaWNhbiBhIGFnZW50ZXMgY2xvbmUuXG4gICAgaWYgKGFnZW50Py50eXBlICE9PSAnY2xvbmUnKSB7XG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IFtdLCBkZWZhdWx0VHlwZTogJ3VzZXInIH1cbiAgICB9XG5cbiAgICBpZiAob3ZlcnJpZGUgJiYgb3ZlcnJpZGUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPSBvdmVycmlkZVswXVxuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBvdmVycmlkZSwgZGVmYXVsdFR5cGUgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSAhPT0gJ3Byb2plY3QnICYmXG4gICAgICBhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50J1xuICAgICkge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnKSB7XG4gICAgICByZXR1cm4geyBhbGxvd2VkVHlwZXM6IFtdLCBkZWZhdWx0VHlwZTogJ3VzZXInIH1cbiAgICB9XG5cbiAgICBsZXQgYWxsb3dlZFR5cGVzOiBDb250ZXh0RW50aXR5VHlwZVtdID0gQUxMX1RZUEVTXG5cbiAgICBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbJ3VzZXInLCAndGFzayddXG4gICAgfSBlbHNlIGlmIChhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd1c2VyJywgJ3Rhc2snLCAncHJvamVjdCddXG4gICAgfVxuXG4gICAgLy8gYHVzZXJgIHPDs2xvIHNlIGhhYmlsaXRhIGp1bnRvIGNvbiBgdGFza2AuXG4gICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoJ3Rhc2snKSkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gYWxsb3dlZFR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUgIT09ICd1c2VyJylcbiAgICB9XG5cbiAgICBjb25zdCBtY3BTbHVncyA9XG4gICAgICBhZ2VudD8uY29ubmVjdG9yc1xuICAgICAgICA/LmZpbmQoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5ncm91cCA9PT0gJ01DUCcpXG4gICAgICAgID8uc2x1Z3M/LmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKSA/PyBbXVxuICAgIGlmIChtY3BTbHVncy5sZW5ndGggPiAwKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBbLi4uYWxsb3dlZFR5cGVzLCAnbWNwJ11cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsb3dlZFR5cGVzLFxuICAgICAgZGVmYXVsdFR5cGU6IGFsbG93ZWRUeXBlc1swXSA/PyAndXNlcicsXG4gICAgfVxuICB9LCBbYWdlbnQ/LmVudGl0eSwgYWdlbnQ/LnR5cGUsIGFnZW50Py5jb25uZWN0b3JzLCBvdmVycmlkZV0pXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTQSxPQUFPLFFBQVEsT0FBTztBQUMvQixTQUFTQyxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFHNUQsSUFBTUMsU0FBOEIsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQzs7QUFFNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsc0RBQXNELEdBQUcsSUFBSTtBQU9u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
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsIkFMTF9UWVBFUyIsIlRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWSIsInVzZU1lbnRpb25BbGxvd2VkVHlwZXMiLCJvdmVycmlkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJfYWdlbnQkY29ubmVjdG9ycyRmaW4iLCJfYWdlbnQkY29ubmVjdG9ycyIsIl9hbGxvd2VkVHlwZXMkIiwidHlwZSIsImFsbG93ZWRUeXBlcyIsImRlZmF1bHRUeXBlIiwibGVuZ3RoIiwiZW50aXR5IiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJtY3BTbHVncyIsImNvbm5lY3RvcnMiLCJmaW5kIiwiY29ubmVjdG9yIiwiZ3JvdXAiLCJzbHVncyIsInNsdWciLCJ0cmltIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5jb25zdCBBTExfVFlQRVM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snLCAndXNlciddXG5cbi8qKlxuICogUmVzdHJpY2Npw7NuIHRlbXBvcmFsIGRlIHByb2R1Y3RvOiBlbCBwb3BvdmVyIGRlIEAtbWVudGlvbnMgKENPUiArIE1DUCkgc29sbyBhcGxpY2EgYVxuICogYWdlbnRlcyBjdXlvIGBlbnRpdHlgIGVzIHByb3llY3RvIG8gY2xpZW50ZSAo4oCcZXNwZWNpYWxpc3Rhc+KAnSBhY290YWRvcykuIEVsIHJlc3RvIG5vIHZlIHRhYnNcbiAqIG5pIE1DUCBhdW5xdWUgdGVuZ2EgY29uZWN0b3JlcyBhY3Rpdm9zLiBQYXNhciBhIGBmYWxzZWAgY3VhbmRvIHNlIGhhYmlsaXRlIGRlIG51ZXZvIGVsXG4gKiBhbGNhbmNlIGFtcGxpbzsgbm8gYm9ycmFyIGVsIGN1ZXJwbyBkZWwgaG9vayBxdWUgcXVlZGEgZGViYWpvLlxuICovXG5jb25zdCBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkgPSB0cnVlXG5cbmV4cG9ydCB0eXBlIFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPSB7XG4gIGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXVxuICBkZWZhdWx0VHlwZTogQ29udGV4dEVudGl0eVR5cGVcbn1cblxuLyoqXG4gKiBEZXJpdmEgZGVsIGFnZW50IGFjdGl2byBxdcOpIHRhYnMgZGVsIGNvbnRleHQgbWVudGlvbiBkZWJlbiBlc3RhciBkaXNwb25pYmxlcy5cbiAqXG4gKiBSZWdsYXM6XG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAnZ2xvYmFsJyAg4oaSIG5pbmd1bmEgKHNpbiBALW1lbnRpb25zKVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ3Byb2plY3QnIOKGkiBbdGFzaywgdXNlcl1cbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdjbGllbnQnICDihpIgW3Byb2plY3QsIHRhc2ssIHVzZXJdXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSBudWxsL290cm8gIOKGkiB0b2RhcyBzaSBlbCBmbGFnIHRlbXBvcmFsIGVzdMOhIGVuIGZhbHNlIChjb250ZXh0byBhbXBsaW8pXG4gKiAgIC0gYWdlbnQudHlwZSAhPT0gJ2Nsb25lJyAgICAgIOKGkiBuaW5ndW5hIChzaW4gQC1tZW50aW9ucyBwb3IgYWhvcmEpXG4gKlxuICogRWwgYG92ZXJyaWRlYCAocHJvcCBgZW5hYmxlZFR5cGVzYCBkZWwgY29tcG9uZW50ZSBjb25zdW1pZG9yKSBzaWVtcHJlIGdhbmEuXG4gKlxuICogTWllbnRyYXMgYFRFTVBfQ09OVEVYVF9NRU5USU9OU19SRVFVSVJFX1BST0pFQ1RfT1JfQ0xJRU5UX0VOVElUWWAgc2VhIHRydWUsIHRyYXMgZWwgb3ZlcnJpZGVcbiAqIHNvbG8gc2UgcGVybWl0ZSBjb250aW51YXIgc2kgYGFnZW50LmVudGl0eWAgZXMgYHByb2plY3RgIG8gYGNsaWVudGAgKHNpbiBAIHBhcmEgZ2xvYmFsL251bGwvb3Ryb3MpLlxuICovXG5leHBvcnQgY29uc3QgdXNlTWVudGlvbkFsbG93ZWRUeXBlcyA9IChvdmVycmlkZT86IENvbnRleHRFbnRpdHlUeXBlW10pOiBVc2VNZW50aW9uQWxsb3dlZFR5cGVzUmVzdWx0ID0+IHtcbiAgY29uc3QgeyBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgcmV0dXJuIHVzZU1lbW8oKCk6IFVzZU1lbnRpb25BbGxvd2VkVHlwZXNSZXN1bHQgPT4ge1xuICAgIC8vIExhcyBALW1lbnRpb25zICh5IHBvciBlbmRlIGxvcyBmZXRjaCBkZSByZWNlbnRzKSBzb2xvIGFwbGljYW4gYSBhZ2VudGVzIGNsb25lLlxuICAgIC8vIExvcyBhZ2VudGVzIG5vLWNsb25lIChjdXN0b20sIGV0Yy4pIG5vIGxhcyB0aWVuZW4gaGFiaWxpdGFkYXMgcG9yIGFob3JhLlxuICAgIGlmIChhZ2VudD8udHlwZSAhPT0gJ2Nsb25lJykge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgaWYgKG92ZXJyaWRlICYmIG92ZXJyaWRlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlID0gb3ZlcnJpZGVbMF1cbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogb3ZlcnJpZGUsIGRlZmF1bHRUeXBlIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBURU1QX0NPTlRFWFRfTUVOVElPTlNfUkVRVUlSRV9QUk9KRUNUX09SX0NMSUVOVF9FTlRJVFkgJiZcbiAgICAgIGFnZW50Py5lbnRpdHkgIT09ICdwcm9qZWN0JyAmJlxuICAgICAgYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCdcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGFsbG93ZWRUeXBlczogW10sIGRlZmF1bHRUeXBlOiAndXNlcicgfVxuICAgIH1cblxuICAgIGlmIChhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJykge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgbGV0IGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSA9IEFMTF9UWVBFU1xuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd1c2VyJywgJ3Rhc2snXVxuICAgIH0gZWxzZSBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsndXNlcicsICd0YXNrJywgJ3Byb2plY3QnXVxuICAgIH1cblxuICAgIC8vIGB1c2VyYCBzw7NsbyBzZSBoYWJpbGl0YSBqdW50byBjb24gYHRhc2tgLlxuICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKCd0YXNrJykpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IGFsbG93ZWRUeXBlcy5maWx0ZXIodHlwZSA9PiB0eXBlICE9PSAndXNlcicpXG4gICAgfVxuXG4gICAgY29uc3QgbWNwU2x1Z3MgPVxuICAgICAgYWdlbnQ/LmNvbm5lY3RvcnNcbiAgICAgICAgPy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAgPT09ICdNQ1AnKVxuICAgICAgICA/LnNsdWdzPy5maWx0ZXIoKHNsdWcpOiBzbHVnIGlzIHN0cmluZyA9PiB0eXBlb2Ygc2x1ZyA9PT0gJ3N0cmluZycgJiYgc2x1Zy50cmltKCkubGVuZ3RoID4gMCkgPz8gW11cbiAgICBpZiAobWNwU2x1Z3MubGVuZ3RoID4gMCkge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWy4uLmFsbG93ZWRUeXBlcywgJ21jcCddXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbG93ZWRUeXBlcyxcbiAgICAgIGRlZmF1bHRUeXBlOiBhbGxvd2VkVHlwZXNbMF0gPz8gJ3VzZXInLFxuICAgIH1cbiAgfSwgW2FnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBhZ2VudD8uY29ubmVjdG9ycywgb3ZlcnJpZGVdKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsT0FBTyxRQUFRLE9BQU87QUFDL0IsU0FBU0MsZ0JBQWdCLFFBQVEsMkJBQTJCO0FBRzVELElBQU1DLFNBQThCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7O0FBRTVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHNEQUFzRCxHQUFHLElBQUk7QUFPbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxRQUE4QixFQUFtQztFQUN0RyxJQUFBQyxpQkFBQSxHQUFrQkwsZ0JBQWdCLENBQUMsQ0FBQztJQUE1Qk0sS0FBSyxHQUFBRCxpQkFBQSxDQUFMQyxLQUFLO0VBRWIsT0FBT1AsT0FBTyxDQUFDLFlBQW9DO0lBQUEsSUFBQVEscUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsY0FBQTtJQUNqRDtJQUNBO0lBQ0EsSUFBSSxDQUFBSCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUksSUFBSSxNQUFLLE9BQU8sRUFBRTtNQUMzQixPQUFPO1FBQUVDLFlBQVksRUFBRSxFQUFFO1FBQUVDLFdBQVcsRUFBRTtNQUFPLENBQUM7SUFDbEQ7SUFFQSxJQUFJUixRQUFRLElBQUlBLFFB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
|