@projectcor/maia-components 2.11.100-4 → 2.11.100-6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +112 -31
- package/lib/components/molecules/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.js +52 -50
- package/lib/hooks/useChatManager/useChatManager.js +37 -22
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +3 -1
- package/lib/utils/streamExecutionSteps.js +22 -5
- package/lib/utils/streamTimeline.js +22 -6
- package/package.json +1 -1
|
@@ -87,6 +87,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
87
87
|
streamTimelineStore.clear();
|
|
88
88
|
setStreamActivity(null);
|
|
89
89
|
setLoadingMessage(null);
|
|
90
|
+
setIsWriting(false);
|
|
90
91
|
}, []);
|
|
91
92
|
var beginStreamTimelineTurn = useCallback(function (turnId) {
|
|
92
93
|
streamDebugLog('orchestrator', 'beginStreamTimelineTurn', {
|
|
@@ -193,6 +194,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
193
194
|
}
|
|
194
195
|
}, [applyStreamActivity, hitlExecutionContextRef, t]);
|
|
195
196
|
var handleStreamWritingStarted = useCallback(function () {
|
|
197
|
+
setIsWriting(true);
|
|
196
198
|
syncStreamTimelineContent(accumulatedContentRef.current);
|
|
197
199
|
applyStreamActivityPreservingSteps(getWritingStreamActivity(t));
|
|
198
200
|
}, [applyStreamActivityPreservingSteps, syncStreamTimelineContent, t]);
|
|
@@ -731,4 +733,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
731
733
|
resetStreamExecutionTrace: resetStreamExecutionTrace
|
|
732
734
|
};
|
|
733
735
|
};
|
|
734
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzIiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lIiwiYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzdHJlYW1UaW1lbGluZVN0b3JlIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInN0cmVhbURlYnVnQWN0aXZpdHkiLCJzdHJlYW1EZWJ1Z0FwcHJvdmFsIiwic3RyZWFtRGVidWdMb2ciLCJzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAiLCJzdHJlYW1EZWJ1Z05vZGUiLCJzdHJlYW1EZWJ1Z1NzZSIsInN1bW1hcml6ZUhpdGxDb250ZXh0Iiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwic3RyZWFtQWN0aXZpdHlSZWYiLCJleGVjdXRpb25TdGVwc1JlZiIsImFjY3VtdWxhdGVkQ29udGVudFJlZiIsIm9uU3RyZWFtVXBkYXRlUmVmIiwib25GaW5pc2hTdHJlYW1SZWYiLCJvblN0YXJ0V3JpdGluZ1JlZiIsIm9uU3RvcFJlZiIsIm9uRXJyb3JSZWYiLCJvbkFwcHJvdmFsUmVxdWlyZWRSZWYiLCJjdXJyZW50IiwiY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUiLCJwcmV2aW91c1R1cm5JZCIsImdldFNuYXBzaG90IiwidHVybklkIiwiZXhlY3V0aW9uU3RlcENvdW50IiwibGVuZ3RoIiwiY2xlYXIiLCJiZWdpblN0cmVhbVRpbWVsaW5lVHVybiIsInJlcGxhY2UiLCJzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50IiwiYWNjdW11bGF0ZWRUZXh0IiwibmV4dCIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJwcmVzZXJ2ZWRTdGVwcyIsImFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMiLCJzdGVwcyIsInJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UiLCJmaW5hbGl6ZVN0cmVhbUV4ZWN1dGlvblRyYWNlIiwiX2FjdGl2ZVN0ZXAkbWVzc2FnZSIsImNvbXBsZXRlZFN0ZXBzIiwiYWN0aXZlU3RlcCIsImhhbmRsZVN0cmVhbU5vZGVFdmVudCIsInBheWxvYWQiLCJub2RlIiwic2tpcHBlZCIsInRocmVhZElkIiwidGhyZWFkX2lkIiwidW5kZWZpbmVkIiwiaGl0bENvbnRleHQiLCJ0aW1lbGluZU5leHQiLCJsYXN0RXhlY3V0aW9uIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2VnbWVudHMiLCJyZXZlcnNlIiwiZmluZCIsInNlZ21lbnQiLCJ0eXBlIiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInNjb3BlIiwic291cmNlIiwibm9kZVBheWxvYWQiLCJhY3Rpdml0eU1lc3NhZ2UiLCJ1aVN1cmZhY2VzIiwiaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJfcHJldiRleGVjdXRpb25TdGVwcyIsImFkdmFuY2VkIiwibmV4dEluZGV4IiwibWVyZ2VkQWN0aXZpdHkiLCJfb2JqZWN0U3ByZWFkIiwiZXhlY3V0aW9uU3RlcHMiLCJjbGVhckludGVydmFsIiwiaGFuZGxlU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwiX29uRXJyb3JSZWYkY3VycmVudCIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwicGVuZGluZ0NvbnRlbnQiLCJ0aHJvdHRsZVRpbWVyIiwic3RyZWFtU2V0dGxlZCIsImVtaXRUaHJvdHRsZWQiLCJmbHVzaFBlbmRpbmciLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJoYXNTdGFydGVkV3JpdGluZyIsImVuc3VyZVdyaXRpbmdTdGFydGVkIiwiYXBwbHlTdHJlYW1DaHVuayIsImFwcGx5U3RyZWFtQ29tcGxldGUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGluZSIsIl9saW5lJHNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJkYXRhU3RyIiwiX2RhdGEiLCJjaHVuayIsIl9jaHVuayIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsImlzTWFudWFsQXBwcm92YWwiLCJtYW51YWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJjb250ZW50Iiwic2V0VGltZW91dCIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjbGVhclRpbWVvdXQiLCJfb25TdHJlYW1VcGRhdGVSZWYkY3UyIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfb25TdGFydFdyaXRpbmdSZWYkY3UiLCJhY2N1bXVsYXRlZExlbmd0aCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JHJlc29sdmVkIiwiX29uRmluaXNoU3RyZWFtUmVmJGN1IiwiZmluYWxDb250ZW50IiwiZmluYWxDb250ZW50TGVuZ3RoIiwidGltZWxpbmUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJKU09OIiwicGFyc2UiLCJ0b29sX25hbWUiLCJtZXNzYWdlUHJldmlldyIsInNsaWNlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdUb29scyIsInBlbmRpbmdfYWN0aW9ucyIsIm1hcCIsImEiLCJ3aWxsQ2xlYXJMb2FkaW5nU3RhdGUiLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImNvbnRleHREYXRhIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcywgUmVzb2x2ZWRDb250ZXh0IH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtRXhlY3V0aW9uU3RlcCwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQge1xuICBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzLFxuICBmaW5hbGl6ZUV4ZWN1dGlvblN0ZXBzRm9yV3JpdGluZyxcbiAgZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcCxcbiAgbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyxcbiAgcHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSxcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSxcbiAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUsXG4gIGZpbmFsaXplU3RyZWFtVGltZWxpbmUsXG4gIHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1UaW1lbGluZS9zdHJlYW1UaW1lbGluZVN0b3JlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7XG4gIHN0cmVhbURlYnVnQWN0aXZpdHksXG4gIHN0cmVhbURlYnVnQXBwcm92YWwsXG4gIHN0cmVhbURlYnVnTG9nLFxuICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAsXG4gIHN0cmVhbURlYnVnTm9kZSxcbiAgc3RyZWFtRGVidWdTc2UsXG4gIHN1bW1hcml6ZUhpdGxDb250ZXh0LFxuICBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcblxudHlwZSBTdWJhZ2VudFJhdyA9IHsgbmFtZT86IHN0cmluZzsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfSB8IG51bGwgfCB1bmRlZmluZWRcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxuICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbn06IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlLCBzZXRMb2FkaW5nTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc3RyZWFtQWN0aXZpdHksIHNldFN0cmVhbUFjdGl2aXR5XSA9IHVzZVN0YXRlPFN0cmVhbUFjdGl2aXR5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmPEFib3J0Q29udHJvbGxlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzU3RvcHBlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc3RyZWFtQWN0aXZpdHlSZWYgPSB1c2VSZWY8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBleGVjdXRpb25TdGVwc1JlZiA9IHVzZVJlZjxTdHJlYW1FeGVjdXRpb25TdGVwW10+KFtdKVxuICBjb25zdCBhY2N1bXVsYXRlZENvbnRlbnRSZWYgPSB1c2VSZWYoJycpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdHJlYW1EZWJ1Z0xvZygnb3JjaGVzdHJhdG9yJywgJ2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlJywge1xuICAgICAgcHJldmlvdXNUdXJuSWQ6IHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKS50dXJuSWQsXG4gICAgICBleGVjdXRpb25TdGVwQ291bnQ6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gJydcbiAgICByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLmNsZWFyKClcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGJlZ2luU3RyZWFtVGltZWxpbmVUdXJuID0gdXNlQ2FsbGJhY2soKHR1cm5JZDogc3RyaW5nKSA9PiB7XG4gICAgc3RyZWFtRGVidWdMb2coJ29yY2hlc3RyYXRvcicsICdiZWdpblN0cmVhbVRpbWVsaW5lVHVybicsIHsgdHVybklkIH0pXG4gICAgYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQgPSAnJ1xuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIoKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShzdGFydFN0cmVhbVRpbWVsaW5lVHVybih0dXJuSWQpKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50ID0gdXNlQ2FsbGJhY2soKGFjY3VtdWxhdGVkVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IGFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lKHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSwgYWNjdW11bGF0ZWRUZXh0KVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShuZXh0KVxuICB9LCBbXSlcblxuICBjb25zdCBhcHBseVN0cmVhbUFjdGl2aXR5ID0gdXNlQ2FsbGJhY2soKGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSkgPT4ge1xuICAgIGNvbnN0IHByZXYgPSBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50XG4gICAgaWYgKHByZXY/LnBoYXNlID09PSBhY3Rpdml0eS5waGFzZSAmJiBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKGFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChwcmV2Py5waGFzZSAhPT0gYWN0aXZpdHkucGhhc2UpIHtcbiAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgfVxuICAgIHN0cmVhbUFjdGl2aXR5UmVmLmN1cnJlbnQgPSBhY3Rpdml0eVxuICAgIHNldFN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIHNldExvYWRpbmdNZXNzYWdlKGFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgc3RyZWFtRGVidWdBY3Rpdml0eSgnb3JjaGVzdHJhdG9yJywgJ2FwcGx5U3RyZWFtQWN0aXZpdHknLCBhY3Rpdml0eSwge1xuICAgICAgcHJlc2VydmVkU3RlcHM6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5KSA9PiB7XG4gICAgICBjb25zdCBzdGVwcyA9IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkobWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhhY3Rpdml0eSwgc3RlcHMpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpXG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudCA9IFtdXG4gICAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcigpXG4gIH0sIFtdKVxuXG4gIC8qKiBNYXJjYSBlbCByYXN0cm8gY29tbyBjb21wbGV0YWRvIHkgbG8gbWFudGllbmUgdmlzaWJsZSAobm8gbGltcGlhIGhhc3RhIGVsIHByw7N4aW1vIHR1cm5vKS4gKi9cbiAgY29uc3QgZmluYWxpemVTdHJlYW1FeGVjdXRpb25UcmFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjb21wbGV0ZWRTdGVwcyA9IGNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMoZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudClcbiAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gY29tcGxldGVkU3RlcHNcblxuICAgIGlmIChjb21wbGV0ZWRTdGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZVN0ZXAgPSBnZXRBY3RpdmVFeGVjdXRpb25TdGVwKGNvbXBsZXRlZFN0ZXBzKVxuICAgIGNvbnN0IGFjdGl2aXR5ID0gbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhcbiAgICAgIHtcbiAgICAgICAgcGhhc2U6ICd3cml0aW5nJyxcbiAgICAgICAgbWVzc2FnZTogYWN0aXZlU3RlcD8ubWVzc2FnZSA/PyBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkubWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZWRTdGVwc1xuICAgIClcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gYWN0aXZpdHlcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbU5vZGVFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIChwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLCBhY2N1bXVsYXRlZFRleHQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChwYXlsb2FkLm5vZGUgPT09ICdhZ2VudF90cmFuc2ZlcicpIHtcbiAgICAgICAgc3RyZWFtRGVidWdOb2RlKCdvcmNoZXN0cmF0b3InLCBwYXlsb2FkLCB7IHNraXBwZWQ6ICdhZ2VudF90cmFuc2ZlcicgfSlcbiAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICghcGF5bG9hZC5tZXNzYWdlIHx8IHR5cGVvZiBwYXlsb2FkLm1lc3NhZ2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwgeyBza2lwcGVkOiAnbWlzc2luZ19tZXNzYWdlJyB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgY29uc3QgdGhyZWFkSWQgPSB0eXBlb2YgcGF5bG9hZC50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gcGF5bG9hZC50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0ID0gaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnRcbiAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwge1xuICAgICAgICB0aHJlYWRJZCxcbiAgICAgICAgaGl0bENvbnRleHQ6IGhpdGxDb250ZXh0ID8gc3VtbWFyaXplSGl0bENvbnRleHQoaGl0bENvbnRleHQpIDogbnVsbCxcbiAgICAgIH0pXG4gICAgICBjb25zdCB0aW1lbGluZU5leHQgPSBhcHBlbmROb2RlVG9TdHJlYW1UaW1lbGluZShcbiAgICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICBhY2N1bXVsYXRlZFRleHQgPz8gYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQsXG4gICAgICAgIHQsXG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICB0aHJlYWRJZFxuICAgICAgKVxuICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKHRpbWVsaW5lTmV4dClcblxuICAgICAgY29uc3QgbGFzdEV4ZWN1dGlvbiA9IFsuLi50aW1lbGluZU5leHQuc2VnbWVudHNdLnJldmVyc2UoKS5maW5kKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnZXhlY3V0aW9uJylcbiAgICAgIGlmIChsYXN0RXhlY3V0aW9uPy50eXBlID09PSAnZXhlY3V0aW9uJykge1xuICAgICAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gbGFzdEV4ZWN1dGlvbi5zdGVwc1xuICAgICAgICBjb25zdCBhY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgIHBheWxvYWQubWVzc2FnZSxcbiAgICAgICAgICB0LFxuICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgIHRocmVhZElkLFxuICAgICAgICAgIHBheWxvYWQubm9kZSA9PT0gJ3Jlc3VtaW5nJyA/IHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9IDogdW5kZWZpbmVkXG4gICAgICAgIClcbiAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzKGFjdGl2aXR5LCBsYXN0RXhlY3V0aW9uLnN0ZXBzKSlcbiAgICAgICAgc3RyZWFtRGVidWdBY3Rpdml0eSgnb3JjaGVzdHJhdG9yJywgJ25vZGU6YWN0aXZpdHknLCBhY3Rpdml0eSwge1xuICAgICAgICAgIGV4ZWN1dGlvblN0ZXBDb3VudDogbGFzdEV4ZWN1dGlvbi5zdGVwcy5sZW5ndGgsXG4gICAgICAgIH0pXG4gICAgICAgIHN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCh7XG4gICAgICAgICAgc2NvcGU6ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgIHNvdXJjZTogJ25vZGUnLFxuICAgICAgICAgIG5vZGVQYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICAgIGFjdGl2aXR5TWVzc2FnZTogYWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICBoaXRsQ29udGV4dCxcbiAgICAgICAgICB1aVN1cmZhY2VzOiBbJ3N0cmVhbUFjdGl2aXR5JywgJ3N0cmVhbVRpbWVsaW5lJ10sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eSwgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50KGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50KVxuICAgIGFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICB9LCBbYXBwbHlTdHJlYW1BY3Rpdml0eVByZXNlcnZpbmdTdGVwcywgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCwgdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gc3RyZWFtQWN0aXZpdHlcbiAgfSwgW3N0cmVhbUFjdGl2aXR5XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNMb2FkaW5nIHx8IGlzV3JpdGluZyB8fCAhc3RyZWFtQWN0aXZpdHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKCFjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKHN0cmVhbUFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3QgcHJldiA9IHN0cmVhbUFjdGl2aXR5UmVmLmN1cnJlbnRcbiAgICAgIGlmICghcHJldiB8fCAhY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShwcmV2LnBoYXNlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICghY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LnBoYXNlLCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkdmFuY2VkID0gYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50LCB0KVxuICAgICAgaWYgKCFhZHZhbmNlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSBhZHZhbmNlZC5uZXh0SW5kZXhcbiAgICAgIGNvbnN0IG1lcmdlZEFjdGl2aXR5ID0ge1xuICAgICAgICAuLi5hZHZhbmNlZC5hY3Rpdml0eSxcbiAgICAgICAgLi4uKHByZXYuZXhlY3V0aW9uU3RlcHM/Lmxlbmd0aCA/IHsgZXhlY3V0aW9uU3RlcHM6IHByZXYuZXhlY3V0aW9uU3RlcHMgfSA6IHt9KSxcbiAgICAgIH1cbiAgICAgIHN0cmVhbUFjdGl2aXR5UmVmLmN1cnJlbnQgPSBtZXJnZWRBY3Rpdml0eVxuICAgICAgc2V0U3RyZWFtQWN0aXZpdHkobWVyZ2VkQWN0aXZpdHkpXG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShtZXJnZWRBY3Rpdml0eS5tZXNzYWdlKVxuICAgIH0sIEFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpXG4gIH0sIFtpc0xvYWRpbmcsIGlzV3JpdGluZywgc3RyZWFtQWN0aXZpdHk/LnBoYXNlLCB0XSlcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyBUaW1lLXRocm90dGxlOiBldml0YSBlbWl0aXIgb25TdHJlYW1VcGRhdGUgbcOhcyBkZSB1bmEgdmV6IGNhZGEgfjE2bXMuXG4gICAgICAvLyBVc2Ftb3MgdGltZXIgcGFyYSBxdWUgZWwgc3RyZWFtIHNpZ2EgcGludGFuZG8gYXVucXVlIHJBRiBlc3TDqSB0aHJvdHRsZWFkby5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHRocm90dGxlVGltZXI6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICBsZXQgc3RyZWFtU2V0dGxlZCA9IGZhbHNlXG4gICAgICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHRocm90dGxlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICAgICAgICBpZiAoc3RyZWFtU2V0dGxlZCkge1xuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTYpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkge1xuICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICAgICAgICBpZiAoIXJlYWRlcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgICAgICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgICAgIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgICAgICBsZXQgaGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZVxuXG4gICAgICAgIGNvbnN0IGVuc3VyZVdyaXRpbmdTdGFydGVkID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChoYXNTdGFydGVkV3JpdGluZykgcmV0dXJuXG4gICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgICAgICAgc3RyZWFtRGVidWdTc2UoJ2Fza01haWEnLCAnd3JpdGluZzpzdGFydGVkJywge1xuICAgICAgICAgICAgYWNjdW11bGF0ZWRMZW5ndGg6IGFjY3VtdWxhdGVkQ29udGVudC5sZW5ndGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcodHJ1ZSlcbiAgICAgICAgICBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudD8uKClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcGx5U3RyZWFtQ2h1bmsgPSAoY2h1bms6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmICghY2h1bmspIHJldHVyblxuICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjaHVuaylcbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnRSZWYuY3VycmVudCA9IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIHN5bmNTdHJlYW1UaW1lbGluZUNvbnRlbnQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1Db21wbGV0ZSA9IChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICAgIGlmIChzdHJlYW1TZXR0bGVkKSByZXR1cm5cbiAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuXG4gICAgICAgICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdhc2tNYWlhJywgJ2NvbXBsZXRlJywge1xuICAgICAgICAgICAgZmluYWxDb250ZW50TGVuZ3RoOiBmaW5hbENvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgICAgdGltZWxpbmU6IHN1bW1hcml6ZVRpbWVsaW5lU25hcHNob3Qoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gZmluYWxDb250ZW50XG4gICAgICAgICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudChmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKGZpbmFsaXplU3RyZWFtVGltZWxpbmUoc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpKSlcbiAgICAgICAgICBjb25zdCBzb3VyY2VzID0gcGF5bG9hZC5zb3VyY2VzIHx8IG51bGxcbiAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAocGF5bG9hZC5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuYXR0YWNobWVudHMpID8gcGF5bG9hZC5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgICBsZXQgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3RfcmVwbHkpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXVxuICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3Rpb25zKSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBwYXlsb2FkLmFnZW50X2lkID8/IHBheWxvYWQuYWdlbnRJZFxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPVxuICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICBjb25zdCBzdWJhZ2VudFJhdyA9IHBheWxvYWQuc3ViYWdlbnQgYXMgU3ViYWdlbnRSYXdcbiAgICAgICAgICBjb25zdCByZXNvbHZlZENvbnRleHQgPSBzdWJhZ2VudFJhdz8ucmVzb2x2ZWRfY29udGV4dCA/PyBudWxsXG4gICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICBzZXREYXRhKGZpbmFsQ29udGVudClcbiAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgICAgICAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudD8uKFxuICAgICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkLFxuICAgICAgICAgICAgcmVzb2x2ZWRDb250ZXh0XG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgICAgICBpZiAoc3RyZWFtU2V0dGxlZCAmJiBldmVudFR5cGUgIT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgc3RyZWFtRGVidWdTc2UoJ2Fza01haWEnLCBldmVudFR5cGUsIHtcbiAgICAgICAgICAgICAgICBoYXNTdGFydGVkV3JpdGluZyxcbiAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZExlbmd0aDogYWNjdW11bGF0ZWRDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICAgICAgICAuLi4oZXZlbnRUeXBlID09PSAnbm9kZSdcbiAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIG5vZGU6IGRhdGEubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICB0b29sX25hbWU6IGRhdGEudG9vbF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VQcmV2aWV3OiB0eXBlb2YgZGF0YS5tZXNzYWdlID09PSAnc3RyaW5nJyA/IGRhdGEubWVzc2FnZS5zbGljZSgwLCA4MCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgIC4uLihldmVudFR5cGUgPT09ICdhcHByb3ZhbF9yZXF1aXJlZCdcbiAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQ6IGRhdGEubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdUb29sczogQXJyYXkuaXNBcnJheShkYXRhLnBlbmRpbmdfYWN0aW9ucylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5wZW5kaW5nX2FjdGlvbnMubWFwKChhOiB7IHRvb2xfbmFtZT86IHN0cmluZyB9KSA9PiBhLnRvb2xfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RoaW5raW5nJzpcbiAgICAgICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5UHJlc2VydmluZ1N0ZXBzKHtcbiAgICAgICAgICAgICAgICAgICAgICBwaGFzZTogJ3RoaW5raW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlKDAsIHQpLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzoge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgICAgICBlbnN1cmVXcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50Jzoge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgICAgICBlbnN1cmVXcml0aW5nU3RhcnRlZCgpXG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICAgICAgaGFuZGxlU3RyZWFtTm9kZUV2ZW50KGRhdGEgYXMgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgICAgICAvLyBNYW51YWwgYXBwcm92YWw6IGVsIFNTRSBzaWd1ZSBjb24gbm9kZS90b2tlbi9jb21wbGV0ZSAoeSBwdWVkZVxuICAgICAgICAgICAgICAgICAgLy8gZW5jYWRlbmFyIG3DoXMgYXBwcm92YWxfcmVxdWlyZWQpLiBTb2xvIGVsIGFwcHJvdmFsIFwicGF1c2Fkb1wiXG4gICAgICAgICAgICAgICAgICAvLyAoYm90w7NuKSBlcyB0ZXJtaW5hbCBwYXJhIGVzdGUgc3RyZWFtLlxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWFudWFsQXBwcm92YWwgPSBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgc3RyZWFtRGVidWdBcHByb3ZhbCgnb3JjaGVzdHJhdG9yJywgJ2FwcHJvdmFsX3JlcXVpcmVkJywgZGF0YSwge1xuICAgICAgICAgICAgICAgICAgICBpc01hbnVhbEFwcHJvdmFsLFxuICAgICAgICAgICAgICAgICAgICB3aWxsQ2xlYXJMb2FkaW5nU3RhdGU6ICFpc01hbnVhbEFwcHJvdmFsLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGlmIChpc01hbnVhbEFwcHJvdmFsICYmIEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpICYmIGRhdGEucGVuZGluZ19hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYW51YWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KG1hbnVhbEFjdGl2aXR5KVxuICAgICAgICAgICAgICAgICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICAgICAgICAgICAgICAgIHNjb3BlOiAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICdpbml0aWFsQWN0aXZpdHknLFxuICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5TWVzc2FnZTogbWFudWFsQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICBoaXRsQ29udGV4dDogaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgdWlTdXJmYWNlczogWydzdHJlYW1BY3Rpdml0eScsICdhcHByb3ZhbEJveCddLFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gaGF5IGVycm9yXG4gICAgICAgICAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIGlmICghc3RyZWFtU2V0dGxlZCkge1xuICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eVByZXNlcnZpbmdTdGVwcyxcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLFxuICAgICAgaGFuZGxlU3RyZWFtTm9kZUV2ZW50LFxuICAgICAgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQsXG4gICAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50LFxuICAgICAgdCxcbiAgICBdXG4gIClcblxuICBjb25zdCBhc2tNYWlhID0gYXN5bmMgKHtcbiAgICBtZXNzYWdlLFxuICAgIGhpc3RvcnksXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjb21wYW55SWQsXG4gICAgY2hhdElkLFxuICAgIG1lc3NhZ2VJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGZlZUlkLFxuICAgIGFnZW50TmFtZSxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICB0YXNrSWQsXG4gICAgdGFza05hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgZnVhSWQsXG4gICAgc2NJZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgICBhZ2VudFR5cGUsXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gICAgY29udGV4dERhdGEsXG4gIH06IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gICAgcHJvamVjdElkOiBudW1iZXIgfCBudWxsXG4gICAgbGFuZzogc3RyaW5nXG4gICAgdXNlcklkOiBzdHJpbmdcbiAgICBmaXJzdE5hbWU/OiBzdHJpbmdcbiAgICBsYXN0TmFtZT86IHN0cmluZ1xuICAgIGNvbXBhbnlJZDogc3RyaW5nXG4gICAgY2hhdElkOiBzdHJpbmdcbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGNsaWVudElkPzogbnVtYmVyXG4gICAgY2xpZW50TmFtZT86IHN0cmluZ1xuICAgIGZlZUlkPzogbnVtYmVyXG4gICAgYWdlbnROYW1lOiBzdHJpbmdcbiAgICBhZ2VudElkOiBzdHJpbmdcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gICAgcHJvamVjdE5hbWU/OiBzdHJpbmdcbiAgICB0YXNrSWQ/OiBudW1iZXJcbiAgICB0YXNrTmFtZT86IHN0cmluZ1xuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5XG4gICAgYWdlbnRUeXBlPzogQWdlbnRUeXBlXG4gICAgY29udGV4dE1lc3NhZ2U/OiBDb250ZXh0TWVzc2FnZVxuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4obWVzc2FnZUlkKVxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHM/Lmxlbmd0aCksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IGF0dGFjaG1lbnRzPy5sZW5ndGggPz8gMCxcbiAgICAgIH0pXG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnb3JjaGVzdHJhdG9yJywgJ2Fza01haWE6c3RhcnQnLCB7IG1lc3NhZ2VJZCwgY2hhdElkIH0pXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRUeXBlICE9IG51bGwgPyB7IGFnZW50VHlwZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaSBmdWUgdW4gYWJvcnQgaW50ZW5jaW9uYWwgKHN0b3AgbWFudWFsIG8gY2FtYmlvIGRlIGNoYXQpLCBubyBkaXNwYXJhciBvbkVycm9yXG4gICAgICAvLyBwb3JxdWUgZXNvIGluc2VydGEgdW4gXCJtZW5zYWplIGRlIGVycm9yXCIgZW4gZWwgY2hhdCBhbCBxdWUgYWNhYmFtb3MgZGUgbmF2ZWdhci5cbiAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICBvblN0b3BSZWYuY3VycmVudD8uKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLyoqXG4gICAqIEFib3J0YSBlbCBzdHJlYW0gZW4gY3Vyc28gKHNpIGV4aXN0ZSkgc2luIGRpc3BhcmFyIGBvblN0b3BgLlxuICAgKiDDmnNlbG8gZW4gY2Fzb3MgZG9uZGUgbm8gcXVlcmVtb3MgYWdyZWdhciBlbCBtZW5zYWplIGRlIFwiY2FuY2VsYWRvXCJcbiAgICogKHBvciBlamVtcGxvLCBhbCBjYW1iaWFyIGRlIGNoYXQpLlxuICAgKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgIH1cbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXSlcblxuICAvLyBDbGVhbnVwIGFsIGRlc21vbnRhcjogc2kgcXVlZGEgdW4gc3RyZWFtIGFjdGl2bywgYWJvcnRhcmxvIHBhcmEgZXZpdGFyXG4gIC8vIHF1ZSBpbnRlbnRlIGFjdHVhbGl6YXIgZXN0YWRvIGVuIHVuIGNvbXBvbmVudGUgeWEgZGVzbW9udGFkbyAoZnVnYXMgZGVcbiAgLy8gbWVtb3JpYSB5IHdhcm5pbmdzKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWFjdGl2aXR5KSB7XG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXVxuICApXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudCxcbiAgICBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCxcbiAgICBiZWdpblN0cmVhbVRpbWVsaW5lVHVybixcbiAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50LFxuICAgIGZpbmFsaXplU3RyZWFtRXhlY3V0aW9uVHJhY2UsXG4gICAgcmVzZXRTdHJlYW1FeGVjdXRpb25UcmFjZSxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFLdEMsU0FBU0MsUUFBUSxRQUFRLHdCQUF3QjtBQUVqRCxTQUNFQywwQkFBMEIsRUFDMUJDLDRCQUE0QixFQUM1QkMsK0JBQStCLEVBQy9CQyw0QkFBNEIsRUFDNUJDLHdCQUF3QixFQUN4QkMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLFFBQzNCLG9DQUFvQztBQUMzQyxTQUNFQyx5QkFBeUIsRUFFekJDLHNCQUFzQixFQUN0QkMsK0JBQStCLEVBRS9CQyx5QkFBeUIsUUFDcEIsa0NBQWtDO0FBQ3pDLFNBQ0VDLDZCQUE2QixFQUM3QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLHVCQUF1QixRQUNsQiw0QkFBNEI7QUFDbkMsU0FBU0MsbUJBQW1CLFFBQVEsMENBQTBDO0FBQzlFLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDekYsU0FDRUMsbUJBQW1CLEVBQ25CQyxtQkFBbUIsRUFDbkJDLGNBQWMsRUFDZEMsMkJBQTJCLEVBQzNCQyxlQUFlLEVBQ2ZDLGNBQWMsRUFDZEMsb0JBQW9CLEVBQ3BC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
|
|
736
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzIiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lIiwiYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzdHJlYW1UaW1lbGluZVN0b3JlIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInN0cmVhbURlYnVnQWN0aXZpdHkiLCJzdHJlYW1EZWJ1Z0FwcHJvdmFsIiwic3RyZWFtRGVidWdMb2ciLCJzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAiLCJzdHJlYW1EZWJ1Z05vZGUiLCJzdHJlYW1EZWJ1Z1NzZSIsInN1bW1hcml6ZUhpdGxDb250ZXh0Iiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwic3RyZWFtQWN0aXZpdHlSZWYiLCJleGVjdXRpb25TdGVwc1JlZiIsImFjY3VtdWxhdGVkQ29udGVudFJlZiIsIm9uU3RyZWFtVXBkYXRlUmVmIiwib25GaW5pc2hTdHJlYW1SZWYiLCJvblN0YXJ0V3JpdGluZ1JlZiIsIm9uU3RvcFJlZiIsIm9uRXJyb3JSZWYiLCJvbkFwcHJvdmFsUmVxdWlyZWRSZWYiLCJjdXJyZW50IiwiY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUiLCJwcmV2aW91c1R1cm5JZCIsImdldFNuYXBzaG90IiwidHVybklkIiwiZXhlY3V0aW9uU3RlcENvdW50IiwibGVuZ3RoIiwiY2xlYXIiLCJiZWdpblN0cmVhbVRpbWVsaW5lVHVybiIsInJlcGxhY2UiLCJzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50IiwiYWNjdW11bGF0ZWRUZXh0IiwibmV4dCIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJwcmVzZXJ2ZWRTdGVwcyIsImFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMiLCJzdGVwcyIsInJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UiLCJmaW5hbGl6ZVN0cmVhbUV4ZWN1dGlvblRyYWNlIiwiX2FjdGl2ZVN0ZXAkbWVzc2FnZSIsImNvbXBsZXRlZFN0ZXBzIiwiYWN0aXZlU3RlcCIsImhhbmRsZVN0cmVhbU5vZGVFdmVudCIsInBheWxvYWQiLCJub2RlIiwic2tpcHBlZCIsInRocmVhZElkIiwidGhyZWFkX2lkIiwidW5kZWZpbmVkIiwiaGl0bENvbnRleHQiLCJ0aW1lbGluZU5leHQiLCJsYXN0RXhlY3V0aW9uIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2VnbWVudHMiLCJyZXZlcnNlIiwiZmluZCIsInNlZ21lbnQiLCJ0eXBlIiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInNjb3BlIiwic291cmNlIiwibm9kZVBheWxvYWQiLCJhY3Rpdml0eU1lc3NhZ2UiLCJ1aVN1cmZhY2VzIiwiaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJfcHJldiRleGVjdXRpb25TdGVwcyIsImFkdmFuY2VkIiwibmV4dEluZGV4IiwibWVyZ2VkQWN0aXZpdHkiLCJfb2JqZWN0U3ByZWFkIiwiZXhlY3V0aW9uU3RlcHMiLCJjbGVhckludGVydmFsIiwiaGFuZGxlU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwiX29uRXJyb3JSZWYkY3VycmVudCIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwicGVuZGluZ0NvbnRlbnQiLCJ0aHJvdHRsZVRpbWVyIiwic3RyZWFtU2V0dGxlZCIsImVtaXRUaHJvdHRsZWQiLCJmbHVzaFBlbmRpbmciLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJoYXNTdGFydGVkV3JpdGluZyIsImVuc3VyZVdyaXRpbmdTdGFydGVkIiwiYXBwbHlTdHJlYW1DaHVuayIsImFwcGx5U3RyZWFtQ29tcGxldGUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGluZSIsIl9saW5lJHNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJkYXRhU3RyIiwiX2RhdGEiLCJjaHVuayIsIl9jaHVuayIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsImlzTWFudWFsQXBwcm92YWwiLCJtYW51YWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJjb250ZW50Iiwic2V0VGltZW91dCIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjbGVhclRpbWVvdXQiLCJfb25TdHJlYW1VcGRhdGVSZWYkY3UyIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfb25TdGFydFdyaXRpbmdSZWYkY3UiLCJhY2N1bXVsYXRlZExlbmd0aCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JHJlc29sdmVkIiwiX29uRmluaXNoU3RyZWFtUmVmJGN1IiwiZmluYWxDb250ZW50IiwiZmluYWxDb250ZW50TGVuZ3RoIiwidGltZWxpbmUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJKU09OIiwicGFyc2UiLCJ0b29sX25hbWUiLCJtZXNzYWdlUHJldmlldyIsInNsaWNlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdUb29scyIsInBlbmRpbmdfYWN0aW9ucyIsIm1hcCIsImEiLCJ3aWxsQ2xlYXJMb2FkaW5nU3RhdGUiLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImNvbnRleHREYXRhIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcywgUmVzb2x2ZWRDb250ZXh0IH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtRXhlY3V0aW9uU3RlcCwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQge1xuICBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzLFxuICBmaW5hbGl6ZUV4ZWN1dGlvblN0ZXBzRm9yV3JpdGluZyxcbiAgZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcCxcbiAgbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyxcbiAgcHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSxcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSxcbiAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUsXG4gIGZpbmFsaXplU3RyZWFtVGltZWxpbmUsXG4gIHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1UaW1lbGluZS9zdHJlYW1UaW1lbGluZVN0b3JlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7XG4gIHN0cmVhbURlYnVnQWN0aXZpdHksXG4gIHN0cmVhbURlYnVnQXBwcm92YWwsXG4gIHN0cmVhbURlYnVnTG9nLFxuICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAsXG4gIHN0cmVhbURlYnVnTm9kZSxcbiAgc3RyZWFtRGVidWdTc2UsXG4gIHN1bW1hcml6ZUhpdGxDb250ZXh0LFxuICBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcblxudHlwZSBTdWJhZ2VudFJhdyA9IHsgbmFtZT86IHN0cmluZzsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfSB8IG51bGwgfCB1bmRlZmluZWRcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxuICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbn06IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlLCBzZXRMb2FkaW5nTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc3RyZWFtQWN0aXZpdHksIHNldFN0cmVhbUFjdGl2aXR5XSA9IHVzZVN0YXRlPFN0cmVhbUFjdGl2aXR5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmPEFib3J0Q29udHJvbGxlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzU3RvcHBlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc3RyZWFtQWN0aXZpdHlSZWYgPSB1c2VSZWY8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBleGVjdXRpb25TdGVwc1JlZiA9IHVzZVJlZjxTdHJlYW1FeGVjdXRpb25TdGVwW10+KFtdKVxuICBjb25zdCBhY2N1bXVsYXRlZENvbnRlbnRSZWYgPSB1c2VSZWYoJycpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdHJlYW1EZWJ1Z0xvZygnb3JjaGVzdHJhdG9yJywgJ2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlJywge1xuICAgICAgcHJldmlvdXNUdXJuSWQ6IHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKS50dXJuSWQsXG4gICAgICBleGVjdXRpb25TdGVwQ291bnQ6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gJydcbiAgICByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLmNsZWFyKClcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICB9LCBbXSlcblxuICBjb25zdCBiZWdpblN0cmVhbVRpbWVsaW5lVHVybiA9IHVzZUNhbGxiYWNrKCh0dXJuSWQ6IHN0cmluZykgPT4ge1xuICAgIHN0cmVhbURlYnVnTG9nKCdvcmNoZXN0cmF0b3InLCAnYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4nLCB7IHR1cm5JZCB9KVxuICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gJydcbiAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gW11cbiAgICByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLnJlcGxhY2Uoc3RhcnRTdHJlYW1UaW1lbGluZVR1cm4odHVybklkKSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCA9IHVzZUNhbGxiYWNrKChhY2N1bXVsYXRlZFRleHQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5leHQgPSBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZShzdHJlYW1UaW1lbGluZVN0b3JlLmdldFNuYXBzaG90KCksIGFjY3VtdWxhdGVkVGV4dClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLnJlcGxhY2UobmV4dClcbiAgfSwgW10pXG5cbiAgY29uc3QgYXBwbHlTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkpID0+IHtcbiAgICBjb25zdCBwcmV2ID0gc3RyZWFtQWN0aXZpdHlSZWYuY3VycmVudFxuICAgIGlmIChwcmV2Py5waGFzZSA9PT0gYWN0aXZpdHkucGhhc2UgJiYgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShhY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocHJldj8ucGhhc2UgIT09IGFjdGl2aXR5LnBoYXNlKSB7XG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgIH1cbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gYWN0aXZpdHlcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICBzZXRMb2FkaW5nTWVzc2FnZShhY3Rpdml0eS5tZXNzYWdlKVxuICAgIHN0cmVhbURlYnVnQWN0aXZpdHkoJ29yY2hlc3RyYXRvcicsICdhcHBseVN0cmVhbUFjdGl2aXR5JywgYWN0aXZpdHksIHtcbiAgICAgIHByZXNlcnZlZFN0ZXBzOiBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50Lmxlbmd0aCxcbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCBhcHBseVN0cmVhbUFjdGl2aXR5UHJlc2VydmluZ1N0ZXBzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSkgPT4ge1xuICAgICAgY29uc3Qgc3RlcHMgPSBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50XG4gICAgICBpZiAoc3RlcHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KG1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMoYWN0aXZpdHksIHN0ZXBzKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHldXG4gIClcblxuICBjb25zdCByZXNldFN0cmVhbUV4ZWN1dGlvblRyYWNlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIoKVxuICB9LCBbXSlcblxuICAvKiogTWFyY2EgZWwgcmFzdHJvIGNvbW8gY29tcGxldGFkbyB5IGxvIG1hbnRpZW5lIHZpc2libGUgKG5vIGxpbXBpYSBoYXN0YSBlbCBwcsOzeGltbyB0dXJubykuICovXG4gIGNvbnN0IGZpbmFsaXplU3RyZWFtRXhlY3V0aW9uVHJhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY29tcGxldGVkU3RlcHMgPSBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzKGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQpXG4gICAgZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudCA9IGNvbXBsZXRlZFN0ZXBzXG5cbiAgICBpZiAoY29tcGxldGVkU3RlcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVTdGVwID0gZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcChjb21wbGV0ZWRTdGVwcylcbiAgICBjb25zdCBhY3Rpdml0eSA9IG1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMoXG4gICAgICB7XG4gICAgICAgIHBoYXNlOiAnd3JpdGluZycsXG4gICAgICAgIG1lc3NhZ2U6IGFjdGl2ZVN0ZXA/Lm1lc3NhZ2UgPz8gZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpLm1lc3NhZ2UsXG4gICAgICB9LFxuICAgICAgY29tcGxldGVkU3RlcHNcbiAgICApXG4gICAgc3RyZWFtQWN0aXZpdHlSZWYuY3VycmVudCA9IGFjdGl2aXR5XG4gICAgc2V0U3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLCB0XSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1Ob2RlRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAocGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCwgYWNjdW11bGF0ZWRUZXh0Pzogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAocGF5bG9hZC5ub2RlID09PSAnYWdlbnRfdHJhbnNmZXInKSB7XG4gICAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwgeyBza2lwcGVkOiAnYWdlbnRfdHJhbnNmZXInIH0pXG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoIXBheWxvYWQubWVzc2FnZSB8fCB0eXBlb2YgcGF5bG9hZC5tZXNzYWdlICE9PSAnc3RyaW5nJykge1xuICAgICAgICBzdHJlYW1EZWJ1Z05vZGUoJ29yY2hlc3RyYXRvcicsIHBheWxvYWQsIHsgc2tpcHBlZDogJ21pc3NpbmdfbWVzc2FnZScgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIGNvbnN0IHRocmVhZElkID0gdHlwZW9mIHBheWxvYWQudGhyZWFkX2lkID09PSAnc3RyaW5nJyA/IHBheWxvYWQudGhyZWFkX2lkIDogdW5kZWZpbmVkXG4gICAgICBjb25zdCBoaXRsQ29udGV4dCA9IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50XG4gICAgICBzdHJlYW1EZWJ1Z05vZGUoJ29yY2hlc3RyYXRvcicsIHBheWxvYWQsIHtcbiAgICAgICAgdGhyZWFkSWQsXG4gICAgICAgIGhpdGxDb250ZXh0OiBoaXRsQ29udGV4dCA/IHN1bW1hcml6ZUhpdGxDb250ZXh0KGhpdGxDb250ZXh0KSA6IG51bGwsXG4gICAgICB9KVxuICAgICAgY29uc3QgdGltZWxpbmVOZXh0ID0gYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUoXG4gICAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgYWNjdW11bGF0ZWRUZXh0ID8/IGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50LFxuICAgICAgICB0LFxuICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCxcbiAgICAgICAgdGhyZWFkSWRcbiAgICAgIClcbiAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZSh0aW1lbGluZU5leHQpXG5cbiAgICAgIGNvbnN0IGxhc3RFeGVjdXRpb24gPSBbLi4udGltZWxpbmVOZXh0LnNlZ21lbnRzXS5yZXZlcnNlKCkuZmluZChzZWdtZW50ID0+IHNlZ21lbnQudHlwZSA9PT0gJ2V4ZWN1dGlvbicpXG4gICAgICBpZiAobGFzdEV4ZWN1dGlvbj8udHlwZSA9PT0gJ2V4ZWN1dGlvbicpIHtcbiAgICAgICAgZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudCA9IGxhc3RFeGVjdXRpb24uc3RlcHNcbiAgICAgICAgY29uc3QgYWN0aXZpdHkgPSByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICBwYXlsb2FkLm1lc3NhZ2UsXG4gICAgICAgICAgdCxcbiAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCxcbiAgICAgICAgICB0aHJlYWRJZCxcbiAgICAgICAgICBwYXlsb2FkLm5vZGUgPT09ICdyZXN1bWluZycgPyB7IHVzZVJlc3VtaW5nRmFsbGJhY2s6IHRydWUgfSA6IHVuZGVmaW5lZFxuICAgICAgICApXG4gICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkobWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhhY3Rpdml0eSwgbGFzdEV4ZWN1dGlvbi5zdGVwcykpXG4gICAgICAgIHN0cmVhbURlYnVnQWN0aXZpdHkoJ29yY2hlc3RyYXRvcicsICdub2RlOmFjdGl2aXR5JywgYWN0aXZpdHksIHtcbiAgICAgICAgICBleGVjdXRpb25TdGVwQ291bnQ6IGxhc3RFeGVjdXRpb24uc3RlcHMubGVuZ3RoLFxuICAgICAgICB9KVxuICAgICAgICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAoe1xuICAgICAgICAgIHNjb3BlOiAnb3JjaGVzdHJhdG9yJyxcbiAgICAgICAgICBzb3VyY2U6ICdub2RlJyxcbiAgICAgICAgICBub2RlUGF5bG9hZDogcGF5bG9hZCxcbiAgICAgICAgICBhY3Rpdml0eU1lc3NhZ2U6IGFjdGl2aXR5Lm1lc3NhZ2UsXG4gICAgICAgICAgaGl0bENvbnRleHQsXG4gICAgICAgICAgdWlTdXJmYWNlczogWydzdHJlYW1BY3Rpdml0eScsICdzdHJlYW1UaW1lbGluZSddLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNXcml0aW5nKHRydWUpXG4gICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudChhY2N1bXVsYXRlZENvbnRlbnRSZWYuY3VycmVudClcbiAgICBhcHBseVN0cmVhbUFjdGl2aXR5UHJlc2VydmluZ1N0ZXBzKGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgfSwgW2FwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMsIHN5bmNTdHJlYW1UaW1lbGluZUNvbnRlbnQsIHRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RyZWFtQWN0aXZpdHlSZWYuY3VycmVudCA9IHN0cmVhbUFjdGl2aXR5XG4gIH0sIFtzdHJlYW1BY3Rpdml0eV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzTG9hZGluZyB8fCBpc1dyaXRpbmcgfHwgIXN0cmVhbUFjdGl2aXR5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmICghY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShzdHJlYW1BY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGNvbnN0IHByZXYgPSBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50XG4gICAgICBpZiAoIXByZXYgfHwgIWNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UocHJldi5waGFzZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoIWNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldi5waGFzZSwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBhZHZhbmNlZCA9IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldiwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCwgdClcbiAgICAgIGlmICghYWR2YW5jZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gYWR2YW5jZWQubmV4dEluZGV4XG4gICAgICBjb25zdCBtZXJnZWRBY3Rpdml0eSA9IHtcbiAgICAgICAgLi4uYWR2YW5jZWQuYWN0aXZpdHksXG4gICAgICAgIC4uLihwcmV2LmV4ZWN1dGlvblN0ZXBzPy5sZW5ndGggPyB7IGV4ZWN1dGlvblN0ZXBzOiBwcmV2LmV4ZWN1dGlvblN0ZXBzIH0gOiB7fSksXG4gICAgICB9XG4gICAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gbWVyZ2VkQWN0aXZpdHlcbiAgICAgIHNldFN0cmVhbUFjdGl2aXR5KG1lcmdlZEFjdGl2aXR5KVxuICAgICAgc2V0TG9hZGluZ01lc3NhZ2UobWVyZ2VkQWN0aXZpdHkubWVzc2FnZSlcbiAgICB9LCBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUylcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKVxuICB9LCBbaXNMb2FkaW5nLCBpc1dyaXRpbmcsIHN0cmVhbUFjdGl2aXR5Py5waGFzZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlU1NFU3RyZWFtID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgLy8gVGltZS10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBjYWRhIH4xNm1zLlxuICAgICAgLy8gVXNhbW9zIHRpbWVyIHBhcmEgcXVlIGVsIHN0cmVhbSBzaWdhIHBpbnRhbmRvIGF1bnF1ZSByQUYgZXN0w6kgdGhyb3R0bGVhZG8uXG4gICAgICAvLyBOb3RhOiBubyB0b2NhbW9zIGVsIHN0YXRlIGBkYXRhYCBlbiBlbCBob3QgcGF0aCAoc29sbyBzZSBhY3R1YWxpemEgZW5cbiAgICAgIC8vIGBjb21wbGV0ZWAvcmVzZXRzKSBwYXJhIG5vIHJlLXJlbmRlcml6YXIgYSBsb3MgY29uc3VtaWRvcmVzIGRlbCBob29rXG4gICAgICAvLyBlbiBjYWRhIGZyYW1lOyBlbCB0ZXh0byBlbiB2aXZvIHZpYWphIHBvciBlbCBzdHJlYW1pbmdTdG9yZS5cbiAgICAgIGxldCBwZW5kaW5nQ29udGVudDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgICAgIGxldCB0aHJvdHRsZVRpbWVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHN0cmVhbVNldHRsZWQgPSBmYWxzZVxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHJldHVyblxuICAgICAgICB0aHJvdHRsZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgICAgICAgaWYgKHN0cmVhbVNldHRsZWQpIHtcbiAgICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDE2KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICAgICAgdGhyb3R0bGVUaW1lciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgICAgICAgaWYgKCFyZWFkZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gICAgICAgIGxldCBidWZmZXIgPSAnJ1xuICAgICAgICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgICAgICAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICAgICAgICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgICAgICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdhc2tNYWlhJywgJ3dyaXRpbmc6c3RhcnRlZCcsIHtcbiAgICAgICAgICAgIGFjY3VtdWxhdGVkTGVuZ3RoOiBhY2N1bXVsYXRlZENvbnRlbnQubGVuZ3RoLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgc2V0SXNXcml0aW5nKHRydWUpXG4gICAgICAgICAgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgICAgICAgYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQgPSBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50KGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICBlbWl0VGhyb3R0bGVkKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcGx5U3RyZWFtQ29tcGxldGUgPSAocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgICAgICBpZiAoc3RyZWFtU2V0dGxlZCkgcmV0dXJuXG4gICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcblxuICAgICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChwYXlsb2FkLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICBzdHJlYW1EZWJ1Z1NzZSgnYXNrTWFpYScsICdjb21wbGV0ZScsIHtcbiAgICAgICAgICAgIGZpbmFsQ29udGVudExlbmd0aDogZmluYWxDb250ZW50Lmxlbmd0aCxcbiAgICAgICAgICAgIHRpbWVsaW5lOiBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90KHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSksXG4gICAgICAgICAgfSlcbiAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnRSZWYuY3VycmVudCA9IGZpbmFsQ29udGVudFxuICAgICAgICAgIHN5bmNTdHJlYW1UaW1lbGluZUNvbnRlbnQoZmluYWxDb250ZW50KVxuICAgICAgICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lKHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSkpXG4gICAgICAgICAgY29uc3Qgc291cmNlcyA9IHBheWxvYWQuc291cmNlcyB8fCBudWxsXG4gICAgICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKHBheWxvYWQubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmF0dGFjaG1lbnRzKSA/IHBheWxvYWQuYXR0YWNobWVudHMgOiBudWxsXG4gICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW11cbiAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0aW9ucykpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhZ2VudElkUmF3ID0gcGF5bG9hZC5hZ2VudF9pZCA/PyBwYXlsb2FkLmFnZW50SWRcbiAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgIGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgICAgICAgY29uc3Qgc3ViYWdlbnRSYXcgPSBwYXlsb2FkLnN1YmFnZW50IGFzIFN1YmFnZW50UmF3XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRDb250ZXh0ID0gc3ViYWdlbnRSYXc/LnJlc29sdmVkX2NvbnRleHQgPz8gbnVsbFxuICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgc2V0RGF0YShmaW5hbENvbnRlbnQpXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0U3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICAgICAgICAgIG9uRmluaXNoU3RyZWFtUmVmLmN1cnJlbnQ/LihcbiAgICAgICAgICAgIGZpbmFsQ29udGVudCxcbiAgICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgY29tcGxldGVkQWdlbnRJZCxcbiAgICAgICAgICAgIHJlc29sdmVkQ29udGV4dFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgICAgICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG5cbiAgICAgICAgICAgICAgaWYgKHN0cmVhbVNldHRsZWQgJiYgZXZlbnRUeXBlICE9PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHN0cmVhbURlYnVnU3NlKCdhc2tNYWlhJywgZXZlbnRUeXBlLCB7XG4gICAgICAgICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcsXG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZWRMZW5ndGg6IGFjY3VtdWxhdGVkQ29udGVudC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgLi4uKGV2ZW50VHlwZSA9PT0gJ25vZGUnXG4gICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICBub2RlOiBkYXRhLm5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbF9uYW1lOiBkYXRhLnRvb2xfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlUHJldmlldzogdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycgPyBkYXRhLm1lc3NhZ2Uuc2xpY2UoMCwgODApIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAuLi4oZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnXG4gICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICBtYW51YWxBcHByb3ZhbERldGVjdGVkOiBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nVG9vbHM6IEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGRhdGEucGVuZGluZ19hY3Rpb25zLm1hcCgoYTogeyB0b29sX25hbWU/OiBzdHJpbmcgfSkgPT4gYS50b29sX25hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eVByZXNlcnZpbmdTdGVwcyh7XG4gICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudChkYXRhIGFzIFN0cmVhbU5vZGVFdmVudFBheWxvYWQpXG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgICAgICAgLy8gTWFudWFsIGFwcHJvdmFsOiBlbCBTU0Ugc2lndWUgY29uIG5vZGUvdG9rZW4vY29tcGxldGUgKHkgcHVlZGVcbiAgICAgICAgICAgICAgICAgIC8vIGVuY2FkZW5hciBtw6FzIGFwcHJvdmFsX3JlcXVpcmVkKS4gU29sbyBlbCBhcHByb3ZhbCBcInBhdXNhZG9cIlxuICAgICAgICAgICAgICAgICAgLy8gKGJvdMOzbikgZXMgdGVybWluYWwgcGFyYSBlc3RlIHN0cmVhbS5cbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgIHN0cmVhbURlYnVnQXBwcm92YWwoJ29yY2hlc3RyYXRvcicsICdhcHByb3ZhbF9yZXF1aXJlZCcsIGRhdGEsIHtcbiAgICAgICAgICAgICAgICAgICAgaXNNYW51YWxBcHByb3ZhbCxcbiAgICAgICAgICAgICAgICAgICAgd2lsbENsZWFyTG9hZGluZ1N0YXRlOiAhaXNNYW51YWxBcHByb3ZhbCxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBpZiAoIWlzTWFudWFsQXBwcm92YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQ/LihkYXRhLCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgICAgICAgICBpZiAoaXNNYW51YWxBcHByb3ZhbCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFudWFsQWN0aXZpdHkgPSByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShtYW51YWxBY3Rpdml0eSlcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwKHtcbiAgICAgICAgICAgICAgICAgICAgICBzY29wZTogJ29yY2hlc3RyYXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlOiAnaW5pdGlhbEFjdGl2aXR5JyxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eU1lc3NhZ2U6IG1hbnVhbEFjdGl2aXR5Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgaGl0bENvbnRleHQ6IGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgIHVpU3VyZmFjZXM6IFsnc3RyZWFtQWN0aXZpdHknLCAnYXBwcm92YWxCb3gnXSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKSAvLyBMaW1waWFyIG1lbnNhamUgY3VhbmRvIGhheSBlcnJvclxuICAgICAgICAgICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oZGF0YS5lcnJvcj8udHlwZSwgZGF0YS5lcnJvcj8ubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuXG4gICAgICAgIC8vIFNvbG8gZWplY3V0YXIgb25FcnJvciBzaSBubyBmdWUgdW4gc3RvcCBpbnRlbmNpb25hbFxuICAgICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBpZiAoIXN0cmVhbVNldHRsZWQpIHtcbiAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMsXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudCxcbiAgICAgIGhhbmRsZVN0cmVhbVdyaXRpbmdTdGFydGVkLFxuICAgICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgYXNrTWFpYSA9IGFzeW5jICh7XG4gICAgbWVzc2FnZSxcbiAgICBoaXN0b3J5LFxuICAgIHByb2plY3RJZCxcbiAgICBsYW5nLFxuICAgIHVzZXJJZCxcbiAgICBmaXJzdE5hbWUsXG4gICAgbGFzdE5hbWUsXG4gICAgY29tcGFueUlkLFxuICAgIGNoYXRJZCxcbiAgICBtZXNzYWdlSWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudE5hbWUsXG4gICAgYWdlbnRJZCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYXR0YWNobWVudHMsXG4gICAgcHJvamVjdE5hbWUsXG4gICAgdGFza0lkLFxuICAgIHRhc2tOYW1lLFxuICAgIGZhcUlkLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkLFxuICAgIGZ1YUlkLFxuICAgIHNjSWQsXG4gICAgYWdlbnRFbnRpdHksXG4gICAgYWdlbnRUeXBlLFxuICAgIGNvbnRleHRNZXNzYWdlLFxuICAgIGNvbnRleHREYXRhLFxuICB9OiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaGlzdG9yeTogQ2hhdEhpc3RvcnlbXVxuICAgIHByb2plY3RJZDogbnVtYmVyIHwgbnVsbFxuICAgIGxhbmc6IHN0cmluZ1xuICAgIHVzZXJJZDogc3RyaW5nXG4gICAgZmlyc3ROYW1lPzogc3RyaW5nXG4gICAgbGFzdE5hbWU/OiBzdHJpbmdcbiAgICBjb21wYW55SWQ6IHN0cmluZ1xuICAgIGNoYXRJZDogc3RyaW5nXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBjbGllbnRJZD86IG51bWJlclxuICAgIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgICBmZWVJZD86IG51bWJlclxuICAgIGFnZW50TmFtZTogc3RyaW5nXG4gICAgYWdlbnRJZDogc3RyaW5nXG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICAgIHByb2plY3ROYW1lPzogc3RyaW5nXG4gICAgdGFza0lkPzogbnVtYmVyXG4gICAgdGFza05hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICAgIGFnZW50VHlwZT86IEFnZW50VHlwZVxuICAgIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0RGF0YShudWxsKVxuICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIGJlZ2luU3RyZWFtVGltZWxpbmVUdXJuKG1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCB7XG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgIGhhc0F0dGFjaG1lbnRzOiBCb29sZWFuKGF0dGFjaG1lbnRzPy5sZW5ndGgpLFxuICAgICAgICBhdHRhY2htZW50c0NvdW50OiBhdHRhY2htZW50cz8ubGVuZ3RoID8/IDAsXG4gICAgICB9KVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShpbml0aWFsQWN0aXZpdHkpXG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlIC8vIFJlc2V0ZWFyIGZsYWcgYWwgaW5pY2lhciBudWV2YSBwZXRpY2nDs25cblxuICAgICAgc3RyZWFtRGVidWdMb2coJ29yY2hlc3RyYXRvcicsICdhc2tNYWlhOnN0YXJ0JywgeyBtZXNzYWdlSWQsIGNoYXRJZCB9KVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3IoXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dDogbWVzc2FnZSxcbiAgICAgICAgICBoaXN0b3J5LFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIC4uLihmaXJzdE5hbWUgPyB7IGZpcnN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihsYXN0TmFtZSA/IHsgbGFzdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICBjb21wYW55SWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIG1lc3NhZ2VJZCxcbiAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAuLi4oZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQgfSA6IHt9KSxcbiAgICAgICAgICBhZ2VudE5hbWUsXG4gICAgICAgICAgYWdlbnRJZCxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICAgICAgLi4uKHByb2plY3RJZCA/IHsgcHJvamVjdElkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAgIC4uLihwcm9qZWN0TmFtZSA/IHsgcHJvamVjdE5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY2xpZW50TmFtZSA/IHsgY2xpZW50TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLih0YXNrSWQgIT0gbnVsbCA/IHsgdGFza0lkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tOYW1lID8geyB0YXNrTmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZ1YUlkID8geyBmdWFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50RW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50VHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgICB9LFxuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudD8uc2lnbmFsXG4gICAgICApXG5cbiAgICAgIGF3YWl0IGhhbmRsZVNTRVN0cmVhbShyZXNwb25zZSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gU2kgZnVlIHVuIGFib3J0IGludGVuY2lvbmFsIChzdG9wIG1hbnVhbCBvIGNhbWJpbyBkZSBjaGF0KSwgbm8gZGlzcGFyYXIgb25FcnJvclxuICAgICAgLy8gcG9ycXVlIGVzbyBpbnNlcnRhIHVuIFwibWVuc2FqZSBkZSBlcnJvclwiIGVuIGVsIGNoYXQgYWwgcXVlIGFjYWJhbW9zIGRlIG5hdmVnYXIuXG4gICAgICBpZiAoIWlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIG9uRXJyb3JSZWYuY3VycmVudD8uKClcbiAgICAgIH1cbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RvcFN0cmVhbWluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgb25TdG9wUmVmLmN1cnJlbnQ/LigpXG4gICAgfVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGVdKVxuXG4gIC8qKlxuICAgKiBBYm9ydGEgZWwgc3RyZWFtIGVuIGN1cnNvIChzaSBleGlzdGUpIHNpbiBkaXNwYXJhciBgb25TdG9wYC5cbiAgICogw5pzZWxvIGVuIGNhc29zIGRvbmRlIG5vIHF1ZXJlbW9zIGFncmVnYXIgZWwgbWVuc2FqZSBkZSBcImNhbmNlbGFkb1wiXG4gICAqIChwb3IgZWplbXBsbywgYWwgY2FtYmlhciBkZSBjaGF0KS5cbiAgICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLy8gQ2xlYW51cCBhbCBkZXNtb250YXI6IHNpIHF1ZWRhIHVuIHN0cmVhbSBhY3Rpdm8sIGFib3J0YXJsbyBwYXJhIGV2aXRhclxuICAvLyBxdWUgaW50ZW50ZSBhY3R1YWxpemFyIGVzdGFkbyBlbiB1biBjb21wb25lbnRlIHlhIGRlc21vbnRhZG8gKGZ1Z2FzIGRlXG4gIC8vIG1lbW9yaWEgeSB3YXJuaW5ncykuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlU3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKCFhY3Rpdml0eSkge1xuICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICB9LFxuICAgIFthcHBseVN0cmVhbUFjdGl2aXR5LCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIHNldERhdGEobnVsbClcbiAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc2tNYWlhLFxuICAgIHJlc3BvbnNlOiBkYXRhLFxuICAgIGlzTG9hZGluZyxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgcmVzZXQsXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICAgIGhhbmRsZVNTRVN0cmVhbSwgLy8gRXhwb25lciBwYXJhIHBvZGVyIHVzYXJsbyBlbiBjb250aW51ZS10aHJlYWRcbiAgICBoYW5kbGVTdHJlYW1Ob2RlRXZlbnQsXG4gICAgaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQsXG4gICAgYmVnaW5TdHJlYW1UaW1lbGluZVR1cm4sXG4gICAgc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudCxcbiAgICBmaW5hbGl6ZVN0cmVhbUV4ZWN1dGlvblRyYWNlLFxuICAgIHJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUU5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBS3RDLFNBQVNDLFFBQVEsUUFBUSx3QkFBd0I7QUFFakQsU0FDRUMsMEJBQTBCLEVBQzFCQyw0QkFBNEIsRUFDNUJDLCtCQUErQixFQUMvQkMsNEJBQTRCLEVBQzVCQyx3QkFBd0IsRUFDeEJDLHlCQUF5QixFQUN6QkMsd0JBQXdCLEVBQ3hCQyw2QkFBNkIsRUFDN0JDLGdDQUFnQyxRQUMzQixvQ0FBb0M7QUFDM0MsU0FDRUMseUJBQXlCLEVBRXpCQyxzQkFBc0IsRUFDdEJDLCtCQUErQixFQUUvQkMseUJBQXlCLFFBQ3BCLGtDQUFrQztBQUN6QyxTQUNFQyw2QkFBNkIsRUFDN0JDLDBCQUEwQixFQUMxQkMsc0JBQXNCLEVBQ3RCQyx1QkFBdUIsUUFDbEIsNEJBQTRCO0FBQ25DLFNBQVNDLG1CQUFtQixRQUFRLDBDQUEwQztBQUM5RSxTQUFTQyx3QkFBd0IsRUFBRUMsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQ3pGLFNBQ0VDLG1CQUFtQixFQUNuQkMsbUJBQW1CLEVBQ25CQyxjQUFjLEVBQ2RD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
|
|
@@ -27,8 +27,15 @@ export var completeAllExecutionSteps = function completeAllExecutionSteps(steps)
|
|
|
27
27
|
});
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
|
+
export var getRunningExecutionSteps = function getRunningExecutionSteps(steps) {
|
|
31
|
+
return steps.filter(function (step) {
|
|
32
|
+
return step.status === 'running';
|
|
33
|
+
});
|
|
34
|
+
};
|
|
30
35
|
export var shouldShowExecutionTrace = function shouldShowExecutionTrace(steps) {
|
|
31
36
|
if (!(steps !== null && steps !== void 0 && steps.length)) return false;
|
|
37
|
+
var running = getRunningExecutionSteps(steps);
|
|
38
|
+
if (running.length === steps.length) return running.length >= 1;
|
|
32
39
|
if (steps.length >= 2) return true;
|
|
33
40
|
return steps.some(function (step) {
|
|
34
41
|
return step.status === 'completed';
|
|
@@ -55,21 +62,31 @@ export var pushExecutionStepFromNode = function pushExecutionStepFromNode(curren
|
|
|
55
62
|
return completedPrevious;
|
|
56
63
|
}
|
|
57
64
|
if (payload.node !== 'resuming') {
|
|
58
|
-
var
|
|
59
|
-
if ((
|
|
65
|
+
var _lastStep = completedPrevious[completedPrevious.length - 1];
|
|
66
|
+
if ((_lastStep === null || _lastStep === void 0 ? void 0 : _lastStep.node) === 'resuming' && _lastStep.message.trim().toLowerCase() === message.trim().toLowerCase()) {
|
|
60
67
|
streamDebugLog('executionSteps', 'replace:redundant-resuming', {
|
|
61
|
-
resumingMessage:
|
|
68
|
+
resumingMessage: _lastStep.message,
|
|
62
69
|
toolNode: payload.node,
|
|
63
70
|
toolName: payload.tool_name
|
|
64
71
|
});
|
|
65
72
|
completedPrevious = completedPrevious.slice(0, -1);
|
|
66
73
|
}
|
|
67
74
|
}
|
|
75
|
+
var toolName = (_payload$tool_name = payload.tool_name) !== null && _payload$tool_name !== void 0 ? _payload$tool_name : payload.node !== 'resuming' ? payload.node : undefined;
|
|
76
|
+
var lastStep = completedPrevious[completedPrevious.length - 1];
|
|
77
|
+
if ((lastStep === null || lastStep === void 0 ? void 0 : lastStep.status) === 'running' && lastStep.toolName === toolName && lastStep.message.trim().toLowerCase() === message.trim().toLowerCase()) {
|
|
78
|
+
streamDebugLog('executionSteps', 'skip:duplicate-running', {
|
|
79
|
+
node: payload.node,
|
|
80
|
+
toolName: toolName,
|
|
81
|
+
message: message
|
|
82
|
+
});
|
|
83
|
+
return completedPrevious;
|
|
84
|
+
}
|
|
68
85
|
var newStep = {
|
|
69
86
|
id: nextStepId(),
|
|
70
87
|
message: message,
|
|
71
88
|
node: payload.node,
|
|
72
|
-
toolName:
|
|
89
|
+
toolName: toolName,
|
|
73
90
|
status: 'running'
|
|
74
91
|
};
|
|
75
92
|
var nextSteps = [].concat(_toConsumableArray(completedPrevious), [newStep]);
|
|
@@ -116,4 +133,4 @@ export var getActiveExecutionStep = function getActiveExecutionStep(steps) {
|
|
|
116
133
|
});
|
|
117
134
|
return running !== null && running !== void 0 ? running : steps[steps.length - 1];
|
|
118
135
|
};
|
|
119
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInN0cmVhbURlYnVnTG9nIiwiZXhlY3V0aW9uU3RlcENvdW50ZXIiLCJuZXh0U3RlcElkIiwiY29uY2F0IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImNvbXBsZXRlUnVubmluZ1N0ZXBzIiwic3RlcHMiLCJtYXAiLCJzdGVwIiwic3RhdHVzIiwiX29iamVjdFNwcmVhZCIsImNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyIsImNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMiLCJzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UiLCJsZW5ndGgiLCJzb21lIiwicmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUiLCJwYXlsb2FkIiwidCIsImNvbnRleHQiLCJ0aHJlYWRJZCIsImFjdGl2aXR5IiwibWVzc2FnZSIsInRocmVhZF9pZCIsInB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUiLCJjdXJyZW50U3RlcHMiLCJfY29udGV4dCRwZW5kaW5nQWN0aW8iLCJfcGF5bG9hZCR0b29sX25hbWUiLCJjb21wbGV0ZWRQcmV2aW91cyIsIm5vZGUiLCJwZW5kaW5nQWN0aW9ucyIsInBlbmRpbmdUb29scyIsImFjdGlvbiIsInRvb2xfbmFtZSIsImxhc3RTdGVwIiwidHJpbSIsInRvTG93ZXJDYXNlIiwicmVzdW1pbmdNZXNzYWdlIiwidG9vbE5vZGUiLCJ0b29sTmFtZSIsInNsaWNlIiwibmV3U3RlcCIsImlkIiwidW5kZWZpbmVkIiwibmV4dFN0ZXBzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic3RlcENvdW50IiwiaGFzSGl0bENvbnRleHQiLCJCb29sZWFuIiwiZmluYWxpemVFeGVjdXRpb25TdGVwc0ZvcldyaXRpbmciLCJ3cml0aW5nTWVzc2FnZSIsImNvbXBsZXRlZCIsIndyaXRpbmdJbmRleCIsImZpbmRJbmRleCIsImluZGV4IiwibWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyIsImV4ZWN1dGlvblN0ZXBzIiwiZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcCIsInJ1bm5pbmciLCJyZXZlcnNlIiwiZmluZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJlYW1FeGVjdXRpb25TdGVwcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0cmVhbUV4ZWN1dGlvblN0ZXAsIFN0cmVhbU5vZGVFdmVudFBheWxvYWQsIFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1EZWJ1Z0xvZyB9IGZyb20gJy4vc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5sZXQgZXhlY3V0aW9uU3RlcENvdW50ZXIgPSAwXG5cbmNvbnN0IG5leHRTdGVwSWQgPSAoKTogc3RyaW5nID0+IHtcbiAgZXhlY3V0aW9uU3RlcENvdW50ZXIgKz0gMVxuICByZXR1cm4gYGV4ZWMtc3RlcC0ke2V4ZWN1dGlvblN0ZXBDb3VudGVyfWBcbn1cblxuZXhwb3J0IGNvbnN0IHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIgPSAoKTogdm9pZCA9PiB7XG4gIGV4ZWN1dGlvblN0ZXBDb3VudGVyID0gMFxufVxuXG5jb25zdCBjb21wbGV0ZVJ1bm5pbmdTdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLm1hcChzdGVwID0+IChzdGVwLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8geyAuLi5zdGVwLCBzdGF0dXM6ICdjb21wbGV0ZWQnIGFzIGNvbnN0IH0gOiBzdGVwKSlcblxuZXhwb3J0IGNvbnN0IGNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzXG5cbmV4cG9ydCBjb25zdCBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzID0gKHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW10pOiBTdHJlYW1FeGVjdXRpb25TdGVwW10gPT5cbiAgc3RlcHMubWFwKHN0ZXAgPT4gKHsgLi4uc3RlcCwgc3RhdHVzOiAnY29tcGxldGVkJyBhcyBjb25zdCB9KSlcblxuZXhwb3J0IGNvbnN0IHNob3VsZFNob3dFeGVjdXRpb25UcmFjZSA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XG4gIGlmICghc3RlcHM/Lmxlbmd0aCkgcmV0dXJuIGZhbHNlXG4gIGlmIChzdGVwcy5sZW5ndGggPj0gMikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIHN0ZXBzLnNvbWUoc3RlcCA9PiBzdGVwLnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU3RlcE1lc3NhZ2VGcm9tTm9kZSA9IChcbiAgcGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBhY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KHBheWxvYWQubWVzc2FnZSwgdCwgY29udGV4dCwgdGhyZWFkSWQgPz8gcGF5bG9hZC50aHJlYWRfaWQpXG4gIHJldHVybiBhY3Rpdml0eS5tZXNzYWdlXG59XG5cbmV4cG9ydCBjb25zdCBwdXNoRXhlY3V0aW9uU3RlcEZyb21Ob2RlID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgcGF5bG9hZDogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBTdHJlYW1FeGVjdXRpb25TdGVwW10gPT4ge1xuICBjb25zdCBtZXNzYWdlID0gcmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUocGF5bG9hZCwgdCwgY29udGV4dCwgdGhyZWFkSWQpXG4gIGxldCBjb21wbGV0ZWRQcmV2aW91cyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzKGN1cnJlbnRTdGVwcylcblxuICAvLyBjb250aW51ZS10aHJlYWQ6IGVsIGJhY2tlbmQgZW52w61hIGByZXN1bWluZ2AgeSBlbnNlZ3VpZGEgZWwgbm9kZSBkZSBsYSB0b29sXG4gIC8vIGNvbiBlbCBtaXNtbyBtZW5zYWplIGxlZ2libGUuIE9taXRpbW9zIGByZXN1bWluZ2AgcGFyYSBubyBkdXBsaWNhciBlbCBpbmRpY2Fkb3IuXG4gIGlmIChwYXlsb2FkLm5vZGUgPT09ICdyZXN1bWluZycgJiYgY29udGV4dD8ucGVuZGluZ0FjdGlvbnM/Lmxlbmd0aCkge1xuICAgIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdza2lwOnJlc3VtaW5nLXdpdGgtaGl0bC1jb250ZXh0Jywge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIHBlbmRpbmdUb29sczogY29udGV4dC5wZW5kaW5nQWN0aW9ucy5tYXAoYWN0aW9uID0+IGFjdGlvbi50b29sX25hbWUpLFxuICAgIH0pXG4gICAgcmV0dXJuIGNvbXBsZXRlZFByZXZpb3VzXG4gIH1cblxuICBpZiAocGF5bG9hZC5ub2RlICE9PSAncmVzdW1pbmcnKSB7XG4gICAgY29uc3QgbGFzdFN0ZXAgPSBjb21wbGV0ZWRQcmV2aW91c1tjb21wbGV0ZWRQcmV2aW91cy5sZW5ndGggLSAxXVxuICAgIGlmIChsYXN0U3RlcD8ubm9kZSA9PT0gJ3Jlc3VtaW5nJyAmJiBsYXN0U3RlcC5tZXNzYWdlLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBtZXNzYWdlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBzdHJlYW1EZWJ1Z0xvZygnZXhlY3V0aW9uU3RlcHMnLCAncmVwbGFjZTpyZWR1bmRhbnQtcmVzdW1pbmcnLCB7XG4gICAgICAgIHJlc3VtaW5nTWVzc2FnZTogbGFzdFN0ZXAubWVzc2FnZSxcbiAgICAgICAgdG9vbE5vZGU6IHBheWxvYWQubm9kZSxcbiAgICAgICAgdG9vbE5hbWU6IHBheWxvYWQudG9vbF9uYW1lLFxuICAgICAgfSlcbiAgICAgIGNvbXBsZXRlZFByZXZpb3VzID0gY29tcGxldGVkUHJldmlvdXMuc2xpY2UoMCwgLTEpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV3U3RlcDogU3RyZWFtRXhlY3V0aW9uU3RlcCA9IHtcbiAgICBpZDogbmV4dFN0ZXBJZCgpLFxuICAgIG1lc3NhZ2UsXG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xOYW1lOiBwYXlsb2FkLnRvb2xfbmFtZSA/PyAocGF5bG9hZC5ub2RlICE9PSAncmVzdW1pbmcnID8gcGF5bG9hZC5ub2RlIDogdW5kZWZpbmVkKSxcbiAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgfVxuICBjb25zdCBuZXh0U3RlcHMgPSBbLi4uY29tcGxldGVkUHJldmlvdXMsIG5ld1N0ZXBdXG4gIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdwdXNoJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZTogbmV3U3RlcC50b29sTmFtZSxcbiAgICBtZXNzYWdlOiBuZXdTdGVwLm1lc3NhZ2UsXG4gICAgc3RlcENvdW50OiBuZXh0U3RlcHMubGVuZ3RoLFxuICAgIGhhc0hpdGxDb250ZXh0OiBCb29sZWFuKGNvbnRleHQpLFxuICB9KVxuICByZXR1cm4gbmV4dFN0ZXBzXG59XG5cbi8qKiBBbCBpbmljaWFyIHRva2VuL2NvbnRlbnQ6IG1hcmNhIHRvb2xzIGNvbW8gY29tcGxldGFkYXMgeSBhZ3JlZ2EvYWN0dWFsaXphIGVsIHBhc28gZGUgZXNjcml0dXJhLiAqL1xuZXhwb3J0IGNvbnN0IGZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgd3JpdGluZ01lc3NhZ2U6IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgY29tcGxldGVkID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuICBjb25zdCB3cml0aW5nSW5kZXggPSBjb21wbGV0ZWQuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC5ub2RlID09PSAnX193cml0aW5nX18nKVxuXG4gIGlmICh3cml0aW5nSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBjb21wbGV0ZWQubWFwKChzdGVwLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSB3cml0aW5nSW5kZXggPyB7IC4uLnN0ZXAsIG1lc3NhZ2U6IHdyaXRpbmdNZXNzYWdlLCBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCB9IDogc3RlcFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uY29tcGxldGVkLFxuICAgIHtcbiAgICAgIGlkOiBuZXh0U3RlcElkKCksXG4gICAgICBtZXNzYWdlOiB3cml0aW5nTWVzc2FnZSxcbiAgICAgIG5vZGU6ICdfX3dyaXRpbmdfXycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBjb25zdCBtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW11cbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIC4uLmFjdGl2aXR5LFxuICBleGVjdXRpb25TdGVwczogc3RlcHMubGVuZ3RoID4gMCA/IHN0ZXBzIDogdW5kZWZpbmVkLFxufSlcblxuZXhwb3J0IGNvbnN0IGdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgfCBudWxsID0+IHtcbiAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsXG4gIGNvbnN0IHJ1bm5pbmcgPSBbLi4uc3RlcHNdLnJldmVyc2UoKS5maW5kKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJylcbiAgcmV0dXJuIHJ1bm5pbmcgPz8gc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLDZCQUE2QixRQUFRLDBCQUEwQjtBQUN4RSxTQUFTQyxjQUFjLFFBQVEsa0JBQWtCO0FBSWpELElBQUlDLG9CQUFvQixHQUFHLENBQUM7QUFFNUIsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBaUI7RUFDL0JELG9CQUFvQixJQUFJLENBQUM7RUFDekIsb0JBQUFFLE1BQUEsQ0FBb0JGLG9CQUFvQjtBQUMxQyxDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFBLEVBQWU7RUFDbkRILG9CQUFvQixHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEtBQTRCO0VBQUEsT0FDeERBLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUNDLE1BQU0sS0FBSyxTQUFTLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQixLQUFLRCxJQUFJO0VBQUEsQ0FBQyxDQUFDO0FBQUE7QUFFbkcsT0FBTyxJQUFNRywyQkFBMkIsR0FBR04sb0JBQW9CO0FBRS9ELE9BQU8sSUFBTU8seUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSU4sS0FBNEI7RUFB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
|
|
136
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInN0cmVhbURlYnVnTG9nIiwiZXhlY3V0aW9uU3RlcENvdW50ZXIiLCJuZXh0U3RlcElkIiwiY29uY2F0IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImNvbXBsZXRlUnVubmluZ1N0ZXBzIiwic3RlcHMiLCJtYXAiLCJzdGVwIiwic3RhdHVzIiwiX29iamVjdFNwcmVhZCIsImNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyIsImNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMiLCJnZXRSdW5uaW5nRXhlY3V0aW9uU3RlcHMiLCJmaWx0ZXIiLCJzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UiLCJsZW5ndGgiLCJydW5uaW5nIiwic29tZSIsInJlc29sdmVTdGVwTWVzc2FnZUZyb21Ob2RlIiwicGF5bG9hZCIsInQiLCJjb250ZXh0IiwidGhyZWFkSWQiLCJhY3Rpdml0eSIsIm1lc3NhZ2UiLCJ0aHJlYWRfaWQiLCJwdXNoRXhlY3V0aW9uU3RlcEZyb21Ob2RlIiwiY3VycmVudFN0ZXBzIiwiX2NvbnRleHQkcGVuZGluZ0FjdGlvIiwiX3BheWxvYWQkdG9vbF9uYW1lIiwiY29tcGxldGVkUHJldmlvdXMiLCJub2RlIiwicGVuZGluZ0FjdGlvbnMiLCJwZW5kaW5nVG9vbHMiLCJhY3Rpb24iLCJ0b29sX25hbWUiLCJsYXN0U3RlcCIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInJlc3VtaW5nTWVzc2FnZSIsInRvb2xOb2RlIiwidG9vbE5hbWUiLCJzbGljZSIsInVuZGVmaW5lZCIsIm5ld1N0ZXAiLCJpZCIsIm5leHRTdGVwcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInN0ZXBDb3VudCIsImhhc0hpdGxDb250ZXh0IiwiQm9vbGVhbiIsImZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nIiwid3JpdGluZ01lc3NhZ2UiLCJjb21wbGV0ZWQiLCJ3cml0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJpbmRleCIsIm1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMiLCJleGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJyZXZlcnNlIiwiZmluZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJlYW1FeGVjdXRpb25TdGVwcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0cmVhbUV4ZWN1dGlvblN0ZXAsIFN0cmVhbU5vZGVFdmVudFBheWxvYWQsIFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBzdHJlYW1EZWJ1Z0xvZyB9IGZyb20gJy4vc3RyZWFtRGVidWdMb2cnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5sZXQgZXhlY3V0aW9uU3RlcENvdW50ZXIgPSAwXG5cbmNvbnN0IG5leHRTdGVwSWQgPSAoKTogc3RyaW5nID0+IHtcbiAgZXhlY3V0aW9uU3RlcENvdW50ZXIgKz0gMVxuICByZXR1cm4gYGV4ZWMtc3RlcC0ke2V4ZWN1dGlvblN0ZXBDb3VudGVyfWBcbn1cblxuZXhwb3J0IGNvbnN0IHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIgPSAoKTogdm9pZCA9PiB7XG4gIGV4ZWN1dGlvblN0ZXBDb3VudGVyID0gMFxufVxuXG5jb25zdCBjb21wbGV0ZVJ1bm5pbmdTdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLm1hcChzdGVwID0+IChzdGVwLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8geyAuLi5zdGVwLCBzdGF0dXM6ICdjb21wbGV0ZWQnIGFzIGNvbnN0IH0gOiBzdGVwKSlcblxuZXhwb3J0IGNvbnN0IGNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzXG5cbmV4cG9ydCBjb25zdCBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzID0gKHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW10pOiBTdHJlYW1FeGVjdXRpb25TdGVwW10gPT5cbiAgc3RlcHMubWFwKHN0ZXAgPT4gKHsgLi4uc3RlcCwgc3RhdHVzOiAnY29tcGxldGVkJyBhcyBjb25zdCB9KSlcblxuZXhwb3J0IGNvbnN0IGdldFJ1bm5pbmdFeGVjdXRpb25TdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLmZpbHRlcihzdGVwID0+IHN0ZXAuc3RhdHVzID09PSAncnVubmluZycpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIXN0ZXBzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICBjb25zdCBydW5uaW5nID0gZ2V0UnVubmluZ0V4ZWN1dGlvblN0ZXBzKHN0ZXBzKVxuICBpZiAocnVubmluZy5sZW5ndGggPT09IHN0ZXBzLmxlbmd0aCkgcmV0dXJuIHJ1bm5pbmcubGVuZ3RoID49IDFcbiAgaWYgKHN0ZXBzLmxlbmd0aCA+PSAyKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gc3RlcHMuc29tZShzdGVwID0+IHN0ZXAuc3RhdHVzID09PSAnY29tcGxldGVkJylcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTdGVwTWVzc2FnZUZyb21Ob2RlID0gKFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgY29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbCxcbiAgdGhyZWFkSWQ/OiBzdHJpbmdcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGFjdGl2aXR5ID0gcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkocGF5bG9hZC5tZXNzYWdlLCB0LCBjb250ZXh0LCB0aHJlYWRJZCA/PyBwYXlsb2FkLnRocmVhZF9pZClcbiAgcmV0dXJuIGFjdGl2aXR5Lm1lc3NhZ2Vcbn1cblxuZXhwb3J0IGNvbnN0IHB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUgPSAoXG4gIGN1cnJlbnRTdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdLFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgY29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbCxcbiAgdGhyZWFkSWQ/OiBzdHJpbmdcbik6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSByZXNvbHZlU3RlcE1lc3NhZ2VGcm9tTm9kZShwYXlsb2FkLCB0LCBjb250ZXh0LCB0aHJlYWRJZClcbiAgbGV0IGNvbXBsZXRlZFByZXZpb3VzID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuXG4gIC8vIGNvbnRpbnVlLXRocmVhZDogZWwgYmFja2VuZCBlbnbDrWEgYHJlc3VtaW5nYCB5IGVuc2VndWlkYSBlbCBub2RlIGRlIGxhIHRvb2xcbiAgLy8gY29uIGVsIG1pc21vIG1lbnNhamUgbGVnaWJsZS4gT21pdGltb3MgYHJlc3VtaW5nYCBwYXJhIG5vIGR1cGxpY2FyIGVsIGluZGljYWRvci5cbiAgaWYgKHBheWxvYWQubm9kZSA9PT0gJ3Jlc3VtaW5nJyAmJiBjb250ZXh0Py5wZW5kaW5nQWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgc3RyZWFtRGVidWdMb2coJ2V4ZWN1dGlvblN0ZXBzJywgJ3NraXA6cmVzdW1pbmctd2l0aC1oaXRsLWNvbnRleHQnLCB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgcGVuZGluZ1Rvb2xzOiBjb250ZXh0LnBlbmRpbmdBY3Rpb25zLm1hcChhY3Rpb24gPT4gYWN0aW9uLnRvb2xfbmFtZSksXG4gICAgfSlcbiAgICByZXR1cm4gY29tcGxldGVkUHJldmlvdXNcbiAgfVxuXG4gIGlmIChwYXlsb2FkLm5vZGUgIT09ICdyZXN1bWluZycpIHtcbiAgICBjb25zdCBsYXN0U3RlcCA9IGNvbXBsZXRlZFByZXZpb3VzW2NvbXBsZXRlZFByZXZpb3VzLmxlbmd0aCAtIDFdXG4gICAgaWYgKGxhc3RTdGVwPy5ub2RlID09PSAncmVzdW1pbmcnICYmIGxhc3RTdGVwLm1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IG1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdyZXBsYWNlOnJlZHVuZGFudC1yZXN1bWluZycsIHtcbiAgICAgICAgcmVzdW1pbmdNZXNzYWdlOiBsYXN0U3RlcC5tZXNzYWdlLFxuICAgICAgICB0b29sTm9kZTogcGF5bG9hZC5ub2RlLFxuICAgICAgICB0b29sTmFtZTogcGF5bG9hZC50b29sX25hbWUsXG4gICAgICB9KVxuICAgICAgY29tcGxldGVkUHJldmlvdXMgPSBjb21wbGV0ZWRQcmV2aW91cy5zbGljZSgwLCAtMSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB0b29sTmFtZSA9IHBheWxvYWQudG9vbF9uYW1lID8/IChwYXlsb2FkLm5vZGUgIT09ICdyZXN1bWluZycgPyBwYXlsb2FkLm5vZGUgOiB1bmRlZmluZWQpXG4gIGNvbnN0IGxhc3RTdGVwID0gY29tcGxldGVkUHJldmlvdXNbY29tcGxldGVkUHJldmlvdXMubGVuZ3RoIC0gMV1cbiAgaWYgKFxuICAgIGxhc3RTdGVwPy5zdGF0dXMgPT09ICdydW5uaW5nJyAmJlxuICAgIGxhc3RTdGVwLnRvb2xOYW1lID09PSB0b29sTmFtZSAmJlxuICAgIGxhc3RTdGVwLm1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IG1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgKSB7XG4gICAgc3RyZWFtRGVidWdMb2coJ2V4ZWN1dGlvblN0ZXBzJywgJ3NraXA6ZHVwbGljYXRlLXJ1bm5pbmcnLCB7XG4gICAgICBub2RlOiBwYXlsb2FkLm5vZGUsXG4gICAgICB0b29sTmFtZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgfSlcbiAgICByZXR1cm4gY29tcGxldGVkUHJldmlvdXNcbiAgfVxuXG4gIGNvbnN0IG5ld1N0ZXA6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgPSB7XG4gICAgaWQ6IG5leHRTdGVwSWQoKSxcbiAgICBtZXNzYWdlLFxuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZSxcbiAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgfVxuICBjb25zdCBuZXh0U3RlcHMgPSBbLi4uY29tcGxldGVkUHJldmlvdXMsIG5ld1N0ZXBdXG4gIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdwdXNoJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZTogbmV3U3RlcC50b29sTmFtZSxcbiAgICBtZXNzYWdlOiBuZXdTdGVwLm1lc3NhZ2UsXG4gICAgc3RlcENvdW50OiBuZXh0U3RlcHMubGVuZ3RoLFxuICAgIGhhc0hpdGxDb250ZXh0OiBCb29sZWFuKGNvbnRleHQpLFxuICB9KVxuICByZXR1cm4gbmV4dFN0ZXBzXG59XG5cbi8qKiBBbCBpbmljaWFyIHRva2VuL2NvbnRlbnQ6IG1hcmNhIHRvb2xzIGNvbW8gY29tcGxldGFkYXMgeSBhZ3JlZ2EvYWN0dWFsaXphIGVsIHBhc28gZGUgZXNjcml0dXJhLiAqL1xuZXhwb3J0IGNvbnN0IGZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgd3JpdGluZ01lc3NhZ2U6IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgY29tcGxldGVkID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuICBjb25zdCB3cml0aW5nSW5kZXggPSBjb21wbGV0ZWQuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC5ub2RlID09PSAnX193cml0aW5nX18nKVxuXG4gIGlmICh3cml0aW5nSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBjb21wbGV0ZWQubWFwKChzdGVwLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSB3cml0aW5nSW5kZXggPyB7IC4uLnN0ZXAsIG1lc3NhZ2U6IHdyaXRpbmdNZXNzYWdlLCBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCB9IDogc3RlcFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uY29tcGxldGVkLFxuICAgIHtcbiAgICAgIGlkOiBuZXh0U3RlcElkKCksXG4gICAgICBtZXNzYWdlOiB3cml0aW5nTWVzc2FnZSxcbiAgICAgIG5vZGU6ICdfX3dyaXRpbmdfXycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBjb25zdCBtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW11cbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIC4uLmFjdGl2aXR5LFxuICBleGVjdXRpb25TdGVwczogc3RlcHMubGVuZ3RoID4gMCA/IHN0ZXBzIDogdW5kZWZpbmVkLFxufSlcblxuZXhwb3J0IGNvbnN0IGdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgfCBudWxsID0+IHtcbiAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsXG4gIGNvbnN0IHJ1bm5pbmcgPSBbLi4uc3RlcHNdLnJldmVyc2UoKS5maW5kKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJylcbiAgcmV0dXJuIHJ1bm5pbmcgPz8gc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLDZCQUE2QixRQUFRLDBCQUEwQjtBQUN4RSxTQUFTQyxjQUFjLFFBQVEsa0JBQWtCO0FBSWpELElBQUlDLG9CQUFvQixHQUFHLENBQUM7QUFFNUIsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBaUI7RUFDL0JELG9CQUFvQixJQUFJLENBQUM7RUFDekIsb0JBQUFFLE1BQUEsQ0FBb0JGLG9CQUFvQjtBQUMxQyxDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFBLEVBQWU7RUFDbkRILG9CQUFvQixHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEtBQTRCO0VBQUEsT0FDeERBLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUNDLE1BQU0sS0FBSyxTQUFTLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQixLQUFLRCxJQUFJO0VBQUEsQ0FBQyxDQUFDO0FBQUE7QUFFbkcsT0FBTyxJQUFNRywyQkFBMkIsR0FBR04sb0JBQW9CO0FBRS9ELE9BQU8sSUFBTU8seUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSU4sS0FBNEI7RUFBQSxPQUNwRUEsS0FBSyxDQUFDQyxHQUFHLENBQUMsVUFBQUMsSUFBSTtJQUFBLE9BQUFFLGFBQUEsQ0FBQUEsYUFBQSxLQUFVRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQjtFQUFBLENBQUcsQ0FBQztBQUFBO0FBRWhFLE9BQU8sSUFBTUksd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FB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
|