@projectcor/maia-components 2.11.100-2 → 2.11.100-4
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/StreamAssistantTurnTimeline/StreamAssistantTurnTimeline.js +18 -19
- package/lib/hooks/useChatManager/useChatManager.js +1 -14
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +3 -2
- package/lib/utils/streamDebugLog.js +6 -5
- package/lib/utils/streamExecutionSteps.js +25 -2
- package/package.json +1 -1
|
@@ -194,7 +194,8 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
194
194
|
}, [applyStreamActivity, hitlExecutionContextRef, t]);
|
|
195
195
|
var handleStreamWritingStarted = useCallback(function () {
|
|
196
196
|
syncStreamTimelineContent(accumulatedContentRef.current);
|
|
197
|
-
|
|
197
|
+
applyStreamActivityPreservingSteps(getWritingStreamActivity(t));
|
|
198
|
+
}, [applyStreamActivityPreservingSteps, syncStreamTimelineContent, t]);
|
|
198
199
|
useEffect(function () {
|
|
199
200
|
streamActivityRef.current = streamActivity;
|
|
200
201
|
}, [streamActivity]);
|
|
@@ -730,4 +731,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
730
731
|
resetStreamExecutionTrace: resetStreamExecutionTrace
|
|
731
732
|
};
|
|
732
733
|
};
|
|
733
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzIiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lIiwiYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUiLCJmaW5hbGl6ZVN0cmVhbVRpbWVsaW5lIiwic3RhcnRTdHJlYW1UaW1lbGluZVR1cm4iLCJzdHJlYW1UaW1lbGluZVN0b3JlIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInN0cmVhbURlYnVnQWN0aXZpdHkiLCJzdHJlYW1EZWJ1Z0FwcHJvdmFsIiwic3RyZWFtRGVidWdMb2ciLCJzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAiLCJzdHJlYW1EZWJ1Z05vZGUiLCJzdHJlYW1EZWJ1Z1NzZSIsInN1bW1hcml6ZUhpdGxDb250ZXh0Iiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwic3RyZWFtQWN0aXZpdHlSZWYiLCJleGVjdXRpb25TdGVwc1JlZiIsImFjY3VtdWxhdGVkQ29udGVudFJlZiIsIm9uU3RyZWFtVXBkYXRlUmVmIiwib25GaW5pc2hTdHJlYW1SZWYiLCJvblN0YXJ0V3JpdGluZ1JlZiIsIm9uU3RvcFJlZiIsIm9uRXJyb3JSZWYiLCJvbkFwcHJvdmFsUmVxdWlyZWRSZWYiLCJjdXJyZW50IiwiY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUiLCJwcmV2aW91c1R1cm5JZCIsImdldFNuYXBzaG90IiwidHVybklkIiwiZXhlY3V0aW9uU3RlcENvdW50IiwibGVuZ3RoIiwiY2xlYXIiLCJiZWdpblN0cmVhbVRpbWVsaW5lVHVybiIsInJlcGxhY2UiLCJzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50IiwiYWNjdW11bGF0ZWRUZXh0IiwibmV4dCIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJwcmVzZXJ2ZWRTdGVwcyIsImFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMiLCJzdGVwcyIsInJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UiLCJmaW5hbGl6ZVN0cmVhbUV4ZWN1dGlvblRyYWNlIiwiX2FjdGl2ZVN0ZXAkbWVzc2FnZSIsImNvbXBsZXRlZFN0ZXBzIiwiYWN0aXZlU3RlcCIsImhhbmRsZVN0cmVhbU5vZGVFdmVudCIsInBheWxvYWQiLCJub2RlIiwic2tpcHBlZCIsInRocmVhZElkIiwidGhyZWFkX2lkIiwidW5kZWZpbmVkIiwiaGl0bENvbnRleHQiLCJ0aW1lbGluZU5leHQiLCJsYXN0RXhlY3V0aW9uIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2VnbWVudHMiLCJyZXZlcnNlIiwiZmluZCIsInNlZ21lbnQiLCJ0eXBlIiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInNjb3BlIiwic291cmNlIiwibm9kZVBheWxvYWQiLCJhY3Rpdml0eU1lc3NhZ2UiLCJ1aVN1cmZhY2VzIiwiaGFuZGxlU3RyZWFtV3JpdGluZ1N0YXJ0ZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJfcHJldiRleGVjdXRpb25TdGVwcyIsImFkdmFuY2VkIiwibmV4dEluZGV4IiwibWVyZ2VkQWN0aXZpdHkiLCJfb2JqZWN0U3ByZWFkIiwiZXhlY3V0aW9uU3RlcHMiLCJjbGVhckludGVydmFsIiwiaGFuZGxlU1NFU3RyZWFtIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJlc3BvbnNlIiwiX29uRXJyb3JSZWYkY3VycmVudCIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwicGVuZGluZ0NvbnRlbnQiLCJ0aHJvdHRsZVRpbWVyIiwic3RyZWFtU2V0dGxlZCIsImVtaXRUaHJvdHRsZWQiLCJmbHVzaFBlbmRpbmciLCJfcmVzcG9uc2UkYm9keSIsInJlYWRlciIsImRlY29kZXIiLCJidWZmZXIiLCJhY2N1bXVsYXRlZENvbnRlbnQiLCJoYXNTdGFydGVkV3JpdGluZyIsImVuc3VyZVdyaXRpbmdTdGFydGVkIiwiYXBwbHlTdHJlYW1DaHVuayIsImFwcGx5U3RyZWFtQ29tcGxldGUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGluZSIsIl9saW5lJHNwbGl0IiwiX2xpbmUkc3BsaXQyIiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJkYXRhU3RyIiwiX2RhdGEiLCJjaHVuayIsIl9jaHVuayIsIl9vbkFwcHJvdmFsUmVxdWlyZWRSZSIsImlzTWFudWFsQXBwcm92YWwiLCJtYW51YWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJjb250ZW50Iiwic2V0VGltZW91dCIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjbGVhclRpbWVvdXQiLCJfb25TdHJlYW1VcGRhdGVSZWYkY3UyIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfb25TdGFydFdyaXRpbmdSZWYkY3UiLCJhY2N1bXVsYXRlZExlbmd0aCIsIl9wYXlsb2FkJGFnZW50X2lkIiwiX3N1YmFnZW50UmF3JHJlc29sdmVkIiwiX29uRmluaXNoU3RyZWFtUmVmJGN1IiwiZmluYWxDb250ZW50IiwiZmluYWxDb250ZW50TGVuZ3RoIiwidGltZWxpbmUiLCJzb3VyY2VzIiwibWVtb3J5U2Vzc2lvbklkIiwibWVtb3J5X3Nlc3Npb25faWQiLCJhdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsInN1Z2dlc3Rpb25zIiwic3VnZ2VzdF9yZXBseSIsImFnZW50SWRSYXciLCJhZ2VudF9pZCIsImFnZW50SWQiLCJjb21wbGV0ZWRBZ2VudElkIiwiU3RyaW5nIiwidHJpbSIsInN1YmFnZW50UmF3Iiwic3ViYWdlbnQiLCJyZXNvbHZlZENvbnRleHQiLCJyZXNvbHZlZF9jb250ZXh0IiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJKU09OIiwicGFyc2UiLCJ0b29sX25hbWUiLCJtZXNzYWdlUHJldmlldyIsInNsaWNlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsInBlbmRpbmdUb29scyIsInBlbmRpbmdfYWN0aW9ucyIsIm1hcCIsImEiLCJ3aWxsQ2xlYXJMb2FkaW5nU3RhdGUiLCJjb25zb2xlIiwiZXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImFza01haWEiLCJfcmVmNCIsIl9jYWxsZWUyIiwiX3JlZjMiLCJoaXN0b3J5IiwicHJvamVjdElkIiwibGFuZyIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY2hhdElkIiwibWVzc2FnZUlkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJhZ2VudE5hbWUiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImNvbnRleHREYXRhIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsImlucHV0Iiwic2lnbmFsIiwiX3gyIiwic3RvcFN0cmVhbWluZyIsIl9vblN0b3BSZWYkY3VycmVudCIsImFib3J0IiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5IiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3VzZU9yY2hlc3RyYXRvclN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcywgUmVzb2x2ZWRDb250ZXh0IH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtRXhlY3V0aW9uU3RlcCwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQge1xuICBjb21wbGV0ZUFsbEV4ZWN1dGlvblN0ZXBzLFxuICBmaW5hbGl6ZUV4ZWN1dGlvblN0ZXBzRm9yV3JpdGluZyxcbiAgZ2V0QWN0aXZlRXhlY3V0aW9uU3RlcCxcbiAgbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyxcbiAgcHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSxcbiAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcixcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMnXG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50VG9TdHJlYW1UaW1lbGluZSxcbiAgYXBwZW5kTm9kZVRvU3RyZWFtVGltZWxpbmUsXG4gIGZpbmFsaXplU3RyZWFtVGltZWxpbmUsXG4gIHN0YXJ0U3RyZWFtVGltZWxpbmVUdXJuLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1UaW1lbGluZSdcbmltcG9ydCB7IHN0cmVhbVRpbWVsaW5lU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1UaW1lbGluZS9zdHJlYW1UaW1lbGluZVN0b3JlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7XG4gIHN0cmVhbURlYnVnQWN0aXZpdHksXG4gIHN0cmVhbURlYnVnQXBwcm92YWwsXG4gIHN0cmVhbURlYnVnTG9nLFxuICBzdHJlYW1EZWJ1Z0xvZ0hpdGxVaU92ZXJsYXAsXG4gIHN0cmVhbURlYnVnTm9kZSxcbiAgc3RyZWFtRGVidWdTc2UsXG4gIHN1bW1hcml6ZUhpdGxDb250ZXh0LFxuICBzdW1tYXJpemVUaW1lbGluZVNuYXBzaG90LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1EZWJ1Z0xvZydcblxudHlwZSBTdWJhZ2VudFJhdyA9IHsgbmFtZT86IHN0cmluZzsgcmVzb2x2ZWRfY29udGV4dD86IFJlc29sdmVkQ29udGV4dCB8IG51bGwgfSB8IG51bGwgfCB1bmRlZmluZWRcblxuZXhwb3J0IGNvbnN0IHVzZU9yY2hlc3RyYXRvclN0cmVhbSA9ICh7XG4gIG9uU3RyZWFtVXBkYXRlLFxuICBvbkZpbmlzaFN0cmVhbSxcbiAgb25TdGFydFdyaXRpbmcsXG4gIG9uU3RvcCxcbiAgb25FcnJvcixcbiAgb25BcHByb3ZhbFJlcXVpcmVkLFxuICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbn06IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmNoYXRBSV0pXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlLCBzZXRMb2FkaW5nTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc3RyZWFtQWN0aXZpdHksIHNldFN0cmVhbUFjdGl2aXR5XSA9IHVzZVN0YXRlPFN0cmVhbUFjdGl2aXR5IHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWJvcnRDb250cm9sbGVyUmVmID0gdXNlUmVmPEFib3J0Q29udHJvbGxlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzU3RvcHBlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc3RyZWFtQWN0aXZpdHlSZWYgPSB1c2VSZWY8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBleGVjdXRpb25TdGVwc1JlZiA9IHVzZVJlZjxTdHJlYW1FeGVjdXRpb25TdGVwW10+KFtdKVxuICBjb25zdCBhY2N1bXVsYXRlZENvbnRlbnRSZWYgPSB1c2VSZWYoJycpXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdHJlYW1EZWJ1Z0xvZygnb3JjaGVzdHJhdG9yJywgJ2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlJywge1xuICAgICAgcHJldmlvdXNUdXJuSWQ6IHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKS50dXJuSWQsXG4gICAgICBleGVjdXRpb25TdGVwQ291bnQ6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50ID0gJydcbiAgICByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyKClcbiAgICBzdHJlYW1UaW1lbGluZVN0b3JlLmNsZWFyKClcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGJlZ2luU3RyZWFtVGltZWxpbmVUdXJuID0gdXNlQ2FsbGJhY2soKHR1cm5JZDogc3RyaW5nKSA9PiB7XG4gICAgc3RyZWFtRGVidWdMb2coJ29yY2hlc3RyYXRvcicsICdiZWdpblN0cmVhbVRpbWVsaW5lVHVybicsIHsgdHVybklkIH0pXG4gICAgYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQgPSAnJ1xuICAgIGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQgPSBbXVxuICAgIHJlc2V0RXhlY3V0aW9uU3RlcENvdW50ZXIoKVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShzdGFydFN0cmVhbVRpbWVsaW5lVHVybih0dXJuSWQpKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50ID0gdXNlQ2FsbGJhY2soKGFjY3VtdWxhdGVkVGV4dDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbmV4dCA9IGFwcGVuZENvbnRlbnRUb1N0cmVhbVRpbWVsaW5lKHN0cmVhbVRpbWVsaW5lU3RvcmUuZ2V0U25hcHNob3QoKSwgYWNjdW11bGF0ZWRUZXh0KVxuICAgIHN0cmVhbVRpbWVsaW5lU3RvcmUucmVwbGFjZShuZXh0KVxuICB9LCBbXSlcblxuICBjb25zdCBhcHBseVN0cmVhbUFjdGl2aXR5ID0gdXNlQ2FsbGJhY2soKGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSkgPT4ge1xuICAgIGNvbnN0IHByZXYgPSBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50XG4gICAgaWYgKHByZXY/LnBoYXNlID09PSBhY3Rpdml0eS5waGFzZSAmJiBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKGFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChwcmV2Py5waGFzZSAhPT0gYWN0aXZpdHkucGhhc2UpIHtcbiAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgfVxuICAgIHN0cmVhbUFjdGl2aXR5UmVmLmN1cnJlbnQgPSBhY3Rpdml0eVxuICAgIHNldFN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIHNldExvYWRpbmdNZXNzYWdlKGFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgc3RyZWFtRGVidWdBY3Rpdml0eSgnb3JjaGVzdHJhdG9yJywgJ2FwcGx5U3RyZWFtQWN0aXZpdHknLCBhY3Rpdml0eSwge1xuICAgICAgcHJlc2VydmVkU3RlcHM6IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnQubGVuZ3RoLFxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQWN0aXZpdHlQcmVzZXJ2aW5nU3RlcHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5KSA9PiB7XG4gICAgICBjb25zdCBzdGVwcyA9IGV4ZWN1dGlvblN0ZXBzUmVmLmN1cnJlbnRcbiAgICAgIGlmIChzdGVwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkobWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhhY3Rpdml0eSwgc3RlcHMpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpXG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eV1cbiAgKVxuXG4gIGNvbnN0IHJlc2V0U3RyZWFtRXhlY3V0aW9uVHJhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudCA9IFtdXG4gICAgcmVzZXRFeGVjdXRpb25TdGVwQ291bnRlcigpXG4gIH0sIFtdKVxuXG4gIC8qKiBNYXJjYSBlbCByYXN0cm8gY29tbyBjb21wbGV0YWRvIHkgbG8gbWFudGllbmUgdmlzaWJsZSAobm8gbGltcGlhIGhhc3RhIGVsIHByw7N4aW1vIHR1cm5vKS4gKi9cbiAgY29uc3QgZmluYWxpemVTdHJlYW1FeGVjdXRpb25UcmFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjb21wbGV0ZWRTdGVwcyA9IGNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMoZXhlY3V0aW9uU3RlcHNSZWYuY3VycmVudClcbiAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gY29tcGxldGVkU3RlcHNcblxuICAgIGlmIChjb21wbGV0ZWRTdGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZVN0ZXAgPSBnZXRBY3RpdmVFeGVjdXRpb25TdGVwKGNvbXBsZXRlZFN0ZXBzKVxuICAgIGNvbnN0IGFjdGl2aXR5ID0gbWVyZ2VBY3Rpdml0eVdpdGhFeGVjdXRpb25TdGVwcyhcbiAgICAgIHtcbiAgICAgICAgcGhhc2U6ICd3cml0aW5nJyxcbiAgICAgICAgbWVzc2FnZTogYWN0aXZlU3RlcD8ubWVzc2FnZSA/PyBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkubWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZWRTdGVwc1xuICAgIClcbiAgICBzdHJlYW1BY3Rpdml0eVJlZi5jdXJyZW50ID0gYWN0aXZpdHlcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICBzZXRMb2FkaW5nTWVzc2FnZShudWxsKVxuICB9LCBbY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbU5vZGVFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIChwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLCBhY2N1bXVsYXRlZFRleHQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChwYXlsb2FkLm5vZGUgPT09ICdhZ2VudF90cmFuc2ZlcicpIHtcbiAgICAgICAgc3RyZWFtRGVidWdOb2RlKCdvcmNoZXN0cmF0b3InLCBwYXlsb2FkLCB7IHNraXBwZWQ6ICdhZ2VudF90cmFuc2ZlcicgfSlcbiAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICghcGF5bG9hZC5tZXNzYWdlIHx8IHR5cGVvZiBwYXlsb2FkLm1lc3NhZ2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwgeyBza2lwcGVkOiAnbWlzc2luZ19tZXNzYWdlJyB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgY29uc3QgdGhyZWFkSWQgPSB0eXBlb2YgcGF5bG9hZC50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gcGF5bG9hZC50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0ID0gaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWY/LmN1cnJlbnRcbiAgICAgIHN0cmVhbURlYnVnTm9kZSgnb3JjaGVzdHJhdG9yJywgcGF5bG9hZCwge1xuICAgICAgICB0aHJlYWRJZCxcbiAgICAgICAgaGl0bENvbnRleHQ6IGhpdGxDb250ZXh0ID8gc3VtbWFyaXplSGl0bENvbnRleHQoaGl0bENvbnRleHQpIDogbnVsbCxcbiAgICAgIH0pXG4gICAgICBjb25zdCB0aW1lbGluZU5leHQgPSBhcHBlbmROb2RlVG9TdHJlYW1UaW1lbGluZShcbiAgICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5nZXRTbmFwc2hvdCgpLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICBhY2N1bXVsYXRlZFRleHQgPz8gYWNjdW11bGF0ZWRDb250ZW50UmVmLmN1cnJlbnQsXG4gICAgICAgIHQsXG4gICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICB0aHJlYWRJZFxuICAgICAgKVxuICAgICAgc3RyZWFtVGltZWxpbmVTdG9yZS5yZXBsYWNlKHRpbWVsaW5lTmV4dClcblxuICAgICAgY29uc3QgbGFzdEV4ZWN1dGlvbiA9IFsuLi50aW1lbGluZU5leHQuc2VnbWVudHNdLnJldmVyc2UoKS5maW5kKHNlZ21lbnQgPT4gc2VnbWVudC50eXBlID09PSAnZXhlY3V0aW9uJylcbiAgICAgIGlmIChsYXN0RXhlY3V0aW9uPy50eXBlID09PSAnZXhlY3V0aW9uJykge1xuICAgICAgICBleGVjdXRpb25TdGVwc1JlZi5jdXJyZW50ID0gbGFzdEV4ZWN1dGlvbi5zdGVwc1xuICAgICAgICBjb25zdCBhY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgIHBheWxvYWQubWVzc2FnZSxcbiAgICAgICAgICB0LFxuICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgIHRocmVhZElkLFxuICAgICAgICAgIHBheWxvYWQubm9kZSA9PT0gJ3Jlc3VtaW5nJyA/IHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9IDogdW5kZWZpbmVkXG4gICAgICAgIClcbiAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzKGFjdGl2aXR5LCBsYXN0RXhlY3V0aW9uLnN0ZXBzKSlcbiAgICAgICAgc3RyZWFtRGVidWdBY3Rpdml0eSgnb3JjaGVzdHJhdG9yJywgJ25vZGU6YWN0aXZpdHknLCBhY3Rpdml0eSwge1xuICAgICAgICAgIGV4ZWN1dGlvblN0ZXBDb3VudDogbGFzdEV4ZWN1dGlvbi5zdGVwcy5sZW5ndGgsXG4gICAgICAgIH0pXG4gICAgICAgIHN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCh7XG4gICAgICAgICAgc2NvcGU6ICdvcmNoZXN0cmF0b3InLFxuICAgICAgICAgIHNvdXJjZTogJ25vZGUnLFxuICAgICAgICAgIG5vZGVQYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICAgIGFjdGl2aXR5TWVzc2FnZTogYWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICBoaXRsQ29udGV4dCxcbiAgICAgICAgICB1aVN1cmZhY2VzOiBbJ3N0cmVhbUFjdGl2aXR5JywgJ3N0cmVhbVRpbWVsaW5lJ10sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXBwbHlTdHJlYW1BY3Rpdml0eSwgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50KGFjY3VtdWxhdGVkQ29udGVudFJlZi5jdXJyZW50KVxuICB9LCBbc3luY1N0cmVhbVRpbWVsaW5lQ29udGVudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+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+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWFjdGl2aXR5KSB7XG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXVxuICApXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICAgIGhhbmRsZVN0cmVhbU5vZGVFdmVudCxcbiAgICBoYW5kbGVTdHJlYW1Xcml0aW5nU3RhcnRlZCxcbiAgICBiZWdpblN0cmVhbVRpbWVsaW5lVHVybixcbiAgICBzeW5jU3RyZWFtVGltZWxpbmVDb250ZW50LFxuICAgIGZpbmFsaXplU3RyZWFtRXhlY3V0aW9uVHJhY2UsXG4gICAgcmVzZXRTdHJlYW1FeGVjdXRpb25UcmFjZSxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFLdEMsU0FBU0MsUUFBUSxRQUFRLHdCQUF3QjtBQUVqRCxTQUNFQywwQkFBMEIsRUFDMUJDLDRCQUE0QixFQUM1QkMsK0JBQStCLEVBQy9CQyw0QkFBNEIsRUFDNUJDLHdCQUF3QixFQUN4QkMseUJBQXlCLEVBQ3pCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsZ0NBQWdDLFFBQzNCLG9DQUFvQztBQUMzQyxTQUNFQyx5QkFBeUIsRUFFekJDLHNCQUFzQixFQUN0QkMsK0JBQStCLEVBRS9CQyx5QkFBeUIsUUFDcEIsa0NBQWtDO0FBQ3pDLFNBQ0VDLDZCQUE2QixFQUM3QkMsMEJBQTBCLEVBQzFCQyxzQkFBc0IsRUFDdEJDLHVCQUF1QixRQUNsQiw0QkFBNEI7QUFDbkMsU0FBU0MsbUJBQW1CLFFBQVEsMENBQTBDO0FBQzlFLFNBQVNDLHdCQUF3QixFQUFFQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDekYsU0FDRUMsbUJBQW1CLEVBQ25CQyxtQkFBbUIsRUFDbkJDLGNBQWMsRUFDZEMsMkJBQTJCLEVBQzNCQyxlQUFlLEVBQ2ZDLGNBQWMsRUFDZEMsb0JBQW9CLEVBQ3BCQyx5QkFBeUIsUUFDcEIsNEJBQTRCO0FBSW5DLE9BQU8sSUFBTUMscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBQUMsSUFBQSxFQVFBO0VBQUEsSUFQaENDLGNBQWMsR0FBQUQsSUFB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LEVBQUUsQ0FBQ0EsdUJBQXVCLENBQUMsQ0FBQzs7RUFFN0I7RUFDQTtFQUNBO0VBQ0E5RSxTQUFTLENBQUMsWUFBTTtJQUNkLE9BQU8sWUFBTTtNQUNYLElBQUlpRSxrQkFBa0IsQ0FBQ1ksT0FBTyxFQUFFO1FBQzlCWixrQkFBa0IsQ0FBQ1ksT0FBTyxDQUFDa08sS0FBSyxDQUFDLENBQUM7UUFDbEM5TyxrQkFBa0IsQ0FBQ1ksT0FBTyxHQUFHLElBQUk7TUFDbkM7SUFDRixDQUFDO0VBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1vTyxvQkFBb0IsR0FBR25ULFdBQVcsQ0FDdEMsVUFBQzZGLFFBQStCLEVBQUs7SUFDbkMsSUFBSSxDQUFDQSxRQUFRLEVBQUU7TUFDYmIsdUJBQXVCLENBQUMsQ0FBQztNQUN6QjtJQUNGO0lBQ0FZLG1CQUFtQixDQUFDQyxRQUFRLENBQUM7RUFDL0IsQ0FBQyxFQUNELENBQUNELG1CQUFtQixFQUFFWix1QkFBdUIsQ0FDL0MsQ0FBQztFQUVELElBQU1vTyxLQUFLLEdBQUcsU0FBUkEsS0FBS0EsQ0FBQSxFQUFTO0lBQ2xCbFEsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNiSSxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ2pCSSxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ25Cc0IsdUJBQXVCLENBQUMsQ0FBQztJQUN6QlosWUFBWSxDQUFDVyxPQUFPLEdBQUcsS0FBSztFQUM5QixDQUFDO0VBRUQsT0FBTztJQUNMbUwsT0FBTyxFQUFQQSxPQUFPO0lBQ1BsSCxRQUFRLEVBQUUvRixJQUFJO0lBQ2RJLFNBQVMsRUFBVEEsU0FBUztJQUNUSSxTQUFTLEVBQVRBLFNBQVM7SUFDVEksY0FBYyxFQUFkQSxjQUFjO0lBQ2RJLGNBQWMsRUFBZEEsY0FBYztJQUNka1Asb0JBQW9CLEVBQXBCQSxvQkFBb0I7SUFDcEJDLEtBQUssRUFBTEEsS0FBSztJQUNMTCxhQUFhLEVBQWJBLGFBQWE7SUFDYkcsbUJBQW1CLEVBQW5CQSxtQkFBbUI7SUFDbkJ4SyxlQUFlLEVBQWZBLGVBQWU7SUFBRTtJQUNqQmpDLHFCQUFxQixFQUFyQkEscUJBQXFCO0lBQ3JCc0IsMEJBQTBCLEVBQTFCQSwwQkFBMEI7SUFDMUJ4Qyx1QkFBdUIsRUFBdkJBLHVCQUF1QjtJQUN2QkUseUJBQXlCLEVBQXpCQSx5QkFBeUI7SUFDekJZLDRCQUE0QixFQUE1QkEsNEJBQTRCO0lBQzVCRCx5QkFBeUIsRUFBekJBO0VBQ0YsQ0FBQztBQUNILENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
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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
|
|
@@ -150,11 +150,12 @@ export var streamDebugLogHitlUiOverlap = function streamDebugLogHitlUiOverlap(pa
|
|
|
150
150
|
var nodeTool = (_params$nodePayload$t = (_params$nodePayload = params.nodePayload) === null || _params$nodePayload === void 0 ? void 0 : _params$nodePayload.tool_name) !== null && _params$nodePayload$t !== void 0 ? _params$nodePayload$t : (_params$nodePayload2 = params.nodePayload) === null || _params$nodePayload2 === void 0 ? void 0 : _params$nodePayload2.node;
|
|
151
151
|
var activityMsg = (_params$activityMessa = (_params$activityMessa2 = params.activityMessage) === null || _params$activityMessa2 === void 0 ? void 0 : _params$activityMessa2.trim().toLowerCase()) !== null && _params$activityMessa !== void 0 ? _params$activityMessa : '';
|
|
152
152
|
var backendMsg = (_params$nodePayload$m = (_params$nodePayload3 = params.nodePayload) === null || _params$nodePayload3 === void 0 || (_params$nodePayload3 = _params$nodePayload3.message) === null || _params$nodePayload3 === void 0 ? void 0 : _params$nodePayload3.trim().toLowerCase()) !== null && _params$nodePayload$m !== void 0 ? _params$nodePayload$m : '';
|
|
153
|
-
var toolOverlap = nodeTool && pendingTools.some(function (tool) {
|
|
154
|
-
return tool === nodeTool
|
|
153
|
+
var toolOverlap = nodeTool && nodeTool !== 'resuming' && pendingTools.some(function (tool) {
|
|
154
|
+
return tool === nodeTool;
|
|
155
155
|
});
|
|
156
156
|
var hasMultipleSurfaces = ((_params$uiSurfaces$le = (_params$uiSurfaces = params.uiSurfaces) === null || _params$uiSurfaces === void 0 ? void 0 : _params$uiSurfaces.length) !== null && _params$uiSurfaces$le !== void 0 ? _params$uiSurfaces$le : 0) >= 2;
|
|
157
|
-
|
|
157
|
+
var messagesMatch = activityMsg.length > 0 && backendMsg.length > 0 && activityMsg === backendMsg;
|
|
158
|
+
if (!toolOverlap && !(hasMultipleSurfaces && messagesMatch)) return;
|
|
158
159
|
streamDebugWarn(params.scope, 'hitl-ui-overlap-suspect', {
|
|
159
160
|
source: params.source,
|
|
160
161
|
uiSurfaces: params.uiSurfaces,
|
|
@@ -162,8 +163,8 @@ export var streamDebugLogHitlUiOverlap = function streamDebugLogHitlUiOverlap(pa
|
|
|
162
163
|
nodeTool: nodeTool,
|
|
163
164
|
backendMessage: safeString((_params$nodePayload4 = params.nodePayload) === null || _params$nodePayload4 === void 0 ? void 0 : _params$nodePayload4.message, 120),
|
|
164
165
|
activityMessage: safeString(params.activityMessage, 120),
|
|
165
|
-
messagesMatch:
|
|
166
|
+
messagesMatch: messagesMatch,
|
|
166
167
|
hitlContext: summarizeHitlContext(params.hitlContext)
|
|
167
168
|
});
|
|
168
169
|
};
|
|
169
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMT0dfUFJFRklYIiwiaXNTdHJlYW1EZWJ1Z0VuYWJsZWQiLCJ3aW5kb3ciLCJfX01BSUFfU1RSRUFNX0RFQlVHX18iLCJzYWZlU3RyaW5nIiwidmFsdWUiLCJtYXhMZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0ZXh0IiwiSlNPTiIsInN0cmluZ2lmeSIsImNvbmNhdCIsInNsaWNlIiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInNuYXBzaG90IiwidHVybklkIiwiY29udGVudEZyb3plbkxlbmd0aCIsInNlZ21lbnRDb3VudCIsInNlZ21lbnRzIiwibWFwIiwic2VnbWVudCIsInR5cGUiLCJpZCIsInN0ZXBzIiwic3RlcCIsIm5vZGUiLCJ0b29sTmFtZSIsInN0YXR1cyIsIm1lc3NhZ2UiLCJ0ZXh0TGVuZ3RoIiwidGV4dFByZXZpZXciLCJzdW1tYXJpemVIaXRsQ29udGV4dCIsImNvbnRleHQiLCJfY29udGV4dCRwZW5kaW5nQWN0aW8iLCJfY29udGV4dCRhcHByb3ZhbCIsIl9jb250ZXh0JGFwcHJvdmFsMiIsIm1lc3NhZ2VJZCIsInRocmVhZElkcyIsInBlbmRpbmdUb29scyIsInBlbmRpbmdBY3Rpb25zIiwiYWN0aW9uIiwidG9vbF9uYW1lIiwiYXBwcm92YWxTdGF0dXMiLCJhcHByb3ZhbCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsIm9yaWdpbmFsVGhyZWFkSWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJzdW1tYXJpemVBcHByb3ZhbFBheWxvYWQiLCJfcGF5bG9hZCRwZW5kaW5nX2FjdGkiLCJwYXlsb2FkIiwic2Vzc2lvbklkIiwic2Vzc2lvbl9pZCIsIm1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQiLCJ3YXJuaW5nTWVzc2FnZSIsIndhcm5pbmdfbWVzc2FnZSIsInRvdGFsQWN0aW9ucyIsInRvdGFsX2FjdGlvbnMiLCJwZW5kaW5nX2FjdGlvbnMiLCJ0aHJlYWRfaWQiLCJ0b29sX2NhbGxfaWQiLCJzdW1tYXJpemVTdHJlYW1BY3Rpdml0eSIsImFjdGl2aXR5IiwiX2FjdGl2aXR5JGV4ZWN1dGlvblN0IiwiX2FjdGl2aXR5JGV4ZWN1dGlvblN0MiIsIl9hY3Rpdml0eSRleGVjdXRpb25TdDMiLCJwaGFzZSIsImV4ZWN1dGlvblN0ZXBDb3VudCIsImV4ZWN1dGlvblN0ZXBzIiwic3RyZWFtRGVidWdMb2ciLCJzY29wZSIsImV2ZW50IiwiY29uc29sZSIsImluZm8iLCJzdHJlYW1EZWJ1Z1dhcm4iLCJ3YXJuIiwic3RyZWFtRGVidWdUaW1lbGluZSIsInN0cmVhbURlYnVnU3NlIiwiY2hhbm5lbCIsImV2ZW50VHlwZSIsInN0cmVhbURlYnVnSGl0bENvbnRleHQiLCJoaXRsQ29udGV4dCIsInN0cmVhbURlYnVnQXBwcm92YWwiLCJleHRyYSIsIl9vYmplY3RTcHJlYWQiLCJzdHJlYW1EZWJ1Z0FjdGl2aXR5Iiwic3RyZWFtRGVidWdOb2RlIiwiYmFja2VuZE1lc3NhZ2UiLCJyZXNvbHZlZE1lc3NhZ2UiLCJyZXNvbHZlZFBoYXNlIiwic3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwIiwicGFyYW1zIiwiX3BhcmFtcyRoaXRsQ29udGV4dCRwIiwiX3BhcmFtcyRoaXRsQ29udGV4dCIsIl9wYXJhbXMkbm9kZVBheWxvYWQkdCIsIl9wYXJhbXMkbm9kZVBheWxvYWQiLCJfcGFyYW1zJG5vZGVQYXlsb2FkMiIsIl9wYXJhbXMkYWN0aXZpdHlNZXNzYSIsIl9wYXJhbXMkYWN0aXZpdHlNZXNzYTIiLCJfcGFyYW1zJG5vZGVQYXlsb2FkJG0iLCJfcGFyYW1zJG5vZGVQYXlsb2FkMyIsIl9wYXJhbXMkdWlTdXJmYWNlcyRsZSIsIl9wYXJhbXMkdWlTdXJmYWNlcyIsIl9wYXJhbXMkbm9kZVBheWxvYWQ0Iiwibm9kZVRvb2wiLCJub2RlUGF5bG9hZCIsImFjdGl2aXR5TXNnIiwiYWN0aXZpdHlNZXNzYWdlIiwidHJpbSIsInRvTG93ZXJDYXNlIiwiYmFja2VuZE1zZyIsInRvb2xPdmVybGFwIiwic29tZSIsInRvb2wiLCJoYXNNdWx0aXBsZVN1cmZhY2VzIiwidWlTdXJmYWNlcyIsInNvdXJjZSIsIm1lc3NhZ2VzTWF0Y2giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyZWFtRGVidWdMb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcy9DaGF0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNuYXBzaG90IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuXG5jb25zdCBMT0dfUFJFRklYID0gJ1ttYWlhLXN0cmVhbV0nXG5cbnR5cGUgU3RyZWFtRGVidWdQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvKiogRGVzYWN0aXZhciBsb2dzOiBgd2luZG93Ll9fTUFJQV9TVFJFQU1fREVCVUdfXyA9IGZhbHNlYCAqL1xuICAgIF9fTUFJQV9TVFJFQU1fREVCVUdfXz86IGJvb2xlYW5cbiAgfVxufVxuXG5jb25zdCBpc1N0cmVhbURlYnVnRW5hYmxlZCA9ICgpOiBib29sZWFuID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gd2luZG93Ll9fTUFJQV9TVFJFQU1fREVCVUdfXyAhPT0gZmFsc2Vcbn1cblxuY29uc3Qgc2FmZVN0cmluZyA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuID0gMTYwKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJ1xuICBjb25zdCB0ZXh0ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gIGlmICh0ZXh0Lmxlbmd0aCA8PSBtYXhMZW4pIHJldHVybiB0ZXh0XG4gIHJldHVybiBgJHt0ZXh0LnNsaWNlKDAsIG1heExlbil94oCmYFxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCA9IChzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCkgPT4gKHtcbiAgdHVybklkOiBzbmFwc2hvdC50dXJuSWQsXG4gIGNvbnRlbnRGcm96ZW5MZW5ndGg6IHNuYXBzaG90LmNvbnRlbnRGcm96ZW5MZW5ndGgsXG4gIHNlZ21lbnRDb3VudDogc25hcHNob3Quc2VnbWVudHMubGVuZ3RoLFxuICBzZWdtZW50czogc25hcHNob3Quc2VnbWVudHMubWFwKHNlZ21lbnQgPT4ge1xuICAgIGlmIChzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBzZWdtZW50LnR5cGUsXG4gICAgICAgIGlkOiBzZWdtZW50LmlkLFxuICAgICAgICBzdGVwczogc2VnbWVudC5zdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgIGlkOiBzdGVwLmlkLFxuICAgICAgICAgIG5vZGU6IHN0ZXAubm9kZSxcbiAgICAgICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgICAgICBzdGF0dXM6IHN0ZXAuc3RhdHVzLFxuICAgICAgICAgIG1lc3NhZ2U6IHNhZmVTdHJpbmcoc3RlcC5tZXNzYWdlLCA4MCksXG4gICAgICAgIH0pKSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHNlZ21lbnQudHlwZSxcbiAgICAgIGlkOiBzZWdtZW50LmlkLFxuICAgICAgdGV4dExlbmd0aDogc2VnbWVudC50ZXh0Lmxlbmd0aCxcbiAgICAgIHRleHRQcmV2aWV3OiBzYWZlU3RyaW5nKHNlZ21lbnQudGV4dCwgODApLFxuICAgIH1cbiAgfSksXG59KVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplSGl0bENvbnRleHQgPSAoY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICghY29udGV4dCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlSWQ6IGNvbnRleHQubWVzc2FnZUlkLFxuICAgIHRocmVhZElkczogY29udGV4dC50aHJlYWRJZHMsXG4gICAgcGVuZGluZ1Rvb2xzOiBjb250ZXh0LnBlbmRpbmdBY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50b29sX25hbWUpLFxuICAgIGFwcHJvdmFsU3RhdHVzOiBjb250ZXh0LmFwcHJvdmFsPy5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPyAnbWFudWFsX2RldGVjdGVkJyA6ICdidXR0b24nLFxuICAgIG9yaWdpbmFsVGhyZWFkSWQ6IGNvbnRleHQuYXBwcm92YWw/Lm9yaWdpbmFsX3RocmVhZF9pZCxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplQXBwcm92YWxQYXlsb2FkID0gKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICBjb25zdCBwYXlsb2FkID0gYXBwcm92YWwgYXMgQXBwcm92YWxSZXF1ZXN0XG4gIHJldHVybiB7XG4gICAgb3JpZ2luYWxUaHJlYWRJZDogcGF5bG9hZC5vcmlnaW5hbF90aHJlYWRfaWQsXG4gICAgc2Vzc2lvbklkOiBwYXlsb2FkLnNlc3Npb25faWQsXG4gICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZDogcGF5bG9hZC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWUsXG4gICAgd2FybmluZ01lc3NhZ2U6IHBheWxvYWQud2FybmluZ19tZXNzYWdlID8gc2FmZVN0cmluZyhwYXlsb2FkLndhcm5pbmdfbWVzc2FnZSwgODApIDogdW5kZWZpbmVkLFxuICAgIHRvdGFsQWN0aW9uczogcGF5bG9hZC50b3RhbF9hY3Rpb25zLFxuICAgIHBlbmRpbmdBY3Rpb25zOiBwYXlsb2FkLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiAoe1xuICAgICAgdG9vbF9uYW1lOiBhY3Rpb24udG9vbF9uYW1lLFxuICAgICAgdGhyZWFkX2lkOiBhY3Rpb24udGhyZWFkX2lkLFxuICAgICAgdG9vbF9jYWxsX2lkOiBhY3Rpb24udG9vbF9jYWxsX2lkLFxuICAgIH0pKSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplU3RyZWFtQWN0aXZpdHkgPSAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICBpZiAoIWFjdGl2aXR5KSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIHBoYXNlOiBhY3Rpdml0eS5waGFzZSxcbiAgICBtZXNzYWdlOiBzYWZlU3RyaW5nKGFjdGl2aXR5Lm1lc3NhZ2UsIDgwKSxcbiAgICBleGVjdXRpb25TdGVwQ291bnQ6IGFjdGl2aXR5LmV4ZWN1dGlvblN0ZXBzPy5sZW5ndGggPz8gMCxcbiAgICBleGVjdXRpb25TdGVwczogYWN0aXZpdHkuZXhlY3V0aW9uU3RlcHM/Lm1hcChzdGVwID0+ICh7XG4gICAgICBub2RlOiBzdGVwLm5vZGUsXG4gICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgIHN0YXR1czogc3RlcC5zdGF0dXMsXG4gICAgICBtZXNzYWdlOiBzYWZlU3RyaW5nKHN0ZXAubWVzc2FnZSwgODApLFxuICAgIH0pKSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdMb2cgPSAoc2NvcGU6IHN0cmluZywgZXZlbnQ6IHN0cmluZywgcGF5bG9hZD86IFN0cmVhbURlYnVnUGF5bG9hZCk6IHZvaWQgPT4ge1xuICBpZiAoIWlzU3RyZWFtRGVidWdFbmFibGVkKCkpIHJldHVyblxuICBpZiAocGF5bG9hZCkge1xuICAgIGNvbnNvbGUuaW5mbyhMT0dfUFJFRklYLCBzY29wZSwgZXZlbnQsIHBheWxvYWQpXG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc29sZS5pbmZvKExPR19QUkVGSVgsIHNjb3BlLCBldmVudClcbn1cblxuZXhwb3J0IGNvbnN0IHN0cmVhbURlYnVnV2FybiA9IChzY29wZTogc3RyaW5nLCBldmVudDogc3RyaW5nLCBwYXlsb2FkPzogU3RyZWFtRGVidWdQYXlsb2FkKTogdm9pZCA9PiB7XG4gIGlmICghaXNTdHJlYW1EZWJ1Z0VuYWJsZWQoKSkgcmV0dXJuXG4gIGlmIChwYXlsb2FkKSB7XG4gICAgY29uc29sZS53YXJuKExPR19QUkVGSVgsIHNjb3BlLCBldmVudCwgcGF5bG9hZClcbiAgICByZXR1cm5cbiAgfVxuICBjb25zb2xlLndhcm4oTE9HX1BSRUZJWCwgc2NvcGUsIGV2ZW50KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdUaW1lbGluZSA9IChzY29wZTogc3RyaW5nLCBldmVudDogc3RyaW5nLCBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCk6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgZXZlbnQsIHN1bW1hcml6ZVRpbWVsaW5lU25hcHNob3Qoc25hcHNob3QpKVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdTc2UgPSAoXG4gIGNoYW5uZWw6ICdhc2tNYWlhJyB8ICdjb250aW51ZVRocmVhZCcgfCAncHJvY2Vzc1NTRVN0cmVhbScsXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBwYXlsb2FkPzogU3RyZWFtRGVidWdQYXlsb2FkXG4pOiB2b2lkID0+IHtcbiAgc3RyZWFtRGVidWdMb2coYHNzZToke2NoYW5uZWx9YCwgZXZlbnRUeXBlLCBwYXlsb2FkKVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdIaXRsQ29udGV4dCA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB2b2lkID0+IHtcbiAgc3RyZWFtRGVidWdMb2coc2NvcGUsIGV2ZW50LCB7IGhpdGxDb250ZXh0OiBzdW1tYXJpemVIaXRsQ29udGV4dChjb250ZXh0KSB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdBcHByb3ZhbCA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBleHRyYT86IFN0cmVhbURlYnVnUGF5bG9hZFxuKTogdm9pZCA9PiB7XG4gIHN0cmVhbURlYnVnTG9nKHNjb3BlLCBldmVudCwge1xuICAgIGFwcHJvdmFsOiBzdW1tYXJpemVBcHByb3ZhbFBheWxvYWQoYXBwcm92YWwpLFxuICAgIC4uLmV4dHJhLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdBY3Rpdml0eSA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZXh0cmE/OiBTdHJlYW1EZWJ1Z1BheWxvYWRcbik6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgZXZlbnQsIHtcbiAgICBhY3Rpdml0eTogc3VtbWFyaXplU3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpLFxuICAgIC4uLmV4dHJhLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdOb2RlID0gKFxuICBzY29wZTogc3RyaW5nLFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICBleHRyYT86IFN0cmVhbURlYnVnUGF5bG9hZCAmIHsgcmVzb2x2ZWRNZXNzYWdlPzogc3RyaW5nOyByZXNvbHZlZFBoYXNlPzogc3RyaW5nIH1cbik6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgJ25vZGUnLCB7XG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xfbmFtZTogcGF5bG9hZC50b29sX25hbWUsXG4gICAgdGhyZWFkX2lkOiBwYXlsb2FkLnRocmVhZF9pZCxcbiAgICBiYWNrZW5kTWVzc2FnZTogc2FmZVN0cmluZyhwYXlsb2FkLm1lc3NhZ2UsIDEyMCksXG4gICAgcmVzb2x2ZWRNZXNzYWdlOiBleHRyYT8ucmVzb2x2ZWRNZXNzYWdlID8gc2FmZVN0cmluZyhleHRyYS5yZXNvbHZlZE1lc3NhZ2UsIDEyMCkgOiB1bmRlZmluZWQsXG4gICAgcmVzb2x2ZWRQaGFzZTogZXh0cmE/LnJlc29sdmVkUGhhc2UsXG4gICAgLi4uZXh0cmEsXG4gIH0pXG59XG5cbi8qKiBBbGVydGEgY3VhbmRvIGVsIG5vZGUgSElUTCBjb2luY2lkZSBjb24gdG9vbHMgZGVsIGFwcHJvdmFsIHBlbmRpZW50ZSAocG9zaWJsZSBVSSBkdXBsaWNhZGEpLiAqL1xuZXhwb3J0IGNvbnN0IHN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCA9IChwYXJhbXM6IHtcbiAgc2NvcGU6IHN0cmluZ1xuICBzb3VyY2U6ICdub2RlJyB8ICdpbml0aWFsQWN0aXZpdHknIHwgJ2FwcHJvdmFsQm94JyB8ICd0aW1lbGluZVNlZ21lbnQnXG4gIG5vZGVQYXlsb2FkPzogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZFxuICBhY3Rpdml0eU1lc3NhZ2U/OiBzdHJpbmdcbiAgaGl0bENvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgdWlTdXJmYWNlcz86IHN0cmluZ1tdXG59KTogdm9pZCA9PiB7XG4gIGNvbnN0IHBlbmRpbmdUb29scyA9IHBhcmFtcy5oaXRsQ29udGV4dD8ucGVuZGluZ0FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRvb2xfbmFtZSkgPz8gW11cbiAgY29uc3Qgbm9kZVRvb2wgPSBwYXJhbXMubm9kZVBheWxvYWQ/LnRvb2xfbmFtZSA/PyBwYXJhbXMubm9kZVBheWxvYWQ/Lm5vZGVcbiAgY29uc3QgYWN0aXZpdHlNc2cgPSBwYXJhbXMuYWN0aXZpdHlNZXNzYWdlPy50cmltKCkudG9Mb3dlckNhc2UoKSA/PyAnJ1xuICBjb25zdCBiYWNrZW5kTXNnID0gcGFyYW1zLm5vZGVQYXlsb2FkPy5tZXNzYWdlPy50cmltKCkudG9Mb3dlckNhc2UoKSA/PyAnJ1xuXG4gIGNvbnN0IHRvb2xPdmVybGFwID0gbm9kZVRvb2wgJiYgcGVuZGluZ1Rvb2xzLnNvbWUodG9vbCA9PiB0b29sID09PSBub2RlVG9vbCB8fCBub2RlVG9vbCA9PT0gJ3Jlc3VtaW5nJylcbiAgY29uc3QgaGFzTXVsdGlwbGVTdXJmYWNlcyA9IChwYXJhbXMudWlTdXJmYWNlcz8ubGVuZ3RoID8/IDApID49IDJcblxuICBpZiAoIXRvb2xPdmVybGFwICYmICFoYXNNdWx0aXBsZVN1cmZhY2VzKSByZXR1cm5cblxuICBzdHJlYW1EZWJ1Z1dhcm4ocGFyYW1zLnNjb3BlLCAnaGl0bC11aS1vdmVybGFwLXN1c3BlY3QnLCB7XG4gICAgc291cmNlOiBwYXJhbXMuc291cmNlLFxuICAgIHVpU3VyZmFjZXM6IHBhcmFtcy51aVN1cmZhY2VzLFxuICAgIHBlbmRpbmdUb29scyxcbiAgICBub2RlVG9vbCxcbiAgICBiYWNrZW5kTWVzc2FnZTogc2FmZVN0cmluZyhwYXJhbXMubm9kZVBheWxvYWQ/Lm1lc3NhZ2UsIDEyMCksXG4gICAgYWN0aXZpdHlNZXNzYWdlOiBzYWZlU3RyaW5nKHBhcmFtcy5hY3Rpdml0eU1lc3NhZ2UsIDEyMCksXG4gICAgbWVzc2FnZXNNYXRjaDogYWN0aXZpdHlNc2cubGVuZ3RoID4gMCAmJiBiYWNrZW5kTXNnLmxlbmd0aCA+IDAgJiYgYWN0aXZpdHlNc2cgPT09IGJhY2tlbmRNc2csXG4gICAgaGl0bENvbnRleHQ6IHN1bW1hcml6ZUhpdGxDb250ZXh0KHBhcmFtcy5oaXRsQ29udGV4dCksXG4gIH0pXG59XG4iXSwibWFwcGluZ3MiOiI7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
|
|
170
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMT0dfUFJFRklYIiwiaXNTdHJlYW1EZWJ1Z0VuYWJsZWQiLCJ3aW5kb3ciLCJfX01BSUFfU1RSRUFNX0RFQlVHX18iLCJzYWZlU3RyaW5nIiwidmFsdWUiLCJtYXhMZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJ0ZXh0IiwiSlNPTiIsInN0cmluZ2lmeSIsImNvbmNhdCIsInNsaWNlIiwic3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCIsInNuYXBzaG90IiwidHVybklkIiwiY29udGVudEZyb3plbkxlbmd0aCIsInNlZ21lbnRDb3VudCIsInNlZ21lbnRzIiwibWFwIiwic2VnbWVudCIsInR5cGUiLCJpZCIsInN0ZXBzIiwic3RlcCIsIm5vZGUiLCJ0b29sTmFtZSIsInN0YXR1cyIsIm1lc3NhZ2UiLCJ0ZXh0TGVuZ3RoIiwidGV4dFByZXZpZXciLCJzdW1tYXJpemVIaXRsQ29udGV4dCIsImNvbnRleHQiLCJfY29udGV4dCRwZW5kaW5nQWN0aW8iLCJfY29udGV4dCRhcHByb3ZhbCIsIl9jb250ZXh0JGFwcHJvdmFsMiIsIm1lc3NhZ2VJZCIsInRocmVhZElkcyIsInBlbmRpbmdUb29scyIsInBlbmRpbmdBY3Rpb25zIiwiYWN0aW9uIiwidG9vbF9uYW1lIiwiYXBwcm92YWxTdGF0dXMiLCJhcHByb3ZhbCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsIm9yaWdpbmFsVGhyZWFkSWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJzdW1tYXJpemVBcHByb3ZhbFBheWxvYWQiLCJfcGF5bG9hZCRwZW5kaW5nX2FjdGkiLCJwYXlsb2FkIiwic2Vzc2lvbklkIiwic2Vzc2lvbl9pZCIsIm1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQiLCJ3YXJuaW5nTWVzc2FnZSIsIndhcm5pbmdfbWVzc2FnZSIsInRvdGFsQWN0aW9ucyIsInRvdGFsX2FjdGlvbnMiLCJwZW5kaW5nX2FjdGlvbnMiLCJ0aHJlYWRfaWQiLCJ0b29sX2NhbGxfaWQiLCJzdW1tYXJpemVTdHJlYW1BY3Rpdml0eSIsImFjdGl2aXR5IiwiX2FjdGl2aXR5JGV4ZWN1dGlvblN0IiwiX2FjdGl2aXR5JGV4ZWN1dGlvblN0MiIsIl9hY3Rpdml0eSRleGVjdXRpb25TdDMiLCJwaGFzZSIsImV4ZWN1dGlvblN0ZXBDb3VudCIsImV4ZWN1dGlvblN0ZXBzIiwic3RyZWFtRGVidWdMb2ciLCJzY29wZSIsImV2ZW50IiwiY29uc29sZSIsImluZm8iLCJzdHJlYW1EZWJ1Z1dhcm4iLCJ3YXJuIiwic3RyZWFtRGVidWdUaW1lbGluZSIsInN0cmVhbURlYnVnU3NlIiwiY2hhbm5lbCIsImV2ZW50VHlwZSIsInN0cmVhbURlYnVnSGl0bENvbnRleHQiLCJoaXRsQ29udGV4dCIsInN0cmVhbURlYnVnQXBwcm92YWwiLCJleHRyYSIsIl9vYmplY3RTcHJlYWQiLCJzdHJlYW1EZWJ1Z0FjdGl2aXR5Iiwic3RyZWFtRGVidWdOb2RlIiwiYmFja2VuZE1lc3NhZ2UiLCJyZXNvbHZlZE1lc3NhZ2UiLCJyZXNvbHZlZFBoYXNlIiwic3RyZWFtRGVidWdMb2dIaXRsVWlPdmVybGFwIiwicGFyYW1zIiwiX3BhcmFtcyRoaXRsQ29udGV4dCRwIiwiX3BhcmFtcyRoaXRsQ29udGV4dCIsIl9wYXJhbXMkbm9kZVBheWxvYWQkdCIsIl9wYXJhbXMkbm9kZVBheWxvYWQiLCJfcGFyYW1zJG5vZGVQYXlsb2FkMiIsIl9wYXJhbXMkYWN0aXZpdHlNZXNzYSIsIl9wYXJhbXMkYWN0aXZpdHlNZXNzYTIiLCJfcGFyYW1zJG5vZGVQYXlsb2FkJG0iLCJfcGFyYW1zJG5vZGVQYXlsb2FkMyIsIl9wYXJhbXMkdWlTdXJmYWNlcyRsZSIsIl9wYXJhbXMkdWlTdXJmYWNlcyIsIl9wYXJhbXMkbm9kZVBheWxvYWQ0Iiwibm9kZVRvb2wiLCJub2RlUGF5bG9hZCIsImFjdGl2aXR5TXNnIiwiYWN0aXZpdHlNZXNzYWdlIiwidHJpbSIsInRvTG93ZXJDYXNlIiwiYmFja2VuZE1zZyIsInRvb2xPdmVybGFwIiwic29tZSIsInRvb2wiLCJoYXNNdWx0aXBsZVN1cmZhY2VzIiwidWlTdXJmYWNlcyIsIm1lc3NhZ2VzTWF0Y2giLCJzb3VyY2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyZWFtRGVidWdMb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcy9DaGF0J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtTm9kZUV2ZW50UGF5bG9hZCB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1UaW1lbGluZVNuYXBzaG90IH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtVGltZWxpbmUnXG5pbXBvcnQgdHlwZSB7IEhpdGxFeGVjdXRpb25Db250ZXh0IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuXG5jb25zdCBMT0dfUFJFRklYID0gJ1ttYWlhLXN0cmVhbV0nXG5cbnR5cGUgU3RyZWFtRGVidWdQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvKiogRGVzYWN0aXZhciBsb2dzOiBgd2luZG93Ll9fTUFJQV9TVFJFQU1fREVCVUdfXyA9IGZhbHNlYCAqL1xuICAgIF9fTUFJQV9TVFJFQU1fREVCVUdfXz86IGJvb2xlYW5cbiAgfVxufVxuXG5jb25zdCBpc1N0cmVhbURlYnVnRW5hYmxlZCA9ICgpOiBib29sZWFuID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gd2luZG93Ll9fTUFJQV9TVFJFQU1fREVCVUdfXyAhPT0gZmFsc2Vcbn1cblxuY29uc3Qgc2FmZVN0cmluZyA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuID0gMTYwKTogc3RyaW5nID0+IHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiAnJ1xuICBjb25zdCB0ZXh0ID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpXG4gIGlmICh0ZXh0Lmxlbmd0aCA8PSBtYXhMZW4pIHJldHVybiB0ZXh0XG4gIHJldHVybiBgJHt0ZXh0LnNsaWNlKDAsIG1heExlbil94oCmYFxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplVGltZWxpbmVTbmFwc2hvdCA9IChzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCkgPT4gKHtcbiAgdHVybklkOiBzbmFwc2hvdC50dXJuSWQsXG4gIGNvbnRlbnRGcm96ZW5MZW5ndGg6IHNuYXBzaG90LmNvbnRlbnRGcm96ZW5MZW5ndGgsXG4gIHNlZ21lbnRDb3VudDogc25hcHNob3Quc2VnbWVudHMubGVuZ3RoLFxuICBzZWdtZW50czogc25hcHNob3Quc2VnbWVudHMubWFwKHNlZ21lbnQgPT4ge1xuICAgIGlmIChzZWdtZW50LnR5cGUgPT09ICdleGVjdXRpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBzZWdtZW50LnR5cGUsXG4gICAgICAgIGlkOiBzZWdtZW50LmlkLFxuICAgICAgICBzdGVwczogc2VnbWVudC5zdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgIGlkOiBzdGVwLmlkLFxuICAgICAgICAgIG5vZGU6IHN0ZXAubm9kZSxcbiAgICAgICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgICAgICBzdGF0dXM6IHN0ZXAuc3RhdHVzLFxuICAgICAgICAgIG1lc3NhZ2U6IHNhZmVTdHJpbmcoc3RlcC5tZXNzYWdlLCA4MCksXG4gICAgICAgIH0pKSxcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHNlZ21lbnQudHlwZSxcbiAgICAgIGlkOiBzZWdtZW50LmlkLFxuICAgICAgdGV4dExlbmd0aDogc2VnbWVudC50ZXh0Lmxlbmd0aCxcbiAgICAgIHRleHRQcmV2aWV3OiBzYWZlU3RyaW5nKHNlZ21lbnQudGV4dCwgODApLFxuICAgIH1cbiAgfSksXG59KVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplSGl0bENvbnRleHQgPSAoY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiB7XG4gIGlmICghY29udGV4dCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlSWQ6IGNvbnRleHQubWVzc2FnZUlkLFxuICAgIHRocmVhZElkczogY29udGV4dC50aHJlYWRJZHMsXG4gICAgcGVuZGluZ1Rvb2xzOiBjb250ZXh0LnBlbmRpbmdBY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50b29sX25hbWUpLFxuICAgIGFwcHJvdmFsU3RhdHVzOiBjb250ZXh0LmFwcHJvdmFsPy5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPyAnbWFudWFsX2RldGVjdGVkJyA6ICdidXR0b24nLFxuICAgIG9yaWdpbmFsVGhyZWFkSWQ6IGNvbnRleHQuYXBwcm92YWw/Lm9yaWdpbmFsX3RocmVhZF9pZCxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplQXBwcm92YWxQYXlsb2FkID0gKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICBjb25zdCBwYXlsb2FkID0gYXBwcm92YWwgYXMgQXBwcm92YWxSZXF1ZXN0XG4gIHJldHVybiB7XG4gICAgb3JpZ2luYWxUaHJlYWRJZDogcGF5bG9hZC5vcmlnaW5hbF90aHJlYWRfaWQsXG4gICAgc2Vzc2lvbklkOiBwYXlsb2FkLnNlc3Npb25faWQsXG4gICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZDogcGF5bG9hZC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWUsXG4gICAgd2FybmluZ01lc3NhZ2U6IHBheWxvYWQud2FybmluZ19tZXNzYWdlID8gc2FmZVN0cmluZyhwYXlsb2FkLndhcm5pbmdfbWVzc2FnZSwgODApIDogdW5kZWZpbmVkLFxuICAgIHRvdGFsQWN0aW9uczogcGF5bG9hZC50b3RhbF9hY3Rpb25zLFxuICAgIHBlbmRpbmdBY3Rpb25zOiBwYXlsb2FkLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiAoe1xuICAgICAgdG9vbF9uYW1lOiBhY3Rpb24udG9vbF9uYW1lLFxuICAgICAgdGhyZWFkX2lkOiBhY3Rpb24udGhyZWFkX2lkLFxuICAgICAgdG9vbF9jYWxsX2lkOiBhY3Rpb24udG9vbF9jYWxsX2lkLFxuICAgIH0pKSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3VtbWFyaXplU3RyZWFtQWN0aXZpdHkgPSAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4ge1xuICBpZiAoIWFjdGl2aXR5KSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIHBoYXNlOiBhY3Rpdml0eS5waGFzZSxcbiAgICBtZXNzYWdlOiBzYWZlU3RyaW5nKGFjdGl2aXR5Lm1lc3NhZ2UsIDgwKSxcbiAgICBleGVjdXRpb25TdGVwQ291bnQ6IGFjdGl2aXR5LmV4ZWN1dGlvblN0ZXBzPy5sZW5ndGggPz8gMCxcbiAgICBleGVjdXRpb25TdGVwczogYWN0aXZpdHkuZXhlY3V0aW9uU3RlcHM/Lm1hcChzdGVwID0+ICh7XG4gICAgICBub2RlOiBzdGVwLm5vZGUsXG4gICAgICB0b29sTmFtZTogc3RlcC50b29sTmFtZSxcbiAgICAgIHN0YXR1czogc3RlcC5zdGF0dXMsXG4gICAgICBtZXNzYWdlOiBzYWZlU3RyaW5nKHN0ZXAubWVzc2FnZSwgODApLFxuICAgIH0pKSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdMb2cgPSAoc2NvcGU6IHN0cmluZywgZXZlbnQ6IHN0cmluZywgcGF5bG9hZD86IFN0cmVhbURlYnVnUGF5bG9hZCk6IHZvaWQgPT4ge1xuICBpZiAoIWlzU3RyZWFtRGVidWdFbmFibGVkKCkpIHJldHVyblxuICBpZiAocGF5bG9hZCkge1xuICAgIGNvbnNvbGUuaW5mbyhMT0dfUFJFRklYLCBzY29wZSwgZXZlbnQsIHBheWxvYWQpXG4gICAgcmV0dXJuXG4gIH1cbiAgY29uc29sZS5pbmZvKExPR19QUkVGSVgsIHNjb3BlLCBldmVudClcbn1cblxuZXhwb3J0IGNvbnN0IHN0cmVhbURlYnVnV2FybiA9IChzY29wZTogc3RyaW5nLCBldmVudDogc3RyaW5nLCBwYXlsb2FkPzogU3RyZWFtRGVidWdQYXlsb2FkKTogdm9pZCA9PiB7XG4gIGlmICghaXNTdHJlYW1EZWJ1Z0VuYWJsZWQoKSkgcmV0dXJuXG4gIGlmIChwYXlsb2FkKSB7XG4gICAgY29uc29sZS53YXJuKExPR19QUkVGSVgsIHNjb3BlLCBldmVudCwgcGF5bG9hZClcbiAgICByZXR1cm5cbiAgfVxuICBjb25zb2xlLndhcm4oTE9HX1BSRUZJWCwgc2NvcGUsIGV2ZW50KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdUaW1lbGluZSA9IChzY29wZTogc3RyaW5nLCBldmVudDogc3RyaW5nLCBzbmFwc2hvdDogU3RyZWFtVGltZWxpbmVTbmFwc2hvdCk6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgZXZlbnQsIHN1bW1hcml6ZVRpbWVsaW5lU25hcHNob3Qoc25hcHNob3QpKVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdTc2UgPSAoXG4gIGNoYW5uZWw6ICdhc2tNYWlhJyB8ICdjb250aW51ZVRocmVhZCcgfCAncHJvY2Vzc1NTRVN0cmVhbScsXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBwYXlsb2FkPzogU3RyZWFtRGVidWdQYXlsb2FkXG4pOiB2b2lkID0+IHtcbiAgc3RyZWFtRGVidWdMb2coYHNzZToke2NoYW5uZWx9YCwgZXZlbnRUeXBlLCBwYXlsb2FkKVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdIaXRsQ29udGV4dCA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgY29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiB2b2lkID0+IHtcbiAgc3RyZWFtRGVidWdMb2coc2NvcGUsIGV2ZW50LCB7IGhpdGxDb250ZXh0OiBzdW1tYXJpemVIaXRsQ29udGV4dChjb250ZXh0KSB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdBcHByb3ZhbCA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdCB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBleHRyYT86IFN0cmVhbURlYnVnUGF5bG9hZFxuKTogdm9pZCA9PiB7XG4gIHN0cmVhbURlYnVnTG9nKHNjb3BlLCBldmVudCwge1xuICAgIGFwcHJvdmFsOiBzdW1tYXJpemVBcHByb3ZhbFBheWxvYWQoYXBwcm92YWwpLFxuICAgIC4uLmV4dHJhLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdBY3Rpdml0eSA9IChcbiAgc2NvcGU6IHN0cmluZyxcbiAgZXZlbnQ6IHN0cmluZyxcbiAgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgZXh0cmE/OiBTdHJlYW1EZWJ1Z1BheWxvYWRcbik6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgZXZlbnQsIHtcbiAgICBhY3Rpdml0eTogc3VtbWFyaXplU3RyZWFtQWN0aXZpdHkoYWN0aXZpdHkpLFxuICAgIC4uLmV4dHJhLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtRGVidWdOb2RlID0gKFxuICBzY29wZTogc3RyaW5nLFxuICBwYXlsb2FkOiBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLFxuICBleHRyYT86IFN0cmVhbURlYnVnUGF5bG9hZCAmIHsgcmVzb2x2ZWRNZXNzYWdlPzogc3RyaW5nOyByZXNvbHZlZFBoYXNlPzogc3RyaW5nIH1cbik6IHZvaWQgPT4ge1xuICBzdHJlYW1EZWJ1Z0xvZyhzY29wZSwgJ25vZGUnLCB7XG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xfbmFtZTogcGF5bG9hZC50b29sX25hbWUsXG4gICAgdGhyZWFkX2lkOiBwYXlsb2FkLnRocmVhZF9pZCxcbiAgICBiYWNrZW5kTWVzc2FnZTogc2FmZVN0cmluZyhwYXlsb2FkLm1lc3NhZ2UsIDEyMCksXG4gICAgcmVzb2x2ZWRNZXNzYWdlOiBleHRyYT8ucmVzb2x2ZWRNZXNzYWdlID8gc2FmZVN0cmluZyhleHRyYS5yZXNvbHZlZE1lc3NhZ2UsIDEyMCkgOiB1bmRlZmluZWQsXG4gICAgcmVzb2x2ZWRQaGFzZTogZXh0cmE/LnJlc29sdmVkUGhhc2UsXG4gICAgLi4uZXh0cmEsXG4gIH0pXG59XG5cbi8qKiBBbGVydGEgY3VhbmRvIGVsIG5vZGUgSElUTCBjb2luY2lkZSBjb24gdG9vbHMgZGVsIGFwcHJvdmFsIHBlbmRpZW50ZSAocG9zaWJsZSBVSSBkdXBsaWNhZGEpLiAqL1xuZXhwb3J0IGNvbnN0IHN0cmVhbURlYnVnTG9nSGl0bFVpT3ZlcmxhcCA9IChwYXJhbXM6IHtcbiAgc2NvcGU6IHN0cmluZ1xuICBzb3VyY2U6ICdub2RlJyB8ICdpbml0aWFsQWN0aXZpdHknIHwgJ2FwcHJvdmFsQm94JyB8ICd0aW1lbGluZVNlZ21lbnQnXG4gIG5vZGVQYXlsb2FkPzogU3RyZWFtTm9kZUV2ZW50UGF5bG9hZFxuICBhY3Rpdml0eU1lc3NhZ2U/OiBzdHJpbmdcbiAgaGl0bENvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgdWlTdXJmYWNlcz86IHN0cmluZ1tdXG59KTogdm9pZCA9PiB7XG4gIGNvbnN0IHBlbmRpbmdUb29scyA9IHBhcmFtcy5oaXRsQ29udGV4dD8ucGVuZGluZ0FjdGlvbnM/Lm1hcChhY3Rpb24gPT4gYWN0aW9uLnRvb2xfbmFtZSkgPz8gW11cbiAgY29uc3Qgbm9kZVRvb2wgPSBwYXJhbXMubm9kZVBheWxvYWQ/LnRvb2xfbmFtZSA/PyBwYXJhbXMubm9kZVBheWxvYWQ/Lm5vZGVcbiAgY29uc3QgYWN0aXZpdHlNc2cgPSBwYXJhbXMuYWN0aXZpdHlNZXNzYWdlPy50cmltKCkudG9Mb3dlckNhc2UoKSA/PyAnJ1xuICBjb25zdCBiYWNrZW5kTXNnID0gcGFyYW1zLm5vZGVQYXlsb2FkPy5tZXNzYWdlPy50cmltKCkudG9Mb3dlckNhc2UoKSA/PyAnJ1xuXG4gIGNvbnN0IHRvb2xPdmVybGFwID0gbm9kZVRvb2wgJiYgbm9kZVRvb2wgIT09ICdyZXN1bWluZycgJiYgcGVuZGluZ1Rvb2xzLnNvbWUodG9vbCA9PiB0b29sID09PSBub2RlVG9vbClcbiAgY29uc3QgaGFzTXVsdGlwbGVTdXJmYWNlcyA9IChwYXJhbXMudWlTdXJmYWNlcz8ubGVuZ3RoID8/IDApID49IDJcbiAgY29uc3QgbWVzc2FnZXNNYXRjaCA9IGFjdGl2aXR5TXNnLmxlbmd0aCA+IDAgJiYgYmFja2VuZE1zZy5sZW5ndGggPiAwICYmIGFjdGl2aXR5TXNnID09PSBiYWNrZW5kTXNnXG5cbiAgaWYgKCF0b29sT3ZlcmxhcCAmJiAhKGhhc011bHRpcGxlU3VyZmFjZXMgJiYgbWVzc2FnZXNNYXRjaCkpIHJldHVyblxuXG4gIHN0cmVhbURlYnVnV2FybihwYXJhbXMuc2NvcGUsICdoaXRsLXVpLW92ZXJsYXAtc3VzcGVjdCcsIHtcbiAgICBzb3VyY2U6IHBhcmFtcy5zb3VyY2UsXG4gICAgdWlTdXJmYWNlczogcGFyYW1zLnVpU3VyZmFjZXMsXG4gICAgcGVuZGluZ1Rvb2xzLFxuICAgIG5vZGVUb29sLFxuICAgIGJhY2tlbmRNZXNzYWdlOiBzYWZlU3RyaW5nKHBhcmFtcy5ub2RlUGF5bG9hZD8ubWVzc2FnZSwgMTIwKSxcbiAgICBhY3Rpdml0eU1lc3NhZ2U6IHNhZmVTdHJpbmcocGFyYW1zLmFjdGl2aXR5TWVzc2FnZSwgMTIwKSxcbiAgICBtZXNzYWdlc01hdGNoLFxuICAgIGhpdGxDb250ZXh0OiBzdW1tYXJpemVIaXRsQ29udGV4dChwYXJh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WCxxQkFBQSxJQUFBQyxvQkFBQSxHQUFHVCxNQUFNLENBQUNjLFdBQVcsY0FBQUwsb0JBQUEsZ0JBQUFBLG9CQUFBLEdBQWxCQSxvQkFBQSxDQUFvQnZFLE9BQU8sY0FBQXVFLG9CQUFBLHVCQUEzQkEsb0JBQUEsQ0FBNkJRLElBQUksQ0FBQyxDQUFDLENBQUNDLFdBQVcsQ0FBQyxDQUFDLGNBQUFWLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksRUFBRTtFQUUxRSxJQUFNWSxXQUFXLEdBQUdQLFFBQVEsSUFBSUEsUUFBUSxLQUFLLFVBQVUsSUFBSWpFLFlBQVksQ0FBQ3lFLElBQUksQ0FBQyxVQUFBQyxJQUFJO0lBQUEsT0FBSUEsSUFBSSxLQUFLVCxRQUFRO0VBQUEsRUFBQztFQUN2RyxJQUFNVSxtQkFBbUIsR0FBRyxFQUFBYixxQkFBQSxJQUFBQyxrQkFBQSxHQUFDWCxNQUFNLENBQUN3QixVQUFVLGNBQUFiLGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUIvRixNQUFNLGNBQUE4RixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLENBQUMsS0FBSyxDQUFDO0VBQ2pFLElBQU1lLGFBQWEsR0FBR1YsV0FBVyxDQUFDbkcsTUFBTSxHQUFHLENBQUMsSUFBSXVHLFVBQVUsQ0FBQ3ZHLE1BQU0sR0FBRyxDQUFDLElBQUltRyxXQUFXLEtBQUtJLFVBQVU7RUFFbkcsSUFBSSxDQUFDQyxXQUFXLElBQUksRUFBRUcsbUJBQW1CLElBQUlFLGFBQWEsQ0FBQyxFQUFFO0VBRTdEMUMsZUFBZSxDQUFDaUIsTUFBTSxDQUFDckIsS0FBSyxFQUFFLHlCQUF5QixFQUFFO0lBQ3ZEK0MsTUFBTSxFQUFFMUIsTUFBTSxDQUFDMEIsTUFBTTtJQUNyQkYsVUFBVSxFQUFFeEIsTUFBTSxDQUFDd0IsVUFBVTtJQUM3QjVFLFlBQVksRUFBWkEsWUFBWTtJQUNaaUUsUUFBUSxFQUFSQSxRQUFRO0lBQ1JqQixjQUFjLEVBQUVwRixVQUFVLEVBQUFvRyxvQkFBQSxHQUFDWixNQUFNLENBQUNjLFdBQVcsY0FBQUYsb0JBQUEsdUJBQWxCQSxvQkFBQSxDQUFvQjFFLE9BQU8sRUFBRSxHQUFHLENBQUM7SUFDNUQ4RSxlQUFlLEVBQUV4RyxVQUFVLENBQUN3RixNQUFNLENBQUNnQixlQUFlLEVBQUUsR0FBRyxDQUFDO0lBQ3hEUyxhQUFhLEVBQWJBLGFBQWE7SUFDYm5DLFdBQVcsRUFBRWpELG9CQUFvQixDQUFDMkQsTUFBTSxDQUFDVixXQUFXO0VBQ3RELENBQUMsQ0FBQztBQUNKLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -39,9 +39,32 @@ export var resolveStepMessageFromNode = function resolveStepMessageFromNode(payl
|
|
|
39
39
|
return activity.message;
|
|
40
40
|
};
|
|
41
41
|
export var pushExecutionStepFromNode = function pushExecutionStepFromNode(currentSteps, payload, t, context, threadId) {
|
|
42
|
-
var _payload$tool_name;
|
|
42
|
+
var _context$pendingActio, _payload$tool_name;
|
|
43
43
|
var message = resolveStepMessageFromNode(payload, t, context, threadId);
|
|
44
44
|
var completedPrevious = completeRunningSteps(currentSteps);
|
|
45
|
+
|
|
46
|
+
// continue-thread: el backend envía `resuming` y enseguida el node de la tool
|
|
47
|
+
// con el mismo mensaje legible. Omitimos `resuming` para no duplicar el indicador.
|
|
48
|
+
if (payload.node === 'resuming' && context !== null && context !== void 0 && (_context$pendingActio = context.pendingActions) !== null && _context$pendingActio !== void 0 && _context$pendingActio.length) {
|
|
49
|
+
streamDebugLog('executionSteps', 'skip:resuming-with-hitl-context', {
|
|
50
|
+
message: message,
|
|
51
|
+
pendingTools: context.pendingActions.map(function (action) {
|
|
52
|
+
return action.tool_name;
|
|
53
|
+
})
|
|
54
|
+
});
|
|
55
|
+
return completedPrevious;
|
|
56
|
+
}
|
|
57
|
+
if (payload.node !== 'resuming') {
|
|
58
|
+
var lastStep = completedPrevious[completedPrevious.length - 1];
|
|
59
|
+
if ((lastStep === null || lastStep === void 0 ? void 0 : lastStep.node) === 'resuming' && lastStep.message.trim().toLowerCase() === message.trim().toLowerCase()) {
|
|
60
|
+
streamDebugLog('executionSteps', 'replace:redundant-resuming', {
|
|
61
|
+
resumingMessage: lastStep.message,
|
|
62
|
+
toolNode: payload.node,
|
|
63
|
+
toolName: payload.tool_name
|
|
64
|
+
});
|
|
65
|
+
completedPrevious = completedPrevious.slice(0, -1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
45
68
|
var newStep = {
|
|
46
69
|
id: nextStepId(),
|
|
47
70
|
message: message,
|
|
@@ -93,4 +116,4 @@ export var getActiveExecutionStep = function getActiveExecutionStep(steps) {
|
|
|
93
116
|
});
|
|
94
117
|
return running !== null && running !== void 0 ? running : steps[steps.length - 1];
|
|
95
118
|
};
|
|
96
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInN0cmVhbURlYnVnTG9nIiwiZXhlY3V0aW9uU3RlcENvdW50ZXIiLCJuZXh0U3RlcElkIiwiY29uY2F0IiwicmVzZXRFeGVjdXRpb25TdGVwQ291bnRlciIsImNvbXBsZXRlUnVubmluZ1N0ZXBzIiwic3RlcHMiLCJtYXAiLCJzdGVwIiwic3RhdHVzIiwiX29iamVjdFNwcmVhZCIsImNvbXBsZXRlUnVubmluZ1N0ZXBzSW5TdGVwcyIsImNvbXBsZXRlQWxsRXhlY3V0aW9uU3RlcHMiLCJzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UiLCJsZW5ndGgiLCJzb21lIiwicmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUiLCJwYXlsb2FkIiwidCIsImNvbnRleHQiLCJ0aHJlYWRJZCIsImFjdGl2aXR5IiwibWVzc2FnZSIsInRocmVhZF9pZCIsInB1c2hFeGVjdXRpb25TdGVwRnJvbU5vZGUiLCJjdXJyZW50U3RlcHMiLCJfcGF5bG9hZCR0b29sX25hbWUiLCJjb21wbGV0ZWRQcmV2aW91cyIsIm5ld1N0ZXAiLCJpZCIsIm5vZGUiLCJ0b29sTmFtZSIsInRvb2xfbmFtZSIsInVuZGVmaW5lZCIsIm5leHRTdGVwcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInN0ZXBDb3VudCIsImhhc0hpdGxDb250ZXh0IiwiQm9vbGVhbiIsImZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nIiwid3JpdGluZ01lc3NhZ2UiLCJjb21wbGV0ZWQiLCJ3cml0aW5nSW5kZXgiLCJmaW5kSW5kZXgiLCJpbmRleCIsIm1lcmdlQWN0aXZpdHlXaXRoRXhlY3V0aW9uU3RlcHMiLCJleGVjdXRpb25TdGVwcyIsImdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAiLCJydW5uaW5nIiwicmV2ZXJzZSIsImZpbmQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyZWFtRXhlY3V0aW9uU3RlcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJlYW1FeGVjdXRpb25TdGVwLCBTdHJlYW1Ob2RlRXZlbnRQYXlsb2FkLCBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4vc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtRGVidWdMb2cgfSBmcm9tICcuL3N0cmVhbURlYnVnTG9nJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxubGV0IGV4ZWN1dGlvblN0ZXBDb3VudGVyID0gMFxuXG5jb25zdCBuZXh0U3RlcElkID0gKCk6IHN0cmluZyA9PiB7XG4gIGV4ZWN1dGlvblN0ZXBDb3VudGVyICs9IDFcbiAgcmV0dXJuIGBleGVjLXN0ZXAtJHtleGVjdXRpb25TdGVwQ291bnRlcn1gXG59XG5cbmV4cG9ydCBjb25zdCByZXNldEV4ZWN1dGlvblN0ZXBDb3VudGVyID0gKCk6IHZvaWQgPT4ge1xuICBleGVjdXRpb25TdGVwQ291bnRlciA9IDBcbn1cblxuY29uc3QgY29tcGxldGVSdW5uaW5nU3RlcHMgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSA9PlxuICBzdGVwcy5tYXAoc3RlcCA9PiAoc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJyA/IHsgLi4uc3RlcCwgc3RhdHVzOiAnY29tcGxldGVkJyBhcyBjb25zdCB9IDogc3RlcCkpXG5cbmV4cG9ydCBjb25zdCBjb21wbGV0ZVJ1bm5pbmdTdGVwc0luU3RlcHMgPSBjb21wbGV0ZVJ1bm5pbmdTdGVwc1xuXG5leHBvcnQgY29uc3QgY29tcGxldGVBbGxFeGVjdXRpb25TdGVwcyA9IChzdGVwczogU3RyZWFtRXhlY3V0aW9uU3RlcFtdKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+XG4gIHN0ZXBzLm1hcChzdGVwID0+ICh7IC4uLnN0ZXAsIHN0YXR1czogJ2NvbXBsZXRlZCcgYXMgY29uc3QgfSkpXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93RXhlY3V0aW9uVHJhY2UgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIXN0ZXBzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICBpZiAoc3RlcHMubGVuZ3RoID49IDIpIHJldHVybiB0cnVlXG4gIHJldHVybiBzdGVwcy5zb21lKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdjb21wbGV0ZWQnKVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVN0ZXBNZXNzYWdlRnJvbU5vZGUgPSAoXG4gIHBheWxvYWQ6IFN0cmVhbU5vZGVFdmVudFBheWxvYWQsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICB0aHJlYWRJZD86IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgYWN0aXZpdHkgPSByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShwYXlsb2FkLm1lc3NhZ2UsIHQsIGNvbnRleHQsIHRocmVhZElkID8/IHBheWxvYWQudGhyZWFkX2lkKVxuICByZXR1cm4gYWN0aXZpdHkubWVzc2FnZVxufVxuXG5leHBvcnQgY29uc3QgcHVzaEV4ZWN1dGlvblN0ZXBGcm9tTm9kZSA9IChcbiAgY3VycmVudFN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW10sXG4gIHBheWxvYWQ6IFN0cmVhbU5vZGVFdmVudFBheWxvYWQsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICB0aHJlYWRJZD86IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgbWVzc2FnZSA9IHJlc29sdmVTdGVwTWVzc2FnZUZyb21Ob2RlKHBheWxvYWQsIHQsIGNvbnRleHQsIHRocmVhZElkKVxuICBjb25zdCBjb21wbGV0ZWRQcmV2aW91cyA9IGNvbXBsZXRlUnVubmluZ1N0ZXBzKGN1cnJlbnRTdGVwcylcbiAgY29uc3QgbmV3U3RlcDogU3RyZWFtRXhlY3V0aW9uU3RlcCA9IHtcbiAgICBpZDogbmV4dFN0ZXBJZCgpLFxuICAgIG1lc3NhZ2UsXG4gICAgbm9kZTogcGF5bG9hZC5ub2RlLFxuICAgIHRvb2xOYW1lOiBwYXlsb2FkLnRvb2xfbmFtZSA/PyAocGF5bG9hZC5ub2RlICE9PSAncmVzdW1pbmcnID8gcGF5bG9hZC5ub2RlIDogdW5kZWZpbmVkKSxcbiAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgfVxuICBjb25zdCBuZXh0U3RlcHMgPSBbLi4uY29tcGxldGVkUHJldmlvdXMsIG5ld1N0ZXBdXG4gIHN0cmVhbURlYnVnTG9nKCdleGVjdXRpb25TdGVwcycsICdwdXNoJywge1xuICAgIG5vZGU6IHBheWxvYWQubm9kZSxcbiAgICB0b29sTmFtZTogbmV3U3RlcC50b29sTmFtZSxcbiAgICBtZXNzYWdlOiBuZXdTdGVwLm1lc3NhZ2UsXG4gICAgc3RlcENvdW50OiBuZXh0U3RlcHMubGVuZ3RoLFxuICAgIGhhc0hpdGxDb250ZXh0OiBCb29sZWFuKGNvbnRleHQpLFxuICB9KVxuICByZXR1cm4gbmV4dFN0ZXBzXG59XG5cbi8qKiBBbCBpbmljaWFyIHRva2VuL2NvbnRlbnQ6IG1hcmNhIHRvb2xzIGNvbW8gY29tcGxldGFkYXMgeSBhZ3JlZ2EvYWN0dWFsaXphIGVsIHBhc28gZGUgZXNjcml0dXJhLiAqL1xuZXhwb3J0IGNvbnN0IGZpbmFsaXplRXhlY3V0aW9uU3RlcHNGb3JXcml0aW5nID0gKFxuICBjdXJyZW50U3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSxcbiAgd3JpdGluZ01lc3NhZ2U6IHN0cmluZ1xuKTogU3RyZWFtRXhlY3V0aW9uU3RlcFtdID0+IHtcbiAgY29uc3QgY29tcGxldGVkID0gY29tcGxldGVSdW5uaW5nU3RlcHMoY3VycmVudFN0ZXBzKVxuICBjb25zdCB3cml0aW5nSW5kZXggPSBjb21wbGV0ZWQuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC5ub2RlID09PSAnX193cml0aW5nX18nKVxuXG4gIGlmICh3cml0aW5nSW5kZXggPj0gMCkge1xuICAgIHJldHVybiBjb21wbGV0ZWQubWFwKChzdGVwLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSB3cml0aW5nSW5kZXggPyB7IC4uLnN0ZXAsIG1lc3NhZ2U6IHdyaXRpbmdNZXNzYWdlLCBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCB9IDogc3RlcFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgLi4uY29tcGxldGVkLFxuICAgIHtcbiAgICAgIGlkOiBuZXh0U3RlcElkKCksXG4gICAgICBtZXNzYWdlOiB3cml0aW5nTWVzc2FnZSxcbiAgICAgIG5vZGU6ICdfX3dyaXRpbmdfXycsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyBhcyBjb25zdCxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBjb25zdCBtZXJnZUFjdGl2aXR5V2l0aEV4ZWN1dGlvblN0ZXBzID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIHN0ZXBzOiBTdHJlYW1FeGVjdXRpb25TdGVwW11cbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIC4uLmFjdGl2aXR5LFxuICBleGVjdXRpb25TdGVwczogc3RlcHMubGVuZ3RoID4gMCA/IHN0ZXBzIDogdW5kZWZpbmVkLFxufSlcblxuZXhwb3J0IGNvbnN0IGdldEFjdGl2ZUV4ZWN1dGlvblN0ZXAgPSAoc3RlcHM6IFN0cmVhbUV4ZWN1dGlvblN0ZXBbXSk6IFN0cmVhbUV4ZWN1dGlvblN0ZXAgfCBudWxsID0+IHtcbiAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBudWxsXG4gIGNvbnN0IHJ1bm5pbmcgPSBbLi4uc3RlcHNdLnJldmVyc2UoKS5maW5kKHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJylcbiAgcmV0dXJuIHJ1bm5pbmcgPz8gc3RlcHNbc3RlcHMubGVuZ3RoIC0gMV1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLDZCQUE2QixRQUFRLDBCQUEwQjtBQUN4RSxTQUFTQyxjQUFjLFFBQVEsa0JBQWtCO0FBSWpELElBQUlDLG9CQUFvQixHQUFHLENBQUM7QUFFNUIsSUFBTUMsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUEsRUFBaUI7RUFDL0JELG9CQUFvQixJQUFJLENBQUM7RUFDekIsb0JBQUFFLE1BQUEsQ0FBb0JGLG9CQUFvQjtBQUMxQyxDQUFDO0FBRUQsT0FBTyxJQUFNRyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFBLEVBQWU7RUFDbkRILG9CQUFvQixHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEtBQTRCO0VBQUEsT0FDeERBLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLFVBQUFDLElBQUk7SUFBQSxPQUFLQSxJQUFJLENBQUNDLE1BQU0sS0FBSyxTQUFTLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUFRRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQixLQUFLRCxJQUFJO0VBQUEsQ0FBQyxDQUFDO0FBQUE7QUFFbkcsT0FBTyxJQUFNRywyQkFBMkIsR0FBR04sb0JBQW9CO0FBRS9ELE9BQU8sSUFBTU8seUJBQXlCLEdBQUcsU0FBNUJBLHlCQUF5QkEsQ0FBSU4sS0FBNEI7RUFBQSxPQUNwRUEsS0FBSyxDQUFDQyxHQUFHLENBQUMsVUFBQUMsSUFBSTtJQUFBLE9BQUFFLGFBQUEsQ0FBQUEsYUFBQSxLQUFVRixJQUFJO01BQUVDLE1BQU0sRUFBRTtJQUFvQjtFQUFBLENBQUcsQ0FBQztBQUFBO0FBRWhFLE9BQU8sSUFBTUksd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSVAsS0FBd0MsRUFBYztF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
|
|
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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
|