@esotericsoftware/spine-webgl 4.2.117 → 4.3.1

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.
@@ -80,14 +80,12 @@ export class SceneRenderer {
80
80
  this.camera.update();
81
81
  this.enableRenderer(this.batcher);
82
82
  }
83
- drawSkeleton(skeleton, premultipliedAlpha = false, slotRangeStart = -1, slotRangeEnd = -1, transform = null) {
83
+ drawSkeleton(skeleton, slotRangeStart = -1, slotRangeEnd = -1, transform = null) {
84
84
  this.enableRenderer(this.batcher);
85
- this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha;
86
85
  this.skeletonRenderer.draw(this.batcher, skeleton, slotRangeStart, slotRangeEnd, transform);
87
86
  }
88
- drawSkeletonDebug(skeleton, premultipliedAlpha = false, ignoredBones) {
87
+ drawSkeletonDebug(skeleton, ignoredBones) {
89
88
  this.enableRenderer(this.shapes);
90
- this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha;
91
89
  this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones);
92
90
  }
93
91
  drawTexture(texture, x, y, width, height, color) {
@@ -221,21 +219,21 @@ export class SceneRenderer {
221
219
  if (!color)
222
220
  color = WHITE;
223
221
  // bottom left and top right corner points relative to origin
224
- let worldOriginX = x + pivotX;
225
- let worldOriginY = y + pivotY;
226
- let fx = -pivotX;
227
- let fy = -pivotY;
228
- let fx2 = width - pivotX;
229
- let fy2 = height - pivotY;
222
+ const worldOriginX = x + pivotX;
223
+ const worldOriginY = y + pivotY;
224
+ const fx = -pivotX;
225
+ const fy = -pivotY;
226
+ const fx2 = width - pivotX;
227
+ const fy2 = height - pivotY;
230
228
  // construct corner points, start from top left and go counter clockwise
231
- let p1x = fx;
232
- let p1y = fy;
233
- let p2x = fx;
234
- let p2y = fy2;
235
- let p3x = fx2;
236
- let p3y = fy2;
237
- let p4x = fx2;
238
- let p4y = fy;
229
+ const p1x = fx;
230
+ const p1y = fy;
231
+ const p2x = fx;
232
+ const p2y = fy2;
233
+ const p3x = fx2;
234
+ const p3y = fy2;
235
+ const p4x = fx2;
236
+ const p4y = fy;
239
237
  let x1 = 0;
240
238
  let y1 = 0;
241
239
  let x2 = 0;
@@ -245,9 +243,9 @@ export class SceneRenderer {
245
243
  let x4 = 0;
246
244
  let y4 = 0;
247
245
  // rotate
248
- if (angle != 0) {
249
- let cos = MathUtils.cosDeg(angle);
250
- let sin = MathUtils.sinDeg(angle);
246
+ if (angle !== 0) {
247
+ const cos = MathUtils.cosDeg(angle);
248
+ const sin = MathUtils.sinDeg(angle);
251
249
  x1 = cos * p1x - sin * p1y;
252
250
  y1 = sin * p1x + cos * p1y;
253
251
  x4 = cos * p2x - sin * p2y;
@@ -436,26 +434,34 @@ export class SceneRenderer {
436
434
  this.shapes.end();
437
435
  this.activeRenderer = null;
438
436
  }
439
- resize(resizeMode) {
440
- let canvas = this.canvas;
441
- var dpr = this.getSafeDevicePixelRatio(canvas.clientWidth, canvas.clientHeight);
437
+ resize(resizeMode, worldWidth, worldHeight) {
438
+ const canvas = this.canvas;
439
+ const dpr = this.getSafeDevicePixelRatio(canvas.clientWidth, canvas.clientHeight);
442
440
  var w = Math.round(canvas.clientWidth * dpr);
443
441
  var h = Math.round(canvas.clientHeight * dpr);
444
- if (canvas.width != w || canvas.height != h) {
442
+ if (canvas.width !== w || canvas.height !== h) {
445
443
  canvas.width = w;
446
444
  canvas.height = h;
447
445
  }
448
- this.context.gl.viewport(0, 0, canvas.width, canvas.height);
449
- // Nothing to do for stretch, we simply apply the viewport size of the camera.
450
- if (resizeMode === ResizeMode.Expand)
451
- this.camera.setViewport(w, h);
452
- else if (resizeMode === ResizeMode.Fit) {
453
- let sourceWidth = canvas.width, sourceHeight = canvas.height;
454
- let targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight;
455
- let targetRatio = targetHeight / targetWidth;
456
- let sourceRatio = sourceHeight / sourceWidth;
457
- let scale = targetRatio < sourceRatio ? targetWidth / sourceWidth : targetHeight / sourceHeight;
458
- this.camera.setViewport(sourceWidth * scale, sourceHeight * scale);
446
+ if (resizeMode === ResizeMode.FitClip && worldWidth !== undefined && worldHeight !== undefined) {
447
+ const targetRatio = h / w, sourceRatio = worldHeight / worldWidth;
448
+ const scale = targetRatio > sourceRatio ? w / worldWidth : h / worldHeight;
449
+ worldWidth *= scale;
450
+ worldHeight *= scale;
451
+ this.camera.setViewport(worldWidth, worldHeight);
452
+ this.context.gl.viewport((w - worldWidth) / 2, (h - worldHeight) / 2, worldWidth, worldHeight);
453
+ }
454
+ else {
455
+ if (resizeMode === ResizeMode.Fit) {
456
+ const targetWidth = this.camera.viewportWidth, targetHeight = this.camera.viewportHeight;
457
+ const targetRatio = targetHeight / targetWidth, sourceRatio = h / w;
458
+ const scale = targetRatio < sourceRatio ? targetWidth / w : targetHeight / h;
459
+ this.camera.setViewport(w * scale, h * scale);
460
+ }
461
+ else if (resizeMode === ResizeMode.Expand)
462
+ this.camera.setViewport(w, h);
463
+ // Nothing to do for stretch, we simply apply the viewport size of the camera.
464
+ this.context.gl.viewport(0, 0, w, h);
459
465
  }
460
466
  this.camera.update();
461
467
  }
@@ -498,5 +504,6 @@ export var ResizeMode;
498
504
  ResizeMode[ResizeMode["Stretch"] = 0] = "Stretch";
499
505
  ResizeMode[ResizeMode["Expand"] = 1] = "Expand";
500
506
  ResizeMode[ResizeMode["Fit"] = 2] = "Fit";
507
+ ResizeMode[ResizeMode["FitClip"] = 3] = "FitClip";
501
508
  })(ResizeMode || (ResizeMode = {}));
502
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVSZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TY2VuZVJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQUUsS0FBSyxFQUF3QixTQUFTLEVBQXNCLE1BQU0sOEJBQThCLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTSxJQUFJLEdBQUc7SUFDWixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUN0QixDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FB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SUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGFBQWEsQ0FBRSxPQUFrQixFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsS0FBYTtRQUNsSixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLENB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QyxHQUFHLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxVQUFVLENBQUUsTUFBMEIsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsS0FBYTtRQUN6RyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxDQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUNoRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVEsQ0FBRSxNQUFlLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxNQUFjO1FBQzdJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLENBQUUsTUFBZSxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsTUFBYztRQUNqTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsSUFBSSxDQUFFLE1BQWUsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsS0FBYTtRQUN4RixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLENBQUUsTUFBZSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUN0RyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTyxDQUFFLGVBQWtDLEVBQUUsTUFBYyxFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ3hGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxNQUFNLENBQUUsTUFBZSxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsTUFBYyxFQUFFLEtBQWEsRUFBRSxXQUFtQixDQUFDO1FBQ2pHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELEtBQUssQ0FBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLFFBQWdCLEVBQUUsS0FBYTtRQUN6SSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsR0FBRztRQUNGLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDeEQsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFFLFVBQXNCO1FBQzdCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFFOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1RCw4RUFBOEU7UUFDOUUsSUFBSSxVQUFVLEtBQUssVUFBVSxDQUFDLE1BQU07WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzFCLElBQUksVUFBVSxLQUFLLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN4QyxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzdELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUN2RixJQUFJLFdBQVcsR0FBRyxZQUFZLEdBQUcsV0FBVyxDQUFDO1lBQzdDLElBQUksV0FBVyxHQUFHLFlBQVksR0FBRyxXQUFXLENBQUM7WUFDN0MsSUFBSSxLQUFLLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztZQUNoRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sdUJBQXVCLENBQUUsUUFBZ0IsRUFBRSxTQUFpQjtRQUNuRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBRWhELElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDdEUsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVPLGNBQWMsQ0FBRSxRQUFnRTtRQUN2RixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssUUFBUTtZQUFFLE9BQU87UUFDN0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsSUFBSSxRQUFRLFlBQVksY0FBYyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hGLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxJQUFJLFFBQVEsWUFBWSxhQUFhLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDOztZQUNBLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ25ELENBQUM7Q0FDRDtBQUVELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDckIsaURBQU8sQ0FBQTtJQUNQLCtDQUFNLENBQUE7SUFDTix5Q0FBRyxDQUFBO0FBQ0osQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBDb2xvciwgRGlzcG9zYWJsZSwgU2tlbGV0b24sIE1hdGhVdGlscywgVGV4dHVyZUF0bGFzUmVnaW9uIH0gZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmVcIjtcbmltcG9ydCB7IE9ydGhvQ2FtZXJhIH0gZnJvbSBcIi4vQ2FtZXJhLmpzXCI7XG5pbXBvcnQgeyBHTFRleHR1cmUgfSBmcm9tIFwiLi9HTFRleHR1cmUuanNcIjtcbmltcG9ydCB7IFBvbHlnb25CYXRjaGVyIH0gZnJvbSBcIi4vUG9seWdvbkJhdGNoZXIuanNcIjtcbmltcG9ydCB7IFNoYWRlciB9IGZyb20gXCIuL1NoYWRlci5qc1wiO1xuaW1wb3J0IHsgU2hhcGVSZW5kZXJlciB9IGZyb20gXCIuL1NoYXBlUmVuZGVyZXIuanNcIjtcbmltcG9ydCB7IFNrZWxldG9uRGVidWdSZW5kZXJlciB9IGZyb20gXCIuL1NrZWxldG9uRGVidWdSZW5kZXJlci5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b25SZW5kZXJlciwgVmVydGV4VHJhbnNmb3JtZXIgfSBmcm9tIFwiLi9Ta2VsZXRvblJlbmRlcmVyLmpzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcbjtcblxuY29uc3QgcXVhZCA9IFtcblx0MCwgMCwgMSwgMSwgMSwgMSwgMCwgMCxcblx0MCwgMCwgMSwgMSwgMSwgMSwgMCwgMCxcblx0MCwgMCwgMSwgMSwgMSwgMSwgMCwgMCxcblx0MCwgMCwgMSwgMSwgMSwgMSwgMCwgMCxcbl07XG5jb25zdCBRVUFEX1RSSUFOR0xFUyA9IFswLCAxLCAyLCAyLCAzLCAwXTtcbmNvbnN0IFdISVRFID0gbmV3IENvbG9yKDEsIDEsIDEsIDEpO1xuXG5leHBvcnQgY2xhc3MgU2NlbmVSZW5kZXJlciBpbXBsZW1lbnRzIERpc3Bvc2FibGUge1xuXHRjb250ZXh0OiBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0O1xuXHRjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuXHRjYW1lcmE6IE9ydGhvQ2FtZXJhO1xuXHRiYXRjaGVyOiBQb2x5Z29uQmF0Y2hlcjtcblx0cHJpdmF0ZSB0d29Db2xvclRpbnQgPSBmYWxzZTtcblx0cHJpdmF0ZSBiYXRjaGVyU2hhZGVyOiBTaGFkZXI7XG5cdHByaXZhdGUgc2hhcGVzOiBTaGFwZVJlbmRlcmVyO1xuXHRwcml2YXRlIHNoYXBlc1NoYWRlcjogU2hhZGVyO1xuXHRwcml2YXRlIGFjdGl2ZVJlbmRlcmVyOiBQb2x5Z29uQmF0Y2hlciB8IFNoYXBlUmVuZGVyZXIgfCBTa2VsZXRvbkRlYnVnUmVuZGVyZXIgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBtYXhDYW52YXNXaWR0aCA9IDA7XG5cdHByaXZhdGUgbWF4Q2FudmFzSGVpZ2h0ID0gMDtcblx0c2tlbGV0b25SZW5kZXJlcjogU2tlbGV0b25SZW5kZXJlcjtcblx0c2tlbGV0b25EZWJ1Z1JlbmRlcmVyOiBTa2VsZXRvbkRlYnVnUmVuZGVyZXI7XG5cblx0Y29uc3RydWN0b3IgKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsIGNvbnRleHQ6IE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQgfCBXZWJHTFJlbmRlcmluZ0NvbnRleHQsIHR3b0NvbG9yVGludDogYm9vbGVhbiA9IHRydWUpIHtcblx0XHR0aGlzLmNhbnZhcyA9IGNhbnZhcztcblx0XHR0aGlzLmNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCA/IGNvbnRleHQgOiBuZXcgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dChjb250ZXh0KTtcblx0XHR0aGlzLnR3b0NvbG9yVGludCA9IHR3b0NvbG9yVGludDtcblx0XHR0aGlzLmNhbWVyYSA9IG5ldyBPcnRob0NhbWVyYShjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXHRcdHRoaXMuYmF0Y2hlclNoYWRlciA9IHR3b0NvbG9yVGludCA/IFNoYWRlci5uZXdUd29Db2xvcmVkVGV4dHVyZWQodGhpcy5jb250ZXh0KSA6IFNoYWRlci5uZXdDb2xvcmVkVGV4dHVyZWQodGhpcy5jb250ZXh0KTtcblx0XHR0aGlzLmJhdGNoZXIgPSBuZXcgUG9seWdvbkJhdGNoZXIodGhpcy5jb250ZXh0LCB0d29Db2xvclRpbnQpO1xuXHRcdHRoaXMuc2hhcGVzU2hhZGVyID0gU2hhZGVyLm5ld0NvbG9yZWQodGhpcy5jb250ZXh0KTtcblx0XHR0aGlzLnNoYXBlcyA9IG5ldyBTaGFwZVJlbmRlcmVyKHRoaXMuY29udGV4dCk7XG5cdFx0dGhpcy5za2VsZXRvblJlbmRlcmVyID0gbmV3IFNrZWxldG9uUmVuZGVyZXIodGhpcy5jb250ZXh0LCB0d29Db2xvclRpbnQpO1xuXHRcdHRoaXMuc2tlbGV0b25EZWJ1Z1JlbmRlcmVyID0gbmV3IFNrZWxldG9uRGVidWdSZW5kZXJlcih0aGlzLmNvbnRleHQpO1xuXHR9XG5cblx0ZGlzcG9zZSAoKSB7XG5cdFx0dGhpcy5iYXRjaGVyLmRpc3Bvc2UoKTtcblx0XHR0aGlzLmJhdGNoZXJTaGFkZXIuZGlzcG9zZSgpO1xuXHRcdHRoaXMuc2hhcGVzLmRpc3Bvc2UoKTtcblx0XHR0aGlzLnNoYXBlc1NoYWRlci5kaXNwb3NlKCk7XG5cdFx0dGhpcy5za2VsZXRvbkRlYnVnUmVuZGVyZXIuZGlzcG9zZSgpO1xuXHR9XG5cblx0YmVnaW4gKCkge1xuXHRcdHRoaXMuY2FtZXJhLnVwZGF0ZSgpO1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0fVxuXG5cdGRyYXdTa2VsZXRvbiAoc2tlbGV0b246IFNrZWxldG9uLCBwcmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZSwgc2xvdFJhbmdlU3RhcnQgPSAtMSwgc2xvdFJhbmdlRW5kID0gLTEsIHRyYW5zZm9ybTogVmVydGV4VHJhbnNmb3JtZXIgfCBudWxsID0gbnVsbCkge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0XHR0aGlzLnNrZWxldG9uUmVuZGVyZXIucHJlbXVsdGlwbGllZEFscGhhID0gcHJlbXVsdGlwbGllZEFscGhhO1xuXHRcdHRoaXMuc2tlbGV0b25SZW5kZXJlci5kcmF3KHRoaXMuYmF0Y2hlciwgc2tlbGV0b24sIHNsb3RSYW5nZVN0YXJ0LCBzbG90UmFuZ2VFbmQsIHRyYW5zZm9ybSk7XG5cdH1cblxuXHRkcmF3U2tlbGV0b25EZWJ1ZyAoc2tlbGV0b246IFNrZWxldG9uLCBwcmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZSwgaWdub3JlZEJvbmVzPzogQXJyYXk8c3RyaW5nPikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5zaGFwZXMpO1xuXHRcdHRoaXMuc2tlbGV0b25EZWJ1Z1JlbmRlcmVyLnByZW11bHRpcGxpZWRBbHBoYSA9IHByZW11bHRpcGxpZWRBbHBoYTtcblx0XHR0aGlzLnNrZWxldG9uRGVidWdSZW5kZXJlci5kcmF3KHRoaXMuc2hhcGVzLCBza2VsZXRvbiwgaWdub3JlZEJvbmVzKTtcblx0fVxuXG5cdGRyYXdUZXh0dXJlICh0ZXh0dXJlOiBHTFRleHR1cmUsIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IFdISVRFO1xuXHRcdHZhciBpID0gMDtcblx0XHRxdWFkW2krK10gPSB4O1xuXHRcdHF1YWRbaSsrXSA9IHk7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geTtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0fVxuXHRcdHF1YWRbaSsrXSA9IHggKyB3aWR0aDtcblx0XHRxdWFkW2krK10gPSB5ICsgaGVpZ2h0O1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHR9XG5cdFx0cXVhZFtpKytdID0geDtcblx0XHRxdWFkW2krK10gPSB5ICsgaGVpZ2h0O1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gMDtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpXSA9IDA7XG5cdFx0fVxuXHRcdHRoaXMuYmF0Y2hlci5kcmF3KHRleHR1cmUsIHF1YWQsIFFVQURfVFJJQU5HTEVTKTtcblx0fVxuXG5cdGRyYXdUZXh0dXJlVVYgKHRleHR1cmU6IEdMVGV4dHVyZSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB1OiBudW1iZXIsIHY6IG51bWJlciwgdTI6IG51bWJlciwgdjI6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IFdISVRFO1xuXHRcdHZhciBpID0gMDtcblx0XHRxdWFkW2krK10gPSB4O1xuXHRcdHF1YWRbaSsrXSA9IHk7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSB1O1xuXHRcdHF1YWRbaSsrXSA9IHY7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geTtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHUyO1xuXHRcdHF1YWRbaSsrXSA9IHY7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geSArIGhlaWdodDtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHUyO1xuXHRcdHF1YWRbaSsrXSA9IHYyO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHR9XG5cdFx0cXVhZFtpKytdID0geDtcblx0XHRxdWFkW2krK10gPSB5ICsgaGVpZ2h0O1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gdTtcblx0XHRxdWFkW2krK10gPSB2Mjtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaV0gPSAwO1xuXHRcdH1cblx0XHR0aGlzLmJhdGNoZXIuZHJhdyh0ZXh0dXJlLCBxdWFkLCBRVUFEX1RSSUFOR0xFUyk7XG5cdH1cblxuXHRkcmF3VGV4dHVyZVJvdGF0ZWQgKHRleHR1cmU6IEdMVGV4dHVyZSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBwaXZvdFg6IG51bWJlciwgcGl2b3RZOiBudW1iZXIsIGFuZ2xlOiBudW1iZXIsIGNvbG9yPzogQ29sb3IpIHtcblx0XHR0aGlzLmVuYWJsZVJlbmRlcmVyKHRoaXMuYmF0Y2hlcik7XG5cdFx0aWYgKCFjb2xvcikgY29sb3IgPSBXSElURTtcblxuXHRcdC8vIGJvdHRvbSBsZWZ0IGFuZCB0b3AgcmlnaHQgY29ybmVyIHBvaW50cyByZWxhdGl2ZSB0byBvcmlnaW5cblx0XHRsZXQgd29ybGRPcmlnaW5YID0geCArIHBpdm90WDtcblx0XHRsZXQgd29ybGRPcmlnaW5ZID0geSArIHBpdm90WTtcblx0XHRsZXQgZnggPSAtcGl2b3RYO1xuXHRcdGxldCBmeSA9IC1waXZvdFk7XG5cdFx0bGV0IGZ4MiA9IHdpZHRoIC0gcGl2b3RYO1xuXHRcdGxldCBmeTIgPSBoZWlnaHQgLSBwaXZvdFk7XG5cblx0XHQvLyBjb25zdHJ1Y3QgY29ybmVyIHBvaW50cywgc3RhcnQgZnJvbSB0b3AgbGVmdCBhbmQgZ28gY291bnRlciBjbG9ja3dpc2Vcblx0XHRsZXQgcDF4ID0gZng7XG5cdFx0bGV0IHAxeSA9IGZ5O1xuXHRcdGxldCBwMnggPSBmeDtcblx0XHRsZXQgcDJ5ID0gZnkyO1xuXHRcdGxldCBwM3ggPSBmeDI7XG5cdFx0bGV0IHAzeSA9IGZ5Mjtcblx0XHRsZXQgcDR4ID0gZngyO1xuXHRcdGxldCBwNHkgPSBmeTtcblxuXHRcdGxldCB4MSA9IDA7XG5cdFx0bGV0IHkxID0gMDtcblx0XHRsZXQgeDIgPSAwO1xuXHRcdGxldCB5MiA9IDA7XG5cdFx0bGV0IHgzID0gMDtcblx0XHRsZXQgeTMgPSAwO1xuXHRcdGxldCB4NCA9IDA7XG5cdFx0bGV0IHk0ID0gMDtcblxuXHRcdC8vIHJvdGF0ZVxuXHRcdGlmIChhbmdsZSAhPSAwKSB7XG5cdFx0XHRsZXQgY29zID0gTWF0aFV0aWxzLmNvc0RlZyhhbmdsZSk7XG5cdFx0XHRsZXQgc2luID0gTWF0aFV0aWxzLnNpbkRlZyhhbmdsZSk7XG5cblx0XHRcdHgxID0gY29zICogcDF4IC0gc2luICogcDF5O1xuXHRcdFx0eTEgPSBzaW4gKiBwMXggKyBjb3MgKiBwMXk7XG5cblx0XHRcdHg0ID0gY29zICogcDJ4IC0gc2luICogcDJ5O1xuXHRcdFx0eTQgPSBzaW4gKiBwMnggKyBjb3MgKiBwMnk7XG5cblx0XHRcdHgzID0gY29zICogcDN4IC0gc2luICogcDN5O1xuXHRcdFx0eTMgPSBzaW4gKiBwM3ggKyBjb3MgKiBwM3k7XG5cblx0XHRcdHgyID0geDMgKyAoeDEgLSB4NCk7XG5cdFx0XHR5MiA9IHkzICsgKHkxIC0geTQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR4MSA9IHAxeDtcblx0XHRcdHkxID0gcDF5O1xuXG5cdFx0XHR4NCA9IHAyeDtcblx0XHRcdHk0ID0gcDJ5O1xuXG5cdFx0XHR4MyA9IHAzeDtcblx0XHRcdHkzID0gcDN5O1xuXG5cdFx0XHR4MiA9IHA0eDtcblx0XHRcdHkyID0gcDR5O1xuXHRcdH1cblxuXHRcdHgxICs9IHdvcmxkT3JpZ2luWDtcblx0XHR5MSArPSB3b3JsZE9yaWdpblk7XG5cdFx0eDIgKz0gd29ybGRPcmlnaW5YO1xuXHRcdHkyICs9IHdvcmxkT3JpZ2luWTtcblx0XHR4MyArPSB3b3JsZE9yaWdpblg7XG5cdFx0eTMgKz0gd29ybGRPcmlnaW5ZO1xuXHRcdHg0ICs9IHdvcmxkT3JpZ2luWDtcblx0XHR5NCArPSB3b3JsZE9yaWdpblk7XG5cblx0XHR2YXIgaSA9IDA7XG5cdFx0cXVhZFtpKytdID0geDE7XG5cdFx0cXVhZFtpKytdID0geTE7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4Mjtcblx0XHRxdWFkW2krK10gPSB5Mjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0fVxuXHRcdHF1YWRbaSsrXSA9IHgzO1xuXHRcdHF1YWRbaSsrXSA9IHkzO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHR9XG5cdFx0cXVhZFtpKytdID0geDQ7XG5cdFx0cXVhZFtpKytdID0geTQ7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2ldID0gMDtcblx0XHR9XG5cdFx0dGhpcy5iYXRjaGVyLmRyYXcodGV4dHVyZSwgcXVhZCwgUVVBRF9UUklBTkdMRVMpO1xuXHR9XG5cblx0ZHJhd1JlZ2lvbiAocmVnaW9uOiBUZXh0dXJlQXRsYXNSZWdpb24sIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IFdISVRFO1xuXHRcdHZhciBpID0gMDtcblx0XHRxdWFkW2krK10gPSB4O1xuXHRcdHF1YWRbaSsrXSA9IHk7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSByZWdpb24udTtcblx0XHRxdWFkW2krK10gPSByZWdpb24udjI7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geTtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi51Mjtcblx0XHRxdWFkW2krK10gPSByZWdpb24udjI7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geSArIGhlaWdodDtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi51Mjtcblx0XHRxdWFkW2krK10gPSByZWdpb24udjtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0fVxuXHRcdHF1YWRbaSsrXSA9IHg7XG5cdFx0cXVhZFtpKytdID0geSArIGhlaWdodDtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi51O1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi52O1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpXSA9IDA7XG5cdFx0fVxuXHRcdHRoaXMuYmF0Y2hlci5kcmF3KDxHTFRleHR1cmU+cmVnaW9uLnBhZ2UudGV4dHVyZSwgcXVhZCwgUVVBRF9UUklBTkdMRVMpO1xuXHR9XG5cblx0bGluZSAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIGNvbG9yPzogQ29sb3IsIGNvbG9yMj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMubGluZSh4LCB5LCB4MiwgeTIsIGNvbG9yKTtcblx0fVxuXG5cdHRyaWFuZ2xlIChmaWxsZWQ6IGJvb2xlYW4sIHg6IG51bWJlciwgeTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCB4MzogbnVtYmVyLCB5MzogbnVtYmVyLCBjb2xvcj86IENvbG9yLCBjb2xvcjI/OiBDb2xvciwgY29sb3IzPzogQ29sb3IpIHtcblx0XHR0aGlzLmVuYWJsZVJlbmRlcmVyKHRoaXMuc2hhcGVzKTtcblx0XHR0aGlzLnNoYXBlcy50cmlhbmdsZShmaWxsZWQsIHgsIHksIHgyLCB5MiwgeDMsIHkzLCBjb2xvciwgY29sb3IyLCBjb2xvcjMpO1xuXHR9XG5cblx0cXVhZCAoZmlsbGVkOiBib29sZWFuLCB4OiBudW1iZXIsIHk6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgeDQ6IG51bWJlciwgeTQ6IG51bWJlciwgY29sb3I/OiBDb2xvciwgY29sb3IyPzogQ29sb3IsIGNvbG9yMz86IENvbG9yLCBjb2xvcjQ/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5zaGFwZXMpO1xuXHRcdHRoaXMuc2hhcGVzLnF1YWQoZmlsbGVkLCB4LCB5LCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBjb2xvciwgY29sb3IyLCBjb2xvcjMsIGNvbG9yNCk7XG5cdH1cblxuXHRyZWN0IChmaWxsZWQ6IGJvb2xlYW4sIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5zaGFwZXMpO1xuXHRcdHRoaXMuc2hhcGVzLnJlY3QoZmlsbGVkLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb2xvcik7XG5cdH1cblxuXHRyZWN0TGluZSAoZmlsbGVkOiBib29sZWFuLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMucmVjdExpbmUoZmlsbGVkLCB4MSwgeTEsIHgyLCB5Miwgd2lkdGgsIGNvbG9yKTtcblx0fVxuXG5cdHBvbHlnb24gKHBvbHlnb25WZXJ0aWNlczogQXJyYXlMaWtlPG51bWJlcj4sIG9mZnNldDogbnVtYmVyLCBjb3VudDogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMucG9seWdvbihwb2x5Z29uVmVydGljZXMsIG9mZnNldCwgY291bnQsIGNvbG9yKTtcblx0fVxuXG5cdGNpcmNsZSAoZmlsbGVkOiBib29sZWFuLCB4OiBudW1iZXIsIHk6IG51bWJlciwgcmFkaXVzOiBudW1iZXIsIGNvbG9yPzogQ29sb3IsIHNlZ21lbnRzOiBudW1iZXIgPSAwKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMuY2lyY2xlKGZpbGxlZCwgeCwgeSwgcmFkaXVzLCBjb2xvciwgc2VnbWVudHMpO1xuXHR9XG5cblx0Y3VydmUgKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBzZWdtZW50czogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMuY3VydmUoeDEsIHkxLCBjeDEsIGN5MSwgY3gyLCBjeTIsIHgyLCB5Miwgc2VnbWVudHMsIGNvbG9yKTtcblx0fVxuXG5cdGVuZCAoKSB7XG5cdFx0aWYgKHRoaXMuYWN0aXZlUmVuZGVyZXIgPT09IHRoaXMuYmF0Y2hlcikgdGhpcy5iYXRjaGVyLmVuZCgpO1xuXHRcdGVsc2UgaWYgKHRoaXMuYWN0aXZlUmVuZGVyZXIgPT09IHRoaXMuc2hhcGVzKSB0aGlzLnNoYXBlcy5lbmQoKTtcblx0XHR0aGlzLmFjdGl2ZVJlbmRlcmVyID0gbnVsbDtcblx0fVxuXG5cdHJlc2l6ZSAocmVzaXplTW9kZTogUmVzaXplTW9kZSkge1xuXHRcdGxldCBjYW52YXMgPSB0aGlzLmNhbnZhcztcblx0XHR2YXIgZHByID0gdGhpcy5nZXRTYWZlRGV2aWNlUGl4ZWxSYXRpbyhjYW52YXMuY2xpZW50V2lkdGgsIGNhbnZhcy5jbGllbnRIZWlnaHQpO1xuXHRcdHZhciB3ID0gTWF0aC5yb3VuZChjYW52YXMuY2xpZW50V2lkdGggKiBkcHIpO1xuXHRcdHZhciBoID0gTWF0aC5yb3VuZChjYW52YXMuY2xpZW50SGVpZ2h0ICogZHByKTtcblxuXHRcdGlmIChjYW52YXMud2lkdGggIT0gdyB8fCBjYW52YXMuaGVpZ2h0ICE9IGgpIHtcblx0XHRcdGNhbnZhcy53aWR0aCA9IHc7XG5cdFx0XHRjYW52YXMuaGVpZ2h0ID0gaDtcblx0XHR9XG5cdFx0dGhpcy5jb250ZXh0LmdsLnZpZXdwb3J0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cblx0XHQvLyBOb3RoaW5nIHRvIGRvIGZvciBzdHJldGNoLCB3ZSBzaW1wbHkgYXBwbHkgdGhlIHZpZXdwb3J0IHNpemUgb2YgdGhlIGNhbWVyYS5cblx0XHRpZiAocmVzaXplTW9kZSA9PT0gUmVzaXplTW9kZS5FeHBhbmQpXG5cdFx0XHR0aGlzLmNhbWVyYS5zZXRWaWV3cG9ydCh3LCBoKTtcblx0XHRlbHNlIGlmIChyZXNpemVNb2RlID09PSBSZXNpemVNb2RlLkZpdCkge1xuXHRcdFx0bGV0IHNvdXJjZVdpZHRoID0gY2FudmFzLndpZHRoLCBzb3VyY2VIZWlnaHQgPSBjYW52YXMuaGVpZ2h0O1xuXHRcdFx0bGV0IHRhcmdldFdpZHRoID0gdGhpcy5jYW1lcmEudmlld3BvcnRXaWR0aCwgdGFyZ2V0SGVpZ2h0ID0gdGhpcy5jYW1lcmEudmlld3BvcnRIZWlnaHQ7XG5cdFx0XHRsZXQgdGFyZ2V0UmF0aW8gPSB0YXJnZXRIZWlnaHQgLyB0YXJnZXRXaWR0aDtcblx0XHRcdGxldCBzb3VyY2VSYXRpbyA9IHNvdXJjZUhlaWdodCAvIHNvdXJjZVdpZHRoO1xuXHRcdFx0bGV0IHNjYWxlID0gdGFyZ2V0UmF0aW8gPCBzb3VyY2VSYXRpbyA/IHRhcmdldFdpZHRoIC8gc291cmNlV2lkdGggOiB0YXJnZXRIZWlnaHQgLyBzb3VyY2VIZWlnaHQ7XG5cdFx0XHR0aGlzLmNhbWVyYS5zZXRWaWV3cG9ydChzb3VyY2VXaWR0aCAqIHNjYWxlLCBzb3VyY2VIZWlnaHQgKiBzY2FsZSk7XG5cdFx0fVxuXHRcdHRoaXMuY2FtZXJhLnVwZGF0ZSgpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRTYWZlRGV2aWNlUGl4ZWxSYXRpbyAoY3NzV2lkdGg6IG51bWJlciwgY3NzSGVpZ2h0OiBudW1iZXIpOiBudW1iZXIge1xuXHRcdGNvbnN0IGRwciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG5cdFx0aWYgKGNzc1dpZHRoIDw9IDAgfHwgY3NzSGVpZ2h0IDw9IDApIHJldHVybiBkcHI7XG5cblx0XHRpZiAodGhpcy5tYXhDYW52YXNXaWR0aCA9PT0gMCB8fCB0aGlzLm1heENhbnZhc0hlaWdodCA9PT0gMCkge1xuXHRcdFx0Y29uc3QgZ2wgPSB0aGlzLmNvbnRleHQuZ2w7XG5cdFx0XHRjb25zdCBtYXhSZW5kZXJidWZmZXJTaXplID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9SRU5ERVJCVUZGRVJfU0laRSk7XG5cdFx0XHRjb25zdCBtYXhWaWV3cG9ydERpbXMgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuTUFYX1ZJRVdQT1JUX0RJTVMpO1xuXHRcdFx0dGhpcy5tYXhDYW52YXNXaWR0aCA9IE1hdGgubWluKG1heFJlbmRlcmJ1ZmZlclNpemUsIG1heFZpZXdwb3J0RGltc1swXSk7XG5cdFx0XHR0aGlzLm1heENhbnZhc0hlaWdodCA9IE1hdGgubWluKG1heFJlbmRlcmJ1ZmZlclNpemUsIG1heFZpZXdwb3J0RGltc1sxXSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE1hdGgubWluKGRwciwgdGhpcy5tYXhDYW52YXNXaWR0aCAvIGNzc1dpZHRoLCB0aGlzLm1heENhbnZhc0hlaWdodCAvIGNzc0hlaWdodCk7XG5cdH1cblxuXHRwcml2YXRlIGVuYWJsZVJlbmRlcmVyIChyZW5kZXJlcjogUG9seWdvbkJhdGNoZXIgfCBTaGFwZVJlbmRlcmVyIHwgU2tlbGV0b25EZWJ1Z1JlbmRlcmVyKSB7XG5cdFx0aWYgKHRoaXMuYWN0aXZlUmVuZGVyZXIgPT09IHJlbmRlcmVyKSByZXR1cm47XG5cdFx0dGhpcy5lbmQoKTtcblx0XHRpZiAocmVuZGVyZXIgaW5zdGFuY2VvZiBQb2x5Z29uQmF0Y2hlcikge1xuXHRcdFx0dGhpcy5iYXRjaGVyU2hhZGVyLmJpbmQoKTtcblx0XHRcdHRoaXMuYmF0Y2hlclNoYWRlci5zZXRVbmlmb3JtNHg0ZihTaGFkZXIuTVZQX01BVFJJWCwgdGhpcy5jYW1lcmEucHJvamVjdGlvblZpZXcudmFsdWVzKTtcblx0XHRcdHRoaXMuYmF0Y2hlclNoYWRlci5zZXRVbmlmb3JtaShcInVfdGV4dHVyZVwiLCAwKTtcblx0XHRcdHRoaXMuYmF0Y2hlci5iZWdpbih0aGlzLmJhdGNoZXJTaGFkZXIpO1xuXHRcdFx0dGhpcy5hY3RpdmVSZW5kZXJlciA9IHRoaXMuYmF0Y2hlcjtcblx0XHR9IGVsc2UgaWYgKHJlbmRlcmVyIGluc3RhbmNlb2YgU2hhcGVSZW5kZXJlcikge1xuXHRcdFx0dGhpcy5zaGFwZXNTaGFkZXIuYmluZCgpO1xuXHRcdFx0dGhpcy5zaGFwZXNTaGFkZXIuc2V0VW5pZm9ybTR4NGYoU2hhZGVyLk1WUF9NQVRSSVgsIHRoaXMuY2FtZXJhLnByb2plY3Rpb25WaWV3LnZhbHVlcyk7XG5cdFx0XHR0aGlzLnNoYXBlcy5iZWdpbih0aGlzLnNoYXBlc1NoYWRlcik7XG5cdFx0XHR0aGlzLmFjdGl2ZVJlbmRlcmVyID0gdGhpcy5zaGFwZXM7XG5cdFx0fSBlbHNlXG5cdFx0XHR0aGlzLmFjdGl2ZVJlbmRlcmVyID0gdGhpcy5za2VsZXRvbkRlYnVnUmVuZGVyZXI7XG5cdH1cbn1cblxuZXhwb3J0IGVudW0gUmVzaXplTW9kZSB7XG5cdFN0cmV0Y2gsXG5cdEV4cGFuZCxcblx0Rml0XG59XG4iXX0=
509
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVSZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TY2VuZVJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQUUsS0FBSyxFQUFtQixTQUFTLEVBQTBDLE1BQU0sOEJBQThCLENBQUM7QUFDekgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUEwQixNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxRCxDQUFDO0FBRUQsTUFBTSxJQUFJLEdBQUc7SUFDWixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUN0QixDQUFDO0FBQ0YsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXBDLE1BQU0sT0FBTyxhQUFhO0lBQ3pCLE9BQU8sQ0FBK0I7SUFDdEMsTUFBTSxDQUFvQjtJQUMxQixNQUFNLENBQWM7SUFDcEIsT0FBTyxDQUFpQjtJQUNoQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLGFBQWEsQ0FBUztJQUN0QixNQUFNLENBQWdCO0lBQ3RCLFlBQVksQ0FBUztJQUNyQixjQUFjLEdBQWtFLElBQUksQ0FBQztJQUNyRixjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFDNUIsZ0JBQWdCLENBQW1CO0lBQ25DLHFCQUFxQixDQUF3QjtJQUU3QyxZQUFhLE1BQXlCLEVBQUUsT0FBNkQsRUFBRSxlQUF3QixJQUFJO1FBQ2xJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxZQUFZLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckgsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6SCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsT0FBTztRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFFLFFBQWtCLEVBQUUsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxZQUFzQyxJQUFJO1FBQ25ILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsaUJBQWlCLENBQUUsUUFBa0IsRUFBRSxZQUE0QjtRQUNsRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxXQUFXLENBQUUsT0FBa0IsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsS0FBYTtRQUNsRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsYUFBYSxDQUFFLE9BQWtCLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUFhLEVBQUUsTUFBYyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxLQUFhO1FBQ2xKLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFB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QUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxVQUFVLENBQUUsTUFBMEIsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsS0FBYTtRQUN6RyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxDQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUNoRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVEsQ0FBRSxNQUFlLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxNQUFjO1FBQzdJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLENBQUUsTUFBZSxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsTUFBYztRQUNqTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxN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LENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkMsQ0FBQzs7WUFDQSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNuRCxDQUFDO0NBQ0Q7QUFFRCxNQUFNLENBQU4sSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ3JCLGlEQUFPLENBQUE7SUFDUCwrQ0FBTSxDQUFBO0lBQ04seUNBQUcsQ0FBQTtJQUNILGlEQUFPLENBQUE7QUFDUixDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENvbG9yLCB0eXBlIERpc3Bvc2FibGUsIE1hdGhVdGlscywgdHlwZSBTa2VsZXRvbiwgdHlwZSBUZXh0dXJlQXRsYXNSZWdpb24gfSBmcm9tIFwiQGVzb3Rlcmljc29mdHdhcmUvc3BpbmUtY29yZVwiO1xuaW1wb3J0IHsgT3J0aG9DYW1lcmEgfSBmcm9tIFwiLi9DYW1lcmEuanNcIjtcbmltcG9ydCB0eXBlIHsgR0xUZXh0dXJlIH0gZnJvbSBcIi4vR0xUZXh0dXJlLmpzXCI7XG5pbXBvcnQgeyBQb2x5Z29uQmF0Y2hlciB9IGZyb20gXCIuL1BvbHlnb25CYXRjaGVyLmpzXCI7XG5pbXBvcnQgeyBTaGFkZXIgfSBmcm9tIFwiLi9TaGFkZXIuanNcIjtcbmltcG9ydCB7IFNoYXBlUmVuZGVyZXIgfSBmcm9tIFwiLi9TaGFwZVJlbmRlcmVyLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkRlYnVnUmVuZGVyZXIgfSBmcm9tIFwiLi9Ta2VsZXRvbkRlYnVnUmVuZGVyZXIuanNcIjtcbmltcG9ydCB7IFNrZWxldG9uUmVuZGVyZXIsIHR5cGUgVmVydGV4VHJhbnNmb3JtZXIgfSBmcm9tIFwiLi9Ta2VsZXRvblJlbmRlcmVyLmpzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcblxuO1xuXG5jb25zdCBxdWFkID0gW1xuXHQwLCAwLCAxLCAxLCAxLCAxLCAwLCAwLFxuXHQwLCAwLCAxLCAxLCAxLCAxLCAwLCAwLFxuXHQwLCAwLCAxLCAxLCAxLCAxLCAwLCAwLFxuXHQwLCAwLCAxLCAxLCAxLCAxLCAwLCAwLFxuXTtcbmNvbnN0IFFVQURfVFJJQU5HTEVTID0gWzAsIDEsIDIsIDIsIDMsIDBdO1xuY29uc3QgV0hJVEUgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cbmV4cG9ydCBjbGFzcyBTY2VuZVJlbmRlcmVyIGltcGxlbWVudHMgRGlzcG9zYWJsZSB7XG5cdGNvbnRleHQ6IE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG5cdGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG5cdGNhbWVyYTogT3J0aG9DYW1lcmE7XG5cdGJhdGNoZXI6IFBvbHlnb25CYXRjaGVyO1xuXHRwcml2YXRlIHR3b0NvbG9yVGludCA9IGZhbHNlO1xuXHRwcml2YXRlIGJhdGNoZXJTaGFkZXI6IFNoYWRlcjtcblx0cHJpdmF0ZSBzaGFwZXM6IFNoYXBlUmVuZGVyZXI7XG5cdHByaXZhdGUgc2hhcGVzU2hhZGVyOiBTaGFkZXI7XG5cdHByaXZhdGUgYWN0aXZlUmVuZGVyZXI6IFBvbHlnb25CYXRjaGVyIHwgU2hhcGVSZW5kZXJlciB8IFNrZWxldG9uRGVidWdSZW5kZXJlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIG1heENhbnZhc1dpZHRoID0gMDtcblx0cHJpdmF0ZSBtYXhDYW52YXNIZWlnaHQgPSAwO1xuXHRza2VsZXRvblJlbmRlcmVyOiBTa2VsZXRvblJlbmRlcmVyO1xuXHRza2VsZXRvbkRlYnVnUmVuZGVyZXI6IFNrZWxldG9uRGVidWdSZW5kZXJlcjtcblxuXHRjb25zdHJ1Y3RvciAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCwgY29udGV4dDogTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCB8IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdHdvQ29sb3JUaW50OiBib29sZWFuID0gdHJ1ZSkge1xuXHRcdHRoaXMuY2FudmFzID0gY2FudmFzO1xuXHRcdHRoaXMuY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0ID8gY29udGV4dCA6IG5ldyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0KGNvbnRleHQpO1xuXHRcdHRoaXMudHdvQ29sb3JUaW50ID0gdHdvQ29sb3JUaW50O1xuXHRcdHRoaXMuY2FtZXJhID0gbmV3IE9ydGhvQ2FtZXJhKGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cdFx0dGhpcy5iYXRjaGVyU2hhZGVyID0gdHdvQ29sb3JUaW50ID8gU2hhZGVyLm5ld1R3b0NvbG9yZWRUZXh0dXJlZCh0aGlzLmNvbnRleHQpIDogU2hhZGVyLm5ld0NvbG9yZWRUZXh0dXJlZCh0aGlzLmNvbnRleHQpO1xuXHRcdHRoaXMuYmF0Y2hlciA9IG5ldyBQb2x5Z29uQmF0Y2hlcih0aGlzLmNvbnRleHQsIHR3b0NvbG9yVGludCk7XG5cdFx0dGhpcy5zaGFwZXNTaGFkZXIgPSBTaGFkZXIubmV3Q29sb3JlZCh0aGlzLmNvbnRleHQpO1xuXHRcdHRoaXMuc2hhcGVzID0gbmV3IFNoYXBlUmVuZGVyZXIodGhpcy5jb250ZXh0KTtcblx0XHR0aGlzLnNrZWxldG9uUmVuZGVyZXIgPSBuZXcgU2tlbGV0b25SZW5kZXJlcih0aGlzLmNvbnRleHQsIHR3b0NvbG9yVGludCk7XG5cdFx0dGhpcy5za2VsZXRvbkRlYnVnUmVuZGVyZXIgPSBuZXcgU2tlbGV0b25EZWJ1Z1JlbmRlcmVyKHRoaXMuY29udGV4dCk7XG5cdH1cblxuXHRkaXNwb3NlICgpIHtcblx0XHR0aGlzLmJhdGNoZXIuZGlzcG9zZSgpO1xuXHRcdHRoaXMuYmF0Y2hlclNoYWRlci5kaXNwb3NlKCk7XG5cdFx0dGhpcy5zaGFwZXMuZGlzcG9zZSgpO1xuXHRcdHRoaXMuc2hhcGVzU2hhZGVyLmRpc3Bvc2UoKTtcblx0XHR0aGlzLnNrZWxldG9uRGVidWdSZW5kZXJlci5kaXNwb3NlKCk7XG5cdH1cblxuXHRiZWdpbiAoKSB7XG5cdFx0dGhpcy5jYW1lcmEudXBkYXRlKCk7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLmJhdGNoZXIpO1xuXHR9XG5cblx0ZHJhd1NrZWxldG9uIChza2VsZXRvbjogU2tlbGV0b24sIHNsb3RSYW5nZVN0YXJ0ID0gLTEsIHNsb3RSYW5nZUVuZCA9IC0xLCB0cmFuc2Zvcm06IFZlcnRleFRyYW5zZm9ybWVyIHwgbnVsbCA9IG51bGwpIHtcblx0XHR0aGlzLmVuYWJsZVJlbmRlcmVyKHRoaXMuYmF0Y2hlcik7XG5cdFx0dGhpcy5za2VsZXRvblJlbmRlcmVyLmRyYXcodGhpcy5iYXRjaGVyLCBza2VsZXRvbiwgc2xvdFJhbmdlU3RhcnQsIHNsb3RSYW5nZUVuZCwgdHJhbnNmb3JtKTtcblx0fVxuXG5cdGRyYXdTa2VsZXRvbkRlYnVnIChza2VsZXRvbjogU2tlbGV0b24sIGlnbm9yZWRCb25lcz86IEFycmF5PHN0cmluZz4pIHtcblx0XHR0aGlzLmVuYWJsZVJlbmRlcmVyKHRoaXMuc2hhcGVzKTtcblx0XHR0aGlzLnNrZWxldG9uRGVidWdSZW5kZXJlci5kcmF3KHRoaXMuc2hhcGVzLCBza2VsZXRvbiwgaWdub3JlZEJvbmVzKTtcblx0fVxuXG5cdGRyYXdUZXh0dXJlICh0ZXh0dXJlOiBHTFRleHR1cmUsIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IFdISVRFO1xuXHRcdHZhciBpID0gMDtcblx0XHRxdWFkW2krK10gPSB4O1xuXHRcdHF1YWRbaSsrXSA9IHk7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geTtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0fVxuXHRcdHF1YWRbaSsrXSA9IHggKyB3aWR0aDtcblx0XHRxdWFkW2krK10gPSB5ICsgaGVpZ2h0O1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHR9XG5cdFx0cXVhZFtpKytdID0geDtcblx0XHRxdWFkW2krK10gPSB5ICsgaGVpZ2h0O1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gMDtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpXSA9IDA7XG5cdFx0fVxuXHRcdHRoaXMuYmF0Y2hlci5kcmF3KHRleHR1cmUsIHF1YWQsIFFVQURfVFJJQU5HTEVTKTtcblx0fVxuXG5cdGRyYXdUZXh0dXJlVVYgKHRleHR1cmU6IEdMVGV4dHVyZSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB1OiBudW1iZXIsIHY6IG51bWJlciwgdTI6IG51bWJlciwgdjI6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IFdISVRFO1xuXHRcdHZhciBpID0gMDtcblx0XHRxdWFkW2krK10gPSB4O1xuXHRcdHF1YWRbaSsrXSA9IHk7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSB1O1xuXHRcdHF1YWRbaSsrXSA9IHY7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geTtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHUyO1xuXHRcdHF1YWRbaSsrXSA9IHY7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geSArIGhlaWdodDtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHUyO1xuXHRcdHF1YWRbaSsrXSA9IHYyO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHR9XG5cdFx0cXVhZFtpKytdID0geDtcblx0XHRxdWFkW2krK10gPSB5ICsgaGVpZ2h0O1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gdTtcblx0XHRxdWFkW2krK10gPSB2Mjtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaV0gPSAwO1xuXHRcdH1cblx0XHR0aGlzLmJhdGNoZXIuZHJhdyh0ZXh0dXJlLCBxdWFkLCBRVUFEX1RSSUFOR0xFUyk7XG5cdH1cblxuXHRkcmF3VGV4dHVyZVJvdGF0ZWQgKHRleHR1cmU6IEdMVGV4dHVyZSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBwaXZvdFg6IG51bWJlciwgcGl2b3RZOiBudW1iZXIsIGFuZ2xlOiBudW1iZXIsIGNvbG9yPzogQ29sb3IpIHtcblx0XHR0aGlzLmVuYWJsZVJlbmRlcmVyKHRoaXMuYmF0Y2hlcik7XG5cdFx0aWYgKCFjb2xvcikgY29sb3IgPSBXSElURTtcblxuXHRcdC8vIGJvdHRvbSBsZWZ0IGFuZCB0b3AgcmlnaHQgY29ybmVyIHBvaW50cyByZWxhdGl2ZSB0byBvcmlnaW5cblx0XHRjb25zdCB3b3JsZE9yaWdpblggPSB4ICsgcGl2b3RYO1xuXHRcdGNvbnN0IHdvcmxkT3JpZ2luWSA9IHkgKyBwaXZvdFk7XG5cdFx0Y29uc3QgZnggPSAtcGl2b3RYO1xuXHRcdGNvbnN0IGZ5ID0gLXBpdm90WTtcblx0XHRjb25zdCBmeDIgPSB3aWR0aCAtIHBpdm90WDtcblx0XHRjb25zdCBmeTIgPSBoZWlnaHQgLSBwaXZvdFk7XG5cblx0XHQvLyBjb25zdHJ1Y3QgY29ybmVyIHBvaW50cywgc3RhcnQgZnJvbSB0b3AgbGVmdCBhbmQgZ28gY291bnRlciBjbG9ja3dpc2Vcblx0XHRjb25zdCBwMXggPSBmeDtcblx0XHRjb25zdCBwMXkgPSBmeTtcblx0XHRjb25zdCBwMnggPSBmeDtcblx0XHRjb25zdCBwMnkgPSBmeTI7XG5cdFx0Y29uc3QgcDN4ID0gZngyO1xuXHRcdGNvbnN0IHAzeSA9IGZ5Mjtcblx0XHRjb25zdCBwNHggPSBmeDI7XG5cdFx0Y29uc3QgcDR5ID0gZnk7XG5cblx0XHRsZXQgeDEgPSAwO1xuXHRcdGxldCB5MSA9IDA7XG5cdFx0bGV0IHgyID0gMDtcblx0XHRsZXQgeTIgPSAwO1xuXHRcdGxldCB4MyA9IDA7XG5cdFx0bGV0IHkzID0gMDtcblx0XHRsZXQgeDQgPSAwO1xuXHRcdGxldCB5NCA9IDA7XG5cblx0XHQvLyByb3RhdGVcblx0XHRpZiAoYW5nbGUgIT09IDApIHtcblx0XHRcdGNvbnN0IGNvcyA9IE1hdGhVdGlscy5jb3NEZWcoYW5nbGUpO1xuXHRcdFx0Y29uc3Qgc2luID0gTWF0aFV0aWxzLnNpbkRlZyhhbmdsZSk7XG5cblx0XHRcdHgxID0gY29zICogcDF4IC0gc2luICogcDF5O1xuXHRcdFx0eTEgPSBzaW4gKiBwMXggKyBjb3MgKiBwMXk7XG5cblx0XHRcdHg0ID0gY29zICogcDJ4IC0gc2luICogcDJ5O1xuXHRcdFx0eTQgPSBzaW4gKiBwMnggKyBjb3MgKiBwMnk7XG5cblx0XHRcdHgzID0gY29zICogcDN4IC0gc2luICogcDN5O1xuXHRcdFx0eTMgPSBzaW4gKiBwM3ggKyBjb3MgKiBwM3k7XG5cblx0XHRcdHgyID0geDMgKyAoeDEgLSB4NCk7XG5cdFx0XHR5MiA9IHkzICsgKHkxIC0geTQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR4MSA9IHAxeDtcblx0XHRcdHkxID0gcDF5O1xuXG5cdFx0XHR4NCA9IHAyeDtcblx0XHRcdHk0ID0gcDJ5O1xuXG5cdFx0XHR4MyA9IHAzeDtcblx0XHRcdHkzID0gcDN5O1xuXG5cdFx0XHR4MiA9IHA0eDtcblx0XHRcdHkyID0gcDR5O1xuXHRcdH1cblxuXHRcdHgxICs9IHdvcmxkT3JpZ2luWDtcblx0XHR5MSArPSB3b3JsZE9yaWdpblk7XG5cdFx0eDIgKz0gd29ybGRPcmlnaW5YO1xuXHRcdHkyICs9IHdvcmxkT3JpZ2luWTtcblx0XHR4MyArPSB3b3JsZE9yaWdpblg7XG5cdFx0eTMgKz0gd29ybGRPcmlnaW5ZO1xuXHRcdHg0ICs9IHdvcmxkT3JpZ2luWDtcblx0XHR5NCArPSB3b3JsZE9yaWdpblk7XG5cblx0XHR2YXIgaSA9IDA7XG5cdFx0cXVhZFtpKytdID0geDE7XG5cdFx0cXVhZFtpKytdID0geTE7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4Mjtcblx0XHRxdWFkW2krK10gPSB5Mjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IDE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0fVxuXHRcdHF1YWRbaSsrXSA9IHgzO1xuXHRcdHF1YWRbaSsrXSA9IHkzO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLnI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuZztcblx0XHRxdWFkW2krK10gPSBjb2xvci5iO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmE7XG5cdFx0cXVhZFtpKytdID0gMTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHR9XG5cdFx0cXVhZFtpKytdID0geDQ7XG5cdFx0cXVhZFtpKytdID0geTQ7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSAwO1xuXHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2ldID0gMDtcblx0XHR9XG5cdFx0dGhpcy5iYXRjaGVyLmRyYXcodGV4dHVyZSwgcXVhZCwgUVVBRF9UUklBTkdMRVMpO1xuXHR9XG5cblx0ZHJhd1JlZ2lvbiAocmVnaW9uOiBUZXh0dXJlQXRsYXNSZWdpb24sIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5iYXRjaGVyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IFdISVRFO1xuXHRcdHZhciBpID0gMDtcblx0XHRxdWFkW2krK10gPSB4O1xuXHRcdHF1YWRbaSsrXSA9IHk7XG5cdFx0cXVhZFtpKytdID0gY29sb3Iucjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5nO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmI7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYTtcblx0XHRxdWFkW2krK10gPSByZWdpb24udTtcblx0XHRxdWFkW2krK10gPSByZWdpb24udjI7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geTtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi51Mjtcblx0XHRxdWFkW2krK10gPSByZWdpb24udjI7XG5cdFx0aWYgKHRoaXMudHdvQ29sb3JUaW50KSB7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdH1cblx0XHRxdWFkW2krK10gPSB4ICsgd2lkdGg7XG5cdFx0cXVhZFtpKytdID0geSArIGhlaWdodDtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi51Mjtcblx0XHRxdWFkW2krK10gPSByZWdpb24udjtcblx0XHRpZiAodGhpcy50d29Db2xvclRpbnQpIHtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0fVxuXHRcdHF1YWRbaSsrXSA9IHg7XG5cdFx0cXVhZFtpKytdID0geSArIGhlaWdodDtcblx0XHRxdWFkW2krK10gPSBjb2xvci5yO1xuXHRcdHF1YWRbaSsrXSA9IGNvbG9yLmc7XG5cdFx0cXVhZFtpKytdID0gY29sb3IuYjtcblx0XHRxdWFkW2krK10gPSBjb2xvci5hO1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi51O1xuXHRcdHF1YWRbaSsrXSA9IHJlZ2lvbi52O1xuXHRcdGlmICh0aGlzLnR3b0NvbG9yVGludCkge1xuXHRcdFx0cXVhZFtpKytdID0gMDtcblx0XHRcdHF1YWRbaSsrXSA9IDA7XG5cdFx0XHRxdWFkW2krK10gPSAwO1xuXHRcdFx0cXVhZFtpXSA9IDA7XG5cdFx0fVxuXHRcdHRoaXMuYmF0Y2hlci5kcmF3KDxHTFRleHR1cmU+cmVnaW9uLnBhZ2UudGV4dHVyZSwgcXVhZCwgUVVBRF9UUklBTkdMRVMpO1xuXHR9XG5cblx0bGluZSAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIGNvbG9yPzogQ29sb3IsIGNvbG9yMj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMubGluZSh4LCB5LCB4MiwgeTIsIGNvbG9yKTtcblx0fVxuXG5cdHRyaWFuZ2xlIChmaWxsZWQ6IGJvb2xlYW4sIHg6IG51bWJlciwgeTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCB4MzogbnVtYmVyLCB5MzogbnVtYmVyLCBjb2xvcj86IENvbG9yLCBjb2xvcjI/OiBDb2xvciwgY29sb3IzPzogQ29sb3IpIHtcblx0XHR0aGlzLmVuYWJsZVJlbmRlcmVyKHRoaXMuc2hhcGVzKTtcblx0XHR0aGlzLnNoYXBlcy50cmlhbmdsZShmaWxsZWQsIHgsIHksIHgyLCB5MiwgeDMsIHkzLCBjb2xvciwgY29sb3IyLCBjb2xvcjMpO1xuXHR9XG5cblx0cXVhZCAoZmlsbGVkOiBib29sZWFuLCB4OiBudW1iZXIsIHk6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgeDQ6IG51bWJlciwgeTQ6IG51bWJlciwgY29sb3I/OiBDb2xvciwgY29sb3IyPzogQ29sb3IsIGNvbG9yMz86IENvbG9yLCBjb2xvcjQ/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5zaGFwZXMpO1xuXHRcdHRoaXMuc2hhcGVzLnF1YWQoZmlsbGVkLCB4LCB5LCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBjb2xvciwgY29sb3IyLCBjb2xvcjMsIGNvbG9yNCk7XG5cdH1cblxuXHRyZWN0IChmaWxsZWQ6IGJvb2xlYW4sIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuZW5hYmxlUmVuZGVyZXIodGhpcy5zaGFwZXMpO1xuXHRcdHRoaXMuc2hhcGVzLnJlY3QoZmlsbGVkLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjb2xvcik7XG5cdH1cblxuXHRyZWN0TGluZSAoZmlsbGVkOiBib29sZWFuLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMucmVjdExpbmUoZmlsbGVkLCB4MSwgeTEsIHgyLCB5Miwgd2lkdGgsIGNvbG9yKTtcblx0fVxuXG5cdHBvbHlnb24gKHBvbHlnb25WZXJ0aWNlczogQXJyYXlMaWtlPG51bWJlcj4sIG9mZnNldDogbnVtYmVyLCBjb3VudDogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMucG9seWdvbihwb2x5Z29uVmVydGljZXMsIG9mZnNldCwgY291bnQsIGNvbG9yKTtcblx0fVxuXG5cdGNpcmNsZSAoZmlsbGVkOiBib29sZWFuLCB4OiBudW1iZXIsIHk6IG51bWJlciwgcmFkaXVzOiBudW1iZXIsIGNvbG9yPzogQ29sb3IsIHNlZ21lbnRzOiBudW1iZXIgPSAwKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMuY2lyY2xlKGZpbGxlZCwgeCwgeSwgcmFkaXVzLCBjb2xvciwgc2VnbWVudHMpO1xuXHR9XG5cblx0Y3VydmUgKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBzZWdtZW50czogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5lbmFibGVSZW5kZXJlcih0aGlzLnNoYXBlcyk7XG5cdFx0dGhpcy5zaGFwZXMuY3VydmUoeDEsIHkxLCBjeDEsIGN5MSwgY3gyLCBjeTIsIHgyLCB5Miwgc2VnbWVudHMsIGNvbG9yKTtcblx0fVxuXG5cdGVuZCAoKSB7XG5cdFx0aWYgKHRoaXMuYWN0aXZlUmVuZGVyZXIgPT09IHRoaXMuYmF0Y2hlcikgdGhpcy5iYXRjaGVyLmVuZCgpO1xuXHRcdGVsc2UgaWYgKHRoaXMuYWN0aXZlUmVuZGVyZXIgPT09IHRoaXMuc2hhcGVzKSB0aGlzLnNoYXBlcy5lbmQoKTtcblx0XHR0aGlzLmFjdGl2ZVJlbmRlcmVyID0gbnVsbDtcblx0fVxuXG5cdHJlc2l6ZSAocmVzaXplTW9kZTogUmVzaXplTW9kZSwgd29ybGRXaWR0aD86IG51bWJlciwgd29ybGRIZWlnaHQ/OiBudW1iZXIpIHtcblx0XHRjb25zdCBjYW52YXMgPSB0aGlzLmNhbnZhcztcblx0XHRjb25zdCBkcHIgPSB0aGlzLmdldFNhZmVEZXZpY2VQaXhlbFJhdGlvKGNhbnZhcy5jbGllbnRXaWR0aCwgY2FudmFzLmNsaWVudEhlaWdodCk7XG5cdFx0dmFyIHcgPSBNYXRoLnJvdW5kKGNhbnZhcy5jbGllbnRXaWR0aCAqIGRwcik7XG5cdFx0dmFyIGggPSBNYXRoLnJvdW5kKGNhbnZhcy5jbGllbnRIZWlnaHQgKiBkcHIpO1xuXHRcdGlmIChjYW52YXMud2lkdGggIT09IHcgfHwgY2FudmFzLmhlaWdodCAhPT0gaCkge1xuXHRcdFx0Y2FudmFzLndpZHRoID0gdztcblx0XHRcdGNhbnZhcy5oZWlnaHQgPSBoO1xuXHRcdH1cblxuXHRcdGlmIChyZXNpemVNb2RlID09PSBSZXNpemVNb2RlLkZpdENsaXAgJiYgd29ybGRXaWR0aCAhPT0gdW5kZWZpbmVkICYmIHdvcmxkSGVpZ2h0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IHRhcmdldFJhdGlvID0gaCAvIHcsIHNvdXJjZVJhdGlvID0gd29ybGRIZWlnaHQgLyB3b3JsZFdpZHRoO1xuXHRcdFx0Y29uc3Qgc2NhbGUgPSB0YXJnZXRSYXRpbyA+IHNvdXJjZVJhdGlvID8gdyAvIHdvcmxkV2lkdGggOiBoIC8gd29ybGRIZWlnaHQ7XG5cdFx0XHR3b3JsZFdpZHRoICo9IHNjYWxlO1xuXHRcdFx0d29ybGRIZWlnaHQgKj0gc2NhbGU7XG5cdFx0XHR0aGlzLmNhbWVyYS5zZXRWaWV3cG9ydCh3b3JsZFdpZHRoLCB3b3JsZEhlaWdodCk7XG5cdFx0XHR0aGlzLmNvbnRleHQuZ2wudmlld3BvcnQoKHcgLSB3b3JsZFdpZHRoKSAvIDIsIChoIC0gd29ybGRIZWlnaHQpIC8gMiwgd29ybGRXaWR0aCwgd29ybGRIZWlnaHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAocmVzaXplTW9kZSA9PT0gUmVzaXplTW9kZS5GaXQpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0V2lkdGggPSB0aGlzLmNhbWVyYS52aWV3cG9ydFdpZHRoLCB0YXJnZXRIZWlnaHQgPSB0aGlzLmNhbWVyYS52aWV3cG9ydEhlaWdodDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0UmF0aW8gPSB0YXJnZXRIZWlnaHQgLyB0YXJnZXRXaWR0aCwgc291cmNlUmF0aW8gPSBoIC8gdztcblx0XHRcdFx0Y29uc3Qgc2NhbGUgPSB0YXJnZXRSYXRpbyA8IHNvdXJjZVJhdGlvID8gdGFyZ2V0V2lkdGggLyB3IDogdGFyZ2V0SGVpZ2h0IC8gaDtcblx0XHRcdFx0dGhpcy5jYW1lcmEuc2V0Vmlld3BvcnQodyAqIHNjYWxlLCBoICogc2NhbGUpO1xuXHRcdFx0fSBlbHNlIGlmIChyZXNpemVNb2RlID09PSBSZXNpemVNb2RlLkV4cGFuZClcblx0XHRcdFx0dGhpcy5jYW1lcmEuc2V0Vmlld3BvcnQodywgaCk7XG5cdFx0XHQvLyBOb3RoaW5nIHRvIGRvIGZvciBzdHJldGNoLCB3ZSBzaW1wbHkgYXBwbHkgdGhlIHZpZXdwb3J0IHNpemUgb2YgdGhlIGNhbWVyYS5cblxuXHRcdFx0dGhpcy5jb250ZXh0LmdsLnZpZXdwb3J0KDAsIDAsIHcsIGgpO1xuXHRcdH1cblx0XHR0aGlzLmNhbWVyYS51cGRhdGUoKTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0U2FmZURldmljZVBpeGVsUmF0aW8gKGNzc1dpZHRoOiBudW1iZXIsIGNzc0hlaWdodDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRjb25zdCBkcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuXHRcdGlmIChjc3NXaWR0aCA8PSAwIHx8IGNzc0hlaWdodCA8PSAwKSByZXR1cm4gZHByO1xuXG5cdFx0aWYgKHRoaXMubWF4Q2FudmFzV2lkdGggPT09IDAgfHwgdGhpcy5tYXhDYW52YXNIZWlnaHQgPT09IDApIHtcblx0XHRcdGNvbnN0IGdsID0gdGhpcy5jb250ZXh0LmdsO1xuXHRcdFx0Y29uc3QgbWF4UmVuZGVyYnVmZmVyU2l6ZSA9IGdsLmdldFBhcmFtZXRlcihnbC5NQVhfUkVOREVSQlVGRkVSX1NJWkUpO1xuXHRcdFx0Y29uc3QgbWF4Vmlld3BvcnREaW1zID0gZ2wuZ2V0UGFyYW1ldGVyKGdsLk1BWF9WSUVXUE9SVF9ESU1TKTtcblx0XHRcdHRoaXMubWF4Q2FudmFzV2lkdGggPSBNYXRoLm1pbihtYXhSZW5kZXJidWZmZXJTaXplLCBtYXhWaWV3cG9ydERpbXNbMF0pO1xuXHRcdFx0dGhpcy5tYXhDYW52YXNIZWlnaHQgPSBNYXRoLm1pbihtYXhSZW5kZXJidWZmZXJTaXplLCBtYXhWaWV3cG9ydERpbXNbMV0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBNYXRoLm1pbihkcHIsIHRoaXMubWF4Q2FudmFzV2lkdGggLyBjc3NXaWR0aCwgdGhpcy5tYXhDYW52YXNIZWlnaHQgLyBjc3NIZWlnaHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBlbmFibGVSZW5kZXJlciAocmVuZGVyZXI6IFBvbHlnb25CYXRjaGVyIHwgU2hhcGVSZW5kZXJlciB8IFNrZWxldG9uRGVidWdSZW5kZXJlcikge1xuXHRcdGlmICh0aGlzLmFjdGl2ZVJlbmRlcmVyID09PSByZW5kZXJlcikgcmV0dXJuO1xuXHRcdHRoaXMuZW5kKCk7XG5cdFx0aWYgKHJlbmRlcmVyIGluc3RhbmNlb2YgUG9seWdvbkJhdGNoZXIpIHtcblx0XHRcdHRoaXMuYmF0Y2hlclNoYWRlci5iaW5kKCk7XG5cdFx0XHR0aGlzLmJhdGNoZXJTaGFkZXIuc2V0VW5pZm9ybTR4NGYoU2hhZGVyLk1WUF9NQVRSSVgsIHRoaXMuY2FtZXJhLnByb2plY3Rpb25WaWV3LnZhbHVlcyk7XG5cdFx0XHR0aGlzLmJhdGNoZXJTaGFkZXIuc2V0VW5pZm9ybWkoXCJ1X3RleHR1cmVcIiwgMCk7XG5cdFx0XHR0aGlzLmJhdGNoZXIuYmVnaW4odGhpcy5iYXRjaGVyU2hhZGVyKTtcblx0XHRcdHRoaXMuYWN0aXZlUmVuZGVyZXIgPSB0aGlzLmJhdGNoZXI7XG5cdFx0fSBlbHNlIGlmIChyZW5kZXJlciBpbnN0YW5jZW9mIFNoYXBlUmVuZGVyZXIpIHtcblx0XHRcdHRoaXMuc2hhcGVzU2hhZGVyLmJpbmQoKTtcblx0XHRcdHRoaXMuc2hhcGVzU2hhZGVyLnNldFVuaWZvcm00eDRmKFNoYWRlci5NVlBfTUFUUklYLCB0aGlzLmNhbWVyYS5wcm9qZWN0aW9uVmlldy52YWx1ZXMpO1xuXHRcdFx0dGhpcy5zaGFwZXMuYmVnaW4odGhpcy5zaGFwZXNTaGFkZXIpO1xuXHRcdFx0dGhpcy5hY3RpdmVSZW5kZXJlciA9IHRoaXMuc2hhcGVzO1xuXHRcdH0gZWxzZVxuXHRcdFx0dGhpcy5hY3RpdmVSZW5kZXJlciA9IHRoaXMuc2tlbGV0b25EZWJ1Z1JlbmRlcmVyO1xuXHR9XG59XG5cbmV4cG9ydCBlbnVtIFJlc2l6ZU1vZGUge1xuXHRTdHJldGNoLFxuXHRFeHBhbmQsXG5cdEZpdCxcblx0Rml0Q2xpcCxcbn1cbiJdfQ==
package/dist/Shader.d.ts CHANGED
@@ -26,7 +26,7 @@
26
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
- import { Disposable, Restorable } from "@esotericsoftware/spine-core";
29
+ import type { Disposable, Restorable } from "@esotericsoftware/spine-core";
30
30
  import { ManagedWebGLRenderingContext } from "./WebGL.js";
31
31
  export declare class Shader implements Disposable, Restorable {
32
32
  private vertexShader;