@projectcor/maia-components 2.11.100-7 → 2.11.100-8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +4 -4
- package/lib/services/maia/RecentContexts/getRecentContexts.js +32 -3
- package/lib/services/maia/bootstrap/agentsPrefetchSession.js +1 -28
- package/lib/services/maia/bootstrap/prefetchMaiaAgents.js +48 -62
- package/lib/services/maia/bootstrap/prefetchMaiaRecentContexts.js +56 -0
- package/lib/services/maia/bootstrap/recentContextsPrefetchSession.js +88 -0
- package/package.json +1 -1
|
@@ -26,7 +26,7 @@ import { ChatAIContent } from '../ChatAIContent';
|
|
|
26
26
|
import { buildHandlers, options } from './constants';
|
|
27
27
|
import { Sidebar } from '../Sidebar';
|
|
28
28
|
import { useGetAgents } from '../../../services/maia/Agents/getAgents';
|
|
29
|
-
import {
|
|
29
|
+
import { resetMaiaPrefetchSession } from '../../../services/maia/bootstrap/prefetchMaiaAgents';
|
|
30
30
|
import { useGetSkills } from '../../../services/maia/Skills/getSkills';
|
|
31
31
|
import { useGlobalContext } from '../../../context/global-context';
|
|
32
32
|
import { ChatAIModalHeader } from './components/ChatAiModalHeader/ChatAiModalHeader';
|
|
@@ -132,7 +132,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
134
|
useFaqsStore.getState().clearFaqs();
|
|
135
|
-
|
|
135
|
+
resetMaiaPrefetchSession();
|
|
136
136
|
handleClose === null || handleClose === void 0 || handleClose();
|
|
137
137
|
}, [handleClose, isStreaming, isWriting]);
|
|
138
138
|
var handleDismissCloseWhileGeneratingModal = useCallback(function () {
|
|
@@ -142,7 +142,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
142
142
|
stopGenerationFunction === null || stopGenerationFunction === void 0 || stopGenerationFunction();
|
|
143
143
|
setShowCloseWhileGeneratingModal(false);
|
|
144
144
|
useFaqsStore.getState().clearFaqs();
|
|
145
|
-
|
|
145
|
+
resetMaiaPrefetchSession();
|
|
146
146
|
handleClose === null || handleClose === void 0 || handleClose();
|
|
147
147
|
}, [handleClose, stopGenerationFunction]);
|
|
148
148
|
var _useState17 = useState(false),
|
|
@@ -1009,4 +1009,4 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
1009
1009
|
}), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
|
|
1010
1010
|
}), selector);
|
|
1011
1011
|
};
|
|
1012
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJNQUlBRXJyb3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInJlc2V0QWdlbnRzUHJlZmV0Y2hTZXNzaW9uIiwidXNlR2V0U2tpbGxzIiwidXNlR2xvYmFsQ29udGV4dCIsIkNoYXRBSU1vZGFsSGVhZGVyIiwiU25hY2tiYXIiLCJQcm9qZWN0U3VtbWFyeUNvbnRlbnQiLCJBYm1BZ2VudE1vZGFsIiwiQWJtU2tpbGxNb2RhbCIsIkFibVNraWxsR2VuZXJhdGVNb2RhbCIsIkNsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwiLCJTRUNUSU9OUyIsIlNDQ0FJTUNvbnRlbnQiLCJTQ0NBSU1Db250ZW50V3JhcHBlciIsIlNDQ0FJTVdyYXBwZXIiLCJnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgiLCJyZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSIsInNldFN0b3JlZE1haWFDaGF0TGF5b3V0TW9kZSIsIkZsb2F0aW5nUGFuZWxNb3Rpb24iLCJ1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQiLCJDaGF0QWlNb2RhbEZvb3RlciIsInZhbGlkYXRlSXNNYWlhIiwiaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQiLCJ1c2VGYXFzU3RvcmUiLCJmZXRjaE1haWEiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUyIsImlzR2xvYmFsTWFpYVNlY3Rpb24iLCJzZWN0aW9uIiwicmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbiIsImFnZW50VHlwZSIsImN1cnJlbnRPcHRpb24iLCJob21lT3B0aW9uIiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwidXNlciIsIkJvb2xlYW4iLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiQ2hhdEFJTW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfYWdlbnRzJGRhdGEiLCJoYW5kbGVDbG9zZSIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCIsInNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiX3VzZVN0YXRlMyIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsIl91c2VTdGF0ZTQiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2Vzc2lvbk1ldGEiLCJzZXRTZXNzaW9uTWV0YSIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNlbmRNZXNzYWdlRnVuY3Rpb24iLCJzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImlzU3RyZWFtaW5nIiwic2V0SXNTdHJlYW1pbmciLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNXcml0aW5nIiwic2V0SXNXcml0aW5nIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwiaGFuZGxlRGlzbWlzc0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwiLCJoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmciLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTkiLCJob21lIiwiX3VzZVN0YXRlMjAiLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMjEiLCJfdXNlU3RhdGUyMiIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwic2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uIiwicHJldkhhc1Bpbm5lZENvbnRleHRSZWYiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTI1IiwiX3VzZVN0YXRlMjYiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJjbGVhckFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidGFzayIsImNoaXBzUHJvamVjdCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0Q2xpZW50Iiwic2V0UHJvamVjdCIsImJhbm5lckVudHJ5RmFxIiwic2V0VGFzayIsInRvb2x0aXBaSW5kZXgiLCJfdXNlR2V0QWdlbnRzIiwiaGFuZGxlR29Ib21lIiwiYWdlbnRzIiwibG9hZGluZyIsImxvYWRpbmdNb3JlIiwiYWdlbnRFcnJvciIsImVycm9yIiwiaGFuZGxlR2V0QWdlbnRzIiwibG9hZE1vcmVBZ2VudHMiLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJzZWFyY2hMb2FkaW5nIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsIl91c2VHZXRTa2lsbHMiLCJza2lsbHMiLCJsb2FkaW5nU2tpbGxzIiwiaGFuZGxlR2V0U2tpbGxzIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiaXNNQUlBIiwidXNlckhhc1Blcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjcmVhdGUiLCJlZGl0IiwiY29tcHV0ZWRDdXJyZW50T3B0aW9uIiwiaXNHbG9iYWxTcGVjaWFsaXN0IiwiZW50aXR5IiwiaXNQcm9qZWN0U3BlY2lhbGlzdCIsImlzQ2xpZW50U3BlY2lhbGlzdCIsImlzTWFpYWtlciIsIm15QWdlbnRzIiwibXlTa2lsbHMiLCJ0eXBlIiwiY2hhdCIsInNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IiLCJzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IiLCJwcm9qZWN0U2VsZWN0b3IiLCJjbGllbnRTZWxlY3RvciIsIm5hbWUiLCJpc01haWFrZXJBZ2VudFNlbGVjdGVkIiwic2lkZWJhckFnZW50c05hdkFjdGl2ZSIsImFnZW50c0ZldGNoZWRSZWYiLCJzZWxlY3RvciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImNvbmNhdCIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJsYXlvdXRNb2RlIiwic2V0TGF5b3V0TW9kZSIsImhhbmRsZUxheW91dE1vZGVDaGFuZ2UiLCJtb2RlIiwiZXhwYW5kZWQiLCJpc0Zsb2F0aW5nIiwiY29udGVudFdyYXBwZXJSZWYiLCJfdXNlU3RhdGUyOSIsIl91c2VTdGF0ZTMwIiwiZHJhZ1Bvc2l0aW9uIiwic2V0RHJhZ1Bvc2l0aW9uIiwiX3VzZUZsb2F0aW5nUGFuZWxEcmFnIiwidGlsdE1vdGlvbiIsInN0YXJ0UG9pbnRlclRyYWNraW5nIiwic2FtcGxlUG9pbnRlck1vdmUiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJkcmFnU3RhdGVSZWYiLCJjbGFtcERyYWdQb3NpdGlvbiIsIngiLCJ5IiwiY29udGVudFdyYXBwZXIiLCJjdXJyZW50IiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwidGFyZ2V0IiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiY29udGV4dERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibGVuZ3RoIiwiYmFubmVyRmFxQXV0b1NlbnRSZWYiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkiLCJlbnRpdHlSZWFkeSIsImlkIiwiZmFxVGl0bGUiLCJ0cmltIiwidW5kZWZpbmVkIiwiZ29Ub0NoYXQiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsInNlbGVjdGVkQWdlbnQiLCJkYXRhIiwiZmluZCIsImFnZW50SXRlbSIsImFnZW50SWQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYW5kbGVSZXNldENoYXQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJzdG9wIiwiaGFuZGxlQmFjayIsInRvIiwiYWlDaGF0QmFjayIsInBpbm5lZCIsInByb2plY3RJZCIsIndhc1Bpbm5lZCIsIm9uTWVyZ2VDcmVhdGVkQWdlbnQiLCJldnQiLCJfcmVmMyIsImRldGFpbCIsIm5leHRBZ2VudCIsIm5hdmlnYXRlSG9tZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNCIsIm9wZW5DaGF0VmlldyIsIm9wZW5OZXdDaGF0V2l0aEFnZW50IiwiX2RldGFpbCRwcm9qZWN0IiwiX2RldGFpbCRjbGllbnQiLCJfcmVmNSIsIm9uU2Vzc2lvbk1ldGEiLCJfcmVmNiIsImxlZ2FjeUNvbnRleHRTZXNzaW9uIiwiYWdlbnRFbnRpdHkiLCJpbmNsdWRlcyIsImNvbnRleHROYW1lIiwidGFza05hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJlbnRpdHlUeXBlIiwiaXNfbGVnYWN5X2NvbnRleHQiLCJoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQiLCJwSWQiLCJwTmFtZSIsImNJZCIsImNsaWVudElkIiwiY05hbWUiLCJ0SWQiLCJ0YXNrSWQiLCJ0TmFtZSIsIm9yY2hlc3RyYXRvciIsImEiLCJTdHJpbmciLCJzaG93TmV3Q2hhdCIsImhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yIiwiaXNNeUFnZW50c1NlY3Rpb24iLCJoYXNQaW5uZWRDb250ZXh0IiwiaXNDaGF0VmlldyIsImlzSG9tZVN0ZXAyIiwiaXNIZWFkZXJIb21lU3RlcDIiLCJpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiIsInNob3dCYWNrQnV0dG9uIiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiaGFuZGxlT3BlblNraWxscyIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiYWJydXB0IiwiaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMiLCJpc01haWFrZXJDcmVhdG9ySG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaXNNYWlha2VyU2VjdGlvbiIsImhpZGVBZ2VudFNlbGVjdG9yIiwib25CYWNrIiwicmVmcyIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsImxvYWRpbmdBZ2VudHMiLCJvbkRlbGV0ZUFnZW50Iiwib25GYXZvcml0ZUFnZW50VXBkYXRlIiwiaGFzTW9yZUFnZW50cyIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJvbkRlbGV0ZVNraWxsIiwib25TZWFyY2hBZ2VudHMiLCJzZWFyY2hMb2FkaW5nQWdlbnRzIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJvbkNvbnRpbnVlSW5OZXdDaGF0IiwicmVmIiwib25DbG9zZSIsIm9uQ29uZmlybSIsImNyZWF0ZVBvcnRhbCIsImVsZXZhdGVkIiwidGlsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGNhbkFjY2Vzc1RvQ2hhdEFJIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgTUFJQUVycm9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQUVycm9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyByZXNldEFnZW50c1ByZWZldGNoU2Vzc2lvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvYm9vdHN0cmFwL3ByZWZldGNoTWFpYUFnZW50cydcbmltcG9ydCB7IHVzZUdldFNraWxscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2dldFNraWxscydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQsIHR5cGUgU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbCdcbmltcG9ydCB7IEFibVNraWxsR2VuZXJhdGVNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsJ1xuaW1wb3J0IHsgQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9DbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7XG4gIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCxcbiAgTWFpYUNoYXRNb2RhbExheW91dE1vZGUsXG4gIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlLFxuICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUsXG59IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VGYXFzU3RvcmUnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuXG50eXBlIENoYXRBSU1vZGFsUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgcGFyZW50UmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PlxufVxuXG4vKiogTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChlbWl0aWRhIHBvciB1c2VDaGF0TWVzc2FnZXMgYWwgY2FyZ2FyIHVuYSBjb252ZXJzYWNpw7NuKS4gKi9cbnR5cGUgU2Vzc2lvbk1ldGEgPSB7XG4gIGNoYXRJZDogc3RyaW5nXG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBhZ2VudEVudGl0eT86IHN0cmluZ1xuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXJcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICB0YXNrSWQ/OiBudW1iZXJcbiAgdGFza05hbWU/OiBzdHJpbmdcbn1cblxuY29uc3QgTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMgPSBbJ3Byb2plY3QnLCAndGFzaycsICdjbGllbnQnXSBhcyBjb25zdFxudHlwZSBMZWdhY3lDb250ZXh0RW50aXR5ID0gKHR5cGVvZiBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUylbbnVtYmVyXVxuXG50eXBlIEFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9ICdnbG9iYWxfY29udGV4dF9ob21lJyB8ICd0YXNrX2hvbWUnIHwgJ3BsYW5uZXJfaG9tZScgfCAncHJvamVjdF9ob21lJyB8ICdjbGllbnRfaG9tZSdcblxuLyoqIEhvbWUgZ2xvYmFsIGRlbCBvcmNoZXN0cmF0b3IgKHNvbG8gaGVhZGVyKS4gUGxhbm5lciBlcyBob21lIGRlIEZVQXMsIG5vIGRlIGNvbnRleHRvcy4gKi9cbmNvbnN0IGlzR2xvYmFsTWFpYVNlY3Rpb24gPSAoc2VjdGlvbjogU2VjdGlvbik6IGJvb2xlYW4gPT4gc2VjdGlvbiA9PT0gJ2hlYWRlcidcblxuY29uc3QgcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbiA9IChcbiAgc2VjdGlvbjogU2VjdGlvbixcbiAgYWdlbnRUeXBlOiBBZ2VudFsndHlwZSddIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50T3B0aW9uOiBzdHJpbmcsXG4gIGhvbWVPcHRpb246IHN0cmluZ1xuKTogQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0+IHtcbiAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiBjdXJyZW50T3B0aW9uID09PSBob21lT3B0aW9uKSB7XG4gICAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xuICB9XG4gIGlmIChzZWN0aW9uID09PSAndGFzaycpIHJldHVybiAndGFza19ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSByZXR1cm4gJ3BsYW5uZXJfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdwcm9qZWN0JykgcmV0dXJuICdwcm9qZWN0X2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAnY2xpZW50JykgcmV0dXJuICdjbGllbnRfaG9tZSdcbiAgcmV0dXJuICdnbG9iYWxfY29udGV4dF9ob21lJ1xufVxuXG5leHBvcnQgY29uc3QgSURfTU9EQUxfQ0hBVF9BR0VOVCA9ICdtb2RhbHMtcG9ydGFsLW1haWEtY2hhdC1hZ2VudCdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogU2VjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQsIHVzZXI6IFJldHVyblR5cGU8dHlwZW9mIHVzZVVzZXI+KSA9PiB7XG4gIGlmICghc2VjdGlvbiB8fCAhY2FuQWNjZXNzVG9DaGF0QUkodXNlcikpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFBsYW5uZXIgeSB0YXNrIGFicmVuIHNpZW1wcmUgZWwgY2hhdCAoaG9tZSBkZSBGVUFzKSwgbnVuY2EgcmVzdW1lbiBkZSBwcm95ZWN0b3MuXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJykge1xuICAgIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpXG4gIH1cblxuICByZXR1cm4gQm9vbGVhbih3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTW9kYWwgPSAoeyBoYW5kbGVDbG9zZSB9OiBDaGF0QUlNb2RhbFByb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuYWJtQWdlbnRdKVxuICBjb25zdCBhbXBsaXR1ZEV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IFtzaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCwgc2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt1c2VySW5pdGlhbE1lc3NhZ2UsIHNldFVzZXJJbml0aWFsTWVzc2FnZV0gPSB1c2VTdGF0ZTx7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2Vzc2lvbk1ldGEsIHNldFNlc3Npb25NZXRhXSA9IHVzZVN0YXRlPFNlc3Npb25NZXRhIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHNldFNlbmRNZXNzYWdlRnVuY3Rpb25dID0gdXNlU3RhdGU8XG4gICAgfCAoKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQpXG4gICAgfCBudWxsXG4gID4obnVsbClcbiAgY29uc3QgW3N0b3BHZW5lcmF0aW9uRnVuY3Rpb24sIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dID0gdXNlU3RhdGU8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzU3RyZWFtaW5nLCBzZXRJc1N0cmVhbWluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGlzU3RyZWFtaW5nIHx8IGlzV3JpdGluZykge1xuICAgICAgc2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwodHJ1ZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgcmVzZXRBZ2VudHNQcmVmZXRjaFNlc3Npb24oKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2UsIGlzU3RyZWFtaW5nLCBpc1dyaXRpbmddKVxuXG4gIGNvbnN0IGhhbmRsZURpc21pc3NDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKGZhbHNlKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbj8uKClcbiAgICBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbChmYWxzZSlcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIHJlc2V0QWdlbnRzUHJlZmV0Y2hTZXNzaW9uKClcbiAgICBoYW5kbGVDbG9zZT8uKClcbiAgfSwgW2hhbmRsZUNsb3NlLCBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSlcblxuICBjb25zdCBbcmVmZXRjaENoYXRzLCBzZXRSZWZldGNoQ2hhdHNdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50T3B0aW9uLCBzZXRDdXJyZW50T3B0aW9uXSA9IHVzZVN0YXRlKG9wdGlvbnMuaG9tZSlcbiAgY29uc3QgW2hhc0Vycm9yLCBzZXRIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgLy8gRW4gcHJvamVjdC9jbGllbnQvdGFzazogZWwgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gZGVsIG9yY2hlc3RyYXRvciAobG8gbGltcGnDsyB5IHBhc8OzIHBvclxuICAvLyBlbCBzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzKS4gSGFiaWxpdGEgZWwgYm90w7NuIFwidm9sdmVyXCIgZW4gZWwgaG9tZSBwYXNvIDIgZGUgZXNhc1xuICAvLyBzZWNjaW9uZXMuIFNlIHJlc2V0ZWEgYWwgY2VycmFyL3JlYWJyaXIgZWwgbW9kYWwgKGVsIGNvbXBvbmVudGUgc2UgZGVzbW9udGEpLlxuICBjb25zdCBbZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLCBzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb25dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHByZXZIYXNQaW5uZWRDb250ZXh0UmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBoYW5kbGVycyA9IHVzZU1lbW8oKCkgPT4gYnVpbGRIYW5kbGVycyhzZXRDdXJyZW50T3B0aW9uLCBzZXRIYXNFcnJvciksIFtdKVxuICBjb25zdCBbc2lkZWJhckhhc0Vycm9yLCBzZXRTaWRlYmFySGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHJlc2V0U2VsZWN0ZWRDaGF0UmVmID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0LWJyJyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBtb21lbnQubG9jYWxlKGxhbmcpXG5cbiAgY29uc3Qge1xuICAgIHNlbGVjdEFnZW50LFxuICAgIGNsZWFyQWdlbnQsXG4gICAgc2VjdGlvbixcbiAgICBhZ2VudCxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGJhbm5lckVudHJ5RmFxLFxuICAgIHNldFRhc2ssXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcblxuICAvLyBaLWluZGV4IHBhcmEgdG9vbHRpcHMgZW4gc2VjdGlvbiAndGFzaycgKG1vZGFsIGZsb3RhbnRlIGVsZXZhZG8pXG4gIGNvbnN0IHRvb2x0aXBaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICdvdmVybGF5JylcblxuICBjb25zdCB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3I6IGFnZW50RXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIHNlYXJjaEN1c3RvbUFnZW50cyxcbiAgICBzZWFyY2hMb2FkaW5nLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfSA9IHVzZUdldEFnZW50cyh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lOiBoYW5kbGVycy5ob21lIH0pXG5cbiAgY29uc3QgeyBza2lsbHMsIGxvYWRpbmc6IGxvYWRpbmdTa2lsbHMsIGhhbmRsZUdldFNraWxscywgYWRkU2tpbGwsIHVwZGF0ZVNraWxsSW5MaXN0LCByZW1vdmVTa2lsbCB9ID0gdXNlR2V0U2tpbGxzKClcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpXG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cyAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlBZ2VudHNcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscyAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuIG9wdGlvbnMubXlTa2lsbHNcbiAgICB9XG5cbiAgICAvLyBFbCBvcmNoZXN0cmF0b3IgKE1BSUEpIG11ZXN0cmEgc3UgaG9tZSBjb24gRkFRcy9hY2Npb25lcyBmcmVjdWVudGVzOyBlbCByZXN0byBkZVxuICAgIC8vIGxvcyBnbG9iYWwgc3BlY2lhbGlzdHMgKGNsb25lcyBnbG9iYWxlcyBuby1tYWlha2VyKSBzaWd1ZW4geWVuZG8gZGlyZWN0byBhbCBjaGF0LlxuICAgIGlmIChpc0dsb2JhbFNwZWNpYWxpc3QgJiYgIWlzTWFpYWtlciAmJiBhZ2VudD8udHlwZSAhPT0gJ29yY2hlc3RyYXRvcicgJiYgY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jaGF0XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkU2hvd1Byb2plY3RTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc1Byb2plY3RTcGVjaWFsaXN0ICYmICFwcm9qZWN0XG4gICAgY29uc3Qgc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzQ2xpZW50U3BlY2lhbGlzdCAmJiAhY2xpZW50XG5cbiAgICBpZiAoc2hvdWxkU2hvd1Byb2plY3RTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucHJvamVjdFNlbGVjdG9yXG4gICAgfVxuICAgIGlmIChzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNsaWVudFNlbGVjdG9yXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3B0aW9uXG4gIH0sIFtjdXJyZW50T3B0aW9uLCBwcm9qZWN0LCBjbGllbnQsIGlzTUFJQSwgYWdlbnQ/LmVudGl0eSwgYWdlbnQ/Lm5hbWUsIGFnZW50Py50eXBlXSlcblxuICBjb25zdCBpc01haWFrZXJBZ2VudFNlbGVjdGVkID0gdXNlTWVtbygoKSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhZ2VudCksIFthZ2VudF0pXG5cbiAgY29uc3Qgc2lkZWJhckFnZW50c05hdkFjdGl2ZSA9IHVzZU1lbW8oKCk6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbCA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxscykgcmV0dXJuICdteVNraWxscydcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzKSByZXR1cm4gJ215QWdlbnRzJ1xuICAgIGlmIChpc01haWFrZXJBZ2VudFNlbGVjdGVkKSByZXR1cm4gJ21haWFrZXInXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgaXNNYWlha2VyQWdlbnRTZWxlY3RlZF0pXG5cbiAgLyogUmVhY3RpdmFyIGNvbiBsYSBmaWxhIOKAnE1pcyBhZ2VudGVz4oCdIGVuIFNpZGViYXI6IG15QWdlbnRzQ291bnQgcHJvcFxuICBjb25zdCBzaWRlYmFyTXlBZ2VudHNDb3VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBhZ2VudHMuZGF0YS5maWx0ZXIoXG4gICAgICBhID0+ICEoYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJyB8fCAoYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhLm5hbWUgfHwgJycpKSlcbiAgICApXG4gICAgICAubGVuZ3RoXG4gIH0sIFthZ2VudHMuZGF0YV0pXG4gICovXG5cbiAgY29uc3QgYWdlbnRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBzZWxlY3RvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke0lEX01PREFMX0NIQVRfQUdFTlR9YClcblxuICAvLyBUYXNrIHBhbmVsLCBwbGFubmVyIHkgYmFubmVyIGRlIHByb3llY3RvIGFicmVuIGVuIGZsb3RhbnRlIHBvciBkZWZhdWx0IChubyB0YXBhciBlbCBjb250ZXh0byBkZXRyw6FzKS5cbiAgLy8gRnVlcmEgZGUgZXNvcyBjb250ZXh0b3Mgc2UgcmVzcGV0YSBsYSBwcmVmZXJlbmNpYSBndWFyZGFkYSBlbiBsb2NhbFN0b3JhZ2UuXG4gIGNvbnN0IFtsYXlvdXRNb2RlLCBzZXRMYXlvdXRNb2RlXSA9IHVzZVN0YXRlPE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlPigoKSA9PlxuICAgIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlKHsgc2VjdGlvbiwgYmFubmVyRW50cnlGYXEgfSlcbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUxheW91dE1vZGVDaGFuZ2UgPSB1c2VDYWxsYmFjaygobW9kZTogTWFpYUNoYXRNb2RhbExheW91dE1vZGUpID0+IHtcbiAgICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUobW9kZSlcbiAgICBzZXRMYXlvdXRNb2RlKG1vZGUpXG4gIH0sIFtdKVxuICBjb25zdCBleHBhbmRlZCA9IGxheW91dE1vZGUgPT09ICdmdWxsc2NyZWVuJ1xuICBjb25zdCBpc0Zsb2F0aW5nID0gbGF5b3V0TW9kZSA9PT0gJ2Zsb2F0aW5nJ1xuICBjb25zdCBjb250ZW50V3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2RyYWdQb3NpdGlvbiwgc2V0RHJhZ1Bvc2l0aW9uXSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgdGlsdE1vdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmcsIHNhbXBsZVBvaW50ZXJNb3ZlLCBlbmRQb2ludGVyVHJhY2tpbmcgfSA9XG4gICAgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0KGlzRmxvYXRpbmcpXG4gIGNvbnN0IGRyYWdTdGF0ZVJlZiA9IHVzZVJlZjx7XG4gICAgcG9pbnRlcklkOiBudW1iZXJcbiAgICBvZmZzZXRYOiBudW1iZXJcbiAgICBvZmZzZXRZOiBudW1iZXJcbiAgfSB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgY2xhbXBEcmFnUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICByZXR1cm4geyB4LCB5IH1cbiAgICB9XG5cbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3Qgb2Zmc2V0ID0gMTZcbiAgICBjb25zdCBtYXhYID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJXaWR0aCAtIHdpZHRoIC0gb2Zmc2V0KVxuICAgIGNvbnN0IG1heFkgPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lckhlaWdodCAtIGhlaWdodCAtIG9mZnNldClcblxuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1pbihNYXRoLm1heCh4LCBvZmZzZXQpLCBtYXhYKSxcbiAgICAgIHk6IE1hdGgubWluKE1hdGgubWF4KHksIG9mZnNldCksIG1heFkpLFxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICBpZiAocHJldikge1xuICAgICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24ocHJldi54LCBwcmV2LnkpXG4gICAgICB9XG4gICAgICBjb25zdCBwYWQgPSAxNlxuICAgICAgY29uc3QgeCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWRcbiAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gICAgfSlcbiAgfSwgW2xheW91dE1vZGUsIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnRW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGVuZFBvaW50ZXJUcmFja2luZygpXG4gICAgICBpZiAoZHJhZ1N0YXRlUmVmLmN1cnJlbnQ/LnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICcnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICcnXG4gICAgfSxcbiAgICBbZW5kUG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3QgaGFuZGxlRHJhZ01vdmUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgZHJhZ1N0YXRlID0gZHJhZ1N0YXRlUmVmLmN1cnJlbnRcbiAgICAgIGlmICghZHJhZ1N0YXRlIHx8IGRyYWdTdGF0ZS5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2FtcGxlUG9pbnRlck1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gY2xhbXBEcmFnUG9zaXRpb24oZXZlbnQuY2xpZW50WCAtIGRyYWdTdGF0ZS5vZmZzZXRYLCBldmVudC5jbGllbnRZIC0gZHJhZ1N0YXRlLm9mZnNldFkpXG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgICAgaWYgKHByZXYgJiYgcHJldi54ID09PSBuZXh0UG9zaXRpb24ueCAmJiBwcmV2LnkgPT09IG5leHRQb3NpdGlvbi55KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFBvc2l0aW9uXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBzYW1wbGVQb2ludGVyTW92ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgaWYgKGRyYWdQb3NpdGlvbikge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBjb25zdCBwYWQgPSAxNlxuICAgIGNvbnN0IHggPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCkgLSBwYWQgOiBwYWRcbiAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICB9LCBbbGF5b3V0TW9kZSwgZHJhZ1Bvc2l0aW9uLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ1N0YXJ0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNGbG9hdGluZyB8fCBldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgaWYgKHRhcmdldC5jbG9zZXN0KCdidXR0b24sIGEsIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBbcm9sZT1cImJ1dHRvblwiXSwgW2RhdGEtbm8tZHJhZz1cInRydWVcIl0nKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgICBpZiAoIWNvbnRlbnRXcmFwcGVyKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWN0ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGluaXRpYWxQb3NpdGlvbiA9IHJlc29sdmVkRHJhZ1Bvc2l0aW9uID8/IGNsYW1wRHJhZ1Bvc2l0aW9uKHJlY3QubGVmdCwgcmVjdC50b3ApXG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WCA9IGV2ZW50LmNsaWVudFggLSBpbml0aWFsUG9zaXRpb24ueFxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFkgPSBldmVudC5jbGllbnRZIC0gaW5pdGlhbFBvc2l0aW9uLnlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKGluaXRpYWxQb3NpdGlvbilcbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0ge1xuICAgICAgICBwb2ludGVySWQ6IGV2ZW50LnBvaW50ZXJJZCxcbiAgICAgICAgb2Zmc2V0WDogcG9pbnRlck9mZnNldFgsXG4gICAgICAgIG9mZnNldFk6IHBvaW50ZXJPZmZzZXRZLFxuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZClcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcblxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJ25vbmUnXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZydcbiAgICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdERyYWdnYWJsZSlcbiAgICAgIHN0YXJ0UG9pbnRlclRyYWNraW5nKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIGlzRmxvYXRpbmcsIHJlc29sdmVkRHJhZ1Bvc2l0aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IHN0YXJ0Q2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nLFxuICAgICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4oc2NJZCA/IHsgc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGJhbm5lckZhcUF1dG9TZW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGlmICghYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlPy50cmltKCkgfHwgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCB8fCBsb2FkaW5nIHx8ICFhZ2VudD8uaWQgfHwgIWVudGl0eVJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHN0YXJ0Q2hhdChcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLFxuICAgICAgW10sXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFJZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmNvbnRleHREYXRhXG4gICAgKVxuICB9LCBbXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcUlkLFxuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZSxcbiAgICBiYW5uZXJFbnRyeUZhcT8uY29udGV4dERhdGEsXG4gICAgbG9hZGluZyxcbiAgICBhZ2VudD8uaWQsXG4gICAgYWdlbnQ/LmVudGl0eSxcbiAgICBwcm9qZWN0Py5pZCxcbiAgICBjbGllbnQ/LmlkLFxuICAgIHNlY3Rpb24sXG4gICAgc3RhcnRDaGF0LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlUmVhZHkgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQsXG4gICAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICAgIHN0cmVhbWluZzogYm9vbGVhbixcbiAgICAgIHdyaXRpbmc6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIHNldFNlbmRNZXNzYWdlRnVuY3Rpb24oKCkgPT4gc2VuZE1lc3NhZ2UpXG4gICAgICBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uKCgpID0+IHN0b3BHZW5lcmF0aW9uKVxuICAgICAgc2V0SXNTdHJlYW1pbmcoc3RyZWFtaW5nKVxuICAgICAgc2V0SXNXcml0aW5nKHdyaXRpbmcpXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIGlmIChzZW5kTWVzc2FnZUZ1bmN0aW9uICYmIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICAgIHNlbmRNZXNzYWdlRnVuY3Rpb24obWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzdGFydENoYXQsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFNpIGVzdGFtb3MgZW4gdW5hIGNvbnZlcnNhY2nDs24geSB2YW1vcyBhIGhvbWUsIHJlc2V0ZWFyIGluaXRpYWxDaGF0SWQgeSBpbmNyZW1lbnRhciBuZXdDaGF0S2V5XG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbj8uKClcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIC8vIE5vIGJvcnJhciBlbCBjbGllbnRlIHNpIGVzIGFnZW50ZSBkZSBjbGllbnRlcyAoaWd1YWwgcXVlIGVsIHByb3llY3RvIHNlIG1hbnRpZW5lKVxuICAgICAgaWYgKGFnZW50Py5lbnRpdHkgIT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIWFnZW50IHx8IGFnZW50Py5pc19kZWxldGVkIHx8IGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fCBhZ2VudD8ucHJvamVjdF9kZWxldGVkKSAmJlxuICAgICAgYWdlbnRzLmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIC8vIE9yY2hlc3RyYXRvciBlbiBob21lIGdsb2JhbCAoaGVhZGVyL3BsYW5uZXIpOiBhbCBpbmljaWFyIHVuIGNoYXQgbnVldm8gc2UgZGViZSB2b2x2ZXIgYWwgcGFzbyAxXG4gICAgLy8gKGxpc3RhIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLCBwb3IgbG8gcXVlIGhheSBxdWUgbGltcGlhciB0b2RvIGVsIGNvbnRleHRvIHBpbmVhZG8uXG4gICAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBzZWN0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gb3JjaGVzdHJhdG9yKTpcbiAgLy8gLSBEZXNkZSBlbCBjaGF0IChoZWFkZXIgbyBwcm9qZWN0L2NsaWVudC90YXNrKTogaW5pY2lhIHVuYSBjb252ZXJzYWNpw7NuIG51ZXZhIGNvbnNlcnZhbmRvIGVsXG4gIC8vICAgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBob21lIChwYXNvIDIgY29uIEZBUXMvRlVBcykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pOiBsaW1waWEgZWwgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBwYXNvIDFcbiAgLy8gICAoc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWxcbiAgLy8gICB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAoZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKS5cbiAgY29uc3QgaGFuZGxlQmFjayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0byA9IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24oc2VjdGlvbiwgYWdlbnQ/LnR5cGUsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5ob21lKVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdEJhY2ssIHsgdG8gfSlcblxuICAgIC8vIERlc2RlIGVsIGNoYXQg4oaSIG51ZXZhIGNvbnZlcnNhY2nDs24gU0lOIGJvcnJhciBlbCBjb250ZXh0byBwaW5lYWRvLCB2b2x2aWVuZG8gYWwgaG9tZS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24/LigpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICAgIH1cbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBIb21lIHBhc28gMiAoY29udGV4dG8gcGluZWFkbykg4oaSIGxpbXBpYXIgZWwgY29udGV4dG8geSB2b2x2ZXIgYWwgcGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzKS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgfHwgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKSkge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgfVxuICB9LCBbXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQ/LnR5cGUsXG4gICAgYW1wbGl0dWRFdmVudCxcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICBdKVxuXG4gIC8vIERldGVjdGEgZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZW4gcHJvamVjdC9jbGllbnQvdGFzazogY29udGV4dG8gcGluZWFkbyDihpIgdmFjw61vIGNvbiBlbFxuICAvLyBvcmNoZXN0cmF0b3IgKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUEgZW4gZWwgbGlzdGFkbykuIFNvbG8gbGEgdHJhbnNpY2nDs24gY3VlbnRhLCBhc8OtIHVuYVxuICAvLyBhcGVydHVyYSBmcmVzY2EgKGNvbnRleHRvIHBpbmVhZG8gZGVzZGUgbGEgc2VjY2nDs24pIG5vIGxvIGFjdGl2YS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwaW5uZWQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICAgIGNvbnN0IHdhc1Bpbm5lZCA9IHByZXZIYXNQaW5uZWRDb250ZXh0UmVmLmN1cnJlbnRcbiAgICBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50ID0gcGlubmVkXG4gICAgaWYgKCFpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiB3YXNQaW5uZWQgJiYgIXBpbm5lZCkge1xuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKHRydWUpXG4gICAgfVxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBjbGllbnQ/LmlkLCBwcm9qZWN0Py5pZCwgc2VjdGlvbiwgYWdlbnQ/LnR5cGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgLy8gTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChhZ2VudF90eXBlL2FnZW50X2VudGl0eSArIGNvbnRleHRvKSwgZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU2Vzc2lvbk1ldGEgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2dCBhcyBDdXN0b21FdmVudDxTZXNzaW9uTWV0YT5cbiAgICAgIGlmIChkZXRhaWwpIHNldFNlc3Npb25NZXRhKGRldGFpbClcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuIGxpbXBpYW1vcyBsYSBtZXRhZGF0YTsgZWwgbG9hZCBkZSBsYSBudWV2YSBzZXNzaW9uIGxhIHZ1ZWx2ZSBhIGVtaXRpci5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZF0pXG5cbiAgLy8gQ2FydGVsIFwiY29udGludWFyIGVuIHVuIGNoYXQgbnVldm9cIjogc2UgbXVlc3RyYSBhbCBhYnJpciB1bmEgY29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3lcbiAgLy8gKGFnZW50X3R5cGUgPT09ICdjbG9uZScgY29uIGVudGl0eSBwcm9qZWN0L3Rhc2svY2xpZW50KS4gRWwgaW5wdXQgc2UgcmVlbXBsYXphIHBvciBlbCBjYXJ0ZWwuXG4gIGNvbnN0IGxlZ2FjeUNvbnRleHRTZXNzaW9uID0gdXNlTWVtbzx7IGVudGl0eVR5cGU6IExlZ2FjeUNvbnRleHRFbnRpdHk7IGNvbnRleHROYW1lOiBzdHJpbmcgfSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQpIHJldHVybiBudWxsXG4gICAgaWYgKCFzZXNzaW9uTWV0YSB8fCBzZXNzaW9uTWV0YS5hZ2VudFR5cGUgIT09ICdjbG9uZScpIHJldHVybiBudWxsXG4gICAgY29uc3QgZW50aXR5ID0gc2Vzc2lvbk1ldGEuYWdlbnRFbnRpdHlcbiAgICBpZiAoIWVudGl0eSB8fCAhTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMuaW5jbHVkZXMoZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHkpKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGNvbnRleHROYW1lID1cbiAgICAgIGVudGl0eSA9PT0gJ3Rhc2snID8gc2Vzc2lvbk1ldGEudGFza05hbWUgOiBlbnRpdHkgPT09ICdwcm9qZWN0JyA/IHNlc3Npb25NZXRhLnByb2plY3ROYW1lIDogc2Vzc2lvbk1ldGEuY2xpZW50TmFtZVxuICAgIHJldHVybiB7IGVudGl0eVR5cGU6IGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5LCBjb250ZXh0TmFtZTogY29udGV4dE5hbWUgfHwgJycgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZXNzaW9uTWV0YV0pXG5cbiAgLy8gTWFyY2EgZWwgYWdlbnRlIGRlIGxhIGNvbnZlcnNhY2nDs24gbGVnYWN5IHBhcmEgcXVlIGhlYWRlciwgc2VsZWN0b3IgeSBhdmF0YXIgbXVlc3RyZW4gZWwgbG9nb1xuICAvLyBNQUlBIHkgZWwgbm9tYnJlIHRhY2hhZG8gKGFnZW50ZSBvYnNvbGV0byksIHNpbiBkZXBlbmRlciBkZWwgYHR5cGVgIHJlc3VlbHRvIGRlIGxhIHNlc2nDs24gdmllamEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxlZ2FjeUNvbnRleHRTZXNzaW9uICYmIGFnZW50ICYmICFhZ2VudC5pc19sZWdhY3lfY29udGV4dCkge1xuICAgICAgc2VsZWN0QWdlbnQoeyAuLi5hZ2VudCwgaXNfbGVnYWN5X2NvbnRleHQ6IHRydWUgfSlcbiAgICB9XG4gIH0sIFtsZWdhY3lDb250ZXh0U2Vzc2lvbiwgYWdlbnQsIHNlbGVjdEFnZW50XSlcblxuICAvLyBBYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIG9yY2hlc3RyYXRvciBzZXRlYW5kbyBlbCBjb250ZXh0byBkZWwgY2xvbmUgbGVnYWN5IChtaXNtbyBjcml0ZXJpb1xuICAvLyBxdWUgY2xpY2tlYXIgdW4gY29udGV4dG8gcmVjaWVudGUgZW4gZWwgaG9tZSDihpIgcGFzbyAyIGNvbiBGQVFzL2FjY2lvbmVzIGRlIGVzZSBjb250ZXh0bykuXG4gIGNvbnN0IGhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlc3Npb25NZXRhKSByZXR1cm5cbiAgICBjb25zdCB7XG4gICAgICBhZ2VudEVudGl0eSxcbiAgICAgIHByb2plY3RJZDogcElkLFxuICAgICAgcHJvamVjdE5hbWU6IHBOYW1lLFxuICAgICAgY2xpZW50SWQ6IGNJZCxcbiAgICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgICAgdGFza0lkOiB0SWQsXG4gICAgICB0YXNrTmFtZTogdE5hbWUsXG4gICAgfSA9IHNlc3Npb25NZXRhXG5cbiAgICBjb25zdCBvcmNoZXN0cmF0b3IgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJylcbiAgICBpZiAoIW9yY2hlc3RyYXRvcikgcmV0dXJuXG5cbiAgICAvLyBSZXNldCBkZWwgY2hhdCDihpIgY29udmVyc2FjacOzbiBudWV2YVxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24/LigpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuXG4gICAgLy8gU2V0ZWFyIGNvbnRleHRvIChtaXNtbyBjcml0ZXJpbyBxdWUgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCBkZWwgaG9tZSlcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcgJiYgY0lkICE9IG51bGwpIHtcbiAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAncHJvamVjdCcgJiYgcElkICE9IG51bGwpIHtcbiAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICBpZDogcElkLFxuICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAndGFzaycgJiYgdElkICE9IG51bGwpIHtcbiAgICAgIHNldFRhc2s/Lih7XG4gICAgICAgIGlkOiB0SWQsXG4gICAgICAgIG5hbWU6IHROYW1lIHx8ICcnLFxuICAgICAgICAuLi4ocElkICE9IG51bGwgPyB7IHByb2plY3RJZDogcElkIH0gOiB7fSksXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGlmIChjSWQgIT0gbnVsbCkgc2V0Q2xpZW50Py4oeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgaWYgKHBJZCAhPSBudWxsKSB7XG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBwSWQsXG4gICAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0QWdlbnQob3JjaGVzdHJhdG9yKVxuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gIH0sIFtzZXNzaW9uTWV0YSwgYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxsc1xuICBjb25zdCBpc015QWdlbnRzU2VjdGlvbiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiOiBzb2xvIHBhcmEgZWwgb3JjaGVzdHJhdG9yLlxuICAvLyAtIEVuIGVsIGNoYXQ6IGRpc3BvbmlibGUgZW4gdG9kYXMgbGFzIHNlY2Npb25lcyAoaGVhZGVyIHkgcHJvamVjdC9jbGllbnQvdGFzaykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8gcGluZWFkbyk6IGVuIGVsIGhlYWRlciBzaWVtcHJlOyBlblxuICAvLyAgIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbCB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAocGFzw7MgcG9yIGVsIHNlbGVjdG9yIGRlXG4gIC8vICAgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGVsIHBhc28gMSAoc2luIGNvbnRleHRvKSBOTyBzZSBtdWVzdHJhLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNDaGF0VmlldyA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGlzSG9tZVN0ZXAyID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaGFzUGlubmVkQ29udGV4dFxuICBjb25zdCBpc0hlYWRlckhvbWVTdGVwMiA9IGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgaXNIb21lU3RlcDJcbiAgY29uc3QgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIgPSAhaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBpc0hvbWVTdGVwMiAmJiBkaWRSZXNldENvbnRleHRJblNlY3Rpb25cbiAgY29uc3Qgc2hvd0JhY2tCdXR0b24gPVxuICAgIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nICYmXG4gICAgKGlzQ2hhdFZpZXcgfHwgaXNIZWFkZXJIb21lU3RlcDIgfHwgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIpXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2xlYXJBZ2VudCgpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbY2xlYXJBZ2VudF0pXG5cbiAgY29uc3QgaGFuZGxlT3BlblNraWxscyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15U2tpbGxzKVxuICAgIGhhbmRsZUdldFNraWxscygpXG4gIH0sIFtoYW5kbGVHZXRTa2lsbHNdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgLy8gRWwgZm9vdGVyIChpbnB1dCkgc2Ugb2N1bHRhIHNvbG8gZW4gZWwgaG9tZSBtYXJrZXRwbGFjZSBkZSBNYWlha2VyIChicm93c2UgZGUgYWdlbnRlcykuXG4gIC8vIEVsIGhvbWUgZGVsIG9yY2hlc3RyYXRvciBzw60gcGVybWl0ZSBlc2NyaWJpciwgYXPDrSBxdWUgbWFudGllbmUgZWwgZm9vdGVyLlxuICBjb25zdCBpc01haWFrZXJDcmVhdG9ySG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzPXtoYW5kbGVPcGVuU2tpbGxzfVxuICAgICAgICAgIGlzTGVnYWN5Q29udGV4dFNlc3Npb249eyEhbGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17aGFuZGxlTGF5b3V0TW9kZUNoYW5nZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGlzTXlBZ2VudHNTZWN0aW9uPXtpc015QWdlbnRzU2VjdGlvbn1cbiAgICAgICAgICBpc01haWFrZXJTZWN0aW9uPXtpc01haWFrZXJDcmVhdG9ySG9tZX1cbiAgICAgICAgICBoaWRlQWdlbnRTZWxlY3Rvcj17aGlkZUhlYWRlckFnZW50U2VsZWN0b3J9XG4gICAgICAgICAgc2hvd0JhY2tCdXR0b249e3Nob3dCYWNrQnV0dG9ufVxuICAgICAgICAgIG9uQmFjaz17aGFuZGxlQmFja31cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpID8gKFxuICAgICAgICAgIDxDaGF0QUlDb250ZW50XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uPXtjb21wdXRlZEN1cnJlbnRPcHRpb259XG4gICAgICAgICAgICBoYW5kbGVycz17eyAuLi5oYW5kbGVycywgY2hhdDogc3RhcnRDaGF0LCBob21lOiBoYW5kbGVycy5ob21lLCBoYW5kbGVHb0hvbWUgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgcmVmcz17eyB1c2VySW5pdGlhbE1lc3NhZ2UsIGluaXRpYWxDaGF0SWQgfX1cbiAgICAgICAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeT17aGFuZGxlU2VuZE1lc3NhZ2VSZWFkeX1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIGZsb2F0aW5nPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICAgIGxvYWRpbmdBZ2VudHM9e2xvYWRpbmd9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAgIHNraWxscz17c2tpbGxzfVxuICAgICAgICAgICAgbG9hZGluZ1NraWxscz17bG9hZGluZ1NraWxsc31cbiAgICAgICAgICAgIG9uRGVsZXRlU2tpbGw9e3JlbW92ZVNraWxsfVxuICAgICAgICAgICAgb25TZWFyY2hBZ2VudHM9e3NlYXJjaEN1c3RvbUFnZW50c31cbiAgICAgICAgICAgIHNlYXJjaExvYWRpbmdBZ2VudHM9e3NlYXJjaExvYWRpbmd9XG4gICAgICAgICAgICBhZ2VudEVycm9yPXthZ2VudEVycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7KChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAhIWFnZW50cz8uZGF0YT8ubGVuZ3RoKSB8fFxuICAgICAgICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSAmJlxuICAgICAgICAgICFpc01haWFrZXJDcmVhdG9ySG9tZSAmJlxuICAgICAgICAgICFoYXNFcnJvciAmJlxuICAgICAgICAgICFsb2FkaW5nICYmXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICBzaG93RmFxcz17Y29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXR9XG4gICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgIGxlZ2FjeUNvbnRleHRTZXNzaW9uPXtsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgICAgICAgb25Db250aW51ZUluTmV3Q2hhdD17aGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0fVxuICAgICAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1Db250ZW50PlxuICAgIDwvPlxuICApXG5cbiAgY29uc3QgY29udGVudFdyYXBwZXIgPSAoXG4gICAgPFNDQ0FJTUNvbnRlbnRXcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9IHJlZj17Y29udGVudFdyYXBwZXJSZWZ9PlxuICAgICAge21vZGFsUGFuZWx9XG4gICAgICB7c2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwgJiYgKFxuICAgICAgICA8Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZURpc21pc3NDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsfVxuICAgICAgICAgIG9uQ29uZmlybT17aGFuZGxlQ29uZmlybUNsb3NlV2hpbGVHZW5lcmF0aW5nfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyXG4gICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn1cbiAgICAgICAgZWxldmF0ZWQ9e3NlY3Rpb24gPT09ICd0YXNrJ31cbiAgICAgID5cbiAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICB7Y29udGVudFdyYXBwZXJ9XG4gICAgICAgIDwvRmxvYXRpbmdQYW5lbE1vdGlvbj5cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibUFnZW50TW9kYWxcbiAgICAgICAgICAgIGFkZEFnZW50PXthZGRBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50PXt1cGRhdGVBZ2VudH1cbiAgICAgICAgICAgIHJlbW92ZUFnZW50PXtyZW1vdmVBZ2VudH1cbiAgICAgICAgICAgIHVwZGF0ZUFnZW50RmF2b3JpdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBzZWxlY3RGaXJzdEFnZW50PXtzZWxlY3RGaXJzdEFnZW50fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1Ta2lsbE1vZGFsIGFkZFNraWxsPXthZGRTa2lsbH0gdXBkYXRlU2tpbGxJbkxpc3Q9e3VwZGF0ZVNraWxsSW5MaXN0fSByZW1vdmVTa2lsbD17cmVtb3ZlU2tpbGx9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgPEFibVNraWxsR2VuZXJhdGVNb2RhbCAvPn1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUVFQSxXQUFXLEVBQ1hDLE9BQU8sRUFDUEMsUUFBUSxFQUNSQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsZUFBZSxRQUVWLE9BQU87QUFDZCxPQUFPQyxRQUFRLE1BQU0sV0FBVztBQUNoQyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNsRSxTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUU5RSxTQUFTQyxhQUFhLFFBQVEsa0JBQWtCO0FBQ2hELFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQywwQkFBMEIsUUFBUSxxREFBcUQ7QUFDaEcsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxnQkFBZ0IsUUFBc0IsaUNBQWlDO0FBR2hGLFNBQVNDLGlCQUFpQixRQUFRLGtEQUFrRDtBQUNwRixTQUFTQyxRQUFRLFFBQVEsbUNBQW1DO0FBQzVELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxhQUFhLFFBQVEsNkNBQTZDO0FBQzNFLFNBQVNDLGFBQWEsUUFBUSw2Q0FBNkM7QUFDM0UsU0FBU0MscUJBQXFCLFFBQVEsNkRBQTZEO0FBQ25HLFNBQVNDLHlCQUF5QixRQUFRLDJDQUEyQztBQUNyRixTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNB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
|
|
1012
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJNQUlBRXJyb3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInJlc2V0TWFpYVByZWZldGNoU2Vzc2lvbiIsInVzZUdldFNraWxscyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIkFibVNraWxsTW9kYWwiLCJBYm1Ta2lsbEdlbmVyYXRlTW9kYWwiLCJDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1XcmFwcGVyIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJhZ2VudFR5cGUiLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInVzZXIiLCJCb29sZWFuIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIkNoYXRBSU1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX3VzZXIkcGVybWlzc2lvbnMyIiwiX3VzZXIkcGVybWlzc2lvbnMzIiwiX2FnZW50cyRkYXRhIiwiaGFuZGxlQ2xvc2UiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsImkxOG4iLCJhbXBsaXR1ZEV2ZW50IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwiLCJzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCIsIl91c2VTdGF0ZTMiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGU0IiwidXNlckluaXRpYWxNZXNzYWdlIiwic2V0VXNlckluaXRpYWxNZXNzYWdlIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpbml0aWFsQ2hhdElkIiwic2V0SW5pdGlhbENoYXRJZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibmV3Q2hhdEtleSIsInNldE5ld0NoYXRLZXkiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlc3Npb25NZXRhIiwic2V0U2Vzc2lvbk1ldGEiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJzZW5kTWVzc2FnZUZ1bmN0aW9uIiwic2V0U2VuZE1lc3NhZ2VGdW5jdGlvbiIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwic2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJpc1N0cmVhbWluZyIsInNldElzU3RyZWFtaW5nIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsImhhbmRsZUNsb3NlTW9kYWwiLCJnZXRTdGF0ZSIsImNsZWFyRmFxcyIsImhhbmRsZURpc21pc3NDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiaGFuZGxlQ29uZmlybUNsb3NlV2hpbGVHZW5lcmF0aW5nIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTE5IiwiaG9tZSIsIl91c2VTdGF0ZTIwIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImRpZFJlc2V0Q29udGV4dEluU2VjdGlvbiIsInNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbiIsInByZXZIYXNQaW5uZWRDb250ZXh0UmVmIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50IiwiY2xlYXJBZ2VudCIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsInNldENsaWVudCIsInNldFByb2plY3QiLCJiYW5uZXJFbnRyeUZhcSIsInNldFRhc2siLCJ0b29sdGlwWkluZGV4IiwiX3VzZUdldEFnZW50cyIsImhhbmRsZUdvSG9tZSIsImFnZW50cyIsImxvYWRpbmciLCJsb2FkaW5nTW9yZSIsImFnZW50RXJyb3IiLCJlcnJvciIsImhhbmRsZUdldEFnZW50cyIsImxvYWRNb3JlQWdlbnRzIiwic2VhcmNoQ3VzdG9tQWdlbnRzIiwic2VhcmNoTG9hZGluZyIsImFkZEFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50Iiwic29ydEFnZW50c0xpc3QiLCJfdXNlR2V0U2tpbGxzIiwic2tpbGxzIiwibG9hZGluZ1NraWxscyIsImhhbmRsZUdldFNraWxscyIsImFkZFNraWxsIiwidXBkYXRlU2tpbGxJbkxpc3QiLCJyZW1vdmVTa2lsbCIsImlzTUFJQSIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsImNvbXB1dGVkQ3VycmVudE9wdGlvbiIsImlzR2xvYmFsU3BlY2lhbGlzdCIsImVudGl0eSIsImlzUHJvamVjdFNwZWNpYWxpc3QiLCJpc0NsaWVudFNwZWNpYWxpc3QiLCJpc01haWFrZXIiLCJteUFnZW50cyIsIm15U2tpbGxzIiwidHlwZSIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJuYW1lIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNGZXRjaGVkUmVmIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJfdXNlU3RhdGUyNyIsIl91c2VTdGF0ZTI4IiwibGF5b3V0TW9kZSIsInNldExheW91dE1vZGUiLCJoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlIiwibW9kZSIsImV4cGFuZGVkIiwiaXNGbG9hdGluZyIsImNvbnRlbnRXcmFwcGVyUmVmIiwiX3VzZVN0YXRlMjkiLCJfdXNlU3RhdGUzMCIsImRyYWdQb3NpdGlvbiIsInNldERyYWdQb3NpdGlvbiIsIl91c2VGbG9hdGluZ1BhbmVsRHJhZyIsInRpbHRNb3Rpb24iLCJzdGFydFBvaW50ZXJUcmFja2luZyIsInNhbXBsZVBvaW50ZXJNb3ZlIiwiZW5kUG9pbnRlclRyYWNraW5nIiwiZHJhZ1N0YXRlUmVmIiwiY2xhbXBEcmFnUG9zaXRpb24iLCJ4IiwieSIsImNvbnRlbnRXcmFwcGVyIiwiY3VycmVudCIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJoYW5kbGVEcmFnTW92ZSIsImRyYWdTdGF0ZSIsImNsaWVudFgiLCJjbGllbnRZIiwibmV4dFBvc2l0aW9uIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJyZXNvbHZlZERyYWdQb3NpdGlvbiIsImhhbmRsZURyYWdTdGFydCIsImJ1dHRvbiIsInRhcmdldCIsImNsb3Nlc3QiLCJyZWN0IiwiaW5pdGlhbFBvc2l0aW9uIiwibGVmdCIsInRvcCIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJpZCIsImZhcVRpdGxlIiwidHJpbSIsInVuZGVmaW5lZCIsImdvVG9DaGF0Iiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZWxlY3RlZEFnZW50IiwiZGF0YSIsImZpbmQiLCJhZ2VudEl0ZW0iLCJhZ2VudElkIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSIsInNlbmRNZXNzYWdlIiwic3RvcEdlbmVyYXRpb24iLCJzdHJlYW1pbmciLCJ3cml0aW5nIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwicHJvamVjdF9kZWxldGVkIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0Iiwic3RvcCIsImhhbmRsZUJhY2siLCJ0byIsImFpQ2hhdEJhY2siLCJwaW5uZWQiLCJwcm9qZWN0SWQiLCJ3YXNQaW5uZWQiLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJkZXRhaWwiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjQiLCJvcGVuQ2hhdFZpZXciLCJvcGVuTmV3Q2hhdFdpdGhBZ2VudCIsIl9kZXRhaWwkcHJvamVjdCIsIl9kZXRhaWwkY2xpZW50IiwiX3JlZjUiLCJvblNlc3Npb25NZXRhIiwiX3JlZjYiLCJsZWdhY3lDb250ZXh0U2Vzc2lvbiIsImFnZW50RW50aXR5IiwiaW5jbHVkZXMiLCJjb250ZXh0TmFtZSIsInRhc2tOYW1lIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiZW50aXR5VHlwZSIsImlzX2xlZ2FjeV9jb250ZXh0IiwiaGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0IiwicElkIiwicE5hbWUiLCJjSWQiLCJjbGllbnRJZCIsImNOYW1lIiwidElkIiwidGFza0lkIiwidE5hbWUiLCJvcmNoZXN0cmF0b3IiLCJhIiwiU3RyaW5nIiwic2hvd05ld0NoYXQiLCJoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciIsImlzTXlBZ2VudHNTZWN0aW9uIiwiaGFzUGlubmVkQ29udGV4dCIsImlzQ2hhdFZpZXciLCJpc0hvbWVTdGVwMiIsImlzSGVhZGVySG9tZVN0ZXAyIiwiaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIiLCJzaG93QmFja0J1dHRvbiIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZU9wZW5Ta2lsbHMiLCJoYW5kbGVHb1RvTWFpYWtlciIsIl9jYWxsZWUyIiwibWFpYWtlckFnZW50IiwicmVzcG9uc2UiLCJfdCIsIl9jb250ZXh0MiIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaXNNYWlha2VyQ3JlYXRvckhvbWUiLCJtb2RhbFBhbmVsIiwiY2hpbGRyZW4iLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiYWdlbnRzTmF2QWN0aXZlIiwiaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiIsImZsb2F0aW5nIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiZHJhZ2dhYmxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwiaGFzTW9yZSIsImhhc19tb3JlIiwib25BZ2VudFVwZGF0ZSIsImlzTWFpYWtlclNlY3Rpb24iLCJoaWRlQWdlbnRTZWxlY3RvciIsIm9uQmFjayIsInJlZnMiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJsb2FkaW5nQWdlbnRzIiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25EZWxldGVTa2lsbCIsIm9uU2VhcmNoQWdlbnRzIiwic2VhcmNoTG9hZGluZ0FnZW50cyIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsInNob3dGYXFzIiwib25Db250aW51ZUluTmV3Q2hhdCIsInJlZiIsIm9uQ2xvc2UiLCJvbkNvbmZpcm0iLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsInRpbHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvQ2hhdEFJTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbm8tdXNlbGVzcy1mcmFnbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7XG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxuICB1c2VSZWYsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICBQb2ludGVyRXZlbnQgYXMgUmVhY3RQb2ludGVyRXZlbnQsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb0NoYXRBSSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IE1BSUFFcnJvciB9IGZyb20gJy4uLy4uL2F0b21zL01BSUFFcnJvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5pbXBvcnQgeyBDaGF0QUlDb250ZW50IH0gZnJvbSAnLi4vQ2hhdEFJQ29udGVudCdcbmltcG9ydCB7IGJ1aWxkSGFuZGxlcnMsIG9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICcuLi9TaWRlYmFyJ1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzJ1xuaW1wb3J0IHsgcmVzZXRNYWlhUHJlZmV0Y2hTZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9ib290c3RyYXAvcHJlZmV0Y2hNYWlhQWdlbnRzJ1xuaW1wb3J0IHsgdXNlR2V0U2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZ2V0U2tpbGxzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCwgdHlwZSBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IEFibVNraWxsTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxNb2RhbC9BYm1Ta2lsbE1vZGFsJ1xuaW1wb3J0IHsgQWJtU2tpbGxHZW5lcmF0ZU1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsR2VuZXJhdGVNb2RhbC9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwnXG5pbXBvcnQgeyBDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBTQ0NBSU1Db250ZW50LCBTQ0NBSU1Db250ZW50V3JhcHBlciwgU0NDQUlNV3JhcHBlciB9IGZyb20gJy4vQ2hhdEFJTW9kYWwuc3R5bGVzJ1xuaW1wb3J0IHtcbiAgZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4LFxuICBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSxcbiAgcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUsXG4gIHNldFN0b3JlZE1haWFDaGF0TGF5b3V0TW9kZSxcbn0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IHVzZUZhcXNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUZhcXNTdG9yZSdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5cbnR5cGUgQ2hhdEFJTW9kYWxQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBwYXJlbnRSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG59XG5cbi8qKiBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcyBhbCBjYXJnYXIgdW5hIGNvbnZlcnNhY2nDs24pLiAqL1xudHlwZSBTZXNzaW9uTWV0YSA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgYWdlbnRUeXBlPzogc3RyaW5nXG4gIGFnZW50RW50aXR5Pzogc3RyaW5nXG4gIHByb2plY3RJZD86IG51bWJlclxuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlclxuICBjbGllbnROYW1lPzogc3RyaW5nXG4gIHRhc2tJZD86IG51bWJlclxuICB0YXNrTmFtZT86IHN0cmluZ1xufVxuXG5jb25zdCBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUyA9IFsncHJvamVjdCcsICd0YXNrJywgJ2NsaWVudCddIGFzIGNvbnN0XG50eXBlIExlZ2FjeUNvbnRleHRFbnRpdHkgPSAodHlwZW9mIExFR0FDWV9DT05URVhUX0VOVElUSUVTKVtudW1iZXJdXG5cbnR5cGUgQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gJ2dsb2JhbF9jb250ZXh0X2hvbWUnIHwgJ3Rhc2tfaG9tZScgfCAncGxhbm5lcl9ob21lJyB8ICdwcm9qZWN0X2hvbWUnIHwgJ2NsaWVudF9ob21lJ1xuXG4vKiogSG9tZSBnbG9iYWwgZGVsIG9yY2hlc3RyYXRvciAoc29sbyBoZWFkZXIpLiBQbGFubmVyIGVzIGhvbWUgZGUgRlVBcywgbm8gZGUgY29udGV4dG9zLiAqL1xuY29uc3QgaXNHbG9iYWxNYWlhU2VjdGlvbiA9IChzZWN0aW9uOiBTZWN0aW9uKTogYm9vbGVhbiA9PiBzZWN0aW9uID09PSAnaGVhZGVyJ1xuXG5jb25zdCByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gKFxuICBzZWN0aW9uOiBTZWN0aW9uLFxuICBhZ2VudFR5cGU6IEFnZW50Wyd0eXBlJ10gfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRPcHRpb246IHN0cmluZyxcbiAgaG9tZU9wdGlvbjogc3RyaW5nXG4pOiBBaUNoYXRCYWNrRGVzdGluYXRpb24gPT4ge1xuICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IGhvbWVPcHRpb24pIHtcbiAgICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG4gIH1cbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrX2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicpIHJldHVybiAncGxhbm5lcl9ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3Byb2plY3QnKSByZXR1cm4gJ3Byb2plY3RfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdjbGllbnQnKSByZXR1cm4gJ2NsaWVudF9ob21lJ1xuICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG59XG5cbmV4cG9ydCBjb25zdCBJRF9NT0RBTF9DSEFUX0FHRU5UID0gJ21vZGFscy1wb3J0YWwtbWFpYS1jaGF0LWFnZW50J1xuXG5jb25zdCB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSA9IChzZWN0aW9uOiBTZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCwgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4pID0+IHtcbiAgaWYgKCFzZWN0aW9uIHx8ICFjYW5BY2Nlc3NUb0NoYXRBSSh1c2VyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gUGxhbm5lciB5IHRhc2sgYWJyZW4gc2llbXByZSBlbCBjaGF0IChob21lIGRlIEZVQXMpLCBudW5jYSByZXN1bWVuIGRlIHByb3llY3Rvcy5cbiAgaWYgKHNlY3Rpb24gPT09ICdwbGFubmVyJyB8fCBzZWN0aW9uID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyB8fCB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgW3Nob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsLCBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3VzZXJJbml0aWFsTWVzc2FnZSwgc2V0VXNlckluaXRpYWxNZXNzYWdlXSA9IHVzZVN0YXRlPHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZXNzaW9uTWV0YSwgc2V0U2Vzc2lvbk1ldGFdID0gdXNlU3RhdGU8U2Vzc2lvbk1ldGEgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbl0gPSB1c2VTdGF0ZTxcbiAgICB8ICgoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZClcbiAgICB8IG51bGxcbiAgPihudWxsKVxuICBjb25zdCBbc3RvcEdlbmVyYXRpb25GdW5jdGlvbiwgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbl0gPSB1c2VTdGF0ZTwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNTdHJlYW1pbmcsIHNldElzU3RyZWFtaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaXNTdHJlYW1pbmcgfHwgaXNXcml0aW5nKSB7XG4gICAgICBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCh0cnVlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICByZXNldE1haWFQcmVmZXRjaFNlc3Npb24oKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2UsIGlzU3RyZWFtaW5nLCBpc1dyaXRpbmddKVxuXG4gIGNvbnN0IGhhbmRsZURpc21pc3NDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKGZhbHNlKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbj8uKClcbiAgICBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbChmYWxzZSlcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIHJlc2V0TWFpYVByZWZldGNoU2Vzc2lvbigpXG4gICAgaGFuZGxlQ2xvc2U/LigpXG4gIH0sIFtoYW5kbGVDbG9zZSwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZShvcHRpb25zLmhvbWUpXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IHsgc2tpbGxzLCBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLCBoYW5kbGVHZXRTa2lsbHMsIGFkZFNraWxsLCB1cGRhdGVTa2lsbEluTGlzdCwgcmVtb3ZlU2tpbGwgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15U2tpbGxzXG4gICAgfVxuXG4gICAgLy8gRWwgb3JjaGVzdHJhdG9yIChNQUlBKSBtdWVzdHJhIHN1IGhvbWUgY29uIEZBUXMvYWNjaW9uZXMgZnJlY3VlbnRlczsgZWwgcmVzdG8gZGVcbiAgICAvLyBsb3MgZ2xvYmFsIHNwZWNpYWxpc3RzIChjbG9uZXMgZ2xvYmFsZXMgbm8tbWFpYWtlcikgc2lndWVuIHllbmRvIGRpcmVjdG8gYWwgY2hhdC5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgYWdlbnQ/LnR5cGUgIT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZV0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oKCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpLCBbYWdlbnRdKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgJ215U2tpbGxzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMpIHJldHVybiAnbXlTa2lsbHMnXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCwgcGxhbm5lciB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEZ1ZXJhIGRlIGVzb3MgY29udGV4dG9zIHNlIHJlc3BldGEgbGEgcHJlZmVyZW5jaWEgZ3VhcmRhZGEgZW4gbG9jYWxTdG9yYWdlLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oKCkgPT5cbiAgICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7IHNlY3Rpb24sIGJhbm5lckVudHJ5RmFxIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlKG1vZGUpXG4gICAgc2V0TGF5b3V0TW9kZShtb2RlKVxuICB9LCBbXSlcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihudWxsKVxuICBjb25zdCB7IHRpbHRNb3Rpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nLCBzYW1wbGVQb2ludGVyTW92ZSwgZW5kUG9pbnRlclRyYWNraW5nIH0gPVxuICAgIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdChpc0Zsb2F0aW5nKVxuICBjb25zdCBkcmFnU3RhdGVSZWYgPSB1c2VSZWY8e1xuICAgIHBvaW50ZXJJZDogbnVtYmVyXG4gICAgb2Zmc2V0WDogbnVtYmVyXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gIH0gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNsYW1wRHJhZ1Bvc2l0aW9uID0gdXNlQ2FsbGJhY2soKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IG9mZnNldCA9IDE2XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVyV2lkdGggLSB3aWR0aCAtIG9mZnNldClcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWlnaHQgLSBvZmZzZXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogTWF0aC5taW4oTWF0aC5tYXgoeCwgb2Zmc2V0KSwgbWF4WCksXG4gICAgICB5OiBNYXRoLm1pbihNYXRoLm1heCh5LCBvZmZzZXQpLCBtYXhZKSxcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHByZXYueCwgcHJldi55KVxuICAgICAgfVxuICAgICAgY29uc3QgcGFkID0gMTZcbiAgICAgIGNvbnN0IHggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkXG4gICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICAgIH0pXG4gIH0sIFtsYXlvdXRNb2RlLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlbmRQb2ludGVyVHJhY2tpbmcoKVxuICAgICAgaWYgKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJ1xuICAgIH0sXG4gICAgW2VuZFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdTdGF0ZSA9IGRyYWdTdGF0ZVJlZi5jdXJyZW50XG4gICAgICBpZiAoIWRyYWdTdGF0ZSB8fCBkcmFnU3RhdGUucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNhbXBsZVBvaW50ZXJNb3ZlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IGNsYW1wRHJhZ1Bvc2l0aW9uKGV2ZW50LmNsaWVudFggLSBkcmFnU3RhdGUub2Zmc2V0WCwgZXZlbnQuY2xpZW50WSAtIGRyYWdTdGF0ZS5vZmZzZXRZKVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICAgIGlmIChwcmV2ICYmIHByZXYueCA9PT0gbmV4dFBvc2l0aW9uLnggJiYgcHJldi55ID09PSBuZXh0UG9zaXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRQb3NpdGlvblxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgc2FtcGxlUG9pbnRlck1vdmVdXG4gIClcblxuICBjb25zdCByZXNvbHZlZERyYWdQb3NpdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGlmIChkcmFnUG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgY29uc3QgcGFkID0gMTZcbiAgICBjb25zdCB4ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkIDogcGFkXG4gICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgfSwgW2xheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWlzRmxvYXRpbmcgfHwgZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgIGlmICh0YXJnZXQuY2xvc2VzdCgnYnV0dG9uLCBhLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW3JvbGU9XCJidXR0b25cIl0sIFtkYXRhLW5vLWRyYWc9XCJ0cnVlXCJdJykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjdCA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBpbml0aWFsUG9zaXRpb24gPSByZXNvbHZlZERyYWdQb3NpdGlvbiA/PyBjbGFtcERyYWdQb3NpdGlvbihyZWN0LmxlZnQsIHJlY3QudG9wKVxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFggPSBldmVudC5jbGllbnRYIC0gaW5pdGlhbFBvc2l0aW9uLnhcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRZID0gZXZlbnQuY2xpZW50WSAtIGluaXRpYWxQb3NpdGlvbi55XG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihpbml0aWFsUG9zaXRpb24pXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgcG9pbnRlcklkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgIG9mZnNldFg6IHBvaW50ZXJPZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiBwb2ludGVyT2Zmc2V0WSxcbiAgICAgIH1cblxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXREcmFnZ2FibGUpXG4gICAgICBzdGFydFBvaW50ZXJUcmFja2luZyhldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBpc0Zsb2F0aW5nLCByZXNvbHZlZERyYWdQb3NpdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBzdGFydENoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZyxcbiAgICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCAnJyxcbiAgICAgICAgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKG1lbnRpb25zICYmIG1lbnRpb25zLmxlbmd0aCA+IDAgPyB7IG1lbnRpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihmdWFJZCA/IHsgZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBiYW5uZXJGYXFBdXRvU2VudFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVudGl0eVJlYWR5ID0gc2VjdGlvbiA9PT0gJ3Byb2plY3QnID8gQm9vbGVhbihwcm9qZWN0Py5pZCkgOiBzZWN0aW9uID09PSAnY2xpZW50JyA/IEJvb2xlYW4oY2xpZW50Py5pZCkgOiB0cnVlXG5cbiAgICBpZiAoIWJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZT8udHJpbSgpIHx8IGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgfHwgbG9hZGluZyB8fCAhYWdlbnQ/LmlkIHx8ICFlbnRpdHlSZWFkeSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IHRydWVcbiAgICBzdGFydENoYXQoXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFUaXRsZSxcbiAgICAgIFtdLFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxSWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBiYW5uZXJFbnRyeUZhcS5jb250ZXh0RGF0YVxuICAgIClcbiAgfSwgW1xuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFJZCxcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGUsXG4gICAgYmFubmVyRW50cnlGYXE/LmNvbnRleHREYXRhLFxuICAgIGxvYWRpbmcsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGFnZW50Py5lbnRpdHksXG4gICAgcHJvamVjdD8uaWQsXG4gICAgY2xpZW50Py5pZCxcbiAgICBzZWN0aW9uLFxuICAgIHN0YXJ0Q2hhdCxcbiAgXSlcblxuICBjb25zdCBnb1RvQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGF0OiBhbnkpID0+IHtcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICAgIGNvbnN0IHNlbGVjdGVkQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKGFnZW50SXRlbSA9PiBhZ2VudEl0ZW0uaWQgPT09IGNoYXQuYWdlbnRJZClcbiAgICAgIGlmIChzZWxlY3RlZEFnZW50KSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHNlbGVjdGVkQWdlbnQpXG4gICAgICB9XG4gICAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIGFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc3RhcnRDaGF0LCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24/LigpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAvLyBObyBib3JyYXIgZWwgY2xpZW50ZSBzaSBlcyBhZ2VudGUgZGUgY2xpZW50ZXMgKGlndWFsIHF1ZSBlbCBwcm95ZWN0byBzZSBtYW50aWVuZSlcbiAgICAgIGlmIChhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50Jykge1xuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfVxuICAgICAgaWYgKHNlY3Rpb24gIT09ICd0YXNrJykge1xuICAgICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCFhZ2VudCB8fCBhZ2VudD8uaXNfZGVsZXRlZCB8fCBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fCBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHwgYWdlbnQ/LnByb2plY3RfZGVsZXRlZCkgJiZcbiAgICAgIGFnZW50cy5kYXRhLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhWzBdKVxuICAgIH1cbiAgICAvLyBPcmNoZXN0cmF0b3IgZW4gaG9tZSBnbG9iYWwgKGhlYWRlci9wbGFubmVyKTogYWwgaW5pY2lhciB1biBjaGF0IG51ZXZvIHNlIGRlYmUgdm9sdmVyIGFsIHBhc28gMVxuICAgIC8vIChsaXN0YSBkZSBjb250ZXh0b3MgcmVjaWVudGVzKSwgcG9yIGxvIHF1ZSBoYXkgcXVlIGxpbXBpYXIgdG9kbyBlbCBjb250ZXh0byBwaW5lYWRvLlxuICAgIGlmIChpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJykge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgIH1cbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFtcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgb3B0aW9ucy5jaGF0LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGFnZW50LFxuICAgIGFnZW50cyxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgc2VjdGlvbixcbiAgXSlcblxuICBjb25zdCBoYW5kbGVSZXNldENoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbaGFuZGxlR29Ib21lXSlcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIiBkZWwgaGVhZGVyIChzb2xvIG9yY2hlc3RyYXRvcik6XG4gIC8vIC0gRGVzZGUgZWwgY2hhdCAoaGVhZGVyIG8gcHJvamVjdC9jbGllbnQvdGFzayk6IGluaWNpYSB1bmEgY29udmVyc2FjacOzbiBudWV2YSBjb25zZXJ2YW5kbyBlbFxuICAvLyAgIGNvbnRleHRvIHBpbmVhZG8geSB2dWVsdmUgYWwgaG9tZSAocGFzbyAyIGNvbiBGQVFzL0ZVQXMpLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvKTogbGltcGlhIGVsIGNvbnRleHRvIHBpbmVhZG8geSB2dWVsdmUgYWwgcGFzbyAxXG4gIC8vICAgKHNlbGVjdG9yIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBoZWFkZXIgc2llbXByZTsgZW4gcHJvamVjdC9jbGllbnQvdGFzayBzb2xvIHNpIGVsXG4gIC8vICAgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbikuXG4gIGNvbnN0IGhhbmRsZUJhY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgdG8gPSByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uKHNlY3Rpb24sIGFnZW50Py50eXBlLCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIG9wdGlvbnMuaG9tZSlcbiAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXRCYWNrLCB7IHRvIH0pXG5cbiAgICAvLyBEZXNkZSBlbCBjaGF0IOKGkiBudWV2YSBjb252ZXJzYWNpw7NuIFNJTiBib3JyYXIgZWwgY29udGV4dG8gcGluZWFkbywgdm9sdmllbmRvIGFsIGhvbWUuXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgICB9XG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSG9tZSBwYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pIOKGkiBsaW1waWFyIGVsIGNvbnRleHRvIHkgdm9sdmVyIGFsIHBhc28gMSAoY29udGV4dG9zIHJlY2llbnRlcykuXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIChpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pIHx8IGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbikpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIH1cbiAgfSwgW1xuICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbixcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50Py50eXBlLFxuICAgIGFtcGxpdHVkRXZlbnQsXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgXSlcblxuICAvLyBEZXRlY3RhIGVsIHJlaW5pY2lvIGRlIGNvbnRleHRvIGVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGNvbnRleHRvIHBpbmVhZG8g4oaSIHZhY8OtbyBjb24gZWxcbiAgLy8gb3JjaGVzdHJhdG9yIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBIGVuIGVsIGxpc3RhZG8pLiBTb2xvIGxhIHRyYW5zaWNpw7NuIGN1ZW50YSwgYXPDrSB1bmFcbiAgLy8gYXBlcnR1cmEgZnJlc2NhIChjb250ZXh0byBwaW5lYWRvIGRlc2RlIGxhIHNlY2Npw7NuKSBubyBsbyBhY3RpdmEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGlubmVkID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgICBjb25zdCB3YXNQaW5uZWQgPSBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50XG4gICAgcHJldkhhc1Bpbm5lZENvbnRleHRSZWYuY3VycmVudCA9IHBpbm5lZFxuICAgIGlmICghaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgd2FzUGlubmVkICYmICFwaW5uZWQpIHtcbiAgICAgIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbih0cnVlKVxuICAgIH1cbiAgfSwgW3Rhc2s/LmlkLCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgY2xpZW50Py5pZCwgcHJvamVjdD8uaWQsIHNlY3Rpb24sIGFnZW50Py50eXBlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBoYW5kbGVHZXRBZ2VudHMoKVxuICAgIH1cbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1lcmdlQ3JlYXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAobmV4dEFnZW50Py5pZCkge1xuICAgICAgICBhZGRBZ2VudChuZXh0QWdlbnQsIHsgbmF2aWdhdGVIb21lOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbYWRkQWdlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TeW5jRWRpdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghbmV4dEFnZW50Py5pZCkgcmV0dXJuXG4gICAgICB1cGRhdGVBZ2VudChuZXh0QWdlbnQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBuZXh0QWdlbnQuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW3VwZGF0ZUFnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnQ/LmlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5DaGF0VmlldyA9ICgpID0+IHtcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmNoYXQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgQ2hhdEFJTXlBZ2VudHMuaGFuZGxlVXNlQWdlbnQgKyBvbkJhY2sgKGhhbmRsZXJzLmhvbWUpLlxuICAgKiAgRWwgZGV0YWlsIHB1ZWRlIHRyYWVyIG9wY2lvbmFsbWVudGUgYHByb2plY3RgLCBgY2xpZW50YCwgYHRhc2tgIHBhcmEgZmxvd3MgcXVlXG4gICAqICBuZWNlc2l0YW4gcHJlc2VydmFyIGNvbnRleHRvIChlai4gc2VsZWN0b3IgZGUgYWdlbnRlcyBkZXNkZSB1bmEgdGFyZWEpLiBTaSBubyB2aWVuZW4sXG4gICAqICBzZSBtYW50aWVuZSBlbCBjb21wb3J0YW1pZW50byBvcmlnaW5hbCBkZSBsaW1waWFyIHByb2plY3QvY2xpZW50LiAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5OZXdDaGF0V2l0aEFnZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PHtcbiAgICAgICAgYWdlbnQ6IEFnZW50XG4gICAgICAgIHByb2plY3Q/OiBQcm9qZWN0IHwgbnVsbFxuICAgICAgICBjbGllbnQ/OiBDbGllbnQgfCBudWxsXG4gICAgICAgIHRhc2s/OiBUYXNrIHwgbnVsbFxuICAgICAgfT5cbiAgICAgIGNvbnN0IG5leHRBZ2VudCA9IGRldGFpbD8uYWdlbnRcbiAgICAgIGlmICghbmV4dEFnZW50KSByZXR1cm5cblxuICAgICAgc2V0UHJvamVjdChkZXRhaWw/LnByb2plY3QgPz8gbnVsbClcbiAgICAgIHNldENsaWVudD8uKGRldGFpbD8uY2xpZW50ID8/IG51bGwpXG4gICAgICBpZiAoZGV0YWlsPy50YXNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0VGFzaz8uKGRldGFpbC50YXNrKVxuICAgICAgfVxuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuXG4gIC8vIE1ldGFkYXRhIGRlIGxhIHNlc3Npb24gYWJpZXJ0YSAoYWdlbnRfdHlwZS9hZ2VudF9lbnRpdHkgKyBjb250ZXh0byksIGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblNlc3Npb25NZXRhID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldnQgYXMgQ3VzdG9tRXZlbnQ8U2Vzc2lvbk1ldGE+XG4gICAgICBpZiAoZGV0YWlsKSBzZXRTZXNzaW9uTWV0YShkZXRhaWwpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWNoYXQtc2Vzc2lvbi1tZXRhJywgb25TZXNzaW9uTWV0YSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIEFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbiBsaW1waWFtb3MgbGEgbWV0YWRhdGE7IGVsIGxvYWQgZGUgbGEgbnVldmEgc2Vzc2lvbiBsYSB2dWVsdmUgYSBlbWl0aXIuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2Vzc2lvbk1ldGEobnVsbClcbiAgfSwgW2luaXRpYWxDaGF0SWRdKVxuXG4gIC8vIENhcnRlbCBcImNvbnRpbnVhciBlbiB1biBjaGF0IG51ZXZvXCI6IHNlIG11ZXN0cmEgYWwgYWJyaXIgdW5hIGNvbnZlcnNhY2nDs24gZGUgdW4gY2xvbmUgbGVnYWN5XG4gIC8vIChhZ2VudF90eXBlID09PSAnY2xvbmUnIGNvbiBlbnRpdHkgcHJvamVjdC90YXNrL2NsaWVudCkuIEVsIGlucHV0IHNlIHJlZW1wbGF6YSBwb3IgZWwgY2FydGVsLlxuICBjb25zdCBsZWdhY3lDb250ZXh0U2Vzc2lvbiA9IHVzZU1lbW88eyBlbnRpdHlUeXBlOiBMZWdhY3lDb250ZXh0RW50aXR5OyBjb250ZXh0TmFtZTogc3RyaW5nIH0gfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0KSByZXR1cm4gbnVsbFxuICAgIGlmICghc2Vzc2lvbk1ldGEgfHwgc2Vzc2lvbk1ldGEuYWdlbnRUeXBlICE9PSAnY2xvbmUnKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGVudGl0eSA9IHNlc3Npb25NZXRhLmFnZW50RW50aXR5XG4gICAgaWYgKCFlbnRpdHkgfHwgIUxFR0FDWV9DT05URVhUX0VOVElUSUVTLmluY2x1ZGVzKGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5KSkgcmV0dXJuIG51bGxcbiAgICBjb25zdCBjb250ZXh0TmFtZSA9XG4gICAgICBlbnRpdHkgPT09ICd0YXNrJyA/IHNlc3Npb25NZXRhLnRhc2tOYW1lIDogZW50aXR5ID09PSAncHJvamVjdCcgPyBzZXNzaW9uTWV0YS5wcm9qZWN0TmFtZSA6IHNlc3Npb25NZXRhLmNsaWVudE5hbWVcbiAgICByZXR1cm4geyBlbnRpdHlUeXBlOiBlbnRpdHkgYXMgTGVnYWN5Q29udGV4dEVudGl0eSwgY29udGV4dE5hbWU6IGNvbnRleHROYW1lIHx8ICcnIH1cbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2Vzc2lvbk1ldGFdKVxuXG4gIC8vIE1hcmNhIGVsIGFnZW50ZSBkZSBsYSBjb252ZXJzYWNpw7NuIGxlZ2FjeSBwYXJhIHF1ZSBoZWFkZXIsIHNlbGVjdG9yIHkgYXZhdGFyIG11ZXN0cmVuIGVsIGxvZ29cbiAgLy8gTUFJQSB5IGVsIG5vbWJyZSB0YWNoYWRvIChhZ2VudGUgb2Jzb2xldG8pLCBzaW4gZGVwZW5kZXIgZGVsIGB0eXBlYCByZXN1ZWx0byBkZSBsYSBzZXNpw7NuIHZpZWphLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsZWdhY3lDb250ZXh0U2Vzc2lvbiAmJiBhZ2VudCAmJiAhYWdlbnQuaXNfbGVnYWN5X2NvbnRleHQpIHtcbiAgICAgIHNlbGVjdEFnZW50KHsgLi4uYWdlbnQsIGlzX2xlZ2FjeV9jb250ZXh0OiB0cnVlIH0pXG4gICAgfVxuICB9LCBbbGVnYWN5Q29udGV4dFNlc3Npb24sIGFnZW50LCBzZWxlY3RBZ2VudF0pXG5cbiAgLy8gQWJyZSB1biBjaGF0IG51ZXZvIGNvbiBlbCBvcmNoZXN0cmF0b3Igc2V0ZWFuZG8gZWwgY29udGV4dG8gZGVsIGNsb25lIGxlZ2FjeSAobWlzbW8gY3JpdGVyaW9cbiAgLy8gcXVlIGNsaWNrZWFyIHVuIGNvbnRleHRvIHJlY2llbnRlIGVuIGVsIGhvbWUg4oaSIHBhc28gMiBjb24gRkFRcy9hY2Npb25lcyBkZSBlc2UgY29udGV4dG8pLlxuICBjb25zdCBoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uTWV0YSkgcmV0dXJuXG4gICAgY29uc3Qge1xuICAgICAgYWdlbnRFbnRpdHksXG4gICAgICBwcm9qZWN0SWQ6IHBJZCxcbiAgICAgIHByb2plY3ROYW1lOiBwTmFtZSxcbiAgICAgIGNsaWVudElkOiBjSWQsXG4gICAgICBjbGllbnROYW1lOiBjTmFtZSxcbiAgICAgIHRhc2tJZDogdElkLFxuICAgICAgdGFza05hbWU6IHROYW1lLFxuICAgIH0gPSBzZXNzaW9uTWV0YVxuXG4gICAgY29uc3Qgb3JjaGVzdHJhdG9yID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpXG4gICAgaWYgKCFvcmNoZXN0cmF0b3IpIHJldHVyblxuXG4gICAgLy8gUmVzZXQgZGVsIGNoYXQg4oaSIGNvbnZlcnNhY2nDs24gbnVldmFcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uPy4oKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcblxuICAgIC8vIFNldGVhciBjb250ZXh0byAobWlzbW8gY3JpdGVyaW8gcXVlIGhhbmRsZVNlbGVjdFJlY2VudENvbnRleHQgZGVsIGhvbWUpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICBpZiAoYWdlbnRFbnRpdHkgPT09ICdjbGllbnQnICYmIGNJZCAhPSBudWxsKSB7XG4gICAgICBzZXRDbGllbnQ/Lih7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnICYmIHBJZCAhPSBudWxsKSB7XG4gICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgaWQ6IHBJZCxcbiAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCwgY2xpZW50OiB7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0gfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ3Rhc2snICYmIHRJZCAhPSBudWxsKSB7XG4gICAgICBzZXRUYXNrPy4oe1xuICAgICAgICBpZDogdElkLFxuICAgICAgICBuYW1lOiB0TmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKHBJZCAhPSBudWxsID8geyBwcm9qZWN0SWQ6IHBJZCB9IDoge30pLFxuICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBpZiAoY0lkICE9IG51bGwpIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICAgIGlmIChwSWQgIT0gbnVsbCkge1xuICAgICAgICBzZXRQcm9qZWN0KHtcbiAgICAgICAgICBpZDogcElkLFxuICAgICAgICAgIG5hbWU6IHBOYW1lIHx8ICcnLFxuICAgICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCwgY2xpZW50OiB7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KHsgcHJvamVjdElkOiBTdHJpbmcocElkKSwgcHJvamVjdE5hbWU6IHBOYW1lIHx8ICcnLCBjbGllbnROYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdEFnZW50KG9yY2hlc3RyYXRvcilcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICB9LCBbc2Vzc2lvbk1ldGEsIGFnZW50cy5kYXRhLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCBzZXRDaGlwc1Byb2plY3QsIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0ID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXRcbiAgY29uc3QgaGlkZUhlYWRlckFnZW50U2VsZWN0b3IgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHNcbiAgY29uc3QgaXNNeUFnZW50c1NlY3Rpb24gPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHNcblxuICAvLyBCb3TDs24gXCJ2b2x2ZXJcIjogc29sbyBwYXJhIGVsIG9yY2hlc3RyYXRvci5cbiAgLy8gLSBFbiBlbCBjaGF0OiBkaXNwb25pYmxlIGVuIHRvZGFzIGxhcyBzZWNjaW9uZXMgKGhlYWRlciB5IHByb2plY3QvY2xpZW50L3Rhc2spLlxuICAvLyAtIEVuIGVsIGhvbWUgcGFzbyAyIChGQVFzL0ZVQXMgY29uIGNvbnRleHRvIHBpbmVhZG8pOiBlbiBlbCBoZWFkZXIgc2llbXByZTsgZW5cbiAgLy8gICBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWwgdXN1YXJpbyByZWluaWNpw7MgZWwgY29udGV4dG8gKHBhc8OzIHBvciBlbCBzZWxlY3RvciBkZVxuICAvLyAgIGNvbnRleHRvcyByZWNpZW50ZXMpLiBFbiBlbCBwYXNvIDEgKHNpbiBjb250ZXh0bykgTk8gc2UgbXVlc3RyYS5cbiAgY29uc3QgaGFzUGlubmVkQ29udGV4dCA9ICEhKHRhc2s/LmlkIHx8IGNoaXBzUHJvamVjdD8ucHJvamVjdElkIHx8IGNsaWVudD8uaWQgfHwgcHJvamVjdD8uaWQpXG4gIGNvbnN0IGlzQ2hhdFZpZXcgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBpc0hvbWVTdGVwMiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGhhc1Bpbm5lZENvbnRleHRcbiAgY29uc3QgaXNIZWFkZXJIb21lU3RlcDIgPSBpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGlzSG9tZVN0ZXAyXG4gIGNvbnN0IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyID0gIWlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgaXNIb21lU3RlcDIgJiYgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXG4gIGNvbnN0IHNob3dCYWNrQnV0dG9uID1cbiAgICBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZyAmJlxuICAgIChpc0NoYXRWaWV3IHx8IGlzSGVhZGVySG9tZVN0ZXAyIHx8IGlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyKVxuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNsZWFyQWdlbnQoKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teUFnZW50cylcbiAgfSwgW2NsZWFyQWdlbnRdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Ta2lsbHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teVNraWxscylcbiAgICBoYW5kbGVHZXRTa2lsbHMoKVxuICB9LCBbaGFuZGxlR2V0U2tpbGxzXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhKSlcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW2FnZW50cy5kYXRhLCBpMThuLmxhbmd1YWdlLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrXSlcbiAgY29uc3QgaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZW1vdmVBZ2VudChhZ2VudElkKVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gYWdlbnRJZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGFnZW50SWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQ/LmlkLCByZW1vdmVBZ2VudCwgc2VsZWN0Rmlyc3RBZ2VudF1cbiAgKVxuXG4gIC8vIEVsIGZvb3RlciAoaW5wdXQpIHNlIG9jdWx0YSBzb2xvIGVuIGVsIGhvbWUgbWFya2V0cGxhY2UgZGUgTWFpYWtlciAoYnJvd3NlIGRlIGFnZW50ZXMpLlxuICAvLyBFbCBob21lIGRlbCBvcmNoZXN0cmF0b3Igc8OtIHBlcm1pdGUgZXNjcmliaXIsIGFzw60gcXVlIG1hbnRpZW5lIGVsIGZvb3Rlci5cbiAgY29uc3QgaXNNYWlha2VyQ3JlYXRvckhvbWUgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBpc01haWFrZXJBZ2VudFNlbGVjdGVkXG5cbiAgY29uc3QgbW9kYWxQYW5lbCA9IChcbiAgICA8PlxuICAgICAge3ZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpICYmICFpc0Zsb2F0aW5nID8gKFxuICAgICAgICA8U2lkZWJhclxuICAgICAgICAgIG9uR29Ub0NoYXQ9e2dvVG9DaGF0fVxuICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldFNpZGViYXJIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICBoYW5kbGVHb1RvSG9tZT17aGFuZGxlR29Ib21lfVxuICAgICAgICAgIGhhbmRsZU9wZW5NYXJrZXRwbGFjZT17aGFuZGxlT3Blbk1hcmtldHBsYWNlfVxuICAgICAgICAgIHNob3dOZXdDaGF0PXtzaG93TmV3Q2hhdH1cbiAgICAgICAgICByZWZldGNoQ2hhdHM9e3JlZmV0Y2hDaGF0c31cbiAgICAgICAgICBoYW5kbGVTZXRSZWZldGNoQ2hhdHM9e3NldFJlZmV0Y2hDaGF0c31cbiAgICAgICAgICBoYXNFcnJvcj17c2lkZWJhckhhc0Vycm9yfVxuICAgICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmPXtyZXNldFNlbGVjdGVkQ2hhdFJlZn1cbiAgICAgICAgICBhZ2VudHNOYXZBY3RpdmU9e3NpZGViYXJBZ2VudHNOYXZBY3RpdmV9XG4gICAgICAgICAgaGFuZGxlT3BlblNraWxscz17aGFuZGxlT3BlblNraWxsc31cbiAgICAgICAgICBpc0xlZ2FjeUNvbnRleHRTZXNzaW9uPXshIWxlZ2FjeUNvbnRleHRTZXNzaW9ufVxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e2hhbmRsZUxheW91dE1vZGVDaGFuZ2V9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBpc015QWdlbnRzU2VjdGlvbj17aXNNeUFnZW50c1NlY3Rpb259XG4gICAgICAgICAgaXNNYWlha2VyU2VjdGlvbj17aXNNYWlha2VyQ3JlYXRvckhvbWV9XG4gICAgICAgICAgaGlkZUFnZW50U2VsZWN0b3I9e2hpZGVIZWFkZXJBZ2VudFNlbGVjdG9yfVxuICAgICAgICAgIHNob3dCYWNrQnV0dG9uPXtzaG93QmFja0J1dHRvbn1cbiAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uLCB1c2VyKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIGxvYWRpbmdTa2lsbHM9e2xvYWRpbmdTa2lsbHN9XG4gICAgICAgICAgICBvbkRlbGV0ZVNraWxsPXtyZW1vdmVTa2lsbH1cbiAgICAgICAgICAgIG9uU2VhcmNoQWdlbnRzPXtzZWFyY2hDdXN0b21BZ2VudHN9XG4gICAgICAgICAgICBzZWFyY2hMb2FkaW5nQWdlbnRzPXtzZWFyY2hMb2FkaW5nfVxuICAgICAgICAgICAgYWdlbnRFcnJvcj17YWdlbnRFcnJvcn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgc2hvd0ZhcXM9e2NvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0fVxuICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICBsZWdhY3lDb250ZXh0U2Vzc2lvbj17bGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgICAgICAgIG9uQ29udGludWVJbk5ld0NoYXQ9e2hhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdH1cbiAgICAgICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgICAge3Nob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsICYmIChcbiAgICAgICAgPENsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVEaXNtaXNzQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbH1cbiAgICAgICAgICBvbkNvbmZpcm09e2hhbmRsZUNvbmZpcm1DbG9zZVdoaWxlR2VuZXJhdGluZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlclxuICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259XG4gICAgICAgIGVsZXZhdGVkPXtzZWN0aW9uID09PSAndGFzayd9XG4gICAgICA+XG4gICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtU2tpbGxNb2RhbCBhZGRTa2lsbD17YWRkU2tpbGx9IHVwZGF0ZVNraWxsSW5MaXN0PXt1cGRhdGVTa2lsbEluTGlzdH0gcmVtb3ZlU2tpbGw9e3JlbW92ZVNraWxsfSAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIDxBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgLz59XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNlbGVjdG9yXG4gICAgKVxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FFRUEsV0FBVyxFQUNYQyxPQUFPLEVBQ1BDLFFBQVEsRUFDUkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLGVBQWUsUUFFVixPQUFPO0FBQ2QsT0FBT0MsUUFBUSxNQUFNLFdBQVc7QUFDaEMsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUNqRCxTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFFOUUsU0FBU0MsYUFBYSxRQUFRLGtCQUFrQjtBQUNoRCxTQUFTQyxhQUFhLEVBQUVDLE9BQU8sUUFBUSxhQUFhO0FBQ3BELFNBQVNDLE9BQU8sUUFBUSxZQUFZO0FBQ3BDLFNBQVNDLFlBQVksUUFBUSx5Q0FBeUM7QUFDdEUsU0FBU0Msd0JBQXdCLFFBQVEscURBQXFEO0FBQzlGLFNBQVNDLFlBQVksUUFBUSx5Q0FBeUM7QUFDdEUsU0FBU0MsZ0JBQWdCLFFBQXNCLGlDQUFpQztBQUdoRixTQUFTQyxpQkFBaUIsUUFBUSxrREFBa0Q7QUFDcEYsU0FBU0MsUUFBUSxRQUFRLG1DQUFtQztBQUM1RCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsYUFBYSxRQUFRLDZDQUE2QztBQUMzRSxTQUFTQyxhQUFhLFFBQVEsNkNBQTZDO0FBQzNFLFNBQVNDLHFCQUFxQixRQUFRLDZEQUE2RDtBQUNuRyxTQUFTQyx5QkFBeUIsUUFBUSwyQ0FBMkM7QUFDckYsU0FBU0MsUUFBUSxRQUFRLDJCQUEyQjtBQUNwRCxTQUFTQyxhQUFh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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
3
|
import { fetchMaia } from '../client';
|
|
4
|
+
import { buildRecentContextsPrefetchKey, takeRecentContextsPrefetch } from '../bootstrap/recentContextsPrefetchSession';
|
|
4
5
|
var buildPath = function buildPath(opts) {
|
|
5
6
|
var params = new URLSearchParams();
|
|
6
7
|
if ((opts === null || opts === void 0 ? void 0 : opts.limit) != null) {
|
|
@@ -9,7 +10,7 @@ var buildPath = function buildPath(opts) {
|
|
|
9
10
|
var qs = params.toString();
|
|
10
11
|
return qs ? "recent-contexts?".concat(qs) : 'recent-contexts';
|
|
11
12
|
};
|
|
12
|
-
export var
|
|
13
|
+
export var fetchRecentContextsList = /*#__PURE__*/function () {
|
|
13
14
|
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(opts) {
|
|
14
15
|
var _json$data;
|
|
15
16
|
var response, json, items;
|
|
@@ -47,8 +48,36 @@ export var getRecentContexts = /*#__PURE__*/function () {
|
|
|
47
48
|
}
|
|
48
49
|
}, _callee);
|
|
49
50
|
}));
|
|
50
|
-
return function
|
|
51
|
+
return function fetchRecentContextsList(_x) {
|
|
51
52
|
return _ref.apply(this, arguments);
|
|
52
53
|
};
|
|
53
54
|
}();
|
|
54
|
-
|
|
55
|
+
export var getRecentContexts = /*#__PURE__*/function () {
|
|
56
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(opts) {
|
|
57
|
+
var prefetchKey, prefetched;
|
|
58
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
59
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
60
|
+
case 0:
|
|
61
|
+
prefetchKey = buildRecentContextsPrefetchKey(opts);
|
|
62
|
+
_context2.next = 1;
|
|
63
|
+
return takeRecentContextsPrefetch(prefetchKey);
|
|
64
|
+
case 1:
|
|
65
|
+
prefetched = _context2.sent;
|
|
66
|
+
if (!prefetched) {
|
|
67
|
+
_context2.next = 2;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
return _context2.abrupt("return", prefetched);
|
|
71
|
+
case 2:
|
|
72
|
+
return _context2.abrupt("return", fetchRecentContextsList(opts));
|
|
73
|
+
case 3:
|
|
74
|
+
case "end":
|
|
75
|
+
return _context2.stop();
|
|
76
|
+
}
|
|
77
|
+
}, _callee2);
|
|
78
|
+
}));
|
|
79
|
+
return function getRecentContexts(_x2) {
|
|
80
|
+
return _ref2.apply(this, arguments);
|
|
81
|
+
};
|
|
82
|
+
}();
|
|
83
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJidWlsZFJlY2VudENvbnRleHRzUHJlZmV0Y2hLZXkiLCJ0YWtlUmVjZW50Q29udGV4dHNQcmVmZXRjaCIsImJ1aWxkUGF0aCIsIm9wdHMiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJsaW1pdCIsInNldCIsIlN0cmluZyIsInFzIiwidG9TdHJpbmciLCJjb25jYXQiLCJmZXRjaFJlY2VudENvbnRleHRzTGlzdCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9qc29uJGRhdGEiLCJyZXNwb25zZSIsImpzb24iLCJpdGVtcyIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwicGF0aCIsIm1ldGhvZCIsImhlYWRlcnMiLCJhZ2VudElkIiwidW5kZWZpbmVkIiwic2VudCIsIm9rIiwiRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJkYXRhIiwiYWJydXB0IiwiZmlsdGVyIiwiaXRlbSIsImNvbnRleHQiLCJpZCIsIm5hbWUiLCJpbmNsdWRlcyIsInR5cGUiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImdldFJlY2VudENvbnRleHRzIiwiX3JlZjIiLCJfY2FsbGVlMiIsInByZWZldGNoS2V5IiwicHJlZmV0Y2hlZCIsIl9jb250ZXh0MiIsIl94MiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL1JlY2VudENvbnRleHRzL2dldFJlY2VudENvbnRleHRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7IGJ1aWxkUmVjZW50Q29udGV4dHNQcmVmZXRjaEtleSwgdGFrZVJlY2VudENvbnRleHRzUHJlZmV0Y2ggfSBmcm9tICcuLi9ib290c3RyYXAvcmVjZW50Q29udGV4dHNQcmVmZXRjaFNlc3Npb24nXG5cbmV4cG9ydCB0eXBlIFJlY2VudENvbnRleHRUeXBlID0gJ2NsaWVudCcgfCAncHJvamVjdCcgfCAndGFzaydcblxuZXhwb3J0IHR5cGUgUmVjZW50Q29udGV4dFBhcmVudHMgPSB7XG4gIGNsaWVudF9pZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50X25hbWU/OiBzdHJpbmcgfCBudWxsXG4gIHByb2plY3RfaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIHByb2plY3RfbmFtZT86IHN0cmluZyB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgUmVjZW50Q29udGV4dEl0ZW0gPSB7XG4gIHR5cGU6IFJlY2VudENvbnRleHRUeXBlXG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgbmFtZTogc3RyaW5nXG4gIHBhcmVudHM/OiBSZWNlbnRDb250ZXh0UGFyZW50cyB8IG51bGxcbiAgbGFzdF9pbnRlcmFjdGlvbl9kYXRlPzogc3RyaW5nIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBHZXRSZWNlbnRDb250ZXh0c09wdGlvbnMgPSB7XG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgbGltaXQ/OiBudW1iZXJcbn1cblxuY29uc3QgYnVpbGRQYXRoID0gKG9wdHM/OiBHZXRSZWNlbnRDb250ZXh0c09wdGlvbnMpID0+IHtcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gIGlmIChvcHRzPy5saW1pdCAhPSBudWxsKSB7XG4gICAgcGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcob3B0cy5saW1pdCkpXG4gIH1cbiAgY29uc3QgcXMgPSBwYXJhbXMudG9TdHJpbmcoKVxuICByZXR1cm4gcXMgPyBgcmVjZW50LWNvbnRleHRzPyR7cXN9YCA6ICdyZWNlbnQtY29udGV4dHMnXG59XG5cbmV4cG9ydCBjb25zdCBmZXRjaFJlY2VudENvbnRleHRzTGlzdCA9IGFzeW5jIChvcHRzPzogR2V0UmVjZW50Q29udGV4dHNPcHRpb25zKTogUHJvbWlzZTxSZWNlbnRDb250ZXh0SXRlbVtdPiA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICBwYXRoOiBidWlsZFBhdGgob3B0cyksXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzOiBvcHRzPy5hZ2VudElkID8geyAnWC1BZ2VudC1JZCc6IFN0cmluZyhvcHRzLmFnZW50SWQpIH0gOiB1bmRlZmluZWQsXG4gIH0pXG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIGZldGNoaW5nIHJlY2VudCBjb250ZXh0cycpXG4gIH1cblxuICBjb25zdCBqc29uID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheShqc29uKSA/IGpzb24gOiAoanNvbj8uZGF0YSA/PyBbXSlcbiAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbTogdW5rbm93bik6IGl0ZW0gaXMgUmVjZW50Q29udGV4dEl0ZW0gPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBpdGVtIGFzIFBhcnRpYWw8UmVjZW50Q29udGV4dEl0ZW0+XG4gICAgcmV0dXJuIGNvbnRleHQ/LmlkICE9IG51bGwgJiYgY29udGV4dC5uYW1lICE9IG51bGwgJiYgWydjbGllbnQnLCAncHJvamVjdCcsICd0YXNrJ10uaW5jbHVkZXMoU3RyaW5nKGNvbnRleHQudHlwZSkpXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRSZWNlbnRDb250ZXh0cyA9IGFzeW5jIChvcHRzPzogR2V0UmVjZW50Q29udGV4dHNPcHRpb25zKTogUHJvbWlzZTxSZWNlbnRDb250ZXh0SXRlbVtdPiA9PiB7XG4gIGNvbnN0IHByZWZldGNoS2V5ID0gYnVpbGRSZWNlbnRDb250ZXh0c1ByZWZldGNoS2V5KG9wdHMpXG4gIGNvbnN0IHByZWZldGNoZWQgPSBhd2FpdCB0YWtlUmVjZW50Q29udGV4dHNQcmVmZXRjaChwcmVmZXRjaEtleSlcblxuICBpZiAocHJlZmV0Y2hlZCkge1xuICAgIHJldHVybiBwcmVmZXRjaGVkXG4gIH1cblxuICByZXR1cm4gZmV0Y2hSZWNlbnRDb250ZXh0c0xpc3Qob3B0cylcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTQyw4QkFBOEIsRUFBRUMsMEJBQTBCLFFBQVEsNENBQTRDO0FBd0J2SCxJQUFNQyxTQUFTLEdBQUcsU0FBWkEsU0FBU0EsQ0FBSUMsSUFBK0IsRUFBSztFQUNyRCxJQUFNQyxNQUFNLEdBQUcsSUFBSUMsZUFBZSxDQUFDLENBQUM7RUFDcEMsSUFBSSxDQUFBRixJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRUcsS0FBSyxLQUFJLElBQUksRUFBRTtJQUN2QkYsTUFBTSxDQUFDRyxHQUFHLENBQUMsT0FBTyxFQUFFQyxNQUFNLENBQUNMLElBQUksQ0FBQ0csS0FBSyxDQUFDLENBQUM7RUFDekM7RUFDQSxJQUFNRyxFQUFFLEdBQUdMLE1BQU0sQ0FBQ00sUUFBUSxDQUFDLENBQUM7RUFDNUIsT0FBT0QsRUFBRSxzQkFBQUUsTUFBQSxDQUFzQkYsRUFBRSxJQUFLLGlCQUFpQjtBQUN6RCxDQUFDO0FBRUQsT0FBTyxJQUFNRyx1QkFBdUI7RUFBQSxJQUFBQyxJQUFBLEdBQUFDLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBRyxTQUFBQyxRQUFPZCxJQUErQjtJQUFBLElBQUFlLFVBQUE7SUFBQSxJQUFBQyxRQUFBLEVBQUFDLElBQUEsRUFBQUMsS0FBQTtJQUFBLE9BQUFOLG1CQUFBLENBQUFPLElBQUEsV0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1FBQUE7VUFBQUYsUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDcEQxQixTQUFTLENBQUM7WUFDL0IyQixJQUFJLEVBQUV4QixTQUFTLENBQUNDLElBQUksQ0FBQztZQUNyQndCLE1BQU0sRUFBRSxLQUFLO1lBQ2JDLE9BQU8sRUFBRXpCLElBQUksYUFBSkEsSUFBSSxl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
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
3
|
import { mapCORLang } from '../../../lang/utils';
|
|
4
|
-
var LOG_PREFIX = '[MaiaAgentsPrefetch]';
|
|
5
4
|
var session = null;
|
|
6
5
|
export var buildAgentsPrefetchKey = function buildAgentsPrefetchKey(section, lang, isMultiAgents) {
|
|
7
6
|
return "".concat(section, ":").concat(mapCORLang(lang), ":").concat(isMultiAgents ? '1' : '0');
|
|
@@ -23,10 +22,6 @@ export var registerAgentsPrefetch = function registerAgentsPrefetch(key, promise
|
|
|
23
22
|
key: key,
|
|
24
23
|
result: result
|
|
25
24
|
};
|
|
26
|
-
console.info(LOG_PREFIX, 'session:ready', {
|
|
27
|
-
key: key,
|
|
28
|
-
count: result.data.length
|
|
29
|
-
});
|
|
30
25
|
}
|
|
31
26
|
return result;
|
|
32
27
|
})["catch"](function (error) {
|
|
@@ -60,10 +55,6 @@ export var takeAgentsPrefetch = /*#__PURE__*/function () {
|
|
|
60
55
|
_context.next = 1;
|
|
61
56
|
break;
|
|
62
57
|
}
|
|
63
|
-
console.info(LOG_PREFIX, 'take:miss', {
|
|
64
|
-
key: key,
|
|
65
|
-
hasSession: Boolean(session)
|
|
66
|
-
});
|
|
67
58
|
return _context.abrupt("return", null);
|
|
68
59
|
case 1:
|
|
69
60
|
_context.prev = 1;
|
|
@@ -71,9 +62,6 @@ export var takeAgentsPrefetch = /*#__PURE__*/function () {
|
|
|
71
62
|
_context.next = 2;
|
|
72
63
|
break;
|
|
73
64
|
}
|
|
74
|
-
console.info(LOG_PREFIX, 'take:await-in-flight', {
|
|
75
|
-
key: key
|
|
76
|
-
});
|
|
77
65
|
_context.next = 2;
|
|
78
66
|
return session.promise;
|
|
79
67
|
case 2:
|
|
@@ -81,25 +69,15 @@ export var takeAgentsPrefetch = /*#__PURE__*/function () {
|
|
|
81
69
|
_context.next = 3;
|
|
82
70
|
break;
|
|
83
71
|
}
|
|
84
|
-
console.info(LOG_PREFIX, 'take:empty-after-await', {
|
|
85
|
-
key: key
|
|
86
|
-
});
|
|
87
72
|
return _context.abrupt("return", null);
|
|
88
73
|
case 3:
|
|
89
74
|
_session5 = session, result = _session5.result;
|
|
90
75
|
session = null;
|
|
91
|
-
console.info(LOG_PREFIX, 'take:consumed', {
|
|
92
|
-
key: key,
|
|
93
|
-
count: result.data.length
|
|
94
|
-
});
|
|
95
76
|
return _context.abrupt("return", result);
|
|
96
77
|
case 4:
|
|
97
78
|
_context.prev = 4;
|
|
98
79
|
_t = _context["catch"](1);
|
|
99
80
|
session = null;
|
|
100
|
-
console.info(LOG_PREFIX, 'take:failed', {
|
|
101
|
-
key: key
|
|
102
|
-
});
|
|
103
81
|
return _context.abrupt("return", null);
|
|
104
82
|
case 5:
|
|
105
83
|
case "end":
|
|
@@ -114,11 +92,6 @@ export var takeAgentsPrefetch = /*#__PURE__*/function () {
|
|
|
114
92
|
|
|
115
93
|
/** Al cerrar MAIA: invalidar prefetch para que el próximo hover vuelva a pedir agents. */
|
|
116
94
|
export var resetAgentsPrefetchSession = function resetAgentsPrefetchSession() {
|
|
117
|
-
if (session) {
|
|
118
|
-
console.info(LOG_PREFIX, 'session:reset', {
|
|
119
|
-
key: session.key
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
95
|
session = null;
|
|
123
96
|
};
|
|
124
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBDT1JMYW5nIiwic2Vzc2lvbiIsImJ1aWxkQWdlbnRzUHJlZmV0Y2hLZXkiLCJzZWN0aW9uIiwibGFuZyIsImlzTXVsdGlBZ2VudHMiLCJjb25jYXQiLCJyZWdpc3RlckFnZW50c1ByZWZldGNoIiwia2V5IiwicHJvbWlzZSIsInRoZW4iLCJyZXN1bHQiLCJfc2Vzc2lvbiIsImVycm9yIiwiX3Nlc3Npb24yIiwiaGFzQWdlbnRzUHJlZmV0Y2hSZWFkeSIsIl9zZXNzaW9uMyIsImhhc0FnZW50c1ByZWZldGNoSW5GbGlnaHQiLCJfc2Vzc2lvbjQiLCJ0YWtlQWdlbnRzUHJlZmV0Y2giLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfc2Vzc2lvbjUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiYWJydXB0Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZXNldEFnZW50c1ByZWZldGNoU2Vzc2lvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL2Jvb3RzdHJhcC9hZ2VudHNQcmVmZXRjaFNlc3Npb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBGZXRjaEFnZW50c0xpc3RSZXN1bHQgfSBmcm9tICcuL2ZldGNoQWdlbnRzTGlzdCdcblxudHlwZSBBZ2VudHNQcmVmZXRjaFNlc3Npb24gPSB7XG4gIGtleTogc3RyaW5nXG4gIHJlc3VsdD86IEZldGNoQWdlbnRzTGlzdFJlc3VsdFxuICBwcm9taXNlPzogUHJvbWlzZTxGZXRjaEFnZW50c0xpc3RSZXN1bHQ+XG59XG5cbmxldCBzZXNzaW9uOiBBZ2VudHNQcmVmZXRjaFNlc3Npb24gfCBudWxsID0gbnVsbFxuXG5leHBvcnQgY29uc3QgYnVpbGRBZ2VudHNQcmVmZXRjaEtleSA9IChzZWN0aW9uOiBTZWN0aW9uLCBsYW5nOiBzdHJpbmcsIGlzTXVsdGlBZ2VudHM6IGJvb2xlYW4pOiBzdHJpbmcgPT5cbiAgYCR7c2VjdGlvbn06JHttYXBDT1JMYW5nKGxhbmcpfToke2lzTXVsdGlBZ2VudHMgPyAnMScgOiAnMCd9YFxuXG4vKipcbiAqIEd1YXJkYSBlbCByZXN1bHRhZG8gZGVsIGhvdmVyIGhhc3RhIHF1ZSBzZSBhYnJlIE1BSUEgKHRha2VBZ2VudHNQcmVmZXRjaCkuXG4gKiBTaSBlbCB1c3VhcmlvIGNpZXJyYSBlbCBtb2RhbCwgcmVzZXRBZ2VudHNQcmVmZXRjaFNlc3Npb24gaW52YWxpZGEgbGEgc2VzacOzbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyQWdlbnRzUHJlZmV0Y2ggPSAoXG4gIGtleTogc3RyaW5nLFxuICBwcm9taXNlOiBQcm9taXNlPEZldGNoQWdlbnRzTGlzdFJlc3VsdD5cbik6IFByb21pc2U8RmV0Y2hBZ2VudHNMaXN0UmVzdWx0PiA9PiB7XG4gIHNlc3Npb24gPSB7IGtleSwgcHJvbWlzZSB9XG5cbiAgcmV0dXJuIHByb21pc2VcbiAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgaWYgKHNlc3Npb24/LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIHNlc3Npb24gPSB7IGtleSwgcmVzdWx0IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9KVxuICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICBpZiAoc2Vzc2lvbj8ua2V5ID09PSBrZXkpIHtcbiAgICAgICAgc2Vzc2lvbiA9IG51bGxcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yXG4gICAgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGhhc0FnZW50c1ByZWZldGNoUmVhZHkgPSAoa2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHNlc3Npb24/LmtleSA9PT0ga2V5ICYmIHNlc3Npb24ucmVzdWx0ICE9IG51bGxcblxuZXhwb3J0IGNvbnN0IGhhc0FnZW50c1ByZWZldGNoSW5GbGlnaHQgPSAoa2V5OiBzdHJpbmcpOiBib29sZWFuID0+XG4gIHNlc3Npb24/LmtleSA9PT0ga2V5ICYmIHNlc3Npb24ucHJvbWlzZSAhPSBudWxsICYmIHNlc3Npb24ucmVzdWx0ID09IG51bGxcblxuLyoqXG4gKiBDb25zdW1pZG8gYWwgYWJyaXIgTUFJQTogZGV2dWVsdmUgYWdlbnRzIHByZWZldGNoZWQgeSBsaW1waWEgbGEgc2VzacOzbi5cbiAqIFNpIGVsIHByZWZldGNoIHNpZ3VlIGVuIHZ1ZWxvLCBlc3BlcmEgbGEgbWlzbWEgUHJvbWlzZSAodW5hIHNvbGEgcGV0aWNpw7NuKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHRha2VBZ2VudHNQcmVmZXRjaCA9IGFzeW5jIChrZXk6IHN0cmluZyk6IFByb21pc2U8RmV0Y2hBZ2VudHNMaXN0UmVzdWx0IHwgbnVsbD4gPT4ge1xuICBpZiAoIXNlc3Npb24gfHwgc2Vzc2lvbi5rZXkgIT09IGtleSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICB0cnkge1xuICAgIGlmIChzZXNzaW9uLnByb21pc2UgJiYgIXNlc3Npb24ucmVzdWx0KSB7XG4gICAgICBhd2FpdCBzZXNzaW9uLnByb21pc2VcbiAgICB9XG5cbiAgICBpZiAoIXNlc3Npb24gfHwgc2Vzc2lvbi5rZXkgIT09IGtleSB8fCAhc2Vzc2lvbi5yZXN1bHQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgeyByZXN1bHQgfSA9IHNlc3Npb25cbiAgICBzZXNzaW9uID0gbnVsbFxuICAgIHJldHVybiByZXN1bHRcbiAgfSBjYXRjaCB7XG4gICAgc2Vzc2lvbiA9IG51bGxcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbi8qKiBBbCBjZXJyYXIgTUFJQTogaW52YWxpZGFyIHByZWZldGNoIHBhcmEgcXVlIGVsIHByw7N4aW1vIGhvdmVyIHZ1ZWx2YSBhIHBlZGlyIGFnZW50cy4gKi9cbmV4cG9ydCBjb25zdCByZXNldEFnZW50c1ByZWZldGNoU2Vzc2lvbiA9ICgpOiB2b2lkID0+IHtcbiAgc2Vzc2lvbiA9IG51bGxcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxTQUFTQSxVQUFVLFFBQVEscUJBQXFCO0FBU2hELElBQUlDLE9BQXFDLEdBQUcsSUFBSTtBQUVoRCxPQUFPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUlDLE9BQWdCLEVBQUVDLElBQVksRUFBRUMsYUFBc0I7RUFBQSxVQUFBQyxNQUFBLENBQ3hGSCxPQUFPLE9BQUFHLE1BQUEsQ0FBSU4sVUFBVSxDQUFDSSxJQUFJLENBQUMsT0FBQUUsTUFBQSxDQUFJRCxhQUFhLEdBQUcsR0FBRyxHQUFHLEdBQUc7QUFBQSxDQUFFOztBQUUvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUUsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FDakNDLEdBQVcsRUFDWEMsT0FBdUMsRUFDSjtFQUNuQ1IsT0FBTyxHQUFHO0lBQUVPLEdBQUcsRUFBSEEsR0FBRztJQUFFQyxPQUFPLEVBQVBBO0VBQVEsQ0FBQztFQUUxQixPQUFPQSxPQUFPLENBQ1hDLElBQUksQ0FBQyxVQUFBQyxNQUFNLEVBQUk7SUFBQSxJQUFBQyxRQUFBO0lBQ2QsSUFBSSxFQUFBQSxRQUFBLEdBQUFYLE9BQU8sY0FBQVcsUUFBQSx1QkFBUEEsUUFBQSxDQUFTSixHQUFHLE1BQUtBLEdBQUcsRUFBRTtNQUN4QlAsT0FBTyxHQUFHO1FBQUVPLEdBQUcsRUFBSEEsR0FBRztRQUFFRyxNQUFNLEVBQU5BO01BQU8sQ0FBQztJQUMzQjtJQUNBLE9BQU9BLE1BQU07RUFDZixDQUFDLENBQUMsU0FDSSxDQUFDLFVBQUFFLEtBQUssRUFBSTtJQUFBLElBQUFDLFNBQUE7SUFDZCxJQUFJLEVBQUFBLFNBQUEsR0FBQWIsT0FBTyxjQUFBYSxTQUFBLHVCQUFQQSxTQUFBLENBQVNOLEdB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
|
|
@@ -2,10 +2,17 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
|
2
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
3
|
import { isMaiaCloneAgentsRoleBlocked } from '../../../constants/maiaTaskPanelAccess';
|
|
4
4
|
import { mapCORLang } from '../../../lang/utils';
|
|
5
|
+
import { resetAgentsPrefetchSession } from './agentsPrefetchSession';
|
|
5
6
|
import { fetchAgentsList } from './fetchAgentsList';
|
|
6
7
|
import { buildAgentsPrefetchKey, hasAgentsPrefetchInFlight, hasAgentsPrefetchReady, registerAgentsPrefetch } from './agentsPrefetchSession';
|
|
7
|
-
|
|
8
|
+
import { prefetchMaiaRecentContexts } from './prefetchMaiaRecentContexts';
|
|
9
|
+
import { resetRecentContextsPrefetchSession } from './recentContextsPrefetchSession';
|
|
8
10
|
export { takeAgentsPrefetch, resetAgentsPrefetchSession, buildAgentsPrefetchKey } from './agentsPrefetchSession';
|
|
11
|
+
export { prefetchMaiaRecentContexts } from './prefetchMaiaRecentContexts';
|
|
12
|
+
export var resetMaiaPrefetchSession = function resetMaiaPrefetchSession() {
|
|
13
|
+
resetAgentsPrefetchSession();
|
|
14
|
+
resetRecentContextsPrefetchSession();
|
|
15
|
+
};
|
|
9
16
|
var resolveLang = function resolveLang(lang) {
|
|
10
17
|
var _ref, _window$lang, _window$userInfo;
|
|
11
18
|
if (lang) {
|
|
@@ -17,94 +24,73 @@ var resolveLang = function resolveLang(lang) {
|
|
|
17
24
|
var raw = (_ref = (_window$lang = window.lang) !== null && _window$lang !== void 0 ? _window$lang : (_window$userInfo = window.userInfo) === null || _window$userInfo === void 0 || (_window$userInfo = _window$userInfo.info) === null || _window$userInfo === void 0 ? void 0 : _window$userInfo.lang) !== null && _ref !== void 0 ? _ref : 'es';
|
|
18
25
|
return mapCORLang(String(raw).trim().toLowerCase());
|
|
19
26
|
};
|
|
20
|
-
var
|
|
21
|
-
if (error instanceof Error) {
|
|
22
|
-
return {
|
|
23
|
-
name: error.name,
|
|
24
|
-
message: error.message,
|
|
25
|
-
stack: error.stack
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
value: error
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Prefetch en hover/idle: guarda agents en memoria hasta abrir MAIA.
|
|
35
|
-
* getAgents consume con takeAgentsPrefetch; al cerrar el modal se resetea la sesión.
|
|
36
|
-
*/
|
|
37
|
-
export var prefetchMaiaAgents = /*#__PURE__*/function () {
|
|
27
|
+
var prefetchAgentsList = /*#__PURE__*/function () {
|
|
38
28
|
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2) {
|
|
39
29
|
var _window$userInfo2;
|
|
40
|
-
var section,
|
|
30
|
+
var section, resolvedLang, roleId, isMultiAgents, userLike, canFetchCloneAgents, prefetchKey, promise;
|
|
41
31
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
42
32
|
while (1) switch (_context.prev = _context.next) {
|
|
43
33
|
case 0:
|
|
44
|
-
section = _ref2.section,
|
|
45
|
-
resolvedLang = resolveLang(lang);
|
|
34
|
+
section = _ref2.section, resolvedLang = _ref2.resolvedLang, roleId = _ref2.roleId;
|
|
46
35
|
isMultiAgents = !!window.MAIA_CHAT_AI_FEATURE_ACCESS && !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
|
|
47
36
|
userLike = roleId != null ? {
|
|
48
37
|
role_id: roleId
|
|
49
38
|
} : (_window$userInfo2 = window.userInfo) === null || _window$userInfo2 === void 0 ? void 0 : _window$userInfo2.info;
|
|
50
39
|
canFetchCloneAgents = !isMaiaCloneAgentsRoleBlocked(userLike, section);
|
|
51
40
|
prefetchKey = buildAgentsPrefetchKey(section, resolvedLang, isMultiAgents);
|
|
52
|
-
if (!hasAgentsPrefetchReady(prefetchKey)) {
|
|
41
|
+
if (!(hasAgentsPrefetchReady(prefetchKey) || hasAgentsPrefetchInFlight(prefetchKey))) {
|
|
53
42
|
_context.next = 1;
|
|
54
43
|
break;
|
|
55
44
|
}
|
|
56
|
-
console.info(LOG_PREFIX, 'skip:already-ready', {
|
|
57
|
-
prefetchKey: prefetchKey,
|
|
58
|
-
section: section
|
|
59
|
-
});
|
|
60
45
|
return _context.abrupt("return");
|
|
61
46
|
case 1:
|
|
62
|
-
if (!hasAgentsPrefetchInFlight(prefetchKey)) {
|
|
63
|
-
_context.next = 2;
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
console.info(LOG_PREFIX, 'skip:in-flight', {
|
|
67
|
-
prefetchKey: prefetchKey,
|
|
68
|
-
section: section
|
|
69
|
-
});
|
|
70
|
-
return _context.abrupt("return");
|
|
71
|
-
case 2:
|
|
72
|
-
console.info(LOG_PREFIX, 'start', {
|
|
73
|
-
section: section,
|
|
74
|
-
prefetchKey: prefetchKey
|
|
75
|
-
});
|
|
76
47
|
promise = fetchAgentsList({
|
|
77
48
|
section: section,
|
|
78
49
|
lang: resolvedLang,
|
|
79
50
|
isMultiAgents: isMultiAgents,
|
|
80
51
|
canFetchCloneAgents: canFetchCloneAgents
|
|
81
52
|
});
|
|
82
|
-
_context.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
case 4:
|
|
86
|
-
console.info(LOG_PREFIX, 'ok', {
|
|
87
|
-
section: section,
|
|
88
|
-
prefetchKey: prefetchKey
|
|
89
|
-
});
|
|
90
|
-
_context.next = 6;
|
|
91
|
-
break;
|
|
92
|
-
case 5:
|
|
93
|
-
_context.prev = 5;
|
|
94
|
-
_t = _context["catch"](3);
|
|
95
|
-
console.error(LOG_PREFIX, 'failed', {
|
|
96
|
-
section: section,
|
|
97
|
-
prefetchKey: prefetchKey,
|
|
98
|
-
error: serializeError(_t)
|
|
53
|
+
_context.next = 2;
|
|
54
|
+
return registerAgentsPrefetch(prefetchKey, promise)["catch"](function () {
|
|
55
|
+
return undefined;
|
|
99
56
|
});
|
|
100
|
-
case
|
|
57
|
+
case 2:
|
|
101
58
|
case "end":
|
|
102
59
|
return _context.stop();
|
|
103
60
|
}
|
|
104
|
-
}, _callee
|
|
61
|
+
}, _callee);
|
|
105
62
|
}));
|
|
106
|
-
return function
|
|
63
|
+
return function prefetchAgentsList(_x) {
|
|
107
64
|
return _ref3.apply(this, arguments);
|
|
108
65
|
};
|
|
109
66
|
}();
|
|
110
|
-
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Prefetch en hover/idle: agents + recent-contexts (si MAIA FA activo).
|
|
70
|
+
* getAgents / getRecentContexts consumen la sesión al abrir; resetMaiaPrefetchSession al cerrar.
|
|
71
|
+
*/
|
|
72
|
+
export var prefetchMaiaAgents = /*#__PURE__*/function () {
|
|
73
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(_ref4) {
|
|
74
|
+
var section, lang, roleId, resolvedLang;
|
|
75
|
+
return _regeneratorRuntime.wrap(function (_context2) {
|
|
76
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
77
|
+
case 0:
|
|
78
|
+
section = _ref4.section, lang = _ref4.lang, roleId = _ref4.roleId;
|
|
79
|
+
resolvedLang = resolveLang(lang);
|
|
80
|
+
_context2.next = 1;
|
|
81
|
+
return Promise.allSettled([prefetchAgentsList({
|
|
82
|
+
section: section,
|
|
83
|
+
resolvedLang: resolvedLang,
|
|
84
|
+
roleId: roleId
|
|
85
|
+
}), prefetchMaiaRecentContexts()]);
|
|
86
|
+
case 1:
|
|
87
|
+
case "end":
|
|
88
|
+
return _context2.stop();
|
|
89
|
+
}
|
|
90
|
+
}, _callee2);
|
|
91
|
+
}));
|
|
92
|
+
return function prefetchMaiaAgents(_x2) {
|
|
93
|
+
return _ref5.apply(this, arguments);
|
|
94
|
+
};
|
|
95
|
+
}();
|
|
96
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIiwibWFwQ09STGFuZyIsInJlc2V0QWdlbnRzUHJlZmV0Y2hTZXNzaW9uIiwiZmV0Y2hBZ2VudHNMaXN0IiwiYnVpbGRBZ2VudHNQcmVmZXRjaEtleSIsImhhc0FnZW50c1ByZWZldGNoSW5GbGlnaHQiLCJoYXNBZ2VudHNQcmVmZXRjaFJlYWR5IiwicmVnaXN0ZXJBZ2VudHNQcmVmZXRjaCIsInByZWZldGNoTWFpYVJlY2VudENvbnRleHRzIiwicmVzZXRSZWNlbnRDb250ZXh0c1ByZWZldGNoU2Vzc2lvbiIsInRha2VBZ2VudHNQcmVmZXRjaCIsInJlc2V0TWFpYVByZWZldGNoU2Vzc2lvbiIsInJlc29sdmVMYW5nIiwibGFuZyIsIl9yZWYiLCJfd2luZG93JGxhbmciLCJfd2luZG93JHVzZXJJbmZvIiwid2luZG93IiwicmF3IiwidXNlckluZm8iLCJpbmZvIiwiU3RyaW5nIiwidHJpbSIsInRvTG93ZXJDYXNlIiwicHJlZmV0Y2hBZ2VudHNMaXN0IiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYyIiwiX3dpbmRvdyR1c2VySW5mbzIiLCJzZWN0aW9uIiwicmVzb2x2ZWRMYW5nIiwicm9sZUlkIiwiaXNNdWx0aUFnZW50cyIsInVzZXJMaWtlIiwiY2FuRmV0Y2hDbG9uZUFnZW50cyIsInByZWZldGNoS2V5IiwicHJvbWlzZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsInJvbGVfaWQiLCJhYnJ1cHQiLCJ1bmRlZmluZWQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsInByZWZldGNoTWFpYUFnZW50cyIsIl9yZWY1IiwiX2NhbGxlZTIiLCJfcmVmNCIsIl9jb250ZXh0MiIsIlByb21pc2UiLCJhbGxTZXR0bGVkIiwiX3gyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvYm9vdHN0cmFwL3ByZWZldGNoTWFpYUFnZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhVGFza1BhbmVsQWNjZXNzJ1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyByZXNldEFnZW50c1ByZWZldGNoU2Vzc2lvbiB9IGZyb20gJy4vYWdlbnRzUHJlZmV0Y2hTZXNzaW9uJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudHNMaXN0IH0gZnJvbSAnLi9mZXRjaEFnZW50c0xpc3QnXG5pbXBvcnQge1xuICBidWlsZEFnZW50c1ByZWZldGNoS2V5LFxuICBoYXNBZ2VudHNQcmVmZXRjaEluRmxpZ2h0LFxuICBoYXNBZ2VudHNQcmVmZXRjaFJlYWR5LFxuICByZWdpc3RlckFnZW50c1ByZWZldGNoLFxufSBmcm9tICcuL2FnZW50c1ByZWZldGNoU2Vzc2lvbidcbmltcG9ydCB7IHByZWZldGNoTWFpYVJlY2VudENvbnRleHRzIH0gZnJvbSAnLi9wcmVmZXRjaE1haWFSZWNlbnRDb250ZXh0cydcbmltcG9ydCB7IHJlc2V0UmVjZW50Q29udGV4dHNQcmVmZXRjaFNlc3Npb24gfSBmcm9tICcuL3JlY2VudENvbnRleHRzUHJlZmV0Y2hTZXNzaW9uJ1xuXG5leHBvcnQgdHlwZSBQcmVmZXRjaE1haWFBZ2VudHNQYXJhbXMgPSB7XG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgbGFuZz86IHN0cmluZ1xuICAvKiogUGFyYSByZXNvbHZlciBwZXJtaXNvcyBkZSBjbG9uZSBhZ2VudHMgY3VhbmRvIG5vIGhheSBVc2VyUHJvdmlkZXIgbW9udGFkbyAqL1xuICByb2xlSWQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IHsgdGFrZUFnZW50c1ByZWZldGNoLCByZXNldEFnZW50c1ByZWZldGNoU2Vzc2lvbiwgYnVpbGRBZ2VudHNQcmVmZXRjaEtleSB9IGZyb20gJy4vYWdlbnRzUHJlZmV0Y2hTZXNzaW9uJ1xuZXhwb3J0IHsgcHJlZmV0Y2hNYWlhUmVjZW50Q29udGV4dHMgfSBmcm9tICcuL3ByZWZldGNoTWFpYVJlY2VudENvbnRleHRzJ1xuXG5leHBvcnQgY29uc3QgcmVzZXRNYWlhUHJlZmV0Y2hTZXNzaW9uID0gKCk6IHZvaWQgPT4ge1xuICByZXNldEFnZW50c1ByZWZldGNoU2Vzc2lvbigpXG4gIHJlc2V0UmVjZW50Q29udGV4dHNQcmVmZXRjaFNlc3Npb24oKVxufVxuXG5jb25zdCByZXNvbHZlTGFuZyA9IChsYW5nPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKGxhbmcpIHtcbiAgICByZXR1cm4gbWFwQ09STGFuZyhsYW5nKVxuICB9XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAnZXMnXG4gIH1cbiAgY29uc3QgcmF3ID0gd2luZG93LmxhbmcgPz8gd2luZG93LnVzZXJJbmZvPy5pbmZvPy5sYW5nID8/ICdlcydcbiAgcmV0dXJuIG1hcENPUkxhbmcoU3RyaW5nKHJhdykudHJpbSgpLnRvTG93ZXJDYXNlKCkpXG59XG5cbmNvbnN0IHByZWZldGNoQWdlbnRzTGlzdCA9IGFzeW5jICh7XG4gIHNlY3Rpb24sXG4gIHJlc29sdmVkTGFuZyxcbiAgcm9sZUlkLFxufToge1xuICBzZWN0aW9uOiBTZWN0aW9uXG4gIHJlc29sdmVkTGFuZzogc3RyaW5nXG4gIHJvbGVJZD86IG51bWJlclxufSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBpc011bHRpQWdlbnRzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgY29uc3QgdXNlckxpa2UgPSByb2xlSWQgIT0gbnVsbCA/IHsgcm9sZV9pZDogcm9sZUlkIH0gOiB3aW5kb3cudXNlckluZm8/LmluZm9cbiAgY29uc3QgY2FuRmV0Y2hDbG9uZUFnZW50cyA9ICFpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXJMaWtlLCBzZWN0aW9uKVxuICBjb25zdCBwcmVmZXRjaEtleSA9IGJ1aWxkQWdlbnRzUHJlZmV0Y2hLZXkoc2VjdGlvbiwgcmVzb2x2ZWRMYW5nLCBpc011bHRpQWdlbnRzKVxuXG4gIGlmIChoYXNBZ2VudHNQcmVmZXRjaFJlYWR5KHByZWZldGNoS2V5KSB8fCBoYXNBZ2VudHNQcmVmZXRjaEluRmxpZ2h0KHByZWZldGNoS2V5KSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgcHJvbWlzZSA9IGZldGNoQWdlbnRzTGlzdCh7XG4gICAgc2VjdGlvbixcbiAgICBsYW5nOiByZXNvbHZlZExhbmcsXG4gICAgaXNNdWx0aUFnZW50cyxcbiAgICBjYW5GZXRjaENsb25lQWdlbnRzLFxuICB9KVxuXG4gIGF3YWl0IHJlZ2lzdGVyQWdlbnRzUHJlZmV0Y2gocHJlZmV0Y2hLZXksIHByb21pc2UpLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbn1cblxuLyoqXG4gKiBQcmVmZXRjaCBlbiBob3Zlci9pZGxlOiBhZ2VudHMgKyByZWNlbnQtY29udGV4dHMgKHNpIE1BSUEgRkEgYWN0aXZvKS5cbiAqIGdldEFnZW50cyAvIGdldFJlY2VudENvbnRleHRzIGNvbnN1bWVuIGxhIHNlc2nDs24gYWwgYWJyaXI7IHJlc2V0TWFpYVByZWZldGNoU2Vzc2lvbiBhbCBjZXJyYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBwcmVmZXRjaE1haWFBZ2VudHMgPSBhc3luYyAoeyBzZWN0aW9uLCBsYW5nLCByb2xlSWQgfTogUHJlZmV0Y2hNYWlhQWdlbnRzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlc29sdmVkTGFuZyA9IHJlc29sdmVMYW5nKGxhbmcpXG5cbiAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtwcmVmZXRjaEFnZW50c0xpc3QoeyBzZWN0aW9uLCByZXNvbHZlZExhbmcsIHJvbGVJZCB9KSwgcHJlZmV0Y2hNYWlhUmVjZW50Q29udGV4dHMoKV0pXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBU0EsNEJBQTRCLFFBQVEsd0NBQXdDO0FBQ3JGLFNBQVNDLFVBQVUsUUFBUSxxQkFBcUI7QUFDaEQsU0FBU0MsMEJBQTBCLFFBQVEseUJBQXlCO0FBQ3BFLFNBQVNDLGVBQWUsUUFBUSxtQkFBbUI7QUFDbkQsU0FDRUMsc0JBQXNCLEVBQ3RCQyx5QkFBeUIsRUFDekJDLHNCQUFzQixFQUN0QkMsc0JBQXNCLFFBQ2pCLHlCQUF5QjtBQUNoQyxTQUFTQywwQkFBMEIsUUFBUSw4QkFBOEI7QUFDekUsU0FBU0Msa0NBQWtDLFFBQVEsaUNBQWlDO0FBU3BGLFNBQVNDLGtCQUFrQixFQUFFUiwwQkFBMEIsRUFBRUUsc0JBQXNCLFFBQVEseUJBQXlCO0FBQ2hILFNBQVNJLDBCQUEwQixRQUFRLDhCQUE4QjtBQUV6RSxPQUFPLElBQU1HLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUEsRUFBZTtFQUNsRFQsMEJBQTBCLENBQUMsQ0FBQztFQUM1Qk8sa0NBQWtDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsSUFBTUcsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUlDLElBQWEsRUFBYTtFQUFBLElBQUFDLElBQUEsRUFBQUMsWUFBQSxFQUFBQyxnQkFBQTtFQUM3QyxJQUFJSCxJQUFJLEVBQUU7SUFDUixPQUFPWixVQUFVLENBQUNZLElBQUksQ0FBQztFQUN6QjtFQUNBLElBQUksT0FBT0ksTUFBTSxLQUFLLFdBQVcsRUFBRTtJQUNqQyxPQUFPLElBQUk7RUFDYjtFQUNBLElBQU1DLEdBQUcsSUFBQUosSUFBQSxJQUFBQyxZQUFBLEdB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
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
import { fetchRecentContextsList } from '../RecentContexts/getRecentContexts';
|
|
4
|
+
import { buildRecentContextsPrefetchKey, DEFAULT_RECENT_CONTEXTS_PREFETCH_LIMIT, hasRecentContextsPrefetchInFlight, hasRecentContextsPrefetchReady, registerRecentContextsPrefetch } from './recentContextsPrefetchSession';
|
|
5
|
+
var hasMaiaChatFeatureAccess = function hasMaiaChatFeatureAccess() {
|
|
6
|
+
return typeof window !== 'undefined' && Boolean(window.MAIA_CHAT_AI_FEATURE_ACCESS);
|
|
7
|
+
};
|
|
8
|
+
export { takeRecentContextsPrefetch, resetRecentContextsPrefetchSession, buildRecentContextsPrefetchKey } from './recentContextsPrefetchSession';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Prefetch en hover/idle cuando MAIA_CHAT_AI_FEATURE_ACCESS está activo.
|
|
12
|
+
* getRecentContexts consume con takeRecentContextsPrefetch; al cerrar el modal se resetea.
|
|
13
|
+
*/
|
|
14
|
+
export var prefetchMaiaRecentContexts = /*#__PURE__*/function () {
|
|
15
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
16
|
+
var limit,
|
|
17
|
+
prefetchKey,
|
|
18
|
+
promise,
|
|
19
|
+
_args = arguments;
|
|
20
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
21
|
+
while (1) switch (_context.prev = _context.next) {
|
|
22
|
+
case 0:
|
|
23
|
+
limit = _args.length > 0 && _args[0] !== undefined ? _args[0] : DEFAULT_RECENT_CONTEXTS_PREFETCH_LIMIT;
|
|
24
|
+
if (hasMaiaChatFeatureAccess()) {
|
|
25
|
+
_context.next = 1;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
return _context.abrupt("return");
|
|
29
|
+
case 1:
|
|
30
|
+
prefetchKey = buildRecentContextsPrefetchKey({
|
|
31
|
+
limit: limit
|
|
32
|
+
});
|
|
33
|
+
if (!(hasRecentContextsPrefetchReady(prefetchKey) || hasRecentContextsPrefetchInFlight(prefetchKey))) {
|
|
34
|
+
_context.next = 2;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
return _context.abrupt("return");
|
|
38
|
+
case 2:
|
|
39
|
+
promise = fetchRecentContextsList({
|
|
40
|
+
limit: limit
|
|
41
|
+
});
|
|
42
|
+
_context.next = 3;
|
|
43
|
+
return registerRecentContextsPrefetch(prefetchKey, promise)["catch"](function () {
|
|
44
|
+
return undefined;
|
|
45
|
+
});
|
|
46
|
+
case 3:
|
|
47
|
+
case "end":
|
|
48
|
+
return _context.stop();
|
|
49
|
+
}
|
|
50
|
+
}, _callee);
|
|
51
|
+
}));
|
|
52
|
+
return function prefetchMaiaRecentContexts() {
|
|
53
|
+
return _ref.apply(this, arguments);
|
|
54
|
+
};
|
|
55
|
+
}();
|
|
56
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaFJlY2VudENvbnRleHRzTGlzdCIsImJ1aWxkUmVjZW50Q29udGV4dHNQcmVmZXRjaEtleSIsIkRFRkFVTFRfUkVDRU5UX0NPTlRFWFRTX1BSRUZFVENIX0xJTUlUIiwiaGFzUmVjZW50Q29udGV4dHNQcmVmZXRjaEluRmxpZ2h0IiwiaGFzUmVjZW50Q29udGV4dHNQcmVmZXRjaFJlYWR5IiwicmVnaXN0ZXJSZWNlbnRDb250ZXh0c1ByZWZldGNoIiwiaGFzTWFpYUNoYXRGZWF0dXJlQWNjZXNzIiwid2luZG93IiwiQm9vbGVhbiIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsInRha2VSZWNlbnRDb250ZXh0c1ByZWZldGNoIiwicmVzZXRSZWNlbnRDb250ZXh0c1ByZWZldGNoU2Vzc2lvbiIsInByZWZldGNoTWFpYVJlY2VudENvbnRleHRzIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwibGltaXQiLCJwcmVmZXRjaEtleSIsInByb21pc2UiLCJfYXJncyIsImFyZ3VtZW50cyIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiYWJydXB0Iiwic3RvcCIsImFwcGx5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvYm9vdHN0cmFwL3ByZWZldGNoTWFpYVJlY2VudENvbnRleHRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoUmVjZW50Q29udGV4dHNMaXN0IH0gZnJvbSAnLi4vUmVjZW50Q29udGV4dHMvZ2V0UmVjZW50Q29udGV4dHMnXG5pbXBvcnQge1xuICBidWlsZFJlY2VudENvbnRleHRzUHJlZmV0Y2hLZXksXG4gIERFRkFVTFRfUkVDRU5UX0NPTlRFWFRTX1BSRUZFVENIX0xJTUlULFxuICBoYXNSZWNlbnRDb250ZXh0c1ByZWZldGNoSW5GbGlnaHQsXG4gIGhhc1JlY2VudENvbnRleHRzUHJlZmV0Y2hSZWFkeSxcbiAgcmVnaXN0ZXJSZWNlbnRDb250ZXh0c1ByZWZldGNoLFxufSBmcm9tICcuL3JlY2VudENvbnRleHRzUHJlZmV0Y2hTZXNzaW9uJ1xuXG5jb25zdCBoYXNNYWlhQ2hhdEZlYXR1cmVBY2Nlc3MgPSAoKTogYm9vbGVhbiA9PlxuICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpXG5cbmV4cG9ydCB7XG4gIHRha2VSZWNlbnRDb250ZXh0c1ByZWZldGNoLFxuICByZXNldFJlY2VudENvbnRleHRzUHJlZmV0Y2hTZXNzaW9uLFxuICBidWlsZFJlY2VudENvbnRleHRzUHJlZmV0Y2hLZXksXG59IGZyb20gJy4vcmVjZW50Q29udGV4dHNQcmVmZXRjaFNlc3Npb24nXG5cbi8qKlxuICogUHJlZmV0Y2ggZW4gaG92ZXIvaWRsZSBjdWFuZG8gTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIGVzdMOhIGFjdGl2by5cbiAqIGdldFJlY2VudENvbnRleHRzIGNvbnN1bWUgY29uIHRha2VSZWNlbnRDb250ZXh0c1ByZWZldGNoOyBhbCBjZXJyYXIgZWwgbW9kYWwgc2UgcmVzZXRlYS5cbiAqL1xuZXhwb3J0IGNvbnN0IHByZWZldGNoTWFpYVJlY2VudENvbnRleHRzID0gYXN5bmMgKFxuICBsaW1pdDogbnVtYmVyID0gREVGQVVMVF9SRUNFTlRfQ09OVEVYVFNfUFJFRkVUQ0hfTElNSVRcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoIWhhc01haWFDaGF0RmVhdHVyZUFjY2VzcygpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBwcmVmZXRjaEtleSA9IGJ1aWxkUmVjZW50Q29udGV4dHNQcmVmZXRjaEtleSh7IGxpbWl0IH0pXG5cbiAgaWYgKGhhc1JlY2VudENvbnRleHRzUHJlZmV0Y2hSZWFkeShwcmVmZXRjaEtleSkgfHwgaGFzUmVjZW50Q29udGV4dHNQcmVmZXRjaEluRmxpZ2h0KHByZWZldGNoS2V5KSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgcHJvbWlzZSA9IGZldGNoUmVjZW50Q29udGV4dHNMaXN0KHsgbGltaXQgfSlcblxuICBhd2FpdCByZWdpc3RlclJlY2VudENvbnRleHRzUHJlZmV0Y2gocHJlZmV0Y2hLZXksIHByb21pc2UpLmNhdGNoKCgpID0+IHVuZGVmaW5lZClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSx1QkFBdUIsUUFBUSxxQ0FBcUM7QUFDN0UsU0FDRUMsOEJBQThCLEVBQzlCQyxzQ0FBc0MsRUFDdENDLGlDQUFpQyxFQUNqQ0MsOEJBQThCLEVBQzlCQyw4QkFBOEIsUUFDekIsaUNBQWlDO0FBRXhDLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUE7RUFBQSxPQUM1QixPQUFPQyxNQUFNLEtBQUssV0FBVyxJQUFJQyxPQUFPLENBQUNELE1BQU0sQ0FBQ0UsMkJBQTJCLENBQUM7QUFBQTtBQUU5RSxTQUNFQywwQkFBMEIsRUFDMUJDLGtDQUFrQyxFQUNsQ1YsOEJBQThCLFFBQ3pCLGlDQUFpQzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1XLDBCQUEwQjtFQUFBLElBQUFDLElBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQUE7SUFBQSxJQUFBQyxLQUFBO01BQUFDLFdBQUE7TUFBQUMsT0FBQTtNQUFBQyxLQUFBLEdBQUFDLFNBQUE7SUFBQSxPQUFBUCxtQkFBQSxDQUFBUSxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQ3hDUixLQUFhLEdBQUFHLEtBQUEsQ0FBQU0sTUFBQSxRQUFBTixLQUFBLFFBQUFPLFNBQUEsR0FBQVAsS0FBQSxNQUFHbkIsc0NBQXNDO1VBQUEsSUFFakRJLHdCQUF3QixDQUFDLENBQUM7WUFBQWtCLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBRixRQUFBLENBQUFLLE1BQUE7UUFBQTtVQUl6QlYsV0FBVyxHQUFHbEIsOEJBQThCLENBQUM7WUFBRWlCLEtBQUssRUFBTEE7VUFBTSxDQUFDLENBQUM7VUFBQSxNQUV6RGQsOEJBQThCLENBQUNlLFdBQVcsQ0FBQyxJQUFJaEIsaUNBQWlDLENBQUNnQixXQUFXLENBQUM7WUFBQUssUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFGLFFBQUEsQ0FBQUssTUFBQTtRQUFBO1VBSTNGVCxPQUFPLEdBQUdwQix1QkFBdUIsQ0FBQztZQUFFa0IsS0FBSyxFQUFMQTtVQUFNLENBQUMsQ0FBQztVQUFBTSxRQUFBLENBQUFFLElBQUE7VUFBQSxPQUU1Q3JCLDhCQUE4QixDQUFDYyxXQUFXLEVBQUVDLE9BQU8sQ0FBQyxTQUFNLENBQUM7WUFBQSxPQUFNUSxTQUFTO1VBQUEsRUFBQztRQUFBO1FBQUE7VUFBQSxPQUFBSixRQUFBLENBQUFNLElBQUE7TUFBQTtJQUFBLEdBQUFiLE9BQUE7RUFBQSxDQUNsRjtFQUFBLGdCQWhCWUwsMEJBQTBCQSxDQUFBO0lBQUEsT0FBQUMsSUFBQSxDQUFBa0IsS0FBQSxPQUFBVCxTQUFBO0VBQUE7QUFBQSxHQWdCdEMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
export var DEFAULT_RECENT_CONTEXTS_PREFETCH_LIMIT = 9;
|
|
4
|
+
var session = null;
|
|
5
|
+
export var buildRecentContextsPrefetchKey = function buildRecentContextsPrefetchKey(opts) {
|
|
6
|
+
var _opts$limit;
|
|
7
|
+
var limit = (_opts$limit = opts === null || opts === void 0 ? void 0 : opts.limit) !== null && _opts$limit !== void 0 ? _opts$limit : DEFAULT_RECENT_CONTEXTS_PREFETCH_LIMIT;
|
|
8
|
+
var agentId = (opts === null || opts === void 0 ? void 0 : opts.agentId) != null ? String(opts.agentId) : 'none';
|
|
9
|
+
return "".concat(limit, ":").concat(agentId);
|
|
10
|
+
};
|
|
11
|
+
export var registerRecentContextsPrefetch = function registerRecentContextsPrefetch(key, promise) {
|
|
12
|
+
session = {
|
|
13
|
+
key: key,
|
|
14
|
+
promise: promise
|
|
15
|
+
};
|
|
16
|
+
return promise.then(function (result) {
|
|
17
|
+
var _session;
|
|
18
|
+
if (((_session = session) === null || _session === void 0 ? void 0 : _session.key) === key) {
|
|
19
|
+
session = {
|
|
20
|
+
key: key,
|
|
21
|
+
result: result
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
})["catch"](function (error) {
|
|
26
|
+
var _session2;
|
|
27
|
+
if (((_session2 = session) === null || _session2 === void 0 ? void 0 : _session2.key) === key) {
|
|
28
|
+
session = null;
|
|
29
|
+
}
|
|
30
|
+
throw error;
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
export var hasRecentContextsPrefetchReady = function hasRecentContextsPrefetchReady(key) {
|
|
34
|
+
var _session3;
|
|
35
|
+
return ((_session3 = session) === null || _session3 === void 0 ? void 0 : _session3.key) === key && session.result != null;
|
|
36
|
+
};
|
|
37
|
+
export var hasRecentContextsPrefetchInFlight = function hasRecentContextsPrefetchInFlight(key) {
|
|
38
|
+
var _session4;
|
|
39
|
+
return ((_session4 = session) === null || _session4 === void 0 ? void 0 : _session4.key) === key && session.promise != null && session.result == null;
|
|
40
|
+
};
|
|
41
|
+
export var takeRecentContextsPrefetch = /*#__PURE__*/function () {
|
|
42
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(key) {
|
|
43
|
+
var _session5, result, _t;
|
|
44
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
45
|
+
while (1) switch (_context.prev = _context.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
if (!(!session || session.key !== key)) {
|
|
48
|
+
_context.next = 1;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
return _context.abrupt("return", null);
|
|
52
|
+
case 1:
|
|
53
|
+
_context.prev = 1;
|
|
54
|
+
if (!(session.promise && !session.result)) {
|
|
55
|
+
_context.next = 2;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
_context.next = 2;
|
|
59
|
+
return session.promise;
|
|
60
|
+
case 2:
|
|
61
|
+
if (!(!session || session.key !== key || !session.result)) {
|
|
62
|
+
_context.next = 3;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
return _context.abrupt("return", null);
|
|
66
|
+
case 3:
|
|
67
|
+
_session5 = session, result = _session5.result;
|
|
68
|
+
session = null;
|
|
69
|
+
return _context.abrupt("return", result);
|
|
70
|
+
case 4:
|
|
71
|
+
_context.prev = 4;
|
|
72
|
+
_t = _context["catch"](1);
|
|
73
|
+
session = null;
|
|
74
|
+
return _context.abrupt("return", null);
|
|
75
|
+
case 5:
|
|
76
|
+
case "end":
|
|
77
|
+
return _context.stop();
|
|
78
|
+
}
|
|
79
|
+
}, _callee, null, [[1, 4]]);
|
|
80
|
+
}));
|
|
81
|
+
return function takeRecentContextsPrefetch(_x) {
|
|
82
|
+
return _ref.apply(this, arguments);
|
|
83
|
+
};
|
|
84
|
+
}();
|
|
85
|
+
export var resetRecentContextsPrefetchSession = function resetRecentContextsPrefetchSession() {
|
|
86
|
+
session = null;
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1JFQ0VOVF9DT05URVhUU19QUkVGRVRDSF9MSU1JVCIsInNlc3Npb24iLCJidWlsZFJlY2VudENvbnRleHRzUHJlZmV0Y2hLZXkiLCJvcHRzIiwiX29wdHMkbGltaXQiLCJsaW1pdCIsImFnZW50SWQiLCJTdHJpbmciLCJjb25jYXQiLCJyZWdpc3RlclJlY2VudENvbnRleHRzUHJlZmV0Y2giLCJrZXkiLCJwcm9taXNlIiwidGhlbiIsInJlc3VsdCIsIl9zZXNzaW9uIiwiZXJyb3IiLCJfc2Vzc2lvbjIiLCJoYXNSZWNlbnRDb250ZXh0c1ByZWZldGNoUmVhZHkiLCJfc2Vzc2lvbjMiLCJoYXNSZWNlbnRDb250ZXh0c1ByZWZldGNoSW5GbGlnaHQiLCJfc2Vzc2lvbjQiLCJ0YWtlUmVjZW50Q29udGV4dHNQcmVmZXRjaCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9zZXNzaW9uNSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsInJlc2V0UmVjZW50Q29udGV4dHNQcmVmZXRjaFNlc3Npb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9ib290c3RyYXAvcmVjZW50Q29udGV4dHNQcmVmZXRjaFNlc3Npb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZWNlbnRDb250ZXh0SXRlbSB9IGZyb20gJy4uL1JlY2VudENvbnRleHRzL2dldFJlY2VudENvbnRleHRzJ1xuaW1wb3J0IHR5cGUgeyBHZXRSZWNlbnRDb250ZXh0c09wdGlvbnMgfSBmcm9tICcuLi9SZWNlbnRDb250ZXh0cy9nZXRSZWNlbnRDb250ZXh0cydcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVDRU5UX0NPTlRFWFRTX1BSRUZFVENIX0xJTUlUID0gOVxuXG50eXBlIFJlY2VudENvbnRleHRzUHJlZmV0Y2hTZXNzaW9uID0ge1xuICBrZXk6IHN0cmluZ1xuICByZXN1bHQ/OiBSZWNlbnRDb250ZXh0SXRlbVtdXG4gIHByb21pc2U/OiBQcm9taXNlPFJlY2VudENvbnRleHRJdGVtW10+XG59XG5cbmxldCBzZXNzaW9uOiBSZWNlbnRDb250ZXh0c1ByZWZldGNoU2Vzc2lvbiB8IG51bGwgPSBudWxsXG5cbmV4cG9ydCBjb25zdCBidWlsZFJlY2VudENvbnRleHRzUHJlZmV0Y2hLZXkgPSAob3B0cz86IEdldFJlY2VudENvbnRleHRzT3B0aW9ucyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGxpbWl0ID0gb3B0cz8ubGltaXQgPz8gREVGQVVMVF9SRUNFTlRfQ09OVEVYVFNfUFJFRkVUQ0hfTElNSVRcbiAgY29uc3QgYWdlbnRJZCA9IG9wdHM/LmFnZW50SWQgIT0gbnVsbCA/IFN0cmluZyhvcHRzLmFnZW50SWQpIDogJ25vbmUnXG4gIHJldHVybiBgJHtsaW1pdH06JHthZ2VudElkfWBcbn1cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUmVjZW50Q29udGV4dHNQcmVmZXRjaCA9IChcbiAga2V5OiBzdHJpbmcsXG4gIHByb21pc2U6IFByb21pc2U8UmVjZW50Q29udGV4dEl0ZW1bXT5cbik6IFByb21pc2U8UmVjZW50Q29udGV4dEl0ZW1bXT4gPT4ge1xuICBzZXNzaW9uID0geyBrZXksIHByb21pc2UgfVxuXG4gIHJldHVybiBwcm9taXNlXG4gICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGlmIChzZXNzaW9uPy5rZXkgPT09IGtleSkge1xuICAgICAgICBzZXNzaW9uID0geyBrZXksIHJlc3VsdCB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaWYgKHNlc3Npb24/LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIHNlc3Npb24gPSBudWxsXG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvclxuICAgIH0pXG59XG5cbmV4cG9ydCBjb25zdCBoYXNSZWNlbnRDb250ZXh0c1ByZWZldGNoUmVhZHkgPSAoa2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHNlc3Npb24/LmtleSA9PT0ga2V5ICYmIHNlc3Npb24ucmVzdWx0ICE9IG51bGxcblxuZXhwb3J0IGNvbnN0IGhhc1JlY2VudENvbnRleHRzUHJlZmV0Y2hJbkZsaWdodCA9IChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgc2Vzc2lvbj8ua2V5ID09PSBrZXkgJiYgc2Vzc2lvbi5wcm9taXNlICE9IG51bGwgJiYgc2Vzc2lvbi5yZXN1bHQgPT0gbnVsbFxuXG5leHBvcnQgY29uc3QgdGFrZVJlY2VudENvbnRleHRzUHJlZmV0Y2ggPSBhc3luYyAoa2V5OiBzdHJpbmcpOiBQcm9taXNlPFJlY2VudENvbnRleHRJdGVtW10gfCBudWxsPiA9PiB7XG4gIGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLmtleSAhPT0ga2V5KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKHNlc3Npb24ucHJvbWlzZSAmJiAhc2Vzc2lvbi5yZXN1bHQpIHtcbiAgICAgIGF3YWl0IHNlc3Npb24ucHJvbWlzZVxuICAgIH1cblxuICAgIGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLmtleSAhPT0ga2V5IHx8ICFzZXNzaW9uLnJlc3VsdCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCB7IHJlc3VsdCB9ID0gc2Vzc2lvblxuICAgIHNlc3Npb24gPSBudWxsXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9IGNhdGNoIHtcbiAgICBzZXNzaW9uID0gbnVsbFxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlc2V0UmVjZW50Q29udGV4dHNQcmVmZXRjaFNlc3Npb24gPSAoKTogdm9pZCA9PiB7XG4gIHNlc3Npb24gPSBudWxsXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBR0EsT0FBTyxJ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
|