@magic-xpa/gui 4.801.0-dev481.245 → 4.801.0-dev481.253

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 (96) 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/{esm2015/src/Events.js → esm2020/src/Events.mjs} +0 -0
  5. package/{esm2015/src/EventsProcessor.js → esm2020/src/EventsProcessor.mjs} +0 -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} +0 -0
  9. package/{esm2015/src/GuiEnvironment.js → esm2020/src/GuiEnvironment.mjs} +0 -0
  10. package/{esm2015/src/IFlowMonitorQueue.js → esm2020/src/IFlowMonitorQueue.mjs} +1 -0
  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} +1 -0
  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/{esm2015/src/gui/low/GuiInteractive.js → esm2020/src/gui/low/GuiInteractive.mjs} +0 -0
  25. package/{esm2015/src/gui/low/Style.js → esm2020/src/gui/low/Style.mjs} +0 -0
  26. package/{esm2015/src/management/RuntimeContextBase.js → esm2020/src/management/RuntimeContextBase.mjs} +0 -0
  27. package/{esm2015/src/management/data/BlobType.js → esm2020/src/management/data/BlobType.mjs} +0 -0
  28. package/{esm2015/src/management/data/DcValues.js → esm2020/src/management/data/DcValues.mjs} +0 -0
  29. package/{esm2015/src/management/data/DcValuesBuilderBase.js → esm2020/src/management/data/DcValuesBuilderBase.mjs} +0 -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/{esm2015/src/management/data/GuiDataViewBase.js → esm2020/src/management/data/GuiDataViewBase.mjs} +0 -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/{esm2015/src/management/data/ObjectReferenceBase.js → esm2020/src/management/data/ObjectReferenceBase.mjs} +0 -0
  38. package/{esm2015/src/management/data/ObjectReferencesCollection.js → esm2020/src/management/data/ObjectReferencesCollection.mjs} +0 -0
  39. package/{esm2015/src/management/data/RecordUtils.js → esm2020/src/management/data/RecordUtils.mjs} +0 -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/{esm2015/src/management/events/IGuiEventsManager.js → esm2020/src/management/events/IGuiEventsManager.mjs} +1 -0
  44. package/{esm2015/src/management/exp/ExpressionInterface.js → esm2020/src/management/exp/ExpressionInterface.mjs} +0 -0
  45. package/{esm2015/src/management/exp/GuiExpressionEvaluator.js → esm2020/src/management/exp/GuiExpressionEvaluator.mjs} +0 -0
  46. package/{esm2015/src/management/gui/ControlTable.js → esm2020/src/management/gui/ControlTable.mjs} +0 -0
  47. package/{esm2015/src/management/gui/DisplayConvertor.js → esm2020/src/management/gui/DisplayConvertor.mjs} +0 -0
  48. package/{esm2015/src/management/gui/FieldValidator.js → esm2020/src/management/gui/FieldValidator.mjs} +0 -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/{esm2015/src/management/gui/PIC.js → esm2020/src/management/gui/PIC.mjs} +0 -0
  56. package/{esm2015/src/management/gui/PropDefaults.js → esm2020/src/management/gui/PropDefaults.mjs} +0 -0
  57. package/{esm2015/src/management/gui/PropInterface.js → esm2020/src/management/gui/PropInterface.mjs} +0 -0
  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/{esm2015/src/management/tasks/MgTimer.js → esm2020/src/management/tasks/MgTimer.mjs} +0 -0
  68. package/{esm2015/src/management/tasks/TaskDefinitionId.js → esm2020/src/management/tasks/TaskDefinitionId.mjs} +0 -0
  69. package/{esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js → esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs} +0 -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/{esm2015/src/util/ProcessLauncher.js → esm2020/src/util/ProcessLauncher.mjs} +0 -0
  74. package/{esm2015/src/util/UsernamePasswordCredentials.js → esm2020/src/util/UsernamePasswordCredentials.mjs} +0 -0
  75. package/fesm2015/{magic-xpa-gui.js → magic-xpa-gui.mjs} +36 -1
  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 +22 -9
  80. package/src/management/gui/GuiControlPropertyAdapter.d.ts +6 -6
  81. package/src/management/tasks/GuiTaskBase.d.ts +1 -1
  82. package/bundles/magic-xpa-gui.umd.js +0 -19355
  83. package/bundles/magic-xpa-gui.umd.js.map +0 -1
  84. package/bundles/magic-xpa-gui.umd.min.js +0 -16
  85. package/bundles/magic-xpa-gui.umd.min.js.map +0 -1
  86. package/esm2015/src/Commands.js +0 -189
  87. package/esm2015/src/FocusManager.js +0 -41
  88. package/esm2015/src/Manager.js +0 -197
  89. package/esm2015/src/management/data/GuiFieldBase.js +0 -85
  90. package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +0 -4
  91. package/esm2015/src/management/gui/MgControlBase.js +0 -1978
  92. package/esm2015/src/management/gui/MgFormBase.js +0 -763
  93. package/esm2015/src/management/gui/PropTable.js +0 -224
  94. package/esm2015/src/management/gui/Property.js +0 -1413
  95. package/esm2015/src/management/tasks/GuiTaskBase.js +0 -506
  96. package/fesm2015/magic-xpa-gui.js.map +0 -1
File without changes
@@ -0,0 +1,186 @@
1
+ import { List } from '@magic-xpa/mscorelib';
2
+ import { GuiInteractive } from './gui/low/GuiInteractive';
3
+ import { GuiMgControl } from './gui/GuiMgControl';
4
+ import { CommandType } from './GuiEnums';
5
+ import { GuiCommandQueue } from './gui/low/GuiCommandQueue';
6
+ import { GuiCommand } from './gui/low/GuiCommand';
7
+ export class Commands {
8
+ constructor() {
9
+ }
10
+ static SetResolveCallback(resolveCallback) {
11
+ this.resolveCallback = resolveCallback;
12
+ }
13
+ static ResolvePromise(result) {
14
+ this.resolveCallback(result);
15
+ }
16
+ static async messageBox(title, msg, style) {
17
+ let guiInteractive = new GuiInteractive();
18
+ let returnValue;
19
+ await new Promise((resolve) => {
20
+ this.SetResolveCallback(resolve);
21
+ guiInteractive.messageBox(title, msg, style);
22
+ }).then((res) => { returnValue = res; });
23
+ return returnValue;
24
+ }
25
+ static setTitle(topMostForm, title) {
26
+ let guiInteractive = new GuiInteractive();
27
+ guiInteractive.setTitle(topMostForm, title);
28
+ }
29
+ static setGetSuggestedValueOfChoiceControlOnTagData(ctrl, line, retSuggestedValue) {
30
+ let guiInteractive = new GuiInteractive();
31
+ guiInteractive.setGetSuggestedValueOfChoiceControlOnTagData(ctrl, line, retSuggestedValue);
32
+ }
33
+ static getValue(obj, line) {
34
+ let guiInteractive = new GuiInteractive();
35
+ return guiInteractive.getValue(obj, line);
36
+ }
37
+ static getTopIndex(tablecontrol) {
38
+ let guiInteractive = new GuiInteractive();
39
+ return guiInteractive.getTopIndex(tablecontrol);
40
+ }
41
+ static getIsRowEditing(tablecontrol, rowIndex, isLineMode) {
42
+ let guiInteractive = new GuiInteractive();
43
+ return guiInteractive.getIsRowEditing(tablecontrol, rowIndex, isLineMode);
44
+ }
45
+ static browserExecute(browserControl, text, syncExec, language) {
46
+ let guiInteractive = new GuiInteractive();
47
+ return guiInteractive.browserExecute(browserControl, text, syncExec, language);
48
+ }
49
+ static directoryDialogBox(caption, path, bShowNewFolder) {
50
+ let guiInteractive = new GuiInteractive();
51
+ return guiInteractive.directoryDialogBox(caption, path, bShowNewFolder);
52
+ }
53
+ static fileOpenDialogBox(title, dirName, fileName, filterNames, checkExists, multiSelect) {
54
+ let guiInteractive = new GuiInteractive();
55
+ return guiInteractive.fileOpenDialogBox(title, dirName, fileName, filterNames, checkExists, multiSelect);
56
+ }
57
+ static setEditText(control, line, text) {
58
+ let guiInteractive = new GuiInteractive();
59
+ return guiInteractive.setEditText(control, line, text);
60
+ }
61
+ static insertEditText(control, line, startPosition, textToInsert) {
62
+ let guiInteractive = new GuiInteractive();
63
+ return guiInteractive.insertEditText(control, line, startPosition, textToInsert);
64
+ }
65
+ static caretPosGet(control, line) {
66
+ let guiInteractive = new GuiInteractive();
67
+ return guiInteractive.caretPosGet(control, line);
68
+ }
69
+ static addRefreshPage(navigateToRootRoute, initialUrl) {
70
+ let guiInteractive = new GuiInteractive();
71
+ guiInteractive.RefreshPage(navigateToRootRoute, initialUrl);
72
+ }
73
+ static getRowsInPage(control) {
74
+ let guiInteractive = new GuiInteractive();
75
+ let rowsInPage = guiInteractive.getRowsInPage(control);
76
+ return (rowsInPage === 0 ? 1 : rowsInPage);
77
+ }
78
+ static getMaxRowsInPaginatedTable(control) {
79
+ let guiInteractive = new GuiInteractive();
80
+ let maxRows = guiInteractive.getMaxRowsInPaginatedTable(control);
81
+ return (maxRows);
82
+ }
83
+ static getLastRoute() {
84
+ let guiInteractive = new GuiInteractive();
85
+ return guiInteractive.getLastRoute();
86
+ }
87
+ static addBoolWithLine(commandType, obj, line, bool) {
88
+ let guiCommand = new GuiCommand(obj, commandType);
89
+ guiCommand.Bool1 = bool;
90
+ guiCommand.line = line;
91
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
92
+ }
93
+ static addNoParameters(commandType, obj) {
94
+ let guiCommand = new GuiCommand(obj, commandType);
95
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
96
+ }
97
+ static addWithNumber(commandType, obj, num) {
98
+ let guiCommand = new GuiCommand(obj, commandType);
99
+ guiCommand.number = num;
100
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
101
+ }
102
+ static addValueWithLine(commandType, obj, line, value) {
103
+ let guiCommand = new GuiCommand(obj, commandType);
104
+ guiCommand.value = value;
105
+ guiCommand.line = line;
106
+ if (commandType === CommandType.SET_VALUE) {
107
+ if (obj instanceof GuiMgControl && obj.isChoiceControl()) {
108
+ if (value < 0)
109
+ guiCommand.value = '';
110
+ }
111
+ }
112
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
113
+ }
114
+ static addOperationWithLine(commandType, obj, line, operation, value) {
115
+ let guiCommand = new GuiCommand(obj, commandType);
116
+ guiCommand.obj1 = value;
117
+ guiCommand.line = line;
118
+ guiCommand.Operation = operation;
119
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
120
+ }
121
+ static addOpensubform(commandType, obj, calledTaskTag, subformControlName, formName, inputControls, routerPath, routerParams, inDefaultRouterOutlet) {
122
+ let guiCommand = new GuiCommand(obj, commandType);
123
+ guiCommand.str = calledTaskTag;
124
+ guiCommand.obj1 = subformControlName;
125
+ guiCommand.userDropFormat = formName;
126
+ guiCommand.fileName = inputControls;
127
+ guiCommand.Bool1 = inDefaultRouterOutlet;
128
+ guiCommand.contextID = routerPath;
129
+ guiCommand.params = routerParams;
130
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
131
+ }
132
+ static addClosesubform(commandType, obj, calledTaskTag, subformControlName, formName) {
133
+ let guiCommand = new GuiCommand(obj, commandType);
134
+ guiCommand.str = calledTaskTag;
135
+ guiCommand.obj1 = subformControlName;
136
+ guiCommand.userDropFormat = formName;
137
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
138
+ }
139
+ static addOpenForm(obj, formName, handlerTaskTag, calledTaskTag, inputControls, isDialog) {
140
+ let guiCommand = new GuiCommand(obj, CommandType.OPEN_FORM);
141
+ guiCommand.TaskTag = handlerTaskTag;
142
+ guiCommand.str = formName;
143
+ guiCommand.stringList = new List();
144
+ guiCommand.stringList.push(calledTaskTag);
145
+ guiCommand.stringList.push(inputControls);
146
+ guiCommand.Bool1 = isDialog;
147
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
148
+ }
149
+ static addCloseForm(obj, handlerTaskTag, calledTaskTag) {
150
+ let guiCommand = new GuiCommand(obj, CommandType.CLOSE_FORM);
151
+ guiCommand.TaskTag = handlerTaskTag;
152
+ guiCommand.str = calledTaskTag;
153
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
154
+ }
155
+ static addCallJS(form, formName, name, args) {
156
+ let guiInteractive = new GuiInteractive();
157
+ return guiInteractive.ExecuteCallJS(form, formName, name, args);
158
+ }
159
+ static addIsLoggedIn(setBool) {
160
+ let guiCommand = new GuiCommand(null, CommandType.SET_IS_LOGGED_IN);
161
+ guiCommand.Bool1 = setBool;
162
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
163
+ }
164
+ static addShowSpinner(show) {
165
+ let guiCommand = new GuiCommand(null, CommandType.SHOW_SPINNER);
166
+ guiCommand.Bool1 = show;
167
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
168
+ }
169
+ static addGlobalCommand(commandType) {
170
+ let guiCommand = new GuiCommand(null, commandType);
171
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
172
+ }
173
+ static addShowHTMLError(commandType, error) {
174
+ let guiCommand = new GuiCommand(null, commandType);
175
+ guiCommand.str = error;
176
+ GuiCommandQueue.getInstance().addCommand(guiCommand);
177
+ }
178
+ static beginInvoke() {
179
+ GuiCommandQueue.getInstance().beginInvoke();
180
+ }
181
+ static invoke() {
182
+ GuiCommandQueue.getInstance().invoke();
183
+ }
184
+ }
185
+ Commands.resolveCallback = null;
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL0NvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUxQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQVVoRCxNQUFNLE9BQU8sUUFBUTtJQTZVbkI7SUFDQSxDQUFDO0lBdFVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFLRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQWM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBU0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBQy9ELElBQUksY0FBYyxHQUFtQixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQzFELElBQUksV0FBbUIsQ0FBQztRQUV4QixNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFX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QUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUdELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUF3QixFQUFFLEtBQWE7UUFDN0QsSUFBSSxVQUFVLEdBQWUsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELFVBQVUsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUtELE1BQU0sQ0FBQyxXQUFXO1FBQ2hCLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBS0QsTUFBTSxDQUFDLE1BQU07UUFDWCxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDekMsQ0FBQzs7QUF4VWUsd0JBQWUsR0FBRyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3R9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gJy4vZ3VpL0d1aU1nRm9ybSc7XHJcbmltcG9ydCB7R3VpSW50ZXJhY3RpdmV9IGZyb20gJy4vZ3VpL2xvdy9HdWlJbnRlcmFjdGl2ZSc7XHJcbmltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tICcuL2d1aS9HdWlNZ0NvbnRyb2wnO1xyXG5pbXBvcnQge0NvbW1hbmRUeXBlfSBmcm9tICcuL0d1aUVudW1zJztcclxuaW1wb3J0IHtHdWlDb21tYW5kUXVldWV9IGZyb20gJy4vZ3VpL2xvdy9HdWlDb21tYW5kUXVldWUnO1xyXG5pbXBvcnQge0d1aUNvbW1hbmR9IGZyb20gJy4vZ3VpL2xvdy9HdWlDb21tYW5kJztcclxuXHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIENvbW1hbmRzIHRvIHRoZSBHVUkgdGhyZWFkLlxyXG4vLy8gICBUaGVyZeKAmXJlIHR3byB0eXBlcyBvZiBjb21tYW5kcyAoZ3JvdXBlZCBpbiAjcmVnaW9ucyk6XHJcbi8vLyAgICAgIDEuXHRDb21tYW5kcyB0aGF0IGFyZSBleGVjdXRlZCBpbW1lZGlhdGVseS5cclxuLy8vICAgICAgMi5cdENvbW1hbmRzIHRoYXQgYXJlIHF1ZXVlZCAob3ZlcmxvYWRlZCBtZXRob2RzIOKAmGFkZEFzeW5j4oCZKSBhbmQgdGhlbiBleGVjdXRlZCxcclxuLy8vICAgICAgICAgZWl0aGVyIHN5bmNocm9ub3VzbHkgKG1ldGhvZCDigJhpbnZva2XigJkpIG9yIGFzeW5jaHJvbm91c2x5IChtZXRob2Qg4oCYYmVnaW5JbnZva2XigJkpLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgQ29tbWFuZHMge1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgIHJlc29sdmVDYWxsYmFjayA9IG51bGw7IC8vIGNhbGxiYWNrIHRvIHJlc29sdmUgdGhlIHByb21pc2VcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzYXZlIHRoZSBjYWxsYmFja1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFNldFJlc29sdmVDYWxsYmFjayhyZXNvbHZlQ2FsbGJhY2spIHtcclxuICAgIHRoaXMucmVzb2x2ZUNhbGxiYWNrID0gcmVzb2x2ZUNhbGxiYWNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXNvbHZlIHByb21pc2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBSZXNvbHZlUHJvbWlzZShyZXN1bHQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5yZXNvbHZlQ2FsbGJhY2socmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwgdG8gZGlzcGxheSBtZXNzYWdlIGJveFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0aXRsZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIGFzeW5jIG1lc3NhZ2VCb3godGl0bGU6IHN0cmluZywgbXNnOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgbGV0IHJldHVyblZhbHVlOiBudW1iZXI7XHJcblxyXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5TZXRSZXNvbHZlQ2FsbGJhY2socmVzb2x2ZSk7XHJcbiAgICAgIGd1aUludGVyYWN0aXZlLm1lc3NhZ2VCb3godGl0bGUsIG1zZywgc3R5bGUpO1xyXG4gICAgIC8vIHNhdmUgdGhlIHJlc29sdmUgY2FsbGJhY2sgb24gRXZlbnRzTWFuYWdlciwgc28gdGhhdCBpdCBjYW4gYmUgcmVzb2x2ZWQgb24gY2xvc2luZyBtb2RhbCB3aW5kb3dcclxuICAgIH0pLnRoZW4oKHJlczogbnVtYmVyKT0+e3JldHVyblZhbHVlID0gcmVzO30pO1xyXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aXRsZSB0byBicm93c2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRvcE1vc3RGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRpdGxlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgc2V0VGl0bGUodG9wTW9zdEZvcm06IEd1aU1nRm9ybSwgdGl0bGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgZ3VpSW50ZXJhY3RpdmUuc2V0VGl0bGUodG9wTW9zdEZvcm0sIHRpdGxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwuIFRoaXMgbWV0aG9kZSBpcyBzZXQgVFJVRVxcRkFMU0UgdGhhdCBHdWlVdGlsZXNcXEdldFZhbHVlKCkgbWV0aG9kIHdpbGwgYmUgdXNlXHJcbiAgLy8vICAgdGhpcyBmYWxnIHNheSBpZiB0byByZXR1cm4gdGhlIDogKHRydWUpIHN1Z2dlc3RlZCB2YWx1ZSBvciAoZmFsc2UpdGhlIHJlYWwgdmFsdWVcclxuICAvLy8gICB0aGlzIG1ldGhvZCBpcyB1c2UgZm9yIE1HX0FDVF9DVFJMX01PRElGWVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJldFN1Z2dlc3RlZFZhbHVlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgc2V0R2V0U3VnZ2VzdGVkVmFsdWVPZkNob2ljZUNvbnRyb2xPblRhZ0RhdGEoY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIsIHJldFN1Z2dlc3RlZFZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICBndWlJbnRlcmFjdGl2ZS5zZXRHZXRTdWdnZXN0ZWRWYWx1ZU9mQ2hvaWNlQ29udHJvbE9uVGFnRGF0YShjdHJsLCBsaW5lLCByZXRTdWdnZXN0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgdmFsdWUgb2YgdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwib2JqXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIGdldFZhbHVlKG9iajogYW55LCBsaW5lOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLmdldFZhbHVlKG9iaiwgbGluZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgdGFibGUgdG9wIGluZGV4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhYmxlY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0VG9wSW5kZXgodGFibGVjb250cm9sOiBHdWlNZ0NvbnRyb2wpOiBudW1iZXIge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLmdldFRvcEluZGV4KHRhYmxlY29udHJvbCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgaXMgcm93IGVkaXRpbmcgb24gcm93IGluZGV4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhYmxlY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0SXNSb3dFZGl0aW5nKHRhYmxlY29udHJvbDogYW55LCByb3dJbmRleDogbnVtYmVyLCBpc0xpbmVNb2RlOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuZ2V0SXNSb3dFZGl0aW5nKHRhYmxlY29udHJvbCwgcm93SW5kZXgsIGlzTGluZU1vZGUpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwgdG8gZXhlY3V0ZSBicm93c2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImJyb3dzZXJDb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRleHRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3luY0V4ZWNcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGFuZ3VhZ2VcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBicm93c2VyRXhlY3V0ZShicm93c2VyQ29udHJvbDogR3VpTWdDb250cm9sLCB0ZXh0OiBzdHJpbmcsIHN5bmNFeGVjOiBib29sZWFuLCBsYW5ndWFnZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuYnJvd3NlckV4ZWN1dGUoYnJvd3NlckNvbnRyb2wsIHRleHQsIHN5bmNFeGVjLCBsYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIERpcmVjdG9yeSBEaWFsb2cgQm94XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNhcHRpb25cIj5kZXNjcmlwdGlvbiBmb3IgdGhlIGRpYWxvZyB3aW5kb3c8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGF0aFwiPmluaXRpYWwgcGF0aCB0byBicm93c2U8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiYlNob3dOZXdGb2xkZXJcIj5zaG91bGQgc2hvdyB0aGUgbmV3IGZvbGRlciBidXR0b24/PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+ZGlyZWN0b3J5IHBhdGggc2VsZWN0ZWQgYnkgdXNlcjwvcmV0dXJucz5cclxuICBzdGF0aWMgZGlyZWN0b3J5RGlhbG9nQm94KGNhcHRpb246IHN0cmluZywgcGF0aDogc3RyaW5nLCBiU2hvd05ld0ZvbGRlcjogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuZGlyZWN0b3J5RGlhbG9nQm94KGNhcHRpb24sIHBhdGgsIGJTaG93TmV3Rm9sZGVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwgdG8gRmlsZSBPcGVuIERpYWxvZyBCb3hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGl0bGVcIj5EaWFsb2cgd2luZG93IGNhcHRpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGlyTmFtZVwiPkluaXRpYWwgZGlyZWN0b3J5PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZpbGVOYW1lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZpbHRlck5hbWVzXCI+ZmlsdGVyIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjaGVja0V4aXN0c1wiPnZlcmlmeSBvcGVuZWQgZmlsZSBleGlzdHM8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXVsdGlTZWxlY3RcIj5lbmFibGUgc2VsZWN0aW5nIG11bHRpcGxlIGZpbGVzPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+ZmlsZSBwYXRoIHNlbGVjdGVkIGJ5IHVzZXI8L3JldHVybnM+XHJcbiAgc3RhdGljIGZpbGVPcGVuRGlhbG9nQm94KHRpdGxlOiBzdHJpbmcsIGRpck5hbWU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgZmlsdGVyTmFtZXM6IHN0cmluZywgY2hlY2tFeGlzdHM6IGJvb2xlYW4sIG11bHRpU2VsZWN0OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIHJldHVybiBndWlJbnRlcmFjdGl2ZS5maWxlT3BlbkRpYWxvZ0JveCh0aXRsZSwgZGlyTmFtZSwgZmlsZU5hbWUsIGZpbHRlck5hbWVzLCBjaGVja0V4aXN0cywgbXVsdGlTZWxlY3QpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBzZXQgdGhlIHRleHQgdG8gdGhlIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbnRyb2xcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0ZXh0XCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBzZXRFZGl0VGV4dChjb250cm9sOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgdGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuc2V0RWRpdFRleHQoY29udHJvbCwgbGluZSwgdGV4dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSW5zZXJ0IHRleHQgdG8gYSB0ZXh0IGNvbnRyb2wgYXQgYSBnaXZlbiBwb3NpdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhcnRQb3NpdGlvblwiPndoZXJlIHRvIGFkZCB0aGUgdGV4dDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0ZXh0VG9JbnNlcnRcIj50aGUgdGV4dCB0byBhZGQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIGluc2VydEVkaXRUZXh0KGNvbnRyb2w6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCBzdGFydFBvc2l0aW9uOiBudW1iZXIsIHRleHRUb0luc2VydDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuaW5zZXJ0RWRpdFRleHQoY29udHJvbCwgbGluZSwgc3RhcnRQb3NpdGlvbiwgdGV4dFRvSW5zZXJ0KTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIGdldCB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcmV0IG9uIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbnRyb2xcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtZ1ZhbHVlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgY2FyZXRQb3NHZXQoY29udHJvbDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLmNhcmV0UG9zR2V0KGNvbnRyb2wsIGxpbmUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZFJlZnJlc2hQYWdlKG5hdmlnYXRlVG9Sb290Um91dGUgOiBib29sZWFuLCBpbml0aWFsVXJsOiBzdHJpbmcpIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuXHJcbiAgICBndWlJbnRlcmFjdGl2ZS5SZWZyZXNoUGFnZShuYXZpZ2F0ZVRvUm9vdFJvdXRlLCBpbml0aWFsVXJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwgdG8gZ2V0IG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRSb3dzSW5QYWdlKGNvbnRyb2w6IEd1aU1nQ29udHJvbCk6IG51bWJlciB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICBsZXQgcm93c0luUGFnZSA9IGd1aUludGVyYWN0aXZlLmdldFJvd3NJblBhZ2UoY29udHJvbCk7XHJcbiAgICByZXR1cm4gKHJvd3NJblBhZ2UgPT09IDAgPyAxIDogcm93c0luUGFnZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCBtYXggbm8gb2Ygcm93cyBpbiBwYWdpbmF0ZWQgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0TWF4Um93c0luUGFnaW5hdGVkVGFibGUoY29udHJvbDogR3VpTWdDb250cm9sKTogbnVtYmVyIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIGxldCBtYXhSb3dzID0gZ3VpSW50ZXJhY3RpdmUuZ2V0TWF4Um93c0luUGFnaW5hdGVkVGFibGUoY29udHJvbCk7XHJcbiAgICByZXR1cm4gKG1heFJvd3MpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGxhc3Qgcm91dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBnZXRMYXN0Um91dGUoKTogc3RyaW5nIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIHJldHVybiBndWlJbnRlcmFjdGl2ZS5nZXRMYXN0Um91dGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRCb29sV2l0aExpbmUoY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBvYmo6IGFueSwgbGluZTogbnVtYmVyLCBib29sOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgY29tbWFuZFR5cGUpO1xyXG4gICAgZ3VpQ29tbWFuZC5Cb29sMSA9IGJvb2w7XHJcbiAgICBndWlDb21tYW5kLmxpbmUgPSBsaW5lO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGROb1BhcmFtZXRlcnMoY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIGNvbW1hbmRUeXBlKTtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkV2l0aE51bWJlcihjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIG9iajogYW55LCBudW06IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIGNvbW1hbmRUeXBlKTtcclxuICAgIGd1aUNvbW1hbmQubnVtYmVyID0gbnVtO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRWYWx1ZVdpdGhMaW5lKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgb2JqOiBhbnksIGxpbmU6IG51bWJlciwgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIGNvbW1hbmRUeXBlKTtcclxuICAgIGd1aUNvbW1hbmQudmFsdWUgPSB2YWx1ZTtcclxuICAgIGd1aUNvbW1hbmQubGluZSA9IGxpbmU7XHJcbiAgICBpZiAoY29tbWFuZFR5cGUgPT09IENvbW1hbmRUeXBlLlNFVF9WQUxVRSlcclxuICAgIHtcclxuICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mICBHdWlNZ0NvbnRyb2wgJiYgb2JqLmlzQ2hvaWNlQ29udHJvbCgpKVxyXG4gICAgICB7XHJcbiAgICAgICAgaWYodmFsdWUgPCAwKVxyXG4gICAgICAgICAgZ3VpQ29tbWFuZC52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBhZGRPcGVyYXRpb25XaXRoTGluZShjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIG9iajogYW55LCBsaW5lOiBudW1iZXIsIG9wZXJhdGlvbjogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgY29tbWFuZFR5cGUpO1xyXG4gICAgZ3VpQ29tbWFuZC5vYmoxID0gdmFsdWU7XHJcbiAgICBndWlDb21tYW5kLmxpbmUgPSBsaW5lO1xyXG4gICAgZ3VpQ29tbWFuZC5PcGVyYXRpb24gPSBvcGVyYXRpb247XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBhZGRPcGVuc3ViZm9ybShjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIG9iajogT2JqZWN0LCBjYWxsZWRUYXNrVGFnOiBzdHJpbmcsIHN1YmZvcm1Db250cm9sTmFtZTogc3RyaW5nLCBmb3JtTmFtZTogc3RyaW5nLCBpbnB1dENvbnRyb2xzOiBzdHJpbmcsIHJvdXRlclBhdGg6IHN0cmluZywgcm91dGVyUGFyYW1zOiBMaXN0PGFueT4sIGluRGVmYXVsdFJvdXRlck91dGxldDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIGNvbW1hbmRUeXBlKTtcclxuICAgIGd1aUNvbW1hbmQuc3RyID0gY2FsbGVkVGFza1RhZztcclxuICAgIGd1aUNvbW1hbmQub2JqMSA9IHN1YmZvcm1Db250cm9sTmFtZTtcclxuICAgIGd1aUNvbW1hbmQudXNlckRyb3BGb3JtYXQgPSBmb3JtTmFtZTtcclxuICAgIGd1aUNvbW1hbmQuZmlsZU5hbWUgPSBpbnB1dENvbnRyb2xzO1xyXG4gICAgZ3VpQ29tbWFuZC5Cb29sMSA9IGluRGVmYXVsdFJvdXRlck91dGxldDtcclxuICAgIGd1aUNvbW1hbmQuY29udGV4dElEID0gcm91dGVyUGF0aDtcclxuICAgIGd1aUNvbW1hbmQucGFyYW1zID0gcm91dGVyUGFyYW1zO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRDbG9zZXN1YmZvcm0oY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBvYmo6IE9iamVjdCwgY2FsbGVkVGFza1RhZzogc3RyaW5nLCBzdWJmb3JtQ29udHJvbE5hbWU6IHN0cmluZywgZm9ybU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIGNvbW1hbmRUeXBlKTtcclxuICAgIGd1aUNvbW1hbmQuc3RyID0gY2FsbGVkVGFza1RhZztcclxuICAgIGd1aUNvbW1hbmQub2JqMSA9IHN1YmZvcm1Db250cm9sTmFtZTtcclxuICAgIGd1aUNvbW1hbmQudXNlckRyb3BGb3JtYXQgPSBmb3JtTmFtZTtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkT3BlbkZvcm0ob2JqOiBPYmplY3QsIGZvcm1OYW1lOiBzdHJpbmcsIGhhbmRsZXJUYXNrVGFnOiBzdHJpbmcsIGNhbGxlZFRhc2tUYWc6IHN0cmluZywgaW5wdXRDb250cm9sczogc3RyaW5nLCBpc0RpYWxvZzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIENvbW1hbmRUeXBlLk9QRU5fRk9STSk7XHJcbiAgICBndWlDb21tYW5kLlRhc2tUYWcgPSBoYW5kbGVyVGFza1RhZztcclxuICAgIGd1aUNvbW1hbmQuc3RyID0gZm9ybU5hbWU7XHJcbiAgICBndWlDb21tYW5kLnN0cmluZ0xpc3QgPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBndWlDb21tYW5kLnN0cmluZ0xpc3QucHVzaChjYWxsZWRUYXNrVGFnKTtcclxuICAgIGd1aUNvbW1hbmQuc3RyaW5nTGlzdC5wdXNoKGlucHV0Q29udHJvbHMpO1xyXG4gICAgZ3VpQ29tbWFuZC5Cb29sMSA9IGlzRGlhbG9nO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRDbG9zZUZvcm0ob2JqOiBPYmplY3QsIGhhbmRsZXJUYXNrVGFnOiBzdHJpbmcsIGNhbGxlZFRhc2tUYWc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIENvbW1hbmRUeXBlLkNMT1NFX0ZPUk0pO1xyXG4gICAgZ3VpQ29tbWFuZC5UYXNrVGFnID0gaGFuZGxlclRhc2tUYWc7XHJcbiAgICBndWlDb21tYW5kLnN0ciA9IGNhbGxlZFRhc2tUYWc7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZENhbGxKUyhmb3JtIDogYW55LCBmb3JtTmFtZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PGFueT4pOiBzdHJpbmcge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLkV4ZWN1dGVDYWxsSlMoZm9ybSAsIGZvcm1OYW1lLCAgbmFtZSwgYXJncyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkSXNMb2dnZWRJbihzZXRCb29sOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG51bGwsIENvbW1hbmRUeXBlLlNFVF9JU19MT0dHRURfSU4pO1xyXG4gICAgZ3VpQ29tbWFuZC5Cb29sMSA9IHNldEJvb2w7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgLy8gYWRkcyBhIGNvbW1hbmQgdG8gc2hvdyBvciBoaWRlIHRoZSBzcGlubmVyXHJcbiAgc3RhdGljIGFkZFNob3dTcGlubmVyKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQobnVsbCwgQ29tbWFuZFR5cGUuU0hPV19TUElOTkVSKTtcclxuICAgIGd1aUNvbW1hbmQuQm9vbDEgPSBzaG93O1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIC8vIGFkZHMgYSBjb21tYW5kIHdoaWNoIGlzIG5vdCByZWxhdGVkIHRvIGEgc3BlY2lmaWMgdGFza1xyXG4gIHN0YXRpYyBhZGRHbG9iYWxDb21tYW5kKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChudWxsLCBjb21tYW5kVHlwZSk7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgLy8gYWRkcyBhIGNvbW1hbmQgdG8gZGlzcGxheSB0aGUgSFRNTCBlcnJvciByZWNlaXZlZCBmcm9tIHRoZSByZXF1ZXNlclxyXG4gIHN0YXRpYyBhZGRTaG93SFRNTEVycm9yKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgZXJyb3I6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChudWxsLCBjb21tYW5kVHlwZSk7XHJcbiAgICBndWlDb21tYW5kLnN0ciA9IGVycm9yO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIGFsbCBwZW5kaW5nIGNvbW1hbmRzLCBhc3luY2hyb25vdXNseVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGJlZ2luSW52b2tlKCk6IHZvaWQge1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYmVnaW5JbnZva2UoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIGFsbCBwZW5kaW5nIGNvbW1hbmRzLCBzeW5jaHJvbm91c2x5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgaW52b2tlKCk6IHZvaWQge1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuaW52b2tlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,34 @@
1
+ import { Commands } from "./Commands";
2
+ import { Events } from "./Events";
3
+ import { CommandType } from "./GuiEnums";
4
+ import { GuiControlPropertyAdapter } from "./management/gui/GuiControlPropertyAdapter";
5
+ export class FocusManager {
6
+ static async SetFocus(ctrlOrItask, lineOrCtrl, line, activateForm) {
7
+ if (ctrlOrItask instanceof GuiControlPropertyAdapter) {
8
+ await FocusManager.SetFocus_0(ctrlOrItask, lineOrCtrl);
9
+ return;
10
+ }
11
+ await FocusManager.SetFocus_1(ctrlOrItask, lineOrCtrl, line, activateForm);
12
+ }
13
+ static async SetFocus_0(ctrl, line) {
14
+ await FocusManager.SetFocus(ctrl.getForm().getTask(), ctrl, line, true);
15
+ }
16
+ static async SetFocus_1(itask, ctrl, line, activateForm) {
17
+ let task = itask;
18
+ if (task.isAborting())
19
+ return;
20
+ Events.OnCtrlFocus(itask, ctrl);
21
+ if (ctrl !== null) {
22
+ if (!await ctrl.isParkable(true))
23
+ return;
24
+ Commands.addBoolWithLine(CommandType.SET_FOCUS, ctrl, (line >= 0) ? line : ctrl.getDisplayLine(false), activateForm);
25
+ }
26
+ else {
27
+ let formObject = task.IsSubForm
28
+ ? task.getForm().getSubFormCtrl()
29
+ : task.getForm();
30
+ Commands.addBoolWithLine(CommandType.SET_FOCUS, formObject, 0, activateForm);
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9jdXNNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9Gb2N1c01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUd0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFdkYsTUFBTSxPQUFPLFlBQVk7SUFLdkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBZ0IsRUFBRSxVQUFlLEVBQUUsSUFBYSxFQUFFLFlBQXNCO1FBQzVGLElBQUksV0FBVyxZQUFZLHlCQUF5QixFQUFFO1lBQ3BELE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDdkQsT0FBTztTQUNSO1FBQ0QsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFPTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUErQixFQUFFLElBQVk7UUFDM0UsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFTTyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFZLEVBQUUsSUFBK0IsRUFBRSxJQUFZLEVBQUUsWUFBcUI7UUFDaEgsSUFBSSxJQUFJLEdBQTZCLEtBQUssQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTztRQUVULE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNqQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDOUIsT0FBTztZQUNULFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUN0SDthQUNJO1lBQ0gsSUFBSSxVQUFVLEdBQVEsSUFBSSxDQUFDLFNBQVM7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFO2dCQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRW5CLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQzlFO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZHMgfSBmcm9tIFwiLi9Db21tYW5kc1wiO1xyXG5pbXBvcnQgeyBHdWlUYXNrQmFzZSB9IGZyb20gXCIuL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2VcIjtcclxuaW1wb3J0IHsgSVRhc2sgfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL0lUYXNrXCI7XHJcbmltcG9ydCB7IEV2ZW50cyB9IGZyb20gXCIuL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBDb21tYW5kVHlwZSB9IGZyb20gXCIuL0d1aUVudW1zXCI7XHJcbmltcG9ydCB7IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIgfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9HdWlDb250cm9sUHJvcGVydHlBZGFwdGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgRm9jdXNNYW5hZ2VyXHJcbntcclxuXHJcbiAgc3RhdGljIGFzeW5jIFNldEZvY3VzKGN0cmw6IEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIsIGxpbmU6IG51bWJlcik6IFByb21pc2U8dm9pZD47XHJcbiAgc3RhdGljIGFzeW5jIFNldEZvY3VzKGl0YXNrOiBJVGFzaywgY3RybDogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciwgbGluZTogbnVtYmVyLCBhY3RpdmF0ZUZvcm06IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xyXG4gIHN0YXRpYyBhc3luYyBTZXRGb2N1cyhjdHJsT3JJdGFzazogYW55LCBsaW5lT3JDdHJsOiBhbnksIGxpbmU/OiBudW1iZXIsIGFjdGl2YXRlRm9ybT86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChjdHJsT3JJdGFzayBpbnN0YW5jZW9mIEd1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXIpIHtcclxuICAgICAgYXdhaXQgRm9jdXNNYW5hZ2VyLlNldEZvY3VzXzAoY3RybE9ySXRhc2ssIGxpbmVPckN0cmwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBhd2FpdCBGb2N1c01hbmFnZXIuU2V0Rm9jdXNfMShjdHJsT3JJdGFzaywgbGluZU9yQ3RybCwgbGluZSwgYWN0aXZhdGVGb3JtKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGZvY3VzIHRvIHRoZSBzcGVjaWZpZWQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIFNldEZvY3VzXzAoY3RybDogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciwgbGluZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCBGb2N1c01hbmFnZXIuU2V0Rm9jdXMoY3RybC5nZXRGb3JtKCkuZ2V0VGFzaygpLCBjdHJsLCBsaW5lLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGZvY3VzIHRvIHRoZSBzcGVjaWZpZWQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpdGFza1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFjdGl2YXRlRm9ybVwiPmFjdGl2YXRlIGEgZm9ybSBvciBub3Q8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIFNldEZvY3VzXzEoaXRhc2s6IElUYXNrLCBjdHJsOiBHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyLCBsaW5lOiBudW1iZXIsIGFjdGl2YXRlRm9ybTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHRhc2s6IEd1aVRhc2tCYXNlID0gPEd1aVRhc2tCYXNlPml0YXNrO1xyXG4gICAgaWYgKHRhc2suaXNBYm9ydGluZygpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgRXZlbnRzLk9uQ3RybEZvY3VzKGl0YXNrLCBjdHJsKTtcclxuXHJcbiAgICBpZiAoY3RybCAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoIWF3YWl0IGN0cmwuaXNQYXJrYWJsZSh0cnVlKSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIENvbW1hbmRzLmFkZEJvb2xXaXRoTGluZShDb21tYW5kVHlwZS5TRVRfRk9DVVMsIGN0cmwsIChsaW5lID49IDApID8gbGluZSA6IGN0cmwuZ2V0RGlzcGxheUxpbmUoZmFsc2UpLCBhY3RpdmF0ZUZvcm0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBmb3JtT2JqZWN0OiBhbnkgPSB0YXNrLklzU3ViRm9ybVxyXG4gICAgICAgID8gdGFzay5nZXRGb3JtKCkuZ2V0U3ViRm9ybUN0cmwoKVxyXG4gICAgICAgIDogdGFzay5nZXRGb3JtKCk7XHJcblxyXG4gICAgICBDb21tYW5kcy5hZGRCb29sV2l0aExpbmUoQ29tbWFuZFR5cGUuU0VUX0ZPQ1VTLCBmb3JtT2JqZWN0LCAwLCBhY3RpdmF0ZUZvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -1 +1,2 @@
1
+ export {};
1
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUZsb3dNb25pdG9yUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL0lGbG93TW9uaXRvclF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHN1bW1hcnk+XHJcbi8vLyBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGJ5IHRoZSBHVUkgbmFtZXNwYWNlIGZyb20gdGhlIEZsb3dNb25pdG9yUXVldWUgY2xhc3MuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZsb3dNb25pdG9yUXVldWUge1xyXG4gIGFkZFRhc2tDbmdNb2RlKCBuZXdUYXNrTW9kZTogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZDtcclxufVxyXG4iXX0=
@@ -0,0 +1,192 @@
1
+ import { NString, StackFrame } from "@magic-xpa/mscorelib";
2
+ import { UtilImeJpn, UtilStrByteMode } from "@magic-xpa/utils";
3
+ import { GuiMgControl } from "./gui/GuiMgControl";
4
+ import { Commands } from "./Commands";
5
+ import { CommandType, HtmlProperties } from "./GuiEnums";
6
+ import { Events } from "./Events";
7
+ import { GuiMgForm } from "./gui/GuiMgForm";
8
+ import { PropInterface } from "./management/gui/PropInterface";
9
+ import { GuiEnvironment } from "./GuiEnvironment";
10
+ export class Manager {
11
+ static SetCurrentContextID(contextID) {
12
+ Manager._currentContextID = contextID;
13
+ }
14
+ static GetCurrentContextID() {
15
+ return Manager._currentContextID;
16
+ }
17
+ static GetDelayWait() {
18
+ return Manager._delayWait;
19
+ }
20
+ static CanFocus() {
21
+ return false;
22
+ }
23
+ static Init(startupImageFileName) {
24
+ return;
25
+ }
26
+ static Abort(form) {
27
+ if (form.getSubFormCtrl() === null && form.Opened) {
28
+ if (form.isDialog()) {
29
+ this.IsOverlayOpen = false;
30
+ let topMostFrameForm = form.getTopMostFrameForm();
31
+ if (topMostFrameForm !== null)
32
+ topMostFrameForm.UpdateModalFormsCount(form, false);
33
+ }
34
+ Commands.addCloseForm(form, "0", form.getTask().getTaskTag());
35
+ Commands.beginInvoke();
36
+ }
37
+ }
38
+ static GetCtrlVal(ctrl) {
39
+ return Commands.getValue(ctrl, ctrl.getDisplayLine(true));
40
+ }
41
+ static async SetReadOnlyControl(ctrl, isReadOnly) {
42
+ if (ctrl.isTextControl() || ctrl.IsRepeatable) {
43
+ if (UtilStrByteMode.isLocaleDefLangDBCS()) {
44
+ if (await ctrl.getForm().getTask().checkProp(PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY, false))
45
+ return;
46
+ }
47
+ Commands.addOperationWithLine(CommandType.SET_PROPERTY, ctrl, ctrl.getDisplayLine(false), HtmlProperties.ReadOnly, isReadOnly);
48
+ Commands.beginInvoke();
49
+ }
50
+ }
51
+ static OpenForm(mgForm) {
52
+ if (!mgForm.Opened && (mgForm.getTask().IsInteractive || mgForm.getTask().isOpenWin())) {
53
+ if (!mgForm.isSubForm()) {
54
+ if (mgForm.isDialog()) {
55
+ this.IsOverlayOpen = true;
56
+ let topMostFrameForm = mgForm.getTopMostFrameForm();
57
+ if (topMostFrameForm !== null)
58
+ topMostFrameForm.UpdateModalFormsCount(mgForm, true);
59
+ }
60
+ }
61
+ mgForm.Opened = true;
62
+ Commands.beginInvoke();
63
+ }
64
+ }
65
+ static async DoFirstRefreshTable(mgForm) {
66
+ if (mgForm !== null && !mgForm.ignoreFirstRefreshTable) {
67
+ mgForm.ignoreFirstRefreshTable = true;
68
+ await mgForm.firstTableRefresh();
69
+ }
70
+ }
71
+ static CaretPosGet(ctrl) {
72
+ let caretPos = 0;
73
+ if (ctrl.isTextControl())
74
+ caretPos = Commands.caretPosGet(ctrl, ctrl.getDisplayLine(true));
75
+ return caretPos;
76
+ }
77
+ static ClearStatusBar(task) {
78
+ let currentParkedControl = task.getLastParkedCtrl();
79
+ if (currentParkedControl !== null && !NString.IsNullOrEmpty(currentParkedControl.PromptHelp))
80
+ task.WriteToMessagePane(currentParkedControl.PromptHelp);
81
+ else
82
+ Manager.CleanMessagePane(task);
83
+ }
84
+ static CleanMessagePane(task) {
85
+ task.WriteToMessagePane(Manager.GetCurrentRuntimeContext().DefaultStatusMsg);
86
+ }
87
+ static GetMessage(msg) {
88
+ if (msg === null)
89
+ msg = "";
90
+ else if (msg.length > 0) {
91
+ let idxOfCarriage = msg.indexOf("\r");
92
+ if (idxOfCarriage !== -1)
93
+ msg = msg.substr(0, idxOfCarriage);
94
+ let idxOfNewLine = msg.indexOf("\n");
95
+ if (idxOfNewLine !== -1)
96
+ msg = msg.substr(0, idxOfNewLine);
97
+ }
98
+ return msg;
99
+ }
100
+ static SetEditText(ctrl, text) {
101
+ Commands.setEditText(ctrl, ctrl.getDisplayLine(true), text);
102
+ }
103
+ static InsertEditText(ctrl, startPosition, textToInsert) {
104
+ Commands.insertEditText(ctrl, ctrl.getDisplayLine(true), startPosition, textToInsert);
105
+ }
106
+ static GetTooltipTimeout() {
107
+ return GuiEnvironment.Environment.GetTooltipTimeout();
108
+ }
109
+ static GetSpecialEditLeftAlign() {
110
+ return GuiEnvironment.Environment.GetSpecialEditLeftAlign();
111
+ }
112
+ static GetDefaultDateFormat() {
113
+ let dateFormat = "";
114
+ let dateSeperator = GuiEnvironment.Environment.GetDate();
115
+ switch (GuiEnvironment.Environment.GetDateMode(0)) {
116
+ case 'S':
117
+ dateFormat = "YYYY" + dateSeperator + "MM" + dateSeperator + "DD";
118
+ break;
119
+ case 'B':
120
+ case 'E':
121
+ dateFormat = "DD" + dateSeperator + "MM" + dateSeperator + "YYYY";
122
+ break;
123
+ case 'A':
124
+ dateFormat = "MM" + dateSeperator + "DD" + dateSeperator + "YYYY";
125
+ break;
126
+ }
127
+ return dateFormat;
128
+ }
129
+ static GetDefaultTimeFormat() {
130
+ let timeSeperator = GuiEnvironment.Environment.GetTime();
131
+ let timeFormat = "HH" + timeSeperator + "MM" + timeSeperator + "SS";
132
+ return timeFormat;
133
+ }
134
+ static GetCurrentRuntimeContext() {
135
+ return Events.GetRuntimeContext(Manager.GetCurrentContextID());
136
+ }
137
+ static GetContextID(mgObject) {
138
+ let guiMgForm = null;
139
+ if (mgObject instanceof GuiMgControl)
140
+ guiMgForm = mgObject.GuiMgForm;
141
+ else if (mgObject instanceof GuiMgForm)
142
+ guiMgForm = mgObject;
143
+ return Events.GetContextID(guiMgForm);
144
+ }
145
+ static ShowWindowHelp(filePath, helpCmd, helpKey) {
146
+ }
147
+ static GetSpecialValNewPolicy() {
148
+ return GuiEnvironment.Environment.GetSpecialValNewPolicy();
149
+ }
150
+ }
151
+ Manager.IsOverlayOpen = false;
152
+ Manager._delayWait = new Object();
153
+ Manager._clipboardData = "";
154
+ Manager._currentContextID = '\0';
155
+ Manager.DefaultProtocol = null;
156
+ Manager.DefaultServerName = null;
157
+ Manager.UtilImeJpn = (UtilStrByteMode.isLocaleDefLangJPN() ? new UtilImeJpn() : null);
158
+ Manager.EventsManager = null;
159
+ export class ContextIDGuard {
160
+ constructor(contextID) {
161
+ this._prevContextID = '\0';
162
+ this._fileName = null;
163
+ if (arguments.length === 0) {
164
+ this.constructor_0();
165
+ return;
166
+ }
167
+ this.constructor_1(contextID);
168
+ }
169
+ constructor_0() {
170
+ this._prevContextID = Manager.GetCurrentContextID();
171
+ this.SaveFilename();
172
+ }
173
+ constructor_1(contextID) {
174
+ this.SetCurrent(contextID);
175
+ this.SaveFilename();
176
+ }
177
+ SetCurrent(contextID) {
178
+ if (contextID !== this._prevContextID) {
179
+ this._prevContextID = contextID;
180
+ Manager.SetCurrentContextID(contextID);
181
+ }
182
+ }
183
+ SaveFilename() {
184
+ let stackFrame = new StackFrame(1);
185
+ this._fileName = stackFrame.GetFileName();
186
+ }
187
+ Dispose() {
188
+ if (this._prevContextID !== Manager.GetCurrentContextID())
189
+ Manager.SetCurrentContextID(this._prevContextID);
190
+ }
191
+ }
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxVQUFVLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFMUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR2hELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDdkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxNQUFNLE9BQU8sT0FBTztJQW1CbEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQWlCO1FBQzFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQU1ELE1BQU0sQ0FBQyxtQkFBbUI7UUFDeEIsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDbkMsQ0FBQztJQU1ELE1BQU0sQ0FBQyxZQUFZO1FBQ2pCLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUM1QixDQUFDO0lBT0QsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRCxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUE0QjtRQUN0QyxPQUFPO0lBQ1QsQ0FBQztJQVFELE1BQU0sQ0FBQyxLQUFLLENBQUMs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QUMsY0FBYyxLQUFLLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUN2RCxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8c3VtbWFyeT5cclxuLy8vIE1nR3VpLmRsbCdzIG1hbmFnZXIgLSBhc3NlbWJseSBsZXZlbCBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5pbXBvcnQge05TdHJpbmcsIFN0YWNrRnJhbWV9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0hlbHBDb21tYW5kLCBVdGlsSW1lSnBuLCBVdGlsU3RyQnl0ZU1vZGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SUd1aUV2ZW50c01hbmFnZXJ9IGZyb20gXCIuL21hbmFnZW1lbnQvZXZlbnRzL0lHdWlFdmVudHNNYW5hZ2VyXCI7XHJcbmltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tIFwiLi9ndWkvR3VpTWdDb250cm9sXCI7XHJcbmltcG9ydCB7R3VpVGFza0Jhc2V9IGZyb20gXCIuL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2VcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9NZ0NvbnRyb2xCYXNlXCI7XHJcbmltcG9ydCB7Q29tbWFuZHN9IGZyb20gXCIuL0NvbW1hbmRzXCI7XHJcbmltcG9ydCB7TWdGb3JtQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvTWdGb3JtQmFzZVwiO1xyXG5pbXBvcnQge0NvbW1hbmRUeXBlLCBIdG1sUHJvcGVydGllc30gZnJvbSBcIi4vR3VpRW51bXNcIjtcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gXCIuL0V2ZW50c1wiO1xyXG5pbXBvcnQge1J1bnRpbWVDb250ZXh0QmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9SdW50aW1lQ29udGV4dEJhc2VcIjtcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gXCIuL2d1aS9HdWlNZ0Zvcm1cIjtcclxuaW1wb3J0IHtQcm9wSW50ZXJmYWNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9Qcm9wSW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7R3VpRW52aXJvbm1lbnR9IGZyb20gXCIuL0d1aUVudmlyb25tZW50XCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIE1hbmFnZXIge1xyXG4gIHN0YXRpYyBJc092ZXJsYXlPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlbGF5V2FpdDogT2JqZWN0ID0gbmV3IE9iamVjdCgpOyAvLyB0aGlzIG9iamVjdCBpcyB1c2VkIGZvciBleGVjdXRpb24gYW5kIGludGVycnVwdGluZyBkZWxheSBjb21tYW5kXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2NsaXBib2FyZERhdGE6IHN0cmluZyA9IFwiXCI7IC8vIERhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgY2xpcGJvYXJkLlxyXG5cclxuICAvLyBUaGlzIHdpbGwgaG9sZCB0aGUgY29udGV4dElEIGZvciBhIGN1cnJlbnQgdGhyZWFkLlxyXG4gIC8vIFRocmVhZCBzdGF0aWMgaXMgYSBzZXBhcmF0ZSBmb3IgZWFjaCB0aHJlYWQgKGkuZS46IHZhbHVlIG9mIGEgc3RhdGljIGZpZWxkIGlzIHVuaXF1ZSBmb3IgZWFjaCB0aHJlYWQpLlxyXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9zeXN0ZW0udGhyZWFkc3RhdGljYXR0cmlidXRlLmFzcHhcclxuICBwcml2YXRlIHN0YXRpYyBfY3VycmVudENvbnRleHRJRDogc3RyaW5nID0gJ1xcMCc7XHJcblxyXG4gIHN0YXRpYyBEZWZhdWx0UHJvdG9jb2w6IHN0cmluZyA9IG51bGw7IC8vIGRlZmF1bHQgcHJvdG9jb2wgKGh0dHAvaHR0cHMpIGFuZCBzZXJ2ZXIgbmFtZSB0byBiZSB1c2VkIGZvciBhbnkgcmVsYXRpdmUgdXJsXHJcbiAgc3RhdGljIERlZmF1bHRTZXJ2ZXJOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIHN0YXRpYyBVdGlsSW1lSnBuOiBVdGlsSW1lSnBuID0gKFV0aWxTdHJCeXRlTW9kZS5pc0xvY2FsZURlZkxhbmdKUE4oKSA/IG5ldyBVdGlsSW1lSnBuKCkgOiBudWxsKTsgLy8gSlBOOiBJTUUgc3VwcG9ydFxyXG4gIHN0YXRpYyBFdmVudHNNYW5hZ2VyOiBJR3VpRXZlbnRzTWFuYWdlciA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4ocHVibGljKVxyXG4gIC8vLyBTZXQgdGhlIGNvbnRleHQgSUQgZm9yIGEgY3VycmVudCB0aHJlYWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFNldEN1cnJlbnRDb250ZXh0SUQoY29udGV4dElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIE1hbmFnZXIuX2N1cnJlbnRDb250ZXh0SUQgPSBjb250ZXh0SUQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCB0aGUgY29udGV4dCBJRCBmb3IgYSBjdXJyZW50IHRocmVhZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dElEPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDdXJyZW50Q29udGV4dElEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTWFuYWdlci5fY3VycmVudENvbnRleHRJRDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgb2JqZWN0IHRoYXQgaXMgdXNlZCBmb3IgZXhlY3V0aW9uIGFuZCBpbnRlcnJ1cHRpbmcgZGVsYXkgY29tbWFuZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldERlbGF5V2FpdCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIE1hbmFnZXIuX2RlbGF5V2FpdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjaGVjayBpZiBkb3QgbmV0IGNvbnRyb2wgY2FuIGJlIGZvY3VzZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdDb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDYW5Gb2N1cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgSW5pdChzdGFydHVwSW1hZ2VGaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY2xvc2UgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9ybVwiPiA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1haW5QcmdUYXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQWJvcnQoZm9ybTogTWdGb3JtQmFzZSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChmb3JtLmdldFN1YkZvcm1DdHJsKCkgPT09IG51bGwgJiYgZm9ybS5PcGVuZWQpIHtcclxuICAgICAgLy8gaWYgdGhlIGNsb3NpbmcgZm9ybSBpcyAnb3BlbmVkIGFzIGEgbW9kYWwnIHRoZW4gZGVjcmVtZW50IHRoZSBtb2RhbCBjb3VudCBvbiBpdHMgZnJhbWUgd2luZG93LlxyXG4gICAgICBpZiAoZm9ybS5pc0RpYWxvZygpKSB7XHJcbiAgICAgICAgdGhpcy5Jc092ZXJsYXlPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCB0b3BNb3N0RnJhbWVGb3JtOiBNZ0Zvcm1CYXNlID0gZm9ybS5nZXRUb3BNb3N0RnJhbWVGb3JtKCk7XHJcbiAgICAgICAgaWYgKHRvcE1vc3RGcmFtZUZvcm0gIT09IG51bGwpXHJcbiAgICAgICAgICB0b3BNb3N0RnJhbWVGb3JtLlVwZGF0ZU1vZGFsRm9ybXNDb3VudChmb3JtLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIENvbW1hbmRzLmFkZENsb3NlRm9ybShmb3JtLCBcIjBcIiwgZm9ybS5nZXRUYXNrKCkuZ2V0VGFza1RhZygpKTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+Y29udHJvbCB0byBnZXQgdmFsdWUgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHZhbHVlIG9mIHRoZSBjb250cm9sIDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q3RybFZhbChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogc3RyaW5nIHtcclxuICAgIC8vIFFDUiAjNzQ1MTE3OiBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgY29udGVudHMgb2YgYSBjb250cm9sIHdlcmUgY2hhbmdlZFxyXG4gICAgLy8gdGhlbiB0aGUgY2hhbmdlcyBhcmUgYXBwbGllZCBiZWZvcmUgZXhhbWluaW5nIGl0cyB2YWx1ZS5cclxuICAgIHJldHVybiBDb21tYW5kcy5nZXRWYWx1ZShjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKHRydWUpKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTZXQgcmVhZCBvbmx5IGZvciBjb250cm9sc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+dGhlIGNvbnRyb2wgdG8gY2hhbmdlIGl0cyBwcm9wZXJ0eSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNSZWFkT25seVwiPmJvb2xlYW4gPC9wYXJhbT5cclxuICBzdGF0aWMgYXN5bmMgU2V0UmVhZE9ubHlDb250cm9sKGN0cmw6IE1nQ29udHJvbEJhc2UsIGlzUmVhZE9ubHk6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChjdHJsLmlzVGV4dENvbnRyb2woKSB8fCBjdHJsLklzUmVwZWF0YWJsZSkgLy8gRGVmZWN0IDEzMTgwMjogU2V0IFJlYWRPbmx5IGZvciBSaWNoIFRleHQgY29udHJvbCBpbiBUYWJsZSBIZWFkZXIgYW5kIGRlZmVjdCAxMzE3MDQ6IGluIGdlbmVyYWwgZm9yIFJpY2ggVGV4dC5cclxuICAgIHtcclxuICAgICAgLy8gSlBOOiBJTUUgc3VwcG9ydCAoZW5hYmxlIElNRSBpbiBxdWVyeSBtb2RlKVxyXG4gICAgICBpZiAoVXRpbFN0ckJ5dGVNb2RlLmlzTG9jYWxlRGVmTGFuZ0RCQ1MoKSkge1xyXG4gICAgICAgIGlmIChhd2FpdCBjdHJsLmdldEZvcm0oKS5nZXRUYXNrKCkuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FMTE9XX0xPQ0FURV9JTl9RVUVSWSwgZmFsc2UpKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIENvbW1hbmRzLmFkZE9wZXJhdGlvbldpdGhMaW5lKENvbW1hbmRUeXBlLlNFVF9QUk9QRVJUWSwgY3RybCwgY3RybC5nZXREaXNwbGF5TGluZShmYWxzZSksIEh0bWxQcm9wZXJ0aWVzLlJlYWRPbmx5LCBpc1JlYWRPbmx5KTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBPcGVuIHRoZSBmb3JtLiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdGb3JtXCI+Zm9ybSB0byBiZSBvcGVuZWQuPC9wYXJhbT5cclxuICBzdGF0aWMgT3BlbkZvcm0obWdGb3JtOiBNZ0Zvcm1CYXNlKTogdm9pZCB7XHJcbiAgICAvLyBub24gaW50ZXJhY3RpdmUgY2FuIGNob29zZSBub3QgdG8gb3BlbiB0aGUgd2luZG93LlxyXG4gICAgaWYgKCFtZ0Zvcm0uT3BlbmVkICYmIChtZ0Zvcm0uZ2V0VGFzaygpLklzSW50ZXJhY3RpdmUgfHwgbWdGb3JtLmdldFRhc2soKS5pc09wZW5XaW4oKSkpIHtcclxuICAgICAgaWYgKCFtZ0Zvcm0uaXNTdWJGb3JtKCkpIHtcclxuICAgICAgICAvLyBpZiB0aGUgZm9ybSBpcyB0byBiZSBvcGVuZWQgYXMgYSBtb2RhbCwgdGhlbiBpbmNyZW1lbnQgdGhlIG1vZGFsIGNvdW50IG9uIGl0cyBmcmFtZSB3aW5kb3cuXHJcbiAgICAgICAgaWYgKG1nRm9ybS5pc0RpYWxvZygpKSB7XHJcbiAgICAgICAgICB0aGlzLklzT3ZlcmxheU9wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGxldCB0b3BNb3N0RnJhbWVGb3JtOiBNZ0Zvcm1CYXNlID0gbWdGb3JtLmdldFRvcE1vc3RGcmFtZUZvcm0oKTtcclxuICAgICAgICAgIGlmICh0b3BNb3N0RnJhbWVGb3JtICE9PSBudWxsKVxyXG4gICAgICAgICAgICB0b3BNb3N0RnJhbWVGb3JtLlVwZGF0ZU1vZGFsRm9ybXNDb3VudChtZ0Zvcm0sIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgLy8gaWYgKCFtZ0Zvcm0uaXNTdWJGb3JtKCkpIHtcclxuICAgICAgLy8gICBsZXQgZm9ybU5hbWU6IHN0cmluZyA9IG1nRm9ybS5VbmlxdWVOYW1lO1xyXG4gICAgICAvLyAgIFVJQnJpZGdlLmdldEluc3RhbmNlKCkuT3BlbkZvcm0oZm9ybU5hbWUpO1xyXG5cclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIHtcclxuICAgICAgLy8gICBsZXQgaW5wdXRDb250cm9scyA9IG1nRm9ybS5HZXRMaXN0T2ZJbnB1dENvbnRyb2xzKCk7XHJcbiAgICAgIC8vIC8vXHJcbiAgICAgIC8vIC8vICAgSlNCcmlkZ2UuSW5zdGFuY2UuT3BlblN1YkZvcm0odGhpcy5nZXRTdWJGb3JtQ3RybCgpLmdldE5hbWUoKSwgUGFyZW50Rm9ybS5nZXRUYXNrKCkuZ2V0VGFza1RhZygpLCBnZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1fTkFNRSkuZ2V0VmFsdWUoKSwgX3Rhc2suZ2V0VGFza1RhZygpLCBpbnB1dENvbnRyb2xzKTtcclxuICAgICAgLy8gLy8gfVxyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBtZ0Zvcm0uT3BlbmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFBlcmZvcm1zIGZpcnN0IHJlZnJlc2ggZm9yIHRoZSB0YWJsZSBjb250cm9sIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgYXN5bmMgRG9GaXJzdFJlZnJlc2hUYWJsZShtZ0Zvcm06IE1nRm9ybUJhc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChtZ0Zvcm0gIT09IG51bGwgJiYgIW1nRm9ybS5pZ25vcmVGaXJzdFJlZnJlc2hUYWJsZSkge1xyXG4gICAgICBtZ0Zvcm0uaWdub3JlRmlyc3RSZWZyZXNoVGFibGUgPSB0cnVlO1xyXG4gICAgICBhd2FpdCBtZ0Zvcm0uZmlyc3RUYWJsZVJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGNhcmV0LCB3aXRoaW4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB3aGljaCBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gdGhlIHNlbGVjdGVkIHRleHQgPC9wYXJhbT5cclxuICBzdGF0aWMgQ2FyZXRQb3NHZXQoY3RybDogTWdDb250cm9sQmFzZSk6IG51bWJlciB7XHJcbiAgICBsZXQgY2FyZXRQb3M6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKGN0cmwuaXNUZXh0Q29udHJvbCgpKVxyXG4gICAgICBjYXJldFBvcyA9IENvbW1hbmRzLmNhcmV0UG9zR2V0KGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSkpO1xyXG5cclxuICAgIHJldHVybiBjYXJldFBvcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2xlYXIgdGhlIHN0YXR1cyBiYXIgZGVwZW5kaW5nIG9uIHRoZSBjb250cm9sIHNwZWNpZmljIHN0YXR1cyBtZXNzYWdlIG9yIGZvcm0gc3BlY2lmaWMgc3RhdHVzIG1lc3NhZ2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tcIj50YXNrPC9wYXJhbT5cclxuICBzdGF0aWMgQ2xlYXJTdGF0dXNCYXIodGFzazogR3VpVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIGxldCBjdXJyZW50UGFya2VkQ29udHJvbDogTWdDb250cm9sQmFzZSA9IHRhc2suZ2V0TGFzdFBhcmtlZEN0cmwoKTtcclxuXHJcbiAgICBpZiAoY3VycmVudFBhcmtlZENvbnRyb2wgIT09IG51bGwgJiYgIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShjdXJyZW50UGFya2VkQ29udHJvbC5Qcm9tcHRIZWxwKSlcclxuICAgICAgdGFzay5Xcml0ZVRvTWVzc2FnZVBhbmUoY3VycmVudFBhcmtlZENvbnRyb2wuUHJvbXB0SGVscCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIE1hbmFnZXIuQ2xlYW5NZXNzYWdlUGFuZSh0YXNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbGVhbiB0aGUgc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ2xlYW5NZXNzYWdlUGFuZSh0YXNrOiBHdWlUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGFzay5Xcml0ZVRvTWVzc2FnZVBhbmUoTWFuYWdlci5HZXRDdXJyZW50UnVudGltZUNvbnRleHQoKS5EZWZhdWx0U3RhdHVzTXNnKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWVzc2FnZSBzdHJpbmcgdG8gYmUgZGlzcGxheWVkIG9uIHN0YXR1cyBiYXIgb3IgaW4gTWVzc2FnZSBib3hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnXCI+IGlucHV0IG1lc3NhZ2Ugc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgbWVzc2FnZSBzdHJpbmcgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRNZXNzYWdlKG1zZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChtc2cgPT09IG51bGwpXHJcbiAgICAgIG1zZyA9IFwiXCI7XHJcbiAgICBlbHNlIGlmIChtc2cubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgaWR4T2ZDYXJyaWFnZTogbnVtYmVyID0gbXNnLmluZGV4T2YoXCJcXHJcIik7XHJcbiAgICAgIGlmIChpZHhPZkNhcnJpYWdlICE9PSAtMSlcclxuICAgICAgICBtc2cgPSBtc2cuc3Vic3RyKDAsIGlkeE9mQ2FycmlhZ2UpO1xyXG5cclxuICAgICAgbGV0IGlkeE9mTmV3TGluZTogbnVtYmVyID0gbXNnLmluZGV4T2YoXCJcXG5cIik7XHJcbiAgICAgIGlmIChpZHhPZk5ld0xpbmUgIT09IC0xKVxyXG4gICAgICAgIG1zZyA9IG1zZy5zdWJzdHIoMCwgaWR4T2ZOZXdMaW5lKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbXNnO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFVzZWQgdG8gcHV0IHRoZSB0ZXh0IG9uIGEgdGV4dCBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj4gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRleHRcIj4gPC9wYXJhbT5cclxuICBzdGF0aWMgU2V0RWRpdFRleHQoY3RybDogTWdDb250cm9sQmFzZSwgdGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBDb21tYW5kcy5zZXRFZGl0VGV4dChjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKHRydWUpLCB0ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSW5zZXJ0IHRleHQgdG8gYSB0ZXh0IGNvbnRyb2wgYXQgYSBnaXZlbiBwb3NpdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RhcnRQb3NpdGlvblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGV4dFRvSW5zZXJ0XCI+PC9wYXJhbT5cclxuICBzdGF0aWMgSW5zZXJ0RWRpdFRleHQoY3RybDogTWdDb250cm9sQmFzZSwgc3RhcnRQb3NpdGlvbjogbnVtYmVyLCB0ZXh0VG9JbnNlcnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgQ29tbWFuZHMuaW5zZXJ0RWRpdFRleHQoY3RybCwgY3RybC5nZXREaXNwbGF5TGluZSh0cnVlKSwgc3RhcnRQb3NpdGlvbiwgdGV4dFRvSW5zZXJ0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gVG9vbHRpcFRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gcmV0dXJucyBUb29sdGlwVGltZW91dDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0VG9vbHRpcFRpbWVvdXQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRUb29sdGlwVGltZW91dCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm4gU3BlY2lhbEVkaXRMZWZ0QWxpZ25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldFNwZWNpYWxFZGl0TGVmdEFsaWduKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNwZWNpYWxFZGl0TGVmdEFsaWduKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmV0dXJucyBkZWZhdWx0IGRhdGUgZm9ybWF0IGRlcGVuZGluZyBvbiBkYXRlIG1vZGUgYW5kIGRhdGUgc2VwYXJhdG9yLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBTdHJpbmcgZGVmYXVsdCBkYXRlIGZvcm1hdDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0RGVmYXVsdERhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgbGV0IGRhdGVTZXBlcmF0b3I6IHN0cmluZyA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldERhdGUoKTtcclxuXHJcbiAgICAvLyBBcnJhbmdlIGRhdGUgZm9ybWF0IGFjY29yZGluZyB0byB0aGUgZGF0ZSBtb2RlLlxyXG4gICAgc3dpdGNoIChHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXREYXRlTW9kZSgwKSkge1xyXG4gICAgICBjYXNlICdTJzogLy8gU2NhbmRpbmF2aWFuXHJcbiAgICAgICAgZGF0ZUZvcm1hdCA9IFwiWVlZWVwiICsgZGF0ZVNlcGVyYXRvciArIFwiTU1cIiArIGRhdGVTZXBlcmF0b3IgKyBcIkREXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdCJzogLy8gQnVkZGhpc3RcclxuXHJcbiAgICAgIGNhc2UgJ0UnOiAvLyBFdXJvcGVhblxyXG4gICAgICAgIGRhdGVGb3JtYXQgPSBcIkREXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJNTVwiICsgZGF0ZVNlcGVyYXRvciArIFwiWVlZWVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnQSc6IC8vIEFtZXJpY2FuXHJcbiAgICAgICAgZGF0ZUZvcm1hdCA9IFwiTU1cIiArIGRhdGVTZXBlcmF0b3IgKyBcIkREXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJZWVlZXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZUZvcm1hdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm4gZGVmYXVsdCB0aW1lIGZvcm1hdCB1c2luZyB0aW1lIHNlcGFyYXRvci5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldERlZmF1bHRUaW1lRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGltZVNlcGVyYXRvcjogc3RyaW5nID0gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0VGltZSgpO1xyXG4gICAgbGV0IHRpbWVGb3JtYXQ6IHN0cmluZyA9IFwiSEhcIiArIHRpbWVTZXBlcmF0b3IgKyBcIk1NXCIgKyB0aW1lU2VwZXJhdG9yICsgXCJTU1wiO1xyXG4gICAgcmV0dXJuIHRpbWVGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgdGhlIHJ1bnRpbWUgY29udGV4dCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IHRocmVhZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5SdW50aW1lQ29udGV4dEJhc2U8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldEN1cnJlbnRSdW50aW1lQ29udGV4dCgpOiBSdW50aW1lQ29udGV4dEJhc2Uge1xyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dChNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgdGhlIGNvbnRleHRJRCB1c2luZyB0aGUgR3VpTWdGb3JtLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdPYmplY3RcIj5NYWdpYyBPYmplY3QgLSBHdWlNZ0Zvcm0vR3VpTWdDb250cm9sL0xvZ2ljYWwgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPmNvbnRleHRJRDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q29udGV4dElEKG1nT2JqZWN0OiBhbnkpOiBudW1iZXIge1xyXG4gICAgbGV0IGd1aU1nRm9ybTogR3VpTWdGb3JtID0gbnVsbDtcclxuXHJcbiAgICBpZiAobWdPYmplY3QgaW5zdGFuY2VvZiBHdWlNZ0NvbnRyb2wpXHJcbiAgICAgIGd1aU1nRm9ybSA9ICg8R3VpTWdDb250cm9sPm1nT2JqZWN0KS5HdWlNZ0Zvcm07XHJcbiAgICBlbHNlIGlmIChtZ09iamVjdCBpbnN0YW5jZW9mIEd1aU1nRm9ybSlcclxuICAgICAgZ3VpTWdGb3JtID0gPEd1aU1nRm9ybT5tZ09iamVjdDtcclxuXHJcbiAgICByZXR1cm4gRXZlbnRzLkdldENvbnRleHRJRChndWlNZ0Zvcm0pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTaG93cyB3aW5kb3dzIGhlbHAuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmaWxlUGF0aFwiPnBhdGggb2YgdGhlIGhlbHAgZmlsZS48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhlbHBDbWRcIj5oZWxwIGNvbW1hbmQuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZWxwS2V5XCI+c2VhcmNoIGtleSB3b3JkLjwvcGFyYW0+XHJcbiAgc3RhdGljIFNob3dXaW5kb3dIZWxwKGZpbGVQYXRoOiBzdHJpbmcsIGhlbHBDbWQ6IEhlbHBDb21tYW5kLCBoZWxwS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIFNwZWNpYWxWYWxOZXdQb2xpY3lcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHVibGljIHN0YXRpYyBHZXRTcGVjaWFsVmFsTmV3UG9saWN5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNwZWNpYWxWYWxOZXdQb2xpY3koKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIGhlbHBlciBjbGFzcyBmb3Igc2V0dGluZy9yZXNldHRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCBJRC5cclxuLy8vIFdlIHJlcXVpcmUgdGhpcyBjbGFzcyBzcGVjaWZpY2FsbHkgZm9yIE1vZGFsIHdpbmRvd3MuIFdoZW4gd2Ugb3BlbiBhIG1vZGFsIHdpbmRvdyB0aGVuXHJcbi8vLyBpdCB3YWl0cyBpbiBHdWlUaHJlYWQuIE1lYW4gd2hpbGUgR3VpVGhyZWFkIGNhbiByZWNlaXZlIHRoZSBldmVudHMgb2Ygb3RoZXIgY29udGV4dCBhbmRcclxuLy8vIGFmdGVyIHByb2Nlc3NpbmcgdGhlc2UgZXZlbnRzLCB3ZSBzaG91bGQgcmVzZXQgdGhlIGNvbnRleHRJRCBvZiB0aGUgTW9kYWwgd2luZG93cyBiZWNhdXNlXHJcbi8vLyBpdCB3aWxsIGJlIHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGV2ZW50cyB3aGVuIHdlIGNsb3NlIHRoZSBtb2RhbCB3aW5kb3cuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0SURHdWFyZCB7XHJcbiAgcHJpdmF0ZSBfcHJldkNvbnRleHRJRDogc3RyaW5nID0gJ1xcMCc7XHJcblxyXG4gIC8vIEZvciBkZWJ1Z2dpbmcgcHVycG9zZSBvbmx5LlxyXG4gIC8vIEl0IHdpbGwgaG9sZCB0aGUgZmlsZSBuYW1lIGZyb20gd2hpY2ggdGhlIG9iamVjdCBvZiBDb250ZXh0SURHdWFyZCBpcyBjcmVhdGVkLlxyXG4gIHByaXZhdGUgX2ZpbGVOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpO1xyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHRJRDogc3RyaW5nKTtcclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0SUQ/OiBzdHJpbmcpIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzEoY29udGV4dElEKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ByZXZDb250ZXh0SUQgPSBNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKTtcclxuICAgIHRoaXMuU2F2ZUZpbGVuYW1lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEoY29udGV4dElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuU2V0Q3VycmVudChjb250ZXh0SUQpO1xyXG4gICAgdGhpcy5TYXZlRmlsZW5hbWUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0cyB0aGUgY29udGV4dCBJRCB0byAnZ3VhcmQnLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElEXCI+bmV3IGNvbnRleHQgSUQgdG8gJ2d1YXJkJy48L3BhcmFtPlxyXG4gIFNldEN1cnJlbnQoY29udGV4dElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChjb250ZXh0SUQgIT09IHRoaXMuX3ByZXZDb250ZXh0SUQpIHtcclxuICAgICAgdGhpcy5fcHJldkNvbnRleHRJRCA9IGNvbnRleHRJRDtcclxuICAgICAgTWFuYWdlci5TZXRDdXJyZW50Q29udGV4dElEKGNvbnRleHRJRCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCB0aGUgZmlsZSBuYW1lIGZyb20gd2hpY2ggdGhlIENvbnRleHRJREd1YXJkIGlzIGJlaW5nIGNyZWF0ZWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIFNhdmVGaWxlbmFtZSgpOiB2b2lkIHtcclxuICAgIGxldCBzdGFja0ZyYW1lOiBTdGFja0ZyYW1lID0gbmV3IFN0YWNrRnJhbWUoMSk7XHJcbiAgICB0aGlzLl9maWxlTmFtZSA9IHN0YWNrRnJhbWUuR2V0RmlsZU5hbWUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEaXNwb3NlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3ByZXZDb250ZXh0SUQgIT09IE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKVxyXG4gICAgICBNYW5hZ2VyLlNldEN1cnJlbnRDb250ZXh0SUQodGhpcy5fcHJldkNvbnRleHRJRCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1 +1,2 @@
1
+ export {};
1
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9lbnYvSUVudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmNvZGluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gZnVuY3Rpb25hbGl0eSByZXF1aXJlZCBieSB0aGUgR1VJIG5hbWVzcGFjZSBmcm9tIHRoZSBFbnZpcm9ubWVudCBjbGFzcy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGludGVyZmFjZSBJRW52aXJvbm1lbnQge1xyXG5cclxuICBMYW5ndWFnZTogc3RyaW5nO1xyXG5cclxuICBTcGVjaWFsTnVtcGFkUGx1c0NoYXI6IGJvb2xlYW47XHJcblxyXG4gIFNwZWNpYWxPbGRab3JkZXI6IGJvb2xlYW47XHJcblxyXG4gIFNwZWNpYWxSZXN0b3JlTWF4aW1pemVkRm9ybTogYm9vbGVhbjtcclxuXHJcbiAgU3BlY2lhbElnbm9yZUJHaW5Nb2RpZnk6IGJvb2xlYW47XHJcblxyXG4gIElnbm9yZVJlcGxhY2VEZWNpbWFsU2VwYXJhdG9yOiBib29sZWFuO1xyXG5cclxuICAvLyBpbnN0cnVjdCBob3cgdG8gcmVmZXIgYSBmb3J3YXJkIHNsYXNoIC0gZWl0aGVyIGFzIGEgcmVsYXRpdmUgd2ViIHVybCwgb3IgYXMgYSBmaWxlIGluIHRoZSBmaWxlIHN5c3RlbS5cclxuICBGb3J3YXJkU2xhc2hVc2FnZTogc3RyaW5nO1xyXG5cclxuICBHZXREYXRlTW9kZShjb21wSWR4OiBudW1iZXIpOiBzdHJpbmc7XHJcblxyXG4gIEdldENlbnR1cnkoY29tcElkeDogbnVtYmVyKTogbnVtYmVyO1xyXG5cclxuICBHZXREYXRlKCk6IHN0cmluZztcclxuXHJcbiAgR2V0VGltZSgpOiBzdHJpbmc7XHJcblxyXG4gIEdldERlY2ltYWwoKTogc3RyaW5nO1xyXG5cclxuICBDYW5SZXBsYWNlRGVjaW1hbFNlcGFyYXRvcigpOiBib29sZWFuO1xyXG5cclxuICBHZXRUaG91c2FuZHMoKTogc3RyaW5nO1xyXG5cclxuICBHZXREZWZhdWx0Q29sb3IoKTogbnVtYmVyO1xyXG5cclxuICBHZXREZWZhdWx0Rm9jdXNDb2xvcigpOiBudW1iZXI7XHJcblxyXG4gIEdldFRvb2x0aXBUaW1lb3V0KCk6IG51bWJlcjtcclxuXHJcbiAgR2V0U3BlY2lhbEVkaXRMZWZ0QWxpZ24oKTogYm9vbGVhbjtcclxuXHJcbiAgR2V0R1VJRCgpOiBzdHJpbmc7XHJcblxyXG4gIEdldENvbnRyb2xzUGVyc2lzdGVuY3lQYXRoKCk6IHN0cmluZztcclxuXHJcbiAgR2V0SW1lQXV0b09mZigpOiBib29sZWFuO1xyXG5cclxuICBHZXRMb2NhbEFzNDAwU2V0KCk6IGJvb2xlYW47XHJcblxyXG4gIHNldERlY2ltYWxTZXBhcmF0b3IodmFsdWU6IHN0cmluZykgOiB2b2lkO1xyXG5cclxuICBzZXRUaG91c2FuZHNTZXBhcmF0b3IodmFsdWU6IHN0cmluZykgOiB2b2lkO1xyXG5cclxuICBHZXRMb2NhbEZsYWcoZjogc3RyaW5nKTogYm9vbGVhbjtcclxuXHJcbiAgR2V0U2lnbmlmaWNhbnROdW1TaXplKCk6IG51bWJlcjtcclxuXHJcbiAgR2V0RGVidWdMZXZlbCgpOiBudW1iZXI7XHJcblxyXG4gIEdldEVuY29kaW5nKCk6IEVuY29kaW5nO1xyXG5cclxuICBHZXREcm9wVXNlckZvcm1hdHMoKTogc3RyaW5nO1xyXG5cclxuICBHZXRTcGVjaWFsRW5nTG9nb24oKTogYm9vbGVhbjtcclxuXHJcbiAgR2V0U3BlY2lhbElnbm9yZUJ1dHRvbkZvcm1hdCgpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsU3dmQ29udHJvbE5hbWVQcm9wZXJ0eSgpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsTG9nSW50ZXJuYWxFeGNlcHRpb25zKCk6IGJvb2xlYW47XHJcblxyXG4gIEdldFNwZWNpYWxUZXh0U2l6ZUZhY3RvcmluZygpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsRmxhdEVkaXRPbkNsYXNzaWNUaGVtZSgpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsRGlzYWJsZU1vdXNlV2hlZWwoKTogYm9vbGVhbjtcclxuXHJcbiAgZ2V0Q29udGV4dEluYWN0aXZpdHlUaW1lb3V0KCk6IG51bWJlcjtcclxuXHJcbiAgZ2V0Q2xpZW50Q29udGV4dEluYWN0aXZpdHlUaW1lb3V0KCk6IG51bWJlcjtcclxuXHJcbiAgZ2V0Q29udGV4dEluYWN0aXZpdHlXYXJuaW5nVGltZSgpOiBudW1iZXI7XHJcblxyXG4gIGdldElkbGVUaW1lKGNvbXBJZHg6IG51bWJlcik6IG51bWJlcjtcclxuXHJcbiAgR2V0U3BlY2lhbFZhbE5ld1BvbGljeSgpOiBib29sZWFuO1xyXG4gIEdldFNwZWNpYWxDYW5jZWxPbkNyZWF0ZSgpOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -1 +1,2 @@
1
+ export {};
1
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcFBhcmVudEludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvZ3VpL1Byb3BQYXJlbnRJbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvcGVydHl9IGZyb20gXCIuLi9tYW5hZ2VtZW50L2d1aS9Qcm9wZXJ0eVwiO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gXCIuLi9tYW5hZ2VtZW50L2d1aS9NZ0Zvcm1CYXNlXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtSZWZQYXJhbX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb3BQYXJlbnRJbnRlcmZhY2Uge1xyXG4gIGdldENvbXBJZHgoKTogbnVtYmVyO1xyXG5cclxuICBnZXRQcm9wKHByb3BJZDogbnVtYmVyKTogUHJvcGVydHk7XHJcblxyXG4gIGNoZWNrSWZFeGlzdFByb3AocHJvcElkOiBudW1iZXIpOiBib29sZWFuO1xyXG5cclxuICBnZXRGb3JtKCk6IE1nRm9ybUJhc2U7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGZpcnN0IHJlZnJlc2hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgSXNGaXJzdFJlZnJlc2hPZlByb3BzKCk6IGJvb2xlYW47XHJcblxyXG4gIEV2YWx1YXRlRXhwcmVzc2lvbihleHBJZDogbnVtYmVyLCByZXNUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBsZW5ndGg6IG51bWJlciwgY29udGVudFR5cGVVbmljb2RlOiBib29sZWFuLCByZXNDZWxsVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgYWx3YXlzRXZhbHVhdGU6IGJvb2xlYW4sIHdhc0V2YWx1YXRlZDogUmVmUGFyYW08Ym9vbGVhbj4pOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIEdldEV4cHJlc3Npb25TdG9yYWdlKGV4cElkOiBudW1iZXIpOiBTdG9yYWdlQXR0cmlidXRlO1xyXG59XHJcbiJdfQ==