@ai-table/grid 0.0.48 → 0.0.49

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.
@@ -12,6 +12,8 @@ export declare class AITableDragComponent implements OnInit, OnDestroy {
12
12
  private mouseStartPosition;
13
13
  private aiTableDrag;
14
14
  private timer;
15
+ private mouseDownTimeout;
16
+ private isDraggingEnabled;
15
17
  private mousedownListener?;
16
18
  private mousemoveListener?;
17
19
  private mouseupListener?;
@@ -24,6 +26,7 @@ export declare class AITableDragComponent implements OnInit, OnDestroy {
24
26
  private movingColumn;
25
27
  private movingColumnWidth;
26
28
  private handleDragEnd;
29
+ private clearDragState;
27
30
  private calculateDragWidth;
28
31
  private setDisplayStyle;
29
32
  private setCursorStyle;
@@ -1 +1 @@
1
- {"version":3,"file":"drag.component.d.ts","sourceRoot":"","sources":["../../../../packages/grid/src/components/drag/drag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,UAAU,EAAU,SAAS,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AACrI,OAAO,EAAoB,WAAW,EAAY,MAAM,YAAY,CAAC;;AAIrE,qBASa,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAC1D,OAAO,wDAAyB;IAEhC,OAAO,CAAC,2BAA2B,CAAuC;IAE1E,OAAO,CAAC,OAAO,CAAqB;IAEpC,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,CAAmC;IAEtE,OAAO,CAAC,IAAI,CAAe;IAE3B,OAAO,CAAC,aAAa,CAAe;IAEpC,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,kBAAkB,CAAyC;IAEnE,OAAO,CAAC,WAAW,CAAiC;IAEpD,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,eAAe,CAAC,CAAa;;IAMrC,QAAQ;IAKR,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,YAAY;IA6DpB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,kBAAkB;IAI1B,WAAW;yCA9NF,oBAAoB;2CAApB,oBAAoB;CAwOhC"}
1
+ {"version":3,"file":"drag.component.d.ts","sourceRoot":"","sources":["../../../../packages/grid/src/components/drag/drag.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,UAAU,EAAU,SAAS,EAAE,MAAM,EAAqB,MAAM,eAAe,CAAC;AACrI,OAAO,EAAoB,WAAW,EAAY,MAAM,YAAY,CAAC;;AAIrE,qBASa,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAC1D,OAAO,wDAAyB;IAEhC,OAAO,CAAC,2BAA2B,CAAuC;IAE1E,OAAO,CAAC,OAAO,CAAqB;IAEpC,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,CAAmC;IAEtE,OAAO,CAAC,IAAI,CAAe;IAE3B,OAAO,CAAC,aAAa,CAAe;IAEpC,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,kBAAkB,CAAyC;IAEnE,OAAO,CAAC,WAAW,CAAiC;IAEpD,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAa;IACvC,OAAO,CAAC,eAAe,CAAC,CAAa;;IAMrC,QAAQ;IAKR,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,mBAAmB;IAwC3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,YAAY;IA6DpB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,kBAAkB;IAI1B,WAAW;yCAnQF,oBAAoB;2CAApB,oBAAoB;CA6QhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"coordinate.d.ts","sourceRoot":"","sources":["../../../packages/grid/src/core/coordinate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAExG;;GAEG;AACH,qBAAa,UAAU;IACnB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAExB,iBAAiB,EAAE,cAAc,CAAM;IAEvC,oBAAoB,EAAE,cAAc,CAAM;IAE1C,WAAW,EAAE,MAAM,CAAC;IAEpB,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,SAAM;IAElB,eAAe,SAAM;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAM;IACzD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAM;IAC5D,iBAAiB,EAAE,MAAM,CAAC;gBAErB,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,iBAAsB,EACtB,oBAAyB,EACzB,WAAe,EACf,cAAkB,EAClB,iBAAqB,EACxB,EAAE,iBAAiB;IAcpB,IAAW,SAAS,IAIS,MAAM,CAFlC;IAED,IAAW,SAAS,CAAC,MAAM,EAAE,MAAM,EAElC;IAED;;OAEG;IACH,IAAW,UAAU,WAGpB;IAED;;OAEG;IACH,IAAW,WAAW,WAGrB;IAED;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM;IAIjC;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM;IAInC;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,mBAAmB;IAoC7F;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAgBrC;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB;IAgB1E;;OAEG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAItC;;OAEG;IACI,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAa5D;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAIzC;;OAEG;IACI,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAahE;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM;IAIpC;;OAEG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM;IAI1C;;OAEG;IACH,IAAI,iBAAiB,WAEpB;IAED;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;;;CAU3D"}
1
+ {"version":3,"file":"coordinate.d.ts","sourceRoot":"","sources":["../../../packages/grid/src/core/coordinate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAExG;;GAEG;AACH,qBAAa,UAAU;IACnB,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAExB,iBAAiB,EAAE,cAAc,CAAM;IAEvC,oBAAoB,EAAE,cAAc,CAAM;IAE1C,WAAW,EAAE,MAAM,CAAC;IAEpB,cAAc,EAAE,MAAM,CAAC;IAEvB,YAAY,SAAM;IAElB,eAAe,SAAM;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAM;IACzD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAM;IAC5D,iBAAiB,EAAE,MAAM,CAAC;gBAErB,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,SAAS,EACT,iBAAsB,EACtB,oBAAyB,EACzB,WAAe,EACf,cAAkB,EAClB,iBAAqB,EACxB,EAAE,iBAAiB;IAcpB,IAAW,SAAS,IAIS,MAAM,CAFlC;IAED,IAAW,SAAS,CAAC,MAAM,EAAE,MAAM,EAElC;IAED;;OAEG;IACH,IAAW,UAAU,WAGpB;IAED;;OAEG;IACH,IAAW,WAAW,WAGrB;IAED;;OAEG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM;IAIjC;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI5C;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,mBAAmB;IAoC7F;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAgBrC;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB;IAgB1E;;OAEG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM;IAItC;;OAEG;IACI,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAa5D;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAIzC;;OAEG;IACI,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAahE;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM;IAIpC;;OAEG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM;IAI1C;;OAEG;IACH,IAAI,iBAAiB,WAEpB;IAED;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;;;CAU3D"}
@@ -12,6 +12,8 @@ export class AITableDragComponent {
12
12
  this.draggedData = null;
13
13
  this.mouseStartPosition = null;
14
14
  this.aiTableDrag = null;
15
+ this.mouseDownTimeout = null;
16
+ this.isDraggingEnabled = false;
15
17
  effect(() => this.handleDragStateChange());
16
18
  }
17
19
  ngOnInit() {
@@ -25,8 +27,18 @@ export class AITableDragComponent {
25
27
  setupEventListeners() {
26
28
  this.mousedownListener = this.render2.listen('window', 'mousedown', (e) => {
27
29
  this.mouseStartPosition = { x: e.x, y: e.y };
30
+ if (this.mouseDownTimeout) {
31
+ clearTimeout(this.mouseDownTimeout);
32
+ }
33
+ this.isDraggingEnabled = false;
34
+ this.mouseDownTimeout = setTimeout(() => {
35
+ this.isDraggingEnabled = true;
36
+ }, 200);
28
37
  });
29
38
  this.mousemoveListener = this.render2.listen('window', 'mousemove', (e) => {
39
+ if (!this.isDraggingEnabled) {
40
+ return;
41
+ }
30
42
  if (this.timer) {
31
43
  cancelAnimationFrame(this.timer);
32
44
  }
@@ -37,6 +49,11 @@ export class AITableDragComponent {
37
49
  });
38
50
  });
39
51
  this.mouseupListener = this.render2.listen('window', 'mouseup', () => {
52
+ if (this.mouseDownTimeout) {
53
+ clearTimeout(this.mouseDownTimeout);
54
+ this.mouseDownTimeout = null;
55
+ }
56
+ this.isDraggingEnabled = false;
40
57
  this.mouseStartPosition = null;
41
58
  this.aiTableDrag = null;
42
59
  this.handleDragEnd();
@@ -151,11 +168,26 @@ export class AITableDragComponent {
151
168
  };
152
169
  }
153
170
  handleDragEnd() {
154
- this.setDisplayStyle('none');
155
171
  if (this.draggedData) {
156
172
  this.dragEnd.emit({ ...this.draggedData });
157
- this.draggedData = null;
158
173
  }
174
+ this.clearDragState();
175
+ }
176
+ clearDragState() {
177
+ this.setDisplayStyle('none');
178
+ this.setRectStyles({
179
+ width: '0',
180
+ height: '0',
181
+ top: '0',
182
+ left: '0'
183
+ });
184
+ this.setAuxiliaryLineStyles({
185
+ width: '0',
186
+ height: '0',
187
+ top: '0',
188
+ left: '0'
189
+ });
190
+ this.draggedData = null;
159
191
  }
160
192
  calculateDragWidth(fields, coordinate, drag) {
161
193
  let width = 0;
@@ -206,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
206
238
  class: 'drag-container'
207
239
  }, template: "<div class=\"rect\"></div>\n<div class=\"auxiliary-line\"></div>" }]
208
240
  }], ctorParameters: () => [] });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBaUMsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVd4RCxNQUFNLE9BQU8sb0JBQW9CO0lBeUI3QjtRQXhCQSxZQUFPLEdBQUcsTUFBTSxFQUFlLENBQUM7UUFFeEIsZ0NBQTJCLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFbEUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQyxlQUFVLEdBQTRCLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBTTlELGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQUV2Qyx1QkFBa0IsR0FBb0MsSUFBSSxDQUFDO1FBRTNELGdCQUFXLEdBQTRCLElBQUksQ0FBQztRQVNoRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJ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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBSVRhYmxlRHJhZ1N0YXRlLCBEcmFnRW5kRGF0YSwgRHJhZ1R5cGUgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTl9DT0xVTU5fV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ3JpZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWktdGFibGUtZHJhZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyYWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2RyYWctY29udGFpbmVyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZURyYWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgZHJhZ0VuZCA9IG91dHB1dDxEcmFnRW5kRGF0YT4oKTtcblxuICAgIHByaXZhdGUgYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSk7XG5cbiAgICBwcml2YXRlIHJlbmRlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAgIHByaXZhdGUgcmVjdCE6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBhdXhpbGlhcnlMaW5lITogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIGRyYWdnZWREYXRhOiBEcmFnRW5kRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBtb3VzZVN0YXJ0UG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBhaVRhYmxlRHJhZzogQUlUYWJsZURyYWdTdGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSB0aW1lciE6IG51bWJlciB8IG51bGw7XG5cbiAgICBwcml2YXRlIG1vdXNlZG93bkxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIG1vdXNlbW92ZUxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIG1vdXNldXBMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMuaGFuZGxlRHJhZ1N0YXRlQ2hhbmdlKCkpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRFbGVtZW50cygpO1xuICAgICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnJlY3QnKSE7XG4gICAgICAgIHRoaXMuYXV4aWxpYXJ5TGluZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXhpbGlhcnktbGluZScpITtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91c2Vkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcjIubGlzdGVuKCd3aW5kb3cnLCAnbW91c2Vkb3duJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW91c2VTdGFydFBvc2l0aW9uID0geyB4OiBlLngsIHk6IGUueSB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1vdXNlbW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXIyLmxpc3Rlbignd2luZG93JywgJ21vdXNlbW92ZScsIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGltZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50aW1lciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWlUYWJsZURyYWcgJiYgdGhpcy5tb3VzZVN0YXJ0UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVEcmFnKGUsIHRoaXMuYWlUYWJsZURyYWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyMi5saXN0ZW4oJ3dpbmRvdycsICdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3VzZVN0YXJ0UG9zaXRpb24gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlRHJhZyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZURyYWdFbmQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEcmFnU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyYWcgPSB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5haVRhYmxlLmRyYWdTdGF0ZT8uKCk7XG5cbiAgICAgICAgaWYgKCFkcmFnKSB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVEcmFnID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkcmFnLnR5cGUgPT09IERyYWdUeXBlLm5vbmUgfHwgIXRoaXMucmVjdCB8fCAhdGhpcy5hdXhpbGlhcnlMaW5lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFpVGFibGVEcmFnID0gZHJhZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZURyYWcoZTogTW91c2VFdmVudCwgZHJhZzogQUlUYWJsZURyYWdTdGF0ZSkge1xuICAgICAgICBpZiAoZHJhZy50eXBlID09PSBEcmFnVHlwZS5ub25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREaXNwbGF5U3R5bGUoJ2Jsb2NrJyk7XG4gICAgICAgIGNvbnN0IG1vdmVYID0gZS54IC0gKHRoaXMubW91c2VTdGFydFBvc2l0aW9uPy54IHx8IDApO1xuICAgICAgICBzd2l0Y2ggKGRyYWcudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEcmFnVHlwZS5maWVsZDpcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmluZ0NvbHVtbihkcmFnLCBtb3ZlWCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERyYWdUeXBlLnJlY29yZDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUuY29sdW1uV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZpbmdDb2x1bW5XaWR0aChkcmFnLCBtb3ZlWCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmluZ0NvbHVtbihkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFpVGFibGUgPSB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5haVRhYmxlO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZSA9IGRyYWcuY29vcmRpbmF0ZSE7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGFpVGFibGUuZ3JpZERhdGEoKS5maWVsZHM7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5jYWxjdWxhdGVEcmFnV2lkdGgoZmllbGRzLCBjb29yZGluYXRlLCBkcmFnKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gYWlUYWJsZS5jb250ZXh0IS52aXNpYmxlQ29sdW1uc0luZGV4TWFwKCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbkluZGV4ID0gdmlzaWJsZUNvbHVtbkluZGV4TWFwLmdldChkcmFnLnNvdXJjZUlkcy52YWx1ZXMoKS5uZXh0KCkudmFsdWUhKSB8fCAwO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5TdGFydFggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIC8vIFRPRE86IOebruWJjem7mOiupOesrOS4gOWIl+S4uuWGu+e7k+WIl++8jOWQjuacn+aUr+aMgeiuvue9ruWGu+e7k+WIl+mcgOimgeWkhOeQhlxuICAgICAgICBjb25zdCBpc1NvdXJjZUNvbHVtbkZyb3plbiA9IHNvdXJjZUNvbHVtbkluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCBwb2ludGVyWCA9IG1vdmVYICsgc291cmNlQ29sdW1uU3RhcnRYO1xuICAgICAgICAvLyDmi5bmi73kuK3lv4PngrlcbiAgICAgICAgY29uc3QgZHJhZ0NlbnRlciA9IHNvdXJjZUNvbHVtbldpZHRoIC8gMjtcbiAgICAgICAgdGhpcy5zZXRSZWN0U3R5bGVzKHtcbiAgICAgICAgICAgIGN1cnNvcjogJ21vdmUnLFxuICAgICAgICAgICAgd2lkdGg6IGAke3dpZHRofXB4YCxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICBsZWZ0OiBgJHtwb2ludGVyWCAtIChpc1NvdXJjZUNvbHVtbkZyb3plbiA/IDAgOiBzY3JvbGwueCl9cHhgXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGxhc3RDb2x1bW5PZmZzZXQgPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChjb29yZGluYXRlLmNvbHVtbkNvdW50IC0gMSk7XG4gICAgICAgIGNvbnN0IGxhc3RDb2x1bW5XaWR0aCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uV2lkdGgoY29vcmRpbmF0ZS5jb2x1bW5Db3VudCAtIDEpO1xuXG4gICAgICAgIGxldCB0YXJnZXRDb2x1bW5JbmRleCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uU3RhcnRJbmRleChwb2ludGVyWCArIChpc1NvdXJjZUNvbHVtbkZyb3plbiA/IHNjcm9sbC54IDogMCkgKyBkcmFnQ2VudGVyKTtcbiAgICAgICAgbGV0IHRhcmdldENvbHVtblN0YXJ0WCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KHRhcmdldENvbHVtbkluZGV4KTtcbiAgICAgICAgbGV0IGlzTGFzdENvbHVtbiA9IGZhbHNlO1xuICAgICAgICAvLyDlpITnkIbmnIDlkI7kuIDliJdcbiAgICAgICAgaWYgKHBvaW50ZXJYICsgZHJhZ0NlbnRlciA+IGxhc3RDb2x1bW5PZmZzZXQgKyBsYXN0Q29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgIHRhcmdldENvbHVtbkluZGV4ID0gY29vcmRpbmF0ZS5jb2x1bW5Db3VudDtcbiAgICAgICAgICAgIHRhcmdldENvbHVtblN0YXJ0WCA9IGxhc3RDb2x1bW5PZmZzZXQgKyBsYXN0Q29sdW1uV2lkdGg7XG4gICAgICAgICAgICBpc0xhc3RDb2x1bW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0YXJnZXRDb2x1bW5JbmRleCA+PSAwICYmICh0YXJnZXRDb2x1bW5JbmRleCAtIHNvdXJjZUNvbHVtbkluZGV4ID4gMSB8fCB0YXJnZXRDb2x1bW5JbmRleCAtIHNvdXJjZUNvbHVtbkluZGV4IDwgMCkpIHx8XG4gICAgICAgICAgICBpc0xhc3RDb2x1bW5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNldEF1eGlsaWFyeUxpbmVTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMnB4JyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgbGVmdDogYCR7dGFyZ2V0Q29sdW1uU3RhcnRYIC0gc2Nyb2xsLnh9cHhgXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkc0luZGV4OiBudW1iZXJbXSA9IFtdO1xuICAgICAgICAgICAgZHJhZy5zb3VyY2VJZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoaWQpIHx8IDA7XG4gICAgICAgICAgICAgICAgZmllbGRzSW5kZXgucHVzaChpbmRleCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIOWQkeWPs+enu+WKqOebruagh+WcqOebruagh+WIl+eahOWJjeS4gOWIl1xuICAgICAgICAgICAgaWYgKHRhcmdldENvbHVtbkluZGV4ID4gc291cmNlQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRDb2x1bW5JbmRleCAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IHsgdHlwZTogRHJhZ1R5cGUuZmllbGQsIHRhcmdldEluZGV4OiB0YXJnZXRDb2x1bW5JbmRleCwgZmllbGRJZHM6IGRyYWcuc291cmNlSWRzLCBmaWVsZHNJbmRleCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEF1eGlsaWFyeUxpbmUoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dlZERhdGEgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZpbmdDb2x1bW5XaWR0aChkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0Q3Vyc29yU3R5bGUoJ2NvbC1yZXNpemUnKTtcbiAgICAgICAgY29uc3QgYWlUYWJsZSA9IHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmFpVGFibGU7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5JbmRleE1hcCA9IGFpVGFibGUuY29udGV4dCEudmlzaWJsZUNvbHVtbnNJbmRleE1hcCgpO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5JbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoZHJhZy5zb3VyY2VJZHMudmFsdWVzKCkubmV4dCgpLnZhbHVlISkgfHwgMDtcbiAgICAgICAgY29uc3Qgc291cmNlQ29sdW1uU3RhcnRYID0gZHJhZy5jb29yZGluYXRlIS5nZXRDb2x1bW5PZmZzZXQoc291cmNlQ29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5XaWR0aCA9IGRyYWcuY29vcmRpbmF0ZSEuZ2V0Q29sdW1uV2lkdGgoc291cmNlQ29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgcG9pbnRlclggPSBtb3ZlWCArIHNvdXJjZUNvbHVtblN0YXJ0WDtcbiAgICAgICAgY29uc3QgY29sUmVzaXplWCA9IHBvaW50ZXJYIC0gKHNvdXJjZUNvbHVtbkluZGV4ID09PSAwID8gMCA6IHNjcm9sbC54KTtcbiAgICAgICAgY29uc3QgbGVmdCA9IGAke2NvbFJlc2l6ZVggKyBzb3VyY2VDb2x1bW5XaWR0aH1weGA7XG4gICAgICAgIHRoaXMuc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyh7XG4gICAgICAgICAgICB3aWR0aDogJzJweCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIHRvcDogJzAnLFxuICAgICAgICAgICAgbGVmdFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IHtcbiAgICAgICAgICAgIHR5cGU6IERyYWdUeXBlLmNvbHVtbldpZHRoLFxuICAgICAgICAgICAgZmllbGRJZHM6IGRyYWcuc291cmNlSWRzLFxuICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KE1JTl9DT0xVTU5fV0lEVEgsIHNvdXJjZUNvbHVtbldpZHRoICsgbW92ZVgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEcmFnRW5kKCkge1xuICAgICAgICB0aGlzLnNldERpc3BsYXlTdHlsZSgnbm9uZScpO1xuICAgICAgICBpZiAodGhpcy5kcmFnZ2VkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnRW5kLmVtaXQoeyAuLi50aGlzLmRyYWdnZWREYXRhIH0pO1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZURyYWdXaWR0aChmaWVsZHM6IGFueVtdLCBjb29yZGluYXRlOiBhbnksIGRyYWc6IEFJVGFibGVEcmFnU3RhdGUpOiBudW1iZXIge1xuICAgICAgICBsZXQgd2lkdGggPSAwO1xuICAgICAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZHJhZy5zb3VyY2VJZHMuaGFzKGZpZWxkLl9pZCkpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCArPSBjb29yZGluYXRlLmNvbHVtbkluZGljZXNTaXplTWFwW2luZGV4XSB8fCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGlzcGxheVN0eWxlKGRpc3BsYXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgZGlzcGxheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDdXJzb3JTdHlsZShjdXJzb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjdXJzb3InLCBjdXJzb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UmVjdFN0eWxlcyhzdHlsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoc3R5bGVzKS5mb3JFYWNoKChbcHJvcCwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5yZWN0LCBwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyhzdHlsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoc3R5bGVzKS5mb3JFYWNoKChbcHJvcCwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcjIuc2V0U3R5bGUodGhpcy5hdXhpbGlhcnlMaW5lLCBwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRBdXhpbGlhcnlMaW5lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEF1eGlsaWFyeUxpbmVTdHlsZXMoeyB3aWR0aDogMCB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubW91c2Vkb3duTGlzdGVuZXIpIHRoaXMubW91c2Vkb3duTGlzdGVuZXIoKTtcbiAgICAgICAgaWYgKHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIpIHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgaWYgKHRoaXMubW91c2V1cExpc3RlbmVyKSB0aGlzLm1vdXNldXBMaXN0ZW5lcigpO1xuXG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJlY3RcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJhdXhpbGlhcnktbGluZVwiPjwvZGl2PiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9jb21wb25lbnRzL2RyYWcvZHJhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBaUMsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVd4RCxNQUFNLE9BQU8sb0JBQW9CO0lBNkI3QjtRQTVCQSxZQUFPLEdBQUcsTUFBTSxFQUFlLENBQUM7UUFFeEIsZ0NBQTJCLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFbEUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQyxlQUFVLEdBQTRCLE1BQU0sQ0FBQyxDQUFBLFVBQXVCLENBQUEsQ0FBQyxDQUFDO1FBTTlELGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQUV2Qyx1QkFBa0IsR0FBb0MsSUFBSSxDQUFDO1FBRTNELGdCQUFXLEdBQTRCLElBQUksQ0FBQztRQUk1QyxxQkFBZ0IsR0FBUSxJQUFJLENBQUM7UUFFN0Isc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBT3ZDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFB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QUssQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQTJCO1FBQ3RELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRWpELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2Isb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDOytHQTVRUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixzSkNkakMsa0VBQ2tDOzs0RkRhckIsb0JBQW9CO2tCQVRoQyxTQUFTOytCQUNJLGVBQWUsY0FFYixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0YsS0FBSyxFQUFFLGdCQUFnQjtxQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBSVRhYmxlRHJhZ1N0YXRlLCBEcmFnRW5kRGF0YSwgRHJhZ1R5cGUgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1JTl9DT0xVTU5fV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ3JpZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWktdGFibGUtZHJhZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyYWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2RyYWctY29udGFpbmVyJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZURyYWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgZHJhZ0VuZCA9IG91dHB1dDxEcmFnRW5kRGF0YT4oKTtcblxuICAgIHByaXZhdGUgYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlID0gaW5qZWN0KEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSk7XG5cbiAgICBwcml2YXRlIHJlbmRlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcblxuICAgIHByaXZhdGUgcmVjdCE6IEhUTUxFbGVtZW50O1xuXG4gICAgcHJpdmF0ZSBhdXhpbGlhcnlMaW5lITogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcml2YXRlIGRyYWdnZWREYXRhOiBEcmFnRW5kRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBtb3VzZVN0YXJ0UG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBhaVRhYmxlRHJhZzogQUlUYWJsZURyYWdTdGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSB0aW1lciE6IG51bWJlciB8IG51bGw7XG5cbiAgICBwcml2YXRlIG1vdXNlRG93blRpbWVvdXQ6IGFueSA9IG51bGw7XG5cbiAgICBwcml2YXRlIGlzRHJhZ2dpbmdFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIG1vdXNlZG93bkxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIG1vdXNlbW92ZUxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIG1vdXNldXBMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHRoaXMuaGFuZGxlRHJhZ1N0YXRlQ2hhbmdlKCkpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRFbGVtZW50cygpO1xuICAgICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRFbGVtZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnJlY3QnKSE7XG4gICAgICAgIHRoaXMuYXV4aWxpYXJ5TGluZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXhpbGlhcnktbGluZScpITtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW91c2Vkb3duTGlzdGVuZXIgPSB0aGlzLnJlbmRlcjIubGlzdGVuKCd3aW5kb3cnLCAnbW91c2Vkb3duJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW91c2VTdGFydFBvc2l0aW9uID0geyB4OiBlLngsIHk6IGUueSB9O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tb3VzZURvd25UaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW91c2VEb3duVGltZW91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1vdXNlRG93blRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmdFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcjIubGlzdGVuKCd3aW5kb3cnLCAnbW91c2Vtb3ZlJywgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0RyYWdnaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy50aW1lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRpbWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5haVRhYmxlRHJhZyAmJiB0aGlzLm1vdXNlU3RhcnRQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURyYWcoZSwgdGhpcy5haVRhYmxlRHJhZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubW91c2V1cExpc3RlbmVyID0gdGhpcy5yZW5kZXIyLmxpc3Rlbignd2luZG93JywgJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb3VzZURvd25UaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubW91c2VEb3duVGltZW91dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZURvd25UaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3VzZVN0YXJ0UG9zaXRpb24gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlRHJhZyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZURyYWdFbmQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEcmFnU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyYWcgPSB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5haVRhYmxlLmRyYWdTdGF0ZT8uKCk7XG5cbiAgICAgICAgaWYgKCFkcmFnKSB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVEcmFnID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkcmFnLnR5cGUgPT09IERyYWdUeXBlLm5vbmUgfHwgIXRoaXMucmVjdCB8fCAhdGhpcy5hdXhpbGlhcnlMaW5lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFpVGFibGVEcmFnID0gZHJhZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZURyYWcoZTogTW91c2VFdmVudCwgZHJhZzogQUlUYWJsZURyYWdTdGF0ZSkge1xuICAgICAgICBpZiAoZHJhZy50eXBlID09PSBEcmFnVHlwZS5ub25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREaXNwbGF5U3R5bGUoJ2Jsb2NrJyk7XG4gICAgICAgIGNvbnN0IG1vdmVYID0gZS54IC0gKHRoaXMubW91c2VTdGFydFBvc2l0aW9uPy54IHx8IDApO1xuICAgICAgICBzd2l0Y2ggKGRyYWcudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBEcmFnVHlwZS5maWVsZDpcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmluZ0NvbHVtbihkcmFnLCBtb3ZlWCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERyYWdUeXBlLnJlY29yZDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUuY29sdW1uV2lkdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZpbmdDb2x1bW5XaWR0aChkcmFnLCBtb3ZlWCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmluZ0NvbHVtbihkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFpVGFibGUgPSB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5haVRhYmxlO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZSA9IGRyYWcuY29vcmRpbmF0ZSE7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGFpVGFibGUuZ3JpZERhdGEoKS5maWVsZHM7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5jYWxjdWxhdGVEcmFnV2lkdGgoZmllbGRzLCBjb29yZGluYXRlLCBkcmFnKTtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbkluZGV4TWFwID0gYWlUYWJsZS5jb250ZXh0IS52aXNpYmxlQ29sdW1uc0luZGV4TWFwKCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbkluZGV4ID0gdmlzaWJsZUNvbHVtbkluZGV4TWFwLmdldChkcmFnLnNvdXJjZUlkcy52YWx1ZXMoKS5uZXh0KCkudmFsdWUhKSB8fCAwO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5TdGFydFggPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNvdXJjZUNvbHVtbldpZHRoID0gY29vcmRpbmF0ZS5nZXRDb2x1bW5XaWR0aChzb3VyY2VDb2x1bW5JbmRleCk7XG4gICAgICAgIC8vIFRPRE86IOebruWJjem7mOiupOesrOS4gOWIl+S4uuWGu+e7k+WIl++8jOWQjuacn+aUr+aMgeiuvue9ruWGu+e7k+WIl+mcgOimgeWkhOeQhlxuICAgICAgICBjb25zdCBpc1NvdXJjZUNvbHVtbkZyb3plbiA9IHNvdXJjZUNvbHVtbkluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCBwb2ludGVyWCA9IG1vdmVYICsgc291cmNlQ29sdW1uU3RhcnRYO1xuICAgICAgICAvLyDmi5bmi73kuK3lv4PngrlcbiAgICAgICAgY29uc3QgZHJhZ0NlbnRlciA9IHNvdXJjZUNvbHVtbldpZHRoIC8gMjtcbiAgICAgICAgdGhpcy5zZXRSZWN0U3R5bGVzKHtcbiAgICAgICAgICAgIGN1cnNvcjogJ21vdmUnLFxuICAgICAgICAgICAgd2lkdGg6IGAke3dpZHRofXB4YCxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICBsZWZ0OiBgJHtwb2ludGVyWCAtIChpc1NvdXJjZUNvbHVtbkZyb3plbiA/IDAgOiBzY3JvbGwueCl9cHhgXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGxhc3RDb2x1bW5PZmZzZXQgPSBjb29yZGluYXRlLmdldENvbHVtbk9mZnNldChjb29yZGluYXRlLmNvbHVtbkNvdW50IC0gMSk7XG4gICAgICAgIGNvbnN0IGxhc3RDb2x1bW5XaWR0aCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uV2lkdGgoY29vcmRpbmF0ZS5jb2x1bW5Db3VudCAtIDEpO1xuXG4gICAgICAgIGxldCB0YXJnZXRDb2x1bW5JbmRleCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uU3RhcnRJbmRleChwb2ludGVyWCArIChpc1NvdXJjZUNvbHVtbkZyb3plbiA/IHNjcm9sbC54IDogMCkgKyBkcmFnQ2VudGVyKTtcbiAgICAgICAgbGV0IHRhcmdldENvbHVtblN0YXJ0WCA9IGNvb3JkaW5hdGUuZ2V0Q29sdW1uT2Zmc2V0KHRhcmdldENvbHVtbkluZGV4KTtcbiAgICAgICAgbGV0IGlzTGFzdENvbHVtbiA9IGZhbHNlO1xuICAgICAgICAvLyDlpITnkIbmnIDlkI7kuIDliJdcbiAgICAgICAgaWYgKHBvaW50ZXJYICsgZHJhZ0NlbnRlciA+IGxhc3RDb2x1bW5PZmZzZXQgKyBsYXN0Q29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgIHRhcmdldENvbHVtbkluZGV4ID0gY29vcmRpbmF0ZS5jb2x1bW5Db3VudDtcbiAgICAgICAgICAgIHRhcmdldENvbHVtblN0YXJ0WCA9IGxhc3RDb2x1bW5PZmZzZXQgKyBsYXN0Q29sdW1uV2lkdGg7XG4gICAgICAgICAgICBpc0xhc3RDb2x1bW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0YXJnZXRDb2x1bW5JbmRleCA+PSAwICYmICh0YXJnZXRDb2x1bW5JbmRleCAtIHNvdXJjZUNvbHVtbkluZGV4ID4gMSB8fCB0YXJnZXRDb2x1bW5JbmRleCAtIHNvdXJjZUNvbHVtbkluZGV4IDwgMCkpIHx8XG4gICAgICAgICAgICBpc0xhc3RDb2x1bW5cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNldEF1eGlsaWFyeUxpbmVTdHlsZXMoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMnB4JyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgbGVmdDogYCR7dGFyZ2V0Q29sdW1uU3RhcnRYIC0gc2Nyb2xsLnh9cHhgXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkc0luZGV4OiBudW1iZXJbXSA9IFtdO1xuICAgICAgICAgICAgZHJhZy5zb3VyY2VJZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoaWQpIHx8IDA7XG4gICAgICAgICAgICAgICAgZmllbGRzSW5kZXgucHVzaChpbmRleCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIOWQkeWPs+enu+WKqOebruagh+WcqOebruagh+WIl+eahOWJjeS4gOWIl1xuICAgICAgICAgICAgaWYgKHRhcmdldENvbHVtbkluZGV4ID4gc291cmNlQ29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRDb2x1bW5JbmRleCAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IHsgdHlwZTogRHJhZ1R5cGUuZmllbGQsIHRhcmdldEluZGV4OiB0YXJnZXRDb2x1bW5JbmRleCwgZmllbGRJZHM6IGRyYWcuc291cmNlSWRzLCBmaWVsZHNJbmRleCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEF1eGlsaWFyeUxpbmUoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dlZERhdGEgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZpbmdDb2x1bW5XaWR0aChkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlLCBtb3ZlWDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0Q3Vyc29yU3R5bGUoJ2NvbC1yZXNpemUnKTtcbiAgICAgICAgY29uc3QgYWlUYWJsZSA9IHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmFpVGFibGU7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5JbmRleE1hcCA9IGFpVGFibGUuY29udGV4dCEudmlzaWJsZUNvbHVtbnNJbmRleE1hcCgpO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5JbmRleCA9IHZpc2libGVDb2x1bW5JbmRleE1hcC5nZXQoZHJhZy5zb3VyY2VJZHMudmFsdWVzKCkubmV4dCgpLnZhbHVlISkgfHwgMDtcbiAgICAgICAgY29uc3Qgc291cmNlQ29sdW1uU3RhcnRYID0gZHJhZy5jb29yZGluYXRlIS5nZXRDb2x1bW5PZmZzZXQoc291cmNlQ29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCBzb3VyY2VDb2x1bW5XaWR0aCA9IGRyYWcuY29vcmRpbmF0ZSEuZ2V0Q29sdW1uV2lkdGgoc291cmNlQ29sdW1uSW5kZXgpO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBkcmFnLnNjcm9sbCB8fCB7IHg6IDAsIHk6IDAgfTtcbiAgICAgICAgY29uc3QgcG9pbnRlclggPSBtb3ZlWCArIHNvdXJjZUNvbHVtblN0YXJ0WDtcbiAgICAgICAgY29uc3QgY29sUmVzaXplWCA9IHBvaW50ZXJYIC0gKHNvdXJjZUNvbHVtbkluZGV4ID09PSAwID8gMCA6IHNjcm9sbC54KTtcbiAgICAgICAgY29uc3QgbGVmdCA9IGAke2NvbFJlc2l6ZVggKyBzb3VyY2VDb2x1bW5XaWR0aH1weGA7XG4gICAgICAgIHRoaXMuc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyh7XG4gICAgICAgICAgICB3aWR0aDogJzJweCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIHRvcDogJzAnLFxuICAgICAgICAgICAgbGVmdFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IHtcbiAgICAgICAgICAgIHR5cGU6IERyYWdUeXBlLmNvbHVtbldpZHRoLFxuICAgICAgICAgICAgZmllbGRJZHM6IGRyYWcuc291cmNlSWRzLFxuICAgICAgICAgICAgd2lkdGg6IE1hdGgubWF4KE1JTl9DT0xVTU5fV0lEVEgsIHNvdXJjZUNvbHVtbldpZHRoICsgbW92ZVgpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEcmFnRW5kKCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnZ2VkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnRW5kLmVtaXQoeyAuLi50aGlzLmRyYWdnZWREYXRhIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xlYXJEcmFnU3RhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyRHJhZ1N0YXRlKCkge1xuICAgICAgICB0aGlzLnNldERpc3BsYXlTdHlsZSgnbm9uZScpO1xuICAgICAgICB0aGlzLnNldFJlY3RTdHlsZXMoe1xuICAgICAgICAgICAgd2lkdGg6ICcwJyxcbiAgICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgICAgdG9wOiAnMCcsXG4gICAgICAgICAgICBsZWZ0OiAnMCdcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0QXV4aWxpYXJ5TGluZVN0eWxlcyh7XG4gICAgICAgICAgICB3aWR0aDogJzAnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICB0b3A6ICcwJyxcbiAgICAgICAgICAgIGxlZnQ6ICcwJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmFnZ2VkRGF0YSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVEcmFnV2lkdGgoZmllbGRzOiBhbnlbXSwgY29vcmRpbmF0ZTogYW55LCBkcmFnOiBBSVRhYmxlRHJhZ1N0YXRlKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHdpZHRoID0gMDtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRyYWcuc291cmNlSWRzLmhhcyhmaWVsZC5faWQpKSB7XG4gICAgICAgICAgICAgICAgd2lkdGggKz0gY29vcmRpbmF0ZS5jb2x1bW5JbmRpY2VzU2l6ZU1hcFtpbmRleF0gfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERpc3BsYXlTdHlsZShkaXNwbGF5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsIGRpc3BsYXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q3Vyc29yU3R5bGUoY3Vyc29yOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY3Vyc29yJywgY3Vyc29yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJlY3RTdHlsZXMoc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHN0eWxlcykuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMucmVjdCwgcHJvcCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEF1eGlsaWFyeUxpbmVTdHlsZXMoc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHN0eWxlcykuZm9yRWFjaCgoW3Byb3AsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuYXV4aWxpYXJ5TGluZSwgcHJvcCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0QXV4aWxpYXJ5TGluZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRBdXhpbGlhcnlMaW5lU3R5bGVzKHsgd2lkdGg6IDAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdXNlZG93bkxpc3RlbmVyKSB0aGlzLm1vdXNlZG93bkxpc3RlbmVyKCk7XG4gICAgICAgIGlmICh0aGlzLm1vdXNlbW92ZUxpc3RlbmVyKSB0aGlzLm1vdXNlbW92ZUxpc3RlbmVyKCk7XG4gICAgICAgIGlmICh0aGlzLm1vdXNldXBMaXN0ZW5lcikgdGhpcy5tb3VzZXVwTGlzdGVuZXIoKTtcblxuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy50aW1lcik7XG4gICAgICAgICAgICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyZWN0XCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwiYXV4aWxpYXJ5LWxpbmVcIj48L2Rpdj4iXX0=
@@ -56,7 +56,7 @@ export class Coordinate {
56
56
  * 根据 columnIndex 获取对应列宽
57
57
  */
58
58
  getColumnWidth(index) {
59
- return this.columnIndicesSizeMap[index];
59
+ return this.columnIndicesSizeMap[index] ?? 0;
60
60
  }
61
61
  /**
62
62
  * 获取每个 cell 垂直/水平方向的坐标信息
@@ -80,7 +80,7 @@ export class Coordinate {
80
80
  offset = itemMetadata.offset + itemMetadata.size;
81
81
  }
82
82
  for (let i = lastMeasuredIndex + 1; i <= index; i++) {
83
- const size = isColumnType ? this.columnIndicesSizeMap[i] : (this.rowIndicesSizeMap[i] ?? this.rowHeight);
83
+ const size = isColumnType ? (this.columnIndicesSizeMap[i] ?? 0) : (this.rowIndicesSizeMap[i] ?? this.rowHeight);
84
84
  cellMetadataMap[i] = {
85
85
  offset,
86
86
  size
@@ -219,4 +219,4 @@ export class Coordinate {
219
219
  };
220
220
  }
221
221
  }
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvcmUvY29vcmRpbmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBDLG9CQUFvQixFQUFrQixNQUFNLFVBQVUsQ0FBQztBQUV4Rzs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBdUJuQixZQUFZLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUFHLEVBQUUsRUFDdEIsb0JBQW9CLEdBQUcsRUFBRSxFQUN6QixXQUFXLEdBQUcsQ0FBQyxFQUNmLGNBQWMsR0FBRyxDQUFDLEVBQ2xCLGlCQUFpQixHQUFHLENBQUMsRUFDTDtRQTFCcEIscUJBQXFCO1FBQ2Qsc0JBQWlCLEdBQW1CLEVBQUUsQ0FBQztRQUM5QyxzQkFBc0I7UUFDZix5QkFBb0IsR0FBbUIsRUFBRSxDQUFDO1FBS2pELGVBQWU7UUFDUixpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLGVBQWU7UUFDUixvQkFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQXdDLEVBQUUsQ0FBQztRQUN6RCxzQkFBaUIsR0FBd0MsRUFBRSxDQUFDO1FBYy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9C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RCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0YsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLE9BQU87WUFDSCxDQUFDO1lBQ0QsQ0FBQztZQUNELEtBQUs7WUFDTCxNQUFNO1NBQ1QsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVGFibGVDZWxsTWV0YURhdGEsIEFJVGFibGVDb29yZGluYXRlLCBBSVRhYmxlUm93Q29sdW1uVHlwZSwgQUlUYWJsZVNpemVNYXAgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICog55So5LqO5p6E5bu6IENhbnZhcyDln7rnoYDlnZDmoIfns7vvvIzlkI7nu63nmoTnu5jliLblt6XkvZzku6XmraTkuLrln7rnoYBcbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGUge1xuICAgIHByb3RlY3RlZCBfcm93SGVpZ2h0OiBudW1iZXI7XG4gICAgcHVibGljIHJvd0NvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGNvbHVtbkNvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG4gICAgcHVibGljIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgcHVibGljIGNvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuICAgIC8vIOeUqCBpbmRleCDmmKDlsIQg5q+P5LiA6KGM55qEIOmrmOW6plxuICAgIHB1YmxpYyByb3dJbmRpY2VzU2l6ZU1hcDogQUlUYWJsZVNpemVNYXAgPSB7fTtcbiAgICAvLyDnlKggaW5kZXgg5pig5bCEIOavj+S4gOWIlyDnmoQg5a695bqmXG4gICAgcHVibGljIGNvbHVtbkluZGljZXNTaXplTWFwOiBBSVRhYmxlU2l6ZU1hcCA9IHt9O1xuICAgIC8vIOmZpOWOu+ihqOWktOWSjOe8luWPt+WIl+ecn+ato+WNleWFg+agvOe7mOWItueahOWIneWni+WAvCB4XG4gICAgcHVibGljIHJvd0luaXRTaXplOiBudW1iZXI7XG4gICAgLy8g6Zmk5Y676KGo5aS05ZKM57yW5Y+35YiX55yf5q2j5Y2V5YWD5qC857uY5Yi255qE5Yid5aeL5YC8IHlcbiAgICBwdWJsaWMgY29sdW1uSW5pdFNpemU6IG51bWJlcjtcbiAgICAvLyDooYzlnZDmoIfpm4bkuK3mnIDlkI7kuIDooYznmoTntKLlvJVcbiAgICBwdWJsaWMgbGFzdFJvd0luZGV4ID0gLTE7XG4gICAgLy8g5YiX5Z2Q5qCH6ZuG5Lit5pyA5ZCO5LiA5YiX55qE57Si5byVXG4gICAgcHVibGljIGxhc3RDb2x1bW5JbmRleCA9IC0xO1xuICAgIHB1YmxpYyByb3dNZXRhRGF0YU1hcDogUmVjb3JkPG51bWJlciwgQUlUYWJsZUNlbGxNZXRhRGF0YT4gPSB7fTtcbiAgICBwdWJsaWMgY29sdW1uTWV0YURhdGFNYXA6IFJlY29yZDxudW1iZXIsIEFJVGFibGVDZWxsTWV0YURhdGE+ID0ge307XG4gICAgcHVibGljIGZyb3plbkNvbHVtbkNvdW50OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIHJvd0hlaWdodCxcbiAgICAgICAgcm93Q291bnQsXG4gICAgICAgIGNvbHVtbkNvdW50LFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIHJvd0luZGljZXNTaXplTWFwID0ge30sXG4gICAgICAgIGNvbHVtbkluZGljZXNTaXplTWFwID0ge30sXG4gICAgICAgIHJvd0luaXRTaXplID0gMCxcbiAgICAgICAgY29sdW1uSW5pdFNpemUgPSAwLFxuICAgICAgICBmcm96ZW5Db2x1bW5Db3VudCA9IDBcbiAgICB9OiBBSVRhYmxlQ29vcmRpbmF0ZSkge1xuICAgICAgICB0aGlzLl9yb3dIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IGNvbHVtbkNvdW50O1xuICAgICAgICB0aGlzLnJvd0luaXRTaXplID0gcm93SW5pdFNpemU7XG4gICAgICAgIHRoaXMuY29sdW1uSW5pdFNpemUgPSBjb2x1bW5Jbml0U2l6ZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IGNvbnRhaW5lci5vZmZzZXRXaWR0aDtcbiAgICAgICAgdGhpcy5yb3dJbmRpY2VzU2l6ZU1hcCA9IHJvd0luZGljZXNTaXplTWFwO1xuICAgICAgICB0aGlzLmNvbHVtbkluZGljZXNTaXplTWFwID0gY29sdW1uSW5kaWNlc1NpemVNYXA7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5mcm96ZW5Db2x1bW5Db3VudCA9IGZyb3plbkNvbHVtbkNvdW50O1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0hlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd0hlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHJvd0hlaWdodChoZWlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9yb3dIZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5oC75a695bqmXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b3RhbFdpZHRoKCkge1xuICAgICAgICBjb25zdCB7IG9mZnNldCwgc2l6ZSB9ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEodGhpcy5jb2x1bW5Db3VudCAtIDEsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbik7XG4gICAgICAgIHJldHVybiBvZmZzZXQgKyBzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaAu+mrmOW6plxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG90YWxIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IHsgb2Zmc2V0LCBzaXplIH0gPSB0aGlzLmdldENlbGxNZXRhRGF0YSh0aGlzLnJvd0NvdW50IC0gMSwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldCArIHNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIHJvd0luZGV4IOiOt+WPluWvueW6lOihjOmrmFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb3dIZWlnaHQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dJbmRpY2VzU2l6ZU1hcFtpbmRleF0gPz8gdGhpcy5yb3dIZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIGNvbHVtbkluZGV4IOiOt+WPluWvueW6lOWIl+WuvVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5XaWR0aChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkluZGljZXNTaXplTWFwW2luZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDojrflj5bmr4/kuKogY2VsbCDlnoLnm7Qv5rC05bmz5pa55ZCR55qE5Z2Q5qCH5L+h5oGvXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldENlbGxNZXRhRGF0YShpbmRleDogbnVtYmVyLCBpdGVtVHlwZTogQUlUYWJsZVJvd0NvbHVtblR5cGUpOiBBSVRhYmxlQ2VsbE1ldGFEYXRhIHtcbiAgICAgICAgbGV0IGNlbGxNZXRhZGF0YU1hcCwgbGFzdE1lYXN1cmVkSW5kZXgsIG9mZnNldDtcbiAgICAgICAgY29uc3QgaXNDb2x1bW5UeXBlID0gaXRlbVR5cGUgPT09IEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbjtcbiAgICAgICAgaWYgKGlzQ29sdW1uVHlwZSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5jb2x1bW5Jbml0U2l6ZTtcbiAgICAgICAgICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gdGhpcy5sYXN0Q29sdW1uSW5kZXg7XG4gICAgICAgICAgICBjZWxsTWV0YWRhdGFNYXAgPSB0aGlzLmNvbHVtbk1ldGFEYXRhTWFwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5yb3dJbml0U2l6ZTtcbiAgICAgICAgICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gdGhpcy5sYXN0Um93SW5kZXg7XG4gICAgICAgICAgICBjZWxsTWV0YWRhdGFNYXAgPSB0aGlzLnJvd01ldGFEYXRhTWFwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA+IGxhc3RNZWFzdXJlZEluZGV4KSB7XG4gICAgICAgICAgICBpZiAobGFzdE1lYXN1cmVkSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1NZXRhZGF0YSA9IGNlbGxNZXRhZGF0YU1hcFtsYXN0TWVhc3VyZWRJbmRleF07XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbGFzdE1lYXN1cmVkSW5kZXggKyAxOyBpIDw9IGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaXplID0gaXNDb2x1bW5UeXBlID8gdGhpcy5jb2x1bW5JbmRpY2VzU2l6ZU1hcFtpXSA6ICh0aGlzLnJvd0luZGljZXNTaXplTWFwW2ldID8/IHRoaXMucm93SGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIGNlbGxNZXRhZGF0YU1hcFtpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gc2l6ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0NvbHVtblR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RDb2x1bW5JbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RSb3dJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjZWxsTWV0YWRhdGFNYXBbaW5kZXhdIHx8IHsgc2l6ZTogMCwgb2Zmc2V0OiAwIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5p+l5om+5pyA6L+R55qE5Y2V5YWD5qC857Si5byVXG4gICAgICog5oCn6IO96L6D5beu77yM5L2G5peg6K665aaC5L2V6YO95Y+v5Lul5om+5YiwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZmluZE5lYXJlc3RDZWxsSW5kZXgoaW5kZXg6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIsIGl0ZW1UeXBlOiBBSVRhYmxlUm93Q29sdW1uVHlwZSkge1xuICAgICAgICBjb25zdCBpdGVtQ291bnQgPSBpdGVtVHlwZSA9PT0gQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uID8gdGhpcy5jb2x1bW5Db3VudCA6IHRoaXMucm93Q291bnQ7XG4gICAgICAgIGxldCBpbnRlcnZhbCA9IDE7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4IDwgaXRlbUNvdW50ICYmIHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKGluZGV4LCBpdGVtVHlwZSkub2Zmc2V0IDwgb2Zmc2V0KSB7XG4gICAgICAgICAgICBpbmRleCArPSBpbnRlcnZhbDtcbiAgICAgICAgICAgIGludGVydmFsICo9IDI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fZmluZE5lYXJlc3RDZWxsSW5kZXhCeUJpbmFyeShvZmZzZXQsIE1hdGguZmxvb3IoaW5kZXggLyAyKSwgTWF0aC5taW4oaW5kZXgsIGl0ZW1Db3VudCAtIDEpLCBpdGVtVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5LqM5YiG5rOV5p+l5om+5pyA6L+R55qE5Y2V5YWD5qC857Si5byVXG4gICAgICog5oCn6IO95pu05L2z77yM5L2G6ZyA6KaB5Yqg6L295pWw5o2uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZmluZE5lYXJlc3RDZWxsSW5kZXhCeUJpbmFyeShvZmZzZXQ6IG51bWJlciwgbG93OiBudW1iZXIsIGhpZ2g6IG51bWJlciwgaXRlbVR5cGU6IEFJVGFibGVSb3dDb2x1bW5UeXBlKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPD0gaGlnaCkge1xuICAgICAgICAgICAgY29uc3QgbWlkZGxlID0gbG93ICsgTWF0aC5mbG9vcigoaGlnaCAtIGxvdykgLyAyKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPZmZzZXQgPSB0aGlzLmdldENlbGxNZXRhRGF0YShtaWRkbGUsIGl0ZW1UeXBlKS5vZmZzZXQ7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0ID09PSBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlkZGxlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50T2Zmc2V0IDwgb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgbG93ID0gbWlkZGxlICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE9mZnNldCA+IG9mZnNldCkge1xuICAgICAgICAgICAgICAgIGhpZ2ggPSBtaWRkbGUgLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb3cgPiAtMSA/IGxvdyAtIDEgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNruWBj+enu+mHj+afpeaJvuacgOi/keeahOWNleWFg+agvOe0ouW8lVxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kTmVhcmVzdENlbGxJbmRleChvZmZzZXQ6IG51bWJlciwgaXRlbVR5cGU6IEFJVGFibGVSb3dDb2x1bW5UeXBlKSB7XG4gICAgICAgIGxldCBsYXN0SW5kZXg7XG4gICAgICAgIGlmIChpdGVtVHlwZSA9PT0gQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uKSB7XG4gICAgICAgICAgICBsYXN0SW5kZXggPSB0aGlzLmxhc3RDb2x1bW5JbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IHRoaXMubGFzdFJvd0luZGV4O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNlbGxPZmZzZXQgPSB0aGlzLmdldENlbGxNZXRhRGF0YShsYXN0SW5kZXgsIGl0ZW1UeXBlKS5vZmZzZXQ7XG4gICAgICAgIGNvbnN0IGxhc3RNZWFzdXJlZEl0ZW1PZmZzZXQgPSBsYXN0SW5kZXggPiAwID8gY2VsbE9mZnNldCA6IDA7XG5cbiAgICAgICAgaWYgKGxhc3RNZWFzdXJlZEl0ZW1PZmZzZXQgPj0gb2Zmc2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmluZE5lYXJlc3RDZWxsSW5kZXhCeUJpbmFyeShvZmZzZXQsIDAsIGxhc3RJbmRleCwgaXRlbVR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kTmVhcmVzdENlbGxJbmRleChNYXRoLm1heCgwLCBsYXN0SW5kZXgpLCBvZmZzZXQsIGl0ZW1UeXBlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja7lnoLnm7TlgY/np7vph4/mib7liLDotbflp4vljZXlhYPmoLznmoTntKLlvJVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Um93U3RhcnRJbmRleChvZmZzZXQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kTmVhcmVzdENlbGxJbmRleChvZmZzZXQsIEFJVGFibGVSb3dDb2x1bW5UeXBlLnJvdyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2u5Z6C55u06LW35aeL5Y2V5YWD5qC855qE57Si5byV5p+l5om+57uT5p2f5Y2V5YWD5qC855qE57Si5byVXG4gICAgICovXG4gICAgcHVibGljIGdldFJvd1N0b3BJbmRleChzdGFydEluZGV4OiBudW1iZXIsIHNjcm9sbFRvcDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1NZXRhZGF0YSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHN0YXJ0SW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLnJvdyk7XG4gICAgICAgIGNvbnN0IG1heE9mZnNldCA9IHNjcm9sbFRvcCArIHRoaXMuY29udGFpbmVySGVpZ2h0O1xuICAgICAgICBsZXQgb2Zmc2V0ID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICAgICAgICBsZXQgc3RvcEluZGV4ID0gc3RhcnRJbmRleDtcblxuICAgICAgICB3aGlsZSAoc3RvcEluZGV4IDwgdGhpcy5yb3dDb3VudCAtIDEgJiYgb2Zmc2V0IDwgbWF4T2Zmc2V0KSB7XG4gICAgICAgICAgICBzdG9wSW5kZXgrKztcbiAgICAgICAgICAgIG9mZnNldCArPSB0aGlzLmdldENlbGxNZXRhRGF0YShzdG9wSW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLnJvdykuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RvcEluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNruawtOW5s+WBj+enu+mHj+aJvuWIsOi1t+Wni+WNleWFg+agvOeahOe0ouW8lVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5TdGFydEluZGV4KG9mZnNldDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmROZWFyZXN0Q2VsbEluZGV4KG9mZnNldCwgQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja7msLTlubPotbflp4vljZXlhYPmoLznmoTntKLlvJXmn6Xmib7nu5PmnZ/ljZXlhYPmoLznmoTntKLlvJVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sdW1uU3RvcEluZGV4KHN0YXJ0SW5kZXg6IG51bWJlciwgc2Nyb2xsTGVmdDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1NZXRhZGF0YSA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHN0YXJ0SW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbik7XG4gICAgICAgIGNvbnN0IG1heE9mZnNldCA9IHNjcm9sbExlZnQgKyB0aGlzLmNvbnRhaW5lcldpZHRoO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICAgICAgICBsZXQgc3RvcEluZGV4ID0gc3RhcnRJbmRleDtcblxuICAgICAgICB3aGlsZSAoc3RvcEluZGV4IDwgdGhpcy5jb2x1bW5Db3VudCAtIDEgJiYgb2Zmc2V0IDwgbWF4T2Zmc2V0KSB7XG4gICAgICAgICAgICBzdG9wSW5kZXgrKztcbiAgICAgICAgICAgIG9mZnNldCArPSB0aGlzLmdldENlbGxNZXRhRGF0YShzdG9wSW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbikuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RvcEluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNriByb3dJbmRleCDojrflj5blnoLnm7TlgY/np7vph49cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Um93T2Zmc2V0KHJvd0luZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHJvd0luZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5yb3cpLm9mZnNldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja4gY29sdW1uSW5kZXgg6I635Y+W5rC05bmz5YGP56e76YePXG4gICAgICovXG4gICAgcHVibGljIGdldENvbHVtbk9mZnNldChjb2x1bW5JbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENlbGxNZXRhRGF0YShjb2x1bW5JbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uKS5vZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Ya757uT5Yy65Z+f5a695bqmXG4gICAgICovXG4gICAgZ2V0IGZyb3plbkNvbHVtbldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2x1bW5PZmZzZXQodGhpcy5mcm96ZW5Db2x1bW5Db3VudCkgLSB0aGlzLmNvbHVtbkluaXRTaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNriByb3dJbmRleCwgY29sdW1uSW5kZXgg6I635Y+W5Y2V5YWD5qC85Z2Q5qCH5L+h5oGvXG4gICAgICovXG4gICAgcHVibGljIGdldENlbGxSZWN0KHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbkluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgeyBzaXplOiBoZWlnaHQsIG9mZnNldDogeSB9ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEocm93SW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLnJvdyk7XG4gICAgICAgIGNvbnN0IHsgc2l6ZTogd2lkdGgsIG9mZnNldDogeCB9ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEoY29sdW1uSW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4LFxuICAgICAgICAgICAgeSxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2NvcmUvY29vcmRpbmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBDLG9CQUFvQixFQUFrQixNQUFNLFVBQVUsQ0FBQztBQUV4Rzs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBdUJuQixZQUFZLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUFHLEVBQUUsRUFDdEIsb0JBQW9CLEdBQUcsRUFBRSxFQUN6QixXQUFXLEdBQUcsQ0FBQyxFQUNmLGNBQWMsR0FBRyxDQUFDLEVBQ2xCLGlCQUFpQixHQUFHLENBQUMsRUFDTDtRQTFCcEIscUJBQXFCO1FBQ2Qsc0JBQWlCLEdBQW1CLEVBQUUsQ0FBQztRQUM5QyxzQkFBc0I7UUFDZix5QkFBb0IsR0FBbUIsRUFBRSxDQUFDO1FBS2pELGVBQWU7UUFDUixpQkFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLGVBQWU7UUFDUixvQkFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQXdDLEVBQUUsQ0FBQztRQUN6RCxzQkFBaUIsR0FBd0MsRUFBRSxDQUFDO1FBYy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9C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QUFXLENBQUMsUUFBZ0IsRUFBRSxXQUFtQjtRQUNwRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0YsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLE9BQU87WUFDSCxDQUFDO1lBQ0QsQ0FBQztZQUNELEtBQUs7WUFDTCxNQUFNO1NBQ1QsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFJVGFibGVDZWxsTWV0YURhdGEsIEFJVGFibGVDb29yZGluYXRlLCBBSVRhYmxlUm93Q29sdW1uVHlwZSwgQUlUYWJsZVNpemVNYXAgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICog55So5LqO5p6E5bu6IENhbnZhcyDln7rnoYDlnZDmoIfns7vvvIzlkI7nu63nmoTnu5jliLblt6XkvZzku6XmraTkuLrln7rnoYBcbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGUge1xuICAgIHByb3RlY3RlZCBfcm93SGVpZ2h0OiBudW1iZXI7XG4gICAgcHVibGljIHJvd0NvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGNvbHVtbkNvdW50OiBudW1iZXI7XG4gICAgcHVibGljIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XG4gICAgcHVibGljIGNvbnRhaW5lcldpZHRoOiBudW1iZXI7XG4gICAgcHVibGljIGNvbnRhaW5lckhlaWdodDogbnVtYmVyO1xuICAgIC8vIOeUqCBpbmRleCDmmKDlsIQg5q+P5LiA6KGM55qEIOmrmOW6plxuICAgIHB1YmxpYyByb3dJbmRpY2VzU2l6ZU1hcDogQUlUYWJsZVNpemVNYXAgPSB7fTtcbiAgICAvLyDnlKggaW5kZXgg5pig5bCEIOavj+S4gOWIlyDnmoQg5a695bqmXG4gICAgcHVibGljIGNvbHVtbkluZGljZXNTaXplTWFwOiBBSVRhYmxlU2l6ZU1hcCA9IHt9O1xuICAgIC8vIOmZpOWOu+ihqOWktOWSjOe8luWPt+WIl+ecn+ato+WNleWFg+agvOe7mOWItueahOWIneWni+WAvCB4XG4gICAgcHVibGljIHJvd0luaXRTaXplOiBudW1iZXI7XG4gICAgLy8g6Zmk5Y676KGo5aS05ZKM57yW5Y+35YiX55yf5q2j5Y2V5YWD5qC857uY5Yi255qE5Yid5aeL5YC8IHlcbiAgICBwdWJsaWMgY29sdW1uSW5pdFNpemU6IG51bWJlcjtcbiAgICAvLyDooYzlnZDmoIfpm4bkuK3mnIDlkI7kuIDooYznmoTntKLlvJVcbiAgICBwdWJsaWMgbGFzdFJvd0luZGV4ID0gLTE7XG4gICAgLy8g5YiX5Z2Q5qCH6ZuG5Lit5pyA5ZCO5LiA5YiX55qE57Si5byVXG4gICAgcHVibGljIGxhc3RDb2x1bW5JbmRleCA9IC0xO1xuICAgIHB1YmxpYyByb3dNZXRhRGF0YU1hcDogUmVjb3JkPG51bWJlciwgQUlUYWJsZUNlbGxNZXRhRGF0YT4gPSB7fTtcbiAgICBwdWJsaWMgY29sdW1uTWV0YURhdGFNYXA6IFJlY29yZDxudW1iZXIsIEFJVGFibGVDZWxsTWV0YURhdGE+ID0ge307XG4gICAgcHVibGljIGZyb3plbkNvbHVtbkNvdW50OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcih7XG4gICAgICAgIHJvd0hlaWdodCxcbiAgICAgICAgcm93Q291bnQsXG4gICAgICAgIGNvbHVtbkNvdW50LFxuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIHJvd0luZGljZXNTaXplTWFwID0ge30sXG4gICAgICAgIGNvbHVtbkluZGljZXNTaXplTWFwID0ge30sXG4gICAgICAgIHJvd0luaXRTaXplID0gMCxcbiAgICAgICAgY29sdW1uSW5pdFNpemUgPSAwLFxuICAgICAgICBmcm96ZW5Db2x1bW5Db3VudCA9IDBcbiAgICB9OiBBSVRhYmxlQ29vcmRpbmF0ZSkge1xuICAgICAgICB0aGlzLl9yb3dIZWlnaHQgPSByb3dIZWlnaHQ7XG4gICAgICAgIHRoaXMucm93Q291bnQgPSByb3dDb3VudDtcbiAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IGNvbHVtbkNvdW50O1xuICAgICAgICB0aGlzLnJvd0luaXRTaXplID0gcm93SW5pdFNpemU7XG4gICAgICAgIHRoaXMuY29sdW1uSW5pdFNpemUgPSBjb2x1bW5Jbml0U2l6ZTtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaWR0aCA9IGNvbnRhaW5lci5vZmZzZXRXaWR0aDtcbiAgICAgICAgdGhpcy5yb3dJbmRpY2VzU2l6ZU1hcCA9IHJvd0luZGljZXNTaXplTWFwO1xuICAgICAgICB0aGlzLmNvbHVtbkluZGljZXNTaXplTWFwID0gY29sdW1uSW5kaWNlc1NpemVNYXA7XG4gICAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5mcm96ZW5Db2x1bW5Db3VudCA9IGZyb3plbkNvbHVtbkNvdW50O1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0hlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd0hlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHJvd0hlaWdodChoZWlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9yb3dIZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5oC75a695bqmXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b3RhbFdpZHRoKCkge1xuICAgICAgICBjb25zdCB7IG9mZnNldCwgc2l6ZSB9ID0gdGhpcy5nZXRDZWxsTWV0YURhdGEodGhpcy5jb2x1bW5Db3VudCAtIDEsIEFJVGFibGVSb3dDb2x1bW5UeXBlLmNvbHVtbik7XG4gICAgICAgIHJldHVybiBvZmZzZXQgKyBzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaAu+mrmOW6plxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG90YWxIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IHsgb2Zmc2V0LCBzaXplIH0gPSB0aGlzLmdldENlbGxNZXRhRGF0YSh0aGlzLnJvd0NvdW50IC0gMSwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KTtcbiAgICAgICAgcmV0dXJuIG9mZnNldCArIHNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIHJvd0luZGV4IOiOt+WPluWvueW6lOihjOmrmFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb3dIZWlnaHQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dJbmRpY2VzU2l6ZU1hcFtpbmRleF0gPz8gdGhpcy5yb3dIZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIGNvbHVtbkluZGV4IOiOt+WPluWvueW6lOWIl+WuvVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5XaWR0aChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uSW5kaWNlc1NpemVNYXBbaW5kZXhdID8/IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6I635Y+W5q+P5LiqIGNlbGwg5Z6C55u0L+awtOW5s+aWueWQkeeahOWdkOagh+S/oeaBr1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRDZWxsTWV0YURhdGEoaW5kZXg6IG51bWJlciwgaXRlbVR5cGU6IEFJVGFibGVSb3dDb2x1bW5UeXBlKTogQUlUYWJsZUNlbGxNZXRhRGF0YSB7XG4gICAgICAgIGxldCBjZWxsTWV0YWRhdGFNYXAsIGxhc3RNZWFzdXJlZEluZGV4LCBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGlzQ29sdW1uVHlwZSA9IGl0ZW1UeXBlID09PSBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW47XG4gICAgICAgIGlmIChpc0NvbHVtblR5cGUpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuY29sdW1uSW5pdFNpemU7XG4gICAgICAgICAgICBsYXN0TWVhc3VyZWRJbmRleCA9IHRoaXMubGFzdENvbHVtbkluZGV4O1xuICAgICAgICAgICAgY2VsbE1ldGFkYXRhTWFwID0gdGhpcy5jb2x1bW5NZXRhRGF0YU1hcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9mZnNldCA9IHRoaXMucm93SW5pdFNpemU7XG4gICAgICAgICAgICBsYXN0TWVhc3VyZWRJbmRleCA9IHRoaXMubGFzdFJvd0luZGV4O1xuICAgICAgICAgICAgY2VsbE1ldGFkYXRhTWFwID0gdGhpcy5yb3dNZXRhRGF0YU1hcDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPiBsYXN0TWVhc3VyZWRJbmRleCkge1xuICAgICAgICAgICAgaWYgKGxhc3RNZWFzdXJlZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtTWV0YWRhdGEgPSBjZWxsTWV0YWRhdGFNYXBbbGFzdE1lYXN1cmVkSW5kZXhdO1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGl0ZW1NZXRhZGF0YS5vZmZzZXQgKyBpdGVtTWV0YWRhdGEuc2l6ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGxhc3RNZWFzdXJlZEluZGV4ICsgMTsgaSA8PSBpbmRleDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IGlzQ29sdW1uVHlwZSA/ICh0aGlzLmNvbHVtbkluZGljZXNTaXplTWFwW2ldID8/IDApIDogKHRoaXMucm93SW5kaWNlc1NpemVNYXBbaV0gPz8gdGhpcy5yb3dIZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgY2VsbE1ldGFkYXRhTWFwW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSBzaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQ29sdW1uVHlwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdENvbHVtbkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFJvd0luZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNlbGxNZXRhZGF0YU1hcFtpbmRleF0gfHwgeyBzaXplOiAwLCBvZmZzZXQ6IDAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmn6Xmib7mnIDov5HnmoTljZXlhYPmoLzntKLlvJVcbiAgICAgKiDmgKfog73ovoPlt67vvIzkvYbml6DorrrlpoLkvZXpg73lj6/ku6Xmib7liLBcbiAgICAgKi9cbiAgICBwcml2YXRlIF9maW5kTmVhcmVzdENlbGxJbmRleChpbmRleDogbnVtYmVyLCBvZmZzZXQ6IG51bWJlciwgaXRlbVR5cGU6IEFJVGFibGVSb3dDb2x1bW5UeXBlKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1Db3VudCA9IGl0ZW1UeXBlID09PSBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4gPyB0aGlzLmNvbHVtbkNvdW50IDogdGhpcy5yb3dDb3VudDtcbiAgICAgICAgbGV0IGludGVydmFsID0gMTtcblxuICAgICAgICB3aGlsZSAoaW5kZXggPCBpdGVtQ291bnQgJiYgdGhpcy5nZXRDZWxsTWV0YURhdGEoaW5kZXgsIGl0ZW1UeXBlKS5vZmZzZXQgPCBvZmZzZXQpIHtcbiAgICAgICAgICAgIGluZGV4ICs9IGludGVydmFsO1xuICAgICAgICAgICAgaW50ZXJ2YWwgKj0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9maW5kTmVhcmVzdENlbGxJbmRleEJ5QmluYXJ5KG9mZnNldCwgTWF0aC5mbG9vcihpbmRleCAvIDIpLCBNYXRoLm1pbihpbmRleCwgaXRlbUNvdW50IC0gMSksIGl0ZW1UeXBlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDkuozliIbms5Xmn6Xmib7mnIDov5HnmoTljZXlhYPmoLzntKLlvJVcbiAgICAgKiDmgKfog73mm7TkvbPvvIzkvYbpnIDopoHliqDovb3mlbDmja5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9maW5kTmVhcmVzdENlbGxJbmRleEJ5QmluYXJ5KG9mZnNldDogbnVtYmVyLCBsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyLCBpdGVtVHlwZTogQUlUYWJsZVJvd0NvbHVtblR5cGUpIHtcbiAgICAgICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7XG4gICAgICAgICAgICBjb25zdCBtaWRkbGUgPSBsb3cgKyBNYXRoLmZsb29yKChoaWdoIC0gbG93KSAvIDIpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudE9mZnNldCA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKG1pZGRsZSwgaXRlbVR5cGUpLm9mZnNldDtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnRPZmZzZXQgPT09IG9mZnNldCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtaWRkbGU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRPZmZzZXQgPCBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICBsb3cgPSBtaWRkbGUgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50T2Zmc2V0ID4gb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgaGlnaCA9IG1pZGRsZSAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvdyA+IC0xID8gbG93IC0gMSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2u5YGP56e76YeP5p+l5om+5pyA6L+R55qE5Y2V5YWD5qC857Si5byVXG4gICAgICovXG4gICAgcHVibGljIGZpbmROZWFyZXN0Q2VsbEluZGV4KG9mZnNldDogbnVtYmVyLCBpdGVtVHlwZTogQUlUYWJsZVJvd0NvbHVtblR5cGUpIHtcbiAgICAgICAgbGV0IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKGl0ZW1UeXBlID09PSBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pIHtcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IHRoaXMubGFzdENvbHVtbkluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gdGhpcy5sYXN0Um93SW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2VsbE9mZnNldCA9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKGxhc3RJbmRleCwgaXRlbVR5cGUpLm9mZnNldDtcbiAgICAgICAgY29uc3QgbGFzdE1lYXN1cmVkSXRlbU9mZnNldCA9IGxhc3RJbmRleCA+IDAgPyBjZWxsT2Zmc2V0IDogMDtcblxuICAgICAgICBpZiAobGFzdE1lYXN1cmVkSXRlbU9mZnNldCA+PSBvZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kTmVhcmVzdENlbGxJbmRleEJ5QmluYXJ5KG9mZnNldCwgMCwgbGFzdEluZGV4LCBpdGVtVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmROZWFyZXN0Q2VsbEluZGV4KE1hdGgubWF4KDAsIGxhc3RJbmRleCksIG9mZnNldCwgaXRlbVR5cGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNruWeguebtOWBj+enu+mHj+aJvuWIsOi1t+Wni+WNleWFg+agvOeahOe0ouW8lVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb3dTdGFydEluZGV4KG9mZnNldDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmROZWFyZXN0Q2VsbEluZGV4KG9mZnNldCwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoLnmja7lnoLnm7Totbflp4vljZXlhYPmoLznmoTntKLlvJXmn6Xmib7nu5PmnZ/ljZXlhYPmoLznmoTntKLlvJVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Um93U3RvcEluZGV4KHN0YXJ0SW5kZXg6IG51bWJlciwgc2Nyb2xsVG9wOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgaXRlbU1ldGFkYXRhID0gdGhpcy5nZXRDZWxsTWV0YURhdGEoc3RhcnRJbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KTtcbiAgICAgICAgY29uc3QgbWF4T2Zmc2V0ID0gc2Nyb2xsVG9wICsgdGhpcy5jb250YWluZXJIZWlnaHQ7XG4gICAgICAgIGxldCBvZmZzZXQgPSBpdGVtTWV0YWRhdGEub2Zmc2V0ICsgaXRlbU1ldGFkYXRhLnNpemU7XG4gICAgICAgIGxldCBzdG9wSW5kZXggPSBzdGFydEluZGV4O1xuXG4gICAgICAgIHdoaWxlIChzdG9wSW5kZXggPCB0aGlzLnJvd0NvdW50IC0gMSAmJiBvZmZzZXQgPCBtYXhPZmZzZXQpIHtcbiAgICAgICAgICAgIHN0b3BJbmRleCsrO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHN0b3BJbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdG9wSW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2u5rC05bmz5YGP56e76YeP5om+5Yiw6LW35aeL5Y2V5YWD5qC855qE57Si5byVXG4gICAgICovXG4gICAgcHVibGljIGdldENvbHVtblN0YXJ0SW5kZXgob2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZE5lYXJlc3RDZWxsSW5kZXgob2Zmc2V0LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNruawtOW5s+i1t+Wni+WNleWFg+agvOeahOe0ouW8leafpeaJvue7k+adn+WNleWFg+agvOeahOe0ouW8lVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5TdG9wSW5kZXgoc3RhcnRJbmRleDogbnVtYmVyLCBzY3JvbGxMZWZ0OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgaXRlbU1ldGFkYXRhID0gdGhpcy5nZXRDZWxsTWV0YURhdGEoc3RhcnRJbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uKTtcbiAgICAgICAgY29uc3QgbWF4T2Zmc2V0ID0gc2Nyb2xsTGVmdCArIHRoaXMuY29udGFpbmVyV2lkdGg7XG4gICAgICAgIGxldCBvZmZzZXQgPSBpdGVtTWV0YWRhdGEub2Zmc2V0ICsgaXRlbU1ldGFkYXRhLnNpemU7XG4gICAgICAgIGxldCBzdG9wSW5kZXggPSBzdGFydEluZGV4O1xuXG4gICAgICAgIHdoaWxlIChzdG9wSW5kZXggPCB0aGlzLmNvbHVtbkNvdW50IC0gMSAmJiBvZmZzZXQgPCBtYXhPZmZzZXQpIHtcbiAgICAgICAgICAgIHN0b3BJbmRleCsrO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKHN0b3BJbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uKS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdG9wSW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIHJvd0luZGV4IOiOt+WPluWeguebtOWBj+enu+mHj1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb3dPZmZzZXQocm93SW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDZWxsTWV0YURhdGEocm93SW5kZXgsIEFJVGFibGVSb3dDb2x1bW5UeXBlLnJvdykub2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagueaNriBjb2x1bW5JbmRleCDojrflj5bmsLTlubPlgY/np7vph49cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sdW1uT2Zmc2V0KGNvbHVtbkluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2VsbE1ldGFEYXRhKGNvbHVtbkluZGV4LCBBSVRhYmxlUm93Q29sdW1uVHlwZS5jb2x1bW4pLm9mZnNldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlhrvnu5PljLrln5/lrr3luqZcbiAgICAgKi9cbiAgICBnZXQgZnJvemVuQ29sdW1uV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbHVtbk9mZnNldCh0aGlzLmZyb3plbkNvbHVtbkNvdW50KSAtIHRoaXMuY29sdW1uSW5pdFNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qC55o2uIHJvd0luZGV4LCBjb2x1bW5JbmRleCDojrflj5bljZXlhYPmoLzlnZDmoIfkv6Hmga9cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2VsbFJlY3Qocm93SW5kZXg6IG51bWJlciwgY29sdW1uSW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCB7IHNpemU6IGhlaWdodCwgb2Zmc2V0OiB5IH0gPSB0aGlzLmdldENlbGxNZXRhRGF0YShyb3dJbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUucm93KTtcbiAgICAgICAgY29uc3QgeyBzaXplOiB3aWR0aCwgb2Zmc2V0OiB4IH0gPSB0aGlzLmdldENlbGxNZXRhRGF0YShjb2x1bW5JbmRleCwgQUlUYWJsZVJvd0NvbHVtblR5cGUuY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHgsXG4gICAgICAgICAgICB5LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHRcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=