speechrecorderng 2.24.2 → 2.25.2

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 (64) hide show
  1. package/esm2020/lib/audio/audio_display.mjs +4 -4
  2. package/esm2020/lib/audio/audio_player.mjs +4 -4
  3. package/esm2020/lib/audio/capture/capture.mjs +1 -1
  4. package/esm2020/lib/audio/io/stream.mjs +41 -1
  5. package/esm2020/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
  6. package/esm2020/lib/audio/ui/audio_display_control.mjs +4 -4
  7. package/esm2020/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
  8. package/esm2020/lib/audio/ui/audiosignal.mjs +4 -4
  9. package/esm2020/lib/audio/ui/container.mjs +4 -4
  10. package/esm2020/lib/audio/ui/livelevel.mjs +4 -4
  11. package/esm2020/lib/audio/ui/scroll_pane_horizontal.mjs +4 -4
  12. package/esm2020/lib/audio/ui/sonagram.mjs +4 -4
  13. package/esm2020/lib/io/stream.mjs +10 -1
  14. package/esm2020/lib/recorder_component.mjs +1 -1
  15. package/esm2020/lib/speechrecorder/project/project.mjs +1 -1
  16. package/esm2020/lib/speechrecorder/project/project.service.mjs +4 -4
  17. package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
  18. package/esm2020/lib/speechrecorder/script/script.service.mjs +4 -4
  19. package/esm2020/lib/speechrecorder/session/audiorecorder.mjs +122 -110
  20. package/esm2020/lib/speechrecorder/session/basicrecorder.mjs +179 -14
  21. package/esm2020/lib/speechrecorder/session/controlpanel.mjs +46 -22
  22. package/esm2020/lib/speechrecorder/session/progress.mjs +4 -4
  23. package/esm2020/lib/speechrecorder/session/prompting.mjs +16 -16
  24. package/esm2020/lib/speechrecorder/session/recorder_combi_pane.mjs +4 -4
  25. package/esm2020/lib/speechrecorder/session/recording_list.mjs +4 -4
  26. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
  27. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +4 -4
  28. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
  29. package/esm2020/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +4 -4
  30. package/esm2020/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
  31. package/esm2020/lib/speechrecorder/session/session.service.mjs +4 -4
  32. package/esm2020/lib/speechrecorder/session/session_finished_dialog.mjs +4 -4
  33. package/esm2020/lib/speechrecorder/session/sessionmanager.mjs +94 -61
  34. package/esm2020/lib/speechrecorder/session/warning_bar.mjs +4 -4
  35. package/esm2020/lib/speechrecorder/spruploader.mjs +4 -4
  36. package/esm2020/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
  37. package/esm2020/lib/speechrecorderng.component.mjs +18 -5
  38. package/esm2020/lib/speechrecorderng.module.mjs +8 -8
  39. package/esm2020/lib/spr.config.mjs +4 -4
  40. package/esm2020/lib/spr.module.version.mjs +2 -2
  41. package/esm2020/lib/ui/canvas_layer_comp.mjs +4 -4
  42. package/esm2020/lib/ui/message_dialog.mjs +4 -4
  43. package/esm2020/lib/ui/recordingitem_display.mjs +7 -7
  44. package/esm2020/lib/utils/scrollIntoViewToBottom.mjs +4 -4
  45. package/esm2020/lib/utils/wake_lock.mjs +114 -0
  46. package/esm2020/lib/utils/wake_lock_media.mjs +2 -0
  47. package/fesm2015/speechrecorderng.mjs +811 -404
  48. package/fesm2015/speechrecorderng.mjs.map +1 -1
  49. package/fesm2020/speechrecorderng.mjs +805 -404
  50. package/fesm2020/speechrecorderng.mjs.map +1 -1
  51. package/lib/audio/io/stream.d.ts +13 -0
  52. package/lib/io/stream.d.ts +3 -0
  53. package/lib/recorder_component.d.ts +1 -0
  54. package/lib/speechrecorder/project/project.d.ts +1 -0
  55. package/lib/speechrecorder/session/audiorecorder.d.ts +11 -11
  56. package/lib/speechrecorder/session/basicrecorder.d.ts +44 -4
  57. package/lib/speechrecorder/session/controlpanel.d.ts +7 -0
  58. package/lib/speechrecorder/session/sessionmanager.d.ts +13 -10
  59. package/lib/speechrecorderng.component.d.ts +1 -0
  60. package/lib/speechrecorderng.module.d.ts +1 -1
  61. package/lib/spr.module.version.d.ts +1 -1
  62. package/lib/utils/wake_lock.d.ts +23 -0
  63. package/lib/utils/wake_lock_media.d.ts +1 -0
  64. package/package.json +1 -1
@@ -632,14 +632,14 @@ export class Sonagram extends AudioCanvasLayerComponent {
632
632
  //this.startRender();
633
633
  }
634
634
  }
635
- Sonagram.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: Sonagram, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
636
- Sonagram.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: Sonagram, selector: "audio-sonagram", viewQueries: [{ propertyName: "sonagramCanvasRef", first: true, predicate: ["sonagram"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
635
+ Sonagram.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Sonagram, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
636
+ Sonagram.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: Sonagram, selector: "audio-sonagram", viewQueries: [{ propertyName: "sonagramCanvasRef", first: true, predicate: ["sonagram"], descendants: true, static: true }, { propertyName: "markerCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
637
637
  <canvas #sonagram height="10"></canvas>
638
638
  <canvas #bg height="10"></canvas>
639
639
  <canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
640
640
  (mouseleave)="updateCursorCanvas($event, false)"></canvas>
641
641
  <canvas #marker height="10"></canvas>`, isInline: true, styles: [":host{min-height:0px}\n", "canvas{top:0;left:0;width:0;height:0;min-height:0px;position:absolute}\n"] });
642
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: Sonagram, decorators: [{
642
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Sonagram, decorators: [{
643
643
  type: Component,
644
644
  args: [{
645
645
  selector: 'audio-sonagram',
@@ -667,4 +667,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
667
667
  type: ViewChild,
668
668
  args: ['marker', { static: true }]
669
669
  }] } });
670
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYWdyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vdWkvc29uYWdyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFDOUMsT0FBTyxFQUFTLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsU0FBUyxFQUFjLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7O0FBSS9DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBd0I5QixNQUFNLE9BQU8sUUFBUyxTQUFRLHlCQUF5QjtJQWtCbkQsWUFBb0IsR0FBZTtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQURRLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFOM0IsdUJBQWtCLEdBQWMsSUFBSSxDQUFDO1FBSXJDLFlBQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUkvQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNB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QUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7REZURmxvYXQzMn0gZnJvbSAnLi4vLi4vbWF0aC9kZnQnO1xyXG5pbXBvcnQge0RTUFV0aWxzfSBmcm9tICcuLi8uLi9kc3AvdXRpbHMnXHJcbmltcG9ydCB7Q1NTVXRpbHN9IGZyb20gJy4uLy4uL3V0aWxzL2Nzc191dGlscydcclxuaW1wb3J0IHtNYXJrZXIsIFBvaW50fSBmcm9tICcuL2NvbW1vbic7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXVkaW9DYW52YXNMYXllckNvbXBvbmVudH0gZnJvbSBcIi4vYXVkaW9fY2FudmFzX2xheWVyX2NvbXBcIjtcclxuaW1wb3J0IHtXb3JrZXJIZWxwZXJ9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5cclxuZGVjbGFyZSBmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdlOiBhbnksIHRyYW5zZmVyOiBBcnJheTxhbnk+KTogdm9pZDtcclxuXHJcbmNvbnN0IERFRkFVTFRfREZUX1NJWkUgPSAxMDI0O1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gICAgc2VsZWN0b3I6ICdhdWRpby1zb25hZ3JhbScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjYW52YXMgI3NvbmFncmFtIGhlaWdodD1cIjEwXCI+PC9jYW52YXM+XHJcbiAgICAgICAgPGNhbnZhcyAjYmcgaGVpZ2h0PVwiMTBcIj48L2NhbnZhcz5cclxuICAgICAgICA8Y2FudmFzICNjdXJzb3IgaGVpZ2h0PVwiMTBcIiAobW91c2Vkb3duKT1cInNlbGVjdGlvblN0YXJ0KCRldmVudClcIiAobW91c2VvdmVyKT1cInVwZGF0ZUN1cnNvckNhbnZhcygkZXZlbnQpXCIgKG1vdXNlbW92ZSk9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50LCBmYWxzZSlcIj48L2NhbnZhcz5cclxuICAgICAgICA8Y2FudmFzICNtYXJrZXIgaGVpZ2h0PVwiMTBcIj48L2NhbnZhcz5gLFxyXG5cclxuICAgIHN0eWxlczogW2A6aG9zdHtcclxuICAgICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgfWAsYGNhbnZhcyB7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgd2lkdGg6IDA7XHJcbiAgICAgICAgaGVpZ2h0OiAwO1xyXG4gICAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgU29uYWdyYW0gZXh0ZW5kcyBBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50IHtcclxuXHJcbiAgICBkZnQ6IERGVEZsb2F0MzI7XHJcbiAgICBuOiBhbnk7XHJcbiAgICBjZSE6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgc29uYWdyYW1DYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICAgIC8vY3Vyc29yQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICAgIG1hcmtlckNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnc29uYWdyYW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBzb25hZ3JhbUNhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbWFya2VyJywgeyBzdGF0aWM6IHRydWUgfSkgbWFya2VyQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICAgIG1hcmtlcnM6IEFycmF5PE1hcmtlcj47XHJcbiAgICBwcml2YXRlIF9wbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyfG51bGw9bnVsbDtcclxuXHJcbiAgICBwcml2YXRlIHdvcmtlcjogV29ya2VyIHwgbnVsbDtcclxuICAgIHByaXZhdGUgd29ya2VyVVJMOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGRmdFNpemUgPSBERUZBVUxUX0RGVF9TSVpFO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndvcmtlciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9EYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1hcmtlcnMgPSBuZXcgQXJyYXk8TWFya2VyPigpO1xyXG4gICAgICAgIHRoaXMuZGZ0ID0gbmV3IERGVEZsb2F0MzIodGhpcy5kZnRTaXplKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZXJVUkwgPSBXb3JrZXJIZWxwZXIuYnVpbGRXb3JrZXJCbG9iVVJMKHRoaXMud29ya2VyRnVuY3Rpb24pXHJcbiAgICAgICB0aGlzLl9iZ0NvbG9yPW51bGw7XHJcbiAgICAgICB0aGlzLl9zZWxlY3RDb2xvcj0ncmdiYSgyNTUsMjU1LDAsMC4xKSdcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMuc29uYWdyYW1DYW52YXMgPSB0aGlzLnNvbmFncmFtQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5zb25hZ3JhbUNhbnZhcy5zdHlsZS56SW5kZXggPSAnMSc7XHJcbiAgICAgIHRoaXMuYmdDYW52YXMgPSB0aGlzLmJnQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIHRoaXMuYmdDYW52YXMuc3R5bGUuekluZGV4ID0gJzInO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yQ2FudmFzID0gdGhpcy5jdXJzb3JDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgICAgICB0aGlzLmN1cnNvckNhbnZhcy5zdHlsZS56SW5kZXggPSAnNCc7XHJcbiAgICAgICAgdGhpcy5tYXJrZXJDYW52YXMgPSB0aGlzLm1hcmtlckNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMubWFya2VyQ2FudmFzLnN0eWxlLnpJbmRleCA9ICczJztcclxuXHJcbiAgICAgICAgdGhpcy5jYW52YXNMYXllcnNbMF0gPSB0aGlzLnNvbmFncmFtQ2FudmFzO1xyXG4gICAgICB0aGlzLmNhbnZhc0xheWVyc1sxXSA9IHRoaXMuYmdDYW52YXM7XHJcbiAgICAgIHRoaXMuY2FudmFzTGF5ZXJzWzJdID0gdGhpcy5jdXJzb3JDYW52YXM7XHJcbiAgICAgICAgdGhpcy5jYW52YXNMYXllcnNbM10gPSB0aGlzLm1hcmtlckNhbnZhcztcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBsYXlGcmFtZVBvc2l0aW9uKCk6IG51bWJlcnxudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHBsYXlGcmFtZVBvc2l0aW9uKHBsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbCkge1xyXG4gICAgICAgIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICAgICAgLy8gdGhpcy5yZWRyYXcoKTtcclxuICAgICAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbnZhc01vdXNlUG9zKGM6IEhUTUxDYW52YXNFbGVtZW50LCBlOiBNb3VzZUV2ZW50KTogUG9pbnQge1xyXG4gICAgICAgIGNvbnN0IGNyID0gYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgY29uc3QgeCA9IGUueCAtIGNyLmxlZnQ7XHJcbiAgICAgICAgY29uc3QgeSA9IGUueSAtIGNyLnRvcDtcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgseSk7XHJcbiAgICB9XHJcblxyXG4gICAgZHJhd0N1cnNvclBvc2l0aW9uKGU6IE1vdXNlRXZlbnQsIHNob3c6IGJvb2xlYW4pIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY3Vyc29yQ2FudmFzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHcgPSB0aGlzLmN1cnNvckNhbnZhcy53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaCA9IHRoaXMuY3Vyc29yQ2FudmFzLmhlaWdodDtcclxuICAgICAgICAgICAgY29uc3QgZyA9IHRoaXMuY3Vyc29yQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICBpZiAoZykge1xyXG4gICAgICAgICAgICBnLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwcCA9IHRoaXMuY2FudmFzTW91c2VQb3ModGhpcy5jdXJzb3JDYW52YXMsIGUpO1xyXG4gICAgICAgICAgICAgIGxldCB4Vmlld1BvcnRQaXhlbHBvcyA9IGUub2Zmc2V0WDtcclxuXHJcbiAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAneWVsbG93JztcclxuICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ3llbGxvdyc7XHJcbiAgICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgICBnLm1vdmVUbyh4Vmlld1BvcnRQaXhlbHBvcywgMCk7XHJcbiAgICAgICAgICAgICAgZy5saW5lVG8oeFZpZXdQb3J0UGl4ZWxwb3MsIGgpO1xyXG4gICAgICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcblxyXG4gICAgICAgICAgICAgIGcuc3Ryb2tlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0RhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZnJhbWVQb3NSb3VuZCA9IHRoaXMudmlld1BvcnRYUGl4ZWxUb0ZyYW1lUG9zaXRpb24oeFZpZXdQb3J0UGl4ZWxwb3MpO1xyXG4gICAgICAgICAgICAgICAgaWYoZnJhbWVQb3NSb3VuZCE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGcuZm9udCA9ICcxNHB4IHNhbnMtc2VyaWYnO1xyXG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ3llbGxvdyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsVGV4dChmcmFtZVBvc1JvdW5kLnRvU3RyaW5nKCksIHhWaWV3UG9ydFBpeGVscG9zICsgMiwgNTApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkcmF3UGxheVBvc2l0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1hcmtlckNhbnZhcykge1xyXG4gICAgICAgICAgICB2YXIgdyA9IHRoaXMubWFya2VyQ2FudmFzLndpZHRoO1xyXG4gICAgICAgICAgICB2YXIgaCA9IHRoaXMubWFya2VyQ2FudmFzLmhlaWdodDtcclxuICAgICAgICAgICAgdmFyIGcgPSB0aGlzLm1hcmtlckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgIGlmIChnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbiE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwaXhlbFBvcyA9IHRoaXMuZnJhbWVUb1ZpZXdQb3J0WFBpeGVsUG9zaXRpb24odGhpcy5fcGxheUZyYW1lUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwaXhlbFBvcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ3JlZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGcubW92ZVRvKHBpeGVsUG9zLCAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZy5saW5lVG8ocGl4ZWxQb3MsIGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBsYXlvdXQoKSB7XHJcbiAgICAvL1xyXG4gICAgLy9cclxuICAgIC8vICAgdmFyIG9mZlcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLm9mZnNldFdpZHRoO1xyXG4gICAgLy8gICB2YXIgb2ZmSCA9IHRoaXMuc29uYWdyYW1DYW52YXMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLmxheW91dEJvdW5kcygwLCAwLCBvZmZXLCBvZmZILCB0cnVlKTtcclxuICAgIC8vIH1cclxuXHJcblxyXG4gICAgLy8gbGF5b3V0Qm91bmRzKGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIsIG9mZlc6IG51bWJlciwgb2ZmSDogbnVtYmVyLCB2aXJ0dWFsV2lkdGg6bnVtYmVyLHJlZHJhdzogYm9vbGVhbikge1xyXG4gICAgLy9cclxuICAgIC8vICAgY29uc3QgbGVmdFN0ciA9IGxlZnQudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAvLyAgIHRoaXMuc29uYWdyYW1DYW52YXMuc3R5bGUubGVmdCA9IGxlZnRTdHI7XHJcbiAgICAvLyAgIGNvbnN0IHRvcFN0ciA9IHRvcC50b1N0cmluZygpICsgJ3B4JztcclxuICAgIC8vICAgdGhpcy5zb25hZ3JhbUNhbnZhcy5zdHlsZS50b3AgPSB0b3BTdHI7XHJcbiAgICAvLyAgIHRoaXMuY3Vyc29yQ2FudmFzLnN0eWxlLnRvcCA9IHRvcFN0cjtcclxuICAgIC8vICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUudG9wID0gdG9wU3RyO1xyXG4gICAgLy9cclxuICAgIC8vICAgaWYgKG9mZlcpIHtcclxuICAgIC8vICAgICBjb25zdCB3U3RyID0gb2ZmVy50b1N0cmluZygpICsgJ3B4JztcclxuICAgIC8vICAgICBpZiAocmVkcmF3KSB7XHJcbiAgICAvL1xyXG4gICAgLy8gICAgICAgdGhpcy5jdXJzb3JDYW52YXMud2lkdGggPSBvZmZXO1xyXG4gICAgLy8gICAgICAgdGhpcy5tYXJrZXJDYW52YXMud2lkdGggPSBvZmZXO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICB0aGlzLnNvbmFncmFtQ2FudmFzLnN0eWxlLndpZHRoID0gd1N0cjtcclxuICAgIC8vICAgICB0aGlzLmN1cnNvckNhbnZhcy5zdHlsZS53aWR0aCA9IHdTdHI7XHJcbiAgICAvLyAgICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUud2lkdGggPSB3U3RyO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmIChvZmZIKSB7XHJcbiAgICAvLyAgICAgY29uc3QgaFN0ciA9IG9mZkgudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAvLyAgICAgaWYgKHJlZHJhdykge1xyXG4gICAgLy8gICAgICAgdGhpcy5jdXJzb3JDYW52YXMuaGVpZ2h0ID0gb2ZmSDtcclxuICAgIC8vICAgICAgIHRoaXMubWFya2VyQ2FudmFzLmhlaWdodCA9IG9mZkg7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMuc29uYWdyYW1DYW52YXMuc3R5bGUuaGVpZ2h0ID0gaFN0cjtcclxuICAgIC8vICAgICB0aGlzLmN1cnNvckNhbnZhcy5zdHlsZS5oZWlnaHQgPSBoU3RyO1xyXG4gICAgLy8gICAgIHRoaXMubWFya2VyQ2FudmFzLnN0eWxlLmhlaWdodCA9IGhTdHI7XHJcbiAgICAvL1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmIChyZWRyYXcpIHtcclxuICAgIC8vICAgICAvL3RoaXMucmVkcmF3KCk7XHJcbiAgICAvLyAgICAgaWYgKG9mZlcgPiAwKSB7XHJcbiAgICAvLyAgICAgICBpZiAob2ZmSCA+IDApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5zdGFydERyYXcobGVmdCx0b3Asb2ZmVywgb2ZmSCx2aXJ0dWFsV2lkdGgpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIE1ldGhvZCB1c2VkIGFzIHdvcmtlciBjb2RlLlxyXG4gICAgICovXHJcbiAgICB3b3JrZXJGdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgLy8gUmVkZWZpbmUgc29tZSBEU1AgY2xhc3NlcyBmb3Igd29ya2VyIGZ1bmN0aW9uXHJcbiAgICAgICAgLy8gU2VlIGUuZy4gYXVkaW8ubWF0aC5Db21wbGV4XHJcbiAgICAgICAgY2xhc3MgQ29tcGxleCB7XHJcblxyXG4gICAgICAgICAgICByZWFsOiBudW1iZXI7XHJcbiAgICAgICAgICAgIGltZzogbnVtYmVyO1xyXG5cclxuICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmcm9tUG9sYXJGb3JtKG1hZ25pdHVkZTogbnVtYmVyLCBhcmd1bWVudDogbnVtYmVyKTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByID0gTWF0aC5jb3MoYXJndW1lbnQpICogbWFnbml0dWRlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IE1hdGguc2luKGFyZ3VtZW50KSAqIG1hZ25pdHVkZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleChyLCBpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3RydWN0b3IocmVhbDogbnVtYmVyLCBpbWc6IG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsID0gcmVhbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW1nID0gaW1nO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgbWFnbml0dWRlKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KCh0aGlzLnJlYWwgKiB0aGlzLnJlYWwpICsgKHRoaXMuaW1nICogdGhpcy5pbWcpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGFyZ3VtZW50KCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hdGFuMih0aGlzLmltZywgdGhpcy5yZWFsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGFkZChhZGRDOiBDb21wbGV4KTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgodGhpcy5yZWFsICsgYWRkQy5yZWFsLCB0aGlzLmltZyArIGFkZEMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIHN1YihzdWJDOiBDb21wbGV4KTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgodGhpcy5yZWFsIC0gc3ViQy5yZWFsLCB0aGlzLmltZyAtIHN1YkMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIG11bHQobXVsdEM6IENvbXBsZXgpOiBDb21wbGV4IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG11bHRSID0gKHRoaXMucmVhbCAqIG11bHRDLnJlYWwpIC0gKHRoaXMuaW1nICogbXVsdEMuaW1nKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG11bHRJID0gKHRoaXMucmVhbCAqIG11bHRDLmltZykgKyAobXVsdEMucmVhbCAqIHRoaXMuaW1nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleChtdWx0UiwgbXVsdEkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgbXVsdFJlYWwobXVsdEY6IG51bWJlcik6IENvbXBsZXgge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wbGV4KHRoaXMucmVhbCAqIG11bHRGLCB0aGlzLmltZyAqIG11bHRGKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGRpdihkaXZpc29yOiBDb21wbGV4KTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZSZWFsID0gZGl2aXNvci5yZWFsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGl2SW1nID0gZGl2aXNvci5pbWc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSAoZGl2UmVhbCAqIGRpdlJlYWwpICsgKGRpdkltZyAqIGRpdkltZyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZpc2lvblJlYWwgPSAoKHRoaXMucmVhbCAqIGRpdlJlYWwpICsgKHRoaXMuaW1nICogZGl2SW1nKSkgLyBkaXY7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZpc2lvbkltZyA9ICgoZGl2UmVhbCAqIHRoaXMuaW1nKSAtICh0aGlzLnJlYWwgKiBkaXZJbWcpKSAvIGRpdjtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgoZGl2aXNpb25SZWFsLCBkaXZpc2lvbkltZyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBkaXZSZWFsKGRpdmlzb3I6IG51bWJlcik6IENvbXBsZXgge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZGl2aXNvciAqIGRpdmlzb3I7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZzaW9uUmVhbCA9ICh0aGlzLnJlYWwgKiBkaXZpc29yKSAvIGRpdjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpdnNpb25JbWcgPSAoZGl2aXNvciAqIHRoaXMuaW1nKSAvIGRpdjtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgoZGl2c2lvblJlYWwsIGRpdnNpb25JbWcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgY29uanVnYXRlKCk6IENvbXBsZXgge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wbGV4KHRoaXMucmVhbCwgLXRoaXMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGVxdWFscyhjOiBDb21wbGV4KTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5yZWFsID09PSBjLnJlYWwgJiYgdGhpcy5pbWcgPT09IGMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1JlYWw6ICcgKyB0aGlzLnJlYWwgKyAnLCBJbWc6ICcgKyB0aGlzLmltZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2xhc3MgREZURmxvYXQzMiB7XHJcblxyXG4gICAgICAgICAgICBwcml2YXRlIG46IG51bWJlcjtcclxuICAgICAgICAgICAgcHJpdmF0ZSBtOiBudW1iZXI7XHJcblxyXG4gICAgICAgICAgICBwcml2YXRlIGNvc0xvb2t1cDogRmxvYXQzMkFycmF5O1xyXG4gICAgICAgICAgICBwcml2YXRlIHNpbkxvb2t1cDogRmxvYXQzMkFycmF5O1xyXG5cclxuICAgICAgICAgICAgY29uc3RydWN0b3IobjogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm4gPSBuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tID0gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZihuICE9ICgxIDw8IG0pKXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKFwibGVuZ3RoIE4gbXVzdCBiZSBwb3dlciBvZiAyXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGxvb2t1cCB0YWJsZXNcclxuICAgICAgICAgICAgICAgIHRoaXMuY29zTG9va3VwID0gbmV3IEZsb2F0MzJBcnJheShuIC8gMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbkxvb2t1cCA9IG5ldyBGbG9hdDMyQXJyYXkobiAvIDIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbiAvIDI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyYyA9ICgtMiAqIE1hdGguUEkgKiBpKSAvIG47XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3NMb29rdXBbaV0gPSBNYXRoLmNvcyhhcmMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2luTG9va3VwW2ldID0gTWF0aC5zaW4oYXJjKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIHByb2Nlc3NSZWFsKHNyY0J1ZjogRmxvYXQzMkFycmF5KTogQXJyYXk8Q29tcGxleD4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IHNyY0J1Zi5zbGljZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IG5ldyBGbG9hdDMyQXJyYXkoc3JjQnVmLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB5aSA9IDA7IHlpIDwgeS5sZW5ndGg7IHlpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB5W3lpXSA9IDAuMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZmZ0Q29vbGV5VHVrZXkoeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByYyA9IG5ldyBBcnJheTxDb21wbGV4Pih4Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICByY1tpXSA9IG5ldyBDb21wbGV4KHhbaV0sIHlbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJjO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgcHJvY2Vzc1JlYWxNYWduaXR1ZGUoc3JjQnVmOiBGbG9hdDMyQXJyYXkpOiBGbG9hdDMyQXJyYXkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IHNyY0J1Zi5zbGljZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IG5ldyBGbG9hdDMyQXJyYXkoc3JjQnVmLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB5aSA9IDA7IHlpIDwgeS5sZW5ndGg7IHlpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB5W3lpXSA9IDAuMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZmZ0Q29vbGV5VHVrZXkoeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByYyA9IG5ldyBGbG9hdDMyQXJyYXkoeC5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmNjID0gbmV3IENvbXBsZXgoeFtpXSwgeVtpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmNbaV0gPSByY2MubWFnbml0dWRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBmZnRDb29sZXlUdWtleShyZWFsOiBGbG9hdDMyQXJyYXksIGltZzogRmxvYXQzMkFycmF5KTogdm9pZCB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgbGV0IGogPSAwO1xyXG4gICAgICAgICAgICAgICAgbGV0IGs6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGxldCBuMTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgbGV0IG4yOiBudW1iZXIgPSB0aGlzLm4gLyAyO1xyXG4gICAgICAgICAgICAgICAgbGV0IGE6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGxldCBjOiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgczogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgbGV0IHQxOiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgdDI6IG51bWJlcjtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgdGhpcy5uIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbjEgPSBuMjtcclxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaiA+PSBuMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqID0gaiAtIG4xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuMSA9IG4xIC8gMjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaiA9IGogKyBuMTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHQxID0gcmVhbFtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhbFtpXSA9IHJlYWxbal07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxbal0gPSB0MTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdDEgPSBpbWdbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ1tpXSA9IGltZ1tqXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nW2pdID0gdDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIG4xID0gMDtcclxuICAgICAgICAgICAgICAgIG4yID0gMTtcclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLm07IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4xID0gbjI7XHJcbiAgICAgICAgICAgICAgICAgICAgbjIgPSBuMiArIG4yO1xyXG4gICAgICAgICAgICAgICAgICAgIGEgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuMTsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0aGlzLmNvc0xvb2t1cFthXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuc2luTG9va3VwW2FdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhICs9ICgxIDw8ICh0aGlzLm0gLSBpIC0gMSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gajsgayA8IHRoaXMubjsgayA9IGsgKyBuMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDEgPSBjICogcmVhbFtrICsgbjFdIC0gcyAqIGltZ1trICsgbjFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDIgPSBzICogcmVhbFtrICsgbjFdICsgYyAqIGltZ1trICsgbjFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbFtrICsgbjFdID0gcmVhbFtrXSAtIHQxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nW2sgKyBuMV0gPSBpbWdba10gLSB0MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxba10gPSByZWFsW2tdICsgdDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdba10gPSBpbWdba10gKyB0MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBwcm9jZXNzKHQ6IEFycmF5PENvbXBsZXg+KTogQXJyYXk8Q29tcGxleD4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbHM6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5uKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGltZ3M6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5uKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zOiBBcnJheTxDb21wbGV4PiA9IG5ldyBBcnJheTxDb21wbGV4Pih0aGlzLm4pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlYWxzW2ldID0gdFtpXS5yZWFsO1xyXG4gICAgICAgICAgICAgICAgICAgIGltZ3NbaV0gPSB0W2ldLmltZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZmZ0Q29vbGV5VHVrZXkocmVhbHMsIGltZ3MpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zW2ldID0gbmV3IENvbXBsZXgocmVhbHNbaV0sIGltZ3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zO1xyXG5cclxuXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbnRlcmZhY2UgV2luZG93RnVuY3Rpb24ge1xyXG4gICAgICAgICAgICBnZXRTY2FsZShpOiBudW1iZXIpOiBudW1iZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjbGFzcyBHYXVzc2lhbldpbmRvdyBpbXBsZW1lbnRzIFdpbmRvd0Z1bmN0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9TSUdNQSA9IDAuMztcclxuICAgICAgICAgICAgLy8gR2F1c3NpYW4gd2luZG93IGZ1bmN0aW9uLFxyXG4gICAgICAgICAgICAvLyBodHRwOi8vcmVmZXJlbmNlLndvbGZyYW0uY29tL2xhbmd1YWdlL3JlZi9HYXVzc2lhbldpbmRvdy5odG1sXHJcbiAgICAgICAgICAgIC8vIHZhbD1leHAoLTUwKngqeC85KSA9PiBzaWdtYT0wLjNcclxuXHJcbiAgICAgICAgICAgIHByaXZhdGUgYnVmOiBGbG9hdDMyQXJyYXk7XHJcblxyXG4gICAgICAgICAgICBjb25zdHJ1Y3RvcihzaXplOiBudW1iZXIsIHNpZ21hOiBudW1iZXIgPSBHYXVzc2lhbldpbmRvdy5ERUZBVUxUX1NJR01BKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1ZiA9IG5ldyBGbG9hdDMyQXJyYXkoc2l6ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXIgPSAoc2l6ZSAtIDEpIC8gMjtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVvdCA9IChpIC0gY2VudGVyKSAvIChzaWdtYSAqIGNlbnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwID0gLTAuNSAqIHF1b3QgKiBxdW90O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVmW2ldID0gTWF0aC5leHAoZXhwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZ2V0U2NhbGUoaTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZltpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24gKG1zZzpNZXNzYWdlRXZlbnQpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBsID0gbXNnLmRhdGEubDtcclxuICAgICAgICAgICAgbGV0IHcgPSBtc2cuZGF0YS53O1xyXG4gICAgICAgICAgICBsZXQgaCA9IG1zZy5kYXRhLmg7XHJcbiAgICAgICAgICAgIGxldCB2dyA9IG1zZy5kYXRhLnZ3O1xyXG4gICAgICAgICAgICBsZXQgY2hzID0gbXNnLmRhdGEuY2hzO1xyXG4gICAgICAgICAgICBsZXQgYXVkaW9EYXRhID0gbmV3IEFycmF5KGNocyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgIGF1ZGlvRGF0YVtjaF0gPSBuZXcgRmxvYXQzMkFycmF5KG1zZy5kYXRhWydhdWRpb0RhdGEnXVtjaF0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgZnJhbWVMZW5ndGggPSBtc2cuZGF0YS5mcmFtZUxlbmd0aDtcclxuICAgICAgICAgICAgbGV0IGRmdFNpemUgPSBtc2cuZGF0YS5kZnRTaXplO1xyXG5cclxuICAgICAgICAgICAgbGV0IGRmdEJhbmRzID0gZGZ0U2l6ZSAvIDI7XHJcbiAgICAgICAgICAgIGxldCBkZnQgPSBuZXcgREZURmxvYXQzMihkZnRTaXplKTtcclxuICAgICAgICAgICAgbGV0IHdmID0gbmV3IEdhdXNzaWFuV2luZG93KGRmdFNpemUpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGFyclNpemU9dypoKjQ7XHJcbiAgICAgICAgICAgIGlmKGFyclNpemU8MCl7XHJcbiAgICAgICAgICAgICAgICBhcnJTaXplPTBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgaW1nRGF0YSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhcnJTaXplKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlJlbmRlciBtZXRob2Q6XCIpO1xyXG4gICAgICAgICAgICBpZiAoYXVkaW9EYXRhICYmIGFyclNpemU+MCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoSCA9IE1hdGgucm91bmQoaCAvIGNocyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJhbWVzUGVyUGl4ZWwgPSBmcmFtZUxlbmd0aCAvIHZ3O1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlJlbmRlcjogXCIsIHcsIFwieFwiLCBoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgYiA9IG5ldyBGbG9hdDMyQXJyYXkoZGZ0U2l6ZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc29uYSA9IG5ldyBBcnJheShjaHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBtYXhQc2QgPSAtSW5maW5pdHk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgY2hzOyBjaCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcCA9IGNoICogZnJhbWVMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoRGF0YUxlbj1hdWRpb0RhdGFbY2hdLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBERlQgYXJyYXkgYnVmZmVyXHJcbiAgICAgICAgICAgICAgICAgICAgc29uYVtjaF0gPSBuZXcgQXJyYXkodyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZyYW1lUG9zID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlydFBpaSA9IGwgKyBwaWk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9uIG9mIHNhbXBsZSBkYXRhIGZyYW1lIGlzIHBpeGVsIHBvc2l0aW9uIG1hcHBlZCB0byBhdWRpbyBmcmFtZSBwb3NpdGlvbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIFwiY2VudGVyXCIgdGhlIGZyYW1lIGJ5IHNoaWZ0aW5nIGxlZnQgYnkgaGFsZiB0aGUgREZUIHNpemUgKD1kZnRCYW5kcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVQb3MgPSBNYXRoLnJvdW5kKCh2aXJ0UGlpICogZnJhbWVzUGVyUGl4ZWwpLWRmdEJhbmRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlsbCBERlQgYnVmZmVyIHdpdGggd2luZG93ZWQgc2FtcGxlIHZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRmdFNpemU7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNhbXBsZVBvcz1mcmFtZVBvcyArIGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGZvciBuZWdhdGl2ZSBzYW1wbGUgcG9zaXRpb25zIGFuZCBvdXQgb2YgYm91bmRzIHBvc2l0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoRGF0PTA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGF1ZGlvIHNhbXBsZSBpZiBhdmFpbGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNhbXBsZVBvcz49MCAmJiBzYW1wbGVQb3MgPCBjaERhdGFMZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hEYXQgPSBhdWRpb0RhdGFbY2hdW3NhbXBsZVBvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwbHkgV2luZG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2ldID0gY2hEYXQgKiB3Zi5nZXRTY2FsZShpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjIERGVCBtYWduaXR1ZGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzcGVjdHIgPSBkZnQucHJvY2Vzc1JlYWxNYWduaXR1ZGUoYik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgbWF4aW11bSB2YWx1ZSBvZiBzcGVjdHJhbCBlbmVyZ3lcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBkZnRCYW5kczsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkID0gKDIgKiBNYXRoLnBvdyhzcGVjdHJbc10sIDIpKSAvIGRmdEJhbmRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBzZCA+IG1heFBzZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBzZCA9IHBzZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcmVuZGVyIG1vZGVsIGRhdGEgZm9yIHRoaXMgcGl4ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc29uYVtjaF1bcGlpXSA9IHNwZWN0cjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL21heFBzZCA9ICgyICogTWF0aC5wb3cobWF4LCAyKSkgLyBkZnRCYW5kcztcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgY2hzOyBjaCsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbGxCbGFjayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgY2hIOyB5KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcmVxSWR4ID0gTWF0aC5yb3VuZCh5ICogZGZ0QmFuZHMgLyBjaEgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBvbmUgc2lkZWQgcG93ZXIgc3BlY3RyYWwgZGVuc2l0eSBQU0QgKGYsIHQpIGluIFBhMi9IelxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFNEKGYpIHByb3BvcnRpb25hbCB0byAyfFgoZil8MiAvICh0MiAtIHQxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNvbmFbY2hdW3BpaV1bZnJlcUlkeF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkID0gKDIgKiBNYXRoLnBvdyh2YWwsIDIpKSAvIGRmdEJhbmRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGxvZ2FyaXRobWljIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xldCBwc2RMb2cgPSBpcHMuZHNwLkRTUFV0aWxzLnRvTGV2ZWxJbkRCKHBzZCAvIG1heFBzZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluZWFyTGV2ZWwgPSBwc2QgLyBtYXhQc2Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkTG9nID0gMTAgKiBNYXRoLmxvZyhsaW5lYXJMZXZlbCkgLyBNYXRoLmxvZygxMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXhlZCBkeW5hbWljIFJhbmdlIHZhbHVlIG9mIDcwZEIgZm9yIG5vd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGR5blJhbmdlSW5EYiA9IDcwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlZFZhbCA9IChwc2RMb2cgKyBkeW5SYW5nZUluRGIpIC8gZHluUmFuZ2VJbkRiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSB0aGUgZm9sbG93aW5nIGNoZWNrcyBuZWNlc3NhcnkgZm9yIGNsYW1wZWQgYXJyYXkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlZFZhbCA+IDEuMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZWRWYWwgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlZFZhbCA8IDAuMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmdiVmFsID0gTWF0aC5yb3VuZCgyNTUgKiBzY2FsZWRWYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJnYlZhbCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1x0XHRcdFx0XHRcdFx0U3lzdGVtLm91dC5wcmludGxuKFwiTmVnIFJHQiB2YWw6IFwiK3JnYlZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiVmFsID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZ2JWYWwgPiAyNTUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTUgLSByZ2JWYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmdiVmFsID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEJsYWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHkgPSBjaEggLSB5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFQb3MgPSAoKCgoY2ggKiBjaEgpICsgcHkpICogdykgKyBwaWkpICogNDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDBdID0gcmdiVmFsOyAvL1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDFdID0gcmdiVmFsOyAvL0dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDJdID0gcmdiVmFsOyAvL0JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDNdID0gMjU1OyAvL0EgKGFscGhhOiBmdWxseSBvcGFxdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGFsbEJsYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2coXCJCbGFjazogXCIsIHBpaSwgXCIgXCIsIGNoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwb3N0TWVzc2FnZSh7aW1nRGF0YTogaW1nRGF0YSwgbDogbCwgdzogbXNnLmRhdGEudywgaDogbXNnLmRhdGEuaCwgdnc6IHZ3fSwgW2ltZ0RhdGEuYnVmZmVyXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0RHJhdyhjbGVhciA9IHRydWUpIHtcclxuICAgICAgICBpZiAoY2xlYXIpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5ib3VuZHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29uYWdyYW1DYW52YXMuc3R5bGUubGVmdCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMucG9zaXRpb24ubGVmdCkudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW50VyA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLndpZHRoKVxyXG4gICAgICAgICAgICAgICAgbGV0IGludEggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNvbmFncmFtQ2FudmFzLndpZHRoID0gaW50VztcclxuICAgICAgICAgICAgICAgIHRoaXMuc29uYWdyYW1DYW52YXMuaGVpZ2h0ID0gaW50SDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZyA9IHRoaXMuc29uYWdyYW1DYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGcpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2cuY2xlYXJSZWN0KDAsIDAsdywgaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBcIndoaXRlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsUmVjdCgwLCAwLCBpbnRXLCBpbnRIKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0UmVuZGVyKCk7XHJcbiAgICAgICAgdGhpcy5kcmF3Q3Vyc29yTGF5ZXIoKVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhcnRSZW5kZXIoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLndvcmtlcikge1xyXG4gICAgICAgICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgdGhpcy53b3JrZXIgPSBudWxsO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYm91bmRzKSB7XHJcbiAgICAgICAgICAgIGxldCB3ID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgICAgICAgICBsZXQgaCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLmhlaWdodCk7XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvRGF0YSAmJiB3PjAgJiYgaD4wKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZXIgPSBuZXcgV29ya2VyKHRoaXMud29ya2VyVVJMKTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy53byA9IG5ldyBXb3JrZXIoJy4vd29ya2VyL3NvbmFncmFtLndvcmtlcicsIHsgdHlwZTogYG1vZHVsZWAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNocyA9IHRoaXMuX2F1ZGlvRGF0YS5udW1iZXJPZkNoYW5uZWxzO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IHRoaXMuX2F1ZGlvRGF0YS5nZXRDaGFubmVsRGF0YSgwKS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWRhID0gbmV3IEFycmF5PEFycmF5QnVmZmVyPihjaHMpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgYSBjb3B5IGhlcmUgZm9yIHRoZSB3b3JrZXIsIG90aGVyd2lzZSB0aGlzLmF1ZGlvRGF0YSBpcyBub3QgYWNjZXNzaWJsZSBhZnRlciBwb3N0aW5nIHRvIHRoZSB3b3JrZXJcclxuICAgICAgICAgICAgICAgICAgICBhZGFbY2hdID0gdGhpcy5fYXVkaW9EYXRhLmdldENoYW5uZWxEYXRhKGNoKS5idWZmZXIuc2xpY2UoMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZXIub25tZXNzYWdlID0gKG1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd1JlbmRlcmVkKG1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFya2VyQ2FudmFzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGcgPSB0aGlzLm1hcmtlckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZy5maWxsVGV4dChcIlJlbmRlcmluZy4uLlwiLCAxMCwgMjApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhOiBhZGEsXHJcbiAgICAgICAgICAgICAgICAgICAgbDogTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5wb3NpdGlvbi5sZWZ0KSxcclxuICAgICAgICAgICAgICAgICAgICB3OiB3LFxyXG4gICAgICAgICAgICAgICAgICAgIGg6IGgsXHJcbiAgICAgICAgICAgICAgICAgICAgdnc6IE1hdGgucm91bmQodGhpcy52aXJ0dWFsRGltZW5zaW9uLndpZHRoKSxcclxuICAgICAgICAgICAgICAgICAgICBjaHM6IGNocyxcclxuICAgICAgICAgICAgICAgICAgICBmcmFtZUxlbmd0aDogZnJhbWVMZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgZGZ0U2l6ZTogdGhpcy5kZnRTaXplXHJcbiAgICAgICAgICAgICAgICB9LCBhZGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IGcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZHJhd1JlbmRlcmVkKG1lOiBNZXNzYWdlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5zb25hZ3JhbUNhbnZhcykge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zb25hZ3JhbUNhbnZhcy53aWR0aCA9IG1lLmRhdGEudztcclxuICAgICAgICAgICAgdGhpcy5zb25hZ3JhbUNhbnZhcy5oZWlnaHQgPSBtZS5kYXRhLmg7XHJcbiAgICAgICAgICAgIGxldCBnID0gdGhpcy5zb25hZ3JhbUNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW1nRGF0YUFycjogVWludDhDbGFtcGVkQXJyYXkgPSBtZS5kYXRhLmltZ0RhdGE7XHJcbiAgICAgICAgICAgICAgICBpZiAobWUuZGF0YS53ID4gMCAmJiBtZS5kYXRhLmggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGltZ0RhdGEgPSBnLmNyZWF0ZUltYWdlRGF0YShtZS5kYXRhLncsIG1lLmRhdGEuaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nRGF0YS5kYXRhLnNldChpbWdEYXRhQXJyKTtcclxuICAgICAgICAgICAgICAgICAgICBnLnB1dEltYWdlRGF0YShpbWdEYXRhLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRyYXdCZygpXHJcbiAgICAgICAgdGhpcy5kcmF3UGxheVBvc2l0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc3luY2hyb25vdXMgZHJhdyAobm90IHVzZWQgYW55bW9yZSlcclxuICAgIHJlZHJhdygpIHtcclxuXHJcbiAgICAgICAgbGV0IGcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuXHJcbiAgICAgICAgbGV0IHcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLndpZHRoO1xyXG4gICAgICAgIGxldCBoID0gdGhpcy5zb25hZ3JhbUNhbnZhcy5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGcpIHtcclxuICAgICAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gXCJ3aGl0ZVwiO1xyXG4gICAgICAgICAgICBnLmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fYXVkaW9EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3BlY3RTaXplID0gTWF0aC5mbG9vcih0aGlzLmRmdFNpemUgLyAyKVxyXG4gICAgICAgICAgICAgICAgbGV0IGNocyA9IHRoaXMuX2F1ZGlvRGF0YS5udW1iZXJPZkNoYW5uZWxzO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoSCA9IGggLyBjaHM7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGZyYW1lTGVuZ3RoID0gdGhpcy5fYXVkaW9EYXRhLmdldENoYW5uZWxEYXRhKDApLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZnJhbWVzUGVyUGl4ZWwgPSBmcmFtZUxlbmd0aCAvIHc7XHJcbiAgICAgICAgICAgICAgICBsZXQgeSA9IDA7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPXHJcbiAgICAgICAgICAgICAgICBsZXQgYiA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5kZnRTaXplKVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzb25hID0gbmV3IEFycmF5PEFycmF5PEZsb2F0MzJBcnJheT4+KGNocyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF4ID0gMDtcclxuICAgICAgICAgICAgICAgIGxldCBtYXhQc2QgPSAtSW5maW5pdHk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgY2hzOyBjaCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHNvbmFbY2hdID0gbmV3IEFycmF5PEZsb2F0MzJBcnJheT4odyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjaERhdGEgPSB0aGlzLl9hdWRpb0RhdGEuZ2V0Q2hhbm5lbERhdGEoY2gpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gY2VudGVyIGJ1ZmZlclxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZnJhbWVQb3MgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lUG9zID0gTWF0aC5yb3VuZChwaWkgKiBmcmFtZXNQZXJQaXhlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBERlQgYXQgcGl4ZWwgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRmdFNpemU7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoRGF0ID0gY2hEYXRhW2ZyYW1lUG9zICsgaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2ldID0gY2hEYXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNwZWN0ciA9IHRoaXMuZGZ0LnByb2Nlc3NSZWFsTWFnbml0dWRlKGIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb25hW2NoXVtwaWldID0gc3BlY3RyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwTWF4ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgc3BlY3RyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBNYXggPiBtYXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IHBNYXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgc3BlY3RTaXplOyBzKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwc2QgPSAoMiAqIE1hdGgucG93KHNwZWN0cltzXSwgMikpIC8gc3BlY3RTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBzZCA+IG1heFBzZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBzZCA9IHBzZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJtYXg6IFwiLCBtYXgpO1xyXG4gICAgICAgICAgICAgICAgbWF4UHNkID0gKDIgKiBNYXRoLnBvdyhtYXgsIDIpKSAvIHNwZWN0U2l6ZTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZyYW1lUG9zID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZVBvcyA9IHBpaSAqIGZyYW1lc1BlclBpeGVsO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoOyB5KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcmVxSWR4ID0gTWF0aC5yb3VuZCh5ICogc3BlY3RTaXplIC8gaCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBvbmUgc2lkZWQgcG93ZXIgc3BlY3RyYWwgZGVuc2l0eSBQU0QgKGYsIHQpIGluIFBhMi9IelxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFNEKGYpIHByb3BvcnRpb25hbCB0byAyfFgoZil8MiAvICh0MiAtIHQxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNvbmFbY2hdW3BpaV1bZnJlcUlkeF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkID0gKDIgKiBNYXRoLnBvdyh2YWwsIDIpKSAvIHNwZWN0U2l6ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbG9nYXJpdGhtaWNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwc2RMb2cgPSBEU1BVdGlscy50b0xldmVsSW5EQihwc2QgLyBtYXhQc2QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGR5blJhbmdlSW5EYiA9IDcwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlZFZhbCA9IChwc2RMb2cgKyBkeW5SYW5nZUluRGIpIC8gZHluUmFuZ2VJbkRiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2FsZWRWYWwgPiAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbCA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVkVmFsIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmdiVmFsID0gKDI1NSAqIHNjYWxlZFZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmdiVmFsIDwgMCkge1xyXG4vL1x0XHRcdFx0XHRcdFx0U3lzdGVtLm91dC5wcmludGxuKFwiTmVnIFJHQiB2YWw6IFwiK3JnYlZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiVmFsID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZ2JWYWwgPiAyNTUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTUgLSByZ2JWYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sb3JTdHIgPSBDU1NVdGlscy50b0NvbG9yU3RyaW5nKHJnYlZhbCwgcmdiVmFsLCByZ2JWYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBjb2xvclN0cjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcuZmlsbFJlY3QocGlpLCBjaEggLSB5LCAxLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhd1BsYXlQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZXREYXRhKGF1ZGlvRGF0YTogQXVkaW9CdWZmZXIgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9EYXRhID0gYXVkaW9EYXRhO1xyXG4gICAgICAgIHRoaXMucGxheUZyYW1lUG9zaXRpb24gPSAwO1xyXG4gICAgICAgIC8vdGhpcy5yZWRyYXcoKTtcclxuICAgICAgICAvL3RoaXMuc3RhcnRSZW5kZXIoKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcblxyXG4iXX0=
670
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYWdyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vdWkvc29uYWdyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFDOUMsT0FBTyxFQUFTLEtBQUssRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsU0FBUyxFQUFjLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7O0FBSS9DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0FBd0I5QixNQUFNLE9BQU8sUUFBUyxTQUFRLHlCQUF5QjtJQWtCbkQsWUFBb0IsR0FBZTtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQURRLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFOM0IsdUJBQWtCLEdBQWMsSUFBSSxDQUFDO1FBSXJDLFlBQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUkvQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNB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QUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7REZURmxvYXQzMn0gZnJvbSAnLi4vLi4vbWF0aC9kZnQnO1xyXG5pbXBvcnQge0RTUFV0aWxzfSBmcm9tICcuLi8uLi9kc3AvdXRpbHMnXHJcbmltcG9ydCB7Q1NTVXRpbHN9IGZyb20gJy4uLy4uL3V0aWxzL2Nzc191dGlscydcclxuaW1wb3J0IHtNYXJrZXIsIFBvaW50fSBmcm9tICcuL2NvbW1vbic7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXVkaW9DYW52YXNMYXllckNvbXBvbmVudH0gZnJvbSBcIi4vYXVkaW9fY2FudmFzX2xheWVyX2NvbXBcIjtcclxuaW1wb3J0IHtXb3JrZXJIZWxwZXJ9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5cclxuZGVjbGFyZSBmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdlOiBhbnksIHRyYW5zZmVyOiBBcnJheTxhbnk+KTogdm9pZDtcclxuXHJcbmNvbnN0IERFRkFVTFRfREZUX1NJWkUgPSAxMDI0O1xyXG5cclxuQENvbXBvbmVudCh7XHJcblxyXG4gICAgc2VsZWN0b3I6ICdhdWRpby1zb25hZ3JhbScsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjYW52YXMgI3NvbmFncmFtIGhlaWdodD1cIjEwXCI+PC9jYW52YXM+XHJcbiAgICAgICAgPGNhbnZhcyAjYmcgaGVpZ2h0PVwiMTBcIj48L2NhbnZhcz5cclxuICAgICAgICA8Y2FudmFzICNjdXJzb3IgaGVpZ2h0PVwiMTBcIiAobW91c2Vkb3duKT1cInNlbGVjdGlvblN0YXJ0KCRldmVudClcIiAobW91c2VvdmVyKT1cInVwZGF0ZUN1cnNvckNhbnZhcygkZXZlbnQpXCIgKG1vdXNlbW92ZSk9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50LCBmYWxzZSlcIj48L2NhbnZhcz5cclxuICAgICAgICA8Y2FudmFzICNtYXJrZXIgaGVpZ2h0PVwiMTBcIj48L2NhbnZhcz5gLFxyXG5cclxuICAgIHN0eWxlczogW2A6aG9zdHtcclxuICAgICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgfWAsYGNhbnZhcyB7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgd2lkdGg6IDA7XHJcbiAgICAgICAgaGVpZ2h0OiAwO1xyXG4gICAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgU29uYWdyYW0gZXh0ZW5kcyBBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50IHtcclxuXHJcbiAgICBkZnQ6IERGVEZsb2F0MzI7XHJcbiAgICBuOiBhbnk7XHJcbiAgICBjZSE6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgc29uYWdyYW1DYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICAgIC8vY3Vyc29yQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuICAgIG1hcmtlckNhbnZhcyE6IEhUTUxDYW52YXNFbGVtZW50O1xyXG4gICAgQFZpZXdDaGlsZCgnc29uYWdyYW0nLCB7IHN0YXRpYzogdHJ1ZSB9KSBzb25hZ3JhbUNhbnZhc1JlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbWFya2VyJywgeyBzdGF0aWM6IHRydWUgfSkgbWFya2VyQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICAgIG1hcmtlcnM6IEFycmF5PE1hcmtlcj47XHJcbiAgICBwcml2YXRlIF9wbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyfG51bGw9bnVsbDtcclxuXHJcbiAgICBwcml2YXRlIHdvcmtlcjogV29ya2VyIHwgbnVsbDtcclxuICAgIHByaXZhdGUgd29ya2VyVVJMOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGRmdFNpemUgPSBERUZBVUxUX0RGVF9TSVpFO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLndvcmtlciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9EYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1hcmtlcnMgPSBuZXcgQXJyYXk8TWFya2VyPigpO1xyXG4gICAgICAgIHRoaXMuZGZ0ID0gbmV3IERGVEZsb2F0MzIodGhpcy5kZnRTaXplKTtcclxuXHJcbiAgICAgICAgdGhpcy53b3JrZXJVUkwgPSBXb3JrZXJIZWxwZXIuYnVpbGRXb3JrZXJCbG9iVVJMKHRoaXMud29ya2VyRnVuY3Rpb24pXHJcbiAgICAgICB0aGlzLl9iZ0NvbG9yPW51bGw7XHJcbiAgICAgICB0aGlzLl9zZWxlY3RDb2xvcj0ncmdiYSgyNTUsMjU1LDAsMC4xKSdcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gICAgICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMuc29uYWdyYW1DYW52YXMgPSB0aGlzLnNvbmFncmFtQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5zb25hZ3JhbUNhbnZhcy5zdHlsZS56SW5kZXggPSAnMSc7XHJcbiAgICAgIHRoaXMuYmdDYW52YXMgPSB0aGlzLmJnQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIHRoaXMuYmdDYW52YXMuc3R5bGUuekluZGV4ID0gJzInO1xyXG4gICAgICAgIHRoaXMuY3Vyc29yQ2FudmFzID0gdGhpcy5jdXJzb3JDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgICAgICB0aGlzLmN1cnNvckNhbnZhcy5zdHlsZS56SW5kZXggPSAnNCc7XHJcbiAgICAgICAgdGhpcy5tYXJrZXJDYW52YXMgPSB0aGlzLm1hcmtlckNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIHRoaXMubWFya2VyQ2FudmFzLnN0eWxlLnpJbmRleCA9ICczJztcclxuXHJcbiAgICAgICAgdGhpcy5jYW52YXNMYXllcnNbMF0gPSB0aGlzLnNvbmFncmFtQ2FudmFzO1xyXG4gICAgICB0aGlzLmNhbnZhc0xheWVyc1sxXSA9IHRoaXMuYmdDYW52YXM7XHJcbiAgICAgIHRoaXMuY2FudmFzTGF5ZXJzWzJdID0gdGhpcy5jdXJzb3JDYW52YXM7XHJcbiAgICAgICAgdGhpcy5jYW52YXNMYXllcnNbM10gPSB0aGlzLm1hcmtlckNhbnZhcztcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBsYXlGcmFtZVBvc2l0aW9uKCk6IG51bWJlcnxudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHBsYXlGcmFtZVBvc2l0aW9uKHBsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbCkge1xyXG4gICAgICAgIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICAgICAgLy8gdGhpcy5yZWRyYXcoKTtcclxuICAgICAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbnZhc01vdXNlUG9zKGM6IEhUTUxDYW52YXNFbGVtZW50LCBlOiBNb3VzZUV2ZW50KTogUG9pbnQge1xyXG4gICAgICAgIGNvbnN0IGNyID0gYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgY29uc3QgeCA9IGUueCAtIGNyLmxlZnQ7XHJcbiAgICAgICAgY29uc3QgeSA9IGUueSAtIGNyLnRvcDtcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHgseSk7XHJcbiAgICB9XHJcblxyXG4gICAgZHJhd0N1cnNvclBvc2l0aW9uKGU6IE1vdXNlRXZlbnQsIHNob3c6IGJvb2xlYW4pIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY3Vyc29yQ2FudmFzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHcgPSB0aGlzLmN1cnNvckNhbnZhcy53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaCA9IHRoaXMuY3Vyc29yQ2FudmFzLmhlaWdodDtcclxuICAgICAgICAgICAgY29uc3QgZyA9IHRoaXMuY3Vyc29yQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICBpZiAoZykge1xyXG4gICAgICAgICAgICBnLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICAgICAgICBjb25zdCBwcCA9IHRoaXMuY2FudmFzTW91c2VQb3ModGhpcy5jdXJzb3JDYW52YXMsIGUpO1xyXG4gICAgICAgICAgICAgIGxldCB4Vmlld1BvcnRQaXhlbHBvcyA9IGUub2Zmc2V0WDtcclxuXHJcbiAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSAneWVsbG93JztcclxuICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ3llbGxvdyc7XHJcbiAgICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgICBnLm1vdmVUbyh4Vmlld1BvcnRQaXhlbHBvcywgMCk7XHJcbiAgICAgICAgICAgICAgZy5saW5lVG8oeFZpZXdQb3J0UGl4ZWxwb3MsIGgpO1xyXG4gICAgICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcblxyXG4gICAgICAgICAgICAgIGcuc3Ryb2tlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9hdWRpb0RhdGEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZnJhbWVQb3NSb3VuZCA9IHRoaXMudmlld1BvcnRYUGl4ZWxUb0ZyYW1lUG9zaXRpb24oeFZpZXdQb3J0UGl4ZWxwb3MpO1xyXG4gICAgICAgICAgICAgICAgaWYoZnJhbWVQb3NSb3VuZCE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGcuZm9udCA9ICcxNHB4IHNhbnMtc2VyaWYnO1xyXG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ3llbGxvdyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsVGV4dChmcmFtZVBvc1JvdW5kLnRvU3RyaW5nKCksIHhWaWV3UG9ydFBpeGVscG9zICsgMiwgNTApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkcmF3UGxheVBvc2l0aW9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1hcmtlckNhbnZhcykge1xyXG4gICAgICAgICAgICB2YXIgdyA9IHRoaXMubWFya2VyQ2FudmFzLndpZHRoO1xyXG4gICAgICAgICAgICB2YXIgaCA9IHRoaXMubWFya2VyQ2FudmFzLmhlaWdodDtcclxuICAgICAgICAgICAgdmFyIGcgPSB0aGlzLm1hcmtlckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgIGlmIChnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbiE9bnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwaXhlbFBvcyA9IHRoaXMuZnJhbWVUb1ZpZXdQb3J0WFBpeGVsUG9zaXRpb24odGhpcy5fcGxheUZyYW1lUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwaXhlbFBvcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9ICdyZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZVN0eWxlID0gJ3JlZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGcubW92ZVRvKHBpeGVsUG9zLCAwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZy5saW5lVG8ocGl4ZWxQb3MsIGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBsYXlvdXQoKSB7XHJcbiAgICAvL1xyXG4gICAgLy9cclxuICAgIC8vICAgdmFyIG9mZlcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLm9mZnNldFdpZHRoO1xyXG4gICAgLy8gICB2YXIgb2ZmSCA9IHRoaXMuc29uYWdyYW1DYW52YXMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLmxheW91dEJvdW5kcygwLCAwLCBvZmZXLCBvZmZILCB0cnVlKTtcclxuICAgIC8vIH1cclxuXHJcblxyXG4gICAgLy8gbGF5b3V0Qm91bmRzKGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIsIG9mZlc6IG51bWJlciwgb2ZmSDogbnVtYmVyLCB2aXJ0dWFsV2lkdGg6bnVtYmVyLHJlZHJhdzogYm9vbGVhbikge1xyXG4gICAgLy9cclxuICAgIC8vICAgY29uc3QgbGVmdFN0ciA9IGxlZnQudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAvLyAgIHRoaXMuc29uYWdyYW1DYW52YXMuc3R5bGUubGVmdCA9IGxlZnRTdHI7XHJcbiAgICAvLyAgIGNvbnN0IHRvcFN0ciA9IHRvcC50b1N0cmluZygpICsgJ3B4JztcclxuICAgIC8vICAgdGhpcy5zb25hZ3JhbUNhbnZhcy5zdHlsZS50b3AgPSB0b3BTdHI7XHJcbiAgICAvLyAgIHRoaXMuY3Vyc29yQ2FudmFzLnN0eWxlLnRvcCA9IHRvcFN0cjtcclxuICAgIC8vICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUudG9wID0gdG9wU3RyO1xyXG4gICAgLy9cclxuICAgIC8vICAgaWYgKG9mZlcpIHtcclxuICAgIC8vICAgICBjb25zdCB3U3RyID0gb2ZmVy50b1N0cmluZygpICsgJ3B4JztcclxuICAgIC8vICAgICBpZiAocmVkcmF3KSB7XHJcbiAgICAvL1xyXG4gICAgLy8gICAgICAgdGhpcy5jdXJzb3JDYW52YXMud2lkdGggPSBvZmZXO1xyXG4gICAgLy8gICAgICAgdGhpcy5tYXJrZXJDYW52YXMud2lkdGggPSBvZmZXO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICB0aGlzLnNvbmFncmFtQ2FudmFzLnN0eWxlLndpZHRoID0gd1N0cjtcclxuICAgIC8vICAgICB0aGlzLmN1cnNvckNhbnZhcy5zdHlsZS53aWR0aCA9IHdTdHI7XHJcbiAgICAvLyAgICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUud2lkdGggPSB3U3RyO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmIChvZmZIKSB7XHJcbiAgICAvLyAgICAgY29uc3QgaFN0ciA9IG9mZkgudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAvLyAgICAgaWYgKHJlZHJhdykge1xyXG4gICAgLy8gICAgICAgdGhpcy5jdXJzb3JDYW52YXMuaGVpZ2h0ID0gb2ZmSDtcclxuICAgIC8vICAgICAgIHRoaXMubWFya2VyQ2FudmFzLmhlaWdodCA9IG9mZkg7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMuc29uYWdyYW1DYW52YXMuc3R5bGUuaGVpZ2h0ID0gaFN0cjtcclxuICAgIC8vICAgICB0aGlzLmN1cnNvckNhbnZhcy5zdHlsZS5oZWlnaHQgPSBoU3RyO1xyXG4gICAgLy8gICAgIHRoaXMubWFya2VyQ2FudmFzLnN0eWxlLmhlaWdodCA9IGhTdHI7XHJcbiAgICAvL1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmIChyZWRyYXcpIHtcclxuICAgIC8vICAgICAvL3RoaXMucmVkcmF3KCk7XHJcbiAgICAvLyAgICAgaWYgKG9mZlcgPiAwKSB7XHJcbiAgICAvLyAgICAgICBpZiAob2ZmSCA+IDApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy5zdGFydERyYXcobGVmdCx0b3Asb2ZmVywgb2ZmSCx2aXJ0dWFsV2lkdGgpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIE1ldGhvZCB1c2VkIGFzIHdvcmtlciBjb2RlLlxyXG4gICAgICovXHJcbiAgICB3b3JrZXJGdW5jdGlvbigpIHtcclxuXHJcbiAgICAgICAgLy8gUmVkZWZpbmUgc29tZSBEU1AgY2xhc3NlcyBmb3Igd29ya2VyIGZ1bmN0aW9uXHJcbiAgICAgICAgLy8gU2VlIGUuZy4gYXVkaW8ubWF0aC5Db21wbGV4XHJcbiAgICAgICAgY2xhc3MgQ29tcGxleCB7XHJcblxyXG4gICAgICAgICAgICByZWFsOiBudW1iZXI7XHJcbiAgICAgICAgICAgIGltZzogbnVtYmVyO1xyXG5cclxuICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmcm9tUG9sYXJGb3JtKG1hZ25pdHVkZTogbnVtYmVyLCBhcmd1bWVudDogbnVtYmVyKTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByID0gTWF0aC5jb3MoYXJndW1lbnQpICogbWFnbml0dWRlO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IE1hdGguc2luKGFyZ3VtZW50KSAqIG1hZ25pdHVkZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleChyLCBpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3RydWN0b3IocmVhbDogbnVtYmVyLCBpbWc6IG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFsID0gcmVhbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW1nID0gaW1nO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgbWFnbml0dWRlKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KCh0aGlzLnJlYWwgKiB0aGlzLnJlYWwpICsgKHRoaXMuaW1nICogdGhpcy5pbWcpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGFyZ3VtZW50KCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5hdGFuMih0aGlzLmltZywgdGhpcy5yZWFsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGFkZChhZGRDOiBDb21wbGV4KTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgodGhpcy5yZWFsICsgYWRkQy5yZWFsLCB0aGlzLmltZyArIGFkZEMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIHN1YihzdWJDOiBDb21wbGV4KTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgodGhpcy5yZWFsIC0gc3ViQy5yZWFsLCB0aGlzLmltZyAtIHN1YkMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIG11bHQobXVsdEM6IENvbXBsZXgpOiBDb21wbGV4IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG11bHRSID0gKHRoaXMucmVhbCAqIG11bHRDLnJlYWwpIC0gKHRoaXMuaW1nICogbXVsdEMuaW1nKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG11bHRJID0gKHRoaXMucmVhbCAqIG11bHRDLmltZykgKyAobXVsdEMucmVhbCAqIHRoaXMuaW1nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcGxleChtdWx0UiwgbXVsdEkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgbXVsdFJlYWwobXVsdEY6IG51bWJlcik6IENvbXBsZXgge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wbGV4KHRoaXMucmVhbCAqIG11bHRGLCB0aGlzLmltZyAqIG11bHRGKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGRpdihkaXZpc29yOiBDb21wbGV4KTogQ29tcGxleCB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZSZWFsID0gZGl2aXNvci5yZWFsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGl2SW1nID0gZGl2aXNvci5pbWc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXYgPSAoZGl2UmVhbCAqIGRpdlJlYWwpICsgKGRpdkltZyAqIGRpdkltZyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZpc2lvblJlYWwgPSAoKHRoaXMucmVhbCAqIGRpdlJlYWwpICsgKHRoaXMuaW1nICogZGl2SW1nKSkgLyBkaXY7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZpc2lvbkltZyA9ICgoZGl2UmVhbCAqIHRoaXMuaW1nKSAtICh0aGlzLnJlYWwgKiBkaXZJbWcpKSAvIGRpdjtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgoZGl2aXNpb25SZWFsLCBkaXZpc2lvbkltZyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBkaXZSZWFsKGRpdmlzb3I6IG51bWJlcik6IENvbXBsZXgge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZGl2aXNvciAqIGRpdmlzb3I7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkaXZzaW9uUmVhbCA9ICh0aGlzLnJlYWwgKiBkaXZpc29yKSAvIGRpdjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpdnNpb25JbWcgPSAoZGl2aXNvciAqIHRoaXMuaW1nKSAvIGRpdjtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBsZXgoZGl2c2lvblJlYWwsIGRpdnNpb25JbWcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgY29uanVnYXRlKCk6IENvbXBsZXgge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wbGV4KHRoaXMucmVhbCwgLXRoaXMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIGVxdWFscyhjOiBDb21wbGV4KTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5yZWFsID09PSBjLnJlYWwgJiYgdGhpcy5pbWcgPT09IGMuaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1JlYWw6ICcgKyB0aGlzLnJlYWwgKyAnLCBJbWc6ICcgKyB0aGlzLmltZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2xhc3MgREZURmxvYXQzMiB7XHJcblxyXG4gICAgICAgICAgICBwcml2YXRlIG46IG51bWJlcjtcclxuICAgICAgICAgICAgcHJpdmF0ZSBtOiBudW1iZXI7XHJcblxyXG4gICAgICAgICAgICBwcml2YXRlIGNvc0xvb2t1cDogRmxvYXQzMkFycmF5O1xyXG4gICAgICAgICAgICBwcml2YXRlIHNpbkxvb2t1cDogRmxvYXQzMkFycmF5O1xyXG5cclxuICAgICAgICAgICAgY29uc3RydWN0b3IobjogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm4gPSBuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tID0gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZihuICE9ICgxIDw8IG0pKXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKFwibGVuZ3RoIE4gbXVzdCBiZSBwb3dlciBvZiAyXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGxvb2t1cCB0YWJsZXNcclxuICAgICAgICAgICAgICAgIHRoaXMuY29zTG9va3VwID0gbmV3IEZsb2F0MzJBcnJheShuIC8gMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbkxvb2t1cCA9IG5ldyBGbG9hdDMyQXJyYXkobiAvIDIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbiAvIDI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyYyA9ICgtMiAqIE1hdGguUEkgKiBpKSAvIG47XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3NMb29rdXBbaV0gPSBNYXRoLmNvcyhhcmMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2luTG9va3VwW2ldID0gTWF0aC5zaW4oYXJjKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcHVibGljIHByb2Nlc3NSZWFsKHNyY0J1ZjogRmxvYXQzMkFycmF5KTogQXJyYXk8Q29tcGxleD4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IHNyY0J1Zi5zbGljZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IG5ldyBGbG9hdDMyQXJyYXkoc3JjQnVmLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB5aSA9IDA7IHlpIDwgeS5sZW5ndGg7IHlpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB5W3lpXSA9IDAuMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZmZ0Q29vbGV5VHVrZXkoeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByYyA9IG5ldyBBcnJheTxDb21wbGV4Pih4Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICByY1tpXSA9IG5ldyBDb21wbGV4KHhbaV0sIHlbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJjO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBwdWJsaWMgcHJvY2Vzc1JlYWxNYWduaXR1ZGUoc3JjQnVmOiBGbG9hdDMyQXJyYXkpOiBGbG9hdDMyQXJyYXkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IHNyY0J1Zi5zbGljZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IG5ldyBGbG9hdDMyQXJyYXkoc3JjQnVmLmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB5aSA9IDA7IHlpIDwgeS5sZW5ndGg7IHlpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB5W3lpXSA9IDAuMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZmZ0Q29vbGV5VHVrZXkoeCwgeSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByYyA9IG5ldyBGbG9hdDMyQXJyYXkoeC5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmNjID0gbmV3IENvbXBsZXgoeFtpXSwgeVtpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmNbaV0gPSByY2MubWFnbml0dWRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBmZnRDb29sZXlUdWtleShyZWFsOiBGbG9hdDMyQXJyYXksIGltZzogRmxvYXQzMkFycmF5KTogdm9pZCB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgbGV0IGogPSAwO1xyXG4gICAgICAgICAgICAgICAgbGV0IGs6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGxldCBuMTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgbGV0IG4yOiBudW1iZXIgPSB0aGlzLm4gLyAyO1xyXG4gICAgICAgICAgICAgICAgbGV0IGE6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGxldCBjOiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgczogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgbGV0IHQxOiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgdDI6IG51bWJlcjtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgdGhpcy5uIC0gMTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbjEgPSBuMjtcclxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaiA+PSBuMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqID0gaiAtIG4xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuMSA9IG4xIC8gMjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaiA9IGogKyBuMTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHQxID0gcmVhbFtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhbFtpXSA9IHJlYWxbal07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxbal0gPSB0MTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdDEgPSBpbWdbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ1tpXSA9IGltZ1tqXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nW2pdID0gdDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIG4xID0gMDtcclxuICAgICAgICAgICAgICAgIG4yID0gMTtcclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLm07IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4xID0gbjI7XHJcbiAgICAgICAgICAgICAgICAgICAgbjIgPSBuMiArIG4yO1xyXG4gICAgICAgICAgICAgICAgICAgIGEgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuMTsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0aGlzLmNvc0xvb2t1cFthXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHRoaXMuc2luTG9va3VwW2FdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhICs9ICgxIDw8ICh0aGlzLm0gLSBpIC0gMSkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gajsgayA8IHRoaXMubjsgayA9IGsgKyBuMikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDEgPSBjICogcmVhbFtrICsgbjFdIC0gcyAqIGltZ1trICsgbjFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdDIgPSBzICogcmVhbFtrICsgbjFdICsgYyAqIGltZ1trICsgbjFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbFtrICsgbjFdID0gcmVhbFtrXSAtIHQxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nW2sgKyBuMV0gPSBpbWdba10gLSB0MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxba10gPSByZWFsW2tdICsgdDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdba10gPSBpbWdba10gKyB0MjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBwcm9jZXNzKHQ6IEFycmF5PENvbXBsZXg+KTogQXJyYXk8Q29tcGxleD4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhbHM6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5uKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGltZ3M6IEZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5uKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zOiBBcnJheTxDb21wbGV4PiA9IG5ldyBBcnJheTxDb21wbGV4Pih0aGlzLm4pO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlYWxzW2ldID0gdFtpXS5yZWFsO1xyXG4gICAgICAgICAgICAgICAgICAgIGltZ3NbaV0gPSB0W2ldLmltZztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZmZ0Q29vbGV5VHVrZXkocmVhbHMsIGltZ3MpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zW2ldID0gbmV3IENvbXBsZXgocmVhbHNbaV0sIGltZ3NbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zO1xyXG5cclxuXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbnRlcmZhY2UgV2luZG93RnVuY3Rpb24ge1xyXG4gICAgICAgICAgICBnZXRTY2FsZShpOiBudW1iZXIpOiBudW1iZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjbGFzcyBHYXVzc2lhbldpbmRvdyBpbXBsZW1lbnRzIFdpbmRvd0Z1bmN0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9TSUdNQSA9IDAuMztcclxuICAgICAgICAgICAgLy8gR2F1c3NpYW4gd2luZG93IGZ1bmN0aW9uLFxyXG4gICAgICAgICAgICAvLyBodHRwOi8vcmVmZXJlbmNlLndvbGZyYW0uY29tL2xhbmd1YWdlL3JlZi9HYXVzc2lhbldpbmRvdy5odG1sXHJcbiAgICAgICAgICAgIC8vIHZhbD1leHAoLTUwKngqeC85KSA9PiBzaWdtYT0wLjNcclxuXHJcbiAgICAgICAgICAgIHByaXZhdGUgYnVmOiBGbG9hdDMyQXJyYXk7XHJcblxyXG4gICAgICAgICAgICBjb25zdHJ1Y3RvcihzaXplOiBudW1iZXIsIHNpZ21hOiBudW1iZXIgPSBHYXVzc2lhbldpbmRvdy5ERUZBVUxUX1NJR01BKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1ZiA9IG5ldyBGbG9hdDMyQXJyYXkoc2l6ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXIgPSAoc2l6ZSAtIDEpIC8gMjtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVvdCA9IChpIC0gY2VudGVyKSAvIChzaWdtYSAqIGNlbnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwID0gLTAuNSAqIHF1b3QgKiBxdW90O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVmW2ldID0gTWF0aC5leHAoZXhwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZ2V0U2NhbGUoaTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZltpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24gKG1zZzpNZXNzYWdlRXZlbnQpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBsID0gbXNnLmRhdGEubDtcclxuICAgICAgICAgICAgbGV0IHcgPSBtc2cuZGF0YS53O1xyXG4gICAgICAgICAgICBsZXQgaCA9IG1zZy5kYXRhLmg7XHJcbiAgICAgICAgICAgIGxldCB2dyA9IG1zZy5kYXRhLnZ3O1xyXG4gICAgICAgICAgICBsZXQgY2hzID0gbXNnLmRhdGEuY2hzO1xyXG4gICAgICAgICAgICBsZXQgYXVkaW9EYXRhID0gbmV3IEFycmF5KGNocyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgIGF1ZGlvRGF0YVtjaF0gPSBuZXcgRmxvYXQzMkFycmF5KG1zZy5kYXRhWydhdWRpb0RhdGEnXVtjaF0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgZnJhbWVMZW5ndGggPSBtc2cuZGF0YS5mcmFtZUxlbmd0aDtcclxuICAgICAgICAgICAgbGV0IGRmdFNpemUgPSBtc2cuZGF0YS5kZnRTaXplO1xyXG5cclxuICAgICAgICAgICAgbGV0IGRmdEJhbmRzID0gZGZ0U2l6ZSAvIDI7XHJcbiAgICAgICAgICAgIGxldCBkZnQgPSBuZXcgREZURmxvYXQzMihkZnRTaXplKTtcclxuICAgICAgICAgICAgbGV0IHdmID0gbmV3IEdhdXNzaWFuV2luZG93KGRmdFNpemUpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGFyclNpemU9dypoKjQ7XHJcbiAgICAgICAgICAgIGlmKGFyclNpemU8MCl7XHJcbiAgICAgICAgICAgICAgICBhcnJTaXplPTBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgaW1nRGF0YSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhcnJTaXplKTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlJlbmRlciBtZXRob2Q6XCIpO1xyXG4gICAgICAgICAgICBpZiAoYXVkaW9EYXRhICYmIGFyclNpemU+MCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoSCA9IE1hdGgucm91bmQoaCAvIGNocyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJhbWVzUGVyUGl4ZWwgPSBmcmFtZUxlbmd0aCAvIHZ3O1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlJlbmRlcjogXCIsIHcsIFwieFwiLCBoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgYiA9IG5ldyBGbG9hdDMyQXJyYXkoZGZ0U2l6ZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc29uYSA9IG5ldyBBcnJheShjaHMpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBtYXhQc2QgPSAtSW5maW5pdHk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgY2hzOyBjaCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcCA9IGNoICogZnJhbWVMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoRGF0YUxlbj1hdWRpb0RhdGFbY2hdLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBERlQgYXJyYXkgYnVmZmVyXHJcbiAgICAgICAgICAgICAgICAgICAgc29uYVtjaF0gPSBuZXcgQXJyYXkodyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZyYW1lUG9zID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlydFBpaSA9IGwgKyBwaWk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9uIG9mIHNhbXBsZSBkYXRhIGZyYW1lIGlzIHBpeGVsIHBvc2l0aW9uIG1hcHBlZCB0byBhdWRpbyBmcmFtZSBwb3NpdGlvbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIFwiY2VudGVyXCIgdGhlIGZyYW1lIGJ5IHNoaWZ0aW5nIGxlZnQgYnkgaGFsZiB0aGUgREZUIHNpemUgKD1kZnRCYW5kcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVQb3MgPSBNYXRoLnJvdW5kKCh2aXJ0UGlpICogZnJhbWVzUGVyUGl4ZWwpLWRmdEJhbmRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlsbCBERlQgYnVmZmVyIHdpdGggd2luZG93ZWQgc2FtcGxlIHZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRmdFNpemU7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNhbXBsZVBvcz1mcmFtZVBvcyArIGk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGZvciBuZWdhdGl2ZSBzYW1wbGUgcG9zaXRpb25zIGFuZCBvdXQgb2YgYm91bmRzIHBvc2l0aW9uc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoRGF0PTA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGF1ZGlvIHNhbXBsZSBpZiBhdmFpbGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHNhbXBsZVBvcz49MCAmJiBzYW1wbGVQb3MgPCBjaERhdGFMZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hEYXQgPSBhdWRpb0RhdGFbY2hdW3NhbXBsZVBvc107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwbHkgV2luZG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2ldID0gY2hEYXQgKiB3Zi5nZXRTY2FsZShpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjIERGVCBtYWduaXR1ZGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzcGVjdHIgPSBkZnQucHJvY2Vzc1JlYWxNYWduaXR1ZGUoYik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgbWF4aW11bSB2YWx1ZSBvZiBzcGVjdHJhbCBlbmVyZ3lcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBkZnRCYW5kczsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkID0gKDIgKiBNYXRoLnBvdyhzcGVjdHJbc10sIDIpKSAvIGRmdEJhbmRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBzZCA+IG1heFBzZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBzZCA9IHBzZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcmVuZGVyIG1vZGVsIGRhdGEgZm9yIHRoaXMgcGl4ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc29uYVtjaF1bcGlpXSA9IHNwZWN0cjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL21heFBzZCA9ICgyICogTWF0aC5wb3cobWF4LCAyKSkgLyBkZnRCYW5kcztcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgY2hzOyBjaCsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhbGxCbGFjayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgY2hIOyB5KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcmVxSWR4ID0gTWF0aC5yb3VuZCh5ICogZGZ0QmFuZHMgLyBjaEgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBvbmUgc2lkZWQgcG93ZXIgc3BlY3RyYWwgZGVuc2l0eSBQU0QgKGYsIHQpIGluIFBhMi9IelxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFNEKGYpIHByb3BvcnRpb25hbCB0byAyfFgoZil8MiAvICh0MiAtIHQxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNvbmFbY2hdW3BpaV1bZnJlcUlkeF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkID0gKDIgKiBNYXRoLnBvdyh2YWwsIDIpKSAvIGRmdEJhbmRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGxvZ2FyaXRobWljIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xldCBwc2RMb2cgPSBpcHMuZHNwLkRTUFV0aWxzLnRvTGV2ZWxJbkRCKHBzZCAvIG1heFBzZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluZWFyTGV2ZWwgPSBwc2QgLyBtYXhQc2Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkTG9nID0gMTAgKiBNYXRoLmxvZyhsaW5lYXJMZXZlbCkgLyBNYXRoLmxvZygxMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXhlZCBkeW5hbWljIFJhbmdlIHZhbHVlIG9mIDcwZEIgZm9yIG5vd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGR5blJhbmdlSW5EYiA9IDcwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlZFZhbCA9IChwc2RMb2cgKyBkeW5SYW5nZUluRGIpIC8gZHluUmFuZ2VJbkRiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZSB0aGUgZm9sbG93aW5nIGNoZWNrcyBuZWNlc3NhcnkgZm9yIGNsYW1wZWQgYXJyYXkgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlZFZhbCA+IDEuMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZWRWYWwgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlZFZhbCA8IDAuMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmdiVmFsID0gTWF0aC5yb3VuZCgyNTUgKiBzY2FsZWRWYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJnYlZhbCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1x0XHRcdFx0XHRcdFx0U3lzdGVtLm91dC5wcmludGxuKFwiTmVnIFJHQiB2YWw6IFwiK3JnYlZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiVmFsID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZ2JWYWwgPiAyNTUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTUgLSByZ2JWYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmdiVmFsID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbEJsYWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHkgPSBjaEggLSB5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFQb3MgPSAoKCgoY2ggKiBjaEgpICsgcHkpICogdykgKyBwaWkpICogNDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDBdID0gcmdiVmFsOyAvL1JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDFdID0gcmdiVmFsOyAvL0dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDJdID0gcmdiVmFsOyAvL0JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ0RhdGFbZGF0YVBvcyArIDNdID0gMjU1OyAvL0EgKGFscGhhOiBmdWxseSBvcGFxdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGFsbEJsYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2coXCJCbGFjazogXCIsIHBpaSwgXCIgXCIsIGNoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwb3N0TWVzc2FnZSh7aW1nRGF0YTogaW1nRGF0YSwgbDogbCwgdzogbXNnLmRhdGEudywgaDogbXNnLmRhdGEuaCwgdnc6IHZ3fSwgW2ltZ0RhdGEuYnVmZmVyXSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0RHJhdyhjbGVhciA9IHRydWUpIHtcclxuICAgICAgICBpZiAoY2xlYXIpIHtcclxuICAgICAgICAgICAgaWYodGhpcy5ib3VuZHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29uYWdyYW1DYW52YXMuc3R5bGUubGVmdCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMucG9zaXRpb24ubGVmdCkudG9TdHJpbmcoKSArICdweCc7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW50VyA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLndpZHRoKVxyXG4gICAgICAgICAgICAgICAgbGV0IGludEggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNvbmFncmFtQ2FudmFzLndpZHRoID0gaW50VztcclxuICAgICAgICAgICAgICAgIHRoaXMuc29uYWdyYW1DYW52YXMuaGVpZ2h0ID0gaW50SDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZyA9IHRoaXMuc29uYWdyYW1DYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGcpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL2cuY2xlYXJSZWN0KDAsIDAsdywgaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBcIndoaXRlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5maWxsUmVjdCgwLCAwLCBpbnRXLCBpbnRIKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0UmVuZGVyKCk7XHJcbiAgICAgICAgdGhpcy5kcmF3Q3Vyc29yTGF5ZXIoKVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhcnRSZW5kZXIoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLndvcmtlcikge1xyXG4gICAgICAgICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgdGhpcy53b3JrZXIgPSBudWxsO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYm91bmRzKSB7XHJcbiAgICAgICAgICAgIGxldCB3ID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgICAgICAgICBsZXQgaCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLmhlaWdodCk7XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2F1ZGlvRGF0YSAmJiB3PjAgJiYgaD4wKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZXIgPSBuZXcgV29ya2VyKHRoaXMud29ya2VyVVJMKTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy53byA9IG5ldyBXb3JrZXIoJy4vd29ya2VyL3NvbmFncmFtLndvcmtlcicsIHsgdHlwZTogYG1vZHVsZWAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGNocyA9IHRoaXMuX2F1ZGlvRGF0YS5udW1iZXJPZkNoYW5uZWxzO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IHRoaXMuX2F1ZGlvRGF0YS5nZXRDaGFubmVsRGF0YSgwKS5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWRhID0gbmV3IEFycmF5PEFycmF5QnVmZmVyPihjaHMpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgYSBjb3B5IGhlcmUgZm9yIHRoZSB3b3JrZXIsIG90aGVyd2lzZSB0aGlzLmF1ZGlvRGF0YSBpcyBub3QgYWNjZXNzaWJsZSBhZnRlciBwb3N0aW5nIHRvIHRoZSB3b3JrZXJcclxuICAgICAgICAgICAgICAgICAgICBhZGFbY2hdID0gdGhpcy5fYXVkaW9EYXRhLmdldENoYW5uZWxEYXRhKGNoKS5idWZmZXIuc2xpY2UoMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZXIub25tZXNzYWdlID0gKG1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd1JlbmRlcmVkKG1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFya2VyQ2FudmFzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGcgPSB0aGlzLm1hcmtlckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZy5maWxsVGV4dChcIlJlbmRlcmluZy4uLlwiLCAxMCwgMjApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhOiBhZGEsXHJcbiAgICAgICAgICAgICAgICAgICAgbDogTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5wb3NpdGlvbi5sZWZ0KSxcclxuICAgICAgICAgICAgICAgICAgICB3OiB3LFxyXG4gICAgICAgICAgICAgICAgICAgIGg6IGgsXHJcbiAgICAgICAgICAgICAgICAgICAgdnc6IE1hdGgucm91bmQodGhpcy52aXJ0dWFsRGltZW5zaW9uLndpZHRoKSxcclxuICAgICAgICAgICAgICAgICAgICBjaHM6IGNocyxcclxuICAgICAgICAgICAgICAgICAgICBmcmFtZUxlbmd0aDogZnJhbWVMZW5ndGgsXHJcbiAgICAgICAgICAgICAgICAgICAgZGZ0U2l6ZTogdGhpcy5kZnRTaXplXHJcbiAgICAgICAgICAgICAgICB9LCBhZGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IGcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZHJhd1JlbmRlcmVkKG1lOiBNZXNzYWdlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5zb25hZ3JhbUNhbnZhcykge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zb25hZ3JhbUNhbnZhcy53aWR0aCA9IG1lLmRhdGEudztcclxuICAgICAgICAgICAgdGhpcy5zb25hZ3JhbUNhbnZhcy5oZWlnaHQgPSBtZS5kYXRhLmg7XHJcbiAgICAgICAgICAgIGxldCBnID0gdGhpcy5zb25hZ3JhbUNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW1nRGF0YUFycjogVWludDhDbGFtcGVkQXJyYXkgPSBtZS5kYXRhLmltZ0RhdGE7XHJcbiAgICAgICAgICAgICAgICBpZiAobWUuZGF0YS53ID4gMCAmJiBtZS5kYXRhLmggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGltZ0RhdGEgPSBnLmNyZWF0ZUltYWdlRGF0YShtZS5kYXRhLncsIG1lLmRhdGEuaCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nRGF0YS5kYXRhLnNldChpbWdEYXRhQXJyKTtcclxuICAgICAgICAgICAgICAgICAgICBnLnB1dEltYWdlRGF0YShpbWdEYXRhLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRyYXdCZygpXHJcbiAgICAgICAgdGhpcy5kcmF3UGxheVBvc2l0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc3luY2hyb25vdXMgZHJhdyAobm90IHVzZWQgYW55bW9yZSlcclxuICAgIHJlZHJhdygpIHtcclxuXHJcbiAgICAgICAgbGV0IGcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuXHJcbiAgICAgICAgbGV0IHcgPSB0aGlzLnNvbmFncmFtQ2FudmFzLndpZHRoO1xyXG4gICAgICAgIGxldCBoID0gdGhpcy5zb25hZ3JhbUNhbnZhcy5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGcpIHtcclxuICAgICAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gXCJ3aGl0ZVwiO1xyXG4gICAgICAgICAgICBnLmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fYXVkaW9EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3BlY3RTaXplID0gTWF0aC5mbG9vcih0aGlzLmRmdFNpemUgLyAyKVxyXG4gICAgICAgICAgICAgICAgbGV0IGNocyA9IHRoaXMuX2F1ZGlvRGF0YS5udW1iZXJPZkNoYW5uZWxzO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoSCA9IGggLyBjaHM7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGZyYW1lTGVuZ3RoID0gdGhpcy5fYXVkaW9EYXRhLmdldENoYW5uZWxEYXRhKDApLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZnJhbWVzUGVyUGl4ZWwgPSBmcmFtZUxlbmd0aCAvIHc7XHJcbiAgICAgICAgICAgICAgICBsZXQgeSA9IDA7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPXHJcbiAgICAgICAgICAgICAgICBsZXQgYiA9IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5kZnRTaXplKVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzb25hID0gbmV3IEFycmF5PEFycmF5PEZsb2F0MzJBcnJheT4+KGNocyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF4ID0gMDtcclxuICAgICAgICAgICAgICAgIGxldCBtYXhQc2QgPSAtSW5maW5pdHk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjaCA9IDA7IGNoIDwgY2hzOyBjaCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHNvbmFbY2hdID0gbmV3IEFycmF5PEZsb2F0MzJBcnJheT4odyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjaERhdGEgPSB0aGlzLl9hdWRpb0RhdGEuZ2V0Q2hhbm5lbERhdGEoY2gpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gY2VudGVyIGJ1ZmZlclxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZnJhbWVQb3MgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lUG9zID0gTWF0aC5yb3VuZChwaWkgKiBmcmFtZXNQZXJQaXhlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBERlQgYXQgcGl4ZWwgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRmdFNpemU7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoRGF0ID0gY2hEYXRhW2ZyYW1lUG9zICsgaV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2ldID0gY2hEYXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNwZWN0ciA9IHRoaXMuZGZ0LnByb2Nlc3NSZWFsTWFnbml0dWRlKGIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzb25hW2NoXVtwaWldID0gc3BlY3RyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwTWF4ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgc3BlY3RyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBNYXggPiBtYXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IHBNYXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgc3BlY3RTaXplOyBzKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwc2QgPSAoMiAqIE1hdGgucG93KHNwZWN0cltzXSwgMikpIC8gc3BlY3RTaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBzZCA+IG1heFBzZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBzZCA9IHBzZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJtYXg6IFwiLCBtYXgpO1xyXG4gICAgICAgICAgICAgICAgbWF4UHNkID0gKDIgKiBNYXRoLnBvdyhtYXgsIDIpKSAvIHNwZWN0U2l6ZTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZyYW1lUG9zID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZVBvcyA9IHBpaSAqIGZyYW1lc1BlclBpeGVsO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoOyB5KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmcmVxSWR4ID0gTWF0aC5yb3VuZCh5ICogc3BlY3RTaXplIC8gaCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBvbmUgc2lkZWQgcG93ZXIgc3BlY3RyYWwgZGVuc2l0eSBQU0QgKGYsIHQpIGluIFBhMi9IelxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUFNEKGYpIHByb3BvcnRpb25hbCB0byAyfFgoZil8MiAvICh0MiAtIHQxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNvbmFbY2hdW3BpaV1bZnJlcUlkeF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHNkID0gKDIgKiBNYXRoLnBvdyh2YWwsIDIpKSAvIHNwZWN0U2l6ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbG9nYXJpdGhtaWNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwc2RMb2cgPSBEU1BVdGlscy50b0xldmVsSW5EQihwc2QgLyBtYXhQc2QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGR5blJhbmdlSW5EYiA9IDcwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlZFZhbCA9IChwc2RMb2cgKyBkeW5SYW5nZUluRGIpIC8gZHluUmFuZ2VJbkRiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2FsZWRWYWwgPiAxKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbCA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGVkVmFsIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFZhbCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmdiVmFsID0gKDI1NSAqIHNjYWxlZFZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmdiVmFsIDwgMCkge1xyXG4vL1x0XHRcdFx0XHRcdFx0U3lzdGVtLm91dC5wcmludGxuKFwiTmVnIFJHQiB2YWw6IFwiK3JnYlZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiVmFsID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZ2JWYWwgPiAyNTUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2JWYWwgPSAyNTUgLSByZ2JWYWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sb3JTdHIgPSBDU1NVdGlscy50b0NvbG9yU3RyaW5nKHJnYlZhbCwgcmdiVmFsLCByZ2JWYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBjb2xvclN0cjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcuZmlsbFJlY3QocGlpLCBjaEggLSB5LCAxLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhd1BsYXlQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZXREYXRhKGF1ZGlvRGF0YTogQXVkaW9CdWZmZXIgfCBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9EYXRhID0gYXVkaW9EYXRhO1xyXG4gICAgICAgIHRoaXMucGxheUZyYW1lUG9zaXRpb24gPSAwO1xyXG4gICAgICAgIC8vdGhpcy5yZWRyYXcoKTtcclxuICAgICAgICAvL3RoaXMuc3RhcnRSZW5kZXIoKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcblxyXG4iXX0=
@@ -18,10 +18,19 @@ export class Float32ArrayChunkerOutStream {
18
18
  this._chunkSize = chunkSize;
19
19
  this.createBuffers();
20
20
  }
21
+ get chunkSize() {
22
+ return this._chunkSize;
23
+ }
21
24
  set channels(channels) {
22
25
  this._channels = channels;
23
26
  this.createBuffers();
24
27
  }
28
+ get channels() {
29
+ return this._channels;
30
+ }
31
+ available() {
32
+ return this._chunkSize - this.filled;
33
+ }
25
34
  write(buffers) {
26
35
  let copied = 0;
27
36
  if (buffers.length > 0) {
@@ -71,4 +80,4 @@ export class Float32ArrayChunkerOutStream {
71
80
  this.outStream.close();
72
81
  }
73
82
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL3N0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sNEJBQTRCO0lBV3ZDLFlBQW9CLFNBQWdDO1FBQWhDLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBVDVDLFNBQUksR0FBRyxJQUFJLEtBQUssRUFBZ0IsQ0FBQztRQUdqQyxjQUFTLEdBQVMsQ0FBQyxDQUFDO1FBQ3BCLGVBQVUsR0FBUyxDQUFDLENBQUM7UUFNM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBZSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBaUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUFnQjtRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUE0QjtRQUVoQyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFFO1lBQ25CLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDbkMsSUFBSSxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUM7WUFDbEMsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDO1lBQ3ZCLDJDQUEyQztZQUUzQyxPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDM0MsSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFO29CQUNsQixNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUNoQjtnQkFDRCxJQUFJLFFBQVEsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUUvQixrREFBa0Q7Z0JBQ2xELEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUU7b0JBQ3RDLElBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUNkLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN4QixHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQzdCO2lCQUNGO2dCQUNELE1BQU0sSUFBSSxNQUFNLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxNQUFNLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDO2dCQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7b0JBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUVqQjthQUNGO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUMxQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwRDtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUdELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmxvYXQzMkFycmF5T3V0U3RyZWFtIHtcclxuXHJcbiAgd3JpdGUoYnVmZmVyczogQXJyYXk8RmxvYXQzMkFycmF5Pik6IG51bWJlcjtcclxuXHJcbiAgZmx1c2goKTogdm9pZDtcclxuXHJcbiAgY2xvc2UoKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZsb2F0MzJBcnJheUNodW5rZXJPdXRTdHJlYW0gaW1wbGVtZW50cyBGbG9hdDMyQXJyYXlPdXRTdHJlYW0ge1xyXG5cclxuICBwcml2YXRlIGJ1ZnMgPSBuZXcgQXJyYXk8RmxvYXQzMkFycmF5PigpO1xyXG4gIHByaXZhdGUgZmlsbGVkOiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgX2NoYW5uZWxzOiBudW1iZXI9MDtcclxuICBwcml2YXRlIF9jaHVua1NpemU6IG51bWJlcj0wO1xyXG5cclxuICBwcml2YXRlIHJlY2VpdmVkRnJhbWVzOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBzZW50RnJhbWVzOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3V0U3RyZWFtOiBGbG9hdDMyQXJyYXlPdXRTdHJlYW0pIHtcclxuICAgIHRoaXMuZmlsbGVkID0gMDtcclxuICAgIHRoaXMucmVjZWl2ZWRGcmFtZXMgPSAwO1xyXG4gICAgdGhpcy5zZW50RnJhbWVzID0gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQnVmZmVycygpIHtcclxuICAgIHRoaXMuYnVmcyA9IG5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KHRoaXMuX2NoYW5uZWxzKTtcclxuICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLl9jaGFubmVsczsgY2grKykge1xyXG4gICAgICB0aGlzLmJ1ZnNbY2hdID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLl9jaHVua1NpemUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IGNodW5rU2l6ZShjaHVua1NpemU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fY2h1bmtTaXplID0gY2h1bmtTaXplO1xyXG4gICAgdGhpcy5jcmVhdGVCdWZmZXJzKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgY2hhbm5lbHMoY2hhbm5lbHM6IG51bWJlcikge1xyXG4gICAgdGhpcy5fY2hhbm5lbHMgPSBjaGFubmVscztcclxuICAgIHRoaXMuY3JlYXRlQnVmZmVycygpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGUoYnVmZmVyczogQXJyYXk8RmxvYXQzMkFycmF5Pik6IG51bWJlciB7XHJcblxyXG4gICAgbGV0IGNvcGllZCA9IDA7XHJcbiAgICBpZihidWZmZXJzLmxlbmd0aD4wKSB7XHJcbiAgICAgIGxldCBidWZmZXJzTGVuID0gYnVmZmVyc1swXS5sZW5ndGg7XHJcbiAgICAgIHRoaXMucmVjZWl2ZWRGcmFtZXMgKz0gYnVmZmVyc0xlbjtcclxuICAgICAgbGV0IGF2YWlsID0gYnVmZmVyc0xlbjtcclxuICAgICAgLy8gRmlsbCBvdXQgYnVmZmVycyB1bnRpbCBhbGwgdmFsdWVzIGNvcGllZFxyXG5cclxuICAgICAgd2hpbGUgKGF2YWlsID4gMCkge1xyXG4gICAgICAgIGxldCB0b0ZpbGwgPSB0aGlzLl9jaHVua1NpemUgLSB0aGlzLmZpbGxlZDtcclxuICAgICAgICBpZiAodG9GaWxsID4gYXZhaWwpIHtcclxuICAgICAgICAgIHRvRmlsbCA9IGF2YWlsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc2xpY2VFbmQgPSBjb3BpZWQgKyB0b0ZpbGw7XHJcblxyXG4gICAgICAgIC8vIEZpcmVmb3ggb24gQW5kcm9pZCBzZW5kcyBvbmx5IHRoZSBmaXJzdCBjaGFubmVsXHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGJ1ZmZlcnNMZW47IGNoKyspIHtcclxuICAgICAgICAgIGlmKGJ1ZmZlcnNbY2hdKSB7XHJcbiAgICAgICAgICAgIGxldCBjcFBydCA9IGJ1ZmZlcnNbY2hdLnNsaWNlKGNvcGllZCwgc2xpY2VFbmQpO1xyXG4gICAgICAgICAgICBsZXQgYnVmID0gdGhpcy5idWZzW2NoXTtcclxuICAgICAgICAgICAgYnVmLnNldChjcFBydCwgdGhpcy5maWxsZWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb3BpZWQgKz0gdG9GaWxsO1xyXG4gICAgICAgIGF2YWlsIC09IHRvRmlsbDtcclxuICAgICAgICB0aGlzLmZpbGxlZCArPSB0b0ZpbGw7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsbGVkID09IHRoaXMuX2NodW5rU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5vdXRTdHJlYW0ud3JpdGUodGhpcy5idWZzKTtcclxuICAgICAgICAgIHRoaXMuc2VudEZyYW1lcyArPSB0aGlzLmZpbGxlZDtcclxuICAgICAgICAgIHRoaXMuZmlsbGVkID0gMDtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29waWVkO1xyXG4gIH1cclxuXHJcbiAgZmx1c2goKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWxsZWQgPiAwKSB7XHJcbiAgICAgIGxldCByZXN0QnVmcyA9IG5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KHRoaXMuX2NoYW5uZWxzKTtcclxuICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IHRoaXMuX2NoYW5uZWxzOyBjaCsrKSB7XHJcbiAgICAgICAgcmVzdEJ1ZnNbY2hdID0gdGhpcy5idWZzW2NoXS5zbGljZSgwLCB0aGlzLmZpbGxlZCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vdXRTdHJlYW0ud3JpdGUocmVzdEJ1ZnMpO1xyXG4gICAgICB0aGlzLm91dFN0cmVhbS5mbHVzaCgpO1xyXG4gICAgICB0aGlzLnNlbnRGcmFtZXMgKz0gdGhpcy5maWxsZWQ7XHJcbiAgICAgIHRoaXMuZmlsbGVkID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMub3V0U3RyZWFtLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL3N0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQU8sNEJBQTRCO0lBV3ZDLFlBQW9CLFNBQWdDO1FBQWhDLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBVDVDLFNBQUksR0FBRyxJQUFJLEtBQUssRUFBZ0IsQ0FBQztRQUdqQyxjQUFTLEdBQVMsQ0FBQyxDQUFDO1FBQ3BCLGVBQVUsR0FBUyxDQUFDLENBQUM7UUFNM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBZSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBaUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQWdCO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FB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LEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmxvYXQzMkFycmF5T3V0U3RyZWFtIHtcclxuXHJcbiAgd3JpdGUoYnVmZmVyczogQXJyYXk8RmxvYXQzMkFycmF5Pik6IG51bWJlcjtcclxuXHJcbiAgZmx1c2goKTogdm9pZDtcclxuXHJcbiAgY2xvc2UoKTogdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZsb2F0MzJBcnJheUNodW5rZXJPdXRTdHJlYW0gaW1wbGVtZW50cyBGbG9hdDMyQXJyYXlPdXRTdHJlYW0ge1xyXG5cclxuICBwcml2YXRlIGJ1ZnMgPSBuZXcgQXJyYXk8RmxvYXQzMkFycmF5PigpO1xyXG4gIHByaXZhdGUgZmlsbGVkOiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgX2NoYW5uZWxzOiBudW1iZXI9MDtcclxuICBwcml2YXRlIF9jaHVua1NpemU6IG51bWJlcj0wO1xyXG5cclxuICBwcml2YXRlIHJlY2VpdmVkRnJhbWVzOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBzZW50RnJhbWVzOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3V0U3RyZWFtOiBGbG9hdDMyQXJyYXlPdXRTdHJlYW0pIHtcclxuICAgIHRoaXMuZmlsbGVkID0gMDtcclxuICAgIHRoaXMucmVjZWl2ZWRGcmFtZXMgPSAwO1xyXG4gICAgdGhpcy5zZW50RnJhbWVzID0gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQnVmZmVycygpIHtcclxuICAgIHRoaXMuYnVmcyA9IG5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KHRoaXMuX2NoYW5uZWxzKTtcclxuICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLl9jaGFubmVsczsgY2grKykge1xyXG4gICAgICB0aGlzLmJ1ZnNbY2hdID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLl9jaHVua1NpemUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0IGNodW5rU2l6ZShjaHVua1NpemU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fY2h1bmtTaXplID0gY2h1bmtTaXplO1xyXG4gICAgdGhpcy5jcmVhdGVCdWZmZXJzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY2h1bmtTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2h1bmtTaXplO1xyXG4gIH1cclxuXHJcbiAgc2V0IGNoYW5uZWxzKGNoYW5uZWxzOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2NoYW5uZWxzID0gY2hhbm5lbHM7XHJcbiAgICB0aGlzLmNyZWF0ZUJ1ZmZlcnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBjaGFubmVscygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NoYW5uZWxzO1xyXG4gIH1cclxuXHJcblxyXG4gIGF2YWlsYWJsZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NodW5rU2l6ZS10aGlzLmZpbGxlZDtcclxuICB9XHJcblxyXG4gIHdyaXRlKGJ1ZmZlcnM6IEFycmF5PEZsb2F0MzJBcnJheT4pOiBudW1iZXIge1xyXG5cclxuICAgIGxldCBjb3BpZWQgPSAwO1xyXG4gICAgaWYoYnVmZmVycy5sZW5ndGg+MCkge1xyXG4gICAgICBsZXQgYnVmZmVyc0xlbiA9IGJ1ZmZlcnNbMF0ubGVuZ3RoO1xyXG4gICAgICB0aGlzLnJlY2VpdmVkRnJhbWVzICs9IGJ1ZmZlcnNMZW47XHJcbiAgICAgIGxldCBhdmFpbCA9IGJ1ZmZlcnNMZW47XHJcbiAgICAgIC8vIEZpbGwgb3V0IGJ1ZmZlcnMgdW50aWwgYWxsIHZhbHVlcyBjb3BpZWRcclxuXHJcbiAgICAgIHdoaWxlIChhdmFpbCA+IDApIHtcclxuICAgICAgICBsZXQgdG9GaWxsID0gdGhpcy5fY2h1bmtTaXplIC0gdGhpcy5maWxsZWQ7XHJcbiAgICAgICAgaWYgKHRvRmlsbCA+IGF2YWlsKSB7XHJcbiAgICAgICAgICB0b0ZpbGwgPSBhdmFpbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNsaWNlRW5kID0gY29waWVkICsgdG9GaWxsO1xyXG5cclxuICAgICAgICAvLyBGaXJlZm94IG9uIEFuZHJvaWQgc2VuZHMgb25seSB0aGUgZmlyc3QgY2hhbm5lbFxyXG4gICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBidWZmZXJzTGVuOyBjaCsrKSB7XHJcbiAgICAgICAgICBpZihidWZmZXJzW2NoXSkge1xyXG4gICAgICAgICAgICBsZXQgY3BQcnQgPSBidWZmZXJzW2NoXS5zbGljZShjb3BpZWQsIHNsaWNlRW5kKTtcclxuICAgICAgICAgICAgbGV0IGJ1ZiA9IHRoaXMuYnVmc1tjaF07XHJcbiAgICAgICAgICAgIGJ1Zi5zZXQoY3BQcnQsIHRoaXMuZmlsbGVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29waWVkICs9IHRvRmlsbDtcclxuICAgICAgICBhdmFpbCAtPSB0b0ZpbGw7XHJcbiAgICAgICAgdGhpcy5maWxsZWQgKz0gdG9GaWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmZpbGxlZCA9PSB0aGlzLl9jaHVua1NpemUpIHtcclxuICAgICAgICAgIHRoaXMub3V0U3RyZWFtLndyaXRlKHRoaXMuYnVmcyk7XHJcbiAgICAgICAgICB0aGlzLnNlbnRGcmFtZXMgKz0gdGhpcy5maWxsZWQ7XHJcbiAgICAgICAgICB0aGlzLmZpbGxlZCA9IDA7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcGllZDtcclxuICB9XHJcblxyXG4gIGZsdXNoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZmlsbGVkID4gMCkge1xyXG4gICAgICBsZXQgcmVzdEJ1ZnMgPSBuZXcgQXJyYXk8RmxvYXQzMkFycmF5Pih0aGlzLl9jaGFubmVscyk7XHJcbiAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLl9jaGFubmVsczsgY2grKykge1xyXG4gICAgICAgIHJlc3RCdWZzW2NoXSA9IHRoaXMuYnVmc1tjaF0uc2xpY2UoMCwgdGhpcy5maWxsZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3V0U3RyZWFtLndyaXRlKHJlc3RCdWZzKTtcclxuICAgICAgdGhpcy5vdXRTdHJlYW0uZmx1c2goKTtcclxuICAgICAgdGhpcy5zZW50RnJhbWVzICs9IHRoaXMuZmlsbGVkO1xyXG4gICAgICB0aGlzLmZpbGxlZCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLm91dFN0cmVhbS5jbG9zZSgpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -4,4 +4,4 @@ export class RecorderComponent {
4
4
  this.dataSaved = true;
5
5
  }
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXJfY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3JlY29yZGVyX2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQWdCLGlCQUFpQjtJQUluQyxZQUFzQixRQUErQjtRQUEvQixhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUZyRCxjQUFTLEdBQVksSUFBSSxDQUFDO0lBRzFCLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3BlZWNoUmVjb3JkZXJVcGxvYWRlcn0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc3BydXBsb2FkZXJcIjtcclxuaW1wb3J0IHtVcGxvYWRlclN0YXR1cywgVXBsb2FkZXJTdGF0dXNDaGFuZ2VFdmVudH0gZnJvbSBcIi4vbmV0L3VwbG9hZGVyXCI7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWFkeVN0YXRlUHJvdmlkZXIge1xyXG4gICAgcmVhZHkoKTpib29sZWFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlY29yZGVyQ29tcG9uZW50IGltcGxlbWVudHMgUmVhZHlTdGF0ZVByb3ZpZGVye1xyXG5cclxuICAgIGRhdGFTYXZlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHVwbG9hZGVyOlNwZWVjaFJlY29yZGVyVXBsb2FkZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCByZWFkeSgpOmJvb2xlYW47XHJcbn1cclxuXHJcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkZXJfY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3JlY29yZGVyX2NvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLE9BQWdCLGlCQUFpQjtJQUluQyxZQUFzQixRQUErQjtRQUEvQixhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUZyRCxjQUFTLEdBQVksSUFBSSxDQUFDO0lBRzFCLENBQUM7Q0FJSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3BlZWNoUmVjb3JkZXJVcGxvYWRlcn0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc3BydXBsb2FkZXJcIjtcclxuaW1wb3J0IHtVcGxvYWRlclN0YXR1cywgVXBsb2FkZXJTdGF0dXNDaGFuZ2VFdmVudH0gZnJvbSBcIi4vbmV0L3VwbG9hZGVyXCI7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWFkeVN0YXRlUHJvdmlkZXIge1xyXG4gICAgcmVhZHkoKTpib29sZWFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlY29yZGVyQ29tcG9uZW50IGltcGxlbWVudHMgUmVhZHlTdGF0ZVByb3ZpZGVye1xyXG5cclxuICAgIGRhdGFTYXZlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHVwbG9hZGVyOlNwZWVjaFJlY29yZGVyVXBsb2FkZXIpIHtcclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCByZWFkeSgpOmJvb2xlYW47XHJcbiAgICBhYnN0cmFjdCBnZXQgc2NyZWVuTG9ja2VkKCk6Ym9vbGVhbjtcclxufVxyXG5cclxuIl19
@@ -37,4 +37,4 @@ export class ProjectUtil {
37
37
  }
38
38
  }
39
39
  ProjectUtil.DEFAULT_AUDIO_CHANNEL_COUNT = 2;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9wcm9qZWN0L3Byb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE1BQU0sQ0FBTixJQUFZLGNBQTRDO0FBQXhELFdBQVksY0FBYztJQUFFLGlDQUFhLENBQUE7SUFBQyxpQ0FBYSxDQUFBO0FBQUEsQ0FBQyxFQUE1QyxjQUFjLEtBQWQsY0FBYyxRQUE4QjtBQUFBLENBQUM7QUFFekQsTUFBTSxDQUFOLElBQVksUUFBMEU7QUFBdEYsV0FBWSxRQUFRO0lBQUUsMkJBQWEsQ0FBQTtJQUFDLDJCQUFhLENBQUE7SUFBQywrQkFBaUIsQ0FBQTtJQUFDLCtCQUFpQixDQUFBO0FBQUEsQ0FBQyxFQUExRSxRQUFRLEtBQVIsUUFBUSxRQUFrRTtBQUN0RixNQUFNLENBQU4sSUFBWSxXQUFpQztBQUE3QyxXQUFZLFdBQVc7SUFBRSxvQ0FBbUIsQ0FBQTtBQUFBLENBQUMsRUFBakMsV0FBVyxLQUFYLFdBQVcsUUFBc0I7QUFBQSxDQUFDO0FBQzlDLE1BQU0sQ0FBTixJQUFZLE9BQXlGO0FBQXJHLFdBQVksT0FBTztJQUFFLDhCQUFpQixDQUFBO0lBQUMsZ0NBQW1CLENBQUE7SUFBQyw0QkFBZSxDQUFBO0lBQUMsd0JBQVcsQ0FBQTtJQUFDLDBCQUFhLENBQUE7QUFBQSxDQUFDLEVBQXpGLE9BQU8sS0FBUCxPQUFPLFFBQWtGO0FBb0JyRyxNQUFNLE9BQU8sV0FBVztJQUl0QixNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBZTtRQUN0QyxJQUFJLEdBQUcsR0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUM7UUFDaEQsSUFBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUM7WUFDNUIsR0FBRyxHQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQztTQUNsRDthQUFLLElBQUcsT0FBTyxDQUFDLFdBQVcsRUFBQztZQUMzQixHQUFHLEdBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7U0FDbEM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O0FBVnNCLHVDQUEyQixHQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvRm9ybWF0IHtcclxuICBjaGFubmVsczogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhQ2FwdHVyZUZvcm1hdCB7XHJcbiAgYXVkaW9DaGFubmVsQ291bnQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdWRpb0RldmljZSB7XHJcbiAgbmFtZSA6IHN0cmluZyxcclxuICBwbGF5YmFjayA6IGJvb2xlYW4sXHJcbiAgcmVnZXggOiBib29sZWFuXHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBDb25zdHJhaW50VHlwZSB7RXhhY3Q9J0VYQUNUJyxJZGVhbD0nSURFQUwnfTtcclxuXHJcbmV4cG9ydCBlbnVtIFBsYXRmb3JtIHtMaW51eD0nTElOVVgnLG1hY09TPSdNQUNPUycsV2luZG93cz0nV0lORE9XUycsQW5kcm9pZD0nQU5EUk9JRCd9XHJcbmV4cG9ydCBlbnVtIEJyb3dzZXJCYXNlIHtDaHJvbWl1bT0nQ0hST01JVU0nfTtcclxuZXhwb3J0IGVudW0gQnJvd3NlciB7RmlyZWZveD0nRklSRUZPWCcsQ2hyb21pdW09J0NIUk9NSVVNJyxDaHJvbWU9J0NIUk9NRScsRWRnZT0nRURHRScsT3BlcmE9J09QRVJBJ31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0dhaW5Db250cm9sQ29uZmlnIHtcclxuICB2YWx1ZTogYm9vbGVhbixcclxuICAvL2NvbnN0cmFpbnRUeXBlIDogQ29uc3RyYWludFR5cGUsXHJcbiAgcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gIC8vYnJvd3NlckJhc2U6QnJvd3NlckJhc2UsXHJcbiAgLy9icm93c2VyOkJyb3dzZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0IHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgcmVjb3JkaW5nRGV2aWNlV2FrZUxvY2s/OmJvb2xlYW4sXHJcbiAgYXVkaW9Gb3JtYXQ/OiBBdWRpb0Zvcm1hdCxcclxuICBtZWRpYUNhcHR1cmVGb3JtYXQ/OiBNZWRpYUNhcHR1cmVGb3JtYXQsXHJcbiAgYXV0b0dhaW5Db250cm9sQ29uZmlncz86QXJyYXk8QXV0b0dhaW5Db250cm9sQ29uZmlnPixcclxuICBhdWRpb0RldmljZXM/OiBBcnJheTxBdWRpb0RldmljZT5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBQcm9qZWN0VXRpbCB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BVURJT19DSEFOTkVMX0NPVU5UPTI7XHJcblxyXG4gIHN0YXRpYyBhdWRpb0NoYW5uZWxDb3VudChwcm9qZWN0OlByb2plY3QpOiBudW1iZXJ7XHJcbiAgICBsZXQgY2hzPVByb2plY3RVdGlsLkRFRkFVTFRfQVVESU9fQ0hBTk5FTF9DT1VOVDtcclxuICAgIGlmKHByb2plY3QubWVkaWFDYXB0dXJlRm9ybWF0KXtcclxuICAgICAgY2hzPXByb2plY3QubWVkaWFDYXB0dXJlRm9ybWF0LmF1ZGlvQ2hhbm5lbENvdW50O1xyXG4gICAgfWVsc2UgaWYocHJvamVjdC5hdWRpb0Zvcm1hdCl7XHJcbiAgICAgIGNocz1wcm9qZWN0LmF1ZGlvRm9ybWF0LmNoYW5uZWxzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNocztcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuXHJcbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9wcm9qZWN0L3Byb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE1BQU0sQ0FBTixJQUFZLGNBQTRDO0FBQXhELFdBQVksY0FBYztJQUFFLGlDQUFhLENBQUE7SUFBQyxpQ0FBYSxDQUFBO0FBQUEsQ0FBQyxFQUE1QyxjQUFjLEtBQWQsY0FBYyxRQUE4QjtBQUFBLENBQUM7QUFFekQsTUFBTSxDQUFOLElBQVksUUFBMEU7QUFBdEYsV0FBWSxRQUFRO0lBQUUsMkJBQWEsQ0FBQTtJQUFDLDJCQUFhLENBQUE7SUFBQywrQkFBaUIsQ0FBQTtJQUFDLCtCQUFpQixDQUFBO0FBQUEsQ0FBQyxFQUExRSxRQUFRLEtBQVIsUUFBUSxRQUFrRTtBQUN0RixNQUFNLENBQU4sSUFBWSxXQUFpQztBQUE3QyxXQUFZLFdBQVc7SUFBRSxvQ0FBbUIsQ0FBQTtBQUFBLENBQUMsRUFBakMsV0FBVyxLQUFYLFdBQVcsUUFBc0I7QUFBQSxDQUFDO0FBQzlDLE1BQU0sQ0FBTixJQUFZLE9BQXlGO0FBQXJHLFdBQVksT0FBTztJQUFFLDhCQUFpQixDQUFBO0lBQUMsZ0NBQW1CLENBQUE7SUFBQyw0QkFBZSxDQUFBO0lBQUMsd0JBQVcsQ0FBQTtJQUFDLDBCQUFhLENBQUE7QUFBQSxDQUFDLEVBQXpGLE9BQU8sS0FBUCxPQUFPLFFBQWtGO0FBcUJyRyxNQUFNLE9BQU8sV0FBVztJQUl0QixNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBZTtRQUN0QyxJQUFJLEdBQUcsR0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUM7UUFDaEQsSUFBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUM7WUFDNUIsR0FBRyxHQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQztTQUNsRDthQUFLLElBQUcsT0FBTyxDQUFDLFdBQVcsRUFBQztZQUMzQixHQUFHLEdBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7U0FDbEM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O0FBVnNCLHVDQUEyQixHQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvRm9ybWF0IHtcclxuICBjaGFubmVsczogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhQ2FwdHVyZUZvcm1hdCB7XHJcbiAgYXVkaW9DaGFubmVsQ291bnQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBdWRpb0RldmljZSB7XHJcbiAgbmFtZSA6IHN0cmluZyxcclxuICBwbGF5YmFjayA6IGJvb2xlYW4sXHJcbiAgcmVnZXggOiBib29sZWFuXHJcbn1cclxuXHJcblxyXG5leHBvcnQgZW51bSBDb25zdHJhaW50VHlwZSB7RXhhY3Q9J0VYQUNUJyxJZGVhbD0nSURFQUwnfTtcclxuXHJcbmV4cG9ydCBlbnVtIFBsYXRmb3JtIHtMaW51eD0nTElOVVgnLG1hY09TPSdNQUNPUycsV2luZG93cz0nV0lORE9XUycsQW5kcm9pZD0nQU5EUk9JRCd9XHJcbmV4cG9ydCBlbnVtIEJyb3dzZXJCYXNlIHtDaHJvbWl1bT0nQ0hST01JVU0nfTtcclxuZXhwb3J0IGVudW0gQnJvd3NlciB7RmlyZWZveD0nRklSRUZPWCcsQ2hyb21pdW09J0NIUk9NSVVNJyxDaHJvbWU9J0NIUk9NRScsRWRnZT0nRURHRScsT3BlcmE9J09QRVJBJ31cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0dhaW5Db250cm9sQ29uZmlnIHtcclxuICB2YWx1ZTogYm9vbGVhbixcclxuICAvL2NvbnN0cmFpbnRUeXBlIDogQ29uc3RyYWludFR5cGUsXHJcbiAgcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gIC8vYnJvd3NlckJhc2U6QnJvd3NlckJhc2UsXHJcbiAgLy9icm93c2VyOkJyb3dzZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0IHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgcmVjb3JkaW5nRGV2aWNlV2FrZUxvY2s/OmJvb2xlYW4sXHJcbiAgYXVkaW9Gb3JtYXQ/OiBBdWRpb0Zvcm1hdCxcclxuICBtZWRpYUNhcHR1cmVGb3JtYXQ/OiBNZWRpYUNhcHR1cmVGb3JtYXQsXHJcbiAgYXV0b0dhaW5Db250cm9sQ29uZmlncz86QXJyYXk8QXV0b0dhaW5Db250cm9sQ29uZmlnPixcclxuICBhdWRpb0RldmljZXM/OiBBcnJheTxBdWRpb0RldmljZT4sXHJcbiAgY2h1bmtlZFJlY29yZGluZz86IGJvb2xlYW5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBQcm9qZWN0VXRpbCB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BVURJT19DSEFOTkVMX0NPVU5UPTI7XHJcblxyXG4gIHN0YXRpYyBhdWRpb0NoYW5uZWxDb3VudChwcm9qZWN0OlByb2plY3QpOiBudW1iZXJ7XHJcbiAgICBsZXQgY2hzPVByb2plY3RVdGlsLkRFRkFVTFRfQVVESU9fQ0hBTk5FTF9DT1VOVDtcclxuICAgIGlmKHByb2plY3QubWVkaWFDYXB0dXJlRm9ybWF0KXtcclxuICAgICAgY2hzPXByb2plY3QubWVkaWFDYXB0dXJlRm9ybWF0LmF1ZGlvQ2hhbm5lbENvdW50O1xyXG4gICAgfWVsc2UgaWYocHJvamVjdC5hdWRpb0Zvcm1hdCl7XHJcbiAgICAgIGNocz1wcm9qZWN0LmF1ZGlvRm9ybWF0LmNoYW5uZWxzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNocztcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuXHJcbiJdfQ==
@@ -53,12 +53,12 @@ export class ProjectService {
53
53
  }
54
54
  }
55
55
  ProjectService.PROJECT_API_CTX = 'project';
56
- ProjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ProjectService, deps: [{ token: i1.HttpClient }, { token: i2.PlatformLocation }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
57
- ProjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ProjectService });
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ProjectService, decorators: [{
56
+ ProjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProjectService, deps: [{ token: i1.HttpClient }, { token: i2.PlatformLocation }, { token: SPEECHRECORDER_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
57
+ ProjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProjectService });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProjectService, decorators: [{
59
59
  type: Injectable
60
60
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.PlatformLocation }, { type: i3.SpeechRecorderConfig, decorators: [{
61
61
  type: Inject,
62
62
  args: [SPEECHRECORDER_CONFIG]
63
63
  }] }]; } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Byb2plY3QvcHJvamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBT3ZDLE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQW9CLElBQWUsRUFBUyxnQkFBaUMsRUFBd0MsTUFBNEI7UUFBN0gsU0FBSSxHQUFKLElBQUksQ0FBVztRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFBd0MsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFGekksb0JBQWUsR0FBUyxLQUFLLENBQUM7UUFJcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQTtRQUVwQixJQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQy9CLFdBQVcsR0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1NBQ2hDO1FBQ0QsSUFBRyxXQUFXLEtBQUssRUFBRSxFQUFDO1lBQ3BCLFdBQVcsR0FBQyxXQUFXLEdBQUMsR0FBRyxDQUFBO1NBQzVCO1FBQ0QsSUFBRyxNQUFNLElBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxlQUFlLElBQUUsSUFBSSxFQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUM3QztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUM7SUFFcEUsQ0FBQztJQUVPLHFDQUFxQyxDQUFDLEdBQVU7UUFDdEQsSUFBSSxNQUFNLEdBQUMsR0FBRyxDQUFDO1FBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDeEQsMkJBQTJCO1lBQzNCLDJFQUEyRTtZQUMzRSxNQUFNLEdBQUcsTUFBTSxHQUFHLG9CQUFvQixHQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN4RDtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFTO1FBQ2xCLElBQUksUUFBUSxHQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFpQixFQUFDLGVBQXNCO1FBQ3pELElBQUksUUFBUSxHQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLDhGQUE4RjtRQUM5Riw0RkFBNEY7UUFDNUYsSUFBSSxhQUFhLEdBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFFLEdBQUcsR0FBQyxhQUFhLENBQUM7SUFDaEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQVM7UUFDekIsSUFBSSxNQUFNLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFVLE1BQU0sRUFBQyxFQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQTtJQUMvRSxDQUFDOztBQWxEcUIsOEJBQWUsR0FBQyxTQUFTLENBQUE7MkdBRHJDLGNBQWMsNEVBSzZELHFCQUFxQjsrR0FMaEcsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFNc0UsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ3JlYXRlZCBieSBrbGF1c2ogb24gMTcuMDYuMjAxNy5cclxuICovXHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtBcGlUeXBlLCBTUEVFQ0hSRUNPUkRFUl9DT05GSUcsIFNwZWVjaFJlY29yZGVyQ29uZmlnfSBmcm9tIFwiLi4vLi4vc3ByLmNvbmZpZ1wiO1xyXG5pbXBvcnQge1Byb2plY3R9IGZyb20gXCIuL3Byb2plY3RcIjtcclxuaW1wb3J0IHtVVUlEfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvamVjdFNlcnZpY2Uge1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPSkVDVF9BUElfQ1RYPSdwcm9qZWN0J1xyXG4gIHByaXZhdGUgcHJvamVjdEN0eFVybDpzdHJpbmc7XHJcbiAgcHJpdmF0ZSB3aXRoQ3JlZGVudGlhbHM6Ym9vbGVhbj1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQscHJpdmF0ZSBwbGF0Zm9ybUxvYWN0aW9uOlBsYXRmb3JtTG9jYXRpb24sQEluamVjdChTUEVFQ0hSRUNPUkRFUl9DT05GSUcpIHByaXZhdGUgY29uZmlnPzpTcGVlY2hSZWNvcmRlckNvbmZpZykge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiQmFzZSBIcmVmOiBcIitwbGF0Zm9ybUxvYWN0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpKTtcclxuXHJcbiAgICBsZXQgYXBpRW5kUG9pbnQgPSAnJ1xyXG5cclxuICAgIGlmKGNvbmZpZyAmJiBjb25maWcuYXBpRW5kUG9pbnQpIHtcclxuICAgICAgYXBpRW5kUG9pbnQ9Y29uZmlnLmFwaUVuZFBvaW50O1xyXG4gICAgfVxyXG4gICAgaWYoYXBpRW5kUG9pbnQgIT09ICcnKXtcclxuICAgICAgYXBpRW5kUG9pbnQ9YXBpRW5kUG9pbnQrJy8nXHJcbiAgICB9XHJcbiAgICBpZihjb25maWchPW51bGwgJiYgY29uZmlnLndpdGhDcmVkZW50aWFscyE9bnVsbCl7XHJcbiAgICAgIHRoaXMud2l0aENyZWRlbnRpYWxzPWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcm9qZWN0Q3R4VXJsID0gYXBpRW5kUG9pbnQgKyBQcm9qZWN0U2VydmljZS5QUk9KRUNUX0FQSV9DVFg7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBlbmRSZXF1ZXN0VVVJREZvckRldmVsb3BtZW50U2VydmVyKHVybDpzdHJpbmcpOnN0cmluZ3tcclxuICAgIGxldCByZXNVcmw9dXJsO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmFwaVR5cGUgPT09IEFwaVR5cGUuRklMRVMpIHtcclxuICAgICAgLy8gZm9yIGRldmVsb3BtZW50IGFuZCBkZW1vXHJcbiAgICAgIC8vIGFwcGVuZCBVVUlEIHRvIG1ha2UgcmVxdWVzdCBVUkwgdW5pcXVlIHRvIGF2b2lkIGxvY2FsaG9zdCBzZXJ2ZXIgY2FjaGluZ1xyXG4gICAgICByZXNVcmwgPSByZXNVcmwgKyAnLmpzb24/cmVxdWVzdFVVSUQ9JytVVUlELmdlbmVyYXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzVXJsXHJcbiAgfVxyXG5cclxuICBwcm9qZWN0VXJsKGlkOnN0cmluZyk6c3RyaW5ne1xyXG4gICAgbGV0IGVuY1ByaklkPWVuY29kZVVSSUNvbXBvbmVudChpZCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcHBlbmRSZXF1ZXN0VVVJREZvckRldmVsb3BtZW50U2VydmVyKHRoaXMucHJvamVjdEN0eFVybCArICcvJyArIGVuY1ByaklkKTtcclxuICB9XHJcblxyXG4gIHByb2plY3RSZXNvdXJjZVVybChwcm9qZWN0SWQ6IHN0cmluZyxyZWxSZXNvdXJjZVBhdGg6c3RyaW5nKTpzdHJpbmd7XHJcbiAgICBsZXQgZW5jUHJqSWQ9ZW5jb2RlVVJJQ29tcG9uZW50KHByb2plY3RJZCk7XHJcbiAgICAvLyBVc2UgZW5jb2RlVVJJIGhlcmUgc2luY2UgdGhlIHJlbGF0aWNlIHJlc291cmNlIHBhdGggZnJvbSByZWNvcmRpbmcgc2NyaXB0cyBpcyBhbHJlYWR5IGEgVVJJXHJcbiAgICAvLyBlbmNvZGVVUklDb21wb25lbnQgZnVuY3Rpb24gd291bGQgZW5jb2RlIHRoZSBzbGFzaGVzIGFuZCBmZXRjaGluZyB0aGUgcmVzb3VyY2Ugd291bGQgZmFpbFxyXG4gICAgbGV0IGVuY1JlbFJlc1BhdGg9ZW5jb2RlVVJJKHJlbFJlc291cmNlUGF0aCk7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0Q3R4VXJsICsgJy8nICsgZW5jUHJqSWQgKycvJytlbmNSZWxSZXNQYXRoO1xyXG4gIH1cclxuXHJcbiAgcHJvamVjdE9ic2VydmFibGUoaWQ6c3RyaW5nKTpPYnNlcnZhYmxlPFByb2plY3Q+e1xyXG4gICAgbGV0IHByalVybD10aGlzLnByb2plY3RVcmwoaWQpO1xyXG4gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFByb2plY3Q+KHByalVybCx7d2l0aENyZWRlbnRpYWxzOiB0aGlzLndpdGhDcmVkZW50aWFsc30pXHJcbiAgIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3Byb2plY3QvcHJvamVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBT3ZDLE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQW9CLElBQWUsRUFBUyxnQkFBaUMsRUFBd0MsTUFBNEI7UUFBN0gsU0FBSSxHQUFKLElBQUksQ0FBVztRQUFTLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFBd0MsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFGekksb0JBQWUsR0FBUyxLQUFLLENBQUM7UUFJcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQTtRQUVwQixJQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQy9CLFdBQVcsR0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1NBQ2hDO1FBQ0QsSUFBRyxXQUFXLEtBQUssRUFBRSxFQUFDO1lBQ3BCLFdBQVcsR0FBQyxXQUFXLEdBQUMsR0FBRyxDQUFBO1NBQzVCO1FBQ0QsSUFBRyxNQUFNLElBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxlQUFlLElBQUUsSUFBSSxFQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUM3QztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUM7SUFFcEUsQ0FBQztJQUVPLHFDQUFxQyxDQUFDLEdBQVU7UUFDdEQsSUFBSSxNQUFNLEdBQUMsR0FBRyxDQUFDO1FBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDeEQsMkJBQTJCO1lBQzNCLDJFQUEyRTtZQUMzRSxNQUFNLEdBQUcsTUFBTSxHQUFHLG9CQUFvQixHQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN4RDtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFTO1FBQ2xCLElBQUksUUFBUSxHQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLHFDQUFxQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFpQixFQUFDLGVBQXNCO1FBQ3pELElBQUksUUFBUSxHQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLDhGQUE4RjtRQUM5Riw0RkFBNEY7UUFDNUYsSUFBSSxhQUFhLEdBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFFLEdBQUcsR0FBQyxhQUFhLENBQUM7SUFDaEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQVM7UUFDekIsSUFBSSxNQUFNLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFVLE1BQU0sRUFBQyxFQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQTtJQUMvRSxDQUFDOztBQWxEcUIsOEJBQWUsR0FBQyxTQUFTLENBQUE7NEdBRHJDLGNBQWMsNEVBSzZELHFCQUFxQjtnSEFMaEcsY0FBYzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFNc0UsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ3JlYXRlZCBieSBrbGF1c2ogb24gMTcuMDYuMjAxNy5cclxuICovXHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHtBcGlUeXBlLCBTUEVFQ0hSRUNPUkRFUl9DT05GSUcsIFNwZWVjaFJlY29yZGVyQ29uZmlnfSBmcm9tIFwiLi4vLi4vc3ByLmNvbmZpZ1wiO1xyXG5pbXBvcnQge1Byb2plY3R9IGZyb20gXCIuL3Byb2plY3RcIjtcclxuaW1wb3J0IHtVVUlEfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbHNcIjtcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvamVjdFNlcnZpY2Uge1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPSkVDVF9BUElfQ1RYPSdwcm9qZWN0J1xyXG4gIHByaXZhdGUgcHJvamVjdEN0eFVybDpzdHJpbmc7XHJcbiAgcHJpdmF0ZSB3aXRoQ3JlZGVudGlhbHM6Ym9vbGVhbj1mYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOkh0dHBDbGllbnQscHJpdmF0ZSBwbGF0Zm9ybUxvYWN0aW9uOlBsYXRmb3JtTG9jYXRpb24sQEluamVjdChTUEVFQ0hSRUNPUkRFUl9DT05GSUcpIHByaXZhdGUgY29uZmlnPzpTcGVlY2hSZWNvcmRlckNvbmZpZykge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiQmFzZSBIcmVmOiBcIitwbGF0Zm9ybUxvYWN0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpKTtcclxuXHJcbiAgICBsZXQgYXBpRW5kUG9pbnQgPSAnJ1xyXG5cclxuICAgIGlmKGNvbmZpZyAmJiBjb25maWcuYXBpRW5kUG9pbnQpIHtcclxuICAgICAgYXBpRW5kUG9pbnQ9Y29uZmlnLmFwaUVuZFBvaW50O1xyXG4gICAgfVxyXG4gICAgaWYoYXBpRW5kUG9pbnQgIT09ICcnKXtcclxuICAgICAgYXBpRW5kUG9pbnQ9YXBpRW5kUG9pbnQrJy8nXHJcbiAgICB9XHJcbiAgICBpZihjb25maWchPW51bGwgJiYgY29uZmlnLndpdGhDcmVkZW50aWFscyE9bnVsbCl7XHJcbiAgICAgIHRoaXMud2l0aENyZWRlbnRpYWxzPWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcm9qZWN0Q3R4VXJsID0gYXBpRW5kUG9pbnQgKyBQcm9qZWN0U2VydmljZS5QUk9KRUNUX0FQSV9DVFg7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBlbmRSZXF1ZXN0VVVJREZvckRldmVsb3BtZW50U2VydmVyKHVybDpzdHJpbmcpOnN0cmluZ3tcclxuICAgIGxldCByZXNVcmw9dXJsO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmFwaVR5cGUgPT09IEFwaVR5cGUuRklMRVMpIHtcclxuICAgICAgLy8gZm9yIGRldmVsb3BtZW50IGFuZCBkZW1vXHJcbiAgICAgIC8vIGFwcGVuZCBVVUlEIHRvIG1ha2UgcmVxdWVzdCBVUkwgdW5pcXVlIHRvIGF2b2lkIGxvY2FsaG9zdCBzZXJ2ZXIgY2FjaGluZ1xyXG4gICAgICByZXNVcmwgPSByZXNVcmwgKyAnLmpzb24/cmVxdWVzdFVVSUQ9JytVVUlELmdlbmVyYXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzVXJsXHJcbiAgfVxyXG5cclxuICBwcm9qZWN0VXJsKGlkOnN0cmluZyk6c3RyaW5ne1xyXG4gICAgbGV0IGVuY1ByaklkPWVuY29kZVVSSUNvbXBvbmVudChpZCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcHBlbmRSZXF1ZXN0VVVJREZvckRldmVsb3BtZW50U2VydmVyKHRoaXMucHJvamVjdEN0eFVybCArICcvJyArIGVuY1ByaklkKTtcclxuICB9XHJcblxyXG4gIHByb2plY3RSZXNvdXJjZVVybChwcm9qZWN0SWQ6IHN0cmluZyxyZWxSZXNvdXJjZVBhdGg6c3RyaW5nKTpzdHJpbmd7XHJcbiAgICBsZXQgZW5jUHJqSWQ9ZW5jb2RlVVJJQ29tcG9uZW50KHByb2plY3RJZCk7XHJcbiAgICAvLyBVc2UgZW5jb2RlVVJJIGhlcmUgc2luY2UgdGhlIHJlbGF0aWNlIHJlc291cmNlIHBhdGggZnJvbSByZWNvcmRpbmcgc2NyaXB0cyBpcyBhbHJlYWR5IGEgVVJJXHJcbiAgICAvLyBlbmNvZGVVUklDb21wb25lbnQgZnVuY3Rpb24gd291bGQgZW5jb2RlIHRoZSBzbGFzaGVzIGFuZCBmZXRjaGluZyB0aGUgcmVzb3VyY2Ugd291bGQgZmFpbFxyXG4gICAgbGV0IGVuY1JlbFJlc1BhdGg9ZW5jb2RlVVJJKHJlbFJlc291cmNlUGF0aCk7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0Q3R4VXJsICsgJy8nICsgZW5jUHJqSWQgKycvJytlbmNSZWxSZXNQYXRoO1xyXG4gIH1cclxuXHJcbiAgcHJvamVjdE9ic2VydmFibGUoaWQ6c3RyaW5nKTpPYnNlcnZhYmxlPFByb2plY3Q+e1xyXG4gICAgbGV0IHByalVybD10aGlzLnByb2plY3RVcmwoaWQpO1xyXG4gICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFByb2plY3Q+KHByalVybCx7d2l0aENyZWRlbnRpYWxzOiB0aGlzLndpdGhDcmVkZW50aWFsc30pXHJcbiAgIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=