@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.
@@ -26,8 +26,8 @@
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 { Color, Vector2, MathUtils } from "@esotericsoftware/spine-core";
30
- import { Mesh, Position2Attribute, ColorAttribute } from "./Mesh.js";
29
+ import { Color, MathUtils, Vector2 } from "@esotericsoftware/spine-core";
30
+ import { ColorAttribute, Mesh, Position2Attribute } from "./Mesh.js";
31
31
  import { ManagedWebGLRenderingContext } from "./WebGL.js";
32
32
  export class ShapeRenderer {
33
33
  context;
@@ -43,10 +43,10 @@ export class ShapeRenderer {
43
43
  dstBlend;
44
44
  constructor(context, maxVertices = 10920) {
45
45
  if (maxVertices > 10920)
46
- throw new Error("Can't have more than 10920 triangles per batch: " + maxVertices);
46
+ throw new Error(`Can't have more than 10920 triangles per batch: ${maxVertices}`);
47
47
  this.context = context instanceof ManagedWebGLRenderingContext ? context : new ManagedWebGLRenderingContext(context);
48
48
  this.mesh = new Mesh(context, [new Position2Attribute(), new ColorAttribute()], maxVertices, 0);
49
- let gl = this.context.gl;
49
+ const gl = this.context.gl;
50
50
  this.srcColorBlend = gl.SRC_ALPHA;
51
51
  this.srcAlphaBlend = gl.ONE;
52
52
  this.dstBlend = gl.ONE_MINUS_SRC_ALPHA;
@@ -57,7 +57,7 @@ export class ShapeRenderer {
57
57
  this.shader = shader;
58
58
  this.vertexIndex = 0;
59
59
  this.isDrawing = true;
60
- let gl = this.context.gl;
60
+ const gl = this.context.gl;
61
61
  gl.enable(gl.BLEND);
62
62
  gl.blendFuncSeparate(this.srcColorBlend, this.dstBlend, this.srcAlphaBlend, this.dstBlend);
63
63
  }
@@ -67,7 +67,7 @@ export class ShapeRenderer {
67
67
  this.dstBlend = dstBlend;
68
68
  if (this.isDrawing) {
69
69
  this.flush();
70
- let gl = this.context.gl;
70
+ const gl = this.context.gl;
71
71
  gl.blendFuncSeparate(srcColorBlend, dstBlend, srcAlphaBlend, dstBlend);
72
72
  }
73
73
  }
@@ -85,8 +85,6 @@ export class ShapeRenderer {
85
85
  }
86
86
  line(x, y, x2, y2, color) {
87
87
  this.check(ShapeType.Line, 2);
88
- let vertices = this.mesh.getVertices();
89
- let idx = this.vertexIndex;
90
88
  if (!color)
91
89
  color = this.color;
92
90
  this.vertex(x, y, color);
@@ -94,8 +92,6 @@ export class ShapeRenderer {
94
92
  }
95
93
  triangle(filled, x, y, x2, y2, x3, y3, color, color2, color3) {
96
94
  this.check(filled ? ShapeType.Filled : ShapeType.Line, 3);
97
- let vertices = this.mesh.getVertices();
98
- let idx = this.vertexIndex;
99
95
  if (!color)
100
96
  color = this.color;
101
97
  if (!color2)
@@ -118,8 +114,6 @@ export class ShapeRenderer {
118
114
  }
119
115
  quad(filled, x, y, x2, y2, x3, y3, x4, y4, color, color2, color3, color4) {
120
116
  this.check(filled ? ShapeType.Filled : ShapeType.Line, 3);
121
- let vertices = this.mesh.getVertices();
122
- let idx = this.vertexIndex;
123
117
  if (!color)
124
118
  color = this.color;
125
119
  if (!color2)
@@ -154,11 +148,11 @@ export class ShapeRenderer {
154
148
  this.check(filled ? ShapeType.Filled : ShapeType.Line, 8);
155
149
  if (!color)
156
150
  color = this.color;
157
- let t = this.tmp.set(y2 - y1, x1 - x2);
151
+ const t = this.tmp.set(y2 - y1, x1 - x2);
158
152
  t.normalize();
159
153
  width *= 0.5;
160
- let tx = t.x * width;
161
- let ty = t.y * width;
154
+ const tx = t.x * width;
155
+ const ty = t.y * width;
162
156
  if (!filled) {
163
157
  this.vertex(x1 + tx, y1 + ty, color);
164
158
  this.vertex(x1 - tx, y1 - ty, color);
@@ -188,16 +182,14 @@ export class ShapeRenderer {
188
182
  this.check(ShapeType.Line, count * 2);
189
183
  if (!color)
190
184
  color = this.color;
191
- let vertices = this.mesh.getVertices();
192
- let idx = this.vertexIndex;
193
185
  offset <<= 1;
194
186
  count <<= 1;
195
- let firstX = polygonVertices[offset];
196
- let firstY = polygonVertices[offset + 1];
197
- let last = offset + count;
187
+ const firstX = polygonVertices[offset];
188
+ const firstY = polygonVertices[offset + 1];
189
+ const last = offset + count;
198
190
  for (let i = offset, n = offset + count - 2; i < n; i += 2) {
199
- let x1 = polygonVertices[i];
200
- let y1 = polygonVertices[i + 1];
191
+ const x1 = polygonVertices[i];
192
+ const y1 = polygonVertices[i + 1];
201
193
  let x2 = 0;
202
194
  let y2 = 0;
203
195
  if (i + 2 >= last) {
@@ -213,21 +205,21 @@ export class ShapeRenderer {
213
205
  }
214
206
  }
215
207
  circle(filled, x, y, radius, color, segments = 0) {
216
- if (segments == 0)
208
+ if (segments === 0)
217
209
  segments = Math.max(1, (6 * MathUtils.cbrt(radius)) | 0);
218
210
  if (segments <= 0)
219
211
  throw new Error("segments must be > 0.");
220
212
  if (!color)
221
213
  color = this.color;
222
- let angle = 2 * MathUtils.PI / segments;
223
- let cos = Math.cos(angle);
224
- let sin = Math.sin(angle);
214
+ const angle = 2 * MathUtils.PI / segments;
215
+ const cos = Math.cos(angle);
216
+ const sin = Math.sin(angle);
225
217
  let cx = radius, cy = 0;
226
218
  if (!filled) {
227
219
  this.check(ShapeType.Line, segments * 2 + 2);
228
220
  for (let i = 0; i < segments; i++) {
229
221
  this.vertex(x + cx, y + cy, color);
230
- let temp = cx;
222
+ const temp = cx;
231
223
  cx = cos * cx - sin * cy;
232
224
  cy = sin * temp + cos * cy;
233
225
  this.vertex(x + cx, y + cy, color);
@@ -241,7 +233,7 @@ export class ShapeRenderer {
241
233
  for (let i = 0; i < segments; i++) {
242
234
  this.vertex(x, y, color);
243
235
  this.vertex(x + cx, y + cy, color);
244
- let temp = cx;
236
+ const temp = cx;
245
237
  cx = cos * cx - sin * cy;
246
238
  cy = sin * temp + cos * cy;
247
239
  this.vertex(x + cx, y + cy, color);
@@ -250,7 +242,6 @@ export class ShapeRenderer {
250
242
  this.vertex(x, y, color);
251
243
  this.vertex(x + cx, y + cy, color);
252
244
  }
253
- let temp = cx;
254
245
  cx = radius;
255
246
  cy = 0;
256
247
  this.vertex(x + cx, y + cy, color);
@@ -260,25 +251,25 @@ export class ShapeRenderer {
260
251
  if (!color)
261
252
  color = this.color;
262
253
  // Algorithm from: http://www.antigrain.com/research/bezier_interpolation/index.html#PAGE_BEZIER_INTERPOLATION
263
- let subdiv_step = 1 / segments;
264
- let subdiv_step2 = subdiv_step * subdiv_step;
265
- let subdiv_step3 = subdiv_step * subdiv_step * subdiv_step;
266
- let pre1 = 3 * subdiv_step;
267
- let pre2 = 3 * subdiv_step2;
268
- let pre4 = 6 * subdiv_step2;
269
- let pre5 = 6 * subdiv_step3;
270
- let tmp1x = x1 - cx1 * 2 + cx2;
271
- let tmp1y = y1 - cy1 * 2 + cy2;
272
- let tmp2x = (cx1 - cx2) * 3 - x1 + x2;
273
- let tmp2y = (cy1 - cy2) * 3 - y1 + y2;
254
+ const subdiv_step = 1 / segments;
255
+ const subdiv_step2 = subdiv_step * subdiv_step;
256
+ const subdiv_step3 = subdiv_step * subdiv_step * subdiv_step;
257
+ const pre1 = 3 * subdiv_step;
258
+ const pre2 = 3 * subdiv_step2;
259
+ const pre4 = 6 * subdiv_step2;
260
+ const pre5 = 6 * subdiv_step3;
261
+ const tmp1x = x1 - cx1 * 2 + cx2;
262
+ const tmp1y = y1 - cy1 * 2 + cy2;
263
+ const tmp2x = (cx1 - cx2) * 3 - x1 + x2;
264
+ const tmp2y = (cy1 - cy2) * 3 - y1 + y2;
274
265
  let fx = x1;
275
266
  let fy = y1;
276
267
  let dfx = (cx1 - x1) * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3;
277
268
  let dfy = (cy1 - y1) * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3;
278
269
  let ddfx = tmp1x * pre4 + tmp2x * pre5;
279
270
  let ddfy = tmp1y * pre4 + tmp2y * pre5;
280
- let dddfx = tmp2x * pre5;
281
- let dddfy = tmp2y * pre5;
271
+ const dddfx = tmp2x * pre5;
272
+ const dddfy = tmp2y * pre5;
282
273
  while (segments-- > 0) {
283
274
  this.vertex(fx, fy, color);
284
275
  fx += dfx;
@@ -294,7 +285,7 @@ export class ShapeRenderer {
294
285
  }
295
286
  vertex(x, y, color) {
296
287
  let idx = this.vertexIndex;
297
- let vertices = this.mesh.getVertices();
288
+ const vertices = this.mesh.getVertices();
298
289
  vertices[idx++] = x;
299
290
  vertices[idx++] = y;
300
291
  vertices[idx++] = color.r;
@@ -307,12 +298,12 @@ export class ShapeRenderer {
307
298
  if (!this.isDrawing)
308
299
  throw new Error("ShapeRenderer.begin() has not been called");
309
300
  this.flush();
310
- let gl = this.context.gl;
301
+ const gl = this.context.gl;
311
302
  gl.disable(gl.BLEND);
312
303
  this.isDrawing = false;
313
304
  }
314
305
  flush() {
315
- if (this.vertexIndex == 0)
306
+ if (this.vertexIndex === 0)
316
307
  return;
317
308
  if (!this.shader)
318
309
  throw new Error("No shader set.");
@@ -323,7 +314,7 @@ export class ShapeRenderer {
323
314
  check(shapeType, numVertices) {
324
315
  if (!this.isDrawing)
325
316
  throw new Error("ShapeRenderer.begin() has not been called");
326
- if (this.shapeType == shapeType) {
317
+ if (this.shapeType === shapeType) {
327
318
  if (this.mesh.maxVertices() - this.mesh.numVertices() < numVertices)
328
319
  this.flush();
329
320
  else
@@ -344,4 +335,4 @@ export var ShapeType;
344
335
  ShapeType[ShapeType["Line"] = 1] = "Line";
345
336
  ShapeType[ShapeType["Filled"] = 4] = "Filled";
346
337
  })(ShapeType || (ShapeType = {}));
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhcGVSZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TaGFwZVJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQWMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUQsTUFBTSxPQUFPLGFBQWE7SUFDakIsT0FBTyxDQUErQjtJQUN0QyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLElBQUksQ0FBTztJQUNYLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQzdCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLEdBQWtCLElBQUksQ0FBQztJQUM3QixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLGFBQWEsQ0FBUztJQUN0QixhQUFhLENBQVM7SUFDdEIsUUFBUSxDQUFTO0lBRXpCLFlBQWEsT0FBNkQsRUFBRSxjQUFzQixLQUFLO1FBQ3RHLElBQUksV0FBVyxHQUFHLEtBQUs7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxZQUFZLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckgsSUFBSSxDQUFDLElBQUksR0FBRyxJ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SUFBSSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRixDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0YsQ0FBQztJQUVELElBQUksQ0FBRSxNQUFlLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUFhLEVBQUUsTUFBYyxFQUFFLEtBQWE7UUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVELFFBQVEsQ0FBRSxNQUFlLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ3RHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2QsS0FBSyxJQUFJLEdBQUcsQ0FBQztRQUNiLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNGLENBQUM7SUFFRCxDQUFDLENBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxJQUFZO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxPQUFPLENBQUUsZUFBa0MsRUFBRSxNQUFjLEVBQUUsS0FBYSxFQUFFLEtBQWE7UUFDeEYsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRTNCLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDYixLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRVosSUFBSSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxJQUFJLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUUxQixLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxFQUFFLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFaEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1gsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRVgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNuQixFQUFFLEdBQUcsTUFBTSxDQUFDO2dCQUNaLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDYixDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBTSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQU0sQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFFLE1BQWUsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLE1BQWMsRUFBRSxLQUFhLEVBQUUsV0FBbUIsQ0FBQztRQUNqRyxJQUFJLFFBQVEsSUFBSSxDQUFDO1lBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLFFBQVEsSUFBSSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ3hDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2QsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELHFEQUFxRDtZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9DLFFBQVEsRUFBRSxDQUFDO1lBQ1gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2QsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELHFEQUFxRDtZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFDWixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLFFBQWdCLEVBQUUsS0FBYTtRQUN6SSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRS9CLDhHQUE4RztRQUM5RyxJQUFJLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksWUFBWSxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDN0MsSUFBSSxZQUFZLEdBQUcsV0FBVyxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFM0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUMzQixJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQzVCLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDNUIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUU1QixJQUFJLEtBQUssR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBRS9CLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRXRDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNaLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVaLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDbEUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUVsRSxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXZDLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztRQUV6QixPQUFPLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFNLENBQUMsQ0FBQztZQUM1QixFQUFFLElBQUksR0FBRyxDQUFDO1lBQ1YsRUFBRSxJQUFJLEdBQUcsQ0FBQztZQUNWLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDWixHQUFHLElBQUksSUFBSSxDQUFDO1lBQ1osSUFBSSxJQUFJLEtBQUssQ0FBQztZQUNkLElBQUksSUFBSSxLQUFLLENBQUM7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBTSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLE1BQU0sQ0FBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEtBQVk7UUFDakQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN4QixDQUFDO0lBRUQsR0FBRztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6QixFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU8sS0FBSztRQUNaLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLEtBQUssQ0FBRSxTQUFvQixFQUFFLFdBQW1CO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7WUFDakMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsV0FBVztnQkFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7O2dCQUM3RSxPQUFPO1FBQ2IsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUM1QixDQUFDO0lBQ0YsQ0FBQztJQUVELE9BQU87UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7Q0FDRDtBQUVELE1BQU0sQ0FBTixJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDcEIsMkNBQWMsQ0FBQTtJQUNkLHlDQUFhLENBQUE7SUFDYiw2Q0FBZSxDQUFBO0FBQ2hCLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgRGlzcG9zYWJsZSwgQ29sb3IsIFZlY3RvcjIsIE1hdGhVdGlscyB9IGZyb20gXCJAZXNvdGVyaWNzb2Z0d2FyZS9zcGluZS1jb3JlXCI7XG5pbXBvcnQgeyBNZXNoLCBQb3NpdGlvbjJBdHRyaWJ1dGUsIENvbG9yQXR0cmlidXRlIH0gZnJvbSBcIi4vTWVzaC5qc1wiO1xuaW1wb3J0IHsgU2hhZGVyIH0gZnJvbSBcIi4vU2hhZGVyLmpzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcblxuZXhwb3J0IGNsYXNzIFNoYXBlUmVuZGVyZXIgaW1wbGVtZW50cyBEaXNwb3NhYmxlIHtcblx0cHJpdmF0ZSBjb250ZXh0OiBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0O1xuXHRwcml2YXRlIGlzRHJhd2luZyA9IGZhbHNlO1xuXHRwcml2YXRlIG1lc2g6IE1lc2g7XG5cdHByaXZhdGUgc2hhcGVUeXBlID0gU2hhcGVUeXBlLkZpbGxlZDtcblx0cHJpdmF0ZSBjb2xvciA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblx0cHJpdmF0ZSBzaGFkZXI6IFNoYWRlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHZlcnRleEluZGV4ID0gMDtcblx0cHJpdmF0ZSB0bXAgPSBuZXcgVmVjdG9yMigpO1xuXHRwcml2YXRlIHNyY0NvbG9yQmxlbmQ6IG51bWJlcjtcblx0cHJpdmF0ZSBzcmNBbHBoYUJsZW5kOiBudW1iZXI7XG5cdHByaXZhdGUgZHN0QmxlbmQ6IG51bWJlcjtcblxuXHRjb25zdHJ1Y3RvciAoY29udGV4dDogTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCB8IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgbWF4VmVydGljZXM6IG51bWJlciA9IDEwOTIwKSB7XG5cdFx0aWYgKG1heFZlcnRpY2VzID4gMTA5MjApIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGhhdmUgbW9yZSB0aGFuIDEwOTIwIHRyaWFuZ2xlcyBwZXIgYmF0Y2g6IFwiICsgbWF4VmVydGljZXMpO1xuXHRcdHRoaXMuY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0ID8gY29udGV4dCA6IG5ldyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0KGNvbnRleHQpO1xuXHRcdHRoaXMubWVzaCA9IG5ldyBNZXNoKGNvbnRleHQsIFtuZXcgUG9zaXRpb24yQXR0cmlidXRlKCksIG5ldyBDb2xvckF0dHJpYnV0ZSgpXSwgbWF4VmVydGljZXMsIDApO1xuXHRcdGxldCBnbCA9IHRoaXMuY29udGV4dC5nbDtcblx0XHR0aGlzLnNyY0NvbG9yQmxlbmQgPSBnbC5TUkNfQUxQSEE7XG5cdFx0dGhpcy5zcmNBbHBoYUJsZW5kID0gZ2wuT05FO1xuXHRcdHRoaXMuZHN0QmxlbmQgPSBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBO1xuXHR9XG5cblx0YmVnaW4gKHNoYWRlcjogU2hhZGVyKSB7XG5cdFx0aWYgKHRoaXMuaXNEcmF3aW5nKSB0aHJvdyBuZXcgRXJyb3IoXCJTaGFwZVJlbmRlcmVyLmJlZ2luKCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWRcIik7XG5cdFx0dGhpcy5zaGFkZXIgPSBzaGFkZXI7XG5cdFx0dGhpcy52ZXJ0ZXhJbmRleCA9IDA7XG5cdFx0dGhpcy5pc0RyYXdpbmcgPSB0cnVlO1xuXG5cdFx0bGV0IGdsID0gdGhpcy5jb250ZXh0LmdsO1xuXHRcdGdsLmVuYWJsZShnbC5CTEVORCk7XG5cdFx0Z2wuYmxlbmRGdW5jU2VwYXJhdGUodGhpcy5zcmNDb2xvckJsZW5kLCB0aGlzLmRzdEJsZW5kLCB0aGlzLnNyY0FscGhhQmxlbmQsIHRoaXMuZHN0QmxlbmQpO1xuXHR9XG5cblx0c2V0QmxlbmRNb2RlIChzcmNDb2xvckJsZW5kOiBudW1iZXIsIHNyY0FscGhhQmxlbmQ6IG51bWJlciwgZHN0QmxlbmQ6IG51bWJlcikge1xuXHRcdHRoaXMuc3JjQ29sb3JCbGVuZCA9IHNyY0NvbG9yQmxlbmQ7XG5cdFx0dGhpcy5zcmNBbHBoYUJsZW5kID0gc3JjQWxwaGFCbGVuZDtcblx0XHR0aGlzLmRzdEJsZW5kID0gZHN0QmxlbmQ7XG5cdFx0aWYgKHRoaXMuaXNEcmF3aW5nKSB7XG5cdFx0XHR0aGlzLmZsdXNoKCk7XG5cdFx0XHRsZXQgZ2wgPSB0aGlzLmNvbnRleHQuZ2w7XG5cdFx0XHRnbC5ibGVuZEZ1bmNTZXBhcmF0ZShzcmNDb2xvckJsZW5kLCBkc3RCbGVuZCwgc3JjQWxwaGFCbGVuZCwgZHN0QmxlbmQpO1xuXHRcdH1cblx0fVxuXG5cdHNldENvbG9yIChjb2xvcjogQ29sb3IpIHtcblx0XHR0aGlzLmNvbG9yLnNldEZyb21Db2xvcihjb2xvcik7XG5cdH1cblxuXHRzZXRDb2xvcldpdGggKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIsIGE6IG51bWJlcikge1xuXHRcdHRoaXMuY29sb3Iuc2V0KHIsIGcsIGIsIGEpO1xuXHR9XG5cblx0cG9pbnQgKHg6IG51bWJlciwgeTogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5jaGVjayhTaGFwZVR5cGUuUG9pbnQsIDEpO1xuXHRcdGlmICghY29sb3IpIGNvbG9yID0gdGhpcy5jb2xvcjtcblx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdH1cblxuXHRsaW5lICh4OiBudW1iZXIsIHk6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuY2hlY2soU2hhcGVUeXBlLkxpbmUsIDIpO1xuXHRcdGxldCB2ZXJ0aWNlcyA9IHRoaXMubWVzaC5nZXRWZXJ0aWNlcygpO1xuXHRcdGxldCBpZHggPSB0aGlzLnZlcnRleEluZGV4O1xuXHRcdGlmICghY29sb3IpIGNvbG9yID0gdGhpcy5jb2xvcjtcblx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0dGhpcy52ZXJ0ZXgoeDIsIHkyLCBjb2xvcik7XG5cdH1cblxuXHR0cmlhbmdsZSAoZmlsbGVkOiBib29sZWFuLCB4OiBudW1iZXIsIHk6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgY29sb3I/OiBDb2xvciwgY29sb3IyPzogQ29sb3IsIGNvbG9yMz86IENvbG9yKSB7XG5cdFx0dGhpcy5jaGVjayhmaWxsZWQgPyBTaGFwZVR5cGUuRmlsbGVkIDogU2hhcGVUeXBlLkxpbmUsIDMpO1xuXHRcdGxldCB2ZXJ0aWNlcyA9IHRoaXMubWVzaC5nZXRWZXJ0aWNlcygpO1xuXHRcdGxldCBpZHggPSB0aGlzLnZlcnRleEluZGV4O1xuXHRcdGlmICghY29sb3IpIGNvbG9yID0gdGhpcy5jb2xvcjtcblx0XHRpZiAoIWNvbG9yMikgY29sb3IyID0gdGhpcy5jb2xvcjtcblx0XHRpZiAoIWNvbG9yMykgY29sb3IzID0gdGhpcy5jb2xvcjtcblx0XHRpZiAoZmlsbGVkKSB7XG5cdFx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MiwgeTIsIGNvbG9yMik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MywgeTMsIGNvbG9yMyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmVydGV4KHgsIHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgyLCB5MiwgY29sb3IyKTtcblxuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIsIHkyLCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MywgeTMsIGNvbG9yMik7XG5cblx0XHRcdHRoaXMudmVydGV4KHgzLCB5MywgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IyKTtcblx0XHR9XG5cdH1cblxuXHRxdWFkIChmaWxsZWQ6IGJvb2xlYW4sIHg6IG51bWJlciwgeTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCB4MzogbnVtYmVyLCB5MzogbnVtYmVyLCB4NDogbnVtYmVyLCB5NDogbnVtYmVyLCBjb2xvcj86IENvbG9yLCBjb2xvcjI/OiBDb2xvciwgY29sb3IzPzogQ29sb3IsIGNvbG9yND86IENvbG9yKSB7XG5cdFx0dGhpcy5jaGVjayhmaWxsZWQgPyBTaGFwZVR5cGUuRmlsbGVkIDogU2hhcGVUeXBlLkxpbmUsIDMpO1xuXHRcdGxldCB2ZXJ0aWNlcyA9IHRoaXMubWVzaC5nZXRWZXJ0aWNlcygpO1xuXHRcdGxldCBpZHggPSB0aGlzLnZlcnRleEluZGV4O1xuXHRcdGlmICghY29sb3IpIGNvbG9yID0gdGhpcy5jb2xvcjtcblx0XHRpZiAoIWNvbG9yMikgY29sb3IyID0gdGhpcy5jb2xvcjtcblx0XHRpZiAoIWNvbG9yMykgY29sb3IzID0gdGhpcy5jb2xvcjtcblx0XHRpZiAoIWNvbG9yNCkgY29sb3I0ID0gdGhpcy5jb2xvcjtcblx0XHRpZiAoZmlsbGVkKSB7XG5cdFx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7IHRoaXMudmVydGV4KHgyLCB5MiwgY29sb3IyKTsgdGhpcy52ZXJ0ZXgoeDMsIHkzLCBjb2xvcjMpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDMsIHkzLCBjb2xvcjMpOyB0aGlzLnZlcnRleCh4NCwgeTQsIGNvbG9yNCk7IHRoaXMudmVydGV4KHgsIHksIGNvbG9yKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IpOyB0aGlzLnZlcnRleCh4MiwgeTIsIGNvbG9yMik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MiwgeTIsIGNvbG9yMik7IHRoaXMudmVydGV4KHgzLCB5MywgY29sb3IzKTtcblx0XHRcdHRoaXMudmVydGV4KHgzLCB5MywgY29sb3IzKTsgdGhpcy52ZXJ0ZXgoeDQsIHk0LCBjb2xvcjQpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDQsIHk0LCBjb2xvcjQpOyB0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0fVxuXHR9XG5cblx0cmVjdCAoZmlsbGVkOiBib29sZWFuLCB4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGNvbG9yPzogQ29sb3IpIHtcblx0XHR0aGlzLnF1YWQoZmlsbGVkLCB4LCB5LCB4ICsgd2lkdGgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSArIGhlaWdodCwgY29sb3IsIGNvbG9yLCBjb2xvciwgY29sb3IpO1xuXHR9XG5cblx0cmVjdExpbmUgKGZpbGxlZDogYm9vbGVhbiwgeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgd2lkdGg6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuY2hlY2soZmlsbGVkID8gU2hhcGVUeXBlLkZpbGxlZCA6IFNoYXBlVHlwZS5MaW5lLCA4KTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IHRoaXMuY29sb3I7XG5cdFx0bGV0IHQgPSB0aGlzLnRtcC5zZXQoeTIgLSB5MSwgeDEgLSB4Mik7XG5cdFx0dC5ub3JtYWxpemUoKTtcblx0XHR3aWR0aCAqPSAwLjU7XG5cdFx0bGV0IHR4ID0gdC54ICogd2lkdGg7XG5cdFx0bGV0IHR5ID0gdC55ICogd2lkdGg7XG5cdFx0aWYgKCFmaWxsZWQpIHtcblx0XHRcdHRoaXMudmVydGV4KHgxICsgdHgsIHkxICsgdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgxIC0gdHgsIHkxIC0gdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgyICsgdHgsIHkyICsgdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgyIC0gdHgsIHkyIC0gdHksIGNvbG9yKTtcblxuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIgKyB0eCwgeTIgKyB0eSwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDEgKyB0eCwgeTEgKyB0eSwgY29sb3IpO1xuXG5cdFx0XHR0aGlzLnZlcnRleCh4MiAtIHR4LCB5MiAtIHR5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MSAtIHR4LCB5MSAtIHR5LCBjb2xvcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmVydGV4KHgxICsgdHgsIHkxICsgdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgxIC0gdHgsIHkxIC0gdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgyICsgdHgsIHkyICsgdHksIGNvbG9yKTtcblxuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIgLSB0eCwgeTIgLSB0eSwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIgKyB0eCwgeTIgKyB0eSwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDEgLSB0eCwgeTEgLSB0eSwgY29sb3IpO1xuXHRcdH1cblx0fVxuXG5cdHggKHg6IG51bWJlciwgeTogbnVtYmVyLCBzaXplOiBudW1iZXIpIHtcblx0XHR0aGlzLmxpbmUoeCAtIHNpemUsIHkgLSBzaXplLCB4ICsgc2l6ZSwgeSArIHNpemUpO1xuXHRcdHRoaXMubGluZSh4IC0gc2l6ZSwgeSArIHNpemUsIHggKyBzaXplLCB5IC0gc2l6ZSk7XG5cdH1cblxuXHRwb2x5Z29uIChwb2x5Z29uVmVydGljZXM6IEFycmF5TGlrZTxudW1iZXI+LCBvZmZzZXQ6IG51bWJlciwgY291bnQ6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdGlmIChjb3VudCA8IDMpIHRocm93IG5ldyBFcnJvcihcIlBvbHlnb24gbXVzdCBjb250YWluIGF0IGxlYXN0IDMgdmVydGljZXNcIik7XG5cdFx0dGhpcy5jaGVjayhTaGFwZVR5cGUuTGluZSwgY291bnQgKiAyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IHRoaXMuY29sb3I7XG5cdFx0bGV0IHZlcnRpY2VzID0gdGhpcy5tZXNoLmdldFZlcnRpY2VzKCk7XG5cdFx0bGV0IGlkeCA9IHRoaXMudmVydGV4SW5kZXg7XG5cblx0XHRvZmZzZXQgPDw9IDE7XG5cdFx0Y291bnQgPDw9IDE7XG5cblx0XHRsZXQgZmlyc3RYID0gcG9seWdvblZlcnRpY2VzW29mZnNldF07XG5cdFx0bGV0IGZpcnN0WSA9IHBvbHlnb25WZXJ0aWNlc1tvZmZzZXQgKyAxXTtcblx0XHRsZXQgbGFzdCA9IG9mZnNldCArIGNvdW50O1xuXG5cdFx0Zm9yIChsZXQgaSA9IG9mZnNldCwgbiA9IG9mZnNldCArIGNvdW50IC0gMjsgaSA8IG47IGkgKz0gMikge1xuXHRcdFx0bGV0IHgxID0gcG9seWdvblZlcnRpY2VzW2ldO1xuXHRcdFx0bGV0IHkxID0gcG9seWdvblZlcnRpY2VzW2kgKyAxXTtcblxuXHRcdFx0bGV0IHgyID0gMDtcblx0XHRcdGxldCB5MiA9IDA7XG5cblx0XHRcdGlmIChpICsgMiA+PSBsYXN0KSB7XG5cdFx0XHRcdHgyID0gZmlyc3RYO1xuXHRcdFx0XHR5MiA9IGZpcnN0WTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHgyID0gcG9seWdvblZlcnRpY2VzW2kgKyAyXTtcblx0XHRcdFx0eTIgPSBwb2x5Z29uVmVydGljZXNbaSArIDNdO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnZlcnRleCh4MSwgeTEsIGNvbG9yISk7XG5cdFx0XHR0aGlzLnZlcnRleCh4MiwgeTIsIGNvbG9yISk7XG5cdFx0fVxuXHR9XG5cblx0Y2lyY2xlIChmaWxsZWQ6IGJvb2xlYW4sIHg6IG51bWJlciwgeTogbnVtYmVyLCByYWRpdXM6IG51bWJlciwgY29sb3I/OiBDb2xvciwgc2VnbWVudHM6IG51bWJlciA9IDApIHtcblx0XHRpZiAoc2VnbWVudHMgPT0gMCkgc2VnbWVudHMgPSBNYXRoLm1heCgxLCAoNiAqIE1hdGhVdGlscy5jYnJ0KHJhZGl1cykpIHwgMCk7XG5cdFx0aWYgKHNlZ21lbnRzIDw9IDApIHRocm93IG5ldyBFcnJvcihcInNlZ21lbnRzIG11c3QgYmUgPiAwLlwiKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IHRoaXMuY29sb3I7XG5cdFx0bGV0IGFuZ2xlID0gMiAqIE1hdGhVdGlscy5QSSAvIHNlZ21lbnRzO1xuXHRcdGxldCBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XG5cdFx0bGV0IHNpbiA9IE1hdGguc2luKGFuZ2xlKTtcblx0XHRsZXQgY3ggPSByYWRpdXMsIGN5ID0gMDtcblx0XHRpZiAoIWZpbGxlZCkge1xuXHRcdFx0dGhpcy5jaGVjayhTaGFwZVR5cGUuTGluZSwgc2VnbWVudHMgKiAyICsgMik7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRzOyBpKyspIHtcblx0XHRcdFx0dGhpcy52ZXJ0ZXgoeCArIGN4LCB5ICsgY3ksIGNvbG9yKTtcblx0XHRcdFx0bGV0IHRlbXAgPSBjeDtcblx0XHRcdFx0Y3ggPSBjb3MgKiBjeCAtIHNpbiAqIGN5O1xuXHRcdFx0XHRjeSA9IHNpbiAqIHRlbXAgKyBjb3MgKiBjeTtcblx0XHRcdFx0dGhpcy52ZXJ0ZXgoeCArIGN4LCB5ICsgY3ksIGNvbG9yKTtcblx0XHRcdH1cblx0XHRcdC8vIEVuc3VyZSB0aGUgbGFzdCBzZWdtZW50IGlzIGlkZW50aWNhbCB0byB0aGUgZmlyc3QuXG5cdFx0XHR0aGlzLnZlcnRleCh4ICsgY3gsIHkgKyBjeSwgY29sb3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNoZWNrKFNoYXBlVHlwZS5GaWxsZWQsIHNlZ21lbnRzICogMyArIDMpO1xuXHRcdFx0c2VnbWVudHMtLTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHM7IGkrKykge1xuXHRcdFx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0XHRcdHRoaXMudmVydGV4KHggKyBjeCwgeSArIGN5LCBjb2xvcik7XG5cdFx0XHRcdGxldCB0ZW1wID0gY3g7XG5cdFx0XHRcdGN4ID0gY29zICogY3ggLSBzaW4gKiBjeTtcblx0XHRcdFx0Y3kgPSBzaW4gKiB0ZW1wICsgY29zICogY3k7XG5cdFx0XHRcdHRoaXMudmVydGV4KHggKyBjeCwgeSArIGN5LCBjb2xvcik7XG5cdFx0XHR9XG5cdFx0XHQvLyBFbnN1cmUgdGhlIGxhc3Qgc2VnbWVudCBpcyBpZGVudGljYWwgdG8gdGhlIGZpcnN0LlxuXHRcdFx0dGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeCArIGN4LCB5ICsgY3ksIGNvbG9yKTtcblx0XHR9XG5cblx0XHRsZXQgdGVtcCA9IGN4O1xuXHRcdGN4ID0gcmFkaXVzO1xuXHRcdGN5ID0gMDtcblx0XHR0aGlzLnZlcnRleCh4ICsgY3gsIHkgKyBjeSwgY29sb3IpO1xuXHR9XG5cblx0Y3VydmUgKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBzZWdtZW50czogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5jaGVjayhTaGFwZVR5cGUuTGluZSwgc2VnbWVudHMgKiAyICsgMik7XG5cdFx0aWYgKCFjb2xvcikgY29sb3IgPSB0aGlzLmNvbG9yO1xuXG5cdFx0Ly8gQWxnb3JpdGhtIGZyb206IGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbS9yZXNlYXJjaC9iZXppZXJfaW50ZXJwb2xhdGlvbi9pbmRleC5odG1sI1BBR0VfQkVaSUVSX0lOVEVSUE9MQVRJT05cblx0XHRsZXQgc3ViZGl2X3N0ZXAgPSAxIC8gc2VnbWVudHM7XG5cdFx0bGV0IHN1YmRpdl9zdGVwMiA9IHN1YmRpdl9zdGVwICogc3ViZGl2X3N0ZXA7XG5cdFx0bGV0IHN1YmRpdl9zdGVwMyA9IHN1YmRpdl9zdGVwICogc3ViZGl2X3N0ZXAgKiBzdWJkaXZfc3RlcDtcblxuXHRcdGxldCBwcmUxID0gMyAqIHN1YmRpdl9zdGVwO1xuXHRcdGxldCBwcmUyID0gMyAqIHN1YmRpdl9zdGVwMjtcblx0XHRsZXQgcHJlNCA9IDYgKiBzdWJkaXZfc3RlcDI7XG5cdFx0bGV0IHByZTUgPSA2ICogc3ViZGl2X3N0ZXAzO1xuXG5cdFx0bGV0IHRtcDF4ID0geDEgLSBjeDEgKiAyICsgY3gyO1xuXHRcdGxldCB0bXAxeSA9IHkxIC0gY3kxICogMiArIGN5MjtcblxuXHRcdGxldCB0bXAyeCA9IChjeDEgLSBjeDIpICogMyAtIHgxICsgeDI7XG5cdFx0bGV0IHRtcDJ5ID0gKGN5MSAtIGN5MikgKiAzIC0geTEgKyB5MjtcblxuXHRcdGxldCBmeCA9IHgxO1xuXHRcdGxldCBmeSA9IHkxO1xuXG5cdFx0bGV0IGRmeCA9IChjeDEgLSB4MSkgKiBwcmUxICsgdG1wMXggKiBwcmUyICsgdG1wMnggKiBzdWJkaXZfc3RlcDM7XG5cdFx0bGV0IGRmeSA9IChjeTEgLSB5MSkgKiBwcmUxICsgdG1wMXkgKiBwcmUyICsgdG1wMnkgKiBzdWJkaXZfc3RlcDM7XG5cblx0XHRsZXQgZGRmeCA9IHRtcDF4ICogcHJlNCArIHRtcDJ4ICogcHJlNTtcblx0XHRsZXQgZGRmeSA9IHRtcDF5ICogcHJlNCArIHRtcDJ5ICogcHJlNTtcblxuXHRcdGxldCBkZGRmeCA9IHRtcDJ4ICogcHJlNTtcblx0XHRsZXQgZGRkZnkgPSB0bXAyeSAqIHByZTU7XG5cblx0XHR3aGlsZSAoc2VnbWVudHMtLSA+IDApIHtcblx0XHRcdHRoaXMudmVydGV4KGZ4LCBmeSwgY29sb3IhKTtcblx0XHRcdGZ4ICs9IGRmeDtcblx0XHRcdGZ5ICs9IGRmeTtcblx0XHRcdGRmeCArPSBkZGZ4O1xuXHRcdFx0ZGZ5ICs9IGRkZnk7XG5cdFx0XHRkZGZ4ICs9IGRkZGZ4O1xuXHRcdFx0ZGRmeSArPSBkZGRmeTtcblx0XHRcdHRoaXMudmVydGV4KGZ4LCBmeSwgY29sb3IhKTtcblx0XHR9XG5cdFx0dGhpcy52ZXJ0ZXgoZngsIGZ5LCBjb2xvciEpO1xuXHRcdHRoaXMudmVydGV4KHgyLCB5MiwgY29sb3IhKTtcblx0fVxuXG5cdHByaXZhdGUgdmVydGV4ICh4OiBudW1iZXIsIHk6IG51bWJlciwgY29sb3I6IENvbG9yKSB7XG5cdFx0bGV0IGlkeCA9IHRoaXMudmVydGV4SW5kZXg7XG5cdFx0bGV0IHZlcnRpY2VzID0gdGhpcy5tZXNoLmdldFZlcnRpY2VzKCk7XG5cdFx0dmVydGljZXNbaWR4KytdID0geDtcblx0XHR2ZXJ0aWNlc1tpZHgrK10gPSB5O1xuXHRcdHZlcnRpY2VzW2lkeCsrXSA9IGNvbG9yLnI7XG5cdFx0dmVydGljZXNbaWR4KytdID0gY29sb3IuZztcblx0XHR2ZXJ0aWNlc1tpZHgrK10gPSBjb2xvci5iO1xuXHRcdHZlcnRpY2VzW2lkeCsrXSA9IGNvbG9yLmE7XG5cdFx0dGhpcy52ZXJ0ZXhJbmRleCA9IGlkeDtcblx0fVxuXG5cdGVuZCAoKSB7XG5cdFx0aWYgKCF0aGlzLmlzRHJhd2luZykgdGhyb3cgbmV3IEVycm9yKFwiU2hhcGVSZW5kZXJlci5iZWdpbigpIGhhcyBub3QgYmVlbiBjYWxsZWRcIik7XG5cdFx0dGhpcy5mbHVzaCgpO1xuXHRcdGxldCBnbCA9IHRoaXMuY29udGV4dC5nbDtcblx0XHRnbC5kaXNhYmxlKGdsLkJMRU5EKTtcblx0XHR0aGlzLmlzRHJhd2luZyA9IGZhbHNlO1xuXHR9XG5cblx0cHJpdmF0ZSBmbHVzaCAoKSB7XG5cdFx0aWYgKHRoaXMudmVydGV4SW5kZXggPT0gMCkgcmV0dXJuO1xuXHRcdGlmICghdGhpcy5zaGFkZXIpIHRocm93IG5ldyBFcnJvcihcIk5vIHNoYWRlciBzZXQuXCIpO1xuXHRcdHRoaXMubWVzaC5zZXRWZXJ0aWNlc0xlbmd0aCh0aGlzLnZlcnRleEluZGV4KTtcblx0XHR0aGlzLm1lc2guZHJhdyh0aGlzLnNoYWRlciwgdGhpcy5zaGFwZVR5cGUpO1xuXHRcdHRoaXMudmVydGV4SW5kZXggPSAwO1xuXHR9XG5cblx0cHJpdmF0ZSBjaGVjayAoc2hhcGVUeXBlOiBTaGFwZVR5cGUsIG51bVZlcnRpY2VzOiBudW1iZXIpIHtcblx0XHRpZiAoIXRoaXMuaXNEcmF3aW5nKSB0aHJvdyBuZXcgRXJyb3IoXCJTaGFwZVJlbmRlcmVyLmJlZ2luKCkgaGFzIG5vdCBiZWVuIGNhbGxlZFwiKTtcblx0XHRpZiAodGhpcy5zaGFwZVR5cGUgPT0gc2hhcGVUeXBlKSB7XG5cdFx0XHRpZiAodGhpcy5tZXNoLm1heFZlcnRpY2VzKCkgLSB0aGlzLm1lc2gubnVtVmVydGljZXMoKSA8IG51bVZlcnRpY2VzKSB0aGlzLmZsdXNoKCk7XG5cdFx0XHRlbHNlIHJldHVybjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5mbHVzaCgpO1xuXHRcdFx0dGhpcy5zaGFwZVR5cGUgPSBzaGFwZVR5cGU7XG5cdFx0fVxuXHR9XG5cblx0ZGlzcG9zZSAoKSB7XG5cdFx0dGhpcy5tZXNoLmRpc3Bvc2UoKTtcblx0fVxufVxuXG5leHBvcnQgZW51bSBTaGFwZVR5cGUge1xuXHRQb2ludCA9IDB4MDAwMCxcblx0TGluZSA9IDB4MDAwMSxcblx0RmlsbGVkID0gMHgwMDA0XG59XG4iXX0=
338
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhcGVSZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TaGFwZVJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQUUsS0FBSyxFQUFtQixTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTFELE1BQU0sT0FBTyxhQUFhO0lBQ2pCLE9BQU8sQ0FBK0I7SUFDdEMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixJQUFJLENBQU87SUFDWCxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztJQUM3QixLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFrQixJQUFJLENBQUM7SUFDN0IsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNoQixHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNwQixhQUFhLENBQVM7SUFDdEIsYUFBYSxDQUFTO0lBQ3RCLFFBQVEsQ0FBUztJQUV6QixZQUFhLE9BQTZELEVBQUUsY0FBc0IsS0FBSztRQUN0RyxJQUFJLFdBQVcsR0FBRyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sWUFBWSw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JILElBQUksQ0FBQyxJQUFJLEdBQUcs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QyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEYsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNGLENBQUM7SUFFRCxJQUFJLENBQUUsTUFBZSxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxLQUFhO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxRQUFRLENBQUUsTUFBZSxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUN0RyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNkLEtBQUssSUFBSSxHQUFHLENBQUM7UUFDYixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDRixDQUFDO0lBRUQsQ0FBQyxDQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsSUFBWTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxDQUFFLGVBQWtDLEVBQUUsTUFBYyxFQUFFLEtBQWEsRUFBRSxLQUFhO1FBQ3hGLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRS9CLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDYixLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRVosTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUU1QixLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUQsTUFBTSxFQUFFLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1gsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRVgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNuQixFQUFFLEdBQUcsTUFBTSxDQUFDO2dCQUNaLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDYixDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLEVBQUUsR0FBRyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDRixDQUFDO0lBRUQsTUFBTSxDQUFFLE1BQWUsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLE1BQWMsRUFBRSxLQUFhLEVBQUUsV0FBbUIsQ0FBQztRQUNqRyxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLFFBQVEsSUFBSSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2hCLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxxREFBcUQ7WUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvQyxRQUFRLEVBQUUsQ0FBQztZQUNYLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNoQixFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QscURBQXFEO1lBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUNaLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsS0FBSyxDQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBVyxFQUFFLEVBQVUsRUFBRSxFQUFVLEVBQUUsUUFBZ0IsRUFBRSxLQUFhO1FBQ3pJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFL0IsOEdBQThHO1FBQzlHLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakMsTUFBTSxZQUFZLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxXQUFXLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUU3RCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQzdCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUM5QixNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBRTlCLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFFakMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFeEMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ1osSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRVosSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztRQUNsRSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDO1FBRWxFLElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFdkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRTNCLE9BQU8sUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNCLEVBQUUsSUFBSSxHQUFHLENBQUM7WUFDVixFQUFFLElBQUksR0FBRyxDQUFDO1lBQ1YsR0FBRyxJQUFJLElBQUksQ0FBQztZQUNaLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDWixJQUFJLElBQUksS0FBSyxDQUFDO1lBQ2QsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sTUFBTSxDQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsS0FBWTtRQUNqRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxHQUFHO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNCLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxLQUFLO1FBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU8sS0FBSyxDQUFFLFNBQW9CLEVBQUUsV0FBbUI7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxXQUFXO2dCQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7Z0JBQzdFLE9BQU87UUFDYixDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7SUFDRixDQUFDO0lBRUQsT0FBTztRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNEO0FBRUQsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNwQiwyQ0FBYyxDQUFBO0lBQ2QseUNBQWEsQ0FBQTtJQUNiLDZDQUFlLENBQUE7QUFDaEIsQ0FBQyxFQUpXLFNBQVMsS0FBVCxTQUFTLFFBSXBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBDb2xvciwgdHlwZSBEaXNwb3NhYmxlLCBNYXRoVXRpbHMsIFZlY3RvcjIgfSBmcm9tIFwiQGVzb3Rlcmljc29mdHdhcmUvc3BpbmUtY29yZVwiO1xuaW1wb3J0IHsgQ29sb3JBdHRyaWJ1dGUsIE1lc2gsIFBvc2l0aW9uMkF0dHJpYnV0ZSB9IGZyb20gXCIuL01lc2guanNcIjtcbmltcG9ydCB0eXBlIHsgU2hhZGVyIH0gZnJvbSBcIi4vU2hhZGVyLmpzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcblxuZXhwb3J0IGNsYXNzIFNoYXBlUmVuZGVyZXIgaW1wbGVtZW50cyBEaXNwb3NhYmxlIHtcblx0cHJpdmF0ZSBjb250ZXh0OiBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0O1xuXHRwcml2YXRlIGlzRHJhd2luZyA9IGZhbHNlO1xuXHRwcml2YXRlIG1lc2g6IE1lc2g7XG5cdHByaXZhdGUgc2hhcGVUeXBlID0gU2hhcGVUeXBlLkZpbGxlZDtcblx0cHJpdmF0ZSBjb2xvciA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblx0cHJpdmF0ZSBzaGFkZXI6IFNoYWRlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHZlcnRleEluZGV4ID0gMDtcblx0cHJpdmF0ZSB0bXAgPSBuZXcgVmVjdG9yMigpO1xuXHRwcml2YXRlIHNyY0NvbG9yQmxlbmQ6IG51bWJlcjtcblx0cHJpdmF0ZSBzcmNBbHBoYUJsZW5kOiBudW1iZXI7XG5cdHByaXZhdGUgZHN0QmxlbmQ6IG51bWJlcjtcblxuXHRjb25zdHJ1Y3RvciAoY29udGV4dDogTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCB8IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgbWF4VmVydGljZXM6IG51bWJlciA9IDEwOTIwKSB7XG5cdFx0aWYgKG1heFZlcnRpY2VzID4gMTA5MjApIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgaGF2ZSBtb3JlIHRoYW4gMTA5MjAgdHJpYW5nbGVzIHBlciBiYXRjaDogJHttYXhWZXJ0aWNlc31gKTtcblx0XHR0aGlzLmNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCA/IGNvbnRleHQgOiBuZXcgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dChjb250ZXh0KTtcblx0XHR0aGlzLm1lc2ggPSBuZXcgTWVzaChjb250ZXh0LCBbbmV3IFBvc2l0aW9uMkF0dHJpYnV0ZSgpLCBuZXcgQ29sb3JBdHRyaWJ1dGUoKV0sIG1heFZlcnRpY2VzLCAwKTtcblx0XHRjb25zdCBnbCA9IHRoaXMuY29udGV4dC5nbDtcblx0XHR0aGlzLnNyY0NvbG9yQmxlbmQgPSBnbC5TUkNfQUxQSEE7XG5cdFx0dGhpcy5zcmNBbHBoYUJsZW5kID0gZ2wuT05FO1xuXHRcdHRoaXMuZHN0QmxlbmQgPSBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBO1xuXHR9XG5cblx0YmVnaW4gKHNoYWRlcjogU2hhZGVyKSB7XG5cdFx0aWYgKHRoaXMuaXNEcmF3aW5nKSB0aHJvdyBuZXcgRXJyb3IoXCJTaGFwZVJlbmRlcmVyLmJlZ2luKCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWRcIik7XG5cdFx0dGhpcy5zaGFkZXIgPSBzaGFkZXI7XG5cdFx0dGhpcy52ZXJ0ZXhJbmRleCA9IDA7XG5cdFx0dGhpcy5pc0RyYXdpbmcgPSB0cnVlO1xuXG5cdFx0Y29uc3QgZ2wgPSB0aGlzLmNvbnRleHQuZ2w7XG5cdFx0Z2wuZW5hYmxlKGdsLkJMRU5EKTtcblx0XHRnbC5ibGVuZEZ1bmNTZXBhcmF0ZSh0aGlzLnNyY0NvbG9yQmxlbmQsIHRoaXMuZHN0QmxlbmQsIHRoaXMuc3JjQWxwaGFCbGVuZCwgdGhpcy5kc3RCbGVuZCk7XG5cdH1cblxuXHRzZXRCbGVuZE1vZGUgKHNyY0NvbG9yQmxlbmQ6IG51bWJlciwgc3JjQWxwaGFCbGVuZDogbnVtYmVyLCBkc3RCbGVuZDogbnVtYmVyKSB7XG5cdFx0dGhpcy5zcmNDb2xvckJsZW5kID0gc3JjQ29sb3JCbGVuZDtcblx0XHR0aGlzLnNyY0FscGhhQmxlbmQgPSBzcmNBbHBoYUJsZW5kO1xuXHRcdHRoaXMuZHN0QmxlbmQgPSBkc3RCbGVuZDtcblx0XHRpZiAodGhpcy5pc0RyYXdpbmcpIHtcblx0XHRcdHRoaXMuZmx1c2goKTtcblx0XHRcdGNvbnN0IGdsID0gdGhpcy5jb250ZXh0LmdsO1xuXHRcdFx0Z2wuYmxlbmRGdW5jU2VwYXJhdGUoc3JjQ29sb3JCbGVuZCwgZHN0QmxlbmQsIHNyY0FscGhhQmxlbmQsIGRzdEJsZW5kKTtcblx0XHR9XG5cdH1cblxuXHRzZXRDb2xvciAoY29sb3I6IENvbG9yKSB7XG5cdFx0dGhpcy5jb2xvci5zZXRGcm9tQ29sb3IoY29sb3IpO1xuXHR9XG5cblx0c2V0Q29sb3JXaXRoIChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpIHtcblx0XHR0aGlzLmNvbG9yLnNldChyLCBnLCBiLCBhKTtcblx0fVxuXG5cdHBvaW50ICh4OiBudW1iZXIsIHk6IG51bWJlciwgY29sb3I/OiBDb2xvcikge1xuXHRcdHRoaXMuY2hlY2soU2hhcGVUeXBlLlBvaW50LCAxKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IHRoaXMuY29sb3I7XG5cdFx0dGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IpO1xuXHR9XG5cblx0bGluZSAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIGNvbG9yPzogQ29sb3IpIHtcblx0XHR0aGlzLmNoZWNrKFNoYXBlVHlwZS5MaW5lLCAyKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IHRoaXMuY29sb3I7XG5cdFx0dGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IpO1xuXHRcdHRoaXMudmVydGV4KHgyLCB5MiwgY29sb3IpO1xuXHR9XG5cblx0dHJpYW5nbGUgKGZpbGxlZDogYm9vbGVhbiwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIHgzOiBudW1iZXIsIHkzOiBudW1iZXIsIGNvbG9yPzogQ29sb3IsIGNvbG9yMj86IENvbG9yLCBjb2xvcjM/OiBDb2xvcikge1xuXHRcdHRoaXMuY2hlY2soZmlsbGVkID8gU2hhcGVUeXBlLkZpbGxlZCA6IFNoYXBlVHlwZS5MaW5lLCAzKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IHRoaXMuY29sb3I7XG5cdFx0aWYgKCFjb2xvcjIpIGNvbG9yMiA9IHRoaXMuY29sb3I7XG5cdFx0aWYgKCFjb2xvcjMpIGNvbG9yMyA9IHRoaXMuY29sb3I7XG5cdFx0aWYgKGZpbGxlZCkge1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIsIHkyLCBjb2xvcjIpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDMsIHkzLCBjb2xvcjMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MiwgeTIsIGNvbG9yMik7XG5cblx0XHRcdHRoaXMudmVydGV4KHgyLCB5MiwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDMsIHkzLCBjb2xvcjIpO1xuXG5cdFx0XHR0aGlzLnZlcnRleCh4MywgeTMsIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgsIHksIGNvbG9yMik7XG5cdFx0fVxuXHR9XG5cblx0cXVhZCAoZmlsbGVkOiBib29sZWFuLCB4OiBudW1iZXIsIHk6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlciwgeDM6IG51bWJlciwgeTM6IG51bWJlciwgeDQ6IG51bWJlciwgeTQ6IG51bWJlciwgY29sb3I/OiBDb2xvciwgY29sb3IyPzogQ29sb3IsIGNvbG9yMz86IENvbG9yLCBjb2xvcjQ/OiBDb2xvcikge1xuXHRcdHRoaXMuY2hlY2soZmlsbGVkID8gU2hhcGVUeXBlLkZpbGxlZCA6IFNoYXBlVHlwZS5MaW5lLCAzKTtcblx0XHRpZiAoIWNvbG9yKSBjb2xvciA9IHRoaXMuY29sb3I7XG5cdFx0aWYgKCFjb2xvcjIpIGNvbG9yMiA9IHRoaXMuY29sb3I7XG5cdFx0aWYgKCFjb2xvcjMpIGNvbG9yMyA9IHRoaXMuY29sb3I7XG5cdFx0aWYgKCFjb2xvcjQpIGNvbG9yNCA9IHRoaXMuY29sb3I7XG5cdFx0aWYgKGZpbGxlZCkge1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IpOyB0aGlzLnZlcnRleCh4MiwgeTIsIGNvbG9yMik7IHRoaXMudmVydGV4KHgzLCB5MywgY29sb3IzKTtcblx0XHRcdHRoaXMudmVydGV4KHgzLCB5MywgY29sb3IzKTsgdGhpcy52ZXJ0ZXgoeDQsIHk0LCBjb2xvcjQpOyB0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMudmVydGV4KHgsIHksIGNvbG9yKTsgdGhpcy52ZXJ0ZXgoeDIsIHkyLCBjb2xvcjIpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIsIHkyLCBjb2xvcjIpOyB0aGlzLnZlcnRleCh4MywgeTMsIGNvbG9yMyk7XG5cdFx0XHR0aGlzLnZlcnRleCh4MywgeTMsIGNvbG9yMyk7IHRoaXMudmVydGV4KHg0LCB5NCwgY29sb3I0KTtcblx0XHRcdHRoaXMudmVydGV4KHg0LCB5NCwgY29sb3I0KTsgdGhpcy52ZXJ0ZXgoeCwgeSwgY29sb3IpO1xuXHRcdH1cblx0fVxuXG5cdHJlY3QgKGZpbGxlZDogYm9vbGVhbiwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5xdWFkKGZpbGxlZCwgeCwgeSwgeCArIHdpZHRoLCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHkgKyBoZWlnaHQsIGNvbG9yLCBjb2xvciwgY29sb3IsIGNvbG9yKTtcblx0fVxuXG5cdHJlY3RMaW5lIChmaWxsZWQ6IGJvb2xlYW4sIHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGNvbG9yPzogQ29sb3IpIHtcblx0XHR0aGlzLmNoZWNrKGZpbGxlZCA/IFNoYXBlVHlwZS5GaWxsZWQgOiBTaGFwZVR5cGUuTGluZSwgOCk7XG5cdFx0aWYgKCFjb2xvcikgY29sb3IgPSB0aGlzLmNvbG9yO1xuXHRcdGNvbnN0IHQgPSB0aGlzLnRtcC5zZXQoeTIgLSB5MSwgeDEgLSB4Mik7XG5cdFx0dC5ub3JtYWxpemUoKTtcblx0XHR3aWR0aCAqPSAwLjU7XG5cdFx0Y29uc3QgdHggPSB0LnggKiB3aWR0aDtcblx0XHRjb25zdCB0eSA9IHQueSAqIHdpZHRoO1xuXHRcdGlmICghZmlsbGVkKSB7XG5cdFx0XHR0aGlzLnZlcnRleCh4MSArIHR4LCB5MSArIHR5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MSAtIHR4LCB5MSAtIHR5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MiArIHR4LCB5MiArIHR5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MiAtIHR4LCB5MiAtIHR5LCBjb2xvcik7XG5cblx0XHRcdHRoaXMudmVydGV4KHgyICsgdHgsIHkyICsgdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgxICsgdHgsIHkxICsgdHksIGNvbG9yKTtcblxuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIgLSB0eCwgeTIgLSB0eSwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDEgLSB0eCwgeTEgLSB0eSwgY29sb3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnZlcnRleCh4MSArIHR4LCB5MSArIHR5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MSAtIHR4LCB5MSAtIHR5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4MiArIHR4LCB5MiArIHR5LCBjb2xvcik7XG5cblx0XHRcdHRoaXMudmVydGV4KHgyIC0gdHgsIHkyIC0gdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgyICsgdHgsIHkyICsgdHksIGNvbG9yKTtcblx0XHRcdHRoaXMudmVydGV4KHgxIC0gdHgsIHkxIC0gdHksIGNvbG9yKTtcblx0XHR9XG5cdH1cblxuXHR4ICh4OiBudW1iZXIsIHk6IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XG5cdFx0dGhpcy5saW5lKHggLSBzaXplLCB5IC0gc2l6ZSwgeCArIHNpemUsIHkgKyBzaXplKTtcblx0XHR0aGlzLmxpbmUoeCAtIHNpemUsIHkgKyBzaXplLCB4ICsgc2l6ZSwgeSAtIHNpemUpO1xuXHR9XG5cblx0cG9seWdvbiAocG9seWdvblZlcnRpY2VzOiBBcnJheUxpa2U8bnVtYmVyPiwgb2Zmc2V0OiBudW1iZXIsIGNvdW50OiBudW1iZXIsIGNvbG9yPzogQ29sb3IpIHtcblx0XHRpZiAoY291bnQgPCAzKSB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5Z29uIG11c3QgY29udGFpbiBhdCBsZWFzdCAzIHZlcnRpY2VzXCIpO1xuXHRcdHRoaXMuY2hlY2soU2hhcGVUeXBlLkxpbmUsIGNvdW50ICogMik7XG5cdFx0aWYgKCFjb2xvcikgY29sb3IgPSB0aGlzLmNvbG9yO1xuXG5cdFx0b2Zmc2V0IDw8PSAxO1xuXHRcdGNvdW50IDw8PSAxO1xuXG5cdFx0Y29uc3QgZmlyc3RYID0gcG9seWdvblZlcnRpY2VzW29mZnNldF07XG5cdFx0Y29uc3QgZmlyc3RZID0gcG9seWdvblZlcnRpY2VzW29mZnNldCArIDFdO1xuXHRcdGNvbnN0IGxhc3QgPSBvZmZzZXQgKyBjb3VudDtcblxuXHRcdGZvciAobGV0IGkgPSBvZmZzZXQsIG4gPSBvZmZzZXQgKyBjb3VudCAtIDI7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdGNvbnN0IHgxID0gcG9seWdvblZlcnRpY2VzW2ldO1xuXHRcdFx0Y29uc3QgeTEgPSBwb2x5Z29uVmVydGljZXNbaSArIDFdO1xuXG5cdFx0XHRsZXQgeDIgPSAwO1xuXHRcdFx0bGV0IHkyID0gMDtcblxuXHRcdFx0aWYgKGkgKyAyID49IGxhc3QpIHtcblx0XHRcdFx0eDIgPSBmaXJzdFg7XG5cdFx0XHRcdHkyID0gZmlyc3RZO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0eDIgPSBwb2x5Z29uVmVydGljZXNbaSArIDJdO1xuXHRcdFx0XHR5MiA9IHBvbHlnb25WZXJ0aWNlc1tpICsgM107XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMudmVydGV4KHgxLCB5MSwgY29sb3IpO1xuXHRcdFx0dGhpcy52ZXJ0ZXgoeDIsIHkyLCBjb2xvcik7XG5cdFx0fVxuXHR9XG5cblx0Y2lyY2xlIChmaWxsZWQ6IGJvb2xlYW4sIHg6IG51bWJlciwgeTogbnVtYmVyLCByYWRpdXM6IG51bWJlciwgY29sb3I/OiBDb2xvciwgc2VnbWVudHM6IG51bWJlciA9IDApIHtcblx0XHRpZiAoc2VnbWVudHMgPT09IDApIHNlZ21lbnRzID0gTWF0aC5tYXgoMSwgKDYgKiBNYXRoVXRpbHMuY2JydChyYWRpdXMpKSB8IDApO1xuXHRcdGlmIChzZWdtZW50cyA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJzZWdtZW50cyBtdXN0IGJlID4gMC5cIik7XG5cdFx0aWYgKCFjb2xvcikgY29sb3IgPSB0aGlzLmNvbG9yO1xuXHRcdGNvbnN0IGFuZ2xlID0gMiAqIE1hdGhVdGlscy5QSSAvIHNlZ21lbnRzO1xuXHRcdGNvbnN0IGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcblx0XHRjb25zdCBzaW4gPSBNYXRoLnNpbihhbmdsZSk7XG5cdFx0bGV0IGN4ID0gcmFkaXVzLCBjeSA9IDA7XG5cdFx0aWYgKCFmaWxsZWQpIHtcblx0XHRcdHRoaXMuY2hlY2soU2hhcGVUeXBlLkxpbmUsIHNlZ21lbnRzICogMiArIDIpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50czsgaSsrKSB7XG5cdFx0XHRcdHRoaXMudmVydGV4KHggKyBjeCwgeSArIGN5LCBjb2xvcik7XG5cdFx0XHRcdGNvbnN0IHRlbXAgPSBjeDtcblx0XHRcdFx0Y3ggPSBjb3MgKiBjeCAtIHNpbiAqIGN5O1xuXHRcdFx0XHRjeSA9IHNpbiAqIHRlbXAgKyBjb3MgKiBjeTtcblx0XHRcdFx0dGhpcy52ZXJ0ZXgoeCArIGN4LCB5ICsgY3ksIGNvbG9yKTtcblx0XHRcdH1cblx0XHRcdC8vIEVuc3VyZSB0aGUgbGFzdCBzZWdtZW50IGlzIGlkZW50aWNhbCB0byB0aGUgZmlyc3QuXG5cdFx0XHR0aGlzLnZlcnRleCh4ICsgY3gsIHkgKyBjeSwgY29sb3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNoZWNrKFNoYXBlVHlwZS5GaWxsZWQsIHNlZ21lbnRzICogMyArIDMpO1xuXHRcdFx0c2VnbWVudHMtLTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHM7IGkrKykge1xuXHRcdFx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0XHRcdHRoaXMudmVydGV4KHggKyBjeCwgeSArIGN5LCBjb2xvcik7XG5cdFx0XHRcdGNvbnN0IHRlbXAgPSBjeDtcblx0XHRcdFx0Y3ggPSBjb3MgKiBjeCAtIHNpbiAqIGN5O1xuXHRcdFx0XHRjeSA9IHNpbiAqIHRlbXAgKyBjb3MgKiBjeTtcblx0XHRcdFx0dGhpcy52ZXJ0ZXgoeCArIGN4LCB5ICsgY3ksIGNvbG9yKTtcblx0XHRcdH1cblx0XHRcdC8vIEVuc3VyZSB0aGUgbGFzdCBzZWdtZW50IGlzIGlkZW50aWNhbCB0byB0aGUgZmlyc3QuXG5cdFx0XHR0aGlzLnZlcnRleCh4LCB5LCBjb2xvcik7XG5cdFx0XHR0aGlzLnZlcnRleCh4ICsgY3gsIHkgKyBjeSwgY29sb3IpO1xuXHRcdH1cblxuXHRcdGN4ID0gcmFkaXVzO1xuXHRcdGN5ID0gMDtcblx0XHR0aGlzLnZlcnRleCh4ICsgY3gsIHkgKyBjeSwgY29sb3IpO1xuXHR9XG5cblx0Y3VydmUgKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsIGN5MjogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyLCBzZWdtZW50czogbnVtYmVyLCBjb2xvcj86IENvbG9yKSB7XG5cdFx0dGhpcy5jaGVjayhTaGFwZVR5cGUuTGluZSwgc2VnbWVudHMgKiAyICsgMik7XG5cdFx0aWYgKCFjb2xvcikgY29sb3IgPSB0aGlzLmNvbG9yO1xuXG5cdFx0Ly8gQWxnb3JpdGhtIGZyb206IGh0dHA6Ly93d3cuYW50aWdyYWluLmNvbS9yZXNlYXJjaC9iZXppZXJfaW50ZXJwb2xhdGlvbi9pbmRleC5odG1sI1BBR0VfQkVaSUVSX0lOVEVSUE9MQVRJT05cblx0XHRjb25zdCBzdWJkaXZfc3RlcCA9IDEgLyBzZWdtZW50cztcblx0XHRjb25zdCBzdWJkaXZfc3RlcDIgPSBzdWJkaXZfc3RlcCAqIHN1YmRpdl9zdGVwO1xuXHRcdGNvbnN0IHN1YmRpdl9zdGVwMyA9IHN1YmRpdl9zdGVwICogc3ViZGl2X3N0ZXAgKiBzdWJkaXZfc3RlcDtcblxuXHRcdGNvbnN0IHByZTEgPSAzICogc3ViZGl2X3N0ZXA7XG5cdFx0Y29uc3QgcHJlMiA9IDMgKiBzdWJkaXZfc3RlcDI7XG5cdFx0Y29uc3QgcHJlNCA9IDYgKiBzdWJkaXZfc3RlcDI7XG5cdFx0Y29uc3QgcHJlNSA9IDYgKiBzdWJkaXZfc3RlcDM7XG5cblx0XHRjb25zdCB0bXAxeCA9IHgxIC0gY3gxICogMiArIGN4Mjtcblx0XHRjb25zdCB0bXAxeSA9IHkxIC0gY3kxICogMiArIGN5MjtcblxuXHRcdGNvbnN0IHRtcDJ4ID0gKGN4MSAtIGN4MikgKiAzIC0geDEgKyB4Mjtcblx0XHRjb25zdCB0bXAyeSA9IChjeTEgLSBjeTIpICogMyAtIHkxICsgeTI7XG5cblx0XHRsZXQgZnggPSB4MTtcblx0XHRsZXQgZnkgPSB5MTtcblxuXHRcdGxldCBkZnggPSAoY3gxIC0geDEpICogcHJlMSArIHRtcDF4ICogcHJlMiArIHRtcDJ4ICogc3ViZGl2X3N0ZXAzO1xuXHRcdGxldCBkZnkgPSAoY3kxIC0geTEpICogcHJlMSArIHRtcDF5ICogcHJlMiArIHRtcDJ5ICogc3ViZGl2X3N0ZXAzO1xuXG5cdFx0bGV0IGRkZnggPSB0bXAxeCAqIHByZTQgKyB0bXAyeCAqIHByZTU7XG5cdFx0bGV0IGRkZnkgPSB0bXAxeSAqIHByZTQgKyB0bXAyeSAqIHByZTU7XG5cblx0XHRjb25zdCBkZGRmeCA9IHRtcDJ4ICogcHJlNTtcblx0XHRjb25zdCBkZGRmeSA9IHRtcDJ5ICogcHJlNTtcblxuXHRcdHdoaWxlIChzZWdtZW50cy0tID4gMCkge1xuXHRcdFx0dGhpcy52ZXJ0ZXgoZngsIGZ5LCBjb2xvcik7XG5cdFx0XHRmeCArPSBkZng7XG5cdFx0XHRmeSArPSBkZnk7XG5cdFx0XHRkZnggKz0gZGRmeDtcblx0XHRcdGRmeSArPSBkZGZ5O1xuXHRcdFx0ZGRmeCArPSBkZGRmeDtcblx0XHRcdGRkZnkgKz0gZGRkZnk7XG5cdFx0XHR0aGlzLnZlcnRleChmeCwgZnksIGNvbG9yKTtcblx0XHR9XG5cdFx0dGhpcy52ZXJ0ZXgoZngsIGZ5LCBjb2xvcik7XG5cdFx0dGhpcy52ZXJ0ZXgoeDIsIHkyLCBjb2xvcik7XG5cdH1cblxuXHRwcml2YXRlIHZlcnRleCAoeDogbnVtYmVyLCB5OiBudW1iZXIsIGNvbG9yOiBDb2xvcikge1xuXHRcdGxldCBpZHggPSB0aGlzLnZlcnRleEluZGV4O1xuXHRcdGNvbnN0IHZlcnRpY2VzID0gdGhpcy5tZXNoLmdldFZlcnRpY2VzKCk7XG5cdFx0dmVydGljZXNbaWR4KytdID0geDtcblx0XHR2ZXJ0aWNlc1tpZHgrK10gPSB5O1xuXHRcdHZlcnRpY2VzW2lkeCsrXSA9IGNvbG9yLnI7XG5cdFx0dmVydGljZXNbaWR4KytdID0gY29sb3IuZztcblx0XHR2ZXJ0aWNlc1tpZHgrK10gPSBjb2xvci5iO1xuXHRcdHZlcnRpY2VzW2lkeCsrXSA9IGNvbG9yLmE7XG5cdFx0dGhpcy52ZXJ0ZXhJbmRleCA9IGlkeDtcblx0fVxuXG5cdGVuZCAoKSB7XG5cdFx0aWYgKCF0aGlzLmlzRHJhd2luZykgdGhyb3cgbmV3IEVycm9yKFwiU2hhcGVSZW5kZXJlci5iZWdpbigpIGhhcyBub3QgYmVlbiBjYWxsZWRcIik7XG5cdFx0dGhpcy5mbHVzaCgpO1xuXHRcdGNvbnN0IGdsID0gdGhpcy5jb250ZXh0LmdsO1xuXHRcdGdsLmRpc2FibGUoZ2wuQkxFTkQpO1xuXHRcdHRoaXMuaXNEcmF3aW5nID0gZmFsc2U7XG5cdH1cblxuXHRwcml2YXRlIGZsdXNoICgpIHtcblx0XHRpZiAodGhpcy52ZXJ0ZXhJbmRleCA9PT0gMCkgcmV0dXJuO1xuXHRcdGlmICghdGhpcy5zaGFkZXIpIHRocm93IG5ldyBFcnJvcihcIk5vIHNoYWRlciBzZXQuXCIpO1xuXHRcdHRoaXMubWVzaC5zZXRWZXJ0aWNlc0xlbmd0aCh0aGlzLnZlcnRleEluZGV4KTtcblx0XHR0aGlzLm1lc2guZHJhdyh0aGlzLnNoYWRlciwgdGhpcy5zaGFwZVR5cGUpO1xuXHRcdHRoaXMudmVydGV4SW5kZXggPSAwO1xuXHR9XG5cblx0cHJpdmF0ZSBjaGVjayAoc2hhcGVUeXBlOiBTaGFwZVR5cGUsIG51bVZlcnRpY2VzOiBudW1iZXIpIHtcblx0XHRpZiAoIXRoaXMuaXNEcmF3aW5nKSB0aHJvdyBuZXcgRXJyb3IoXCJTaGFwZVJlbmRlcmVyLmJlZ2luKCkgaGFzIG5vdCBiZWVuIGNhbGxlZFwiKTtcblx0XHRpZiAodGhpcy5zaGFwZVR5cGUgPT09IHNoYXBlVHlwZSkge1xuXHRcdFx0aWYgKHRoaXMubWVzaC5tYXhWZXJ0aWNlcygpIC0gdGhpcy5tZXNoLm51bVZlcnRpY2VzKCkgPCBudW1WZXJ0aWNlcykgdGhpcy5mbHVzaCgpO1xuXHRcdFx0ZWxzZSByZXR1cm47XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZmx1c2goKTtcblx0XHRcdHRoaXMuc2hhcGVUeXBlID0gc2hhcGVUeXBlO1xuXHRcdH1cblx0fVxuXG5cdGRpc3Bvc2UgKCkge1xuXHRcdHRoaXMubWVzaC5kaXNwb3NlKCk7XG5cdH1cbn1cblxuZXhwb3J0IGVudW0gU2hhcGVUeXBlIHtcblx0UG9pbnQgPSAweDAwMDAsXG5cdExpbmUgPSAweDAwMDEsXG5cdEZpbGxlZCA9IDB4MDAwNFxufVxuIl19
@@ -26,8 +26,8 @@
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, Color, Skeleton } from "@esotericsoftware/spine-core";
30
- import { ShapeRenderer } from "./ShapeRenderer.js";
29
+ import { Color, type Disposable, type Skeleton } from "@esotericsoftware/spine-core";
30
+ import type { ShapeRenderer } from "./ShapeRenderer.js";
31
31
  import { ManagedWebGLRenderingContext } from "./WebGL.js";
32
32
  export declare class SkeletonDebugRenderer implements Disposable {
33
33
  boneLineColor: Color;
@@ -45,7 +45,6 @@ export declare class SkeletonDebugRenderer implements Disposable {
45
45
  drawPaths: boolean;
46
46
  drawSkeletonXY: boolean;
47
47
  drawClipping: boolean;
48
- premultipliedAlpha: boolean;
49
48
  scale: number;
50
49
  boneWidth: number;
51
50
  private context;