@magic-xpa/gui 4.800.0-dev480.94 → 4.801.0-dev000.0

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 (141) hide show
  1. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  2. package/{esm2015/magic-xpa-gui.js → esm2020/magic-xpa-gui.mjs} +0 -0
  3. package/esm2020/src/Commands.mjs +186 -0
  4. package/esm2020/src/Events.mjs +420 -0
  5. package/esm2020/src/EventsProcessor.mjs +67 -0
  6. package/esm2020/src/FocusManager.mjs +34 -0
  7. package/{esm2015/src/GuiConstants.js → esm2020/src/GuiConstants.mjs} +0 -0
  8. package/{esm2015/src/GuiEnums.js → esm2020/src/GuiEnums.mjs} +126 -127
  9. package/{esm2015/src/GuiEnvironment.js → esm2020/src/GuiEnvironment.mjs} +0 -0
  10. package/{esm2015/src/IFlowMonitorQueue.js → esm2020/src/IFlowMonitorQueue.mjs} +2 -1
  11. package/esm2020/src/Manager.mjs +192 -0
  12. package/{esm2015/src/UIBridge.js → esm2020/src/UIBridge.mjs} +0 -0
  13. package/{esm2015/src/env/IEnvironment.js → esm2020/src/env/IEnvironment.mjs} +2 -1
  14. package/{esm2015/src/gui/ControlBase.js → esm2020/src/gui/ControlBase.mjs} +0 -0
  15. package/{esm2015/src/gui/GuiMgControl.js → esm2020/src/gui/GuiMgControl.mjs} +0 -0
  16. package/{esm2015/src/gui/GuiMgForm.js → esm2020/src/gui/GuiMgForm.mjs} +0 -0
  17. package/{esm2015/src/gui/KeyboardItem.js → esm2020/src/gui/KeyboardItem.mjs} +0 -0
  18. package/{esm2015/src/gui/LastFocusedVal.js → esm2020/src/gui/LastFocusedVal.mjs} +0 -0
  19. package/{esm2015/src/gui/MgValue.js → esm2020/src/gui/MgValue.mjs} +0 -0
  20. package/{esm2015/src/gui/PropParentInterface.js → esm2020/src/gui/PropParentInterface.mjs} +1 -0
  21. package/{esm2015/src/gui/low/DialogHandler.js → esm2020/src/gui/low/DialogHandler.mjs} +0 -0
  22. package/{esm2015/src/gui/low/GuiCommand.js → esm2020/src/gui/low/GuiCommand.mjs} +0 -0
  23. package/{esm2015/src/gui/low/GuiCommandQueue.js → esm2020/src/gui/low/GuiCommandQueue.mjs} +0 -0
  24. package/esm2020/src/gui/low/GuiInteractive.mjs +545 -0
  25. package/esm2020/src/gui/low/Style.mjs +47 -0
  26. package/esm2020/src/management/RuntimeContextBase.mjs +52 -0
  27. package/{esm2015/src/management/data/BlobType.js → esm2020/src/management/data/BlobType.mjs} +0 -0
  28. package/esm2020/src/management/data/DcValues.mjs +214 -0
  29. package/esm2020/src/management/data/DcValuesBuilderBase.mjs +97 -0
  30. package/{esm2015/src/management/data/FieldDef.js → esm2020/src/management/data/FieldDef.mjs} +0 -0
  31. package/{esm2015/src/management/data/FieldsTable.js → esm2020/src/management/data/FieldsTable.mjs} +0 -0
  32. package/esm2020/src/management/data/GuiDataViewBase.mjs +90 -0
  33. package/esm2020/src/management/data/GuiFieldBase.mjs +82 -0
  34. package/{esm2015/src/management/data/IRecord.js → esm2020/src/management/data/IRecord.mjs} +1 -0
  35. package/{esm2015/src/management/data/IReferencedObject.js → esm2020/src/management/data/IReferencedObject.mjs} +1 -0
  36. package/{esm2015/src/management/data/NUM_TYPE.js → esm2020/src/management/data/NUM_TYPE.mjs} +0 -0
  37. package/esm2020/src/management/data/ObjectReferenceBase.mjs +48 -0
  38. package/{esm2015/src/management/data/ObjectReferencesCollection.js → esm2020/src/management/data/ObjectReferencesCollection.mjs} +0 -0
  39. package/esm2020/src/management/data/RecordUtils.mjs +361 -0
  40. package/{esm2015/src/management/data/VectorType.js → esm2020/src/management/data/VectorType.mjs} +0 -0
  41. package/{esm2015/src/management/data/VectorTypeBase.js → esm2020/src/management/data/VectorTypeBase.mjs} +0 -0
  42. package/{esm2015/src/management/events/IActionManager.js → esm2020/src/management/events/IActionManager.mjs} +1 -0
  43. package/esm2020/src/management/events/IGuiEventsManager.mjs +2 -0
  44. package/{esm2015/src/management/exp/ExpressionInterface.js → esm2020/src/management/exp/ExpressionInterface.mjs} +2 -1
  45. package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +333 -0
  46. package/{esm2015/src/management/gui/ControlTable.js → esm2020/src/management/gui/ControlTable.mjs} +0 -0
  47. package/esm2020/src/management/gui/DisplayConvertor.mjs +1706 -0
  48. package/esm2020/src/management/gui/FieldValidator.mjs +1507 -0
  49. package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +22 -0
  50. package/{esm2015/src/management/gui/GuiFormPropertyAdapter.js → esm2020/src/management/gui/GuiFormPropertyAdapter.mjs} +0 -0
  51. package/{esm2015/src/management/gui/HebrewDate.js → esm2020/src/management/gui/HebrewDate.mjs} +0 -0
  52. package/{esm2015/src/management/gui/Helps.js → esm2020/src/management/gui/Helps.mjs} +0 -0
  53. package/esm2020/src/management/gui/MgControlBase.mjs +1873 -0
  54. package/esm2020/src/management/gui/MgFormBase.mjs +748 -0
  55. package/esm2020/src/management/gui/PIC.mjs +1178 -0
  56. package/esm2020/src/management/gui/PropDefaults.mjs +230 -0
  57. package/{esm2015/src/management/gui/PropInterface.js → esm2020/src/management/gui/PropInterface.mjs} +2 -4
  58. package/esm2020/src/management/gui/PropTable.mjs +221 -0
  59. package/esm2020/src/management/gui/Property.mjs +1382 -0
  60. package/{esm2015/src/management/gui/ValidationDetails.js → esm2020/src/management/gui/ValidationDetails.mjs} +0 -0
  61. package/{esm2015/src/management/gui/ValidationDetailsBase.js → esm2020/src/management/gui/ValidationDetailsBase.mjs} +0 -0
  62. package/{esm2015/src/management/gui/WrongFormatException.js → esm2020/src/management/gui/WrongFormatException.mjs} +0 -0
  63. package/{esm2015/src/management/tasks/GuiDataCollection.js → esm2020/src/management/tasks/GuiDataCollection.mjs} +0 -0
  64. package/esm2020/src/management/tasks/GuiTaskBase.mjs +502 -0
  65. package/{esm2015/src/management/tasks/IMGDataTable.js → esm2020/src/management/tasks/IMGDataTable.mjs} +1 -0
  66. package/{esm2015/src/management/tasks/ITask.js → esm2020/src/management/tasks/ITask.mjs} +1 -0
  67. package/esm2020/src/management/tasks/MgTimer.mjs +21 -0
  68. package/esm2020/src/management/tasks/TaskDefinitionId.mjs +54 -0
  69. package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
  70. package/{esm2015/src/util/AuthenticationDialogHandler.js → esm2020/src/util/AuthenticationDialogHandler.mjs} +0 -0
  71. package/{esm2015/src/util/MemoryUtil.js → esm2020/src/util/MemoryUtil.mjs} +0 -0
  72. package/{esm2015/src/util/ObjectReference.js → esm2020/src/util/ObjectReference.mjs} +0 -0
  73. package/esm2020/src/util/ProcessLauncher.mjs +32 -0
  74. package/esm2020/src/util/UsernamePasswordCredentials.mjs +52 -0
  75. package/fesm2015/{magic-xpa-gui.js → magic-xpa-gui.mjs} +305 -365
  76. package/fesm2015/magic-xpa-gui.mjs.map +1 -0
  77. package/fesm2020/magic-xpa-gui.mjs +17805 -0
  78. package/fesm2020/magic-xpa-gui.mjs.map +1 -0
  79. package/package.json +27 -14
  80. package/src/Commands.d.ts +1 -0
  81. package/src/Events.d.ts +2 -2
  82. package/src/EventsProcessor.d.ts +1 -1
  83. package/src/GuiEnums.d.ts +125 -126
  84. package/src/IFlowMonitorQueue.d.ts +1 -1
  85. package/src/Manager.d.ts +2 -3
  86. package/src/env/IEnvironment.d.ts +1 -0
  87. package/src/gui/low/GuiInteractive.d.ts +3 -1
  88. package/src/gui/low/Style.d.ts +0 -3
  89. package/src/management/RuntimeContextBase.d.ts +2 -0
  90. package/src/management/data/DcValues.d.ts +1 -1
  91. package/src/management/data/DcValuesBuilderBase.d.ts +1 -1
  92. package/src/management/data/RecordUtils.d.ts +0 -3
  93. package/src/management/events/IGuiEventsManager.d.ts +5 -5
  94. package/src/management/exp/ExpressionInterface.d.ts +1 -0
  95. package/src/management/exp/GuiExpressionEvaluator.d.ts +2 -2
  96. package/src/management/gui/DisplayConvertor.d.ts +6 -6
  97. package/src/management/gui/GuiControlPropertyAdapter.d.ts +6 -6
  98. package/src/management/gui/MgControlBase.d.ts +4 -5
  99. package/src/management/gui/MgFormBase.d.ts +1 -1
  100. package/src/management/gui/PropInterface.d.ts +2 -4
  101. package/src/management/gui/PropTable.d.ts +1 -1
  102. package/src/management/gui/Property.d.ts +3 -3
  103. package/src/management/tasks/GuiTaskBase.d.ts +3 -8
  104. package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
  105. package/src/util/ProcessLauncher.d.ts +1 -3
  106. package/bundles/magic-xpa-gui.umd.js +0 -19459
  107. package/bundles/magic-xpa-gui.umd.js.map +0 -1
  108. package/bundles/magic-xpa-gui.umd.min.js +0 -16
  109. package/bundles/magic-xpa-gui.umd.min.js.map +0 -1
  110. package/esm2015/src/Commands.js +0 -185
  111. package/esm2015/src/Events.js +0 -420
  112. package/esm2015/src/EventsProcessor.js +0 -68
  113. package/esm2015/src/FocusManager.js +0 -41
  114. package/esm2015/src/Manager.js +0 -197
  115. package/esm2015/src/gui/low/GuiInteractive.js +0 -539
  116. package/esm2015/src/gui/low/Style.js +0 -50
  117. package/esm2015/src/management/RuntimeContextBase.js +0 -50
  118. package/esm2015/src/management/data/DcValues.js +0 -214
  119. package/esm2015/src/management/data/DcValuesBuilderBase.js +0 -97
  120. package/esm2015/src/management/data/GuiDataViewBase.js +0 -90
  121. package/esm2015/src/management/data/GuiFieldBase.js +0 -85
  122. package/esm2015/src/management/data/ObjectReferenceBase.js +0 -48
  123. package/esm2015/src/management/data/RecordUtils.js +0 -447
  124. package/esm2015/src/management/events/IGuiEventsManager.js +0 -1
  125. package/esm2015/src/management/exp/GuiExpressionEvaluator.js +0 -333
  126. package/esm2015/src/management/gui/DisplayConvertor.js +0 -1706
  127. package/esm2015/src/management/gui/FieldValidator.js +0 -1507
  128. package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +0 -4
  129. package/esm2015/src/management/gui/MgControlBase.js +0 -1979
  130. package/esm2015/src/management/gui/MgFormBase.js +0 -763
  131. package/esm2015/src/management/gui/PIC.js +0 -1176
  132. package/esm2015/src/management/gui/PropDefaults.js +0 -232
  133. package/esm2015/src/management/gui/PropTable.js +0 -224
  134. package/esm2015/src/management/gui/Property.js +0 -1409
  135. package/esm2015/src/management/tasks/GuiTaskBase.js +0 -533
  136. package/esm2015/src/management/tasks/MgTimer.js +0 -21
  137. package/esm2015/src/management/tasks/TaskDefinitionId.js +0 -47
  138. package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +0 -41
  139. package/esm2015/src/util/ProcessLauncher.js +0 -32
  140. package/esm2015/src/util/UsernamePasswordCredentials.js +0 -52
  141. package/fesm2015/magic-xpa-gui.js.map +0 -1
@@ -1,68 +0,0 @@
1
- import { Debug } from '@magic-xpa/mscorelib';
2
- import { InternalInterface, MgControlType } from '@magic-xpa/utils';
3
- import { Events } from './Events';
4
- import { Manager } from './Manager';
5
- import { RaisedBy } from './GuiEnums';
6
- import { MgFormBase } from './management/gui/MgFormBase';
7
- import { PropInterface } from './management/gui/PropInterface';
8
- export class EventsProcessor {
9
- constructor() {
10
- this.RegisterHandlers();
11
- this.RegisterSubclassHandlers();
12
- }
13
- RegisterHandlers() {
14
- Events.KeyDownEvent = this.processKeyDown.bind(this);
15
- Events.MouseDownEvent = this.processMouseDown;
16
- Events.DblClickEvent = this.processDblClick;
17
- Events.CloseFormEvent = this.processFormClose;
18
- Events.ColumnClickEvent = this.ProcessColumnClick;
19
- }
20
- processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, ComboIsDropDown, handled) {
21
- let eventHandled = handled;
22
- let mgControlBase = guiMgCtrl;
23
- let mgFormBase = guiMgForm;
24
- Manager.EventsManager.AddKeyboardEvent(mgFormBase, mgControlBase, modifier, keyCode, start, end, text, isActChar, suggestedValue, InternalInterface.MG_ACT_CTRL_KEYDOWN);
25
- return eventHandled;
26
- }
27
- processFormClose(guiMgForm) {
28
- let clrHandledEvent = false;
29
- let mgFormBase = guiMgForm;
30
- if (MgFormBase.ShouldPutActOnFormClose())
31
- Manager.EventsManager.addGuiTriggeredEventTaskAndCodeAndRaisedBy(mgFormBase.getTask(), InternalInterface.MG_ACT_HIT, RaisedBy.CLOSE_SYSTEM_MENU);
32
- Manager.EventsManager.addGuiTriggeredEventWithTaskAndCode(mgFormBase.getTask(), InternalInterface.MG_ACT_CLOSE);
33
- return clrHandledEvent;
34
- }
35
- processMouseDown(guiMgForm, guiMgCtrl, dotNetArgs, leftClickWasPressed, line, onMultiMark, canProduceClick) {
36
- let mgControl = guiMgCtrl;
37
- if (mgControl === null) {
38
- Debug.Assert(guiMgForm !== null);
39
- Manager.EventsManager.addGuiTriggeredEventWithTaskAndCodeAndOnMultiMark(guiMgForm.getTask(), InternalInterface.MG_ACT_HIT, onMultiMark);
40
- }
41
- else {
42
- if (mgControl.isSubform()) {
43
- mgControl.OnSubformClick();
44
- }
45
- else {
46
- if (mgControl.RaiseControlHitOnMouseDown(leftClickWasPressed)) {
47
- Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_CTRL_HIT, line);
48
- }
49
- if (leftClickWasPressed && canProduceClick) {
50
- if (mgControl.Type !== MgControlType.CTRL_TYPE_BUTTON && mgControl.Type !== MgControlType.CTRL_TYPE_CHECKBOX) {
51
- Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_WEB_CLICK, line);
52
- }
53
- }
54
- }
55
- }
56
- }
57
- processDblClick(guiMgCtrl, line) {
58
- let mgControl = guiMgCtrl;
59
- if (!mgControl.GetComputedBooleanProperty(PropInterface.PROP_TYPE_ENABLED, true, line))
60
- return;
61
- Manager.EventsManager.addGuiTriggeredEventWithCtrlAndCodeAndLine(mgControl, InternalInterface.MG_ACT_WEB_ON_DBLICK, line);
62
- }
63
- ProcessColumnClick(guiColumnCtrl, direction, columnHeader) {
64
- let mgColumnControl = guiColumnCtrl;
65
- Manager.EventsManager.AddColumnClickEvent(mgColumnControl, direction, columnHeader);
66
- }
67
- }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFhLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTS9ELE1BQU0sT0FBaUIsZUFBZTtJQUNwQztRQUNFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFHTyxnQkFBZ0I7UUFDdEIsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5QyxNQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFOUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxDQUFDO0lBcUJELGNBQWMsQ0FBQyxTQUFvQixFQUFFLFNBQXVCLEVBQUUsUUFBbUIsRUFBRSxPQUFlLEVBQUUsS0FBYSxFQUFFLEdBQVcsRUFBRSxJQUFZLEVBQUUsU0FBa0IsRUFBRSxjQUFzQixFQUFFLGVBQXdCLEVBQUUsT0FBZ0I7UUFDbE8sSUFBSSxZQUFZLEdBQVksT0FBTyxDQUFDO1FBRXBDLElBQUksYUFBYSxHQUFpQyxTQUFTLENBQUM7UUFDNUQsSUFBSSxVQUFVLEdBQTJCLFNBQVMsQ0FBQztRQUVuRCxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFekssT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQVFELGdCQUFnQixDQUFDLFNBQW9CO1FBQ25DLElBQUksZUFBZSxHQUFZLEtBQUssQ0FBQztRQUNyQyxJQUFJLFVBQVUsR0FBMkIsU0FBUyxDQUFDO1FBRW5ELElBQUksVUFBVSxDQUFDLHVCQUF1QixFQUFFO1lBQ3RDLE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuSixPQUFPLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBVU8sZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxTQUF1QixFQUFFLFVBQWlCLEVBQUUsbUJBQTRCLEVBQUUsSUFBWSxFQUFFLFdBQW9CLEVBQUUsZUFBd0I7UUFDbkwsSUFBSSxTQUFTLEdBQWlDLFNBQVMsQ0FBQztRQUV4RCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFFakMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpREFBaUQsQ0FBYyxTQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ3ZKO2FBQ0k7WUFDSCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDekIsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQzVCO2lCQUNJO2dCQUNILElBQUksU0FBUyxDQUFDLDBCQUEwQixDQUFDLG1CQUFtQixDQUFDLEVBQUU7b0JBQzdELE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDdEg7Z0JBQ0QsSUFBSSxtQkFBbUIsSUFBSSxlQUFlLEVBQUU7b0JBTTFDLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsZ0JBQWdCLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsa0JBQWtCLEVBQUU7d0JBQzVHLE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUN2SDtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBS08sZUFBZSxDQUFDLFNBQXVCLEVBQUUsSUFBWTtRQUMzRCxJQUFJLFNBQVMsR0FBaUMsU0FBUyxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7WUFDcEYsT0FBTztRQVFULE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFNTyxrQkFBa0IsQ0FBQyxhQUEyQixFQUFFLFNBQWlCLEVBQUUsWUFBb0I7UUFDN0YsSUFBSSxlQUFlLEdBQWlDLGFBQWEsQ0FBQztRQUNsRSxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEYsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWcgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IEludGVybmFsSW50ZXJmYWNlLCBNZ0NvbnRyb2xUeXBlIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IEd1aU1nRm9ybSB9IGZyb20gJy4vZ3VpL0d1aU1nRm9ybSc7XHJcbmltcG9ydCB7IEV2ZW50cyB9IGZyb20gJy4vRXZlbnRzJztcclxuaW1wb3J0IHsgR3VpTWdDb250cm9sIH0gZnJvbSAnLi9ndWkvR3VpTWdDb250cm9sJztcclxuaW1wb3J0IHsgTWdDb250cm9sQmFzZSB9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZSc7XHJcbmltcG9ydCB7IE1hbmFnZXIgfSBmcm9tICcuL01hbmFnZXInO1xyXG5pbXBvcnQgeyBNb2RpZmllcnMsIFJhaXNlZEJ5IH0gZnJvbSAnLi9HdWlFbnVtcyc7XHJcbmltcG9ydCB7IE1nRm9ybUJhc2UgfSBmcm9tICcuL21hbmFnZW1lbnQvZ3VpL01nRm9ybUJhc2UnO1xyXG5pbXBvcnQgeyBQcm9wSW50ZXJmYWNlIH0gZnJvbSAnLi9tYW5hZ2VtZW50L2d1aS9Qcm9wSW50ZXJmYWNlJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICgxKSByZWdpc3RlcnMgYW5kIGltcGxlbWVudHMgaGFuZGxlcnMgZm9yIGV2ZW50cyB0aGF0IGNhbiBiZSBzZXJ2ZWQgbG9jYWxseSBieSBNZ0d1aS5kbGwuXHJcbi8vLyAoMikgcmVxdWVzdHMgc3ViY2xhc3NlcyB0byByZWdpc3RlciB0aGVpciBoYW5kbGVycyAoJ1RlbXBsYXRlIE1ldGhvZCcgZGVzaWduIHBhdHRlcm4pLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgIGFic3RyYWN0IGNsYXNzIEV2ZW50c1Byb2Nlc3NvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLlJlZ2lzdGVySGFuZGxlcnMoKTtcclxuICAgIHRoaXMuUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVnaXN0ZXIgYW5kIGltcGxlbWVudCBoYW5kbGVycyBmb3IgZXZlbnRzIHRoYXQgY2FuIGJlIHNlcnZlZCBsb2NhbGx5IGJ5IE1nR3VpLmRsbC48L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBSZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgRXZlbnRzLktleURvd25FdmVudCA9IHRoaXMucHJvY2Vzc0tleURvd24uYmluZCh0aGlzKTtcclxuXHJcbiAgICBFdmVudHMuTW91c2VEb3duRXZlbnQgPSB0aGlzLnByb2Nlc3NNb3VzZURvd247XHJcbiAgICBFdmVudHMuRGJsQ2xpY2tFdmVudCA9IHRoaXMucHJvY2Vzc0RibENsaWNrO1xyXG4gICAgRXZlbnRzLkNsb3NlRm9ybUV2ZW50ID0gdGhpcy5wcm9jZXNzRm9ybUNsb3NlO1xyXG5cclxuICAgIEV2ZW50cy5Db2x1bW5DbGlja0V2ZW50ID0gdGhpcy5Qcm9jZXNzQ29sdW1uQ2xpY2s7XHJcbiAgfVxyXG5cclxuICAvLyByZXF1ZXN0IHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgaGFuZGxlcnMgdGhhdCB0aGV5IHdpbGwgaW1wbGVtZW50ICgnVGVtcGxhdGUgTWV0aG9kJyBkZXNpZ24gcGF0dGVybikuXHJcbiAgYWJzdHJhY3QgUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5QYXNzIGtleWNvZGUgYW5kIG1vZGlmaWVyIHRvIGJyaWRnZSwgYnJpZGdlIHRoZW4gY29udmVydHMgaXQgdG8ga2V5Ym9hcmQgYWN0aW9uIGFuZCBhZGRzIGluIE1nQ29yZS5kbGxcclxuICAvLy8gZXZlbnRzIHF1ZXVlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNhcmV0UG9zXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNBY3RDaGFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWdnZXN0ZWRWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiQ29tYm9Jc0Ryb3BEb3duXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoYW5kbGVkXCI+Ym9vbGVhbiB2YXJpYWJsZSBldmVudCBpcyBoYW5kbGVkIG9yIG5vdC48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBvbmx5IGlmIHdlIGhhdmUgaGFuZGxlZCB0aGUgS2V5RG93biBldmVudCAob3RoZXJ3aXNlIHRoZSBDTFIgc2hvdWxkIGhhbmRsZSkuIElmIHRydWUgbWFnaWMgd2lsbCBoYW5kbGUgZWxzZSBDTFIgd2lsbCBoYW5kbGUuPC9yZXR1cm5zPlxyXG4gIHByb2Nlc3NLZXlEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIENvbWJvSXNEcm9wRG93bjogYm9vbGVhbiwgaGFuZGxlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGV2ZW50SGFuZGxlZDogYm9vbGVhbiA9IGhhbmRsZWQ7XHJcblxyXG4gICAgbGV0IG1nQ29udHJvbEJhc2U6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT5ndWlNZ0N0cmw7XHJcbiAgICBsZXQgbWdGb3JtQmFzZTogTWdGb3JtQmFzZSA9IDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybTtcclxuXHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuQWRkS2V5Ym9hcmRFdmVudChtZ0Zvcm1CYXNlLCBtZ0NvbnRyb2xCYXNlLCBtb2RpZmllciwga2V5Q29kZSwgc3RhcnQsIGVuZCwgdGV4dCwgaXNBY3RDaGFyLCBzdWdnZXN0ZWRWYWx1ZSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfS0VZRE9XTik7XHJcblxyXG4gICAgcmV0dXJuIGV2ZW50SGFuZGxlZDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEZ1bmN0aW9uIGhhbmRsaW5nIGZvcm0gY2xvc2UgZXZlbnQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz50cnVlIGlmIGV2ZW50IGlzIENMUiBoYW5kbGVkIGVsc2UgZmFsc2UuPC9yZXR1cm5zPlxyXG4gIHByb2Nlc3NGb3JtQ2xvc2UoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0pOiBib29sZWFuIHtcclxuICAgIGxldCBjbHJIYW5kbGVkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBtZ0Zvcm1CYXNlOiBNZ0Zvcm1CYXNlID0gPE1nRm9ybUJhc2U+Z3VpTWdGb3JtO1xyXG5cclxuICAgIGlmIChNZ0Zvcm1CYXNlLlNob3VsZFB1dEFjdE9uRm9ybUNsb3NlKCkpXHJcbiAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFRhc2tBbmRDb2RlQW5kUmFpc2VkQnkobWdGb3JtQmFzZS5nZXRUYXNrKCksIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ISVQsIFJhaXNlZEJ5LkNMT1NFX1NZU1RFTV9NRU5VKTtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZShtZ0Zvcm1CYXNlLmdldFRhc2soKSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMT1NFKTtcclxuXHJcbiAgICByZXR1cm4gY2xySGFuZGxlZEV2ZW50O1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkb3ROZXRBcmdzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxlZnRDbGlja1dhc1ByZXNzZWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzTW91c2VEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZG90TmV0QXJnczogYW55W10sIGxlZnRDbGlja1dhc1ByZXNzZWQ6IGJvb2xlYW4sIGxpbmU6IG51bWJlciwgb25NdWx0aU1hcms6IGJvb2xlYW4sIGNhblByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuXHJcbiAgICBpZiAobWdDb250cm9sID09PSBudWxsKSB7XHJcbiAgICAgIERlYnVnLkFzc2VydChndWlNZ0Zvcm0gIT09IG51bGwpO1xyXG4gICAgICAvLyBBcyBpbiBvbmxpbmUuIGNsaWNraW5nIG9uIGEgZm9ybSByZXN1bHRzIGluIEFDVF9ISVRcclxuICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aFRhc2tBbmRDb2RlQW5kT25NdWx0aU1hcmsoKDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybSkuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElULCBvbk11bHRpTWFyayk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKG1nQ29udHJvbC5pc1N1YmZvcm0oKSkge1xyXG4gICAgICAgIG1nQ29udHJvbC5PblN1YmZvcm1DbGljaygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChtZ0NvbnRyb2wuUmFpc2VDb250cm9sSGl0T25Nb3VzZURvd24obGVmdENsaWNrV2FzUHJlc3NlZCkpIHtcclxuICAgICAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9ISVQsIGxpbmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGVmdENsaWNrV2FzUHJlc3NlZCAmJiBjYW5Qcm9kdWNlQ2xpY2spIHtcclxuICAgICAgICAgIC8vIGZpeGVkIGJ1ZyM5Mjc5NDJcclxuICAgICAgICAgIC8vIHdlIG5ldmVyIGdldCB0byB0aGlzIG1ldGhvZCB3aXRoIHRoZSBjb250cm9sIHR5cGUgYnV0dG9uICYgY2hlY2tib3guXHJcbiAgICAgICAgICAvLyBmb3IgYnV0dG9uICYgY2hlY2tib3gsIHdlIHNlbnQgdGhlIHRyaWdnZXIgTUdfQUNUX1dFQl9DTElDSyBpbiBFdmVudHNNYW5hZ2VyLmhhbmRsZU1vdXNlVXAoKSB0aGF0IGNhbGxcclxuICAgICAgICAgIC8vIGZyb20gc2ltdWxhdGVTZWxlY3Rpb24oKVxyXG4gICAgICAgICAgLy8gdGhlIFwiaWZcIiBpcyBvbmx5IGZvciBtYWtlIHN1cmUgdGhhdCBpZiB3ZSB3aWxsIGdldCBpdCAoaW4gdGhlIGZldHVyZSkgd2Ugd2lsbCBub3QgYmUgc2VudCB0aGUgc2FtZSB0cmlnZ2VyIHR3aWNlXHJcbiAgICAgICAgICBpZiAobWdDb250cm9sLlR5cGUgIT09IE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0JVVFRPTiAmJiBtZ0NvbnRyb2wuVHlwZSAhPT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQ0hFQ0tCT1gpIHtcclxuICAgICAgICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJfQ0xJQ0ssIGxpbmUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnByb2Nlc3MgXCJkYmxjbGlja1wiIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdDdHJsXCI+dGhlIGNvbnRyb2wgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj4gdGhlIGxpbmUgb2YgdGhlIG11bHRpbGluZSBjb250cm9sIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzRGJsQ2xpY2soZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuICAgIGlmICghbWdDb250cm9sLkdldENvbXB1dGVkQm9vbGVhblByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0VOQUJMRUQsIHRydWUsIGxpbmUpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgLy8gcmFpc2luZyB0aGUgaW50ZXJuYWwgZXZlbnRzIDogTUdfQUNUX1NFTEVDVCBhbmQgTUdfQUNUX1pPT00gd2FzIG1vdmVkIHRvIGNvbW1vbkhhbmRsZXIgdW5kZXIgdGhlXHJcbiAgICAvLyBNR19BQ1RfV0VCX09OX0RCTElDSyBjYXNlLlxyXG4gICAgLy8gVGhpcyBpcyBkaWZmZXJlbnQgdGhlbiB0aGUgYmVoYXZpb3Igb2Ygb25saW5lIGJlY2F1c2Ugd2UgZml4ZWQgUUNSICM5OTA4MzYgb25seSBpbiByaWNoLlxyXG4gICAgLy8gSW4gcmljaCwgMXN0IGRiY2xpY2sgaXMgcmFpc2VkLiBUaGVuIGlmIHRoZXJlIGlzIGEgaGFuZGxlciBvbiBpdCB3aXRoIHByb3BvZ2F0ZSA9J1lFUycsIG9ubHkgdGhlbiB0aGUgem9vbS9zZWxlY3RcclxuICAgIC8vIHdpbGwgYmUgcmFpc2VkLiBBIFByb3BhZ2F0ZSAnTk8nIHdpbGwgYmxvY2sgdGhlbS5cclxuXHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoQ3RybEFuZENvZGVBbmRMaW5lKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9PTl9EQkxJQ0ssIGxpbmUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBoYW5kbGUgQ29sdW1uIENsaWNrIGV2ZW50IG9uIENvbHVtbiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpQ29sdW1uQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGlyZWN0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb2x1bW5IZWFkZXJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgUHJvY2Vzc0NvbHVtbkNsaWNrKGd1aUNvbHVtbkN0cmw6IEd1aU1nQ29udHJvbCwgZGlyZWN0aW9uOiBudW1iZXIsIGNvbHVtbkhlYWRlcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgbWdDb2x1bW5Db250cm9sOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpQ29sdW1uQ3RybDtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5BZGRDb2x1bW5DbGlja0V2ZW50KG1nQ29sdW1uQ29udHJvbCwgZGlyZWN0aW9uLCBjb2x1bW5IZWFkZXIpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Commands } from "./Commands";
3
- import { Events } from "./Events";
4
- import { CommandType } from "./GuiEnums";
5
- import { GuiControlPropertyAdapter } from "./management/gui/GuiControlPropertyAdapter";
6
- export class FocusManager {
7
- static SetFocus(ctrlOrItask, lineOrCtrl, line, activateForm) {
8
- return __awaiter(this, void 0, void 0, function* () {
9
- if (ctrlOrItask instanceof GuiControlPropertyAdapter) {
10
- yield FocusManager.SetFocus_0(ctrlOrItask, lineOrCtrl);
11
- return;
12
- }
13
- yield FocusManager.SetFocus_1(ctrlOrItask, lineOrCtrl, line, activateForm);
14
- });
15
- }
16
- static SetFocus_0(ctrl, line) {
17
- return __awaiter(this, void 0, void 0, function* () {
18
- yield FocusManager.SetFocus(ctrl.getForm().getTask(), ctrl, line, true);
19
- });
20
- }
21
- static SetFocus_1(itask, ctrl, line, activateForm) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- let task = itask;
24
- if (task.isAborting())
25
- return;
26
- Events.OnCtrlFocus(itask, ctrl);
27
- if (ctrl !== null) {
28
- if (!(yield ctrl.isParkable(true)))
29
- return;
30
- Commands.addBoolWithLine(CommandType.SET_FOCUS, ctrl, (line >= 0) ? line : ctrl.getDisplayLine(false), activateForm);
31
- }
32
- else {
33
- let formObject = task.IsSubForm
34
- ? task.getForm().getSubFormCtrl()
35
- : task.getForm();
36
- Commands.addBoolWithLine(CommandType.SET_FOCUS, formObject, 0, activateForm);
37
- }
38
- });
39
- }
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9jdXNNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9Gb2N1c01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXZGLE1BQU0sT0FBTyxZQUFZO0lBS3ZCLE1BQU0sQ0FBTyxRQUFRLENBQUMsV0FBZ0IsRUFBRSxVQUFlLEVBQUUsSUFBYSxFQUFFLFlBQXNCOztZQUM1RixJQUFJLFdBQVcsWUFBWSx5QkFBeUIsRUFBRTtnQkFDcEQsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDdkQsT0FBTzthQUNSO1lBQ0QsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzdFLENBQUM7S0FBQTtJQU9PLE1BQU0sQ0FBTyxVQUFVLENBQUMsSUFBK0IsRUFBRSxJQUFZOztZQUMzRSxNQUFNLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUUsQ0FBQztLQUFBO0lBU08sTUFBTSxDQUFPLFVBQVUsQ0FBQyxLQUFZLEVBQUUsSUFBK0IsRUFBRSxJQUFZLEVBQUUsWUFBcUI7O1lBQ2hILElBQUksSUFBSSxHQUE2QixLQUFLLENBQUM7WUFDM0MsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNuQixPQUFPO1lBRVQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFaEMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNqQixJQUFJLENBQUMsQ0FBQSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQzlCLE9BQU87Z0JBQ1QsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQ3RIO2lCQUNJO2dCQUNILElBQUksVUFBVSxHQUFRLElBQUksQ0FBQyxTQUFTO29CQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRTtvQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFFbkIsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDOUU7UUFDSCxDQUFDO0tBQUE7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmRzIH0gZnJvbSBcIi4vQ29tbWFuZHNcIjtcclxuaW1wb3J0IHsgR3VpVGFza0Jhc2UgfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL0d1aVRhc2tCYXNlXCI7XHJcbmltcG9ydCB7IElUYXNrIH0gZnJvbSBcIi4vbWFuYWdlbWVudC90YXNrcy9JVGFza1wiO1xyXG5pbXBvcnQgeyBFdmVudHMgfSBmcm9tIFwiLi9FdmVudHNcIjtcclxuaW1wb3J0IHsgQ29tbWFuZFR5cGUgfSBmcm9tIFwiLi9HdWlFbnVtc1wiO1xyXG5pbXBvcnQgeyBHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyIH0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZvY3VzTWFuYWdlclxyXG57XHJcblxyXG4gIHN0YXRpYyBhc3luYyBTZXRGb2N1cyhjdHJsOiBHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyLCBsaW5lOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xyXG4gIHN0YXRpYyBhc3luYyBTZXRGb2N1cyhpdGFzazogSVRhc2ssIGN0cmw6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIsIGxpbmU6IG51bWJlciwgYWN0aXZhdGVGb3JtOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPjtcclxuICBzdGF0aWMgYXN5bmMgU2V0Rm9jdXMoY3RybE9ySXRhc2s6IGFueSwgbGluZU9yQ3RybDogYW55LCBsaW5lPzogbnVtYmVyLCBhY3RpdmF0ZUZvcm0/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoY3RybE9ySXRhc2sgaW5zdGFuY2VvZiBHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyKSB7XHJcbiAgICAgIGF3YWl0IEZvY3VzTWFuYWdlci5TZXRGb2N1c18wKGN0cmxPckl0YXNrLCBsaW5lT3JDdHJsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgRm9jdXNNYW5hZ2VyLlNldEZvY3VzXzEoY3RybE9ySXRhc2ssIGxpbmVPckN0cmwsIGxpbmUsIGFjdGl2YXRlRm9ybSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBmb2N1cyB0byB0aGUgc3BlY2lmaWVkIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBTZXRGb2N1c18wKGN0cmw6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIsIGxpbmU6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgRm9jdXNNYW5hZ2VyLlNldEZvY3VzKGN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKSwgY3RybCwgbGluZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBmb2N1cyB0byB0aGUgc3BlY2lmaWVkIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXRhc2tcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhY3RpdmF0ZUZvcm1cIj5hY3RpdmF0ZSBhIGZvcm0gb3Igbm90PC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBTZXRGb2N1c18xKGl0YXNrOiBJVGFzaywgY3RybDogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciwgbGluZTogbnVtYmVyLCBhY3RpdmF0ZUZvcm06IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB0YXNrOiBHdWlUYXNrQmFzZSA9IDxHdWlUYXNrQmFzZT5pdGFzaztcclxuICAgIGlmICh0YXNrLmlzQWJvcnRpbmcoKSlcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIEV2ZW50cy5PbkN0cmxGb2N1cyhpdGFzaywgY3RybCk7XHJcblxyXG4gICAgaWYgKGN0cmwgIT09IG51bGwpIHtcclxuICAgICAgaWYgKCFhd2FpdCBjdHJsLmlzUGFya2FibGUodHJ1ZSkpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBDb21tYW5kcy5hZGRCb29sV2l0aExpbmUoQ29tbWFuZFR5cGUuU0VUX0ZPQ1VTLCBjdHJsLCAobGluZSA+PSAwKSA/IGxpbmUgOiBjdHJsLmdldERpc3BsYXlMaW5lKGZhbHNlKSwgYWN0aXZhdGVGb3JtKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZm9ybU9iamVjdDogYW55ID0gdGFzay5Jc1N1YkZvcm1cclxuICAgICAgICA/IHRhc2suZ2V0Rm9ybSgpLmdldFN1YkZvcm1DdHJsKClcclxuICAgICAgICA6IHRhc2suZ2V0Rm9ybSgpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkQm9vbFdpdGhMaW5lKENvbW1hbmRUeXBlLlNFVF9GT0NVUywgZm9ybU9iamVjdCwgMCwgYWN0aXZhdGVGb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,197 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { NString, StackFrame } from "@magic-xpa/mscorelib";
3
- import { UtilImeJpn, UtilStrByteMode } from "@magic-xpa/utils";
4
- import { GuiMgControl } from "./gui/GuiMgControl";
5
- import { Commands } from "./Commands";
6
- import { CommandType, HtmlProperties } from "./GuiEnums";
7
- import { Events } from "./Events";
8
- import { GuiMgForm } from "./gui/GuiMgForm";
9
- import { PropInterface } from "./management/gui/PropInterface";
10
- import { GuiEnvironment } from "./GuiEnvironment";
11
- export class Manager {
12
- static SetCurrentContextID(contextID) {
13
- Manager._currentContextID = contextID;
14
- }
15
- static GetCurrentContextID() {
16
- return Manager._currentContextID;
17
- }
18
- static GetDelayWait() {
19
- return Manager._delayWait;
20
- }
21
- static CanFocus(guiMgControl) {
22
- return false;
23
- }
24
- static Init(startupImageFileName) {
25
- return;
26
- }
27
- static Abort(form, mainPrgTask) {
28
- if (form.getSubFormCtrl() === null && form.Opened) {
29
- if (form.isDialog()) {
30
- this.IsOverlayOpen = false;
31
- let topMostFrameForm = form.getTopMostFrameForm();
32
- if (topMostFrameForm !== null)
33
- topMostFrameForm.UpdateModalFormsCount(form, false);
34
- }
35
- Commands.addCloseForm(form, "0", form.getTask().getTaskTag());
36
- Commands.beginInvoke();
37
- }
38
- }
39
- static GetCtrlVal(ctrl) {
40
- return Commands.getValue(ctrl, ctrl.getDisplayLine(true));
41
- }
42
- static SetReadOnlyControl(ctrl, isReadOnly) {
43
- return __awaiter(this, void 0, void 0, function* () {
44
- if (ctrl.isTextControl() || ctrl.IsRepeatable) {
45
- if (UtilStrByteMode.isLocaleDefLangDBCS()) {
46
- if (yield ctrl.getForm().getTask().checkProp(PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY, false))
47
- return;
48
- }
49
- Commands.addOperationWithLine(CommandType.SET_PROPERTY, ctrl, ctrl.getDisplayLine(false), HtmlProperties.ReadOnly, isReadOnly);
50
- Commands.beginInvoke();
51
- }
52
- });
53
- }
54
- static OpenForm(mgForm) {
55
- if (!mgForm.Opened && (mgForm.getTask().IsInteractive || mgForm.getTask().isOpenWin())) {
56
- if (!mgForm.isSubForm()) {
57
- if (mgForm.isDialog()) {
58
- this.IsOverlayOpen = true;
59
- let topMostFrameForm = mgForm.getTopMostFrameForm();
60
- if (topMostFrameForm !== null)
61
- topMostFrameForm.UpdateModalFormsCount(mgForm, true);
62
- }
63
- }
64
- mgForm.Opened = true;
65
- Commands.beginInvoke();
66
- }
67
- }
68
- static DoFirstRefreshTable(mgForm) {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- if (mgForm !== null && !mgForm.ignoreFirstRefreshTable) {
71
- mgForm.ignoreFirstRefreshTable = true;
72
- yield mgForm.firstTableRefresh();
73
- }
74
- });
75
- }
76
- static CaretPosGet(ctrl) {
77
- let caretPos = 0;
78
- if (ctrl.isTextControl())
79
- caretPos = Commands.caretPosGet(ctrl, ctrl.getDisplayLine(true));
80
- return caretPos;
81
- }
82
- static ClearStatusBar(task) {
83
- let currentParkedControl = task.getLastParkedCtrl();
84
- if (currentParkedControl !== null && !NString.IsNullOrEmpty(currentParkedControl.PromptHelp))
85
- task.WriteToMessagePane(currentParkedControl.PromptHelp, false);
86
- else
87
- Manager.CleanMessagePane(task);
88
- }
89
- static CleanMessagePane(task) {
90
- task.WriteToMessagePane(Manager.GetCurrentRuntimeContext().DefaultStatusMsg, false);
91
- }
92
- static GetMessage(msg) {
93
- if (msg === null)
94
- msg = "";
95
- else if (msg.length > 0) {
96
- let idxOfCarriage = msg.indexOf("\r");
97
- if (idxOfCarriage !== -1)
98
- msg = msg.substr(0, idxOfCarriage);
99
- let idxOfNewLine = msg.indexOf("\n");
100
- if (idxOfNewLine !== -1)
101
- msg = msg.substr(0, idxOfNewLine);
102
- }
103
- return msg;
104
- }
105
- static SetEditText(ctrl, text) {
106
- Commands.setEditText(ctrl, ctrl.getDisplayLine(true), text);
107
- }
108
- static InsertEditText(ctrl, startPosition, textToInsert) {
109
- Commands.insertEditText(ctrl, ctrl.getDisplayLine(true), startPosition, textToInsert);
110
- }
111
- static GetTooltipTimeout() {
112
- return GuiEnvironment.Environment.GetTooltipTimeout();
113
- }
114
- static GetSpecialEditLeftAlign() {
115
- return GuiEnvironment.Environment.GetSpecialEditLeftAlign();
116
- }
117
- static GetDefaultDateFormat() {
118
- let dateFormat = "";
119
- let dateSeperator = GuiEnvironment.Environment.GetDate();
120
- switch (GuiEnvironment.Environment.GetDateMode(0)) {
121
- case 'S':
122
- dateFormat = "YYYY" + dateSeperator + "MM" + dateSeperator + "DD";
123
- break;
124
- case 'B':
125
- case 'E':
126
- dateFormat = "DD" + dateSeperator + "MM" + dateSeperator + "YYYY";
127
- break;
128
- case 'A':
129
- dateFormat = "MM" + dateSeperator + "DD" + dateSeperator + "YYYY";
130
- break;
131
- }
132
- return dateFormat;
133
- }
134
- static GetDefaultTimeFormat() {
135
- let timeSeperator = GuiEnvironment.Environment.GetTime();
136
- let timeFormat = "HH" + timeSeperator + "MM" + timeSeperator + "SS";
137
- return timeFormat;
138
- }
139
- static GetCurrentRuntimeContext() {
140
- return Events.GetRuntimeContext(Manager.GetCurrentContextID());
141
- }
142
- static GetContextID(mgObject) {
143
- let guiMgForm = null;
144
- if (mgObject instanceof GuiMgControl)
145
- guiMgForm = mgObject.GuiMgForm;
146
- else if (mgObject instanceof GuiMgForm)
147
- guiMgForm = mgObject;
148
- return Events.GetContextID(guiMgForm);
149
- }
150
- static ShowWindowHelp(filePath, helpCmd, helpKey) {
151
- }
152
- static GetSpecialValNewPolicy() {
153
- return GuiEnvironment.Environment.GetSpecialValNewPolicy();
154
- }
155
- }
156
- Manager.IsOverlayOpen = false;
157
- Manager._delayWait = new Object();
158
- Manager._clipboardData = "";
159
- Manager._currentContextID = '\0';
160
- Manager.DefaultProtocol = null;
161
- Manager.DefaultServerName = null;
162
- Manager.UtilImeJpn = (UtilStrByteMode.isLocaleDefLangJPN() ? new UtilImeJpn() : null);
163
- Manager.EventsManager = null;
164
- export class ContextIDGuard {
165
- constructor(contextID) {
166
- this._prevContextID = '\0';
167
- this._fileName = null;
168
- if (arguments.length === 0) {
169
- this.constructor_0();
170
- return;
171
- }
172
- this.constructor_1(contextID);
173
- }
174
- constructor_0() {
175
- this._prevContextID = Manager.GetCurrentContextID();
176
- this.SaveFilename();
177
- }
178
- constructor_1(contextID) {
179
- this.SetCurrent(contextID);
180
- this.SaveFilename();
181
- }
182
- SetCurrent(contextID) {
183
- if (contextID !== this._prevContextID) {
184
- this._prevContextID = contextID;
185
- Manager.SetCurrentContextID(contextID);
186
- }
187
- }
188
- SaveFilename() {
189
- let stackFrame = new StackFrame(1, true);
190
- this._fileName = stackFrame.GetFileName();
191
- }
192
- Dispose() {
193
- if (this._prevContextID !== Manager.GetCurrentContextID())
194
- Manager.SetCurrentContextID(this._prevContextID);
195
- }
196
- }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQWMsVUFBVSxFQUFFLGVBQWUsRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBRXRGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUdoRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLE9BQU87SUFtQmxCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFpQjtRQUMxQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFNRCxNQUFNLENBQUMsbUJBQW1CO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQ25DLENBQUM7SUFNRCxNQUFNLENBQUMsWUFBWTtRQUNqQixPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQU9ELE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBMEI7UUFDeEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBNEI7UUFDdEMsT0FBTztJQUNULENBQUM7SUFRRCxNQUFNLENB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QUFXLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUMsbUJBQW1CLEVBQUU7WUFDdkQsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHN1bW1hcnk+XHJcbi8vLyBNZ0d1aS5kbGwncyBtYW5hZ2VyIC0gYXNzZW1ibHkgbGV2ZWwgcHJvcGVydGllcyBhbmQgbWV0aG9kcy5cclxuLy8vIDwvc3VtbWFyeT5cclxuaW1wb3J0IHtOU3RyaW5nLCBTdGFja0ZyYW1lfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtIZWxwQ29tbWFuZCwgVXRpbEltZUpwbiwgVXRpbFN0ckJ5dGVNb2RlLCBXaW5kb3dUeXBlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0lHdWlFdmVudHNNYW5hZ2VyfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2V2ZW50cy9JR3VpRXZlbnRzTWFuYWdlclwiO1xyXG5pbXBvcnQge0d1aU1nQ29udHJvbH0gZnJvbSBcIi4vZ3VpL0d1aU1nQ29udHJvbFwiO1xyXG5pbXBvcnQge0d1aVRhc2tCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL0d1aVRhc2tCYXNlXCI7XHJcbmltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0NvbW1hbmRzfSBmcm9tIFwiLi9Db21tYW5kc1wiO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gXCIuL21hbmFnZW1lbnQvZ3VpL01nRm9ybUJhc2VcIjtcclxuaW1wb3J0IHtDb21tYW5kVHlwZSwgSHRtbFByb3BlcnRpZXN9IGZyb20gXCIuL0d1aUVudW1zXCI7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tIFwiLi9FdmVudHNcIjtcclxuaW1wb3J0IHtSdW50aW1lQ29udGV4dEJhc2V9IGZyb20gXCIuL21hbmFnZW1lbnQvUnVudGltZUNvbnRleHRCYXNlXCI7XHJcbmltcG9ydCB7R3VpTWdGb3JtfSBmcm9tIFwiLi9ndWkvR3VpTWdGb3JtXCI7XHJcbmltcG9ydCB7UHJvcEludGVyZmFjZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvUHJvcEludGVyZmFjZVwiO1xyXG5pbXBvcnQge0d1aUVudmlyb25tZW50fSBmcm9tIFwiLi9HdWlFbnZpcm9ubWVudFwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBNYW5hZ2VyIHtcclxuICBzdGF0aWMgSXNPdmVybGF5T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc3RhdGljIF9kZWxheVdhaXQ6IE9iamVjdCA9IG5ldyBPYmplY3QoKTsgLy8gdGhpcyBvYmplY3QgaXMgdXNlZCBmb3IgZXhlY3V0aW9uIGFuZCBpbnRlcnJ1cHRpbmcgZGVsYXkgY29tbWFuZFxyXG4gIHByaXZhdGUgc3RhdGljIF9jbGlwYm9hcmREYXRhOiBzdHJpbmcgPSBcIlwiOyAvLyBEYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGNsaXBib2FyZC5cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhvbGQgdGhlIGNvbnRleHRJRCBmb3IgYSBjdXJyZW50IHRocmVhZC5cclxuICAvLyBUaHJlYWQgc3RhdGljIGlzIGEgc2VwYXJhdGUgZm9yIGVhY2ggdGhyZWFkIChpLmUuOiB2YWx1ZSBvZiBhIHN0YXRpYyBmaWVsZCBpcyB1bmlxdWUgZm9yIGVhY2ggdGhyZWFkKS5cclxuICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvc3lzdGVtLnRocmVhZHN0YXRpY2F0dHJpYnV0ZS5hc3B4XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRDb250ZXh0SUQ6IHN0cmluZyA9ICdcXDAnO1xyXG5cclxuICBzdGF0aWMgRGVmYXVsdFByb3RvY29sOiBzdHJpbmcgPSBudWxsOyAvLyBkZWZhdWx0IHByb3RvY29sIChodHRwL2h0dHBzKSBhbmQgc2VydmVyIG5hbWUgdG8gYmUgdXNlZCBmb3IgYW55IHJlbGF0aXZlIHVybFxyXG4gIHN0YXRpYyBEZWZhdWx0U2VydmVyTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBzdGF0aWMgVXRpbEltZUpwbjogVXRpbEltZUpwbiA9IChVdGlsU3RyQnl0ZU1vZGUuaXNMb2NhbGVEZWZMYW5nSlBOKCkgPyBuZXcgVXRpbEltZUpwbigpIDogbnVsbCk7IC8vIEpQTjogSU1FIHN1cHBvcnRcclxuICBzdGF0aWMgRXZlbnRzTWFuYWdlcjogSUd1aUV2ZW50c01hbmFnZXIgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+KHB1YmxpYylcclxuICAvLy8gU2V0IHRoZSBjb250ZXh0IElEIGZvciBhIGN1cnJlbnQgdGhyZWFkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZXh0SURcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBTZXRDdXJyZW50Q29udGV4dElEKGNvbnRleHRJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBNYW5hZ2VyLl9jdXJyZW50Q29udGV4dElEID0gY29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGNvbnRleHQgSUQgZm9yIGEgY3VycmVudCB0aHJlYWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5jdXJyZW50IHRocmVhZCdzIGNvbnRleHRJRDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q3VycmVudENvbnRleHRJRCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE1hbmFnZXIuX2N1cnJlbnRDb250ZXh0SUQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IG9iamVjdCB0aGF0IGlzIHVzZWQgZm9yIGV4ZWN1dGlvbiBhbmQgaW50ZXJydXB0aW5nIGRlbGF5IGNvbW1hbmQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXREZWxheVdhaXQoKTogYW55IHtcclxuICAgIHJldHVybiBNYW5hZ2VyLl9kZWxheVdhaXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2hlY2sgaWYgZG90IG5ldCBjb250cm9sIGNhbiBiZSBmb2N1c2VkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ2FuRm9jdXMoZ3VpTWdDb250cm9sOiBHdWlNZ0NvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgSW5pdChzdGFydHVwSW1hZ2VGaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY2xvc2UgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9ybVwiPiA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1haW5QcmdUYXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQWJvcnQoZm9ybTogTWdGb3JtQmFzZSwgbWFpblByZ1Rhc2s6IEd1aVRhc2tCYXNlKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKGZvcm0uZ2V0U3ViRm9ybUN0cmwoKSA9PT0gbnVsbCAmJiBmb3JtLk9wZW5lZCkge1xyXG4gICAgICAvLyBpZiB0aGUgY2xvc2luZyBmb3JtIGlzICdvcGVuZWQgYXMgYSBtb2RhbCcgdGhlbiBkZWNyZW1lbnQgdGhlIG1vZGFsIGNvdW50IG9uIGl0cyBmcmFtZSB3aW5kb3cuXHJcbiAgICAgIGlmIChmb3JtLmlzRGlhbG9nKCkpIHtcclxuICAgICAgICB0aGlzLklzT3ZlcmxheU9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IHRvcE1vc3RGcmFtZUZvcm06IE1nRm9ybUJhc2UgPSBmb3JtLmdldFRvcE1vc3RGcmFtZUZvcm0oKTtcclxuICAgICAgICBpZiAodG9wTW9zdEZyYW1lRm9ybSAhPT0gbnVsbClcclxuICAgICAgICAgIHRvcE1vc3RGcmFtZUZvcm0uVXBkYXRlTW9kYWxGb3Jtc0NvdW50KGZvcm0sIGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkQ2xvc2VGb3JtKGZvcm0sIFwiMFwiLCBmb3JtLmdldFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj5jb250cm9sIHRvIGdldCB2YWx1ZSA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdmFsdWUgb2YgdGhlIGNvbnRyb2wgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDdHJsVmFsKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBzdHJpbmcge1xyXG4gICAgLy8gUUNSICM3NDUxMTc6IE1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBjb250ZW50cyBvZiBhIGNvbnRyb2wgd2VyZSBjaGFuZ2VkXHJcbiAgICAvLyB0aGVuIHRoZSBjaGFuZ2VzIGFyZSBhcHBsaWVkIGJlZm9yZSBleGFtaW5pbmcgaXRzIHZhbHVlLlxyXG4gICAgcmV0dXJuIENvbW1hbmRzLmdldFZhbHVlKGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFNldCByZWFkIG9ubHkgZm9yIGNvbnRyb2xzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB0byBjaGFuZ2UgaXRzIHByb3BlcnR5IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc1JlYWRPbmx5XCI+Ym9vbGVhbiA8L3BhcmFtPlxyXG4gIHN0YXRpYyBhc3luYyBTZXRSZWFkT25seUNvbnRyb2woY3RybDogTWdDb250cm9sQmFzZSwgaXNSZWFkT25seTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGN0cmwuaXNUZXh0Q29udHJvbCgpIHx8IGN0cmwuSXNSZXBlYXRhYmxlKSAvLyBEZWZlY3QgMTMxODAyOiBTZXQgUmVhZE9ubHkgZm9yIFJpY2ggVGV4dCBjb250cm9sIGluIFRhYmxlIEhlYWRlciBhbmQgZGVmZWN0IDEzMTcwNDogaW4gZ2VuZXJhbCBmb3IgUmljaCBUZXh0LlxyXG4gICAge1xyXG4gICAgICAvLyBKUE46IElNRSBzdXBwb3J0IChlbmFibGUgSU1FIGluIHF1ZXJ5IG1vZGUpXHJcbiAgICAgIGlmIChVdGlsU3RyQnl0ZU1vZGUuaXNMb2NhbGVEZWZMYW5nREJDUygpKSB7XHJcbiAgICAgICAgaWYgKGF3YWl0IGN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKS5jaGVja1Byb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQUxMT1dfTE9DQVRFX0lOX1FVRVJZLCBmYWxzZSkpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgQ29tbWFuZHMuYWRkT3BlcmF0aW9uV2l0aExpbmUoQ29tbWFuZFR5cGUuU0VUX1BST1BFUlRZLCBjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKGZhbHNlKSwgSHRtbFByb3BlcnRpZXMuUmVhZE9ubHksIGlzUmVhZE9ubHkpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IE9wZW4gdGhlIGZvcm0uIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ0Zvcm1cIj5mb3JtIHRvIGJlIG9wZW5lZC48L3BhcmFtPlxyXG4gIHN0YXRpYyBPcGVuRm9ybShtZ0Zvcm06IE1nRm9ybUJhc2UpOiB2b2lkIHtcclxuICAgIC8vIG5vbiBpbnRlcmFjdGl2ZSBjYW4gY2hvb3NlIG5vdCB0byBvcGVuIHRoZSB3aW5kb3cuXHJcbiAgICBpZiAoIW1nRm9ybS5PcGVuZWQgJiYgKG1nRm9ybS5nZXRUYXNrKCkuSXNJbnRlcmFjdGl2ZSB8fCBtZ0Zvcm0uZ2V0VGFzaygpLmlzT3BlbldpbigpKSkge1xyXG4gICAgICBpZiAoIW1nRm9ybS5pc1N1YkZvcm0oKSkge1xyXG4gICAgICAgIC8vIGlmIHRoZSBmb3JtIGlzIHRvIGJlIG9wZW5lZCBhcyBhIG1vZGFsLCB0aGVuIGluY3JlbWVudCB0aGUgbW9kYWwgY291bnQgb24gaXRzIGZyYW1lIHdpbmRvdy5cclxuICAgICAgICBpZiAobWdGb3JtLmlzRGlhbG9nKCkpIHtcclxuICAgICAgICAgIHRoaXMuSXNPdmVybGF5T3BlbiA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IHRvcE1vc3RGcmFtZUZvcm06IE1nRm9ybUJhc2UgPSBtZ0Zvcm0uZ2V0VG9wTW9zdEZyYW1lRm9ybSgpO1xyXG4gICAgICAgICAgaWYgKHRvcE1vc3RGcmFtZUZvcm0gIT09IG51bGwpXHJcbiAgICAgICAgICAgIHRvcE1vc3RGcmFtZUZvcm0uVXBkYXRlTW9kYWxGb3Jtc0NvdW50KG1nRm9ybSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICAvLyBpZiAoIW1nRm9ybS5pc1N1YkZvcm0oKSkge1xyXG4gICAgICAvLyAgIGxldCBmb3JtTmFtZTogc3RyaW5nID0gbWdGb3JtLlVuaXF1ZU5hbWU7XHJcbiAgICAgIC8vICAgVUlCcmlkZ2UuZ2V0SW5zdGFuY2UoKS5PcGVuRm9ybShmb3JtTmFtZSk7XHJcblxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIGxldCBpbnB1dENvbnRyb2xzID0gbWdGb3JtLkdldExpc3RPZklucHV0Q29udHJvbHMoKTtcclxuICAgICAgLy8gLy9cclxuICAgICAgLy8gLy8gICBKU0JyaWRnZS5JbnN0YW5jZS5PcGVuU3ViRm9ybSh0aGlzLmdldFN1YkZvcm1DdHJsKCkuZ2V0TmFtZSgpLCBQYXJlbnRGb3JtLmdldFRhc2soKS5nZXRUYXNrVGFnKCksIGdldFByb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRk9STV9OQU1FKS5nZXRWYWx1ZSgpLCBfdGFzay5nZXRUYXNrVGFnKCksIGlucHV0Q29udHJvbHMpO1xyXG4gICAgICAvLyAvLyB9XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIG1nRm9ybS5PcGVuZWQgPSB0cnVlO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gUGVyZm9ybXMgZmlyc3QgcmVmcmVzaCBmb3IgdGhlIHRhYmxlIGNvbnRyb2wgPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBhc3luYyBEb0ZpcnN0UmVmcmVzaFRhYmxlKG1nRm9ybTogTWdGb3JtQmFzZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKG1nRm9ybSAhPT0gbnVsbCAmJiAhbWdGb3JtLmlnbm9yZUZpcnN0UmVmcmVzaFRhYmxlKSB7XHJcbiAgICAgIG1nRm9ybS5pZ25vcmVGaXJzdFJlZnJlc2hUYWJsZSA9IHRydWU7XHJcbiAgICAgIGF3YWl0IG1nRm9ybS5maXJzdFRhYmxlUmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FyZXQsIHdpdGhpbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRleHRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPnRoZSBjb250cm9sIHdoaWNoIGlzIGFzc3VtZWQgdG8gY29udGFpbiB0aGUgc2VsZWN0ZWQgdGV4dCA8L3BhcmFtPlxyXG4gIHN0YXRpYyBDYXJldFBvc0dldChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogbnVtYmVyIHtcclxuICAgIGxldCBjYXJldFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAoY3RybC5pc1RleHRDb250cm9sKCkpXHJcbiAgICAgIGNhcmV0UG9zID0gQ29tbWFuZHMuY2FyZXRQb3NHZXQoY3RybCwgY3RybC5nZXREaXNwbGF5TGluZSh0cnVlKSk7XHJcblxyXG4gICAgcmV0dXJuIGNhcmV0UG9zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDbGVhciB0aGUgc3RhdHVzIGJhciBkZXBlbmRpbmcgb24gdGhlIGNvbnRyb2wgc3BlY2lmaWMgc3RhdHVzIG1lc3NhZ2Ugb3IgZm9ybSBzcGVjaWZpYyBzdGF0dXMgbWVzc2FnZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPnRhc2s8L3BhcmFtPlxyXG4gIHN0YXRpYyBDbGVhclN0YXR1c0Jhcih0YXNrOiBHdWlUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgbGV0IGN1cnJlbnRQYXJrZWRDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gdGFzay5nZXRMYXN0UGFya2VkQ3RybCgpO1xyXG5cclxuICAgIGlmIChjdXJyZW50UGFya2VkQ29udHJvbCAhPT0gbnVsbCAmJiAhTlN0cmluZy5Jc051bGxPckVtcHR5KGN1cnJlbnRQYXJrZWRDb250cm9sLlByb21wdEhlbHApKVxyXG4gICAgICB0YXNrLldyaXRlVG9NZXNzYWdlUGFuZShjdXJyZW50UGFya2VkQ29udHJvbC5Qcm9tcHRIZWxwLCBmYWxzZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIE1hbmFnZXIuQ2xlYW5NZXNzYWdlUGFuZSh0YXNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbGVhbiB0aGUgc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ2xlYW5NZXNzYWdlUGFuZSh0YXNrOiBHdWlUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGFzay5Xcml0ZVRvTWVzc2FnZVBhbmUoTWFuYWdlci5HZXRDdXJyZW50UnVudGltZUNvbnRleHQoKS5EZWZhdWx0U3RhdHVzTXNnLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE1lc3NhZ2Ugc3RyaW5nIHRvIGJlIGRpc3BsYXllZCBvbiBzdGF0dXMgYmFyIG9yIGluIE1lc3NhZ2UgYm94XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ1wiPiBpbnB1dCBtZXNzYWdlIHN0cmluZyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gb3V0cHV0IG1lc3NhZ2Ugc3RyaW5nIDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0TWVzc2FnZShtc2c6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAobXNnID09PSBudWxsKVxyXG4gICAgICBtc2cgPSBcIlwiO1xyXG4gICAgZWxzZSBpZiAobXNnLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGlkeE9mQ2FycmlhZ2U6IG51bWJlciA9IG1zZy5pbmRleE9mKFwiXFxyXCIpO1xyXG4gICAgICBpZiAoaWR4T2ZDYXJyaWFnZSAhPT0gLTEpXHJcbiAgICAgICAgbXNnID0gbXNnLnN1YnN0cigwLCBpZHhPZkNhcnJpYWdlKTtcclxuXHJcbiAgICAgIGxldCBpZHhPZk5ld0xpbmU6IG51bWJlciA9IG1zZy5pbmRleE9mKFwiXFxuXCIpO1xyXG4gICAgICBpZiAoaWR4T2ZOZXdMaW5lICE9PSAtMSlcclxuICAgICAgICBtc2cgPSBtc2cuc3Vic3RyKDAsIGlkeE9mTmV3TGluZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1zZztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBVc2VkIHRvIHB1dCB0aGUgdGV4dCBvbiBhIHRleHQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0ZXh0XCI+IDwvcGFyYW0+XHJcbiAgc3RhdGljIFNldEVkaXRUZXh0KGN0cmw6IE1nQ29udHJvbEJhc2UsIHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgQ29tbWFuZHMuc2V0RWRpdFRleHQoY3RybCwgY3RybC5nZXREaXNwbGF5TGluZSh0cnVlKSwgdGV4dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEluc2VydCB0ZXh0IHRvIGEgdGV4dCBjb250cm9sIGF0IGEgZ2l2ZW4gcG9zaXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0UG9zaXRpb25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRleHRUb0luc2VydFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIEluc2VydEVkaXRUZXh0KGN0cmw6IE1nQ29udHJvbEJhc2UsIHN0YXJ0UG9zaXRpb246IG51bWJlciwgdGV4dFRvSW5zZXJ0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIENvbW1hbmRzLmluc2VydEVkaXRUZXh0KGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSksIHN0YXJ0UG9zaXRpb24sIHRleHRUb0luc2VydCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIFRvb2x0aXBUaW1lb3V0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHJldHVybnMgVG9vbHRpcFRpbWVvdXQ8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldFRvb2x0aXBUaW1lb3V0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0VG9vbHRpcFRpbWVvdXQoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIFNwZWNpYWxFZGl0TGVmdEFsaWduXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRTcGVjaWFsRWRpdExlZnRBbGlnbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTcGVjaWFsRWRpdExlZnRBbGlnbigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFJldHVybnMgZGVmYXVsdCBkYXRlIGZvcm1hdCBkZXBlbmRpbmcgb24gZGF0ZSBtb2RlIGFuZCBkYXRlIHNlcGFyYXRvci5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gU3RyaW5nIGRlZmF1bHQgZGF0ZSBmb3JtYXQ8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldERlZmF1bHREYXRlRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZUZvcm1hdDogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBkYXRlU2VwZXJhdG9yOiBzdHJpbmcgPSBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXREYXRlKCk7XHJcblxyXG4gICAgLy8gQXJyYW5nZSBkYXRlIGZvcm1hdCBhY2NvcmRpbmcgdG8gdGhlIGRhdGUgbW9kZS5cclxuICAgIHN3aXRjaCAoR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0RGF0ZU1vZGUoMCkpIHtcclxuICAgICAgY2FzZSAnUyc6IC8vIFNjYW5kaW5hdmlhblxyXG4gICAgICAgIGRhdGVGb3JtYXQgPSBcIllZWVlcIiArIGRhdGVTZXBlcmF0b3IgKyBcIk1NXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJERFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnQic6IC8vIEJ1ZGRoaXN0XHJcblxyXG4gICAgICBjYXNlICdFJzogLy8gRXVyb3BlYW5cclxuICAgICAgICBkYXRlRm9ybWF0ID0gXCJERFwiICsgZGF0ZVNlcGVyYXRvciArIFwiTU1cIiArIGRhdGVTZXBlcmF0b3IgKyBcIllZWVlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ0EnOiAvLyBBbWVyaWNhblxyXG4gICAgICAgIGRhdGVGb3JtYXQgPSBcIk1NXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJERFwiICsgZGF0ZVNlcGVyYXRvciArIFwiWVlZWVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGVGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmV0dXJuIGRlZmF1bHQgdGltZSBmb3JtYXQgdXNpbmcgdGltZSBzZXBhcmF0b3IuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXREZWZhdWx0VGltZUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRpbWVTZXBlcmF0b3I6IHN0cmluZyA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFRpbWUoKTtcclxuICAgIGxldCB0aW1lRm9ybWF0OiBzdHJpbmcgPSBcIkhIXCIgKyB0aW1lU2VwZXJhdG9yICsgXCJNTVwiICsgdGltZVNlcGVyYXRvciArIFwiU1NcIjtcclxuICAgIHJldHVybiB0aW1lRm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIHRoZSBydW50aW1lIGNvbnRleHQgYmVsb25ncyB0byB0aGUgY3VycmVudCB0aHJlYWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+UnVudGltZUNvbnRleHRCYXNlPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDdXJyZW50UnVudGltZUNvbnRleHQoKTogUnVudGltZUNvbnRleHRCYXNlIHtcclxuICAgIHJldHVybiBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIHRoZSBjb250ZXh0SUQgdXNpbmcgdGhlIEd1aU1nRm9ybS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1nT2JqZWN0XCI+TWFnaWMgT2JqZWN0IC0gR3VpTWdGb3JtL0d1aU1nQ29udHJvbC9Mb2dpY2FsIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5jb250ZXh0SUQ8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbnRleHRJRChtZ09iamVjdDogYW55KTogbnVtYmVyIHtcclxuICAgIGxldCBndWlNZ0Zvcm06IEd1aU1nRm9ybSA9IG51bGw7XHJcblxyXG4gICAgaWYgKG1nT2JqZWN0IGluc3RhbmNlb2YgR3VpTWdDb250cm9sKVxyXG4gICAgICBndWlNZ0Zvcm0gPSAoPEd1aU1nQ29udHJvbD5tZ09iamVjdCkuR3VpTWdGb3JtO1xyXG4gICAgZWxzZSBpZiAobWdPYmplY3QgaW5zdGFuY2VvZiBHdWlNZ0Zvcm0pXHJcbiAgICAgIGd1aU1nRm9ybSA9IDxHdWlNZ0Zvcm0+bWdPYmplY3Q7XHJcblxyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXRDb250ZXh0SUQoZ3VpTWdGb3JtKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2hvd3Mgd2luZG93cyBoZWxwLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZmlsZVBhdGhcIj5wYXRoIG9mIHRoZSBoZWxwIGZpbGUuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZWxwQ21kXCI+aGVscCBjb21tYW5kLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGVscEtleVwiPnNlYXJjaCBrZXkgd29yZC48L3BhcmFtPlxyXG4gIHN0YXRpYyBTaG93V2luZG93SGVscChmaWxlUGF0aDogc3RyaW5nLCBoZWxwQ21kOiBIZWxwQ29tbWFuZCwgaGVscEtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybiBTcGVjaWFsVmFsTmV3UG9saWN5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHB1YmxpYyBzdGF0aWMgR2V0U3BlY2lhbFZhbE5ld1BvbGljeSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTcGVjaWFsVmFsTmV3UG9saWN5KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBoZWxwZXIgY2xhc3MgZm9yIHNldHRpbmcvcmVzZXR0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgSUQuXHJcbi8vLyBXZSByZXF1aXJlIHRoaXMgY2xhc3Mgc3BlY2lmaWNhbGx5IGZvciBNb2RhbCB3aW5kb3dzLiBXaGVuIHdlIG9wZW4gYSBtb2RhbCB3aW5kb3cgdGhlblxyXG4vLy8gaXQgd2FpdHMgaW4gR3VpVGhyZWFkLiBNZWFuIHdoaWxlIEd1aVRocmVhZCBjYW4gcmVjZWl2ZSB0aGUgZXZlbnRzIG9mIG90aGVyIGNvbnRleHQgYW5kXHJcbi8vLyBhZnRlciBwcm9jZXNzaW5nIHRoZXNlIGV2ZW50cywgd2Ugc2hvdWxkIHJlc2V0IHRoZSBjb250ZXh0SUQgb2YgdGhlIE1vZGFsIHdpbmRvd3MgYmVjYXVzZVxyXG4vLy8gaXQgd2lsbCBiZSB1c2VkIGZvciBsb2dnaW5nIHRoZSBldmVudHMgd2hlbiB3ZSBjbG9zZSB0aGUgbW9kYWwgd2luZG93LlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgQ29udGV4dElER3VhcmQge1xyXG4gIHByaXZhdGUgX3ByZXZDb250ZXh0SUQ6IHN0cmluZyA9ICdcXDAnO1xyXG5cclxuICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2Ugb25seS5cclxuICAvLyBJdCB3aWxsIGhvbGQgdGhlIGZpbGUgbmFtZSBmcm9tIHdoaWNoIHRoZSBvYmplY3Qgb2YgQ29udGV4dElER3VhcmQgaXMgY3JlYXRlZC5cclxuICBwcml2YXRlIF9maWxlTmFtZTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0SUQ6IHN0cmluZyk7XHJcbiAgY29uc3RydWN0b3IoY29udGV4dElEPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKGNvbnRleHRJRCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcmV2Q29udGV4dElEID0gTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCk7XHJcbiAgICB0aGlzLlNhdmVGaWxlbmFtZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xKGNvbnRleHRJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLlNldEN1cnJlbnQoY29udGV4dElEKTtcclxuICAgIHRoaXMuU2F2ZUZpbGVuYW1lKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldHMgdGhlIGNvbnRleHQgSUQgdG8gJ2d1YXJkJy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPm5ldyBjb250ZXh0IElEIHRvICdndWFyZCcuPC9wYXJhbT5cclxuICBTZXRDdXJyZW50KGNvbnRleHRJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoY29udGV4dElEICE9PSB0aGlzLl9wcmV2Q29udGV4dElEKSB7XHJcbiAgICAgIHRoaXMuX3ByZXZDb250ZXh0SUQgPSBjb250ZXh0SUQ7XHJcbiAgICAgIE1hbmFnZXIuU2V0Q3VycmVudENvbnRleHRJRChjb250ZXh0SUQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGZpbGUgbmFtZSBmcm9tIHdoaWNoIHRoZSBDb250ZXh0SURHdWFyZCBpcyBiZWluZyBjcmVhdGVkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBTYXZlRmlsZW5hbWUoKTogdm9pZCB7XHJcbiAgICBsZXQgc3RhY2tGcmFtZTogU3RhY2tGcmFtZSA9IG5ldyBTdGFja0ZyYW1lKDEsIHRydWUpO1xyXG4gICAgdGhpcy5fZmlsZU5hbWUgPSBzdGFja0ZyYW1lLkdldEZpbGVOYW1lKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRGlzcG9zZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9wcmV2Q29udGV4dElEICE9PSBNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSlcclxuICAgICAgTWFuYWdlci5TZXRDdXJyZW50Q29udGV4dElEKHRoaXMuX3ByZXZDb250ZXh0SUQpO1xyXG4gIH1cclxufVxyXG4iXX0=