@magic-xpa/engine 4.1200.0-dev4120.19 → 4.1200.0-dev4120.191

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.
Files changed (213) hide show
  1. package/fesm2022/magic-xpa-engine.mjs +11347 -1307
  2. package/fesm2022/magic-xpa-engine.mjs.map +1 -1
  3. package/index.d.ts +4 -0
  4. package/package.json +5 -7
  5. package/src/ClientManager.d.ts +2 -0
  6. package/src/CommandsProcessorBase.d.ts +2 -1
  7. package/src/CommandsProcessorManager.d.ts +2 -1
  8. package/src/ConstInterface.d.ts +7 -0
  9. package/src/bridge/MagicBridge.d.ts +2 -0
  10. package/src/commands/ClientToServer/CachedFileQueryCommand.d.ts +9 -0
  11. package/src/commands/ClientToServer/CommandFactory.d.ts +4 -2
  12. package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +1 -0
  13. package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +1 -0
  14. package/src/event/EventHandler.d.ts +5 -0
  15. package/src/event/EventsManager.d.ts +4 -0
  16. package/src/exp/ExpressionEvaluator.d.ts +5 -0
  17. package/src/http/HttpManager.d.ts +2 -1
  18. package/src/http/client/HttpClientAsync.d.ts +2 -2
  19. package/src/http/client/HttpClientBase.d.ts +3 -3
  20. package/src/http/client/HttpClientSync.d.ts +2 -2
  21. package/src/remote/RemoteCommandsProcessor.d.ts +9 -2
  22. package/src/remote/RemoteControlItemsRefreshCommand.d.ts +1 -0
  23. package/src/rt/Operation.d.ts +3 -1
  24. package/src/util/ParamParseResult.d.ts +3 -3
  25. package/esm2022/index.mjs +0 -188
  26. package/esm2022/magic-xpa-engine.mjs +0 -2
  27. package/esm2022/src/AccessHelper.mjs +0 -15
  28. package/esm2022/src/ClientManager.mjs +0 -420
  29. package/esm2022/src/CommandsProcessorBase.mjs +0 -56
  30. package/esm2022/src/CommandsProcessorManager.mjs +0 -26
  31. package/esm2022/src/CommandsTable.mjs +0 -162
  32. package/esm2022/src/ConstInterface.mjs +0 -517
  33. package/esm2022/src/CurrentClientVersion.mjs +0 -2
  34. package/esm2022/src/FlowMonitorInterface.mjs +0 -16
  35. package/esm2022/src/GUIManager.mjs +0 -62
  36. package/esm2022/src/GlobalCommandsManager.mjs +0 -34
  37. package/esm2022/src/GuiEventsProcessor.mjs +0 -156
  38. package/esm2022/src/ICommandsTable.mjs +0 -2
  39. package/esm2022/src/ServerConfig.mjs +0 -122
  40. package/esm2022/src/bridge/IGuiEvent.mjs +0 -20
  41. package/esm2022/src/bridge/MagicBridge.mjs +0 -41
  42. package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -12
  43. package/esm2022/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +0 -9
  44. package/esm2022/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +0 -9
  45. package/esm2022/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +0 -9
  46. package/esm2022/src/commands/ClientToServer/BrowserEscEventCommand.mjs +0 -26
  47. package/esm2022/src/commands/ClientToServer/ClientOriginatedCommand.mjs +0 -15
  48. package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +0 -60
  49. package/esm2022/src/commands/ClientToServer/ColumnSortEventCommand.mjs +0 -29
  50. package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +0 -261
  51. package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -67
  52. package/esm2022/src/commands/ClientToServer/ComputeEventCommand.mjs +0 -26
  53. package/esm2022/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +0 -24
  54. package/esm2022/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +0 -23
  55. package/esm2022/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +0 -8
  56. package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
  57. package/esm2022/src/commands/ClientToServer/DataviewCommand.mjs +0 -44
  58. package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +0 -40
  59. package/esm2022/src/commands/ClientToServer/EventCommand.mjs +0 -43
  60. package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +0 -70
  61. package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -25
  62. package/esm2022/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +0 -11
  63. package/esm2022/src/commands/ClientToServer/ICommandTaskTag.mjs +0 -2
  64. package/esm2022/src/commands/ClientToServer/IndexChangeEventCommand.mjs +0 -24
  65. package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -26
  66. package/esm2022/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +0 -26
  67. package/esm2022/src/commands/ClientToServer/QueryCommand.mjs +0 -21
  68. package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +0 -30
  69. package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -30
  70. package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -27
  71. package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -43
  72. package/esm2022/src/commands/ClientToServer/SelectProgramCommand.mjs +0 -19
  73. package/esm2022/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +0 -9
  74. package/esm2022/src/commands/ClientToServer/SubformOpenEventCommand.mjs +0 -24
  75. package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -27
  76. package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +0 -34
  77. package/esm2022/src/commands/ClientToServer/UnloadCommand.mjs +0 -18
  78. package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
  79. package/esm2022/src/commands/DataViewCommandBase.mjs +0 -8
  80. package/esm2022/src/commands/IClientCommand.mjs +0 -2
  81. package/esm2022/src/commands/IClientTargetedCommand.mjs +0 -13
  82. package/esm2022/src/commands/IClientToServerCommandInfo.mjs +0 -2
  83. package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +0 -65
  84. package/esm2022/src/commands/ServerToClient/AddLocateCommand.mjs +0 -22
  85. package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +0 -62
  86. package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +0 -33
  87. package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
  88. package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -24
  89. package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
  90. package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
  91. package/esm2022/src/commands/ServerToClient/ResetLocateCommand.mjs +0 -15
  92. package/esm2022/src/commands/ServerToClient/ResetRangeCommand.mjs +0 -15
  93. package/esm2022/src/commands/ServerToClient/ResetSortCommand.mjs +0 -15
  94. package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +0 -37
  95. package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
  96. package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +0 -132
  97. package/esm2022/src/communications/IConnectionStateManager.mjs +0 -2
  98. package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -15
  99. package/esm2022/src/data/DataSourceIdKey.mjs +0 -3
  100. package/esm2022/src/data/DataView.mjs +0 -1613
  101. package/esm2022/src/data/DataViewBase.mjs +0 -4
  102. package/esm2022/src/data/DataviewManager.mjs +0 -28
  103. package/esm2022/src/data/DataviewManagerBase.mjs +0 -15
  104. package/esm2022/src/data/DvCache.mjs +0 -67
  105. package/esm2022/src/data/Field.mjs +0 -646
  106. package/esm2022/src/data/FieldBase.mjs +0 -15
  107. package/esm2022/src/data/FieldsTable.mjs +0 -103
  108. package/esm2022/src/data/IRecordsTable.mjs +0 -2
  109. package/esm2022/src/data/Key.mjs +0 -88
  110. package/esm2022/src/data/Record.mjs +0 -880
  111. package/esm2022/src/data/RecordOutOfDataViewException.mjs +0 -16
  112. package/esm2022/src/data/RecordsTable.mjs +0 -267
  113. package/esm2022/src/data/TaskTransactionManager.mjs +0 -107
  114. package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +0 -74
  115. package/esm2022/src/enums.mjs +0 -24
  116. package/esm2022/src/env/EnvVariablesTable.mjs +0 -340
  117. package/esm2022/src/env/Environment.mjs +0 -487
  118. package/esm2022/src/env/ILanguageData.mjs +0 -2
  119. package/esm2022/src/env/LanguageData.mjs +0 -227
  120. package/esm2022/src/env/MirrorString.mjs +0 -67
  121. package/esm2022/src/event/ActionManager.mjs +0 -91
  122. package/esm2022/src/event/Event.mjs +0 -1333
  123. package/esm2022/src/event/EventHandler.mjs +0 -766
  124. package/esm2022/src/event/EventHandlerPosition.mjs +0 -204
  125. package/esm2022/src/event/EventsManager.mjs +0 -2988
  126. package/esm2022/src/event/IEventsManager.mjs +0 -7
  127. package/esm2022/src/event/RunTimeEvent.mjs +0 -399
  128. package/esm2022/src/event/RunTimeEventBase.mjs +0 -4
  129. package/esm2022/src/event/UserEventsTable.mjs +0 -47
  130. package/esm2022/src/exp/ExpTable.mjs +0 -57
  131. package/esm2022/src/exp/Expression.mjs +0 -200
  132. package/esm2022/src/exp/ExpressionDict.mjs +0 -727
  133. package/esm2022/src/exp/ExpressionEvaluator.mjs +0 -4206
  134. package/esm2022/src/exp/ExpressionLocalJpn.mjs +0 -314
  135. package/esm2022/src/exp/GlobalParamsTable.mjs +0 -85
  136. package/esm2022/src/exp/YesNoExp.mjs +0 -36
  137. package/esm2022/src/gui/CreatedFormVector.mjs +0 -23
  138. package/esm2022/src/gui/FormsTable.mjs +0 -66
  139. package/esm2022/src/gui/MgControl.mjs +0 -363
  140. package/esm2022/src/gui/MgForm.mjs +0 -1224
  141. package/esm2022/src/http/HttpManager.mjs +0 -97
  142. package/esm2022/src/http/client/HttpClientAsync.mjs +0 -68
  143. package/esm2022/src/http/client/HttpClientBase.mjs +0 -132
  144. package/esm2022/src/http/client/HttpClientEvents.mjs +0 -39
  145. package/esm2022/src/http/client/HttpClientSync.mjs +0 -42
  146. package/esm2022/src/http/client/HttpUtility.mjs +0 -84
  147. package/esm2022/src/http/client/ICommunicationsFailureHandler.mjs +0 -2
  148. package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +0 -18
  149. package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +0 -18
  150. package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +0 -18
  151. package/esm2022/src/remote/RemoteCommandsProcessor.mjs +0 -883
  152. package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +0 -25
  153. package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +0 -24
  154. package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +0 -61
  155. package/esm2022/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +0 -16
  156. package/esm2022/src/remote/RemoteDataviewManager.mjs +0 -17
  157. package/esm2022/src/remote/RemoteInitDataViewCommand.mjs +0 -11
  158. package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +0 -17
  159. package/esm2022/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +0 -13
  160. package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +0 -16
  161. package/esm2022/src/remote/ServerError.mjs +0 -40
  162. package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +0 -20
  163. package/esm2022/src/rt/Argument.mjs +0 -265
  164. package/esm2022/src/rt/ArgumentsList.mjs +0 -103
  165. package/esm2022/src/rt/Boundary.mjs +0 -152
  166. package/esm2022/src/rt/CompMainPrgTable.mjs +0 -63
  167. package/esm2022/src/rt/DataviewHeaderBase.mjs +0 -98
  168. package/esm2022/src/rt/DataviewHeaderFactory.mjs +0 -7
  169. package/esm2022/src/rt/DataviewHeaders.mjs +0 -53
  170. package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +0 -38
  171. package/esm2022/src/rt/ExecutionStack.mjs +0 -94
  172. package/esm2022/src/rt/ExecutionStackEntry.mjs +0 -17
  173. package/esm2022/src/rt/HandlersTable.mjs +0 -96
  174. package/esm2022/src/rt/IDataSourceViewDefinition.mjs +0 -2
  175. package/esm2022/src/rt/IDataviewHeader.mjs +0 -2
  176. package/esm2022/src/rt/IResultValue.mjs +0 -2
  177. package/esm2022/src/rt/LastFocusedManager.mjs +0 -65
  178. package/esm2022/src/rt/Operation.mjs +0 -735
  179. package/esm2022/src/rt/OperationTable.mjs +0 -67
  180. package/esm2022/src/rt/Recompute.mjs +0 -355
  181. package/esm2022/src/rt/RecomputeTable.mjs +0 -63
  182. package/esm2022/src/rt/RemoteDataviewHeader.mjs +0 -108
  183. package/esm2022/src/rt/ResultValue.mjs +0 -10
  184. package/esm2022/src/rt/TableCache.mjs +0 -177
  185. package/esm2022/src/rt/TableCacheManager.mjs +0 -67
  186. package/esm2022/src/rt/Transaction.mjs +0 -53
  187. package/esm2022/src/security/UserDetails.mjs +0 -71
  188. package/esm2022/src/tasks/IMGDataCollection.mjs +0 -2
  189. package/esm2022/src/tasks/MGData.mjs +0 -552
  190. package/esm2022/src/tasks/MGDataCollection.mjs +0 -252
  191. package/esm2022/src/tasks/RCTimer.mjs +0 -63
  192. package/esm2022/src/tasks/RemoteTaskService.mjs +0 -45
  193. package/esm2022/src/tasks/Task.mjs +0 -2499
  194. package/esm2022/src/tasks/TaskBase.mjs +0 -83
  195. package/esm2022/src/tasks/TaskServiceBase.mjs +0 -25
  196. package/esm2022/src/tasks/TasksTable.mjs +0 -80
  197. package/esm2022/src/tasks/sort/Sort.mjs +0 -5
  198. package/esm2022/src/tasks/sort/SortCollection.mjs +0 -67
  199. package/esm2022/src/util/ConstUtils.mjs +0 -14
  200. package/esm2022/src/util/FlowMonitorQueue.mjs +0 -451
  201. package/esm2022/src/util/HeapSort.mjs +0 -70
  202. package/esm2022/src/util/IMirrorXML.mjs +0 -2
  203. package/esm2022/src/util/IServerConfig.mjs +0 -2
  204. package/esm2022/src/util/MgBlockingQueue.mjs +0 -2
  205. package/esm2022/src/util/MgPriorityBlockingQueue.mjs +0 -74
  206. package/esm2022/src/util/MgPriorityQueue.mjs +0 -66
  207. package/esm2022/src/util/ParamParseResult.mjs +0 -8
  208. package/esm2022/src/util/PrmMap.mjs +0 -153
  209. package/esm2022/src/util/ReturnResult.mjs +0 -46
  210. package/esm2022/src/util/ReturnResultBase.mjs +0 -18
  211. package/esm2022/src/util/Scrambler.mjs +0 -89
  212. package/esm2022/src/util/UniqueIDUtils.mjs +0 -13
  213. package/esm2022/src/util/cookie.service.mjs +0 -92
@@ -1,204 +0,0 @@
1
- import { InternalInterface, Logger } from "@magic-xpa/utils";
2
- import { ConstInterface } from "../ConstInterface";
3
- import { AccessHelper } from "../AccessHelper";
4
- import { isNullOrUndefined } from "@magic-xpa/mscorelib";
5
- import { FlowMonitorQueue } from "../util/FlowMonitorQueue";
6
- export class EventHandlerPosition {
7
- static PHASE_CONTROL_SPECIFIC = 1;
8
- static PHASE_CONTROL_NON_SPECIFIC = 2;
9
- static PHASE_GLOBAL = 3;
10
- static PHASE_GLOBAL_SPECIFIC = 4;
11
- _handlerIdx = 0;
12
- _handlersTab = null;
13
- _orgPrevTask = null;
14
- _orgTask = null;
15
- _phase = 0;
16
- _prevTask = null;
17
- _rtEvt = null;
18
- _task = null;
19
- constructor() {
20
- }
21
- init(rtEvent) {
22
- this._rtEvt = rtEvent;
23
- this._task = this._rtEvt.getTask();
24
- if (this._task.isMainProg()) {
25
- this._prevTask = this._rtEvt.getMainPrgCreator();
26
- if (this._prevTask !== null && this._prevTask.isMainProg())
27
- this._prevTask = null;
28
- }
29
- if (rtEvent.getType() === ConstInterface.EVENT_TYPE_USER_FUNC)
30
- this._phase = EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC;
31
- else {
32
- if (rtEvent.getType() === ConstInterface.EVENT_TYPE_USER_FUNC)
33
- this._phase = EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC;
34
- else
35
- this._phase = EventHandlerPosition.PHASE_CONTROL_SPECIFIC;
36
- }
37
- this._orgTask = this._task;
38
- this._orgPrevTask = this._prevTask;
39
- this._handlersTab = this._task.getHandlersTab();
40
- if (this._handlersTab === null) {
41
- this.goUpTaskChain();
42
- }
43
- this._handlerIdx = -1;
44
- }
45
- getNext(evt) {
46
- if (!isNullOrUndefined(evt))
47
- return this.getNext_0(evt);
48
- else
49
- return this.getNext_1();
50
- }
51
- getNext_0(evt) {
52
- this._rtEvt = evt;
53
- return this.getNext();
54
- }
55
- getNext_1() {
56
- if (this._handlersTab === null)
57
- return null;
58
- if (this._rtEvt.getType() === ConstInterface.EVENT_TYPE_INTERNAL && this._rtEvt.getInternalCode() !== InternalInterface.MG_ACT_VARIABLE) {
59
- switch (this._rtEvt.getInternalCode()) {
60
- case InternalInterface.MG_ACT_TASK_PREFIX:
61
- case InternalInterface.MG_ACT_TASK_SUFFIX:
62
- case InternalInterface.MG_ACT_REC_PREFIX:
63
- case InternalInterface.MG_ACT_REC_SUFFIX:
64
- case InternalInterface.MG_ACT_CTRL_PREFIX:
65
- case InternalInterface.MG_ACT_CTRL_SUFFIX: {
66
- if (this._rtEvt.getInternalCode() == InternalInterface.MG_ACT_REC_PREFIX) {
67
- FlowMonitorQueue.Instance.addDataViewFlow(this._task);
68
- }
69
- if (this._handlerIdx === -1) {
70
- for (this._handlerIdx = this._handlersTab.getSize() - 1; this._handlerIdx >= 0; this._handlerIdx--) {
71
- let handler = this._handlersTab.getHandler(this._handlerIdx);
72
- if ((handler.isNonSpecificHandlerOf(this._rtEvt)) || (handler.isSpecificHandlerOf(this._rtEvt))) {
73
- return handler;
74
- }
75
- }
76
- }
77
- return null;
78
- }
79
- default:
80
- break;
81
- }
82
- }
83
- while (this.setNextHandlerIdx()) {
84
- let handler = this._handlersTab.getHandler(this._handlerIdx);
85
- switch (this._phase) {
86
- case EventHandlerPosition.PHASE_CONTROL_SPECIFIC:
87
- if (handler.isSpecificHandlerOf(this._rtEvt))
88
- return handler;
89
- continue;
90
- case EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC:
91
- if (handler.isNonSpecificHandlerOf(this._rtEvt))
92
- return handler;
93
- continue;
94
- case EventHandlerPosition.PHASE_GLOBAL_SPECIFIC:
95
- if (handler.isGlobalSpecificHandlerOf(this._rtEvt))
96
- return handler;
97
- continue;
98
- case EventHandlerPosition.PHASE_GLOBAL:
99
- if (handler.isGlobalHandlerOf(this._rtEvt))
100
- return handler;
101
- continue;
102
- default:
103
- Logger.Instance.WriteExceptionToLogWithMsg("in EventHandlerPosition.getNext() invalid phase: " + this._phase);
104
- break;
105
- }
106
- }
107
- return null;
108
- }
109
- setNextHandlerIdx() {
110
- if (this._handlerIdx < 0)
111
- this._handlerIdx = this._handlersTab.getSize() - 1;
112
- else
113
- this._handlerIdx = this._handlerIdx - 1;
114
- if (this._handlerIdx < 0 || this._task.isAborting()) {
115
- if (this.goUpTaskChain())
116
- return this.setNextHandlerIdx();
117
- else
118
- return false;
119
- }
120
- return true;
121
- }
122
- goUpTaskChain() {
123
- let mGData = this._task.getMGData();
124
- let ctlIdx = this._task.getCtlIdx();
125
- switch (this._phase) {
126
- case EventHandlerPosition.PHASE_CONTROL_SPECIFIC:
127
- case EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC: {
128
- if (!this._task.isMainProg()) {
129
- this.getParentOrCompMainPrg();
130
- break;
131
- }
132
- else {
133
- if ((this._rtEvt.getType() === ConstInterface.EVENT_TYPE_PUBLIC ||
134
- this._rtEvt.getType() === ConstInterface.EVENT_TYPE_INTERNAL ||
135
- this._rtEvt.getType() === ConstInterface.EVENT_TYPE_SYSTEM ||
136
- this._rtEvt.getType() === ConstInterface.EVENT_TYPE_USER) && ctlIdx > 0) {
137
- if (this._prevTask === null) {
138
- this._task = mGData.getNextMainProg(ctlIdx);
139
- if (this._task === null && ctlIdx > 0)
140
- this._task = AccessHelper.mgDataTable.GetMainProgByCtlIdx(-1, AccessHelper.eventsManager.getCompMainPrgTab().getCtlIdx(0));
141
- }
142
- else {
143
- this._task = this._prevTask.PathParentTask;
144
- this._prevTask = null;
145
- }
146
- this._rtEvt.setMainPrgCreator(null);
147
- break;
148
- }
149
- if (this._phase === EventHandlerPosition.PHASE_CONTROL_SPECIFIC) {
150
- this._phase = EventHandlerPosition.PHASE_GLOBAL_SPECIFIC;
151
- }
152
- else {
153
- this._phase = EventHandlerPosition.PHASE_GLOBAL;
154
- }
155
- this._task = AccessHelper.mgDataTable.GetMainProgByCtlIdx(-1, AccessHelper.eventsManager.getCompMainPrgTab().getCtlIdx(0));
156
- this._rtEvt.setMainPrgCreator(this._task);
157
- if (this._task === null)
158
- return false;
159
- break;
160
- }
161
- }
162
- case EventHandlerPosition.PHASE_GLOBAL_SPECIFIC:
163
- case EventHandlerPosition.PHASE_GLOBAL: {
164
- this._task = mGData.getNextMainProg(ctlIdx);
165
- if (this._task === null) {
166
- if (this._phase === EventHandlerPosition.PHASE_GLOBAL)
167
- return false;
168
- this._phase = EventHandlerPosition.PHASE_CONTROL_NON_SPECIFIC;
169
- this._task = this._orgTask;
170
- this._prevTask = this._orgPrevTask;
171
- }
172
- break;
173
- }
174
- default:
175
- Logger.Instance.WriteExceptionToLogWithMsg("in EventHandlerPosition.goUpTaskChain() invalid phase: " + this._phase);
176
- break;
177
- }
178
- if (this._task === null)
179
- return false;
180
- this._handlersTab = this._task.getHandlersTab();
181
- if (this._handlersTab === null)
182
- return this.goUpTaskChain();
183
- this._handlerIdx = -1;
184
- return true;
185
- }
186
- getParentOrCompMainPrg() {
187
- let ctlIdx = this._task.getCtlIdx();
188
- this._prevTask = this._task;
189
- let pathParentTask = this._task.PathParentTask;
190
- if (pathParentTask === null) {
191
- this._task = null;
192
- return;
193
- }
194
- if (ctlIdx !== pathParentTask.getCtlIdx()) {
195
- this._rtEvt.setMainPrgCreator(this._task);
196
- this._task = AccessHelper.mgDataTable.GetMainProgByCtlIdx(-1, ctlIdx);
197
- }
198
- else {
199
- this._rtEvt.setMainPrgCreator(null);
200
- this._task = pathParentTask;
201
- }
202
- }
203
- }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyUG9zaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0V2ZW50SGFuZGxlclBvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQU0zRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTTVELE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsTUFBTSxDQUFDLHNCQUFzQixHQUFXLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsMEJBQTBCLEdBQVcsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxxQkFBcUIsR0FBVyxDQUFDLENBQUM7SUFFekMsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxZQUFZLEdBQVMsSUFBSSxDQUFDO0lBQzFCLFFBQVEsR0FBUyxJQUFJLENBQUM7SUFDdEIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNuQixTQUFTLEdBQVMsSUFBSSxDQUFDO0lBQ3ZCLE1BQU0sR0FBaUIsSUFBSSxDQUFDO0lBQzVCLEtBQUssR0FBUyxJQUFJLENBQUM7SUFHM0I7SUFDQSxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQXFCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxP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QUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUk7WUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLTyxzQkFBc0I7UUFDNUIsSUFBSSxNQUFNLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFPNUIsSUFBSSxjQUFjLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDckQsSUFBSSxjQUFjLEtBQUssSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLE9BQU87U0FDUjtRQUdELElBQUksTUFBTSxLQUFLLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUd6QyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFTLFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDN0U7YUFDSTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7U0FDN0I7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnRlcm5hbEludGVyZmFjZSwgTG9nZ2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0hhbmRsZXJzVGFibGV9IGZyb20gXCIuLi9ydC9IYW5kbGVyc1RhYmxlXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50fSBmcm9tIFwiLi9SdW5UaW1lRXZlbnRcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0V2ZW50SGFuZGxlcn0gZnJvbSBcIi4vRXZlbnRIYW5kbGVyXCI7XHJcbmltcG9ydCB7TUdEYXRhfSBmcm9tIFwiLi4vdGFza3MvTUdEYXRhXCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBBY2Nlc3NIZWxwZXIgfSBmcm9tIFwiLi4vQWNjZXNzSGVscGVyXCI7XHJcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQgeyBGbG93TW9uaXRvclF1ZXVlIH0gZnJvbSBcIi4uL3V0aWwvRmxvd01vbml0b3JRdWV1ZVwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBhbiBvYmplY3Qgb2YgdGhpcyBjbGFzcyBwb2ludHMgdG8gdGhlIHBvc2l0aW9uIG9mIGFuIGV2ZW50IGhhbmRsZXIgaW4gdGhlXHJcbi8vLyAgIGNoYWluIG9mIHRoZSBldmVudCBoYW5kbGVyc1xyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgRXZlbnRIYW5kbGVyUG9zaXRpb24ge1xyXG4gIHByaXZhdGUgc3RhdGljIFBIQVNFX0NPTlRST0xfU1BFQ0lGSUM6IG51bWJlciA9IDE7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEhBU0VfQ09OVFJPTF9OT05fU1BFQ0lGSUM6IG51bWJlciA9IDI7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgUEhBU0VfR0xPQkFMOiBudW1iZXIgPSAzO1xyXG4gIHByaXZhdGUgc3RhdGljIFBIQVNFX0dMT0JBTF9TUEVDSUZJQzogbnVtYmVyID0gNDtcclxuXHJcbiAgcHJpdmF0ZSBfaGFuZGxlcklkeDogbnVtYmVyID0gMDsgLy8gdGhlIGluZGV4IG9mIHRoZSBoYW5kbGVyIHdpdGhpbiB0aGUgdGFza1xyXG4gIHByaXZhdGUgX2hhbmRsZXJzVGFiOiBIYW5kbGVyc1RhYmxlID0gbnVsbDtcclxuICBwcml2YXRlIF9vcmdQcmV2VGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgY2hlY2tlZCB0YXNrXHJcbiAgcHJpdmF0ZSBfb3JnVGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjaGVja2VkIHRhc2tcclxuICBwcml2YXRlIF9waGFzZTogbnVtYmVyID0gMDsgLy8gdGhlIHBoYXNlIG9mIHRoZSBzZWFyY2g6IGNvbnRyb2wgc3BlY2lmaWMsIGNvbnRyb2wgbm9uLXNwZWNpZmljLCBnbG9iYWxcclxuICBwcml2YXRlIF9wcmV2VGFzazogVGFzayA9IG51bGw7IC8vIHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgY2hlY2tlZCB0YXNrXHJcbiAgcHJpdmF0ZSBfcnRFdnQ6IFJ1blRpbWVFdmVudCA9IG51bGw7IC8vIHRoZSBldmVudFxyXG4gIHByaXZhdGUgX3Rhc2s6IFRhc2sgPSBudWxsOyAvLyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY2hlY2tlZCB0YXNrXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbiAgLy8vICAgaW5pdCB0aGUgcG9zaXRpb24gdG8gc3RhcnQgYSBuZXcgY2hhaW4gb2Ygc2VhcmNoXHJcbiAgaW5pdChydEV2ZW50OiBSdW5UaW1lRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3J0RXZ0ID0gcnRFdmVudDtcclxuICAgIHRoaXMuX3Rhc2sgPSA8VGFzaz50aGlzLl9ydEV2dC5nZXRUYXNrKCk7XHJcbiAgICBpZiAodGhpcy5fdGFzay5pc01haW5Qcm9nKCkpIHtcclxuICAgICAgdGhpcy5fcHJldlRhc2sgPSA8VGFzaz50aGlzLl9ydEV2dC5nZXRNYWluUHJnQ3JlYXRvcigpO1xyXG4gICAgICBpZiAodGhpcy5fcHJldlRhc2sgIT09IG51bGwgJiYgdGhpcy5fcHJldlRhc2suaXNNYWluUHJvZygpKVxyXG4gICAgICAgIHRoaXMuX3ByZXZUYXNrID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocnRFdmVudC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUl9GVU5DKVxyXG4gICAgICB0aGlzLl9waGFzZSA9IEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfTk9OX1NQRUNJRklDO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChydEV2ZW50LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkMpXHJcbiAgICAgICAgdGhpcy5fcGhhc2UgPSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX05PTl9TUEVDSUZJQztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuX3BoYXNlID0gRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfQ09OVFJPTF9TUEVDSUZJQztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9vcmdUYXNrID0gdGhpcy5fdGFzaztcclxuICAgIHRoaXMuX29yZ1ByZXZUYXNrID0gdGhpcy5fcHJldlRhc2s7XHJcbiAgICB0aGlzLl9oYW5kbGVyc1RhYiA9IHRoaXMuX3Rhc2suZ2V0SGFuZGxlcnNUYWIoKTtcclxuICAgIGlmICh0aGlzLl9oYW5kbGVyc1RhYiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmdvVXBUYXNrQ2hhaW4oKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9oYW5kbGVySWR4ID0gLTE7XHJcbiAgfVxyXG5cclxuICBnZXROZXh0KGV2dDogUnVuVGltZUV2ZW50KTogRXZlbnRIYW5kbGVyO1xyXG4gIGdldE5leHQoKTogRXZlbnRIYW5kbGVyO1xyXG4gIGdldE5leHQoZXZ0PzogUnVuVGltZUV2ZW50KTogRXZlbnRIYW5kbGVyIHtcclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZXZ0KSlcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV4dF8wKGV2dCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB0aGlzLmdldE5leHRfMSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vICAgY2hhbmdlcyB0aGUgY3VycmVudCBydW4gdGltZSBldmVudCBhbmQgcmV0dXJucyB0aGUgbmV4dCBldmVudCBoYW5kbGVyXHJcbiAgcHJpdmF0ZSBnZXROZXh0XzAoZXZ0OiBSdW5UaW1lRXZlbnQpOiBFdmVudEhhbmRsZXIge1xyXG4gICAgdGhpcy5fcnRFdnQgPSBldnQ7XHJcbiAgICByZXR1cm4gdGhpcy5nZXROZXh0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gICByZXR1cm5zIHRoZSBuZXh0IGV2ZW50IGhhbmRsZXJcclxuICBwcml2YXRlIGdldE5leHRfMSgpOiBFdmVudEhhbmRsZXIge1xyXG4gICAgaWYgKHRoaXMuX2hhbmRsZXJzVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIGlmICh0aGlzLl9ydEV2dC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwgJiYgdGhpcy5fcnRFdnQuZ2V0SW50ZXJuYWxDb2RlKCkgIT09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WQVJJQUJMRSkge1xyXG4gICAgICAvLyBzcGVjaWFsIHRyZWF0bWVudCBmb3IgVEFTSywgUkVDT1JEIGFuZCBDT05UUk9MIGxldmVsIFByZWZpeC9TdWZmaXggZXZlbnRzXHJcbiAgICAgIHN3aXRjaCAodGhpcy5fcnRFdnQuZ2V0SW50ZXJuYWxDb2RlKCkpIHtcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1BSRUZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1NVRkZJWDpcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfUFJFRklYOlxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVg6XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9QUkVGSVg6XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9TVUZGSVg6IHtcclxuICAgICAgICAgIGlmICh0aGlzLl9ydEV2dC5nZXRJbnRlcm5hbENvZGUoKSA9PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWClcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBGbG93TW9uaXRvclF1ZXVlLkluc3RhbmNlLmFkZERhdGFWaWV3Rmxvdyh0aGlzLl90YXNrKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLl9oYW5kbGVySWR4ID09PSAtMSkge1xyXG4gICAgICAgICAgICBmb3IgKHRoaXMuX2hhbmRsZXJJZHggPSB0aGlzLl9oYW5kbGVyc1RhYi5nZXRTaXplKCkgLSAxOyB0aGlzLl9oYW5kbGVySWR4ID49IDA7IHRoaXMuX2hhbmRsZXJJZHgtLSkge1xyXG4gICAgICAgICAgICAgIGxldCBoYW5kbGVyOiBFdmVudEhhbmRsZXIgPSB0aGlzLl9oYW5kbGVyc1RhYi5nZXRIYW5kbGVyKHRoaXMuX2hhbmRsZXJJZHgpO1xyXG4gICAgICAgICAgICAgIGlmICgoaGFuZGxlci5pc05vblNwZWNpZmljSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSkgfHwgKGhhbmRsZXIuaXNTcGVjaWZpY0hhbmRsZXJPZih0aGlzLl9ydEV2dCkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGFuIGV2ZW50IGhhbmRsZXIgd2FzIG5vdCBmb3VuZCBvciB3YXMgcmV0dXJuZWQgaW4gYSBwcmV2aW91cyBjYWxsIHRvIHRoaXMgbWV0aG9kXHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAvLyBvdGhlciBpbnRlcm5hbCBldmVudHMgc2hvdWxkIGNvbnRpbnVlXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlICh0aGlzLnNldE5leHRIYW5kbGVySWR4KCkpIHtcclxuICAgICAgbGV0IGhhbmRsZXI6IEV2ZW50SGFuZGxlciA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldEhhbmRsZXIodGhpcy5faGFuZGxlcklkeCk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fcGhhc2UpIHtcclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfU1BFQ0lGSUM6XHJcbiAgICAgICAgICBpZiAoaGFuZGxlci5pc1NwZWNpZmljSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSlcclxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXI7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX05PTl9TUEVDSUZJQzpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzTm9uU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKVxyXG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlcjtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTF9TUEVDSUZJQzpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzR2xvYmFsU3BlY2lmaWNIYW5kbGVyT2YodGhpcy5fcnRFdnQpKVxyXG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlcjtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTDpcclxuICAgICAgICAgIGlmIChoYW5kbGVyLmlzR2xvYmFsSGFuZGxlck9mKHRoaXMuX3J0RXZ0KSlcclxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXI7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIEV2ZW50SGFuZGxlclBvc2l0aW9uLmdldE5leHQoKSBpbnZhbGlkIHBoYXNlOiBcIiArIHRoaXMuX3BoYXNlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgYSBuZXh0IGhhbmRsZXIgd2FzIGZvdW5kXHJcbiAgcHJpdmF0ZSBzZXROZXh0SGFuZGxlcklkeCgpOiBib29sZWFuIHtcclxuXHJcbiAgICAvLyB0aGUgaGFuZGxlciBpZHggaXMgKC0xKSB3aGVuIHN0YXJ0aW5nIHRvIHNlYXJjaCBpbiBhIHRhc2tcclxuICAgIGlmICh0aGlzLl9oYW5kbGVySWR4IDwgMClcclxuICAgICAgdGhpcy5faGFuZGxlcklkeCA9IHRoaXMuX2hhbmRsZXJzVGFiLmdldFNpemUoKSAtIDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2hhbmRsZXJJZHggPSB0aGlzLl9oYW5kbGVySWR4IC0gMTtcclxuXHJcbiAgICBpZiAodGhpcy5faGFuZGxlcklkeCA8IDAgfHwgdGhpcy5fdGFzay5pc0Fib3J0aW5nKCkpIHtcclxuICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgaGFuZGxlcnMgaW4gdGhlIHRhc2sgdGhlbiBnbyB1cCB0aGUgY2hhaW4gb2YgdGFza3NcclxuICAgICAgaWYgKHRoaXMuZ29VcFRhc2tDaGFpbigpKVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNldE5leHRIYW5kbGVySWR4KCk7XHJcbiAgICAgIGVsc2UgLy8gbm8gbW9yZSB0YXNrcyBpbiB0aGUgY2hhaW5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gICBnZXQgdGhlIG5leHQgdGFzayBpbiB0aGUgdGFza3MgY2hhaW4gYW5kIHJldHVybnMgZmFsc2UgaWYgbm8gdGFzayB3YXMgZm91bmQuXHJcbiAgLy8vICAgdGhpcyBmdW5jdGlvbiBjaGFuZ2VzIHRoZSBwaGFzZSB2YXJpYWJsZSBhY2NvcmRpbmdseVxyXG4gIHByaXZhdGUgZ29VcFRhc2tDaGFpbigpOiBib29sZWFuIHtcclxuICAgIGxldCBtR0RhdGE6IE1HRGF0YSA9IHRoaXMuX3Rhc2suZ2V0TUdEYXRhKCk7XHJcbiAgICBsZXQgY3RsSWR4OiBudW1iZXIgPSB0aGlzLl90YXNrLmdldEN0bElkeCgpO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5fcGhhc2UpIHtcclxuICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX1NQRUNJRklDOlxyXG4gICAgICBjYXNlIEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0NPTlRST0xfTk9OX1NQRUNJRklDOiB7XHJcbiAgICAgICAgLy8gbm9uIHNwZWNpZmljIGhhbmRsZXJzIGFyZSBzZWFyY2hlZCB0aWxsIHdlIGhpdCBvdXIgbWFpbiBwcm9ncmFtIChpbmNsdXNpdmUpXHJcbiAgICAgICAgLy8gYWZ0ZXJ3YXJkcyB3ZSBzd2l0Y2ggdG8gZ2xvYmFsIHBoYXNlLlxyXG4gICAgICAgIGlmICghdGhpcy5fdGFzay5pc01haW5Qcm9nKCkpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0UGFyZW50T3JDb21wTWFpblByZygpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgLy8gaW50ZXJuYWwsIGludGVybmFsLCBzeXN0ZW0gYW5kIHVzZXIgZXZlbnRzIG1heSBjcm9zcyBjb21wb25lbnQgYm91bmRlcmllc1xyXG4gICAgICAgICAgaWYgKCh0aGlzLl9ydEV2dC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCB8fFxyXG4gICAgICAgICAgICAgICB0aGlzLl9ydEV2dC5nZXRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNIHx8XHJcbiAgICAgICAgICAgICAgIHRoaXMuX3J0RXZ0LmdldFR5cGUoKSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSKSAmJiBjdGxJZHggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIGxvYWQgdGhlIFJUIHBhcmVudCBvZiB0aGUgcHJldmlvdXMgdGFzay4gSWYgbm8gcHJldnRhc2sgZXhpc3RzIHRoZW4gd2UgYXJlXHJcbiAgICAgICAgICAgIC8vIHNpbXBseSBydW5uaW5nIG9uIHRoZSBtYWluIHByb2dzIGxpc3QgKGZvciBleGFtcGxlLCB3aGVuIGEgbWFpbiBwcmcgY2F0Y2hlc1xyXG4gICAgICAgICAgICAvLyBhIHRpbWVyIGV2ZW50LCBubyBwcmV2dGFzayBleGlzdHMuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2VGFzayA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3Rhc2sgPSBtR0RhdGEuZ2V0TmV4dE1haW5Qcm9nKGN0bElkeCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3Rhc2sgPT09IG51bGwgJiYgY3RsSWR4ID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Rhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0TWFpblByb2dCeUN0bElkeCgtMSwgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuZ2V0Q29tcE1haW5QcmdUYWIoKS5nZXRDdGxJZHgoMCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIHRoZSBjb21wb25lbnQgbWFpbiBwcm9ncmFtIHRoYXQgd2FzIHNldCBpbiBnZXRQYXJlbnRPckNvbXBNYWluUHJnLCBpcyBub3cgcmVwbGFjZWQgYmFjayB0byB0aGUgcGF0aCBwYXJlbnQuXHJcbiAgICAgICAgICAgICAgdGhpcy5fdGFzayA9IHRoaXMuX3ByZXZUYXNrLlBhdGhQYXJlbnRUYXNrO1xyXG4gICAgICAgICAgICAgIHRoaXMuX3ByZXZUYXNrID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9ydEV2dC5zZXRNYWluUHJnQ3JlYXRvcihudWxsKTsgLy8gbW92aW5nIG91dCBvZiBhIG1haW4gcHJvZ3JhbSB0byBhbm90aGVyIHRhc2tcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9DT05UUk9MX1NQRUNJRklDKSB7XHJcbiAgICAgICAgICAgIC8vIHNwZWNpZmljIHNlYXJjaCBpcyBvdmVyLiBzdGFydCB0aGUgbm9uIHNwZWNpZmljIHNlYXJjaCBmcm9tIHRoZSBmaXJzdCB0YXNrLlxyXG4gICAgICAgICAgICB0aGlzLl9waGFzZSA9IEV2ZW50SGFuZGxlclBvc2l0aW9uLlBIQVNFX0dMT0JBTF9TUEVDSUZJQztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBoZXJlIHdlIHNjYW4gdGhlIG1haW4gcHJvZ3MgYWNjb3JkaW5nIHRvIHRoZSBsb2FkIHNlcXVlbmNlIChmaXJzdCB0byBsYXN0KS5cclxuICAgICAgICAgICAgdGhpcy5fcGhhc2UgPSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5fdGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRNYWluUHJvZ0J5Q3RsSWR4KC0xLCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5nZXRDb21wTWFpblByZ1RhYigpLmdldEN0bElkeCgwKSk7XHJcbiAgICAgICAgICB0aGlzLl9ydEV2dC5zZXRNYWluUHJnQ3JlYXRvcih0aGlzLl90YXNrKTtcclxuICAgICAgICAgIGlmICh0aGlzLl90YXNrID09PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUxfU1BFQ0lGSUM6XHJcbiAgICAgIGNhc2UgRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfR0xPQkFMOiB7XHJcbiAgICAgICAgdGhpcy5fdGFzayA9IG1HRGF0YS5nZXROZXh0TWFpblByb2coY3RsSWR4KTtcclxuICAgICAgICBpZiAodGhpcy5fdGFzayA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBFdmVudEhhbmRsZXJQb3NpdGlvbi5QSEFTRV9HTE9CQUwpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgICAvLyBzcGVjaWZpYyBzZWFyY2ggaXMgb3Zlci4gc3RhcnQgdGhlIG5vbiBzcGVjaWZpYyBzZWFyY2ggZnJvbSB0aGUgZmlyc3QgdGFzay5cclxuICAgICAgICAgIHRoaXMuX3BoYXNlID0gRXZlbnRIYW5kbGVyUG9zaXRpb24uUEhBU0VfQ09OVFJPTF9OT05fU1BFQ0lGSUM7XHJcbiAgICAgICAgICB0aGlzLl90YXNrID0gdGhpcy5fb3JnVGFzaztcclxuICAgICAgICAgIHRoaXMuX3ByZXZUYXNrID0gdGhpcy5fb3JnUHJldlRhc2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gRXZlbnRIYW5kbGVyUG9zaXRpb24uZ29VcFRhc2tDaGFpbigpIGludmFsaWQgcGhhc2U6IFwiICsgdGhpcy5fcGhhc2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3Rhc2sgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9oYW5kbGVyc1RhYiA9IHRoaXMuX3Rhc2suZ2V0SGFuZGxlcnNUYWIoKTtcclxuICAgIGlmICh0aGlzLl9oYW5kbGVyc1RhYiA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuZ29VcFRhc2tDaGFpbigpO1xyXG5cclxuICAgIHRoaXMuX2hhbmRsZXJJZHggPSAtMTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vICAgaWYgdGhlIGN1cnJlbnQgdGFzayBhbmQgaXRzIHBhcmVudCBhcmUgZnJvbSBkaWZmZXJlbnQgY29tcG9uZW50cyB0aGVuXHJcbiAgLy8vICAgc2V0IHRoZSB0YXNrIHRvIHRoZSBtYWluIHByb2dyYW0gb2YgdGhlIGNvbXBvbmVudCBvZiB0aGUgY3VycmVudCB0YXNrLlxyXG4gIC8vLyAgIG90aGVyd2lzZSwgc2V0IHRoZSB0YXNrIHRvIGJlIHRoZSBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgdGFza1xyXG4gIHByaXZhdGUgZ2V0UGFyZW50T3JDb21wTWFpblByZygpOiB2b2lkIHtcclxuICAgIGxldCBjdGxJZHg6IG51bWJlciA9IHRoaXMuX3Rhc2suZ2V0Q3RsSWR4KCk7XHJcbiAgICB0aGlzLl9wcmV2VGFzayA9IHRoaXMuX3Rhc2s7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIHRhc2sncyBjYWxsaW5nLXBhcmVudC4gV2UgbmVlZCB0aGUgdGFzayB3aG8gaW52b2tlZCB0aGUgY3VycmVudCB0YXNrXHJcbiAgICAvLyByYXRoZXIgdGhhbiB0aGUgdGFzaydzIHRyaWdnZXJpbmcgcGFyZW50LlxyXG4gICAgLy8gVGhlIFBhdGggUGFyZW50IGlzIHRoZSBwYXJlbnQgb2YgdGhhdCB0YXNrIGFzIGlmIHRoZSBzZXJ2ZXIgaGFkIGRvbmUgYnVpbGQgcGF0aC4gSXQgaXMgbW9yZSBsb2dpY2FsIHRvIHNlYXJjaCB1c2luZyB0aGUgdHJpZ2dlciB0YXNrIHRyZWVcclxuICAgIC8vIGJ1dCBzaW5jZSB0aGUgb25saW5lL3NlcnZlciBkb2VzIG5vdCB1c2UgdGhlIHRyaWdnZXIgdHJlZSwgd2UgZGVjaWRlZCBub3QgdG8gdXNlIGl0IGhlcmUgYXMgd2VsbC5cclxuICAgIC8vIElmIHRoZSBwYXRoIHBhcmVudCBpcyBmcm9tIGEgZGlmZmVyZW50IGNvbXAsIGl0IG1lYW5zIHRoYXQgYmV0d2VlbiBjdXJyIHRhc2sgYW5kIHBhcmVudCB0aGVyZSBzaG91bGQgYmUgYSBjb21wIG1haW4gcHJvZy5cclxuICAgIGxldCBwYXRoUGFyZW50VGFzazogVGFzayA9IHRoaXMuX3Rhc2suUGF0aFBhcmVudFRhc2s7XHJcbiAgICBpZiAocGF0aFBhcmVudFRhc2sgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fdGFzayA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGVjayBpZiB0aGUgcGFyZW50IHRhc2sgaXMgZnJvbSBhbm90aGVyIGNvbXBvbmVudFxyXG4gICAgaWYgKGN0bElkeCAhPT0gcGF0aFBhcmVudFRhc2suZ2V0Q3RsSWR4KCkpIHtcclxuICAgICAgLy8gcmVwbGFjZSB0aGUgcGFyZW50IHRhc2sgdG8gc2VhcmNoIHdpdGggdGhlIGNvbXAgbWFpbiBwcm9ncmFtLiBsYXRlciBvbiwgdGhlIG1haW4gcHJvZyB3aWxsIGJlIHJlcGxhY2VkIHdpdGhcclxuICAgICAgLy8gdGhlIHJlYWwgUGF0aFBhcmVudFRhc2suXHJcbiAgICAgIHRoaXMuX3J0RXZ0LnNldE1haW5QcmdDcmVhdG9yKHRoaXMuX3Rhc2spO1xyXG4gICAgICB0aGlzLl90YXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldE1haW5Qcm9nQnlDdGxJZHgoLTEsIGN0bElkeCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fcnRFdnQuc2V0TWFpblByZ0NyZWF0b3IobnVsbCk7XHJcbiAgICAgIHRoaXMuX3Rhc2sgPSBwYXRoUGFyZW50VGFzaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19