@magic-xpa/gui 4.800.0-dev480.20 → 4.800.0-dev480.203

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 (105) hide show
  1. package/bundles/magic-xpa-gui.umd.js +1048 -7528
  2. package/bundles/magic-xpa-gui.umd.js.map +1 -1
  3. package/bundles/magic-xpa-gui.umd.min.js +1 -1
  4. package/bundles/magic-xpa-gui.umd.min.js.map +1 -1
  5. package/esm2015/index.js +1 -1
  6. package/esm2015/magic-xpa-gui.js +1 -4
  7. package/esm2015/src/Commands.js +11 -114
  8. package/esm2015/src/Events.js +1 -517
  9. package/esm2015/src/EventsProcessor.js +1 -51
  10. package/esm2015/src/FocusManager.js +1 -13
  11. package/esm2015/src/GuiConstants.js +2 -11
  12. package/esm2015/src/GuiEnums.js +126 -130
  13. package/esm2015/src/GuiEnvironment.js +1 -1
  14. package/esm2015/src/IFlowMonitorQueue.js +1 -1
  15. package/esm2015/src/Manager.js +10 -148
  16. package/esm2015/src/UIBridge.js +1 -6
  17. package/esm2015/src/env/IEnvironment.js +1 -1
  18. package/esm2015/src/gui/ControlBase.js +1 -1
  19. package/esm2015/src/gui/GuiMgControl.js +1 -94
  20. package/esm2015/src/gui/GuiMgForm.js +1 -1
  21. package/esm2015/src/gui/KeyboardItem.js +5 -46
  22. package/esm2015/src/gui/LastFocusedVal.js +1 -5
  23. package/esm2015/src/gui/MgValue.js +1 -1
  24. package/esm2015/src/gui/PropParentInterface.js +1 -1
  25. package/esm2015/src/gui/low/DialogHandler.js +1 -10
  26. package/esm2015/src/gui/low/GuiCommand.js +1 -12
  27. package/esm2015/src/gui/low/GuiCommandQueue.js +1 -66
  28. package/esm2015/src/gui/low/GuiInteractive.js +8 -465
  29. package/esm2015/src/gui/low/Style.js +1 -9
  30. package/esm2015/src/management/RuntimeContextBase.js +11 -14
  31. package/esm2015/src/management/data/BlobType.js +0 -0
  32. package/esm2015/src/management/data/DcValues.js +8 -67
  33. package/esm2015/src/management/data/DcValuesBuilderBase.js +2 -37
  34. package/esm2015/src/management/data/FieldDef.js +1 -95
  35. package/esm2015/src/management/data/FieldsTable.js +2 -28
  36. package/esm2015/src/management/data/GuiDataViewBase.js +33 -72
  37. package/esm2015/src/management/data/GuiFieldBase.js +4 -39
  38. package/esm2015/src/management/data/IRecord.js +1 -1
  39. package/esm2015/src/management/data/IReferencedObject.js +1 -8
  40. package/esm2015/src/management/data/NUM_TYPE.js +14 -485
  41. package/esm2015/src/management/data/ObjectReferenceBase.js +1 -3
  42. package/esm2015/src/management/data/ObjectReferencesCollection.js +1 -2
  43. package/esm2015/src/management/data/RecordUtils.js +6 -112
  44. package/esm2015/src/management/data/VectorType.js +17 -252
  45. package/esm2015/src/management/data/VectorTypeBase.js +1 -35
  46. package/esm2015/src/management/events/IActionManager.js +1 -1
  47. package/esm2015/src/management/events/IGuiEventsManager.js +1 -1
  48. package/esm2015/src/management/exp/ExpressionInterface.js +5 -3
  49. package/esm2015/src/management/exp/GuiExpressionEvaluator.js +38 -155
  50. package/esm2015/src/management/gui/ControlTable.js +18 -72
  51. package/esm2015/src/management/gui/DisplayConvertor.js +43 -493
  52. package/esm2015/src/management/gui/FieldValidator.js +58 -339
  53. package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +1 -1
  54. package/esm2015/src/management/gui/GuiFormPropertyAdapter.js +1 -8
  55. package/esm2015/src/management/gui/HebrewDate.js +3 -140
  56. package/esm2015/src/management/gui/Helps.js +2 -48
  57. package/esm2015/src/management/gui/MgControlBase.js +143 -876
  58. package/esm2015/src/management/gui/MgFormBase.js +68 -407
  59. package/esm2015/src/management/gui/PIC.js +56 -285
  60. package/esm2015/src/management/gui/PropDefaults.js +13 -48
  61. package/esm2015/src/management/gui/PropInterface.js +2 -4
  62. package/esm2015/src/management/gui/PropTable.js +72 -183
  63. package/esm2015/src/management/gui/Property.js +35 -372
  64. package/esm2015/src/management/gui/ValidationDetails.js +10 -52
  65. package/esm2015/src/management/gui/ValidationDetailsBase.js +12 -45
  66. package/esm2015/src/management/gui/WrongFormatException.js +1 -15
  67. package/esm2015/src/management/tasks/GuiDataCollection.js +1 -1
  68. package/esm2015/src/management/tasks/GuiTaskBase.js +38 -383
  69. package/esm2015/src/management/tasks/IMGDataTable.js +1 -1
  70. package/esm2015/src/management/tasks/ITask.js +1 -1
  71. package/esm2015/src/management/tasks/MgTimer.js +1 -16
  72. package/esm2015/src/management/tasks/TaskDefinitionId.js +8 -18
  73. package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +1 -13
  74. package/esm2015/src/util/AuthenticationDialogHandler.js +1 -4
  75. package/esm2015/src/util/MemoryUtil.js +1 -41
  76. package/esm2015/src/util/ObjectReference.js +1 -8
  77. package/esm2015/src/util/ProcessLauncher.js +3 -21
  78. package/esm2015/src/util/UsernamePasswordCredentials.js +1 -9
  79. package/fesm2015/magic-xpa-gui.js +855 -7052
  80. package/fesm2015/magic-xpa-gui.js.map +1 -1
  81. package/magic-xpa-gui.d.ts +0 -3
  82. package/package.json +2 -2
  83. package/src/Commands.d.ts +2 -0
  84. package/src/Events.d.ts +0 -2
  85. package/src/GuiEnums.d.ts +125 -128
  86. package/src/env/IEnvironment.d.ts +3 -0
  87. package/src/gui/PropParentInterface.d.ts +1 -1
  88. package/src/gui/low/GuiInteractive.d.ts +3 -1
  89. package/src/gui/low/Style.d.ts +0 -3
  90. package/src/management/RuntimeContextBase.d.ts +2 -0
  91. package/src/management/data/GuiDataViewBase.d.ts +4 -4
  92. package/src/management/data/IRecord.d.ts +1 -1
  93. package/src/management/exp/ExpressionInterface.d.ts +4 -0
  94. package/src/management/exp/GuiExpressionEvaluator.d.ts +4 -6
  95. package/src/management/gui/ControlTable.d.ts +1 -1
  96. package/src/management/gui/DisplayConvertor.d.ts +1 -1
  97. package/src/management/gui/GuiControlPropertyAdapter.d.ts +1 -1
  98. package/src/management/gui/MgControlBase.d.ts +7 -7
  99. package/src/management/gui/MgFormBase.d.ts +6 -6
  100. package/src/management/gui/PIC.d.ts +1 -0
  101. package/src/management/gui/PropInterface.d.ts +2 -4
  102. package/src/management/gui/PropTable.d.ts +4 -5
  103. package/src/management/gui/Property.d.ts +1 -1
  104. package/src/management/tasks/GuiTaskBase.d.ts +8 -14
  105. package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
@@ -1,7 +1,5 @@
1
1
  export class Styles {
2
2
  }
3
- // styles that call from style2style
4
- // -------------------------------------
5
3
  Styles.PROP_STYLE_BUTTON_PUSH = 0x00000001;
6
4
  Styles.PROP_STYLE_BUTTON_IMAGE = 0x00000002;
7
5
  Styles.PROP_STYLE_BUTTON_HYPERTEXT = 0x00000004;
@@ -28,8 +26,6 @@ Styles.PROP_STYLE_NO_BACKGROUND = 0x10000000;
28
26
  Styles.PROP_STYLE_SHOW_LINES = 0x20000000;
29
27
  Styles.PROP_STYLE_HORIZONTAL = 0x40000000;
30
28
  Styles.PROP_STYLE_VERTICAL = 0x80000000;
31
- // -------------------------------------
32
- // confirmation box
33
29
  Styles.MSGBOX_BUTTON_OK = 0x00000000;
34
30
  Styles.MSGBOX_BUTTON_OK_CANCEL = 0x00000001;
35
31
  Styles.MSGBOX_BUTTON_ABORT_RETRY_IGNORE = 0x00000002;
@@ -41,7 +37,6 @@ Styles.MSGBOX_ICON_QUESTION = 0x00000020;
41
37
  Styles.MSGBOX_ICON_EXCLAMATION = 0x00000030;
42
38
  Styles.MSGBOX_ICON_INFORMATION = 0x00000040;
43
39
  Styles.MSGBOX_ICON_WARNING = Styles.MSGBOX_ICON_EXCLAMATION;
44
- // message box result
45
40
  Styles.MSGBOX_RESULT_OK = 1;
46
41
  Styles.MSGBOX_RESULT_CANCEL = 2;
47
42
  Styles.MSGBOX_RESULT_ABORT = 3;
@@ -49,7 +44,4 @@ Styles.MSGBOX_RESULT_RETRY = 4;
49
44
  Styles.MSGBOX_RESULT_IGNORE = 5;
50
45
  Styles.MSGBOX_RESULT_YES = 6;
51
46
  Styles.MSGBOX_RESULT_NO = 7;
52
- Styles.MSGBOX_DEFAULT_BUTTON_1 = 0x00000000;
53
- Styles.MSGBOX_DEFAULT_BUTTON_2 = 0x00000100;
54
- Styles.MSGBOX_DEFAULT_BUTTON_3 = 0x00000200;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL2d1aS9sb3cvU3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFRLE1BQU07O0FBRWxCLG9DQUFvQztBQUNwQyx3Q0FBd0M7QUFDL0IsNkJBQXNCLEdBQVcsVUFBVSxDQUFDO0FBQzdDLDhCQUF1QixHQUFXLFVBQVUsQ0FBQztBQUM3QyxrQ0FBMkIsR0FBVyxVQUFVLENBQUM7QUFDakQsc0NBQStCLEdBQVcsVUFBVSxDQUFDO0FBRXJELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQywrQkFBd0IsR0FBVyxVQUFVLENBQUM7QUFDOUMsbUNBQTRCLEdBQVcsVUFBVSxDQUFDO0FBQ2xELGlDQUEwQixHQUFXLFVBQVUsQ0FBQztBQUNoRCx1QkFBZ0IsR0FBVyxVQUFVLENBQUM7QUFDdEMsdUJBQWdCLEdBQVcsVUFBVSxDQUFDO0FBQ3RDLHFCQUFjLEdBQVcsVUFBVSxDQUFDO0FBQ3BDLHFCQUFjLEdBQVcsVUFBVSxDQUFDO0FBQ3BDLHdCQUFpQixHQUFXLFVBQVUsQ0FBQztBQUN2QyxtQ0FBNEIsR0FBVyxVQUFVLENBQUM7QUFDbEQsb0NBQTZCLEdBQVcsVUFBVSxDQUFDO0FBQ25ELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyxrQ0FBMkIsR0FBVyxVQUFVLENBQUM7QUFDakQsbUNBQTRCLEdBQVcsVUFBVSxDQUFDO0FBQ2xELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyw0QkFBcUIsR0FBVyxVQUFVLENBQUM7QUFDM0MsOEJBQXVCLEdBQVcsVUFBVSxDQUFDO0FBQzdDLGlDQUEwQixHQUFXLFVBQVUsQ0FBQztBQUNoRCwrQkFBd0IsR0FBVyxVQUFVLENBQUM7QUFDOUMsNEJBQXFCLEdBQVcsVUFBVSxDQUFDO0FBQzNDLDRCQUFxQixHQUFXLFVBQVUsQ0FBQztBQUMzQywwQkFBbUIsR0FBVyxVQUFVLENBQUM7QUFFakQsd0NBQXdDO0FBQ3hDLG1CQUFtQjtBQUNYLHVCQUFnQixHQUFXLFVBQVUsQ0FBQztBQUN0Qyw4QkFBdUIsR0FBVyxVQUFVLENBQUM7QUFDN0MsdUNBQWdDLEdBQVcsVUFBVSxDQUFDO0FBQ3RELGtDQUEyQixHQUFXLFVBQVUsQ0FBQztBQUNqRCwyQkFBb0IsR0FBVyxVQUFVLENBQUM7QUFDMUMsaUNBQTBCLEdBQVcsVUFBVSxDQUFDO0FBRWhELHdCQUFpQixHQUFXLFVBQVUsQ0FBQztBQUN2QywyQkFBb0IsR0FBVyxVQUFVLENBQUM7QUFDMUMsOEJBQXVCLEdBQVcsVUFBVSxDQUFDO0FBQzdDLDhCQUF1QixHQUFXLFVBQVUsQ0FBQztBQUM5QywwQkFBbUIsR0FBVyxNQUFNLENBQUMsdUJBQXVCLENBQUM7QUFHcEUscUJBQXFCO0FBQ2QsdUJBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLDJCQUFvQixHQUFHLENBQUMsQ0FBQztBQUN6QiwwQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDeEIsMEJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLDJCQUFvQixHQUFHLENBQUMsQ0FBQztBQUN6Qix3QkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDdEIsdUJBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBRXJCLDhCQUF1QixHQUFXLFVBQVUsQ0FBQztBQUM3Qyw4QkFBdUIsR0FBVyxVQUFVLENBQUM7QUFDN0MsOEJBQXVCLEdBQVcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzICBTdHlsZXNcclxue1xyXG4gIC8vIHN0eWxlcyB0aGF0IGNhbGwgZnJvbSBzdHlsZTJzdHlsZVxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgc3RhdGljICBQUk9QX1NUWUxFX0JVVFRPTl9QVVNIOiBudW1iZXIgPSAweDAwMDAwMDAxO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9CVVRUT05fSU1BR0U6IG51bWJlciA9IDB4MDAwMDAwMDI7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0JVVFRPTl9IWVBFUlRFWFQ6IG51bWJlciA9IDB4MDAwMDAwMDQ7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0JVVFRPTl9URVhUX09OX0lNQUdFOiBudW1iZXIgPSAweDAwMDAwMDA4O1xyXG5cclxuICBzdGF0aWMgIFBST1BfU1RZTEVfSE9SX1JJR0hUOiBudW1iZXIgPSAweDAwMDAwMDEwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9SSUdIVF9UT19MRUZUOiBudW1iZXIgPSAweDAwMDAwMDIwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9IT1JJWk9OVEFMX1NDUk9MTDogbnVtYmVyID0gMHgwMDAwMDA0MDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfVkVSVElDQUxfU0NST0xMOiBudW1iZXIgPSAweDAwMDAwMDgwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9USVRMRTogbnVtYmVyID0gMHgwMDAwMDEwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfQ0xPU0U6IG51bWJlciA9IDB4MDAwMDAyMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX01JTjogbnVtYmVyID0gMHgwMDAwMDQwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfTUFYOiBudW1iZXIgPSAweDAwMDAwODAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9CT1JERVI6IG51bWJlciA9IDB4MDAwMDEwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0JPUkRFUl9TVFlMRV9USElOOiBudW1iZXIgPSAweDAwMDAyMDAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9CT1JERVJfU1RZTEVfVEhJQ0s6IG51bWJlciA9IDB4MDAwMDQwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX1JFQURfT05MWTogbnVtYmVyID0gMHgwMDAwODAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfQVBQRUFSQU5DRV9DSEVDSzogbnVtYmVyID0gMHgwMDAxMDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfQVBQRUFSQU5DRV9CVVRUT046IG51bWJlciA9IDB4MDAwMjAwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX1dPUkRfV1JBUDogbnVtYmVyID0gMHgwMDA0MDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfU1RZTEVfRkxBVDogbnVtYmVyID0gMHgwMDA4MDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfVEFCX1NJREVfVE9QOiBudW1iZXIgPSAweDA0MDAwMDAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9UQUJfU0lERV9CT1RUT006IG51bWJlciA9IDB4MDgwMDAwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX05PX0JBQ0tHUk9VTkQ6IG51bWJlciA9IDB4MTAwMDAwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX1NIT1dfTElORVM6IG51bWJlciA9IDB4MjAwMDAwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0hPUklaT05UQUw6IG51bWJlciA9IDB4NDAwMDAwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX1ZFUlRJQ0FMOiBudW1iZXIgPSAweDgwMDAwMDAwO1xyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgLy8gY29uZmlybWF0aW9uIGJveFxyXG4gIHN0YXRpYyAgTVNHQk9YX0JVVFRPTl9PSzogbnVtYmVyID0gMHgwMDAwMDAwMDtcclxuICBzdGF0aWMgIE1TR0JPWF9CVVRUT05fT0tfQ0FOQ0VMOiBudW1iZXIgPSAweDAwMDAwMDAxO1xyXG4gIHN0YXRpYyAgTVNHQk9YX0JVVFRPTl9BQk9SVF9SRVRSWV9JR05PUkU6IG51bWJlciA9IDB4MDAwMDAwMDI7XHJcbiAgc3RhdGljICBNU0dCT1hfQlVUVE9OX1lFU19OT19DQU5DRUw6IG51bWJlciA9IDB4MDAwMDAwMDM7XHJcbiAgc3RhdGljICBNU0dCT1hfQlVUVE9OX1lFU19OTzogbnVtYmVyID0gMHgwMDAwMDAwNDtcclxuICBzdGF0aWMgIE1TR0JPWF9CVVRUT05fUkVUUllfQ0FOQ0VMOiBudW1iZXIgPSAweDAwMDAwMDA1O1xyXG5cclxuICBzdGF0aWMgIE1TR0JPWF9JQ09OX0VSUk9SOiBudW1iZXIgPSAweDAwMDAwMDEwO1xyXG4gIHN0YXRpYyAgTVNHQk9YX0lDT05fUVVFU1RJT046IG51bWJlciA9IDB4MDAwMDAwMjA7XHJcbiAgc3RhdGljICBNU0dCT1hfSUNPTl9FWENMQU1BVElPTjogbnVtYmVyID0gMHgwMDAwMDAzMDtcclxuICBzdGF0aWMgIE1TR0JPWF9JQ09OX0lORk9STUFUSU9OOiBudW1iZXIgPSAweDAwMDAwMDQwO1xyXG4gIHN0YXRpYyBNU0dCT1hfSUNPTl9XQVJOSU5HOiBudW1iZXIgPSBTdHlsZXMuTVNHQk9YX0lDT05fRVhDTEFNQVRJT047XHJcblxyXG5cclxuICAvLyBtZXNzYWdlIGJveCByZXN1bHRcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9PSyA9IDE7XHJcbiAgc3RhdGljIE1TR0JPWF9SRVNVTFRfQ0FOQ0VMID0gMjtcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9BQk9SVCA9IDM7XHJcbiAgc3RhdGljIE1TR0JPWF9SRVNVTFRfUkVUUlkgPSA0O1xyXG4gIHN0YXRpYyBNU0dCT1hfUkVTVUxUX0lHTk9SRSA9IDU7XHJcbiAgc3RhdGljIE1TR0JPWF9SRVNVTFRfWUVTID0gNjtcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9OTyA9IDc7XHJcblxyXG4gIHN0YXRpYyBNU0dCT1hfREVGQVVMVF9CVVRUT05fMTogbnVtYmVyID0gMHgwMDAwMDAwMDtcclxuICBzdGF0aWMgTVNHQk9YX0RFRkFVTFRfQlVUVE9OXzI6IG51bWJlciA9IDB4MDAwMDAxMDA7XHJcbiAgc3RhdGljIE1TR0JPWF9ERUZBVUxUX0JVVFRPTl8zOiBudW1iZXIgPSAweDAwMDAwMjAwO1xyXG59XHJcbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL2d1aS9sb3cvU3R5bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFRLE1BQU07O0FBSVQsNkJBQXNCLEdBQVcsVUFBVSxDQUFDO0FBQzdDLDhCQUF1QixHQUFXLFVBQVUsQ0FBQztBQUM3QyxrQ0FBMkIsR0FBVyxVQUFVLENBQUM7QUFDakQsc0NBQStCLEdBQVcsVUFBVSxDQUFDO0FBRXJELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQywrQkFBd0IsR0FBVyxVQUFVLENBQUM7QUFDOUMsbUNBQTRCLEdBQVcsVUFBVSxDQUFDO0FBQ2xELGlDQUEwQixHQUFXLFVBQVUsQ0FBQztBQUNoRCx1QkFBZ0IsR0FBVyxVQUFVLENBQUM7QUFDdEMsdUJBQWdCLEdBQVcsVUFBVSxDQUFDO0FBQ3RDLHFCQUFjLEdBQVcsVUFBVSxDQUFDO0FBQ3BDLHFCQUFjLEdBQVcsVUFBVSxDQUFDO0FBQ3BDLHdCQUFpQixHQUFXLFVBQVUsQ0FBQztBQUN2QyxtQ0FBNEIsR0FBVyxVQUFVLENBQUM7QUFDbEQsb0NBQTZCLEdBQVcsVUFBVSxDQUFDO0FBQ25ELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyxrQ0FBMkIsR0FBVyxVQUFVLENBQUM7QUFDakQsbUNBQTRCLEdBQVcsVUFBVSxDQUFDO0FBQ2xELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyw0QkFBcUIsR0FBVyxVQUFVLENBQUM7QUFDM0MsOEJBQXVCLEdBQVcsVUFBVSxDQUFDO0FBQzdDLGlDQUEwQixHQUFXLFVBQVUsQ0FBQztBQUNoRCwrQkFBd0IsR0FBVyxVQUFVLENBQUM7QUFDOUMsNEJBQXFCLEdBQVcsVUFBVSxDQUFDO0FBQzNDLDRCQUFxQixHQUFXLFVBQVUsQ0FBQztBQUMzQywwQkFBbUIsR0FBVyxVQUFVLENBQUM7QUFJekMsdUJBQWdCLEdBQVcsVUFBVSxDQUFDO0FBQ3RDLDhCQUF1QixHQUFXLFVBQVUsQ0FBQztBQUM3Qyx1Q0FBZ0MsR0FBVyxVQUFVLENBQUM7QUFDdEQsa0NBQTJCLEdBQVcsVUFBVSxDQUFDO0FBQ2pELDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyxpQ0FBMEIsR0FBVyxVQUFVLENBQUM7QUFFaEQsd0JBQWlCLEdBQVcsVUFBVSxDQUFDO0FBQ3ZDLDJCQUFvQixHQUFXLFVBQVUsQ0FBQztBQUMxQyw4QkFBdUIsR0FBVyxVQUFVLENBQUM7QUFDN0MsOEJBQXVCLEdBQVcsVUFBVSxDQUFDO0FBQzlDLDBCQUFtQixHQUFXLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQztBQUk3RCx1QkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDckIsMkJBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLDBCQUFtQixHQUFHLENBQUMsQ0FBQztBQUN4QiwwQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDeEIsMkJBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLHdCQUFpQixHQUFHLENBQUMsQ0FBQztBQUN0Qix1QkFBZ0IsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgIFN0eWxlc1xyXG57XHJcbiAgLy8gc3R5bGVzIHRoYXQgY2FsbCBmcm9tIHN0eWxlMnN0eWxlXHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICBzdGF0aWMgIFBST1BfU1RZTEVfQlVUVE9OX1BVU0g6IG51bWJlciA9IDB4MDAwMDAwMDE7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0JVVFRPTl9JTUFHRTogbnVtYmVyID0gMHgwMDAwMDAwMjtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfQlVUVE9OX0hZUEVSVEVYVDogbnVtYmVyID0gMHgwMDAwMDAwNDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfQlVUVE9OX1RFWFRfT05fSU1BR0U6IG51bWJlciA9IDB4MDAwMDAwMDg7XHJcblxyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9IT1JfUklHSFQ6IG51bWJlciA9IDB4MDAwMDAwMTA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX1JJR0hUX1RPX0xFRlQ6IG51bWJlciA9IDB4MDAwMDAwMjA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0hPUklaT05UQUxfU0NST0xMOiBudW1iZXIgPSAweDAwMDAwMDQwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9WRVJUSUNBTF9TQ1JPTEw6IG51bWJlciA9IDB4MDAwMDAwODA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX1RJVExFOiBudW1iZXIgPSAweDAwMDAwMTAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9DTE9TRTogbnVtYmVyID0gMHgwMDAwMDIwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfTUlOOiBudW1iZXIgPSAweDAwMDAwNDAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9NQVg6IG51bWJlciA9IDB4MDAwMDA4MDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0JPUkRFUjogbnVtYmVyID0gMHgwMDAwMTAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfQk9SREVSX1NUWUxFX1RISU46IG51bWJlciA9IDB4MDAwMDIwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX0JPUkRFUl9TVFlMRV9USElDSzogbnVtYmVyID0gMHgwMDAwNDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfUkVBRF9PTkxZOiBudW1iZXIgPSAweDAwMDA4MDAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9BUFBFQVJBTkNFX0NIRUNLOiBudW1iZXIgPSAweDAwMDEwMDAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9BUFBFQVJBTkNFX0JVVFRPTjogbnVtYmVyID0gMHgwMDAyMDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfV09SRF9XUkFQOiBudW1iZXIgPSAweDAwMDQwMDAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9TVFlMRV9GTEFUOiBudW1iZXIgPSAweDAwMDgwMDAwO1xyXG4gIHN0YXRpYyAgUFJPUF9TVFlMRV9UQUJfU0lERV9UT1A6IG51bWJlciA9IDB4MDQwMDAwMDA7XHJcbiAgc3RhdGljICBQUk9QX1NUWUxFX1RBQl9TSURFX0JPVFRPTTogbnVtYmVyID0gMHgwODAwMDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfTk9fQkFDS0dST1VORDogbnVtYmVyID0gMHgxMDAwMDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfU0hPV19MSU5FUzogbnVtYmVyID0gMHgyMDAwMDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfSE9SSVpPTlRBTDogbnVtYmVyID0gMHg0MDAwMDAwMDtcclxuICBzdGF0aWMgIFBST1BfU1RZTEVfVkVSVElDQUw6IG51bWJlciA9IDB4ODAwMDAwMDA7XHJcblxyXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAvLyBjb25maXJtYXRpb24gYm94XHJcbiAgc3RhdGljICBNU0dCT1hfQlVUVE9OX09LOiBudW1iZXIgPSAweDAwMDAwMDAwO1xyXG4gIHN0YXRpYyAgTVNHQk9YX0JVVFRPTl9PS19DQU5DRUw6IG51bWJlciA9IDB4MDAwMDAwMDE7XHJcbiAgc3RhdGljICBNU0dCT1hfQlVUVE9OX0FCT1JUX1JFVFJZX0lHTk9SRTogbnVtYmVyID0gMHgwMDAwMDAwMjtcclxuICBzdGF0aWMgIE1TR0JPWF9CVVRUT05fWUVTX05PX0NBTkNFTDogbnVtYmVyID0gMHgwMDAwMDAwMztcclxuICBzdGF0aWMgIE1TR0JPWF9CVVRUT05fWUVTX05POiBudW1iZXIgPSAweDAwMDAwMDA0O1xyXG4gIHN0YXRpYyAgTVNHQk9YX0JVVFRPTl9SRVRSWV9DQU5DRUw6IG51bWJlciA9IDB4MDAwMDAwMDU7XHJcblxyXG4gIHN0YXRpYyAgTVNHQk9YX0lDT05fRVJST1I6IG51bWJlciA9IDB4MDAwMDAwMTA7XHJcbiAgc3RhdGljICBNU0dCT1hfSUNPTl9RVUVTVElPTjogbnVtYmVyID0gMHgwMDAwMDAyMDtcclxuICBzdGF0aWMgIE1TR0JPWF9JQ09OX0VYQ0xBTUFUSU9OOiBudW1iZXIgPSAweDAwMDAwMDMwO1xyXG4gIHN0YXRpYyAgTVNHQk9YX0lDT05fSU5GT1JNQVRJT046IG51bWJlciA9IDB4MDAwMDAwNDA7XHJcbiAgc3RhdGljIE1TR0JPWF9JQ09OX1dBUk5JTkc6IG51bWJlciA9IFN0eWxlcy5NU0dCT1hfSUNPTl9FWENMQU1BVElPTjtcclxuXHJcblxyXG4gIC8vIG1lc3NhZ2UgYm94IHJlc3VsdFxyXG4gIHN0YXRpYyBNU0dCT1hfUkVTVUxUX09LID0gMTtcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9DQU5DRUwgPSAyO1xyXG4gIHN0YXRpYyBNU0dCT1hfUkVTVUxUX0FCT1JUID0gMztcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9SRVRSWSA9IDQ7XHJcbiAgc3RhdGljIE1TR0JPWF9SRVNVTFRfSUdOT1JFID0gNTtcclxuICBzdGF0aWMgTVNHQk9YX1JFU1VMVF9ZRVMgPSA2O1xyXG4gIHN0YXRpYyBNU0dCT1hfUkVTVUxUX05PID0gNztcclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -6,13 +6,12 @@ export class RuntimeContextBase {
6
6
  this._insertMode = false;
7
7
  this._lastCoordinates = new Array(4);
8
8
  this.ContextID = '\0';
9
- this.Parser = null; // xml parser
10
- this.FrameForm = null; // form of the MDI/SDI frame
9
+ this.Parser = null;
10
+ this.FrameForm = null;
11
11
  this.LastClickedCtrlName = null;
12
- this.LastClickedMenuUid = 0; // program menu uid if executed from menu
13
- // CurrentClickedCtrl - always points to the current clickedCtrl. Initially null, but once clicked on any
14
- // control, it always points to this clicked ctrl. And, is reset back to null once we have successfully
15
- // parked on the parkable control.
12
+ this.LastClickedMenuUid = 0;
13
+ this.RemovedContextFromServer = false;
14
+ this.RemovingContextFromServer = false;
16
15
  this.CurrentClickedCtrl = null;
17
16
  this.CurrentClickedRadio = null;
18
17
  this.DefaultStatusMsg = null;
@@ -26,12 +25,12 @@ export class RuntimeContextBase {
26
25
  this.Parser = new XmlParser();
27
26
  }
28
27
  SaveLastClickInfo(controlName, clientX, clientY, offsetX, offsetY, isInPixels) {
29
- this._lastCoordinates[0] = offsetX; // Gives the X location of the last click, relative to the window
30
- this._lastCoordinates[1] = offsetY; // Gives the Y location of the last click, relative to the window
31
- this._lastCoordinates[2] = clientX; // Gives the X location of the last click, relative to the control within which the click occurred
32
- this._lastCoordinates[3] = clientY; // Gives the Y location of the last click, relative to the control within which the click occurred
28
+ this._lastCoordinates[0] = offsetX;
29
+ this._lastCoordinates[1] = offsetY;
30
+ this._lastCoordinates[2] = clientX;
31
+ this._lastCoordinates[3] = clientY;
33
32
  this.LastClickCoordinatesAreInPixels = isInPixels;
34
- this.LastClickedCtrlName = ""; // is empty string
33
+ this.LastClickedCtrlName = "";
35
34
  if (!NString.IsNullOrEmpty(controlName)) {
36
35
  this.LastClickedCtrlName = controlName;
37
36
  }
@@ -41,15 +40,13 @@ export class RuntimeContextBase {
41
40
  return this._lastCoordinates[index];
42
41
  throw new ApplicationException("in RuntimeContextBase.getClickProp() illegal index: " + index);
43
42
  }
44
- /// <summary> return the InsertMode </summary>
45
43
  IsInsertMode() {
46
44
  return this._insertMode;
47
45
  }
48
- /// <summary> toggle the _insertMode (between insert and overwrite). </summary>
49
46
  ToggleInsertMode() {
50
47
  this._insertMode = !this._insertMode;
51
48
  }
52
49
  }
53
50
  RuntimeContextBase.noContextId = null;
54
51
  RuntimeContextBase.Instance = new RuntimeContextBase();
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVudGltZUNvbnRleHRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L1J1bnRpbWVDb250ZXh0QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHM0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsTUFBTSxPQUFPLGtCQUFrQjtJQXFCN0I7UUFwQlEsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IscUJBQWdCLEdBQWEsSUFBSSxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsY0FBUyxHQUFXLElBQUksQ0FBQztRQUN6QixXQUFNLEdBQWMsSUFBSSxDQUFDLENBQUMsYUFBYTtRQUN2QyxjQUFTLEdBQWUsSUFBSSxDQUFDLENBQUMsNEJBQTRCO1FBQzFELHdCQUFtQixHQUFXLElBQUksQ0FBQztRQUNuQyx1QkFBa0IsR0FBVyxDQUFDLENBQUMsQ0FBQyx5Q0FBeUM7UUFHekUseUdBQXlHO1FBQ3pHLHVHQUF1RztRQUN2RyxrQ0FBa0M7UUFDbEMsdUJBQWtCLEdBQWtCLElBQUksQ0FBQztRQUV6Qyx3QkFBbUIsR0FBa0IsSUFBSSxDQUFDO1FBQzFDLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUNoQyxvQ0FBK0IsR0FBWSxLQUFLLENBQUM7SUFJekIsQ0FBQztJQUN6QixJQUFJLENBQUMsU0FBaUI7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLE9BQWUsRUFBRSxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQWUsRUFBRSxVQUFtQjtRQUM1SCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsaUVBQWlFO1FBQ3JHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxpRUFBaUU7UUFDckcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLGtHQUFrRztRQUN0SSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsa0dBQWtHO1FBRXRJLElBQUksQ0FBQywrQkFBK0IsR0FBRyxVQUFVLENBQUM7UUFFbEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhO1FBQ3hCLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QyxNQUFNLElBQUksb0JBQW9CLENBQUMsc0RBQXNELEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQzs7QUFuRE0sOEJBQVcsR0FBVyxJQUFJLENBQUM7QUFXM0IsMkJBQVEsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7TWdGb3JtQmFzZX0gZnJvbSBcIi4vZ3VpL01nRm9ybUJhc2VcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tIFwiLi9ndWkvTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge01hbmFnZXJ9IGZyb20gXCIuLi9NYW5hZ2VyXCI7XHJcbmltcG9ydCB7QXBwbGljYXRpb25FeGNlcHRpb24sIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVDb250ZXh0QmFzZSB7XHJcbiAgcHJpdmF0ZSBfaW5zZXJ0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2xhc3RDb29yZGluYXRlczogbnVtYmVyW10gPSBuZXcgQXJyYXk8bnVtYmVyPig0KTtcclxuICBDb250ZXh0SUQ6IHN0cmluZyA9ICdcXDAnO1xyXG4gIFBhcnNlcjogWG1sUGFyc2VyID0gbnVsbDsgLy8geG1sIHBhcnNlclxyXG4gIEZyYW1lRm9ybTogTWdGb3JtQmFzZSA9IG51bGw7IC8vIGZvcm0gb2YgdGhlIE1ESS9TREkgZnJhbWVcclxuICBMYXN0Q2xpY2tlZEN0cmxOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIExhc3RDbGlja2VkTWVudVVpZDogbnVtYmVyID0gMDsgLy8gcHJvZ3JhbSBtZW51IHVpZCBpZiBleGVjdXRlZCBmcm9tIG1lbnVcclxuICBzdGF0aWMgbm9Db250ZXh0SWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vIEN1cnJlbnRDbGlja2VkQ3RybCAtIGFsd2F5cyBwb2ludHMgdG8gdGhlIGN1cnJlbnQgY2xpY2tlZEN0cmwuIEluaXRpYWxseSBudWxsLCBidXQgb25jZSBjbGlja2VkIG9uIGFueVxyXG4gIC8vIGNvbnRyb2wsIGl0IGFsd2F5cyBwb2ludHMgdG8gdGhpcyBjbGlja2VkIGN0cmwuIEFuZCwgaXMgcmVzZXQgYmFjayB0byBudWxsIG9uY2Ugd2UgaGF2ZSBzdWNjZXNzZnVsbHlcclxuICAvLyBwYXJrZWQgb24gdGhlIHBhcmthYmxlIGNvbnRyb2wuXHJcbiAgQ3VycmVudENsaWNrZWRDdHJsOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuXHJcbiAgQ3VycmVudENsaWNrZWRSYWRpbzogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgRGVmYXVsdFN0YXR1c01zZzogc3RyaW5nID0gbnVsbDtcclxuICBMYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHN0YXRpYyBJbnN0YW5jZTogUnVudGltZUNvbnRleHRCYXNlID0gbmV3IFJ1bnRpbWVDb250ZXh0QmFzZSgpO1xyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgSW5pdChjb250ZXh0SUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5Db250ZXh0SUQgPSBjb250ZXh0SUQ7XHJcbiAgICB0aGlzLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5faW5zZXJ0TW9kZSA9IHRydWU7XHJcbiAgICBNYW5hZ2VyLlNldEN1cnJlbnRDb250ZXh0SUQoY29udGV4dElEKTtcclxuICAgIHRoaXMuUGFyc2VyID0gbmV3IFhtbFBhcnNlcigpO1xyXG4gIH1cclxuXHJcbiAgU2F2ZUxhc3RDbGlja0luZm8oY29udHJvbE5hbWU6IHN0cmluZywgY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIsIG9mZnNldFg6IG51bWJlciwgb2Zmc2V0WTogbnVtYmVyLCBpc0luUGl4ZWxzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9sYXN0Q29vcmRpbmF0ZXNbMF0gPSBvZmZzZXRYOyAvLyBHaXZlcyB0aGUgWCBsb2NhdGlvbiBvZiB0aGUgbGFzdCBjbGljaywgcmVsYXRpdmUgdG8gdGhlIHdpbmRvd1xyXG4gICAgdGhpcy5fbGFzdENvb3JkaW5hdGVzWzFdID0gb2Zmc2V0WTsgLy8gR2l2ZXMgdGhlIFkgbG9jYXRpb24gb2YgdGhlIGxhc3QgY2xpY2ssIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3dcclxuICAgIHRoaXMuX2xhc3RDb29yZGluYXRlc1syXSA9IGNsaWVudFg7IC8vIEdpdmVzIHRoZSBYIGxvY2F0aW9uIG9mIHRoZSBsYXN0IGNsaWNrLCByZWxhdGl2ZSB0byB0aGUgY29udHJvbCB3aXRoaW4gd2hpY2ggdGhlIGNsaWNrIG9jY3VycmVkXHJcbiAgICB0aGlzLl9sYXN0Q29vcmRpbmF0ZXNbM10gPSBjbGllbnRZOyAvLyBHaXZlcyB0aGUgWSBsb2NhdGlvbiBvZiB0aGUgbGFzdCBjbGljaywgcmVsYXRpdmUgdG8gdGhlIGNvbnRyb2wgd2l0aGluIHdoaWNoIHRoZSBjbGljayBvY2N1cnJlZFxyXG5cclxuICAgIHRoaXMuTGFzdENsaWNrQ29vcmRpbmF0ZXNBcmVJblBpeGVscyA9IGlzSW5QaXhlbHM7XHJcblxyXG4gICAgdGhpcy5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gXCJcIjsgLy8gaXMgZW1wdHkgc3RyaW5nXHJcbiAgICBpZiAoIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShjb250cm9sTmFtZSkpIHtcclxuICAgICAgdGhpcy5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBHZXRDbGlja1Byb3AoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IDQpXHJcbiAgICAgIHJldHVybiB0aGlzLl9sYXN0Q29vcmRpbmF0ZXNbaW5kZXhdO1xyXG5cclxuICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIFJ1bnRpbWVDb250ZXh0QmFzZS5nZXRDbGlja1Byb3AoKSBpbGxlZ2FsIGluZGV4OiBcIiArIGluZGV4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmV0dXJuIHRoZSBJbnNlcnRNb2RlIDwvc3VtbWFyeT5cclxuICBJc0luc2VydE1vZGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5zZXJ0TW9kZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdG9nZ2xlIHRoZSBfaW5zZXJ0TW9kZSAoYmV0d2VlbiBpbnNlcnQgYW5kIG92ZXJ3cml0ZSkuIDwvc3VtbWFyeT5cclxuICBUb2dnbGVJbnNlcnRNb2RlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5zZXJ0TW9kZSA9ICF0aGlzLl9pbnNlcnRNb2RlO1xyXG4gIH1cclxufVxyXG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVudGltZUNvbnRleHRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L1J1bnRpbWVDb250ZXh0QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHM0MsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsTUFBTSxPQUFPLGtCQUFrQjtJQXNCN0I7UUFyQlEsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IscUJBQWdCLEdBQWEsSUFBSSxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsY0FBUyxHQUFXLElBQUksQ0FBQztRQUN6QixXQUFNLEdBQWMsSUFBSSxDQUFDO1FBQ3pCLGNBQVMsR0FBZSxJQUFJLENBQUM7UUFDN0Isd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQ25DLHVCQUFrQixHQUFXLENBQUMsQ0FBQztRQUUvQiw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFDMUMsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBSTNDLHVCQUFrQixHQUFrQixJQUFJLENBQUM7UUFFekMsd0JBQW1CLEdBQWtCLElBQUksQ0FBQztRQUMxQyxxQkFBZ0IsR0FBVyxJQUFJLENBQUM7UUFDaEMsb0NBQStCLEdBQVksS0FBSyxDQUFDO0lBSXpCLENBQUM7SUFDekIsSUFBSSxDQUFDLFNBQWlCO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsT0FBTyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBbUIsRUFBRSxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQWUsRUFBRSxPQUFlLEVBQUUsVUFBbUI7UUFDNUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUVuQyxJQUFJLENBQUMsK0JBQStCLEdBQUcsVUFBVSxDQUFDO1FBRWxELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEMsTUFBTSxJQUFJLG9CQUFvQixDQUFDLHNEQUFzRCxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFHRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN2QyxDQUFDOztBQXBETSw4QkFBVyxHQUFXLElBQUksQ0FBQztBQVkzQiwyQkFBUSxHQUF1QixJQUFJLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1htbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtNZ0Zvcm1CYXNlfSBmcm9tIFwiLi9ndWkvTWdGb3JtQmFzZVwiO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gXCIuL2d1aS9NZ0NvbnRyb2xCYXNlXCI7XHJcbmltcG9ydCB7TWFuYWdlcn0gZnJvbSBcIi4uL01hbmFnZXJcIjtcclxuaW1wb3J0IHtBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUnVudGltZUNvbnRleHRCYXNlIHtcclxuICBwcml2YXRlIF9pbnNlcnRNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfbGFzdENvb3JkaW5hdGVzOiBudW1iZXJbXSA9IG5ldyBBcnJheTxudW1iZXI+KDQpO1xyXG4gIENvbnRleHRJRDogc3RyaW5nID0gJ1xcMCc7XHJcbiAgUGFyc2VyOiBYbWxQYXJzZXIgPSBudWxsOyAvLyB4bWwgcGFyc2VyXHJcbiAgRnJhbWVGb3JtOiBNZ0Zvcm1CYXNlID0gbnVsbDsgLy8gZm9ybSBvZiB0aGUgTURJL1NESSBmcmFtZVxyXG4gIExhc3RDbGlja2VkQ3RybE5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgTGFzdENsaWNrZWRNZW51VWlkOiBudW1iZXIgPSAwOyAvLyBwcm9ncmFtIG1lbnUgdWlkIGlmIGV4ZWN1dGVkIGZyb20gbWVudVxyXG4gIHN0YXRpYyBub0NvbnRleHRJZDogc3RyaW5nID0gbnVsbDtcclxuICBSZW1vdmVkQ29udGV4dEZyb21TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZTsgLy9zZXQgd2hlbiByZXEuICdDb250ZXh0IFJlbW92ZScgc2VudCB0byBzZXJ2ZXIuXHJcbiAgUmVtb3ZpbmdDb250ZXh0RnJvbVNlcnZlcjogYm9vbGVhbiA9IGZhbHNlOyAvL3NldCB3aGVuIGV2ZW50ICdDb250ZXh0IFJlbW92ZSdyYWlzZWRcclxuICAvLyBDdXJyZW50Q2xpY2tlZEN0cmwgLSBhbHdheXMgcG9pbnRzIHRvIHRoZSBjdXJyZW50IGNsaWNrZWRDdHJsLiBJbml0aWFsbHkgbnVsbCwgYnV0IG9uY2UgY2xpY2tlZCBvbiBhbnlcclxuICAvLyBjb250cm9sLCBpdCBhbHdheXMgcG9pbnRzIHRvIHRoaXMgY2xpY2tlZCBjdHJsLiBBbmQsIGlzIHJlc2V0IGJhY2sgdG8gbnVsbCBvbmNlIHdlIGhhdmUgc3VjY2Vzc2Z1bGx5XHJcbiAgLy8gcGFya2VkIG9uIHRoZSBwYXJrYWJsZSBjb250cm9sLlxyXG4gIEN1cnJlbnRDbGlja2VkQ3RybDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gIEN1cnJlbnRDbGlja2VkUmFkaW86IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIERlZmF1bHRTdGF0dXNNc2c6IHN0cmluZyA9IG51bGw7XHJcbiAgTGFzdENsaWNrQ29vcmRpbmF0ZXNBcmVJblBpeGVsczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzdGF0aWMgSW5zdGFuY2U6IFJ1bnRpbWVDb250ZXh0QmFzZSA9IG5ldyBSdW50aW1lQ29udGV4dEJhc2UoKTtcclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gIEluaXQoY29udGV4dElEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuQ29udGV4dElEID0gY29udGV4dElEO1xyXG4gICAgdGhpcy5MYXN0Q2xpY2tlZEN0cmxOYW1lID0gXCJcIjtcclxuICAgIHRoaXMuX2luc2VydE1vZGUgPSB0cnVlO1xyXG4gICAgTWFuYWdlci5TZXRDdXJyZW50Q29udGV4dElEKGNvbnRleHRJRCk7XHJcbiAgICB0aGlzLlBhcnNlciA9IG5ldyBYbWxQYXJzZXIoKTtcclxuICB9XHJcblxyXG4gIFNhdmVMYXN0Q2xpY2tJbmZvKGNvbnRyb2xOYW1lOiBzdHJpbmcsIGNsaWVudFg6IG51bWJlciwgY2xpZW50WTogbnVtYmVyLCBvZmZzZXRYOiBudW1iZXIsIG9mZnNldFk6IG51bWJlciwgaXNJblBpeGVsczogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fbGFzdENvb3JkaW5hdGVzWzBdID0gb2Zmc2V0WDsgLy8gR2l2ZXMgdGhlIFggbG9jYXRpb24gb2YgdGhlIGxhc3QgY2xpY2ssIHJlbGF0aXZlIHRvIHRoZSB3aW5kb3dcclxuICAgIHRoaXMuX2xhc3RDb29yZGluYXRlc1sxXSA9IG9mZnNldFk7IC8vIEdpdmVzIHRoZSBZIGxvY2F0aW9uIG9mIHRoZSBsYXN0IGNsaWNrLCByZWxhdGl2ZSB0byB0aGUgd2luZG93XHJcbiAgICB0aGlzLl9sYXN0Q29vcmRpbmF0ZXNbMl0gPSBjbGllbnRYOyAvLyBHaXZlcyB0aGUgWCBsb2NhdGlvbiBvZiB0aGUgbGFzdCBjbGljaywgcmVsYXRpdmUgdG8gdGhlIGNvbnRyb2wgd2l0aGluIHdoaWNoIHRoZSBjbGljayBvY2N1cnJlZFxyXG4gICAgdGhpcy5fbGFzdENvb3JkaW5hdGVzWzNdID0gY2xpZW50WTsgLy8gR2l2ZXMgdGhlIFkgbG9jYXRpb24gb2YgdGhlIGxhc3QgY2xpY2ssIHJlbGF0aXZlIHRvIHRoZSBjb250cm9sIHdpdGhpbiB3aGljaCB0aGUgY2xpY2sgb2NjdXJyZWRcclxuXHJcbiAgICB0aGlzLkxhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHMgPSBpc0luUGl4ZWxzO1xyXG5cclxuICAgIHRoaXMuTGFzdENsaWNrZWRDdHJsTmFtZSA9IFwiXCI7IC8vIGlzIGVtcHR5IHN0cmluZ1xyXG4gICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkoY29udHJvbE5hbWUpKSB7XHJcbiAgICAgIHRoaXMuTGFzdENsaWNrZWRDdHJsTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgR2V0Q2xpY2tQcm9wKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCA0KVxyXG4gICAgICByZXR1cm4gdGhpcy5fbGFzdENvb3JkaW5hdGVzW2luZGV4XTtcclxuXHJcbiAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oXCJpbiBSdW50aW1lQ29udGV4dEJhc2UuZ2V0Q2xpY2tQcm9wKCkgaWxsZWdhbCBpbmRleDogXCIgKyBpbmRleCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJldHVybiB0aGUgSW5zZXJ0TW9kZSA8L3N1bW1hcnk+XHJcbiAgSXNJbnNlcnRNb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luc2VydE1vZGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHRvZ2dsZSB0aGUgX2luc2VydE1vZGUgKGJldHdlZW4gaW5zZXJ0IGFuZCBvdmVyd3JpdGUpLiA8L3N1bW1hcnk+XHJcbiAgVG9nZ2xlSW5zZXJ0TW9kZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2luc2VydE1vZGUgPSAhdGhpcy5faW5zZXJ0TW9kZTtcclxuICB9XHJcbn1cclxuIl19
@@ -6,20 +6,15 @@ import { VectorType } from "./VectorType";
6
6
  export const EMPTY_DCREF = -2;
7
7
  export const NOT_FOUND = GuiConstants.DEFAULT_VALUE_INT;
8
8
  export class DcValues {
9
- /// <summary>
10
- ///
11
- /// </summary>
12
- /// <param name="empty"></param>
13
- /// <param name="isVector"></param>
14
9
  constructor(empty, isVector) {
15
10
  this._id = 0;
16
- this._type = StorageAttribute.NONE; // Alpha | Numeric | Date | Time | Logical
17
- this._refCount = 0; // references counter
18
- this._nullFlags = null; // linked null value flags
19
- this._isNumericType = false; // true if the type is one of: numeric, date, time
20
- this._numVals = null; // numeric linked values
21
- this._linkVals = null; // linked values
22
- this._dispVals = null; // display values
11
+ this._type = StorageAttribute.NONE;
12
+ this._refCount = 0;
13
+ this._nullFlags = null;
14
+ this._isNumericType = false;
15
+ this._numVals = null;
16
+ this._linkVals = null;
17
+ this._dispVals = null;
23
18
  if (empty) {
24
19
  this._id = EMPTY_DCREF;
25
20
  }
@@ -28,9 +23,6 @@ export class DcValues {
28
23
  get HasReferences() {
29
24
  return this._refCount > 0;
30
25
  }
31
- /// <summary>
32
- /// Returns the attr of DcValues
33
- /// </summary>
34
26
  GetAttr() {
35
27
  return this._type;
36
28
  }
@@ -76,34 +68,15 @@ export class DcValues {
76
68
  this._numVals = null;
77
69
  }
78
70
  }
79
- /// <summary>
80
- /// returns the id of this dcVals object
81
- /// </summary>
82
71
  getId() {
83
72
  return this._id;
84
73
  }
85
- /// <summary>
86
- /// return the display values
87
- /// </summary>
88
74
  getDispVals() {
89
75
  return this._dispVals;
90
76
  }
91
- /// <summary>
92
- /// return Link field values.
93
- /// </summary>
94
77
  GetLinkVals() {
95
78
  return this._linkVals;
96
79
  }
97
- /// <summary>
98
- /// returns the array of indice for an item in the list by comparing the mgVal to the linked value or (-1) if none was
99
- /// found
100
- /// </summary>
101
- /// <param name = "mgVal">the internal value to look for </param>
102
- /// <param name = "isVectorValue">Denotes whether the value in mgVal should be treated as a vector (true) or not (false).</param>
103
- /// <param name = "isNull">true if the value to look for is null </param>
104
- /// <param name = "extraVals">Additional values, prepended to the searched values.</param>
105
- /// <param name="extraNums">Additional numeric values to be prepended to the searched values.</param>
106
- /// <param name = "splitCommaSeperatedVals">to split the val on comma or not </param>
107
80
  getIndexOf(mgVal, isVectorValue, isNull, extraVals, extraNums, splitCommaSeperatedVals) {
108
81
  let result = NOT_FOUND;
109
82
  let tmpMgVal;
@@ -132,7 +105,6 @@ export class DcValues {
132
105
  return indice;
133
106
  }
134
107
  if (!isVectorValue) {
135
- // split the comma separated values;
136
108
  if (splitCommaSeperatedVals) {
137
109
  values = mgVal.split(',');
138
110
  }
@@ -159,7 +131,6 @@ export class DcValues {
159
131
  ctrlNumVal = null;
160
132
  trimmedVal = StrUtil.rtrim(tmpMgVal);
161
133
  }
162
- // Run two passes. First one on extra values, second one on values belonging to this object
163
134
  for (let i = 0; i < 2 && result === NOT_FOUND; i++) {
164
135
  switch (i) {
165
136
  case 0:
@@ -182,7 +153,6 @@ export class DcValues {
182
153
  if (this._isNumericType || nums != null) {
183
154
  if (NUM_TYPE.num_cmp(ctrlNumVal, nums[j]) === 0 || tmpMgVal === vals[j] ||
184
155
  tmpMgVal === vals[j]) {
185
- // the numeric type is found exactly
186
156
  result = j + offset;
187
157
  break;
188
158
  }
@@ -192,23 +162,14 @@ export class DcValues {
192
162
  result = j + offset;
193
163
  break;
194
164
  }
195
- // If Magic sent us a blank value, and such a value exists in the "non DC range" select it.
196
- // QCR # 751037 - search for blank values even in the linked values array of the data control
197
165
  if (trimmedVal.length === 0 && StrUtil.rtrim(vals[j]).length === 0) {
198
166
  result = j + offset;
199
167
  break;
200
168
  }
201
- // save the first fitting result
202
- // fixed bug#: 935015, the comparison will be according to the min length of the data & the options
203
169
  if (result === NOT_FOUND && trimmedVal.length > 0) {
204
170
  minLength = Math.min(trimmedVal.length, vals[j].length);
205
171
  compStr = trimmedVal.substr(0, minLength);
206
172
  if (compStr.length > 0 && vals[j].startsWith(compStr)) {
207
- // if there is a min length match, check if it is the first fit match.
208
- // eg: if list has a,aaa,aaaaa and field value is 'aa' then first fit match is 'aaa'.
209
- // if list is a,aaaaa,aaa and field value is 'aa' then first fit match is 'aaaaa'.
210
- // if first fit not found, then closest match is used (eg- if field value is
211
- // 'aaaaaaaaa' in both the above list, closest match would be 'aaaaa').
212
173
  if (minLength > firstFitMatchLength) {
213
174
  firstFitMatchIdx = j + offset;
214
175
  firstFitMatchLength = minLength;
@@ -221,16 +182,10 @@ export class DcValues {
221
182
  }
222
183
  if (result === NOT_FOUND)
223
184
  result = firstFitMatchIdx;
224
- // store indice found in integer array.
225
185
  indice[iCtr] = result;
226
186
  }
227
187
  return indice;
228
188
  }
229
- /// <summary>
230
- /// gets the value of a specific link item
231
- /// </summary>
232
- /// <param name = "idx">the index of the link value (0 = first item) </param>
233
- /// <returns> Magic value of the item </returns>
234
189
  getLinkValue(idx) {
235
190
  let lnkVal = null;
236
191
  if (this._linkVals !== null) {
@@ -238,36 +193,22 @@ export class DcValues {
238
193
  }
239
194
  return lnkVal;
240
195
  }
241
- /// <summary>
242
- /// returns true, if value at index idx is null
243
- /// </summary>
244
- /// <param name = "the">index of an item in the list </param>
245
196
  isNull(idx) {
246
197
  if (this._nullFlags == null)
247
- // happens for non-DC choice controls
248
198
  return false;
249
199
  return this._nullFlags[idx];
250
200
  }
251
- /// <summary>
252
- /// increase the references count by 1
253
- /// </summary>
254
201
  AddReference() {
255
202
  this._refCount++;
256
203
  }
257
- /// <summary>
258
- /// decrease the references count by 1
259
- /// </summary>
260
204
  RemoveReference() {
261
205
  this._refCount--;
262
206
  if (this._refCount < 0) {
263
207
  throw new ApplicationException("in dcVals.decrease() references count is less than zero");
264
208
  }
265
209
  }
266
- /// <summary>
267
- /// returns true if the references count is zero
268
- /// </summary>
269
210
  ToString() {
270
211
  return NString.Format("{{DCValues 0x{0:X8}, {1} refs}}", this._id, this._refCount);
271
212
  }
272
213
  }
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNWYWx1ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZGF0YS9EY1ZhbHVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHeEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBVyxZQUFZLENBQUMsaUJBQWlCLENBQUM7QUFHaEUsTUFBTSxPQUFPLFFBQVE7SUFnQm5CLGFBQWE7SUFDYixHQUFHO0lBQ0gsY0FBYztJQUNkLGdDQUFnQztJQUNoQyxtQ0FBbUM7SUFDbkMsWUFBWSxLQUFjLEVBQUUsUUFBaUI7UUFsQnJDLFFBQUcsR0FBVyxDQUFDLENBQUM7UUFDaEIsVUFBSyxHQUFxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQywwQ0FBMEM7UUFDM0YsY0FBUyxHQUFXLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtRQUM1QyxlQUFVLEdBQWMsSUFBSSxDQUFDLENBQUMsMEJBQTBCO1FBQ3hELG1CQUFjLEdBQVksS0FBSyxDQUFDLENBQUMsa0RBQWtEO1FBQ25GLGFBQVEsR0FBZSxJQUFJLENBQUMsQ0FBQyx3QkFBd0I7UUFDckQsY0FBUyxHQUFhLElBQUksQ0FBQyxDQUFDLGdCQUFnQjtRQUM1QyxjQUFTLEdBQWEsSUFBSSxDQUFDLENBQUMsaUJBQWlCO1FBWW5E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QUFPLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVJlZmVyZW5jZWRPYmplY3R9IGZyb20gXCIuL0lSZWZlcmVuY2VkT2JqZWN0XCI7XHJcbmltcG9ydCB7R3VpQ29uc3RhbnRzfSBmcm9tIFwiLi4vLi4vR3VpQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtOVU1fVFlQRX0gZnJvbSBcIi4vTlVNX1RZUEVcIjtcclxuaW1wb3J0IHtBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7VmVjdG9yVHlwZX0gZnJvbSBcIi4vVmVjdG9yVHlwZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBFTVBUWV9EQ1JFRjogbnVtYmVyID0gLTI7XHJcbmV4cG9ydCBjb25zdCBOT1RfRk9VTkQ6IG51bWJlciA9IEd1aUNvbnN0YW50cy5ERUZBVUxUX1ZBTFVFX0lOVDtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGNWYWx1ZXMgaW1wbGVtZW50cyBJUmVmZXJlbmNlZE9iamVjdCB7XHJcblxyXG5cclxuICBwcml2YXRlIF9pZDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF90eXBlOiBTdG9yYWdlQXR0cmlidXRlID0gU3RvcmFnZUF0dHJpYnV0ZS5OT05FOyAvLyBBbHBoYSB8IE51bWVyaWMgfCBEYXRlIHwgVGltZSB8IExvZ2ljYWxcclxuICBwcml2YXRlIF9yZWZDb3VudDogbnVtYmVyID0gMDsgLy8gcmVmZXJlbmNlcyBjb3VudGVyXHJcbiAgcHJpdmF0ZSBfbnVsbEZsYWdzOiBib29sZWFuW10gPSBudWxsOyAvLyBsaW5rZWQgbnVsbCB2YWx1ZSBmbGFnc1xyXG4gIHByaXZhdGUgX2lzTnVtZXJpY1R5cGU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gdHJ1ZSBpZiB0aGUgdHlwZSBpcyBvbmUgb2Y6IG51bWVyaWMsIGRhdGUsIHRpbWVcclxuICBwcml2YXRlIF9udW1WYWxzOiBOVU1fVFlQRVtdID0gbnVsbDsgLy8gbnVtZXJpYyBsaW5rZWQgdmFsdWVzXHJcbiAgcHJpdmF0ZSBfbGlua1ZhbHM6IHN0cmluZ1tdID0gbnVsbDsgLy8gbGlua2VkIHZhbHVlc1xyXG4gIHByaXZhdGUgX2Rpc3BWYWxzOiBzdHJpbmdbXSA9IG51bGw7IC8vIGRpc3BsYXkgdmFsdWVzXHJcblxyXG4gIGdldCBIYXNSZWZlcmVuY2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlZkNvdW50ID4gMDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVtcHR5XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc1ZlY3RvclwiPjwvcGFyYW0+XHJcbiAgY29uc3RydWN0b3IoZW1wdHk6IGJvb2xlYW4sIGlzVmVjdG9yOiBib29sZWFuKSB7XHJcbiAgICBpZiAoZW1wdHkpIHtcclxuICAgICAgdGhpcy5faWQgPSBFTVBUWV9EQ1JFRjtcclxuICAgIH1cclxuICAgIHRoaXMuX2lzTnVtZXJpY1R5cGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0aGUgYXR0ciBvZiBEY1ZhbHVlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0QXR0cigpOiBTdG9yYWdlQXR0cmlidXRlIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gIH1cclxuXHJcbiAgc2V0VHlwZSh0eXBlOiBTdG9yYWdlQXR0cmlidXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gdHlwZTtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLk1FTU8pXHJcbiAgICAgIHRoaXMuX3R5cGUgPSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQyB8fCB0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkRBVEUgfHxcclxuICAgICAgdGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5USU1FKSB7XHJcbiAgICAgIHRoaXMuX2lzTnVtZXJpY1R5cGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgU2V0SUQobmV3SWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5faWQgPSBuZXdJZDtcclxuICB9XHJcblxyXG4gIFNldERpc3BsYXlWYWx1ZXMoZGlzcGxheVZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGlmIChkaXNwbGF5VmFsdWVzICE9PSBudWxsKVxyXG4gICAgICB0aGlzLl9kaXNwVmFscyA9IGRpc3BsYXlWYWx1ZXMuc2xpY2UoKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fZGlzcFZhbHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgU2V0TGlua1ZhbHVlcyhsaW5rVmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgaWYgKGxpbmtWYWx1ZXMgIT09IG51bGwpXHJcbiAgICAgIHRoaXMuX2xpbmtWYWxzID0gbGlua1ZhbHVlcy5zbGljZSgpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9saW5rVmFscyA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5zZXROdW1lcmljVmFscygpO1xyXG4gIH1cclxuXHJcbiAgc2V0TnVsbEZsYWdzKG51bGxGbGFnczogYm9vbGVhbltdKTogdm9pZCB7XHJcbiAgICBpZiAobnVsbEZsYWdzICE9PSBudWxsKVxyXG4gICAgICB0aGlzLl9udWxsRmxhZ3MgPSBudWxsRmxhZ3Muc2xpY2UoKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX251bGxGbGFncyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE51bWVyaWNWYWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzTnVtZXJpY1R5cGUgJiYgdGhpcy5fbGlua1ZhbHMgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fbnVtVmFscyA9IG5ldyBBcnJheTxOVU1fVFlQRT4odGhpcy5fbGlua1ZhbHMubGVuZ3RoKTtcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX2xpbmtWYWxzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgdGhpcy5fbnVtVmFsc1tpXSA9IG5ldyBOVU1fVFlQRSh0aGlzLl9saW5rVmFsc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLl9udW1WYWxzID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBpZCBvZiB0aGlzIGRjVmFscyBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldElkKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBkaXNwbGF5IHZhbHVlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RGlzcFZhbHMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BWYWxzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm4gTGluayBmaWVsZCB2YWx1ZXMuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRMaW5rVmFscygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGlua1ZhbHM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgYXJyYXkgb2YgaW5kaWNlIGZvciBhbiBpdGVtIGluIHRoZSBsaXN0IGJ5IGNvbXBhcmluZyB0aGUgbWdWYWwgdG8gdGhlIGxpbmtlZCB2YWx1ZSBvciAoLTEpIGlmIG5vbmUgd2FzXHJcbiAgLy8vICAgZm91bmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWdWYWxcIj50aGUgaW50ZXJuYWwgdmFsdWUgdG8gbG9vayBmb3IgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlzVmVjdG9yVmFsdWVcIj5EZW5vdGVzIHdoZXRoZXIgdGhlIHZhbHVlIGluIG1nVmFsIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgdmVjdG9yICh0cnVlKSBvciBub3QgKGZhbHNlKS48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNOdWxsXCI+dHJ1ZSBpZiB0aGUgdmFsdWUgdG8gbG9vayBmb3IgaXMgbnVsbCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXh0cmFWYWxzXCI+QWRkaXRpb25hbCB2YWx1ZXMsIHByZXBlbmRlZCB0byB0aGUgc2VhcmNoZWQgdmFsdWVzLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZXh0cmFOdW1zXCI+QWRkaXRpb25hbCBudW1lcmljIHZhbHVlcyB0byBiZSBwcmVwZW5kZWQgdG8gdGhlIHNlYXJjaGVkIHZhbHVlcy48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3BsaXRDb21tYVNlcGVyYXRlZFZhbHNcIj50byBzcGxpdCB0aGUgdmFsIG9uIGNvbW1hIG9yIG5vdCA8L3BhcmFtPlxyXG4gIGdldEluZGV4T2YobWdWYWw6IHN0cmluZywgaXNWZWN0b3JWYWx1ZTogYm9vbGVhbiwgaXNOdWxsOiBib29sZWFuLCBleHRyYVZhbHM6IHN0cmluZ1tdLCBleHRyYU51bXM6IE5VTV9UWVBFW10sIHNwbGl0Q29tbWFTZXBlcmF0ZWRWYWxzOiBib29sZWFuKTogbnVtYmVyW10ge1xyXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gTk9UX0ZPVU5EO1xyXG5cclxuICAgIGxldCB0bXBNZ1ZhbDogc3RyaW5nO1xyXG4gICAgbGV0IGN0cmxOdW1WYWw6IE5VTV9UWVBFO1xyXG4gICAgbGV0IHRyaW1tZWRWYWw6IHN0cmluZztcclxuICAgIGxldCB2YWxzOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgICBsZXQgbnVtczogTlVNX1RZUEVbXSA9IG51bGw7XHJcbiAgICBsZXQgb2Zmc2V0OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGZpcnN0Rml0TWF0Y2hJZHg7XHJcbiAgICBsZXQgZmlyc3RGaXRNYXRjaExlbmd0aDogbnVtYmVyID0gLTE7XHJcbiAgICBsZXQgbWluTGVuZ3RoOiBudW1iZXIgPSAtMTtcclxuICAgIGxldCBjb21wU3RyOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgbGV0IGluZGljZTogbnVtYmVyW10gPSBudWxsO1xyXG4gICAgbGV0IHZhbHVlczogc3RyaW5nW10gPSBudWxsO1xyXG5cclxuICAgIGlmIChpc051bGwpIHtcclxuICAgICAgbGV0IGk6IG51bWJlciA9IDA7XHJcbiAgICAgIGluZGljZSA9IFtcclxuICAgICAgICBOT1RfRk9VTkRcclxuICAgICAgXTtcclxuICAgICAgZm9yIChpID0gMDsgdGhpcy5fbnVsbEZsYWdzICE9PSBudWxsICYmIGkgPCB0aGlzLl9udWxsRmxhZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5fbnVsbEZsYWdzW2ldKSB7XHJcbiAgICAgICAgICBpbmRpY2VbMF0gPSBpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaW5kaWNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpc1ZlY3RvclZhbHVlKSB7XHJcbiAgICAgIC8vIHNwbGl0IHRoZSBjb21tYSBzZXBhcmF0ZWQgdmFsdWVzO1xyXG4gICAgICBpZiAoc3BsaXRDb21tYVNlcGVyYXRlZFZhbHMpIHtcclxuICAgICAgICB2YWx1ZXMgPSBtZ1ZhbC5zcGxpdCgnLCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZhbHVlcyA9IFtcclxuICAgICAgICAgIG1nVmFsXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB2ZWN0b3JUeXBlOiBWZWN0b3JUeXBlID0gbmV3IFZlY3RvclR5cGUobWdWYWwpO1xyXG4gICAgICB2YWx1ZXMgPSB2ZWN0b3JUeXBlLkdldENlbGxWYWx1ZXMoKTtcclxuICAgIH1cclxuICAgIGluZGljZSA9IG5ldyBBcnJheTxudW1iZXI+KHZhbHVlcy5sZW5ndGgpO1xyXG5cclxuICAgIGZvciAobGV0IGlDdHI6IG51bWJlciA9IDA7IGlDdHIgPCB2YWx1ZXMubGVuZ3RoOyBpQ3RyID0gaUN0ciArIDEpIHtcclxuICAgICAgcmVzdWx0ID0gTk9UX0ZPVU5EO1xyXG4gICAgICBmaXJzdEZpdE1hdGNoSWR4ID0gTk9UX0ZPVU5EO1xyXG5cclxuICAgICAgdG1wTWdWYWwgPSB2YWx1ZXNbaUN0cl07XHJcblxyXG4gICAgICBpZiAodGhpcy5faXNOdW1lcmljVHlwZSB8fCBleHRyYU51bXMgIT09IG51bGwpIHtcclxuICAgICAgICAgIGN0cmxOdW1WYWwgPSBuZXcgTlVNX1RZUEUodG1wTWdWYWwpO1xyXG4gICAgICAgIHRyaW1tZWRWYWwgPSB0bXBNZ1ZhbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjdHJsTnVtVmFsID0gbnVsbDtcclxuICAgICAgICB0cmltbWVkVmFsID0gU3RyVXRpbC5ydHJpbSh0bXBNZ1ZhbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJ1biB0d28gcGFzc2VzLiBGaXJzdCBvbmUgb24gZXh0cmEgdmFsdWVzLCBzZWNvbmQgb25lIG9uIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhpcyBvYmplY3RcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyICYmIHJlc3VsdCA9PT0gTk9UX0ZPVU5EOyBpKyspIHtcclxuICAgICAgICBzd2l0Y2ggKGkpIHtcclxuICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgdmFscyA9IGV4dHJhVmFscztcclxuICAgICAgICAgICAgbnVtcyA9IGV4dHJhTnVtcztcclxuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSAxOlxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzTnVtZXJpY1R5cGUgfHwgbnVtcyAhPSBudWxsKVxyXG4gICAgICAgICAgICAgIG9mZnNldCA9IChudW1zID09IG51bGwgPyAwIDogbnVtcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgb2Zmc2V0ID0gKHZhbHMgPT0gbnVsbCA/IDAgOiB2YWxzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIHZhbHMgPSB0aGlzLl9saW5rVmFscztcclxuICAgICAgICAgICAgbnVtcyA9IHRoaXMuX251bVZhbHM7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2YWxzLmxlbmd0aCAmJiByZXN1bHQgPT09IE5PVF9GT1VORDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc051bWVyaWNUeXBlIHx8IG51bXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGlmIChOVU1fVFlQRS5udW1fY21wKGN0cmxOdW1WYWwsIG51bXNbal0pID09PSAwIHx8IHRtcE1nVmFsID09PSB2YWxzW2pdIHx8XHJcbiAgICAgICAgICAgICAgICB0bXBNZ1ZhbCA9PT0gdmFsc1tqXSkge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhlIG51bWVyaWMgdHlwZSBpcyBmb3VuZCBleGFjdGx5XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmICh2YWxzW2pdID09PSB0bXBNZ1ZhbCB8fCB0cmltbWVkVmFsLmxlbmd0aCA+IDAgJiYgU3RyVXRpbC5ydHJpbSh2YWxzW2pdKSA9PT0gdHJpbW1lZFZhbCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaiArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgLy8gSWYgTWFnaWMgc2VudCB1cyBhIGJsYW5rIHZhbHVlLCBhbmQgc3VjaCBhIHZhbHVlIGV4aXN0cyBpbiB0aGUgXCJub24gREMgcmFuZ2VcIiBzZWxlY3QgaXQuXHJcbiAgICAgICAgICAgICAgLy8gUUNSICMgNzUxMDM3IC0gc2VhcmNoIGZvciBibGFuayB2YWx1ZXMgZXZlbiBpbiB0aGUgbGlua2VkIHZhbHVlcyBhcnJheSBvZiB0aGUgZGF0YSBjb250cm9sXHJcbiAgICAgICAgICAgICAgaWYgKHRyaW1tZWRWYWwubGVuZ3RoID09PSAwICYmIFN0clV0aWwucnRyaW0odmFsc1tqXSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBqICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAvLyBzYXZlIHRoZSBmaXJzdCBmaXR0aW5nIHJlc3VsdFxyXG4gICAgICAgICAgICAgIC8vIGZpeGVkIGJ1ZyM6IDkzNTAxNSwgdGhlIGNvbXBhcmlzb24gd2lsbCBiZSBhY2NvcmRpbmcgdG8gdGhlIG1pbiBsZW5ndGggb2YgdGhlIGRhdGEgJiB0aGUgb3B0aW9uc1xyXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IE5PVF9GT1VORCAmJiB0cmltbWVkVmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG1pbkxlbmd0aCA9IE1hdGgubWluKHRyaW1tZWRWYWwubGVuZ3RoLCB2YWxzW2pdLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBjb21wU3RyID0gdHJpbW1lZFZhbC5zdWJzdHIoMCwgbWluTGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb21wU3RyLmxlbmd0aCA+IDAgJiYgdmFsc1tqXS5zdGFydHNXaXRoKGNvbXBTdHIpKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbWluIGxlbmd0aCBtYXRjaCwgY2hlY2sgaWYgaXQgaXMgdGhlIGZpcnN0IGZpdCBtYXRjaC5cclxuICAgICAgICAgICAgICAgICAgLy8gZWc6IGlmIGxpc3QgaGFzIGEsYWFhLGFhYWFhIGFuZCBmaWVsZCB2YWx1ZSBpcyAnYWEnIHRoZW4gZmlyc3QgZml0IG1hdGNoIGlzICdhYWEnLlxyXG4gICAgICAgICAgICAgICAgICAvLyBpZiBsaXN0IGlzIGEsYWFhYWEsYWFhIGFuZCBmaWVsZCB2YWx1ZSBpcyAnYWEnIHRoZW4gZmlyc3QgZml0IG1hdGNoIGlzICdhYWFhYScuXHJcbiAgICAgICAgICAgICAgICAgIC8vIGlmIGZpcnN0IGZpdCBub3QgZm91bmQsIHRoZW4gY2xvc2VzdCBtYXRjaCBpcyB1c2VkIChlZy0gaWYgZmllbGQgdmFsdWUgaXNcclxuICAgICAgICAgICAgICAgICAgLy8gJ2FhYWFhYWFhYScgaW4gYm90aCB0aGUgYWJvdmUgbGlzdCwgY2xvc2VzdCBtYXRjaCB3b3VsZCBiZSAnYWFhYWEnKS5cclxuICAgICAgICAgICAgICAgICAgaWYgKG1pbkxlbmd0aCA+IGZpcnN0Rml0TWF0Y2hMZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBmaXJzdEZpdE1hdGNoSWR4ID0gaiArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICBmaXJzdEZpdE1hdGNoTGVuZ3RoID0gbWluTGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09PSBOT1RfRk9VTkQpXHJcbiAgICAgICAgcmVzdWx0ID0gZmlyc3RGaXRNYXRjaElkeDtcclxuXHJcbiAgICAgIC8vIHN0b3JlIGluZGljZSBmb3VuZCBpbiBpbnRlZ2VyIGFycmF5LlxyXG4gICAgICBpbmRpY2VbaUN0cl0gPSByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGluZGljZTtcclxuICB9XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0cyB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBsaW5rIGl0ZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWR4XCI+dGhlIGluZGV4IG9mIHRoZSBsaW5rIHZhbHVlICgwID0gZmlyc3QgaXRlbSkgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IE1hZ2ljIHZhbHVlIG9mIHRoZSBpdGVtIDwvcmV0dXJucz5cclxuICBnZXRMaW5rVmFsdWUoaWR4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxua1ZhbDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5fbGlua1ZhbHMgIT09IG51bGwpIHtcclxuICAgICAgbG5rVmFsID0gdGhpcy5fbGlua1ZhbHNbaWR4XTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbG5rVmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSwgaWYgdmFsdWUgYXQgaW5kZXggaWR4IGlzIG51bGxcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGhlXCI+aW5kZXggb2YgYW4gaXRlbSBpbiB0aGUgbGlzdCA8L3BhcmFtPlxyXG4gIGlzTnVsbChpZHg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuX251bGxGbGFncyA9PSBudWxsKVxyXG4gICAgLy8gaGFwcGVucyBmb3Igbm9uLURDIGNob2ljZSBjb250cm9sc1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX251bGxGbGFnc1tpZHhdO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGluY3JlYXNlIHRoZSByZWZlcmVuY2VzIGNvdW50IGJ5IDFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEFkZFJlZmVyZW5jZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlZkNvdW50Kys7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZGVjcmVhc2UgdGhlIHJlZmVyZW5jZXMgY291bnQgYnkgMVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgUmVtb3ZlUmVmZXJlbmNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVmQ291bnQtLTtcclxuICAgIGlmICh0aGlzLl9yZWZDb3VudCA8IDApIHtcclxuICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKFwiaW4gZGNWYWxzLmRlY3JlYXNlKCkgcmVmZXJlbmNlcyBjb3VudCBpcyBsZXNzIHRoYW4gemVyb1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgdGhlIHJlZmVyZW5jZXMgY291bnQgaXMgemVyb1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgVG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBOU3RyaW5nLkZvcm1hdChcInt7RENWYWx1ZXMgMHh7MDpYOH0sIHsxfSByZWZzfX1cIiwgdGhpcy5faWQsIHRoaXMuX3JlZkNvdW50KTtcclxuICB9XHJcbn1cclxuIl19
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNWYWx1ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZGF0YS9EY1ZhbHVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHeEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBVyxZQUFZLENBQUMsaUJBQWlCLENBQUM7QUFHaEUsTUFBTSxPQUFPLFFBQVE7SUFxQm5CLFlBQVksS0FBYyxFQUFFLFFBQWlCO1FBbEJyQyxRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBQ2hCLFVBQUssR0FBcUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQ2hELGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsZUFBVSxHQUFjLElBQUksQ0FBQztRQUM3QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxhQUFRLEdBQWUsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBYSxJQUFJLENBQUM7UUFDM0IsY0FBUyxHQUFhLElBQUksQ0FBQztRQVlqQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQWRELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFD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QUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsTUFBTSxJQUFJLG9CQUFvQixDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDM0Y7SUFDSCxDQUFDO0lBS0QsUUFBUTtRQUNOLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lSZWZlcmVuY2VkT2JqZWN0fSBmcm9tIFwiLi9JUmVmZXJlbmNlZE9iamVjdFwiO1xyXG5pbXBvcnQge0d1aUNvbnN0YW50c30gZnJvbSBcIi4uLy4uL0d1aUNvbnN0YW50c1wiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGUsIFN0clV0aWx9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7TlVNX1RZUEV9IGZyb20gXCIuL05VTV9UWVBFXCI7XHJcbmltcG9ydCB7QXBwbGljYXRpb25FeGNlcHRpb24sIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1ZlY3RvclR5cGV9IGZyb20gXCIuL1ZlY3RvclR5cGVcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3QgRU1QVFlfRENSRUY6IG51bWJlciA9IC0yO1xyXG5leHBvcnQgY29uc3QgTk9UX0ZPVU5EOiBudW1iZXIgPSBHdWlDb25zdGFudHMuREVGQVVMVF9WQUxVRV9JTlQ7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERjVmFsdWVzIGltcGxlbWVudHMgSVJlZmVyZW5jZWRPYmplY3Qge1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfaWQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfdHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTsgLy8gQWxwaGEgfCBOdW1lcmljIHwgRGF0ZSB8IFRpbWUgfCBMb2dpY2FsXHJcbiAgcHJpdmF0ZSBfcmVmQ291bnQ6IG51bWJlciA9IDA7IC8vIHJlZmVyZW5jZXMgY291bnRlclxyXG4gIHByaXZhdGUgX251bGxGbGFnczogYm9vbGVhbltdID0gbnVsbDsgLy8gbGlua2VkIG51bGwgdmFsdWUgZmxhZ3NcclxuICBwcml2YXRlIF9pc051bWVyaWNUeXBlOiBib29sZWFuID0gZmFsc2U7IC8vIHRydWUgaWYgdGhlIHR5cGUgaXMgb25lIG9mOiBudW1lcmljLCBkYXRlLCB0aW1lXHJcbiAgcHJpdmF0ZSBfbnVtVmFsczogTlVNX1RZUEVbXSA9IG51bGw7IC8vIG51bWVyaWMgbGlua2VkIHZhbHVlc1xyXG4gIHByaXZhdGUgX2xpbmtWYWxzOiBzdHJpbmdbXSA9IG51bGw7IC8vIGxpbmtlZCB2YWx1ZXNcclxuICBwcml2YXRlIF9kaXNwVmFsczogc3RyaW5nW10gPSBudWxsOyAvLyBkaXNwbGF5IHZhbHVlc1xyXG5cclxuICBnZXQgSGFzUmVmZXJlbmNlcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWZDb3VudCA+IDA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbXB0eVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNWZWN0b3JcIj48L3BhcmFtPlxyXG4gIGNvbnN0cnVjdG9yKGVtcHR5OiBib29sZWFuLCBpc1ZlY3RvcjogYm9vbGVhbikge1xyXG4gICAgaWYgKGVtcHR5KSB7XHJcbiAgICAgIHRoaXMuX2lkID0gRU1QVFlfRENSRUY7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc051bWVyaWNUeXBlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHVybnMgdGhlIGF0dHIgb2YgRGNWYWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldEF0dHIoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIHNldFR5cGUodHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5NRU1PKVxyXG4gICAgICB0aGlzLl90eXBlID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMgfHwgdGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5EQVRFIHx8XHJcbiAgICAgIHRoaXMuX3R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVElNRSkge1xyXG4gICAgICB0aGlzLl9pc051bWVyaWNUeXBlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFNldElEKG5ld0lkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lkID0gbmV3SWQ7XHJcbiAgfVxyXG5cclxuICBTZXREaXNwbGF5VmFsdWVzKGRpc3BsYXlWYWx1ZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBpZiAoZGlzcGxheVZhbHVlcyAhPT0gbnVsbClcclxuICAgICAgdGhpcy5fZGlzcFZhbHMgPSBkaXNwbGF5VmFsdWVzLnNsaWNlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2Rpc3BWYWxzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIFNldExpbmtWYWx1ZXMobGlua1ZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGlmIChsaW5rVmFsdWVzICE9PSBudWxsKVxyXG4gICAgICB0aGlzLl9saW5rVmFscyA9IGxpbmtWYWx1ZXMuc2xpY2UoKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fbGlua1ZhbHMgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0TnVtZXJpY1ZhbHMoKTtcclxuICB9XHJcblxyXG4gIHNldE51bGxGbGFncyhudWxsRmxhZ3M6IGJvb2xlYW5bXSk6IHZvaWQge1xyXG4gICAgaWYgKG51bGxGbGFncyAhPT0gbnVsbClcclxuICAgICAgdGhpcy5fbnVsbEZsYWdzID0gbnVsbEZsYWdzLnNsaWNlKCk7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9udWxsRmxhZ3MgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXROdW1lcmljVmFscygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc051bWVyaWNUeXBlICYmIHRoaXMuX2xpbmtWYWxzICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX251bVZhbHMgPSBuZXcgQXJyYXk8TlVNX1RZUEU+KHRoaXMuX2xpbmtWYWxzLmxlbmd0aCk7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9saW5rVmFscy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX251bVZhbHNbaV0gPSBuZXcgTlVNX1RZUEUodGhpcy5fbGlua1ZhbHNbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fbnVtVmFscyA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgaWQgb2YgdGhpcyBkY1ZhbHMgb2JqZWN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRJZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgZGlzcGxheSB2YWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldERpc3BWYWxzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwVmFscztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIExpbmsgZmllbGQgdmFsdWVzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0TGlua1ZhbHMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xpbmtWYWxzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGFycmF5IG9mIGluZGljZSBmb3IgYW4gaXRlbSBpbiB0aGUgbGlzdCBieSBjb21wYXJpbmcgdGhlIG1nVmFsIHRvIHRoZSBsaW5rZWQgdmFsdWUgb3IgKC0xKSBpZiBub25lIHdhc1xyXG4gIC8vLyAgIGZvdW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nVmFsXCI+dGhlIGludGVybmFsIHZhbHVlIHRvIGxvb2sgZm9yIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc1ZlY3RvclZhbHVlXCI+RGVub3RlcyB3aGV0aGVyIHRoZSB2YWx1ZSBpbiBtZ1ZhbCBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIHZlY3RvciAodHJ1ZSkgb3Igbm90IChmYWxzZSkuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlzTnVsbFwiPnRydWUgaWYgdGhlIHZhbHVlIHRvIGxvb2sgZm9yIGlzIG51bGwgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4dHJhVmFsc1wiPkFkZGl0aW9uYWwgdmFsdWVzLCBwcmVwZW5kZWQgdG8gdGhlIHNlYXJjaGVkIHZhbHVlcy48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4dHJhTnVtc1wiPkFkZGl0aW9uYWwgbnVtZXJpYyB2YWx1ZXMgdG8gYmUgcHJlcGVuZGVkIHRvIHRoZSBzZWFyY2hlZCB2YWx1ZXMuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNwbGl0Q29tbWFTZXBlcmF0ZWRWYWxzXCI+dG8gc3BsaXQgdGhlIHZhbCBvbiBjb21tYSBvciBub3QgPC9wYXJhbT5cclxuICBnZXRJbmRleE9mKG1nVmFsOiBzdHJpbmcsIGlzVmVjdG9yVmFsdWU6IGJvb2xlYW4sIGlzTnVsbDogYm9vbGVhbiwgZXh0cmFWYWxzOiBzdHJpbmdbXSwgZXh0cmFOdW1zOiBOVU1fVFlQRVtdLCBzcGxpdENvbW1hU2VwZXJhdGVkVmFsczogYm9vbGVhbik6IG51bWJlcltdIHtcclxuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IE5PVF9GT1VORDtcclxuXHJcbiAgICBsZXQgdG1wTWdWYWw6IHN0cmluZztcclxuICAgIGxldCBjdHJsTnVtVmFsOiBOVU1fVFlQRTtcclxuICAgIGxldCB0cmltbWVkVmFsOiBzdHJpbmc7XHJcbiAgICBsZXQgdmFsczogc3RyaW5nW10gPSBudWxsO1xyXG4gICAgbGV0IG51bXM6IE5VTV9UWVBFW10gPSBudWxsO1xyXG4gICAgbGV0IG9mZnNldDogbnVtYmVyID0gMDtcclxuICAgIGxldCBmaXJzdEZpdE1hdGNoSWR4O1xyXG4gICAgbGV0IGZpcnN0Rml0TWF0Y2hMZW5ndGg6IG51bWJlciA9IC0xO1xyXG4gICAgbGV0IG1pbkxlbmd0aDogbnVtYmVyID0gLTE7XHJcbiAgICBsZXQgY29tcFN0cjogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBpbmRpY2U6IG51bWJlcltdID0gbnVsbDtcclxuICAgIGxldCB2YWx1ZXM6IHN0cmluZ1tdID0gbnVsbDtcclxuXHJcbiAgICBpZiAoaXNOdWxsKSB7XHJcbiAgICAgIGxldCBpOiBudW1iZXIgPSAwO1xyXG4gICAgICBpbmRpY2UgPSBbXHJcbiAgICAgICAgTk9UX0ZPVU5EXHJcbiAgICAgIF07XHJcbiAgICAgIGZvciAoaSA9IDA7IHRoaXMuX251bGxGbGFncyAhPT0gbnVsbCAmJiBpIDwgdGhpcy5fbnVsbEZsYWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX251bGxGbGFnc1tpXSkge1xyXG4gICAgICAgICAgaW5kaWNlWzBdID0gaTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGluZGljZTtcclxuICAgIH1cclxuICAgIGlmICghaXNWZWN0b3JWYWx1ZSkge1xyXG4gICAgICAvLyBzcGxpdCB0aGUgY29tbWEgc2VwYXJhdGVkIHZhbHVlcztcclxuICAgICAgaWYgKHNwbGl0Q29tbWFTZXBlcmF0ZWRWYWxzKSB7XHJcbiAgICAgICAgdmFsdWVzID0gbWdWYWwuc3BsaXQoJywnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YWx1ZXMgPSBbXHJcbiAgICAgICAgICBtZ1ZhbFxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgdmVjdG9yVHlwZTogVmVjdG9yVHlwZSA9IG5ldyBWZWN0b3JUeXBlKG1nVmFsKTtcclxuICAgICAgdmFsdWVzID0gdmVjdG9yVHlwZS5HZXRDZWxsVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICBpbmRpY2UgPSBuZXcgQXJyYXk8bnVtYmVyPih2YWx1ZXMubGVuZ3RoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpQ3RyOiBudW1iZXIgPSAwOyBpQ3RyIDwgdmFsdWVzLmxlbmd0aDsgaUN0ciA9IGlDdHIgKyAxKSB7XHJcbiAgICAgIHJlc3VsdCA9IE5PVF9GT1VORDtcclxuICAgICAgZmlyc3RGaXRNYXRjaElkeCA9IE5PVF9GT1VORDtcclxuXHJcbiAgICAgIHRtcE1nVmFsID0gdmFsdWVzW2lDdHJdO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX2lzTnVtZXJpY1R5cGUgfHwgZXh0cmFOdW1zICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjdHJsTnVtVmFsID0gbmV3IE5VTV9UWVBFKHRtcE1nVmFsKTtcclxuICAgICAgICB0cmltbWVkVmFsID0gdG1wTWdWYWw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY3RybE51bVZhbCA9IG51bGw7XHJcbiAgICAgICAgdHJpbW1lZFZhbCA9IFN0clV0aWwucnRyaW0odG1wTWdWYWwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSdW4gdHdvIHBhc3Nlcy4gRmlyc3Qgb25lIG9uIGV4dHJhIHZhbHVlcywgc2Vjb25kIG9uZSBvbiB2YWx1ZXMgYmVsb25naW5nIHRvIHRoaXMgb2JqZWN0XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMiAmJiByZXN1bHQgPT09IE5PVF9GT1VORDsgaSsrKSB7XHJcbiAgICAgICAgc3dpdGNoIChpKSB7XHJcbiAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgIHZhbHMgPSBleHRyYVZhbHM7XHJcbiAgICAgICAgICAgIG51bXMgPSBleHRyYU51bXM7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc051bWVyaWNUeXBlIHx8IG51bXMgIT0gbnVsbClcclxuICAgICAgICAgICAgICBvZmZzZXQgPSAobnVtcyA9PSBudWxsID8gMCA6IG51bXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9mZnNldCA9ICh2YWxzID09IG51bGwgPyAwIDogdmFscy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB2YWxzID0gdGhpcy5fbGlua1ZhbHM7XHJcbiAgICAgICAgICAgIG51bXMgPSB0aGlzLl9udW1WYWxzO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWxzICE9IG51bGwpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFscy5sZW5ndGggJiYgcmVzdWx0ID09PSBOT1RfRk9VTkQ7IGorKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faXNOdW1lcmljVHlwZSB8fCBudW1zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBpZiAoTlVNX1RZUEUubnVtX2NtcChjdHJsTnVtVmFsLCBudW1zW2pdKSA9PT0gMCB8fCB0bXBNZ1ZhbCA9PT0gdmFsc1tqXSB8fFxyXG4gICAgICAgICAgICAgICAgdG1wTWdWYWwgPT09IHZhbHNbal0pIHtcclxuICAgICAgICAgICAgICAgIC8vIHRoZSBudW1lcmljIHR5cGUgaXMgZm91bmQgZXhhY3RseVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaiArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAodmFsc1tqXSA9PT0gdG1wTWdWYWwgfHwgdHJpbW1lZFZhbC5sZW5ndGggPiAwICYmIFN0clV0aWwucnRyaW0odmFsc1tqXSkgPT09IHRyaW1tZWRWYWwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGogKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmIE1hZ2ljIHNlbnQgdXMgYSBibGFuayB2YWx1ZSwgYW5kIHN1Y2ggYSB2YWx1ZSBleGlzdHMgaW4gdGhlIFwibm9uIERDIHJhbmdlXCIgc2VsZWN0IGl0LlxyXG4gICAgICAgICAgICAgIC8vIFFDUiAjIDc1MTAzNyAtIHNlYXJjaCBmb3IgYmxhbmsgdmFsdWVzIGV2ZW4gaW4gdGhlIGxpbmtlZCB2YWx1ZXMgYXJyYXkgb2YgdGhlIGRhdGEgY29udHJvbFxyXG4gICAgICAgICAgICAgIGlmICh0cmltbWVkVmFsLmxlbmd0aCA9PT0gMCAmJiBTdHJVdGlsLnJ0cmltKHZhbHNbal0pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaiArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgZmlyc3QgZml0dGluZyByZXN1bHRcclxuICAgICAgICAgICAgICAvLyBmaXhlZCBidWcjOiA5MzUwMTUsIHRoZSBjb21wYXJpc29uIHdpbGwgYmUgYWNjb3JkaW5nIHRvIHRoZSBtaW4gbGVuZ3RoIG9mIHRoZSBkYXRhICYgdGhlIG9wdGlvbnNcclxuICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBOT1RfRk9VTkQgJiYgdHJpbW1lZFZhbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGggPSBNYXRoLm1pbih0cmltbWVkVmFsLmxlbmd0aCwgdmFsc1tqXS5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgY29tcFN0ciA9IHRyaW1tZWRWYWwuc3Vic3RyKDAsIG1pbkxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcFN0ci5sZW5ndGggPiAwICYmIHZhbHNbal0uc3RhcnRzV2l0aChjb21wU3RyKSkge1xyXG4gICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIG1pbiBsZW5ndGggbWF0Y2gsIGNoZWNrIGlmIGl0IGlzIHRoZSBmaXJzdCBmaXQgbWF0Y2guXHJcbiAgICAgICAgICAgICAgICAgIC8vIGVnOiBpZiBsaXN0IGhhcyBhLGFhYSxhYWFhYSBhbmQgZmllbGQgdmFsdWUgaXMgJ2FhJyB0aGVuIGZpcnN0IGZpdCBtYXRjaCBpcyAnYWFhJy5cclxuICAgICAgICAgICAgICAgICAgLy8gaWYgbGlzdCBpcyBhLGFhYWFhLGFhYSBhbmQgZmllbGQgdmFsdWUgaXMgJ2FhJyB0aGVuIGZpcnN0IGZpdCBtYXRjaCBpcyAnYWFhYWEnLlxyXG4gICAgICAgICAgICAgICAgICAvLyBpZiBmaXJzdCBmaXQgbm90IGZvdW5kLCB0aGVuIGNsb3Nlc3QgbWF0Y2ggaXMgdXNlZCAoZWctIGlmIGZpZWxkIHZhbHVlIGlzXHJcbiAgICAgICAgICAgICAgICAgIC8vICdhYWFhYWFhYWEnIGluIGJvdGggdGhlIGFib3ZlIGxpc3QsIGNsb3Nlc3QgbWF0Y2ggd291bGQgYmUgJ2FhYWFhJykuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChtaW5MZW5ndGggPiBmaXJzdEZpdE1hdGNoTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RGaXRNYXRjaElkeCA9IGogKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RGaXRNYXRjaExlbmd0aCA9IG1pbkxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PT0gTk9UX0ZPVU5EKVxyXG4gICAgICAgIHJlc3VsdCA9IGZpcnN0Rml0TWF0Y2hJZHg7XHJcblxyXG4gICAgICAvLyBzdG9yZSBpbmRpY2UgZm91bmQgaW4gaW50ZWdlciBhcnJheS5cclxuICAgICAgaW5kaWNlW2lDdHJdID0gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbmRpY2U7XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldHMgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgbGluayBpdGVtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgbGluayB2YWx1ZSAoMCA9IGZpcnN0IGl0ZW0pIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBNYWdpYyB2YWx1ZSBvZiB0aGUgaXRlbSA8L3JldHVybnM+XHJcbiAgZ2V0TGlua1ZhbHVlKGlkeDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBsbmtWYWw6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX2xpbmtWYWxzICE9PSBudWxsKSB7XHJcbiAgICAgIGxua1ZhbCA9IHRoaXMuX2xpbmtWYWxzW2lkeF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxua1ZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUsIGlmIHZhbHVlIGF0IGluZGV4IGlkeCBpcyBudWxsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRoZVwiPmluZGV4IG9mIGFuIGl0ZW0gaW4gdGhlIGxpc3QgPC9wYXJhbT5cclxuICBpc051bGwoaWR4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLl9udWxsRmxhZ3MgPT0gbnVsbClcclxuICAgIC8vIGhhcHBlbnMgZm9yIG5vbi1EQyBjaG9pY2UgY29udHJvbHNcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9udWxsRmxhZ3NbaWR4XTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbmNyZWFzZSB0aGUgcmVmZXJlbmNlcyBjb3VudCBieSAxXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBBZGRSZWZlcmVuY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWZDb3VudCsrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlY3JlYXNlIHRoZSByZWZlcmVuY2VzIGNvdW50IGJ5IDFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFJlbW92ZVJlZmVyZW5jZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlZkNvdW50LS07XHJcbiAgICBpZiAodGhpcy5fcmVmQ291bnQgPCAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIGRjVmFscy5kZWNyZWFzZSgpIHJlZmVyZW5jZXMgY291bnQgaXMgbGVzcyB0aGFuIHplcm9cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHRoZSByZWZlcmVuY2VzIGNvdW50IGlzIHplcm9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoXCJ7e0RDVmFsdWVzIDB4ezA6WDh9LCB7MX0gcmVmc319XCIsIHRoaXMuX2lkLCB0aGlzLl9yZWZDb3VudCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -3,27 +3,6 @@ import { List, NNumber, NumberStyles, StringBuilder } from '@magic-xpa/mscorelib
3
3
  import { Base64, StorageAttribute } from '@magic-xpa/utils';
4
4
  import { RecordUtils } from './RecordUtils';
5
5
  import { GuiEnvironment } from '../../GuiEnvironment';
6
- /// <summary>
7
- /// Base class for DcValues builder. The class is abstract and, thus, must be inherited.
8
- /// The inheriting class, which will usually be in another package, will not be able to modify
9
- /// a DcValues object directly, since all its setter methods are 'internal'. This class will
10
- /// provide the setter methods for the inheriting builder.
11
- /// <para>Here's a usage example:
12
- /// <example>
13
- /// class MyConcreteBuilder : DcValuesBuilderBase
14
- /// {
15
- /// public override DcValues Build()
16
- /// {
17
- /// var dcValues = base.CreateDcValues(false);
18
- /// SetId(newId);
19
- /// SetType(theType);
20
- /// SetDisplayValues(theDisplayValues);
21
- /// ...
22
- /// return dcValues;
23
- /// }
24
- /// }
25
- /// </example>
26
- /// </summary>
27
6
  export class DcValuesBuilderBase {
28
7
  CreateDcValues(isVector) {
29
8
  return new DcValues(false, isVector);
@@ -54,12 +33,6 @@ export class DcValuesBuilderBase {
54
33
  SetNullFlags_1(dcValues, nullFlags) {
55
34
  dcValues.setNullFlags(nullFlags);
56
35
  }
57
- /// <summary>
58
- /// Parse a serialized values string as an array of values.
59
- /// </summary>
60
- /// <param name="valueStr">This is string of the concatenated values, with each value preceded with a hex number denoting its length.</param>
61
- /// <param name="dataType">The data type of the values.</param>
62
- /// <param name="useHex"></param>
63
36
  ParseValues(valueStr, dataType, useHex) {
64
37
  let snumber;
65
38
  let tmpValue = null;
@@ -87,18 +60,15 @@ export class DcValuesBuilderBase {
87
60
  }
88
61
  nextIdx = 0;
89
62
  while (nextIdx < valueStr.length) {
90
- // compute the length of an alpha data
91
63
  if (dataType === StorageAttribute.ALPHA || dataType === StorageAttribute.UNICODE ||
92
64
  dataType === StorageAttribute.BLOB || dataType === StorageAttribute.BLOB_VECTOR) {
93
65
  snumber = valueStr.substr(nextIdx, 4);
94
66
  len = NNumber.Parse(snumber, NumberStyles.HexNumber);
95
67
  nextIdx += 4;
96
68
  }
97
- // check if the data is spanned
98
69
  if (len >= 0x8000) {
99
70
  suffixBuf = new StringBuilder();
100
71
  len -= 0x8000;
101
- // next segment may also be spanned
102
72
  nextIdx += RecordUtils.getSpannedField(valueStr, len, nextIdx, dataType, suffixBuf, useHex);
103
73
  buffer.push(suffixBuf.ToString());
104
74
  }
@@ -108,25 +78,20 @@ export class DcValuesBuilderBase {
108
78
  tmpValue = valueStr.substr(nextIdx, (endIdx) - (nextIdx));
109
79
  else
110
80
  tmpValue = Base64.decodeToHex(valueStr.substr(nextIdx, (endIdx) - (nextIdx)));
111
- // the following two lines are redundant since the makePrintable() is called
112
- // in the guiManager when building the options
113
- /*if (dataType == DATA_TYPE_ALPHA)
114
- tmpValue = guiManager.makePrintable(tmpValue);*/
115
81
  buffer.push(tmpValue);
116
82
  nextIdx = endIdx;
117
83
  }
118
84
  }
119
- // vector to array
120
85
  return buffer.ToArray();
121
86
  }
122
87
  ParseNullFlags(nullFlagsString) {
123
88
  let array = new Array(nullFlagsString.length);
124
89
  for (let i = 0; i < nullFlagsString.length; i = i + 1) {
125
- array[i] = (nullFlagsString.charAt(i) !== '0' /*'0'*/);
90
+ array[i] = (nullFlagsString.charAt(i) !== '0');
126
91
  }
127
92
  return array;
128
93
  }
129
94
  constructor() {
130
95
  }
131
96
  }
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNWYWx1ZXNCdWlsZGVyQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9kYXRhL0RjVmFsdWVzQnVpbGRlckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELGFBQWE7QUFDYix3RkFBd0Y7QUFDeEYsOEZBQThGO0FBQzlGLDRGQUE0RjtBQUM1RiwwREFBMEQ7QUFDMUQsaUNBQWlDO0FBQ2pDLGFBQWE7QUFDYixpREFBaUQ7QUFDakQsS0FBSztBQUNMLHNDQUFzQztBQUN0QyxPQUFPO0FBQ1AsbURBQW1EO0FBQ25ELHNCQUFzQjtBQUN0QiwwQkFBMEI7QUFDMUIsNENBQTRDO0FBQzVDLFlBQVk7QUFDWix5QkFBeUI7QUFDekIsT0FBTztBQUNQLEtBQUs7QUFDTCxjQUFjO0FBQ2QsY0FBYztBQUNkLE1BQU0sT0FBZ0IsbUJBQW1CO0lBSXZDLGNBQWMsQ0FBQyxRQUFpQjtRQUM5QixPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQWtCLEVBQUUsS0FBYTtRQUNyQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBa0IsRUFBRSxJQUFzQjtRQUNoRCxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxRQUFrQixFQUFFLGFBQXVCO1FBQzFELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWtCLEVBQUUsVUFBb0I7UUFDcEQsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBSUQsWUFBWSxDQUFDLFFBQWtCLEVBQUUsMEJBQStCO1FBQzlELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLDBCQUEwQixLQUFLLElBQUksSUFBSSwwQkFBMEIsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDLEVBQUU7WUFDL0ssSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztZQUMxRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxjQUFjLENBQUMsUUFBa0IsRUFBRSxlQUF1QjtRQUNoRSxJQUFJLFNBQVMsR0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUFrQixFQUFFLFNBQW9CO1FBQzdELFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGFBQWE7SUFDYiwyREFBMkQ7SUFDM0QsY0FBYztJQUNkLDZJQUE2STtJQUM3SSwrREFBK0Q7SUFDL0QsaUNBQWlDO0lBQ3ZCLFdBQVcsQ0FBQyxRQUFnQixFQUFFLFFBQTBCLEVBQUUsTUFBZTtRQUVqRixJQUFJLE9BQWUsQ0FBQztRQUNwQixJQUFJLFFBQVEsR0FBVyxJQUFJLENBQUM7UUFDNUIsSUFBSSxNQUFNLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDOUMsSUFBSSxLQUFlLENBQUM7UUFDcEIsSUFBSSxHQUFXLENBQUM7UUFDaEIsSUFBSSxPQUFlLENBQUM7UUFDcEIsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxTQUFTLEdBQWtCLElBQUksQ0FBQztRQUVwQyxRQUFRLFFBQVEsRUFBRTtZQUNoQixLQUFLLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QixLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUMzQixLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBQ3hCLElBQUksTUFBTTtvQkFDUixHQUFHLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQzs7b0JBRTdELEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckYsTUFBTTtZQUVSLEtBQUssZ0JBQWdCLENBQUMsT0FBTztnQkFDM0IsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDUixNQUFNO1lBRVI7Z0JBQ0UsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDUixNQUFNO1NBQ1Q7UUFFRCxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osT0FBTyxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNoQyxzQ0FBc0M7WUFDdEMsSUFBSSxRQUFRLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUM5RSxRQUFRLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pGLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDckQsT0FBTyxJQUFJLENBQUMsQ0FBQzthQUNkO1lBRUQsK0JBQStCO1lBQy9CLElBQUksR0FBRyxJQUFJLE1BQU0sRUFBRTtnQkFDakIsU0FBUyxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2hDLEdBQUcsSUFBSSxNQUFNLENBQUM7Z0JBQ2QsbUNBQW1DO2dCQUNuQyxPQUFPLElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ25DO2lCQUNJO2dCQUNILE1BQU0sR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixJQUFJLE1BQU07b0JBQ1IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDOztvQkFFMUQsUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEYsNEVBQTRFO2dCQUM1RSw4Q0FBOEM7Z0JBQzlDO3FFQUNxRDtnQkFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLE1BQU0sQ0FBQzthQUNsQjtTQUNGO1FBRUQsa0JBQWtCO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsZUFBdUI7UUFDcEMsSUFBSSxLQUFLLEdBQWMsSUFBSSxLQUFLLENBQVUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFBLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7SUFDQSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEY1ZhbHVlcyB9IGZyb20gJy4vRGNWYWx1ZXMnO1xyXG5pbXBvcnQgeyBMaXN0LCBOTnVtYmVyLCBOdW1iZXJTdHlsZXMsIFN0cmluZ0J1aWxkZXIgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IEJhc2U2NCwgU3RvcmFnZUF0dHJpYnV0ZSB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBSZWNvcmRVdGlscyB9IGZyb20gJy4vUmVjb3JkVXRpbHMnO1xyXG5pbXBvcnQgeyBHdWlFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL0d1aUVudmlyb25tZW50JztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIEJhc2UgY2xhc3MgZm9yIERjVmFsdWVzIGJ1aWxkZXIuIFRoZSBjbGFzcyBpcyBhYnN0cmFjdCBhbmQsIHRodXMsIG11c3QgYmUgaW5oZXJpdGVkLlxyXG4vLy8gVGhlIGluaGVyaXRpbmcgY2xhc3MsIHdoaWNoIHdpbGwgdXN1YWxseSBiZSBpbiBhbm90aGVyIHBhY2thZ2UsIHdpbGwgbm90IGJlIGFibGUgdG8gbW9kaWZ5XHJcbi8vLyBhIERjVmFsdWVzIG9iamVjdCBkaXJlY3RseSwgc2luY2UgYWxsIGl0cyBzZXR0ZXIgbWV0aG9kcyBhcmUgJ2ludGVybmFsJy4gVGhpcyBjbGFzcyB3aWxsXHJcbi8vLyBwcm92aWRlIHRoZSBzZXR0ZXIgbWV0aG9kcyBmb3IgdGhlIGluaGVyaXRpbmcgYnVpbGRlci5cclxuLy8vIDxwYXJhPkhlcmUncyBhIHVzYWdlIGV4YW1wbGU6XHJcbi8vLyA8ZXhhbXBsZT5cclxuLy8vIGNsYXNzIE15Q29uY3JldGVCdWlsZGVyIDogRGNWYWx1ZXNCdWlsZGVyQmFzZVxyXG4vLy8ge1xyXG4vLy8gICBwdWJsaWMgb3ZlcnJpZGUgRGNWYWx1ZXMgQnVpbGQoKVxyXG4vLy8gICB7XHJcbi8vLyAgICAgIHZhciBkY1ZhbHVlcyA9IGJhc2UuQ3JlYXRlRGNWYWx1ZXMoZmFsc2UpO1xyXG4vLy8gICAgICBTZXRJZChuZXdJZCk7XHJcbi8vLyAgICAgIFNldFR5cGUodGhlVHlwZSk7XHJcbi8vLyAgICAgIFNldERpc3BsYXlWYWx1ZXModGhlRGlzcGxheVZhbHVlcyk7XHJcbi8vLyAgICAgIC4uLlxyXG4vLy8gICAgICByZXR1cm4gZGNWYWx1ZXM7XHJcbi8vLyAgIH1cclxuLy8vIH1cclxuLy8vIDwvZXhhbXBsZT5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERjVmFsdWVzQnVpbGRlckJhc2Uge1xyXG5cclxuICBhYnN0cmFjdCBCdWlsZCgpOiBEY1ZhbHVlcztcclxuXHJcbiAgQ3JlYXRlRGNWYWx1ZXMoaXNWZWN0b3I6IGJvb2xlYW4pOiBEY1ZhbHVlcyB7XHJcbiAgICByZXR1cm4gbmV3IERjVmFsdWVzKGZhbHNlLCBpc1ZlY3Rvcik7XHJcbiAgfVxyXG5cclxuICBTZXRJZChkY1ZhbHVlczogRGNWYWx1ZXMsIG5ld0lkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGRjVmFsdWVzLlNldElEKG5ld0lkKTtcclxuICB9XHJcblxyXG4gIFNldFR5cGUoZGNWYWx1ZXM6IERjVmFsdWVzLCB0eXBlOiBTdG9yYWdlQXR0cmlidXRlKTogdm9pZCB7XHJcbiAgICBkY1ZhbHVlcy5zZXRUeXBlKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgU2V0RGlzcGxheVZhbHVlcyhkY1ZhbHVlczogRGNWYWx1ZXMsIGRpc3BsYXlWYWx1ZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBkY1ZhbHVlcy5TZXREaXNwbGF5VmFsdWVzKGRpc3BsYXlWYWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgU2V0TGlua1ZhbHVlcyhkY1ZhbHVlczogRGNWYWx1ZXMsIGxpbmtWYWx1ZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBkY1ZhbHVlcy5TZXRMaW5rVmFsdWVzKGxpbmtWYWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgU2V0TnVsbEZsYWdzKGRjVmFsdWVzOiBEY1ZhbHVlcywgbnVsbEZsYWdzU3RyaW5nOiBzdHJpbmcpOiB2b2lkO1xyXG4gIFNldE51bGxGbGFncyhkY1ZhbHVlczogRGNWYWx1ZXMsIG51bGxGbGFnczogYm9vbGVhbltdKTogdm9pZDtcclxuICBTZXROdWxsRmxhZ3MoZGNWYWx1ZXM6IERjVmFsdWVzLCBudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFnczogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiAoZGNWYWx1ZXMgPT09IG51bGwgfHwgZGNWYWx1ZXMgaW5zdGFuY2VvZiBEY1ZhbHVlcykgJiYgKG51bGxGbGFnc1N0cmluZ09yTnVsbEZsYWdzID09PSBudWxsIHx8IG51bGxGbGFnc1N0cmluZ09yTnVsbEZsYWdzLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpKSB7XHJcbiAgICAgIHRoaXMuU2V0TnVsbEZsYWdzXzAoZGNWYWx1ZXMsIG51bGxGbGFnc1N0cmluZ09yTnVsbEZsYWdzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5TZXROdWxsRmxhZ3NfMShkY1ZhbHVlcywgbnVsbEZsYWdzU3RyaW5nT3JOdWxsRmxhZ3MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBTZXROdWxsRmxhZ3NfMChkY1ZhbHVlczogRGNWYWx1ZXMsIG51bGxGbGFnc1N0cmluZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgbnVsbEZsYWdzOiBib29sZWFuW10gPSB0aGlzLlBhcnNlTnVsbEZsYWdzKG51bGxGbGFnc1N0cmluZyk7XHJcbiAgICBkY1ZhbHVlcy5zZXROdWxsRmxhZ3MobnVsbEZsYWdzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2V0TnVsbEZsYWdzXzEoZGNWYWx1ZXM6IERjVmFsdWVzLCBudWxsRmxhZ3M6IGJvb2xlYW5bXSk6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuc2V0TnVsbEZsYWdzKG51bGxGbGFncyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFBhcnNlIGEgc2VyaWFsaXplZCB2YWx1ZXMgc3RyaW5nIGFzIGFuIGFycmF5IG9mIHZhbHVlcy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+VGhpcyBpcyBzdHJpbmcgb2YgdGhlIGNvbmNhdGVuYXRlZCB2YWx1ZXMsIHdpdGggZWFjaCB2YWx1ZSBwcmVjZWRlZCB3aXRoIGEgaGV4IG51bWJlciBkZW5vdGluZyBpdHMgbGVuZ3RoLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF0YVR5cGVcIj5UaGUgZGF0YSB0eXBlIG9mIHRoZSB2YWx1ZXMuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ1c2VIZXhcIj48L3BhcmFtPlxyXG4gIHByb3RlY3RlZCBQYXJzZVZhbHVlcyh2YWx1ZVN0cjogc3RyaW5nLCBkYXRhVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgdXNlSGV4OiBib29sZWFuKTogc3RyaW5nW10ge1xyXG5cclxuICAgIGxldCBzbnVtYmVyOiBzdHJpbmc7XHJcbiAgICBsZXQgdG1wVmFsdWU6IHN0cmluZyA9IG51bGw7XHJcbiAgICBsZXQgYnVmZmVyOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdO1xyXG4gICAgbGV0IGxlbjogbnVtYmVyO1xyXG4gICAgbGV0IG5leHRJZHg6IG51bWJlcjtcclxuICAgIGxldCBlbmRJZHg6IG51bWJlcjtcclxuICAgIGxldCBzdWZmaXhCdWY6IFN0cmluZ0J1aWxkZXIgPSBudWxsO1xyXG5cclxuICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5EQVRFOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgICBpZiAodXNlSGV4KVxyXG4gICAgICAgICAgbGVuID0gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0U2lnbmlmaWNhbnROdW1TaXplKCkgKiAyO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGxlbiA9IE1hdGguZmxvb3IoKEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNpZ25pZmljYW50TnVtU2l6ZSgpICsgMikgLyAzKSAqIDQ7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICBsZW4gPSAxO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBsZW4gPSAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIG5leHRJZHggPSAwO1xyXG4gICAgd2hpbGUgKG5leHRJZHggPCB2YWx1ZVN0ci5sZW5ndGgpIHtcclxuICAgICAgLy8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIGFuIGFscGhhIGRhdGFcclxuICAgICAgaWYgKGRhdGFUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IGRhdGFUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUgfHxcclxuICAgICAgICBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CIHx8IGRhdGFUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SKSB7XHJcbiAgICAgICAgc251bWJlciA9IHZhbHVlU3RyLnN1YnN0cihuZXh0SWR4LCA0KTtcclxuICAgICAgICBsZW4gPSBOTnVtYmVyLlBhcnNlKHNudW1iZXIsIE51bWJlclN0eWxlcy5IZXhOdW1iZXIpO1xyXG4gICAgICAgIG5leHRJZHggKz0gNDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGRhdGEgaXMgc3Bhbm5lZFxyXG4gICAgICBpZiAobGVuID49IDB4ODAwMCkge1xyXG4gICAgICAgIHN1ZmZpeEJ1ZiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcbiAgICAgICAgbGVuIC09IDB4ODAwMDtcclxuICAgICAgICAvLyBuZXh0IHNlZ21lbnQgbWF5IGFsc28gYmUgc3Bhbm5lZFxyXG4gICAgICAgIG5leHRJZHggKz0gUmVjb3JkVXRpbHMuZ2V0U3Bhbm5lZEZpZWxkKHZhbHVlU3RyLCBsZW4sIG5leHRJZHgsIGRhdGFUeXBlLCBzdWZmaXhCdWYsIHVzZUhleCk7XHJcbiAgICAgICAgYnVmZmVyLnB1c2goc3VmZml4QnVmLlRvU3RyaW5nKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVuZElkeCA9IG5leHRJZHggKyBsZW47XHJcbiAgICAgICAgaWYgKHVzZUhleClcclxuICAgICAgICAgIHRtcFZhbHVlID0gdmFsdWVTdHIuc3Vic3RyKG5leHRJZHgsIChlbmRJZHgpIC0gKG5leHRJZHgpKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0bXBWYWx1ZSA9IEJhc2U2NC5kZWNvZGVUb0hleCh2YWx1ZVN0ci5zdWJzdHIobmV4dElkeCwgKGVuZElkeCkgLSAobmV4dElkeCkpKTtcclxuICAgICAgICAvLyB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyBhcmUgcmVkdW5kYW50IHNpbmNlIHRoZSBtYWtlUHJpbnRhYmxlKCkgaXMgY2FsbGVkXHJcbiAgICAgICAgLy8gaW4gdGhlIGd1aU1hbmFnZXIgd2hlbiBidWlsZGluZyB0aGUgb3B0aW9uc1xyXG4gICAgICAgIC8qaWYgKGRhdGFUeXBlID09IERBVEFfVFlQRV9BTFBIQSlcclxuICAgICAgICAgICAgIHRtcFZhbHVlID0gZ3VpTWFuYWdlci5tYWtlUHJpbnRhYmxlKHRtcFZhbHVlKTsqL1xyXG4gICAgICAgIGJ1ZmZlci5wdXNoKHRtcFZhbHVlKTtcclxuICAgICAgICBuZXh0SWR4ID0gZW5kSWR4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdmVjdG9yIHRvIGFycmF5XHJcbiAgICByZXR1cm4gYnVmZmVyLlRvQXJyYXkoKTtcclxuICB9XHJcblxyXG4gIFBhcnNlTnVsbEZsYWdzKG51bGxGbGFnc1N0cmluZzogc3RyaW5nKTogYm9vbGVhbltdIHtcclxuICAgIGxldCBhcnJheTogYm9vbGVhbltdID0gbmV3IEFycmF5PGJvb2xlYW4+KG51bGxGbGFnc1N0cmluZy5sZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IG51bGxGbGFnc1N0cmluZy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBhcnJheVtpXSA9IChudWxsRmxhZ3NTdHJpbmcuY2hhckF0KGkpICE9PSAnMCcvKicwJyovKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhcnJheTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxufVxyXG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNWYWx1ZXNCdWlsZGVyQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9kYXRhL0RjVmFsdWVzQnVpbGRlckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBdUJ0RCxNQUFNLE9BQWdCLG1CQUFtQjtJQUl2QyxjQUFjLENBQUMsUUFBaUI7UUFDOUIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFrQixFQUFFLEtBQWE7UUFDckMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWtCLEVBQUUsSUFBc0I7UUFDaEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBa0IsRUFBRSxhQUF1QjtRQUMxRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFrQixFQUFFLFVBQW9CO1FBQ3BELFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUlELFlBQVksQ0FBQyxRQUFrQixFQUFF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QUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ25DO2lCQUNJO2dCQUNILE1BQU0sR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixJQUFJLE1BQU07b0JBQ1IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDOztvQkFFMUQsUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFLaEYsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLE1BQU0sQ0FBQzthQUNsQjtTQUNGO1FBR0QsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxlQUF1QjtRQUNwQyxJQUFJLEtBQUssR0FBYyxJQUFJLEtBQUssQ0FBVSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQVEsQ0FBQztTQUN2RDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEO0lBQ0EsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGNWYWx1ZXMgfSBmcm9tICcuL0RjVmFsdWVzJztcclxuaW1wb3J0IHsgTGlzdCwgTk51bWJlciwgTnVtYmVyU3R5bGVzLCBTdHJpbmdCdWlsZGVyIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBCYXNlNjQsIFN0b3JhZ2VBdHRyaWJ1dGUgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgUmVjb3JkVXRpbHMgfSBmcm9tICcuL1JlY29yZFV0aWxzJztcclxuaW1wb3J0IHsgR3VpRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9HdWlFbnZpcm9ubWVudCc7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBCYXNlIGNsYXNzIGZvciBEY1ZhbHVlcyBidWlsZGVyLiBUaGUgY2xhc3MgaXMgYWJzdHJhY3QgYW5kLCB0aHVzLCBtdXN0IGJlIGluaGVyaXRlZC5cclxuLy8vIFRoZSBpbmhlcml0aW5nIGNsYXNzLCB3aGljaCB3aWxsIHVzdWFsbHkgYmUgaW4gYW5vdGhlciBwYWNrYWdlLCB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vZGlmeVxyXG4vLy8gYSBEY1ZhbHVlcyBvYmplY3QgZGlyZWN0bHksIHNpbmNlIGFsbCBpdHMgc2V0dGVyIG1ldGhvZHMgYXJlICdpbnRlcm5hbCcuIFRoaXMgY2xhc3Mgd2lsbFxyXG4vLy8gcHJvdmlkZSB0aGUgc2V0dGVyIG1ldGhvZHMgZm9yIHRoZSBpbmhlcml0aW5nIGJ1aWxkZXIuXHJcbi8vLyA8cGFyYT5IZXJlJ3MgYSB1c2FnZSBleGFtcGxlOlxyXG4vLy8gPGV4YW1wbGU+XHJcbi8vLyBjbGFzcyBNeUNvbmNyZXRlQnVpbGRlciA6IERjVmFsdWVzQnVpbGRlckJhc2VcclxuLy8vIHtcclxuLy8vICAgcHVibGljIG92ZXJyaWRlIERjVmFsdWVzIEJ1aWxkKClcclxuLy8vICAge1xyXG4vLy8gICAgICB2YXIgZGNWYWx1ZXMgPSBiYXNlLkNyZWF0ZURjVmFsdWVzKGZhbHNlKTtcclxuLy8vICAgICAgU2V0SWQobmV3SWQpO1xyXG4vLy8gICAgICBTZXRUeXBlKHRoZVR5cGUpO1xyXG4vLy8gICAgICBTZXREaXNwbGF5VmFsdWVzKHRoZURpc3BsYXlWYWx1ZXMpO1xyXG4vLy8gICAgICAuLi5cclxuLy8vICAgICAgcmV0dXJuIGRjVmFsdWVzO1xyXG4vLy8gICB9XHJcbi8vLyB9XHJcbi8vLyA8L2V4YW1wbGU+XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEY1ZhbHVlc0J1aWxkZXJCYXNlIHtcclxuXHJcbiAgYWJzdHJhY3QgQnVpbGQoKTogRGNWYWx1ZXM7XHJcblxyXG4gIENyZWF0ZURjVmFsdWVzKGlzVmVjdG9yOiBib29sZWFuKTogRGNWYWx1ZXMge1xyXG4gICAgcmV0dXJuIG5ldyBEY1ZhbHVlcyhmYWxzZSwgaXNWZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgU2V0SWQoZGNWYWx1ZXM6IERjVmFsdWVzLCBuZXdJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBkY1ZhbHVlcy5TZXRJRChuZXdJZCk7XHJcbiAgfVxyXG5cclxuICBTZXRUeXBlKGRjVmFsdWVzOiBEY1ZhbHVlcywgdHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuc2V0VHlwZSh0eXBlKTtcclxuICB9XHJcblxyXG4gIFNldERpc3BsYXlWYWx1ZXMoZGNWYWx1ZXM6IERjVmFsdWVzLCBkaXNwbGF5VmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuU2V0RGlzcGxheVZhbHVlcyhkaXNwbGF5VmFsdWVzKTtcclxuICB9XHJcblxyXG4gIFNldExpbmtWYWx1ZXMoZGNWYWx1ZXM6IERjVmFsdWVzLCBsaW5rVmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuU2V0TGlua1ZhbHVlcyhsaW5rVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIFNldE51bGxGbGFncyhkY1ZhbHVlczogRGNWYWx1ZXMsIG51bGxGbGFnc1N0cmluZzogc3RyaW5nKTogdm9pZDtcclxuICBTZXROdWxsRmxhZ3MoZGNWYWx1ZXM6IERjVmFsdWVzLCBudWxsRmxhZ3M6IGJvb2xlYW5bXSk6IHZvaWQ7XHJcbiAgU2V0TnVsbEZsYWdzKGRjVmFsdWVzOiBEY1ZhbHVlcywgbnVsbEZsYWdzU3RyaW5nT3JOdWxsRmxhZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKGRjVmFsdWVzID09PSBudWxsIHx8IGRjVmFsdWVzIGluc3RhbmNlb2YgRGNWYWx1ZXMpICYmIChudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFncyA9PT0gbnVsbCB8fCBudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFncy5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSkge1xyXG4gICAgICB0aGlzLlNldE51bGxGbGFnc18wKGRjVmFsdWVzLCBudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFncyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuU2V0TnVsbEZsYWdzXzEoZGNWYWx1ZXMsIG51bGxGbGFnc1N0cmluZ09yTnVsbEZsYWdzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2V0TnVsbEZsYWdzXzAoZGNWYWx1ZXM6IERjVmFsdWVzLCBudWxsRmxhZ3NTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG51bGxGbGFnczogYm9vbGVhbltdID0gdGhpcy5QYXJzZU51bGxGbGFncyhudWxsRmxhZ3NTdHJpbmcpO1xyXG4gICAgZGNWYWx1ZXMuc2V0TnVsbEZsYWdzKG51bGxGbGFncyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFNldE51bGxGbGFnc18xKGRjVmFsdWVzOiBEY1ZhbHVlcywgbnVsbEZsYWdzOiBib29sZWFuW10pOiB2b2lkIHtcclxuICAgIGRjVmFsdWVzLnNldE51bGxGbGFncyhudWxsRmxhZ3MpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBQYXJzZSBhIHNlcmlhbGl6ZWQgdmFsdWVzIHN0cmluZyBhcyBhbiBhcnJheSBvZiB2YWx1ZXMuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPlRoaXMgaXMgc3RyaW5nIG9mIHRoZSBjb25jYXRlbmF0ZWQgdmFsdWVzLCB3aXRoIGVhY2ggdmFsdWUgcHJlY2VkZWQgd2l0aCBhIGhleCBudW1iZXIgZGVub3RpbmcgaXRzIGxlbmd0aC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRhdGFUeXBlXCI+VGhlIGRhdGEgdHlwZSBvZiB0aGUgdmFsdWVzLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidXNlSGV4XCI+PC9wYXJhbT5cclxuICBwcm90ZWN0ZWQgUGFyc2VWYWx1ZXModmFsdWVTdHI6IHN0cmluZywgZGF0YVR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIHVzZUhleDogYm9vbGVhbik6IHN0cmluZ1tdIHtcclxuXHJcbiAgICBsZXQgc251bWJlcjogc3RyaW5nO1xyXG4gICAgbGV0IHRtcFZhbHVlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IGJ1ZmZlcjogTGlzdDxzdHJpbmc+ID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgbGV0IGFycmF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBsZW46IG51bWJlcjtcclxuICAgIGxldCBuZXh0SWR4OiBudW1iZXI7XHJcbiAgICBsZXQgZW5kSWR4OiBudW1iZXI7XHJcbiAgICBsZXQgc3VmZml4QnVmOiBTdHJpbmdCdWlsZGVyID0gbnVsbDtcclxuXHJcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuREFURTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgaWYgKHVzZUhleClcclxuICAgICAgICAgIGxlbiA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNpZ25pZmljYW50TnVtU2l6ZSgpICogMjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBsZW4gPSBNYXRoLmZsb29yKChHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSArIDIpIC8gMykgKiA0O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU46XHJcbiAgICAgICAgbGVuID0gMTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgbGVuID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBuZXh0SWR4ID0gMDtcclxuICAgIHdoaWxlIChuZXh0SWR4IDwgdmFsdWVTdHIubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiBhbiBhbHBoYSBkYXRhXHJcbiAgICAgIGlmIChkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8XHJcbiAgICAgICAgZGF0YVR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQiB8fCBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUikge1xyXG4gICAgICAgIHNudW1iZXIgPSB2YWx1ZVN0ci5zdWJzdHIobmV4dElkeCwgNCk7XHJcbiAgICAgICAgbGVuID0gTk51bWJlci5QYXJzZShzbnVtYmVyLCBOdW1iZXJTdHlsZXMuSGV4TnVtYmVyKTtcclxuICAgICAgICBuZXh0SWR4ICs9IDQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHNwYW5uZWRcclxuICAgICAgaWYgKGxlbiA+PSAweDgwMDApIHtcclxuICAgICAgICBzdWZmaXhCdWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgIGxlbiAtPSAweDgwMDA7XHJcbiAgICAgICAgLy8gbmV4dCBzZWdtZW50IG1heSBhbHNvIGJlIHNwYW5uZWRcclxuICAgICAgICBuZXh0SWR4ICs9IFJlY29yZFV0aWxzLmdldFNwYW5uZWRGaWVsZCh2YWx1ZVN0ciwgbGVuLCBuZXh0SWR4LCBkYXRhVHlwZSwgc3VmZml4QnVmLCB1c2VIZXgpO1xyXG4gICAgICAgIGJ1ZmZlci5wdXNoKHN1ZmZpeEJ1Zi5Ub1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBlbmRJZHggPSBuZXh0SWR4ICsgbGVuO1xyXG4gICAgICAgIGlmICh1c2VIZXgpXHJcbiAgICAgICAgICB0bXBWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihuZXh0SWR4LCAoZW5kSWR4KSAtIChuZXh0SWR4KSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG1wVmFsdWUgPSBCYXNlNjQuZGVjb2RlVG9IZXgodmFsdWVTdHIuc3Vic3RyKG5leHRJZHgsIChlbmRJZHgpIC0gKG5leHRJZHgpKSk7XHJcbiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYXJlIHJlZHVuZGFudCBzaW5jZSB0aGUgbWFrZVByaW50YWJsZSgpIGlzIGNhbGxlZFxyXG4gICAgICAgIC8vIGluIHRoZSBndWlNYW5hZ2VyIHdoZW4gYnVpbGRpbmcgdGhlIG9wdGlvbnNcclxuICAgICAgICAvKmlmIChkYXRhVHlwZSA9PSBEQVRBX1RZUEVfQUxQSEEpXHJcbiAgICAgICAgICAgICB0bXBWYWx1ZSA9IGd1aU1hbmFnZXIubWFrZVByaW50YWJsZSh0bXBWYWx1ZSk7Ki9cclxuICAgICAgICBidWZmZXIucHVzaCh0bXBWYWx1ZSk7XHJcbiAgICAgICAgbmV4dElkeCA9IGVuZElkeDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHZlY3RvciB0byBhcnJheVxyXG4gICAgcmV0dXJuIGJ1ZmZlci5Ub0FycmF5KCk7XHJcbiAgfVxyXG5cclxuICBQYXJzZU51bGxGbGFncyhudWxsRmxhZ3NTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW5bXSB7XHJcbiAgICBsZXQgYXJyYXk6IGJvb2xlYW5bXSA9IG5ldyBBcnJheTxib29sZWFuPihudWxsRmxhZ3NTdHJpbmcubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBudWxsRmxhZ3NTdHJpbmcubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgYXJyYXlbaV0gPSAobnVsbEZsYWdzU3RyaW5nLmNoYXJBdChpKSAhPT0gJzAnLyonMCcqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19