@projectcor/maia-components 2.35.3-0 → 2.35.4-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/lib/components/atoms/ApprovalBox/ApprovalBox.js +6 -2
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +135 -0
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +27 -0
- package/lib/components/atoms/Chip/Chip.spec.js +32 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +29 -0
- package/lib/components/atoms/Fade/Fade.spec.js +31 -0
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +42 -0
- package/lib/components/atoms/MAIAInput/MAIAInput.js +45 -3
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +283 -0
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +68 -0
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +107 -0
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +85 -0
- package/lib/components/atoms/Switch/Switch.spec.js +41 -0
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +77 -0
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +104 -0
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +291 -0
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +46 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +20 -5
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +128 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +13 -1
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +105 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +84 -0
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +116 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +9 -3
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +183 -0
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +12 -7
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +335 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +66 -7
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +293 -0
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +174 -0
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +59 -0
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +79 -0
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +86 -0
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +95 -0
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +96 -0
- package/lib/hooks/useCaretPosition.spec.js +58 -0
- package/lib/hooks/useDebounce.spec.js +42 -0
- package/lib/hooks/useEvent.js +15 -2
- package/lib/hooks/useEvent.spec.js +40 -0
- package/lib/hooks/useMentionAllowedTypes.spec.js +89 -0
- package/lib/hooks/useModal/useModal.spec.js +73 -0
- package/lib/hooks/useResize.spec.js +37 -0
- package/lib/hooks/useSkillsCatalog.spec.js +88 -0
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +33 -0
- package/lib/hooks/useT.spec.js +20 -0
- package/lib/hooks/useToggle.spec.js +33 -0
- package/lib/services/maia/Access/updateAccess.spec.js +108 -0
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +69 -0
- package/lib/services/maia/Actions/getSlashCommands.spec.js +74 -0
- package/lib/services/maia/Agents/createAgent.spec.js +55 -0
- package/lib/services/maia/Agents/deleteAgent.spec.js +42 -0
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +108 -0
- package/lib/services/maia/Agents/getAgentById.spec.js +55 -0
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +82 -0
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +45 -0
- package/lib/services/maia/Agents/toggleFavorite.spec.js +47 -0
- package/lib/services/maia/Agents/updateAgent.spec.js +48 -0
- package/lib/services/maia/Chats/deleteChat.spec.js +31 -0
- package/lib/services/maia/Chats/getChatMessages.spec.js +150 -0
- package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +149 -0
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +30 -0
- package/lib/services/maia/Chats/patchChat.spec.js +41 -0
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +28 -0
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +58 -0
- package/lib/services/maia/Knowledge/delete.spec.js +45 -0
- package/lib/services/maia/Knowledge/download.spec.js +78 -0
- package/lib/services/maia/Knowledge/save.spec.js +58 -0
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +72 -0
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +52 -0
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +83 -0
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +82 -0
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +63 -0
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +82 -0
- package/lib/services/maia/Skills/createSkill.spec.js +68 -0
- package/lib/services/maia/Skills/deleteSkill.spec.js +42 -0
- package/lib/services/maia/Skills/generateSkill.spec.js +48 -0
- package/lib/services/maia/Skills/getSkills.spec.js +152 -0
- package/lib/services/maia/Skills/updateSkill.spec.js +62 -0
- package/lib/services/maia/client.spec.js +56 -0
- package/lib/services/utils/fetchCOR.spec.js +211 -0
- package/lib/services/utils/getCookie.spec.js +20 -0
- package/lib/store/chatsSidebarOptimistic.spec.js +120 -0
- package/lib/store/faqsStore.types.js +1 -1
- package/lib/store/maiaLastChatPersistence.spec.js +22 -0
- package/lib/store/maiaPanelSessionPersistence.spec.js +62 -0
- package/lib/store/sessions/sessions.types.spec.js +16 -0
- package/lib/store/sessions/useSessionsStore.spec.js +135 -0
- package/lib/store/useChatsStore.js +3 -3
- package/lib/store/useChatsStore.spec.js +619 -0
- package/lib/store/useFaqsStore.spec.js +57 -0
- package/lib/test/buttonMock.js +22 -0
- package/lib/test/fetchPolyfill.js +160 -0
- package/lib/test/fileMock.js +2 -0
- package/lib/test/global-context.js +49 -0
- package/lib/test/iconMock.js +19 -0
- package/lib/test/mockFetch.js +49 -0
- package/lib/test/portalRoot.js +13 -0
- package/lib/test/styleMock.js +2 -0
- package/lib/test/test-utils.js +26 -0
- package/lib/test/tooltipMock.js +11 -0
- package/lib/types/Chat.js +1 -1
- package/lib/types/FrequentlyAskedQuestion.js +1 -1
- package/lib/utils/agentDisplayName.spec.js +44 -0
- package/lib/utils/autoApproveStorage.spec.js +25 -0
- package/lib/utils/chatInputFiles.spec.js +39 -0
- package/lib/utils/contextMentionLabel.spec.js +13 -0
- package/lib/utils/contextMentionTriggers.spec.js +38 -0
- package/lib/utils/contextMentionTypeLabel.spec.js +14 -0
- package/lib/utils/corConnectorMentionTypes.spec.js +23 -0
- package/lib/utils/fileDownloadHelper.spec.js +67 -0
- package/lib/utils/formatQuickActionMessage.spec.js +27 -0
- package/lib/utils/formatUnreadCount.spec.js +12 -0
- package/lib/utils/getUnitFileSize.spec.js +18 -0
- package/lib/utils/hitlAnalytics.spec.js +100 -0
- package/lib/utils/hoursPlannerQuickActionType.spec.js +64 -0
- package/lib/utils/mapBackendLang.spec.js +19 -0
- package/lib/utils/normalizeAgentConnectors.spec.js +89 -0
- package/lib/utils/orchestratorSubagents.spec.js +32 -0
- package/lib/utils/reasoningMappers.spec.js +103 -0
- package/lib/utils/retryCompletion.spec.js +99 -0
- package/lib/utils/skillContentSize.spec.js +13 -0
- package/lib/utils/slashCommandMarker.spec.js +43 -0
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +51 -0
- package/lib/utils/sseStreamContent.spec.js +31 -0
- package/lib/utils/streamActivityMessages.spec.js +98 -0
- package/lib/utils/validateTrimmedFields.spec.js +26 -0
- package/package.json +9 -6
|
@@ -47,7 +47,7 @@ import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal'
|
|
|
47
47
|
import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
48
48
|
import { useAccessClient } from '../../../hooks/useAccessClient/useAccessClient';
|
|
49
49
|
import { useToggleFavorite } from '../../../hooks';
|
|
50
|
-
import { deriveCorAccessFromToolGroupSlugs, DEFAULT_COR_ACCESS, COR_TOOL_GROUP_SLUGS } from '../../../utils/normalizeAgentConnectors';
|
|
50
|
+
import { deriveCorAccessFromToolGroupSlugs, DEFAULT_COR_ACCESS, COR_TOOL_GROUP_SLUGS, buildAgentToolGroupsRequest } from '../../../utils/normalizeAgentConnectors';
|
|
51
51
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
52
52
|
var initialValues = Object.freeze({
|
|
53
53
|
isEditing: false,
|
|
@@ -137,7 +137,7 @@ function buildEditingModalValuesFromAgentDetail(agentById, agentModels, prev) {
|
|
|
137
137
|
});
|
|
138
138
|
}
|
|
139
139
|
export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
140
|
-
var _user$permissions, _modalValues$
|
|
140
|
+
var _user$permissions, _modalValues$accessib4, _modalValues$general3, _modalValues$general4, _modalValues$general5, _modalValues$general6;
|
|
141
141
|
var addAgent = _ref.addAgent,
|
|
142
142
|
updateAgent = _ref.updateAgent,
|
|
143
143
|
removeAgent = _ref.removeAgent,
|
|
@@ -412,6 +412,8 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
412
412
|
};
|
|
413
413
|
var _handleConfirmAction = /*#__PURE__*/function () {
|
|
414
414
|
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat, action) {
|
|
415
|
+
var _modalValues$accessib2;
|
|
416
|
+
var corAccess;
|
|
415
417
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
416
418
|
while (1) switch (_context.prev = _context.next) {
|
|
417
419
|
case 0:
|
|
@@ -429,8 +431,11 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
429
431
|
handleDeleteAgent(chat.id);
|
|
430
432
|
return _context.abrupt("return");
|
|
431
433
|
case 2:
|
|
434
|
+
corAccess = (_modalValues$accessib2 = modalValues.accessibility.corAccess) !== null && _modalValues$accessib2 !== void 0 ? _modalValues$accessib2 : DEFAULT_COR_ACCESS;
|
|
432
435
|
eventAmplitude(EVENTS.confirmAction, {
|
|
433
|
-
option: modalValues.isEditing ? '
|
|
436
|
+
option: modalValues.isEditing ? 'edit' : 'create',
|
|
437
|
+
cor_slugs: buildAgentToolGroupsRequest(corAccess),
|
|
438
|
+
cor_access: corAccess
|
|
434
439
|
});
|
|
435
440
|
// Al reintentar guardar, liberar el freno del timeout previo para que los
|
|
436
441
|
// useEffect de post-guardado vuelvan a poder disparar snackbars y cerrar.
|
|
@@ -1204,14 +1209,14 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1204
1209
|
}
|
|
1205
1210
|
}, [errorGetAgentById]);
|
|
1206
1211
|
var shouldDisableSaveForClients = useMemo(function () {
|
|
1207
|
-
var _modalValues$
|
|
1208
|
-
if (!(modalValues !== null && modalValues !== void 0 && (_modalValues$
|
|
1212
|
+
var _modalValues$accessib3;
|
|
1213
|
+
if (!(modalValues !== null && modalValues !== void 0 && (_modalValues$accessib3 = modalValues.accessibility) !== null && _modalValues$accessib3 !== void 0 && _modalValues$accessib3.clients) || modalValues.accessibility.clients.length === 0) {
|
|
1209
1214
|
return false;
|
|
1210
1215
|
}
|
|
1211
1216
|
return modalValues.accessibility.clients.some(function (client) {
|
|
1212
1217
|
return client.is_active === false || client.is_deleted === true;
|
|
1213
1218
|
});
|
|
1214
|
-
}, [modalValues === null || modalValues === void 0 || (_modalValues$
|
|
1219
|
+
}, [modalValues === null || modalValues === void 0 || (_modalValues$accessib4 = modalValues.accessibility) === null || _modalValues$accessib4 === void 0 ? void 0 : _modalValues$accessib4.clients]);
|
|
1215
1220
|
var handleToggleFavorite = function handleToggleFavorite() {
|
|
1216
1221
|
var _modalValues$general;
|
|
1217
1222
|
if (modalValues !== null && modalValues !== void 0 && (_modalValues$general = modalValues.general) !== null && _modalValues$general !== void 0 && _modalValues$general.id) {
|
|
@@ -1421,4 +1426,4 @@ export var AbmAgentModal = function AbmAgentModal(_ref) {
|
|
|
1421
1426
|
})]
|
|
1422
1427
|
}), selector);
|
|
1423
1428
|
};
|
|
1424
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VBY2Nlc3NDbGllbnQiLCJ1c2VUb2dnbGVGYXZvcml0ZSIsImRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsIkNPUl9UT09MX0dST1VQX1NMVUdTIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiaW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImZyZWV6ZSIsImlzRWRpdGluZyIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJuYW1lIiwiZW1vamkiLCJpbnRyb2R1Y3Rpb24iLCJpbnB1dFBsYWNlaG9sZGVyIiwiaXNBY3RpdmUiLCJhaU1vZGVsIiwiaWQiLCJ1c2VyUHJvbXB0Iiwia25vd2xlZGdlQmFzZXMiLCJpc19mYXZvcml0ZSIsImFjY2Vzc2liaWxpdHkiLCJhY2Nlc3NUeXBlIiwiY2xpZW50cyIsImNvckFjY2VzcyIsIlNlY3Rpb25CeUtleSIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsInZhbGlkYXRlRmllbGRWYWx1ZXMiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbCIsImFnZW50QnlJZCIsImFnZW50TW9kZWxzIiwicHJldiIsIl9hZ2VudEJ5SWQka25vd2xlZGdlQiIsIl9hZ2VudEJ5SWQkY2xpZW50cyIsImFnZW50TW9kZWwiLCJmaW5kIiwibW9kZWwiLCJtb2RlbEFpSWQiLCJjcmVhdGVkX2J5IiwiY3JlYXRlZEJ5IiwibWFwIiwiayIsImZpbGUiLCJGaWxlIiwiZmlsZW5hbWUiLCJ0b1N0cmluZyIsInNpemUiLCJmaWxlX3NpemVfYnl0ZXMiLCJ0eXBlIiwib3JpZ2luYWxfZmlsZV90eXBlIiwic3RhdHVzIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsImFjY2VzcyIsImNsaWVudCIsIl9jbGllbnQkaWQiLCJfY2xpZW50JGlzX2FjdGl2ZSIsIl9jbGllbnQkaXNfZGVsZXRlZCIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJ0b29sR3JvdXBTbHVncyIsIkFibUFnZW50TW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWw0IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw1IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw2IiwiYWRkQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQiLCJjdXJyZW50U2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJhYm1BZ2VudE1vZGFsWkluZGV4IiwidG9vbHRpcFpJbmRleCIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNTdWJzY3JpYmVkIiwic2V0SXNTdWJzY3JpYmVkIiwibW9kYWxSZWYiLCJoYXNQZW5kaW5nRmlsZXNSZWYiLCJhY3Rpb25zVG9GaWxlcyIsInRvRGVsZXRlIiwidG9VcGxvYWQiLCJhY2Nlc3NVcGRhdGVDb250ZXh0IiwiaXNGcm9tQ3JlYXRpb24iLCJpc0Zyb21FZGl0aW5nIiwiaGFzQWN0aW9uRmlsZXMiLCJvcGVyYXRpb25UeXBlIiwiaGFzQmVlbkNhbGxlZCIsImFjY2Vzc0hhbmRsZWRSZWYiLCJhZ2VudENyZWF0ZWRSZWYiLCJwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYiLCJwcmVmZXRjaGVkQWdlbnRCeUlkUmVmIiwiZmlsZXNGaW5pc2hlZFJlZiIsInByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJmaWxlc1Byb2Nlc3NlZCIsInNldEZpbGVzUHJvY2Vzc2VkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dNb2RhbERlbGV0ZSIsInNldFNob3dNb2RhbERlbGV0ZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VjdGlvbiIsInNldFNlY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9kYWxWYWx1ZXMiLCJzZXRNb2RhbFZhbHVlcyIsIl91c2VHZXRBZ2VudEJ5SWQiLCJhZ2VudExvYWRpbmciLCJsb2FkaW5nIiwiaGFuZGxlR2V0QWdlbnRCeUlkIiwiaGFuZGxlQ2xlYW5BZ2VudCIsImVycm9yR2V0QWdlbnRCeUlkIiwiZXJyb3IiLCJfdXNlQWdlbnRNb2RlbCIsImdldEFsbEFnZW50TW9kZWxzIiwiZmlyc3RWYWx1ZUFnZW50IiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzU2hvd1Byb2Nlc3NGaWxlcyIsInNldElzU2hvd1Byb2Nlc3NGaWxlcyIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJoYXNGaWxlRXJyb3JzIiwic2V0SGFzRmlsZUVycm9ycyIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZURlbGV0ZUFnZW50IiwiaGFuZGxlRGVsZXRlQWdlbnQiLCJzdWNjZXNzRGVsZXRlIiwic3VjY2VzcyIsInJlc2V0U3VjY2VzcyIsIl91c2VVcGRhdGVBZ2VudCIsImhhbmRsZVVwZGF0ZUFnZW50Iiwic3VjY2Vzc1VwZGF0ZSIsInJlc2V0U3VjY2Vzc1VwZGF0ZSIsIl91c2VDcmVhdGVBZ2VudCIsImhhbmRsZUNyZWF0ZUFnZW50IiwiaXNMb2FkaW5nQ3JlYXRlIiwic3VjY2Vzc0NyZWF0ZSIsInJlc2V0U3VjY2Vzc0NyZWF0ZSIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZUtub3dsZWRnZU9wZXJhdGlvIiwiaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUtub3dsZWRnZXMiLCJoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzIiwiaXNMb2FkaW5nS25vd2xlZGdlIiwiZXJyb3JLbm93bGVkZ2UiLCJzdWNjZXNzS25vd2xlZGdlRGVsZXRlIiwiaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSIsImhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSIsIl91c2VBY2Nlc3NDbGllbnQiLCJoYW5kbGVBY2Nlc3NDbGllbnQiLCJzdWNjZXNzVXBkYXRlQWNjZXNzIiwiaXNMb2FkaW5nVXBkYXRlQWNjZXNzIiwicmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzIiwiaGFuZGxlUmVzZXRTdWNjZXNzIiwiYXJlQ2xpZW50c0FycmF5c0VxdWFsIiwiY2xpZW50czEiLCJjbGllbnRzMiIsImxlbmd0aCIsImNsaWVudHMxSWRzIiwiYyIsImNsaWVudElkIiwic29ydCIsImNsaWVudHMySWRzIiwiZXZlcnkiLCJpbmRleCIsImhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyMiIsImN1cnJlbnQiLCJhY2Nlc3NUeXBlU2FtZSIsImNsaWVudHNTYW1lIiwiY3VycmVudENvckFjY2VzcyIsImluaXRpYWxDb3JBY2Nlc3MiLCJjb3JBY2Nlc3NTYW1lIiwic2x1ZyIsInZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNCIsIl9tb2RhbFZhbHVlcyRrbm93bGVkZyIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjUiLCJfbW9kYWxWYWx1ZXMka25vd2xlZGcyIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNiIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZSIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZTIiLCJ0b1VwZGF0ZSIsImhhc0FueVZhbHVlRm9yQ3JlYXRpb24iLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQyIiwiX2FnZW50TW9kZWxzJCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJDMiLCJpc0RlZmF1bHRBaU1vZGVsIiwiZGVmYXVsdElucHV0UGxhY2Vob2xkZXIiLCJpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyIiwiZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciIsImlzRGVmYXVsdFVzZXJQcm9tcHQiLCJoYXNOYW1lIiwidHJpbSIsImhhc0Vtb2ppIiwiaGFzSW50cm9kdWN0aW9uIiwiaGFzSW5wdXRQbGFjZWhvbGRlciIsImhhc1VzZXJQcm9tcHQiLCJoYXNLbm93bGVkZ2UiLCJoYXNDdXN0b21BaU1vZGVsIiwiaGFzQWNjZXNzaWJpbGl0eSIsImhhc0NoYW5nZXNGb3JFZGl0aW5nIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50IiwiYWdlbnRJZCIsIm9uU3VjY2VzcyIsIm9uRXJyb3IiLCJ1cGRhdGVkQWdlbnQiLCJoYW5kbGVDbG9zZSIsImNvbmZpcm1NZXNzYWdlIiwid2luZG93IiwiY29uZmlybSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGVTZWN0aW9uQ2hhbmdlIiwibmV3U2VjdGlvbiIsInRhYlNlY3Rpb24iLCJvcHRpb24iLCJoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyIsIl9yZWYyIiwia2V5IiwidmFsdWUiLCJkZWxldGVLbm93bGVkZ2UiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUzIiwicHVzaCIsImFwcGx5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmlsZXNQcmV2SWRzIiwiU2V0IiwibmV3RmlsZXMiLCJmaWx0ZXIiLCJoYXMiLCJ2YWx1ZUlkcyIsImNvbmNhdCIsImtub3dsZWRnZUZpbGVzIiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjaGF0IiwiYWN0aW9uIiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhYnJ1cHQiLCJjb25maXJtQWN0aW9uIiwic3RvcCIsIl94IiwiX3gyIiwiYXJndW1lbnRzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzIiwiX2FnZW50VmFsdWVzJHZhbHVlczMiLCJhZ2VudFZhbHVlcyIsImRldGFpbCIsImluaXRpYWxTZWN0aW9uIiwiaW5jbHVkZXMiLCJ2YWx1ZXMiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzMiIsInByZWZldGNoZWRBZ2VudEJ5SWQiLCJuZXh0VmFsdWVzIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJfZG9jdW1lbnQiLCJib2R5Iiwib3JpZ2luYWxPdmVyZmxvdyIsInN0eWxlIiwib3ZlcmZsb3ciLCJoYW5kbGVCZWZvcmVVbmxvYWQiLCJwcmV2ZW50RGVmYXVsdCIsInJldHVyblZhbHVlIiwicHJvbWlzZXMiLCJmaWxlc1RvRGVsZXRlIiwiZmlsZXNUb0NyZWF0ZSIsImFnZW50V2l0aEZhdm9yaXRlIiwiYWdlbnRGb3JUb2dnbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImFsbCIsImZpbGVzIiwiYWlDaGF0RmF2b3JpdGUiLCJmaWxlc1RvVXBsb2FkIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dCIsIndlYlNvY2tldEZ1bmN0aW9uIiwiX3JlZjQiLCJtb2RlbERhdGEiLCJtb2RlbF9kYXRhIiwiZmlsZVN0YXR1cyIsInVwZGF0ZWRLbm93bGVkZ2UiLCJrbm93bGVkZ2VfYmFzZV9pZCIsImhhc1BlbmRpbmdGaWxlcyIsInNvbWUiLCJoYXNFcnJvckZpbGVzIiwicHJldkNvdW50IiwiY29udGV4dCIsImFnZW50VG9BZGQiLCJfc3VjY2Vzc0NyZWF0ZSRpZCIsImNoYW5uZWwiLCIkX3NjIiwiXyRfc2MiLCJzdWJzY3JpYmVIYW5kbGVyIiwiXyRfc2MyIiwiXyRfc2MzIiwiXyRfc2MkY2hhbm5lbFR5cGUiLCJtb2RlbF9oYXNoIiwiYWN0aW9uVHlwZSIsIlNVQlNDUklCRSIsInVwZGF0ZUNvbm5lY3Rpb25Nb2RlbCIsImNoYW5uZWxUeXBlIiwiTU9ERUxfQ0hBTk5FTCIsImFwcGx5RWRpdGluZ0FnZW50Iiwic291cmNlIiwic2V0VGltZW91dCIsImFnZW50VmFsdWVzVG9TZXQiLCJwcmVmZXRjaGVkIiwic2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liMiIsImhhbmRsZVRvZ2dsZUZhdm9yaXRlIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbDIiLCJjcmVhdGUiLCJlZGl0IiwiekluZGV4Iiwib25DbGljayIsImNoaWxkcmVuIiwicmVmIiwidGFiSW5kZXgiLCJjb2xvciIsImF0dGFjaG1lbnRzIiwibGFiZWwiLCJvblRpbWVvdXQiLCJ0aXRsZSIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsInZhcmlhbnQiLCJjbGFzc05hbWUiLCJjYW5jZWxNb2RhbCIsImRpc2FibGVkIiwiaGFzU2Nyb2xsIiwiJGluZGV4IiwiZXhpc3RpbmdLbm93bGVkZ2UiLCJuZXdLbm93bGVkZ2UiLCJvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlIiwib25SZW1vdmVOZXdLbm93bGVkZ2UiLCJvbkZpbGVFcnJvckNoYW5nZSIsImNoaWxkcmVuV2l0aEljb24iLCJkaXNwbGF5IiwiZ2FwIiwiaXNEaXNhYmxlZCIsIm9uQ2xvc2UiLCJoYW5kbGVycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tY3ljbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5cbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DYXRlZ29yeSdcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQWxlcnQnXG5pbXBvcnQgeyBUcmFzaCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1RyYXNoJ1xuaW1wb3J0IHsgU3RhciB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1N0YXInXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgU3Bpbm5lckxvdHRpZSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi9jb21wb25lbnRzL3NwaW5uZXItbG90dGllJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlJY29uLCBCcmFpbkljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucydcbmltcG9ydCB7IHVzZUFnZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUFnZW50TW9kZWwnXG5pbXBvcnQgeyBBZ2VudCwgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRCeUlkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRCeUlkJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQWJtR2VuZXJhbFNlY3Rpb24sIEFibUtub3dsZWRnZVNlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbidcbmltcG9ydCB7IE1vZGFsVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnRNb2RhbCdcbmltcG9ydCB7XG4gIFNDQUFNQ29udGVudCxcbiAgU0NBQU1Gb290ZXIsXG4gIFNDQUFNSGVhZGVyLFxuICBTQ0FBTUhlYWRlclRpdGxlLFxuICBTQ0FBTUhlYWRlckxlZnQsXG4gIFNDQUFNSGVhZGVyRmF2b3JpdGUsXG4gIFNDQUFNSGVhZGVyQ2xvc2VCdXR0b24sXG4gIFNDQUFNU2lkZWJhcixcbiAgU0NBQU1XcmFwcGVyLFxuICBTQ0FBTVNpZGViYXJJdGVtLFxuICBTQ0FBTVNpZGViYXJJdGVtVGl0bGUsXG4gIFNDQUFNRGVsZXRlQnV0dG9uLFxuICBTQ0FBTVNhdmVCdXR0b24sXG4gIFNDQUFNV3JhcHBlclNwaW5uZXIsXG4gIFNDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50LFxuICBTQ0FBTVNpZGViYXJJdGVtRXJyb3IsXG59IGZyb20gJy4vQWJtQWdlbnRNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyB1c2VDcmVhdGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlQ3JlYXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VEZWxldGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlRGVsZXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VVcGRhdGVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlVXBkYXRlQWdlbnQnXG5pbXBvcnQgeyB1c2VLbm93bGVkZ2VPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlS25vd2xlZGdlJ1xuaW1wb3J0IHsgQWJtTG9hZGVyRmlsZXMgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1Mb2FkZXJGaWxlcydcbmltcG9ydCB7IFdyYXBwZXJDZW50ZXJJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvV3JhcHBlckNlbnRlckljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBEZWxldGVRdWVzdGlvbk1vZGFsIH0gZnJvbSAnLi4vRGVsZXRlUXVlc3Rpb25Nb2RhbC9EZWxldGVRdWVzdGlvbk1vZGFsJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5pbXBvcnQgeyB1c2VBY2Nlc3NDbGllbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VBY2Nlc3NDbGllbnQvdXNlQWNjZXNzQ2xpZW50J1xuaW1wb3J0IHsgdXNlVG9nZ2xlRmF2b3JpdGUgfSBmcm9tICcuLi8uLi8uLi9ob29rcydcbmltcG9ydCB7XG4gIGRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyxcbiAgREVGQVVMVF9DT1JfQUNDRVNTLFxuICBDT1JfVE9PTF9HUk9VUF9TTFVHUyxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzJ1xuXG5jb25zdCBpbml0aWFsVmFsdWVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGtub3dsZWRnZTogW10sXG4gIGdlbmVyYWw6IHtcbiAgICBuYW1lOiAnJyxcbiAgICBlbW9qaTogJycsXG4gICAgaW50cm9kdWN0aW9uOiAnJyxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiAnJyxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gICAgYWlNb2RlbDogbnVsbCxcbiAgICBpZDogbnVsbCxcbiAgICB1c2VyUHJvbXB0OiBudWxsLFxuICAgIGtub3dsZWRnZUJhc2VzOiBbXSxcbiAgICBpc19mYXZvcml0ZTogZmFsc2UsXG4gIH0sXG4gIGFjY2Vzc2liaWxpdHk6IHtcbiAgICBhY2Nlc3NUeXBlOiAnY29tcGFueScsXG4gICAgY2xpZW50czogbnVsbCxcbiAgICBjb3JBY2Nlc3M6IERFRkFVTFRfQ09SX0FDQ0VTUyxcbiAgfSxcbn0pXG5cbnR5cGUgQWJtU2VjdGlvbiA9ICdnZW5lcmFsJyB8ICdrbm93bGVkZ2UnIHwgJ3RyYWluaW5nJyB8ICd0ZXN0aW5nJyB8ICdhY2Nlc3NpYmlsaXR5J1xuXG5leHBvcnQgY29uc3QgU2VjdGlvbkJ5S2V5ID0ge1xuICBnZW5lcmFsOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgICB9OiB7XG4gICAgICBrZXk6IHN0cmluZ1xuICAgICAgdmFsdWU6IHVua25vd25cbiAgICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgICB9KSA9PiB2b2lkXG4gICAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICAgIGxvYWRpbmc6IGJvb2xlYW5cbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1HZW5lcmFsU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBrbm93bGVkZ2U6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gICAgZXhpc3RpbmdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBuZXdLbm93bGVkZ2U6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvblJlbW92ZU5ld0tub3dsZWRnZTogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25GaWxlRXJyb3JDaGFuZ2U6IChoYXNFcnJvcnM6IGJvb2xlYW4pID0+IHZvaWRcbiAgICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIH0pID0+IDxBYm1Lbm93bGVkZ2VTZWN0aW9uIHsuLi5wcm9wc30gLz4sXG4gIGFjY2Vzc2liaWxpdHk6IChwcm9wczoge1xuICAgIHZhbHVlczogTW9kYWxWYWx1ZXNcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIH0pID0+IDxBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxufVxuXG50eXBlIEFibUFnZW50TW9kYWxQcm9wcyA9IHtcbiAgYWRkQWdlbnQ6IChuZXdBZ2VudDogQWdlbnQsIG9wdGlvbnM/OiB7IG5hdmlnYXRlSG9tZT86IGJvb2xlYW4gfSkgPT4gdm9pZFxuICByZW1vdmVBZ2VudDogKGFnZW50SWQ6IG51bWJlciB8IHN0cmluZykgPT4gdm9pZFxuICB1cGRhdGVBZ2VudDogKHVwZGF0ZWRBZ2VudDogQWdlbnQpID0+IHZvaWRcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZTogKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ/OiBib29sZWFuKSA9PiB2b2lkXG4gIHNlbGVjdEZpcnN0QWdlbnQ6IChhZ2VudElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuY29uc3QgdmFsaWRhdGVGaWVsZFZhbHVlcyA9ICh2YWx1ZVRvVmFsaWRhdGU6IE1vZGFsVmFsdWVzKSA9PiB7XG4gIGlmICghdmFsdWVUb1ZhbGlkYXRlLmdlbmVyYWwubmFtZSB8fCAhdmFsdWVUb1ZhbGlkYXRlLmdlbmVyYWwudXNlclByb21wdCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKiBNaXNtYSBlc3RydWN0dXJhIHF1ZSBlbCBlZmVjdG8gcXVlIGhpZHJhdGEgZGVzZGUgdXNlR2V0QWdlbnRCeUlkICh0b2RhcyBsYXMgcGVzdGHDsWFzIGRlbCBBQk0pLiAqL1xuZnVuY3Rpb24gYnVpbGRFZGl0aW5nTW9kYWxWYWx1ZXNGcm9tQWdlbnREZXRhaWwoXG4gIGFnZW50QnlJZDogYW55LFxuICBhZ2VudE1vZGVsczogQWdlbnRNb2RlbFtdLFxuICBwcmV2OiBNb2RhbFZhbHVlc1xuKTogTW9kYWxWYWx1ZXMge1xuICBjb25zdCBhZ2VudE1vZGVsID0gYWdlbnRNb2RlbHMuZmluZChtb2RlbCA9PiBtb2RlbC5pZCA9PT0gYWdlbnRCeUlkLm1vZGVsQWlJZClcbiAgcmV0dXJuIHtcbiAgICAuLi5wcmV2LFxuICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICBnZW5lcmFsOiB7XG4gICAgICBlbW9qaTogYWdlbnRCeUlkLmVtb2ppLFxuICAgICAgbmFtZTogYWdlbnRCeUlkLm5hbWUsXG4gICAgICBpbnRyb2R1Y3Rpb246IGFnZW50QnlJZC5pbnRyb2R1Y3Rpb24sXG4gICAgICBpbnB1dFBsYWNlaG9sZGVyOiBhZ2VudEJ5SWQuaW5wdXRQbGFjZWhvbGRlcixcbiAgICAgIGlzQWN0aXZlOiBhZ2VudEJ5SWQuaXNBY3RpdmUsXG4gICAgICBhaU1vZGVsOiBhZ2VudE1vZGVsIHx8IG51bGwsXG4gICAgICBpZDogYWdlbnRCeUlkLmlkLFxuICAgICAgdXNlclByb21wdDogYWdlbnRCeUlkLnVzZXJQcm9tcHQsXG4gICAgICBrbm93bGVkZ2VCYXNlczogW10sXG4gICAgICBpc19mYXZvcml0ZTogYWdlbnRCeUlkLmlzX2Zhdm9yaXRlLFxuICAgICAgY3JlYXRlZF9ieTogYWdlbnRCeUlkLmNyZWF0ZWRCeSxcbiAgICB9LFxuICAgIGtub3dsZWRnZTpcbiAgICAgIGFnZW50QnlJZC5rbm93bGVkZ2VCYXNlcz8ubWFwKChrOiBhbnkpID0+ICh7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBrLmZpbGVuYW1lKSxcbiAgICAgICAgaWQ6IGsuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogay5maWxlbmFtZSxcbiAgICAgICAgc2l6ZTogay5maWxlX3NpemVfYnl0ZXMgfHwgMCxcbiAgICAgICAgdHlwZTogay5vcmlnaW5hbF9maWxlX3R5cGUsXG4gICAgICAgIHN0YXR1czogay5zdGF0dXMsXG4gICAgICAgIHVybF9vcmlnaW5hbDogay51cmxfb3JpZ2luYWwgfHwgdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiBrLnVybF90aHVtYm5haWwgfHwgdW5kZWZpbmVkLFxuICAgICAgfSkpIHx8IFtdLFxuICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgIGFjY2Vzc1R5cGU6IGFnZW50QnlJZC5hY2Nlc3MsXG4gICAgICBjbGllbnRzOlxuICAgICAgICBhZ2VudEJ5SWQuY2xpZW50cz8ubWFwKChjbGllbnQ6IGFueSkgPT4gKHtcbiAgICAgICAgICBpZDogY2xpZW50LmlkPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICAgIG5hbWU6IGNsaWVudC5uYW1lLFxuICAgICAgICAgIGlzX2FjdGl2ZTogY2xpZW50LmlzX2FjdGl2ZSA/PyBmYWxzZSxcbiAgICAgICAgICBpc19kZWxldGVkOiBjbGllbnQuaXNfZGVsZXRlZCA/PyBmYWxzZSxcbiAgICAgICAgfSkpIHx8IG51bGwsXG4gICAgICBjb3JBY2Nlc3M6IGRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyhhZ2VudEJ5SWQudG9vbEdyb3VwU2x1Z3MpLFxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFibUFnZW50TW9kYWwgPSAoe1xuICBhZGRBZ2VudCxcbiAgdXBkYXRlQWdlbnQsXG4gIHJlbW92ZUFnZW50LFxuICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBzZWxlY3RGaXJzdEFnZW50LFxufTogQWJtQWdlbnRNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgLy8gY29uc3QgJF9zYzogYW55ID0gbnVsbFxuICBjb25zdCB7IGFnZW50OiBjdXJyZW50U2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBhYm1BZ2VudE1vZGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMTEyLCAnYWdlbnRNb2RhbCcpXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IHsgdG9nZ2xlRmF2b3JpdGUgfSA9IHVzZVRvZ2dsZUZhdm9yaXRlKClcbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWJtLWFnZW50LW1vZGFsJylcbiAgY29uc3QgW2lzU3Vic2NyaWJlZCwgc2V0SXNTdWJzY3JpYmVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBtb2RhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpb25zVG9GaWxlcyA9IHVzZVJlZjxhbnk+KHtcbiAgICB0b0RlbGV0ZTogW10sXG4gICAgdG9VcGxvYWQ6IFtdLFxuICB9KVxuICBjb25zdCBhY2Nlc3NVcGRhdGVDb250ZXh0ID0gdXNlUmVmPHtcbiAgICBpc0Zyb21DcmVhdGlvbjogYm9vbGVhblxuICAgIGlzRnJvbUVkaXRpbmc6IGJvb2xlYW5cbiAgICBoYXNBY3Rpb25GaWxlczogYm9vbGVhblxuICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCBudWxsXG4gICAgaGFzQmVlbkNhbGxlZD86IGJvb2xlYW5cbiAgfT4oe1xuICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzSGFuZGxlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWdlbnRDcmVhdGVkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZiA9IHVzZVJlZjxBYm1TZWN0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZiA9IHVzZVJlZjxhbnk+KG51bGwpXG4gIGNvbnN0IGZpbGVzRmluaXNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIC8vIE1hcmNhIGN1YW5kbyBjZXJyYW1vcyBlbCBsb2FkZXIgcG9yIGVsIHRpbWVvdXQgZGUgc2VndXJpZGFkIGRlIGFyY2hpdm9zLlxuICAvLyBNaWVudHJhcyBlc3TDqSBhY3Rpdm8sIGxvcyB1c2VFZmZlY3QgZGUgcG9zdC1ndWFyZGFkbyBOTyBkZWJlbiBkaXNwYXJhclxuICAvLyBzbmFja2JhcnMgZGUgw6l4aXRvIG5pIGF1dG8tY2VycmFyIGVsIG1vZGFsLlxuICBjb25zdCBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2ZpbGVzUHJvY2Vzc2VkLCBzZXRGaWxlc1Byb2Nlc3NlZF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93TW9kYWxEZWxldGUsIHNldFNob3dNb2RhbERlbGV0ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlY3Rpb24sIHNldFNlY3Rpb25dID0gdXNlU3RhdGU8QWJtU2VjdGlvbj4oJ2dlbmVyYWwnKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFttb2RhbFZhbHVlcywgc2V0TW9kYWxWYWx1ZXNdID0gdXNlU3RhdGU8e1xuICAgIGdlbmVyYWw6IGFueVxuICAgIGtub3dsZWRnZTogYW55XG4gICAgaXNFZGl0aW5nOiBib29sZWFuXG4gICAgYWNjZXNzaWJpbGl0eTogYW55XG4gIH0+KGluaXRpYWxWYWx1ZXMpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nOiBhZ2VudExvYWRpbmcsXG4gICAgaGFuZGxlR2V0QWdlbnRCeUlkLFxuICAgIGFnZW50OiBhZ2VudEJ5SWQsXG4gICAgaGFuZGxlQ2xlYW5BZ2VudCxcbiAgICBlcnJvcjogZXJyb3JHZXRBZ2VudEJ5SWQsXG4gIH0gPSB1c2VHZXRBZ2VudEJ5SWQoKVxuICBjb25zdCB7IGFnZW50TW9kZWxzLCBnZXRBbGxBZ2VudE1vZGVscyB9ID0gdXNlQWdlbnRNb2RlbCgpXG4gIGNvbnN0IGZpcnN0VmFsdWVBZ2VudCA9IHVzZVJlZjxhbnk+KG51bGwpXG4gIGNvbnN0IFtpc1Nob3dQcm9jZXNzRmlsZXMsIHNldElzU2hvd1Byb2Nlc3NGaWxlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hhc0ZpbGVFcnJvcnMsIHNldEhhc0ZpbGVFcnJvcnNdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuXG4gIGNvbnN0IHsgaGFuZGxlRGVsZXRlQWdlbnQsIHN1Y2Nlc3M6IHN1Y2Nlc3NEZWxldGUsIHJlc2V0U3VjY2VzcyB9ID0gdXNlRGVsZXRlQWdlbnQoKVxuICBjb25zdCB7IGhhbmRsZVVwZGF0ZUFnZW50LCBzdWNjZXNzOiBzdWNjZXNzVXBkYXRlLCByZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc1VwZGF0ZSB9ID0gdXNlVXBkYXRlQWdlbnQoKVxuXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVDcmVhdGVBZ2VudCxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZ0NyZWF0ZSxcbiAgICBzdWNjZXNzOiBzdWNjZXNzQ3JlYXRlLFxuICAgIHJlc2V0U3VjY2VzczogcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICB9ID0gdXNlQ3JlYXRlQWdlbnQoKVxuXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZ0tub3dsZWRnZSxcbiAgICBlcnJvcjogZXJyb3JLbm93bGVkZ2UsXG4gICAgc3VjY2Vzc0RlbGV0ZTogc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgfSA9IHVzZUtub3dsZWRnZU9wZXJhdGlvbnMoKVxuXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVBY2Nlc3NDbGllbnQsXG4gICAgc3VjY2Vzczogc3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBpc0xvYWRpbmc6IGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgfSA9IHVzZUFjY2Vzc0NsaWVudCgpXG5cbiAgaWYgKCFzZWxlY3RvcikgcmV0dXJuIG51bGxcblxuICBjb25zdCBhcmVDbGllbnRzQXJyYXlzRXF1YWwgPSAoY2xpZW50czE6IGFueVtdIHwgbnVsbCwgY2xpZW50czI6IGFueVtdIHwgbnVsbCkgPT4ge1xuICAgIGlmICghY2xpZW50czEgJiYgIWNsaWVudHMyKSByZXR1cm4gdHJ1ZVxuICAgIGlmICghY2xpZW50czEgfHwgIWNsaWVudHMyKSByZXR1cm4gZmFsc2VcbiAgICBpZiAoY2xpZW50czEubGVuZ3RoICE9PSBjbGllbnRzMi5sZW5ndGgpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgY2xpZW50czFJZHMgPSBjbGllbnRzMS5tYXAoYyA9PiBjLmNsaWVudElkKS5zb3J0KClcbiAgICBjb25zdCBjbGllbnRzMklkcyA9IGNsaWVudHMyLm1hcChjID0+IGMuY2xpZW50SWQpLnNvcnQoKVxuXG4gICAgcmV0dXJuIGNsaWVudHMxSWRzLmV2ZXJ5KChpZCwgaW5kZXgpID0+IGlkID09PSBjbGllbnRzMklkc1tpbmRleF0pXG4gIH1cblxuICBjb25zdCBoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCA9ICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5hY2Nlc3NpYmlsaXR5IHx8ICFtb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eSkgcmV0dXJuIHRydWVcblxuICAgIGNvbnN0IGFjY2Vzc1R5cGVTYW1lID0gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGVcbiAgICBjb25zdCBjbGllbnRzU2FtZSA9IGFyZUNsaWVudHNBcnJheXNFcXVhbChcbiAgICAgIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY2xpZW50cyxcbiAgICAgIGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmFjY2Vzc2liaWxpdHkuY2xpZW50c1xuICAgIClcbiAgICBjb25zdCBjdXJyZW50Q29yQWNjZXNzID0gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jb3JBY2Nlc3MgPz8gREVGQVVMVF9DT1JfQUNDRVNTXG4gICAgY29uc3QgaW5pdGlhbENvckFjY2VzcyA9IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmFjY2Vzc2liaWxpdHkuY29yQWNjZXNzID8/IERFRkFVTFRfQ09SX0FDQ0VTU1xuICAgIGNvbnN0IGNvckFjY2Vzc1NhbWUgPSBDT1JfVE9PTF9HUk9VUF9TTFVHUy5ldmVyeShzbHVnID0+IGN1cnJlbnRDb3JBY2Nlc3Nbc2x1Z10gPT09IGluaXRpYWxDb3JBY2Nlc3Nbc2x1Z10pXG5cbiAgICByZXR1cm4gIWFjY2Vzc1R5cGVTYW1lIHx8ICFjbGllbnRzU2FtZSB8fCAhY29yQWNjZXNzU2FtZVxuICB9XG5cbiAgY29uc3QgdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSA9ICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5nZW5lcmFsIHx8ICFtb2RhbFZhbHVlcz8uZ2VuZXJhbCkgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gKFxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5uYW1lID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLm5hbWUgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuZW1vamkgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuZW1vamkgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmludHJvZHVjdGlvbiAmJlxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuYWlNb2RlbD8uaWQgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwuYWlNb2RlbD8uaWQgJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC51c2VyUHJvbXB0ICYmXG4gICAgICAobW9kYWxWYWx1ZXMua25vd2xlZGdlPy5sZW5ndGggPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50Py5rbm93bGVkZ2U/Lmxlbmd0aCB8fFxuICAgICAgICAoIW1vZGFsVmFsdWVzLmtub3dsZWRnZT8ubGVuZ3RoICYmICFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8ua25vd2xlZGdlPy5sZW5ndGgpKSAmJlxuICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGRhdGU/Lmxlbmd0aCAmJlxuICAgICAgIWFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGU/Lmxlbmd0aCAmJlxuICAgICAgIWhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNBbnlWYWx1ZUZvckNyZWF0aW9uID0gKCkgPT4ge1xuICAgIGlmIChtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgaXNEZWZhdWx0QWlNb2RlbCA9ICEhYWdlbnRNb2RlbHMubGVuZ3RoICYmIG1vZGFsVmFsdWVzLmdlbmVyYWwuYWlNb2RlbD8uaWQgPT09IGFnZW50TW9kZWxzWzBdPy5pZFxuXG4gICAgY29uc3QgZGVmYXVsdElucHV0UGxhY2Vob2xkZXIgPSB0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJylcbiAgICBjb25zdCBpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyID09PSBkZWZhdWx0SW5wdXRQbGFjZWhvbGRlclxuXG4gICAgY29uc3QgZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciA9IHQoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHRQbGFjZWhvbGRlcicpXG4gICAgY29uc3QgaXNEZWZhdWx0VXNlclByb21wdCA9XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IGRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIgfHxcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gJycgfHxcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdCA9PT0gbnVsbFxuXG4gICAgY29uc3QgaGFzTmFtZSA9IG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZS50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzRW1vamkgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmVtb2ppLnRyaW0oKSAhPT0gJydcbiAgICBjb25zdCBoYXNJbnRyb2R1Y3Rpb24gPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbi50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzSW5wdXRQbGFjZWhvbGRlciA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlci50cmltKCkgIT09ICcnICYmICFpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyXG4gICAgY29uc3QgaGFzVXNlclByb21wdCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwudXNlclByb21wdD8udHJpbSgpICE9PSAnJyAmJiAhaXNEZWZhdWx0VXNlclByb21wdFxuICAgIGNvbnN0IGhhc0tub3dsZWRnZSA9ICEhbW9kYWxWYWx1ZXMua25vd2xlZGdlLmxlbmd0aFxuICAgIGNvbnN0IGhhc0N1c3RvbUFpTW9kZWwgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWwgJiYgIWlzRGVmYXVsdEFpTW9kZWxcbiAgICBjb25zdCBoYXNBY2Nlc3NpYmlsaXR5ID0gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueSdcblxuICAgIHJldHVybiAoXG4gICAgICBoYXNOYW1lIHx8XG4gICAgICBoYXNFbW9qaSB8fFxuICAgICAgaGFzSW50cm9kdWN0aW9uIHx8XG4gICAgICBoYXNJbnB1dFBsYWNlaG9sZGVyIHx8XG4gICAgICBoYXNVc2VyUHJvbXB0IHx8XG4gICAgICBoYXNLbm93bGVkZ2UgfHxcbiAgICAgIGhhc0N1c3RvbUFpTW9kZWwgfHxcbiAgICAgIGhhc0FjY2Vzc2liaWxpdHlcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNDaGFuZ2VzRm9yRWRpdGluZyA9ICgpID0+IHtcbiAgICBpZiAoIW1vZGFsVmFsdWVzLmlzRWRpdGluZykgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gKFxuICAgICAgIXZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgISFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCB8fFxuICAgICAgISFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhc1BlbmRpbmdDaGFuZ2VzID0gKCkgPT4ge1xuICAgIHJldHVybiBoYXNBbnlWYWx1ZUZvckNyZWF0aW9uKCkgfHwgaGFzQ2hhbmdlc0ZvckVkaXRpbmcoKVxuICB9XG5cbiAgLy8gSGVscGVyIHBhcmEgbWFuZWphciBlbCB0b2dnbGUgZGUgZmF2b3JpdG8geSBhY3R1YWxpemFyIGVsIGVzdGFkbyBjb24gb3JkZW5hbWllbnRvXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nLCBhZ2VudDogQWdlbnQsIG9uU3VjY2Vzcz86ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkLCBvbkVycm9yPzogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIGFnZW50SWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgLy8gQWN0dWFsaXphciBlbCBlc3RhZG8gZGUgYWdlbnRlcyBjb24gZWwgcmVzdWx0YWRvIGRlbCBzZXJ2aWRvciB5IG9yZGVuYXJcbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSB7XG4gICAgICAgICAgICBvblN1Y2Nlc3ModXBkYXRlZEFnZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgICBvbkVycm9yKClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFnZW50LmlzX2Zhdm9yaXRlXG4gICAgICApXG4gICAgfSxcbiAgICBbdG9nZ2xlRmF2b3JpdGUsIHVwZGF0ZUFnZW50RmF2b3JpdGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICBpZiAoaGFzUGVuZGluZ0NoYW5nZXMoKSAmJiAhc3VjY2Vzc0NyZWF0ZSAmJiAhc3VjY2Vzc1VwZGF0ZSAmJiAhc3VjY2Vzc0RlbGV0ZSkge1xuICAgICAgY29uc3QgY29uZmlybU1lc3NhZ2UgPSBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQ2xvc2VFZGl0QWdlbnQnKSA6IHQoJ2NvbmZpcm1DbG9zZUNyZWF0ZUFnZW50JylcblxuICAgICAgaWYgKCF3aW5kb3cuY29uZmlybShjb25maXJtTWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TW9kYWxWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgICBoYW5kbGVDbGVhbkFnZW50KClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NTYXZlKClcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudCA9IHtcbiAgICAgIHRvRGVsZXRlOiBbXSxcbiAgICAgIHRvVXBsb2FkOiBbXSxcbiAgICB9XG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgfVxuICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcbiAgICBzZXRJc1N1YnNjcmliZWQoZmFsc2UpXG4gICAgc2V0RmlsZXNQcm9jZXNzZWQoMClcbiAgICBzZXRTZWN0aW9uKCdnZW5lcmFsJylcbiAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgIWlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlY3Rpb25DaGFuZ2UgPSAobmV3U2VjdGlvbjogQWJtU2VjdGlvbikgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy50YWJTZWN0aW9uLCB7IG9wdGlvbjogbmV3U2VjdGlvbiB9KVxuICAgIHNldFNlY3Rpb24obmV3U2VjdGlvbilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzID0gKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogYW55XG4gICAgZGVsZXRlS25vd2xlZGdlOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoa2V5ID09PSAna25vd2xlZGdlJykge1xuICAgICAgaWYgKCFkZWxldGVLbm93bGVkZ2UpIHtcbiAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5wdXNoKC4uLih2YWx1ZSB8fCBbXSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmaWxlc1ByZXZJZHMgPSB2YWx1ZS5sZW5ndGggPyBuZXcgU2V0KHZhbHVlLm1hcChmaWxlID0+IGZpbGUuaWQpKSA6IG5ldyBTZXQoKVxuICAgICAgICBjb25zdCBuZXdGaWxlcyA9IG1vZGFsVmFsdWVzLmtub3dsZWRnZS5maWx0ZXIoZmlsZSA9PiAhZmlsZXNQcmV2SWRzLmhhcyhmaWxlLmlkKSAmJiBmaWxlLnN0YXR1cyAhPT0gJ3N0YXJ0ZWQnKVxuICAgICAgICBpZiAoIW5ld0ZpbGVzLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlSWRzID0gbmV3IFNldCh2YWx1ZS5tYXAoZmlsZSA9PiBmaWxlLmlkKSlcbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkID0gYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5maWx0ZXIoZmlsZSA9PiB2YWx1ZUlkcy5oYXMoZmlsZS5pZCkpXG4gICAgICAgIH1cbiAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFsuLi4oYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSB8fCBbXSksIC4uLm5ld0ZpbGVzXVxuICAgICAgfVxuICAgIH1cbiAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IGtub3dsZWRnZUZpbGVzID1cbiAgICAgICAga2V5ID09PSAna25vd2xlZGdlJ1xuICAgICAgICAgID8gZGVsZXRlS25vd2xlZGdlXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IFsuLi4ocHJldi5rbm93bGVkZ2UgfHwgW10pLCAuLi4oKHZhbHVlIGFzIEF0dGFjaG1lbnRGaWxlW10pIHx8IFtdKV1cbiAgICAgICAgICA6IG51bGxcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIC4uLihrZXkgPT09ICdrbm93bGVkZ2UnXG4gICAgICAgICAgPyB7IGtub3dsZWRnZToga25vd2xlZGdlRmlsZXMgfVxuICAgICAgICAgIDoga2V5ID09PSAnYWNjZXNzaWJpbGl0eSdcbiAgICAgICAgICAgID8geyBhY2Nlc3NpYmlsaXR5OiB2YWx1ZSB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgICAgICAgICBba2V5XTogdmFsdWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1BY3Rpb24gPSBhc3luYyAoY2hhdDogYW55LCBhY3Rpb246ICdkZWxldGUnIHwgJ3VwZGF0ZScgfCAnY3JlYXRlJykgPT4ge1xuICAgIC8vIFNvbG8gcGVybWl0aXIgb3BlcmFjaW9uZXMgZGUgYWdlbnRlcyBjdXN0b20gc2kgbGEgZmVhdHVyZSBmbGFnIGVzdMOhIGhhYmlsaXRhZGFcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmRlbGV0ZSlcbiAgICAgIGhhbmRsZURlbGV0ZUFnZW50KGNoYXQuaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNvbmZpcm1BY3Rpb24sIHsgb3B0aW9uOiBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyAnZWRpdGUnIDogJ2NyZWF0ZScgfSlcbiAgICAvLyBBbCByZWludGVudGFyIGd1YXJkYXIsIGxpYmVyYXIgZWwgZnJlbm8gZGVsIHRpbWVvdXQgcHJldmlvIHBhcmEgcXVlIGxvc1xuICAgIC8vIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIHZ1ZWx2YW4gYSBwb2RlciBkaXNwYXJhciBzbmFja2JhcnMgeSBjZXJyYXIuXG4gICAgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgaWYgKG1vZGFsVmFsdWVzLmlzRWRpdGluZykge1xuICAgICAgaWYgKCF2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkpIHtcbiAgICAgICAgYXdhaXQgaGFuZGxlVXBkYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGhhbmRsZUNyZWF0ZUFnZW50KG1vZGFsVmFsdWVzKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudFZhbHVlcyB9ID0gZXZlbnQuZGV0YWlsXG4gICAgICBjb25zdCBpbml0aWFsU2VjdGlvbiA9IGFnZW50VmFsdWVzPy5pbml0aWFsU2VjdGlvbiBhcyBBYm1TZWN0aW9uIHwgdW5kZWZpbmVkXG4gICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9XG4gICAgICAgIGluaXRpYWxTZWN0aW9uICYmIFsnZ2VuZXJhbCcsICdrbm93bGVkZ2UnLCAnYWNjZXNzaWJpbGl0eSddLmluY2x1ZGVzKGluaXRpYWxTZWN0aW9uKSA/IGluaXRpYWxTZWN0aW9uIDogbnVsbFxuXG4gICAgICBnZXRBbGxBZ2VudE1vZGVscygpXG4gICAgICBzZXRJc09wZW4odHJ1ZSlcbiAgICAgIHNldElzTG9hZGluZyh0cnVlKVxuXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG5cbiAgICAgIGlmIChhZ2VudFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZykge1xuICAgICAgICAvLyBWYWxpZGFyIHF1ZSBsYSBmZWF0dXJlIGZsYWcgZXN0w6kgaGFiaWxpdGFkYSBhbnRlcyBkZSBjYXJnYXIgZWwgYWdlbnRlIHBhcmEgZWRpdGFyXG4gICAgICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFnZW50VmFsdWVzLnByZWZldGNoZWRBZ2VudEJ5SWQpIHtcbiAgICAgICAgICBoYW5kbGVDbGVhbkFnZW50KClcbiAgICAgICAgICBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQgPSBhZ2VudFZhbHVlcy5wcmVmZXRjaGVkQWdlbnRCeUlkXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlR2V0QWdlbnRCeUlkKGFnZW50VmFsdWVzPy52YWx1ZXM/LmdlbmVyYWw/LmlkIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGFnZW50VmFsdWVzLnZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXh0VmFsdWVzID0ge1xuICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMsXG4gICAgICAgICAgLi4uYWdlbnRWYWx1ZXMudmFsdWVzLFxuICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuZ2VuZXJhbCxcbiAgICAgICAgICAgIC4uLihhZ2VudFZhbHVlcy52YWx1ZXMuZ2VuZXJhbCB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICAgICAgICAuLi5pbml0aWFsVmFsdWVzLmFjY2Vzc2liaWxpdHksXG4gICAgICAgICAgICAuLi4oYWdlbnRWYWx1ZXMudmFsdWVzLmFjY2Vzc2liaWxpdHkgfHwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAga25vd2xlZGdlOiBhZ2VudFZhbHVlcy52YWx1ZXMua25vd2xlZGdlIHx8IFtdLFxuICAgICAgICB9XG5cbiAgICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgPSBuZXh0VmFsdWVzXG4gICAgICAgIHNldE1vZGFsVmFsdWVzKG5leHRWYWx1ZXMpXG4gICAgICB9XG5cbiAgICAgIGlmIChwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCAmJiAhYWdlbnRWYWx1ZXMudmFsdWVzPy5pc0VkaXRpbmcpIHtcbiAgICAgICAgc2V0U2VjdGlvbihwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudClcbiAgICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRBZ2VudFZhbHVlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJtLWFnZW50LW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRBZ2VudFZhbHVlcyBhcyBFdmVudExpc3RlbmVyKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gdXNlRWZmZWN0IHRvIGhhbmRsZSB0aGUgb3ZlcmZsb3cgb2YgdGhlIGJvZHkgd2hlbiB0aGUgbW9kYWwgaXMgb3BlblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgeyBib2R5IH0gPSBkb2N1bWVudFxuICAgIGlmICghYm9keSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsT3ZlcmZsb3cgPSBib2R5LnN0eWxlLm92ZXJmbG93XG4gICAgYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgYm9keS5zdHlsZS5vdmVyZmxvdyA9IG9yaWdpbmFsT3ZlcmZsb3dcbiAgICB9XG4gIH0sIFtpc09wZW5dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQmVmb3JlVW5sb2FkID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4ge1xuICAgICAgaWYgKGhhc1BlbmRpbmdDaGFuZ2VzKCkpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSB0KCdjb25maXJtUmVsb2FkQnJvd3NlcicpXG4gICAgICAgIHJldHVybiB0KCdjb25maXJtUmVsb2FkQnJvd3NlcicpXG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKGlzT3Blbikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGhhbmRsZUJlZm9yZVVubG9hZClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGhhbmRsZUJlZm9yZVVubG9hZClcbiAgICB9XG4gIH0sIFtpc09wZW4sIGhhc1BlbmRpbmdDaGFuZ2VzLCB0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdWNjZXNzRGVsZXRlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50RGVsZXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzKClcbiAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgYXMgc3RyaW5nKVxuICAgICAgfVxuICAgICAgcmVtb3ZlQWdlbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZClcbiAgICAgIHNldFNob3dNb2RhbERlbGV0ZShmYWxzZSlcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gIH0sIFtzdWNjZXNzRGVsZXRlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIEV2aXRhciBlamVjdWNpw7NuIG3Dumx0aXBsZSBkZWwgZWZlY3RvXG4gICAgaWYgKHN1Y2Nlc3NDcmVhdGUgJiYgIWlzTG9hZGluZ0NyZWF0ZSAmJiBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCAhPT0gc3VjY2Vzc0NyZWF0ZS5pZCkge1xuICAgICAgYWdlbnRDcmVhdGVkUmVmLmN1cnJlbnQgPSBzdWNjZXNzQ3JlYXRlLmlkXG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggJiYgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVybyBoYXkgYXJjaGl2b3MsIGVzdGFibGVjZXIgZWwgY29udGV4dG8gcGFyYSBjcmVhY2nDs25cbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgIGZpbGVzVG9EZWxldGU6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUsXG4gICAgICAgICAgICBmaWxlc1RvQ3JlYXRlOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLFxuICAgICAgICAgICAgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdXG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICB9XG5cbiAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG5cbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pLFxuICAgICAgICBdXG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICB9XG5cbiAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gU2kgbm8gaGF5IGFjY2VzaWJpbGlkYWQgcGVybyBoYXkgYXJjaGl2b3MsIGVzdGFibGVjZXIgZWwgY29udGV4dG8gcGFyYSBjcmVhY2nDs25cbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtcbiAgICAgICAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzKHsgZmlsZXM6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQsIGFnZW50SWQ6IHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSB9KSxcbiAgICAgICAgXVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSkpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pc19mYXZvcml0ZSkge1xuICAgICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgICAgYWRkQWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZXNvbHZlKCksXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQWdlbnQoc3VjY2Vzc0NyZWF0ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgIC8vIFNvbG8gcmVzZXRlYXIgZWwgY29udGV4dG8gc2kgTk8gc2UgaGEgbGxhbWFkbyB0b2RhdsOtYVxuICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgICAgY29uc3QgeyBoYXNBY3Rpb25GaWxlcyB9ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBoYXNBY3Rpb25GaWxlcyB8fCBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICAgIGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb2xvIGVqZWN1dGFyIGhhbmRsZUFjY2Vzc0NsaWVudCwgZWwgYWdlbnRlIHNlIGFncmVnYXLDoSB5IGVsIHRvZ2dsZSBzZSBoYXLDoSBlbiBzdWNjZXNzVXBkYXRlQWNjZXNzXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgZmF2b3JpdGUgaWYgaXQgd2FzIG1hcmtlZCBkdXJpbmcgY3JlYXRpb25cbiAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgIC8vIFByaW1lcm8gYWdyZWdhciBlbCBhZ2VudGUgYSBsYSBsaXN0YSAoYWRkQWdlbnQgeWEgb3JkZW5hKVxuICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcblxuICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAvLyBFbnRvbmNlcyBjdXJyZW50SXNGYXZvcml0ZSBkZWJlIHNlciBmYWxzZSBwYXJhIHF1ZSBlbCB0b2dnbGUgbG8gbWFycXVlIGNvbW8gdHJ1ZVxuICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgIC8vIEx1ZWdvIGhhY2VyIGVsIHRvZ2dsZSBkZSBmYXZvcml0byBlbiBlbCBzZXJ2aWRvciB5IGFjdHVhbGl6YXIgZWwgZXN0YWRvXG4gICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHsgb3B0aW9uOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgPyAnYWRkJyA6ICdyZW1vdmUnIH0pXG4gICAgICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgICAgc2VsZWN0QWdlbnQoeyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSB9KVxuICAgICAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHsgb3B0aW9uOiAnYWRkJyB9KVxuICAgICAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgICAgIHNlbGVjdEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgaXNMb2FkaW5nQ3JlYXRlLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgYWRkQWdlbnQsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVDbG9zZSxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NVcGRhdGUpIHtcbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICBjb25zdCBmaWxlc1RvRGVsZXRlID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGVdXG4gICAgICAgICAgY29uc3QgZmlsZXNUb1VwbG9hZCA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBbXVxuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgaGFuZGxlRGVsZXRlQW5kQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICAgIGZpbGVzVG9EZWxldGUsXG4gICAgICAgICAgICAgIGZpbGVzVG9DcmVhdGU6IGZpbGVzVG9VcGxvYWQsXG4gICAgICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICAgICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCkge1xuICAgICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICBjb25zdCBmaWxlc1RvRGVsZXRlID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGVdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzVG9EZWxldGUsXG4gICAgICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICAgICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKCkpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgY29uc3QgZmlsZXNUb1VwbG9hZCA9IFsuLi5hY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkXVxuICAgICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQgPSBbXVxuXG4gICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyh7XG4gICAgICAgICAgICAgIGZpbGVzOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgICAgICAgICBhZ2VudElkOiBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLihoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgICAgICAgICAgID8gW2hhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXVxuICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAvLyBTb2xvIHJlc2V0ZWFyIGVsIGNvbnRleHRvIHNpIE5PIHNlIGhhIGxsYW1hZG8gdG9kYXbDrWEgeSBOTyBoYXkgYXJjaGl2b3MgcGVuZGllbnRlc1xuICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkICYmICFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiB0cnVlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIC8vIExsYW1hciBhIGhhbmRsZUFjY2Vzc0NsaWVudCBzb2xvIHVuYSB2ZXpcbiAgICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgICAgICBoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KVxuICAgICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBTb2xvIGNlcnJhciBzaSBubyBoYXkgYXJjaGl2b3Mgc2llbmRvIHByb2Nlc2Fkb3MgbmkgYWNjZXNzIHBlbmRpZW50ZVxuICAgICAgaWYgKFxuICAgICAgICAhaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgJiZcbiAgICAgICAgIWlzU2hvd1Byb2Nlc3NGaWxlcyAmJlxuICAgICAgICAhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGggJiZcbiAgICAgICAgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgICAhc3VjY2Vzc1VwZGF0ZUFjY2VzcyAmJlxuICAgICAgICAhcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IHN1Y2Nlc3NVcGRhdGUuaWQpIHtcbiAgICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKSlcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHN1Y2Nlc3NVcGRhdGUsXG4gICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVByb2Nlc3NGaWxlc1RpbWVvdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJiAhaXNTaG93UHJvY2Vzc0ZpbGVzKSByZXR1cm5cblxuICAgIC8vIEFsIGN1bXBsaXJzZSBlbCB0aW1lb3V0IGFzdW1pbW9zIHF1ZSBlbCBndWFyZGFkbyBkZWwgYWdlbnRlIGZ1ZSBleGl0b3NvXG4gICAgLy8gKGVsIHNlcnZlciByZXNwb25kacOzIE9LKSB5IHF1ZSBsb3MgYXJjaGl2b3Mgc2UgZW52aWFyb24gY29ycmVjdGFtZW50ZS5cbiAgICAvLyBTb2xvIHBlcmRpbW9zIGxhIGNvbmZpcm1hY2nDs24gYXNpbmNyw7NuaWNhIGRlbCBXZWJTb2NrZXQgc29icmUgc3VcbiAgICAvLyBwcm9jZXNhbWllbnRvLiBDZXJyYW1vcyB0b2RvIG1vc3RyYW5kbyBlbCBzbmFja2JhciBkZSDDqXhpdG8gcXVlIGh1Ymllc2VcbiAgICAvLyBkaXNwYXJhZG8gZWwgZmx1am8gbm9ybWFsIGRlIMOpeGl0by5cblxuICAgIC8vIEZyZW5vIHBhcmEgcXVlIGxvcyB1c2VFZmZlY3QgZGUgcG9zdC1ndWFyZGFkbyBubyByZS1kaXNwYXJlbiBzbmFja2JhcnNcbiAgICAvLyBvIGNpZXJyZXMgZHVwbGljYWRvcyBjdWFuZG8gc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKSBsb3MgZ2F0aWxsZS5cbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gdHJ1ZVxuXG4gICAgaWYgKG1vZGFsVmFsdWVzLmlzRWRpdGluZyAmJiBzdWNjZXNzVXBkYXRlKSB7XG4gICAgICB1cGRhdGVBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzdWNjZXNzVXBkYXRlKVxuICAgICAgfVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgfSBlbHNlIGlmICghbW9kYWxWYWx1ZXMuaXNFZGl0aW5nICYmIHN1Y2Nlc3NDcmVhdGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgIH1cblxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUoKVxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcblxuICAgIGhhbmRsZUNsb3NlKClcbiAgfSwgW1xuICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcsXG4gICAgc3VjY2Vzc1VwZGF0ZSxcbiAgICBzdWNjZXNzQ3JlYXRlLFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGUsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc1NhdmUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICBjb25zdCB3ZWJTb2NrZXRGdW5jdGlvbiA9ICh7IG1vZGVsX2RhdGE6IG1vZGVsRGF0YSB9OiB7IG1vZGVsX2RhdGE6IGFueSB9KSA9PiB7XG4gICAgY29uc3QgZmlsZVN0YXR1cyA9IG1vZGVsRGF0YVxuICAgIGlmIChmaWxlU3RhdHVzLnN0YXR1cyA9PT0gJ2RvbmUnIHx8IGZpbGVTdGF0dXMuc3RhdHVzID09PSAnZmFpbGVkJykge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRLbm93bGVkZ2UgPSBwcmV2Lmtub3dsZWRnZS5tYXAoZmlsZSA9PiB7XG4gICAgICAgICAgaWYgKGZpbGUubmFtZSA9PT0gZmlsZVN0YXR1cy5maWxlbmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgICAgc3RhdHVzOiBmaWxlU3RhdHVzLnN0YXR1cyxcbiAgICAgICAgICAgICAgaWQ6IGZpbGVTdGF0dXMua25vd2xlZGdlX2Jhc2VfaWQgfHwgZmlsZS5pZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZpbGVcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgaGFzUGVuZGluZ0ZpbGVzID0gdXBkYXRlZEtub3dsZWRnZS5zb21lKGZpbGUgPT4gZmlsZS5zdGF0dXMgPT09ICdwZW5kaW5nJylcbiAgICAgICAgY29uc3QgaGFzRXJyb3JGaWxlcyA9IHVwZGF0ZWRLbm93bGVkZ2Uuc29tZShmaWxlID0+IGZpbGUuc3RhdHVzID09PSAnZmFpbGVkJylcbiAgICAgICAgaWYgKGhhc0Vycm9yRmlsZXMgJiYgIWhhc1BlbmRpbmdGaWxlcykge1xuICAgICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihcbiAgICAgICAgICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWRXaXRoRmlsZXNFcnJvcicpIDogdCgnY29uZmlybUFnZW50V2l0aEZpbGVzRXJyb3InKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIGlmICghaGFzUGVuZGluZ0ZpbGVzICYmICFoYXNFcnJvckZpbGVzKSB7XG4gICAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcblxuICAgICAgICAgIC8vIFNpIGhhYsOtYSBhY2Nlc3MgcGVuZGllbnRlIHkgeWEgZXN0YWJhIG1hbmVqYWRvLCBmb3J6YXIgcXVlIGVsIHVzZUVmZmVjdCBkZSBhY2Nlc3Mgc2UgZWplY3V0ZSBkZSBudWV2b1xuICAgICAgICAgIGlmIChhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiYgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRGaWxlc1Byb2Nlc3NlZChwcmV2Q291bnQgPT4gcHJldkNvdW50ICsgMSlcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICAgICAgICAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICAgICAgICAhZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTaSBlcyBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWQsIG1hcmNhciBxdWUgbG9zIGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICAgICAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgIHNldEZpbGVzUHJvY2Vzc2VkKHByZXZDb3VudCA9PiBwcmV2Q291bnQgKyAxKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAga25vd2xlZGdlOiB1cGRhdGVkS25vd2xlZGdlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUgJiYgIWlzTG9hZGluZ0tub3dsZWRnZSAmJiAhZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIE5PIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvc1xuICAgICAgaWYgKGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50IHx8IGlzU2hvd1Byb2Nlc3NGaWxlcyB8fCBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8vIFNpIGVsIGxvYWRlciBzZSBjZXJyw7MgcG9yIHRpbWVvdXQsIG5vIG1vc3RyYXIgc25hY2tiYXIgZGUgw6l4aXRvIG5pIGNlcnJhclxuICAgICAgaWYgKHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gICAgaWYgKGVycm9yS25vd2xlZGdlKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKFxuICAgICAgICBtb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdjb25maXJtQWdlbnRVcGRhdGVkV2l0aEZpbGVzRXJyb3InKSA6IHQoJ2NvbmZpcm1BZ2VudFdpdGhGaWxlc0Vycm9yJylcbiAgICAgIClcbiAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgfVxuICB9LCBbc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSwgaXNMb2FkaW5nS25vd2xlZGdlLCBlcnJvcktub3dsZWRnZSwgaXNTaG93UHJvY2Vzc0ZpbGVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNpIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcywgZXNwZXJhciBhIHF1ZSB0ZXJtaW5lblxuICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmIChoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCB8fCBpc1Nob3dQcm9jZXNzRmlsZXMpKSB7XG4gICAgICAvLyBTaSBzdWNjZXNzVXBkYXRlQWNjZXNzIGVzdMOhIGFjdGl2bywgbWFyY2FyIGNvbW8gbWFuZWphZG8gcGVybyBOTyByZXNldGVhciBoYXN0YSBxdWUgdGVybWluZW4gbG9zIGFyY2hpdm9zXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2VzcyAmJiAhYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNpIHlhIGZ1ZSBtYW5lamFkbyB5IG5vIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzLCBlamVjdXRhciBlbCBjaWVycmVcbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ICYmIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG5cbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgLy8gU2kgaGF5IGFyY2hpdm9zLCBlbCBhZ2VudGUgeWEgZnVlIGFncmVnYWRvIHkgZWwgdG9nZ2xlIHlhIHNlIGhpem8gZW4gc3VjY2Vzc0NyZWF0ZVxuICAgICAgLy8gU29sbyBuZWNlc2l0YW1vcyBjZXJyYXIgZWwgbW9kYWxcbiAgICAgIGlmIChjb250ZXh0Lmhhc0FjdGlvbkZpbGVzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGVsIGFnZW50ZSBmdWUgY3JlYWRvIGNvbiBmYXZvcml0bywgbmVjZXNpdGFtb3Mgb3JkZW5hciBkZXNwdcOpcyBkZSBhZ3JlZ2FybG9cbiAgICAgIGNvbnN0IGFnZW50VG9BZGQgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlID8geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9IDogc3VjY2Vzc0NyZWF0ZVxuXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgYWRkQWdlbnQoYWdlbnRUb0FkZClcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50VG9BZGQpXG5cbiAgICAgIC8vIFNpIHRpZW5lIGZhdm9yaXRvLCBoYWNlciB0b2dnbGUgeSBhY3R1YWxpemFyIGVzdGFkbyBhbnRlcyBkZSBjZXJyYXJcbiAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFRvQWRkLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50KFxuICAgICAgICAgIHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBhZ2VudEZvclRvZ2dsZSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAvLyBDZXJyYXIgZGVzcHXDqXMgZGUgcXVlIGVsIHRvZ2dsZSBjb21wbGV0ZSB5IGFjdHVhbGljZSBlbCBlc3RhZG9cbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAndXBkYXRlJykge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICB9XG4gICAgICByZXNldFN1Y2Nlc3NVcGRhdGUoKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cblxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NVcGRhdGVBY2Nlc3MsIGZpbGVzUHJvY2Vzc2VkXSlcblxuICAvLyB1c2VFZmZlY3QgcGFyYSBtYW5lamFyIGVsIGNpZXJyZSBkZWwgbW9kYWwgY3VhbmRvIHRlcm1pbmFuIGxvcyBhcmNoaXZvcyBlbiBjcmVhY2nDs24gc2luIGFjY2VzaWJpbGlkYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50XG5cbiAgICAvLyBTb2xvIHByb2Nlc2FyIHNpOlxuICAgIC8vIC0gRXMgdW5hIG9wZXJhY2nDs24gZGUgY3JlYWNpw7NuXG4gICAgLy8gLSBObyBoYXkgYWNjZXNpYmlsaWRhZCBwZW5kaWVudGVcbiAgICAvLyAtIExvcyBhcmNoaXZvcyB0ZXJtaW5hcm9uIGRlIHByb2Nlc2Fyc2VcbiAgICAvLyAtIEVsIGFnZW50ZSBmdWUgY3JlYWRvIGV4aXRvc2FtZW50ZVxuICAgIC8vIC0gQcO6biBubyBzZSBoYSBjZXJyYWRvIGVsIG1vZGFsXG4gICAgaWYgKFxuICAgICAgY29udGV4dC5vcGVyYXRpb25UeXBlID09PSAnY3JlYXRlJyAmJlxuICAgICAgIWNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCAmJlxuICAgICAgc3VjY2Vzc0NyZWF0ZSAmJlxuICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIGZpbGVzRmluaXNoZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFtYmnDqW4gbWFuZWphciBlbCBjYXNvIGN1YW5kbyBoYXkgYWNjZXNpYmlsaWRhZCB5IGFyY2hpdm9zIHRlcm1pbmFyb25cbiAgICBpZiAoXG4gICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICBjb250ZXh0Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgJiZcbiAgICAgIHN1Y2Nlc3NDcmVhdGUgJiZcbiAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgIWlzU2hvd1Byb2Nlc3NGaWxlc1xuICAgICkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICBpZiAoc3VjY2Vzc1VwZGF0ZUFjY2Vzcykge1xuICAgICAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGZpbGVzUHJvY2Vzc2VkLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgc3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBpc1Nob3dQcm9jZXNzRmlsZXMsXG4gICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzLFxuICAgIHQsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcyxcbiAgICBoYW5kbGVDbG9zZSxcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Nob3dQcm9jZXNzRmlsZXMpIHtcbiAgICAgIGNvbnN0IGNoYW5uZWwgPSBga25vd2xlZGdlLWJhc2Uuc3RhdHVzOiR7YWdlbnRCeUlkID8gYWdlbnRCeUlkPy5pZCA6IHN1Y2Nlc3NDcmVhdGU/LmlkPy50b1N0cmluZygpfWBcbiAgICAgIGlmICgkX3NjKSB7XG4gICAgICAgIGlmIChpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgICAkX3NjPy5zdWJzY3JpYmVIYW5kbGVyKGNoYW5uZWwsIHdlYlNvY2tldEZ1bmN0aW9uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG1vZGVsRGF0YSA9IHtcbiAgICAgICAgICAgIG1vZGVsX2hhc2g6IGNoYW5uZWwsXG4gICAgICAgICAgICBhY3Rpb246ICRfc2M/LmFjdGlvblR5cGU/LlNVQlNDUklCRSxcbiAgICAgICAgICB9XG4gICAgICAgICAgJF9zYz8udXBkYXRlQ29ubmVjdGlvbk1vZGVsKG1vZGVsRGF0YSwgY2hhbm5lbCwgdXNlciwgdXNlciwgJF9zYy5jaGFubmVsVHlwZT8uTU9ERUxfQ0hBTk5FTClcbiAgICAgICAgICBzZXRJc1N1YnNjcmliZWQodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzU2hvd1Byb2Nlc3NGaWxlcywgaXNTdWJzY3JpYmVkLCAkX3NjLCBhZ2VudEJ5SWQsIHN1Y2Nlc3NDcmVhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4gfHwgIWFnZW50TW9kZWxzLmxlbmd0aCkgcmV0dXJuXG4gICAgaWYgKGFnZW50TG9hZGluZyAmJiAhcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIGNvbnN0IGFwcGx5RWRpdGluZ0FnZW50ID0gKHNvdXJjZTogYW55KSA9PiB7XG4gICAgICBpZiAoc291cmNlLnR5cGUgIT09ICdjdXN0b20nIHx8ICF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWNjZXNzRGVuaWVkJykpXG4gICAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBhZ2VudFZhbHVlc1RvU2V0ID0gYnVpbGRFZGl0aW5nTW9kYWxWYWx1ZXNGcm9tQWdlbnREZXRhaWwoc291cmNlLCBhZ2VudE1vZGVscywgcHJldilcbiAgICAgICAgZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQgPSBhZ2VudFZhbHVlc1RvU2V0XG4gICAgICAgIHJldHVybiBhZ2VudFZhbHVlc1RvU2V0XG4gICAgICB9KVxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgaWYgKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldFNlY3Rpb24ocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpXG4gICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmZXRjaGVkID0gcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50XG4gICAgaWYgKHByZWZldGNoZWQpIHtcbiAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFwcGx5RWRpdGluZ0FnZW50KHByZWZldGNoZWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWdlbnRCeUlkICYmICFhZ2VudExvYWRpbmcgJiYgYWdlbnRNb2RlbHMubGVuZ3RoKSB7XG4gICAgICBhcHBseUVkaXRpbmdBZ2VudChhZ2VudEJ5SWQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWlzTG9hZGluZyAmJiAhYWdlbnRMb2FkaW5nICYmICFhZ2VudEJ5SWQgJiYgIW1vZGFsVmFsdWVzLmlzRWRpdGluZykge1xuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGFpTW9kZWw6IGFnZW50TW9kZWxzWzBdLFxuICAgICAgICB9LFxuICAgICAgfSkpXG4gICAgfVxuICB9LCBbYWdlbnRCeUlkLCBpc09wZW4sIGlzTG9hZGluZywgYWdlbnRMb2FkaW5nLCBhZ2VudE1vZGVscz8ubGVuZ3RoLCBtb2RhbFZhbHVlcy5pc0VkaXRpbmcsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVycm9yR2V0QWdlbnRCeUlkKSB7XG4gICAgICBpZiAoZXJyb3JHZXRBZ2VudEJ5SWQgPT09IFwiQWNjZXNzIGRlbmllZDogWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBhZ2VudFwiKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoZXJyb3JHZXRBZ2VudEJ5SWQpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgfSwgMzAwMClcbiAgICB9XG4gIH0sIFtlcnJvckdldEFnZW50QnlJZF0pXG5cbiAgY29uc3Qgc2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFtb2RhbFZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50cyB8fCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY2xpZW50cy5zb21lKGNsaWVudCA9PiBjbGllbnQuaXNfYWN0aXZlID09PSBmYWxzZSB8fCBjbGllbnQuaXNfZGVsZXRlZCA9PT0gdHJ1ZSlcbiAgfSwgW21vZGFsVmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jbGllbnRzXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZSA9ICgpID0+IHtcbiAgICBpZiAobW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlkKSB7XG4gICAgICAvLyBFeGlzdGluZyBhZ2VudFxuICAgICAgdG9nZ2xlRmF2b3JpdGUoXG4gICAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQsXG4gICAgICAgIHVwZGF0ZWRBZ2VudCA9PiB7XG4gICAgICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgICAgICBpc19mYXZvcml0ZTogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAvLyBBY3R1YWxpemFyIGVsIGVzdGFkbyBkZSBhZ2VudGVzIHkgb3JkZW5hciBjdWFuZG8gc2UgaGFjZSBkZXNkZSBlbCBtb2RhbCBBQk1cbiAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlKHVwZGF0ZWRBZ2VudCwgdHJ1ZSlcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0RmF2b3JpdGUsIHtcbiAgICAgICAgICAgIG9wdGlvbjogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlID8gJ2FkZCcgOiAncmVtb3ZlJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIG1vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgbmV3IGFnZW50XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgaXNfZmF2b3JpdGU6ICFwcmV2LmdlbmVyYWwuaXNfZmF2b3JpdGUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbiB8fCAoIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlICYmICF1c2VyUGVybWlzc2lvbnM/LmVkaXQgJiYgIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKFxuICAgIDxCYWNrZHJvcCB6SW5kZXg9e2FibUFnZW50TW9kYWxaSW5kZXh9IG9uQ2xpY2s9e2hhbmRsZUJhY2tkcm9wQ2xpY2t9PlxuICAgICAgPFNDQUFNV3JhcHBlciByZWY9e21vZGFsUmVmfSB0YWJJbmRleD17LTF9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgICAgICA8U3Bpbm5lckxvdHRpZSBzaXplPVwiODBweFwiIGNvbG9yPVwicHJpbWFyeVwiIC8+XG4gICAgICAgICAgICA8L1NDQUFNV3JhcHBlclNwaW5uZXJDb250ZW50PlxuICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lcj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAge2lzU2hvd1Byb2Nlc3NGaWxlcyAmJiBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA/IChcbiAgICAgICAgICAgICAgPEFibUxvYWRlckZpbGVzXG4gICAgICAgICAgICAgICAgYXR0YWNobWVudHM9e21vZGFsVmFsdWVzLmtub3dsZWRnZX1cbiAgICAgICAgICAgICAgICBsYWJlbD17dChgcHJvY2Vzc2luZ0tub3dsZWRnZS4ke21vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdkZXNjcmlwdGlvblVwZGF0ZScgOiAnZGVzY3JpcHRpb25DcmVhdGUnfWApfVxuICAgICAgICAgICAgICAgIG9uVGltZW91dD17aGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnZ2VuZXJhbFNlY3Rpb24ucmVtb3ZlRmF2b3JpdGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2dlbmVyYWxTZWN0aW9uLmFkZEZhdm9yaXRlJylcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJGYXZvcml0ZSBvbkNsaWNrPXtoYW5kbGVUb2dnbGVGYXZvcml0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MjB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MjB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnI0ZGQzYyNCcgOiAnI2E2YTZhNid9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICdub25lJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXttb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGUgPyAnJyA6ICdzdGFyLWZhdm9yaXRlLWljb24nfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyRmF2b3JpdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNSGVhZGVyVGl0bGU+e21vZGFsVmFsdWVzPy5pc0VkaXRpbmcgPyB0KCdlZGl0QWdlbnQnKSA6IHQoJ25ld0FnZW50Jyl9PC9TQ0FBTUhlYWRlclRpdGxlPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckxlZnQ+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJDbG9zZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNhbmNlbE1vZGFsKVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzTG9hZGluZyB8fCBpc0xvYWRpbmdLbm93bGVkZ2UgfHwgaXNMb2FkaW5nQ3JlYXRlIHx8IGlzTG9hZGluZ1VwZGF0ZUFjY2Vzc31cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxTQ0FBTUNvbnRlbnQgaGFzU2Nyb2xsPXtzZWN0aW9uICE9PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFyPlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnZ2VuZXJhbCd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2dlbmVyYWwnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1nZW5lcmFsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdnZW5lcmFsJyA/ICdyZ2JhKDYzLCA2MywgNjMsIDEpJyA6ICdyZ2JhKDE2NiwgMTY2LCAxNjYsIDEpJ31gfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtVGl0bGUgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgnZ2VuZXJhbFNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17MX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdrbm93bGVkZ2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1hZ2VudC1tb2RhbC1rbm93bGVkZ2VcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEJyYWluSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2Ake3NlY3Rpb24gPT09ICdrbm93bGVkZ2UnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24udGl0bGUnKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1UaXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuXG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdhY2Nlc3NpYmlsaXR5J31cbiAgICAgICAgICAgICAgICAgICAgICAkaW5kZXg9ezJ9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VjdGlvbkNoYW5nZSgnYWNjZXNzaWJpbGl0eScpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWFjY2Vzc2liaWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPEFjY2Vzc2liaWxpdHlJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2FjY2Vzc2liaWxpdHknID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2FjY2Vzc2liaWxpdHknfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi50aXRsZVRhYicpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgIHtzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNsaWVudHNFcnJvcicpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbUVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBbGVydCBjb2xvcj1cIiNDNzA1MDVcIiB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtRXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXI+XG4gICAgICAgICAgICAgICAgICB7U2VjdGlvbkJ5S2V5W3NlY3Rpb25dKHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBtb2RhbFZhbHVlcyxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6IGhhbmRsZVNldEFnZW50VmFsdWVzQnlLZXlzLFxuICAgICAgICAgICAgICAgICAgICBhZ2VudE1vZGVscyxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nS25vd2xlZGdlOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbmV3S25vd2xlZGdlOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVFeGlzdGluZ0tub3dsZWRnZTogKCkgPT4ge30sXG4gICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlTmV3S25vd2xlZGdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25GaWxlRXJyb3JDaGFuZ2U6IHNldEhhc0ZpbGVFcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXgsXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L1NDQUFNQ29udGVudD5cbiAgICAgICAgICAgICAgICA8U0NBQU1Gb290ZXIgaXNFZGl0aW5nPXshIW1vZGFsVmFsdWVzPy5pc0VkaXRpbmcgJiYgISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZX0+XG4gICAgICAgICAgICAgICAgICB7ISFtb2RhbFZhbHVlcz8uaXNFZGl0aW5nICYmXG4gICAgICAgICAgICAgICAgICAgICEhdXNlclBlcm1pc3Npb25zPy5kZWxldGUgJiZcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTURlbGV0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDVUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuV2l0aEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dNb2RhbERlbGV0ZSh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nIHx8IGlzTG9hZGluZ0tub3dsZWRnZSB8fCBpc0xvYWRpbmdDcmVhdGUgfHwgaXNMb2FkaW5nVXBkYXRlQWNjZXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8V3JhcHBlckNlbnRlckljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRyYXNoIGNvbG9yPVwiIzA4Y1wiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnZGVsZXRlQWdlbnQnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9XcmFwcGVyQ2VudGVySWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTURlbGV0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICcyNHB4JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2F2ZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgIXZhbGlkYXRlRmllbGRWYWx1ZXMobW9kYWxWYWx1ZXMpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nS25vd2xlZGdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdDcmVhdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWxlRXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uKG51bGwsICdjcmVhdGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIXZhbGlkYXRlRmllbGRWYWx1ZXMobW9kYWxWYWx1ZXMpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nS25vd2xlZGdlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NyZWF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzYWJsZVNhdmVGb3JDbGllbnRzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZpbGVFcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnc2F2ZUNoYW5nZXMnKSA6IHQoJ2NyZWF0ZUFnZW50TGFiZWxCdXR0b24nKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2F2ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvU0NBQU1Gb290ZXI+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NBQU1XcmFwcGVyPlxuICAgICAge3Nob3dNb2RhbERlbGV0ZSAmJiAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01vZGFsRGVsZXRlKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogKHByb3BzOiBhbnkpID0+IGhhbmRsZUNvbmZpcm1BY3Rpb24ocHJvcHMsICdkZWxldGUnKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e3sgdGl0bGU6IG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZSwgaWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQgfX1cbiAgICAgICAgICBhY3Rpb249XCJhZ2VudFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvQmFja2Ryb3A+LFxuICAgIHNlbGVjdG9yXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLFFBQVEsT0FBTztBQUN6RSxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUU5QyxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLFFBQVEsUUFBUSwyQ0FBMkM7QUFDcEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxhQUFhLFFBQVEsdURBQXVEO0FBQ3JGLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsdUJBQXVCLFFBQVEsNEVBQTRFO0FBQ3BILFNBQVNDLFFBQVEsUUFBUSxzQkFBc0I7QUFDL0MsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyxpQkFBaUIsRUFBRUMsU0FBUyxRQUFRLG1CQUFtQjtBQUNoRSxTQUFTQyxhQUFhLFFBQVEsNENBQTRDO0FBRTFFLFNBQVNDLGVBQWUsUUFBUSw0Q0FBNEM7QUFFNUUsU0FBU0MsaUJBQWlCLEVBQUVDLG1CQUFtQixR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
|
|
1429
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsImNyZWF0ZVBvcnRhbCIsInVzZVRyYW5zbGF0aW9uIiwiQ1VCdXR0b24iLCJDYXRlZ29yeSIsIkFsZXJ0IiwiVHJhc2giLCJTdGFyIiwiQ3Jvc3MiLCJTcGlubmVyTG90dGllIiwiVG9vbHRpcCIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiQmFja2Ryb3AiLCJ1c2VVc2VyIiwiQWNjZXNzaWJpbGl0eUljb24iLCJCcmFpbkljb24iLCJ1c2VBZ2VudE1vZGVsIiwidXNlR2V0QWdlbnRCeUlkIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJBYm1Lbm93bGVkZ2VTZWN0aW9uIiwiU0NBQU1Db250ZW50IiwiU0NBQU1Gb290ZXIiLCJTQ0FBTUhlYWRlciIsIlNDQUFNSGVhZGVyVGl0bGUiLCJTQ0FBTUhlYWRlckxlZnQiLCJTQ0FBTUhlYWRlckZhdm9yaXRlIiwiU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbiIsIlNDQUFNU2lkZWJhciIsIlNDQUFNV3JhcHBlciIsIlNDQUFNU2lkZWJhckl0ZW0iLCJTQ0FBTVNpZGViYXJJdGVtVGl0bGUiLCJTQ0FBTURlbGV0ZUJ1dHRvbiIsIlNDQUFNU2F2ZUJ1dHRvbiIsIlNDQUFNV3JhcHBlclNwaW5uZXIiLCJTQ0FBTVdyYXBwZXJTcGlubmVyQ29udGVudCIsIlNDQUFNU2lkZWJhckl0ZW1FcnJvciIsInVzZUNyZWF0ZUFnZW50IiwidXNlRGVsZXRlQWdlbnQiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlVXBkYXRlQWdlbnQiLCJ1c2VLbm93bGVkZ2VPcGVyYXRpb25zIiwiQWJtTG9hZGVyRmlsZXMiLCJXcmFwcGVyQ2VudGVySWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VBY2Nlc3NDbGllbnQiLCJ1c2VUb2dnbGVGYXZvcml0ZSIsImRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsIkNPUl9UT09MX0dST1VQX1NMVUdTIiwiYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiaW5pdGlhbFZhbHVlcyIsIk9iamVjdCIsImZyZWV6ZSIsImlzRWRpdGluZyIsImtub3dsZWRnZSIsImdlbmVyYWwiLCJuYW1lIiwiZW1vamkiLCJpbnRyb2R1Y3Rpb24iLCJpbnB1dFBsYWNlaG9sZGVyIiwiaXNBY3RpdmUiLCJhaU1vZGVsIiwiaWQiLCJ1c2VyUHJvbXB0Iiwia25vd2xlZGdlQmFzZXMiLCJpc19mYXZvcml0ZSIsImFjY2Vzc2liaWxpdHkiLCJhY2Nlc3NUeXBlIiwiY2xpZW50cyIsImNvckFjY2VzcyIsIlNlY3Rpb25CeUtleSIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsInZhbGlkYXRlRmllbGRWYWx1ZXMiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbCIsImFnZW50QnlJZCIsImFnZW50TW9kZWxzIiwicHJldiIsIl9hZ2VudEJ5SWQka25vd2xlZGdlQiIsIl9hZ2VudEJ5SWQkY2xpZW50cyIsImFnZW50TW9kZWwiLCJmaW5kIiwibW9kZWwiLCJtb2RlbEFpSWQiLCJjcmVhdGVkX2J5IiwiY3JlYXRlZEJ5IiwibWFwIiwiayIsImZpbGUiLCJGaWxlIiwiZmlsZW5hbWUiLCJ0b1N0cmluZyIsInNpemUiLCJmaWxlX3NpemVfYnl0ZXMiLCJ0eXBlIiwib3JpZ2luYWxfZmlsZV90eXBlIiwic3RhdHVzIiwidXJsX29yaWdpbmFsIiwidW5kZWZpbmVkIiwidXJsX3RodW1ibmFpbCIsImFjY2VzcyIsImNsaWVudCIsIl9jbGllbnQkaWQiLCJfY2xpZW50JGlzX2FjdGl2ZSIsIl9jbGllbnQkaXNfZGVsZXRlZCIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJ0b29sR3JvdXBTbHVncyIsIkFibUFnZW50TW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWI0IiwiX21vZGFsVmFsdWVzJGdlbmVyYWwzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWw0IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw1IiwiX21vZGFsVmFsdWVzJGdlbmVyYWw2IiwiYWRkQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQiLCJjdXJyZW50U2VsZWN0ZWRBZ2VudCIsImFnZW50Iiwic2VsZWN0QWdlbnQiLCJhYm1BZ2VudE1vZGFsWkluZGV4IiwidG9vbHRpcFpJbmRleCIsIl91c2VUb2dnbGVGYXZvcml0ZSIsInRvZ2dsZUZhdm9yaXRlIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaXNTdWJzY3JpYmVkIiwic2V0SXNTdWJzY3JpYmVkIiwibW9kYWxSZWYiLCJoYXNQZW5kaW5nRmlsZXNSZWYiLCJhY3Rpb25zVG9GaWxlcyIsInRvRGVsZXRlIiwidG9VcGxvYWQiLCJhY2Nlc3NVcGRhdGVDb250ZXh0IiwiaXNGcm9tQ3JlYXRpb24iLCJpc0Zyb21FZGl0aW5nIiwiaGFzQWN0aW9uRmlsZXMiLCJvcGVyYXRpb25UeXBlIiwiaGFzQmVlbkNhbGxlZCIsImFjY2Vzc0hhbmRsZWRSZWYiLCJhZ2VudENyZWF0ZWRSZWYiLCJwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYiLCJwcmVmZXRjaGVkQWdlbnRCeUlkUmVmIiwiZmlsZXNGaW5pc2hlZFJlZiIsInByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJmaWxlc1Byb2Nlc3NlZCIsInNldEZpbGVzUHJvY2Vzc2VkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNob3dNb2RhbERlbGV0ZSIsInNldFNob3dNb2RhbERlbGV0ZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2VjdGlvbiIsInNldFNlY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwibW9kYWxWYWx1ZXMiLCJzZXRNb2RhbFZhbHVlcyIsIl91c2VHZXRBZ2VudEJ5SWQiLCJhZ2VudExvYWRpbmciLCJsb2FkaW5nIiwiaGFuZGxlR2V0QWdlbnRCeUlkIiwiaGFuZGxlQ2xlYW5BZ2VudCIsImVycm9yR2V0QWdlbnRCeUlkIiwiZXJyb3IiLCJfdXNlQWdlbnRNb2RlbCIsImdldEFsbEFnZW50TW9kZWxzIiwiZmlyc3RWYWx1ZUFnZW50IiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzU2hvd1Byb2Nlc3NGaWxlcyIsInNldElzU2hvd1Byb2Nlc3NGaWxlcyIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJoYXNGaWxlRXJyb3JzIiwic2V0SGFzRmlsZUVycm9ycyIsInVzZXJQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiX3VzZURlbGV0ZUFnZW50IiwiaGFuZGxlRGVsZXRlQWdlbnQiLCJzdWNjZXNzRGVsZXRlIiwic3VjY2VzcyIsInJlc2V0U3VjY2VzcyIsIl91c2VVcGRhdGVBZ2VudCIsImhhbmRsZVVwZGF0ZUFnZW50Iiwic3VjY2Vzc1VwZGF0ZSIsInJlc2V0U3VjY2Vzc1VwZGF0ZSIsIl91c2VDcmVhdGVBZ2VudCIsImhhbmRsZUNyZWF0ZUFnZW50IiwiaXNMb2FkaW5nQ3JlYXRlIiwic3VjY2Vzc0NyZWF0ZSIsInJlc2V0U3VjY2Vzc0NyZWF0ZSIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZUtub3dsZWRnZU9wZXJhdGlvIiwiaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyIsImhhbmRsZURlbGV0ZUtub3dsZWRnZXMiLCJoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzIiwiaXNMb2FkaW5nS25vd2xlZGdlIiwiZXJyb3JLbm93bGVkZ2UiLCJzdWNjZXNzS25vd2xlZGdlRGVsZXRlIiwiaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSIsImhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSIsIl91c2VBY2Nlc3NDbGllbnQiLCJoYW5kbGVBY2Nlc3NDbGllbnQiLCJzdWNjZXNzVXBkYXRlQWNjZXNzIiwiaXNMb2FkaW5nVXBkYXRlQWNjZXNzIiwicmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzIiwiaGFuZGxlUmVzZXRTdWNjZXNzIiwiYXJlQ2xpZW50c0FycmF5c0VxdWFsIiwiY2xpZW50czEiLCJjbGllbnRzMiIsImxlbmd0aCIsImNsaWVudHMxSWRzIiwiYyIsImNsaWVudElkIiwic29ydCIsImNsaWVudHMySWRzIiwiZXZlcnkiLCJpbmRleCIsImhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyMiIsImN1cnJlbnQiLCJhY2Nlc3NUeXBlU2FtZSIsImNsaWVudHNTYW1lIiwiY3VycmVudENvckFjY2VzcyIsImluaXRpYWxDb3JBY2Nlc3MiLCJjb3JBY2Nlc3NTYW1lIiwic2x1ZyIsInZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUiLCJfZmlyc3RWYWx1ZUFnZW50JGN1cnIzIiwiX21vZGFsVmFsdWVzJGdlbmVyYWwkIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNCIsIl9tb2RhbFZhbHVlcyRrbm93bGVkZyIsIl9maXJzdFZhbHVlQWdlbnQkY3VycjUiLCJfbW9kYWxWYWx1ZXMka25vd2xlZGcyIiwiX2ZpcnN0VmFsdWVBZ2VudCRjdXJyNiIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZSIsIl9hY3Rpb25zVG9GaWxlcyRjdXJyZTIiLCJ0b1VwZGF0ZSIsImhhc0FueVZhbHVlRm9yQ3JlYXRpb24iLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCQyIiwiX2FnZW50TW9kZWxzJCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsJDMiLCJpc0RlZmF1bHRBaU1vZGVsIiwiZGVmYXVsdElucHV0UGxhY2Vob2xkZXIiLCJpc0RlZmF1bHRJbnB1dFBsYWNlaG9sZGVyIiwiZGVmYXVsdFVzZXJQcm9tcHRQbGFjZWhvbGRlciIsImlzRGVmYXVsdFVzZXJQcm9tcHQiLCJoYXNOYW1lIiwidHJpbSIsImhhc0Vtb2ppIiwiaGFzSW50cm9kdWN0aW9uIiwiaGFzSW5wdXRQbGFjZWhvbGRlciIsImhhc1VzZXJQcm9tcHQiLCJoYXNLbm93bGVkZ2UiLCJoYXNDdXN0b21BaU1vZGVsIiwiaGFzQWNjZXNzaWJpbGl0eSIsImhhc0NoYW5nZXNGb3JFZGl0aW5nIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50IiwiYWdlbnRJZCIsIm9uU3VjY2VzcyIsIm9uRXJyb3IiLCJ1cGRhdGVkQWdlbnQiLCJoYW5kbGVDbG9zZSIsImNvbmZpcm1NZXNzYWdlIiwid2luZG93IiwiY29uZmlybSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGVTZWN0aW9uQ2hhbmdlIiwibmV3U2VjdGlvbiIsInRhYlNlY3Rpb24iLCJvcHRpb24iLCJoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyIsIl9yZWYyIiwia2V5IiwidmFsdWUiLCJkZWxldGVLbm93bGVkZ2UiLCJfYWN0aW9uc1RvRmlsZXMkY3VycmUzIiwicHVzaCIsImFwcGx5IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmlsZXNQcmV2SWRzIiwiU2V0IiwibmV3RmlsZXMiLCJmaWx0ZXIiLCJoYXMiLCJ2YWx1ZUlkcyIsImNvbmNhdCIsImtub3dsZWRnZUZpbGVzIiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJjaGF0IiwiYWN0aW9uIiwiX21vZGFsVmFsdWVzJGFjY2Vzc2liMiIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiYWJydXB0IiwiY29uZmlybUFjdGlvbiIsImNvcl9zbHVncyIsImNvcl9hY2Nlc3MiLCJzdG9wIiwiX3giLCJfeDIiLCJhcmd1bWVudHMiLCJoYW5kbGVTZXRBZ2VudFZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMiLCJfYWdlbnRWYWx1ZXMkdmFsdWVzMyIsImFnZW50VmFsdWVzIiwiZGV0YWlsIiwiaW5pdGlhbFNlY3Rpb24iLCJpbmNsdWRlcyIsInZhbHVlcyIsIl9hZ2VudFZhbHVlcyR2YWx1ZXMyIiwicHJlZmV0Y2hlZEFnZW50QnlJZCIsIm5leHRWYWx1ZXMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9kb2N1bWVudCIsImJvZHkiLCJvcmlnaW5hbE92ZXJmbG93Iiwic3R5bGUiLCJvdmVyZmxvdyIsImhhbmRsZUJlZm9yZVVubG9hZCIsInByZXZlbnREZWZhdWx0IiwicmV0dXJuVmFsdWUiLCJwcm9taXNlcyIsImZpbGVzVG9EZWxldGUiLCJmaWxlc1RvQ3JlYXRlIiwiYWdlbnRXaXRoRmF2b3JpdGUiLCJhZ2VudEZvclRvZ2dsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYWxsIiwiZmlsZXMiLCJhaUNoYXRGYXZvcml0ZSIsImZpbGVzVG9VcGxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0Iiwid2ViU29ja2V0RnVuY3Rpb24iLCJfcmVmNCIsIm1vZGVsRGF0YSIsIm1vZGVsX2RhdGEiLCJmaWxlU3RhdHVzIiwidXBkYXRlZEtub3dsZWRnZSIsImtub3dsZWRnZV9iYXNlX2lkIiwiaGFzUGVuZGluZ0ZpbGVzIiwic29tZSIsImhhc0Vycm9yRmlsZXMiLCJwcmV2Q291bnQiLCJjb250ZXh0IiwiYWdlbnRUb0FkZCIsIl9zdWNjZXNzQ3JlYXRlJGlkIiwiY2hhbm5lbCIsIiRfc2MiLCJfJF9zYyIsInN1YnNjcmliZUhhbmRsZXIiLCJfJF9zYzIiLCJfJF9zYzMiLCJfJF9zYyRjaGFubmVsVHlwZSIsIm1vZGVsX2hhc2giLCJhY3Rpb25UeXBlIiwiU1VCU0NSSUJFIiwidXBkYXRlQ29ubmVjdGlvbk1vZGVsIiwiY2hhbm5lbFR5cGUiLCJNT0RFTF9DSEFOTkVMIiwiYXBwbHlFZGl0aW5nQWdlbnQiLCJzb3VyY2UiLCJzZXRUaW1lb3V0IiwiYWdlbnRWYWx1ZXNUb1NldCIsInByZWZldGNoZWQiLCJzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMiLCJfbW9kYWxWYWx1ZXMkYWNjZXNzaWIzIiwiaGFuZGxlVG9nZ2xlRmF2b3JpdGUiLCJfbW9kYWxWYWx1ZXMkZ2VuZXJhbCIsIl9tb2RhbFZhbHVlcyRnZW5lcmFsMiIsImNyZWF0ZSIsImVkaXQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJyZWYiLCJ0YWJJbmRleCIsImNvbG9yIiwiYXR0YWNobWVudHMiLCJsYWJlbCIsIm9uVGltZW91dCIsInRpdGxlIiwid2lkdGgiLCJoZWlnaHQiLCJmaWxsIiwidmFyaWFudCIsImNsYXNzTmFtZSIsImNhbmNlbE1vZGFsIiwiZGlzYWJsZWQiLCJoYXNTY3JvbGwiLCIkaW5kZXgiLCJleGlzdGluZ0tub3dsZWRnZSIsIm5ld0tub3dsZWRnZSIsIm9uUmVtb3ZlRXhpc3RpbmdLbm93bGVkZ2UiLCJvblJlbW92ZU5ld0tub3dsZWRnZSIsIm9uRmlsZUVycm9yQ2hhbmdlIiwiY2hpbGRyZW5XaXRoSWNvbiIsImRpc3BsYXkiLCJnYXAiLCJpc0Rpc2FibGVkIiwib25DbG9zZSIsImhhbmRsZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYWxlcnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1jeWNsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcblxuaW1wb3J0IHsgQ1VCdXR0b24gfSBmcm9tICdAcHJvamVjdGNvci9idXR0b24vbGliL2NvbXBvbmVudHMvQ1VCdXR0b24nXG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NhdGVnb3J5J1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BbGVydCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5pbXBvcnQgeyBTdGFyIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU3RhcidcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBTcGlubmVyTG90dGllIH0gZnJvbSAnQHByb2plY3Rjb3IvY29yLWNvbW1vbnMvbGliL2NvbXBvbmVudHMvc3Bpbm5lci1sb3R0aWUnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uJ1xuaW1wb3J0IHsgQmFja2Ryb3AgfSBmcm9tICcuLi8uLi9hdG9tcy9CYWNrZHJvcCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUljb24sIEJyYWluSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgdXNlQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFnZW50TW9kZWwvdXNlQWdlbnRNb2RlbCdcbmltcG9ydCB7IEFnZW50LCBBZ2VudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VHZXRBZ2VudEJ5SWQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudEJ5SWQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBBYm1HZW5lcmFsU2VjdGlvbiwgQWJtS25vd2xlZGdlU2VjdGlvbiB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uJ1xuaW1wb3J0IHsgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHtcbiAgU0NBQU1Db250ZW50LFxuICBTQ0FBTUZvb3RlcixcbiAgU0NBQU1IZWFkZXIsXG4gIFNDQUFNSGVhZGVyVGl0bGUsXG4gIFNDQUFNSGVhZGVyTGVmdCxcbiAgU0NBQU1IZWFkZXJGYXZvcml0ZSxcbiAgU0NBQU1IZWFkZXJDbG9zZUJ1dHRvbixcbiAgU0NBQU1TaWRlYmFyLFxuICBTQ0FBTVdyYXBwZXIsXG4gIFNDQUFNU2lkZWJhckl0ZW0sXG4gIFNDQUFNU2lkZWJhckl0ZW1UaXRsZSxcbiAgU0NBQU1EZWxldGVCdXR0b24sXG4gIFNDQUFNU2F2ZUJ1dHRvbixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lcixcbiAgU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQsXG4gIFNDQUFNU2lkZWJhckl0ZW1FcnJvcixcbn0gZnJvbSAnLi9BYm1BZ2VudE1vZGFsLnN0eWxlcydcbmltcG9ydCB7IHVzZUNyZWF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VDcmVhdGVBZ2VudCdcbmltcG9ydCB7IHVzZURlbGV0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VEZWxldGVBZ2VudCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVVwZGF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQWdlbnRNb2RlbC91c2VVcGRhdGVBZ2VudCdcbmltcG9ydCB7IHVzZUtub3dsZWRnZU9wZXJhdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VLbm93bGVkZ2UnXG5pbXBvcnQgeyBBYm1Mb2FkZXJGaWxlcyB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUxvYWRlckZpbGVzJ1xuaW1wb3J0IHsgV3JhcHBlckNlbnRlckljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9XcmFwcGVyQ2VudGVySWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbmltcG9ydCB7IHVzZUFjY2Vzc0NsaWVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUFjY2Vzc0NsaWVudC91c2VBY2Nlc3NDbGllbnQnXG5pbXBvcnQgeyB1c2VUb2dnbGVGYXZvcml0ZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzJ1xuaW1wb3J0IHtcbiAgZGVyaXZlQ29yQWNjZXNzRnJvbVRvb2xHcm91cFNsdWdzLFxuICBERUZBVUxUX0NPUl9BQ0NFU1MsXG4gIENPUl9UT09MX0dST1VQX1NMVUdTLFxuICBidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QsXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycydcblxuY29uc3QgaW5pdGlhbFZhbHVlcyA9IE9iamVjdC5mcmVlemUoe1xuICBpc0VkaXRpbmc6IGZhbHNlLFxuICBrbm93bGVkZ2U6IFtdLFxuICBnZW5lcmFsOiB7XG4gICAgbmFtZTogJycsXG4gICAgZW1vamk6ICcnLFxuICAgIGludHJvZHVjdGlvbjogJycsXG4gICAgaW5wdXRQbGFjZWhvbGRlcjogJycsXG4gICAgaXNBY3RpdmU6IGZhbHNlLFxuICAgIGFpTW9kZWw6IG51bGwsXG4gICAgaWQ6IG51bGwsXG4gICAgdXNlclByb21wdDogbnVsbCxcbiAgICBrbm93bGVkZ2VCYXNlczogW10sXG4gICAgaXNfZmF2b3JpdGU6IGZhbHNlLFxuICB9LFxuICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgYWNjZXNzVHlwZTogJ2NvbXBhbnknLFxuICAgIGNsaWVudHM6IG51bGwsXG4gICAgY29yQWNjZXNzOiBERUZBVUxUX0NPUl9BQ0NFU1MsXG4gIH0sXG59KVxuXG50eXBlIEFibVNlY3Rpb24gPSAnZ2VuZXJhbCcgfCAna25vd2xlZGdlJyB8ICd0cmFpbmluZycgfCAndGVzdGluZycgfCAnYWNjZXNzaWJpbGl0eSdcblxuZXhwb3J0IGNvbnN0IFNlY3Rpb25CeUtleSA9IHtcbiAgZ2VuZXJhbDogKHByb3BzOiB7XG4gICAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICAgIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoe1xuICAgICAga2V5LFxuICAgICAgdmFsdWUsXG4gICAgICBkZWxldGVLbm93bGVkZ2UsXG4gICAgfToge1xuICAgICAga2V5OiBzdHJpbmdcbiAgICAgIHZhbHVlOiB1bmtub3duXG4gICAgICBkZWxldGVLbm93bGVkZ2U/OiBib29sZWFuXG4gICAgfSkgPT4gdm9pZFxuICAgIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW11cbiAgICBsb2FkaW5nOiBib29sZWFuXG4gICAgdG9vbHRpcFpJbmRleD86IG51bWJlclxuICB9KSA9PiA8QWJtR2VuZXJhbFNlY3Rpb24gey4uLnByb3BzfSAvPixcbiAga25vd2xlZGdlOiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxuICAgIGV4aXN0aW5nS25vd2xlZGdlOiBBdHRhY2htZW50RmlsZVtdXG4gICAgbmV3S25vd2xlZGdlOiBBdHRhY2htZW50RmlsZVtdXG4gICAgb25SZW1vdmVFeGlzdGluZ0tub3dsZWRnZTogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25SZW1vdmVOZXdLbm93bGVkZ2U6IChmaWxlSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uRmlsZUVycm9yQ2hhbmdlOiAoaGFzRXJyb3JzOiBib29sZWFuKSA9PiB2b2lkXG4gICAgdG9vbHRpcFpJbmRleD86IG51bWJlclxuICB9KSA9PiA8QWJtS25vd2xlZGdlU2VjdGlvbiB7Li4ucHJvcHN9IC8+LFxuICBhY2Nlc3NpYmlsaXR5OiAocHJvcHM6IHtcbiAgICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM6ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxuICB9KSA9PiA8QWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gey4uLnByb3BzfSAvPixcbn1cblxudHlwZSBBYm1BZ2VudE1vZGFsUHJvcHMgPSB7XG4gIGFkZEFnZW50OiAobmV3QWdlbnQ6IEFnZW50LCBvcHRpb25zPzogeyBuYXZpZ2F0ZUhvbWU/OiBib29sZWFuIH0pID0+IHZvaWRcbiAgcmVtb3ZlQWdlbnQ6IChhZ2VudElkOiBudW1iZXIgfCBzdHJpbmcpID0+IHZvaWRcbiAgdXBkYXRlQWdlbnQ6ICh1cGRhdGVkQWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHVwZGF0ZUFnZW50RmF2b3JpdGU6ICh1cGRhdGVkQWdlbnQ6IEFnZW50LCBzaG91bGRTb3J0PzogYm9vbGVhbikgPT4gdm9pZFxuICBzZWxlY3RGaXJzdEFnZW50OiAoYWdlbnRJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmNvbnN0IHZhbGlkYXRlRmllbGRWYWx1ZXMgPSAodmFsdWVUb1ZhbGlkYXRlOiBNb2RhbFZhbHVlcykgPT4ge1xuICBpZiAoIXZhbHVlVG9WYWxpZGF0ZS5nZW5lcmFsLm5hbWUgfHwgIXZhbHVlVG9WYWxpZGF0ZS5nZW5lcmFsLnVzZXJQcm9tcHQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKiogTWlzbWEgZXN0cnVjdHVyYSBxdWUgZWwgZWZlY3RvIHF1ZSBoaWRyYXRhIGRlc2RlIHVzZUdldEFnZW50QnlJZCAodG9kYXMgbGFzIHBlc3Rhw7FhcyBkZWwgQUJNKS4gKi9cbmZ1bmN0aW9uIGJ1aWxkRWRpdGluZ01vZGFsVmFsdWVzRnJvbUFnZW50RGV0YWlsKFxuICBhZ2VudEJ5SWQ6IGFueSxcbiAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXSxcbiAgcHJldjogTW9kYWxWYWx1ZXNcbik6IE1vZGFsVmFsdWVzIHtcbiAgY29uc3QgYWdlbnRNb2RlbCA9IGFnZW50TW9kZWxzLmZpbmQobW9kZWwgPT4gbW9kZWwuaWQgPT09IGFnZW50QnlJZC5tb2RlbEFpSWQpXG4gIHJldHVybiB7XG4gICAgLi4ucHJldixcbiAgICBpc0VkaXRpbmc6IHRydWUsXG4gICAgZ2VuZXJhbDoge1xuICAgICAgZW1vamk6IGFnZW50QnlJZC5lbW9qaSxcbiAgICAgIG5hbWU6IGFnZW50QnlJZC5uYW1lLFxuICAgICAgaW50cm9kdWN0aW9uOiBhZ2VudEJ5SWQuaW50cm9kdWN0aW9uLFxuICAgICAgaW5wdXRQbGFjZWhvbGRlcjogYWdlbnRCeUlkLmlucHV0UGxhY2Vob2xkZXIsXG4gICAgICBpc0FjdGl2ZTogYWdlbnRCeUlkLmlzQWN0aXZlLFxuICAgICAgYWlNb2RlbDogYWdlbnRNb2RlbCB8fCBudWxsLFxuICAgICAgaWQ6IGFnZW50QnlJZC5pZCxcbiAgICAgIHVzZXJQcm9tcHQ6IGFnZW50QnlJZC51c2VyUHJvbXB0LFxuICAgICAga25vd2xlZGdlQmFzZXM6IFtdLFxuICAgICAgaXNfZmF2b3JpdGU6IGFnZW50QnlJZC5pc19mYXZvcml0ZSxcbiAgICAgIGNyZWF0ZWRfYnk6IGFnZW50QnlJZC5jcmVhdGVkQnksXG4gICAgfSxcbiAgICBrbm93bGVkZ2U6XG4gICAgICBhZ2VudEJ5SWQua25vd2xlZGdlQmFzZXM/Lm1hcCgoazogYW55KSA9PiAoe1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgay5maWxlbmFtZSksXG4gICAgICAgIGlkOiBrLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIG5hbWU6IGsuZmlsZW5hbWUsXG4gICAgICAgIHNpemU6IGsuZmlsZV9zaXplX2J5dGVzIHx8IDAsXG4gICAgICAgIHR5cGU6IGsub3JpZ2luYWxfZmlsZV90eXBlLFxuICAgICAgICBzdGF0dXM6IGsuc3RhdHVzLFxuICAgICAgICB1cmxfb3JpZ2luYWw6IGsudXJsX29yaWdpbmFsIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX3RodW1ibmFpbDogay51cmxfdGh1bWJuYWlsIHx8IHVuZGVmaW5lZCxcbiAgICAgIH0pKSB8fCBbXSxcbiAgICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgICBhY2Nlc3NUeXBlOiBhZ2VudEJ5SWQuYWNjZXNzLFxuICAgICAgY2xpZW50czpcbiAgICAgICAgYWdlbnRCeUlkLmNsaWVudHM/Lm1hcCgoY2xpZW50OiBhbnkpID0+ICh7XG4gICAgICAgICAgaWQ6IGNsaWVudC5pZD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBjbGllbnQubmFtZSxcbiAgICAgICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUgPz8gZmFsc2UsXG4gICAgICAgICAgaXNfZGVsZXRlZDogY2xpZW50LmlzX2RlbGV0ZWQgPz8gZmFsc2UsXG4gICAgICAgIH0pKSB8fCBudWxsLFxuICAgICAgY29yQWNjZXNzOiBkZXJpdmVDb3JBY2Nlc3NGcm9tVG9vbEdyb3VwU2x1Z3MoYWdlbnRCeUlkLnRvb2xHcm91cFNsdWdzKSxcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBYm1BZ2VudE1vZGFsID0gKHtcbiAgYWRkQWdlbnQsXG4gIHVwZGF0ZUFnZW50LFxuICByZW1vdmVBZ2VudCxcbiAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgc2VsZWN0Rmlyc3RBZ2VudCxcbn06IEFibUFnZW50TW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIC8vIGNvbnN0ICRfc2M6IGFueSA9IG51bGxcbiAgY29uc3QgeyBhZ2VudDogY3VycmVudFNlbGVjdGVkQWdlbnQsIHNlbGVjdEFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgYWJtQWdlbnRNb2RhbFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTExMiwgJ2FnZW50TW9kYWwnKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCB7IHRvZ2dsZUZhdm9yaXRlIH0gPSB1c2VUb2dnbGVGYXZvcml0ZSgpXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FibS1hZ2VudC1tb2RhbCcpXG4gIGNvbnN0IFtpc1N1YnNjcmliZWQsIHNldElzU3Vic2NyaWJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgbW9kYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGhhc1BlbmRpbmdGaWxlc1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aW9uc1RvRmlsZXMgPSB1c2VSZWY8YW55Pih7XG4gICAgdG9EZWxldGU6IFtdLFxuICAgIHRvVXBsb2FkOiBbXSxcbiAgfSlcbiAgY29uc3QgYWNjZXNzVXBkYXRlQ29udGV4dCA9IHVzZVJlZjx7XG4gICAgaXNGcm9tQ3JlYXRpb246IGJvb2xlYW5cbiAgICBpc0Zyb21FZGl0aW5nOiBib29sZWFuXG4gICAgaGFzQWN0aW9uRmlsZXM6IGJvb2xlYW5cbiAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnIHwgbnVsbFxuICAgIGhhc0JlZW5DYWxsZWQ/OiBib29sZWFuXG4gIH0+KHtcbiAgICBpc0Zyb21DcmVhdGlvbjogZmFsc2UsXG4gICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgIG9wZXJhdGlvblR5cGU6IG51bGwsXG4gICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gIH0pXG4gIGNvbnN0IGFjY2Vzc0hhbmRsZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFnZW50Q3JlYXRlZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYgPSB1c2VSZWY8QWJtU2VjdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHByZWZldGNoZWRBZ2VudEJ5SWRSZWYgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBmaWxlc0ZpbmlzaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvLyBNYXJjYSBjdWFuZG8gY2VycmFtb3MgZWwgbG9hZGVyIHBvciBlbCB0aW1lb3V0IGRlIHNlZ3VyaWRhZCBkZSBhcmNoaXZvcy5cbiAgLy8gTWllbnRyYXMgZXN0w6kgYWN0aXZvLCBsb3MgdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gTk8gZGViZW4gZGlzcGFyYXJcbiAgLy8gc25hY2tiYXJzIGRlIMOpeGl0byBuaSBhdXRvLWNlcnJhciBlbCBtb2RhbC5cbiAgY29uc3QgcHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IFtmaWxlc1Byb2Nlc3NlZCwgc2V0RmlsZXNQcm9jZXNzZWRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd01vZGFsRGVsZXRlLCBzZXRTaG93TW9kYWxEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWN0aW9uLCBzZXRTZWN0aW9uXSA9IHVzZVN0YXRlPEFibVNlY3Rpb24+KCdnZW5lcmFsJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbW9kYWxWYWx1ZXMsIHNldE1vZGFsVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBnZW5lcmFsOiBhbnlcbiAgICBrbm93bGVkZ2U6IGFueVxuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGFjY2Vzc2liaWxpdHk6IGFueVxuICB9Pihpbml0aWFsVmFsdWVzKVxuICBjb25zdCB7XG4gICAgbG9hZGluZzogYWdlbnRMb2FkaW5nLFxuICAgIGhhbmRsZUdldEFnZW50QnlJZCxcbiAgICBhZ2VudDogYWdlbnRCeUlkLFxuICAgIGhhbmRsZUNsZWFuQWdlbnQsXG4gICAgZXJyb3I6IGVycm9yR2V0QWdlbnRCeUlkLFxuICB9ID0gdXNlR2V0QWdlbnRCeUlkKClcbiAgY29uc3QgeyBhZ2VudE1vZGVscywgZ2V0QWxsQWdlbnRNb2RlbHMgfSA9IHVzZUFnZW50TW9kZWwoKVxuICBjb25zdCBmaXJzdFZhbHVlQWdlbnQgPSB1c2VSZWY8YW55PihudWxsKVxuICBjb25zdCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBzZXRJc1Nob3dQcm9jZXNzRmlsZXNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNGaWxlRXJyb3JzLCBzZXRIYXNGaWxlRXJyb3JzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcblxuICBjb25zdCB7IGhhbmRsZURlbGV0ZUFnZW50LCBzdWNjZXNzOiBzdWNjZXNzRGVsZXRlLCByZXNldFN1Y2Nlc3MgfSA9IHVzZURlbGV0ZUFnZW50KClcbiAgY29uc3QgeyBoYW5kbGVVcGRhdGVBZ2VudCwgc3VjY2Vzczogc3VjY2Vzc1VwZGF0ZSwgcmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGUgfSA9IHVzZVVwZGF0ZUFnZW50KClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlQWdlbnQsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzczogc3VjY2Vzc0NyZWF0ZSxcbiAgICByZXNldFN1Y2Nlc3M6IHJlc2V0U3VjY2Vzc0NyZWF0ZSxcbiAgfSA9IHVzZUNyZWF0ZUFnZW50KClcblxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVEZWxldGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdLbm93bGVkZ2UsXG4gICAgZXJyb3I6IGVycm9yS25vd2xlZGdlLFxuICAgIHN1Y2Nlc3NEZWxldGU6IHN1Y2Nlc3NLbm93bGVkZ2VEZWxldGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gIH0gPSB1c2VLbm93bGVkZ2VPcGVyYXRpb25zKClcblxuICBjb25zdCB7XG4gICAgaGFuZGxlQWNjZXNzQ2xpZW50LFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gICAgaXNMb2FkaW5nOiBpc0xvYWRpbmdVcGRhdGVBY2Nlc3MsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzOiByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MsXG4gIH0gPSB1c2VBY2Nlc3NDbGllbnQoKVxuXG4gIGlmICghc2VsZWN0b3IpIHJldHVybiBudWxsXG5cbiAgY29uc3QgYXJlQ2xpZW50c0FycmF5c0VxdWFsID0gKGNsaWVudHMxOiBhbnlbXSB8IG51bGwsIGNsaWVudHMyOiBhbnlbXSB8IG51bGwpID0+IHtcbiAgICBpZiAoIWNsaWVudHMxICYmICFjbGllbnRzMikgcmV0dXJuIHRydWVcbiAgICBpZiAoIWNsaWVudHMxIHx8ICFjbGllbnRzMikgcmV0dXJuIGZhbHNlXG4gICAgaWYgKGNsaWVudHMxLmxlbmd0aCAhPT0gY2xpZW50czIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGNsaWVudHMxSWRzID0gY2xpZW50czEubWFwKGMgPT4gYy5jbGllbnRJZCkuc29ydCgpXG4gICAgY29uc3QgY2xpZW50czJJZHMgPSBjbGllbnRzMi5tYXAoYyA9PiBjLmNsaWVudElkKS5zb3J0KClcblxuICAgIHJldHVybiBjbGllbnRzMUlkcy5ldmVyeSgoaWQsIGluZGV4KSA9PiBpZCA9PT0gY2xpZW50czJJZHNbaW5kZXhdKVxuICB9XG5cbiAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uYWNjZXNzaWJpbGl0eSB8fCAhbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHkpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBhY2Nlc3NUeXBlU2FtZSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlXG4gICAgY29uc3QgY2xpZW50c1NhbWUgPSBhcmVDbGllbnRzQXJyYXlzRXF1YWwoXG4gICAgICBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmNsaWVudHMsXG4gICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmNsaWVudHNcbiAgICApXG4gICAgY29uc3QgY3VycmVudENvckFjY2VzcyA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY29yQWNjZXNzID8/IERFRkFVTFRfQ09SX0FDQ0VTU1xuICAgIGNvbnN0IGluaXRpYWxDb3JBY2Nlc3MgPSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5hY2Nlc3NpYmlsaXR5LmNvckFjY2VzcyA/PyBERUZBVUxUX0NPUl9BQ0NFU1NcbiAgICBjb25zdCBjb3JBY2Nlc3NTYW1lID0gQ09SX1RPT0xfR1JPVVBfU0xVR1MuZXZlcnkoc2x1ZyA9PiBjdXJyZW50Q29yQWNjZXNzW3NsdWddID09PSBpbml0aWFsQ29yQWNjZXNzW3NsdWddKVxuXG4gICAgcmV0dXJuICFhY2Nlc3NUeXBlU2FtZSB8fCAhY2xpZW50c1NhbWUgfHwgIWNvckFjY2Vzc1NhbWVcbiAgfVxuXG4gIGNvbnN0IHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUgPSAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8uZ2VuZXJhbCB8fCAhbW9kYWxWYWx1ZXM/LmdlbmVyYWwpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwubmFtZSA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5uYW1lICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmVtb2ppID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmVtb2ppICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gJiZcbiAgICAgIG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciA9PT0gZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWw/LmlkID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudC5nZW5lcmFsLmFpTW9kZWw/LmlkICYmXG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IGZpcnN0VmFsdWVBZ2VudC5jdXJyZW50LmdlbmVyYWwudXNlclByb21wdCAmJlxuICAgICAgKG1vZGFsVmFsdWVzLmtub3dsZWRnZT8ubGVuZ3RoID09PSBmaXJzdFZhbHVlQWdlbnQuY3VycmVudD8ua25vd2xlZGdlPy5sZW5ndGggfHxcbiAgICAgICAgKCFtb2RhbFZhbHVlcy5rbm93bGVkZ2U/Lmxlbmd0aCAmJiAhZmlyc3RWYWx1ZUFnZW50LmN1cnJlbnQ/Lmtub3dsZWRnZT8ubGVuZ3RoKSkgJiZcbiAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBkYXRlPy5sZW5ndGggJiZcbiAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlPy5sZW5ndGggJiZcbiAgICAgICFoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzQW55VmFsdWVGb3JDcmVhdGlvbiA9ICgpID0+IHtcbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGlzRGVmYXVsdEFpTW9kZWwgPSAhIWFnZW50TW9kZWxzLmxlbmd0aCAmJiBtb2RhbFZhbHVlcy5nZW5lcmFsLmFpTW9kZWw/LmlkID09PSBhZ2VudE1vZGVsc1swXT8uaWRcblxuICAgIGNvbnN0IGRlZmF1bHRJbnB1dFBsYWNlaG9sZGVyID0gdCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlcicpXG4gICAgY29uc3QgaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlciA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciA9PT0gZGVmYXVsdElucHV0UGxhY2Vob2xkZXJcblxuICAgIGNvbnN0IGRlZmF1bHRVc2VyUHJvbXB0UGxhY2Vob2xkZXIgPSB0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKVxuICAgIGNvbnN0IGlzRGVmYXVsdFVzZXJQcm9tcHQgPVxuICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0ID09PSBkZWZhdWx0VXNlclByb21wdFBsYWNlaG9sZGVyIHx8XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09ICcnIHx8XG4gICAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgPT09IG51bGxcblxuICAgIGNvbnN0IGhhc05hbWUgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLm5hbWUudHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0Vtb2ppID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5lbW9qaS50cmltKCkgIT09ICcnXG4gICAgY29uc3QgaGFzSW50cm9kdWN0aW9uID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24udHJpbSgpICE9PSAnJ1xuICAgIGNvbnN0IGhhc0lucHV0UGxhY2Vob2xkZXIgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIudHJpbSgpICE9PSAnJyAmJiAhaXNEZWZhdWx0SW5wdXRQbGFjZWhvbGRlclxuICAgIGNvbnN0IGhhc1VzZXJQcm9tcHQgPSBtb2RhbFZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQ/LnRyaW0oKSAhPT0gJycgJiYgIWlzRGVmYXVsdFVzZXJQcm9tcHRcbiAgICBjb25zdCBoYXNLbm93bGVkZ2UgPSAhIW1vZGFsVmFsdWVzLmtub3dsZWRnZS5sZW5ndGhcbiAgICBjb25zdCBoYXNDdXN0b21BaU1vZGVsID0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5haU1vZGVsICYmICFpc0RlZmF1bHRBaU1vZGVsXG4gICAgY29uc3QgaGFzQWNjZXNzaWJpbGl0eSA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknXG5cbiAgICByZXR1cm4gKFxuICAgICAgaGFzTmFtZSB8fFxuICAgICAgaGFzRW1vamkgfHxcbiAgICAgIGhhc0ludHJvZHVjdGlvbiB8fFxuICAgICAgaGFzSW5wdXRQbGFjZWhvbGRlciB8fFxuICAgICAgaGFzVXNlclByb21wdCB8fFxuICAgICAgaGFzS25vd2xlZGdlIHx8XG4gICAgICBoYXNDdXN0b21BaU1vZGVsIHx8XG4gICAgICBoYXNBY2Nlc3NpYmlsaXR5XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFzQ2hhbmdlc0ZvckVkaXRpbmcgPSAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbFZhbHVlcy5pc0VkaXRpbmcpIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIChcbiAgICAgICF2YWxpZGF0ZUFnZW50VmFsdWVzSXNTYW1lKCkgfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZS5sZW5ndGggfHxcbiAgICAgICEhYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGhcbiAgICApXG4gIH1cblxuICBjb25zdCBoYXNQZW5kaW5nQ2hhbmdlcyA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFzQW55VmFsdWVGb3JDcmVhdGlvbigpIHx8IGhhc0NoYW5nZXNGb3JFZGl0aW5nKClcbiAgfVxuXG4gIC8vIEhlbHBlciBwYXJhIG1hbmVqYXIgZWwgdG9nZ2xlIGRlIGZhdm9yaXRvIHkgYWN0dWFsaXphciBlbCBlc3RhZG8gY29uIG9yZGVuYW1pZW50b1xuICBjb25zdCBoYW5kbGVUb2dnbGVGYXZvcml0ZUZvckFnZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZywgYWdlbnQ6IEFnZW50LCBvblN1Y2Nlc3M/OiAodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4gdm9pZCwgb25FcnJvcj86ICgpID0+IHZvaWQpID0+IHtcbiAgICAgIHRvZ2dsZUZhdm9yaXRlKFxuICAgICAgICBhZ2VudElkLFxuICAgICAgICB1cGRhdGVkQWdlbnQgPT4ge1xuICAgICAgICAgIC8vIEFjdHVhbGl6YXIgZWwgZXN0YWRvIGRlIGFnZW50ZXMgY29uIGVsIHJlc3VsdGFkbyBkZWwgc2Vydmlkb3IgeSBvcmRlbmFyXG4gICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZSh1cGRhdGVkQWdlbnQsIHRydWUpXG4gICAgICAgICAgaWYgKG9uU3VjY2Vzcykge1xuICAgICAgICAgICAgb25TdWNjZXNzKHVwZGF0ZWRBZ2VudClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAob25FcnJvcikge1xuICAgICAgICAgICAgb25FcnJvcigpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhZ2VudC5pc19mYXZvcml0ZVxuICAgICAgKVxuICAgIH0sXG4gICAgW3RvZ2dsZUZhdm9yaXRlLCB1cGRhdGVBZ2VudEZhdm9yaXRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKGhhc1BlbmRpbmdDaGFuZ2VzKCkgJiYgIXN1Y2Nlc3NDcmVhdGUgJiYgIXN1Y2Nlc3NVcGRhdGUgJiYgIXN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUNsb3NlRWRpdEFnZW50JykgOiB0KCdjb25maXJtQ2xvc2VDcmVhdGVBZ2VudCcpXG5cbiAgICAgIGlmICghd2luZG93LmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIHNldE1vZGFsVmFsdWVzKGluaXRpYWxWYWx1ZXMpXG4gICAgaGFuZGxlQ2xlYW5BZ2VudCgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQgPSB7XG4gICAgICB0b0RlbGV0ZTogW10sXG4gICAgICB0b1VwbG9hZDogW10sXG4gICAgfVxuICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgIH1cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpXG4gICAgc2V0SXNTdWJzY3JpYmVkKGZhbHNlKVxuICAgIHNldEZpbGVzUHJvY2Vzc2VkKDApXG4gICAgc2V0U2VjdGlvbignZ2VuZXJhbCcpXG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmICFpc1Nob3dQcm9jZXNzRmlsZXMpIHtcbiAgICAgIGhhbmRsZUNsb3NlKClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWN0aW9uQ2hhbmdlID0gKG5ld1NlY3Rpb246IEFibVNlY3Rpb24pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMudGFiU2VjdGlvbiwgeyBvcHRpb246IG5ld1NlY3Rpb24gfSlcbiAgICBzZXRTZWN0aW9uKG5ld1NlY3Rpb24pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlc0J5S2V5cyA9ICh7XG4gICAga2V5LFxuICAgIHZhbHVlLFxuICAgIGRlbGV0ZUtub3dsZWRnZSxcbiAgfToge1xuICAgIGtleTogc3RyaW5nXG4gICAgdmFsdWU6IGFueVxuICAgIGRlbGV0ZUtub3dsZWRnZTogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGtleSA9PT0gJ2tub3dsZWRnZScpIHtcbiAgICAgIGlmICghZGVsZXRlS25vd2xlZGdlKSB7XG4gICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQucHVzaCguLi4odmFsdWUgfHwgW10pKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmlsZXNQcmV2SWRzID0gdmFsdWUubGVuZ3RoID8gbmV3IFNldCh2YWx1ZS5tYXAoZmlsZSA9PiBmaWxlLmlkKSkgOiBuZXcgU2V0KClcbiAgICAgICAgY29uc3QgbmV3RmlsZXMgPSBtb2RhbFZhbHVlcy5rbm93bGVkZ2UuZmlsdGVyKGZpbGUgPT4gIWZpbGVzUHJldklkcy5oYXMoZmlsZS5pZCkgJiYgZmlsZS5zdGF0dXMgIT09ICdzdGFydGVkJylcbiAgICAgICAgaWYgKCFuZXdGaWxlcy5sZW5ndGggJiYgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZUlkcyA9IG5ldyBTZXQodmFsdWUubWFwKGZpbGUgPT4gZmlsZS5pZCkpXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQuZmlsdGVyKGZpbGUgPT4gdmFsdWVJZHMuaGFzKGZpbGUuaWQpKVxuICAgICAgICB9XG4gICAgICAgIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgPSBbLi4uKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUgfHwgW10pLCAuLi5uZXdGaWxlc11cbiAgICAgIH1cbiAgICB9XG4gICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBrbm93bGVkZ2VGaWxlcyA9XG4gICAgICAgIGtleSA9PT0gJ2tub3dsZWRnZSdcbiAgICAgICAgICA/IGRlbGV0ZUtub3dsZWRnZVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiBbLi4uKHByZXYua25vd2xlZGdlIHx8IFtdKSwgLi4uKCh2YWx1ZSBhcyBBdHRhY2htZW50RmlsZVtdKSB8fCBbXSldXG4gICAgICAgICAgOiBudWxsXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICAuLi4oa2V5ID09PSAna25vd2xlZGdlJ1xuICAgICAgICAgID8geyBrbm93bGVkZ2U6IGtub3dsZWRnZUZpbGVzIH1cbiAgICAgICAgICA6IGtleSA9PT0gJ2FjY2Vzc2liaWxpdHknXG4gICAgICAgICAgICA/IHsgYWNjZXNzaWJpbGl0eTogdmFsdWUgfVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgICAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gYXN5bmMgKGNoYXQ6IGFueSwgYWN0aW9uOiAnZGVsZXRlJyB8ICd1cGRhdGUnIHwgJ2NyZWF0ZScpID0+IHtcbiAgICAvLyBTb2xvIHBlcm1pdGlyIG9wZXJhY2lvbmVzIGRlIGFnZW50ZXMgY3VzdG9tIHNpIGxhIGZlYXR1cmUgZmxhZyBlc3TDoSBoYWJpbGl0YWRhXG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5kZWxldGUpXG4gICAgICBoYW5kbGVEZWxldGVBZ2VudChjaGF0LmlkIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNvckFjY2VzcyA9IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY29yQWNjZXNzID8/IERFRkFVTFRfQ09SX0FDQ0VTU1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jb25maXJtQWN0aW9uLCB7XG4gICAgICBvcHRpb246IG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/ICdlZGl0JyA6ICdjcmVhdGUnLFxuICAgICAgY29yX3NsdWdzOiBidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QoY29yQWNjZXNzKSxcbiAgICAgIGNvcl9hY2Nlc3M6IGNvckFjY2VzcyxcbiAgICB9KVxuICAgIC8vIEFsIHJlaW50ZW50YXIgZ3VhcmRhciwgbGliZXJhciBlbCBmcmVubyBkZWwgdGltZW91dCBwcmV2aW8gcGFyYSBxdWUgbG9zXG4gICAgLy8gdXNlRWZmZWN0IGRlIHBvc3QtZ3VhcmRhZG8gdnVlbHZhbiBhIHBvZGVyIGRpc3BhcmFyIHNuYWNrYmFycyB5IGNlcnJhci5cbiAgICBwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBpZiAoIXZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSkge1xuICAgICAgICBhd2FpdCBoYW5kbGVVcGRhdGVBZ2VudChtb2RhbFZhbHVlcylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgaGFuZGxlQ3JlYXRlQWdlbnQobW9kYWxWYWx1ZXMpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRBZ2VudFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50VmFsdWVzIH0gPSBldmVudC5kZXRhaWxcbiAgICAgIGNvbnN0IGluaXRpYWxTZWN0aW9uID0gYWdlbnRWYWx1ZXM/LmluaXRpYWxTZWN0aW9uIGFzIEFibVNlY3Rpb24gfCB1bmRlZmluZWRcbiAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID1cbiAgICAgICAgaW5pdGlhbFNlY3Rpb24gJiYgWydnZW5lcmFsJywgJ2tub3dsZWRnZScsICdhY2Nlc3NpYmlsaXR5J10uaW5jbHVkZXMoaW5pdGlhbFNlY3Rpb24pID8gaW5pdGlhbFNlY3Rpb24gOiBudWxsXG5cbiAgICAgIGdldEFsbEFnZW50TW9kZWxzKClcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG5cbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cblxuICAgICAgaWYgKGFnZW50VmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nKSB7XG4gICAgICAgIC8vIFZhbGlkYXIgcXVlIGxhIGZlYXR1cmUgZmxhZyBlc3TDqSBoYWJpbGl0YWRhIGFudGVzIGRlIGNhcmdhciBlbCBhZ2VudGUgcGFyYSBlZGl0YXJcbiAgICAgICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWdlbnRWYWx1ZXMucHJlZmV0Y2hlZEFnZW50QnlJZCkge1xuICAgICAgICAgIGhhbmRsZUNsZWFuQWdlbnQoKVxuICAgICAgICAgIHByZWZldGNoZWRBZ2VudEJ5SWRSZWYuY3VycmVudCA9IGFnZW50VmFsdWVzLnByZWZldGNoZWRBZ2VudEJ5SWRcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVHZXRBZ2VudEJ5SWQoYWdlbnRWYWx1ZXM/LnZhbHVlcz8uZ2VuZXJhbD8uaWQgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoYWdlbnRWYWx1ZXMudmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZXMgPSB7XG4gICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgICAuLi5hZ2VudFZhbHVlcy52YWx1ZXMsXG4gICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLFxuICAgICAgICAgICAgLi4uKGFnZW50VmFsdWVzLnZhbHVlcy5nZW5lcmFsIHx8IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSxcbiAgICAgICAgICAgIC4uLihhZ2VudFZhbHVlcy52YWx1ZXMuYWNjZXNzaWJpbGl0eSB8fCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBrbm93bGVkZ2U6IGFnZW50VmFsdWVzLnZhbHVlcy5rbm93bGVkZ2UgfHwgW10sXG4gICAgICAgIH1cblxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IG5leHRWYWx1ZXNcbiAgICAgICAgc2V0TW9kYWxWYWx1ZXMobmV4dFZhbHVlcylcbiAgICAgIH1cblxuICAgICAgaWYgKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50ICYmICFhZ2VudFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZykge1xuICAgICAgICBzZXRTZWN0aW9uKHBlbmRpbmdJbml0aWFsU2VjdGlvblJlZi5jdXJyZW50KVxuICAgICAgICBwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cblxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm0tYWdlbnQtbW9kYWwtc2V0LXZhbHVlcycsIGhhbmRsZVNldEFnZW50VmFsdWVzIGFzIEV2ZW50TGlzdGVuZXIpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyB1c2VFZmZlY3QgdG8gaGFuZGxlIHRoZSBvdmVyZmxvdyBvZiB0aGUgYm9keSB3aGVuIHRoZSBtb2RhbCBpcyBvcGVuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IGJvZHkgfSA9IGRvY3VtZW50XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3dcbiAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBib2R5LnN0eWxlLm92ZXJmbG93ID0gb3JpZ2luYWxPdmVyZmxvd1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVCZWZvcmVVbmxvYWQgPSAoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgICAgcmV0dXJuIHQoJ2NvbmZpcm1SZWxvYWRCcm93c2VyJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgaGFuZGxlQmVmb3JlVW5sb2FkKVxuICAgIH1cbiAgfSwgW2lzT3BlbiwgaGFzUGVuZGluZ0NoYW5nZXMsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN1Y2Nlc3NEZWxldGUpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnREZWxldGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3MoKVxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCBhcyBzdHJpbmcpXG4gICAgICB9XG4gICAgICByZW1vdmVBZ2VudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKVxuICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKGZhbHNlKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgfSwgW3N1Y2Nlc3NEZWxldGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRXZpdGFyIGVqZWN1Y2nDs24gbcO6bHRpcGxlIGRlbCBlZmVjdG9cbiAgICBpZiAoc3VjY2Vzc0NyZWF0ZSAmJiAhaXNMb2FkaW5nQ3JlYXRlICYmIGFnZW50Q3JlYXRlZFJlZi5jdXJyZW50ICE9PSBzdWNjZXNzQ3JlYXRlLmlkKSB7XG4gICAgICBhZ2VudENyZWF0ZWRSZWYuY3VycmVudCA9IHN1Y2Nlc3NDcmVhdGUuaWRcbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLmxlbmd0aCAmJiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZTogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSxcbiAgICAgICAgICAgIGZpbGVzVG9DcmVhdGU6IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQsXG4gICAgICAgICAgICBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcblxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoKSB7XG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5LmFjY2Vzc1R5cGUgIT09ICdjb21wYW55Jykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFNpIG5vIGhheSBhY2Nlc2liaWxpZGFkIHBlcm8gaGF5IGFyY2hpdm9zLCBlc3RhYmxlY2VyIGVsIGNvbnRleHRvIHBhcmEgY3JlYWNpw7NuXG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IHRydWUsXG4gICAgICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXG4gICAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSksXG4gICAgICAgIF1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKGhhbmRsZUFjY2Vzc0NsaWVudChzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgICBjb25zdCBhZ2VudFdpdGhGYXZvcml0ZSA9IHsgLi4uc3VjY2Vzc0NyZWF0ZSwgaXNfZmF2b3JpdGU6IHRydWUgfVxuICAgICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuICAgICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgICBjb25zdCBhZ2VudEZvclRvZ2dsZSA9IHsgLi4uYWdlbnRXaXRoRmF2b3JpdGUsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgICAgICAgKCkgPT4gcmVzb2x2ZSgpLFxuICAgICAgICAgICAgICAgICgpID0+IHJlamVjdCgpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIH1cblxuICAgICAgICBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyh7IGZpbGVzOiBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlLCBhZ2VudElkOiBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCkgfSlcbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IHRydWUsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWNjZXNpYmlsaWRhZCBwZXJvIGhheSBhcmNoaXZvcywgZXN0YWJsZWNlciBlbCBjb250ZXh0byBwYXJhIGNyZWFjacOzblxuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAnY3JlYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW1xuICAgICAgICAgIGhhbmRsZUNyZWF0ZUtub3dsZWRnZXMoeyBmaWxlczogYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCwgYWdlbnRJZDogc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpIH0pLFxuICAgICAgICBdXG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuYWNjZXNzVHlwZSAhPT0gJ2NvbXBhbnknKSB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChoYW5kbGVBY2Nlc3NDbGllbnQoc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlzX2Zhdm9yaXRlKSB7XG4gICAgICAgICAgY29uc3QgYWdlbnRXaXRoRmF2b3JpdGUgPSB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH1cbiAgICAgICAgICBhZGRBZ2VudChhZ2VudFdpdGhGYXZvcml0ZSlcbiAgICAgICAgICAvLyBDdWFuZG8gc2UgY3JlYSB1biBhZ2VudGUgbnVldm8sIGVsIHNlcnZpZG9yIG5vIHRpZW5lIGVsIGZhdm9yaXRvIG1hcmNhZG8gYcO6blxuICAgICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogZmFsc2UgfVxuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICAgICAgICgpID0+IHJlc29sdmUoKSxcbiAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRBZ2VudChzdWNjZXNzQ3JlYXRlKVxuICAgICAgICB9XG5cbiAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICAgIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc1Nob3dQcm9jZXNzRmlsZXModHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAobW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5hY2Nlc3NUeXBlICE9PSAnY29tcGFueScpIHtcbiAgICAgICAgLy8gU29sbyByZXNldGVhciBlbCBjb250ZXh0byBzaSBOTyBzZSBoYSBsbGFtYWRvIHRvZGF2w61hXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICBjb25zdCB7IGhhc0FjdGlvbkZpbGVzIH0gPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBpc0Zyb21DcmVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGhhc0FjdGlvbkZpbGVzIHx8IGZhbHNlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNCZWVuQ2FsbGVkKSB7XG4gICAgICAgICAgaGFuZGxlQWNjZXNzQ2xpZW50KHN1Y2Nlc3NDcmVhdGUuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSlcbiAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgaGFuZGxlQWNjZXNzQ2xpZW50LCBlbCBhZ2VudGUgc2UgYWdyZWdhcsOhIHkgZWwgdG9nZ2xlIHNlIGhhcsOhIGVuIHN1Y2Nlc3NVcGRhdGVBY2Nlc3NcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBmYXZvcml0ZSBpZiBpdCB3YXMgbWFya2VkIGR1cmluZyBjcmVhdGlvblxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgLy8gUHJpbWVybyBhZ3JlZ2FyIGVsIGFnZW50ZSBhIGxhIGxpc3RhIChhZGRBZ2VudCB5YSBvcmRlbmEpXG4gICAgICAgIGNvbnN0IGFnZW50V2l0aEZhdm9yaXRlID0geyAuLi5zdWNjZXNzQ3JlYXRlLCBpc19mYXZvcml0ZTogdHJ1ZSB9XG4gICAgICAgIGFkZEFnZW50KGFnZW50V2l0aEZhdm9yaXRlKVxuXG4gICAgICAgIC8vIEN1YW5kbyBzZSBjcmVhIHVuIGFnZW50ZSBudWV2bywgZWwgc2Vydmlkb3Igbm8gdGllbmUgZWwgZmF2b3JpdG8gbWFyY2FkbyBhw7puXG4gICAgICAgIC8vIEVudG9uY2VzIGN1cnJlbnRJc0Zhdm9yaXRlIGRlYmUgc2VyIGZhbHNlIHBhcmEgcXVlIGVsIHRvZ2dsZSBsbyBtYXJxdWUgY29tbyB0cnVlXG4gICAgICAgIGNvbnN0IGFnZW50Rm9yVG9nZ2xlID0geyAuLi5hZ2VudFdpdGhGYXZvcml0ZSwgaXNfZmF2b3JpdGU6IGZhbHNlIH1cbiAgICAgICAgLy8gTHVlZ28gaGFjZXIgZWwgdG9nZ2xlIGRlIGZhdm9yaXRvIGVuIGVsIHNlcnZpZG9yIHkgYWN0dWFsaXphciBlbCBlc3RhZG9cbiAgICAgICAgaGFuZGxlVG9nZ2xlRmF2b3JpdGVGb3JBZ2VudChcbiAgICAgICAgICBzdWNjZXNzQ3JlYXRlLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgYWdlbnRGb3JUb2dnbGUsXG4gICAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246IHVwZGF0ZWRBZ2VudC5pc19mYXZvcml0ZSA/ICdhZGQnIDogJ3JlbW92ZScgfSlcbiAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgICAgICBzZWxlY3RBZ2VudCh7IC4uLmFnZW50V2l0aEZhdm9yaXRlLCBpc19mYXZvcml0ZTogdXBkYXRlZEFnZW50LmlzX2Zhdm9yaXRlIH0pXG4gICAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwgeyBvcHRpb246ICdhZGQnIH0pXG4gICAgICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRXaXRoRmF2b3JpdGUpXG4gICAgICAgICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICAgIGFkZEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NDcmVhdGUpXG4gICAgICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSgpXG4gICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmdDcmVhdGUsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlQ3JlYXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICBhZGRBZ2VudCxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzQ3JlYXRlLFxuICAgIGhhbmRsZUNsb3NlLFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gIF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc1VwZGF0ZSkge1xuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoICYmIGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZSA9IFtdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVEZWxldGVBbmRDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgZmlsZXNUb0NyZWF0ZTogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9EZWxldGUubGVuZ3RoKSB7XG4gICAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaXNGcm9tRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0FjdGlvbkZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogJ3VwZGF0ZScsXG4gICAgICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCkge1xuICAgICAgICAgIGNvbnN0IGZpbGVzVG9EZWxldGUgPSBbLi4uYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b0RlbGV0ZV1cbiAgICAgICAgICBhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvRGVsZXRlID0gW11cblxuICAgICAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIGhhbmRsZURlbGV0ZUtub3dsZWRnZXMoe1xuICAgICAgICAgICAgICBmaWxlczogZmlsZXNUb0RlbGV0ZSxcbiAgICAgICAgICAgICAgYWdlbnRJZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4oaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKVxuICAgICAgICAgICAgICA/IFtoYW5kbGVBY2Nlc3NDbGllbnQobW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZC50b1N0cmluZygpLCBtb2RhbFZhbHVlcy5hY2Nlc3NpYmlsaXR5KV1cbiAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCkge1xuICAgICAgICBpZiAoaGFzQWNjZXNzaWJpbGl0eUNoYW5nZWQoKSkge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQpIHtcbiAgICAgICAgICBjb25zdCBmaWxlc1RvVXBsb2FkID0gWy4uLmFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWRdXG4gICAgICAgICAgYWN0aW9uc1RvRmlsZXMuY3VycmVudC50b1VwbG9hZCA9IFtdXG5cbiAgICAgICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzKHtcbiAgICAgICAgICAgICAgZmlsZXM6IGZpbGVzVG9VcGxvYWQsXG4gICAgICAgICAgICAgIGFnZW50SWQ6IG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKGhhc0FjY2Vzc2liaWxpdHlDaGFuZ2VkKClcbiAgICAgICAgICAgICAgPyBbaGFuZGxlQWNjZXNzQ2xpZW50KG1vZGFsVmFsdWVzLmdlbmVyYWwuaWQudG9TdHJpbmcoKSwgbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eSldXG4gICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChoYXNBY2Nlc3NpYmlsaXR5Q2hhbmdlZCgpKSB7XG4gICAgICAgIC8vIFNvbG8gcmVzZXRlYXIgZWwgY29udGV4dG8gc2kgTk8gc2UgaGEgbGxhbWFkbyB0b2RhdsOtYSB5IE5PIGhheSBhcmNoaXZvcyBwZW5kaWVudGVzXG4gICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQgJiYgIWFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcykge1xuICAgICAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRnJvbUVkaXRpbmc6IHRydWUsXG4gICAgICAgICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlOiAndXBkYXRlJyxcbiAgICAgICAgICAgIGhhc0JlZW5DYWxsZWQ6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkKSB7XG4gICAgICAgICAgLy8gTGxhbWFyIGEgaGFuZGxlQWNjZXNzQ2xpZW50IHNvbG8gdW5hIHZlelxuICAgICAgICAgIGlmICghYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0JlZW5DYWxsZWQpIHtcbiAgICAgICAgICAgIGhhbmRsZUFjY2Vzc0NsaWVudChtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLnRvU3RyaW5nKCksIG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkpXG4gICAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQmVlbkNhbGxlZCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFNvbG8gY2VycmFyIHNpIG5vIGhheSBhcmNoaXZvcyBzaWVuZG8gcHJvY2VzYWRvcyBuaSBhY2Nlc3MgcGVuZGllbnRlXG4gICAgICBpZiAoXG4gICAgICAgICFoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCAmJlxuICAgICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzICYmXG4gICAgICAgICFhY3Rpb25zVG9GaWxlcy5jdXJyZW50LnRvVXBsb2FkLmxlbmd0aCAmJlxuICAgICAgICAhYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50Lmhhc0FjdGlvbkZpbGVzICYmXG4gICAgICAgICFzdWNjZXNzVXBkYXRlQWNjZXNzICYmXG4gICAgICAgICFwcm9jZXNzRmlsZXNUaW1lZE91dFJlZi5jdXJyZW50XG4gICAgICApIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWQnKSlcbiAgICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEFnZW50Py5pZCA9PT0gc3VjY2Vzc1VwZGF0ZS5pZCkge1xuICAgICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgc3VjY2Vzc1VwZGF0ZSxcbiAgICBtb2RhbFZhbHVlcy5nZW5lcmFsLmlkLFxuICAgIGhhbmRsZURlbGV0ZUFuZENyZWF0ZUtub3dsZWRnZXMsXG4gICAgaGFuZGxlRGVsZXRlS25vd2xlZGdlcyxcbiAgICBoYW5kbGVDcmVhdGVLbm93bGVkZ2VzLFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIGhhbmRsZVJlc2V0U3VjY2Vzc0RlbGV0ZSxcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGUsXG4gICAgaGFuZGxlQ2xvc2UsXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUHJvY2Vzc0ZpbGVzVGltZW91dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmICFpc1Nob3dQcm9jZXNzRmlsZXMpIHJldHVyblxuXG4gICAgLy8gQWwgY3VtcGxpcnNlIGVsIHRpbWVvdXQgYXN1bWltb3MgcXVlIGVsIGd1YXJkYWRvIGRlbCBhZ2VudGUgZnVlIGV4aXRvc29cbiAgICAvLyAoZWwgc2VydmVyIHJlc3BvbmRpw7MgT0spIHkgcXVlIGxvcyBhcmNoaXZvcyBzZSBlbnZpYXJvbiBjb3JyZWN0YW1lbnRlLlxuICAgIC8vIFNvbG8gcGVyZGltb3MgbGEgY29uZmlybWFjacOzbiBhc2luY3LDs25pY2EgZGVsIFdlYlNvY2tldCBzb2JyZSBzdVxuICAgIC8vIHByb2Nlc2FtaWVudG8uIENlcnJhbW9zIHRvZG8gbW9zdHJhbmRvIGVsIHNuYWNrYmFyIGRlIMOpeGl0byBxdWUgaHViaWVzZVxuICAgIC8vIGRpc3BhcmFkbyBlbCBmbHVqbyBub3JtYWwgZGUgw6l4aXRvLlxuXG4gICAgLy8gRnJlbm8gcGFyYSBxdWUgbG9zIHVzZUVmZmVjdCBkZSBwb3N0LWd1YXJkYWRvIG5vIHJlLWRpc3BhcmVuIHNuYWNrYmFyc1xuICAgIC8vIG8gY2llcnJlcyBkdXBsaWNhZG9zIGN1YW5kbyBzZXRJc1Nob3dQcm9jZXNzRmlsZXMoZmFsc2UpIGxvcyBnYXRpbGxlLlxuICAgIHByb2Nlc3NGaWxlc1RpbWVkT3V0UmVmLmN1cnJlbnQgPSB0cnVlXG5cbiAgICBpZiAobW9kYWxWYWx1ZXMuaXNFZGl0aW5nICYmIHN1Y2Nlc3NVcGRhdGUpIHtcbiAgICAgIHVwZGF0ZUFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICBpZiAoY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkID09PSBzdWNjZXNzVXBkYXRlLmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHN1Y2Nlc3NVcGRhdGUpXG4gICAgICB9XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzVXBkYXRlKClcbiAgICB9IGVsc2UgaWYgKCFtb2RhbFZhbHVlcy5pc0VkaXRpbmcgJiYgc3VjY2Vzc0NyZWF0ZSkge1xuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgfVxuXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSgpXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICByZXNldFN1Y2Nlc3NVcGRhdGVBY2Nlc3MoKVxuXG4gICAgaGFuZGxlQ2xvc2UoKVxuICB9LCBbXG4gICAgaXNTaG93UHJvY2Vzc0ZpbGVzLFxuICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyxcbiAgICBzdWNjZXNzVXBkYXRlLFxuICAgIHN1Y2Nlc3NDcmVhdGUsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgY3VycmVudFNlbGVjdGVkQWdlbnQ/LmlkLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2VzcyxcbiAgICB0LFxuICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgaGFuZGxlUmVzZXRTdWNjZXNzU2F2ZSxcbiAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIGNvbnN0IHdlYlNvY2tldEZ1bmN0aW9uID0gKHsgbW9kZWxfZGF0YTogbW9kZWxEYXRhIH06IHsgbW9kZWxfZGF0YTogYW55IH0pID0+IHtcbiAgICBjb25zdCBmaWxlU3RhdHVzID0gbW9kZWxEYXRhXG4gICAgaWYgKGZpbGVTdGF0dXMuc3RhdHVzID09PSAnZG9uZScgfHwgZmlsZVN0YXR1cy5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEtub3dsZWRnZSA9IHByZXYua25vd2xlZGdlLm1hcChmaWxlID0+IHtcbiAgICAgICAgICBpZiAoZmlsZS5uYW1lID09PSBmaWxlU3RhdHVzLmZpbGVuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5maWxlLFxuICAgICAgICAgICAgICBzdGF0dXM6IGZpbGVTdGF0dXMuc3RhdHVzLFxuICAgICAgICAgICAgICBpZDogZmlsZVN0YXR1cy5rbm93bGVkZ2VfYmFzZV9pZCB8fCBmaWxlLmlkLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmlsZVxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBoYXNQZW5kaW5nRmlsZXMgPSB1cGRhdGVkS25vd2xlZGdlLnNvbWUoZmlsZSA9PiBmaWxlLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKVxuICAgICAgICBjb25zdCBoYXNFcnJvckZpbGVzID0gdXBkYXRlZEtub3dsZWRnZS5zb21lKGZpbGUgPT4gZmlsZS5zdGF0dXMgPT09ICdmYWlsZWQnKVxuICAgICAgICBpZiAoaGFzRXJyb3JGaWxlcyAmJiAhaGFzUGVuZGluZ0ZpbGVzKSB7XG4gICAgICAgICAgaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAgIHNldElzU2hvd1Byb2Nlc3NGaWxlcyhmYWxzZSlcbiAgICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKFxuICAgICAgICAgICAgbW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gdCgnY29uZmlybUFnZW50VXBkYXRlZFdpdGhGaWxlc0Vycm9yJykgOiB0KCdjb25maXJtQWdlbnRXaXRoRmlsZXNFcnJvcicpXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNQZW5kaW5nRmlsZXMgJiYgIWhhc0Vycm9yRmlsZXMpIHtcbiAgICAgICAgICBoYXNQZW5kaW5nRmlsZXNSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICAgc2V0SXNTaG93UHJvY2Vzc0ZpbGVzKGZhbHNlKVxuXG4gICAgICAgICAgLy8gU2kgaGFiw61hIGFjY2VzcyBwZW5kaWVudGUgeSB5YSBlc3RhYmEgbWFuZWphZG8sIGZvcnphciBxdWUgZWwgdXNlRWZmZWN0IGRlIGFjY2VzcyBzZSBlamVjdXRlIGRlIG51ZXZvXG4gICAgICAgICAgaWYgKGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudC5oYXNBY3Rpb25GaWxlcyAmJiBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNldEZpbGVzUHJvY2Vzc2VkKHByZXZDb3VudCA9PiBwcmV2Q291bnQgKyAxKVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScgJiZcbiAgICAgICAgICAgICFhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgICAgICAgICFmaWxlc0ZpbmlzaGVkUmVmLmN1cnJlbnRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIFNpIGVzIGNyZWFjacOzbiBzaW4gYWNjZXNpYmlsaWRhZCwgbWFyY2FyIHF1ZSBsb3MgYXJjaGl2b3MgdGVybWluYXJvblxuICAgICAgICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgICAgc2V0RmlsZXNQcm9jZXNzZWQocHJldkNvdW50ID0+IHByZXZDb3VudCArIDEpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBrbm93bGVkZ2U6IHVwZGF0ZWRLbm93bGVkZ2UsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3VjY2Vzc0tub3dsZWRnZURlbGV0ZSAmJiAhaXNMb2FkaW5nS25vd2xlZGdlICYmICFlcnJvcktub3dsZWRnZSkge1xuICAgICAgLy8gU29sbyBjZXJyYXIgc2kgTk8gaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zXG4gICAgICBpZiAoaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgfHwgaXNTaG93UHJvY2Vzc0ZpbGVzIHx8IGFjdGlvbnNUb0ZpbGVzLmN1cnJlbnQudG9VcGxvYWQubGVuZ3RoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLy8gU2kgZWwgbG9hZGVyIHNlIGNlcnLDsyBwb3IgdGltZW91dCwgbm8gbW9zdHJhciBzbmFja2JhciBkZSDDqXhpdG8gbmkgY2VycmFyXG4gICAgICBpZiAocHJvY2Vzc0ZpbGVzVGltZWRPdXRSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRVcGRhdGVkJykpXG4gICAgICBoYW5kbGVSZXNldFN1Y2Nlc3NEZWxldGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cbiAgICBpZiAoZXJyb3JLbm93bGVkZ2UpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoXG4gICAgICAgIG1vZGFsVmFsdWVzLmlzRWRpdGluZyA/IHQoJ2NvbmZpcm1BZ2VudFVwZGF0ZWRXaXRoRmlsZXNFcnJvcicpIDogdCgnY29uZmlybUFnZW50V2l0aEZpbGVzRXJyb3InKVxuICAgICAgKVxuICAgICAgaGFuZGxlUmVzZXRTdWNjZXNzRGVsZXRlKClcbiAgICB9XG4gIH0sIFtzdWNjZXNzS25vd2xlZGdlRGVsZXRlLCBpc0xvYWRpbmdLbm93bGVkZ2UsIGVycm9yS25vd2xlZGdlLCBpc1Nob3dQcm9jZXNzRmlsZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudFxuXG4gICAgLy8gU2kgaGF5IGFyY2hpdm9zIHNpZW5kbyBwcm9jZXNhZG9zLCBlc3BlcmFyIGEgcXVlIHRlcm1pbmVuXG4gICAgaWYgKGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiYgKGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50IHx8IGlzU2hvd1Byb2Nlc3NGaWxlcykpIHtcbiAgICAgIC8vIFNpIHN1Y2Nlc3NVcGRhdGVBY2Nlc3MgZXN0w6EgYWN0aXZvLCBtYXJjYXIgY29tbyBtYW5lamFkbyBwZXJvIE5PIHJlc2V0ZWFyIGhhc3RhIHF1ZSB0ZXJtaW5lbiBsb3MgYXJjaGl2b3NcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzICYmICFhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gU2kgeWEgZnVlIG1hbmVqYWRvIHkgbm8gaGF5IGFyY2hpdm9zIHBlbmRpZW50ZXMsIGVqZWN1dGFyIGVsIGNpZXJyZVxuICAgIGlmIChhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgJiYgY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJiBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXN1Y2Nlc3NVcGRhdGVBY2Nlc3MpIHtcbiAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoYWNjZXNzSGFuZGxlZFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhY2Nlc3NIYW5kbGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzKClcblxuICAgIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICAvLyBTaSBoYXkgYXJjaGl2b3MsIGVsIGFnZW50ZSB5YSBmdWUgYWdyZWdhZG8geSBlbCB0b2dnbGUgeWEgc2UgaGl6byBlbiBzdWNjZXNzQ3JlYXRlXG4gICAgICAvLyBTb2xvIG5lY2VzaXRhbW9zIGNlcnJhciBlbCBtb2RhbFxuICAgICAgaWYgKGNvbnRleHQuaGFzQWN0aW9uRmlsZXMpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ2NvbmZpcm1BZ2VudENyZWF0ZWQnKSlcbiAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGZ1ZSBjcmVhZG8gY29uIGZhdm9yaXRvLCBuZWNlc2l0YW1vcyBvcmRlbmFyIGRlc3B1w6lzIGRlIGFncmVnYXJsb1xuICAgICAgY29uc3QgYWdlbnRUb0FkZCA9IG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUgPyB7IC4uLnN1Y2Nlc3NDcmVhdGUsIGlzX2Zhdm9yaXRlOiB0cnVlIH0gOiBzdWNjZXNzQ3JlYXRlXG5cbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICBhZGRBZ2VudChhZ2VudFRvQWRkKVxuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRUb0FkZClcblxuICAgICAgLy8gU2kgdGllbmUgZmF2b3JpdG8sIGhhY2VyIHRvZ2dsZSB5IGFjdHVhbGl6YXIgZXN0YWRvIGFudGVzIGRlIGNlcnJhclxuICAgICAgaWYgKG1vZGFsVmFsdWVzLmdlbmVyYWwuaXNfZmF2b3JpdGUpIHtcbiAgICAgICAgLy8gQ3VhbmRvIHNlIGNyZWEgdW4gYWdlbnRlIG51ZXZvLCBlbCBzZXJ2aWRvciBubyB0aWVuZSBlbCBmYXZvcml0byBtYXJjYWRvIGHDum5cbiAgICAgICAgLy8gRW50b25jZXMgY3VycmVudElzRmF2b3JpdGUgZGViZSBzZXIgZmFsc2UgcGFyYSBxdWUgZWwgdG9nZ2xlIGxvIG1hcnF1ZSBjb21vIHRydWVcbiAgICAgICAgY29uc3QgYWdlbnRGb3JUb2dnbGUgPSB7IC4uLmFnZW50VG9BZGQsIGlzX2Zhdm9yaXRlOiBmYWxzZSB9XG4gICAgICAgIGhhbmRsZVRvZ2dsZUZhdm9yaXRlRm9yQWdlbnQoXG4gICAgICAgICAgc3VjY2Vzc0NyZWF0ZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgIGFnZW50Rm9yVG9nZ2xlLFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIC8vIENlcnJhciBkZXNwdcOpcyBkZSBxdWUgZWwgdG9nZ2xlIGNvbXBsZXRlIHkgYWN0dWFsaWNlIGVsIGVzdGFkb1xuICAgICAgICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHJlc2V0U3VjY2Vzc0NyZWF0ZSgpXG4gICAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50VXBkYXRlZCcpKVxuICAgICAgdXBkYXRlQWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRBZ2VudD8uaWQgPT09IHN1Y2Nlc3NVcGRhdGUuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc3VjY2Vzc1VwZGF0ZSlcbiAgICAgIH1cbiAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZSgpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuXG4gICAgYWNjZXNzVXBkYXRlQ29udGV4dC5jdXJyZW50ID0ge1xuICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICBoYXNBY3Rpb25GaWxlczogZmFsc2UsXG4gICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgfVxuICB9LCBbc3VjY2Vzc1VwZGF0ZUFjY2VzcywgZmlsZXNQcm9jZXNzZWRdKVxuXG4gIC8vIHVzZUVmZmVjdCBwYXJhIG1hbmVqYXIgZWwgY2llcnJlIGRlbCBtb2RhbCBjdWFuZG8gdGVybWluYW4gbG9zIGFyY2hpdm9zIGVuIGNyZWFjacOzbiBzaW4gYWNjZXNpYmlsaWRhZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnRcblxuICAgIC8vIFNvbG8gcHJvY2VzYXIgc2k6XG4gICAgLy8gLSBFcyB1bmEgb3BlcmFjacOzbiBkZSBjcmVhY2nDs25cbiAgICAvLyAtIE5vIGhheSBhY2Nlc2liaWxpZGFkIHBlbmRpZW50ZVxuICAgIC8vIC0gTG9zIGFyY2hpdm9zIHRlcm1pbmFyb24gZGUgcHJvY2VzYXJzZVxuICAgIC8vIC0gRWwgYWdlbnRlIGZ1ZSBjcmVhZG8gZXhpdG9zYW1lbnRlXG4gICAgLy8gLSBBw7puIG5vIHNlIGhhIGNlcnJhZG8gZWwgbW9kYWxcbiAgICBpZiAoXG4gICAgICBjb250ZXh0Lm9wZXJhdGlvblR5cGUgPT09ICdjcmVhdGUnICYmXG4gICAgICAhY29udGV4dC5oYXNBY3Rpb25GaWxlcyAmJlxuICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ICYmXG4gICAgICBzdWNjZXNzQ3JlYXRlICYmXG4gICAgICAhaGFzUGVuZGluZ0ZpbGVzUmVmLmN1cnJlbnQgJiZcbiAgICAgICFpc1Nob3dQcm9jZXNzRmlsZXNcbiAgICApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdjb25maXJtQWdlbnRDcmVhdGVkJykpXG4gICAgICByZXNldFN1Y2Nlc3NDcmVhdGUoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgZmlsZXNGaW5pc2hlZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGFjY2Vzc1VwZGF0ZUNvbnRleHQuY3VycmVudCA9IHtcbiAgICAgICAgaXNGcm9tQ3JlYXRpb246IGZhbHNlLFxuICAgICAgICBpc0Zyb21FZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgaGFzQWN0aW9uRmlsZXM6IGZhbHNlLFxuICAgICAgICBvcGVyYXRpb25UeXBlOiBudWxsLFxuICAgICAgICBoYXNCZWVuQ2FsbGVkOiBmYWxzZSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYW1iacOpbiBtYW5lamFyIGVsIGNhc28gY3VhbmRvIGhheSBhY2Nlc2liaWxpZGFkIHkgYXJjaGl2b3MgdGVybWluYXJvblxuICAgIGlmIChcbiAgICAgIGNvbnRleHQub3BlcmF0aW9uVHlwZSA9PT0gJ2NyZWF0ZScgJiZcbiAgICAgIGNvbnRleHQuaGFzQWN0aW9uRmlsZXMgJiZcbiAgICAgIGFjY2Vzc0hhbmRsZWRSZWYuY3VycmVudCAmJlxuICAgICAgc3VjY2Vzc0NyZWF0ZSAmJlxuICAgICAgIWhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ICYmXG4gICAgICAhaXNTaG93UHJvY2Vzc0ZpbGVzXG4gICAgKSB7XG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnY29uZmlybUFnZW50Q3JlYXRlZCcpKVxuICAgICAgcmVzZXRTdWNjZXNzQ3JlYXRlKClcbiAgICAgIGlmIChzdWNjZXNzVXBkYXRlQWNjZXNzKSB7XG4gICAgICAgIHJlc2V0U3VjY2Vzc1VwZGF0ZUFjY2VzcygpXG4gICAgICB9XG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICBhY2Nlc3NVcGRhdGVDb250ZXh0LmN1cnJlbnQgPSB7XG4gICAgICAgIGlzRnJvbUNyZWF0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNGcm9tRWRpdGluZzogZmFsc2UsXG4gICAgICAgIGhhc0FjdGlvbkZpbGVzOiBmYWxzZSxcbiAgICAgICAgb3BlcmF0aW9uVHlwZTogbnVsbCxcbiAgICAgICAgaGFzQmVlbkNhbGxlZDogZmFsc2UsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgZmlsZXNQcm9jZXNzZWQsXG4gICAgc3VjY2Vzc0NyZWF0ZSxcbiAgICBzdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGlzU2hvd1Byb2Nlc3NGaWxlcyxcbiAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsXG4gICAgdCxcbiAgICByZXNldFN1Y2Nlc3NDcmVhdGUsXG4gICAgcmVzZXRTdWNjZXNzVXBkYXRlQWNjZXNzLFxuICAgIGhhbmRsZUNsb3NlLFxuICBdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2hvd1Byb2Nlc3NGaWxlcykge1xuICAgICAgY29uc3QgY2hhbm5lbCA9IGBrbm93bGVkZ2UtYmFzZS5zdGF0dXM6JHthZ2VudEJ5SWQgPyBhZ2VudEJ5SWQ/LmlkIDogc3VjY2Vzc0NyZWF0ZT8uaWQ/LnRvU3RyaW5nKCl9YFxuICAgICAgaWYgKCRfc2MpIHtcbiAgICAgICAgaWYgKGlzU3Vic2NyaWJlZCkge1xuICAgICAgICAgICRfc2M/LnN1YnNjcmliZUhhbmRsZXIoY2hhbm5lbCwgd2ViU29ja2V0RnVuY3Rpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbW9kZWxEYXRhID0ge1xuICAgICAgICAgICAgbW9kZWxfaGFzaDogY2hhbm5lbCxcbiAgICAgICAgICAgIGFjdGlvbjogJF9zYz8uYWN0aW9uVHlwZT8uU1VCU0NSSUJFLFxuICAgICAgICAgIH1cbiAgICAgICAgICAkX3NjPy51cGRhdGVDb25uZWN0aW9uTW9kZWwobW9kZWxEYXRhLCBjaGFubmVsLCB1c2VyLCB1c2VyLCAkX3NjLmNoYW5uZWxUeXBlPy5NT0RFTF9DSEFOTkVMKVxuICAgICAgICAgIHNldElzU3Vic2NyaWJlZCh0cnVlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNTaG93UHJvY2Vzc0ZpbGVzLCBpc1N1YnNjcmliZWQsICRfc2MsIGFnZW50QnlJZCwgc3VjY2Vzc0NyZWF0ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3BlbiB8fCAhYWdlbnRNb2RlbHMubGVuZ3RoKSByZXR1cm5cbiAgICBpZiAoYWdlbnRMb2FkaW5nICYmICFwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnQpIHJldHVyblxuXG4gICAgY29uc3QgYXBwbHlFZGl0aW5nQWdlbnQgPSAoc291cmNlOiBhbnkpID0+IHtcbiAgICAgIGlmIChzb3VyY2UudHlwZSAhPT0gJ2N1c3RvbScgfHwgIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBY2Nlc3NEZW5pZWQnKSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgc2V0TW9kYWxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgIGNvbnN0IGFnZW50VmFsdWVzVG9TZXQgPSBidWlsZEVkaXRpbmdNb2RhbFZhbHVlc0Zyb21BZ2VudERldGFpbChzb3VyY2UsIGFnZW50TW9kZWxzLCBwcmV2KVxuICAgICAgICBmaXJzdFZhbHVlQWdlbnQuY3VycmVudCA9IGFnZW50VmFsdWVzVG9TZXRcbiAgICAgICAgcmV0dXJuIGFnZW50VmFsdWVzVG9TZXRcbiAgICAgIH0pXG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICBpZiAocGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0U2VjdGlvbihwZW5kaW5nSW5pdGlhbFNlY3Rpb25SZWYuY3VycmVudClcbiAgICAgICAgcGVuZGluZ0luaXRpYWxTZWN0aW9uUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IHByZWZldGNoZWQgPSBwcmVmZXRjaGVkQWdlbnRCeUlkUmVmLmN1cnJlbnRcbiAgICBpZiAocHJlZmV0Y2hlZCkge1xuICAgICAgcHJlZmV0Y2hlZEFnZW50QnlJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYXBwbHlFZGl0aW5nQWdlbnQocHJlZmV0Y2hlZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChhZ2VudEJ5SWQgJiYgIWFnZW50TG9hZGluZyAmJiBhZ2VudE1vZGVscy5sZW5ndGgpIHtcbiAgICAgIGFwcGx5RWRpdGluZ0FnZW50KGFnZW50QnlJZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNMb2FkaW5nICYmICFhZ2VudExvYWRpbmcgJiYgIWFnZW50QnlJZCAmJiAhbW9kYWxWYWx1ZXMuaXNFZGl0aW5nKSB7XG4gICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgYWlNb2RlbDogYWdlbnRNb2RlbHNbMF0sXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9XG4gIH0sIFthZ2VudEJ5SWQsIGlzT3BlbiwgaXNMb2FkaW5nLCBhZ2VudExvYWRpbmcsIGFnZW50TW9kZWxzPy5sZW5ndGgsIG1vZGFsVmFsdWVzLmlzRWRpdGluZywgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXJyb3JHZXRBZ2VudEJ5SWQpIHtcbiAgICAgIGlmIChlcnJvckdldEFnZW50QnlJZCA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCIpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdlcnJvckFjY2Vzc0RlbmllZCcpKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihlcnJvckdldEFnZW50QnlJZClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9LCAzMDAwKVxuICAgIH1cbiAgfSwgW2Vycm9yR2V0QWdlbnRCeUlkXSlcblxuICBjb25zdCBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIW1vZGFsVmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jbGllbnRzIHx8IG1vZGFsVmFsdWVzLmFjY2Vzc2liaWxpdHkuY2xpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gbW9kYWxWYWx1ZXMuYWNjZXNzaWJpbGl0eS5jbGllbnRzLnNvbWUoY2xpZW50ID0+IGNsaWVudC5pc19hY3RpdmUgPT09IGZhbHNlIHx8IGNsaWVudC5pc19kZWxldGVkID09PSB0cnVlKVxuICB9LCBbbW9kYWxWYWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHNdKVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUZhdm9yaXRlID0gKCkgPT4ge1xuICAgIGlmIChtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaWQpIHtcbiAgICAgIC8vIEV4aXN0aW5nIGFnZW50XG4gICAgICB0b2dnbGVGYXZvcml0ZShcbiAgICAgICAgbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCxcbiAgICAgICAgdXBkYXRlZEFnZW50ID0+IHtcbiAgICAgICAgICBzZXRNb2RhbFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgICAgIGlzX2Zhdm9yaXRlOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pKVxuICAgICAgICAgIC8vIEFjdHVhbGl6YXIgZWwgZXN0YWRvIGRlIGFnZW50ZXMgeSBvcmRlbmFyIGN1YW5kbyBzZSBoYWNlIGRlc2RlIGVsIG1vZGFsIEFCTVxuICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUodXBkYXRlZEFnZW50LCB0cnVlKVxuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRGYXZvcml0ZSwge1xuICAgICAgICAgICAgb3B0aW9uOiB1cGRhdGVkQWdlbnQuaXNfZmF2b3JpdGUgPyAnYWRkJyA6ICdyZW1vdmUnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgbW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBuZXcgYWdlbnRcbiAgICAgIHNldE1vZGFsVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZ2VuZXJhbDoge1xuICAgICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgICBpc19mYXZvcml0ZTogIXByZXYuZ2VuZXJhbC5pc19mYXZvcml0ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pKVxuICAgIH1cbiAgfVxuXG4gIGlmICghaXNPcGVuIHx8ICghdXNlclBlcm1pc3Npb25zPy5jcmVhdGUgJiYgIXVzZXJQZXJtaXNzaW9ucz8uZWRpdCAmJiAhdXNlclBlcm1pc3Npb25zPy5kZWxldGUpKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17YWJtQWdlbnRNb2RhbFpJbmRleH0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBQU1XcmFwcGVyIHJlZj17bW9kYWxSZWZ9IHRhYkluZGV4PXstMX0+XG4gICAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgPFNDQUFNV3JhcHBlclNwaW5uZXI+XG4gICAgICAgICAgICA8U0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgICAgIDxTcGlubmVyTG90dGllIHNpemU9XCI4MHB4XCIgY29sb3I9XCJwcmltYXJ5XCIgLz5cbiAgICAgICAgICAgIDwvU0NBQU1XcmFwcGVyU3Bpbm5lckNvbnRlbnQ+XG4gICAgICAgICAgPC9TQ0FBTVdyYXBwZXJTcGlubmVyPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7aXNTaG93UHJvY2Vzc0ZpbGVzICYmIGhhc1BlbmRpbmdGaWxlc1JlZi5jdXJyZW50ID8gKFxuICAgICAgICAgICAgICA8QWJtTG9hZGVyRmlsZXNcbiAgICAgICAgICAgICAgICBhdHRhY2htZW50cz17bW9kYWxWYWx1ZXMua25vd2xlZGdlfVxuICAgICAgICAgICAgICAgIGxhYmVsPXt0KGBwcm9jZXNzaW5nS25vd2xlZGdlLiR7bW9kYWxWYWx1ZXMuaXNFZGl0aW5nID8gJ2Rlc2NyaXB0aW9uVXBkYXRlJyA6ICdkZXNjcmlwdGlvbkNyZWF0ZSd9YCl9XG4gICAgICAgICAgICAgICAgb25UaW1lb3V0PXtoYW5kbGVQcm9jZXNzRmlsZXNUaW1lb3V0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJMZWZ0PlxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFZhbHVlcz8uZ2VuZXJhbD8uaXNfZmF2b3JpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdnZW5lcmFsU2VjdGlvbi5yZW1vdmVGYXZvcml0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnZ2VuZXJhbFNlY3Rpb24uYWRkRmF2b3JpdGUnKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckZhdm9yaXRlIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZUZhdm9yaXRlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsyMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXsyMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcjRkZDNjI0JyA6ICcjYTZhNmE2J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD17bW9kYWxWYWx1ZXM/LmdlbmVyYWw/LmlzX2Zhdm9yaXRlID8gJyNGRkM2MjQnIDogJ25vbmUnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic29saWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e21vZGFsVmFsdWVzPy5nZW5lcmFsPy5pc19mYXZvcml0ZSA/ICcnIDogJ3N0YXItZmF2b3JpdGUtaWNvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXJGYXZvcml0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1IZWFkZXJUaXRsZT57bW9kYWxWYWx1ZXM/LmlzRWRpdGluZyA/IHQoJ2VkaXRBZ2VudCcpIDogdCgnbmV3QWdlbnQnKX08L1NDQUFNSGVhZGVyVGl0bGU+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNSGVhZGVyTGVmdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTUhlYWRlckNsb3NlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2FuY2VsTW9kYWwpXG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nIHx8IGlzTG9hZGluZ0tub3dsZWRnZSB8fCBpc0xvYWRpbmdDcmVhdGUgfHwgaXNMb2FkaW5nVXBkYXRlQWNjZXNzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ0FBTUhlYWRlckNsb3NlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU0NBQU1IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFNQ29udGVudCBoYXNTY3JvbGw9e3NlY3Rpb24gIT09ICdrbm93bGVkZ2UnfT5cbiAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXI+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmU9e3NlY3Rpb24gPT09ICdnZW5lcmFsJ31cbiAgICAgICAgICAgICAgICAgICAgICAkaW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VjdGlvbkNoYW5nZSgnZ2VuZXJhbCcpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWdlbmVyYWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPENhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2dlbmVyYWwnID8gJ3JnYmEoNjMsIDYzLCA2MywgMSknIDogJ3JnYmEoMTY2LCAxNjYsIDE2NiwgMSknfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9ezE4fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1UaXRsZSBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2dlbmVyYWwnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdnZW5lcmFsU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2tub3dsZWRnZSd9XG4gICAgICAgICAgICAgICAgICAgICAgJGluZGV4PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlY3Rpb25DaGFuZ2UoJ2tub3dsZWRnZScpfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWFnZW50LW1vZGFsLWtub3dsZWRnZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QnJhaW5JY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17YCR7c2VjdGlvbiA9PT0gJ2tub3dsZWRnZScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAna25vd2xlZGdlJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi50aXRsZScpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TaWRlYmFySXRlbVRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUFNU2lkZWJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZT17c2VjdGlvbiA9PT0gJ2FjY2Vzc2liaWxpdHknfVxuICAgICAgICAgICAgICAgICAgICAgICRpbmRleD17Mn1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWN0aW9uQ2hhbmdlKCdhY2Nlc3NpYmlsaXR5Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhYm0tYWdlbnQtbW9kYWwtYWNjZXNzaWJpbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJpbGl0eUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtgJHtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eScgPyAncmdiYSg2MywgNjMsIDYzLCAxKScgOiAncmdiYSgxNjYsIDE2NiwgMTY2LCAxKSd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBQU1TaWRlYmFySXRlbVRpdGxlIGlzQWN0aXZlPXtzZWN0aW9uID09PSAnYWNjZXNzaWJpbGl0eSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnRpdGxlVGFiJyl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FBTVNpZGViYXJJdGVtVGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAge3Nob3VsZERpc2FibGVTYXZlRm9yQ2xpZW50cyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY2xpZW50c0Vycm9yJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ0FBTVNpZGViYXJJdGVtRXJyb3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IGNvbG9yPVwiI0M3MDUwNVwiIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW1FcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhckl0ZW0+XG4gICAgICAgICAgICAgICAgICA8L1NDQUFNU2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgIHtTZWN0aW9uQnlLZXlbc2VjdGlvbl0oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IG1vZGFsVmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlczogaGFuZGxlU2V0QWdlbnRWYWx1ZXNCeUtleXMsXG4gICAgICAgICAgICAgICAgICAgIGFnZW50TW9kZWxzLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBuZXdLbm93bGVkZ2U6IFtdLFxuICAgICAgICAgICAgICAgICAgICBvblJlbW92ZUV4aXN0aW5nS25vd2xlZGdlOiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVOZXdLbm93bGVkZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICAgICBvbkZpbGVFcnJvckNoYW5nZTogc2V0SGFzRmlsZUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleCxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvU0NBQU1Db250ZW50PlxuICAgICAgICAgICAgICAgIDxTQ0FBTUZvb3RlciBpc0VkaXRpbmc9eyEhbW9kYWxWYWx1ZXM/LmlzRWRpdGluZyAmJiAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlfT5cbiAgICAgICAgICAgICAgICAgIHshIW1vZGFsVmFsdWVzPy5pc0VkaXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5XaXRoSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2hvd01vZGFsRGVsZXRlKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc0xvYWRpbmcgfHwgaXNMb2FkaW5nS25vd2xlZGdlIHx8IGlzTG9hZGluZ0NyZWF0ZSB8fCBpc0xvYWRpbmdVcGRhdGVBY2Nlc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxXcmFwcGVyQ2VudGVySWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJhc2ggY29sb3I9XCIjMDhjXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdkZWxldGVBZ2VudCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1dyYXBwZXJDZW50ZXJJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9DVUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDQUFNRGVsZXRlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGdhcDogJzI0cHgnIH19PlxuICAgICAgICAgICAgICAgICAgICA8U0NBQU1TYXZlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAhdmFsaWRhdGVGaWVsZFZhbHVlcyhtb2RhbFZhbHVlcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlQWdlbnRWYWx1ZXNJc1NhbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ0NyZWF0ZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXBkYXRlQWNjZXNzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0ZpbGVFcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24obnVsbCwgJ2NyZWF0ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAhdmFsaWRhdGVGaWVsZFZhbHVlcyhtb2RhbFZhbHVlcykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVBZ2VudFZhbHVlc0lzU2FtZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdLbm93bGVkZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nQ3JlYXRlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZ1VwZGF0ZUFjY2VzcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGREaXNhYmxlU2F2ZUZvckNsaWVudHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRmlsZUVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHttb2RhbFZhbHVlcy5pc0VkaXRpbmcgPyB0KCdzYXZlQ2hhbmdlcycpIDogdCgnY3JlYXRlQWdlbnRMYWJlbEJ1dHRvbicpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NBQU1TYXZlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9TQ0FBTUZvb3Rlcj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9TQ0FBTVdyYXBwZXI+XG4gICAgICB7c2hvd01vZGFsRGVsZXRlICYmIChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TW9kYWxEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiAocHJvcHM6IGFueSkgPT4gaGFuZGxlQ29uZmlybUFjdGlvbihwcm9wcywgJ2RlbGV0ZScpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5uYW1lLCBpZDogbW9kYWxWYWx1ZXMuZ2VuZXJhbC5pZCB9fVxuICAgICAgICAgIGFjdGlvbj1cImFnZW50XCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9CYWNrZHJvcD4sXG4gICAgc2VsZWN0b3JcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFdBQVcsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLFNBQVNDLFFBQVEsUUFBUSw0Q0FBNEM7QUFDckUsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLGFBQWEsUUFBUSx1REFBdUQ7QUFDckYsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyx1QkFBdUIsUUFBUSw0RUFBNEU7QUFDcEgsU0FBU0MsUUFBUSxRQUFRLHNCQUFzQjtBQUMvQyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLGlCQUFpQixFQUFFQyxTQUFTLFFBQVEsbUJBQW1CO0FBQ2hFLFNBQVNDLGFBQWEsUUFBUSw0Q0FBNEM7QUFFMUUsU0FBU0MsZUFBZSxRQUFRLDRDQUE0QztBQUU1RSxTQUFTQyxpQkFBaUIsRUFBRUMsbUJBQW1CLFFBQVEsNEJBQTRCO0FBRW5GLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLGdCQUFnQixFQUNoQkMsZUFBZSxFQUNmQyxtQkFBbUIsRUFDbkJDLHNCQUFzQixFQUN0QkMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMscUJBQXFCLEVBQ3JCQyxpQkFBaUIsRUFDakJDLGVBQWUsRUFDZkMsbUJBQW1CLEVBQ25CQywwQkFBMEIsRUFDMUJDLHFCQUFxQixRQUNoQix3QkFBd0I7QUFDL0IsU0FBU0MsY0FBYyxRQUFRLDZDQUE2QztBQUM1RSxTQUFTQyxjQUFjLFFBQVEsNkNBQTZDO0FBQzVFLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFDbEUsU0FBU0MsY0FBYyxRQUFRLDZDQUE2QztBQUM1RSxTQUFTQyxzQkFBc0IsUUFBUSw2QkFBNkI7QUFDcEUsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxpQkFBaUIsUUFBUSwrQkFBK0I7QUFDakUsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQzFELFNBQVNDLG1CQUFtQixRQUFRLDRDQUE0QztBQUNoRixTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFDOUUsU0FBU0MsZUFBZSxRQUFRLGdEQUFnRDtBQUNoRixTQUFTQyxpQkFBaUIsUUFBUSxnQkFBZ0I7QUFDbEQsU0FDRUMsaUNBQWlDLEVBQ2pDQyxrQkFBa0IsRUFDbEJDLG9CQUFvQixFQUNwQkMsMkJBQTJCLFFBQ3RCLHlDQUF5QztBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUEsRUFBQUMsUUFBQSxJQUFBQyxTQUFBO0FBRWhELElBQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUM7RUFDbENDLFNBQVMsRUFBRSxLQUFLO0VBQ2hCQyxTQUFTLEVBQUUsRUFBRTtFQUNiQyxPQUFPLEVBQUU7SUFDUEMsSUFBSSxFQUFFLEVBQUU7SUFDUkMsS0FBSyxFQUFFLEVBQUU7SUFDVEMsWUFBWSxFQUFFLEVBQUU7SUFDaEJDLGdCQUFnQixFQUFFLEVBQUU7SUFDcEJDLFFBQVEsRUFBRSxLQUFLO0lBQ2ZDLE9BQU8sRUFBRSxJQUFJO0lBQ2JDLEVBQUUsRUFBRSxJQUFJO0lBQ1JDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCQyxjQUFjLEVBQUUsRUFBRTtJQUNsQkMsV0FBVyxFQUFFO0VBQ2YsQ0FBQztFQUNEQyxhQUFhLEVBQUU7SUFDYkMsVUFBVSxFQUFFLFNBQVM7SUFDckJDLE9BQU8sRUFBRSxJQUFJO0lBQ2JDLFNBQVMsRUFBRTVCO0VBQ2I7QUFDRixDQUFDLENBQUM7QUFJRixPQUFPLElBQU02QixZQUFZLEdBQUc7RUFDMUJmLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFHZ0IsS0FjVDtJQUFBLG9CQUFLMUIsSUFBQSxDQUFDckMsaUJBQWlCLEVBQUFnRSxhQUFBLEtBQUtELEtBQUssQ0FBRyxDQUFDO0VBQUE7RUFDdENqQixTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBR2lCLEtBU1g7SUFBQSxvQkFBSzFCLElBQUEsQ0FBQ3BDLG1CQUFtQixFQUFBK0QsYUFBQSxLQUFLRCxLQUFLLENBQUcsQ0FBQztFQUFBO0VBQ3hDTCxhQUFhLEVBQUUsU0FBZkEsYUFBYUEsQ0FBR0ssS0FHZjtJQUFBLG9CQUFLMUIsSUFBQSxDQUFDNUMsdUJBQXVCLEVBQUF1RSxhQUFBLEtBQUtELEtBQUssQ0FBRyxDQUFDO0VBQUE7QUFDOUMsQ0FBQztBQVVELElBQU1FLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLGVBQTRCLEVBQUs7RUFDNUQsSUFBSSxDQUFDQSxlQUFlLENBQUNuQixPQUFPLENBQUNDLElBQUksSUFBSSxDQUFDa0IsZUFBZSxDQUFDbkIsT0FBTyxDQUFDUSxVQUFVLEVBQUU7SUFDeEUsT0FBTyxLQUFLO0VBQ2Q7RUFDQSxPQUFPLElBQUk7QUFDYixDQUFDOztBQUVEO0FBQ0EsU0FBU1ksc0NBQXNDQSxDQUM3Q0MsU0FBYyxFQUNkQyxXQUF5QixFQUN6QkMsSUFBaUIsRUFDSjtFQUFBLElBQUFDLHFCQUFBLEVBQUFDLGtCQUFBO0VBQ2IsSUFBTUMsVUFBVSxHQUFHSixXQUFXLENBQUNLLElBQUksQ0FBQyxVQUFBQyxLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDckIsRUFBRSxLQUFLYyxTQUFTLENBQUNRLFNBQVM7RUFBQSxFQUFDO0VBQzlFLE9BQUFaLGFBQUEsQ0FBQUEsYUFBQSxLQUNLTSxJQUFJO0lBQ1B6QixTQUFTLEVBQUUsSUFBSTtJQUNmRSxPQUFPLEVBQUU7TUFDUEUsS0FBSyxFQUFFbUIsU0FBUyxDQUFDbkIsS0FBSztNQUN0QkQsSUFBSSxFQUFFb0IsU0FBUyxDQUFDcEIsSUFBSTtNQUNwQkUsWUFBWSxFQUFFa0IsU0FBUyxDQUFDbEIsWUFBWTtNQUNwQ0MsZ0JBQWdCLEVBQUVpQixTQUFTLENBQUNqQixnQkFBZ0I7TUFDNUNDLFFBQVEsRUFBRWdCLFNBQVMsQ0FBQ2hCLFFBQVE7TUFDNUJDLE9BQU8sRUFBRW9CLFVBQVUsSUFBSSxJQUFJO01BQzNCbkIsRUFBRSxFQUFFYyxTQUFTLENBQUNkLEVBQUU7TUFDaEJDLFVBQVUsRUFBRWEsU0FBUyxDQUFDYixVQUFVO01BQ2hDQyxjQUFjLEVBQUUsRUFBRTtNQUNsQkMsV0FBVyxFQUFFVyxTQUFTLENBQUNYLFdBQVc7TUFDbENvQixVQUFVLEVBQUVULFNBQVMsQ0FBQ1U7SUFDeEIsQ0FBQztJQUNEaEMsU0FBUyxFQUNQLEVBQUF5QixxQkFBQSxHQUFBSCxTQUFTLENBQUNaLGNBQWMsY0FBQWUscUJBQUEsdUJBQXhCQSxxQkFBQSxDQUEwQlEsR0FBRyxDQUFDLFVBQUNDLENBQU07TUFBQSxPQUFNO1FBQ3pDQyxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLEVBQUUsRUFBRUYsQ0FBQyxDQUFDRyxRQUFRLENBQUM7UUFDOUI3QixFQUFFLEVBQUUwQixDQUFDLENBQUMxQixFQUFFLENBQUM4QixRQUFRLENBQUMsQ0FBQztRQUNuQnBDLElBQUksRUFBRWdDLENBQUMsQ0FBQ0csUUFBUTtRQUNoQkUsSUFBSSxFQUFFTCxDQUFDLENBQUNNLGVBQWUsSUFBSSxDQUFDO1FBQzVCQyxJQUFJLEVBQUVQLENBQUMsQ0FBQ1Esa0JBQWtCO1FBQzFCQyxNQUFNLEVBQUVULENBQUMsQ0FBQ1MsTUFBTTtRQUNoQkMsWUFBWSxFQUFFVixDQUFDLENBQUNVLFlBQVksSUFBSUMsU0FBUztRQUN6Q0MsYUFBYSxFQUFFWixDQUFDLENBQUNZLGFBQWEsSUFBSUQ7TUFDcEMsQ0FBQztJQUFBLENBQUMsQ0FBQyxLQUFJLEVBQUU7SUFDWGpDLGFBQWEsRUFBRTtNQUNiQyxVQUFVLEVBQUVTLFNBQVMsQ0FBQ3lCLE1BQU07TUFDNUJqQyxPQUFPLEVBQ0wsRUFBQVksa0JBQUEsR0FBQUosU0FBUyxDQUFDUixPQUFPLGNBQUFZLGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUJPLEdBQUcsQ0FBQyxVQUFDZSxNQUFXO1FBQUEsSUFBQUMsVUFBQSxFQUFBQyxpQkFBQSxFQUFBQyxrQkFBQTtRQUFBLE9BQU07VUFDdkMzQyxFQUFFLEVBQUUsRUFBQXlDLFVBQUEsR0FBQUQsTUFBTSxDQUFDeEMsRUFBRSxjQUFBeUMsVUFBQSx1QkFBVEEsVUFBQSxDQUFXWCxRQUFRLENBQUMsQ0FBQyxLQUFJLEVBQUU7VUFDL0JwQyxJQUFJLEVBQUU4QyxNQUFNLENBQUM5QyxJQUFJO1VBQ2pCa0QsU0FBUyxHQUFBRixpQkFBQSxHQUFFRixNQUFNLENBQUNJLFNBQVMsY0FBQUYsaUJBQUEsY0FBQUEsaUJBQUEsR0FBSSxLQUFLO1VBQ3BDRyxVQUFVLEdBQUFGLGtCQUFBLEdBQUVILE1BQU0sQ0FBQ0ssVUFBVSxjQUFBRixrQkFBQSxjQUFBQSxrQkFBQSxHQUFJO1FBQ25DLENBQUM7TUFBQSxDQUFDLENBQUMsS0FBSSxJQUFJO01BQ2JwQyxTQUFTLEVBQUU3QixpQ0FBaUMsQ0FBQ29DLFNBQVMsQ0FBQ2dDLGNBQWM7SUFDdkU7RUFBQztBQUVMO0FBRUEsT0FBTyxJQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUFDLElBQUEsRUFNQTtFQUFBLElBQUFDLGlCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHFCQUFBO0VBQUEsSUFMeEJDLFFBQVEsR0FBQVAsSUFBQSxDQUFSTyxRQUFRO0lBQ1JDLFdBQVcsR0FBQVIsSUFBQSxDQUFYUSxXQUFXO0lBQ1hDLFdBQVcsR0FBQVQsSUFBQSxDQUFYUyxXQUFXO0lBQ1hDLG1CQUFtQixHQUFBVixJQUFBLENBQW5CVSxtQkFBbUI7SUFDbkJDLGdCQUFnQixHQUFBWCxJQUFBLENBQWhCVyxnQkFBZ0I7RUFFaEIsSUFBTUMsSUFBSSxHQUFHdkgsT0FBTyxDQUFDLENBQUM7RUFDdEIsSUFBTXdILGNBQWMsR0FBR3hGLFFBQVEsQ0FBQyxDQUFDO0VBQ2pDLElBQUF5RixlQUFBLEdBQWNwSSxjQUFjLENBQUMsbUJBQW1CLENBQUM7SUFBekNxSSxDQUFDLEdBQUFELGVBQUEsQ0FBREMsQ0FBQztFQUNUO0VBQ0EsSUFBQUMsaUJBQUEsR0FBcURqRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQXhEa0csb0JBQW9CLEdBQUFELGlCQUFBLENBQTNCRSxLQUFLO0lBQXdCQyxXQUFXLEdBQUFILGlCQUFBLENBQVhHLFdBQVc7RUFDaEQsSUFBTUMsbUJBQW1CLEdBQUc3RixzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDO0VBQ3RFLElBQU04RixhQUFhLEdBQUc5RixzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDO0VBQ2pFLElBQUErRixrQkFBQSxHQUEyQjdGLGlCQUFpQixDQUFDLENBQUM7SUFBdEM4RixjQUFjLEdBQUFELGtCQUFBLENBQWRDLGNBQWM7RUFDdEIsSUFBTUMsUUFBUSxHQUFHQyxRQUFRLENBQUNDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztFQUMzRCxJQUFBQyxTQUFBLEdBQXdDcEosUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBcUosVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBaERHLFlBQVksR0FBQUYsVUFBQTtJQUFFRyxlQUFlLEdBQUFILFVBQUE7RUFDcEMsSUFBTUksUUFBUSxHQUFHMUosTUFBTSxDQUFpQixJQUFJLENBQUM7RUFDN0MsSUFBTTJKLGtCQUFrQixHQUFHM0osTUFBTSxDQUFDLEtBQUssQ0FBQztFQUN4QyxJQUFNNEosY0FBYyxHQUFHNUosTUFBTSxDQUFNO0lBQ2pDNkosUUFBUSxFQUFFLEVBQUU7SUFDWkMsUUFBUSxFQUFFO0VBQ1osQ0FBQyxDQUFDO0VBQ0YsSUFBTUMsbUJBQW1CLEdBQUcvSixNQUFNLENBTS9CO0lBQ0RnSyxjQUFjLEVBQUUsS0FBSztJQUNyQkMsYUFBYSxFQUFFLEtBQUs7SUFDcEJDLGNBQWMsRUFBRSxLQUFLO0lBQ3JCQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsYUFBYSxFQUFFO0VBQ2pCLENBQUMsQ0FBQztFQUNGLElBQU1DLGdCQUFnQixHQUFHckssTUFBTSxDQUFDLEtBQUssQ0FBQztFQUN0QyxJQUFNc0ssZUFBZSxHQUFHdEssTUFBTSxDQUFnQixJQUFJLENBQUM7RUFDbkQsSUFBTXVLLHdCQUF3QixHQUFHdkssTUFBTSxDQUFvQixJQUFJLENBQUM7RUFDaEUsSUFBTXdLLHNCQUFzQixHQUFHeEssTUFBTSxDQUFNLElBQUksQ0FBQztFQUNoRCxJQUFNeUssZ0JBQWdCLEdBQUd6SyxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ3RDO0VBQ0E7RUFDQTtFQUNBLElBQU0wSyx1QkFBdUIsR0FBRzFLLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDN0MsSUFBQTJLLFVBQUEsR0FBNEMxSyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQUEySyxVQUFBLEdBQUFyQixjQUFBLENBQUFvQixVQUFBO0lBQWhERSxjQUFjLEdBQUFELFVBQUE7SUFBRUUsaUJBQWlCLEdBQUFGLFVBQUE7RUFDeEMsSUFBQUcsVUFBQSxHQUE0QjlLLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQStLLFVBQUEsR0FBQXpCLGNBQUEsQ0FBQXdCLFVBQUE7SUFBcENFLE1BQU0sR0FBQUQsVUFBQTtJQUFFRSxTQUFTLEdBQUFGLFVBQUE7RUFDeEIsSUFBQUcsVUFBQSxHQUE4Q2xMLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQW1MLFVBQUEsR0FBQTdCLGNBQUEsQ0FBQTRCLFVBQUE7SUFBdERFLGVBQWUsR0FBQUQsVUFBQTtJQUFFRSxrQkFBa0IsR0FBQUYsVUFBQTtFQUMxQyxJQUFBRyxVQUFBLEdBQThCdEwsUUFBUSxDQUFhLFNBQVMsQ0FBQztJQUFBdUwsVUFBQSxHQUFBakMsY0FBQSxDQUFBZ0MsVUFBQTtJQUF0REUsT0FBTyxHQUFBRCxVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUMxQixJQUFBRyxVQUFBLEdBQWtDMUwsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBMkwsV0FBQSxHQUFBckMsY0FBQSxDQUFBb0MsVUFBQTtJQUExQ0UsU0FBUyxHQUFBRCxXQUFBO0lBQUVFLFlBQVksR0FBQUYsV0FBQTtFQUM5QixJQUFBRyxXQUFBLEdBQXNDOUwsUUFBUSxDQUszQzZELGFBQWEsQ0FBQztJQUFBa0ksV0FBQSxHQUFBekMsY0FBQSxDQUFBd0MsV0FBQTtJQUxWRSxXQUFXLEdBQUFELFdBQUE7SUFBRUUsY0FBYyxHQUFBRixXQUFBO0VBTWxDLElBQUFHLGdCQUFBLEdBTUloTCxlQUFlLENBQUMsQ0FBQztJQUxWaUwsWUFBWSxHQUFBRCxnQkFBQSxDQUFyQkUsT0FBTztJQUNQQyxrQkFBa0IsR0FBQUgsZ0JBQUEsQ0FBbEJHLGtCQUFrQjtJQUNYOUcsU0FBUyxHQUFBMkcsZ0JBQUEsQ0FBaEJ2RCxLQUFLO0lBQ0wyRCxnQkFBZ0IsR0FBQUosZ0JBQUEsQ0FBaEJJLGdCQUFnQjtJQUNUQyxpQkFBaUIsR0FBQUwsZ0JBQUEsQ0FBeEJNLEtBQUs7RUFFUCxJQUFBQyxjQUFBLEdBQTJDeEwsYUFBYSxDQUFDLENBQUM7SUFBbER1RSxXQUFXLEdBQUFpSCxjQUFBLENBQVhqSCxXQUFXO0lBQUVrSCxpQkFBaUIsR0FBQUQsY0FBQSxDQUFqQkMsaUJBQWlCO0VBQ3RDLElBQU1DLGVBQWUsR0FBRzVNLE1BQU0sQ0FBTSxJQUFJLENBQUM7RUFDekMsSUFBQTZNLFdBQUEsR0FBb0Q1TSxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUE2TSxXQUFBLEdBQUF2RCxjQUFBLENBQUFzRCxXQUFBO0lBQTVERSxrQkFBa0IsR0FBQUQsV0FBQTtJQUFFRSxxQkFBcUIsR0FBQUYsV0FBQTtFQUNoRCxJQUFBRyxXQUFBLEdBQTBDaE4sUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBaU4sV0FBQSxHQUFBM0QsY0FBQSxDQUFBMEQsV0FBQTtJQUFsREUsYUFBYSxHQUFBRCxXQUFBO0lBQUVFLGdCQUFnQixHQUFBRixXQUFBO0VBRXRDLElBQU1HLGVBQWUsR0FBRy9FLElBQUksYUFBSkEsSUFBSSxnQkFBQVgsaUJBQUEsR0FBSlcsSUFBSSxDQUFFZ0YsV0FBVyxjQUFBM0YsaUJBQUEsdUJBQWpCQSxpQkFBQSxDQUFtQjRGLFNBQVM7RUFFcEQsSUFBQUMsZUFBQSxHQUFvRWpMLGNBQWMsQ0FBQyxDQUFDO0lBQTVFa0wsaUJBQWlCLEdBQUFELGVBQUEsQ0FBakJDLGlCQUFpQjtJQUFXQyxhQUFhLEdBQUFGLGVBQUEsQ0FBdEJHLE9BQU87SUFBaUJDLFlBQVksR0FBQUosZUFBQSxDQUFaSSxZQUFZO0VBQy9ELElBQUFDLGVBQUEsR0FBd0ZuTCxjQUFjLENBQUMsQ0FBQztJQUFoR29MLGlCQUFpQixHQUFBRCxlQUFBLENBQWpCQyxpQkFBaUI7SUFBV0MsYUFBYSxHQUFBRixlQUFBLENBQXRCRixPQUFPO0lBQStCSyxrQkFBa0IsR0FBQUgsZUFBQSxDQUFoQ0QsWUFBWTtFQUUvRCxJQUFBSyxlQUFBLEdBS0kzTCxjQUFjLENBQUMsQ0FBQztJQUpsQjRMLGlCQUFpQixHQUFBRCxlQUFBLENBQWpCQyxpQkFBaUI7SUFDTkMsZUFBZSxHQUFBRixlQUFBLENBQTFCcEMsU0FBUztJQUNBdUMsYUFBYSxHQUFBSCxlQUFBLENBQXRCTixPQUFPO0lBQ09VLGtCQUFrQixHQUFBSixlQUFBLENBQWhDTCxZQUFZO0VBR2QsSUFBQVUsbUJBQUEsR0FBdUQ5TCxrQkFBa0IsQ0FBQyxDQUFDO0lBQW5FK0wscUJBQXFCLEdBQUFELG1CQUFBLENBQXJCQyxxQkFBcUI7SUFBRUMsbUJBQW1CLEdBQUFGLG1CQUFBLENBQW5CRSxtQkFBbUI7RUFFbEQsSUFBQUMscUJBQUEsR0FTSTlMLHNCQUFzQixDQUFDLENBQUM7SUFSMUIrTCxzQkFBc0IsR0FBQUQscUJBQUEsQ0FBdEJDLHNCQUFzQjtJQUN0QkMsc0JBQXNCLEdBQUFGLHFCQUFBLENBQXRCRSxzQkFBc0I7SUFDdEJDLCtCQUErQixHQUFBSCxxQkFBQSxDQUEvQkcsK0JBQStCO0lBQ3BCQyxrQkFBa0IsR0FBQUoscUJBQUEsQ0FBN0I1QyxTQUFTO0lBQ0ZpRCxjQUFjLEdBQUFMLHFCQUFBLENBQXJCaEMsS0FBSztJQUNVc0Msc0JBQXNCLEdBQUFOLHFCQUFBLENBQXJDZixhQUFhO0lBQ2JzQixzQkFBc0IsR0FBQVAscUJBQUEsQ0FBdEJPLHNCQUFzQjtJQUN0QkMsd0JBQXdCLEdBQUFSLHFCQUFBLENBQXhCUSx3QkFBd0I7RUFHMUIsSUFBQUMsZ0JBQUEsR0FLSWhNLGVBQWUsQ0FBQyxDQUFDO0lBSm5CaU0sa0JBQWtCLEdBQUFELGdCQUFBLENBQWxCQyxrQkFBa0I7SUFDVEMsbUJBQW1CLEdBQUFGLGdCQUFBLENBQTVCdkIsT0FBTztJQUNJMEIscUJBQXFCLEdBQUFILGdCQUFBLENBQWhDckQsU0FBUztJQUNXeUQsd0JBQXdCLEdBQUFKLGdCQUFBLENBQTVDSyxrQkFBa0I7RUFHcEIsSUFBSSxDQUFDckcsUUFBUSxFQUFFLE9BQU8sSUFBSTtFQUUxQixJQUFNc0cscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsUUFBc0IsRUFBRUMsUUFBc0IsRUFBSztJQUNoRixJQUFJLENBQUNELFFBQVEsSUFBSSxDQUFDQyxRQUFRLEVBQUUsT0FBTyxJQUFJO0lBQ3ZDLElBQUksQ0FBQ0QsUUFBUSxJQUFJLENBQUNDLFFBQVEsRUFBRSxPQUFPLEtBQUs7SUFDeEMsSUFBSUQsUUFBUSxDQUFDRSxNQUFNLEtBQUtELFFBQVEsQ0FBQ0MsTUFBTSxFQUFFLE9BQU8sS0FBSztJQUVyRCxJQUFNQyxXQUFXLEdBQUdILFFBQVEsQ0FBQ3RKLEdBQUcsQ0FBQyxVQUFBMEosQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ0MsUUFBUTtJQUFBLEVBQUMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7SUFDeEQsSUFBTUMsV0FBVyxHQUFHTixRQUFRLENBQUN2SixHQUFHLENBQUMsVUFBQTBKLENBQUM7TUFBQSxPQUFJQSxDQUFDLENBQUNDLFFBQVE7SUFBQSxFQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBRXhELE9BQU9ILFdBQVcsQ0FBQ0ssS0FBSyxDQUFDLFVBQUN2TCxFQUFFLEVBQUV3TCxLQUFLO01BQUEsT0FBS3hMLEVBQUUsS0FBS3NMLFdBQVcsQ0FBQ0UsS0FBSyxDQUFDO0lBQUEsRUFBQztFQUNwRSxDQUFDO0VBRUQsSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBQSxFQUFTO0lBQUEsSUFBQUMscUJBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUE7SUFDcEMsSUFBSSxHQUFBRixxQkFBQSxHQUFDeEQsZUFBZSxDQUFDMkQsT0FBTyxjQUFBSCxxQkFBQSxlQUF2QkEscUJBQUEsQ0FBeUJ0TCxhQUFhLEtBQUksRUFBQ21ILFdBQVcsYUFBWEEsV0FBVyxlQUFYQSxXQUFXLENBQUVuSCxhQUFhLEdBQUUsT0FBTyxJQUFJO0lBRXZGLElBQU0wTCxjQUFjLEdBQUd2RSxXQUFXLENBQUNuSCxhQUFhLENBQUNDLFVBQVUsS0FBSzZILGVBQWUsQ0FBQzJELE9BQU8sQ0FBQ3pMLGFBQWEsQ0FBQ0MsVUFBVTtJQUNoSCxJQUFNMEwsV0FBVyxHQUFHakIscUJBQXFCLENBQ3ZDdkQsV0FBVyxDQUFDbkgsYUFBYSxDQUFDRSxPQUFPLEVBQ2pDNEgsZUFBZSxDQUFDMkQsT0FBTyxDQUFDekwsYUFBYSxDQUFDRSxPQUN4QyxDQUFDO0lBQ0QsSUFBTTBMLGdCQUFnQixJQUFBTCxxQkFBQSxHQUFHcEUsV0FBVyxDQUFDbkgsYUFBYSxDQUFDRyxTQUFTLGNBQUFvTCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJaE4sa0JBQWtCO0lBQ2xGLElBQU1zTixnQkFBZ0IsSUFBQUwsc0JBQUEsR0FBRzFELGVBQWUsQ0FBQzJELE9BQU8sQ0FBQ3pMLGFBQWEsQ0FBQ0csU0FBUyxjQUFBcUwsc0JBQUEsY0FBQUEsc0JBQUEsR0FBSWpOLGtCQUFrQjtJQUM5RixJQUFNdU4sYUFBYSxHQUFHdE4sb0JBQW9CLENBQUMyTSxLQUFLLENBQUMsVUFBQVksSUFBSTtNQUFBLE9BQUlILGdCQUFnQixDQUFDRyxJQUFJLENBQUMsS0FBS0YsZ0JBQWdCLENBQUNFLElBQUksQ0FBQztJQUFBLEVBQUM7SUFFM0csT0FBTyxDQUFDTCxjQUFjLElBQUksQ0FBQ0MsV0FBVyxJQUFJLENBQUNHLGFBQWE7RUFDMUQsQ0FBQztFQUVELElBQU1FLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUEsRUFBUztJQUFBLElBQUFDLHNCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHFCQUFBLEVBQUFDLHNCQUFBO0lBQ3RDLElBQUksR0FBQVIsc0JBQUEsR0FBQ25FLGVBQWUsQ0FBQzJELE9BQU8sY0FBQVEsc0JBQUEsZUFBdkJBLHNCQUFBLENBQXlCNU0sT0FBTyxLQUFJLEVBQUM4SCxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFOUgsT0FBTyxHQUFFLE9BQU8sS0FBSztJQUU1RSxPQUNFOEgsV0FBVyxDQUFDOUgsT0FBTyxDQUFDQyxJQUFJLEtBQUt3SSxlQUFlLENBQUMyRCxPQUFPLENBQUNwTSxPQUFPLENBQUNDLElBQUksSUFDakU2SCxXQUFXLENBQUM5SCxPQUFPLENBQUNFLEtBQUssS0FBS3VJLGVBQWUsQ0FBQzJELE9BQU8sQ0FBQ3BNLE9BQU8sQ0FBQ0UsS0FBSyxJQUNuRTRILFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ0csWUFBWSxLQUFLc0ksZUFBZSxDQUFDMkQsT0FBTyxDQUFDcE0sT0FBTyxDQUFDRyxZQUFZLElBQ2pGMkgsV0FBVyxDQUFDOUgsT0FBTyxDQUFDSSxnQkFBZ0IsS0FBS3FJLGVBQWUsQ0FBQzJELE9BQU8sQ0FBQ3BNLE9BQU8sQ0FBQ0ksZ0JBQWdCLElBQ3pGLEVBQUF5TSxxQkFBQSxHQUFBL0UsV0FBVyxDQUFDOUgsT0FBTyxDQUFDTSxPQUFPLGNBQUF1TSxxQkFBQSx1QkFBM0JBLHFCQUFBLENBQTZCdE0sRUFBRSxRQUFBdU0sc0JBQUEsR0FBS3JFLGVBQWUsQ0FBQzJELE9BQU8sQ0FBQ3BNLE9BQU8sQ0FBQ00sT0FBTyxjQUFBd00sc0JBQUEsdUJBQXZDQSxzQkFBQSxDQUF5Q3ZNLEVBQUUsS0FDL0V1SCxXQUFXLENBQUM5SCxPQUFPLENBQUNRLFVBQVUsS0FBS2lJLGVBQWUsQ0FBQzJELE9BQU8sQ0FBQ3BNLE9BQU8sQ0FBQ1EsVUFBVSxLQUM1RSxFQUFBdU0scUJBQUEsR0FBQWpGLFdBQVcsQ0FBQy9ILFNBQVMsY0FBQWdOLHFCQUFBLHVCQUFyQkEscUJBQUEsQ0FBdUJ2QixNQUFNLFFBQUF3QixzQkFBQSxHQUFLdkUsZUFBZSxDQUFDMkQsT0FBTyxjQUFBWSxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBdkJBLHNCQUFBLENBQXlCak4sU0FBUyxjQUFBaU4sc0JBQUEsdUJBQWxDQSxzQkFBQSxDQUFvQ3hCLE1BQU0sS0FDMUUsR0FBQXlCLHNCQUFBLEdBQUNuRixXQUFXLENBQUMvSCxTQUFTLGNBQUFrTixzQkFBQSxlQUFyQkEsc0JBQUEsQ0FBdUJ6QixNQUFNLEtBQUksR0FBQTBCLHNCQUFBLEdBQUN6RSxlQUFlLENBQUMyRCxPQUFPLGNBQUFjLHNCQUFBLGdCQUFBQSxzQkFBQSxHQUF2QkEsc0JBQUEsQ0FBeUJuTixTQUFTLGNBQUFtTixzQkFBQSxlQUFsQ0Esc0JBQUEsQ0FBb0MxQixNQUFNLENBQUMsQ0FBQyxJQUNsRixHQUFBMkIscUJBQUEsR0FBQzFILGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQ2lCLFFBQVEsY0FBQUYscUJBQUEsZUFBL0JBLHFCQUFBLENBQWlDM0IsTUFBTSxLQUN4QyxHQUFBNEIsc0JBQUEsR0FBQzNILGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQzFHLFFBQVEsY0FBQTBILHNCQUFBLGVBQS9CQSxzQkFBQSxDQUFpQzVCLE1BQU0sS0FDeEMsQ0FBQ1EsdUJBQXVCLENBQUMsQ0FBQztFQUU5QixDQUFDO0VBRUQsSUFBTXNCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBUztJQUFBLElBQUFDLHNCQUFBLEVBQUFDLGFBQUEsRUFBQUMsc0JBQUE7SUFDbkMsSUFBSTNGLFdBQVcsQ0FBQ2hJLFNBQVMsRUFBRSxPQUFPLEtBQUs7SUFFdkMsSUFBTTROLGdCQUFnQixHQUFHLENBQUMsQ0FBQ3BNLFdBQVcsQ0FBQ2tLLE1BQU0sSUFBSSxFQUFBK0Isc0JBQUEsR0FBQXpGLFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ00sT0FBTyxjQUFBaU4sc0JBQUEsdUJBQTNCQSxzQkFBQSxDQUE2QmhOLEVBQUUsUUFBQWlOLGFBQUEsR0FBS2xNLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBQWtNLGFBQUEsdUJBQWRBLGFBQUEsQ0FBZ0JqTixFQUFFO0lBRXZHLElBQU1vTix1QkFBdUIsR0FBR3JKLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQztJQUNwRSxJQUFNc0oseUJBQXlCLEdBQUc5RixXQUFXLENBQUM5SCxPQUFPLENBQUNJLGdCQUFnQixLQUFLdU4sdUJBQXVCO0lBRWxHLElBQU1FLDRCQUE0QixHQUFHdkosQ0FBQyxDQUFDLHlDQUF5QyxDQUFDO0lBQ2pGLElBQU13SixtQkFBbUIsR0FDdkJoRyxXQUFXLENBQUM5SCxPQUFPLENBQUNRLFVBQVUsS0FBS3FOLDRCQUE0QixJQUMvRC9GLFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ1EsVUFBVSxLQUFLLEVBQUUsSUFDckNzSCxXQUFXLENBQUM5SCxPQUFPLENBQUNRLFVBQVUsS0FBSyxJQUFJO0lBRXpDLElBQU11TixPQUFPLEdBQUdqRyxXQUFXLENBQUM5SCxPQUFPLENBQUNDLElBQUksQ0FBQytOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtJQUN0RCxJQUFNQyxRQUFRLEdBQUduRyxXQUFXLENBQUM5SCxPQUFPLENBQUNFLEtBQUssQ0FBQzhOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtJQUN4RCxJQUFNRSxlQUFlLEdBQUdwRyxXQUFXLENBQUM5SCxPQUFPLENBQUNHLFlBQVksQ0FBQzZOLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtJQUN0RSxJQUFNRyxtQkFBbUIsR0FBR3JHLFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ0ksZ0JBQWdCLENBQUM0TixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDSix5QkFBeUI7SUFDNUcsSUFBTVEsYUFBYSxHQUFHLEVBQUFYLHNCQUFBLEdBQUEzRixXQUFXLENBQUM5SCxPQUFPLENBQUNRLFVBQVUsY0FBQWlOLHNCQUFBLHVCQUE5QkEsc0JBQUEsQ0FBZ0NPLElBQUksQ0FBQyxDQUFDLE1BQUssRUFBRSxJQUFJLENBQUNGLG1CQUFtQjtJQUMzRixJQUFNTyxZQUFZLEdBQUcsQ0FBQyxDQUFDdkcsV0FBVyxDQUFDL0gsU0FBUyxDQUFDeUwsTUFBTTtJQUNuRCxJQUFNOEMsZ0JBQWdCLEdBQUd4RyxXQUFXLENBQUM5SCxPQUFPLENBQUNNLE9BQU8sSUFBSSxDQUFDb04sZ0JBQWdCO0lBQ3pFLElBQU1hLGdCQUFnQixHQUFHekcsV0FBVyxDQUFDbkgsYUFBYSxDQUFDQyxVQUFVLEtBQUssU0FBUztJQUUzRSxPQUNFbU4sT0FBTyxJQUNQRSxRQUFRLElBQ1JDLGVBQWUsSUFDZkMsbUJBQW1CLElBQ25CQyxhQUFhLElBQ2JDLFlBQVksSUFDWkMsZ0JBQWdCLElBQ2hCQyxnQkFBZ0I7RUFFcEIsQ0FBQztFQUVELElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUEsRUFBUztJQUNqQyxJQUFJLENBQUMxRyxXQUFXLENBQUNoSSxTQUFTLEVBQUUsT0FBTyxLQUFLO0lBRXhDLE9BQ0UsQ0FBQzZNLHlCQUF5QixDQUFDLENBQUMsSUFDNUIsQ0FBQyxDQUFDbEgsY0FBYyxDQUFDMkcsT0FBTyxDQUFDMUcsUUFBUSxDQUFDOEYsTUFBTSxJQUN4QyxDQUFDLENBQUMvRixjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRLENBQUM2RixNQUFNO0VBRTVDLENBQUM7RUFFRCxJQUFNaUQsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBQSxFQUFTO0lBQzlCLE9BQU9uQixzQkFBc0IsQ0FBQyxDQUFDLElBQUlrQixvQkFBb0IsQ0FBQyxDQUFDO0VBQzNELENBQUM7O0VBRUQ7RUFDQSxJQUFNRSw0QkFBNEIsR0FBRzNTLFdBQVcsQ0FDOUMsVUFBQzRTLE9BQWUsRUFBRWxLLEtBQVksRUFBRW1LLFNBQXlDLEVBQUVDLE9BQW9CLEVBQUs7SUFDbEcvSixjQUFjLENBQ1o2SixPQUFPLEVBQ1AsVUFBQUcsWUFBWSxFQUFJO01BQ2Q7TUFDQTdLLG1CQUFtQixDQUFDNkssWUFBWSxFQUFFLElBQUksQ0FBQztNQUN2QyxJQUFJRixTQUFTLEVBQUU7UUFDYkEsU0FBUyxDQUFDRSxZQUFZLENBQUM7TUFDekI7SUFDRixDQUFDLEVBQ0QsWUFBTTtNQUNKLElBQUlELE9BQU8sRUFBRTtRQUNYQSxPQUFPLENBQUMsQ0FBQztNQUNYO0lBQ0YsQ0FBQyxFQUNEcEssS0FBSyxDQUFDL0QsV0FDUixDQUFDO0VBQ0gsQ0FBQyxFQUNELENBQUNvRSxjQUFjLEVBQUViLG1CQUFtQixDQUN0QyxDQUFDO0VBRUQsSUFBTThLLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBLEVBQVM7SUFDeEIsSUFBSU4saUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUN4RSxhQUFhLElBQUksQ0FBQ0wsYUFBYSxJQUFJLENBQUNMLGFBQWEsRUFBRTtNQUM3RSxJQUFNeUYsY0FBYyxHQUFHbEgsV0FBVyxDQUFDaEksU0FBUyxHQUFHd0UsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEdBQUdBLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztNQUV4RyxJQUFJLENBQUMySyxNQUFNLENBQUNDLE9BQU8sQ0FBQ0YsY0FBYyxDQUFDLEVBQUU7UUFDbkM7TUFDRjtJQUNGO0lBRUFqSCxjQUFjLENBQUNwSSxhQUFhLENBQUM7SUFDN0J5SSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xCeUMsc0JBQXNCLENBQUMsQ0FBQztJQUN4QkMsd0JBQXdCLENBQUMsQ0FBQztJQUMxQkssd0JBQXdCLENBQUMsQ0FBQztJQUMxQjFGLGNBQWMsQ0FBQzJHLE9BQU8sR0FBRztNQUN2QjFHLFFBQVEsRUFBRSxFQUFFO01BQ1pDLFFBQVEsRUFBRTtJQUNaLENBQUM7SUFDREMsbUJBQW1CLENBQUN3RyxPQUFPLEdBQUc7TUFDNUJ2RyxjQUFjLEVBQUUsS0FBSztNQUNyQkMsYUFBYSxFQUFFLEtBQUs7TUFDcEJDLGNBQWMsRUFBRSxLQUFLO01BQ3JCQyxhQUFhLEVBQUUsSUFBSTtNQUNuQkMsYUFBYSxFQUFFO0lBQ2pCLENBQUM7SUFDREMsZ0JBQWdCLENBQUNrRyxPQUFPLEdBQUcsS0FBSztJQUNoQzVHLGtCQUFrQixDQUFDNEcsT0FBTyxHQUFHLEtBQUs7SUFDbEM3Rix1QkFBdUIsQ0FBQzZGLE9BQU8sR0FBRyxLQUFLO0lBQ3ZDdkQscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQzVCdkQsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUN0QnFCLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUNwQlksVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUNyQlIsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNoQlosZUFBZSxDQUFDaUcsT0FBTyxHQUFHLElBQUk7SUFDOUJoRyx3QkFBd0IsQ0FBQ2dHLE9BQU8sR0FBRyxJQUFJO0lBQ3ZDL0Ysc0JBQXNCLENBQUMrRixPQUFPLEdBQUcsSUFBSTtFQUN2QyxDQUFDO0VBRUQsSUFBTStDLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLEtBQXVCLEVBQUs7SUFDdkQsSUFBSUEsS0FBSyxDQUFDQyxNQUFNLEtBQUtELEtBQUssQ0FBQ0UsYUFBYSxJQUFJLENBQUMxRyxrQkFBa0IsRUFBRTtNQUMvRG1HLFdBQVcsQ0FBQyxDQUFDO0lBQ2Y7RUFDRixDQUFDO0VBRUQsSUFBTVEsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBSUMsVUFBc0IsRUFBSztJQUN0RHBMLGNBQWMsQ0FBQ3pGLE1BQU0sQ0FBQzhRLFVBQVUsRUFBRTtNQUFFQyxNQUFNLEVBQUVGO0lBQVcsQ0FBQyxDQUFDO0lBQ3pEakksVUFBVSxDQUFDaUksVUFBVSxDQUFDO0VBQ3hCLENBQUM7RUFFRCxJQUFNRywwQkFBMEIsR0FBRyxTQUE3QkEsMEJBQTBCQSxDQUFBQyxLQUFBLEVBUTFCO0lBQUEsSUFQSkMsR0FBRyxHQUFBRCxLQUFBLENBQUhDLEdBQUc7TUFDSEMsS0FBSyxHQUFBRixLQUFBLENBQUxFLEtBQUs7TUFDTEMsZUFBZSxHQUFBSCxLQUFBLENBQWZHLGVBQWU7SUFNZixJQUFJRixHQUFHLEtBQUssV0FBVyxFQUFFO01BQ3ZCLElBQUksQ0FBQ0UsZUFBZSxFQUFFO1FBQUEsSUFBQUMsc0JBQUE7UUFDcEIsQ0FBQUEsc0JBQUEsR0FBQXZLLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQ3pHLFFBQVEsRUFBQ3NLLElBQUksQ0FBQUMsS0FBQSxDQUFBRixzQkFBQSxFQUFBRyxrQkFBQSxDQUFLTCxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7TUFDeEQsQ0FBQyxNQUFNO1FBQ0wsSUFBTU0sWUFBWSxHQUFHTixLQUFLLENBQUN0RSxNQUFNLEdBQUcsSUFBSTZFLEdBQUcsQ0FBQ1AsS0FBSyxDQUFDOU4sR0FBRyxDQUFDLFVBQUFFLElBQUk7VUFBQSxPQUFJQSxJQUFJLENBQUMzQixFQUFFO1FBQUEsRUFBQyxDQUFDLEdBQUcsSUFBSThQLEdBQUcsQ0FBQyxDQUFDO1FBQ25GLElBQU1DLFFBQVEsR0FBR3hJLFdBQVcsQ0FBQy9ILFNBQVMsQ0FBQ3dRLE1BQU0sQ0FBQyxVQUFBck8sSUFBSTtVQUFBLE9BQUksQ0FBQ2tPLFlBQVksQ0FBQ0ksR0FBRyxDQUFDdE8sSUFBSSxDQUFDM0IsRUFBRSxDQUFDLElBQUkyQixJQUFJLENBQUNRLE1BQU0sS0FBSyxTQUFTO1FBQUEsRUFBQztRQUM5RyxJQUFJLENBQUM0TixRQUFRLENBQUM5RSxNQUFNLElBQUkvRixjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRLENBQUM2RixNQUFNLEVBQUU7VUFDOUQsSUFBTWlGLFFBQVEsR0FBRyxJQUFJSixHQUFHLENBQUNQLEtBQUssQ0FBQzlOLEdBQUcsQ0FBQyxVQUFBRSxJQUFJO1lBQUEsT0FBSUEsSUFBSSxDQUFDM0IsRUFBRTtVQUFBLEVBQUMsQ0FBQztVQUNwRGtGLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQ3pHLFFBQVEsR0FBR0YsY0FBYyxDQUFDMkcsT0FBTyxDQUFDekcsUUFBUSxDQUFDNEssTUFBTSxDQUFDLFVBQUFyTyxJQUFJO1lBQUEsT0FBSXVPLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDdE8sSUFBSSxDQUFDM0IsRUFBRSxDQUFDO1VBQUEsRUFBQztRQUN6RztRQUNBa0YsY0FBYyxDQUFDMkcsT0FBTyxDQUFDMUcsUUFBUSxNQUFBZ0wsTUFBQSxDQUFBUCxrQkFBQSxDQUFRMUssY0FBYyxDQUFDMkcsT0FBTyxDQUFDMUcsUUFBUSxJQUFJLEVBQUUsR0FBQXlLLGtCQUFBLENBQU1HLFFBQVEsRUFBQztNQUM3RjtJQUNGO0lBQ0F2SSxjQUFjLENBQUMsVUFBQXhHLElBQUksRUFBSTtNQUNyQixJQUFNb1AsY0FBYyxHQUNsQmQsR0FBRyxLQUFLLFdBQVcsR0FDZkUsZUFBZSxHQUNiRCxLQUFLLE1BQUFZLE1BQUEsQ0FBQVAsa0JBQUEsQ0FDQTVPLElBQUksQ0FBQ3hCLFNBQVMsSUFBSSxFQUFFLEdBQUFvUSxrQkFBQSxDQUFRTCxLQUFLLElBQXlCLEVBQUUsRUFBRSxHQUNyRSxJQUFJO01BQ1YsT0FBQTdPLGFBQUEsQ0FBQUEsYUFBQSxLQUNLTSxJQUFJLEdBQ0hzTyxHQUFHLEtBQUssV0FBVyxHQUNuQjtRQUFFOVAsU0FBUyxFQUFFNFE7TUFBZSxDQUFDLEdBQzdCZCxHQUFHLEtBQUssZUFBZSxHQUNyQjtRQUFFbFAsYUFBYSxFQUFFbVA7TUFBTSxDQUFDLEdBQ3hCO1FBQ0U5UCxPQUFPLEVBQUFpQixhQUFBLENBQUFBLGFBQUEsS0FDRk0sSUFBSSxDQUFDdkIsT0FBTyxPQUFBNFEsZUFBQSxLQUNkZixHQUFHLEVBQUdDLEtBQUs7TUFFaEIsQ0FBQztJQUVYLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxJQUFNZSxvQkFBbUI7SUFBQSxJQUFBQyxLQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBQyxRQUFPQyxJQUFTLEVBQUVDLE1BQXNDO01BQUEsSUFBQUMsc0JBQUE7TUFBQSxJQUFBdlEsU0FBQTtNQUFBLE9BQUFrUSxtQkFBQSxDQUFBTSxJQUFBLFdBQUFDLFFBQUE7UUFBQSxrQkFBQUEsUUFBQSxDQUFBaFEsSUFBQSxHQUFBZ1EsUUFBQSxDQUFBQyxJQUFBO1VBQUE7WUFBQSxJQUU3RXZDLE1BQU0sQ0FBQ3dDLHdDQUF3QztjQUFBRixRQUFBLENBQUFDLElBQUE7Y0FBQTtZQUFBO1lBQUEsT0FBQUQsUUFBQSxDQUFBRyxNQUFBO1VBQUE7WUFBQSxNQUloRE4sTUFBTSxLQUFLLFFBQVE7Y0FBQUcsUUFBQSxDQUFBQyxJQUFBO2NBQUE7WUFBQTtZQUNyQnBOLGNBQWMsQ0FBQ3pGLE1BQU0sVUFBTyxDQUFDO1lBQzdCMkssaUJBQWlCLENBQUM2SCxJQUFJLENBQUM1USxFQUF1QixDQUFDO1lBQUEsT0FBQWdSLFFBQUEsQ0FBQUcsTUFBQTtVQUFBO1lBRzNDNVEsU0FBUyxJQUFBdVEsc0JBQUEsR0FBR3ZKLFdBQVcsQ0FBQ25ILGFBQWEsQ0FBQ0csU0FBUyxjQUFBdVEsc0JBQUEsY0FBQUEsc0JBQUEsR0FBSW5TLGtCQUFrQjtZQUMzRWtGLGNBQWMsQ0FBQ3pGLE1BQU0sQ0FBQ2dULGFBQWEsRUFBRTtjQUNuQ2pDLE1BQU0sRUFBRTVILFdBQVcsQ0FBQ2hJLFNBQVMsR0FBRyxNQUFNLEdBQUcsUUFBUTtjQUNqRDhSLFNBQVMsRUFBRXhTLDJCQUEyQixDQUFDMEIsU0FBUyxDQUFDO2NBQ2pEK1EsVUFBVSxFQUFFL1E7WUFDZCxDQUFDLENBQUM7WUFDRjtZQUNBO1lBQ0F5Rix1QkFBdUIsQ0FBQzZGLE9BQU8sR0FBRyxLQUFLO1lBQUEsS0FDbkN0RSxXQUFXLENBQUNoSSxTQUFTO2NBQUF5UixRQUFBLENBQUFDLElBQUE7Y0FBQTtZQUFBO1lBQUEsSUFDbEI3RSx5QkFBeUIsQ0FBQyxDQUFDO2NBQUE0RSxRQUFBLENBQUFDLElBQUE7Y0FBQTtZQUFBO1lBQUFELFFBQUEsQ0FBQUMsSUFBQTtZQUFBLE9BQ3hCN0gsaUJBQWlCLENBQUM3QixXQUFXLENBQUM7VUFBQTtZQUFBeUosUUFBQSxDQUFBQyxJQUFBO1lBQUE7VUFBQTtZQUFBRCxRQUFBLENBQUFDLElBQUE7WUFBQSxPQUdoQ3pILGlCQUFpQixDQUFDakMsV0FBVyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUF5SixRQUFBLENBQUFPLElBQUE7UUFBQTtNQUFBLEdBQUFaLE9BQUE7SUFBQSxDQUV2QztJQUFBLGdCQTNCS0wsbUJBQW1CQSxDQUFBa0IsRUFBQSxFQUFBQyxHQUFBO01BQUEsT0FBQWxCLEtBQUEsQ0FBQVosS0FBQSxPQUFBK0IsU0FBQTtJQUFBO0VBQUEsR0EyQnhCO0VBRUR0VyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU11VyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJOUMsS0FBVSxFQUFLO01BQUEsSUFBQStDLG1CQUFBLEVBQUFDLG9CQUFBO01BQzNDLElBQVFDLFdBQVcsR0FBS2pELEtBQUssQ0FBQ2tELE1BQU0sQ0FBNUJELFdBQVc7TUFDbkIsSUFBTUUsY0FBYyxHQUFHRixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUUsY0FBd0M7TUFDNUVuTSx3QkFBd0IsQ0FBQ2dHLE9BQU8sR0FDOUJtRyxjQUFjLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDQyxRQUFRLENBQUNELGNBQWMsQ0FBQyxHQUFHQSxjQUFjLEdBQUcsSUFBSTtNQUU5Ry9KLGlCQUFpQixDQUFDLENBQUM7TUFDbkJ6QixTQUFTLENBQUMsSUFBSSxDQUFDO01BQ2ZZLFlBQVksQ0FBQyxJQUFJLENBQUM7TUFFbEIvQixtQkFBbUIsQ0FBQ3dHLE9BQU8sR0FBRztRQUM1QnZHLGNBQWMsRUFBRSxLQUFLO1FBQ3JCQyxhQUFhLEVBQUUsS0FBSztRQUNwQkMsY0FBYyxFQUFFLEtBQUs7UUFDckJDLGFBQWEsRUFBRSxJQUFJO1FBQ25CQyxhQUFhLEVBQUU7TUFDakIsQ0FBQztNQUVELEtBQUFrTSxtQkFBQSxHQUFJRSxXQUFXLENBQUNJLE1BQU0sY0FBQU4sbUJBQUEsZUFBbEJBLG1CQUFBLENBQW9CclMsU0FBUyxFQUFFO1FBQUEsSUFBQTRTLG9CQUFBO1FBQ2pDO1FBQ0EsSUFBSSxDQUFDekQsTUFBTSxDQUFDd0Msd0NBQXdDLEVBQUU7VUFDcERwSCxtQkFBbUIsQ0FBQy9GLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1VBQzNDeUMsU0FBUyxDQUFDLEtBQUssQ0FBQztVQUNoQlksWUFBWSxDQUFDLEtBQUssQ0FBQztVQUNuQnZCLHdCQUF3QixDQUFDZ0csT0FBTyxHQUFHLElBQUk7VUFDdkMvRixzQkFBc0IsQ0FBQytGLE9BQU8sR0FBRyxJQUFJO1VBQ3JDO1FBQ0Y7UUFDQSxJQUFJaUcsV0FBVyxDQUFDTSxtQkFBbUIsRUFBRTtVQUNuQ3ZLLGdCQUFnQixDQUFDLENBQUM7VUFDbEIvQixzQkFBc0IsQ0FBQytGLE9BQU8sR0FBR2lHLFdBQVcsQ0FBQ00sbUJBQW1CO1VBQ2hFO1FBQ0Y7UUFDQXhLLGtCQUFrQixDQUFDa0ssV0FBVyxhQUFYQSxXQUFXLGdCQUFBSyxvQkFBQSxHQUFYTCxXQUFXLENBQUVJLE1BQU0sY0FBQUMsb0JBQUEsZ0JBQUFBLG9CQUFBLEdBQW5CQSxvQkFBQSxDQUFxQjFTLE9BQU8sY0FBQTBTLG9CQUFBLHVCQUE1QkEsb0JBQUEsQ0FBOEJuUyxFQUF1QixDQUFDO1FBQ3pFO01BQ0Y7TUFFQSxJQUFJOFIsV0FBVyxDQUFDSSxNQUFNLEVBQUU7UUFDdEIsSUFBTUcsVUFBVSxHQUFBM1IsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDWHRCLGFBQWEsR0FDYjBTLFdBQVcsQ0FBQ0ksTUFBTTtVQUNyQnpTLE9BQU8sRUFBQWlCLGFBQUEsQ0FBQUEsYUFBQSxLQUNGdEIsYUFBYSxDQUFDSyxPQUFPLEdBQ3BCcVMsV0FBVyxDQUFDSSxNQUFNLENBQUN6UyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQ3JDO1VBQ0RXLGFBQWEsRUFBQU0sYUFBQSxDQUFBQSxhQUFBLEtBQ1J0QixhQUFhLENBQUNnQixhQUFhLEdBQzFCMFIsV0FBVyxDQUFDSSxNQUFNLENBQUM5UixhQUFhLElBQUksQ0FBQyxDQUFDLENBQzNDO1VBQ0RaLFNBQVMsRUFBRXNTLFdBQVcsQ0FBQ0ksTUFBTSxDQUFDMVMsU0FBUyxJQUFJO1FBQUUsRUFDOUM7UUFFRDBJLGVBQWUsQ0FBQzJELE9BQU8sR0FBR3dHLFVBQVU7UUFDcEM3SyxjQUFjLENBQUM2SyxVQUFVLENBQUM7TUFDNUI7TUFFQSxJQUFJeE0sd0JBQXdCLENBQUNnRyxPQUFPLElBQUksR0FBQWdHLG9CQUFBLEdBQUNDLFdBQVcsQ0FBQ0ksTUFBTSxjQUFBTCxvQkFBQSxlQUFsQkEsb0JBQUEsQ0FBb0J0UyxTQUFTLEdBQUU7UUFDdEV5SCxVQUFVLENBQUNuQix3QkFBd0IsQ0FBQ2dHLE9BQU8sQ0FBQztRQUM1Q2hHLHdCQUF3QixDQUFDZ0csT0FBTyxHQUFHLElBQUk7TUFDekM7TUFFQXpFLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUNEM0MsUUFBUSxDQUFDNk4sZ0JBQWdCLENBQUMsNEJBQTRCLEVBQUVYLG9CQUFvQixDQUFDO0lBQzdFLE9BQU8sWUFBTTtNQUNYbE4sUUFBUSxDQUFDOE4sbUJBQW1CLENBQUMsNEJBQTRCLEVBQUVaLG9CQUFxQyxDQUFDO0lBQ25HLENBQUM7RUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDOztFQUVOO0VBQ0F2VyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ21MLE1BQU0sRUFBRTtNQUNYLE9BQU9sRSxTQUFTO0lBQ2xCO0lBRUEsSUFBQW1RLFNBQUEsR0FBaUIvTixRQUFRO01BQWpCZ08sSUFBSSxHQUFBRCxTQUFBLENBQUpDLElBQUk7SUFDWixJQUFJLENBQUNBLElBQUksRUFBRTtNQUNULE9BQU9wUSxTQUFTO0lBQ2xCO0lBRUEsSUFBTXFRLGdCQUFnQixHQUFHRCxJQUFJLENBQUNFLEtBQUssQ0FBQ0MsUUFBUTtJQUM1Q0gsSUFBSSxDQUFDRSxLQUFLLENBQUNDLFFBQVEsR0FBRyxRQUFRO0lBRTlCLE9BQU8sWUFBTTtNQUNYSCxJQUFJLENBQUNFLEtBQUssQ0FBQ0MsUUFBUSxHQUFHRixnQkFBZ0I7SUFDeEMsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDbk0sTUFBTSxDQUFDLENBQUM7RUFFWm5MLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTXlYLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUloRSxLQUF3QixFQUFLO01BQ3ZELElBQUlYLGlCQUFpQixDQUFDLENBQUMsRUFBRTtRQUN2QlcsS0FBSyxDQUFDaUUsY0FBYyxDQUFDLENBQUM7UUFDdEI7UUFDQWpFLEtBQUssQ0FBQ2tFLFdBQVcsR0FBR2hQLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztRQUM3QyxPQUFPQSxDQUFDLENBQUMsc0JBQXNCLENBQUM7TUFDbEM7TUFDQSxPQUFPMUIsU0FBUztJQUNsQixDQUFDO0lBRUQsSUFBSWtFLE1BQU0sRUFBRTtNQUNWbUksTUFBTSxDQUFDNEQsZ0JBQWdCLENBQUMsY0FBYyxFQUFFTyxrQkFBa0IsQ0FBQztJQUM3RDtJQUVBLE9BQU8sWUFBTTtNQUNYbkUsTUFBTSxDQUFDNkQsbUJBQW1CLENBQUMsY0FBYyxFQUFFTSxrQkFBa0IsQ0FBQztJQUNoRSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUN0TSxNQUFNLEVBQUUySCxpQkFBaUIsRUFBRW5LLENBQUMsQ0FBQyxDQUFDO0VBRWxDM0ksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJNE4sYUFBYSxFQUFFO01BQ2pCYSxxQkFBcUIsQ0FBQzlGLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO01BQy9DbUYsWUFBWSxDQUFDLENBQUM7TUFDZCxJQUFJLENBQUFqRixvQkFBb0IsYUFBcEJBLG9CQUFvQix1QkFBcEJBLG9CQUFvQixDQUFFakUsRUFBRSxNQUFLdUgsV0FBVyxDQUFDOUgsT0FBTyxDQUFDTyxFQUFFLEVBQUU7UUFDdkQyRCxnQkFBZ0IsQ0FBQ00sb0JBQW9CLGFBQXBCQSxvQkFBb0IsdUJBQXBCQSxvQkFBb0IsQ0FBRWpFLEVBQVksQ0FBQztNQUN0RDtNQUNBeUQsV0FBVyxDQUFDOEQsV0FBVyxDQUFDOUgsT0FBTyxDQUFDTyxFQUFFLENBQUM7TUFDbkM0RyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7TUFDekI0SCxXQUFXLENBQUMsQ0FBQztJQUNmO0VBQ0YsQ0FBQyxFQUFFLENBQUN4RixhQUFhLENBQUMsQ0FBQztFQUVuQjVOLFNBQVMsQ0FBQyxZQUFNO0lBQ2Q7SUFDQSxJQUFJc08sYUFBYSxJQUFJLENBQUNELGVBQWUsSUFBSTdELGVBQWUsQ0FBQ2lHLE9BQU8sS0FBS25DLGFBQWEsQ0FBQzFKLEVBQUUsRUFBRTtNQUNyRjRGLGVBQWUsQ0FBQ2lHLE9BQU8sR0FBR25DLGFBQWEsQ0FBQzFKLEVBQUU7TUFDMUMsSUFBSWtGLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQzFHLFFBQVEsQ0FBQzhGLE1BQU0sSUFBSS9GLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQ3pHLFFBQVEsQ0FBQzZGLE1BQU0sRUFBRTtRQUNwRixJQUFJMUQsV0FBVyxDQUFDbkgsYUFBYSxDQUFDQyxVQUFVLEtBQUssU0FBUyxFQUFFO1VBQ3REZ0YsbUJBQW1CLENBQUN3RyxPQUFPLEdBQUc7WUFDNUJ2RyxjQUFjLEVBQUUsSUFBSTtZQUNwQkMsYUFBYSxFQUFFLEtBQUs7WUFDcEJDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCQyxhQUFhLEVBQUUsUUFBUTtZQUN2QkMsYUFBYSxFQUFFO1VBQ2pCLENBQUM7UUFDSCxDQUFDLE1BQU07VUFDTDtVQUNBTCxtQkFBbUIsQ0FBQ3dHLE9BQU8sR0FBRztZQUM1QnZHLGNBQWMsRUFBRSxJQUFJO1lBQ3BCQyxhQUFhLEVBQUUsS0FBSztZQUNwQkMsY0FBYyxFQUFFLEtBQUs7WUFDckJDLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCQyxhQUFhLEVBQUU7VUFDakIsQ0FBQztRQUNIO1FBRUEsSUFBTXNOLFFBQVEsR0FBRyxDQUNmOUksK0JBQStCLENBQUM7VUFDOUIrSSxhQUFhLEVBQUUvTixjQUFjLENBQUMyRyxPQUFPLENBQUMxRyxRQUFRO1VBQzlDK04sYUFBYSxFQUFFaE8sY0FBYyxDQUFDMkcsT0FBTyxDQUFDekcsUUFBUTtVQUM5Q2dKLE9BQU8sRUFBRTFFLGFBQWEsQ0FBQzFKLEVBQUUsQ0FBQzhCLFFBQVEsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FDSDtRQUVELElBQUl5RixXQUFXLENBQUNuSCxhQUFhLENBQUNDLFVBQVUsS0FBSyxTQUFTLEVBQUU7VUFDdEQyUyxRQUFRLENBQUN0RCxJQUFJLENBQUNqRixrQkFBa0IsQ0FBQ2YsYUFBYSxDQUFDMUosRUFBRSxDQUFDOEIsUUFBUSxDQUFDLENBQUMsRUFBRXlGLFdBQVcsQ0FBQ25ILGFBQWEsQ0FBQyxDQUFDO1FBQzNGO1FBRUEsSUFBSW1ILFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ1UsV0FBVyxFQUFFO1VBQ25DLElBQU1nVCxpQkFBaUIsR0FBQXpTLGFBQUEsQ0FBQUEsYUFBQSxLQUFRZ0osYUFBYTtZQUFFdkosV0FBVyxFQUFFO1VBQUksRUFBRTtVQUNqRW9ELFFBQVEsQ0FBQzRQLGlCQUFpQixDQUFDO1VBQzNCO1VBQ0E7VUFDQSxJQUFNQyxjQUFjLEdBQUExUyxhQUFBLENBQUFBLGFBQUEsS0FBUXlTLGlCQUFpQjtZQUFFaFQsV0FBVyxFQUFFO1VBQUssRUFBRTtVQUNuRTZTLFFBQVEsQ0FBQ3RELElBQUksQ0FDWCxJQUFJMkQsT0FBTyxDQUFPLFVBQUNDLE9BQU8sRUFBRUMsTUFBTSxFQUFLO1lBQ3JDcEYsNEJBQTRCLENBQzFCekUsYUFBYSxDQUFDMUosRUFBRSxDQUFDOEIsUUFBUSxDQUFDLENBQUMsRUFDM0JzUixjQUFjLEVBQ2Q7Y0FBQSxPQUFNRSxPQUFPLENBQUMsQ0FBQztZQUFBLEdBQ2Y7Y0FBQSxPQUFNQyxNQUFNLENBQUMsQ0FBQztZQUFBLENBQ2hCLENBQUM7VUFDSCxDQUFDLENBQ0gsQ0FBQztRQUNILENBQUMsTUFBTTtVQUNMaFEsUUFBUSxDQUFDbUcsYUFBYSxDQUFDO1FBQ3pCO1FBRUEySixPQUFPLENBQUNHLEdBQUcsQ0FBQ1IsUUFBUSxDQUFDO1FBRXJCL04sa0JBQWtCLENBQUM0RyxPQUFPLEdBQUcsSUFBSTtRQUNqQ3ZELHFCQUFxQixDQUFDLElBQUksQ0FBQztRQUMzQjtNQUNGO01BQ0EsSUFBSXBELGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQzFHLFFBQVEsQ0FBQzhGLE1BQU0sRUFBRTtRQUMxQyxJQUFJMUQsV0FBVyxDQUFDbkgsYUFBYSxDQUFDQyxVQUFVLEtBQUssU0FBUyxFQUFFO1VBQ3REZ0YsbUJBQW1CLENBQUN3RyxPQUFPLEdBQUc7WUFDNUJ2RyxjQUFjLEVBQUUsSUFBSTtZQUNwQkMsYUFBYSxFQUFFLEtBQUs7WUFDcEJDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCQyxhQUFhLEVBQUUsUUFBUTtZQUN2QkMsYUFBYSxFQUFFO1VBQ2pCLENBQUM7UUFDSCxDQUFDLE1BQU07VUFDTDtVQUNBTCxtQkFBbUIsQ0FBQ3dHLE9BQU8sR0FBRztZQUM1QnZHLGNBQWMsRUFBRSxJQUFJO1lBQ3BCQyxhQUFhLEVBQUUsS0FBSztZQUNwQkMsY0FBYyxFQUFFLEtBQUs7WUFDckJDLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCQyxhQUFhLEVBQUU7VUFDakIsQ0FBQztRQUNIO1FBRUEsSUFBTXNOLFNBQVEsR0FBRyxDQUNmL0ksc0JBQXNCLENBQUM7VUFBRXdKLEtBQUssRUFBRXZPLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQzFHLFFBQVE7VUFBRWlKLE9BQU8sRUFBRTFFLGFBQWEsQ0FBQzFKLEVBQUUsQ0FBQzhCLFFBQVEsQ0FBQztRQUFFLENBQUMsQ0FBQyxDQUN6RztRQUVELElBQUl5RixXQUFXLENBQUNuSCxhQUFhLENBQUNDLFVBQVUsS0FBSyxTQUFTLEVBQUU7VUFDdEQyUyxTQUFRLENBQUN0RCxJQUFJLENBQUNqRixrQkFBa0IsQ0FBQ2YsYUFBYSxDQUFDMUosRUFBRSxDQUFDOEIsUUFBUSxDQUFDLENBQUMsRUFBRXlGLFdBQVcsQ0FBQ25ILGFBQWEsQ0FBQyxDQUFDO1FBQzNGO1FBRUEsSUFBSW1ILFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ1UsV0FBVyxFQUFFO1VBQ25DLElBQU1nVCxrQkFBaUIsR0FBQXpTLGFBQUEsQ0FBQUEsYUFBQSxLQUFRZ0osYUFBYTtZQUFFdkosV0FBVyxFQUFFO1VBQUksRUFBRTtVQUNqRW9ELFFBQVEsQ0FBQzRQLGtCQUFpQixDQUFDO1VBQzNCO1VBQ0E7VUFDQSxJQUFNQyxlQUFjLEdBQUExUyxhQUFBLENBQUFBLGFBQUEsS0FBUXlTLGtCQUFpQjtZQUFFaFQsV0FBVyxFQUFFO1VBQUssRUFBRTtVQUNuRTZTLFNBQVEsQ0FBQ3RELElBQUksQ0FDWCxJQUFJMkQsT0FBTyxDQUFPLFVBQUNDLE9BQU8sRUFBRUMsTUFBTSxFQUFLO1lBQ3JDcEYsNEJBQTRCLENBQzFCekUsYUFBYSxDQUFDMUosRUFBRSxDQUFDOEIsUUFBUSxDQUFDLENBQUMsRUFDM0JzUixlQUFjLEVBQ2Q7Y0FBQSxPQUFNRSxPQUFPLENBQUMsQ0FBQztZQUFBLEdBQ2Y7Y0FBQSxPQUFNQyxNQUFNLENBQUMsQ0FBQztZQUFBLENBQ2hCLENBQUM7VUFDSCxDQUFDLENBQ0gsQ0FBQztRQUNILENBQUMsTUFBTTtVQUNMaFEsUUFBUSxDQUFDbUcsYUFBYSxDQUFDO1FBQ3pCO1FBRUEySixPQUFPLENBQUNHLEdBQUcsQ0FBQ1IsU0FBUSxDQUFDO1FBQ3JCL0ksc0JBQXNCLENBQUM7VUFBRXdKLEtBQUssRUFBRXZPLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQzFHLFFBQVE7VUFBRWlKLE9BQU8sRUFBRTFFLGFBQWEsQ0FBQzFKLEVBQUUsQ0FBQzhCLFFBQVEsQ0FBQztRQUFFLENBQUMsQ0FBQztRQUN4R21ELGtCQUFrQixDQUFDNEcsT0FBTyxHQUFHLElBQUk7UUFDakN2RCxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDM0I7TUFDRjtNQUNBLElBQUlwRCxjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRLENBQUM2RixNQUFNLEVBQUU7UUFDMUMsSUFBSTFELFdBQVcsQ0FBQ25ILGFBQWEsQ0FBQ0MsVUFBVSxLQUFLLFNBQVMsRUFBRTtVQUN0RGdGLG1CQUFtQixDQUFDd0csT0FBTyxHQUFHO1lBQzVCdkcsY0FBYyxFQUFFLElBQUk7WUFDcEJDLGFBQWEsRUFBRSxLQUFLO1lBQ3BCQyxjQUFjLEVBQUUsSUFBSTtZQUNwQkMsYUFBYSxFQUFFLFFBQVE7WUFDdkJDLGFBQWEsRUFBRTtVQUNqQixDQUFDO1FBQ0gsQ0FBQyxNQUFNO1VBQ0w7VUFDQUwsbUJBQW1CLENBQUN3RyxPQUFPLEdBQUc7WUFDNUJ2RyxjQUFjLEVBQUUsSUFBSTtZQUNwQkMsYUFBYSxFQUFFLEtBQUs7WUFDcEJDLGNBQWMsRUFBRSxLQUFLO1lBQ3JCQyxhQUFhLEVBQUUsUUFBUTtZQUN2QkMsYUFBYSxFQUFFO1VBQ2pCLENBQUM7UUFDSDtRQUVBLElBQU1zTixVQUFRLEdBQUcsQ0FDZmhKLHNCQUFzQixDQUFDO1VBQUV5SixLQUFLLEVBQUV2TyxjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRO1VBQUVnSixPQUFPLEVBQUUxRSxhQUFhLENBQUMxSixFQUFFLENBQUM4QixRQUFRLENBQUM7UUFBRSxDQUFDLENBQUMsQ0FDekc7UUFFRCxJQUFJeUYsV0FBVyxDQUFDbkgsYUFBYSxDQUFDQyxVQUFVLEtBQUssU0FBUyxFQUFFO1VBQ3REMlMsVUFBUSxDQUFDdEQsSUFBSSxDQUFDakYsa0JBQWtCLENBQUNmLGFBQWEsQ0FBQzFKLEVBQUUsQ0FBQzhCLFFBQVEsQ0FBQyxDQUFDLEVBQUV5RixXQUFXLENBQUNuSCxhQUFhLENBQUMsQ0FBQztRQUMzRjtRQUVBLElBQUltSCxXQUFXLENBQUM5SCxPQUFPLENBQUNVLFdBQVcsRUFBRTtVQUNuQyxJQUFNZ1QsbUJBQWlCLEdBQUF6UyxhQUFBLENBQUFBLGFBQUEsS0FBUWdKLGFBQWE7WUFBRXZKLFdBQVcsRUFBRTtVQUFJLEVBQUU7VUFDakVvRCxRQUFRLENBQUM0UCxtQkFBaUIsQ0FBQztVQUMzQjtVQUNBO1VBQ0EsSUFBTUMsZ0JBQWMsR0FBQTFTLGFBQUEsQ0FBQUEsYUFBQSxLQUFReVMsbUJBQWlCO1lBQUVoVCxXQUFXLEVBQUU7VUFBSyxFQUFFO1VBQ25FNlMsVUFBUSxDQUFDdEQsSUFBSSxDQUNYLElBQUkyRCxPQUFPLENBQU8sVUFBQ0MsT0FBTyxFQUFFQyxNQUFNLEVBQUs7WUFDckNwRiw0QkFBNEIsQ0FDMUJ6RSxhQUFhLENBQUMxSixFQUFFLENBQUM4QixRQUFRLENBQUMsQ0FBQyxFQUMzQnNSLGdCQUFjLEVBQ2Q7Y0FBQSxPQUFNRSxPQUFPLENBQUMsQ0FBQztZQUFBLEdBQ2Y7Y0FBQSxPQUFNQyxNQUFNLENBQUMsQ0FBQztZQUFBLENBQ2hCLENBQUM7VUFDSCxDQUFDLENBQ0gsQ0FBQztRQUNILENBQUMsTUFBTTtVQUNMaFEsUUFBUSxDQUFDbUcsYUFBYSxDQUFDO1FBQ3pCO1FBRUEySixPQUFPLENBQUNHLEdBQUcsQ0FBQ1IsVUFBUSxDQUFDO1FBQ3JCL04sa0JBQWtCLENBQUM0RyxPQUFPLEdBQUcsSUFBSTtRQUNqQ3ZELHFCQUFxQixDQUFDLElBQUksQ0FBQztRQUMzQjtNQUNGO01BQ0EsSUFBSWYsV0FBVyxDQUFDbkgsYUFBYSxDQUFDQyxVQUFVLEtBQUssU0FBUyxFQUFFO1FBQ3REO1FBQ0EsSUFBSSxDQUFDZ0YsbUJBQW1CLENBQUN3RyxPQUFPLENBQUNuRyxhQUFhLEVBQUU7VUFDOUMsSUFBUUYsY0FBYyxHQUFLSCxtQkFBbUIsQ0FBQ3dHLE9BQU8sQ0FBOUNyRyxjQUFjO1VBQ3RCSCxtQkFBbUIsQ0FBQ3dHLE9BQU8sR0FBRztZQUM1QnZHLGNBQWMsRUFBRSxJQUFJO1lBQ3BCQyxhQUFhLEVBQUUsS0FBSztZQUNwQkMsY0FBYyxFQUFFQSxjQUFjLElBQUksS0FBSztZQUN2Q0MsYUFBYSxFQUFFLFFBQVE7WUFDdkJDLGFBQWEsRUFBRTtVQUNqQixDQUFDO1FBQ0g7UUFFQSxJQUFJLENBQUNMLG1CQUFtQixDQUFDd0csT0FBTyxDQUFDbkcsYUFBYSxFQUFFO1VBQzlDK0Usa0JBQWtCLENBQUNmLGFBQWEsQ0FBQzFKLEVBQUUsQ0FBQzhCLFFBQVEsQ0FBQyxDQUFDLEVBQUV5RixXQUFXLENBQUNuSCxhQUFhLENBQUM7VUFDMUVpRixtQkFBbUIsQ0FBQ3dHLE9BQU8sQ0FBQ25HLGFBQWEsR0FBRyxJQUFJO1FBQ2xEOztRQUVBO1FBQ0E7TUFDRjs7TUFFQTtNQUNBLElBQUk2QixXQUFXLENBQUM5SCxPQUFPLENBQUNVLFdBQVcsRUFBRTtRQUNuQztRQUNBLElBQU1nVCxtQkFBaUIsR0FBQXpTLGFBQUEsQ0FBQUEsYUFBQSxLQUFRZ0osYUFBYTtVQUFFdkosV0FBVyxFQUFFO1FBQUksRUFBRTtRQUNqRW9ELFFBQVEsQ0FBQzRQLG1CQUFpQixDQUFDOztRQUUzQjtRQUNBO1FBQ0EsSUFBTUMsZ0JBQWMsR0FBQTFTLGFBQUEsQ0FBQUEsYUFBQSxLQUFReVMsbUJBQWlCO1VBQUVoVCxXQUFXLEVBQUU7UUFBSyxFQUFFO1FBQ25FO1FBQ0FnTyw0QkFBNEIsQ0FDMUJ6RSxhQUFhLENBQUMxSixFQUFFLENBQUM4QixRQUFRLENBQUMsQ0FBQyxFQUMzQnNSLGdCQUFjLEVBQ2QsVUFBQTdFLFlBQVksRUFBSTtVQUNkMUssY0FBYyxDQUFDekYsTUFBTSxDQUFDc1YsY0FBYyxFQUFFO1lBQUV2RSxNQUFNLEVBQUVaLFlBQVksQ0FBQ3BPLFdBQVcsR0FBRyxLQUFLLEdBQUc7VUFBUyxDQUFDLENBQUM7VUFDOUYwSixxQkFBcUIsQ0FBQzlGLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1VBQy9DSSxXQUFXLENBQUF6RCxhQUFBLENBQUFBLGFBQUEsS0FBTXlTLG1CQUFpQjtZQUFFaFQsV0FBVyxFQUFFb08sWUFBWSxDQUFDcE87VUFBVyxFQUFFLENBQUM7VUFDNUVvSyx3QkFBd0IsQ0FBQyxDQUFDO1VBQzFCWixrQkFBa0IsQ0FBQyxDQUFDO1VBQ3BCNkUsV0FBVyxDQUFDLENBQUM7UUFDZixDQUFDLEVBQ0QsWUFBTTtVQUNKM0ssY0FBYyxDQUFDekYsTUFBTSxDQUFDc1YsY0FBYyxFQUFFO1lBQUV2RSxNQUFNLEVBQUU7VUFBTSxDQUFDLENBQUM7VUFDeER0RixxQkFBcUIsQ0FBQzlGLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1VBQy9DSSxXQUFXLENBQUNnUCxtQkFBaUIsQ0FBQztVQUM5QjVJLHdCQUF3QixDQUFDLENBQUM7VUFDMUJaLGtCQUFrQixDQUFDLENBQUM7VUFDcEI2RSxXQUFXLENBQUMsQ0FBQztRQUNmLENBQ0YsQ0FBQztNQUNILENBQUMsTUFBTTtRQUNMM0UscUJBQXFCLENBQUM5RixDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvQ1IsUUFBUSxDQUFDbUcsYUFBYSxDQUFDO1FBQ3ZCdkYsV0FBVyxDQUFDdUYsYUFBYSxDQUFDO1FBQzFCYSx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFCWixrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BCNkUsV0FBVyxDQUFDLENBQUM7TUFDZjtJQUNGO0VBQ0YsQ0FBQyxFQUFFLENBQ0QvRSxlQUFlLEVBQ2ZDLGFBQWEsRUFDYlEsK0JBQStCLEVBQy9CRCxzQkFBc0IsRUFDdEJELHNCQUFzQixFQUN0QkgscUJBQXFCLEVBQ3JCOUYsQ0FBQyxFQUNEUixRQUFRLEVBQ1JZLFdBQVcsRUFDWG9HLHdCQUF3QixFQUN4Qlosa0JBQWtCLEVBQ2xCNkUsV0FBVyxFQUNYOUssbUJBQW1CLENBQ3BCLENBQUM7RUFFRnRJLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSWlPLGFBQWEsRUFBRTtNQUNqQixJQUFJbkUsY0FBYyxDQUFDMkcsT0FBTyxDQUFDMUcsUUFBUSxDQUFDOEYsTUFBTSxJQUFJL0YsY0FBYyxDQUFDMkcsT0FBTyxDQUFDekcsUUFBUSxDQUFDNkYsTUFBTSxFQUFFO1FBQ3BGLElBQUlRLHVCQUF1QixDQUFDLENBQUMsRUFBRTtVQUM3QnBHLG1CQUFtQixDQUFDd0csT0FBTyxHQUFHO1lBQzVCdkcsY0FBYyxFQUFFLEtBQUs7WUFDckJDLGFBQWEsRUFBRSxJQUFJO1lBQ25CQyxjQUFjLEVBQUUsSUFBSTtZQUNwQkMsYUFBYSxFQUFFLFFBQVE7WUFDdkJDLGFBQWEsRUFBRTtVQUNqQixDQUFDO1FBQ0g7UUFFQSxJQUFJNkIsV0FBVyxDQUFDOUgsT0FBTyxDQUFDTyxFQUFFLEVBQUU7VUFDMUIsSUFBTWlULGFBQWEsR0FBQXJELGtCQUFBLENBQU8xSyxjQUFjLENBQUMyRyxPQUFPLENBQUMxRyxRQUFRLENBQUM7VUFDMUQsSUFBTXdPLGFBQWEsR0FBQS9ELGtCQUFBLENBQU8xSyxjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRLENBQUM7VUFDMURGLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQzFHLFFBQVEsR0FBRyxFQUFFO1VBQ3BDRCxjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRLEdBQUcsRUFBRTtVQUVwQ2lPLE9BQU8sQ0FBQ0csR0FBRyxFQUNUdEosK0JBQStCLENBQUM7WUFDOUIrSSxhQUFhLEVBQWJBLGFBQWE7WUFDYkMsYUFBYSxFQUFFUyxhQUFhO1lBQzVCdkYsT0FBTyxFQUFFN0csV0FBVyxDQUFDOUgsT0FBTyxDQUFDTyxFQUFFLENBQUM4QixRQUFRLENBQUM7VUFDM0MsQ0FBQyxDQUFDLEVBQUFxTyxNQUFBLENBQUFQLGtCQUFBLENBQ0VuRSx1QkFBdUIsQ0FBQyxDQUFDLEdBQ3pCLENBQUNoQixrQkFBa0IsQ0FBQ2xELFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ08sRUFBRSxDQUFDOEIsUUFBUSxDQUFDLENBQUMsRUFBRXlGLFdBQVcsQ0FBQ25ILGFBQWEsQ0FBQyxDQUFDLEdBQ2xGLEVBQUUsRUFDUCxDQUFDO1FBQ0o7UUFDQTZFLGtCQUFrQixDQUFDNEcsT0FBTyxHQUFHLElBQUk7UUFDakN2RCxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7UUFDM0I7TUFDRjtNQUNBLElBQUlwRCxjQUFjLENBQUMyRyxPQUFPLENBQUMxRyxRQUFRLENBQUM4RixNQUFNLEVBQUU7UUFDMUMsSUFBSVEsdUJBQXVCLENBQUMsQ0FBQyxFQUFFO1VBQzdCcEcsbUJBQW1CLENBQUN3RyxPQUFPLEdBQUc7WUFDNUJ2RyxjQUFjLEVBQUUsS0FBSztZQUNyQkMsYUFBYSxFQUFFLElBQUk7WUFDbkJDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCQyxhQUFhLEVBQUUsUUFBUTtZQUN2QkMsYUFBYSxFQUFFO1VBQ2pCLENBQUM7UUFDSDtRQUVBLElBQUk2QixXQUFXLENBQUM5SCxPQUFPLENBQUNPLEVBQUUsRUFBRTtVQUMxQixJQUFNaVQsY0FBYSxHQUFBckQsa0JBQUEsQ0FBTzFLLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQzFHLFFBQVEsQ0FBQztVQUMxREQsY0FBYyxDQUFDMkcsT0FBTyxDQUFDMUcsUUFBUSxHQUFHLEVBQUU7VUFFcENrTyxPQUFPLENBQUNHLEdBQUcsRUFDVHZKLHNCQUFzQixDQUFDO1lBQ3JCd0osS0FBSyxFQUFFUixjQUFhO1lBQ3BCN0UsT0FBTyxFQUFFN0csV0FBVyxDQUFDOUgsT0FBTyxDQUFDTyxFQUFFLENBQUM4QixRQUFRLENBQUM7VUFDM0MsQ0FBQyxDQUFDLEVBQUFxTyxNQUFBLENBQUFQLGtCQUFBLENBQ0VuRSx1QkFBdUIsQ0FBQyxDQUFDLEdBQ3pCLENBQUNoQixrQkFBa0IsQ0FBQ2xELFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ08sRUFBRSxDQUFDOEIsUUFBUSxDQUFDLENBQUMsRUFBRXlGLFdBQVcsQ0FBQ25ILGFBQWEsQ0FBQyxDQUFDLEdBQ2xGLEVBQUUsRUFDUCxDQUFDO1FBQ0o7UUFDQTtNQUNGO01BQ0EsSUFBSThFLGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQ3pHLFFBQVEsQ0FBQzZGLE1BQU0sRUFBRTtRQUMxQyxJQUFJUSx1QkFBdUIsQ0FBQyxDQUFDLEVBQUU7VUFDN0JwRyxtQkFBbUIsQ0FBQ3dHLE9BQU8sR0FBRztZQUM1QnZHLGNBQWMsRUFBRSxLQUFLO1lBQ3JCQyxhQUFhLEVBQUUsSUFBSTtZQUNuQkMsY0FBYyxFQUFFLElBQUk7WUFDcEJDLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCQyxhQUFhLEVBQUU7VUFDakIsQ0FBQztRQUNIO1FBRUEsSUFBSTZCLFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ08sRUFBRSxFQUFFO1VBQzFCLElBQU0yVCxjQUFhLEdBQUEvRCxrQkFBQSxDQUFPMUssY0FBYyxDQUFDMkcsT0FBTyxDQUFDekcsUUFBUSxDQUFDO1VBQzFERixjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRLEdBQUcsRUFBRTtVQUVwQ2lPLE9BQU8sQ0FBQ0csR0FBRyxFQUNUeEosc0JBQXNCLENBQUM7WUFDckJ5SixLQUFLLEVBQUVFLGNBQWE7WUFDcEJ2RixPQUFPLEVBQUU3RyxXQUFXLENBQUM5SCxPQUFPLENBQUNPLEVBQUUsQ0FBQzhCLFFBQVEsQ0FBQztVQUMzQyxDQUFDLENBQUMsRUFBQXFPLE1BQUEsQ0FBQVAsa0JBQUEsQ0FDRW5FLHVCQUF1QixDQUFDLENBQUMsR0FDekIsQ0FBQ2hCLGtCQUFrQixDQUFDbEQsV0FBVyxDQUFDOUgsT0FBTyxDQUFDTyxFQUFFLENBQUM4QixRQUFRLENBQUMsQ0FBQyxFQUFFeUYsV0FBVyxDQUFDbkgsYUFBYSxDQUFDLENBQUMsR0FDbEYsRUFBRSxFQUNQLENBQUM7UUFDSjtRQUNBNkUsa0JBQWtCLENBQUM0RyxPQUFPLEdBQUcsSUFBSTtRQUNqQ3ZELHFCQUFxQixDQUFDLElBQUksQ0FBQztRQUMzQjtNQUNGO01BQ0EsSUFBSW1ELHVCQUF1QixDQUFDLENBQUMsRUFBRTtRQUM3QjtRQUNBLElBQUksQ0FBQ3BHLG1CQUFtQixDQUFDd0csT0FBTyxDQUFDbkcsYUFBYSxJQUFJLENBQUNMLG1CQUFtQixDQUFDd0csT0FBTyxDQUFDckcsY0FBYyxFQUFFO1VBQzdGSCxtQkFBbUIsQ0FBQ3dHLE9BQU8sR0FBRztZQUM1QnZHLGNBQWMsRUFBRSxLQUFLO1lBQ3JCQyxhQUFhLEVBQUUsSUFBSTtZQUNuQkMsY0FBYyxFQUFFLEtBQUs7WUFDckJDLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCQyxhQUFhLEVBQUU7VUFDakIsQ0FBQztRQUNIO1FBRUEsSUFBSTZCLFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ08sRUFBRSxFQUFFO1VBQzFCO1VBQ0EsSUFBSSxDQUFDcUYsbUJBQW1CLENBQUN3RyxPQUFPLENBQUNuRyxhQUFhLEVBQUU7WUFDOUMrRSxrQkFBa0IsQ0FBQ2xELFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ08sRUFBRSxDQUFDOEIsUUFBUSxDQUFDLENBQUMsRUFBRXlGLFdBQVcsQ0FBQ25ILGFBQWEsQ0FBQztZQUNoRmlGLG1CQUFtQixDQUFDd0csT0FBTyxDQUFDbkcsYUFBYSxHQUFHLElBQUk7VUFDbEQ7UUFDRjtRQUNBO01BQ0Y7O01BRUE7TUFDQSxJQUNFLENBQUNULGtCQUFrQixDQUFDNEcsT0FBTyxJQUMzQixDQUFDeEQsa0JBQWtCLElBQ25CLENBQUNuRCxjQUFjLENBQUMyRyxPQUFPLENBQUN6RyxRQUFRLENBQUM2RixNQUFNLElBQ3ZDLENBQUM1RixtQkFBbUIsQ0FBQ3dHLE9BQU8sQ0FBQ3JHLGNBQWMsSUFDM0MsQ0FBQ2tGLG1CQUFtQixJQUNwQixDQUFDMUUsdUJBQXVCLENBQUM2RixPQUFPLEVBQ2hDO1FBQ0FoQyxxQkFBcUIsQ0FBQzlGLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DUCxXQUFXLENBQUM2RixhQUFhLENBQUM7UUFDMUIsSUFBSSxDQUFBcEYsb0JBQW9CLGFBQXBCQSxvQkFBb0IsdUJBQXBCQSxvQkFBb0IsQ0FBRWpFLEVBQUUsTUFBS3FKLGFBQWEsQ0FBQ3JKLEVBQUUsRUFBRTtVQUNqRG1FLFdBQVcsQ0FBQ2tGLGFBQWEsQ0FBQztRQUM1QjtRQUNBa0Isd0JBQXdCLENBQUMsQ0FBQztRQUMxQmpCLGtCQUFrQixDQUFDLENBQUM7UUFDcEI3RSxRQUFRLENBQUNtUCxhQUFhLENBQUMsSUFBSUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMURyRixXQUFXLENBQUMsQ0FBQztNQUNmO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FDRG5GLGFBQWEsRUFDYjlCLFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ08sRUFBRSxFQUN0QmtLLCtCQUErQixFQUMvQkQsc0JBQXNCLEVBQ3RCRCxzQkFBc0IsRUFDdEJILHFCQUFxQixFQUNyQjlGLENBQUMsRUFDRFAsV0FBVyxFQUNYK0csd0JBQXdCLEVBQ3hCakIsa0JBQWtCLEVBQ2xCa0YsV0FBVyxDQUNaLENBQUM7RUFFRixJQUFNc0YseUJBQXlCLEdBQUd0WSxXQUFXLENBQUMsWUFBTTtJQUNsRCxJQUFJLENBQUN5SixrQkFBa0IsQ0FBQzRHLE9BQU8sSUFBSSxDQUFDeEQsa0JBQWtCLEVBQUU7O0lBRXhEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7O0lBRUE7SUFDQTtJQUNBckMsdUJBQXVCLENBQUM2RixPQUFPLEdBQUcsSUFBSTtJQUV0QyxJQUFJdEUsV0FBVyxDQUFDaEksU0FBUyxJQUFJOEosYUFBYSxFQUFFO01BQzFDN0YsV0FBVyxDQUFDNkYsYUFBYSxDQUFDO01BQzFCLElBQUksQ0FBQXBGLG9CQUFvQixhQUFwQkEsb0JBQW9CLHVCQUFwQkEsb0JBQW9CLENBQUVqRSxFQUFFLE1BQUtxSixhQUFhLENBQUNySixFQUFFLEVBQUU7UUFDakRtRSxXQUFXLENBQUNrRixhQUFhLENBQUM7TUFDNUI7TUFDQTVFLFFBQVEsQ0FBQ21QLGFBQWEsQ0FBQyxJQUFJQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztNQUMxRGhLLHFCQUFxQixDQUFDOUYsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7TUFDL0N1RixrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RCLENBQUMsTUFBTSxJQUFJLENBQUMvQixXQUFXLENBQUNoSSxTQUFTLElBQUltSyxhQUFhLEVBQUU7TUFDbERHLHFCQUFxQixDQUFDOUYsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7TUFDL0M0RixrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RCO0lBRUFXLHNCQUFzQixDQUFDLENBQUM7SUFDeEJDLHdCQUF3QixDQUFDLENBQUM7SUFDMUJLLHdCQUF3QixDQUFDLENBQUM7SUFFMUI0RCxXQUFXLENBQUMsQ0FBQztFQUNmLENBQUMsRUFBRSxDQUNEbkcsa0JBQWtCLEVBQ2xCZCxXQUFXLENBQUNoSSxTQUFTLEVBQ3JCOEosYUFBYSxFQUNiSyxhQUFhLEVBQ2JsRyxXQUFXLEVBQ1hTLG9CQUFvQixhQUFwQkEsb0JBQW9CLHVCQUFwQkEsb0JBQW9CLENBQUVqRSxFQUFFLEVBQ3hCbUUsV0FBVyxFQUNYMEYscUJBQXFCLEVBQ3JCOUYsQ0FBQyxFQUNEdUYsa0JBQWtCLEVBQ2xCSyxrQkFBa0IsRUFDbEJXLHNCQUFzQixFQUN0QkMsd0JBQXdCLEVBQ3hCSyx3QkFBd0IsRUFDeEI0RCxXQUFXLENBQ1osQ0FBQztFQUVGLElBQU11RixpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBQyxLQUFBLEVBQXVEO0lBQUEsSUFBckNDLFNBQVMsR0FBQUQsS0FBQSxDQUFyQkUsVUFBVTtJQUNyQyxJQUFNQyxVQUFVLEdBQUdGLFNBQVM7SUFDNUIsSUFBSUUsVUFBVSxDQUFDaFMsTUFBTSxLQUFLLE1BQU0sSUFBSWdTLFVBQVUsQ0FBQ2hTLE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFDbEVxRixjQUFjLENBQUMsVUFBQXhHLElBQUksRUFBSTtRQUNyQixJQUFNb1QsZ0JBQWdCLEdBQUdwVCxJQUFJLENBQUN4QixTQUFTLENBQUNpQyxHQUFHLENBQUMsVUFBQUUsSUFBSSxFQUFJO1VBQ2xELElBQUlBLElBQUksQ0FBQ2pDLElBQUksS0FBS3lVLFVBQVUsQ0FBQ3RTLFFBQVEsRUFBRTtZQUNyQyxPQUFBbkIsYUFBQSxDQUFBQSxhQUFBLEtBQ0tpQixJQUFJO2NBQ1BRLE1BQU0sRUFBRWdTLFVBQVUsQ0FBQ2hTLE1BQU07Y0FDekJuQyxFQUFFLEVBQUVtVSxVQUFVLENBQUNFLGlCQUFpQixJQUFJMVMsSUFBSSxDQUFDM0I7WUFBRTtVQUUvQztVQUNBLE9BQU8yQixJQUFJO1FBQ2IsQ0FBQyxDQUFDO1FBQ0YsSUFBTTJTLGVBQWUsR0FBR0YsZ0JBQWdCLENBQUNHLElBQUksQ0FBQyxVQUFBNVMsSUFBSTtVQUFBLE9BQUlBLElBQUksQ0FBQ1EsTUFBTSxLQUFLLFNBQVM7UUFBQSxFQUFDO1FBQ2hGLElBQU1xUyxhQUFhLEdBQUdKLGdCQUFnQixDQUFDRyxJQUFJLENBQUMsVUFBQTVTLElBQUk7VUFBQSxPQUFJQSxJQUFJLENBQUNRLE1BQU0sS0FBSyxRQUFRO1FBQUEsRUFBQztRQUM3RSxJQUFJcVMsYUFBYSxJQUFJLENBQUNGLGVBQWUsRUFBRTtVQUNyQ3JQLGtCQUFrQixDQUFDNEcsT0FBTyxHQUFHLEtBQUs7VUFDbEN2RCxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7VUFDNUJ3QixtQkFBbUIsQ0FDakJ2QyxXQUFXLENBQUNoSSxTQUFTLEdBQUd3RSxDQUFDLENBQUMsbUNBQW1DLENBQUMsR0FBR0EsQ0FBQyxDQUFDLDRCQUE0QixDQUNqRyxDQUFDO1FBQ0gsQ0FBQyxNQUFNLElBQUksQ0FBQ3VRLGVBQWUsSUFBSSxDQUFDRSxhQUFhLEVBQUU7VUFDN0N2UCxrQkFBa0IsQ0FBQzRHLE9BQU8sR0FBRyxLQUFLO1VBQ2xDdkQscUJBQXFCLENBQUMsS0FBSyxDQUFDOztVQUU1QjtVQUNBLElBQUlqRCxtQkFBbUIsQ0FBQ3dHLE9BQU8sQ0FBQ3JHLGNBQWMsSUFBSUcsZ0JBQWdCLENBQUNrRyxPQUFPLEVBQUU7WUFDMUV6RixpQkFBaUIsQ0FBQyxVQUFBcU8sU0FBUztjQUFBLE9BQUlBLFNBQVMsR0FBRyxDQUFDO1lBQUEsRUFBQztVQUMvQyxDQUFDLE1BQU0sSUFDTHBQLG1CQUFtQixDQUFDd0csT0FBTyxDQUFDcEcsYUFBYSxLQUFLLFFBQVEsSUFDdEQsQ0FBQ0osbUJBQW1CLENBQUN3RyxPQUFPLENBQUNyRyxjQUFjLElBQzNDLENBQUNPLGdCQUFnQixDQUFDOEYsT0FBTyxFQUN6QjtZQUNBO1lBQ0E5RixnQkFBZ0IsQ0FBQzhGLE9BQU8sR0FBRyxJQUFJO1lBQy9CekYsaUJBQWlCLENBQUMsVUFBQXFPLFNBQVM7Y0FBQSxPQUFJQSxTQUFTLEdBQUcsQ0FBQztZQUFBLEVBQUM7VUFDL0M7UUFDRjtRQUNBLE9BQUEvVCxhQUFBLENBQUFBLGFBQUEsS0FDS00sSUFBSTtVQUNQeEIsU0FBUyxFQUFFNFU7UUFBZ0I7TUFFL0IsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDO0VBRURoWixTQUFTLENBQUMsWUFBTTtJQUNkLElBQUlpUCxzQkFBc0IsSUFBSSxDQUFDRixrQkFBa0IsSUFBSSxDQUFDQyxjQUFjLEVBQUU7TUFDcEU7TUFDQSxJQUFJbkYsa0JBQWtCLENBQUM0RyxPQUFPLElBQUl4RCxrQkFBa0IsSUFBSW5ELGNBQWMsQ0FBQzJHLE9BQU8sQ0FBQ3pHLFFBQVEsQ0FBQzZGLE1BQU0sRUFBRTtRQUM5RjtNQUNGO01BQ0E7TUFDQSxJQUFJakYsdUJBQXVCLENBQUM2RixPQUFPLEVBQUU7UUFDbkM7TUFDRjtNQUNBaEMscUJBQXFCLENBQUM5RixDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztNQUMvQ3dHLHdCQUF3QixDQUFDLENBQUM7TUFDMUJpRSxXQUFXLENBQUMsQ0FBQztJQUNmO0lBQ0EsSUFBSXBFLGNBQWMsRUFBRTtNQUNsQk4sbUJBQW1CLENBQ2pCdkMsV0FBVyxDQUFDaEksU0FBUyxHQUFHd0UsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLEdBQUdBLENBQUMsQ0FBQyw0QkFBNEIsQ0FDakcsQ0FBQztNQUNEd0csd0JBQXdCLENBQUMsQ0FBQztJQUM1QjtFQUNGLENBQUMsRUFBRSxDQUFDRixzQkFBc0IsRUFBRUYsa0JBQWtCLEVBQUVDLGNBQWMsRUFBRS9CLGtCQUFrQixDQUFDLENBQUM7RUFFcEZqTixTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1zWixPQUFPLEdBQUdyUCxtQkFBbUIsQ0FBQ3dHLE9BQU87O0lBRTNDO0lBQ0EsSUFBSTZJLE9BQU8sQ0FBQ2xQLGNBQWMsS0FBS1Asa0JBQWtCLENBQUM0RyxPQUFPLElBQUl4RCxrQkFBa0IsQ0FBQyxFQUFFO01BQ2hGO01BQ0EsSUFBSXFDLG1CQUFtQixJQUFJLENBQUMvRSxnQkFBZ0IsQ0FBQ2tHLE9BQU8sRUFBRTtRQUNwRGxHLGdCQUFnQixDQUFDa0csT0FBTyxHQUFHLElBQUk7TUFDakM7TUFDQTtJQUNGOztJQUVBO0lBQ0EsSUFBSWxHLGdCQUFnQixDQUFDa0csT0FBTyxJQUFJNkksT0FBTyxDQUFDbFAsY0FBYyxJQUFJa1AsT0FBTyxDQUFDalAsYUFBYSxLQUFLLFFBQVEsRUFBRTtNQUM1Rm9FLHFCQUFxQixDQUFDOUYsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7TUFDL0M0RixrQkFBa0IsQ0FBQyxDQUFDO01BQ3BCLElBQUllLG1CQUFtQixFQUFFO1FBQ3ZCRSx3QkFBd0IsQ0FBQyxDQUFDO01BQzVCO01BQ0E0RCxXQUFXLENBQUMsQ0FBQztNQUNibkosbUJBQW1CLENBQUN3RyxPQUFPLEdBQUc7UUFDNUJ2RyxjQUFjLEVBQUUsS0FBSztRQUNyQkMsYUFBYSxFQUFFLEtBQUs7UUFDcEJDLGNBQWMsRUFBRSxLQUFLO1FBQ3JCQyxhQUFhLEVBQUUsSUFBSTtRQUNuQkMsYUFBYSxFQUFFO01BQ2pCLENBQUM7TUFDRDtJQUNGO0lBRUEsSUFBSSxDQUFDZ0YsbUJBQW1CLEVBQUU7TUFDeEIvRSxnQkFBZ0IsQ0FBQ2tHLE9BQU8sR0FBRyxLQUFLO01BQ2hDO0lBQ0Y7SUFFQSxJQUFJbEcsZ0JBQWdCLENBQUNrRyxPQUFPLEVBQUU7TUFDNUI7SUFDRjtJQUVBbEcsZ0JBQWdCLENBQUNrRyxPQUFPLEdBQUcsSUFBSTtJQUMvQmpCLHdCQUF3QixDQUFDLENBQUM7SUFFMUIsSUFBSThKLE9BQU8sQ0FBQ2pQLGFBQWEsS0FBSyxRQUFRLEVBQUU7TUFDdEM7TUFDQTtNQUNBLElBQUlpUCxPQUFPLENBQUNsUCxjQUFjLEVBQUU7UUFDMUJxRSxxQkFBcUIsQ0FBQzlGLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DNEYsa0JBQWtCLENBQUMsQ0FBQztRQUNwQjZFLFdBQVcsQ0FBQyxDQUFDO1FBQ2I7TUFDRjs7TUFFQTtNQUNBLElBQU1tRyxVQUFVLEdBQUdwTixXQUFXLENBQUM5SCxPQUFPLENBQUNVLFdBQVcsR0FBQU8sYUFBQSxDQUFBQSxhQUFBLEtBQVFnSixhQUFhO1FBQUV2SixXQUFXLEVBQUU7TUFBSSxLQUFLdUosYUFBYTtNQUU1R0cscUJBQXFCLENBQUM5RixDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztNQUMvQ1IsUUFBUSxDQUFDb1IsVUFBVSxDQUFDO01BQ3BCeFEsV0FBVyxDQUFDd1EsVUFBVSxDQUFDOztNQUV2QjtNQUNBLElBQUlwTixXQUFXLENBQUM5SCxPQUFPLENBQUNVLFdBQVcsRUFBRTtRQUNuQztRQUNBO1FBQ0EsSUFBTWlULGNBQWMsR0FBQTFTLGFBQUEsQ0FBQUEsYUFBQSxLQUFRaVUsVUFBVTtVQUFFeFUsV0FBVyxFQUFFO1FBQUssRUFBRTtRQUM1RGdPLDRCQUE0QixDQUMxQnpFLGFBQWEsQ0FBQzFKLEVBQUUsQ0FBQzhCLFFBQVEsQ0FBQyxDQUFDLEVBQzNCc1IsY0FBYyxFQUNkLFlBQU07VUFDSjtVQUNBekosa0JBQWtCLENBQUMsQ0FBQztVQUNwQjZFLFdBQVcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxFQUNELFlBQU07VUFDSjdFLGtCQUFrQixDQUFDLENBQUM7VUFDcEI2RSxXQUFXLENBQUMsQ0FBQztRQUNmLENBQ0YsQ0FBQztNQUNILENBQUMsTUFBTTtRQUNMN0Usa0JBQWtCLENBQUMsQ0FBQztRQUNwQjZFLFdBQVcsQ0FBQyxDQUFDO01BQ2Y7SUFDRixDQUFDLE1BQU0sSUFBSWtHLE9BQU8sQ0FBQ2pQLGFBQWEsS0FBSyxRQUFRLEVBQUU7TUFDN0NvRSxxQkFBcUIsQ0FBQzlGLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO01BQy9DUCxXQUFXLENBQUM2RixhQUFhLENBQUM7TUFDMUIsSUFBSSxDQUFBcEYsb0JBQW9CLGFBQXBCQSxvQkFBb0IsdUJBQXBCQSxvQkFBb0IsQ0FBRWpFLEVBQUUsTUFBS3FKLGFBQWEsQ0FBQ3JKLEVBQUUsRUFBRTtRQUNqRG1FLFdBQVcsQ0FBQ2tGLGFBQWEsQ0FBQztNQUM1QjtNQUNBQyxrQkFBa0IsQ0FBQyxDQUFDO01BQ3BCN0UsUUFBUSxDQUFDbVAsYUFBYSxDQUFDLElBQUlDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO01BQzFEckYsV0FBVyxDQUFDLENBQUM7SUFDZjtJQUVBbkosbUJBQW1CLENBQUN3RyxPQUFPLEdBQUc7TUFDNUJ2RyxjQUFjLEVBQUUsS0FBSztNQUNyQkMsYUFBYSxFQUFFLEtBQUs7TUFDcEJDLGNBQWMsRUFBRSxLQUFLO01BQ3JCQyxhQUFhLEVBQUUsSUFBSTtNQUNuQkMsYUFBYSxFQUFFO0lBQ2pCLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ2dGLG1CQUFtQixFQUFFdkUsY0FBYyxDQUFDLENBQUM7O0VBRXpDO0VBQ0EvSyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1zWixPQUFPLEdBQUdyUCxtQkFBbUIsQ0FBQ3dHLE9BQU87O0lBRTNDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQ0U2SSxPQUFPLENBQUNqUCxhQUFhLEtBQUssUUFBUSxJQUNsQyxDQUFDaVAsT0FBTyxDQUFDbFAsY0FBYyxJQUN2Qk8sZ0JBQWdCLENBQUM4RixPQUFPLElBQ3hCbkMsYUFBYSxJQUNiLENBQUN6RSxrQkFBa0IsQ0FBQzRHLE9BQU8sSUFDM0IsQ0FBQ3hELGtCQUFrQixFQUNuQjtNQUNBd0IscUJBQXFCLENBQUM5RixDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztNQUMvQzRGLGtCQUFrQixDQUFDLENBQUM7TUFDcEI2RSxXQUFXLENBQUMsQ0FBQztNQUNiekksZ0JBQWdCLENBQUM4RixPQUFPLEdBQUcsS0FBSztNQUNoQ3hHLG1CQUFtQixDQUFDd0csT0FBTyxHQUFHO1FBQzVCdkcsY0FBYyxFQUFFLEtBQUs7UUFDckJDLGFBQWEsRUFBRSxLQUFLO1FBQ3BCQyxjQUFjLEVBQUUsS0FBSztRQUNyQkMsYUFBYSxFQUFFLElBQUk7UUFDbkJDLGFBQWEsRUFBRTtNQUNqQixDQUFDO0lBQ0g7O0lBRUE7SUFDQSxJQUNFZ1AsT0FBTyxDQUFDalAsYUFBYSxLQUFLLFFBQVEsSUFDbENpUCxPQUFPLENBQUNsUCxjQUFjLElBQ3RCRyxnQkFBZ0IsQ0FBQ2tHLE9BQU8sSUFDeEJuQyxhQUFhLElBQ2IsQ0FBQ3pFLGtCQUFrQixDQUFDNEcsT0FBTyxJQUMzQixDQUFDeEQsa0JBQWtCLEVBQ25CO01BQ0F3QixxQkFBcUIsQ0FBQzlGLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO01BQy9DNEYsa0JBQWtCLENBQUMsQ0FBQztNQUNwQixJQUFJZSxtQkFBbUIsRUFBRTtRQUN2QkUsd0JBQXdCLENBQUMsQ0FBQztNQUM1QjtNQUNBNEQsV0FBVyxDQUFDLENBQUM7TUFDYm5KLG1CQUFtQixDQUFDd0csT0FBTyxHQUFHO1FBQzVCdkcsY0FBYyxFQUFFLEtBQUs7UUFDckJDLGFBQWEsRUFBRSxLQUFLO1FBQ3BCQyxjQUFjLEVBQUUsS0FBSztRQUNyQkMsYUFBYSxFQUFFLElBQUk7UUFDbkJDLGFBQWEsRUFBRTtNQUNqQixDQUFDO0lBQ0g7RUFDRixDQUFDLEVBQUUsQ0FDRFMsY0FBYyxFQUNkdUQsYUFBYSxFQUNiZ0IsbUJBQW1CLEVBQ25CckMsa0JBQWtCLEVBQ2xCd0IscUJBQXFCLEVBQ3JCOUYsQ0FBQyxFQUNENEYsa0JBQWtCLEVBQ2xCaUIsd0JBQXdCLEVBQ3hCNEQsV0FBVyxDQUNaLENBQUM7RUFFRnBULFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSWlOLGtCQUFrQixFQUFFO01BQUEsSUFBQXVNLGlCQUFBO01BQ3RCLElBQU1DLE9BQU8sNEJBQUExRSxNQUFBLENBQTRCclAsU0FBUyxHQUFHQSxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRWQsRUFBRSxHQUFHMEosYUFBYSxhQUFiQSxhQUFhLGdCQUFBa0wsaUJBQUEsR0FBYmxMLGFBQWEsQ0FBRTFKLEVBQUUsY0FBQTRVLGlCQUFBLHVCQUFqQkEsaUJBQUEsQ0FBbUI5UyxRQUFRLENBQUMsQ0FBQyxDQUFFO01BQ3BHLElBQUlnVCxJQUFJLEVBQUU7UUFDUixJQUFJaFEsWUFBWSxFQUFFO1VBQUEsSUFBQWlRLEtBQUE7VUFDaEIsQ0FBQUEsS0FBQSxHQUFBRCxJQUFJLGNBQUFDLEtBQUEsZUFBSkEsS0FBQSxDQUFNQyxnQkFBZ0IsQ0FBQ0gsT0FBTyxFQUFFZCxpQkFBaUIsQ0FBQztRQUNwRCxDQUFDLE1BQU07VUFBQSxJQUFBa0IsTUFBQSxFQUFBQyxNQUFBLEVBQUFDLGlCQUFBO1VBQ0wsSUFBTWxCLFNBQVMsR0FBRztZQUNoQm1CLFVBQVUsRUFBRVAsT0FBTztZQUNuQmhFLE1BQU0sR0FBQW9FLE1BQUEsR0FBRUgsSUFBSSxjQUFBRyxNQUFBLGdCQUFBQSxNQUFBLEdBQUpBLE1BQUEsQ0FBTUksVUFBVSxjQUFBSixNQUFBLHVCQUFoQkEsTUFBQSxDQUFrQks7VUFDNUIsQ0FBQztVQUNELENBQUFKLE1BQUEsR0FBQUosSUFBSSxjQUFBSSxNQUFBLGVBQUpBLE1BQUEsQ0FBTUsscUJBQXFCLENBQUN0QixTQUFTLEVBQUVZLE9BQU8sRUFBRWpSLElBQUksRUFBRUEsSUFBSSxHQUFBdVIsaUJBQUEsR0FBRUwsSUFBSSxDQUFDVSxXQUFXLGNBQUFMLGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JNLGFBQWEsQ0FBQztVQUM1RjFRLGVBQWUsQ0FBQyxJQUFJLENBQUM7UUFDdkI7TUFDRjtJQUNGO0VBQ0YsQ0FBQyxFQUFFLENBQUNzRCxrQkFBa0IsRUFBRXZELFlBQVksRUFBRWdRLElBQUksRUFBRWhVLFNBQVMsRUFBRTRJLGFBQWEsQ0FBQyxDQUFDO0VBRXRFdE8sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUNtTCxNQUFNLElBQUksQ0FBQ3hGLFdBQVcsQ0FBQ2tLLE1BQU0sRUFBRTtJQUNwQyxJQUFJdkQsWUFBWSxJQUFJLENBQUM1QixzQkFBc0IsQ0FBQytGLE9BQU8sRUFBRTtJQUVyRCxJQUFNNkosaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsTUFBVyxFQUFLO01BQ3pDLElBQUlBLE1BQU0sQ0FBQzFULElBQUksS0FBSyxRQUFRLElBQUksQ0FBQ3lNLE1BQU0sQ0FBQ3dDLHdDQUF3QyxFQUFFO1FBQ2hGcEgsbUJBQW1CLENBQUMvRixDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQ3FELFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDbkJ3TyxVQUFVLENBQUMsWUFBTTtVQUNmcEgsV0FBVyxDQUFDLENBQUM7UUFDZixDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQ1IsT0FBTyxLQUFLO01BQ2Q7TUFDQWhILGNBQWMsQ0FBQyxVQUFBeEcsSUFBSSxFQUFJO1FBQ3JCLElBQU02VSxnQkFBZ0IsR0FBR2hWLHNDQUFzQyxDQUFDOFUsTUFBTSxFQUFFNVUsV0FBVyxFQUFFQyxJQUFJLENBQUM7UUFDMUZrSCxlQUFlLENBQUMyRCxPQUFPLEdBQUdnSyxnQkFBZ0I7UUFDMUMsT0FBT0EsZ0JBQWdCO01BQ3pCLENBQUMsQ0FBQztNQUNGek8sWUFBWSxDQUFDLEtBQUssQ0FBQztNQUNuQixJQUFJdkIsd0JBQXdCLENBQUNnRyxPQUFPLEVBQUU7UUFDcEM3RSxVQUFVLENBQUNuQix3QkFBd0IsQ0FBQ2dHLE9BQU8sQ0FBQztRQUM1Q2hHLHdCQUF3QixDQUFDZ0csT0FBTyxHQUFHLElBQUk7TUFDekM7TUFDQSxPQUFPLElBQUk7SUFDYixDQUFDO0lBRUQsSUFBTWlLLFVBQVUsR0FBR2hRLHNCQUFzQixDQUFDK0YsT0FBTztJQUNqRCxJQUFJaUssVUFBVSxFQUFFO01BQ2RoUSxzQkFBc0IsQ0FBQytGLE9BQU8sR0FBRyxJQUFJO01BQ3JDNkosaUJBQWlCLENBQUNJLFVBQVUsQ0FBQztNQUM3QjtJQUNGO0lBRUEsSUFBSWhWLFNBQVMsSUFBSSxDQUFDNEcsWUFBWSxJQUFJM0csV0FBVyxDQUFDa0ssTUFBTSxFQUFFO01BQ3BEeUssaUJBQWlCLENBQUM1VSxTQUFTLENBQUM7TUFDNUI7SUFDRjtJQUVBLElBQUksQ0FBQ3FHLFNBQVMsSUFBSSxDQUFDTyxZQUFZLElBQUksQ0FBQzVHLFNBQVMsSUFBSSxDQUFDeUcsV0FBVyxDQUFDaEksU0FBUyxFQUFFO01BQ3ZFaUksY0FBYyxDQUFDLFVBQUF4RyxJQUFJO1FBQUEsT0FBQU4sYUFBQSxDQUFBQSxhQUFBLEtBQ2RNLElBQUk7VUFDUHZCLE9BQU8sRUFBQWlCLGFBQUEsQ0FBQUEsYUFBQSxLQUNGTSxJQUFJLENBQUN2QixPQUFPO1lBQ2ZNLE9BQU8sRUFBRWdCLFdBQVcsQ0FBQyxDQUFDO1VBQUM7UUFDeEI7TUFBQSxDQUNELENBQUM7SUFDTDtFQUNGLENBQUMsRUFBRSxDQUFDRCxTQUFTLEVBQUV5RixNQUFNLEVBQUVZLFNBQVMsRUFBRU8sWUFBWSxFQUFFM0csV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVrSyxNQUFNLEVBQUUxRCxXQUFXLENBQUNoSSxTQUFTLEVBQUV3RSxDQUFDLENBQUMsQ0FBQztFQUUvRjNJLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSTBNLGlCQUFpQixFQUFFO01BQ3JCLElBQUlBLGlCQUFpQixLQUFLLCtEQUErRCxFQUFFO1FBQ3pGZ0MsbUJBQW1CLENBQUMvRixDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQzZSLFVBQVUsQ0FBQyxZQUFNO1VBQ2ZwSCxXQUFXLENBQUMsQ0FBQztRQUNmLENBQUMsRUFBRSxJQUFJLENBQUM7UUFDUjtNQUNGO01BQ0ExRSxtQkFBbUIsQ0FBQ2hDLGlCQUFpQixDQUFDO01BQ3RDOE4sVUFBVSxDQUFDLFlBQU07UUFDZnBILFdBQVcsQ0FBQyxDQUFDO01BQ2YsQ0FBQyxFQUFFLElBQUksQ0FBQztJQUNWO0VBQ0YsQ0FBQyxFQUFFLENBQUMxRyxpQkFBaUIsQ0FBQyxDQUFDO0VBRXZCLElBQU1pTywyQkFBMkIsR0FBRzFhLE9BQU8sQ0FBQyxZQUFNO0lBQUEsSUFBQTJhLHNCQUFBO0lBQ2hELElBQUksRUFBQ3pPLFdBQVcsYUFBWEEsV0FBVyxnQkFBQXlPLHNCQUFBLEdBQVh6TyxXQUFXLENBQUVuSCxhQUFhLGNBQUE0VixzQkFBQSxlQUExQkEsc0JBQUEsQ0FBNEIxVixPQUFPLEtBQUlpSCxXQUFXLENBQUNuSCxhQUFhLENBQUNFLE9BQU8sQ0FBQzJLLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDMUYsT0FBTyxLQUFLO0lBQ2Q7SUFDQSxPQUFPMUQsV0FBVyxDQUFDbkgsYUFBYSxDQUFDRSxPQUFPLENBQUNpVSxJQUFJLENBQUMsVUFBQS9SLE1BQU07TUFBQSxPQUFJQSxNQUFNLENBQUNJLFNBQVMsS0FBSyxLQUFLLElBQUlKLE1BQU0sQ0FBQ0ssVUFBVSxLQUFLLElBQUk7SUFBQSxFQUFDO0VBQ25ILENBQUMsRUFBRSxDQUFDMEUsV0FBVyxhQUFYQSxXQUFXLGdCQUFBckUsc0JBQUEsR0FBWHFFLFdBQVcsQ0FBRW5ILGFBQWEsY0FBQThDLHNCQUFBLHVCQUExQkEsc0JBQUEsQ0FBNEI1QyxPQUFPLENBQUMsQ0FBQztFQUV6QyxJQUFNMlYsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBQSxFQUFTO0lBQUEsSUFBQUMsb0JBQUE7SUFDakMsSUFBSTNPLFdBQVcsYUFBWEEsV0FBVyxnQkFBQTJPLG9CQUFBLEdBQVgzTyxXQUFXLENBQUU5SCxPQUFPLGNBQUF5VyxvQkFBQSxlQUFwQkEsb0JBQUEsQ0FBc0JsVyxFQUFFLEVBQUU7TUFBQSxJQUFBbVcscUJBQUE7TUFDNUI7TUFDQTVSLGNBQWMsQ0FDWmdELFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ08sRUFBRSxFQUN0QixVQUFBdU8sWUFBWSxFQUFJO1FBQ2QvRyxjQUFjLENBQUMsVUFBQXhHLElBQUk7VUFBQSxPQUFBTixhQUFBLENBQUFBLGFBQUEsS0FDZE0sSUFBSTtZQUNQdkIsT0FBTyxFQUFBaUIsYUFBQSxDQUFBQSxhQUFBLEtBQ0ZNLElBQUksQ0FBQ3ZCLE9BQU87Y0FDZlUsV0FBVyxFQUFFb08sWUFBWSxDQUFDcE87WUFBVztVQUN0QztRQUFBLENBQ0QsQ0FBQztRQUNIO1FBQ0F1RCxtQkFBbUIsQ0FBQzZLLFlBQVksRUFBRSxJQUFJLENBQUM7UUFDdkMxSyxjQUFjLENBQUN6RixNQUFNLENBQUNzVixjQUFjLEVBQUU7VUFDcEN2RSxNQUFNLEVBQUVaLFlBQVksQ0FBQ3BPLFdBQVcsR0FBRyxLQUFLLEdBQUc7UUFDN0MsQ0FBQyxDQUFDO01BQ0osQ0FBQyxFQUNEa0MsU0FBUyxFQUNUa0YsV0FBVyxhQUFYQSxXQUFXLGdCQUFBNE8scUJBQUEsR0FBWDVPLFdBQVcsQ0FBRTlILE9BQU8sY0FBQTBXLHFCQUFBLHVCQUFwQkEscUJBQUEsQ0FBc0JoVyxXQUN4QixDQUFDO0lBQ0gsQ0FBQyxNQUFNO01BQ0w7TUFDQXFILGNBQWMsQ0FBQyxVQUFBeEcsSUFBSTtRQUFBLE9BQUFOLGFBQUEsQ0FBQUEsYUFBQSxLQUNkTSxJQUFJO1VBQ1B2QixPQUFPLEVBQUFpQixhQUFBLENBQUFBLGFBQUEsS0FDRk0sSUFBSSxDQUFDdkIsT0FBTztZQUNmVSxXQUFXLEVBQUUsQ0FBQ2EsSUFBSSxDQUFDdkIsT0FBTyxDQUFDVTtVQUFXO1FBQ3ZDO01BQUEsQ0FDRCxDQUFDO0lBQ0w7RUFDRixDQUFDO0VBRUQsSUFBSSxDQUFDb0csTUFBTSxJQUFLLEVBQUNvQyxlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFeU4sTUFBTSxLQUFJLEVBQUN6TixlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxDQUFFME4sSUFBSSxLQUFJLEVBQUMxTixlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxVQUFRLENBQUMsRUFBRSxPQUFPLElBQUk7RUFFNUcsb0JBQU9sTixZQUFZLGNBQ2pCd0QsS0FBQSxDQUFDN0MsUUFBUTtJQUFDa2EsTUFBTSxFQUFFbFMsbUJBQW9CO0lBQUNtUyxPQUFPLEVBQUUzSCxtQkFBb0I7SUFBQTRILFFBQUEsZ0JBQ2xFelgsSUFBQSxDQUFDM0IsWUFBWTtNQUFDcVosR0FBRyxFQUFFelIsUUFBUztNQUFDMFIsUUFBUSxFQUFFLENBQUMsQ0FBRTtNQUFBRixRQUFBLEVBQ3ZDclAsU0FBUyxnQkFDUnBJLElBQUEsQ0FBQ3RCLG1CQUFtQjtRQUFBK1ksUUFBQSxlQUNsQnpYLElBQUEsQ0FBQ3JCLDBCQUEwQjtVQUFBOFksUUFBQSxlQUN6QnpYLElBQUEsQ0FBQzlDLGFBQWE7WUFBQzhGLElBQUksRUFBQyxNQUFNO1lBQUM0VSxLQUFLLEVBQUM7VUFBUyxDQUFFO1FBQUMsQ0FDbkI7TUFBQyxDQUNWLENBQUMsZ0JBRXRCNVgsSUFBQSxDQUFBSSxTQUFBO1FBQUFxWCxRQUFBLEVBQ0duTyxrQkFBa0IsSUFBSXBELGtCQUFrQixDQUFDNEcsT0FBTyxnQkFDL0M5TSxJQUFBLENBQUNiLGNBQWM7VUFDYjBZLFdBQVcsRUFBRXJQLFdBQVcsQ0FBQy9ILFNBQVU7VUFDbkNxWCxLQUFLLEVBQUU5UyxDQUFDLHdCQUFBb00sTUFBQSxDQUF3QjVJLFdBQVcsQ0FBQ2hJLFNBQVMsR0FBRyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBRSxDQUFFO1VBQ3JHdVgsU0FBUyxFQUFFaEQ7UUFBMEIsQ0FDdEMsQ0FBQyxnQkFFRjdVLEtBQUEsQ0FBQUUsU0FBQTtVQUFBcVgsUUFBQSxnQkFDRXZYLEtBQUEsQ0FBQ25DLFdBQVc7WUFBQTBaLFFBQUEsZ0JBQ1Z2WCxLQUFBLENBQUNqQyxlQUFlO2NBQUF3WixRQUFBLGdCQUNkelgsSUFBQSxDQUFDN0MsT0FBTztnQkFDTm9hLE1BQU0sRUFBRWpTLGFBQWM7Z0JBQ3RCMFMsS0FBSyxFQUNIeFAsV0FBVyxhQUFYQSxXQUFXLGdCQUFBcEUscUJBQUEsR0FBWG9FLFdBQVcsQ0FBRTlILE9BQU8sY0FBQTBELHFCQUFBLGVBQXBCQSxxQkFBQSxDQUFzQmhELFdBQVcsR0FDN0I0RCxDQUFDLENBQUMsK0JBQStCLENBQUMsR0FDbENBLENBQUMsQ0FBQyw0QkFBNEIsQ0FDbkM7Z0JBQUF5UyxRQUFBLGVBRUR6WCxJQUFBLENBQUM5QixtQkFBbUI7a0JBQUNzWixPQUFPLEVBQUVOLG9CQUFxQjtrQkFBQU8sUUFBQSxlQUNqRHpYLElBQUEsQ0FBQ2hELElBQUk7b0JBQ0hpYixLQUFLLEVBQUUsRUFBRztvQkFDVkMsTUFBTSxFQUFFLEVBQUc7b0JBQ1hOLEtBQUssRUFBRXBQLFdBQVcsYUFBWEEsV0FBVyxnQkFBQW5FLHFCQUFBLEdBQVhtRSxXQUFXLENBQUU5SCxPQUFPLGNBQUEyRCxxQkFBQSxlQUFwQkEscUJBQUEsQ0FBc0JqRCxXQUFXLEdBQUcsU0FBUyxHQUFHLFNBQVU7b0JBQ2pFK1csSUFBSSxFQUFFM1AsV0FBVyxhQUFYQSxXQUFXLGdCQUFBbEUscUJBQUEsR0FBWGtFLFdBQVcsQ0FBRTlILE9BQU8sY0FBQTRELHFCQUFBLGVBQXBCQSxxQkFBQSxDQUFzQmxELFdBQVcsR0FBRyxTQUFTLEdBQUcsTUFBTztvQkFDN0RnWCxPQUFPLEVBQUMsT0FBTztvQkFDZkMsU0FBUyxFQUFFN1AsV0FBVyxhQUFYQSxXQUFXLGdCQUFBakUscUJBQUEsR0FBWGlFLFdBQVcsQ0FBRTlILE9BQU8sY0FBQTZELHFCQUFBLGVBQXBCQSxxQkFBQSxDQUFzQm5ELFdBQVcsR0FBRyxFQUFFLEdBQUc7a0JBQXFCLENBQzFFO2dCQUFDLENBQ2lCO2NBQUMsQ0FDZixDQUFDLGVBQ1ZwQixJQUFBLENBQUNoQyxnQkFBZ0I7Z0JBQUF5WixRQUFBLEVBQUVqUCxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFaEksU0FBUyxHQUFHd0UsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHQSxDQUFDLENBQUMsVUFBVTtjQUFDLENBQW1CLENBQUM7WUFBQSxDQUMvRSxDQUFDLGVBQ2xCaEYsSUFBQSxDQUFDN0Isc0JBQXNCO2NBQ3JCcVosT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUEsRUFBUTtnQkFDYjFTLGNBQWMsQ0FBQ3pGLE1BQU0sQ0FBQ2laLFdBQVcsQ0FBQztnQkFDbEM3SSxXQUFXLENBQUMsQ0FBQztjQUNmLENBQUU7Y0FDRjhJLFFBQVEsRUFBRW5RLFNBQVMsSUFBSWdELGtCQUFrQixJQUFJVixlQUFlLElBQUlrQixxQkFBc0I7Y0FBQTZMLFFBQUEsZUFFdEZ6WCxJQUFBLENBQUMvQyxLQUFLO2dCQUFDMmEsS0FBSyxFQUFDLFNBQVM7Z0JBQUNLLEtBQUssRUFBRSxFQUFHO2dCQUFDQyxNQUFNLEVBQUU7Y0FBRyxDQUFFO1lBQUMsQ0FDMUIsQ0FBQztVQUFBLENBQ2QsQ0FBQyxlQUNkaFksS0FBQSxDQUFDckMsWUFBWTtZQUFDMmEsU0FBUyxFQUFFeFEsT0FBTyxLQUFLLFdBQVk7WUFBQXlQLFFBQUEsZ0JBQy9DdlgsS0FBQSxDQUFDOUIsWUFBWTtjQUFBcVosUUFBQSxnQkFDWHZYLEtBQUEsQ0FBQzVCLGdCQUFnQjtnQkFDZnlDLFFBQVEsRUFBRWlILE9BQU8sS0FBSyxTQUFVO2dCQUNoQ3lRLE1BQU0sRUFBRSxDQUFFO2dCQUNWakIsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7a0JBQUEsT0FBUXZILG1CQUFtQixDQUFDLFNBQVMsQ0FBQztnQkFBQSxDQUFDO2dCQUM5Q2hQLEVBQUUsRUFBQyx5QkFBeUI7Z0JBQUF3VyxRQUFBLGdCQUU1QnpYLElBQUEsQ0FBQ25ELFFBQVE7a0JBQ1ArYSxLQUFLLEtBQUF4RyxNQUFBLENBQUtwSixPQUFPLEtBQUssU0FBUyxHQUFHLHFCQUFxQixHQUFHLHdCQUF3QixDQUFHO2tCQUNyRmlRLEtBQUssRUFBRSxFQUFHO2tCQUNWQyxNQUFNLEVBQUU7Z0JBQUcsQ0FDWixDQUFDLGVBQ0ZsWSxJQUFBLENBQUN6QixxQkFBcUI7a0JBQUN3QyxRQUFRLEVBQUVpSCxPQUFPLEtBQUssU0FBVTtrQkFBQXlQLFFBQUEsRUFDcER6UyxDQUFDLENBQUMsc0JBQXNCO2dCQUFDLENBQ0wsQ0FBQztjQUFBLENBQ1IsQ0FBQyxlQUVuQjlFLEtBQUEsQ0FBQzVCLGdCQUFnQjtnQkFDZnlDLFFBQVEsRUFBRWlILE9BQU8sS0FBSyxXQUFZO2dCQUNsQ3lRLE1BQU0sRUFBRSxDQUFFO2dCQUNWakIsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7a0JBQUEsT0FBUXZILG1CQUFtQixDQUFDLFdBQVcsQ0FBQztnQkFBQSxDQUFDO2dCQUNoRGhQLEVBQUUsRUFBQywyQkFBMkI7Z0JBQUF3VyxRQUFBLGdCQUU5QnpYLElBQUEsQ0FBQ3hDLFNBQVM7a0JBQ1JvYSxLQUFLLEtBQUF4RyxNQUFBLENBQUtwSixPQUFPLEtBQUssV0FBVyxHQUFHLHFCQUFxQixHQUFHLHdCQUF3QixDQUFHO2tCQUN2RmlRLEtBQUssRUFBRSxFQUFHO2tCQUNWQyxNQUFNLEVBQUU7Z0JBQUcsQ0FDWixDQUFDLGVBQ0ZsWSxJQUFBLENBQUN6QixxQkFBcUI7a0JBQUN3QyxRQUFRLEVBQUVpSCxPQUFPLEtBQUssV0FBWTtrQkFBQXlQLFFBQUEsRUFDdER6UyxDQUFDLENBQUMsd0JBQXdCO2dCQUFDLENBQ1AsQ0FBQztjQUFBLENBQ1IsQ0FBQyxlQUVuQjlFLEtBQUEsQ0FBQzVCLGdCQUFnQjtnQkFDZnlDLFFBQVEsRUFBRWlILE9BQU8sS0FBSyxlQUFnQjtnQkFDdEN5USxNQUFNLEVBQUUsQ0FBRTtnQkFDVmpCLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO2tCQUFBLE9BQVF2SCxtQkFBbUIsQ0FBQyxlQUFlLENBQUM7Z0JBQUEsQ0FBQztnQkFDcERoUCxFQUFFLEVBQUMsK0JBQStCO2dCQUFBd1csUUFBQSxnQkFFbEN6WCxJQUFBLENBQUN6QyxpQkFBaUI7a0JBQ2hCcWEsS0FBSyxLQUFBeEcsTUFBQSxDQUFLcEosT0FBTyxLQUFLLGVBQWUsR0FBRyxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBRztrQkFDM0ZpUSxLQUFLLEVBQUUsRUFBRztrQkFDVkMsTUFBTSxFQUFFO2dCQUFHLENBQ1osQ0FBQyxlQUNGbFksSUFBQSxDQUFDekIscUJBQXFCO2tCQUFDd0MsUUFBUSxFQUFFaUgsT0FBTyxLQUFLLGVBQWdCO2tCQUFBeVAsUUFBQSxFQUMxRHpTLENBQUMsQ0FBQywrQkFBK0I7Z0JBQUMsQ0FDZCxDQUFDLEVBQ3ZCZ1MsMkJBQTJCLGlCQUMxQmhYLElBQUEsQ0FBQzdDLE9BQU87a0JBQUM2YSxLQUFLLEVBQUVoVCxDQUFDLENBQUMsbUNBQW1DLENBQUU7a0JBQUN1UyxNQUFNLEVBQUVqUyxhQUFjO2tCQUFBbVMsUUFBQSxlQUM1RXpYLElBQUEsQ0FBQ3BCLHFCQUFxQjtvQkFBQTZZLFFBQUEsZUFDcEJ6WCxJQUFBLENBQUNsRCxLQUFLO3NCQUFDOGEsS0FBSyxFQUFDLFNBQVM7c0JBQUNLLEtBQUssRUFBQyxNQUFNO3NCQUFDQyxNQUFNLEVBQUM7b0JBQU0sQ0FBRTtrQkFBQyxDQUMvQjtnQkFBQyxDQUNqQixDQUNWO2NBQUEsQ0FDZSxDQUFDO1lBQUEsQ0FDUCxDQUFDLEVBQ2R6VyxZQUFZLENBQUN1RyxPQUFPLENBQUMsQ0FBQztjQUNyQm1MLE1BQU0sRUFBRTNLLFdBQVc7Y0FDbkJvSyxvQkFBb0IsRUFBRXZDLDBCQUEwQjtjQUNoRHJPLFdBQVcsRUFBWEEsV0FBVztjQUNYNEcsT0FBTyxFQUFFLEtBQUs7Y0FDZDhQLGlCQUFpQixFQUFFLEVBQUU7Y0FDckJDLFlBQVksRUFBRSxFQUFFO2NBQ2hCQyx5QkFBeUIsRUFBRSxTQUEzQkEseUJBQXlCQSxDQUFBLEVBQVEsQ0FBQyxDQUFDO2NBQ25DQyxvQkFBb0IsRUFBRSxTQUF0QkEsb0JBQW9CQSxDQUFBLEVBQVEsQ0FBQyxDQUFDO2NBQzlCQyxpQkFBaUIsRUFBRW5QLGdCQUFnQjtjQUNuQ3JFLGFBQWEsRUFBYkE7WUFDRixDQUFDLENBQUM7VUFBQSxDQUNVLENBQUMsZUFDZnBGLEtBQUEsQ0FBQ3BDLFdBQVc7WUFBQzBDLFNBQVMsRUFBRSxDQUFDLEVBQUNnSSxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFaEksU0FBUyxLQUFJLENBQUMsRUFBQ29KLGVBQWUsYUFBZkEsZUFBZSxlQUFmQSxlQUFlLFVBQVEsQ0FBQztZQUFBNk4sUUFBQSxHQUMzRSxDQUFDLEVBQUNqUCxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFaEksU0FBUyxLQUN2QixDQUFDLEVBQUNvSixlQUFlLGFBQWZBLGVBQWUsZUFBZkEsZUFBZSxVQUFRLEtBQ3pCK0YsTUFBTSxDQUFDd0Msd0NBQXdDLGlCQUM3Q25TLElBQUEsQ0FBQ3hCLGlCQUFpQjtjQUFBaVosUUFBQSxlQUNoQnpYLElBQUEsQ0FBQ3BELFFBQVE7Z0JBQ1B3YixPQUFPLEVBQUMsV0FBVztnQkFDbkJwVixJQUFJLEVBQUMsUUFBUTtnQkFDYitWLGdCQUFnQjtnQkFDaEJ2QixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO2tCQUNiM1Asa0JBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUMxQixDQUFFO2dCQUNGMFEsUUFBUSxFQUFFblEsU0FBUyxJQUFJZ0Qsa0JBQWtCLElBQUlWLGVBQWUsSUFBSWtCLHFCQUFzQjtnQkFBQTZMLFFBQUEsZUFFdEZ2WCxLQUFBLENBQUNkLGlCQUFpQjtrQkFBQXFZLFFBQUEsZ0JBQ2hCelgsSUFBQSxDQUFDakQsS0FBSztvQkFBQzZhLEtBQUssRUFBQyxNQUFNO29CQUFDSyxLQUFLLEVBQUUsRUFBRztvQkFBQ0MsTUFBTSxFQUFFO2tCQUFHLENBQUUsQ0FBQyxFQUM1Q2xULENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQUEsQ0FDQTtjQUFDLENBQ1o7WUFBQyxDQUNNLENBQ3BCLGVBQ0hoRixJQUFBO2NBQUs0VCxLQUFLLEVBQUU7Z0JBQUVvRixPQUFPLEVBQUUsTUFBTTtnQkFBRUMsR0FBRyxFQUFFO2NBQU8sQ0FBRTtjQUFBeEIsUUFBQSxlQUMzQ3pYLElBQUEsQ0FBQ3ZCLGVBQWU7Z0JBQ2R5YSxVQUFVLEVBQ1IsQ0FBQ3RYLG1CQUFtQixDQUFDNEcsV0FBVyxDQUFDLElBQ2pDNkUseUJBQXlCLENBQUMsQ0FBQyxJQUMzQmpGLFNBQVMsSUFDVGdELGtCQUFrQixJQUNsQlYsZUFBZSxJQUNma0IscUJBQXFCLElBQ3JCb0wsMkJBQTJCLElBQzNCdE4sYUFDRDtnQkFBQStOLFFBQUEsZUFFRHpYLElBQUEsQ0FBQ3BELFFBQVE7a0JBQ1B3YixPQUFPLEVBQUMsV0FBVztrQkFDbkJwVixJQUFJLEVBQUMsUUFBUTtrQkFDYndVLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBLEVBQVE7b0JBQ2JqRyxvQkFBbUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2tCQUNyQyxDQUFFO2tCQUNGZ0gsUUFBUSxFQUNOLENBQUMzVyxtQkFBbUIsQ0FBQzRHLFdBQVcsQ0FBQyxJQUNqQzZFLHlCQUF5QixDQUFDLENBQUMsSUFDM0JqRixTQUFTLElBQ1RnRCxrQkFBa0IsSUFDbEJWLGVBQWUsSUFDZmtCLHFCQUFxQixJQUNyQm9MLDJCQUEyQixJQUMzQnROLGFBQ0Q7a0JBQUErTixRQUFBLEVBRUFqUCxXQUFXLENBQUNoSSxTQUFTLEdBQUd3RSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUdBLENBQUMsQ0FBQyx3QkFBd0I7Z0JBQUMsQ0FDL0Q7Y0FBQyxDQUNJO1lBQUMsQ0FDZixDQUFDO1VBQUEsQ0FDSyxDQUFDO1FBQUEsQ0FDZDtNQUNILENBQ0Q7SUFDSCxDQUNXLENBQUMsRUFDZDRDLGVBQWUsaUJBQ2Q1SCxJQUFBLENBQUNULG1CQUFtQjtNQUNsQjRaLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1FBQUEsT0FBUXRSLGtCQUFrQixDQUFDLEtBQUssQ0FBQztNQUFBLENBQUM7TUFDekN1UixRQUFRLEVBQUU7UUFDUjdILG1CQUFtQixFQUFFLFNBQXJCQSxtQkFBbUJBLENBQUc3UCxLQUFVO1VBQUEsT0FBSzZQLG9CQUFtQixDQUFDN1AsS0FBSyxFQUFFLFFBQVEsQ0FBQztRQUFBO01BQzNFLENBQUU7TUFDRm1RLElBQUksRUFBRTtRQUFFbUcsS0FBSyxFQUFFeFAsV0FBVyxDQUFDOUgsT0FBTyxDQUFDQyxJQUFJO1FBQUVNLEVBQUUsRUFBRXVILFdBQVcsQ0FBQzlILE9BQU8sQ0FBQ087TUFBRyxDQUFFO01BQ3RFNlEsTUFBTSxFQUFDO0lBQU8sQ0FDZixDQUNGO0VBQUEsQ0FDTyxDQUFDLEVBQ1hyTSxRQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
|