@magic-xpa/engine 4.801.0-dev481.243 → 4.801.0-dev481.249
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/esm2020/index.mjs +190 -0
- package/{esm2015/magic-xpa-engine.js → esm2020/magic-xpa-engine.mjs} +0 -0
- package/esm2020/src/AccessHelper.mjs +3 -0
- package/esm2020/src/ClientManager.mjs +403 -0
- package/esm2020/src/CommandsProcessorBase.mjs +58 -0
- package/esm2020/src/CommandsProcessorManager.mjs +26 -0
- package/esm2020/src/CommandsTable.mjs +163 -0
- package/{esm2015/src/ConstInterface.js → esm2020/src/ConstInterface.mjs} +0 -0
- package/{esm2015/src/CurrentClientVersion.js → esm2020/src/CurrentClientVersion.mjs} +2 -2
- package/{esm2015/src/FlowMonitorInterface.js → esm2020/src/FlowMonitorInterface.mjs} +0 -0
- package/esm2020/src/GUIManager.mjs +63 -0
- package/{esm2015/src/GlobalCommandsManager.js → esm2020/src/GlobalCommandsManager.mjs} +0 -0
- package/{esm2015/src/GuiEventsProcessor.js → esm2020/src/GuiEventsProcessor.mjs} +0 -0
- package/{esm2015/src/ICommandsTable.js → esm2020/src/ICommandsTable.mjs} +1 -0
- package/{esm2015/src/ServerConfig.js → esm2020/src/ServerConfig.mjs} +0 -0
- package/{esm2015/src/bridge/IGuiEvent.js → esm2020/src/bridge/IGuiEvent.mjs} +0 -0
- package/esm2020/src/bridge/MagicBridge.mjs +41 -0
- package/{esm2015/src/commands/ClientOriginatedCommandTaskTag.js → esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/AddUserLocateDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/AddUserRangeDataviewCommand.js → esm2020/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/AddUserSortDataViewCommand.js → esm2020/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js → esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ClientOriginatedCommand.js → esm2020/src/commands/ClientToServer/ClientOriginatedCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ClientOriginatedCommandSerializer.js → esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ColumnSortEventCommand.js → esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs} +0 -0
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +278 -0
- package/{esm2015/src/commands/ClientToServer/CommandSerializationHelper.js → esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ComputeEventCommand.js → esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ContextTerminationEventCommand.js → esm2020/src/commands/ClientToServer/ContextTerminationEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ContextTimeoutResetCommand.js → esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ControlItemsRefreshCommand.js → esm2020/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/DataViewOutputCommand.js → esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/DataviewCommand.js → esm2020/src/commands/ClientToServer/DataviewCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/EvaluateCommand.js → esm2020/src/commands/ClientToServer/EvaluateCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/EventCommand.js → esm2020/src/commands/ClientToServer/EventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ExecOperCommand.js → esm2020/src/commands/ClientToServer/ExecOperCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/FetchDataControlValuesEventCommand.js → esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/GlobalParamsQueryCommand.js → esm2020/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/ICommandTaskTag.js → esm2020/src/commands/ClientToServer/ICommandTaskTag.mjs} +1 -0
- package/{esm2015/src/commands/ClientToServer/IndexChangeEventCommand.js → esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/IniputForceWriteCommand.js → esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/NonReversibleExitEventCommand.js → esm2020/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/QueryCommand.js → esm2020/src/commands/ClientToServer/QueryCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/RecomputeCommand.js → esm2020/src/commands/ClientToServer/RecomputeCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/RefreshEventCommand.js → esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/RefreshScreenEventCommand.js → esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/RollbackEventCommand.js → esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/SelectProgramCommand.js → esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/SetTransactionStateDataviewCommand.js → esm2020/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/SubformOpenEventCommand.js → esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/SubformRefreshEventCommand.js → esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/TransactionCommand.js → esm2020/src/commands/ClientToServer/TransactionCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/UnloadCommand.js → esm2020/src/commands/ClientToServer/UnloadCommand.mjs} +0 -0
- package/{esm2015/src/commands/ClientToServer/WriteMessageToServerLogCommand.js → esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs} +0 -0
- package/esm2020/src/commands/DataViewCommandBase.mjs +10 -0
- package/{esm2015/src/commands/IClientCommand.js → esm2020/src/commands/IClientCommand.mjs} +1 -0
- package/esm2020/src/commands/IClientTargetedCommand.mjs +9 -0
- package/{esm2015/src/commands/IClientToServerCommandInfo.js → esm2020/src/commands/IClientToServerCommandInfo.mjs} +1 -0
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/esm2020/src/commands/ServerToClient/AddLocateCommand.mjs +22 -0
- package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
- package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
- package/{esm2015/src/commands/ServerToClient/ClientRefreshCommand.js → esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs} +14 -17
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +27 -0
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +222 -0
- package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +15 -0
- package/esm2020/src/commands/ServerToClient/ResetRangeCommand.mjs +15 -0
- package/esm2020/src/commands/ServerToClient/ResetSortCommand.mjs +15 -0
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +85 -0
- package/{esm2015/src/commands/ServerToClient/XMLBasedCommandBuilder.js → esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs} +0 -0
- package/{esm2015/src/communications/IConnectionStateManager.js → esm2020/src/communications/IConnectionStateManager.mjs} +1 -0
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +17 -0
- package/{esm2015/src/data/DataSourceIdKey.js → esm2020/src/data/DataSourceIdKey.mjs} +0 -0
- package/esm2020/src/data/DataView.mjs +1634 -0
- package/{esm2015/src/data/DataViewBase.js → esm2020/src/data/DataViewBase.mjs} +0 -0
- package/esm2020/src/data/DataviewManager.mjs +28 -0
- package/esm2020/src/data/DataviewManagerBase.mjs +15 -0
- package/{esm2015/src/data/DvCache.js → esm2020/src/data/DvCache.mjs} +0 -0
- package/esm2020/src/data/Field.mjs +645 -0
- package/esm2020/src/data/FieldBase.mjs +18 -0
- package/{esm2015/src/data/FieldsTable.js → esm2020/src/data/FieldsTable.mjs} +0 -0
- package/{esm2015/src/data/IRecordsTable.js → esm2020/src/data/IRecordsTable.mjs} +1 -0
- package/{esm2015/src/data/Key.js → esm2020/src/data/Key.mjs} +0 -0
- package/{esm2015/src/data/Record.js → esm2020/src/data/Record.mjs} +0 -0
- package/{esm2015/src/data/RecordOutOfDataViewException.js → esm2020/src/data/RecordOutOfDataViewException.mjs} +0 -0
- package/{esm2015/src/data/RecordsTable.js → esm2020/src/data/RecordsTable.mjs} +0 -0
- package/esm2020/src/data/TaskTransactionManager.mjs +103 -0
- package/{esm2015/src/data/XMLBasedDcValuesBuilder.js → esm2020/src/data/XMLBasedDcValuesBuilder.mjs} +0 -0
- package/{esm2015/src/enums.js → esm2020/src/enums.mjs} +0 -0
- package/esm2020/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2020/src/env/Environment.mjs +554 -0
- package/{esm2015/src/env/ILanguageData.js → esm2020/src/env/ILanguageData.mjs} +1 -0
- package/esm2020/src/env/LanguageData.mjs +222 -0
- package/esm2020/src/env/MirrorString.mjs +66 -0
- package/{esm2015/src/event/ActionManager.js → esm2020/src/event/ActionManager.mjs} +0 -0
- package/esm2020/src/event/Event.mjs +1436 -0
- package/esm2020/src/event/EventHandler.mjs +773 -0
- package/{esm2015/src/event/EventHandlerPosition.js → esm2020/src/event/EventHandlerPosition.mjs} +0 -0
- package/esm2020/src/event/EventsManager.mjs +2983 -0
- package/{esm2015/src/event/IEventsManager.js → esm2020/src/event/IEventsManager.mjs} +0 -0
- package/{esm2015/src/event/RunTimeEvent.js → esm2020/src/event/RunTimeEvent.mjs} +0 -0
- package/{esm2015/src/event/RunTimeEventBase.js → esm2020/src/event/RunTimeEventBase.mjs} +0 -0
- package/{esm2015/src/event/UserEventsTable.js → esm2020/src/event/UserEventsTable.mjs} +0 -0
- package/{esm2015/src/exp/ExpTable.js → esm2020/src/exp/ExpTable.mjs} +0 -0
- package/esm2020/src/exp/Expression.mjs +200 -0
- package/{esm2015/src/exp/ExpressionDict.js → esm2020/src/exp/ExpressionDict.mjs} +0 -0
- package/esm2020/src/exp/ExpressionEvaluator.mjs +4373 -0
- package/{esm2015/src/exp/ExpressionLocalJpn.js → esm2020/src/exp/ExpressionLocalJpn.mjs} +0 -0
- package/esm2020/src/exp/GlobalParamsTable.mjs +85 -0
- package/esm2020/src/exp/YesNoExp.mjs +41 -0
- package/{esm2015/src/gui/CreatedFormVector.js → esm2020/src/gui/CreatedFormVector.mjs} +0 -0
- package/esm2020/src/gui/FormsTable.mjs +66 -0
- package/esm2020/src/gui/MgControl.mjs +357 -0
- package/esm2020/src/gui/MgForm.mjs +1195 -0
- package/esm2020/src/http/HttpManager.mjs +97 -0
- package/esm2020/src/http/client/HttpClientAsync.mjs +67 -0
- package/esm2020/src/http/client/HttpClientBase.mjs +148 -0
- package/{esm2015/src/http/client/HttpClientEvents.js → esm2020/src/http/client/HttpClientEvents.mjs} +0 -0
- package/esm2020/src/http/client/HttpClientSync.mjs +42 -0
- package/{esm2015/src/http/client/HttpUtility.js → esm2020/src/http/client/HttpUtility.mjs} +0 -0
- package/{esm2015/src/http/client/ICommunicationsFailureHandler.js → esm2020/src/http/client/ICommunicationsFailureHandler.mjs} +1 -0
- package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
- package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
- package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +872 -0
- package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
- package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +24 -0
- package/{esm2015/src/remote/RemoteDataViewCommandFactory.js → esm2020/src/remote/RemoteDataViewCommandFactory.mjs} +0 -0
- package/esm2020/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +16 -0
- package/esm2020/src/remote/RemoteDataviewManager.mjs +17 -0
- package/esm2020/src/remote/RemoteInitDataViewCommand.mjs +11 -0
- package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
- package/esm2020/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +13 -0
- package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
- package/{esm2015/src/remote/ServerError.js → esm2020/src/remote/ServerError.mjs} +0 -0
- package/{esm2015/src/remote/SetTransactionStateRemoteDataViewCommand.js → esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs} +8 -11
- package/esm2020/src/rt/Argument.mjs +274 -0
- package/esm2020/src/rt/ArgumentsList.mjs +103 -0
- package/esm2020/src/rt/Boundary.mjs +158 -0
- package/{esm2015/src/rt/CompMainPrgTable.js → esm2020/src/rt/CompMainPrgTable.mjs} +0 -0
- package/esm2020/src/rt/DataviewHeaderBase.mjs +96 -0
- package/{esm2015/src/rt/DataviewHeaderFactory.js → esm2020/src/rt/DataviewHeaderFactory.mjs} +0 -0
- package/{esm2015/src/rt/DataviewHeaders.js → esm2020/src/rt/DataviewHeaders.mjs} +0 -0
- package/{esm2015/src/rt/DataviewHeadersSaxHandler.js → esm2020/src/rt/DataviewHeadersSaxHandler.mjs} +0 -0
- package/{esm2015/src/rt/ExecutionStack.js → esm2020/src/rt/ExecutionStack.mjs} +0 -0
- package/{esm2015/src/rt/ExecutionStackEntry.js → esm2020/src/rt/ExecutionStackEntry.mjs} +0 -0
- package/{esm2015/src/rt/HandlersTable.js → esm2020/src/rt/HandlersTable.mjs} +0 -0
- package/{esm2015/src/rt/IDataSourceViewDefinition.js → esm2020/src/rt/IDataSourceViewDefinition.mjs} +1 -0
- package/{esm2015/src/rt/IDataviewHeader.js → esm2020/src/rt/IDataviewHeader.mjs} +1 -0
- package/{esm2015/src/rt/IResultValue.js → esm2020/src/rt/IResultValue.mjs} +1 -0
- package/{esm2015/src/rt/LastFocusedManager.js → esm2020/src/rt/LastFocusedManager.mjs} +0 -0
- package/esm2020/src/rt/Operation.mjs +745 -0
- package/{esm2015/src/rt/OperationTable.js → esm2020/src/rt/OperationTable.mjs} +0 -0
- package/esm2020/src/rt/Recompute.mjs +355 -0
- package/{esm2015/src/rt/RecomputeTable.js → esm2020/src/rt/RecomputeTable.mjs} +0 -0
- package/esm2020/src/rt/RemoteDataviewHeader.mjs +105 -0
- package/{esm2015/src/rt/ResultValue.js → esm2020/src/rt/ResultValue.mjs} +0 -0
- package/esm2020/src/rt/TableCache.mjs +177 -0
- package/esm2020/src/rt/TableCacheManager.mjs +67 -0
- package/{esm2015/src/rt/Transaction.js → esm2020/src/rt/Transaction.mjs} +0 -0
- package/{esm2015/src/security/UserDetails.js → esm2020/src/security/UserDetails.mjs} +0 -0
- package/{esm2015/src/tasks/IMGDataCollection.js → esm2020/src/tasks/IMGDataCollection.mjs} +1 -0
- package/esm2020/src/tasks/MGData.mjs +552 -0
- package/esm2020/src/tasks/MGDataCollection.mjs +259 -0
- package/{esm2015/src/tasks/MenusDeserializer.js → esm2020/src/tasks/MenusDeserializer.mjs} +0 -0
- package/{esm2015/src/tasks/RCTimer.js → esm2020/src/tasks/RCTimer.mjs} +0 -0
- package/{esm2015/src/tasks/RemoteTaskService.js → esm2020/src/tasks/RemoteTaskService.mjs} +0 -0
- package/esm2020/src/tasks/Task.mjs +2501 -0
- package/{esm2015/src/tasks/TaskBase.js → esm2020/src/tasks/TaskBase.mjs} +22 -1
- package/esm2020/src/tasks/TaskServiceBase.mjs +25 -0
- package/esm2020/src/tasks/TasksTable.mjs +80 -0
- package/{esm2015/src/tasks/sort/Sort.js → esm2020/src/tasks/sort/Sort.mjs} +0 -0
- package/{esm2015/src/tasks/sort/SortCollection.js → esm2020/src/tasks/sort/SortCollection.mjs} +0 -0
- package/{esm2015/src/util/ConstUtils.js → esm2020/src/util/ConstUtils.mjs} +0 -0
- package/esm2020/src/util/FlowMonitorQueue.mjs +361 -0
- package/{esm2015/src/util/HeapSort.js → esm2020/src/util/HeapSort.mjs} +0 -0
- package/{esm2015/src/util/IMirrorXML.js → esm2020/src/util/IMirrorXML.mjs} +2 -1
- package/{esm2015/src/util/IServerConfig.js → esm2020/src/util/IServerConfig.mjs} +1 -0
- package/{esm2015/src/util/MgBlockingQueue.js → esm2020/src/util/MgBlockingQueue.mjs} +1 -0
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +76 -0
- package/{esm2015/src/util/MgPriorityQueue.js → esm2020/src/util/MgPriorityQueue.mjs} +0 -0
- package/esm2020/src/util/ParamParseResult.mjs +8 -0
- package/esm2020/src/util/PrmMap.mjs +151 -0
- package/{esm2015/src/util/Process.js → esm2020/src/util/Process.mjs} +0 -0
- package/{esm2015/src/util/ReturnResult.js → esm2020/src/util/ReturnResult.mjs} +0 -0
- package/{esm2015/src/util/ReturnResultBase.js → esm2020/src/util/ReturnResultBase.mjs} +0 -0
- package/{esm2015/src/util/Scrambler.js → esm2020/src/util/Scrambler.mjs} +0 -0
- package/{esm2015/src/util/UniqueIDUtils.js → esm2020/src/util/UniqueIDUtils.mjs} +0 -0
- package/{esm2015/src/util/cookie.service.js → esm2020/src/util/cookie.service.mjs} +0 -0
- package/fesm2015/{magic-xpa-engine.js → magic-xpa-engine.mjs} +102 -5
- package/fesm2015/magic-xpa-engine.mjs.map +1 -0
- package/fesm2020/magic-xpa-engine.mjs +30705 -0
- package/fesm2020/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/package.json +27 -13
- package/src/AccessHelper.d.ts +1 -1
- package/src/CommandsProcessorBase.d.ts +3 -3
- package/src/commands/DataViewCommandBase.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +1 -1
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +1 -1
- package/src/data/FieldBase.d.ts +3 -3
- package/src/env/EnvVariablesTable.d.ts +2 -15
- package/src/env/MirrorString.d.ts +15 -0
- package/src/exp/GlobalParamsTable.d.ts +2 -1
- package/src/http/client/HttpClientBase.d.ts +2 -2
- package/src/rt/DataviewHeaderBase.d.ts +1 -1
- package/src/tasks/TaskBase.d.ts +7 -7
- package/src/util/IMirrorXML.d.ts +1 -1
- package/src/util/ParamParseResult.d.ts +6 -0
- package/src/util/PrmMap.d.ts +0 -6
- package/bundles/magic-xpa-engine.umd.js +0 -37983
- package/bundles/magic-xpa-engine.umd.js.map +0 -1
- package/bundles/magic-xpa-engine.umd.min.js +0 -16
- package/bundles/magic-xpa-engine.umd.min.js.map +0 -1
- package/esm2015/index.js +0 -188
- package/esm2015/src/AccessHelper.js +0 -3
- package/esm2015/src/ClientManager.js +0 -412
- package/esm2015/src/CommandsProcessorBase.js +0 -54
- package/esm2015/src/CommandsProcessorManager.js +0 -31
- package/esm2015/src/CommandsTable.js +0 -166
- package/esm2015/src/GUIManager.js +0 -72
- package/esm2015/src/bridge/MagicBridge.js +0 -44
- package/esm2015/src/commands/ClientToServer/CommandFactory.js +0 -283
- package/esm2015/src/commands/DataViewCommandBase.js +0 -6
- package/esm2015/src/commands/IClientTargetedCommand.js +0 -6
- package/esm2015/src/commands/ServerToClient/AbortCommand.js +0 -68
- package/esm2015/src/commands/ServerToClient/AddLocateCommand.js +0 -25
- package/esm2015/src/commands/ServerToClient/AddRangeCommand.js +0 -65
- package/esm2015/src/commands/ServerToClient/AddSortCommand.js +0 -36
- package/esm2015/src/commands/ServerToClient/ClientTargetedCommandBase.js +0 -24
- package/esm2015/src/commands/ServerToClient/EnhancedVerifyCommand.js +0 -48
- package/esm2015/src/commands/ServerToClient/OpenURLCommand.js +0 -225
- package/esm2015/src/commands/ServerToClient/ResetLocateCommand.js +0 -18
- package/esm2015/src/commands/ServerToClient/ResetRangeCommand.js +0 -18
- package/esm2015/src/commands/ServerToClient/ResetSortCommand.js +0 -18
- package/esm2015/src/commands/ServerToClient/ResultCommand.js +0 -40
- package/esm2015/src/commands/ServerToClient/VerifyCommand.js +0 -88
- package/esm2015/src/communications/InteractiveCommunicationsFailureHandler.js +0 -20
- package/esm2015/src/data/DataView.js +0 -1692
- package/esm2015/src/data/DataviewManager.js +0 -31
- package/esm2015/src/data/DataviewManagerBase.js +0 -18
- package/esm2015/src/data/Field.js +0 -671
- package/esm2015/src/data/FieldBase.js +0 -9
- package/esm2015/src/data/TaskTransactionManager.js +0 -110
- package/esm2015/src/env/EnvVariablesTable.js +0 -408
- package/esm2015/src/env/Environment.js +0 -557
- package/esm2015/src/env/LanguageData.js +0 -229
- package/esm2015/src/event/Event.js +0 -1441
- package/esm2015/src/event/EventHandler.js +0 -786
- package/esm2015/src/event/EventsManager.js +0 -3106
- package/esm2015/src/exp/Expression.js +0 -209
- package/esm2015/src/exp/ExpressionEvaluator.js +0 -4440
- package/esm2015/src/exp/GlobalParamsTable.js +0 -84
- package/esm2015/src/exp/YesNoExp.js +0 -44
- package/esm2015/src/gui/FormsTable.js +0 -73
- package/esm2015/src/gui/MgControl.js +0 -424
- package/esm2015/src/gui/MgForm.js +0 -1291
- package/esm2015/src/http/HttpManager.js +0 -100
- package/esm2015/src/http/client/HttpClientAsync.js +0 -72
- package/esm2015/src/http/client/HttpClientBase.js +0 -147
- package/esm2015/src/http/client/HttpClientSync.js +0 -47
- package/esm2015/src/remote/AddUserLocateRemoteDataViewCommand.js +0 -21
- package/esm2015/src/remote/AddUserRangeRemoteDataViewCommand.js +0 -21
- package/esm2015/src/remote/AddUserSortRemoteDataViewCommand.js +0 -21
- package/esm2015/src/remote/RemoteCommandsProcessor.js +0 -901
- package/esm2015/src/remote/RemoteControlItemsRefreshCommand.js +0 -28
- package/esm2015/src/remote/RemoteDataViewCommandBase.js +0 -27
- package/esm2015/src/remote/RemoteDataViewCommandUpdateNonModifiable.js +0 -19
- package/esm2015/src/remote/RemoteDataviewManager.js +0 -23
- package/esm2015/src/remote/RemoteInitDataViewCommand.js +0 -14
- package/esm2015/src/remote/ResetUserLocateRemoteDataviewCommand.js +0 -20
- package/esm2015/src/remote/ResetUserRangeRemoteDataviewCommand.js +0 -16
- package/esm2015/src/remote/ResetUserSortRemoteDataviewCommand.js +0 -19
- package/esm2015/src/rt/Argument.js +0 -281
- package/esm2015/src/rt/ArgumentsList.js +0 -108
- package/esm2015/src/rt/Boundary.js +0 -161
- package/esm2015/src/rt/DataviewHeaderBase.js +0 -96
- package/esm2015/src/rt/Operation.js +0 -772
- package/esm2015/src/rt/Recompute.js +0 -372
- package/esm2015/src/rt/RemoteDataviewHeader.js +0 -114
- package/esm2015/src/rt/TableCache.js +0 -182
- package/esm2015/src/rt/TableCacheManager.js +0 -70
- package/esm2015/src/tasks/MGData.js +0 -561
- package/esm2015/src/tasks/MGDataCollection.js +0 -270
- package/esm2015/src/tasks/Task.js +0 -2601
- package/esm2015/src/tasks/TaskServiceBase.js +0 -30
- package/esm2015/src/tasks/TasksTable.js +0 -87
- package/esm2015/src/util/FlowMonitorQueue.js +0 -364
- package/esm2015/src/util/MgPriorityBlockingQueue.js +0 -79
- package/esm2015/src/util/PrmMap.js +0 -157
- package/fesm2015/magic-xpa-engine.js.map +0 -1
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { ReturnResult } from "../util/ReturnResult";
|
|
3
|
-
import { PropInterface } from "@magic-xpa/gui";
|
|
4
|
-
export class TaskServiceBase {
|
|
5
|
-
static CreateFirstRecord(task) {
|
|
6
|
-
task.AfterFirstRecordPrefix = true;
|
|
7
|
-
}
|
|
8
|
-
PrepareTask(task) {
|
|
9
|
-
return ReturnResult.SuccessfulResult;
|
|
10
|
-
}
|
|
11
|
-
static PreparePropOpenTaskWindow(task) {
|
|
12
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
-
let propOpenTaskWindow = task.getProp(PropInterface.PROP_TYPE_TASK_PROPERTIES_OPEN_TASK_WINDOW);
|
|
14
|
-
let propOpenTaskWindowValue = false;
|
|
15
|
-
if (!task.isMainProg() || task.getCtlIdx() === 0) {
|
|
16
|
-
propOpenTaskWindowValue = yield propOpenTaskWindow.getValueBoolean();
|
|
17
|
-
}
|
|
18
|
-
task.SetOpenWin(propOpenTaskWindowValue);
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
static Exit(task, reversibleExit, subformDestination) {
|
|
22
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
yield task.Exit(reversibleExit, subformDestination);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
GetOwnerTransactionTask(task) {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza1NlcnZpY2VCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy90YXNrcy9UYXNrU2VydmljZUJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQVcsYUFBYSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkQsTUFBTSxPQUFnQixlQUFlO0lBV25DLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFVO1FBRWpDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQWFELFdBQVcsQ0FBQyxJQUFVO1FBRXBCLE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDO0lBQ3ZDLENBQUM7SUFNRCxNQUFNLENBQU8seUJBQXlCLENBQUMsSUFBVTs7WUFDL0MsSUFBSSxrQkFBa0IsR0FBYSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQzFHLElBQUksdUJBQXVCLEdBQVksS0FBSyxDQUFDO1lBSTdDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDaEQsdUJBQXVCLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN0RTtZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO0tBQUE7SUFvQ0QsTUFBTSxDQUFPLElBQUksQ0FBQyxJQUFVLEVBQUUsY0FBdUIsRUFBRSxrQkFBMkI7O1lBQ2hGLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN0RCxDQUFDO0tBQUE7SUFTRCx1QkFBdUIsQ0FBQyxJQUFVO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRhdmlld01hbmFnZXJCYXNlfSBmcm9tIFwiLi4vZGF0YS9EYXRhdmlld01hbmFnZXJCYXNlXCI7XHJcbmltcG9ydCB7UmV0dXJuUmVzdWx0fSBmcm9tIFwiLi4vdXRpbC9SZXR1cm5SZXN1bHRcIjtcclxuaW1wb3J0IHtQcm9wZXJ0eSwgUHJvcEludGVyZmFjZX0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4vVGFza1wiO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhc2tTZXJ2aWNlQmFzZSB7XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGVmYXVsdFZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGFic3RyYWN0IEdldFRhc2tUYWcoZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNyZWF0ZXMgaW5pdGlhbCByZWNvcmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBDcmVhdGVGaXJzdFJlY29yZCh0YXNrOiBUYXNrKTogdm9pZCB7XHJcbiAgICAvLyBRQ1IgIzI5ODU5MyBGcmFtZXMgYXJlIGRpZmZlcmVudCBmcm9tIHN1YmZvcm1zXHJcbiAgICB0YXNrLkFmdGVyRmlyc3RSZWNvcmRQcmVmaXggPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAhIVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBhYnN0cmFjdCBHZXREYXRhdmlld01hbmFnZXJGb3JWaXJ0dWFscyh0YXNrOiBUYXNrKTogRGF0YXZpZXdNYW5hZ2VyQmFzZTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBQcmVwYXJlIFRhc2sgYmVmb3JlIGV4ZWN1dGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPjwvcGFyYW0+XHJcbiAgUHJlcGFyZVRhc2sodGFzazogVGFzayk6IFJldHVyblJlc3VsdCB7XHJcbiAgICAvLyBTdWJmb3JtIHdpdGggYSBsb2NhbCBkYXRhIGlzIG5vdCBjYWNoZWRcclxuICAgIHJldHVybiBSZXR1cm5SZXN1bHQuU3VjY2Vzc2Z1bFJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcHJlcGFyZSB0aGUgcHJvcGVydHkgb3BlbiB0YXNrIHdpbmRvd1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIGFzeW5jIFByZXBhcmVQcm9wT3BlblRhc2tXaW5kb3codGFzazogVGFzayk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHByb3BPcGVuVGFza1dpbmRvdzogUHJvcGVydHkgPSB0YXNrLmdldFByb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVEFTS19QUk9QRVJUSUVTX09QRU5fVEFTS19XSU5ET1cpO1xyXG4gICAgbGV0IHByb3BPcGVuVGFza1dpbmRvd1ZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gZm9yIG1haW4gcHJvZ3JhbSB0aGF0IGlzbid0IGludGVybmFsIGFwcGxpY2F0aW9uICwgd2UgYXJlIG5vdCB1c2UgdGhlIGZvcm0sIHRoZSBvcGVuIHdpbmRvdyBpcyBmYWxzZVxyXG4gICAgLy8gdGhlIHNhbWUgd2UgZG9pbmcgZm9yIHJlbW90ZSBwcm9ncmFtIGluIHRza19vcGVuLmNwcFxyXG4gICAgaWYgKCF0YXNrLmlzTWFpblByb2coKSB8fCB0YXNrLmdldEN0bElkeCgpID09PSAwKSB7XHJcbiAgICAgIHByb3BPcGVuVGFza1dpbmRvd1ZhbHVlID0gYXdhaXQgcHJvcE9wZW5UYXNrV2luZG93LmdldFZhbHVlQm9vbGVhbigpO1xyXG4gICAgfVxyXG4gICAgdGFzay5TZXRPcGVuV2luKHByb3BPcGVuVGFza1dpbmRvd1ZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gISFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9yaWdpbmFsVGFza0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJldnRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgYWJzdHJhY3QgR2V0RXZlbnRUYXNrSWQoIG9yaWdpbmFsVGFza0lkOiBzdHJpbmcpOiBzdHJpbmcgO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHByb3BlcnR5IHdob3NlIGlkIGlzIHByb3BJZCwgc2hvdWxkXHJcbiAgLy8vIGJlIHJlZXZhbHVhdGVkIGxvY2FsbHksIG9uIHRoZSBjbGllbnQgc2lkZS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByb3BJZFwiPlRoZSBpZGVudGlmaWVyIG9mIHRoZSBwcm9wZXJ0eSBpbiBxdWVzdGlvbi48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5cclxuICAvLy8gVGhlIGltcGxlbWVudGluZyBtZXRob2Qgc2hvdWxkIHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgcHJvcGVydHlcclxuICAvLy8gc2hvdWxkIGJlIGV2YWx1YXRlZCBvbiB0aGUgY2xpZW50IHNpZGUuIE90aGVyd2lzZSBpdCBzaG91bGQgcmV0dXJuIDxjb2RlPmZhbHNlPC9jb2RlPi5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIGFic3RyYWN0IFNob3VsZEV2YWx1YXRlUHJvcGVydHlMb2NhbGx5KHByb3BJZDogbnVtYmVyKTogYm9vbGVhbiA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW5pdGlhbGl6ZSB0aGUgVGFza1ByZWZpeEV4ZWN1dGVkIGZsYWcgb24gdGhlIHRhc2sgLSBvbiBjb25uZWN0ZWQgdGFza3MgaXQgaXMgYWx3YXlzIGV4ZWN1dGVkIG9uIHRoZSBzZXJ2ZXIsIHdoaWxlXHJcbiAgLy8vIGluIG9mZmxpbmUgdGFza3MgaXQgaXMgZXhlY3V0ZWQgYXMgcGFydCBvZiB0aGUgdGFzayBzdGFydCBwcm9jZXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrXCI+PC9wYXJhbT5cclxuICBhYnN0cmFjdCBJbml0VGFza1ByZWZpeEV4ZWN1dGVkRmxhZyh0YXNrOiBUYXNrKTogdm9pZCA7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ3JlYXRlcyBleGl0IGNvbW1hbmQsIGFkZHMgaXQgdG8gY29tbWFuZHMgZm9yIGV4ZWN1dGlvbiBhbmQgZXhlY3V0ZSBpdCBpZiBpdCdzIG5lZWRlZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmV2ZXJzaWJsZUV4aXRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN1YmZvcm1EZXN0aW5hdGlvblwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIGFzeW5jIEV4aXQodGFzazogVGFzaywgcmV2ZXJzaWJsZUV4aXQ6IGJvb2xlYW4sIHN1YmZvcm1EZXN0aW5hdGlvbjogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGFzay5FeGl0KHJldmVyc2libGVFeGl0LCBzdWJmb3JtRGVzdGluYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBXaGVuIHRoZSBzdWJmb3JtIGlzIGNsb3NlZCBiZWZvcmUgY2FsbCB3aXRoIGEgZGVzdGluYXRpb24sIHdlIG5lZWQgdG8gcmVtb3ZlIHBhcmVudCByZWNvbXB1dGVzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicGFyZW50VGFza1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3ViZm9ybVRhc2tcIj48L3BhcmFtPlxyXG4gIGFic3RyYWN0IFJlbW92ZVJlY29tcHV0ZXMocGFyZW50VGFzazogVGFzayk6IHZvaWQgO1xyXG5cclxuICBHZXRPd25lclRyYW5zYWN0aW9uVGFzayh0YXNrOiBUYXNrKTogVGFzayB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { XMLConstants } from "@magic-xpa/utils";
|
|
3
|
-
import { List } from "@magic-xpa/mscorelib";
|
|
4
|
-
export class TasksTable {
|
|
5
|
-
constructor() {
|
|
6
|
-
this._tasks = null;
|
|
7
|
-
this._tasks = new List();
|
|
8
|
-
}
|
|
9
|
-
fillData(mgdata, openingTaskDetails, parser) {
|
|
10
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
11
|
-
while (yield this.initInnerObjects(parser.getNextTag(), mgdata, openingTaskDetails)) {
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
initInnerObjects(foundTagName, mgdata, openingTaskDetails) {
|
|
16
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
let result;
|
|
18
|
-
if (foundTagName === null) {
|
|
19
|
-
result = false;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
if (foundTagName === XMLConstants.MG_TAG_TASK) {
|
|
23
|
-
let task = TasksTable.createNewtask();
|
|
24
|
-
this._tasks.push(task);
|
|
25
|
-
yield task.fillData(mgdata, openingTaskDetails);
|
|
26
|
-
result = true;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
result = false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return result;
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
addTask(task) {
|
|
36
|
-
this._tasks.push(task);
|
|
37
|
-
}
|
|
38
|
-
removeTask(task) {
|
|
39
|
-
this._tasks.Remove(task);
|
|
40
|
-
}
|
|
41
|
-
getTask(tasktagOrIdx) {
|
|
42
|
-
if (arguments.length === 1 && (tasktagOrIdx === null || typeof tasktagOrIdx === "undefined" || tasktagOrIdx.constructor === String)) {
|
|
43
|
-
return this.getTask_0(tasktagOrIdx);
|
|
44
|
-
}
|
|
45
|
-
return this.getTask_1(tasktagOrIdx);
|
|
46
|
-
}
|
|
47
|
-
getTask_0(tasktag) {
|
|
48
|
-
let result;
|
|
49
|
-
for (let i = 0; i < this._tasks.length; i = i + 1) {
|
|
50
|
-
let task = this._tasks.get_Item(i);
|
|
51
|
-
if (tasktag === task.getTaskTag()) {
|
|
52
|
-
result = task;
|
|
53
|
-
return result;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
result = null;
|
|
57
|
-
return result;
|
|
58
|
-
}
|
|
59
|
-
getTask_1(idx) {
|
|
60
|
-
let result;
|
|
61
|
-
if (idx >= 0 && idx < this._tasks.length) {
|
|
62
|
-
result = this._tasks.get_Item(idx);
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
result = null;
|
|
66
|
-
}
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
getSize() {
|
|
70
|
-
return this._tasks.length;
|
|
71
|
-
}
|
|
72
|
-
buildXML(message) {
|
|
73
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
-
for (let i = 0; i < this.getSize(); i = i + 1) {
|
|
75
|
-
yield this.getTask(i).buildXML(message);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
setTaskAt(task, index) {
|
|
80
|
-
if (this._tasks.length <= index) {
|
|
81
|
-
this._tasks.SetSize(index + 1);
|
|
82
|
-
}
|
|
83
|
-
this._tasks.set_Item(index, task);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
TasksTable.createNewtask = null;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza3NUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvdGFza3MvVGFza3NUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUsxQyxNQUFNLE9BQU8sVUFBVTtJQUlyQjtRQUhpQixXQUFNLEdBQW1CLElBQUksQ0FBQztRQUk3QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQU9LLFFBQVEsQ0FBQyxNQUFjLEVBQUUsa0JBQXNDLEVBQUUsTUFBaUI7O1lBQ3RGLE9BQU8sTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxFQUFFO2FBQ3BGO1FBQ0gsQ0FBQztLQUFBO0lBS2EsZ0JBQWdCLENBQUMsWUFBb0IsRUFBRSxNQUFjLEVBQUUsa0JBQXNDOztZQUN6RyxJQUFJLE1BQWUsQ0FBQztZQUNwQixJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLE1BQU0sR0FBRyxLQUFLLENBQUM7YUFDaEI7aUJBQ0k7Z0JBQ0gsSUFBSSxZQUFZLEtBQUssWUFBWSxDQUFDLFdBQVcsRUFBRTtvQkFDN0MsSUFBSSxJQUFJLEdBQWEsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdkIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO29CQUNoRCxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUNmO3FCQUNJO29CQUNILE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQ2hCO2FBQ0Y7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFNRCxPQUFPLENBQUMsSUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQWM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUlELE9BQU8sQ0FBQyxZQUFpQjtRQUN2QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLElBQUksWUFBWSxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsRUFBRTtZQUNuSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQU1PLFNBQVMsQ0FBQyxPQUFlO1FBQy9CLElBQUksTUFBZ0IsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekQsSUFBSSxJQUFJLEdBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNqQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNkLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtRQUNELE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDZCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBTU8sU0FBUyxDQUFDLEdBQVc7UUFDM0IsSUFBSSxNQUFnQixDQUFDO1FBQ3JCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDeEMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BDO2FBQ0k7WUFDSCxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBS0QsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQU1LLFFBQVEsQ0FBQyxPQUFzQjs7WUFDbkMsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN6QztRQUNILENBQUM7S0FBQTtJQVFELFNBQVMsQ0FBQyxJQUFjLEVBQUUsS0FBYTtRQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssRUFBRTtZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7QUF2SE0sd0JBQWEsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQgeyBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtMaXN0fSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gXCIuL01HRGF0YVwiO1xyXG5pbXBvcnQge1Rhc2tCYXNlfSBmcm9tIFwiLi9UYXNrQmFzZVwiO1xyXG5pbXBvcnQge09wZW5pbmdUYXNrRGV0YWlsc30gZnJvbSBcIi4vVGFza0Jhc2VcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUYXNrc1RhYmxlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF90YXNrczogTGlzdDxUYXNrQmFzZT4gPSBudWxsO1xyXG4gIHN0YXRpYyBjcmVhdGVOZXd0YXNrID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl90YXNrcyA9IG5ldyBMaXN0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2UgYSBzZXQgb2YgdGFza3NcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWdkYXRhXCI+dG8gcGFyZW50IC0+IE1HRGF0YSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9wZW5pbmdUYXNrRGV0YWlsc1wiPmFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2Ygb3BlbmluZyB0YXNrPC9wYXJhbT5cclxuICBhc3luYyBmaWxsRGF0YShtZ2RhdGE6IE1HRGF0YSwgb3BlbmluZ1Rhc2tEZXRhaWxzOiBPcGVuaW5nVGFza0RldGFpbHMsIHBhcnNlcjogWG1sUGFyc2VyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB3aGlsZSAoYXdhaXQgdGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlci5nZXROZXh0VGFnKCksIG1nZGF0YSwgb3BlbmluZ1Rhc2tEZXRhaWxzKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN0YXJ0IHRhc2sscGFyc2luZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0SW5uZXJPYmplY3RzKGZvdW5kVGFnTmFtZTogc3RyaW5nLCBtZ2RhdGE6IE1HRGF0YSwgb3BlbmluZ1Rhc2tEZXRhaWxzOiBPcGVuaW5nVGFza0RldGFpbHMpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBudWxsKSB7XHJcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChmb3VuZFRhZ05hbWUgPT09IFhNTENvbnN0YW50cy5NR19UQUdfVEFTSykge1xyXG4gICAgICAgIGxldCB0YXNrOiBUYXNrQmFzZSA9IFRhc2tzVGFibGUuY3JlYXRlTmV3dGFzaygpO1xyXG4gICAgICAgIHRoaXMuX3Rhc2tzLnB1c2godGFzayk7XHJcbiAgICAgICAgYXdhaXQgdGFzay5maWxsRGF0YShtZ2RhdGEsIG9wZW5pbmdUYXNrRGV0YWlscyk7XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhZGQgYSBuZXcgdGFzayB0byB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnRoZSBuZXcgdGFzayB0byBhZGQgPC9wYXJhbT5cclxuICBhZGRUYXNrKHRhc2s6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl90YXNrcy5wdXNoKHRhc2spO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlVGFzayh0YXNrOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFza3MuUmVtb3ZlKHRhc2spO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFzayh0YXNrdGFnOiBzdHJpbmcpOiBUYXNrQmFzZTtcclxuICBnZXRUYXNrKGlkeDogbnVtYmVyKTogVGFza0Jhc2U7XHJcbiAgZ2V0VGFzayh0YXNrdGFnT3JJZHg6IGFueSk6IFRhc2tCYXNlIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICh0YXNrdGFnT3JJZHggPT09IG51bGwgfHwgdHlwZW9mIHRhc2t0YWdPcklkeCA9PT0gXCJ1bmRlZmluZWRcIiB8fCB0YXNrdGFnT3JJZHguY29uc3RydWN0b3IgPT09IFN0cmluZykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VGFza18wKHRhc2t0YWdPcklkeCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRUYXNrXzEodGFza3RhZ09ySWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSB0YXNrIGJ5IGl0cyBJZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrdGFnXCI+dGhlIHJlcXVlc3RlZCB0YXNrIGlkIChjdXJyZW50IGlkIG9yIG9yaWdpbmFsIGlkKTwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBnZXRUYXNrXzAodGFza3RhZzogc3RyaW5nKTogVGFza0Jhc2Uge1xyXG4gICAgbGV0IHJlc3VsdDogVGFza0Jhc2U7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fdGFza3MubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IHRhc2s6IFRhc2tCYXNlID0gdGhpcy5fdGFza3MuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgIGlmICh0YXNrdGFnID09PSB0YXNrLmdldFRhc2tUYWcoKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IHRhc2s7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGEgdGFzayBieSBpdHMgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGFzayBpbmRleCBpbiB0aGUgdGFibGU8L3BhcmFtPlxyXG4gIHByaXZhdGUgZ2V0VGFza18xKGlkeDogbnVtYmVyKTogVGFza0Jhc2Uge1xyXG4gICAgbGV0IHJlc3VsdDogVGFza0Jhc2U7XHJcbiAgICBpZiAoaWR4ID49IDAgJiYgaWR4IDwgdGhpcy5fdGFza3MubGVuZ3RoKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRoaXMuX3Rhc2tzLmdldF9JdGVtKGlkeCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBudW1iZXIgb2YgdGFza3MgaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFza3MubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIHRoZSBYTUwgc3RyaW5nIGZvciB0aGUgdGFza3MgaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1lc3NhZ2VcIj50aGUgeG1sIG1lc3NhZ2UgdG8gYXBwZW5kIHRvIDwvcGFyYW0+XHJcbiAgYXN5bmMgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuZ2V0U2l6ZSgpOyBpID0gaSArIDEpIHtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRUYXNrKGkpLmJ1aWxkWE1MKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0YXNrIG9mIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5kZXhcIj4gPC9wYXJhbT5cclxuXHJcbiAgc2V0VGFza0F0KHRhc2s6IFRhc2tCYXNlLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdGFza3MubGVuZ3RoIDw9IGluZGV4KSB7XHJcbiAgICAgIHRoaXMuX3Rhc2tzLlNldFNpemUoaW5kZXggKyAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3Rhc2tzLnNldF9JdGVtKGluZGV4LCB0YXNrKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { DateTime, NString, StringBuilder } from '@magic-xpa/mscorelib';
|
|
3
|
-
import { Constants, DateTimeUtils, InternalInterface, Logger, Queue, XMLConstants, XmlParser } from '@magic-xpa/utils';
|
|
4
|
-
import { FlowMonitorInterface } from '../FlowMonitorInterface';
|
|
5
|
-
import { ConstInterface } from '../ConstInterface';
|
|
6
|
-
export class FlowMonitorQueue {
|
|
7
|
-
constructor() {
|
|
8
|
-
this._queue = new Queue();
|
|
9
|
-
this._enabled = false;
|
|
10
|
-
this._isFlowOperation = false;
|
|
11
|
-
this._isRecompute = false;
|
|
12
|
-
this._isTask = false;
|
|
13
|
-
this._isTaskFlow = false;
|
|
14
|
-
this.ShouldSerialize = false;
|
|
15
|
-
}
|
|
16
|
-
static get Instance() {
|
|
17
|
-
if (FlowMonitorQueue._instance === null)
|
|
18
|
-
FlowMonitorQueue._instance = new FlowMonitorQueue();
|
|
19
|
-
return FlowMonitorQueue._instance;
|
|
20
|
-
}
|
|
21
|
-
addTaskCngMode(newTaskMode, taskInfo) {
|
|
22
|
-
let info = "Task Mode Change - ";
|
|
23
|
-
if (this._enabled && this._isTask) {
|
|
24
|
-
let activityItem = new ActivityItem(this, FlowMonitorQueue.ACT_TASK, FlowMonitorInterface.FLWMTR_CHNG_MODE);
|
|
25
|
-
switch (newTaskMode) {
|
|
26
|
-
case Constants.TASK_MODE_MODIFY:
|
|
27
|
-
info += "Modify";
|
|
28
|
-
break;
|
|
29
|
-
case Constants.TASK_MODE_CREATE:
|
|
30
|
-
info += "Create";
|
|
31
|
-
break;
|
|
32
|
-
case Constants.TASK_MODE_DELETE:
|
|
33
|
-
info += "Delete";
|
|
34
|
-
break;
|
|
35
|
-
case Constants.TASK_MODE_QUERY:
|
|
36
|
-
info += "Query";
|
|
37
|
-
break;
|
|
38
|
-
default:
|
|
39
|
-
info = null;
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
activityItem.setInfo(info);
|
|
43
|
-
this._queue.put(activityItem);
|
|
44
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
fillData(parser) {
|
|
48
|
-
let endContext = parser.getXMLdata().indexOf("/>", parser.getCurrIndex());
|
|
49
|
-
if (endContext !== -1 && endContext < parser.getXMLdata().length) {
|
|
50
|
-
let tag = parser.getXMLsubstring(endContext);
|
|
51
|
-
parser.add2CurrIndex(tag.indexOf("flwmtr_config") + "flwmtr_config".length);
|
|
52
|
-
let tokens = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
|
|
53
|
-
Logger.Instance.WriteDevToLog("in FlowMonitorQueue.FillData: " + tokens.toString());
|
|
54
|
-
this.initElements(tokens);
|
|
55
|
-
parser.setCurrIndex(endContext + XMLConstants.TAG_TERM.length);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in FlowMonitorQueue.FillData() out of string bounds");
|
|
59
|
-
}
|
|
60
|
-
initElements(tokensVector) {
|
|
61
|
-
for (let j = 0; j < tokensVector.length; j = j + 2) {
|
|
62
|
-
let attribute = tokensVector.get_Item(j);
|
|
63
|
-
let valueStr = tokensVector.get_Item(j + 1);
|
|
64
|
-
Logger.Instance.WriteDevToLog(attribute + " value: " + valueStr);
|
|
65
|
-
switch (attribute) {
|
|
66
|
-
case ConstInterface.MG_ATTR_TASK:
|
|
67
|
-
this._isTask = XmlParser.getBoolean(valueStr);
|
|
68
|
-
break;
|
|
69
|
-
case ConstInterface.MG_ATTR_TASKFLW:
|
|
70
|
-
this._isTaskFlow = XmlParser.getBoolean(valueStr);
|
|
71
|
-
break;
|
|
72
|
-
case ConstInterface.MG_ATTR_RECOMP:
|
|
73
|
-
this._isRecompute = XmlParser.getBoolean(valueStr);
|
|
74
|
-
break;
|
|
75
|
-
case ConstInterface.MG_ATTR_FLWOP:
|
|
76
|
-
this._isFlowOperation = XmlParser.getBoolean(valueStr);
|
|
77
|
-
break;
|
|
78
|
-
case ConstInterface.MG_ATTR_ENABLED:
|
|
79
|
-
this.enable(XmlParser.getBoolean(valueStr));
|
|
80
|
-
break;
|
|
81
|
-
default:
|
|
82
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in FlowMonitorQueue.initElements(): unknown attribute: " + attribute);
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
buildXML(message) {
|
|
88
|
-
if (!this._queue.isEmpty() && this.ShouldSerialize) {
|
|
89
|
-
message.Append(XMLConstants.START_TAG + ConstInterface.MG_TAG_FLWMTR_MSG + XMLConstants.TAG_CLOSE);
|
|
90
|
-
while (!this._queue.isEmpty()) {
|
|
91
|
-
let currAct = this._queue.get();
|
|
92
|
-
currAct.buildXML(message);
|
|
93
|
-
}
|
|
94
|
-
message.Append("</" + ConstInterface.MG_TAG_FLWMTR_MSG + XMLConstants.TAG_CLOSE);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
isEmpty() {
|
|
98
|
-
return this._queue.isEmpty();
|
|
99
|
-
}
|
|
100
|
-
enable(value) {
|
|
101
|
-
let wasEnabled = this._enabled;
|
|
102
|
-
this._enabled = value;
|
|
103
|
-
this.ShouldSerialize = this._enabled;
|
|
104
|
-
return wasEnabled;
|
|
105
|
-
}
|
|
106
|
-
addTaskEvent(triggeredBy, state, taskInfo) {
|
|
107
|
-
if (this._enabled && this._isTask) {
|
|
108
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK, FlowMonitorInterface.FLWMTR_EVENT);
|
|
109
|
-
let info;
|
|
110
|
-
switch (state) {
|
|
111
|
-
case FlowMonitorInterface.FLWMTR_START:
|
|
112
|
-
info = FlowMonitorQueue.S_EVENT_STR1 + triggeredBy + FlowMonitorQueue.S_EVENT_STR2;
|
|
113
|
-
break;
|
|
114
|
-
case FlowMonitorInterface.FLWMTR_END:
|
|
115
|
-
info = FlowMonitorQueue.E_EVENT_STR + triggeredBy;
|
|
116
|
-
break;
|
|
117
|
-
case FlowMonitorInterface.FLWMTR_PROPAGATE:
|
|
118
|
-
info = FlowMonitorQueue.S_EVENT_PROPAGATED;
|
|
119
|
-
break;
|
|
120
|
-
default:
|
|
121
|
-
info = null;
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
act.setInfo(info);
|
|
125
|
-
this._queue.put(act);
|
|
126
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
addTaskFlowRec(id, state, taskInfo) {
|
|
130
|
-
if (this._enabled && this._isTaskFlow) {
|
|
131
|
-
let info;
|
|
132
|
-
switch (id) {
|
|
133
|
-
case InternalInterface.MG_ACT_REC_PREFIX:
|
|
134
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
135
|
-
? FlowMonitorQueue.S_RECPRF_STR
|
|
136
|
-
: FlowMonitorQueue.E_RECPRF_STR;
|
|
137
|
-
id = FlowMonitorInterface.FLWMTR_PREFIX;
|
|
138
|
-
break;
|
|
139
|
-
case InternalInterface.MG_ACT_REC_SUFFIX:
|
|
140
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
141
|
-
? FlowMonitorQueue.S_RECSUF_STR
|
|
142
|
-
: FlowMonitorQueue.E_RECSUF_STR;
|
|
143
|
-
id = FlowMonitorInterface.FLWMTR_SUFFIX;
|
|
144
|
-
break;
|
|
145
|
-
case InternalInterface.MG_ACT_TASK_PREFIX:
|
|
146
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
147
|
-
? FlowMonitorQueue.S_TASKPRF_STR
|
|
148
|
-
: FlowMonitorQueue.E_TASKPRF_STR;
|
|
149
|
-
id = FlowMonitorInterface.FLWMTR_PREFIX;
|
|
150
|
-
break;
|
|
151
|
-
case InternalInterface.MG_ACT_TASK_SUFFIX:
|
|
152
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
153
|
-
? FlowMonitorQueue.S_TASKSUF_STR
|
|
154
|
-
: FlowMonitorQueue.E_TASKSUF_STR;
|
|
155
|
-
id = FlowMonitorInterface.FLWMTR_SUFFIX;
|
|
156
|
-
break;
|
|
157
|
-
default:
|
|
158
|
-
info = null;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK_FLW, id);
|
|
162
|
-
act.setInfo(info);
|
|
163
|
-
this._queue.put(act);
|
|
164
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
addTaskFlowFld(id, fldName, state, taskInfo) {
|
|
168
|
-
this.addTaskFlowCtrl(id, fldName, state, taskInfo);
|
|
169
|
-
}
|
|
170
|
-
addTaskFlowCtrl(id, ctrlName, state, taskInfo) {
|
|
171
|
-
if (this._enabled && this._isTaskFlow) {
|
|
172
|
-
let info;
|
|
173
|
-
switch (id) {
|
|
174
|
-
case InternalInterface.MG_ACT_VARIABLE:
|
|
175
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
176
|
-
? FlowMonitorQueue.S_VARIABLE_STR
|
|
177
|
-
: FlowMonitorQueue.E_VARIABLE_STR;
|
|
178
|
-
id = FlowMonitorInterface.FLWMTR_VARCHG_VALUE;
|
|
179
|
-
break;
|
|
180
|
-
case InternalInterface.MG_ACT_CTRL_PREFIX:
|
|
181
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
182
|
-
? FlowMonitorQueue.S_CTRLPRF_STR
|
|
183
|
-
: FlowMonitorQueue.E_CTRLPRF_STR;
|
|
184
|
-
id = FlowMonitorInterface.FLWMTR_CTRL_PREFIX;
|
|
185
|
-
break;
|
|
186
|
-
case InternalInterface.MG_ACT_CTRL_SUFFIX:
|
|
187
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
188
|
-
? FlowMonitorQueue.S_CTRLSUF_STR
|
|
189
|
-
: FlowMonitorQueue.E_CTRLSUF_STR;
|
|
190
|
-
id = FlowMonitorInterface.FLWMTR_CTRL_SUFFIX;
|
|
191
|
-
break;
|
|
192
|
-
case InternalInterface.MG_ACT_CTRL_VERIFICATION:
|
|
193
|
-
info = state === FlowMonitorInterface.FLWMTR_START
|
|
194
|
-
? FlowMonitorQueue.S_CTRLVER_STR
|
|
195
|
-
: FlowMonitorQueue.E_CTRLVER_STR;
|
|
196
|
-
id = FlowMonitorInterface.FLWMTR_CTRL_SUFFIX;
|
|
197
|
-
break;
|
|
198
|
-
default:
|
|
199
|
-
info = null;
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK_FLW, id);
|
|
203
|
-
if (info !== null) {
|
|
204
|
-
info = info + ctrlName;
|
|
205
|
-
if (id === FlowMonitorInterface.FLWMTR_VARCHG_VALUE && state === FlowMonitorInterface.FLWMTR_START)
|
|
206
|
-
info = info + FlowMonitorQueue.VARIABLE_REASON_STR;
|
|
207
|
-
act.setInfo(info);
|
|
208
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
209
|
-
}
|
|
210
|
-
this._queue.put(act);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
addTaskFlowHandler(handlerId, state, taskInfo) {
|
|
214
|
-
if (this._enabled && this._isTaskFlow) {
|
|
215
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_TASK_FLW, FlowMonitorInterface.FLWMTR_TSK_HANDLER);
|
|
216
|
-
let info;
|
|
217
|
-
switch (state) {
|
|
218
|
-
case FlowMonitorInterface.FLWMTR_START:
|
|
219
|
-
info = NString.Format(FlowMonitorQueue.S_HANDLER_STR, handlerId);
|
|
220
|
-
break;
|
|
221
|
-
case FlowMonitorInterface.FLWMTR_END:
|
|
222
|
-
info = NString.Format(FlowMonitorQueue.E_HANDLER_STR, handlerId);
|
|
223
|
-
break;
|
|
224
|
-
default:
|
|
225
|
-
info = null;
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
if (info !== null) {
|
|
229
|
-
act.setInfo(info);
|
|
230
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
231
|
-
}
|
|
232
|
-
this._queue.put(act);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
addRecompute(triggeredByVarName, taskInfo) {
|
|
236
|
-
if (this._enabled && this._isRecompute) {
|
|
237
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_RECOMPUTE, FlowMonitorInterface.FLWMTR_RECOMP);
|
|
238
|
-
let info = FlowMonitorQueue.RECOMP_STR + triggeredByVarName;
|
|
239
|
-
act.setInfo(info);
|
|
240
|
-
this._queue.put(act);
|
|
241
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
addFlowFieldOperation(oper, bExecuted, taskInfo) {
|
|
245
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
246
|
-
if (this._enabled && this._isFlowOperation) {
|
|
247
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_FLW_OPER, FlowMonitorInterface.FLWMTR_DATA_OPER);
|
|
248
|
-
let buffer = new StringBuilder(FlowMonitorQueue.FLW_PERFIX);
|
|
249
|
-
yield oper.AddFlowDescription(buffer);
|
|
250
|
-
buffer.Append(' ');
|
|
251
|
-
if (!bExecuted)
|
|
252
|
-
buffer.Append("[Not Executed]");
|
|
253
|
-
let info = buffer.ToString();
|
|
254
|
-
act.setInfo(info);
|
|
255
|
-
this._queue.put(act);
|
|
256
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
addFlowOperationUpdate(state, taskInfo) {
|
|
261
|
-
if (this._enabled && this._isFlowOperation) {
|
|
262
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_FLW_OPER, FlowMonitorInterface.FLWMTR_DATA_OPER);
|
|
263
|
-
let info;
|
|
264
|
-
if (state === FlowMonitorInterface.FLWMTR_START)
|
|
265
|
-
info = "Starts Update";
|
|
266
|
-
else
|
|
267
|
-
info = "Ends Update";
|
|
268
|
-
act.setInfo(info);
|
|
269
|
-
this._queue.put(act);
|
|
270
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + info, true);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
addFlowVerifyInfo(info, taskInfo) {
|
|
274
|
-
this.addFlowInfo(info, taskInfo);
|
|
275
|
-
}
|
|
276
|
-
addFlowInvokeOsInfo(info, taskInfo) {
|
|
277
|
-
this.addFlowInfo(info, taskInfo);
|
|
278
|
-
}
|
|
279
|
-
addFlowInfo(info, taskInfo) {
|
|
280
|
-
if (!this._enabled)
|
|
281
|
-
return;
|
|
282
|
-
let act = new ActivityItem(this, FlowMonitorQueue.ACT_FLW_OPER, FlowMonitorInterface.FLWMTR_DATA_OPER);
|
|
283
|
-
let buffer = new StringBuilder("");
|
|
284
|
-
if (!(info === "")) {
|
|
285
|
-
buffer.Append(" >> INFORMATION >> ");
|
|
286
|
-
buffer.Append(info);
|
|
287
|
-
}
|
|
288
|
-
let newInfo = buffer.ToString();
|
|
289
|
-
act.setInfo(newInfo);
|
|
290
|
-
this._queue.put(act);
|
|
291
|
-
Logger.Instance.WriteSupportToLog(taskInfo + ": " + newInfo, true);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
FlowMonitorQueue._instance = null;
|
|
295
|
-
FlowMonitorQueue.S_EVENT_STR1 = ">>Starts ";
|
|
296
|
-
FlowMonitorQueue.S_EVENT_STR2 = " Event";
|
|
297
|
-
FlowMonitorQueue.S_EVENT_PROPAGATED = "Event was propagated";
|
|
298
|
-
FlowMonitorQueue.E_EVENT_STR = "<<Ends Event";
|
|
299
|
-
FlowMonitorQueue.TSK_CHNG_MODE = "Task Mode Change - ";
|
|
300
|
-
FlowMonitorQueue.S_RECPRF_STR = "Starts Record Prefix";
|
|
301
|
-
FlowMonitorQueue.E_RECPRF_STR = "Ends Record Prefix";
|
|
302
|
-
FlowMonitorQueue.S_RECSUF_STR = "Starts Record Suffix";
|
|
303
|
-
FlowMonitorQueue.E_RECSUF_STR = "Ends Record Suffix";
|
|
304
|
-
FlowMonitorQueue.S_TASKSUF_STR = "Starts Task Suffix";
|
|
305
|
-
FlowMonitorQueue.E_TASKSUF_STR = "Ends Task Suffix";
|
|
306
|
-
FlowMonitorQueue.S_TASKPRF_STR = "Starts Task Prefix";
|
|
307
|
-
FlowMonitorQueue.E_TASKPRF_STR = "Ends Task Prefix";
|
|
308
|
-
FlowMonitorQueue.S_CTRLPRF_STR = "Starts Control Prefix - ";
|
|
309
|
-
FlowMonitorQueue.E_CTRLPRF_STR = "Ends Control Prefix - ";
|
|
310
|
-
FlowMonitorQueue.S_CTRLSUF_STR = "Starts Control Suffix - ";
|
|
311
|
-
FlowMonitorQueue.E_CTRLSUF_STR = "Ends Control Suffix - ";
|
|
312
|
-
FlowMonitorQueue.S_HANDLER_STR = "Starts handling event {0}";
|
|
313
|
-
FlowMonitorQueue.E_HANDLER_STR = "Ends handling event {0}";
|
|
314
|
-
FlowMonitorQueue.S_CTRLVER_STR = "Starts Control Verification for Control - ";
|
|
315
|
-
FlowMonitorQueue.E_CTRLVER_STR = "Ends Control Verification for Control - ";
|
|
316
|
-
FlowMonitorQueue.RECOMP_STR = "Recomputes - ";
|
|
317
|
-
FlowMonitorQueue.S_VARIABLE_STR = "Starts Variable Change - ";
|
|
318
|
-
FlowMonitorQueue.E_VARIABLE_STR = "Ends Variable Change - ";
|
|
319
|
-
FlowMonitorQueue.VARIABLE_REASON_STR = " - Reason - Previous value";
|
|
320
|
-
FlowMonitorQueue.INFORM_STR = " >> INFORMATION >> ";
|
|
321
|
-
FlowMonitorQueue.FLW_STEP_FWD = "(Step Forward)";
|
|
322
|
-
FlowMonitorQueue.FLW_FAST_FWD = "(Fast Forward)";
|
|
323
|
-
FlowMonitorQueue.FLW_STEP_BWD = "(Step Backward)";
|
|
324
|
-
FlowMonitorQueue.FLW_FAST_BWD = "(Fast Backward)";
|
|
325
|
-
FlowMonitorQueue.FLW_NOT_EXEC = "[Not Executed]";
|
|
326
|
-
FlowMonitorQueue.FLW_FORWARD = "(Forward)";
|
|
327
|
-
FlowMonitorQueue.FLW_BACKWARD = "(Backward)";
|
|
328
|
-
FlowMonitorQueue.FLW_PERFIX = "Flow - ";
|
|
329
|
-
FlowMonitorQueue.S_UPDATE_STR = "Starts Update";
|
|
330
|
-
FlowMonitorQueue.E_UPDATE_STR = "Ends Update";
|
|
331
|
-
FlowMonitorQueue.ACT_TASK = 'T';
|
|
332
|
-
FlowMonitorQueue.ACT_TASK_FLW = 'F';
|
|
333
|
-
FlowMonitorQueue.ACT_RECOMPUTE = 'R';
|
|
334
|
-
FlowMonitorQueue.ACT_FLW_OPER = 'T';
|
|
335
|
-
FlowMonitorQueue.LongTimePattern = "HH:mm:ss:SSS";
|
|
336
|
-
class ActivityItem {
|
|
337
|
-
constructor(enclosingInstance, type, id) {
|
|
338
|
-
this._enclosingInstance = null;
|
|
339
|
-
this._id = 0;
|
|
340
|
-
this._type = null;
|
|
341
|
-
this._info = null;
|
|
342
|
-
this._time = null;
|
|
343
|
-
this._enclosingInstance = enclosingInstance;
|
|
344
|
-
this._type = type;
|
|
345
|
-
this._id = id;
|
|
346
|
-
this.setTime();
|
|
347
|
-
}
|
|
348
|
-
setTime() {
|
|
349
|
-
this._time = DateTimeUtils.ToString(DateTime.Now, FlowMonitorQueue.LongTimePattern, Logger.Instance);
|
|
350
|
-
}
|
|
351
|
-
setInfo(info_) {
|
|
352
|
-
this._info = ((info_ !== null) ? XmlParser.escape(info_) : info_);
|
|
353
|
-
}
|
|
354
|
-
buildXML(message) {
|
|
355
|
-
message.Append(XMLConstants.START_TAG + ConstInterface.MG_TAG_FLWMTR_ACT);
|
|
356
|
-
message.Append(" " + XMLConstants.MG_ATTR_TYPE + "=\"" + this._type + "\"");
|
|
357
|
-
message.Append(" " + XMLConstants.MG_ATTR_ID + "=\"" + this._id + "\"");
|
|
358
|
-
if (this._info != null)
|
|
359
|
-
message.Append(" " + ConstInterface.MG_ATTR_INFO + "=\"" + this._info + "\"");
|
|
360
|
-
message.Append(" " + ConstInterface.MG_ATTR_TIME + "=\"" + this._time + "\"");
|
|
361
|
-
message.Append(XMLConstants.TAG_TERM);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd01vbml0b3JRdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvdXRpbC9GbG93TW9uaXRvclF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFRLE9BQU8sRUFBRSxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVySCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFHakQsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQTRDVSxXQUFNLEdBQXdCLElBQUksS0FBSyxFQUFnQixDQUFDO1FBQ3hELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDckMsb0JBQWUsR0FBWSxLQUFLLENBQUM7SUF5Wm5DLENBQUM7SUF2WkMsTUFBTSxLQUFLLFFBQVE7UUFDakIsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUNyQyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBRXRELE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtRQUNsRCxJQUFJLElBQUksR0FBVyxxQkFBcUIsQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLElB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QztRQUM1RSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsVUFBVSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJO1lBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDaEYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLFlBQVksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM5RSxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lGbG93TW9uaXRvclF1ZXVlfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7RGF0ZVRpbWUsIExpc3QsIE5TdHJpbmcsIFN0cmluZ0J1aWxkZXJ9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtDb25zdGFudHMsIERhdGVUaW1lVXRpbHMsIEludGVybmFsSW50ZXJmYWNlLCBMb2dnZXIsIFF1ZXVlLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7T3BlcmF0aW9ufSBmcm9tICcuLi9ydC9PcGVyYXRpb24nO1xyXG5pbXBvcnQge0Zsb3dNb25pdG9ySW50ZXJmYWNlfSBmcm9tICcuLi9GbG93TW9uaXRvckludGVyZmFjZSc7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBGbG93TW9uaXRvclF1ZXVlIGltcGxlbWVudHMgSUZsb3dNb25pdG9yUXVldWUge1xyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogRmxvd01vbml0b3JRdWV1ZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19FVkVOVF9TVFIxOiBzdHJpbmcgPSBcIj4+U3RhcnRzIFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfRVZFTlRfU1RSMjogc3RyaW5nID0gXCIgRXZlbnRcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX0VWRU5UX1BST1BBR0FURUQ6IHN0cmluZyA9IFwiRXZlbnQgd2FzIHByb3BhZ2F0ZWRcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX0VWRU5UX1NUUjogc3RyaW5nID0gXCI8PEVuZHMgRXZlbnRcIjtcclxuICBwcml2YXRlIHN0YXRpYyBUU0tfQ0hOR19NT0RFOiBzdHJpbmcgPSBcIlRhc2sgTW9kZSBDaGFuZ2UgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1JFQ1BSRl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIFJlY29yZCBQcmVmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX1JFQ1BSRl9TVFI6IHN0cmluZyA9IFwiRW5kcyBSZWNvcmQgUHJlZml4XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19SRUNTVUZfU1RSOiBzdHJpbmcgPSBcIlN0YXJ0cyBSZWNvcmQgU3VmZml4XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9SRUNTVUZfU1RSOiBzdHJpbmcgPSBcIkVuZHMgUmVjb3JkIFN1ZmZpeFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfVEFTS1NVRl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIFRhc2sgU3VmZml4XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9UQVNLU1VGX1NUUjogc3RyaW5nID0gXCJFbmRzIFRhc2sgU3VmZml4XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19UQVNLUFJGX1NUUjogc3RyaW5nID0gXCJTdGFydHMgVGFzayBQcmVmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBFX1RBU0tQUkZfU1RSOiBzdHJpbmcgPSBcIkVuZHMgVGFzayBQcmVmaXhcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX0NUUkxQUkZfU1RSOiBzdHJpbmcgPSBcIlN0YXJ0cyBDb250cm9sIFByZWZpeCAtIFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEVfQ1RSTFBSRl9TVFI6IHN0cmluZyA9IFwiRW5kcyBDb250cm9sIFByZWZpeCAtIFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfQ1RSTFNVRl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIENvbnRyb2wgU3VmZml4IC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9DVFJMU1VGX1NUUjogc3RyaW5nID0gXCJFbmRzIENvbnRyb2wgU3VmZml4IC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19IQU5ETEVSX1NUUjogc3RyaW5nID0gXCJTdGFydHMgaGFuZGxpbmcgZXZlbnQgezB9XCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9IQU5ETEVSX1NUUjogc3RyaW5nID0gXCJFbmRzIGhhbmRsaW5nIGV2ZW50IHswfVwiO1xyXG4gIHByaXZhdGUgc3RhdGljIFNfQ1RSTFZFUl9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIENvbnRyb2wgVmVyaWZpY2F0aW9uIGZvciBDb250cm9sIC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRV9DVFJMVkVSX1NUUjogc3RyaW5nID0gXCJFbmRzIENvbnRyb2wgVmVyaWZpY2F0aW9uIGZvciBDb250cm9sIC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUkVDT01QX1NUUjogc3RyaW5nID0gXCJSZWNvbXB1dGVzIC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgU19WQVJJQUJMRV9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIFZhcmlhYmxlIENoYW5nZSAtIFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEVfVkFSSUFCTEVfU1RSOiBzdHJpbmcgPSBcIkVuZHMgVmFyaWFibGUgQ2hhbmdlIC0gXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgVkFSSUFCTEVfUkVBU09OX1NUUjogc3RyaW5nID0gXCIgLSBSZWFzb24gLSBQcmV2aW91cyB2YWx1ZVwiO1xyXG4gIHByaXZhdGUgc3RhdGljIElORk9STV9TVFI6IHN0cmluZyA9IFwiID4+IElORk9STUFUSU9OID4+IFwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEZMV19TVEVQX0ZXRDogc3RyaW5nID0gXCIoU3RlcCBGb3J3YXJkKVwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEZMV19GQVNUX0ZXRDogc3RyaW5nID0gXCIoRmFzdCBGb3J3YXJkKVwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEZMV19TVEVQX0JXRDogc3RyaW5nID0gXCIoU3RlcCBCYWNrd2FyZClcIjtcclxuICBwcml2YXRlIHN0YXRpYyBGTFdfRkFTVF9CV0Q6IHN0cmluZyA9IFwiKEZhc3QgQmFja3dhcmQpXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRkxXX05PVF9FWEVDOiBzdHJpbmcgPSBcIltOb3QgRXhlY3V0ZWRdXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRkxXX0ZPUldBUkQ6IHN0cmluZyA9IFwiKEZvcndhcmQpXCI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgRkxXX0JBQ0tXQVJEOiBzdHJpbmcgPSBcIihCYWNrd2FyZClcIjtcclxuICBwcml2YXRlIHN0YXRpYyBGTFdfUEVSRklYOiBzdHJpbmcgPSBcIkZsb3cgLSBcIjtcclxuICBwcml2YXRlIHN0YXRpYyBTX1VQREFURV9TVFI6IHN0cmluZyA9IFwiU3RhcnRzIFVwZGF0ZVwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEVfVVBEQVRFX1NUUjogc3RyaW5nID0gXCJFbmRzIFVwZGF0ZVwiO1xyXG4gIHByaXZhdGUgc3RhdGljIEFDVF9UQVNLOiBzdHJpbmcgPSAnVCc7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQUNUX1RBU0tfRkxXOiBzdHJpbmcgPSAnRic7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgQUNUX1JFQ09NUFVURTogc3RyaW5nID0gJ1InO1xyXG4gIHByaXZhdGUgc3RhdGljIEFDVF9GTFdfT1BFUjogc3RyaW5nID0gJ1QnO1xyXG5cclxuICBzdGF0aWMgTG9uZ1RpbWVQYXR0ZXJuID0gXCJISDptbTpzczpTU1NcIjtcclxuICBwcml2YXRlIF9xdWV1ZTogUXVldWU8QWN0aXZpdHlJdGVtPiA9IG5ldyBRdWV1ZTxBY3Rpdml0eUl0ZW0+KCk7XHJcbiAgcHJpdmF0ZSBfZW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzRmxvd09wZXJhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzUmVjb21wdXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNUYXNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfaXNUYXNrRmxvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFNob3VsZFNlcmlhbGl6ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IEZsb3dNb25pdG9yUXVldWUge1xyXG4gICAgaWYgKEZsb3dNb25pdG9yUXVldWUuX2luc3RhbmNlID09PSBudWxsKVxyXG4gICAgICBGbG93TW9uaXRvclF1ZXVlLl9pbnN0YW5jZSA9IG5ldyBGbG93TW9uaXRvclF1ZXVlKCk7XHJcblxyXG4gICAgcmV0dXJuIEZsb3dNb25pdG9yUXVldWUuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgYWRkVGFza0NuZ01vZGUobmV3VGFza01vZGU6IHN0cmluZywgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGluZm86IHN0cmluZyA9IFwiVGFzayBNb2RlIENoYW5nZSAtIFwiO1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNUYXNrKSB7XHJcbiAgICAgIGxldCBhY3Rpdml0eUl0ZW06IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfVEFTSywgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0NITkdfTU9ERSk7XHJcblxyXG4gICAgICBzd2l0Y2ggKG5ld1Rhc2tNb2RlKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19NT0RFX01PRElGWTpcclxuICAgICAgICAgIGluZm8gKz0gXCJNb2RpZnlcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19NT0RFX0NSRUFURTpcclxuICAgICAgICAgIGluZm8gKz0gXCJDcmVhdGVcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19NT0RFX0RFTEVURTpcclxuICAgICAgICAgIGluZm8gKz0gXCJEZWxldGVcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgY2FzZSBDb25zdGFudHMuVEFTS19NT0RFX1FVRVJZOlxyXG4gICAgICAgICAgaW5mbyArPSBcIlF1ZXJ5XCI7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpbmZvID0gbnVsbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhY3Rpdml0eUl0ZW0uc2V0SW5mbyhpbmZvKTtcclxuICAgICAgdGhpcy5fcXVldWUucHV0KGFjdGl2aXR5SXRlbSk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVTdXBwb3J0VG9Mb2codGFza0luZm8gK1wiOiBcIiArIGluZm8sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIHRoZSBkYXRhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBmaWxsRGF0YShwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihcIi8+XCIsIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICBpZiAoZW5kQ29udGV4dCAhPT0gLTEgJiYgZW5kQ29udGV4dCA8IHBhcnNlci5nZXRYTUxkYXRhKCkubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGZpbmQgbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKFwiZmx3bXRyX2NvbmZpZ1wiKSArIFwiZmx3bXRyX2NvbmZpZ1wiLmxlbmd0aCk7XHJcblxyXG4gICAgICBsZXQgdG9rZW5zOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCksIFhNTENvbnN0YW50cy5YTUxfQVRUUl9ERUxJTSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZURldlRvTG9nKFwiaW4gRmxvd01vbml0b3JRdWV1ZS5GaWxsRGF0YTogXCIgKyB0b2tlbnMudG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICB0aGlzLmluaXRFbGVtZW50cyh0b2tlbnMpO1xyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTsgLy8gdG8gZGVsZXRlIFwiLz5cIiB0b29cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gIEZsb3dNb25pdG9yUXVldWUuRmlsbERhdGEoKSBvdXQgb2Ygc3RyaW5nIGJvdW5kc1wiKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZSB0aGUgWE1MIGRhdGFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidG9rZW5zVmVjdG9yXCI+YXR0cmlidXRlL3ZhbHVlLy4uLmF0dHJpYnV0ZS92YWx1ZS8gdmVjdG9yPC9wYXJhbT5cclxuICBwcml2YXRlIGluaXRFbGVtZW50cyh0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPik6IHZvaWQge1xyXG5cclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqID0gaiArIDIpIHtcclxuICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gPHN0cmluZz50b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaik7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gPHN0cmluZz50b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpO1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVEZXZUb0xvZyhhdHRyaWJ1dGUgKyBcIiB2YWx1ZTogXCIgKyB2YWx1ZVN0cik7XHJcblxyXG4gICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9UQVNLOlxyXG4gICAgICAgICAgdGhpcy5faXNUYXNrID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9UQVNLRkxXOlxyXG4gICAgICAgICAgdGhpcy5faXNUYXNrRmxvdyA9IFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUkVDT01QOlxyXG4gICAgICAgICAgdGhpcy5faXNSZWNvbXB1dGUgPSBYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0ZMV09QOlxyXG4gICAgICAgICAgdGhpcy5faXNGbG93T3BlcmF0aW9uID0gWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FTkFCTEVEOlxyXG4gICAgICAgICAgdGhpcy5lbmFibGUoWG1sUGFyc2VyLmdldEJvb2xlYW4odmFsdWVTdHIpKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gRmxvd01vbml0b3JRdWV1ZS5pbml0RWxlbWVudHMoKTogdW5rbm93biAgYXR0cmlidXRlOiBcIiArIGF0dHJpYnV0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIFhNTCBhbmQgZW1wdHkgdGhlIGlubmVyIHF1ZXVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBidWlsZFhNTChtZXNzYWdlOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX3F1ZXVlLmlzRW1wdHkoKSAmJiB0aGlzLlNob3VsZFNlcmlhbGl6ZSkge1xyXG4gICAgICBtZXNzYWdlLkFwcGVuZChYTUxDb25zdGFudHMuU1RBUlRfVEFHICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0ZMV01UUl9NU0cgKyBYTUxDb25zdGFudHMuVEFHX0NMT1NFKTtcclxuXHJcbiAgICAgIHdoaWxlICghdGhpcy5fcXVldWUuaXNFbXB0eSgpKSB7XHJcbiAgICAgICAgbGV0IGN1cnJBY3Q6IEFjdGl2aXR5SXRlbSA9IDxBY3Rpdml0eUl0ZW0+dGhpcy5fcXVldWUuZ2V0KCk7XHJcbiAgICAgICAgY3VyckFjdC5idWlsZFhNTChtZXNzYWdlKTtcclxuICAgICAgfSAvLyBmaWxsIGFjdGl2aXRpZXNcclxuXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiPC9cIiArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19GTFdNVFJfTVNHICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRSk7XHJcbiAgICB9IC8vIHRoZSBxdWV1ZSBpcyBub3QgZW1wdHlcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpcyB0aGUgRmxvdyBNb25pdG9yIFF1ZXVlIGVtcHR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXVlLmlzRW1wdHkoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBlbmFibGUgdGhlIGZsb3cgbW9uaXRvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPnRoZSBwcmV2aW91cyBzdGF0ZSAoZW5hYmxlZC9kaXNhYmxlZCk8L3JldHVybnM+XHJcbiAgZW5hYmxlKHZhbHVlOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgd2FzRW5hYmxlZDogYm9vbGVhbiA9IHRoaXMuX2VuYWJsZWQ7XHJcbiAgICB0aGlzLl9lbmFibGVkID0gdmFsdWU7XHJcbiAgICB0aGlzLlNob3VsZFNlcmlhbGl6ZSA9IHRoaXMuX2VuYWJsZWQ7XHJcbiAgICByZXR1cm4gd2FzRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhZGQgQWN0aXZpdGllcyB0byB0aGUgcXVldWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHJpZ2dlcmVkQnlcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj5vZiB0aGUgZXZlbnQgdGFzayBhY3Rpdml0aWU8L3BhcmFtPlxyXG4gIGFkZFRhc2tFdmVudCh0cmlnZ2VyZWRCeTogc3RyaW5nLCBzdGF0ZTogbnVtYmVyLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc1Rhc2spIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9UQVNLLCBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfRVZFTlQpO1xyXG5cclxuICAgICAgbGV0IGluZm86IHN0cmluZztcclxuICAgICAgc3dpdGNoIChzdGF0ZSkge1xyXG4gICAgICAgIGNhc2UgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUOlxyXG4gICAgICAgICAgaW5mbyA9IEZsb3dNb25pdG9yUXVldWUuU19FVkVOVF9TVFIxICsgdHJpZ2dlcmVkQnkgKyBGbG93TW9uaXRvclF1ZXVlLlNfRVZFTlRfU1RSMjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9FTkQ6XHJcbiAgICAgICAgICBpbmZvID0gRmxvd01vbml0b3JRdWV1ZS5FX0VWRU5UX1NUUiArIHRyaWdnZXJlZEJ5O1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1BST1BBR0FURTpcclxuICAgICAgICAgIGluZm8gPSBGbG93TW9uaXRvclF1ZXVlLlNfRVZFTlRfUFJPUEFHQVRFRDtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgaW5mbyA9IG51bGw7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhZGQgdGFzayBmbG93IGZvciByZWNvcmQgcHJlZml4IG9yIHN1Zml4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkXCI+aXMgRkxXTVRSX1BSRUZJWCBvciBGTFdNVFJfU1VGRklYXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPm9mIHRoZSBldmVudCB0YXNrIGFjdGl2aXRpZVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGFkZFRhc2tGbG93UmVjKGlkOiBudW1iZXIsIHN0YXRlOiBudW1iZXIsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9lbmFibGVkICYmIHRoaXMuX2lzVGFza0Zsb3cpIHtcclxuICAgICAgbGV0IGluZm86IHN0cmluZztcclxuXHJcbiAgICAgIHN3aXRjaCAoaWQpIHtcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfUFJFRklYOlxyXG4gICAgICAgICAgaW5mbyA9IHN0YXRlID09PSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlRcclxuICAgICAgICAgICAgPyBGbG93TW9uaXRvclF1ZXVlLlNfUkVDUFJGX1NUUlxyXG4gICAgICAgICAgICA6IEZsb3dNb25pdG9yUXVldWUuRV9SRUNQUkZfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfUFJFRklYO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVg6XHJcbiAgICAgICAgICBpbmZvID0gc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVFxyXG4gICAgICAgICAgICA/IEZsb3dNb25pdG9yUXVldWUuU19SRUNTVUZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1JFQ1NVRl9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVUZGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19QUkVGSVg6XHJcbiAgICAgICAgICBpbmZvID0gc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVFxyXG4gICAgICAgICAgICA/IEZsb3dNb25pdG9yUXVldWUuU19UQVNLUFJGX1NUUlxyXG4gICAgICAgICAgICA6IEZsb3dNb25pdG9yUXVldWUuRV9UQVNLUFJGX1NUUjtcclxuICAgICAgICAgIGlkID0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1BSRUZJWDtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1NVRkZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX1RBU0tTVUZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX1RBU0tTVUZfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1VGRklYO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpbmZvID0gbnVsbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYWN0OiBBY3Rpdml0eUl0ZW0gPSBuZXcgQWN0aXZpdHlJdGVtKHRoaXMsIEZsb3dNb25pdG9yUXVldWUuQUNUX1RBU0tfRkxXLCBpZCk7XHJcbiAgICAgIGFjdC5zZXRJbmZvKGluZm8pO1xyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVN1cHBvcnRUb0xvZyh0YXNrSW5mbyArXCI6IFwiICsgaW5mbywgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkXCI+aXMgTUdfQUNUX1ZBUklBQkxFPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZsZE5hbWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhdGVcIj5vZiB0aGUgZXZlbnQgdGFzayBhY3Rpdml0aWU8L3BhcmFtPlxyXG4gIGFkZFRhc2tGbG93RmxkKGlkOiBudW1iZXIsIGZsZE5hbWU6IHN0cmluZywgc3RhdGU6IG51bWJlciwgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRUYXNrRmxvd0N0cmwoaWQsIGZsZE5hbWUsIHN0YXRlLCB0YXNrSW5mbyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkXCI+aXMgRkxXTVRSX0NUUkxfUFJFRklYIG9yIEZMV01UUl9DVFJMX1NVRkZJWDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsTmFtZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGF0ZVwiPm9mIHRoZSBldmVudCB0YXNrIGFjdGl2aXRpZTwvcGFyYW0+XHJcbiAgYWRkVGFza0Zsb3dDdHJsKGlkOiBudW1iZXIsIGN0cmxOYW1lOiBzdHJpbmcsIHN0YXRlOiBudW1iZXIsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9lbmFibGVkICYmIHRoaXMuX2lzVGFza0Zsb3cpIHtcclxuICAgICAgbGV0IGluZm86IHN0cmluZztcclxuXHJcbiAgICAgIHN3aXRjaCAoaWQpIHtcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WQVJJQUJMRTpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX1ZBUklBQkxFX1NUUlxyXG4gICAgICAgICAgICA6IEZsb3dNb25pdG9yUXVldWUuRV9WQVJJQUJMRV9TVFI7XHJcbiAgICAgICAgICBpZCA9IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9WQVJDSEdfVkFMVUU7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9QUkVGSVg6XHJcbiAgICAgICAgICBpbmZvID0gc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVFxyXG4gICAgICAgICAgICA/IEZsb3dNb25pdG9yUXVldWUuU19DVFJMUFJGX1NUUlxyXG4gICAgICAgICAgICA6IEZsb3dNb25pdG9yUXVldWUuRV9DVFJMUFJGX1NUUjtcclxuICAgICAgICAgIGlkID0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0NUUkxfUFJFRklYO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDpcclxuICAgICAgICAgIGluZm8gPSBzdGF0ZSA9PT0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX1NUQVJUXHJcbiAgICAgICAgICAgID8gRmxvd01vbml0b3JRdWV1ZS5TX0NUUkxTVUZfU1RSXHJcbiAgICAgICAgICAgIDogRmxvd01vbml0b3JRdWV1ZS5FX0NUUkxTVUZfU1RSO1xyXG4gICAgICAgICAgaWQgPSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfQ1RSTF9TVUZGSVg7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9WRVJJRklDQVRJT046XHJcbiAgICAgICAgICBpbmZvID0gc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVFxyXG4gICAgICAgICAgICA/IEZsb3dNb25pdG9yUXVldWUuU19DVFJMVkVSX1NUUlxyXG4gICAgICAgICAgICA6IEZsb3dNb25pdG9yUXVldWUuRV9DVFJMVkVSX1NUUjtcclxuICAgICAgICAgIGlkID0gRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0NUUkxfU1VGRklYO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpbmZvID0gbnVsbDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYWN0OiBBY3Rpdml0eUl0ZW0gPSBuZXcgQWN0aXZpdHlJdGVtKHRoaXMsIEZsb3dNb25pdG9yUXVldWUuQUNUX1RBU0tfRkxXLCBpZCk7XHJcbiAgICAgIGlmIChpbmZvICE9PSBudWxsKSB7XHJcbiAgICAgICAgaW5mbyA9IGluZm8gKyBjdHJsTmFtZTtcclxuICAgICAgICBpZiAoaWQgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9WQVJDSEdfVkFMVUUgJiYgc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVClcclxuICAgICAgICAgIGluZm8gPSBpbmZvICsgRmxvd01vbml0b3JRdWV1ZS5WQVJJQUJMRV9SRUFTT05fU1RSO1xyXG4gICAgICAgIGFjdC5zZXRJbmZvKGluZm8pO1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVN1cHBvcnRUb0xvZyh0YXNrSW5mbyArXCI6IFwiICsgaW5mbywgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fcXVldWUucHV0KGFjdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImhhbmRsZXJJZFwiPmlzaWQgb2YgdGhlIGhhbmRsZXJcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+b2YgdGhlIGV2ZW50IHRhc2sgYWN0aXZpdGllXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgYWRkVGFza0Zsb3dIYW5kbGVyKGhhbmRsZXJJZDogc3RyaW5nLCBzdGF0ZTogbnVtYmVyLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZW5hYmxlZCAmJiB0aGlzLl9pc1Rhc2tGbG93KSB7XHJcbiAgICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfVEFTS19GTFcsIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9UU0tfSEFORExFUik7XHJcbiAgICAgIGxldCBpbmZvOiBzdHJpbmc7XHJcblxyXG4gICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgY2FzZSBGbG93TW9uaXRvckludGVyZmFjZS5GTFdNVFJfU1RBUlQ6XHJcbiAgICAgICAgICBpbmZvID0gTlN0cmluZy5Gb3JtYXQoRmxvd01vbml0b3JRdWV1ZS5TX0hBTkRMRVJfU1RSLCBoYW5kbGVySWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRmxvd01vbml0b3JJbnRlcmZhY2UuRkxXTVRSX0VORDpcclxuICAgICAgICAgIGluZm8gPSBOU3RyaW5nLkZvcm1hdChGbG93TW9uaXRvclF1ZXVlLkVfSEFORExFUl9TVFIsIGhhbmRsZXJJZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGluZm8gPSBudWxsO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpbmZvICE9PSBudWxsKSB7XHJcbiAgICAgICAgLy8gQlJLX0xFVkVMX0hBTkRMRVJfSU5URVJOQUwsQlJLX0xFVkVMX0hBTkRMRVJfU1lTVEVNLEJSS19MRVZFTF9IQU5ETEVSX1RJTUVSXHJcbiAgICAgICAgLy8gQlJLX0xFVkVMX0hBTkRMRVJfRVhQUkVTU0lPTixCUktfTEVWRUxfSEFORExFUl9FUlJPUixCUktfTEVWRUxfSEFORExFUl9VU0VSXHJcbiAgICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHJpZ2dlcmVkQnlWYXJOYW1lXCI+dmFyIG5hbWUgLCBoYXMgdHJpZ2dlcmVkIFJlY29tcHV0ZVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGFkZFJlY29tcHV0ZSh0cmlnZ2VyZWRCeVZhck5hbWU6IHN0cmluZywgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNSZWNvbXB1dGUpIHtcclxuICAgICAgbGV0IGFjdDogQWN0aXZpdHlJdGVtID0gbmV3IEFjdGl2aXR5SXRlbSh0aGlzLCBGbG93TW9uaXRvclF1ZXVlLkFDVF9SRUNPTVBVVEUsIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9SRUNPTVApO1xyXG4gICAgICBsZXQgaW5mbyA9IEZsb3dNb25pdG9yUXVldWUuUkVDT01QX1NUUiArIHRyaWdnZXJlZEJ5VmFyTmFtZTtcclxuICAgICAgYWN0LnNldEluZm8oaW5mbyk7XHJcbiAgICAgIHRoaXMuX3F1ZXVlLnB1dChhY3QpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBpbmZvLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBBZGQgYSBmaWVsZCBmbG93IG9wZXJhdGlvbiBhY3Rpdml0eSBpdGVtLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJvcGVyXCI+VGhlIG9wZXJhdGlvbiBiZWluZyBsb2dnZWQuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImJFeGVjdXRlZFwiPldpbGwgdGhlIG9wZXJhdGlvbiBiZSBleGVjdXRlZC48L3BhcmFtPlxyXG4gIGFzeW5jIGFkZEZsb3dGaWVsZE9wZXJhdGlvbihvcGVyOiBPcGVyYXRpb24sIGJFeGVjdXRlZDogYm9vbGVhbiwgdGFza0luZm86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNGbG93T3BlcmF0aW9uKSB7XHJcbiAgICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfRkxXX09QRVIsIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9EQVRBX09QRVIpO1xyXG4gICAgICBsZXQgYnVmZmVyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoRmxvd01vbml0b3JRdWV1ZS5GTFdfUEVSRklYKTtcclxuICAgICAgYXdhaXQgb3Blci5BZGRGbG93RGVzY3JpcHRpb24oYnVmZmVyKTtcclxuICAgICAgYnVmZmVyLkFwcGVuZCgnICcpO1xyXG5cclxuXHJcbiAgICAgIGlmICghYkV4ZWN1dGVkKVxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQoXCJbTm90IEV4ZWN1dGVkXVwiKTtcclxuXHJcbiAgICAgIGxldCBpbmZvID0gYnVmZmVyLlRvU3RyaW5nKCk7XHJcbiAgICAgIGFjdC5zZXRJbmZvKGluZm8pO1xyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVN1cHBvcnRUb0xvZyh0YXNrSW5mbyArXCI6IFwiICsgaW5mbywgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXRlXCI+b2YgdGhlIHVwZGF0ZVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIGFkZEZsb3dPcGVyYXRpb25VcGRhdGUoc3RhdGU6IG51bWJlciwgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2VuYWJsZWQgJiYgdGhpcy5faXNGbG93T3BlcmF0aW9uKSB7XHJcbiAgICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfRkxXX09QRVIsIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9EQVRBX09QRVIpOyAvLyBNR19PUEVSX1VQREFURVxyXG4gICAgICBsZXQgaW5mbzogc3RyaW5nO1xyXG4gICAgICBpZiAoc3RhdGUgPT09IEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9TVEFSVClcclxuICAgICAgICBpbmZvID0gXCJTdGFydHMgVXBkYXRlXCI7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBpbmZvID0gIFwiRW5kcyBVcGRhdGVcIjtcclxuXHJcbiAgICAgIGFjdC5zZXRJbmZvKGluZm8pO1xyXG4gICAgICB0aGlzLl9xdWV1ZS5wdXQoYWN0KTtcclxuXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVN1cHBvcnRUb0xvZyh0YXNrSW5mbyArXCI6IFwiICsgaW5mbywgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluZm9cIj5zdHJpbmcgcGFzc2VkIHRvIHN0YXR1cyBsaW5lIHZlcmlmeSBhY3Rpb248L3BhcmFtPlxyXG4gIGFkZEZsb3dWZXJpZnlJbmZvKGluZm86IHN0cmluZywgdGFza0luZm86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRGbG93SW5mbyhpbmZvLCB0YXNrSW5mbyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluZm9cIj5zdHJpbmcgYWRkZWQgdG8gZmxvdyBtb25pdG9yIHF1ZXVlIGZvciBJbnZva2VPczwvcGFyYW0+XHJcbiAgYWRkRmxvd0ludm9rZU9zSW5mbyhpbmZvOiBzdHJpbmcsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkRmxvd0luZm8oaW5mbywgdGFza0luZm8pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHVzZXIgc3RyaW5nIHBhc3NlZCB0byBzdGF0dXMgbGluZSBmb3IgYWN0aW9uc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpbmZvXCI+XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBhZGRGbG93SW5mbyhpbmZvOiBzdHJpbmcsIHRhc2tJbmZvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fZW5hYmxlZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGxldCBhY3Q6IEFjdGl2aXR5SXRlbSA9IG5ldyBBY3Rpdml0eUl0ZW0odGhpcywgRmxvd01vbml0b3JRdWV1ZS5BQ1RfRkxXX09QRVIsIEZsb3dNb25pdG9ySW50ZXJmYWNlLkZMV01UUl9EQVRBX09QRVIpO1xyXG4gICAgbGV0IGJ1ZmZlcjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKFwiXCIpO1xyXG5cclxuICAgIGlmICghKGluZm8gPT09IFwiXCIpKSB7XHJcbiAgICAgIGJ1ZmZlci5BcHBlbmQoXCIgPj4gSU5GT1JNQVRJT04gPj4gXCIpO1xyXG4gICAgICBidWZmZXIuQXBwZW5kKGluZm8pO1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0luZm8gPSBidWZmZXIuVG9TdHJpbmcoKTtcclxuICAgIGFjdC5zZXRJbmZvKG5ld0luZm8pO1xyXG4gICAgdGhpcy5fcXVldWUucHV0KGFjdCk7XHJcblxyXG4gICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlU3VwcG9ydFRvTG9nKHRhc2tJbmZvICtcIjogXCIgKyBuZXdJbmZvLCB0cnVlKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgYWxsIGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnQgQWN0aXZpdHlcclxuLy8vIDwvc3VtbWFyeT5cclxuY2xhc3MgQWN0aXZpdHlJdGVtIHtcclxuICBwcml2YXRlIF9lbmNsb3NpbmdJbnN0YW5jZTogRmxvd01vbml0b3JRdWV1ZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfaWQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfdHlwZTogc3RyaW5nID0gbnVsbDsgLy8gQUNUWV9UQVNLfEFDVF9UQVNLX0ZMV3xBQ1RfREFUQVZJRVd8QUNUX1JFQ09NUFVURXxBQ1RfRkxXX09QRVJcclxuICBwcml2YXRlIF9pbmZvOiBzdHJpbmcgPSBudWxsO1xyXG4gIHByaXZhdGUgX3RpbWU6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVuY2xvc2luZ0luc3RhbmNlOiBGbG93TW9uaXRvclF1ZXVlLCB0eXBlOiBzdHJpbmcsIGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2VuY2xvc2luZ0luc3RhbmNlID0gZW5jbG9zaW5nSW5zdGFuY2U7XHJcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcclxuICAgIHRoaXMuX2lkID0gaWQ7XHJcbiAgICB0aGlzLnNldFRpbWUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzYXZlIGN1cnJlbnQgdGltZSBpbiB0aGUgbmVlZGVkIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBzZXRUaW1lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGltZSA9IERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBGbG93TW9uaXRvclF1ZXVlLkxvbmdUaW1lUGF0dGVybiwgTG9nZ2VyLkluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYWRkZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBhY3Rpdml0eVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0SW5mbyhpbmZvXzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbmZvID0gKChpbmZvXyAhPT0gbnVsbCkgPyBYbWxQYXJzZXIuZXNjYXBlKGluZm9fKSA6IGluZm9fKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBidWlsZCBYTUwgc3RyaW5nIGZvciB0aGUgYWN0aXZpdHkgaXRlbVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlcik6IHZvaWQge1xyXG4gICAgbWVzc2FnZS5BcHBlbmQoWE1MQ29uc3RhbnRzLlNUQVJUX1RBRyArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19GTFdNVFJfQUNUKTtcclxuICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgWE1MQ29uc3RhbnRzLk1HX0FUVFJfVFlQRSArIFwiPVxcXCJcIiArIHRoaXMuX3R5cGUgKyBcIlxcXCJcIik7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIFhNTENvbnN0YW50cy5NR19BVFRSX0lEICsgXCI9XFxcIlwiICsgdGhpcy5faWQgKyBcIlxcXCJcIik7XHJcbiAgICBpZiAodGhpcy5faW5mbyAhPSBudWxsKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSU5GTyArIFwiPVxcXCJcIiArIHRoaXMuX2luZm8gKyBcIlxcXCJcIik7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVElNRSArIFwiPVxcXCJcIiArIHRoaXMuX3RpbWUgKyBcIlxcXCJcIik7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChYTUxDb25zdGFudHMuVEFHX1RFUk0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|