@magic-xpa/gui 4.801.0-dev481.232 → 4.801.0-dev481.236

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 (46) hide show
  1. package/bundles/magic-xpa-gui.umd.js +81 -81
  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/src/Commands.js +2 -2
  6. package/esm2015/src/Events.js +3 -3
  7. package/esm2015/src/EventsProcessor.js +4 -5
  8. package/esm2015/src/IFlowMonitorQueue.js +1 -1
  9. package/esm2015/src/Manager.js +6 -6
  10. package/esm2015/src/gui/low/GuiInteractive.js +4 -4
  11. package/esm2015/src/management/data/DcValues.js +2 -2
  12. package/esm2015/src/management/data/DcValuesBuilderBase.js +3 -3
  13. package/esm2015/src/management/data/GuiDataViewBase.js +3 -3
  14. package/esm2015/src/management/data/ObjectReferenceBase.js +3 -3
  15. package/esm2015/src/management/data/RecordUtils.js +1 -1
  16. package/esm2015/src/management/events/IGuiEventsManager.js +1 -1
  17. package/esm2015/src/management/exp/GuiExpressionEvaluator.js +3 -3
  18. package/esm2015/src/management/gui/DisplayConvertor.js +12 -12
  19. package/esm2015/src/management/gui/FieldValidator.js +6 -6
  20. package/esm2015/src/management/gui/MgControlBase.js +18 -18
  21. package/esm2015/src/management/gui/MgFormBase.js +6 -6
  22. package/esm2015/src/management/gui/PropDefaults.js +5 -5
  23. package/esm2015/src/management/gui/PropTable.js +6 -6
  24. package/esm2015/src/management/gui/Property.js +7 -7
  25. package/esm2015/src/management/tasks/GuiTaskBase.js +6 -6
  26. package/esm2015/src/management/tasks/MgTimer.js +2 -2
  27. package/esm2015/src/util/ProcessLauncher.js +2 -2
  28. package/esm2015/src/util/UsernamePasswordCredentials.js +3 -3
  29. package/fesm2015/magic-xpa-gui.js +81 -81
  30. package/fesm2015/magic-xpa-gui.js.map +1 -1
  31. package/package.json +2 -2
  32. package/src/Events.d.ts +2 -2
  33. package/src/EventsProcessor.d.ts +1 -1
  34. package/src/IFlowMonitorQueue.d.ts +1 -1
  35. package/src/Manager.d.ts +2 -3
  36. package/src/management/data/DcValues.d.ts +1 -1
  37. package/src/management/data/DcValuesBuilderBase.d.ts +1 -1
  38. package/src/management/events/IGuiEventsManager.d.ts +5 -5
  39. package/src/management/exp/GuiExpressionEvaluator.d.ts +2 -2
  40. package/src/management/gui/DisplayConvertor.d.ts +6 -6
  41. package/src/management/gui/MgControlBase.d.ts +2 -2
  42. package/src/management/gui/MgFormBase.d.ts +1 -1
  43. package/src/management/gui/PropTable.d.ts +1 -1
  44. package/src/management/gui/Property.d.ts +2 -2
  45. package/src/management/tasks/GuiTaskBase.d.ts +3 -3
  46. package/src/util/ProcessLauncher.d.ts +1 -3
@@ -2,7 +2,6 @@ import { Debug } from '@magic-xpa/mscorelib';
2
2
  import { InternalInterface, MgControlType } from '@magic-xpa/utils';
3
3
  import { Events } from './Events';
4
4
  import { Manager } from './Manager';
5
- import { RaisedBy } from './GuiEnums';
6
5
  import { MgFormBase } from './management/gui/MgFormBase';
7
6
  import { PropInterface } from './management/gui/PropInterface';
8
7
  export class EventsProcessor {
@@ -17,7 +16,7 @@ export class EventsProcessor {
17
16
  Events.CloseFormEvent = this.processFormClose;
18
17
  Events.ColumnClickEvent = this.ProcessColumnClick;
19
18
  }
20
- processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, ComboIsDropDown, handled) {
19
+ processKeyDown(guiMgForm, guiMgCtrl, modifier, keyCode, start, end, text, isActChar, suggestedValue, handled) {
21
20
  let eventHandled = handled;
22
21
  let mgControlBase = guiMgCtrl;
23
22
  let mgFormBase = guiMgForm;
@@ -28,7 +27,7 @@ export class EventsProcessor {
28
27
  let clrHandledEvent = false;
29
28
  let mgFormBase = guiMgForm;
30
29
  if (MgFormBase.ShouldPutActOnFormClose())
31
- Manager.EventsManager.addGuiTriggeredEventTaskAndCodeAndRaisedBy(mgFormBase.getTask(), InternalInterface.MG_ACT_HIT, RaisedBy.CLOSE_SYSTEM_MENU);
30
+ Manager.EventsManager.addGuiTriggeredEventTaskAndCodeAndRaisedBy(mgFormBase.getTask(), InternalInterface.MG_ACT_HIT);
32
31
  Manager.EventsManager.addGuiTriggeredEventWithTaskAndCode(mgFormBase.getTask(), InternalInterface.MG_ACT_CLOSE);
33
32
  return clrHandledEvent;
34
33
  }
@@ -36,7 +35,7 @@ export class EventsProcessor {
36
35
  let mgControl = guiMgCtrl;
37
36
  if (mgControl === null) {
38
37
  Debug.Assert(guiMgForm !== null);
39
- Manager.EventsManager.addGuiTriggeredEventWithTaskAndCodeAndOnMultiMark(guiMgForm.getTask(), InternalInterface.MG_ACT_HIT, onMultiMark);
38
+ Manager.EventsManager.addGuiTriggeredEventWithTaskAndCodeAndOnMultiMark(guiMgForm.getTask(), InternalInterface.MG_ACT_HIT);
40
39
  }
41
40
  else {
42
41
  if (mgControl.isSubform()) {
@@ -65,4 +64,4 @@ export class EventsProcessor {
65
64
  Manager.EventsManager.AddColumnClickEvent(mgColumnControl, direction, columnHeader);
66
65
  }
67
66
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFhLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTS9ELE1BQU0sT0FBaUIsZUFBZTtJQUNwQztRQUNFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFHTyxnQkFBZ0I7UUFDdEIsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRCxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5QyxNQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFFOUMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNwRCxDQUFDO0lBcUJELGNBQWMsQ0FBQyxTQUFvQixFQUFFLFNBQXVCLEVBQUUsUUFBbUIsRUFBRSxPQUFlLEVBQUUsS0FBYSxFQUFFLEdBQVcsRUFBRSxJQUFZLEVBQUUsU0FBa0IsRUFBRSxjQUFzQixFQUFFLGVBQXdCLEVBQUUsT0FBZ0I7UUFDbE8sSUFBSSxZQUFZLEdBQVksT0FBTyxDQUFDO1FBRXBDLElBQUksYUFBYSxHQUFpQyxTQUFTLENBQUM7UUFDNUQsSUFBSSxVQUFVLEdBQTJCLFNBQVMsQ0FBQztRQUVuRCxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFekssT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQVFELGdCQUFnQixDQUFDLFNBQW9CO1FBQ25DLElBQUksZUFBZSxHQUFZLEtBQUssQ0FBQztRQUNyQyxJQUFJLFVBQVUsR0FBMkIsU0FBUyxDQUFDO1FBRW5ELElBQUksVUFBVSxDQUFDLHVCQUF1QixFQUFFO1lBQ3RDLE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuSixPQUFPLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBVU8sZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxTQUF1QixFQUFFLFVBQWlCLEVBQUUsbUJBQTRCLEVBQUUsSUFBWSxFQUFFLFdBQW9CLEVBQUUsZUFBd0I7UUFDbkwsSUFBSSxTQUFTLEdBQWlDLFNBQVMsQ0FBQztRQUV4RCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFFakMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpREFBaUQsQ0FBYyxTQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ3ZKO2FBQ0k7WUFDSCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDekIsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQzVCO2lCQUNJO2dCQUNILElBQUksU0FBUyxDQUFDLDBCQUEwQixDQUFDLG1CQUFtQixDQUFDLEVBQUU7b0JBQzdELE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDdEg7Z0JBQ0QsSUFBSSxtQkFBbUIsSUFBSSxlQUFlLEVBQUU7b0JBTTFDLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsZ0JBQWdCLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsa0JBQWtCLEVBQUU7d0JBQzVHLE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUN2SDtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBS08sZUFBZSxDQUFDLFNBQXVCLEVBQUUsSUFBWTtRQUMzRCxJQUFJLFNBQVMsR0FBaUMsU0FBUyxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7WUFDcEYsT0FBTztRQVFULE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFNTyxrQkFBa0IsQ0FBQyxhQUEyQixFQUFFLFNBQWlCLEVBQUUsWUFBb0I7UUFDN0YsSUFBSSxlQUFlLEdBQWlDLGFBQWEsQ0FBQztRQUNsRSxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEYsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVidWcgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IEludGVybmFsSW50ZXJmYWNlLCBNZ0NvbnRyb2xUeXBlIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IEd1aU1nRm9ybSB9IGZyb20gJy4vZ3VpL0d1aU1nRm9ybSc7XHJcbmltcG9ydCB7IEV2ZW50cyB9IGZyb20gJy4vRXZlbnRzJztcclxuaW1wb3J0IHsgR3VpTWdDb250cm9sIH0gZnJvbSAnLi9ndWkvR3VpTWdDb250cm9sJztcclxuaW1wb3J0IHsgTWdDb250cm9sQmFzZSB9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZSc7XHJcbmltcG9ydCB7IE1hbmFnZXIgfSBmcm9tICcuL01hbmFnZXInO1xyXG5pbXBvcnQgeyBNb2RpZmllcnMsIFJhaXNlZEJ5IH0gZnJvbSAnLi9HdWlFbnVtcyc7XHJcbmltcG9ydCB7IE1nRm9ybUJhc2UgfSBmcm9tICcuL21hbmFnZW1lbnQvZ3VpL01nRm9ybUJhc2UnO1xyXG5pbXBvcnQgeyBQcm9wSW50ZXJmYWNlIH0gZnJvbSAnLi9tYW5hZ2VtZW50L2d1aS9Qcm9wSW50ZXJmYWNlJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICgxKSByZWdpc3RlcnMgYW5kIGltcGxlbWVudHMgaGFuZGxlcnMgZm9yIGV2ZW50cyB0aGF0IGNhbiBiZSBzZXJ2ZWQgbG9jYWxseSBieSBNZ0d1aS5kbGwuXHJcbi8vLyAoMikgcmVxdWVzdHMgc3ViY2xhc3NlcyB0byByZWdpc3RlciB0aGVpciBoYW5kbGVycyAoJ1RlbXBsYXRlIE1ldGhvZCcgZGVzaWduIHBhdHRlcm4pLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgIGFic3RyYWN0IGNsYXNzIEV2ZW50c1Byb2Nlc3NvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLlJlZ2lzdGVySGFuZGxlcnMoKTtcclxuICAgIHRoaXMuUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVnaXN0ZXIgYW5kIGltcGxlbWVudCBoYW5kbGVycyBmb3IgZXZlbnRzIHRoYXQgY2FuIGJlIHNlcnZlZCBsb2NhbGx5IGJ5IE1nR3VpLmRsbC48L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBSZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgRXZlbnRzLktleURvd25FdmVudCA9IHRoaXMucHJvY2Vzc0tleURvd24uYmluZCh0aGlzKTtcclxuXHJcbiAgICBFdmVudHMuTW91c2VEb3duRXZlbnQgPSB0aGlzLnByb2Nlc3NNb3VzZURvd247XHJcbiAgICBFdmVudHMuRGJsQ2xpY2tFdmVudCA9IHRoaXMucHJvY2Vzc0RibENsaWNrO1xyXG4gICAgRXZlbnRzLkNsb3NlRm9ybUV2ZW50ID0gdGhpcy5wcm9jZXNzRm9ybUNsb3NlO1xyXG5cclxuICAgIEV2ZW50cy5Db2x1bW5DbGlja0V2ZW50ID0gdGhpcy5Qcm9jZXNzQ29sdW1uQ2xpY2s7XHJcbiAgfVxyXG5cclxuICAvLyByZXF1ZXN0IHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgaGFuZGxlcnMgdGhhdCB0aGV5IHdpbGwgaW1wbGVtZW50ICgnVGVtcGxhdGUgTWV0aG9kJyBkZXNpZ24gcGF0dGVybikuXHJcbiAgYWJzdHJhY3QgUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5QYXNzIGtleWNvZGUgYW5kIG1vZGlmaWVyIHRvIGJyaWRnZSwgYnJpZGdlIHRoZW4gY29udmVydHMgaXQgdG8ga2V5Ym9hcmQgYWN0aW9uIGFuZCBhZGRzIGluIE1nQ29yZS5kbGxcclxuICAvLy8gZXZlbnRzIHF1ZXVlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNhcmV0UG9zXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNBY3RDaGFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWdnZXN0ZWRWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiQ29tYm9Jc0Ryb3BEb3duXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoYW5kbGVkXCI+Ym9vbGVhbiB2YXJpYWJsZSBldmVudCBpcyBoYW5kbGVkIG9yIG5vdC48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBvbmx5IGlmIHdlIGhhdmUgaGFuZGxlZCB0aGUgS2V5RG93biBldmVudCAob3RoZXJ3aXNlIHRoZSBDTFIgc2hvdWxkIGhhbmRsZSkuIElmIHRydWUgbWFnaWMgd2lsbCBoYW5kbGUgZWxzZSBDTFIgd2lsbCBoYW5kbGUuPC9yZXR1cm5zPlxyXG4gIHByb2Nlc3NLZXlEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIENvbWJvSXNEcm9wRG93bjogYm9vbGVhbiwgaGFuZGxlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGV2ZW50SGFuZGxlZDogYm9vbGVhbiA9IGhhbmRsZWQ7XHJcblxyXG4gICAgbGV0IG1nQ29udHJvbEJhc2U6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT5ndWlNZ0N0cmw7XHJcbiAgICBsZXQgbWdGb3JtQmFzZTogTWdGb3JtQmFzZSA9IDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybTtcclxuXHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuQWRkS2V5Ym9hcmRFdmVudChtZ0Zvcm1CYXNlLCBtZ0NvbnRyb2xCYXNlLCBtb2RpZmllciwga2V5Q29kZSwgc3RhcnQsIGVuZCwgdGV4dCwgaXNBY3RDaGFyLCBzdWdnZXN0ZWRWYWx1ZSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfS0VZRE9XTik7XHJcblxyXG4gICAgcmV0dXJuIGV2ZW50SGFuZGxlZDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEZ1bmN0aW9uIGhhbmRsaW5nIGZvcm0gY2xvc2UgZXZlbnQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz50cnVlIGlmIGV2ZW50IGlzIENMUiBoYW5kbGVkIGVsc2UgZmFsc2UuPC9yZXR1cm5zPlxyXG4gIHByb2Nlc3NGb3JtQ2xvc2UoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0pOiBib29sZWFuIHtcclxuICAgIGxldCBjbHJIYW5kbGVkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBtZ0Zvcm1CYXNlOiBNZ0Zvcm1CYXNlID0gPE1nRm9ybUJhc2U+Z3VpTWdGb3JtO1xyXG5cclxuICAgIGlmIChNZ0Zvcm1CYXNlLlNob3VsZFB1dEFjdE9uRm9ybUNsb3NlKCkpXHJcbiAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFRhc2tBbmRDb2RlQW5kUmFpc2VkQnkobWdGb3JtQmFzZS5nZXRUYXNrKCksIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ISVQsIFJhaXNlZEJ5LkNMT1NFX1NZU1RFTV9NRU5VKTtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZShtZ0Zvcm1CYXNlLmdldFRhc2soKSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMT1NFKTtcclxuXHJcbiAgICByZXR1cm4gY2xySGFuZGxlZEV2ZW50O1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkb3ROZXRBcmdzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxlZnRDbGlja1dhc1ByZXNzZWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzTW91c2VEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZG90TmV0QXJnczogYW55W10sIGxlZnRDbGlja1dhc1ByZXNzZWQ6IGJvb2xlYW4sIGxpbmU6IG51bWJlciwgb25NdWx0aU1hcms6IGJvb2xlYW4sIGNhblByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuXHJcbiAgICBpZiAobWdDb250cm9sID09PSBudWxsKSB7XHJcbiAgICAgIERlYnVnLkFzc2VydChndWlNZ0Zvcm0gIT09IG51bGwpO1xyXG4gICAgICAvLyBBcyBpbiBvbmxpbmUuIGNsaWNraW5nIG9uIGEgZm9ybSByZXN1bHRzIGluIEFDVF9ISVRcclxuICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aFRhc2tBbmRDb2RlQW5kT25NdWx0aU1hcmsoKDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybSkuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElULCBvbk11bHRpTWFyayk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKG1nQ29udHJvbC5pc1N1YmZvcm0oKSkge1xyXG4gICAgICAgIG1nQ29udHJvbC5PblN1YmZvcm1DbGljaygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChtZ0NvbnRyb2wuUmFpc2VDb250cm9sSGl0T25Nb3VzZURvd24obGVmdENsaWNrV2FzUHJlc3NlZCkpIHtcclxuICAgICAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9ISVQsIGxpbmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGVmdENsaWNrV2FzUHJlc3NlZCAmJiBjYW5Qcm9kdWNlQ2xpY2spIHtcclxuICAgICAgICAgIC8vIGZpeGVkIGJ1ZyM5Mjc5NDJcclxuICAgICAgICAgIC8vIHdlIG5ldmVyIGdldCB0byB0aGlzIG1ldGhvZCB3aXRoIHRoZSBjb250cm9sIHR5cGUgYnV0dG9uICYgY2hlY2tib3guXHJcbiAgICAgICAgICAvLyBmb3IgYnV0dG9uICYgY2hlY2tib3gsIHdlIHNlbnQgdGhlIHRyaWdnZXIgTUdfQUNUX1dFQl9DTElDSyBpbiBFdmVudHNNYW5hZ2VyLmhhbmRsZU1vdXNlVXAoKSB0aGF0IGNhbGxcclxuICAgICAgICAgIC8vIGZyb20gc2ltdWxhdGVTZWxlY3Rpb24oKVxyXG4gICAgICAgICAgLy8gdGhlIFwiaWZcIiBpcyBvbmx5IGZvciBtYWtlIHN1cmUgdGhhdCBpZiB3ZSB3aWxsIGdldCBpdCAoaW4gdGhlIGZldHVyZSkgd2Ugd2lsbCBub3QgYmUgc2VudCB0aGUgc2FtZSB0cmlnZ2VyIHR3aWNlXHJcbiAgICAgICAgICBpZiAobWdDb250cm9sLlR5cGUgIT09IE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0JVVFRPTiAmJiBtZ0NvbnRyb2wuVHlwZSAhPT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQ0hFQ0tCT1gpIHtcclxuICAgICAgICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJfQ0xJQ0ssIGxpbmUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnByb2Nlc3MgXCJkYmxjbGlja1wiIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdDdHJsXCI+dGhlIGNvbnRyb2wgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj4gdGhlIGxpbmUgb2YgdGhlIG11bHRpbGluZSBjb250cm9sIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzRGJsQ2xpY2soZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuICAgIGlmICghbWdDb250cm9sLkdldENvbXB1dGVkQm9vbGVhblByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0VOQUJMRUQsIHRydWUsIGxpbmUpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgLy8gcmFpc2luZyB0aGUgaW50ZXJuYWwgZXZlbnRzIDogTUdfQUNUX1NFTEVDVCBhbmQgTUdfQUNUX1pPT00gd2FzIG1vdmVkIHRvIGNvbW1vbkhhbmRsZXIgdW5kZXIgdGhlXHJcbiAgICAvLyBNR19BQ1RfV0VCX09OX0RCTElDSyBjYXNlLlxyXG4gICAgLy8gVGhpcyBpcyBkaWZmZXJlbnQgdGhlbiB0aGUgYmVoYXZpb3Igb2Ygb25saW5lIGJlY2F1c2Ugd2UgZml4ZWQgUUNSICM5OTA4MzYgb25seSBpbiByaWNoLlxyXG4gICAgLy8gSW4gcmljaCwgMXN0IGRiY2xpY2sgaXMgcmFpc2VkLiBUaGVuIGlmIHRoZXJlIGlzIGEgaGFuZGxlciBvbiBpdCB3aXRoIHByb3BvZ2F0ZSA9J1lFUycsIG9ubHkgdGhlbiB0aGUgem9vbS9zZWxlY3RcclxuICAgIC8vIHdpbGwgYmUgcmFpc2VkLiBBIFByb3BhZ2F0ZSAnTk8nIHdpbGwgYmxvY2sgdGhlbS5cclxuXHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoQ3RybEFuZENvZGVBbmRMaW5lKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9PTl9EQkxJQ0ssIGxpbmUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBoYW5kbGUgQ29sdW1uIENsaWNrIGV2ZW50IG9uIENvbHVtbiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpQ29sdW1uQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGlyZWN0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb2x1bW5IZWFkZXJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgUHJvY2Vzc0NvbHVtbkNsaWNrKGd1aUNvbHVtbkN0cmw6IEd1aU1nQ29udHJvbCwgZGlyZWN0aW9uOiBudW1iZXIsIGNvbHVtbkhlYWRlcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgbWdDb2x1bW5Db250cm9sOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpQ29sdW1uQ3RybDtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5BZGRDb2x1bW5DbGlja0V2ZW50KG1nQ29sdW1uQ29udHJvbCwgZGlyZWN0aW9uLCBjb2x1bW5IZWFkZXIpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU03RCxNQUFNLE9BQWlCLGVBQWU7SUFDcEM7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBR08sZ0JBQWdCO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRTlDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDcEQsQ0FBQztJQXFCRCxjQUFjLENBQUMsU0FBb0IsRUFBRSxTQUF1QixFQUFFLFFBQW1CLEVBQUUsT0FBZSxFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLFNBQWtCLEVBQUUsY0FBc0IsRUFBRSxPQUFnQjtRQUN4TSxJQUFJLFlBQVksR0FBWSxPQUFPLENBQUM7UUFFcEMsSUFBSSxhQUFhLEdBQWlDLFNBQVMsQ0FBQztRQUM1RCxJQUFJLFVBQVUsR0FBMkIsU0FBUyxDQUFDO1FBRW5ELE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV6SyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBUUQsZ0JBQWdCLENBQUMsU0FBb0I7UUFDbkMsSUFBSSxlQUFlLEdBQVksS0FBSyxDQUFDO1FBQ3JDLElBQUksVUFBVSxHQUEyQixTQUFTLENBQUM7UUFFbkQsSUFBSSxVQUFVLENBQUMsdUJBQXVCLEVBQUU7WUFDdEMsT0FBTyxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkgsT0FBTyxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEgsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQVVPLGdCQUFnQixDQUFDLFNBQW9CLEVBQUUsU0FBdUIsRUFBRSxVQUFpQixFQUFFLG1CQUE0QixFQUFFLElBQVksRUFBRSxXQUFvQixFQUFFLGVBQXdCO1FBQ25MLElBQUksU0FBUyxHQUFpQyxTQUFTLENBQUM7UUFFeEQsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQ3RCLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBRWpDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaURBQWlELENBQWMsU0FBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFJO2FBQ0k7WUFDSCxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDekIsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQzVCO2lCQUNJO2dCQUNILElBQUksU0FBUyxDQUFDLDBCQUEwQixDQUFDLG1CQUFtQixDQUFDLEVBQUU7b0JBQzdELE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDdEg7Z0JBQ0QsSUFBSSxtQkFBbUIsSUFBSSxlQUFlLEVBQUU7b0JBTTFDLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsZ0JBQWdCLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsa0JBQWtCLEVBQUU7d0JBQzVHLE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUN2SDtpQkFDRjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBS08sZUFBZSxDQUFDLFNBQXVCLEVBQUUsSUFBWTtRQUMzRCxJQUFJLFNBQVMsR0FBaUMsU0FBUyxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7WUFDcEYsT0FBTztRQVFULE9BQU8sQ0FBQyxhQUFhLENBQUMsMENBQTBDLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVILENBQUM7SUFNTyxrQkFBa0IsQ0FBQyxhQUEyQixFQUFFLFNBQWlCLEVBQUUsWUFBb0I7UUFDN0YsSUFBSSxlQUFlLEdBQWlDLGFBQWEsQ0FBQztRQUNsRSxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEYsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWJ1Z30gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQge0ludGVybmFsSW50ZXJmYWNlLCBNZ0NvbnRyb2xUeXBlfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gJy4vZ3VpL0d1aU1nRm9ybSc7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tICcuL0V2ZW50cyc7XHJcbmltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tICcuL2d1aS9HdWlNZ0NvbnRyb2wnO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZSc7XHJcbmltcG9ydCB7TWFuYWdlcn0gZnJvbSAnLi9NYW5hZ2VyJztcclxuaW1wb3J0IHtNb2RpZmllcnN9IGZyb20gJy4vR3VpRW51bXMnO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdGb3JtQmFzZSc7XHJcbmltcG9ydCB7UHJvcEludGVyZmFjZX0gZnJvbSAnLi9tYW5hZ2VtZW50L2d1aS9Qcm9wSW50ZXJmYWNlJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICgxKSByZWdpc3RlcnMgYW5kIGltcGxlbWVudHMgaGFuZGxlcnMgZm9yIGV2ZW50cyB0aGF0IGNhbiBiZSBzZXJ2ZWQgbG9jYWxseSBieSBNZ0d1aS5kbGwuXHJcbi8vLyAoMikgcmVxdWVzdHMgc3ViY2xhc3NlcyB0byByZWdpc3RlciB0aGVpciBoYW5kbGVycyAoJ1RlbXBsYXRlIE1ldGhvZCcgZGVzaWduIHBhdHRlcm4pLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgIGFic3RyYWN0IGNsYXNzIEV2ZW50c1Byb2Nlc3NvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLlJlZ2lzdGVySGFuZGxlcnMoKTtcclxuICAgIHRoaXMuUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVnaXN0ZXIgYW5kIGltcGxlbWVudCBoYW5kbGVycyBmb3IgZXZlbnRzIHRoYXQgY2FuIGJlIHNlcnZlZCBsb2NhbGx5IGJ5IE1nR3VpLmRsbC48L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBSZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgRXZlbnRzLktleURvd25FdmVudCA9IHRoaXMucHJvY2Vzc0tleURvd24uYmluZCh0aGlzKTtcclxuXHJcbiAgICBFdmVudHMuTW91c2VEb3duRXZlbnQgPSB0aGlzLnByb2Nlc3NNb3VzZURvd247XHJcbiAgICBFdmVudHMuRGJsQ2xpY2tFdmVudCA9IHRoaXMucHJvY2Vzc0RibENsaWNrO1xyXG4gICAgRXZlbnRzLkNsb3NlRm9ybUV2ZW50ID0gdGhpcy5wcm9jZXNzRm9ybUNsb3NlO1xyXG5cclxuICAgIEV2ZW50cy5Db2x1bW5DbGlja0V2ZW50ID0gdGhpcy5Qcm9jZXNzQ29sdW1uQ2xpY2s7XHJcbiAgfVxyXG5cclxuICAvLyByZXF1ZXN0IHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgaGFuZGxlcnMgdGhhdCB0aGV5IHdpbGwgaW1wbGVtZW50ICgnVGVtcGxhdGUgTWV0aG9kJyBkZXNpZ24gcGF0dGVybikuXHJcbiAgYWJzdHJhY3QgUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5QYXNzIGtleWNvZGUgYW5kIG1vZGlmaWVyIHRvIGJyaWRnZSwgYnJpZGdlIHRoZW4gY29udmVydHMgaXQgdG8ga2V5Ym9hcmQgYWN0aW9uIGFuZCBhZGRzIGluIE1nQ29yZS5kbGxcclxuICAvLy8gZXZlbnRzIHF1ZXVlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNhcmV0UG9zXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNBY3RDaGFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWdnZXN0ZWRWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiQ29tYm9Jc0Ryb3BEb3duXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoYW5kbGVkXCI+Ym9vbGVhbiB2YXJpYWJsZSBldmVudCBpcyBoYW5kbGVkIG9yIG5vdC48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBvbmx5IGlmIHdlIGhhdmUgaGFuZGxlZCB0aGUgS2V5RG93biBldmVudCAob3RoZXJ3aXNlIHRoZSBDTFIgc2hvdWxkIGhhbmRsZSkuIElmIHRydWUgbWFnaWMgd2lsbCBoYW5kbGUgZWxzZSBDTFIgd2lsbCBoYW5kbGUuPC9yZXR1cm5zPlxyXG4gIHByb2Nlc3NLZXlEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIGhhbmRsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCBldmVudEhhbmRsZWQ6IGJvb2xlYW4gPSBoYW5kbGVkO1xyXG5cclxuICAgIGxldCBtZ0NvbnRyb2xCYXNlOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpTWdDdHJsO1xyXG4gICAgbGV0IG1nRm9ybUJhc2U6IE1nRm9ybUJhc2UgPSA8TWdGb3JtQmFzZT5ndWlNZ0Zvcm07XHJcblxyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLkFkZEtleWJvYXJkRXZlbnQobWdGb3JtQmFzZSwgbWdDb250cm9sQmFzZSwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0LCBlbmQsIHRleHQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0tFWURPV04pO1xyXG5cclxuICAgIHJldHVybiBldmVudEhhbmRsZWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBGdW5jdGlvbiBoYW5kbGluZyBmb3JtIGNsb3NlIGV2ZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJ1ZSBpZiBldmVudCBpcyBDTFIgaGFuZGxlZCBlbHNlIGZhbHNlLjwvcmV0dXJucz5cclxuICBwcm9jZXNzRm9ybUNsb3NlKGd1aU1nRm9ybTogR3VpTWdGb3JtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2xySGFuZGxlZEV2ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgbWdGb3JtQmFzZTogTWdGb3JtQmFzZSA9IDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybTtcclxuXHJcbiAgICBpZiAoTWdGb3JtQmFzZS5TaG91bGRQdXRBY3RPbkZvcm1DbG9zZSgpKVxyXG4gICAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRUYXNrQW5kQ29kZUFuZFJhaXNlZEJ5KG1nRm9ybUJhc2UuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUKTtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZShtZ0Zvcm1CYXNlLmdldFRhc2soKSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMT1NFKTtcclxuXHJcbiAgICByZXR1cm4gY2xySGFuZGxlZEV2ZW50O1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkb3ROZXRBcmdzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxlZnRDbGlja1dhc1ByZXNzZWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzTW91c2VEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZG90TmV0QXJnczogYW55W10sIGxlZnRDbGlja1dhc1ByZXNzZWQ6IGJvb2xlYW4sIGxpbmU6IG51bWJlciwgb25NdWx0aU1hcms6IGJvb2xlYW4sIGNhblByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuXHJcbiAgICBpZiAobWdDb250cm9sID09PSBudWxsKSB7XHJcbiAgICAgIERlYnVnLkFzc2VydChndWlNZ0Zvcm0gIT09IG51bGwpO1xyXG4gICAgICAvLyBBcyBpbiBvbmxpbmUuIGNsaWNraW5nIG9uIGEgZm9ybSByZXN1bHRzIGluIEFDVF9ISVRcclxuICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aFRhc2tBbmRDb2RlQW5kT25NdWx0aU1hcmsoKDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybSkuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAobWdDb250cm9sLmlzU3ViZm9ybSgpKSB7XHJcbiAgICAgICAgbWdDb250cm9sLk9uU3ViZm9ybUNsaWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKG1nQ29udHJvbC5SYWlzZUNvbnRyb2xIaXRPbk1vdXNlRG93bihsZWZ0Q2xpY2tXYXNQcmVzc2VkKSkge1xyXG4gICAgICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVCwgbGluZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsZWZ0Q2xpY2tXYXNQcmVzc2VkICYmIGNhblByb2R1Y2VDbGljaykge1xyXG4gICAgICAgICAgLy8gZml4ZWQgYnVnIzkyNzk0MlxyXG4gICAgICAgICAgLy8gd2UgbmV2ZXIgZ2V0IHRvIHRoaXMgbWV0aG9kIHdpdGggdGhlIGNvbnRyb2wgdHlwZSBidXR0b24gJiBjaGVja2JveC5cclxuICAgICAgICAgIC8vIGZvciBidXR0b24gJiBjaGVja2JveCwgd2Ugc2VudCB0aGUgdHJpZ2dlciBNR19BQ1RfV0VCX0NMSUNLIGluIEV2ZW50c01hbmFnZXIuaGFuZGxlTW91c2VVcCgpIHRoYXQgY2FsbFxyXG4gICAgICAgICAgLy8gZnJvbSBzaW11bGF0ZVNlbGVjdGlvbigpXHJcbiAgICAgICAgICAvLyB0aGUgXCJpZlwiIGlzIG9ubHkgZm9yIG1ha2Ugc3VyZSB0aGF0IGlmIHdlIHdpbGwgZ2V0IGl0IChpbiB0aGUgZmV0dXJlKSB3ZSB3aWxsIG5vdCBiZSBzZW50IHRoZSBzYW1lIHRyaWdnZXIgdHdpY2VcclxuICAgICAgICAgIGlmIChtZ0NvbnRyb2wuVHlwZSAhPT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQlVUVE9OICYmIG1nQ29udHJvbC5UeXBlICE9PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DSEVDS0JPWCkge1xyXG4gICAgICAgICAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoQ3RybEFuZENvZGVBbmRMaW5lKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9DTElDSywgbGluZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBcImRibGNsaWNrXCIgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPiB0aGUgbGluZSBvZiB0aGUgbXVsdGlsaW5lIGNvbnRyb2wgPC9wYXJhbT5cclxuICBwcml2YXRlIHByb2Nlc3NEYmxDbGljayhndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgbWdDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpTWdDdHJsO1xyXG4gICAgaWYgKCFtZ0NvbnRyb2wuR2V0Q29tcHV0ZWRCb29sZWFuUHJvcGVydHkoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRU5BQkxFRCwgdHJ1ZSwgbGluZSkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICAvLyByYWlzaW5nIHRoZSBpbnRlcm5hbCBldmVudHMgOiBNR19BQ1RfU0VMRUNUIGFuZCBNR19BQ1RfWk9PTSB3YXMgbW92ZWQgdG8gY29tbW9uSGFuZGxlciB1bmRlciB0aGVcclxuICAgIC8vIE1HX0FDVF9XRUJfT05fREJMSUNLIGNhc2UuXHJcbiAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0aGVuIHRoZSBiZWhhdmlvciBvZiBvbmxpbmUgYmVjYXVzZSB3ZSBmaXhlZCBRQ1IgIzk5MDgzNiBvbmx5IGluIHJpY2guXHJcbiAgICAvLyBJbiByaWNoLCAxc3QgZGJjbGljayBpcyByYWlzZWQuIFRoZW4gaWYgdGhlcmUgaXMgYSBoYW5kbGVyIG9uIGl0IHdpdGggcHJvcG9nYXRlID0nWUVTJywgb25seSB0aGVuIHRoZSB6b29tL3NlbGVjdFxyXG4gICAgLy8gd2lsbCBiZSByYWlzZWQuIEEgUHJvcGFnYXRlICdOTycgd2lsbCBibG9jayB0aGVtLlxyXG5cclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX09OX0RCTElDSywgbGluZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGhhbmRsZSBDb2x1bW4gQ2xpY2sgZXZlbnQgb24gQ29sdW1uIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlDb2x1bW5DdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkaXJlY3Rpb25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbHVtbkhlYWRlclwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBQcm9jZXNzQ29sdW1uQ2xpY2soZ3VpQ29sdW1uQ3RybDogR3VpTWdDb250cm9sLCBkaXJlY3Rpb246IG51bWJlciwgY29sdW1uSGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBtZ0NvbHVtbkNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT5ndWlDb2x1bW5DdHJsO1xyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLkFkZENvbHVtbkNsaWNrRXZlbnQobWdDb2x1bW5Db250cm9sLCBkaXJlY3Rpb24sIGNvbHVtbkhlYWRlcik7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
@@ -1 +1 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUZsb3dNb25pdG9yUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL0lGbG93TW9uaXRvclF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHN1bW1hcnk+XHJcbi8vLyBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGJ5IHRoZSBHVUkgbmFtZXNwYWNlIGZyb20gdGhlIEZsb3dNb25pdG9yUXVldWUgY2xhc3MuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZsb3dNb25pdG9yUXVldWUge1xyXG4gIGFkZFRhc2tDbmdNb2RlKGNvbnRleHRJRDogbnVtYmVyLCBuZXdUYXNrTW9kZTogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZDtcclxufVxyXG4iXX0=
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUZsb3dNb25pdG9yUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL0lGbG93TW9uaXRvclF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHN1bW1hcnk+XHJcbi8vLyBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGJ5IHRoZSBHVUkgbmFtZXNwYWNlIGZyb20gdGhlIEZsb3dNb25pdG9yUXVldWUgY2xhc3MuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZsb3dNb25pdG9yUXVldWUge1xyXG4gIGFkZFRhc2tDbmdNb2RlKCBuZXdUYXNrTW9kZTogc3RyaW5nLCB0YXNrSW5mbzogc3RyaW5nKTogdm9pZDtcclxufVxyXG4iXX0=
@@ -18,13 +18,13 @@ export class Manager {
18
18
  static GetDelayWait() {
19
19
  return Manager._delayWait;
20
20
  }
21
- static CanFocus(guiMgControl) {
21
+ static CanFocus() {
22
22
  return false;
23
23
  }
24
24
  static Init(startupImageFileName) {
25
25
  return;
26
26
  }
27
- static Abort(form, mainPrgTask) {
27
+ static Abort(form) {
28
28
  if (form.getSubFormCtrl() === null && form.Opened) {
29
29
  if (form.isDialog()) {
30
30
  this.IsOverlayOpen = false;
@@ -82,12 +82,12 @@ export class Manager {
82
82
  static ClearStatusBar(task) {
83
83
  let currentParkedControl = task.getLastParkedCtrl();
84
84
  if (currentParkedControl !== null && !NString.IsNullOrEmpty(currentParkedControl.PromptHelp))
85
- task.WriteToMessagePane(currentParkedControl.PromptHelp, false);
85
+ task.WriteToMessagePane(currentParkedControl.PromptHelp);
86
86
  else
87
87
  Manager.CleanMessagePane(task);
88
88
  }
89
89
  static CleanMessagePane(task) {
90
- task.WriteToMessagePane(Manager.GetCurrentRuntimeContext().DefaultStatusMsg, false);
90
+ task.WriteToMessagePane(Manager.GetCurrentRuntimeContext().DefaultStatusMsg);
91
91
  }
92
92
  static GetMessage(msg) {
93
93
  if (msg === null)
@@ -186,7 +186,7 @@ export class ContextIDGuard {
186
186
  }
187
187
  }
188
188
  SaveFilename() {
189
- let stackFrame = new StackFrame(1, true);
189
+ let stackFrame = new StackFrame(1);
190
190
  this._fileName = stackFrame.GetFileName();
191
191
  }
192
192
  Dispose() {
@@ -194,4 +194,4 @@ export class ContextIDGuard {
194
194
  Manager.SetCurrentContextID(this._prevContextID);
195
195
  }
196
196
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQWMsVUFBVSxFQUFFLGVBQWUsRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBRXRGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUdoRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLE9BQU87SUFtQmxCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFpQjtRQUMxQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFNRCxNQUFNLENBQUMsbUJBQW1CO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQ25DLENBQUM7SUFNRCxNQUFNLENBQUMsWUFBWTtRQUNqQixPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQU9ELE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBMEI7UUFDeEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBNEI7UUFDdEMsT0FBTztJQUNULENBQUM7SUFRRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQWdCLEVBQUUsV0FBd0I7UUFFckQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFFakQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUUzQixJQUFJLGdCQUFnQixHQUFlLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLGdCQUFnQixLQUFLLElBQUk7b0JBQzNCLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN2RDtZQUVELFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUU5RCxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBT0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFtQjtRQUduQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBT0QsTUFBTSxDQUFPLGtCQUFrQixDQUFDLElBQW1CLEVBQUUsVUFBbUI7O1lBQ3RFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQzdDO2dCQUVFLElBQUksZUFBZSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7b0JBQ3pDLElBQUksTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUM7d0JBQ2hHLE9BQU87aUJBQ1Y7Z0JBQ0QsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFFL0gsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQztLQUFBO0lBS0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFrQjtRQUVoQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFFdkIsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUUxQixJQUFJLGdCQUFnQixHQUFlLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUNoRSxJQUFJLGdCQUFnQixLQUFLLElBQUk7d0JBQzNCLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDeEQ7YUFFRjtZQWFELE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBRXJCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFHRCxNQUFNLENBQU8sbUJBQW1CLENBQUMsTUFBa0I7O1lBQ2pELElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRTtnQkFDdEQsTUFBTSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztnQkFDdEMsTUFBTSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUNsQztRQUNILENBQUM7S0FBQTtJQU1ELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBbUI7UUFDcEMsSUFBSSxRQUFRLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRW5FLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFNRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQWlCO1FBQ3JDLElBQUksb0JBQW9CLEdBQWtCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRW5FLElBQUksb0JBQW9CLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7WUFDMUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQzs7WUFFaEUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFNRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBaUI7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFRRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVc7UUFDM0IsSUFBSSxHQUFHLEtBQUssSUFBSTtZQUNkLEdBQUcsR0FBRyxFQUFFLENBQUM7YUFDTixJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksYUFBYSxHQUFXLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFckMsSUFBSSxZQUFZLEdBQVcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQU9ELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBbUIsRUFBRSxJQUFZO1FBQ2xELFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQVFELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBbUIsRUFBRSxhQUFxQixFQUFFLFlBQW9CO1FBQ3BGLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFNRCxNQUFNLENBQUMsaUJBQWlCO1FBQ3RCLE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFNRCxNQUFNLENBQUMsdUJBQXVCO1FBQzVCLE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFNRCxNQUFNLENBQUMsb0JBQW9CO1FBQ3pCLElBQUksVUFBVSxHQUFXLEVBQUUsQ0FBQztRQUM1QixJQUFJLGFBQWEsR0FBVyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBR2pFLFFBQVEsY0FBYyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakQsS0FBSyxHQUFHO2dCQUNOLFVBQVUsR0FBRyxNQUFNLEdBQUcsYUFBYSxHQUFHLElBQUksR0FBRyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUNsRSxNQUFNO1lBRVIsS0FBSyxHQUFHLENBQUM7WUFFVCxLQUFLLEdBQUc7Z0JBQ04sVUFBVSxHQUFHLElBQUksR0FBRyxhQUFhLEdBQUcsSUFBSSxHQUFHLGFBQWEsR0FBRyxNQUFNLENBQUM7Z0JBQ2xFLE1BQU07WUFFUixLQUFLLEdBQUc7Z0JBQ04sVUFBVSxHQUFHLElBQUksR0FBRyxhQUFhLEdBQUcsSUFBSSxHQUFHLGFBQWEsR0FBRyxNQUFNLENBQUM7Z0JBQ2xFLE1BQU07U0FDVDtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFNRCxNQUFNLENBQUMsb0JBQW9CO1FBQ3pCLElBQUksYUFBYSxHQUFXLGNBQWMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakUsSUFBSSxVQUFVLEdBQVcsSUFBSSxHQUFHLGFBQWEsR0FBRyxJQUFJLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM1RSxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBTUQsTUFBTSxDQUFDLHdCQUF3QjtRQUM3QixPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFPRCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWE7UUFDL0IsSUFBSSxTQUFTLEdBQWMsSUFBSSxDQUFDO1FBRWhDLElBQUksUUFBUSxZQUFZLFlBQVk7WUFDbEMsU0FBUyxHQUFrQixRQUFTLENBQUMsU0FBUyxDQUFDO2FBQzVDLElBQUksUUFBUSxZQUFZLFNBQVM7WUFDcEMsU0FBUyxHQUFjLFFBQVEsQ0FBQztRQUVsQyxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQVFELE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBZ0IsRUFBRSxPQUFvQixFQUFFLE9BQWU7SUFDN0UsQ0FBQztJQU1NLE1BQU0sQ0FBQyxzQkFBc0I7UUFDbEMsT0FBTyxjQUFjLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDN0QsQ0FBQzs7QUE1VE0scUJBQWEsR0FBWSxLQUFLLENBQUM7QUFDdkIsa0JBQVUsR0FBVyxJQUFJLE1BQU0sRUFBRSxDQUFDO0FBQ2xDLHNCQUFjLEdBQVcsRUFBRSxDQUFDO0FBSzVCLHlCQUFpQixHQUFXLElBQUksQ0FBQztBQUV6Qyx1QkFBZSxHQUFXLElBQUksQ0FBQztBQUMvQix5QkFBaUIsR0FBVyxJQUFJLENBQUM7QUFDakMsa0JBQVUsR0FBZSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRixxQkFBYSxHQUFzQixJQUFJLENBQUM7QUEwVGpELE1BQU0sT0FBTyxjQUFjO0lBU3pCLFlBQVksU0FBa0I7UUFSdEIsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFJOUIsY0FBUyxHQUFXLElBQUksQ0FBQztRQUsvQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxhQUFhLENBQUMsU0FBaUI7UUFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQU1ELFVBQVUsQ0FBQyxTQUFpQjtRQUMxQixJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFLTyxZQUFZO1FBQ2xCLElBQUksVUFBVSxHQUFlLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUMsbUJBQW1CLEVBQUU7WUFDdkQsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHN1bW1hcnk+XHJcbi8vLyBNZ0d1aS5kbGwncyBtYW5hZ2VyIC0gYXNzZW1ibHkgbGV2ZWwgcHJvcGVydGllcyBhbmQgbWV0aG9kcy5cclxuLy8vIDwvc3VtbWFyeT5cclxuaW1wb3J0IHtOU3RyaW5nLCBTdGFja0ZyYW1lfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtIZWxwQ29tbWFuZCwgVXRpbEltZUpwbiwgVXRpbFN0ckJ5dGVNb2RlLCBXaW5kb3dUeXBlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0lHdWlFdmVudHNNYW5hZ2VyfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2V2ZW50cy9JR3VpRXZlbnRzTWFuYWdlclwiO1xyXG5pbXBvcnQge0d1aU1nQ29udHJvbH0gZnJvbSBcIi4vZ3VpL0d1aU1nQ29udHJvbFwiO1xyXG5pbXBvcnQge0d1aVRhc2tCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL0d1aVRhc2tCYXNlXCI7XHJcbmltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0NvbW1hbmRzfSBmcm9tIFwiLi9Db21tYW5kc1wiO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gXCIuL21hbmFnZW1lbnQvZ3VpL01nRm9ybUJhc2VcIjtcclxuaW1wb3J0IHtDb21tYW5kVHlwZSwgSHRtbFByb3BlcnRpZXN9IGZyb20gXCIuL0d1aUVudW1zXCI7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tIFwiLi9FdmVudHNcIjtcclxuaW1wb3J0IHtSdW50aW1lQ29udGV4dEJhc2V9IGZyb20gXCIuL21hbmFnZW1lbnQvUnVudGltZUNvbnRleHRCYXNlXCI7XHJcbmltcG9ydCB7R3VpTWdGb3JtfSBmcm9tIFwiLi9ndWkvR3VpTWdGb3JtXCI7XHJcbmltcG9ydCB7UHJvcEludGVyZmFjZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvUHJvcEludGVyZmFjZVwiO1xyXG5pbXBvcnQge0d1aUVudmlyb25tZW50fSBmcm9tIFwiLi9HdWlFbnZpcm9ubWVudFwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBNYW5hZ2VyIHtcclxuICBzdGF0aWMgSXNPdmVybGF5T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc3RhdGljIF9kZWxheVdhaXQ6IE9iamVjdCA9IG5ldyBPYmplY3QoKTsgLy8gdGhpcyBvYmplY3QgaXMgdXNlZCBmb3IgZXhlY3V0aW9uIGFuZCBpbnRlcnJ1cHRpbmcgZGVsYXkgY29tbWFuZFxyXG4gIHByaXZhdGUgc3RhdGljIF9jbGlwYm9hcmREYXRhOiBzdHJpbmcgPSBcIlwiOyAvLyBEYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGNsaXBib2FyZC5cclxuXHJcbiAgLy8gVGhpcyB3aWxsIGhvbGQgdGhlIGNvbnRleHRJRCBmb3IgYSBjdXJyZW50IHRocmVhZC5cclxuICAvLyBUaHJlYWQgc3RhdGljIGlzIGEgc2VwYXJhdGUgZm9yIGVhY2ggdGhyZWFkIChpLmUuOiB2YWx1ZSBvZiBhIHN0YXRpYyBmaWVsZCBpcyB1bmlxdWUgZm9yIGVhY2ggdGhyZWFkKS5cclxuICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvc3lzdGVtLnRocmVhZHN0YXRpY2F0dHJpYnV0ZS5hc3B4XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRDb250ZXh0SUQ6IHN0cmluZyA9ICdcXDAnO1xyXG5cclxuICBzdGF0aWMgRGVmYXVsdFByb3RvY29sOiBzdHJpbmcgPSBudWxsOyAvLyBkZWZhdWx0IHByb3RvY29sIChodHRwL2h0dHBzKSBhbmQgc2VydmVyIG5hbWUgdG8gYmUgdXNlZCBmb3IgYW55IHJlbGF0aXZlIHVybFxyXG4gIHN0YXRpYyBEZWZhdWx0U2VydmVyTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBzdGF0aWMgVXRpbEltZUpwbjogVXRpbEltZUpwbiA9IChVdGlsU3RyQnl0ZU1vZGUuaXNMb2NhbGVEZWZMYW5nSlBOKCkgPyBuZXcgVXRpbEltZUpwbigpIDogbnVsbCk7IC8vIEpQTjogSU1FIHN1cHBvcnRcclxuICBzdGF0aWMgRXZlbnRzTWFuYWdlcjogSUd1aUV2ZW50c01hbmFnZXIgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+KHB1YmxpYylcclxuICAvLy8gU2V0IHRoZSBjb250ZXh0IElEIGZvciBhIGN1cnJlbnQgdGhyZWFkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZXh0SURcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBTZXRDdXJyZW50Q29udGV4dElEKGNvbnRleHRJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBNYW5hZ2VyLl9jdXJyZW50Q29udGV4dElEID0gY29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGNvbnRleHQgSUQgZm9yIGEgY3VycmVudCB0aHJlYWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5jdXJyZW50IHRocmVhZCdzIGNvbnRleHRJRDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q3VycmVudENvbnRleHRJRCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE1hbmFnZXIuX2N1cnJlbnRDb250ZXh0SUQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IG9iamVjdCB0aGF0IGlzIHVzZWQgZm9yIGV4ZWN1dGlvbiBhbmQgaW50ZXJydXB0aW5nIGRlbGF5IGNvbW1hbmQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXREZWxheVdhaXQoKTogYW55IHtcclxuICAgIHJldHVybiBNYW5hZ2VyLl9kZWxheVdhaXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2hlY2sgaWYgZG90IG5ldCBjb250cm9sIGNhbiBiZSBmb2N1c2VkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ2FuRm9jdXMoZ3VpTWdDb250cm9sOiBHdWlNZ0NvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgSW5pdChzdGFydHVwSW1hZ2VGaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY2xvc2UgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9ybVwiPiA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1haW5QcmdUYXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQWJvcnQoZm9ybTogTWdGb3JtQmFzZSwgbWFpblByZ1Rhc2s6IEd1aVRhc2tCYXNlKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKGZvcm0uZ2V0U3ViRm9ybUN0cmwoKSA9PT0gbnVsbCAmJiBmb3JtLk9wZW5lZCkge1xyXG4gICAgICAvLyBpZiB0aGUgY2xvc2luZyBmb3JtIGlzICdvcGVuZWQgYXMgYSBtb2RhbCcgdGhlbiBkZWNyZW1lbnQgdGhlIG1vZGFsIGNvdW50IG9uIGl0cyBmcmFtZSB3aW5kb3cuXHJcbiAgICAgIGlmIChmb3JtLmlzRGlhbG9nKCkpIHtcclxuICAgICAgICB0aGlzLklzT3ZlcmxheU9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IHRvcE1vc3RGcmFtZUZvcm06IE1nRm9ybUJhc2UgPSBmb3JtLmdldFRvcE1vc3RGcmFtZUZvcm0oKTtcclxuICAgICAgICBpZiAodG9wTW9zdEZyYW1lRm9ybSAhPT0gbnVsbClcclxuICAgICAgICAgIHRvcE1vc3RGcmFtZUZvcm0uVXBkYXRlTW9kYWxGb3Jtc0NvdW50KGZvcm0sIGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkQ2xvc2VGb3JtKGZvcm0sIFwiMFwiLCBmb3JtLmdldFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj5jb250cm9sIHRvIGdldCB2YWx1ZSA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdmFsdWUgb2YgdGhlIGNvbnRyb2wgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDdHJsVmFsKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBzdHJpbmcge1xyXG4gICAgLy8gUUNSICM3NDUxMTc6IE1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBjb250ZW50cyBvZiBhIGNvbnRyb2wgd2VyZSBjaGFuZ2VkXHJcbiAgICAvLyB0aGVuIHRoZSBjaGFuZ2VzIGFyZSBhcHBsaWVkIGJlZm9yZSBleGFtaW5pbmcgaXRzIHZhbHVlLlxyXG4gICAgcmV0dXJuIENvbW1hbmRzLmdldFZhbHVlKGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFNldCByZWFkIG9ubHkgZm9yIGNvbnRyb2xzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB0byBjaGFuZ2UgaXRzIHByb3BlcnR5IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc1JlYWRPbmx5XCI+Ym9vbGVhbiA8L3BhcmFtPlxyXG4gIHN0YXRpYyBhc3luYyBTZXRSZWFkT25seUNvbnRyb2woY3RybDogTWdDb250cm9sQmFzZSwgaXNSZWFkT25seTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGN0cmwuaXNUZXh0Q29udHJvbCgpIHx8IGN0cmwuSXNSZXBlYXRhYmxlKSAvLyBEZWZlY3QgMTMxODAyOiBTZXQgUmVhZE9ubHkgZm9yIFJpY2ggVGV4dCBjb250cm9sIGluIFRhYmxlIEhlYWRlciBhbmQgZGVmZWN0IDEzMTcwNDogaW4gZ2VuZXJhbCBmb3IgUmljaCBUZXh0LlxyXG4gICAge1xyXG4gICAgICAvLyBKUE46IElNRSBzdXBwb3J0IChlbmFibGUgSU1FIGluIHF1ZXJ5IG1vZGUpXHJcbiAgICAgIGlmIChVdGlsU3RyQnl0ZU1vZGUuaXNMb2NhbGVEZWZMYW5nREJDUygpKSB7XHJcbiAgICAgICAgaWYgKGF3YWl0IGN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKS5jaGVja1Byb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQUxMT1dfTE9DQVRFX0lOX1FVRVJZLCBmYWxzZSkpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgQ29tbWFuZHMuYWRkT3BlcmF0aW9uV2l0aExpbmUoQ29tbWFuZFR5cGUuU0VUX1BST1BFUlRZLCBjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKGZhbHNlKSwgSHRtbFByb3BlcnRpZXMuUmVhZE9ubHksIGlzUmVhZE9ubHkpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IE9wZW4gdGhlIGZvcm0uIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ0Zvcm1cIj5mb3JtIHRvIGJlIG9wZW5lZC48L3BhcmFtPlxyXG4gIHN0YXRpYyBPcGVuRm9ybShtZ0Zvcm06IE1nRm9ybUJhc2UpOiB2b2lkIHtcclxuICAgIC8vIG5vbiBpbnRlcmFjdGl2ZSBjYW4gY2hvb3NlIG5vdCB0byBvcGVuIHRoZSB3aW5kb3cuXHJcbiAgICBpZiAoIW1nRm9ybS5PcGVuZWQgJiYgKG1nRm9ybS5nZXRUYXNrKCkuSXNJbnRlcmFjdGl2ZSB8fCBtZ0Zvcm0uZ2V0VGFzaygpLmlzT3BlbldpbigpKSkge1xyXG4gICAgICBpZiAoIW1nRm9ybS5pc1N1YkZvcm0oKSkge1xyXG4gICAgICAgIC8vIGlmIHRoZSBmb3JtIGlzIHRvIGJlIG9wZW5lZCBhcyBhIG1vZGFsLCB0aGVuIGluY3JlbWVudCB0aGUgbW9kYWwgY291bnQgb24gaXRzIGZyYW1lIHdpbmRvdy5cclxuICAgICAgICBpZiAobWdGb3JtLmlzRGlhbG9nKCkpIHtcclxuICAgICAgICAgIHRoaXMuSXNPdmVybGF5T3BlbiA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IHRvcE1vc3RGcmFtZUZvcm06IE1nRm9ybUJhc2UgPSBtZ0Zvcm0uZ2V0VG9wTW9zdEZyYW1lRm9ybSgpO1xyXG4gICAgICAgICAgaWYgKHRvcE1vc3RGcmFtZUZvcm0gIT09IG51bGwpXHJcbiAgICAgICAgICAgIHRvcE1vc3RGcmFtZUZvcm0uVXBkYXRlTW9kYWxGb3Jtc0NvdW50KG1nRm9ybSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICAvLyBpZiAoIW1nRm9ybS5pc1N1YkZvcm0oKSkge1xyXG4gICAgICAvLyAgIGxldCBmb3JtTmFtZTogc3RyaW5nID0gbWdGb3JtLlVuaXF1ZU5hbWU7XHJcbiAgICAgIC8vICAgVUlCcmlkZ2UuZ2V0SW5zdGFuY2UoKS5PcGVuRm9ybShmb3JtTmFtZSk7XHJcblxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIGxldCBpbnB1dENvbnRyb2xzID0gbWdGb3JtLkdldExpc3RPZklucHV0Q29udHJvbHMoKTtcclxuICAgICAgLy8gLy9cclxuICAgICAgLy8gLy8gICBKU0JyaWRnZS5JbnN0YW5jZS5PcGVuU3ViRm9ybSh0aGlzLmdldFN1YkZvcm1DdHJsKCkuZ2V0TmFtZSgpLCBQYXJlbnRGb3JtLmdldFRhc2soKS5nZXRUYXNrVGFnKCksIGdldFByb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRk9STV9OQU1FKS5nZXRWYWx1ZSgpLCBfdGFzay5nZXRUYXNrVGFnKCksIGlucHV0Q29udHJvbHMpO1xyXG4gICAgICAvLyAvLyB9XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIG1nRm9ybS5PcGVuZWQgPSB0cnVlO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gUGVyZm9ybXMgZmlyc3QgcmVmcmVzaCBmb3IgdGhlIHRhYmxlIGNvbnRyb2wgPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBhc3luYyBEb0ZpcnN0UmVmcmVzaFRhYmxlKG1nRm9ybTogTWdGb3JtQmFzZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKG1nRm9ybSAhPT0gbnVsbCAmJiAhbWdGb3JtLmlnbm9yZUZpcnN0UmVmcmVzaFRhYmxlKSB7XHJcbiAgICAgIG1nRm9ybS5pZ25vcmVGaXJzdFJlZnJlc2hUYWJsZSA9IHRydWU7XHJcbiAgICAgIGF3YWl0IG1nRm9ybS5maXJzdFRhYmxlUmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FyZXQsIHdpdGhpbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRleHRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPnRoZSBjb250cm9sIHdoaWNoIGlzIGFzc3VtZWQgdG8gY29udGFpbiB0aGUgc2VsZWN0ZWQgdGV4dCA8L3BhcmFtPlxyXG4gIHN0YXRpYyBDYXJldFBvc0dldChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogbnVtYmVyIHtcclxuICAgIGxldCBjYXJldFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAoY3RybC5pc1RleHRDb250cm9sKCkpXHJcbiAgICAgIGNhcmV0UG9zID0gQ29tbWFuZHMuY2FyZXRQb3NHZXQoY3RybCwgY3RybC5nZXREaXNwbGF5TGluZSh0cnVlKSk7XHJcblxyXG4gICAgcmV0dXJuIGNhcmV0UG9zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDbGVhciB0aGUgc3RhdHVzIGJhciBkZXBlbmRpbmcgb24gdGhlIGNvbnRyb2wgc3BlY2lmaWMgc3RhdHVzIG1lc3NhZ2Ugb3IgZm9ybSBzcGVjaWZpYyBzdGF0dXMgbWVzc2FnZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPnRhc2s8L3BhcmFtPlxyXG4gIHN0YXRpYyBDbGVhclN0YXR1c0Jhcih0YXNrOiBHdWlUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgbGV0IGN1cnJlbnRQYXJrZWRDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gdGFzay5nZXRMYXN0UGFya2VkQ3RybCgpO1xyXG5cclxuICAgIGlmIChjdXJyZW50UGFya2VkQ29udHJvbCAhPT0gbnVsbCAmJiAhTlN0cmluZy5Jc051bGxPckVtcHR5KGN1cnJlbnRQYXJrZWRDb250cm9sLlByb21wdEhlbHApKVxyXG4gICAgICB0YXNrLldyaXRlVG9NZXNzYWdlUGFuZShjdXJyZW50UGFya2VkQ29udHJvbC5Qcm9tcHRIZWxwLCBmYWxzZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIE1hbmFnZXIuQ2xlYW5NZXNzYWdlUGFuZSh0YXNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbGVhbiB0aGUgc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ2xlYW5NZXNzYWdlUGFuZSh0YXNrOiBHdWlUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGFzay5Xcml0ZVRvTWVzc2FnZVBhbmUoTWFuYWdlci5HZXRDdXJyZW50UnVudGltZUNvbnRleHQoKS5EZWZhdWx0U3RhdHVzTXNnLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIE1lc3NhZ2Ugc3RyaW5nIHRvIGJlIGRpc3BsYXllZCBvbiBzdGF0dXMgYmFyIG9yIGluIE1lc3NhZ2UgYm94XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1zZ1wiPiBpbnB1dCBtZXNzYWdlIHN0cmluZyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gb3V0cHV0IG1lc3NhZ2Ugc3RyaW5nIDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0TWVzc2FnZShtc2c6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAobXNnID09PSBudWxsKVxyXG4gICAgICBtc2cgPSBcIlwiO1xyXG4gICAgZWxzZSBpZiAobXNnLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGlkeE9mQ2FycmlhZ2U6IG51bWJlciA9IG1zZy5pbmRleE9mKFwiXFxyXCIpO1xyXG4gICAgICBpZiAoaWR4T2ZDYXJyaWFnZSAhPT0gLTEpXHJcbiAgICAgICAgbXNnID0gbXNnLnN1YnN0cigwLCBpZHhPZkNhcnJpYWdlKTtcclxuXHJcbiAgICAgIGxldCBpZHhPZk5ld0xpbmU6IG51bWJlciA9IG1zZy5pbmRleE9mKFwiXFxuXCIpO1xyXG4gICAgICBpZiAoaWR4T2ZOZXdMaW5lICE9PSAtMSlcclxuICAgICAgICBtc2cgPSBtc2cuc3Vic3RyKDAsIGlkeE9mTmV3TGluZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1zZztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBVc2VkIHRvIHB1dCB0aGUgdGV4dCBvbiBhIHRleHQgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0ZXh0XCI+IDwvcGFyYW0+XHJcbiAgc3RhdGljIFNldEVkaXRUZXh0KGN0cmw6IE1nQ29udHJvbEJhc2UsIHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgQ29tbWFuZHMuc2V0RWRpdFRleHQoY3RybCwgY3RybC5nZXREaXNwbGF5TGluZSh0cnVlKSwgdGV4dCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEluc2VydCB0ZXh0IHRvIGEgdGV4dCBjb250cm9sIGF0IGEgZ2l2ZW4gcG9zaXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0UG9zaXRpb25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRleHRUb0luc2VydFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIEluc2VydEVkaXRUZXh0KGN0cmw6IE1nQ29udHJvbEJhc2UsIHN0YXJ0UG9zaXRpb246IG51bWJlciwgdGV4dFRvSW5zZXJ0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIENvbW1hbmRzLmluc2VydEVkaXRUZXh0KGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSksIHN0YXJ0UG9zaXRpb24sIHRleHRUb0luc2VydCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIFRvb2x0aXBUaW1lb3V0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHJldHVybnMgVG9vbHRpcFRpbWVvdXQ8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldFRvb2x0aXBUaW1lb3V0KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0VG9vbHRpcFRpbWVvdXQoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIFNwZWNpYWxFZGl0TGVmdEFsaWduXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRTcGVjaWFsRWRpdExlZnRBbGlnbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTcGVjaWFsRWRpdExlZnRBbGlnbigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFJldHVybnMgZGVmYXVsdCBkYXRlIGZvcm1hdCBkZXBlbmRpbmcgb24gZGF0ZSBtb2RlIGFuZCBkYXRlIHNlcGFyYXRvci5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gU3RyaW5nIGRlZmF1bHQgZGF0ZSBmb3JtYXQ8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldERlZmF1bHREYXRlRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZUZvcm1hdDogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBkYXRlU2VwZXJhdG9yOiBzdHJpbmcgPSBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXREYXRlKCk7XHJcblxyXG4gICAgLy8gQXJyYW5nZSBkYXRlIGZvcm1hdCBhY2NvcmRpbmcgdG8gdGhlIGRhdGUgbW9kZS5cclxuICAgIHN3aXRjaCAoR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0RGF0ZU1vZGUoMCkpIHtcclxuICAgICAgY2FzZSAnUyc6IC8vIFNjYW5kaW5hdmlhblxyXG4gICAgICAgIGRhdGVGb3JtYXQgPSBcIllZWVlcIiArIGRhdGVTZXBlcmF0b3IgKyBcIk1NXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJERFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnQic6IC8vIEJ1ZGRoaXN0XHJcblxyXG4gICAgICBjYXNlICdFJzogLy8gRXVyb3BlYW5cclxuICAgICAgICBkYXRlRm9ybWF0ID0gXCJERFwiICsgZGF0ZVNlcGVyYXRvciArIFwiTU1cIiArIGRhdGVTZXBlcmF0b3IgKyBcIllZWVlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ0EnOiAvLyBBbWVyaWNhblxyXG4gICAgICAgIGRhdGVGb3JtYXQgPSBcIk1NXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJERFwiICsgZGF0ZVNlcGVyYXRvciArIFwiWVlZWVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGVGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmV0dXJuIGRlZmF1bHQgdGltZSBmb3JtYXQgdXNpbmcgdGltZSBzZXBhcmF0b3IuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXREZWZhdWx0VGltZUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRpbWVTZXBlcmF0b3I6IHN0cmluZyA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFRpbWUoKTtcclxuICAgIGxldCB0aW1lRm9ybWF0OiBzdHJpbmcgPSBcIkhIXCIgKyB0aW1lU2VwZXJhdG9yICsgXCJNTVwiICsgdGltZVNlcGVyYXRvciArIFwiU1NcIjtcclxuICAgIHJldHVybiB0aW1lRm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIHRoZSBydW50aW1lIGNvbnRleHQgYmVsb25ncyB0byB0aGUgY3VycmVudCB0aHJlYWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+UnVudGltZUNvbnRleHRCYXNlPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDdXJyZW50UnVudGltZUNvbnRleHQoKTogUnVudGltZUNvbnRleHRCYXNlIHtcclxuICAgIHJldHVybiBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIHRoZSBjb250ZXh0SUQgdXNpbmcgdGhlIEd1aU1nRm9ybS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1nT2JqZWN0XCI+TWFnaWMgT2JqZWN0IC0gR3VpTWdGb3JtL0d1aU1nQ29udHJvbC9Mb2dpY2FsIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5jb250ZXh0SUQ8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbnRleHRJRChtZ09iamVjdDogYW55KTogbnVtYmVyIHtcclxuICAgIGxldCBndWlNZ0Zvcm06IEd1aU1nRm9ybSA9IG51bGw7XHJcblxyXG4gICAgaWYgKG1nT2JqZWN0IGluc3RhbmNlb2YgR3VpTWdDb250cm9sKVxyXG4gICAgICBndWlNZ0Zvcm0gPSAoPEd1aU1nQ29udHJvbD5tZ09iamVjdCkuR3VpTWdGb3JtO1xyXG4gICAgZWxzZSBpZiAobWdPYmplY3QgaW5zdGFuY2VvZiBHdWlNZ0Zvcm0pXHJcbiAgICAgIGd1aU1nRm9ybSA9IDxHdWlNZ0Zvcm0+bWdPYmplY3Q7XHJcblxyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXRDb250ZXh0SUQoZ3VpTWdGb3JtKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2hvd3Mgd2luZG93cyBoZWxwLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZmlsZVBhdGhcIj5wYXRoIG9mIHRoZSBoZWxwIGZpbGUuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZWxwQ21kXCI+aGVscCBjb21tYW5kLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGVscEtleVwiPnNlYXJjaCBrZXkgd29yZC48L3BhcmFtPlxyXG4gIHN0YXRpYyBTaG93V2luZG93SGVscChmaWxlUGF0aDogc3RyaW5nLCBoZWxwQ21kOiBIZWxwQ29tbWFuZCwgaGVscEtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybiBTcGVjaWFsVmFsTmV3UG9saWN5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHB1YmxpYyBzdGF0aWMgR2V0U3BlY2lhbFZhbE5ld1BvbGljeSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTcGVjaWFsVmFsTmV3UG9saWN5KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBoZWxwZXIgY2xhc3MgZm9yIHNldHRpbmcvcmVzZXR0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgSUQuXHJcbi8vLyBXZSByZXF1aXJlIHRoaXMgY2xhc3Mgc3BlY2lmaWNhbGx5IGZvciBNb2RhbCB3aW5kb3dzLiBXaGVuIHdlIG9wZW4gYSBtb2RhbCB3aW5kb3cgdGhlblxyXG4vLy8gaXQgd2FpdHMgaW4gR3VpVGhyZWFkLiBNZWFuIHdoaWxlIEd1aVRocmVhZCBjYW4gcmVjZWl2ZSB0aGUgZXZlbnRzIG9mIG90aGVyIGNvbnRleHQgYW5kXHJcbi8vLyBhZnRlciBwcm9jZXNzaW5nIHRoZXNlIGV2ZW50cywgd2Ugc2hvdWxkIHJlc2V0IHRoZSBjb250ZXh0SUQgb2YgdGhlIE1vZGFsIHdpbmRvd3MgYmVjYXVzZVxyXG4vLy8gaXQgd2lsbCBiZSB1c2VkIGZvciBsb2dnaW5nIHRoZSBldmVudHMgd2hlbiB3ZSBjbG9zZSB0aGUgbW9kYWwgd2luZG93LlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgQ29udGV4dElER3VhcmQge1xyXG4gIHByaXZhdGUgX3ByZXZDb250ZXh0SUQ6IHN0cmluZyA9ICdcXDAnO1xyXG5cclxuICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2Ugb25seS5cclxuICAvLyBJdCB3aWxsIGhvbGQgdGhlIGZpbGUgbmFtZSBmcm9tIHdoaWNoIHRoZSBvYmplY3Qgb2YgQ29udGV4dElER3VhcmQgaXMgY3JlYXRlZC5cclxuICBwcml2YXRlIF9maWxlTmFtZTogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0SUQ6IHN0cmluZyk7XHJcbiAgY29uc3RydWN0b3IoY29udGV4dElEPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzAoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKGNvbnRleHRJRCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcmV2Q29udGV4dElEID0gTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCk7XHJcbiAgICB0aGlzLlNhdmVGaWxlbmFtZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xKGNvbnRleHRJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLlNldEN1cnJlbnQoY29udGV4dElEKTtcclxuICAgIHRoaXMuU2F2ZUZpbGVuYW1lKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHNldHMgdGhlIGNvbnRleHQgSUQgdG8gJ2d1YXJkJy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPm5ldyBjb250ZXh0IElEIHRvICdndWFyZCcuPC9wYXJhbT5cclxuICBTZXRDdXJyZW50KGNvbnRleHRJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoY29udGV4dElEICE9PSB0aGlzLl9wcmV2Q29udGV4dElEKSB7XHJcbiAgICAgIHRoaXMuX3ByZXZDb250ZXh0SUQgPSBjb250ZXh0SUQ7XHJcbiAgICAgIE1hbmFnZXIuU2V0Q3VycmVudENvbnRleHRJRChjb250ZXh0SUQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGZpbGUgbmFtZSBmcm9tIHdoaWNoIHRoZSBDb250ZXh0SURHdWFyZCBpcyBiZWluZyBjcmVhdGVkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBTYXZlRmlsZW5hbWUoKTogdm9pZCB7XHJcbiAgICBsZXQgc3RhY2tGcmFtZTogU3RhY2tGcmFtZSA9IG5ldyBTdGFja0ZyYW1lKDEsIHRydWUpO1xyXG4gICAgdGhpcy5fZmlsZU5hbWUgPSBzdGFja0ZyYW1lLkdldEZpbGVOYW1lKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRGlzcG9zZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9wcmV2Q29udGV4dElEICE9PSBNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSlcclxuICAgICAgTWFuYWdlci5TZXRDdXJyZW50Q29udGV4dElEKHRoaXMuX3ByZXZDb250ZXh0SUQpO1xyXG4gIH1cclxufVxyXG4iXX0=
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQWMsVUFBVSxFQUFFLGVBQWUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUdoRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFaEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsTUFBTSxPQUFPLE9BQU87SUFtQmxCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFpQjtRQUMxQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFNRCxNQUFNLENBQUMsbUJBQW1CO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDO0lBQ25DLENBQUM7SUFNRCxNQUFNLENBQUMsWUFBWTtRQUNqQixPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQU9ELE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBNEI7UUFDdEMsT0FBTztJQUNULENBQUM7SUFRRCxNQUFNLENBQUMsS0FBSyxDQUFD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QyxjQUFjLEtBQUssT0FBTyxDQUFDLG1CQUFtQixFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxzdW1tYXJ5PlxyXG4vLy8gTWdHdWkuZGxsJ3MgbWFuYWdlciAtIGFzc2VtYmx5IGxldmVsIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmltcG9ydCB7TlN0cmluZywgU3RhY2tGcmFtZX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7SGVscENvbW1hbmQsIFV0aWxJbWVKcG4sIFV0aWxTdHJCeXRlTW9kZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtJR3VpRXZlbnRzTWFuYWdlcn0gZnJvbSBcIi4vbWFuYWdlbWVudC9ldmVudHMvSUd1aUV2ZW50c01hbmFnZXJcIjtcclxuaW1wb3J0IHtHdWlNZ0NvbnRyb2x9IGZyb20gXCIuL2d1aS9HdWlNZ0NvbnRyb2xcIjtcclxuaW1wb3J0IHtHdWlUYXNrQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC90YXNrcy9HdWlUYXNrQmFzZVwiO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gXCIuL21hbmFnZW1lbnQvZ3VpL01nQ29udHJvbEJhc2VcIjtcclxuaW1wb3J0IHtDb21tYW5kc30gZnJvbSBcIi4vQ29tbWFuZHNcIjtcclxuaW1wb3J0IHtNZ0Zvcm1CYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9NZ0Zvcm1CYXNlXCI7XHJcbmltcG9ydCB7Q29tbWFuZFR5cGUsIEh0bWxQcm9wZXJ0aWVzfSBmcm9tIFwiLi9HdWlFbnVtc1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4vRXZlbnRzXCI7XHJcbmltcG9ydCB7UnVudGltZUNvbnRleHRCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L1J1bnRpbWVDb250ZXh0QmFzZVwiO1xyXG5pbXBvcnQge0d1aU1nRm9ybX0gZnJvbSBcIi4vZ3VpL0d1aU1nRm9ybVwiO1xyXG5pbXBvcnQge1Byb3BJbnRlcmZhY2V9IGZyb20gXCIuL21hbmFnZW1lbnQvZ3VpL1Byb3BJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtHdWlFbnZpcm9ubWVudH0gZnJvbSBcIi4vR3VpRW52aXJvbm1lbnRcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgTWFuYWdlciB7XHJcbiAgc3RhdGljIElzT3ZlcmxheU9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHN0YXRpYyBfZGVsYXlXYWl0OiBPYmplY3QgPSBuZXcgT2JqZWN0KCk7IC8vIHRoaXMgb2JqZWN0IGlzIHVzZWQgZm9yIGV4ZWN1dGlvbiBhbmQgaW50ZXJydXB0aW5nIGRlbGF5IGNvbW1hbmRcclxuICBwcml2YXRlIHN0YXRpYyBfY2xpcGJvYXJkRGF0YTogc3RyaW5nID0gXCJcIjsgLy8gRGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBjbGlwYm9hcmQuXHJcblxyXG4gIC8vIFRoaXMgd2lsbCBob2xkIHRoZSBjb250ZXh0SUQgZm9yIGEgY3VycmVudCB0aHJlYWQuXHJcbiAgLy8gVGhyZWFkIHN0YXRpYyBpcyBhIHNlcGFyYXRlIGZvciBlYWNoIHRocmVhZCAoaS5lLjogdmFsdWUgb2YgYSBzdGF0aWMgZmllbGQgaXMgdW5pcXVlIGZvciBlYWNoIHRocmVhZCkuXHJcbiAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3N5c3RlbS50aHJlYWRzdGF0aWNhdHRyaWJ1dGUuYXNweFxyXG4gIHByaXZhdGUgc3RhdGljIF9jdXJyZW50Q29udGV4dElEOiBzdHJpbmcgPSAnXFwwJztcclxuXHJcbiAgc3RhdGljIERlZmF1bHRQcm90b2NvbDogc3RyaW5nID0gbnVsbDsgLy8gZGVmYXVsdCBwcm90b2NvbCAoaHR0cC9odHRwcykgYW5kIHNlcnZlciBuYW1lIHRvIGJlIHVzZWQgZm9yIGFueSByZWxhdGl2ZSB1cmxcclxuICBzdGF0aWMgRGVmYXVsdFNlcnZlck5hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgc3RhdGljIFV0aWxJbWVKcG46IFV0aWxJbWVKcG4gPSAoVXRpbFN0ckJ5dGVNb2RlLmlzTG9jYWxlRGVmTGFuZ0pQTigpID8gbmV3IFV0aWxJbWVKcG4oKSA6IG51bGwpOyAvLyBKUE46IElNRSBzdXBwb3J0XHJcbiAgc3RhdGljIEV2ZW50c01hbmFnZXI6IElHdWlFdmVudHNNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PihwdWJsaWMpXHJcbiAgLy8vIFNldCB0aGUgY29udGV4dCBJRCBmb3IgYSBjdXJyZW50IHRocmVhZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElEXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgU2V0Q3VycmVudENvbnRleHRJRChjb250ZXh0SUQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgTWFuYWdlci5fY3VycmVudENvbnRleHRJRCA9IGNvbnRleHRJRDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0IHRoZSBjb250ZXh0IElEIGZvciBhIGN1cnJlbnQgdGhyZWFkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+Y3VycmVudCB0aHJlYWQncyBjb250ZXh0SUQ8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldEN1cnJlbnRDb250ZXh0SUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBNYW5hZ2VyLl9jdXJyZW50Q29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBvYmplY3QgdGhhdCBpcyB1c2VkIGZvciBleGVjdXRpb24gYW5kIGludGVycnVwdGluZyBkZWxheSBjb21tYW5kLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0RGVsYXlXYWl0KCk6IGFueSB7XHJcbiAgICByZXR1cm4gTWFuYWdlci5fZGVsYXlXYWl0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNoZWNrIGlmIGRvdCBuZXQgY29udHJvbCBjYW4gYmUgZm9jdXNlZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0NvbnRyb2xcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIENhbkZvY3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBJbml0KHN0YXJ0dXBJbWFnZUZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICBjbG9zZSB0aGUgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3JtXCI+IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWFpblByZ1Rhc2tcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBBYm9ydChmb3JtOiBNZ0Zvcm1CYXNlKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKGZvcm0uZ2V0U3ViRm9ybUN0cmwoKSA9PT0gbnVsbCAmJiBmb3JtLk9wZW5lZCkge1xyXG4gICAgICAvLyBpZiB0aGUgY2xvc2luZyBmb3JtIGlzICdvcGVuZWQgYXMgYSBtb2RhbCcgdGhlbiBkZWNyZW1lbnQgdGhlIG1vZGFsIGNvdW50IG9uIGl0cyBmcmFtZSB3aW5kb3cuXHJcbiAgICAgIGlmIChmb3JtLmlzRGlhbG9nKCkpIHtcclxuICAgICAgICB0aGlzLklzT3ZlcmxheU9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IHRvcE1vc3RGcmFtZUZvcm06IE1nRm9ybUJhc2UgPSBmb3JtLmdldFRvcE1vc3RGcmFtZUZvcm0oKTtcclxuICAgICAgICBpZiAodG9wTW9zdEZyYW1lRm9ybSAhPT0gbnVsbClcclxuICAgICAgICAgIHRvcE1vc3RGcmFtZUZvcm0uVXBkYXRlTW9kYWxGb3Jtc0NvdW50KGZvcm0sIGZhbHNlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkQ2xvc2VGb3JtKGZvcm0sIFwiMFwiLCBmb3JtLmdldFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj5jb250cm9sIHRvIGdldCB2YWx1ZSA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdmFsdWUgb2YgdGhlIGNvbnRyb2wgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDdHJsVmFsKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBzdHJpbmcge1xyXG4gICAgLy8gUUNSICM3NDUxMTc6IE1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBjb250ZW50cyBvZiBhIGNvbnRyb2wgd2VyZSBjaGFuZ2VkXHJcbiAgICAvLyB0aGVuIHRoZSBjaGFuZ2VzIGFyZSBhcHBsaWVkIGJlZm9yZSBleGFtaW5pbmcgaXRzIHZhbHVlLlxyXG4gICAgcmV0dXJuIENvbW1hbmRzLmdldFZhbHVlKGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFNldCByZWFkIG9ubHkgZm9yIGNvbnRyb2xzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB0byBjaGFuZ2UgaXRzIHByb3BlcnR5IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc1JlYWRPbmx5XCI+Ym9vbGVhbiA8L3BhcmFtPlxyXG4gIHN0YXRpYyBhc3luYyBTZXRSZWFkT25seUNvbnRyb2woY3RybDogTWdDb250cm9sQmFzZSwgaXNSZWFkT25seTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGN0cmwuaXNUZXh0Q29udHJvbCgpIHx8IGN0cmwuSXNSZXBlYXRhYmxlKSAvLyBEZWZlY3QgMTMxODAyOiBTZXQgUmVhZE9ubHkgZm9yIFJpY2ggVGV4dCBjb250cm9sIGluIFRhYmxlIEhlYWRlciBhbmQgZGVmZWN0IDEzMTcwNDogaW4gZ2VuZXJhbCBmb3IgUmljaCBUZXh0LlxyXG4gICAge1xyXG4gICAgICAvLyBKUE46IElNRSBzdXBwb3J0IChlbmFibGUgSU1FIGluIHF1ZXJ5IG1vZGUpXHJcbiAgICAgIGlmIChVdGlsU3RyQnl0ZU1vZGUuaXNMb2NhbGVEZWZMYW5nREJDUygpKSB7XHJcbiAgICAgICAgaWYgKGF3YWl0IGN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKS5jaGVja1Byb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQUxMT1dfTE9DQVRFX0lOX1FVRVJZLCBmYWxzZSkpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgQ29tbWFuZHMuYWRkT3BlcmF0aW9uV2l0aExpbmUoQ29tbWFuZFR5cGUuU0VUX1BST1BFUlRZLCBjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKGZhbHNlKSwgSHRtbFByb3BlcnRpZXMuUmVhZE9ubHksIGlzUmVhZE9ubHkpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IE9wZW4gdGhlIGZvcm0uIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ0Zvcm1cIj5mb3JtIHRvIGJlIG9wZW5lZC48L3BhcmFtPlxyXG4gIHN0YXRpYyBPcGVuRm9ybShtZ0Zvcm06IE1nRm9ybUJhc2UpOiB2b2lkIHtcclxuICAgIC8vIG5vbiBpbnRlcmFjdGl2ZSBjYW4gY2hvb3NlIG5vdCB0byBvcGVuIHRoZSB3aW5kb3cuXHJcbiAgICBpZiAoIW1nRm9ybS5PcGVuZWQgJiYgKG1nRm9ybS5nZXRUYXNrKCkuSXNJbnRlcmFjdGl2ZSB8fCBtZ0Zvcm0uZ2V0VGFzaygpLmlzT3BlbldpbigpKSkge1xyXG4gICAgICBpZiAoIW1nRm9ybS5pc1N1YkZvcm0oKSkge1xyXG4gICAgICAgIC8vIGlmIHRoZSBmb3JtIGlzIHRvIGJlIG9wZW5lZCBhcyBhIG1vZGFsLCB0aGVuIGluY3JlbWVudCB0aGUgbW9kYWwgY291bnQgb24gaXRzIGZyYW1lIHdpbmRvdy5cclxuICAgICAgICBpZiAobWdGb3JtLmlzRGlhbG9nKCkpIHtcclxuICAgICAgICAgIHRoaXMuSXNPdmVybGF5T3BlbiA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IHRvcE1vc3RGcmFtZUZvcm06IE1nRm9ybUJhc2UgPSBtZ0Zvcm0uZ2V0VG9wTW9zdEZyYW1lRm9ybSgpO1xyXG4gICAgICAgICAgaWYgKHRvcE1vc3RGcmFtZUZvcm0gIT09IG51bGwpXHJcbiAgICAgICAgICAgIHRvcE1vc3RGcmFtZUZvcm0uVXBkYXRlTW9kYWxGb3Jtc0NvdW50KG1nRm9ybSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgICAvLyBpZiAoIW1nRm9ybS5pc1N1YkZvcm0oKSkge1xyXG4gICAgICAvLyAgIGxldCBmb3JtTmFtZTogc3RyaW5nID0gbWdGb3JtLlVuaXF1ZU5hbWU7XHJcbiAgICAgIC8vICAgVUlCcmlkZ2UuZ2V0SW5zdGFuY2UoKS5PcGVuRm9ybShmb3JtTmFtZSk7XHJcblxyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIGxldCBpbnB1dENvbnRyb2xzID0gbWdGb3JtLkdldExpc3RPZklucHV0Q29udHJvbHMoKTtcclxuICAgICAgLy8gLy9cclxuICAgICAgLy8gLy8gICBKU0JyaWRnZS5JbnN0YW5jZS5PcGVuU3ViRm9ybSh0aGlzLmdldFN1YkZvcm1DdHJsKCkuZ2V0TmFtZSgpLCBQYXJlbnRGb3JtLmdldFRhc2soKS5nZXRUYXNrVGFnKCksIGdldFByb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRk9STV9OQU1FKS5nZXRWYWx1ZSgpLCBfdGFzay5nZXRUYXNrVGFnKCksIGlucHV0Q29udHJvbHMpO1xyXG4gICAgICAvLyAvLyB9XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIG1nRm9ybS5PcGVuZWQgPSB0cnVlO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gUGVyZm9ybXMgZmlyc3QgcmVmcmVzaCBmb3IgdGhlIHRhYmxlIGNvbnRyb2wgPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBhc3luYyBEb0ZpcnN0UmVmcmVzaFRhYmxlKG1nRm9ybTogTWdGb3JtQmFzZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKG1nRm9ybSAhPT0gbnVsbCAmJiAhbWdGb3JtLmlnbm9yZUZpcnN0UmVmcmVzaFRhYmxlKSB7XHJcbiAgICAgIG1nRm9ybS5pZ25vcmVGaXJzdFJlZnJlc2hUYWJsZSA9IHRydWU7XHJcbiAgICAgIGF3YWl0IG1nRm9ybS5maXJzdFRhYmxlUmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FyZXQsIHdpdGhpbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHRleHRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPnRoZSBjb250cm9sIHdoaWNoIGlzIGFzc3VtZWQgdG8gY29udGFpbiB0aGUgc2VsZWN0ZWQgdGV4dCA8L3BhcmFtPlxyXG4gIHN0YXRpYyBDYXJldFBvc0dldChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogbnVtYmVyIHtcclxuICAgIGxldCBjYXJldFBvczogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAoY3RybC5pc1RleHRDb250cm9sKCkpXHJcbiAgICAgIGNhcmV0UG9zID0gQ29tbWFuZHMuY2FyZXRQb3NHZXQoY3RybCwgY3RybC5nZXREaXNwbGF5TGluZSh0cnVlKSk7XHJcblxyXG4gICAgcmV0dXJuIGNhcmV0UG9zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDbGVhciB0aGUgc3RhdHVzIGJhciBkZXBlbmRpbmcgb24gdGhlIGNvbnRyb2wgc3BlY2lmaWMgc3RhdHVzIG1lc3NhZ2Ugb3IgZm9ybSBzcGVjaWZpYyBzdGF0dXMgbWVzc2FnZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1wiPnRhc2s8L3BhcmFtPlxyXG4gIHN0YXRpYyBDbGVhclN0YXR1c0Jhcih0YXNrOiBHdWlUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgbGV0IGN1cnJlbnRQYXJrZWRDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gdGFzay5nZXRMYXN0UGFya2VkQ3RybCgpO1xyXG5cclxuICAgIGlmIChjdXJyZW50UGFya2VkQ29udHJvbCAhPT0gbnVsbCAmJiAhTlN0cmluZy5Jc051bGxPckVtcHR5KGN1cnJlbnRQYXJrZWRDb250cm9sLlByb21wdEhlbHApKVxyXG4gICAgICB0YXNrLldyaXRlVG9NZXNzYWdlUGFuZShjdXJyZW50UGFya2VkQ29udHJvbC5Qcm9tcHRIZWxwKTtcclxuICAgIGVsc2VcclxuICAgICAgTWFuYWdlci5DbGVhbk1lc3NhZ2VQYW5lKHRhc2spO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNsZWFuIHRoZSBzdGF0dXMgYmFyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBDbGVhbk1lc3NhZ2VQYW5lKHRhc2s6IEd1aVRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0YXNrLldyaXRlVG9NZXNzYWdlUGFuZShNYW5hZ2VyLkdldEN1cnJlbnRSdW50aW1lQ29udGV4dCgpLkRlZmF1bHRTdGF0dXNNc2cpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBNZXNzYWdlIHN0cmluZyB0byBiZSBkaXNwbGF5ZWQgb24gc3RhdHVzIGJhciBvciBpbiBNZXNzYWdlIGJveFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dcIj4gaW5wdXQgbWVzc2FnZSBzdHJpbmcgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG91dHB1dCBtZXNzYWdlIHN0cmluZyA8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldE1lc3NhZ2UobXNnOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKG1zZyA9PT0gbnVsbClcclxuICAgICAgbXNnID0gXCJcIjtcclxuICAgIGVsc2UgaWYgKG1zZy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBpZHhPZkNhcnJpYWdlOiBudW1iZXIgPSBtc2cuaW5kZXhPZihcIlxcclwiKTtcclxuICAgICAgaWYgKGlkeE9mQ2FycmlhZ2UgIT09IC0xKVxyXG4gICAgICAgIG1zZyA9IG1zZy5zdWJzdHIoMCwgaWR4T2ZDYXJyaWFnZSk7XHJcblxyXG4gICAgICBsZXQgaWR4T2ZOZXdMaW5lOiBudW1iZXIgPSBtc2cuaW5kZXhPZihcIlxcblwiKTtcclxuICAgICAgaWYgKGlkeE9mTmV3TGluZSAhPT0gLTEpXHJcbiAgICAgICAgbXNnID0gbXNnLnN1YnN0cigwLCBpZHhPZk5ld0xpbmUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtc2c7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgVXNlZCB0byBwdXQgdGhlIHRleHQgb24gYSB0ZXh0IGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPiA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFwiPiA8L3BhcmFtPlxyXG4gIHN0YXRpYyBTZXRFZGl0VGV4dChjdHJsOiBNZ0NvbnRyb2xCYXNlLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIENvbW1hbmRzLnNldEVkaXRUZXh0KGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSksIHRleHQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBJbnNlcnQgdGV4dCB0byBhIHRleHQgY29udHJvbCBhdCBhIGdpdmVuIHBvc2l0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdGFydFBvc2l0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0VG9JbnNlcnRcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBJbnNlcnRFZGl0VGV4dChjdHJsOiBNZ0NvbnRyb2xCYXNlLCBzdGFydFBvc2l0aW9uOiBudW1iZXIsIHRleHRUb0luc2VydDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBDb21tYW5kcy5pbnNlcnRFZGl0VGV4dChjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKHRydWUpLCBzdGFydFBvc2l0aW9uLCB0ZXh0VG9JbnNlcnQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiBUb29sdGlwVGltZW91dFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiByZXR1cm5zIFRvb2x0aXBUaW1lb3V0PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRUb29sdGlwVGltZW91dCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFRvb2x0aXBUaW1lb3V0KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybiBTcGVjaWFsRWRpdExlZnRBbGlnblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0U3BlY2lhbEVkaXRMZWZ0QWxpZ24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0U3BlY2lhbEVkaXRMZWZ0QWxpZ24oKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm5zIGRlZmF1bHQgZGF0ZSBmb3JtYXQgZGVwZW5kaW5nIG9uIGRhdGUgbW9kZSBhbmQgZGF0ZSBzZXBhcmF0b3IuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IFN0cmluZyBkZWZhdWx0IGRhdGUgZm9ybWF0PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXREZWZhdWx0RGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGRhdGVGb3JtYXQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBsZXQgZGF0ZVNlcGVyYXRvcjogc3RyaW5nID0gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0RGF0ZSgpO1xyXG5cclxuICAgIC8vIEFycmFuZ2UgZGF0ZSBmb3JtYXQgYWNjb3JkaW5nIHRvIHRoZSBkYXRlIG1vZGUuXHJcbiAgICBzd2l0Y2ggKEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldERhdGVNb2RlKDApKSB7XHJcbiAgICAgIGNhc2UgJ1MnOiAvLyBTY2FuZGluYXZpYW5cclxuICAgICAgICBkYXRlRm9ybWF0ID0gXCJZWVlZXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJNTVwiICsgZGF0ZVNlcGVyYXRvciArIFwiRERcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ0InOiAvLyBCdWRkaGlzdFxyXG5cclxuICAgICAgY2FzZSAnRSc6IC8vIEV1cm9wZWFuXHJcbiAgICAgICAgZGF0ZUZvcm1hdCA9IFwiRERcIiArIGRhdGVTZXBlcmF0b3IgKyBcIk1NXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJZWVlZXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdBJzogLy8gQW1lcmljYW5cclxuICAgICAgICBkYXRlRm9ybWF0ID0gXCJNTVwiICsgZGF0ZVNlcGVyYXRvciArIFwiRERcIiArIGRhdGVTZXBlcmF0b3IgKyBcIllZWVlcIjtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlRm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFJldHVybiBkZWZhdWx0IHRpbWUgZm9ybWF0IHVzaW5nIHRpbWUgc2VwYXJhdG9yLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0RGVmYXVsdFRpbWVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIGxldCB0aW1lU2VwZXJhdG9yOiBzdHJpbmcgPSBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRUaW1lKCk7XHJcbiAgICBsZXQgdGltZUZvcm1hdDogc3RyaW5nID0gXCJISFwiICsgdGltZVNlcGVyYXRvciArIFwiTU1cIiArIHRpbWVTZXBlcmF0b3IgKyBcIlNTXCI7XHJcbiAgICByZXR1cm4gdGltZUZvcm1hdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyB0aGUgcnVudGltZSBjb250ZXh0IGJlbG9uZ3MgdG8gdGhlIGN1cnJlbnQgdGhyZWFkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPlJ1bnRpbWVDb250ZXh0QmFzZTwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q3VycmVudFJ1bnRpbWVDb250ZXh0KCk6IFJ1bnRpbWVDb250ZXh0QmFzZSB7XHJcbiAgICByZXR1cm4gRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0KE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyB0aGUgY29udGV4dElEIHVzaW5nIHRoZSBHdWlNZ0Zvcm0uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ09iamVjdFwiPk1hZ2ljIE9iamVjdCAtIEd1aU1nRm9ybS9HdWlNZ0NvbnRyb2wvTG9naWNhbCBjb250cm9sPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+Y29udGV4dElEPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDb250ZXh0SUQobWdPYmplY3Q6IGFueSk6IG51bWJlciB7XHJcbiAgICBsZXQgZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0gPSBudWxsO1xyXG5cclxuICAgIGlmIChtZ09iamVjdCBpbnN0YW5jZW9mIEd1aU1nQ29udHJvbClcclxuICAgICAgZ3VpTWdGb3JtID0gKDxHdWlNZ0NvbnRyb2w+bWdPYmplY3QpLkd1aU1nRm9ybTtcclxuICAgIGVsc2UgaWYgKG1nT2JqZWN0IGluc3RhbmNlb2YgR3VpTWdGb3JtKVxyXG4gICAgICBndWlNZ0Zvcm0gPSA8R3VpTWdGb3JtPm1nT2JqZWN0O1xyXG5cclxuICAgIHJldHVybiBFdmVudHMuR2V0Q29udGV4dElEKGd1aU1nRm9ybSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3dzIHdpbmRvd3MgaGVscC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZpbGVQYXRoXCI+cGF0aCBvZiB0aGUgaGVscCBmaWxlLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGVscENtZFwiPmhlbHAgY29tbWFuZC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhlbHBLZXlcIj5zZWFyY2gga2V5IHdvcmQuPC9wYXJhbT5cclxuICBzdGF0aWMgU2hvd1dpbmRvd0hlbHAoZmlsZVBhdGg6IHN0cmluZywgaGVscENtZDogSGVscENvbW1hbmQsIGhlbHBLZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm4gU3BlY2lhbFZhbE5ld1BvbGljeVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwdWJsaWMgc3RhdGljIEdldFNwZWNpYWxWYWxOZXdQb2xpY3koKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0U3BlY2lhbFZhbE5ld1BvbGljeSgpO1xyXG4gIH1cclxufVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gaGVscGVyIGNsYXNzIGZvciBzZXR0aW5nL3Jlc2V0dGluZyB0aGUgY3VycmVudCBjb250ZXh0IElELlxyXG4vLy8gV2UgcmVxdWlyZSB0aGlzIGNsYXNzIHNwZWNpZmljYWxseSBmb3IgTW9kYWwgd2luZG93cy4gV2hlbiB3ZSBvcGVuIGEgbW9kYWwgd2luZG93IHRoZW5cclxuLy8vIGl0IHdhaXRzIGluIEd1aVRocmVhZC4gTWVhbiB3aGlsZSBHdWlUaHJlYWQgY2FuIHJlY2VpdmUgdGhlIGV2ZW50cyBvZiBvdGhlciBjb250ZXh0IGFuZFxyXG4vLy8gYWZ0ZXIgcHJvY2Vzc2luZyB0aGVzZSBldmVudHMsIHdlIHNob3VsZCByZXNldCB0aGUgY29udGV4dElEIG9mIHRoZSBNb2RhbCB3aW5kb3dzIGJlY2F1c2VcclxuLy8vIGl0IHdpbGwgYmUgdXNlZCBmb3IgbG9nZ2luZyB0aGUgZXZlbnRzIHdoZW4gd2UgY2xvc2UgdGhlIG1vZGFsIHdpbmRvdy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIENvbnRleHRJREd1YXJkIHtcclxuICBwcml2YXRlIF9wcmV2Q29udGV4dElEOiBzdHJpbmcgPSAnXFwwJztcclxuXHJcbiAgLy8gRm9yIGRlYnVnZ2luZyBwdXJwb3NlIG9ubHkuXHJcbiAgLy8gSXQgd2lsbCBob2xkIHRoZSBmaWxlIG5hbWUgZnJvbSB3aGljaCB0aGUgb2JqZWN0IG9mIENvbnRleHRJREd1YXJkIGlzIGNyZWF0ZWQuXHJcbiAgcHJpdmF0ZSBfZmlsZU5hbWU6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCk7XHJcbiAgY29uc3RydWN0b3IoY29udGV4dElEOiBzdHJpbmcpO1xyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHRJRD86IHN0cmluZykge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY29uc3RydWN0b3JfMShjb250ZXh0SUQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJldkNvbnRleHRJRCA9IE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpO1xyXG4gICAgdGhpcy5TYXZlRmlsZW5hbWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMShjb250ZXh0SUQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5TZXRDdXJyZW50KGNvbnRleHRJRCk7XHJcbiAgICB0aGlzLlNhdmVGaWxlbmFtZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzZXRzIHRoZSBjb250ZXh0IElEIHRvICdndWFyZCcuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZXh0SURcIj5uZXcgY29udGV4dCBJRCB0byAnZ3VhcmQnLjwvcGFyYW0+XHJcbiAgU2V0Q3VycmVudChjb250ZXh0SUQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGNvbnRleHRJRCAhPT0gdGhpcy5fcHJldkNvbnRleHRJRCkge1xyXG4gICAgICB0aGlzLl9wcmV2Q29udGV4dElEID0gY29udGV4dElEO1xyXG4gICAgICBNYW5hZ2VyLlNldEN1cnJlbnRDb250ZXh0SUQoY29udGV4dElEKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0IHRoZSBmaWxlIG5hbWUgZnJvbSB3aGljaCB0aGUgQ29udGV4dElER3VhcmQgaXMgYmVpbmcgY3JlYXRlZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgU2F2ZUZpbGVuYW1lKCk6IHZvaWQge1xyXG4gICAgbGV0IHN0YWNrRnJhbWU6IFN0YWNrRnJhbWUgPSBuZXcgU3RhY2tGcmFtZSgxKTtcclxuICAgIHRoaXMuX2ZpbGVOYW1lID0gc3RhY2tGcmFtZS5HZXRGaWxlTmFtZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERpc3Bvc2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcHJldkNvbnRleHRJRCAhPT0gTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpXHJcbiAgICAgIE1hbmFnZXIuU2V0Q3VycmVudENvbnRleHRJRCh0aGlzLl9wcmV2Q29udGV4dElEKTtcclxuICB9XHJcbn1cclxuIl19