@projectcor/maia-components 2.11.90-6 → 2.11.91-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/lib/components/atoms/Chip/Chip.js +12 -5
- package/lib/components/atoms/Chip/styles.js +6 -6
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +7 -3
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +155 -28
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +23 -4
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +7 -15
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +4 -10
- package/lib/components/atoms/MAIAInput/MAIAInput.js +241 -176
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +3 -6
- package/lib/components/atoms/MAIAInput/styles.js +86 -83
- package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
- package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
- package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
- package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
- package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
- package/lib/components/atoms/icons/SkillIcon.js +30 -0
- package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
- package/lib/components/atoms/icons/index.js +12 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +14 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +3 -3
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +41 -116
- package/lib/components/molecules/ChatAIHome/styles.js +84 -134
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +11 -36
- package/lib/components/molecules/ChatAIMessages/newStyles.js +10 -26
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +50 -30
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +1 -4
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +4 -9
- package/lib/components/molecules/ChatAIModal/constants.js +6 -2
- package/lib/components/molecules/ChatAIModal/layout.js +2 -2
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
- package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +39 -65
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/molecules/Sidebar/Sidebar.js +25 -4
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
- package/lib/components/organisms/AbmSkillModal/index.js +2 -0
- package/lib/components/organisms/ChatAI/ChatAI.js +16 -5
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
- package/lib/constants/config.js +4 -1
- package/lib/constants/maiaTaskPanelAccess.js +4 -4
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +4 -1
- package/lib/context/cor-user.js +1 -9
- package/lib/context/global-context.js +1 -1
- package/lib/dev/DevChatAI.js +2 -2
- package/lib/hooks/useChatManager/useChatManager.js +41 -21
- package/lib/hooks/useChatMessages/useChatMessages.js +14 -1
- package/lib/hooks/useContextMentions.js +47 -9
- package/lib/hooks/useContextPinPopover.js +8 -1
- package/lib/hooks/useEntitySearch.js +277 -91
- package/lib/hooks/useFrequentlyUsedActions.js +2 -4
- package/lib/hooks/useMentionAllowedTypes.js +26 -8
- package/lib/hooks/useMentionPopover.js +42 -13
- package/lib/hooks/useProjectSummaryConfig.js +30 -23
- package/lib/lang/br/index.js +61 -20
- package/lib/lang/en/index.js +61 -20
- package/lib/lang/es/index.js +61 -20
- package/lib/lang/fr/index.js +63 -19
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Agents/getAgents.js +2 -2
- package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
- package/lib/services/maia/Orchestrator/orchestrator.js +7 -1
- package/lib/services/maia/Skills/createSkill.js +39 -0
- package/lib/services/maia/Skills/deleteSkill.js +38 -0
- package/lib/services/maia/Skills/generateSkill.js +41 -0
- package/lib/services/maia/Skills/getSkills.js +90 -0
- package/lib/services/maia/Skills/updateSkill.js +39 -0
- package/lib/store/chatsStore.types.js +1 -1
- package/lib/styles/config.js +2 -2
- package/lib/types/Action.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/types/contextMention.js +1 -1
- package/lib/types/skill.js +2 -0
- package/lib/utils/actionCategoryMap.js +2 -6
- package/lib/utils/actionIconMap.js +2 -8
- package/lib/utils/contextMentionIcons.js +29 -1
- package/lib/utils/contextMentionTriggers.js +3 -1
- package/lib/utils/renderContextMentions.js +9 -4
- package/lib/utils/streamActivityMessages.js +1 -2
- package/package.json +1 -1
- package/lib/components/atoms/icons/ActionCalendarIcon.js +0 -112
- package/lib/components/atoms/icons/ActionChatIcon.js +0 -71
- package/lib/components/atoms/icons/ActionTimeBackIcon.js +0 -112
- package/lib/constants/plannerSyncEvents.js +0 -15
- package/lib/utils/hoursPlannerQuickActionType.js +0 -65
- package/lib/utils/orchestratorSubagents.js +0 -11
|
@@ -47,6 +47,7 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
47
47
|
updateTrigger = _useContextMentions.updateTrigger,
|
|
48
48
|
replaceTriggerWithChip = _useContextMentions.replaceTriggerWithChip,
|
|
49
49
|
syncTriggerAtRunLength = _useContextMentions.syncTriggerAtRunLength,
|
|
50
|
+
syncSkillTrigger = _useContextMentions.syncSkillTrigger,
|
|
50
51
|
updateSlashTrigger = _useContextMentions.updateSlashTrigger,
|
|
51
52
|
replaceTriggerWithSlashChip = _useContextMentions.replaceTriggerWithSlashChip,
|
|
52
53
|
serialize = _useContextMentions.serialize,
|
|
@@ -110,6 +111,34 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
110
111
|
return ro.disconnect();
|
|
111
112
|
};
|
|
112
113
|
}, [placeholder, disabled, recomputePlaceholderTruncation]);
|
|
114
|
+
var emitInputState = useCallback(function () {
|
|
115
|
+
var trig = updateTrigger();
|
|
116
|
+
var slashTrig = updateSlashTrigger();
|
|
117
|
+
var state = serialize();
|
|
118
|
+
var isEmpty = state.text.trim() === '';
|
|
119
|
+
if (isEmpty) {
|
|
120
|
+
normalizeEmptyEditorDom();
|
|
121
|
+
state = {
|
|
122
|
+
text: '',
|
|
123
|
+
mentions: [],
|
|
124
|
+
slashCommands: []
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
syncEditorEmptyAttribute(isEmpty);
|
|
128
|
+
setLogicalEmpty(isEmpty);
|
|
129
|
+
onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
|
|
130
|
+
trigger: {
|
|
131
|
+
active: trig.active,
|
|
132
|
+
query: trig.query,
|
|
133
|
+
atRunLength: trig.atRunLength
|
|
134
|
+
},
|
|
135
|
+
slashTrigger: {
|
|
136
|
+
active: slashTrig.active,
|
|
137
|
+
query: slashTrig.query
|
|
138
|
+
}
|
|
139
|
+
}));
|
|
140
|
+
queueMicrotask(recomputePlaceholderTruncation);
|
|
141
|
+
}, [updateTrigger, updateSlashTrigger, serialize, normalizeEmptyEditorDom, syncEditorEmptyAttribute, onInput, recomputePlaceholderTruncation]);
|
|
113
142
|
useImperativeHandle(ref, function () {
|
|
114
143
|
return {
|
|
115
144
|
focus: focus,
|
|
@@ -119,8 +148,131 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
119
148
|
setLogicalEmpty(true);
|
|
120
149
|
queueMicrotask(recomputePlaceholderTruncation);
|
|
121
150
|
},
|
|
151
|
+
setPlainText: function setPlainText(text) {
|
|
152
|
+
var editor = editorRef.current;
|
|
153
|
+
if (!editor) return;
|
|
154
|
+
var plain = text !== null && text !== void 0 ? text : '';
|
|
155
|
+
editor.textContent = plain;
|
|
156
|
+
skipNextInput.current = true;
|
|
157
|
+
var state = serialize();
|
|
158
|
+
var isEmpty = state.text.trim() === '';
|
|
159
|
+
if (isEmpty) {
|
|
160
|
+
editor.innerHTML = '';
|
|
161
|
+
}
|
|
162
|
+
syncEditorEmptyAttribute(isEmpty);
|
|
163
|
+
setLogicalEmpty(isEmpty);
|
|
164
|
+
onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
|
|
165
|
+
trigger: {
|
|
166
|
+
active: false,
|
|
167
|
+
query: '',
|
|
168
|
+
atRunLength: 0
|
|
169
|
+
},
|
|
170
|
+
slashTrigger: {
|
|
171
|
+
active: false,
|
|
172
|
+
query: ''
|
|
173
|
+
}
|
|
174
|
+
}));
|
|
175
|
+
var selection = window.getSelection();
|
|
176
|
+
if (selection && editor.childNodes.length > 0) {
|
|
177
|
+
var range = document.createRange();
|
|
178
|
+
range.selectNodeContents(editor);
|
|
179
|
+
range.collapse(false);
|
|
180
|
+
selection.removeAllRanges();
|
|
181
|
+
selection.addRange(range);
|
|
182
|
+
}
|
|
183
|
+
queueMicrotask(function () {
|
|
184
|
+
skipNextInput.current = false;
|
|
185
|
+
recomputePlaceholderTruncation();
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
insertMentionTrigger: function insertMentionTrigger() {
|
|
189
|
+
var editor = editorRef.current;
|
|
190
|
+
if (!editor || disabled) return;
|
|
191
|
+
focus();
|
|
192
|
+
var selection = window.getSelection();
|
|
193
|
+
if (!selection) return;
|
|
194
|
+
if (!selection.anchorNode || !editor.contains(selection.anchorNode)) {
|
|
195
|
+
var endRange = document.createRange();
|
|
196
|
+
endRange.selectNodeContents(editor);
|
|
197
|
+
endRange.collapse(false);
|
|
198
|
+
selection.removeAllRanges();
|
|
199
|
+
selection.addRange(endRange);
|
|
200
|
+
}
|
|
201
|
+
var range = selection.getRangeAt(0);
|
|
202
|
+
range.collapse(true);
|
|
203
|
+
var prefix = '';
|
|
204
|
+
var startContainer = range.startContainer,
|
|
205
|
+
startOffset = range.startOffset;
|
|
206
|
+
if (startContainer.nodeType === Node.TEXT_NODE) {
|
|
207
|
+
var prevChar = startOffset > 0 ? startContainer.data.charAt(startOffset - 1) : '';
|
|
208
|
+
// Espacio solo si hay texto previo que no sea límite ni `@` (@@ deben quedar seguidos).
|
|
209
|
+
if (prevChar && !/[\s([{@]/.test(prevChar)) {
|
|
210
|
+
prefix = ' ';
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
var inserted = "".concat(prefix, "@");
|
|
214
|
+
var textNode = document.createTextNode(inserted);
|
|
215
|
+
range.insertNode(textNode);
|
|
216
|
+
|
|
217
|
+
// Si el `@` quedó en un nodo nuevo, unir con el text node previo que termina en `@`
|
|
218
|
+
// para que detectMentionTrigger vea el run completo (@@, @@@, …).
|
|
219
|
+
var prevSibling = textNode.previousSibling;
|
|
220
|
+
var caretNode = textNode;
|
|
221
|
+
var caretOffset = inserted.length;
|
|
222
|
+
if (prefix === '' && (prevSibling === null || prevSibling === void 0 ? void 0 : prevSibling.nodeType) === Node.TEXT_NODE && prevSibling.data.endsWith('@')) {
|
|
223
|
+
var prevText = prevSibling;
|
|
224
|
+
caretOffset = prevText.data.length + inserted.length;
|
|
225
|
+
prevText.data += inserted;
|
|
226
|
+
textNode.remove();
|
|
227
|
+
caretNode = prevText;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// El caret debe quedar DENTRO del text node (después de `@`).
|
|
231
|
+
// `setStartAfter` lo deja en el padre y detectMentionTrigger no activa el popover.
|
|
232
|
+
range.setStart(caretNode, caretOffset);
|
|
233
|
+
range.collapse(true);
|
|
234
|
+
selection.removeAllRanges();
|
|
235
|
+
selection.addRange(range);
|
|
236
|
+
emitInputState();
|
|
237
|
+
},
|
|
238
|
+
insertSlashTrigger: function insertSlashTrigger() {
|
|
239
|
+
var editor = editorRef.current;
|
|
240
|
+
if (!editor || disabled) return;
|
|
241
|
+
focus();
|
|
242
|
+
var selection = window.getSelection();
|
|
243
|
+
if (!selection) return;
|
|
244
|
+
if (!selection.anchorNode || !editor.contains(selection.anchorNode)) {
|
|
245
|
+
var endRange = document.createRange();
|
|
246
|
+
endRange.selectNodeContents(editor);
|
|
247
|
+
endRange.collapse(false);
|
|
248
|
+
selection.removeAllRanges();
|
|
249
|
+
selection.addRange(endRange);
|
|
250
|
+
}
|
|
251
|
+
var range = selection.getRangeAt(0);
|
|
252
|
+
range.collapse(true);
|
|
253
|
+
var prefix = '';
|
|
254
|
+
var startContainer = range.startContainer,
|
|
255
|
+
startOffset = range.startOffset;
|
|
256
|
+
if (startContainer.nodeType === Node.TEXT_NODE) {
|
|
257
|
+
var prevChar = startOffset > 0 ? startContainer.data.charAt(startOffset - 1) : '';
|
|
258
|
+
if (prevChar && !/[\s([{]/.test(prevChar)) {
|
|
259
|
+
prefix = ' ';
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
var inserted = "".concat(prefix, "/");
|
|
263
|
+
var textNode = document.createTextNode(inserted);
|
|
264
|
+
range.insertNode(textNode);
|
|
265
|
+
|
|
266
|
+
// Caret dentro del text node para que detectSlashTrigger active el dropdown.
|
|
267
|
+
range.setStart(textNode, inserted.length);
|
|
268
|
+
range.collapse(true);
|
|
269
|
+
selection.removeAllRanges();
|
|
270
|
+
selection.addRange(range);
|
|
271
|
+
emitInputState();
|
|
272
|
+
},
|
|
122
273
|
serialize: serialize,
|
|
123
274
|
syncTriggerAtRunLength: syncTriggerAtRunLength,
|
|
275
|
+
syncSkillTrigger: syncSkillTrigger,
|
|
124
276
|
hasVisualMultiline: function hasVisualMultiline() {
|
|
125
277
|
var _editor$textContent$t, _editor$textContent2;
|
|
126
278
|
var editor = editorRef.current;
|
|
@@ -191,38 +343,13 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
191
343
|
});
|
|
192
344
|
}
|
|
193
345
|
};
|
|
194
|
-
}, [focus, clearEditorDom, serialize, syncTriggerAtRunLength, replaceTriggerWithChip, replaceTriggerWithSlashChip, onInput, recomputePlaceholderTruncation, syncEditorEmptyAttribute]);
|
|
346
|
+
}, [focus, clearEditorDom, serialize, syncTriggerAtRunLength, syncSkillTrigger, replaceTriggerWithChip, replaceTriggerWithSlashChip, onInput, recomputePlaceholderTruncation, syncEditorEmptyAttribute, emitInputState, disabled, editorRef]);
|
|
195
347
|
var handleInput = function handleInput() {
|
|
196
348
|
if (skipNextInput.current) {
|
|
197
349
|
skipNextInput.current = false;
|
|
198
350
|
return;
|
|
199
351
|
}
|
|
200
|
-
|
|
201
|
-
var slashTrig = updateSlashTrigger();
|
|
202
|
-
var state = serialize();
|
|
203
|
-
var isEmpty = state.text.trim() === '';
|
|
204
|
-
if (isEmpty) {
|
|
205
|
-
normalizeEmptyEditorDom();
|
|
206
|
-
state = {
|
|
207
|
-
text: '',
|
|
208
|
-
mentions: [],
|
|
209
|
-
slashCommands: []
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
syncEditorEmptyAttribute(isEmpty);
|
|
213
|
-
setLogicalEmpty(isEmpty);
|
|
214
|
-
onInput === null || onInput === void 0 || onInput(_objectSpread(_objectSpread({}, state), {}, {
|
|
215
|
-
trigger: {
|
|
216
|
-
active: trig.active,
|
|
217
|
-
query: trig.query,
|
|
218
|
-
atRunLength: trig.atRunLength
|
|
219
|
-
},
|
|
220
|
-
slashTrigger: {
|
|
221
|
-
active: slashTrig.active,
|
|
222
|
-
query: slashTrig.query
|
|
223
|
-
}
|
|
224
|
-
}));
|
|
225
|
-
queueMicrotask(recomputePlaceholderTruncation);
|
|
352
|
+
emitInputState();
|
|
226
353
|
};
|
|
227
354
|
var handlePaste = function handlePaste(e) {
|
|
228
355
|
e.preventDefault();
|
|
@@ -266,4 +393,4 @@ export var ContextMentionEditor = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
266
393
|
});
|
|
267
394
|
});
|
|
268
395
|
ContextMentionEditor.displayName = 'ContextMentionEditor';
|
|
269
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJUb29sdGlwIiwidXNlQ29udGV4dE1lbnRpb25zIiwiYnVpbGRDaGlwRWxlbWVudCIsIkNvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyIsImJ1aWxkU2xhc2hDaGlwRWxlbWVudCIsIlNDTUVFZGl0YWJsZSIsImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciIsImVkaXRvciIsInBsYWNlaG9sZGVyIiwidHJpbW1lZCIsInRyaW0iLCJjbGllbnRXaWR0aCIsInN0eWxlcyIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJjdHgiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiZm9udCIsImNvbmNhdCIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJtZWFzdXJlZCIsIm1lYXN1cmVUZXh0Iiwid2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nUmlnaHQiLCJib3JkZXJMZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYXZhaWxhYmxlIiwiTWF0aCIsIm1heCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiX3JlZiIsInJlZiIsIl9wbGFjZWhvbGRlciR0cmltMiIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uRm9jdXMiLCJvbkJsdXIiLCJfdXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwidXBkYXRlVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aENoaXAiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwidXBkYXRlU2xhc2hUcmlnZ2VyIiwicmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwIiwic2VyaWFsaXplIiwiY2xlYXJFZGl0b3JEb20iLCJjbGVhciIsImZvY3VzIiwic2tpcE5leHRJbnB1dCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInBsYWNlaG9sZGVyVHJ1bmNhdGVkIiwic2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvZ2ljYWxFbXB0eSIsInNldExvZ2ljYWxFbXB0eSIsInN5bmNFZGl0b3JFbXB0eUF0dHJpYnV0ZSIsImlzRW1wdHkiLCJjdXJyZW50Iiwic2V0QXR0cmlidXRlIiwiU3RyaW5nIiwibm9ybWFsaXplRW1wdHlFZGl0b3JEb20iLCJfZWRpdG9yJHRleHRDb250ZW50IiwidGV4dENvbnRlbnQiLCJpbm5lckhUTUwiLCJzZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwic2VsZWN0Tm9kZUNvbnRlbnRzIiwiY29sbGFwc2UiLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsInJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbiIsIl9wbGFjZWhvbGRlciR0cmltIiwiZWwiLCJwaCIsImlzRWRpdG9yTG9naWNhbGx5RW1wdHkiLCJ0ZXh0IiwidW5kZWZpbmVkIiwicm8iLCJSZXNpemVPYnNlcnZlciIsInF1ZXVlTWljcm90YXNrIiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJoYXNWaXN1YWxNdWx0aWxpbmUiLCJfZWRpdG9yJHRleHRDb250ZW50JHQiLCJfZWRpdG9yJHRleHRDb250ZW50MiIsImxpbmVIZWlnaHQiLCJlZGl0b3JIZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJoZWlnaHQiLCJpc011bHRpbGluZSIsImdldEVkaXRvckNsaWVudFJlY3QiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJpbnNlcnRNZW50aW9uIiwibWVudGlvbiIsImNoaXAiLCJzdGF0ZSIsIl9vYmplY3RTcHJlYWQiLCJ0cmlnZ2VyIiwiYWN0aXZlIiwicXVlcnkiLCJhdFJ1bkxlbmd0aCIsInNsYXNoVHJpZ2dlciIsImluc2VydFNsYXNoQ29tbWFuZCIsImNvbW1hbmQiLCJoYW5kbGVJbnB1dCIsInRyaWciLCJzbGFzaFRyaWciLCJtZW50aW9ucyIsInNsYXNoQ29tbWFuZHMiLCJoYW5kbGVQYXN0ZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNsaXBib2FyZERhdGEiLCJnZXREYXRhIiwicmFuZ2VDb3VudCIsImRlbGV0ZUZyb21Eb2N1bWVudCIsImdldFJhbmdlQXQiLCJpbnNlcnROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJjb2xsYXBzZVRvRW5kIiwidHJpbW1lZFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXJUb29sdGlwVGl0bGUiLCJjaGlsZHJlbiIsInRpdGxlIiwic3R5bGUiLCJkaXNwbGF5IiwibWluV2lkdGgiLCJjb250ZW50RWRpdGFibGUiLCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciLCJyb2xlIiwib25QYXN0ZSIsImRpc3BsYXlOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25FZGl0b3IvQ29udGV4dE1lbnRpb25FZGl0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENsaXBib2FyZEV2ZW50LFxuICBmb3J3YXJkUmVmLFxuICBLZXlib2FyZEV2ZW50LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZUNvbnRleHRNZW50aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBidWlsZENoaXBFbGVtZW50IH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25DaGlwJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25DaGlwR2xvYmFsU3R5bGVzIH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25DaGlwL0NvbnRleHRNZW50aW9uQ2hpcC5zdHlsZXMnXG5pbXBvcnQgeyBidWlsZFNsYXNoQ2hpcEVsZW1lbnQsIFNsYXNoQ29tbWFuZENoaXBEYXRhIH0gZnJvbSAnLi4vU2xhc2hDb21tYW5kQ2hpcCdcbmltcG9ydCB7IFNDTUVFZGl0YWJsZSB9IGZyb20gJy4vQ29udGV4dE1lbnRpb25FZGl0b3Iuc3R5bGVzJ1xuXG5jb25zdCBpc1BsYWNlaG9sZGVyVHJ1bmNhdGVkSW5FZGl0b3IgPSAoZWRpdG9yOiBIVE1MRWxlbWVudCwgcGxhY2Vob2xkZXI6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB0cmltbWVkID0gcGxhY2Vob2xkZXIudHJpbSgpXG4gIGlmICghdHJpbW1lZCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IHsgY2xpZW50V2lkdGggfSA9IGVkaXRvclxuICBpZiAoY2xpZW50V2lkdGggPD0gNCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWRpdG9yKVxuICBjb25zdCBjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0KCcyZCcpXG4gIGlmICghY3R4KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY3R4LmZvbnQgPSBgJHtzdHlsZXMuZm9udFdlaWdodH0gJHtzdHlsZXMuZm9udFNpemV9ICR7c3R5bGVzLmZvbnRGYW1pbHl9YFxuICBjb25zdCBtZWFzdXJlZCA9IGN0eC5tZWFzdXJlVGV4dCh0cmltbWVkKS53aWR0aFxuXG4gIGNvbnN0IHBhZGRpbmdMZWZ0ID0gcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ0xlZnQpIHx8IDBcbiAgY29uc3QgcGFkZGluZ1JpZ2h0ID0gcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1JpZ2h0KSB8fCAwXG4gIGNvbnN0IGJvcmRlckxlZnQgPSBwYXJzZUZsb2F0KHN0eWxlcy5ib3JkZXJMZWZ0V2lkdGgpIHx8IDBcbiAgY29uc3QgYm9yZGVyUmlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlcy5ib3JkZXJSaWdodFdpZHRoKSB8fCAwXG4gIGNvbnN0IGF2YWlsYWJsZSA9IE1hdGgubWF4KDAsIGNsaWVudFdpZHRoIC0gcGFkZGluZ0xlZnQgLSBwYWRkaW5nUmlnaHQgLSBib3JkZXJMZWZ0IC0gYm9yZGVyUmlnaHQpXG5cbiAgcmV0dXJuIG1lYXN1cmVkID4gYXZhaWxhYmxlICsgMVxufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSA9IHtcbiAgZm9jdXM6ICgpID0+IHZvaWRcbiAgY2xlYXI6ICgpID0+IHZvaWRcbiAgaW5zZXJ0TWVudGlvbjogKG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB2b2lkXG4gIGluc2VydFNsYXNoQ29tbWFuZDogKGNvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB2b2lkXG4gIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGg6IChhdFJ1bkxlbmd0aDogbnVtYmVyKSA9PiB2b2lkXG4gIHNlcmlhbGl6ZTogKCkgPT4ge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgc2xhc2hDb21tYW5kczogU2xhc2hDb21tYW5kQ2hpcERhdGFbXVxuICB9XG4gIGhhc1Zpc3VhbE11bHRpbGluZTogKCkgPT4gYm9vbGVhblxuICAvKiogUmVjdCBkZWwgw6FyZWEgZWRpdGFibGUgKHZpZXdwb3J0KTsgbG8gdXNhIGVsIHBvcG92ZXIgZGUgQCBwYXJhIGFsaW5lYXIgYW5jaG8vb3JpZ2VuLiAqL1xuICBnZXRFZGl0b3JDbGllbnRSZWN0OiAoKSA9PiBET01SZWN0IHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBDb250ZXh0TWVudGlvbkVkaXRvclByb3BzID0ge1xuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIG9uSW5wdXQ/OiAoc3RhdGU6IHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgIHNsYXNoQ29tbWFuZHM6IFNsYXNoQ29tbWFuZENoaXBEYXRhW11cbiAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gICAgc2xhc2hUcmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gIH0pID0+IHZvaWRcbiAgb25LZXlEb3duPzogKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIG9uQmx1cj86ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRleHRNZW50aW9uRWRpdG9yID0gZm9yd2FyZFJlZjxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSwgQ29udGV4dE1lbnRpb25FZGl0b3JQcm9wcz4oXG4gICh7IHBsYWNlaG9sZGVyLCBkaXNhYmxlZCwgY2xhc3NOYW1lLCBvbklucHV0LCBvbktleURvd24sIG9uRm9jdXMsIG9uQmx1ciB9LCByZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBlZGl0b3JSZWYsXG4gICAgICB1cGRhdGVUcmlnZ2VyLFxuICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgICB1cGRhdGVTbGFzaFRyaWdnZXIsXG4gICAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgICBzZXJpYWxpemUsXG4gICAgICBjbGVhcjogY2xlYXJFZGl0b3JEb20sXG4gICAgICBmb2N1cyxcbiAgICB9ID0gdXNlQ29udGV4dE1lbnRpb25zKClcbiAgICBjb25zdCBza2lwTmV4dElucHV0ID0gdXNlUmVmKGZhbHNlKVxuICAgIGNvbnN0IFtwbGFjZWhvbGRlclRydW5jYXRlZCwgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW2xvZ2ljYWxFbXB0eSwgc2V0TG9naWNhbEVtcHR5XSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgICBjb25zdCBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUgPSB1c2VDYWxsYmFjaygoaXNFbXB0eTogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1lbXB0eScsIFN0cmluZyhpc0VtcHR5KSlcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIGNvbnN0IG5vcm1hbGl6ZUVtcHR5RWRpdG9yRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgZWRpdG9yID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWRpdG9yKSByZXR1cm5cblxuICAgICAgLy8gTGltcGlhciBjdWFscXVpZXIgcmVzaWR1byAoYnIsIGVzcGFjaW9zKSBxdWUgZGVqZSBlbCBicm93c2VyIGFsIHZhY2lhciBlbCBjb250ZW50ZWRpdGFibGUuXG4gICAgICAvLyBTaW4gZXN0bywgdW4gZXNwYWNpbyBzdWVsdG8gYWN0aXZhIGRhdGEtZW1wdHk9XCJ0cnVlXCIgKyA6OmJlZm9yZSBwbGFjZWhvbGRlciBlbiBsw61uZWEgMVxuICAgICAgLy8geSBkZXNwbGF6YSBlbCBjdXJzb3IgYSBsYSBsw61uZWEgMi5cbiAgICAgIGlmIChlZGl0b3IudGV4dENvbnRlbnQ/LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgZWRpdG9yLmlubmVySFRNTCA9ICcnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKCFzZWxlY3Rpb24pIHJldHVyblxuICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKVxuICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKVxuICAgIH0sIFtlZGl0b3JSZWZdKVxuXG4gICAgY29uc3QgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgY29uc3QgcGggPSBwbGFjZWhvbGRlcj8udHJpbSgpID8/ICcnXG4gICAgICBjb25zdCBpc0VkaXRvckxvZ2ljYWxseUVtcHR5ID0gc2VyaWFsaXplKCkudGV4dC50cmltKCkgPT09ICcnXG5cbiAgICAgIGlmICghZWwgfHwgIXBoIHx8ICFpc0VkaXRvckxvZ2ljYWxseUVtcHR5KSB7XG4gICAgICAgIHNldFBsYWNlaG9sZGVyVHJ1bmNhdGVkKGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQoaXNQbGFjZWhvbGRlclRydW5jYXRlZEluRWRpdG9yKGVsLCBwaCkpXG4gICAgfSwgW3BsYWNlaG9sZGVyLCBzZXJpYWxpemVdKVxuXG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgICAgfSlcbiAgICAgIHJvLm9ic2VydmUoZWwpXG4gICAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gICAgfSwgW3BsYWNlaG9sZGVyLCBkaXNhYmxlZCwgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uXSlcblxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoXG4gICAgICByZWYsXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBmb2N1cyxcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgICBjbGVhckVkaXRvckRvbSgpXG4gICAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKHRydWUpXG4gICAgICAgICAgc2V0TG9naWNhbEVtcHR5KHRydWUpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgICAgICB9LFxuICAgICAgICBzZXJpYWxpemUsXG4gICAgICAgIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGgsXG4gICAgICAgIGhhc1Zpc3VhbE11bHRpbGluZTogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICAgICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRleHQgPSBlZGl0b3IudGV4dENvbnRlbnQ/LnRyaW0oKSA/PyAnJ1xuICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWRpdG9yKVxuICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlcy5saW5lSGVpZ2h0KSB8fCAyMlxuICAgICAgICAgIGNvbnN0IGVkaXRvckhlaWdodCA9IGVkaXRvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgICAgICBjb25zdCBpc011bHRpbGluZSA9IGVkaXRvckhlaWdodCA+IGxpbmVIZWlnaHQgKiAxLjVcblxuICAgICAgICAgIHJldHVybiBpc011bHRpbGluZVxuICAgICAgICB9LFxuICAgICAgICBnZXRFZGl0b3JDbGllbnRSZWN0OiAoKSA9PiBlZGl0b3JSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgPz8gbnVsbCxcbiAgICAgICAgaW5zZXJ0TWVudGlvbjogKG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hpcCA9IGJ1aWxkQ2hpcEVsZW1lbnQobWVudGlvbilcbiAgICAgICAgICByZXBsYWNlVHJpZ2dlcldpdGhDaGlwKGNoaXAsIG1lbnRpb24pXG4gICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIGNvbnN0IHN0YXRlID0gc2VyaWFsaXplKClcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSxcbiAgICAgICAgICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGlzRW1wdHkgPSBzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJydcbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUoaXNFbXB0eSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICAvLyBTaSBlbCBuYXZlZ2Fkb3Igbm8gZGlzcGFyYSBgaW5wdXRgIHRyYXMgZWwgY2hpcCwgZWwgZmxhZyBxdWVkYWJhIGVuIHRydWUgeSBlbCBwcsOzeGltbyBAIGRlbCB1c3VhcmlvIHNlIGlnbm9yYWJhLlxuICAgICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5zZXJ0U2xhc2hDb21tYW5kOiAoY29tbWFuZDogU2xhc2hDb21tYW5kQ2hpcERhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlwID0gYnVpbGRTbGFzaENoaXBFbGVtZW50KGNvbW1hbmQpXG4gICAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwKGNoaXAsIGNvbW1hbmQpXG4gICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIGNvbnN0IHN0YXRlID0gc2VyaWFsaXplKClcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSxcbiAgICAgICAgICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGlzRW1wdHkgPSBzdGF0ZS50ZXh0LnRyaW0oKSA9PT0gJydcbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUoaXNFbXB0eSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgICBza2lwTmV4dElucHV0LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgICAgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKClcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBbXG4gICAgICAgIGZvY3VzLFxuICAgICAgICBjbGVhckVkaXRvckRvbSxcbiAgICAgICAgc2VyaWFsaXplLFxuICAgICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgICAgICByZXBsYWNlVHJpZ2dlcldpdGhDaGlwLFxuICAgICAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgICAgIG9uSW5wdXQsXG4gICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbixcbiAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlLFxuICAgICAgXVxuICAgIClcblxuICAgIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgICAgaWYgKHNraXBOZXh0SW5wdXQuY3VycmVudCkge1xuICAgICAgICBza2lwTmV4dElucHV0LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHRyaWcgPSB1cGRhdGVUcmlnZ2VyKClcbiAgICAgIGNvbnN0IHNsYXNoVHJpZyA9IHVwZGF0ZVNsYXNoVHJpZ2dlcigpXG4gICAgICBsZXQgc3RhdGUgPSBzZXJpYWxpemUoKVxuICAgICAgY29uc3QgaXNFbXB0eSA9IHN0YXRlLnRleHQudHJpbSgpID09PSAnJ1xuICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgbm9ybWFsaXplRW1wdHlFZGl0b3JEb20oKVxuICAgICAgICBzdGF0ZSA9IHsgdGV4dDogJycsIG1lbnRpb25zOiBbXSwgc2xhc2hDb21tYW5kczogW10gfVxuICAgICAgfVxuICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKGlzRW1wdHkpXG4gICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgIG9uSW5wdXQ/Lih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogdHJpZy5hY3RpdmUsIHF1ZXJ5OiB0cmlnLnF1ZXJ5LCBhdFJ1bkxlbmd0aDogdHJpZy5hdFJ1bkxlbmd0aCB9LFxuICAgICAgICBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiBzbGFzaFRyaWcuYWN0aXZlLCBxdWVyeTogc2xhc2hUcmlnLnF1ZXJ5IH0sXG4gICAgICB9KVxuICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVBhc3RlID0gKGU6IENsaXBib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCB0ZXh0ID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuXG4gICAgICBzZWxlY3Rpb24uZGVsZXRlRnJvbURvY3VtZW50KClcbiAgICAgIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmluc2VydE5vZGUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpXG4gICAgICBzZWxlY3Rpb24uY29sbGFwc2VUb0VuZCgpXG4gICAgICBoYW5kbGVJbnB1dCgpXG4gICAgfVxuXG4gICAgY29uc3QgdHJpbW1lZFBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI/LnRyaW0oKSA/PyAnJ1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyVG9vbHRpcFRpdGxlID0gbG9naWNhbEVtcHR5ICYmIHBsYWNlaG9sZGVyVHJ1bmNhdGVkICYmIHRyaW1tZWRQbGFjZWhvbGRlciA/IHRyaW1tZWRQbGFjZWhvbGRlciA6ICcnXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyAvPlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17cGxhY2Vob2xkZXJUb29sdGlwVGl0bGV9PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdibG9jaycsIHdpZHRoOiAnMTAwJScsIG1pbldpZHRoOiAwIH19PlxuICAgICAgICAgICAgPFNDTUVFZGl0YWJsZVxuICAgICAgICAgICAgICByZWY9e2VkaXRvclJlZn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgIGRhdGEtcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkYXRhLWVtcHR5PXtTdHJpbmcobG9naWNhbEVtcHR5KX1cbiAgICAgICAgICAgICAgY29udGVudEVkaXRhYmxlPXshZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGRhdGEtZGlzYWJsZWQ9e1N0cmluZyghIWRpc2FibGVkKX1cbiAgICAgICAgICAgICAgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXG4gICAgICAgICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICAgICAgICAgYXJpYS1tdWx0aWxpbmU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlSW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAgICAgICBvblBhc3RlPXtoYW5kbGVQYXN0ZX1cbiAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbkNvbnRleHRNZW50aW9uRWRpdG9yLmRpc3BsYXlOYW1lID0g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
|
|
396
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ2FsbGJhY2siLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJUb29sdGlwIiwidXNlQ29udGV4dE1lbnRpb25zIiwiYnVpbGRDaGlwRWxlbWVudCIsIkNvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyIsImJ1aWxkU2xhc2hDaGlwRWxlbWVudCIsIlNDTUVFZGl0YWJsZSIsImpzeCIsIl9qc3giLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsImpzeHMiLCJfanN4cyIsImlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciIsImVkaXRvciIsInBsYWNlaG9sZGVyIiwidHJpbW1lZCIsInRyaW0iLCJjbGllbnRXaWR0aCIsInN0eWxlcyIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJjdHgiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJnZXRDb250ZXh0IiwiZm9udCIsImNvbmNhdCIsImZvbnRXZWlnaHQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJtZWFzdXJlZCIsIm1lYXN1cmVUZXh0Iiwid2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nUmlnaHQiLCJib3JkZXJMZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYXZhaWxhYmxlIiwiTWF0aCIsIm1heCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwiX3JlZiIsInJlZiIsIl9wbGFjZWhvbGRlciR0cmltMiIsImRpc2FibGVkIiwiY2xhc3NOYW1lIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uRm9jdXMiLCJvbkJsdXIiLCJfdXNlQ29udGV4dE1lbnRpb25zIiwiZWRpdG9yUmVmIiwidXBkYXRlVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aENoaXAiLCJzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoIiwic3luY1NraWxsVHJpZ2dlciIsInVwZGF0ZVNsYXNoVHJpZ2dlciIsInJlcGxhY2VUcmlnZ2VyV2l0aFNsYXNoQ2hpcCIsInNlcmlhbGl6ZSIsImNsZWFyRWRpdG9yRG9tIiwiY2xlYXIiLCJmb2N1cyIsInNraXBOZXh0SW5wdXQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJwbGFjZWhvbGRlclRydW5jYXRlZCIsInNldFBsYWNlaG9sZGVyVHJ1bmNhdGVkIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2dpY2FsRW1wdHkiLCJzZXRMb2dpY2FsRW1wdHkiLCJzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUiLCJpc0VtcHR5IiwiY3VycmVudCIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsIm5vcm1hbGl6ZUVtcHR5RWRpdG9yRG9tIiwiX2VkaXRvciR0ZXh0Q29udGVudCIsInRleHRDb250ZW50IiwiaW5uZXJIVE1MIiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwicmFuZ2UiLCJjcmVhdGVSYW5nZSIsInNlbGVjdE5vZGVDb250ZW50cyIsImNvbGxhcHNlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24iLCJfcGxhY2Vob2xkZXIkdHJpbSIsImVsIiwicGgiLCJpc0VkaXRvckxvZ2ljYWxseUVtcHR5IiwidGV4dCIsInVuZGVmaW5lZCIsInJvIiwiUmVzaXplT2JzZXJ2ZXIiLCJxdWV1ZU1pY3JvdGFzayIsIm9ic2VydmUiLCJkaXNjb25uZWN0IiwiZW1pdElucHV0U3RhdGUiLCJ0cmlnIiwic2xhc2hUcmlnIiwic3RhdGUiLCJtZW50aW9ucyIsInNsYXNoQ29tbWFuZHMiLCJfb2JqZWN0U3ByZWFkIiwidHJpZ2dlciIsImFjdGl2ZSIsInF1ZXJ5IiwiYXRSdW5MZW5ndGgiLCJzbGFzaFRyaWdnZXIiLCJzZXRQbGFpblRleHQiLCJwbGFpbiIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImFuY2hvck5vZGUiLCJjb250YWlucyIsImVuZFJhbmdlIiwiZ2V0UmFuZ2VBdCIsInByZWZpeCIsInN0YXJ0Q29udGFpbmVyIiwic3RhcnRPZmZzZXQiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJwcmV2Q2hhciIsImRhdGEiLCJjaGFyQXQiLCJ0ZXN0IiwiaW5zZXJ0ZWQiLCJ0ZXh0Tm9kZSIsImNyZWF0ZVRleHROb2RlIiwiaW5zZXJ0Tm9kZSIsInByZXZTaWJsaW5nIiwicHJldmlvdXNTaWJsaW5nIiwiY2FyZXROb2RlIiwiY2FyZXRPZmZzZXQiLCJlbmRzV2l0aCIsInByZXZUZXh0IiwicmVtb3ZlIiwic2V0U3RhcnQiLCJpbnNlcnRTbGFzaFRyaWdnZXIiLCJoYXNWaXN1YWxNdWx0aWxpbmUiLCJfZWRpdG9yJHRleHRDb250ZW50JHQiLCJfZWRpdG9yJHRleHRDb250ZW50MiIsImxpbmVIZWlnaHQiLCJlZGl0b3JIZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJoZWlnaHQiLCJpc011bHRpbGluZSIsImdldEVkaXRvckNsaWVudFJlY3QiLCJfZWRpdG9yUmVmJGN1cnJlbnQkZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJpbnNlcnRNZW50aW9uIiwibWVudGlvbiIsImNoaXAiLCJpbnNlcnRTbGFzaENvbW1hbmQiLCJjb21tYW5kIiwiaGFuZGxlSW5wdXQiLCJoYW5kbGVQYXN0ZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImNsaXBib2FyZERhdGEiLCJnZXREYXRhIiwicmFuZ2VDb3VudCIsImRlbGV0ZUZyb21Eb2N1bWVudCIsImNvbGxhcHNlVG9FbmQiLCJ0cmltbWVkUGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclRvb2x0aXBUaXRsZSIsImNoaWxkcmVuIiwidGl0bGUiLCJzdHlsZSIsImRpc3BsYXkiLCJtaW5XaWR0aCIsImNvbnRlbnRFZGl0YWJsZSIsInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIsInJvbGUiLCJvblBhc3RlIiwiZGlzcGxheU5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkVkaXRvci9Db250ZXh0TWVudGlvbkVkaXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xpcGJvYXJkRXZlbnQsXG4gIGZvcndhcmRSZWYsXG4gIEtleWJvYXJkRXZlbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlQ29udGV4dE1lbnRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ29udGV4dE1lbnRpb25zJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGJ1aWxkQ2hpcEVsZW1lbnQgfSBmcm9tICcuLi9Db250ZXh0TWVudGlvbkNoaXAnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMgfSBmcm9tICcuLi9Db250ZXh0TWVudGlvbkNoaXAvQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcbmltcG9ydCB7IGJ1aWxkU2xhc2hDaGlwRWxlbWVudCwgU2xhc2hDb21tYW5kQ2hpcERhdGEgfSBmcm9tICcuLi9TbGFzaENvbW1hbmRDaGlwJ1xuaW1wb3J0IHsgU0NNRUVkaXRhYmxlIH0gZnJvbSAnLi9Db250ZXh0TWVudGlvbkVkaXRvci5zdHlsZXMnXG5cbmNvbnN0IGlzUGxhY2Vob2xkZXJUcnVuY2F0ZWRJbkVkaXRvciA9IChlZGl0b3I6IEhUTUxFbGVtZW50LCBwbGFjZWhvbGRlcjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBwbGFjZWhvbGRlci50cmltKClcbiAgaWYgKCF0cmltbWVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgeyBjbGllbnRXaWR0aCB9ID0gZWRpdG9yXG4gIGlmIChjbGllbnRXaWR0aCA8PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlZGl0b3IpXG4gIGNvbnN0IGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJylcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjdHguZm9udCA9IGAke3N0eWxlcy5mb250V2VpZ2h0fSAke3N0eWxlcy5mb250U2l6ZX0gJHtzdHlsZXMuZm9udEZhbWlseX1gXG4gIGNvbnN0IG1lYXN1cmVkID0gY3R4Lm1lYXN1cmVUZXh0KHRyaW1tZWQpLndpZHRoXG5cbiAgY29uc3QgcGFkZGluZ0xlZnQgPSBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nTGVmdCkgfHwgMFxuICBjb25zdCBwYWRkaW5nUmlnaHQgPSBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nUmlnaHQpIHx8IDBcbiAgY29uc3QgYm9yZGVyTGVmdCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlckxlZnRXaWR0aCkgfHwgMFxuICBjb25zdCBib3JkZXJSaWdodCA9IHBhcnNlRmxvYXQoc3R5bGVzLmJvcmRlclJpZ2h0V2lkdGgpIHx8IDBcbiAgY29uc3QgYXZhaWxhYmxlID0gTWF0aC5tYXgoMCwgY2xpZW50V2lkdGggLSBwYWRkaW5nTGVmdCAtIHBhZGRpbmdSaWdodCAtIGJvcmRlckxlZnQgLSBib3JkZXJSaWdodClcblxuICByZXR1cm4gbWVhc3VyZWQgPiBhdmFpbGFibGUgKyAxXG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlID0ge1xuICBmb2N1czogKCkgPT4gdm9pZFxuICBjbGVhcjogKCkgPT4gdm9pZFxuICBzZXRQbGFpblRleHQ6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWRcbiAgLyoqIEluc2VydGEgYEBgIGVuIGVsIGNhcmV0IChjb24gZXNwYWNpbyBwcmV2aW8gc2kgaGFjZSBmYWx0YSkgeSBhYnJlIGVsIHRyaWdnZXIgZGUgbWVudGlvbnMuICovXG4gIGluc2VydE1lbnRpb25UcmlnZ2VyOiAoKSA9PiB2b2lkXG4gIC8qKiBJbnNlcnRhIGAvYCBlbiBlbCBjYXJldCAoY29uIGVzcGFjaW8gcHJldmlvIHNpIGhhY2UgZmFsdGEpIHkgYWJyZSBlbCB0cmlnZ2VyIGRlIHNsYXNoIGNvbW1hbmRzLiAqL1xuICBpbnNlcnRTbGFzaFRyaWdnZXI6ICgpID0+IHZvaWRcbiAgaW5zZXJ0TWVudGlvbjogKG1lbnRpb246IENvbnRleHRNZW50aW9uKSA9PiB2b2lkXG4gIGluc2VydFNsYXNoQ29tbWFuZDogKGNvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB2b2lkXG4gIHN5bmNUcmlnZ2VyQXRSdW5MZW5ndGg6IChhdFJ1bkxlbmd0aDogbnVtYmVyKSA9PiB2b2lkXG4gIC8qKiBDb252aWVydGUgZWwgdHJpZ2dlciBhY3Rpdm8gYSBgQC9xdWVyeWAgcGFyYSBhY3RpdmFyIGxhIHRhYiBkZSBza2lsbHMuICovXG4gIHN5bmNTa2lsbFRyaWdnZXI6ICgpID0+IHZvaWRcbiAgc2VyaWFsaXplOiAoKSA9PiB7XG4gICAgdGV4dDogc3RyaW5nXG4gICAgbWVudGlvbnM6IENvbnRleHRNZW50aW9uW11cbiAgICBzbGFzaENvbW1hbmRzOiBTbGFzaENvbW1hbmRDaGlwRGF0YVtdXG4gIH1cbiAgaGFzVmlzdWFsTXVsdGlsaW5lOiAoKSA9PiBib29sZWFuXG4gIC8qKiBSZWN0IGRlbCDDoXJlYSBlZGl0YWJsZSAodmlld3BvcnQpOyBsbyB1c2EgZWwgcG9wb3ZlciBkZSBAIHBhcmEgYWxpbmVhciBhbmNoby9vcmlnZW4uICovXG4gIGdldEVkaXRvckNsaWVudFJlY3Q6ICgpID0+IERPTVJlY3QgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIENvbnRleHRNZW50aW9uRWRpdG9yUHJvcHMgPSB7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgb25JbnB1dD86IChzdGF0ZToge1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgc2xhc2hDb21tYW5kczogU2xhc2hDb21tYW5kQ2hpcERhdGFbXVxuICAgIHRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nOyBhdFJ1bkxlbmd0aDogbnVtYmVyIH1cbiAgICBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nIH1cbiAgfSkgPT4gdm9pZFxuICBvbktleURvd24/OiAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHZvaWRcbiAgb25Gb2N1cz86ICgpID0+IHZvaWRcbiAgb25CbHVyPzogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3QgQ29udGV4dE1lbnRpb25FZGl0b3IgPSBmb3J3YXJkUmVmPENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlLCBDb250ZXh0TWVudGlvbkVkaXRvclByb3BzPihcbiAgKHsgcGxhY2Vob2xkZXIsIGRpc2FibGVkLCBjbGFzc05hbWUsIG9uSW5wdXQsIG9uS2V5RG93biwgb25Gb2N1cywgb25CbHVyIH0sIHJlZikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGVkaXRvclJlZixcbiAgICAgIHVwZGF0ZVRyaWdnZXIsXG4gICAgICByZXBsYWNlVHJpZ2dlcldpdGhDaGlwLFxuICAgICAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCxcbiAgICAgIHN5bmNTa2lsbFRyaWdnZXIsXG4gICAgICB1cGRhdGVTbGFzaFRyaWdnZXIsXG4gICAgICByZXBsYWNlVHJpZ2dlcldpdGhTbGFzaENoaXAsXG4gICAgICBzZXJpYWxpemUsXG4gICAgICBjbGVhcjogY2xlYXJFZGl0b3JEb20sXG4gICAgICBmb2N1cyxcbiAgICB9ID0gdXNlQ29udGV4dE1lbnRpb25zKClcbiAgICBjb25zdCBza2lwTmV4dElucHV0ID0gdXNlUmVmKGZhbHNlKVxuICAgIGNvbnN0IFtwbGFjZWhvbGRlclRydW5jYXRlZCwgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgW2xvZ2ljYWxFbXB0eSwgc2V0TG9naWNhbEVtcHR5XSA9IHVzZVN0YXRlKHRydWUpXG5cbiAgICBjb25zdCBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUgPSB1c2VDYWxsYmFjaygoaXNFbXB0eTogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1lbXB0eScsIFN0cmluZyhpc0VtcHR5KSlcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIGNvbnN0IG5vcm1hbGl6ZUVtcHR5RWRpdG9yRG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgZWRpdG9yID0gZWRpdG9yUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZWRpdG9yKSByZXR1cm5cblxuICAgICAgLy8gTGltcGlhciBjdWFscXVpZXIgcmVzaWR1byAoYnIsIGVzcGFjaW9zKSBxdWUgZGVqZSBlbCBicm93c2VyIGFsIHZhY2lhciBlbCBjb250ZW50ZWRpdGFibGUuXG4gICAgICAvLyBTaW4gZXN0bywgdW4gZXNwYWNpbyBzdWVsdG8gYWN0aXZhIGRhdGEtZW1wdHk9XCJ0cnVlXCIgKyA6OmJlZm9yZSBwbGFjZWhvbGRlciBlbiBsw61uZWEgMVxuICAgICAgLy8geSBkZXNwbGF6YSBlbCBjdXJzb3IgYSBsYSBsw61uZWEgMi5cbiAgICAgIGlmIChlZGl0b3IudGV4dENvbnRlbnQ/LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgZWRpdG9yLmlubmVySFRNTCA9ICcnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgaWYgKCFzZWxlY3Rpb24pIHJldHVyblxuICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKVxuICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSlcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKVxuICAgIH0sIFtlZGl0b3JSZWZdKVxuXG4gICAgY29uc3QgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgY29uc3QgcGggPSBwbGFjZWhvbGRlcj8udHJpbSgpID8/ICcnXG4gICAgICBjb25zdCBpc0VkaXRvckxvZ2ljYWxseUVtcHR5ID0gc2VyaWFsaXplKCkudGV4dC50cmltKCkgPT09ICcnXG5cbiAgICAgIGlmICghZWwgfHwgIXBoIHx8ICFpc0VkaXRvckxvZ2ljYWxseUVtcHR5KSB7XG4gICAgICAgIHNldFBsYWNlaG9sZGVyVHJ1bmNhdGVkKGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0UGxhY2Vob2xkZXJUcnVuY2F0ZWQoaXNQbGFjZWhvbGRlclRydW5jYXRlZEluRWRpdG9yKGVsLCBwaCkpXG4gICAgfSwgW3BsYWNlaG9sZGVyLCBzZXJpYWxpemVdKVxuXG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICBjb25zdCBlbCA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgcXVldWVNaWNyb3Rhc2socmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uKVxuICAgICAgfSlcbiAgICAgIHJvLm9ic2VydmUoZWwpXG4gICAgICByZXR1cm4gKCkgPT4gcm8uZGlzY29ubmVjdCgpXG4gICAgfSwgW3BsYWNlaG9sZGVyLCBkaXNhYmxlZCwgcmVjb21wdXRlUGxhY2Vob2xkZXJUcnVuY2F0aW9uXSlcblxuICAgIGNvbnN0IGVtaXRJbnB1dFN0YXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgdHJpZyA9IHVwZGF0ZVRyaWdnZXIoKVxuICAgICAgY29uc3Qgc2xhc2hUcmlnID0gdXBkYXRlU2xhc2hUcmlnZ2VyKClcbiAgICAgIGxldCBzdGF0ZSA9IHNlcmlhbGl6ZSgpXG4gICAgICBjb25zdCBpc0VtcHR5ID0gc3RhdGUudGV4dC50cmltKCkgPT09ICcnXG4gICAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgICBub3JtYWxpemVFbXB0eUVkaXRvckRvbSgpXG4gICAgICAgIHN0YXRlID0geyB0ZXh0OiAnJywgbWVudGlvbnM6IFtdLCBzbGFzaENvbW1hbmRzOiBbXSB9XG4gICAgICB9XG4gICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUoaXNFbXB0eSlcbiAgICAgIHNldExvZ2ljYWxFbXB0eShpc0VtcHR5KVxuICAgICAgb25JbnB1dD8uKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHRyaWdnZXI6IHsgYWN0aXZlOiB0cmlnLmFjdGl2ZSwgcXVlcnk6IHRyaWcucXVlcnksIGF0UnVuTGVuZ3RoOiB0cmlnLmF0UnVuTGVuZ3RoIH0sXG4gICAgICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IHNsYXNoVHJpZy5hY3RpdmUsIHF1ZXJ5OiBzbGFzaFRyaWcucXVlcnkgfSxcbiAgICAgIH0pXG4gICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgfSwgW1xuICAgICAgdXBkYXRlVHJpZ2dlcixcbiAgICAgIHVwZGF0ZVNsYXNoVHJpZ2dlcixcbiAgICAgIHNlcmlhbGl6ZSxcbiAgICAgIG5vcm1hbGl6ZUVtcHR5RWRpdG9yRG9tLFxuICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlLFxuICAgICAgb25JbnB1dCxcbiAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbixcbiAgICBdKVxuXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICAgIHJlZixcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGZvY3VzLFxuICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgIGNsZWFyRWRpdG9yRG9tKClcbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUodHJ1ZSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkodHJ1ZSlcbiAgICAgICAgICBxdWV1ZU1pY3JvdGFzayhyZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24pXG4gICAgICAgIH0sXG4gICAgICAgIHNldFBsYWluVGV4dDogKHRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGVkaXRvclJlZi5jdXJyZW50XG4gICAgICAgICAgaWYgKCFlZGl0b3IpIHJldHVyblxuICAgICAgICAgIGNvbnN0IHBsYWluID0gdGV4dCA/PyAnJ1xuICAgICAgICAgIGVkaXRvci50ZXh0Q29udGVudCA9IHBsYWluXG4gICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIGNvbnN0IHN0YXRlID0gc2VyaWFsaXplKClcbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gc3RhdGUudGV4dC50cmltKCkgPT09ICcnXG4gICAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICAgIGVkaXRvci5pbm5lckhUTUwgPSAnJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBzeW5jRWRpdG9yRW1wdHlBdHRyaWJ1dGUoaXNFbXB0eSlcbiAgICAgICAgICBzZXRMb2dpY2FsRW1wdHkoaXNFbXB0eSlcbiAgICAgICAgICBvbklucHV0Py4oe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogZmFsc2UsIHF1ZXJ5OiAnJywgYXRSdW5MZW5ndGg6IDAgfSxcbiAgICAgICAgICAgIHNsYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgICAgIGlmIChzZWxlY3Rpb24gJiYgZWRpdG9yLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpXG4gICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKVxuICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpXG4gICAgICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKClcbiAgICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgaW5zZXJ0TWVudGlvblRyaWdnZXI6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgICAgIGlmICghZWRpdG9yIHx8IGRpc2FibGVkKSByZXR1cm5cblxuICAgICAgICAgIGZvY3VzKClcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgICAgIGlmICghc2VsZWN0aW9uKSByZXR1cm5cblxuICAgICAgICAgIGlmICghc2VsZWN0aW9uLmFuY2hvck5vZGUgfHwgIWVkaXRvci5jb250YWlucyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICAgICAgZW5kUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXRvcilcbiAgICAgICAgICAgIGVuZFJhbmdlLmNvbGxhcHNlKGZhbHNlKVxuICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZW5kUmFuZ2UpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKVxuICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG5cbiAgICAgICAgICBsZXQgcHJlZml4ID0gJydcbiAgICAgICAgICBjb25zdCB7IHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCB9ID0gcmFuZ2VcbiAgICAgICAgICBpZiAoc3RhcnRDb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2Q2hhciA9IHN0YXJ0T2Zmc2V0ID4gMCA/IChzdGFydENvbnRhaW5lciBhcyBUZXh0KS5kYXRhLmNoYXJBdChzdGFydE9mZnNldCAtIDEpIDogJydcbiAgICAgICAgICAgIC8vIEVzcGFjaW8gc29sbyBzaSBoYXkgdGV4dG8gcHJldmlvIHF1ZSBubyBzZWEgbMOtbWl0ZSBuaSBgQGAgKEBAIGRlYmVuIHF1ZWRhciBzZWd1aWRvcykuXG4gICAgICAgICAgICBpZiAocHJldkNoYXIgJiYgIS9bXFxzKFt7QF0vLnRlc3QocHJldkNoYXIpKSB7XG4gICAgICAgICAgICAgIHByZWZpeCA9ICcgJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGluc2VydGVkID0gYCR7cHJlZml4fUBgXG4gICAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpbnNlcnRlZClcbiAgICAgICAgICByYW5nZS5pbnNlcnROb2RlKHRleHROb2RlKVxuXG4gICAgICAgICAgLy8gU2kgZWwgYEBgIHF1ZWTDsyBlbiB1biBub2RvIG51ZXZvLCB1bmlyIGNvbiBlbCB0ZXh0IG5vZGUgcHJldmlvIHF1ZSB0ZXJtaW5hIGVuIGBAYFxuICAgICAgICAgIC8vIHBhcmEgcXVlIGRldGVjdE1lbnRpb25UcmlnZ2VyIHZlYSBlbCBydW4gY29tcGxldG8gKEBALCBAQEAsIOKApikuXG4gICAgICAgICAgY29uc3QgcHJldlNpYmxpbmcgPSB0ZXh0Tm9kZS5wcmV2aW91c1NpYmxpbmdcbiAgICAgICAgICBsZXQgY2FyZXROb2RlID0gdGV4dE5vZGVcbiAgICAgICAgICBsZXQgY2FyZXRPZmZzZXQgPSBpbnNlcnRlZC5sZW5ndGhcbiAgICAgICAgICBpZiAocHJlZml4ID09PSAnJyAmJiBwcmV2U2libGluZz8ubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFICYmIChwcmV2U2libGluZyBhcyBUZXh0KS5kYXRhLmVuZHNXaXRoKCdAJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZUZXh0ID0gcHJldlNpYmxpbmcgYXMgVGV4dFxuICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBwcmV2VGV4dC5kYXRhLmxlbmd0aCArIGluc2VydGVkLmxlbmd0aFxuICAgICAgICAgICAgcHJldlRleHQuZGF0YSArPSBpbnNlcnRlZFxuICAgICAgICAgICAgdGV4dE5vZGUucmVtb3ZlKClcbiAgICAgICAgICAgIGNhcmV0Tm9kZSA9IHByZXZUZXh0XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRWwgY2FyZXQgZGViZSBxdWVkYXIgREVOVFJPIGRlbCB0ZXh0IG5vZGUgKGRlc3B1w6lzIGRlIGBAYCkuXG4gICAgICAgICAgLy8gYHNldFN0YXJ0QWZ0ZXJgIGxvIGRlamEgZW4gZWwgcGFkcmUgeSBkZXRlY3RNZW50aW9uVHJpZ2dlciBubyBhY3RpdmEgZWwgcG9wb3Zlci5cbiAgICAgICAgICByYW5nZS5zZXRTdGFydChjYXJldE5vZGUsIGNhcmV0T2Zmc2V0KVxuICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG4gICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKVxuXG4gICAgICAgICAgZW1pdElucHV0U3RhdGUoKVxuICAgICAgICB9LFxuICAgICAgICBpbnNlcnRTbGFzaFRyaWdnZXI6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgICAgIGlmICghZWRpdG9yIHx8IGRpc2FibGVkKSByZXR1cm5cblxuICAgICAgICAgIGZvY3VzKClcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgICAgIGlmICghc2VsZWN0aW9uKSByZXR1cm5cblxuICAgICAgICAgIGlmICghc2VsZWN0aW9uLmFuY2hvck5vZGUgfHwgIWVkaXRvci5jb250YWlucyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZFJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKVxuICAgICAgICAgICAgZW5kUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXRvcilcbiAgICAgICAgICAgIGVuZFJhbmdlLmNvbGxhcHNlKGZhbHNlKVxuICAgICAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpXG4gICAgICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZW5kUmFuZ2UpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKVxuICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpXG5cbiAgICAgICAgICBsZXQgcHJlZml4ID0gJydcbiAgICAgICAgICBjb25zdCB7IHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCB9ID0gcmFuZ2VcbiAgICAgICAgICBpZiAoc3RhcnRDb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2Q2hhciA9IHN0YXJ0T2Zmc2V0ID4gMCA/IChzdGFydENvbnRhaW5lciBhcyBUZXh0KS5kYXRhLmNoYXJBdChzdGFydE9mZnNldCAtIDEpIDogJydcbiAgICAgICAgICAgIGlmIChwcmV2Q2hhciAmJiAhL1tcXHMoW3tdLy50ZXN0KHByZXZDaGFyKSkge1xuICAgICAgICAgICAgICBwcmVmaXggPSAnICdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpbnNlcnRlZCA9IGAke3ByZWZpeH0vYFxuICAgICAgICAgIGNvbnN0IHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaW5zZXJ0ZWQpXG4gICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZSh0ZXh0Tm9kZSlcblxuICAgICAgICAgIC8vIENhcmV0IGRlbnRybyBkZWwgdGV4dCBub2RlIHBhcmEgcXVlIGRldGVjdFNsYXNoVHJpZ2dlciBhY3RpdmUgZWwgZHJvcGRvd24uXG4gICAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIGluc2VydGVkLmxlbmd0aClcbiAgICAgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKVxuICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKVxuICAgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSlcblxuICAgICAgICAgIGVtaXRJbnB1dFN0YXRlKClcbiAgICAgICAgfSxcbiAgICAgICAgc2VyaWFsaXplLFxuICAgICAgICBzeW5jVHJpZ2dlckF0UnVuTGVuZ3RoLFxuICAgICAgICBzeW5jU2tpbGxUcmlnZ2VyLFxuICAgICAgICBoYXNWaXN1YWxNdWx0aWxpbmU6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0b3IgPSBlZGl0b3JSZWYuY3VycmVudFxuICAgICAgICAgIGlmICghZWRpdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdG9yLnRleHRDb250ZW50Py50cmltKCkgPz8gJydcbiAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVkaXRvcilcbiAgICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gcGFyc2VGbG9hdChzdHlsZXMubGluZUhlaWdodCkgfHwgMjJcbiAgICAgICAgICBjb25zdCBlZGl0b3JIZWlnaHQgPSBlZGl0b3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgICAgY29uc3QgaXNNdWx0aWxpbmUgPSBlZGl0b3JIZWlnaHQgPiBsaW5lSGVpZ2h0ICogMS41XG5cbiAgICAgICAgICByZXR1cm4gaXNNdWx0aWxpbmVcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0RWRpdG9yQ2xpZW50UmVjdDogKCkgPT4gZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpID8/IG51bGwsXG4gICAgICAgIGluc2VydE1lbnRpb246IChtZW50aW9uOiBDb250ZXh0TWVudGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaXAgPSBidWlsZENoaXBFbGVtZW50KG1lbnRpb24pXG4gICAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcChjaGlwLCBtZW50aW9uKVxuICAgICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IHRydWVcbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHNlcmlhbGl6ZSgpXG4gICAgICAgICAgb25JbnB1dD8uKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwIH0sXG4gICAgICAgICAgICBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gc3RhdGUudGV4dC50cmltKCkgPT09ICcnXG4gICAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKGlzRW1wdHkpXG4gICAgICAgICAgc2V0TG9naWNhbEVtcHR5KGlzRW1wdHkpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2kgZWwgbmF2ZWdhZG9yIG5vIGRpc3BhcmEgYGlucHV0YCB0cmFzIGVsIGNoaXAsIGVsIGZsYWcgcXVlZGFiYSBlbiB0cnVlIHkgZWwgcHLDs3hpbW8gQCBkZWwgdXN1YXJpbyBzZSBpZ25vcmFiYS5cbiAgICAgICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgICByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24oKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIGluc2VydFNsYXNoQ29tbWFuZDogKGNvbW1hbmQ6IFNsYXNoQ29tbWFuZENoaXBEYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hpcCA9IGJ1aWxkU2xhc2hDaGlwRWxlbWVudChjb21tYW5kKVxuICAgICAgICAgIHJlcGxhY2VUcmlnZ2VyV2l0aFNsYXNoQ2hpcChjaGlwLCBjb21tYW5kKVxuICAgICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IHRydWVcbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IHNlcmlhbGl6ZSgpXG4gICAgICAgICAgb25JbnB1dD8uKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGZhbHNlLCBxdWVyeTogJycsIGF0UnVuTGVuZ3RoOiAwIH0sXG4gICAgICAgICAgICBzbGFzaFRyaWdnZXI6IHsgYWN0aXZlOiBmYWxzZSwgcXVlcnk6ICcnIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gc3RhdGUudGV4dC50cmltKCkgPT09ICcnXG4gICAgICAgICAgc3luY0VkaXRvckVtcHR5QXR0cmlidXRlKGlzRW1wdHkpXG4gICAgICAgICAgc2V0TG9naWNhbEVtcHR5KGlzRW1wdHkpXG4gICAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgc2tpcE5leHRJbnB1dC5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICAgIHJlY29tcHV0ZVBsYWNlaG9sZGVyVHJ1bmNhdGlvbigpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgW1xuICAgICAgICBmb2N1cyxcbiAgICAgICAgY2xlYXJFZGl0b3JEb20sXG4gICAgICAgIHNlcmlhbGl6ZSxcbiAgICAgICAgc3luY1RyaWdnZXJBdFJ1bkxlbmd0aCxcbiAgICAgICAgc3luY1NraWxsVHJpZ2dlcixcbiAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoQ2hpcCxcbiAgICAgICAgcmVwbGFjZVRyaWdnZXJXaXRoU2xhc2hDaGlwLFxuICAgICAgICBvbklucHV0LFxuICAgICAgICByZWNvbXB1dGVQbGFjZWhvbGRlclRydW5jYXRpb24sXG4gICAgICAgIHN5bmNFZGl0b3JFbXB0eUF0dHJpYnV0ZSxcbiAgICAgICAgZW1pdElucHV0U3RhdGUsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBlZGl0b3JSZWYsXG4gICAgICBdXG4gICAgKVxuXG4gICAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgICBpZiAoc2tpcE5leHRJbnB1dC5jdXJyZW50KSB7XG4gICAgICAgIHNraXBOZXh0SW5wdXQuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZW1pdElucHV0U3RhdGUoKVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVBhc3RlID0gKGU6IENsaXBib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCB0ZXh0ID0gZS5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG4gICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuXG4gICAgICBzZWxlY3Rpb24uZGVsZXRlRnJvbURvY3VtZW50KClcbiAgICAgIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmluc2VydE5vZGUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpXG4gICAgICBzZWxlY3Rpb24uY29sbGFwc2VUb0VuZCgpXG4gICAgICBoYW5kbGVJbnB1dCgpXG4gICAgfVxuXG4gICAgY29uc3QgdHJpbW1lZFBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI/LnRyaW0oKSA/PyAnJ1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyVG9vbHRpcFRpdGxlID0gbG9naWNhbEVtcHR5ICYmIHBsYWNlaG9sZGVyVHJ1bmNhdGVkICYmIHRyaW1tZWRQbGFjZWhvbGRlciA/IHRyaW1tZWRQbGFjZWhvbGRlciA6ICcnXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPENvbnRleHRNZW50aW9uQ2hpcEdsb2JhbFN0eWxlcyAvPlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17cGxhY2Vob2xkZXJUb29sdGlwVGl0bGV9PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdibG9jaycsIHdpZHRoOiAnMTAwJScsIG1pbldpZHRoOiAwIH19PlxuICAgICAgICAgICAgPFNDTUVFZGl0YWJsZVxuICAgICAgICAgICAgICByZWY9e2VkaXRvclJlZn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgIGRhdGEtcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkYXRhLWVtcHR5PXtTdHJpbmcobG9naWNhbEVtcHR5KX1cbiAgICAgICAgICAgICAgY29udGVudEVkaXRhYmxlPXshZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGRhdGEtZGlzYWJsZWQ9e1N0cmluZyghIWRpc2FibGVkKX1cbiAgICAgICAgICAgICAgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXG4gICAgICAgICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICAgICAgICAgYXJpYS1tdWx0aWxpbmU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlSW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAgICAgICBvblBhc3RlPXtoYW5kbGVQYXN0ZX1cbiAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbkNvbnRleHRNZW50aW9uRWRpdG9yLmRpc3BsYXlOYW1lID0gJ0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FFRUEsVUFBVSxFQUVWQyxXQUFXLEVBQ1hDLG1CQUFtQixFQUNuQkMsZUFBZSxFQUNmQyxNQUFNLEVBQ05DLFFBQVEsUUFDSCxPQUFPO0FBQ2QsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxrQkFBa0IsUUFBUSxtQ0FB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
|
|
@@ -7,7 +7,7 @@ import { NotionIcon } from '../icons/NotionIcon';
|
|
|
7
7
|
import { SubtaskIcon } from '../icons/SubtaskIcon';
|
|
8
8
|
import { TaskLinkIcon } from '../icons/TaskLinkIcon';
|
|
9
9
|
import { getContextMentionIcon, isNotionMcpSlug } from '../../../utils/contextMentionIcons';
|
|
10
|
-
import { SCMIRow, SCMIProjectRow, SCMIProjectContent, SCMIName, SCMITitle, SCMIProjectTitle, SCMITitleHighlight, SCMIBreadcrumb, SCMIBreadcrumbParent, SCMIRowUser, SCMUserAvatarWrap, SCMUserAvatarImg, SCMUserAvatarFallback, SCMUserInfo, SCMUserNamePositionRow, SCMUserNameCell, SCMUserNameText, SCMUserPositionText, SCMITaskRowWrap, SCMITaskRowSurface, SCMITaskRowInner, SCMITaskTitleRow, SCMITaskSubtaskIconWrap, SCMITaskProjectName, SCMITaskIconWrap, SCMITaskTitle } from './ContextMentionItem.styles';
|
|
10
|
+
import { SCMIRow, SCMIProjectRow, SCMIProjectContent, SCMIName, SCMITitle, SCMIProjectTitle, SCMITitleHighlight, SCMIBreadcrumb, SCMIBreadcrumbParent, SCMIRowUser, SCMUserAvatarWrap, SCMUserAvatarImg, SCMUserAvatarFallback, SCMUserInfo, SCMUserNamePositionRow, SCMUserNameCell, SCMUserNameText, SCMUserPositionText, SCMITaskRowWrap, SCMITaskRowSurface, SCMISkillRowSurface, SCMITaskRowInner, SCMITaskTitleRow, SCMITaskSubtaskIconWrap, SCMITaskProjectName, SCMITaskIconWrap, SCMITaskTitle } from './ContextMentionItem.styles';
|
|
11
11
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
12
|
var TASK_PROJECT_NAME_MAX_CHARS = 40;
|
|
13
13
|
var truncateWithEllipsis = function truncateWithEllipsis(value, maxChars) {
|
|
@@ -254,6 +254,33 @@ export var ContextMentionItem = function ContextMentionItem(_ref3) {
|
|
|
254
254
|
})
|
|
255
255
|
});
|
|
256
256
|
}
|
|
257
|
+
if (type === 'skill') {
|
|
258
|
+
return /*#__PURE__*/_jsx(SCMITaskRowWrap, {
|
|
259
|
+
onMouseDown: handleClick,
|
|
260
|
+
onMouseEnter: function onMouseEnter() {
|
|
261
|
+
return _onHover === null || _onHover === void 0 ? void 0 : _onHover(item);
|
|
262
|
+
},
|
|
263
|
+
children: /*#__PURE__*/_jsx(SCMISkillRowSurface, {
|
|
264
|
+
$active: active,
|
|
265
|
+
children: /*#__PURE__*/_jsxs(SCMITaskRowInner, {
|
|
266
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
267
|
+
style: {
|
|
268
|
+
display: 'inline-flex',
|
|
269
|
+
alignItems: 'center',
|
|
270
|
+
justifyContent: 'center',
|
|
271
|
+
width: 16,
|
|
272
|
+
height: 16,
|
|
273
|
+
flex: '0 0 16px'
|
|
274
|
+
},
|
|
275
|
+
children: getContextMentionIcon('skill', '#808080', raw.id, 16)
|
|
276
|
+
}), /*#__PURE__*/_jsx(SCMITaskTitle, {
|
|
277
|
+
title: primary,
|
|
278
|
+
children: renderTitle(primary, primaryHighlight)
|
|
279
|
+
})]
|
|
280
|
+
})
|
|
281
|
+
})
|
|
282
|
+
});
|
|
283
|
+
}
|
|
257
284
|
return /*#__PURE__*/_jsx(SCMIRow, {
|
|
258
285
|
$active: active,
|
|
259
286
|
onMouseDown: handleClick,
|
|
@@ -279,4 +306,4 @@ export var ContextMentionItem = function ContextMentionItem(_ref3) {
|
|
|
279
306
|
})
|
|
280
307
|
});
|
|
281
308
|
};
|
|
282
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25SaWdodCIsIlRvb2x0aXAiLCJ1c2VUIiwiTm90aW9uSWNvbiIsIlN1YnRhc2tJY29uIiwiVGFza0xpbmtJY29uIiwiZ2V0Q29udGV4dE1lbnRpb25JY29uIiwiaXNOb3Rpb25NY3BTbHVnIiwiU0NNSVJvdyIsIlNDTUlQcm9qZWN0Um93IiwiU0NNSVByb2plY3RDb250ZW50IiwiU0NNSU5hbWUiLCJTQ01JVGl0bGUiLCJTQ01JUHJvamVjdFRpdGxlIiwiU0NNSVRpdGxlSGlnaGxpZ2h0IiwiU0NNSUJyZWFkY3J1bWIiLCJTQ01JQnJlYWRjcnVtYlBhcmVudCIsIlNDTUlSb3dVc2VyIiwiU0NNVXNlckF2YXRhcldyYXAiLCJTQ01Vc2VyQXZhdGFySW1nIiwiU0NNVXNlckF2YXRhckZhbGxiYWNrIiwiU0NNVXNlckluZm8iLCJTQ01Vc2VyTmFtZVBvc2l0aW9uUm93IiwiU0NNVXNlck5hbWVDZWxsIiwiU0NNVXNlck5hbWVUZXh0IiwiU0NNVXNlclBvc2l0aW9uVGV4dCIsIlNDTUlUYXNrUm93V3JhcCIsIlNDTUlUYXNrUm93U3VyZmFjZSIsIlNDTUlUYXNrUm93SW5uZXIiLCJTQ01JVGFza1RpdGxlUm93IiwiU0NNSVRhc2tTdWJ0YXNrSWNvbldyYXAiLCJTQ01JVGFza1Byb2plY3ROYW1lIiwiU0NNSVRhc2tJY29uV3JhcCIsIlNDTUlUYXNrVGl0bGUiLCJqc3giLCJfanN4IiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3hzIiwiX2pzeHMiLCJUQVNLX1BST0pFQ1RfTkFNRV9NQVhfQ0hBUlMiLCJ0cnVuY2F0ZVdpdGhFbGxpcHNpcyIsInZhbHVlIiwibWF4Q2hhcnMiLCJsZW5ndGgiLCJjb25jYXQiLCJzbGljZSIsIk1hdGgiLCJtYXgiLCJ0cmltRW5kIiwicmVuZGVyVGl0bGUiLCJwcmltYXJ5IiwiaGlnaGxpZ2h0Iiwic3RhcnQiLCJlbmQiLCJjaGlsZHJlbiIsInVzZU92ZXJmbG93VG9vbHRpcCIsInJlZiIsImRlcHMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzaG93VG9vbHRpcCIsInNldFNob3dUb29sdGlwIiwiZWwiLCJjdXJyZW50IiwidW5kZWZpbmVkIiwibWVhc3VyZSIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJybyIsIlJlc2l6ZU9ic2VydmVyIiwib2JzZXJ2ZSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImluaXRpYWxzRnJvbURpc3BsYXlOYW1lIiwibmFtZSIsIl9wYXJ0cyQyIiwidHJpbW1lZCIsInRyaW0iLCJwYXJ0cyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsIl9wYXJ0cyQwJGNoYXJBdCIsIl9wYXJ0cyQiLCJfcGFydHMkY2hhckF0IiwiX3BhcnRzIiwiZmlyc3QiLCJjaGFyQXQiLCJsYXN0IiwidG9VcHBlckNhc2UiLCJzaW5nbGUiLCJVc2VyUm93QXZhdGFyIiwiX3JlZiIsInBpY3R1cmUiLCJuYW1lRm9ySW5pdGlhbHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImJyb2tlbiIsInNldEJyb2tlbiIsImluaXRpYWxzIiwic3JjIiwiYWx0Iiwib25FcnJvciIsImxvYWRpbmciLCJkZWNvZGluZyIsIkNvbnRleHRNZW50aW9uVGFza1JvdyIsIl9yZWYyIiwiX3JhdyRwcm9qZWN0TmFtZSIsIl9icmVhZGNydW1iJHBhcmVudCIsIl9wcmltYXJ5SGlnaGxpZ2h0JHN0YSIsIl9wcmltYXJ5SGlnaGxpZ2h0JGxlbiIsIml0ZW0iLCJhY3RpdmUiLCJvbk1vdXNlRG93biIsIm9uSG92ZXIiLCJwcmltYXJ5SGlnaGxpZ2h0IiwiYnJlYWRjcnVtYiIsInJhdyIsInByb2plY3ROYW1lIiwicGFyZW50IiwicHJvamVjdE5hbWVEaXNwbGF5IiwiaXNQcm9qZWN0TmFtZVRydW5jYXRlZEJ5Q2hhcnMiLCJoYXNGYXRoZXIiLCJmYXRoZXJJZCIsInRpdGxlUmVmIiwicHJvamVjdFJlZiIsInNob3dUaXRsZVRvb2x0aXAiLCJzaG93UHJvamVjdFRvb2x0aXAiLCJzaG91bGRTaG93UHJvamVjdFRvb2x0aXAiLCJvbk1vdXNlRW50ZXIiLCIkYWN0aXZlIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsInZhcmlhbnQiLCJ0aXRsZSIsIkNvbnRleHRNZW50aW9uSXRlbSIsIl9yZWYzIiwib25TZWxlY3QiLCJfdXNlVCIsInQiLCJ0eXBlIiwiaGFuZGxlQ2xpY2siLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYXNDb3VudCIsImNvdW50IiwiaGFzUGFyZW50IiwiY291bnRMYWJlbCIsImRlZmF1bHRWYWx1ZSIsInBvc2l0aW9uTmFtZVRyaW1tZWQiLCJwb3NpdGlvbk5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ1c2VyTmFtZUZvckluaXRpYWxzIiwiJHdpdGhEaXZpZGVyIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiZmxleCIsImlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvQ29udGV4dE1lbnRpb25JdGVtL0NvbnRleHRNZW50aW9uSXRlbS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRkMsIE1vdXNlRXZlbnQsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdHlwZSBSZWZPYmplY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25SaWdodCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25SaWdodCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25JdGVtIGFzIENvbnRleHRNZW50aW9uSXRlbVR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IE5vdGlvbkljb24gfSBmcm9tICcuLi9pY29ucy9Ob3Rpb25JY29uJ1xuaW1wb3J0IHsgU3VidGFza0ljb24gfSBmcm9tICcuLi9pY29ucy9TdWJ0YXNrSWNvbidcbmltcG9ydCB7IFRhc2tMaW5rSWNvbiB9IGZyb20gJy4uL2ljb25zL1Rhc2tMaW5rSWNvbidcbmltcG9ydCB7IGdldENvbnRleHRNZW50aW9uSWNvbiwgaXNOb3Rpb25NY3BTbHVnIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7XG4gIFNDTUlSb3csXG4gIFNDTUlQcm9qZWN0Um93LFxuICBTQ01JUHJvamVjdENvbnRlbnQsXG4gIFNDTUlOYW1lLFxuICBTQ01JVGl0bGUsXG4gIFNDTUlQcm9qZWN0VGl0bGUsXG4gIFNDTUlUaXRsZUhpZ2hsaWdodCxcbiAgU0NNSUJyZWFkY3J1bWIsXG4gIFNDTUlCcmVhZGNydW1iUGFyZW50LFxuICBTQ01JUm93VXNlcixcbiAgU0NNVXNlckF2YXRhcldyYXAsXG4gIFNDTVVzZXJBdmF0YXJJbWcsXG4gIFNDTVVzZXJBdmF0YXJGYWxsYmFjayxcbiAgU0NNVXNlckluZm8sXG4gIFNDTVVzZXJOYW1lUG9zaXRpb25Sb3csXG4gIFNDTVVzZXJOYW1lQ2VsbCxcbiAgU0NNVXNlck5hbWVUZXh0LFxuICBTQ01Vc2VyUG9zaXRpb25UZXh0LFxuICBTQ01JVGFza1Jvd1dyYXAsXG4gIFNDTUlUYXNrUm93U3VyZmFjZSxcbiAgU0NNSVRhc2tSb3dJbm5lcixcbiAgU0NNSVRhc2tUaXRsZVJvdyxcbiAgU0NNSVRhc2tTdWJ0YXNrSWNvbldyYXAsXG4gIFNDTUlUYXNrUHJvamVjdE5hbWUsXG4gIFNDTUlUYXNrSWNvbldyYXAsXG4gIFNDTUlUYXNrVGl0bGUsXG59IGZyb20gJy4vQ29udGV4dE1lbnRpb25JdGVtLnN0eWxlcydcblxudHlwZSBDb250ZXh0TWVudGlvbkl0ZW1Qcm9wcyA9IHtcbiAgaXRlbTogQ29udGV4dE1lbnRpb25JdGVtVHlwZVxuICBhY3RpdmU/OiBib29sZWFuXG4gIG9uU2VsZWN0OiAoaXRlbTogQ29udGV4dE1lbnRpb25JdGVtVHlwZSkgPT4gdm9pZFxuICBvbkhvdmVyPzogKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbVR5cGUpID0+IHZvaWRcbn1cblxuY29uc3QgVEFTS19QUk9KRUNUX05BTUVfTUFYX0NIQVJTID0gNDBcblxuY29uc3QgdHJ1bmNhdGVXaXRoRWxsaXBzaXMgPSAodmFsdWU6IHN0cmluZywgbWF4Q2hhcnM6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGlmICh2YWx1ZS5sZW5ndGggPD0gbWF4Q2hhcnMpIHJldHVybiB2YWx1ZVxuICByZXR1cm4gYCR7dmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgoMCwgbWF4Q2hhcnMgLSAxKSkudHJpbUVuZCgpfeKApmBcbn1cblxuY29uc3QgcmVuZGVyVGl0bGUgPSAocHJpbWFyeTogc3RyaW5nLCBoaWdobGlnaHQ/OiB7IHN0YXJ0OiBudW1iZXI7IGxlbmd0aDogbnVtYmVyIH0pID0+IHtcbiAgaWYgKCFoaWdobGlnaHQgfHwgaGlnaGxpZ2h0Lmxlbmd0aCA8PSAwKSByZXR1cm4gcHJpbWFyeVxuICBjb25zdCB7IHN0YXJ0LCBsZW5ndGggfSA9IGhpZ2hsaWdodFxuICBjb25zdCBlbmQgPSBzdGFydCArIGxlbmd0aFxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID4gcHJpbWFyeS5sZW5ndGggfHwgZW5kID4gcHJpbWFyeS5sZW5ndGgpIHJldHVybiBwcmltYXJ5XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtwcmltYXJ5LnNsaWNlKDAsIHN0YXJ0KX1cbiAgICAgIDxTQ01JVGl0bGVIaWdobGlnaHQ+e3ByaW1hcnkuc2xpY2Uoc3RhcnQsIGVuZCl9PC9TQ01JVGl0bGVIaWdobGlnaHQ+XG4gICAgICB7cHJpbWFyeS5zbGljZShlbmQpfVxuICAgIDwvPlxuICApXG59XG5cbmZ1bmN0aW9uIHVzZU92ZXJmbG93VG9vbHRpcDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHJlZjogUmVmT2JqZWN0PFQgfCBudWxsPiwgZGVwczogcmVhZG9ubHkgdW5rbm93bltdKSB7XG4gIGNvbnN0IFtzaG93VG9vbHRpcCwgc2V0U2hvd1Rvb2x0aXBdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IHJlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkge1xuICAgICAgc2V0U2hvd1Rvb2x0aXAoZmFsc2UpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgbWVhc3VyZSA9ICgpID0+IHtcbiAgICAgIHNldFNob3dUb29sdGlwKGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGgpXG4gICAgfVxuXG4gICAgbWVhc3VyZSgpXG4gICAgY29uc3Qgcm8gPSBuZXcgUmVzaXplT2JzZXJ2ZXIobWVhc3VyZSlcbiAgICByby5vYnNlcnZlKGVsKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByby5kaXNjb25uZWN0KClcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBtZWFzdXJlKVxuICAgIH1cbiAgfSwgZGVwcylcblxuICByZXR1cm4gc2hvd1Rvb2x0aXBcbn1cblxuLyoqIEluaWNpYWxlcyBwYXJhIGF2YXRhciAobm9tYnJlIGxlZ2FsKSwgbm8gZWwgdGV4dG8gdmlzaWJsZSBkZSBsYSBmaWxhIChlai4gXCJZb1wiKS4gKi9cbmNvbnN0IGluaXRpYWxzRnJvbURpc3BsYXlOYW1lID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBuYW1lLnRyaW0oKVxuICBpZiAoIXRyaW1tZWQpIHJldHVybiAnPydcbiAgY29uc3QgcGFydHMgPSB0cmltbWVkLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pXG4gIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF0/LmNoYXJBdCgwKSA/PyAnJ1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXT8uY2hhckF0KDApID8/ICcnXG4gICAgcmV0dXJuIGAke2ZpcnN0fSR7bGFzdH1gLnRvVXBwZXJDYXNlKClcbiAgfVxuICBjb25zdCBzaW5nbGUgPSBwYXJ0c1swXSA/PyAnJ1xuICBpZiAoc2luZ2xlLmxlbmd0aCA+PSAyKSByZXR1cm4gc2luZ2xlLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIChzaW5nbGUuY2hhckF0KDApIHx8ICc/JykudG9VcHBlckNhc2UoKVxufVxuXG5jb25zdCBVc2VyUm93QXZhdGFyOiBGQzx7IHBpY3R1cmU/OiBzdHJpbmcgfCBudWxsOyBuYW1lRm9ySW5pdGlhbHM6IHN0cmluZyB9PiA9ICh7IHBpY3R1cmUsIG5hbWVGb3JJbml0aWFscyB9KSA9PiB7XG4gIGNvbnN0IFticm9rZW4sIHNldEJyb2tlbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgaW5pdGlhbHMgPSBpbml0aWFsc0Zyb21EaXNwbGF5TmFtZShuYW1lRm9ySW5pdGlhbHMpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNVXNlckF2YXRhcldyYXA+XG4gICAgICB7cGljdHVyZSAmJiAhYnJva2VuID8gKFxuICAgICAgICA8U0NNVXNlckF2YXRhckltZyBzcmM9e3BpY3R1cmV9IGFsdD1cIlwiIG9uRXJyb3I9eygpID0+IHNldEJyb2tlbih0cnVlKX0gbG9hZGluZz1cImxhenlcIiBkZWNvZGluZz1cImFzeW5jXCIgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01Vc2VyQXZhdGFyRmFsbGJhY2sgYXJpYS1oaWRkZW4+e2luaXRpYWxzfTwvU0NNVXNlckF2YXRhckZhbGxiYWNrPlxuICAgICAgKX1cbiAgICA8L1NDTVVzZXJBdmF0YXJXcmFwPlxuICApXG59XG5cbmNvbnN0IENvbnRleHRNZW50aW9uVGFza1JvdzogRkM8e1xuICBpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW1UeXBlXG4gIGFjdGl2ZT86IGJvb2xlYW5cbiAgb25Nb3VzZURvd246IChlOiBNb3VzZUV2ZW50KSA9PiB2b2lkXG4gIG9uSG92ZXI/OiAoKSA9PiB2b2lkXG59PiA9ICh7IGl0ZW0sIGFjdGl2ZSwgb25Nb3VzZURvd24sIG9uSG92ZXIgfSkgPT4ge1xuICBjb25zdCB7IHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQsIGJyZWFkY3J1bWIsIHJhdyB9ID0gaXRlbVxuICBjb25zdCBwcm9qZWN0TmFtZSA9IHJhdy5wcm9qZWN0TmFtZT8udHJpbSgpIHx8IGJyZWFkY3J1bWI/LnBhcmVudD8udHJpbSgpIHx8ICcnXG4gIGNvbnN0IHByb2plY3ROYW1lRGlzcGxheSA9IHRydW5jYXRlV2l0aEVsbGlwc2lzKHByb2plY3ROYW1lLCBUQVNLX1BST0pFQ1RfTkFNRV9NQVhfQ0hBUlMpXG4gIGNvbnN0IGlzUHJvamVjdE5hbWVUcnVuY2F0ZWRCeUNoYXJzID0gcHJvamVjdE5hbWVEaXNwbGF5ICE9PSBwcm9qZWN0TmFtZVxuICBjb25zdCBoYXNGYXRoZXIgPSByYXcuZmF0aGVySWQgIT0gbnVsbFxuICBjb25zdCB0aXRsZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgcHJvamVjdFJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHNob3dUaXRsZVRvb2x0aXAgPSB1c2VPdmVyZmxvd1Rvb2x0aXAodGl0bGVSZWYsIFtcbiAgICBwcmltYXJ5LFxuICAgIHByb2plY3ROYW1lLFxuICAgIHByaW1hcnlIaWdobGlnaHQ/LnN0YXJ0ID8/IC0xLFxuICAgIHByaW1hcnlIaWdobGlnaHQ/Lmxlbmd0aCA/PyAwLFxuICAgIGhhc0ZhdGhlcixcbiAgXSlcbiAgY29uc3Qgc2hvd1Byb2plY3RUb29sdGlwID0gdXNlT3ZlcmZsb3dUb29sdGlwKHByb2plY3RSZWYsIFtwcm9qZWN0TmFtZURpc3BsYXksIHByaW1hcnldKVxuICBjb25zdCBzaG91bGRTaG93UHJvamVjdFRvb2x0aXAgPSBpc1Byb2plY3ROYW1lVHJ1bmNhdGVkQnlDaGFycyB8fCBzaG93UHJvamVjdFRvb2x0aXBcblxuICByZXR1cm4gKFxuICAgIDxTQ01JVGFza1Jvd1dyYXAgb25Nb3VzZURvd249e29uTW91c2VEb3dufSBvbk1vdXNlRW50ZXI9e29uSG92ZXJ9PlxuICAgICAgPFNDTUlUYXNrUm93U3VyZmFjZSAkYWN0aXZlPXthY3RpdmV9PlxuICAgICAgICA8U0NNSVRhc2tSb3dJbm5lcj5cbiAgICAgICAgICA8U0NNSVRhc2tJY29uV3JhcD5cbiAgICAgICAgICAgIDxUYXNrTGlua0ljb24gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgIDwvU0NNSVRhc2tJY29uV3JhcD5cbiAgICAgICAgICA8U0NNSVRhc2tUaXRsZVJvdz5cbiAgICAgICAgICAgIHtoYXNGYXRoZXIgPyAoXG4gICAgICAgICAgICAgIDxTQ01JVGFza1N1YnRhc2tJY29uV3JhcD5cbiAgICAgICAgICAgICAgICA8U3VidGFza0ljb24gd2lkdGg9XCIxNnB4XCIgaGVpZ2h0PVwiMTZweFwiIGNvbG9yPVwiIzAwMFwiIHZhcmlhbnQ9XCJyZWd1bGFyXCIgLz5cbiAgICAgICAgICAgICAgPC9TQ01JVGFza1N1YnRhc2tJY29uV3JhcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3dUaXRsZVRvb2x0aXAgPyBwcmltYXJ5IDogJyd9PlxuICAgICAgICAgICAgICA8U0NNSVRhc2tUaXRsZSByZWY9e3RpdGxlUmVmfT57cmVuZGVyVGl0bGUocHJpbWFyeSwgcHJpbWFyeUhpZ2hsaWdodCl9PC9TQ01JVGFza1RpdGxlPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAge3Byb2plY3ROYW1lID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvdWxkU2hvd1Byb2plY3RUb29sdGlwID8gcHJvamVjdE5hbWUgOiAnJ30+XG4gICAgICAgICAgICAgICAgPFNDTUlUYXNrUHJvamVjdE5hbWUgcmVmPXtwcm9qZWN0UmVmfT57cHJvamVjdE5hbWVEaXNwbGF5fTwvU0NNSVRhc2tQcm9qZWN0TmFtZT5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01JVGFza1RpdGxlUm93PlxuICAgICAgICA8L1NDTUlUYXNrUm93SW5uZXI+XG4gICAgICA8L1NDTUlUYXNrUm93U3VyZmFjZT5cbiAgICA8L1NDTUlUYXNrUm93V3JhcD5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgQ29udGV4dE1lbnRpb25JdGVtOiBGQzxDb250ZXh0TWVudGlvbkl0ZW1Qcm9wcz4gPSAoeyBpdGVtLCBhY3RpdmUsIG9uU2VsZWN0LCBvbkhvdmVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0LCBicmVhZGNydW1iLCB0eXBlLCByYXcgfSA9IGl0ZW1cblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIG9uU2VsZWN0KGl0ZW0pXG4gIH1cblxuICBjb25zdCBoYXNDb3VudCA9IHR5cGVvZiBicmVhZGNydW1iPy5jb3VudCA9PT0gJ251bWJlcidcbiAgY29uc3QgaGFzUGFyZW50ID0gISFicmVhZGNydW1iPy5wYXJlbnRcbiAgY29uc3QgY291bnRMYWJlbCA9XG4gICAgYnJlYWRjcnVtYj8uY291bnRMYWJlbCAmJlxuICAgIHQoYGNvbnRleHRNZW50aW9uLmNvdW50ZXJzLiR7YnJlYWRjcnVtYi5jb3VudExhYmVsfWAsIHsgZGVmYXVsdFZhbHVlOiBicmVhZGNydW1iLmNvdW50TGFiZWwgfSlcblxuICBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgY29uc3QgcG9zaXRpb25OYW1lVHJpbW1lZCA9IHR5cGVvZiByYXcucG9zaXRpb25OYW1lID09PSAnc3RyaW5nJyA/IHJhdy5wb3NpdGlvbk5hbWUudHJpbSgpIDogJydcbiAgICBjb25zdCBwb3NpdGlvbkxpbmUgPSBwb3NpdGlvbk5hbWVUcmltbWVkIHx8IHQoJ2NvbnRleHRNZW50aW9uLnVzZXJOb1Bvc2l0aW9uJywgeyBkZWZhdWx0VmFsdWU6ICdTaW4gcG9zaWNpw7NuJyB9KVxuICAgIGNvbnN0IHVzZXJOYW1lRm9ySW5pdGlhbHMgPSB0eXBlb2YgcmF3Lm5hbWUgPT09ICdzdHJpbmcnICYmIHJhdy5uYW1lLnRyaW0oKSA/IHJhdy5uYW1lIDogcHJpbWFyeVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01JUm93VXNlciAkYWN0aXZlPXthY3RpdmV9IG9uTW91c2VEb3duPXtoYW5kbGVDbGlja30gb25Nb3VzZUVudGVyPXsoKSA9PiBvbkhvdmVyPy4oaXRlbSl9PlxuICAgICAgICA8VXNlclJvd0F2YXRhciBwaWN0dXJlPXtyYXcucGljdHVyZX0gbmFtZUZvckluaXRpYWxzPXt1c2VyTmFtZUZvckluaXRpYWxzfSAvPlxuICAgICAgICA8U0NNVXNlckluZm8+XG4gICAgICAgICAgPFNDTVVzZXJOYW1lUG9zaXRpb25Sb3c+XG4gICAgICAgICAgICA8U0NNVXNlck5hbWVDZWxsICR3aXRoRGl2aWRlcj5cbiAgICAgICAgICAgICAgPFNDTVVzZXJOYW1lVGV4dD57cmVuZGVyVGl0bGUocHJpbWFyeSwgcHJpbWFyeUhpZ2hsaWdodCl9PC9TQ01Vc2VyTmFtZVRleHQ+XG4gICAgICAgICAgICA8L1NDTVVzZXJOYW1lQ2VsbD5cbiAgICAgICAgICAgIDxTQ01Vc2VyUG9zaXRpb25UZXh0IHRpdGxlPXtwb3NpdGlvbkxpbmV9Pntwb3NpdGlvbkxpbmV9PC9TQ01Vc2VyUG9zaXRpb25UZXh0PlxuICAgICAgICAgIDwvU0NNVXNlck5hbWVQb3NpdGlvblJvdz5cbiAgICAgICAgPC9TQ01Vc2VySW5mbz5cbiAgICAgIDwvU0NNSVJvd1VzZXI+XG4gICAgKVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NNSVByb2plY3RSb3cgb25Nb3VzZURvd249e2hhbmRsZUNsaWNrfSBvbk1vdXNlRW50ZXI9eygpID0+IG9uSG92ZXI/LihpdGVtKX0+XG4gICAgICAgIDxTQ01JUHJvamVjdENvbnRlbnQgJGFjdGl2ZT17YWN0aXZlfT5cbiAgICAgICAgICA8U0NNSU5hbWU+XG4gICAgICAgICAgICA8U0NNSVByb2plY3RUaXRsZSB0aXRsZT17cHJpbWFyeX0+e3JlbmRlclRpdGxlKHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQpfTwvU0NNSVByb2plY3RUaXRsZT5cbiAgICAgICAgICA8L1NDTUlOYW1lPlxuICAgICAgICA8L1NDTUlQcm9qZWN0Q29udGVudD5cbiAgICAgIDwvU0NNSVByb2plY3RSb3c+XG4gICAgKVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgIHJldHVybiAoXG4gICAgICA8Q29udGV4dE1lbnRpb25UYXNrUm93IGl0ZW09e2l0ZW19IGFjdGl2ZT17YWN0aXZlfSBvbk1vdXNlRG93bj17aGFuZGxlQ2xpY2t9IG9uSG92ZXI9eygpID0+IG9uSG92ZXI/LihpdGVtKX0gLz5cbiAgICApXG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ21jcCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDTUlSb3cgJGFjdGl2ZT17YWN0aXZlfSBvbk1vdXNlRG93bj17aGFuZGxlQ2xpY2t9IG9uTW91c2VFbnRlcj17KCkgPT4gb25Ib3Zlcj8uKGl0ZW0pfT5cbiAgICAgICAgPFNDTUlUYXNrUm93SW5uZXI+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHdpZHRoOiAxNixcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxNixcbiAgICAgICAgICAgICAgZmxleDogJzAgMCAxNnB4JyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTm90aW9uTWNwU2x1ZyhyYXcuaWQpID8gKFxuICAgICAgICAgICAgICA8Tm90aW9uSWNvbiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICBnZXRDb250ZXh0TWVudGlvbkljb24oJ21jcCcsICcjMmQ3N2JkJywgcmF3LmlkLCAxNilcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxTQ01JVGFza1RpdGxlIHRpdGxlPXtwcmltYXJ5fT57cmVuZGVyVGl0bGUocHJpbWFyeSwgcHJpbWFyeUhpZ2hsaWdodCl9PC9TQ01JVGFza1RpdGxlPlxuICAgICAgICA8L1NDTUlUYXNrUm93SW5uZXI+XG4gICAgICA8L1NDTUlSb3c+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNSVJvdyAkYWN0aXZlPXthY3RpdmV9IG9uTW91c2VEb3duPXtoYW5kbGVDbGlja30gb25Nb3VzZUVudGVyPXsoKSA9PiBvbkhvdmVyPy4oaXRlbSl9PlxuICAgICAgPFNDTUlOYW1lPlxuICAgICAgICA8U0NNSVRpdGxlPntyZW5kZXJUaXRsZShwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0KX08L1NDTUlUaXRsZT5cbiAgICAgICAgeyhoYXNDb3VudCB8fCBoYXNQYXJlbnQpICYmIChcbiAgICAgICAgICA8U0NNSUJyZWFkY3J1bWI+XG4gICAgICAgICAgICB7aGFzQ291bnQgJiYgKFxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7YnJlYWRjcnVtYj8uY291bnR9IHtjb3VudExhYmVsfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2hhc1BhcmVudCAmJiAoXG4gICAgICAgICAgICAgIDxTQ01JQnJlYWRjcnVtYlBhcmVudD5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBjb2xvcj1cIiM4MDgwODBcIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPnticmVhZGNydW1iPy5wYXJlbnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L1NDTUlCcmVhZGNydW1iUGFyZW50PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NDTUlCcmVhZGNydW1iPlxuICAgICAgICApfVxuICAgICAgPC9TQ01JTmFtZT5cbiAgICA8L1NDTUlSb3c+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQXlCQSxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUF3QixPQUFPO0FBQ3pGLFNBQVNDLFlBQVksUUFBUSwrQ0FBK0M7QUFDNUUsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBRTFDLFNBQVNDLFVBQVUsUUFBUSxxQkFBcUI7QUFDaEQsU0FBU0MsV0FBVyxRQUFRLHNCQUFzQjtBQUNsRCxTQUFTQyxZQUFZLFFBQVEsdUJBQXVCO0FBQ3BELFNBQVNDLHFCQUFxQixFQUFFQyxlQUFlLFFBQVEsb0NBQW9DO0FBQzNGLFNBQ0VDLE9BQU8sRUFDUEMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxnQkFBZ0IsRUFDaEJDLGtCQUFrQixFQUNsQkMsY0FBYyxFQUNkQyxvQkFBb0IsRUFDcEJDLFdBQVcsRUFDWEMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsV0FB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R0FBRyxDQUFDNEMsRUFBRSxDQUFDLGdCQUN0QmxJLElBQUEsQ0FBQ2hDLFVBQVU7WUFBQ29JLEtBQUssRUFBRSxFQUFHO1lBQUNDLE1BQU0sRUFBRTtVQUFHLENBQUUsQ0FBQyxHQUVyQ2xJLHFCQUFxQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUVtSCxHQUFHLENBQUM0QyxFQUFFLEVBQUUsRUFBRTtRQUNuRCxDQUNHLENBQUMsZUFDUGxJLElBQUEsQ0FBQ0YsYUFBYTtVQUFDMEcsS0FBSyxFQUFFeEYsT0FBUTtVQUFBSSxRQUFBLEVBQUVMLFdBQVcsQ0FBQ0MsT0FBTyxFQUFFb0UsZ0JBQWdCO1FBQUMsQ0FBZ0IsQ0FBQztNQUFBLENBQ3ZFO0lBQUMsQ0FDWixDQUFDO0VBRWQ7RUFFQSxvQkFDRXBGLElBQUEsQ0FBQzNCLE9BQU87SUFBQzhILE9BQU8sRUFBRWxCLE1BQU87SUFBQ0MsV0FBVyxFQUFFNkIsV0FBWTtJQUFDYixZQUFZLEVBQUUsU0FBZEEsWUFBWUEsQ0FBQTtNQUFBLE9BQVFmLFFBQU8sYUFBUEEsUUFBTyx1QkFBUEEsUUFBTyxDQUFHSCxJQUFJLENBQUM7SUFBQSxDQUFDO0lBQUE1RCxRQUFBLGVBQ3RGaEIsS0FBQSxDQUFDNUIsUUFBUTtNQUFBNEMsUUFBQSxnQkFDUHBCLElBQUEsQ0FBQ3ZCLFNBQVM7UUFBQTJDLFFBQUEsRUFBRUwsV0FBVyxDQUFDQyxPQUFPLEVBQUVvRSxnQkFBZ0I7TUFBQyxDQUFZLENBQUMsRUFDOUQsQ0FBQytCLFFBQVEsSUFBSUUsU0FBUyxrQkFDckJqSCxLQUFBLENBQUN4QixjQUFjO1FBQUF3QyxRQUFBLEdBQ1orRixRQUFRLGlCQUNQL0csS0FBQTtVQUFBZ0IsUUFBQSxHQUNHaUUsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUUrQixLQUFLLEVBQUMsR0FBQyxFQUFDRSxVQUFVO1FBQUEsQ0FDM0IsQ0FDUCxFQUNBRCxTQUFTLGlCQUNSakgsS0FBQSxDQUFDdkIsb0JBQW9CO1VBQUF1QyxRQUFBLGdCQUNuQnBCLElBQUEsQ0FBQ25DLFlBQVk7WUFBQ3VJLEtBQUssRUFBQyxNQUFNO1lBQUNDLE1BQU0sRUFBQyxNQUFNO1lBQUNDLEtBQUssRUFBQztVQUFTLENBQUUsQ0FBQyxlQUMzRHRHLElBQUE7WUFBQW9CLFFBQUEsRUFBT2lFLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFRztVQUFNLENBQU8sQ0FBQztRQUFBLENBQ2IsQ0FDdkI7TUFBQSxDQUNhLENBQ2pCO0lBQUEsQ0FDTztFQUFDLENBQ0osQ0FBQztBQUVkLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
309
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoZXZyb25SaWdodCIsIlRvb2x0aXAiLCJ1c2VUIiwiTm90aW9uSWNvbiIsIlN1YnRhc2tJY29uIiwiVGFza0xpbmtJY29uIiwiZ2V0Q29udGV4dE1lbnRpb25JY29uIiwiaXNOb3Rpb25NY3BTbHVnIiwiU0NNSVJvdyIsIlNDTUlQcm9qZWN0Um93IiwiU0NNSVByb2plY3RDb250ZW50IiwiU0NNSU5hbWUiLCJTQ01JVGl0bGUiLCJTQ01JUHJvamVjdFRpdGxlIiwiU0NNSVRpdGxlSGlnaGxpZ2h0IiwiU0NNSUJyZWFkY3J1bWIiLCJTQ01JQnJlYWRjcnVtYlBhcmVudCIsIlNDTUlSb3dVc2VyIiwiU0NNVXNlckF2YXRhcldyYXAiLCJTQ01Vc2VyQXZhdGFySW1nIiwiU0NNVXNlckF2YXRhckZhbGxiYWNrIiwiU0NNVXNlckluZm8iLCJTQ01Vc2VyTmFtZVBvc2l0aW9uUm93IiwiU0NNVXNlck5hbWVDZWxsIiwiU0NNVXNlck5hbWVUZXh0IiwiU0NNVXNlclBvc2l0aW9uVGV4dCIsIlNDTUlUYXNrUm93V3JhcCIsIlNDTUlUYXNrUm93U3VyZmFjZSIsIlNDTUlTa2lsbFJvd1N1cmZhY2UiLCJTQ01JVGFza1Jvd0lubmVyIiwiU0NNSVRhc2tUaXRsZVJvdyIsIlNDTUlUYXNrU3VidGFza0ljb25XcmFwIiwiU0NNSVRhc2tQcm9qZWN0TmFtZSIsIlNDTUlUYXNrSWNvbldyYXAiLCJTQ01JVGFza1RpdGxlIiwianN4IiwiX2pzeCIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwianN4cyIsIl9qc3hzIiwiVEFTS19QUk9KRUNUX05BTUVfTUFYX0NIQVJTIiwidHJ1bmNhdGVXaXRoRWxsaXBzaXMiLCJ2YWx1ZSIsIm1heENoYXJzIiwibGVuZ3RoIiwiY29uY2F0Iiwic2xpY2UiLCJNYXRoIiwibWF4IiwidHJpbUVuZCIsInJlbmRlclRpdGxlIiwicHJpbWFyeSIsImhpZ2hsaWdodCIsInN0YXJ0IiwiZW5kIiwiY2hpbGRyZW4iLCJ1c2VPdmVyZmxvd1Rvb2x0aXAiLCJyZWYiLCJkZXBzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd1Rvb2x0aXAiLCJzZXRTaG93VG9vbHRpcCIsImVsIiwiY3VycmVudCIsInVuZGVmaW5lZCIsIm1lYXN1cmUiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwicm8iLCJSZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZGlzY29ubmVjdCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJpbml0aWFsc0Zyb21EaXNwbGF5TmFtZSIsIm5hbWUiLCJfcGFydHMkMiIsInRyaW1tZWQiLCJ0cmltIiwicGFydHMiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJfcGFydHMkMCRjaGFyQXQiLCJfcGFydHMkIiwiX3BhcnRzJGNoYXJBdCIsIl9wYXJ0cyIsImZpcnN0IiwiY2hhckF0IiwibGFzdCIsInRvVXBwZXJDYXNlIiwic2luZ2xlIiwiVXNlclJvd0F2YXRhciIsIl9yZWYiLCJwaWN0dXJlIiwibmFtZUZvckluaXRpYWxzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJicm9rZW4iLCJzZXRCcm9rZW4iLCJpbml0aWFscyIsInNyYyIsImFsdCIsIm9uRXJyb3IiLCJsb2FkaW5nIiwiZGVjb2RpbmciLCJDb250ZXh0TWVudGlvblRhc2tSb3ciLCJfcmVmMiIsIl9yYXckcHJvamVjdE5hbWUiLCJfYnJlYWRjcnVtYiRwYXJlbnQiLCJfcHJpbWFyeUhpZ2hsaWdodCRzdGEiLCJfcHJpbWFyeUhpZ2hsaWdodCRsZW4iLCJpdGVtIiwiYWN0aXZlIiwib25Nb3VzZURvd24iLCJvbkhvdmVyIiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJyYXciLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsInByb2plY3ROYW1lRGlzcGxheSIsImlzUHJvamVjdE5hbWVUcnVuY2F0ZWRCeUNoYXJzIiwiaGFzRmF0aGVyIiwiZmF0aGVySWQiLCJ0aXRsZVJlZiIsInByb2plY3RSZWYiLCJzaG93VGl0bGVUb29sdGlwIiwic2hvd1Byb2plY3RUb29sdGlwIiwic2hvdWxkU2hvd1Byb2plY3RUb29sdGlwIiwib25Nb3VzZUVudGVyIiwiJGFjdGl2ZSIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJ2YXJpYW50IiwidGl0bGUiLCJDb250ZXh0TWVudGlvbkl0ZW0iLCJfcmVmMyIsIm9uU2VsZWN0IiwiX3VzZVQiLCJ0IiwidHlwZSIsImhhbmRsZUNsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGFzQ291bnQiLCJjb3VudCIsImhhc1BhcmVudCIsImNvdW50TGFiZWwiLCJkZWZhdWx0VmFsdWUiLCJwb3NpdGlvbk5hbWVUcmltbWVkIiwicG9zaXRpb25OYW1lIiwicG9zaXRpb25MaW5lIiwidXNlck5hbWVGb3JJbml0aWFscyIsIiR3aXRoRGl2aWRlciIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsImZsZXgiLCJpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uSXRlbS9Db250ZXh0TWVudGlvbkl0ZW0udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZDLCBNb3VzZUV2ZW50LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIHR5cGUgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGV2cm9uUmlnaHQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uUmlnaHQnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uSXRlbSBhcyBDb250ZXh0TWVudGlvbkl0ZW1UeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBOb3Rpb25JY29uIH0gZnJvbSAnLi4vaWNvbnMvTm90aW9uSWNvbidcbmltcG9ydCB7IFN1YnRhc2tJY29uIH0gZnJvbSAnLi4vaWNvbnMvU3VidGFza0ljb24nXG5pbXBvcnQgeyBUYXNrTGlua0ljb24gfSBmcm9tICcuLi9pY29ucy9UYXNrTGlua0ljb24nXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24sIGlzTm90aW9uTWNwU2x1ZyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQge1xuICBTQ01JUm93LFxuICBTQ01JUHJvamVjdFJvdyxcbiAgU0NNSVByb2plY3RDb250ZW50LFxuICBTQ01JTmFtZSxcbiAgU0NNSVRpdGxlLFxuICBTQ01JUHJvamVjdFRpdGxlLFxuICBTQ01JVGl0bGVIaWdobGlnaHQsXG4gIFNDTUlCcmVhZGNydW1iLFxuICBTQ01JQnJlYWRjcnVtYlBhcmVudCxcbiAgU0NNSVJvd1VzZXIsXG4gIFNDTVVzZXJBdmF0YXJXcmFwLFxuICBTQ01Vc2VyQXZhdGFySW1nLFxuICBTQ01Vc2VyQXZhdGFyRmFsbGJhY2ssXG4gIFNDTVVzZXJJbmZvLFxuICBTQ01Vc2VyTmFtZVBvc2l0aW9uUm93LFxuICBTQ01Vc2VyTmFtZUNlbGwsXG4gIFNDTVVzZXJOYW1lVGV4dCxcbiAgU0NNVXNlclBvc2l0aW9uVGV4dCxcbiAgU0NNSVRhc2tSb3dXcmFwLFxuICBTQ01JVGFza1Jvd1N1cmZhY2UsXG4gIFNDTUlTa2lsbFJvd1N1cmZhY2UsXG4gIFNDTUlUYXNrUm93SW5uZXIsXG4gIFNDTUlUYXNrVGl0bGVSb3csXG4gIFNDTUlUYXNrU3VidGFza0ljb25XcmFwLFxuICBTQ01JVGFza1Byb2plY3ROYW1lLFxuICBTQ01JVGFza0ljb25XcmFwLFxuICBTQ01JVGFza1RpdGxlLFxufSBmcm9tICcuL0NvbnRleHRNZW50aW9uSXRlbS5zdHlsZXMnXG5cbnR5cGUgQ29udGV4dE1lbnRpb25JdGVtUHJvcHMgPSB7XG4gIGl0ZW06IENvbnRleHRNZW50aW9uSXRlbVR5cGVcbiAgYWN0aXZlPzogYm9vbGVhblxuICBvblNlbGVjdDogKGl0ZW06IENvbnRleHRNZW50aW9uSXRlbVR5cGUpID0+IHZvaWRcbiAgb25Ib3Zlcj86IChpdGVtOiBDb250ZXh0TWVudGlvbkl0ZW1UeXBlKSA9PiB2b2lkXG59XG5cbmNvbnN0IFRBU0tfUFJPSkVDVF9OQU1FX01BWF9DSEFSUyA9IDQwXG5cbmNvbnN0IHRydW5jYXRlV2l0aEVsbGlwc2lzID0gKHZhbHVlOiBzdHJpbmcsIG1heENoYXJzOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICBpZiAodmFsdWUubGVuZ3RoIDw9IG1heENoYXJzKSByZXR1cm4gdmFsdWVcbiAgcmV0dXJuIGAke3ZhbHVlLnNsaWNlKDAsIE1hdGgubWF4KDAsIG1heENoYXJzIC0gMSkpLnRyaW1FbmQoKX3igKZgXG59XG5cbmNvbnN0IHJlbmRlclRpdGxlID0gKHByaW1hcnk6IHN0cmluZywgaGlnaGxpZ2h0PzogeyBzdGFydDogbnVtYmVyOyBsZW5ndGg6IG51bWJlciB9KSA9PiB7XG4gIGlmICghaGlnaGxpZ2h0IHx8IGhpZ2hsaWdodC5sZW5ndGggPD0gMCkgcmV0dXJuIHByaW1hcnlcbiAgY29uc3QgeyBzdGFydCwgbGVuZ3RoIH0gPSBoaWdobGlnaHRcbiAgY29uc3QgZW5kID0gc3RhcnQgKyBsZW5ndGhcbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+IHByaW1hcnkubGVuZ3RoIHx8IGVuZCA+IHByaW1hcnkubGVuZ3RoKSByZXR1cm4gcHJpbWFyeVxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7cHJpbWFyeS5zbGljZSgwLCBzdGFydCl9XG4gICAgICA8U0NNSVRpdGxlSGlnaGxpZ2h0PntwcmltYXJ5LnNsaWNlKHN0YXJ0LCBlbmQpfTwvU0NNSVRpdGxlSGlnaGxpZ2h0PlxuICAgICAge3ByaW1hcnkuc2xpY2UoZW5kKX1cbiAgICA8Lz5cbiAgKVxufVxuXG5mdW5jdGlvbiB1c2VPdmVyZmxvd1Rvb2x0aXA8VCBleHRlbmRzIEhUTUxFbGVtZW50PihyZWY6IFJlZk9iamVjdDxUIHwgbnVsbD4sIGRlcHM6IHJlYWRvbmx5IHVua25vd25bXSkge1xuICBjb25zdCBbc2hvd1Rvb2x0aXAsIHNldFNob3dUb29sdGlwXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSByZWYuY3VycmVudFxuICAgIGlmICghZWwpIHtcbiAgICAgIHNldFNob3dUb29sdGlwKGZhbHNlKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IG1lYXN1cmUgPSAoKSA9PiB7XG4gICAgICBzZXRTaG93VG9vbHRpcChlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoKVxuICAgIH1cblxuICAgIG1lYXN1cmUoKVxuICAgIGNvbnN0IHJvID0gbmV3IFJlc2l6ZU9ic2VydmVyKG1lYXN1cmUpXG4gICAgcm8ub2JzZXJ2ZShlbClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcm8uZGlzY29ubmVjdCgpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZSlcbiAgICB9XG4gIH0sIGRlcHMpXG5cbiAgcmV0dXJuIHNob3dUb29sdGlwXG59XG5cbi8qKiBJbmljaWFsZXMgcGFyYSBhdmF0YXIgKG5vbWJyZSBsZWdhbCksIG5vIGVsIHRleHRvIHZpc2libGUgZGUgbGEgZmlsYSAoZWouIFwiWW9cIikuICovXG5jb25zdCBpbml0aWFsc0Zyb21EaXNwbGF5TmFtZSA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0cmltbWVkID0gbmFtZS50cmltKClcbiAgaWYgKCF0cmltbWVkKSByZXR1cm4gJz8nXG4gIGNvbnN0IHBhcnRzID0gdHJpbW1lZC5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKVxuICBpZiAocGFydHMubGVuZ3RoID49IDIpIHtcbiAgICBjb25zdCBmaXJzdCA9IHBhcnRzWzBdPy5jaGFyQXQoMCkgPz8gJydcbiAgICBjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV0/LmNoYXJBdCgwKSA/PyAnJ1xuICAgIHJldHVybiBgJHtmaXJzdH0ke2xhc3R9YC50b1VwcGVyQ2FzZSgpXG4gIH1cbiAgY29uc3Qgc2luZ2xlID0gcGFydHNbMF0gPz8gJydcbiAgaWYgKHNpbmdsZS5sZW5ndGggPj0gMikgcmV0dXJuIHNpbmdsZS5zbGljZSgwLCAyKS50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiAoc2luZ2xlLmNoYXJBdCgwKSB8fCAnPycpLnRvVXBwZXJDYXNlKClcbn1cblxuY29uc3QgVXNlclJvd0F2YXRhcjogRkM8eyBwaWN0dXJlPzogc3RyaW5nIHwgbnVsbDsgbmFtZUZvckluaXRpYWxzOiBzdHJpbmcgfT4gPSAoeyBwaWN0dXJlLCBuYW1lRm9ySW5pdGlhbHMgfSkgPT4ge1xuICBjb25zdCBbYnJva2VuLCBzZXRCcm9rZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGluaXRpYWxzID0gaW5pdGlhbHNGcm9tRGlzcGxheU5hbWUobmFtZUZvckluaXRpYWxzKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTVVzZXJBdmF0YXJXcmFwPlxuICAgICAge3BpY3R1cmUgJiYgIWJyb2tlbiA/IChcbiAgICAgICAgPFNDTVVzZXJBdmF0YXJJbWcgc3JjPXtwaWN0dXJlfSBhbHQ9XCJcIiBvbkVycm9yPXsoKSA9PiBzZXRCcm9rZW4odHJ1ZSl9IGxvYWRpbmc9XCJsYXp5XCIgZGVjb2Rpbmc9XCJhc3luY1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8U0NNVXNlckF2YXRhckZhbGxiYWNrIGFyaWEtaGlkZGVuPntpbml0aWFsc308L1NDTVVzZXJBdmF0YXJGYWxsYmFjaz5cbiAgICAgICl9XG4gICAgPC9TQ01Vc2VyQXZhdGFyV3JhcD5cbiAgKVxufVxuXG5jb25zdCBDb250ZXh0TWVudGlvblRhc2tSb3c6IEZDPHtcbiAgaXRlbTogQ29udGV4dE1lbnRpb25JdGVtVHlwZVxuICBhY3RpdmU/OiBib29sZWFuXG4gIG9uTW91c2VEb3duOiAoZTogTW91c2VFdmVudCkgPT4gdm9pZFxuICBvbkhvdmVyPzogKCkgPT4gdm9pZFxufT4gPSAoeyBpdGVtLCBhY3RpdmUsIG9uTW91c2VEb3duLCBvbkhvdmVyIH0pID0+IHtcbiAgY29uc3QgeyBwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0LCBicmVhZGNydW1iLCByYXcgfSA9IGl0ZW1cbiAgY29uc3QgcHJvamVjdE5hbWUgPSByYXcucHJvamVjdE5hbWU/LnRyaW0oKSB8fCBicmVhZGNydW1iPy5wYXJlbnQ/LnRyaW0oKSB8fCAnJ1xuICBjb25zdCBwcm9qZWN0TmFtZURpc3BsYXkgPSB0cnVuY2F0ZVdpdGhFbGxpcHNpcyhwcm9qZWN0TmFtZSwgVEFTS19QUk9KRUNUX05BTUVfTUFYX0NIQVJTKVxuICBjb25zdCBpc1Byb2plY3ROYW1lVHJ1bmNhdGVkQnlDaGFycyA9IHByb2plY3ROYW1lRGlzcGxheSAhPT0gcHJvamVjdE5hbWVcbiAgY29uc3QgaGFzRmF0aGVyID0gcmF3LmZhdGhlcklkICE9IG51bGxcbiAgY29uc3QgdGl0bGVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHByb2plY3RSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50PihudWxsKVxuICBjb25zdCBzaG93VGl0bGVUb29sdGlwID0gdXNlT3ZlcmZsb3dUb29sdGlwKHRpdGxlUmVmLCBbXG4gICAgcHJpbWFyeSxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0Py5zdGFydCA/PyAtMSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0Py5sZW5ndGggPz8gMCxcbiAgICBoYXNGYXRoZXIsXG4gIF0pXG4gIGNvbnN0IHNob3dQcm9qZWN0VG9vbHRpcCA9IHVzZU92ZXJmbG93VG9vbHRpcChwcm9qZWN0UmVmLCBbcHJvamVjdE5hbWVEaXNwbGF5LCBwcmltYXJ5XSlcbiAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RUb29sdGlwID0gaXNQcm9qZWN0TmFtZVRydW5jYXRlZEJ5Q2hhcnMgfHwgc2hvd1Byb2plY3RUb29sdGlwXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNSVRhc2tSb3dXcmFwIG9uTW91c2VEb3duPXtvbk1vdXNlRG93bn0gb25Nb3VzZUVudGVyPXtvbkhvdmVyfT5cbiAgICAgIDxTQ01JVGFza1Jvd1N1cmZhY2UgJGFjdGl2ZT17YWN0aXZlfT5cbiAgICAgICAgPFNDTUlUYXNrUm93SW5uZXI+XG4gICAgICAgICAgPFNDTUlUYXNrSWNvbldyYXA+XG4gICAgICAgICAgICA8VGFza0xpbmtJY29uIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L1NDTUlUYXNrSWNvbldyYXA+XG4gICAgICAgICAgPFNDTUlUYXNrVGl0bGVSb3c+XG4gICAgICAgICAgICB7aGFzRmF0aGVyID8gKFxuICAgICAgICAgICAgICA8U0NNSVRhc2tTdWJ0YXNrSWNvbldyYXA+XG4gICAgICAgICAgICAgICAgPFN1YnRhc2tJY29uIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj1cIiMwMDBcIiB2YXJpYW50PVwicmVndWxhclwiIC8+XG4gICAgICAgICAgICAgIDwvU0NNSVRhc2tTdWJ0YXNrSWNvbldyYXA+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VGl0bGVUb29sdGlwID8gcHJpbWFyeSA6ICcnfT5cbiAgICAgICAgICAgICAgPFNDTUlUYXNrVGl0bGUgcmVmPXt0aXRsZVJlZn0+e3JlbmRlclRpdGxlKHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQpfTwvU0NNSVRhc2tUaXRsZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgIHtwcm9qZWN0TmFtZSA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Nob3VsZFNob3dQcm9qZWN0VG9vbHRpcCA/IHByb2plY3ROYW1lIDogJyd9PlxuICAgICAgICAgICAgICAgIDxTQ01JVGFza1Byb2plY3ROYW1lIHJlZj17cHJvamVjdFJlZn0+e3Byb2plY3ROYW1lRGlzcGxheX08L1NDTUlUYXNrUHJvamVjdE5hbWU+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNSVRhc2tUaXRsZVJvdz5cbiAgICAgICAgPC9TQ01JVGFza1Jvd0lubmVyPlxuICAgICAgPC9TQ01JVGFza1Jvd1N1cmZhY2U+XG4gICAgPC9TQ01JVGFza1Jvd1dyYXA+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENvbnRleHRNZW50aW9uSXRlbTogRkM8Q29udGV4dE1lbnRpb25JdGVtUHJvcHM+ID0gKHsgaXRlbSwgYWN0aXZlLCBvblNlbGVjdCwgb25Ib3ZlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IHsgcHJpbWFyeSwgcHJpbWFyeUhpZ2hsaWdodCwgYnJlYWRjcnVtYiwgdHlwZSwgcmF3IH0gPSBpdGVtXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBvblNlbGVjdChpdGVtKVxuICB9XG5cbiAgY29uc3QgaGFzQ291bnQgPSB0eXBlb2YgYnJlYWRjcnVtYj8uY291bnQgPT09ICdudW1iZXInXG4gIGNvbnN0IGhhc1BhcmVudCA9ICEhYnJlYWRjcnVtYj8ucGFyZW50XG4gIGNvbnN0IGNvdW50TGFiZWwgPVxuICAgIGJyZWFkY3J1bWI/LmNvdW50TGFiZWwgJiZcbiAgICB0KGBjb250ZXh0TWVudGlvbi5jb3VudGVycy4ke2JyZWFkY3J1bWIuY291bnRMYWJlbH1gLCB7IGRlZmF1bHRWYWx1ZTogYnJlYWRjcnVtYi5jb3VudExhYmVsIH0pXG5cbiAgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgIGNvbnN0IHBvc2l0aW9uTmFtZVRyaW1tZWQgPSB0eXBlb2YgcmF3LnBvc2l0aW9uTmFtZSA9PT0gJ3N0cmluZycgPyByYXcucG9zaXRpb25OYW1lLnRyaW0oKSA6ICcnXG4gICAgY29uc3QgcG9zaXRpb25MaW5lID0gcG9zaXRpb25OYW1lVHJpbW1lZCB8fCB0KCdjb250ZXh0TWVudGlvbi51c2VyTm9Qb3NpdGlvbicsIHsgZGVmYXVsdFZhbHVlOiAnU2luIHBvc2ljacOzbicgfSlcbiAgICBjb25zdCB1c2VyTmFtZUZvckluaXRpYWxzID0gdHlwZW9mIHJhdy5uYW1lID09PSAnc3RyaW5nJyAmJiByYXcubmFtZS50cmltKCkgPyByYXcubmFtZSA6IHByaW1hcnlcblxuICAgIHJldHVybiAoXG4gICAgICA8U0NNSVJvd1VzZXIgJGFjdGl2ZT17YWN0aXZlfSBvbk1vdXNlRG93bj17aGFuZGxlQ2xpY2t9IG9uTW91c2VFbnRlcj17KCkgPT4gb25Ib3Zlcj8uKGl0ZW0pfT5cbiAgICAgICAgPFVzZXJSb3dBdmF0YXIgcGljdHVyZT17cmF3LnBpY3R1cmV9IG5hbWVGb3JJbml0aWFscz17dXNlck5hbWVGb3JJbml0aWFsc30gLz5cbiAgICAgICAgPFNDTVVzZXJJbmZvPlxuICAgICAgICAgIDxTQ01Vc2VyTmFtZVBvc2l0aW9uUm93PlxuICAgICAgICAgICAgPFNDTVVzZXJOYW1lQ2VsbCAkd2l0aERpdmlkZXI+XG4gICAgICAgICAgICAgIDxTQ01Vc2VyTmFtZVRleHQ+e3JlbmRlclRpdGxlKHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQpfTwvU0NNVXNlck5hbWVUZXh0PlxuICAgICAgICAgICAgPC9TQ01Vc2VyTmFtZUNlbGw+XG4gICAgICAgICAgICA8U0NNVXNlclBvc2l0aW9uVGV4dCB0aXRsZT17cG9zaXRpb25MaW5lfT57cG9zaXRpb25MaW5lfTwvU0NNVXNlclBvc2l0aW9uVGV4dD5cbiAgICAgICAgICA8L1NDTVVzZXJOYW1lUG9zaXRpb25Sb3c+XG4gICAgICAgIDwvU0NNVXNlckluZm8+XG4gICAgICA8L1NDTUlSb3dVc2VyPlxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDTUlQcm9qZWN0Um93IG9uTW91c2VEb3duPXtoYW5kbGVDbGlja30gb25Nb3VzZUVudGVyPXsoKSA9PiBvbkhvdmVyPy4oaXRlbSl9PlxuICAgICAgICA8U0NNSVByb2plY3RDb250ZW50ICRhY3RpdmU9e2FjdGl2ZX0+XG4gICAgICAgICAgPFNDTUlOYW1lPlxuICAgICAgICAgICAgPFNDTUlQcm9qZWN0VGl0bGUgdGl0bGU9e3ByaW1hcnl9PntyZW5kZXJUaXRsZShwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0KX08L1NDTUlQcm9qZWN0VGl0bGU+XG4gICAgICAgICAgPC9TQ01JTmFtZT5cbiAgICAgICAgPC9TQ01JUHJvamVjdENvbnRlbnQ+XG4gICAgICA8L1NDTUlQcm9qZWN0Um93PlxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRleHRNZW50aW9uVGFza1JvdyBpdGVtPXtpdGVtfSBhY3RpdmU9e2FjdGl2ZX0gb25Nb3VzZURvd249e2hhbmRsZUNsaWNrfSBvbkhvdmVyPXsoKSA9PiBvbkhvdmVyPy4oaXRlbSl9IC8+XG4gICAgKVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01JUm93ICRhY3RpdmU9e2FjdGl2ZX0gb25Nb3VzZURvd249e2hhbmRsZUNsaWNrfSBvbk1vdXNlRW50ZXI9eygpID0+IG9uSG92ZXI/LihpdGVtKX0+XG4gICAgICAgIDxTQ01JVGFza1Jvd0lubmVyPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICB3aWR0aDogMTYsXG4gICAgICAgICAgICAgIGhlaWdodDogMTYsXG4gICAgICAgICAgICAgIGZsZXg6ICcwIDAgMTZweCcsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc05vdGlvbk1jcFNsdWcocmF3LmlkKSA/IChcbiAgICAgICAgICAgICAgPE5vdGlvbkljb24gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKCdtY3AnLCAnIzJkNzdiZCcsIHJhdy5pZCwgMTYpXG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8U0NNSVRhc2tUaXRsZSB0aXRsZT17cHJpbWFyeX0+e3JlbmRlclRpdGxlKHByaW1hcnksIHByaW1hcnlIaWdobGlnaHQpfTwvU0NNSVRhc2tUaXRsZT5cbiAgICAgICAgPC9TQ01JVGFza1Jvd0lubmVyPlxuICAgICAgPC9TQ01JUm93PlxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlID09PSAnc2tpbGwnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01JVGFza1Jvd1dyYXAgb25Nb3VzZURvd249e2hhbmRsZUNsaWNrfSBvbk1vdXNlRW50ZXI9eygpID0+IG9uSG92ZXI/LihpdGVtKX0+XG4gICAgICAgIDxTQ01JU2tpbGxSb3dTdXJmYWNlICRhY3RpdmU9e2FjdGl2ZX0+XG4gICAgICAgICAgPFNDTUlUYXNrUm93SW5uZXI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAxNixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2LFxuICAgICAgICAgICAgICAgIGZsZXg6ICcwIDAgMTZweCcsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtnZXRDb250ZXh0TWVudGlvbkljb24oJ3NraWxsJywgJyM4MDgwODAnLCByYXcuaWQsIDE2KX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxTQ01JVGFza1RpdGxlIHRpdGxlPXtwcmltYXJ5fT57cmVuZGVyVGl0bGUocHJpbWFyeSwgcHJpbWFyeUhpZ2hsaWdodCl9PC9TQ01JVGFza1RpdGxlPlxuICAgICAgICAgIDwvU0NNSVRhc2tSb3dJbm5lcj5cbiAgICAgICAgPC9TQ01JU2tpbGxSb3dTdXJmYWNlPlxuICAgICAgPC9TQ01JVGFza1Jvd1dyYXA+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNSVJvdyAkYWN0aXZlPXthY3RpdmV9IG9uTW91c2VEb3duPXtoYW5kbGVDbGlja30gb25Nb3VzZUVudGVyPXsoKSA9PiBvbkhvdmVyPy4oaXRlbSl9PlxuICAgICAgPFNDTUlOYW1lPlxuICAgICAgICA8U0NNSVRpdGxlPntyZW5kZXJUaXRsZShwcmltYXJ5LCBwcmltYXJ5SGlnaGxpZ2h0KX08L1NDTUlUaXRsZT5cbiAgICAgICAgeyhoYXNDb3VudCB8fCBoYXNQYXJlbnQpICYmIChcbiAgICAgICAgICA8U0NNSUJyZWFkY3J1bWI+XG4gICAgICAgICAgICB7aGFzQ291bnQgJiYgKFxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7YnJlYWRjcnVtYj8uY291bnR9IHtjb3VudExhYmVsfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2hhc1BhcmVudCAmJiAoXG4gICAgICAgICAgICAgIDxTQ01JQnJlYWRjcnVtYlBhcmVudD5cbiAgICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IHdpZHRoPVwiMTJweFwiIGhlaWdodD1cIjEycHhcIiBjb2xvcj1cIiM4MDgwODBcIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPnticmVhZGNydW1iPy5wYXJlbnR9PC9zcGFuPlxuICAgICAgICAgICAgICA8L1NDTUlCcmVhZGNydW1iUGFyZW50PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NDTUlCcmVhZGNydW1iPlxuICAgICAgICApfVxuICAgICAgPC9TQ01JTmFtZT5cbiAgICA8L1NDTUlSb3c+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQXlCQSxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUF3QixPQUFPO0FBQ3pGLFNBQVNDLFlBQVksUUFBUSwrQ0FBK0M7QUFDNUUsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBRTFDLFNBQVNDLFVBQVUsUUFBUSxxQkFBcUI7QUFDaEQsU0FBU0MsV0FBVyxRQUFRLHNCQUFzQjtBQUNsRCxTQUFTQyxZQUFZLFFBQVEsdUJBQXVCO0FBQ3BELFNBQVNDLHFCQUFxQixFQUFFQyxlQUFlLFFBQVEsb0NBQW9DO0FBQzNGLFNBQ0VDLE9BQU8sRUFDUEMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLFFBQVEsRUFDUkMsU0FBUyxFQUNUQyxnQkFBZ0IsRUFDaEJDLGtCQUFrQixFQUNsQkMsY0FBYyxFQUNkQyxvQkFBb0IsRUFDcEJDLFdBQVcsRUFDWEMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsV0FBVyxFQUNYQyxzQkFBc0IsRUFDdEJDLGVBQWUsRUFDZkMsZUFBZSxFQUNmQyxtQkFBbUIsRUFDbkJDLGVBQWUsRUFDZkMsa0JBQWtCLEVBQ2xCQyxtQkFBbUIsRUFDbkJDLGdCQUFnQixFQUNoQkMsZ0JBQWdCLEVBQ2hCQyx1QkFBdUIsRUFDdkJDLG1CQUFtQixFQUNuQkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLFFBQ1IsNkJBQTZCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLFFBQUEsSUFBQUMsU0FBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFTcEMsSUFBTUMsMkJBQTJCLEdBQUcsRUFBRTtBQUV0QyxJQUFNQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJQyxLQUFhLEVBQUVDLFFBQWdCLEVBQWE7RUFDeEUsSUFBSUQsS0FBSyxDQUFDRSxNQUFNLElBQUlELFFBQVEsRUFBRSxPQUFPRCxLQUFLO0VBQzFDLFVBQUFHLE1BQUEsQ0FBVUgsS0FBSyxDQUFDSSxLQUFLLENBQUMsQ0FBQyxFQUFFQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVMLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDTSxPQUFPLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUlDLE9BQWUsRUFBRUMsU0FBNkMsRUFBSztFQUN0RixJQUFJLENBQUNBLFNBQVMsSUFBSUEsU0FBUyxDQUFDUixNQUFNLElBQUksQ0FBQyxFQUFFLE9BQU9PLE9BQU87RUFDdkQsSUFBUUUsS0FBSyxHQUFhRCxTQUFTLENBQTNCQyxLQUFLO0lBQUVULE1BQU0sR0FBS1EsU0FBUyxDQUFwQlIsTUFBTTtFQUNyQixJQUFNVSxHQUFHLEdBQUdELEtBQUssR0FBR1QsTUFBTTtFQUMxQixJQUFJUyxLQUFLLEdBQUcsQ0FBQyxJQUFJQSxLQUFLLEdBQUdGLE9BQU8sQ0FBQ1AsTUFBTSxJQUFJVSxHQUFHLEdBQUdILE9BQU8sQ0FBQ1AsTUFBTSxFQUFFLE9BQU9PLE9BQU87RUFDL0Usb0JBQ0VaLEtBQUEsQ0FBQUYsU0FBQTtJQUFBa0IsUUFBQSxHQUNHSixPQUFPLENBQUNMLEtBQUssQ0FBQyxDQUFDLEVBQUVPLEtBQUssQ0FBQyxlQUN4QmxCLElBQUEsQ0FBQ3RCLGtCQUFrQjtNQUFBMEMsUUFBQSxFQUFFSixPQUFPLENBQUNMLEtBQUssQ0FBQ08sS0FBSyxFQUFFQyxHQUFHO0lBQUMsQ0FBcUIsQ0FBQyxFQUNuRUgsT0FBTyxDQUFDTCxLQUFLLENBQUNRLEdBQUcsQ0FBQztFQUFBLENBQ25CLENBQUM7QUFFUCxDQUFDO0FBRUQsU0FBU0Usa0JBQWtCQSxDQUF3QkMsR0FBd0IsRUFBRUMsSUFBd0IsRUFBRTtFQUNyRyxJQUFBQyxTQUFBLEdBQXNDN0QsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBOEQsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBOUNHLFdBQVcsR0FBQUYsVUFBQTtJQUFFRyxjQUFjLEdBQUFILFVBQUE7RUFFbENoRSxlQUFlLENBQUMsWUFBTTtJQUNwQixJQUFNb0UsRUFBRSxHQUFHUCxHQUFHLENBQUNRLE9BQU87SUFDdEIsSUFBSSxDQUFDRCxFQUFFLEVBQUU7TUFDUEQsY0FBYyxDQUFDLEtBQUssQ0FBQztNQUNyQixPQUFPRyxTQUFTO0lBQ2xCO0lBRUEsSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUEsRUFBUztNQUNwQkosY0FBYyxDQUFDQyxFQUFFLENBQUNJLFdBQVcsR0FBR0osRUFBRSxDQUFDSyxXQUFXLENBQUM7SUFDakQsQ0FBQztJQUVERixPQUFPLENBQUMsQ0FBQztJQUNULElBQU1HLEVBQUUsR0FBRyxJQUFJQyxjQUFjLENBQUNKLE9BQU8sQ0FBQztJQUN0Q0csRUFBRSxDQUFDRSxPQUFPLENBQUNSLEVBQUUsQ0FBQztJQUNkUyxNQUFNLENBQUNDLGdCQUFnQixDQUFDLFFBQVEsRUFBRVAsT0FBTyxDQUFDO0lBQzFDLE9BQU8sWUFBTTtNQUNYRyxFQUFFLENBQUNLLFVBQVUsQ0FBQyxDQUFDO01BQ2ZGLE1BQU0sQ0FBQ0csbUJBQW1CLENBQUMsUUFBUSxFQUFFVCxPQUFPLENBQUM7SUFDL0MsQ0FBQztFQUNILENBQUMsRUFBRVQsSUFBSSxDQUFDO0VBRVIsT0FBT0ksV0FBVztBQUNwQjs7QUFFQTtBQUNBLElBQU1lLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUlDLElBQVksRUFBYTtFQUFBLElBQUFDLFFBQUE7RUFDeEQsSUFBTUMsT0FBTyxHQUFHRixJQUFJLENBQUNHLElBQUksQ0FBQyxDQUFDO0VBQzNCLElBQUksQ0FBQ0QsT0FBTyxFQUFFLE9BQU8sR0FBRztFQUN4QixJQUFNRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQ0csS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDQyxNQUFNLENBQUNDLE9BQU8sQ0FBQztFQUNsRCxJQUFJSCxLQUFLLENBQUN0QyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQUEsSUFBQTBDLGVBQUEsRUFBQUMsT0FBQSxFQUFBQyxhQUFBLEVBQUFDLE1BQUE7SUFDckIsSUFBTUMsS0FBSyxJQUFBSixlQUFBLElBQUFDLE9BQUEsR0FBR0wsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFBSyxPQUFBLHVCQUFSQSxPQUFBLENBQVVJLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBQUwsZUFBQSxjQUFBQSxlQUFBLEdBQUksRUFBRTtJQUN2QyxJQUFNTSxJQUFJLElBQUFKLGFBQUEsSUFBQUMsTUFBQSxHQUFHUCxLQUFLLENBQUNBLEtBQUssQ0FBQ3RDLE1BQU0sR0FBRyxDQUFDLENBQUMsY0FBQTZDLE1BQUEsdUJBQXZCQSxNQUFBLENBQXlCRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQUFILGFBQUEsY0FBQUEsYUFBQSxHQUFJLEVBQUU7SUFDckQsT0FBTyxHQUFBM0MsTUFBQSxDQUFHNkMsS0FBSyxFQUFBN0MsTUFBQSxDQUFHK0MsSUFBSSxFQUFHQyxXQUFXLENBQUMsQ0FBQztFQUN4QztFQUNBLElBQU1DLE1BQU0sSUFBQWYsUUFBQSxHQUFHRyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQUFILFFBQUEsY0FBQUEsUUFBQSxHQUFJLEVBQUU7RUFDN0IsSUFBSWUsTUFBTSxDQUFDbEQsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPa0QsTUFBTSxDQUFDaEQsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQytDLFdBQVcsQ0FBQyxDQUFDO0VBQy9ELE9BQU8sQ0FBQ0MsTUFBTSxDQUFDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFRSxXQUFXLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsSUFBTUUsYUFBdUUsR0FBRyxTQUExRUEsYUFBdUVBLENBQUFDLElBQUEsRUFBcUM7RUFBQSxJQUEvQkMsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87SUFBRUMsZUFBZSxHQUFBRixJQUFBLENBQWZFLGVBQWU7RUFDekcsSUFBQUMsVUFBQSxHQUE0QnJHLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXNHLFVBQUEsR0FBQXZDLGNBQUEsQ0FBQXNDLFVBQUE7SUFBcENFLE1BQU0sR0FBQUQsVUFBQTtJQUFFRSxTQUFTLEdBQUFGLFVBQUE7RUFDeEIsSUFBTUcsUUFBUSxHQUFHMUIsdUJBQXVCLENBQUNxQixlQUFlLENBQUM7RUFFekQsb0JBQ0UvRCxJQUFBLENBQUNsQixpQkFBaUI7SUFBQXNDLFFBQUEsRUFDZjBDLE9BQU8sSUFBSSxDQUFDSSxNQUFNLGdCQUNqQmxFLElBQUEsQ0FBQ2pCLGdCQUFnQjtNQUFDc0YsR0FBRyxFQUFFUCxPQUFRO01BQUNRLEdBQUcsRUFBQyxFQUFFO01BQUNDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1FBQUEsT0FBUUosU0FBUyxDQUFDLElBQUksQ0FBQztNQUFBLENBQUM7TUFBQ0ssT0FBTyxFQUFDLE1BQU07TUFBQ0MsUUFBUSxFQUFDO0lBQU8sQ0FBRSxDQUFDLGdCQUV6R3pFLElBQUEsQ0FBQ2hCLHFCQUFxQjtNQUFDLG1CQUFXO01BQUFvQyxRQUFBLEVBQUVnRDtJQUFRLENBQXdCO0VBQ3JFLENBQ2dCLENBQUM7QUFFeEIsQ0FBQztBQUVELElBQU1NLHFCQUtKLEdBQUcsU0FMQ0EscUJBS0pBLENBQUFDLEtBQUEsRUFBK0M7RUFBQSxJQUFBQyxnQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQTtFQUFBLElBQXpDQyxJQUFJLEdBQUFMLEtBQUEsQ0FBSkssSUFBSTtJQUFFQyxNQUFNLEdBQUFOLEtBQUEsQ0FBTk0sTUFBTTtJQUFFQyxXQUFXLEdBQUFQLEtBQUEsQ0FBWE8sV0FBVztJQUFFQyxPQUFPLEdBQUFSLEtBQUEsQ0FBUFEsT0FBTztFQUN4QyxJQUFRbkUsT0FBTyxHQUF3Q2dFLElBQUksQ0FBbkRoRSxPQUFPO0lBQUVvRSxnQkFBZ0IsR0FBc0JKLElBQUksQ0FBMUNJLGdCQUFnQjtJQUFFQyxVQUFVLEdBQVVMLElBQUksQ0FBeEJLLFVBQVU7SUFBRUMsR0FBRyxHQUFLTixJQUFJLENBQVpNLEdBQUc7RUFDbEQsSUFBTUMsV0FBVyxHQUFHLEVBQUFYLGdCQUFBLEdBQUFVLEdBQUcsQ0FBQ0MsV0FBVyxjQUFBWCxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUI5QixJQUFJLENBQUMsQ0FBQyxNQUFJdUMsVUFBVSxhQUFWQSxVQUFVLGdCQUFBUixrQkFBQSxHQUFWUSxVQUFVLENBQUVHLE1BQU0sY0FBQVgsa0JBQUEsdUJBQWxCQSxrQkFBQSxDQUFvQi9CLElBQUksQ0FBQyxDQUFDLEtBQUksRUFBRTtFQUMvRSxJQUFNMkMsa0JBQWtCLEdBQUduRixvQkFBb0IsQ0FBQ2lGLFdBQVcsRUFBRWxGLDJCQUEyQixDQUFDO0VBQ3pGLElBQU1xRiw2QkFBNkIsR0FBR0Qsa0JBQWtCLEtBQUtGLFdBQVc7RUFDeEUsSUFBTUksU0FBUyxHQUFHTCxHQUFHLENBQUNNLFFBQVEsSUFBSSxJQUFJO0VBQ3RDLElBQU1DLFFBQVEsR0FBR25JLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQzdDLElBQU1vSSxVQUFVLEdBQUdwSSxNQUFNLENBQWtCLElBQUksQ0FBQztFQUNoRCxJQUFNcUksZ0JBQWdCLEdBQUcxRSxrQkFBa0IsQ0FBQ3dFLFFBQVEsRUFBRSxDQUNwRDdFLE9BQU8sRUFDUHVFLFdBQVcsR0FBQVQscUJBQUEsR0FDWE0sZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRWxFLEtBQUssY0FBQTRELHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQyxDQUFDLEdBQUFDLHFCQUFBLEdBQzdCSyxnQkFBZ0IsYUFBaEJBLGdCQUFnQix1QkFBaEJBLGdCQUFnQixDQUFFM0UsTUFBTSxjQUFBc0UscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxDQUFDLEVBQzdCWSxTQUFTLENBQ1YsQ0FBQztFQUNGLElBQU1LLGtCQUFrQixHQUFHM0Usa0JBQWtCLENBQUN5RSxVQUFVLEVBQUUsQ0FBQ0wsa0JBQWtCLEVBQUV6RSxPQUFPLENBQUMsQ0FBQztFQUN4RixJQUFNaUYsd0JBQXdCLEdBQUdQLDZCQUE2QixJQUFJTSxrQkFBa0I7RUFFcEYsb0JBQ0VoRyxJQUFBLENBQUNWLGVBQWU7SUFBQzRGLFdBQVcsRUFBRUEsV0FBWTtJQUFDZ0IsWUFBWSxFQUFFZixPQUFRO0lBQUEvRCxRQUFBLGVBQy9EcEIsSUFBQSxDQUFDVCxrQkFBa0I7TUFBQzRHLE9BQU8sRUFBRWxCLE1BQU87TUFBQTdELFFBQUEsZUFDbENoQixLQUFBLENBQUNYLGdCQUFnQjtRQUFBMkIsUUFBQSxnQkFDZnBCLElBQUEsQ0FBQ0gsZ0JBQWdCO1VBQUF1QixRQUFBLGVBQ2ZwQixJQUFBLENBQUMvQixZQUFZO1lBQUNtSSxLQUFLLEVBQUUsRUFBRztZQUFDQyxNQUFNLEVBQUU7VUFBRyxDQUFFO1FBQUMsQ0FDdkIsQ0FBQyxlQUNuQmpHLEtBQUEsQ0FBQ1YsZ0JBQWdCO1VBQUEwQixRQUFBLEdBQ2R1RSxTQUFTLGdCQUNSM0YsSUFBQSxDQUFDTCx1QkFBdUI7WUFBQXlCLFFBQUEsZUFDdEJwQixJQUFBLENBQUNoQyxXQUFXO2NBQUNvSSxLQUFLLEVBQUMsTUFBTTtjQUFDQyxNQUFNLEVBQUMsTUFBTTtjQUFDQyxLQUFLLEVBQUMsTUFBTTtjQUFDQyxPQUFPLEVBQUM7WUFBUyxDQUFFO1VBQUMsQ0FDbEQsQ0FBQyxHQUN4QixJQUFJLGVBQ1J2RyxJQUFBLENBQUNuQyxPQUFPO1lBQUMySSxLQUFLLEVBQUVULGdCQUFnQixHQUFHL0UsT0FBTyxHQUFHLEVBQUc7WUFBQUksUUFBQSxlQUM5Q3BCLElBQUEsQ0FBQ0YsYUFBYTtjQUFDd0IsR0FBRyxFQUFFdUUsUUFBUztjQUFBekUsUUFBQSxFQUFFTCxXQUFXLENBQUNDLE9BQU8sRUFBRW9FLGdCQUFnQjtZQUFDLENBQWdCO1VBQUMsQ0FDL0UsQ0FBQyxFQUNURyxXQUFXLGdCQUNWdkYsSUFBQSxDQUFDbkMsT0FBTztZQUFDMkksS0FBSyxFQUFFUCx3QkFBd0IsR0FBR1YsV0FBVyxHQUFHLEVBQUc7WUFBQW5FLFFBQUEsZUFDMURwQixJQUFBLENBQUNKLG1CQUFtQjtjQUFDMEIsR0FBRyxFQUFFd0UsVUFBVztjQUFBMUUsUUFBQSxFQUFFcUU7WUFBa0IsQ0FBc0I7VUFBQyxDQUN6RSxDQUFDLEdBQ1IsSUFBSTtRQUFBLENBQ1EsQ0FBQztNQUFBLENBQ0g7SUFBQyxDQUNEO0VBQUMsQ0FDTixDQUFDO0FBRXRCLENBQUM7QUFFRCxPQUFPLElBQU1nQixrQkFBK0MsR0FBRyxTQUFsREEsa0JBQStDQSxDQUFBQyxLQUFBLEVBQTRDO0VBQUEsSUFBdEMxQixJQUFJLEdBQUEwQixLQUFBLENBQUoxQixJQUFJO0lBQUVDLE1BQU0sR0FBQXlCLEtBQUEsQ0FBTnpCLE1BQU07SUFBRTBCLFFBQVEsR0FBQUQsS0FBQSxDQUFSQyxRQUFRO0lBQUV4QixRQUFPLEdBQUF1QixLQUFBLENBQVB2QixPQUFPO0VBQy9GLElBQUF5QixLQUFBLEdBQWM5SSxJQUFJLENBQUMsQ0FBQztJQUFaK0ksQ0FBQyxHQUFBRCxLQUFBLENBQURDLENBQUM7RUFDVCxJQUFRN0YsT0FBTyxHQUE4Q2dFLElBQUksQ0FBekRoRSxPQUFPO0lBQUVvRSxnQkFBZ0IsR0FBNEJKLElBQUksQ0FBaERJLGdCQUFnQjtJQUFFQyxVQUFVLEdBQWdCTCxJQUFJLENBQTlCSyxVQUFVO0lBQUV5QixJQUFJLEdBQVU5QixJQUFJLENBQWxCOEIsSUFBSTtJQUFFeEIsR0FBRyxHQUFLTixJQUFJLENBQVpNLEdBQUc7RUFFeEQsSUFBTXlCLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFJQyxDQUFhLEVBQUs7SUFDckNBLENBQUMsQ0FBQ0MsY0FBYyxDQUFDLENBQUM7SUFDbEJELENBQUMsQ0FBQ0UsZUFBZSxDQUFDLENBQUM7SUFDbkJQLFFBQVEsQ0FBQzNCLElBQUksQ0FBQztFQUNoQixDQUFDO0VBRUQsSUFBTW1DLFFBQVEsR0FBRyxRQUFPOUIsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUUrQixLQUFLLE1BQUssUUFBUTtFQUN0RCxJQUFNQyxTQUFTLEdBQUcsQ0FBQyxFQUFDaEMsVUFBVSxhQUFWQSxVQUFVLGVBQVZBLFVBQVUsQ0FBRUcsTUFBTTtFQUN0QyxJQUFNOEIsVUFBVSxHQUNkLENBQUFqQyxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRWlDLFVBQVUsS0FDdEJULENBQUMsNEJBQUFuRyxNQUFBLENBQTRCMkUsVUFBVSxDQUFDaUMsVUFBVSxHQUFJO0lBQUVDLFlBQVksRUFBRWxDLFVBQVUsQ0FBQ2lDO0VBQVcsQ0FBQyxDQUFDO0VBRWhHLElBQUlSLElBQUksS0FBSyxNQUFNLEVBQUU7SUFDbkIsSUFBTVUsbUJBQW1CLEdBQUcsT0FBT2xDLEdBQUcsQ0FBQ21DLFlBQVksS0FBSyxRQUFRLEdBQUduQyxHQUFHLENBQUNtQyxZQUFZLENBQUMzRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7SUFDL0YsSUFBTTRFLFlBQVksR0FBR0YsbUJBQW1CLElBQUlYLENBQUMsQ0FBQywrQkFBK0IsRUFBRTtNQUFFVSxZQUFZLEVBQUU7SUFBZSxDQUFDLENBQUM7SUFDaEgsSUFBTUksbUJBQW1CLEdBQUcsT0FBT3JDLEdBQUcsQ0FBQzNDLElBQUksS0FBSyxRQUFRLElBQUkyQyxHQUFHLENBQUMzQyxJQUFJLENBQUNHLElBQUksQ0FBQyxDQUFDLEdBQUd3QyxHQUFHLENBQUMzQyxJQUFJLEdBQUczQixPQUFPO0lBRWhHLG9CQUNFWixLQUFBLENBQUN2QixXQUFXO01BQUNzSCxPQUFPLEVBQUVsQixNQUFPO01BQUNDLFdBQVcsRUFBRTZCLFdBQVk7TUFBQ2IsWUFBWSxFQUFFLFNBQWRBLFlBQVlBLENBQUE7UUFBQSxPQUFRZixRQUFPLGFBQVBBLFFBQU8sdUJBQVBBLFFBQU8sQ0FBR0gsSUFBSSxDQUFDO01BQUEsQ0FBQztNQUFBNUQsUUFBQSxnQkFDMUZwQixJQUFBLENBQUM0RCxhQUFhO1FBQUNFLE9BQU8sRUFBRXdCLEdBQUcsQ0FBQ3hCLE9BQVE7UUFBQ0MsZUFBZSxFQUFFNEQ7TUFBb0IsQ0FBRSxDQUFDLGVBQzdFM0gsSUFBQSxDQUFDZixXQUFXO1FBQUFtQyxRQUFBLGVBQ1ZoQixLQUFBLENBQUNsQixzQkFBc0I7VUFBQWtDLFFBQUEsZ0JBQ3JCcEIsSUFBQSxDQUFDYixlQUFlO1lBQUN5SSxZQUFZO1lBQUF4RyxRQUFBLGVBQzNCcEIsSUFBQSxDQUFDWixlQUFlO2NBQUFnQyxRQUFBLEVBQUVMLFdBQVcsQ0FBQ0MsT0FBTyxFQUFFb0UsZ0JBQWdCO1lBQUMsQ0FBa0I7VUFBQyxDQUM1RCxDQUFDLGVBQ2xCcEYsSUFBQSxDQUFDWCxtQkFBbUI7WUFBQ21ILEtBQUssRUFBRWtCLFlBQWE7WUFBQXRHLFFBQUEsRUFBRXNHO1VBQVksQ0FBc0IsQ0FBQztRQUFBLENBQ3hEO01BQUMsQ0FDZCxDQUFDO0lBQUEsQ0FDSCxDQUFDO0VBRWxCO0VBRUEsSUFBSVosSUFBSSxLQUFLLFNBQVMsRUFBRTtJQUN0QixvQkFDRTlHLElBQUEsQ0FBQzNCLGNBQWM7TUFBQzZHLFdBQVcsRUFBRTZCLFdBQVk7TUFBQ2IsWUFBWSxFQUFFLFNBQWRBLFlBQVlBLENBQUE7UUFBQSxPQUFRZixRQUFPLGFBQVBBLFFBQU8sdUJBQVBBLFFBQU8sQ0FBR0gsSUFBSSxDQUFDO01BQUEsQ0FBQztNQUFBNUQsUUFBQSxlQUM1RXBCLElBQUEsQ0FBQzFCLGtCQUFrQjtRQUFDNkgsT0FBTyxFQUFFbEIsTUFBTztRQUFBN0QsUUFBQSxlQUNsQ3BCLElBQUEsQ0FBQ3pCLFFBQVE7VUFBQTZDLFFBQUEsZUFDUHBCLElBQUEsQ0FBQ3ZCLGdCQUFnQjtZQUFDK0gsS0FBSyxFQUFFeEYsT0FBUTtZQUFBSSxRQUFBLEVBQUVMLFdBQVcsQ0FBQ0MsT0FBTyxFQUFFb0UsZ0JBQWdCO1VBQUMsQ0FBbUI7UUFBQyxDQUNyRjtNQUFDLENBQ087SUFBQyxDQUNQLENBQUM7RUFFckI7RUFFQSxJQUFJMEIsSUFBSSxLQUFLLE1BQU0sRUFBRTtJQUNuQixvQkFDRTlHLElBQUEsQ0FBQzBFLHFCQUFxQjtNQUFDTSxJQUFJLEVBQUVBLElBQUs7TUFBQ0MsTUFBTSxFQUFFQSxNQUFPO01BQUNDLFdBQVcsRUFBRTZCLFdBQVk7TUFBQzVCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1FBQUEsT0FBUUEsUUFBTyxhQUFQQSxRQUFPLHVCQUFQQSxRQUFPLENBQUdILElBQUksQ0FBQztNQUFBO0lBQUMsQ0FBRSxDQUFDO0VBRW5IO0VBRUEsSUFBSThCLElBQUksS0FBSyxLQUFLLEVBQUU7SUFDbEIsb0JBQ0U5RyxJQUFBLENBQUM1QixPQUFPO01BQUMrSCxPQUFPLEVBQUVsQixNQUFPO01BQUNDLFdBQVcsRUFBRTZCLFdBQVk7TUFBQ2IsWUFBWSxFQUFFLFNBQWRBLFlBQVlBLENBQUE7UUFBQSxPQUFRZixRQUFPLGFBQVBBLFFBQU8sdUJBQVBBLFFBQU8sQ0FBR0gsSUFBSSxDQUFDO01BQUEsQ0FBQztNQUFBNUQsUUFBQSxlQUN0RmhCLEtBQUEsQ0FBQ1gsZ0JBQWdCO1FBQUEyQixRQUFBLGdCQUNmcEIsSUFBQTtVQUNFNkgsS0FBSyxFQUFFO1lBQ0xDLE9BQU8sRUFBRSxhQUFhO1lBQ3RCQyxVQUFVLEVBQUUsUUFBUTtZQUNwQkMsY0FBYyxFQUFFLFFBQVE7WUFDeEI1QixLQUFLLEVBQUUsRUFBRTtZQUNUQyxNQUFNLEVBQUUsRUFBRTtZQUNWNEIsSUFBSSxFQUFFO1VBQ1IsQ0FBRTtVQUFBN0csUUFBQSxFQUVEakQsZUFBZSxDQUFDbUgsR0FBRyxDQUFDNEMsRUFBRSxDQUFDLGdCQUN0QmxJLElBQUEsQ0FBQ2pDLFVBQVU7WUFBQ3FJLEtBQUssRUFBRSxFQUFHO1lBQUNDLE1BQU0sRUFBRTtVQUFHLENBQUUsQ0FBQyxHQUVyQ25JLHFCQUFxQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUVvSCxHQUFHLENBQUM0QyxFQUFFLEVBQUUsRUFBRTtRQUNuRCxDQUNHLENBQUMsZUFDUGxJLElBQUEsQ0FBQ0YsYUFBYTtVQUFDMEcsS0FBSyxFQUFFeEYsT0FBUTtVQUFBSSxRQUFBLEVBQUVMLFdBQVcsQ0FBQ0MsT0FBTyxFQUFFb0UsZ0JBQWdCO1FBQUMsQ0FBZ0IsQ0FBQztNQUFBLENBQ3ZFO0lBQUMsQ0FDWixDQUFDO0VBRWQ7RUFFQSxJQUFJMEIsSUFBSSxLQUFLLE9BQU8sRUFBRTtJQUNwQixvQkFDRTlHLElBQUEsQ0FBQ1YsZUFBZTtNQUFDNEYsV0FBVyxFQUFFNkIsV0FBWTtNQUFDYixZQUFZLEVBQUUsU0FBZEEsWUFBWUEsQ0FBQTtRQUFBLE9BQVFmLFFBQU8sYUFBUEEsUUFBTyx1QkFBUEEsUUFBTyxDQUFHSCxJQUFJLENBQUM7TUFBQSxDQUFDO01BQUE1RCxRQUFBLGVBQzdFcEIsSUFBQSxDQUFDUixtQkFBbUI7UUFBQzJHLE9BQU8sRUFBRWxCLE1BQU87UUFBQTdELFFBQUEsZUFDbkNoQixLQUFBLENBQUNYLGdCQUFnQjtVQUFBMkIsUUFBQSxnQkFDZnBCLElBQUE7WUFDRTZILEtBQUssRUFBRTtjQUNMQyxPQUFPLEVBQUUsYUFBYTtjQUN0QkMsVUFBVSxFQUFFLFFBQVE7Y0FDcEJDLGNBQWMsRUFBRSxRQUFRO2NBQ3hCNUIsS0FBSyxFQUFFLEVBQUU7Y0FDVEMsTUFBTSxFQUFFLEVBQUU7Y0FDVjRCLElBQUksRUFBRTtZQUNSLENBQUU7WUFBQTdHLFFBQUEsRUFFRGxELHFCQUFxQixDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUVvSCxHQUFHLENBQUM0QyxFQUFFLEVBQUUsRUFBRTtVQUFDLENBQ2xELENBQUMsZUFDUGxJLElBQUEsQ0FBQ0YsYUFBYTtZQUFDMEcsS0FBSyxFQUFFeEYsT0FBUTtZQUFBSSxRQUFBLEVBQUVMLFdBQVcsQ0FBQ0MsT0FBTyxFQUFFb0UsZ0JBQWdCO1VBQUMsQ0FBZ0IsQ0FBQztRQUFBLENBQ3ZFO01BQUMsQ0FDQTtJQUFDLENBQ1AsQ0FBQztFQUV0QjtFQUVBLG9CQUNFcEYsSUFBQSxDQUFDNUIsT0FBTztJQUFDK0gsT0FBTyxFQUFFbEIsTUFBTztJQUFDQyxXQUFXLEVBQUU2QixXQUFZO0lBQUNiLFlBQVksRUFBRSxTQUFkQSxZQUFZQSxDQUFBO01BQUEsT0FBUWYsUUFBTyxhQUFQQSxRQUFPLHVCQUFQQSxRQUFPLENBQUdILElBQUksQ0FBQztJQUFBLENBQUM7SUFBQTVELFFBQUEsZUFDdEZoQixLQUFBLENBQUM3QixRQUFRO01BQUE2QyxRQUFBLGdCQUNQcEIsSUFBQSxDQUFDeEIsU0FBUztRQUFBNEMsUUFBQSxFQUFFTCxXQUFXLENBQUNDLE9BQU8sRUFBRW9FLGdCQUFnQjtNQUFDLENBQVksQ0FBQyxFQUM5RCxDQUFDK0IsUUFBUSxJQUFJRSxTQUFTLGtCQUNyQmpILEtBQUEsQ0FBQ3pCLGNBQWM7UUFBQXlDLFFBQUEsR0FDWitGLFFBQVEsaUJBQ1AvRyxLQUFBO1VBQUFnQixRQUFBLEdBQ0dpRSxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRStCLEtBQUssRUFBQyxHQUFDLEVBQUNFLFVBQVU7UUFBQSxDQUMzQixDQUNQLEVBQ0FELFNBQVMsaUJBQ1JqSCxLQUFBLENBQUN4QixvQkFBb0I7VUFBQXdDLFFBQUEsZ0JBQ25CcEIsSUFBQSxDQUFDcEMsWUFBWTtZQUFDd0ksS0FBSyxFQUFDLE1BQU07WUFBQ0MsTUFBTSxFQUFDLE1BQU07WUFBQ0MsS0FBSyxFQUFDO1VBQVMsQ0FBRSxDQUFDLGVBQzNEdEcsSUFBQTtZQUFBb0IsUUFBQSxFQUFPaUUsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVHO1VBQU0sQ0FBTyxDQUFDO1FBQUEsQ0FDYixDQUN2QjtNQUFBLENBQ2EsQ0FDakI7SUFBQSxDQUNPO0VBQUMsQ0FDSixDQUFDO0FBRWQsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|