@kontur.candy/tools 2.160.0-linux-compat.1 → 2.160.0-linux-compat.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/distr/Common/AutoValidationUtils.js +9 -0
  3. package/distr/Common/CandyApiClient/CandyApiClient.js +29 -14
  4. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +8 -20
  5. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +4 -9
  6. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +8 -27
  7. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +8 -10
  8. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
  9. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +4 -8
  10. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +18 -14
  11. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
  12. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
  13. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
  14. package/distr/Common/EndPoints.js +4 -2
  15. package/distr/Common/FSPrinterClient/FSPrinterClient.js +136 -0
  16. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +19 -0
  17. package/distr/Common/FSPrinterClient/IFSPrinterClient.js +44 -0
  18. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +53 -0
  19. package/distr/Common/ModelPath/BuildIterationSequence.js +20 -1
  20. package/distr/Common/ModelPath/Map/Map2.js +14 -1
  21. package/distr/Common/ModelPath/ModelPath.js +41 -69
  22. package/distr/Common/ModelPath/ModelPathHelper.js +23 -1
  23. package/distr/Common/ModelPath/Set/Set2.js +7 -2
  24. package/distr/Common/PicklistApiClient/IPicklistApiClient.js +6 -0
  25. package/distr/Common/PicklistApiClient/PicklistApiClient.js +30 -0
  26. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +34 -0
  27. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +53 -0
  28. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +37 -0
  29. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +6 -0
  30. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +6 -0
  31. package/distr/Common/StringArrayKey.js +4 -2
  32. package/distr/Common/getRngSchemaFilename.js +10 -4
  33. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -2
  34. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  35. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  36. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +182 -171
  37. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  38. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +192 -192
  39. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  40. package/package.json +2 -2
  41. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +0 -6
@@ -289,29 +289,31 @@
289
289
  },
290
290
  133: function (e, r, t) {
291
291
  var o = "undefined" != typeof globalThis && globalThis || "undefined" != typeof self && self || void 0 !== o && o,
292
- n = ("URLSearchParams" in o),
293
- i = "Symbol" in o && "iterator" in Symbol,
294
- a = "FileReader" in o && "Blob" in o && function () {
295
- try {
296
- return new Blob(), !0;
297
- } catch (e) {
298
- return !1;
299
- }
300
- }(),
301
- u = ("FormData" in o),
302
- s = ("ArrayBuffer" in o);
303
- if (s) var l = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"],
304
- c = ArrayBuffer.isView || function (e) {
305
- return e && l.indexOf(Object.prototype.toString.call(e)) > -1;
292
+ n = {
293
+ searchParams: "URLSearchParams" in o,
294
+ iterable: "Symbol" in o && "iterator" in Symbol,
295
+ blob: "FileReader" in o && "Blob" in o && function () {
296
+ try {
297
+ return new Blob(), !0;
298
+ } catch (e) {
299
+ return !1;
300
+ }
301
+ }(),
302
+ formData: "FormData" in o,
303
+ arrayBuffer: "ArrayBuffer" in o
306
304
  };
307
- function f(e) {
305
+ if (n.arrayBuffer) var i = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"],
306
+ a = ArrayBuffer.isView || function (e) {
307
+ return e && i.indexOf(Object.prototype.toString.call(e)) > -1;
308
+ };
309
+ function u(e) {
308
310
  if ("string" != typeof e && (e = String(e)), /[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e) || "" === e) throw new TypeError('Invalid character in header field name: "' + e + '"');
309
311
  return e.toLowerCase();
310
312
  }
311
- function d(e) {
313
+ function s(e) {
312
314
  return "string" != typeof e && (e = String(e)), e;
313
315
  }
314
- function p(e) {
316
+ function l(e) {
315
317
  var r = {
316
318
  next: function () {
317
319
  var r = e.shift();
@@ -321,12 +323,12 @@
321
323
  };
322
324
  }
323
325
  };
324
- return i && (r[Symbol.iterator] = function () {
326
+ return n.iterable && (r[Symbol.iterator] = function () {
325
327
  return r;
326
328
  }), r;
327
329
  }
328
- function y(e) {
329
- this.map = {}, e instanceof y ? e.forEach(function (e, r) {
330
+ function c(e) {
331
+ this.map = {}, e instanceof c ? e.forEach(function (e, r) {
330
332
  this.append(r, e);
331
333
  }, this) : Array.isArray(e) ? e.forEach(function (e) {
332
334
  this.append(e[0], e[1]);
@@ -334,11 +336,11 @@
334
336
  this.append(r, e[r]);
335
337
  }, this);
336
338
  }
337
- function m(e) {
339
+ function f(e) {
338
340
  if (e.bodyUsed) return Promise.reject(new TypeError("Already read"));
339
341
  e.bodyUsed = !0;
340
342
  }
341
- function h(e) {
343
+ function d(e) {
342
344
  return new Promise(function (r, t) {
343
345
  e.onload = function () {
344
346
  r(e.result);
@@ -347,95 +349,95 @@
347
349
  };
348
350
  });
349
351
  }
350
- function g(e) {
352
+ function p(e) {
351
353
  var r = new FileReader(),
352
- t = h(r);
354
+ t = d(r);
353
355
  return r.readAsArrayBuffer(e), t;
354
356
  }
355
- function _(e) {
357
+ function y(e) {
356
358
  if (e.slice) return e.slice(0);
357
359
  var r = new Uint8Array(e.byteLength);
358
360
  return r.set(new Uint8Array(e)), r.buffer;
359
361
  }
360
- function v() {
362
+ function m() {
361
363
  return this.bodyUsed = !1, this._initBody = function (e) {
362
364
  var r;
363
- this.bodyUsed = this.bodyUsed, this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : a && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : u && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : n && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : s && a && (r = e) && DataView.prototype.isPrototypeOf(r) ? (this._bodyArrayBuffer = _(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : s && (ArrayBuffer.prototype.isPrototypeOf(e) || c(e)) ? this._bodyArrayBuffer = _(e) : this._bodyText = e = Object.prototype.toString.call(e) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : n && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
364
- }, a && (this.blob = function () {
365
- var e = m(this);
365
+ this.bodyUsed = this.bodyUsed, this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : n.blob && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : n.formData && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : n.searchParams && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : n.arrayBuffer && n.blob && (r = e) && DataView.prototype.isPrototypeOf(r) ? (this._bodyArrayBuffer = y(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : n.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(e) || a(e)) ? this._bodyArrayBuffer = y(e) : this._bodyText = e = Object.prototype.toString.call(e) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : n.searchParams && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
366
+ }, n.blob && (this.blob = function () {
367
+ var e = f(this);
366
368
  if (e) return e;
367
369
  if (this._bodyBlob) return Promise.resolve(this._bodyBlob);
368
370
  if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer]));
369
371
  if (this._bodyFormData) throw new Error("could not read FormData body as blob");
370
372
  return Promise.resolve(new Blob([this._bodyText]));
371
373
  }, this.arrayBuffer = function () {
372
- return this._bodyArrayBuffer ? m(this) || (ArrayBuffer.isView(this._bodyArrayBuffer) ? Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength)) : Promise.resolve(this._bodyArrayBuffer)) : this.blob().then(g);
374
+ return this._bodyArrayBuffer ? f(this) || (ArrayBuffer.isView(this._bodyArrayBuffer) ? Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength)) : Promise.resolve(this._bodyArrayBuffer)) : this.blob().then(p);
373
375
  }), this.text = function () {
374
376
  var e,
375
377
  r,
376
378
  t,
377
- o = m(this);
379
+ o = f(this);
378
380
  if (o) return o;
379
- if (this._bodyBlob) return e = this._bodyBlob, t = h(r = new FileReader()), r.readAsText(e), t;
381
+ if (this._bodyBlob) return e = this._bodyBlob, t = d(r = new FileReader()), r.readAsText(e), t;
380
382
  if (this._bodyArrayBuffer) return Promise.resolve(function (e) {
381
383
  for (var r = new Uint8Array(e), t = new Array(r.length), o = 0; o < r.length; o++) t[o] = String.fromCharCode(r[o]);
382
384
  return t.join("");
383
385
  }(this._bodyArrayBuffer));
384
386
  if (this._bodyFormData) throw new Error("could not read FormData body as text");
385
387
  return Promise.resolve(this._bodyText);
386
- }, u && (this.formData = function () {
387
- return this.text().then(E);
388
+ }, n.formData && (this.formData = function () {
389
+ return this.text().then(_);
388
390
  }), this.json = function () {
389
391
  return this.text().then(JSON.parse);
390
392
  }, this;
391
393
  }
392
- y.prototype.append = function (e, r) {
393
- e = f(e), r = d(r);
394
+ c.prototype.append = function (e, r) {
395
+ e = u(e), r = s(r);
394
396
  var t = this.map[e];
395
397
  this.map[e] = t ? t + ", " + r : r;
396
- }, y.prototype.delete = function (e) {
397
- delete this.map[f(e)];
398
- }, y.prototype.get = function (e) {
399
- return e = f(e), this.has(e) ? this.map[e] : null;
400
- }, y.prototype.has = function (e) {
401
- return this.map.hasOwnProperty(f(e));
402
- }, y.prototype.set = function (e, r) {
403
- this.map[f(e)] = d(r);
404
- }, y.prototype.forEach = function (e, r) {
398
+ }, c.prototype.delete = function (e) {
399
+ delete this.map[u(e)];
400
+ }, c.prototype.get = function (e) {
401
+ return e = u(e), this.has(e) ? this.map[e] : null;
402
+ }, c.prototype.has = function (e) {
403
+ return this.map.hasOwnProperty(u(e));
404
+ }, c.prototype.set = function (e, r) {
405
+ this.map[u(e)] = s(r);
406
+ }, c.prototype.forEach = function (e, r) {
405
407
  for (var t in this.map) this.map.hasOwnProperty(t) && e.call(r, this.map[t], t, this);
406
- }, y.prototype.keys = function () {
408
+ }, c.prototype.keys = function () {
407
409
  var e = [];
408
410
  return this.forEach(function (r, t) {
409
411
  e.push(t);
410
- }), p(e);
411
- }, y.prototype.values = function () {
412
+ }), l(e);
413
+ }, c.prototype.values = function () {
412
414
  var e = [];
413
415
  return this.forEach(function (r) {
414
416
  e.push(r);
415
- }), p(e);
416
- }, y.prototype.entries = function () {
417
+ }), l(e);
418
+ }, c.prototype.entries = function () {
417
419
  var e = [];
418
420
  return this.forEach(function (r, t) {
419
421
  e.push([t, r]);
420
- }), p(e);
421
- }, i && (y.prototype[Symbol.iterator] = y.prototype.entries);
422
- var b = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
423
- function w(e, r) {
424
- if (!(this instanceof w)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
422
+ }), l(e);
423
+ }, n.iterable && (c.prototype[Symbol.iterator] = c.prototype.entries);
424
+ var h = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
425
+ function g(e, r) {
426
+ if (!(this instanceof g)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
425
427
  var t,
426
428
  o,
427
429
  n = (r = r || {}).body;
428
- if (e instanceof w) {
430
+ if (e instanceof g) {
429
431
  if (e.bodyUsed) throw new TypeError("Already read");
430
- this.url = e.url, this.credentials = e.credentials, r.headers || (this.headers = new y(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, n || null == e._bodyInit || (n = e._bodyInit, e.bodyUsed = !0);
432
+ this.url = e.url, this.credentials = e.credentials, r.headers || (this.headers = new c(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, n || null == e._bodyInit || (n = e._bodyInit, e.bodyUsed = !0);
431
433
  } else this.url = String(e);
432
- if (this.credentials = r.credentials || this.credentials || "same-origin", !r.headers && this.headers || (this.headers = new y(r.headers)), this.method = (o = (t = r.method || this.method || "GET").toUpperCase(), b.indexOf(o) > -1 ? o : t), this.mode = r.mode || this.mode || null, this.signal = r.signal || this.signal, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && n) throw new TypeError("Body not allowed for GET or HEAD requests");
434
+ if (this.credentials = r.credentials || this.credentials || "same-origin", !r.headers && this.headers || (this.headers = new c(r.headers)), this.method = (o = (t = r.method || this.method || "GET").toUpperCase(), h.indexOf(o) > -1 ? o : t), this.mode = r.mode || this.mode || null, this.signal = r.signal || this.signal, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && n) throw new TypeError("Body not allowed for GET or HEAD requests");
433
435
  if (this._initBody(n), !("GET" !== this.method && "HEAD" !== this.method || "no-store" !== r.cache && "no-cache" !== r.cache)) {
434
436
  var i = /([?&])_=[^&]*/;
435
437
  i.test(this.url) ? this.url = this.url.replace(i, "$1_=" + new Date().getTime()) : this.url += (/\?/.test(this.url) ? "&" : "?") + "_=" + new Date().getTime();
436
438
  }
437
439
  }
438
- function E(e) {
440
+ function _(e) {
439
441
  var r = new FormData();
440
442
  return e.trim().split("&").forEach(function (e) {
441
443
  if (e) {
@@ -446,52 +448,52 @@
446
448
  }
447
449
  }), r;
448
450
  }
449
- function C(e, r) {
450
- if (!(this instanceof C)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
451
- r || (r = {}), this.type = "default", this.status = void 0 === r.status ? 200 : r.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === r.statusText ? "" : "" + r.statusText, this.headers = new y(r.headers), this.url = r.url || "", this._initBody(e);
451
+ function v(e, r) {
452
+ if (!(this instanceof v)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
453
+ r || (r = {}), this.type = "default", this.status = void 0 === r.status ? 200 : r.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === r.statusText ? "" : "" + r.statusText, this.headers = new c(r.headers), this.url = r.url || "", this._initBody(e);
452
454
  }
453
- w.prototype.clone = function () {
454
- return new w(this, {
455
+ g.prototype.clone = function () {
456
+ return new g(this, {
455
457
  body: this._bodyInit
456
458
  });
457
- }, v.call(w.prototype), v.call(C.prototype), C.prototype.clone = function () {
458
- return new C(this._bodyInit, {
459
+ }, m.call(g.prototype), m.call(v.prototype), v.prototype.clone = function () {
460
+ return new v(this._bodyInit, {
459
461
  status: this.status,
460
462
  statusText: this.statusText,
461
- headers: new y(this.headers),
463
+ headers: new c(this.headers),
462
464
  url: this.url
463
465
  });
464
- }, C.error = function () {
465
- var e = new C(null, {
466
+ }, v.error = function () {
467
+ var e = new v(null, {
466
468
  status: 0,
467
469
  statusText: ""
468
470
  });
469
471
  return e.type = "error", e;
470
472
  };
471
- var k = [301, 302, 303, 307, 308];
472
- C.redirect = function (e, r) {
473
- if (-1 === k.indexOf(r)) throw new RangeError("Invalid status code");
474
- return new C(null, {
473
+ var b = [301, 302, 303, 307, 308];
474
+ v.redirect = function (e, r) {
475
+ if (-1 === b.indexOf(r)) throw new RangeError("Invalid status code");
476
+ return new v(null, {
475
477
  status: r,
476
478
  headers: {
477
479
  location: e
478
480
  }
479
481
  });
480
482
  };
481
- var P = o.DOMException;
483
+ var w = o.DOMException;
482
484
  try {
483
- new P();
485
+ new w();
484
486
  } catch (e) {
485
- (P = function (e, r) {
487
+ (w = function (e, r) {
486
488
  this.message = e, this.name = r;
487
489
  var t = Error(e);
488
490
  this.stack = t.stack;
489
- }).prototype = Object.create(Error.prototype), P.prototype.constructor = P;
491
+ }).prototype = Object.create(Error.prototype), w.prototype.constructor = w;
490
492
  }
491
- function A(e, r) {
492
- return new Promise(function (t, n) {
493
- var i = new w(e, r);
494
- if (i.signal && i.signal.aborted) return n(new P("Aborted", "AbortError"));
493
+ function E(e, r) {
494
+ return new Promise(function (t, i) {
495
+ var a = new g(e, r);
496
+ if (a.signal && a.signal.aborted) return i(new w("Aborted", "AbortError"));
495
497
  var u = new XMLHttpRequest();
496
498
  function l() {
497
499
  u.abort();
@@ -502,7 +504,7 @@
502
504
  o = {
503
505
  status: u.status,
504
506
  statusText: u.statusText,
505
- headers: (e = u.getAllResponseHeaders() || "", r = new y(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
507
+ headers: (e = u.getAllResponseHeaders() || "", r = new c(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
506
508
  return 0 === e.indexOf("\n") ? e.substr(1, e.length) : e;
507
509
  }).forEach(function (e) {
508
510
  var t = e.split(":"),
@@ -516,50 +518,50 @@
516
518
  o.url = "responseURL" in u ? u.responseURL : o.headers.get("X-Request-URL");
517
519
  var n = "response" in u ? u.response : u.responseText;
518
520
  setTimeout(function () {
519
- t(new C(n, o));
521
+ t(new v(n, o));
520
522
  }, 0);
521
523
  }, u.onerror = function () {
522
524
  setTimeout(function () {
523
- n(new TypeError("Network request failed"));
525
+ i(new TypeError("Network request failed"));
524
526
  }, 0);
525
527
  }, u.ontimeout = function () {
526
528
  setTimeout(function () {
527
- n(new TypeError("Network request failed"));
529
+ i(new TypeError("Network request failed"));
528
530
  }, 0);
529
531
  }, u.onabort = function () {
530
532
  setTimeout(function () {
531
- n(new P("Aborted", "AbortError"));
533
+ i(new w("Aborted", "AbortError"));
532
534
  }, 0);
533
- }, u.open(i.method, function (e) {
535
+ }, u.open(a.method, function (e) {
534
536
  try {
535
537
  return "" === e && o.location.href ? o.location.href : e;
536
538
  } catch (r) {
537
539
  return e;
538
540
  }
539
- }(i.url), !0), "include" === i.credentials ? u.withCredentials = !0 : "omit" === i.credentials && (u.withCredentials = !1), "responseType" in u && (a ? u.responseType = "blob" : s && i.headers.get("Content-Type") && -1 !== i.headers.get("Content-Type").indexOf("application/octet-stream") && (u.responseType = "arraybuffer")), !r || "object" != typeof r.headers || r.headers instanceof y ? i.headers.forEach(function (e, r) {
541
+ }(a.url), !0), "include" === a.credentials ? u.withCredentials = !0 : "omit" === a.credentials && (u.withCredentials = !1), "responseType" in u && (n.blob ? u.responseType = "blob" : n.arrayBuffer && a.headers.get("Content-Type") && -1 !== a.headers.get("Content-Type").indexOf("application/octet-stream") && (u.responseType = "arraybuffer")), !r || "object" != typeof r.headers || r.headers instanceof c ? a.headers.forEach(function (e, r) {
540
542
  u.setRequestHeader(r, e);
541
543
  }) : Object.getOwnPropertyNames(r.headers).forEach(function (e) {
542
- u.setRequestHeader(e, d(r.headers[e]));
543
- }), i.signal && (i.signal.addEventListener("abort", l), u.onreadystatechange = function () {
544
- 4 === u.readyState && i.signal.removeEventListener("abort", l);
545
- }), u.send(void 0 === i._bodyInit ? null : i._bodyInit);
544
+ u.setRequestHeader(e, s(r.headers[e]));
545
+ }), a.signal && (a.signal.addEventListener("abort", l), u.onreadystatechange = function () {
546
+ 4 === u.readyState && a.signal.removeEventListener("abort", l);
547
+ }), u.send(void 0 === a._bodyInit ? null : a._bodyInit);
546
548
  });
547
549
  }
548
- A.polyfill = !0, o.fetch || (o.fetch = A, o.Headers = y, o.Request = w, o.Response = C);
549
- var O,
550
- L = t(255),
551
- S = t(412),
552
- B = t(730),
553
- T = t(68),
554
- j = t(152);
555
- function I(e) {
556
- return I = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
550
+ E.polyfill = !0, o.fetch || (o.fetch = E, o.Headers = c, o.Request = g, o.Response = v);
551
+ var C,
552
+ k = t(255),
553
+ P = t(412),
554
+ A = t(730),
555
+ O = t(68),
556
+ L = t(152);
557
+ function S(e) {
558
+ return S = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
557
559
  return typeof e;
558
560
  } : function (e) {
559
561
  return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
560
- }, I(e);
562
+ }, S(e);
561
563
  }
562
- function F(e, r) {
564
+ function B(e, r) {
563
565
  var t = Object.keys(e);
564
566
  if (Object.getOwnPropertySymbols) {
565
567
  var o = Object.getOwnPropertySymbols(e);
@@ -569,30 +571,30 @@
569
571
  }
570
572
  return t;
571
573
  }
572
- function H(e) {
574
+ function T(e) {
573
575
  for (var r = 1; r < arguments.length; r++) {
574
576
  var t = null != arguments[r] ? arguments[r] : {};
575
- r % 2 ? F(Object(t), !0).forEach(function (r) {
576
- U(e, r, t[r]);
577
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : F(Object(t)).forEach(function (r) {
577
+ r % 2 ? B(Object(t), !0).forEach(function (r) {
578
+ j(e, r, t[r]);
579
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : B(Object(t)).forEach(function (r) {
578
580
  Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
579
581
  });
580
582
  }
581
583
  return e;
582
584
  }
583
- function U(e, r, t) {
585
+ function j(e, r, t) {
584
586
  return (r = function (e) {
585
587
  var r = function (e, r) {
586
- if ("object" !== I(e) || null === e) return e;
588
+ if ("object" !== S(e) || null === e) return e;
587
589
  var t = e[Symbol.toPrimitive];
588
590
  if (void 0 !== t) {
589
- var o = t.call(e, r);
590
- if ("object" !== I(o)) return o;
591
+ var o = t.call(e, "string");
592
+ if ("object" !== S(o)) return o;
591
593
  throw new TypeError("@@toPrimitive must return a primitive value.");
592
594
  }
593
595
  return String(e);
594
- }(e, "string");
595
- return "symbol" === I(r) ? r : String(r);
596
+ }(e);
597
+ return "symbol" === S(r) ? r : String(r);
596
598
  }(r)) in e ? Object.defineProperty(e, r, {
597
599
  value: t,
598
600
  enumerable: !0,
@@ -600,21 +602,21 @@
600
602
  writable: !0
601
603
  }) : e[r] = t, e;
602
604
  }
603
- function M(e, r) {
605
+ function I(e, r) {
604
606
  (null == r || r > e.length) && (r = e.length);
605
607
  for (var t = 0, o = new Array(r); t < r; t++) o[t] = e[t];
606
608
  return o;
607
609
  }
608
- function G() {}
609
- function x(e) {
610
+ function F() {}
611
+ function H(e) {
610
612
  return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
611
613
  }
612
- function D() {
614
+ function M() {
613
615
  var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
614
616
  r = t.g.CF.keformsUrl || "";
615
617
  return "".concat(r, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
616
618
  }
617
- function R(e, r) {
619
+ function U(e, r) {
618
620
  if (void 0 === r) return e;
619
621
  for (var t = [], o = 0, n = Object.keys(r); o < n.length; o++) {
620
622
  var i = n[o],
@@ -623,10 +625,10 @@
623
625
  }
624
626
  return 0 === t.length ? e : e + "?" + t.join("&");
625
627
  }
626
- function N(e) {
627
- return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-.]+"), ")$")).test(t.g.location.host);
628
+ function D(e) {
629
+ return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-._]+"), ")$")).test(t.g.location.host);
628
630
  }
629
- function V(e) {
631
+ function G(e) {
630
632
  return (t.g.location.search.trim().replace(/^(\?|#|&)/, "").split("&").map(function (e) {
631
633
  return e.replace(/\+/g, " ").split("=").map(decodeURIComponent);
632
634
  }).find(function (r) {
@@ -660,9 +662,9 @@
660
662
  }
661
663
  }(t, o) || function (e, r) {
662
664
  if (e) {
663
- if ("string" == typeof e) return M(e, r);
665
+ if ("string" == typeof e) return I(e, r);
664
666
  var t = Object.prototype.toString.call(e).slice(8, -1);
665
- return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? M(e, r) : void 0;
667
+ return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? I(e, r) : void 0;
666
668
  }
667
669
  }(t, o) || function () {
668
670
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
@@ -670,7 +672,7 @@
670
672
  var t, o;
671
673
  }) || [])[1];
672
674
  }
673
- function q(e, r) {
675
+ function x(e, r) {
674
676
  var t = 0;
675
677
  e.forEach(function (o) {
676
678
  o(function (o) {
@@ -681,49 +683,49 @@
681
683
  });
682
684
  });
683
685
  }
684
- function K(e, r) {
686
+ function N(e, r) {
685
687
  var o = e.gfv,
686
688
  n = e.engineVersion,
687
689
  i = e.resourcesVersion;
688
690
  if (t.g.CF.entryPoint[o]) r();else {
689
691
  var a = n && !t.g[n],
690
- u = "true" === V("debug") ? "" : ".min",
692
+ u = "true" === G("debug") ? "" : ".min",
691
693
  s = [],
692
694
  l = {
693
695
  v: i,
694
696
  resourceZone: e.resourceZone
695
697
  };
696
698
  s.push(function (e) {
697
- return S.e.styleSheet(D(R("static/public/styles/".concat(o).concat(u, ".css"), l)), !0, e);
699
+ return P.e.styleSheet(M(U("static/public/styles/".concat(o).concat(u, ".css"), l)), !0, e);
698
700
  }), s.push(function (e) {
699
- return S.e.script(D(R("static/public/scripts/".concat(o).concat(u, ".js"), l)), e);
701
+ return P.e.script(M(U("static/public/scripts/".concat(o).concat(u, ".js"), l)), e);
700
702
  }), a && s.push(function (e) {
701
- return S.e.styleSheet(D(R("static/public/styles/candy_".concat(n).concat(u, ".css"), l)), !1, e);
703
+ return P.e.styleSheet(M(U("static/public/styles/candy_".concat(n).concat(u, ".css"), l)), !1, e);
702
704
  }, function (e) {
703
- return S.e.script(D(R("static/public/scripts/candy_".concat(n).concat(u, ".js"), l)), e);
704
- }), q(s, r);
705
+ return P.e.script(M(U("static/public/scripts/candy_".concat(n).concat(u, ".js"), l)), e);
706
+ }), x(s, r);
705
707
  }
706
708
  }
707
- function Z(e, r, o) {
709
+ function R(e, r, o) {
708
710
  var n;
709
- (null !== (n = t.g.CF.entryPoint[r.gfv]) && void 0 !== n ? n : (0, L.d1)("Form entry point ".concat(r.gfv, " not found.")))(e, r).then(function (e) {
710
- var r = e.publicForm || (0, j.P)(e);
711
+ (null !== (n = t.g.CF.entryPoint[r.gfv]) && void 0 !== n ? n : (0, k.d1)("Form entry point ".concat(r.gfv, " not found.")))(e, r).then(function (e) {
712
+ var r = e.publicForm || (0, L.P)(e);
711
713
  o(null, r);
712
714
  }).catch(o);
713
715
  }
714
- function W(e) {
716
+ function V(e) {
715
717
  if (null != e) return t.g[e] && t.g[e].default;
716
718
  }
717
- function z(e, r) {
719
+ function q(e, r) {
718
720
  var o,
719
721
  n,
720
- i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : G,
722
+ i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : F,
721
723
  a = null,
722
724
  u = r.ns,
723
725
  s = r.draftId;
724
- if (N(T.Z.konturDomains) ? T.Z.authorized ? s ? u || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
725
- var l = null !== (o = r.resourceZone) && void 0 !== o ? o : V("resourceZone"),
726
- c = R(D((0, B.m)({
726
+ if (D(O.Z.konturDomains) ? O.Z.authorized ? s ? u || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
727
+ var l = null !== (o = r.resourceZone) && void 0 !== o ? o : G("resourceZone"),
728
+ c = U(M((0, A.m)({
727
729
  ns: u,
728
730
  draftId: s
729
731
  })), {
@@ -736,8 +738,7 @@
736
738
  var d;
737
739
  f.credentials = "omit", f.headers = null !== (d = f.headers) && void 0 !== d ? d : {}, f.headers.Authorization = "AUTH.SID ".concat(r.authentication.authSid);
738
740
  } else f.credentials = "omit";
739
- var p = null !== (n = r.fetch) && void 0 !== n ? n : A;
740
- p(c, f).then(function (e) {
741
+ (null !== (n = r.fetch) && void 0 !== n ? n : E)(c, f).then(function (e) {
741
742
  return e.json();
742
743
  }).then(function (o) {
743
744
  var n,
@@ -746,15 +747,15 @@
746
747
  s,
747
748
  c = o.gfv,
748
749
  f = o.engineVersion,
749
- d = H(H(H({
750
- authorized: T.Z.authorized,
751
- cauldronApiUrl: T.Z.cauldronApiUrl,
752
- isTestServer: T.Z.isTestServer,
753
- renderCachingForIE8: T.Z.renderCachingForIE8,
754
- normalizationOnServer: T.Z.normalizationOnServer,
755
- normativeUrl: T.Z.normativeUrl,
756
- resourcesVersion: T.Z.resourcesVersion,
757
- konturDomains: T.Z.konturDomains
750
+ d = T(T(T({
751
+ authorized: O.Z.authorized,
752
+ cauldronApiUrl: O.Z.cauldronApiUrl,
753
+ isTestServer: O.Z.isTestServer,
754
+ renderCachingForIE8: O.Z.renderCachingForIE8,
755
+ normalizationOnServer: O.Z.normalizationOnServer,
756
+ normativeUrl: O.Z.normativeUrl,
757
+ resourcesVersion: O.Z.resourcesVersion,
758
+ konturDomains: O.Z.konturDomains
758
759
  }, r), o), {}, {
759
760
  gfv: c,
760
761
  engineVersion: f,
@@ -764,7 +765,7 @@
764
765
  isDisabledCloseAndSaveButton: null !== (s = r.isDisabledCloseAndSaveButton) && void 0 !== s && s,
765
766
  resourceZone: l
766
767
  });
767
- K({
768
+ N({
768
769
  gfv: d.gfv,
769
770
  engineVersion: d.engineVersion,
770
771
  resourceZone: d.resourceZone,
@@ -772,8 +773,8 @@
772
773
  theme: d.theme
773
774
  }, function (o) {
774
775
  if (!o && t.g.CF.entryPoint[c]) {
775
- var n = W(f);
776
- Z(e, H(H({}, d), {}, {
776
+ var n = V(f);
777
+ R(e, T(T({}, d), {}, {
777
778
  templatesApi: r.templatesApi,
778
779
  renderForm: n
779
780
  }), i);
@@ -782,16 +783,16 @@
782
783
  }).catch(i);
783
784
  }
784
785
  }
785
- e = t.hmd(e), (O = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && O(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
786
- var $,
787
- X,
788
- Y = {
789
- start: z,
786
+ e = t.hmd(e), (C = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && C(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
787
+ var K,
788
+ Z,
789
+ W = {
790
+ start: q,
790
791
  entryPoint: {},
791
- partialRenderingForIE8: x("{partialRenderingForIE8}"),
792
+ partialRenderingForIE8: H("{partialRenderingForIE8}"),
792
793
  keformsUrl: "{keformsUrl}"
793
794
  };
794
- t.g.CF = Y, ($ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && ($.register(G, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(x, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(D, "url", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(R, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(N, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(V, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(q, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(function (e, r) {
795
+ t.g.CF = W, (K = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (K.register(F, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(H, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(M, "url", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(U, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(D, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(G, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(x, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(function (e, r) {
795
796
  try {
796
797
  var t,
797
798
  o,
@@ -813,7 +814,7 @@
813
814
  } catch (e) {
814
815
  return !1;
815
816
  }
816
- }, "isEngineVersionGreaterThanOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(K, "loadForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(Z, "renderForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(W, "getEngineEntryPoint", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(z, "start", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(Y, "CandyClientExports", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts")), (X = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && X(e);
817
+ }, "isEngineVersionGreaterThanOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(N, "loadForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(R, "renderForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(V, "getEngineEntryPoint", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(q, "start", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(W, "CandyClientExports", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts")), (Z = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && Z(e);
817
818
  },
818
819
  68: function (e, r, t) {
819
820
  var o;
@@ -1268,7 +1269,7 @@
1268
1269
  function LegacyPublicForm(e) {
1269
1270
  _classCallCheck(this, LegacyPublicForm), this.form = void 0, this.form = e;
1270
1271
  }
1271
- var _reloadInner, _validateChildrenByPath;
1272
+ var _reloadInner, _INTERNAL__getSelectFunctionForDisableEmployeeInSS, _validateChildrenByPath;
1272
1273
  return _createClass(LegacyPublicForm, [{
1273
1274
  key: "batchUpdate",
1274
1275
  value: function (e) {
@@ -1304,6 +1305,21 @@
1304
1305
  value: function () {
1305
1306
  throw new Error("Method not implemented.");
1306
1307
  }
1308
+ }, {
1309
+ key: "__INTERNAL__getSelectFunctionForDisableEmployeeInSS",
1310
+ value: (_INTERNAL__getSelectFunctionForDisableEmployeeInSS = _asyncToGenerator(_regeneratorRuntime().mark(function e(r) {
1311
+ return _regeneratorRuntime().wrap(function (e) {
1312
+ for (;;) switch (e.prev = e.next) {
1313
+ case 0:
1314
+ throw new Error("Method not implemented.");
1315
+ case 1:
1316
+ case "end":
1317
+ return e.stop();
1318
+ }
1319
+ }, e);
1320
+ })), function (e) {
1321
+ return _INTERNAL__getSelectFunctionForDisableEmployeeInSS.apply(this, arguments);
1322
+ })
1307
1323
  }, {
1308
1324
  key: "importEmployees",
1309
1325
  value: function (e, r) {
@@ -1494,11 +1510,6 @@
1494
1510
  value: function (e) {
1495
1511
  throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1496
1512
  }
1497
- }, {
1498
- key: "setAllCheckboxesFor113103",
1499
- value: function (e) {
1500
- return Promise.resolve(void 0);
1501
- }
1502
1513
  }, {
1503
1514
  key: "setAutoFieldsToAutoValue",
1504
1515
  value: function (e) {
@@ -1549,12 +1560,12 @@
1549
1560
  if ("object" !== n(e) || null === e) return e;
1550
1561
  var t = e[Symbol.toPrimitive];
1551
1562
  if (void 0 !== t) {
1552
- var o = t.call(e, r);
1563
+ var o = t.call(e, "string");
1553
1564
  if ("object" !== n(o)) return o;
1554
1565
  throw new TypeError("@@toPrimitive must return a primitive value.");
1555
1566
  }
1556
1567
  return String(e);
1557
- }(o.key, "string"), "symbol" === n(i) ? i : String(i)), o);
1568
+ }(o.key), "symbol" === n(i) ? i : String(i)), o);
1558
1569
  }
1559
1570
  var i;
1560
1571
  }
@@ -1639,4 +1650,4 @@
1639
1650
  };
1640
1651
  var __webpack_exports__ = __webpack_require__(133);
1641
1652
  })();
1642
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwidCIsImQiLCJyIiwibSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiTnVtYmVyIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJfY3JlYXRlU3VwZXIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2dldFByb3RvdHlwZU9mIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiTWFwIiwiX2lzTmF0aXZlRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJfY29uc3RydWN0IiwiYmluZCIsInB1c2giLCJGdW5jdGlvbiIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwidG9TdHJpbmciLCJpbmRleE9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsIm5qIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIl9fc2lnbmF0dXJlX18iLCJBcHBsaWNhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3N1cGVyIiwibmFtZSIsIl9fcmVhY3RzdGFuZGluX19yZWdlbmVyYXRlQnlFdmFsIiwiY29kZSIsImV2YWwiLCJFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yIiwiX3N1cGVyMiIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiX3N1cGVyMyIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yMyIsIl9zdXBlcjQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNCIsIl9zdXBlcjUiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsIl9zdXBlcjYiLCJyZWFjdEhvdExvYWRlciIsInUiLCJzIiwibCIsImMiLCJmIiwiZDEiLCJtZXNzYWdlIiwidHJpbSIsInNsaWNlIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJ0ZXN0IiwidG9Mb3dlckNhc2UiLCJwIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsInkiLCJtYXAiLCJmb3JFYWNoIiwiYXBwZW5kIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsImgiLCJvbmxvYWQiLCJyZXN1bHQiLCJvbmVycm9yIiwiZXJyb3IiLCJnIiwiRmlsZVJlYWRlciIsInJlYWRBc0FycmF5QnVmZmVyIiwiXyIsIlVpbnQ4QXJyYXkiLCJieXRlTGVuZ3RoIiwiYnVmZmVyIiwidiIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJEYXRhVmlldyIsIl9ib2R5QXJyYXlCdWZmZXIiLCJoZWFkZXJzIiwidHlwZSIsImJsb2IiLCJyZXNvbHZlIiwiYXJyYXlCdWZmZXIiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImZvcm1EYXRhIiwiRSIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwiYiIsInciLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJDIiwic3RhdHVzIiwib2siLCJzdGF0dXNUZXh0IiwiY2xvbmUiLCJrIiwicmVkaXJlY3QiLCJSYW5nZUVycm9yIiwibG9jYXRpb24iLCJQIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJBIiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJyZXNwb25zZVVSTCIsInJlc3BvbnNlIiwicmVzcG9uc2VUZXh0Iiwic2V0VGltZW91dCIsIm9udGltZW91dCIsIm9uYWJvcnQiLCJvcGVuIiwiaHJlZiIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIkhlYWRlcnMiLCJSZXF1ZXN0IiwiUmVzcG9uc2UiLCJPIiwiTCIsIlMiLCJCIiwiVCIsImoiLCJJIiwiRiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkgiLCJVIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJNIiwiRyIsIngiLCJEIiwiQ0YiLCJrZWZvcm1zVXJsIiwiUiIsImVuY29kZVVSSUNvbXBvbmVudCIsIk4iLCJSZWdFeHAiLCJob3N0IiwiViIsInNlYXJjaCIsImZpbmQiLCJyZXR1cm4iLCJmcm9tIiwicSIsIksiLCJnZnYiLCJlbmdpbmVWZXJzaW9uIiwicmVzb3VyY2VzVmVyc2lvbiIsImVudHJ5UG9pbnQiLCJyZXNvdXJjZVpvbmUiLCJzdHlsZVNoZWV0Iiwic2NyaXB0IiwiWiIsInB1YmxpY0Zvcm0iLCJjYXRjaCIsIlciLCJ6Iiwia29udHVyRG9tYWlucyIsImF1dGhvcml6ZWQiLCJhdXRoZW50aWNhdGlvbiIsImF1dGhTaWQiLCJBdXRob3JpemF0aW9uIiwiY2F1bGRyb25BcGlVcmwiLCJpc1Rlc3RTZXJ2ZXIiLCJyZW5kZXJDYWNoaW5nRm9ySUU4Iiwibm9ybWFsaXphdGlvbk9uU2VydmVyIiwibm9ybWF0aXZlVXJsIiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJ0aGVtZSIsInRlbXBsYXRlc0FwaSIsInJlbmRlckZvcm0iLCIkIiwiWCIsIlkiLCJzdGFydCIsInBhcnRpYWxSZW5kZXJpbmdGb3JJRTgiLCJwYXJzZUludCIsImNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0iLCJfQ29tbW9uX0Vycm9yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImFyZyIsIndyYXAiLCJfaW52b2tlIiwiX19hd2FpdCIsImRlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJyZXN1bHROYW1lIiwibmV4dExvYyIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibWFyayIsImF3cmFwIiwiQXN5bmNJdGVyYXRvciIsImFzeW5jIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwib3duS2V5cyIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJtb2RlbENoYW5nZUV2ZW50UGF0aCIsIm1hcENodW5rVmFsdWVzIiwicmVkdWNlQ2h1bmtWYWx1ZXMiLCJyZWR1Y2UiLCJMZWdhY3lQdWJsaWNGb3JtIiwiZm9ybSIsIl9yZWxvYWRJbm5lciIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCJ2YXIgZ2xvYmFsID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpXG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGdsb2JhbCxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGdsb2JhbCAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZ2xvYmFsICYmXG4gICAgJ0Jsb2InIGluIGdsb2JhbCAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZ2xvYmFsLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnbG9iYWxcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbFxuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGdsb2JhbC5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPyBnbG9iYWwubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXIgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykuaW5kZXhPZignYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnbG9iYWwuZmV0Y2gpIHtcbiAgZ2xvYmFsLmZldGNoID0gZmV0Y2hcbiAgZ2xvYmFsLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGdsb2JhbC5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnbG9iYWwuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcblxuaW1wb3J0IHsgRXJyb3JGaXJzdENhbGxiYWNrLCByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgeyBMb2FkSW50b0RvY3VtZW50IH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudFwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudCB9IGZyb20gXCIuLi9UeXBlcy9JS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9DbGllbnREcmFmdEluZm9SZXNwb25zZVwiO1xuaW1wb3J0IHsgZ2V0Q2xpZW50RHJhZnRJbmZvVXJsIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsXCI7XG5pbXBvcnQgeyBBVU9PcHRpb25zIH0gZnJvbSBcIi4uL1R5cGVzL0FVT09wdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0RXZlbnRzU3RhdGljIH0gZnJvbSBcIi4uLy4uL0NvbnRyb2xzL0ludGVybmFscy9MYXlvdXRFdmVudHMvTGF5b3V0RXZlbnRzXCI7XG5cbmltcG9ydCB7IGNsaWVudFNldHRpbmdzIH0gZnJvbSBcIi4vQ2xpZW50U2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi9MZWdhY3lQdWJsaWNGb3JtL0NyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm1cIjtcblxudHlwZSBGb3JtQ29udGFpbmVyID0gc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cbnR5cGUgRW5naW5lRW50cnlQb2ludCA9ICgpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtU2V0dGluZ3Mge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlbmRlckZvcm06IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQ7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xufVxuXG50eXBlIFN0YXJ0Rm9ybUZ1bmMgPSAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncykgPT4gUHJvbWlzZTxJRm9ybT47XG5cbmludGVyZmFjZSBDYW5keUdsb2JhbEluamVjdGVkVmFyIHtcbiAgICBzdGFydDogKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLCBjYWxsYmFjaz86IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4pID0+IHZvaWQ7XG4gICAga2Vmb3Jtc1VybD86IHN0cmluZztcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBib29sZWFuO1xuICAgIGVudHJ5UG9pbnQ6IHsgW2tleTogc3RyaW5nXTogU3RhcnRGb3JtRnVuYyB9O1xuICAgIGxvYWRFcnJvcj86IHVua25vd247XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICAgICAgaW50ZXJmYWNlIEdsb2JhbCB7XG4gICAgICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IFdpbmRvdztcblxuZnVuY3Rpb24gZGVmYXVsdENhbGxiYWNrKCk6IHZvaWQge1xuICAgIC8qIGVtcHR5ICovXG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gdXJsKHJlbGF0aXZlVXJsOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2xvYmFsLkNGLmtlZm9ybXNVcmwgfHwgXCJcIjtcblxuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3JlbGF0aXZlVXJsfWAucmVwbGFjZSgvKFteOl0pXFwvezIsfS9nLCBcIiQxL1wiKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogdW5kZWZpbmVkIHwgc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHBhcmFtVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBxdWVyeVBhcnRzLnB1c2goYCR7cGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnlQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCI/XCIgKyBxdWVyeVBhcnRzLmpvaW4oXCImXCIpO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWQoZG9tYWluczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oPzoke2RvbWFpbnMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiW2EtejAtOS0uXStcIil9KSRgKS50ZXN0KFxuICAgICAgICBnbG9iYWwubG9jYXRpb24uaG9zdFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICAgIChnbG9iYWwubG9jYXRpb24uc2VhcmNoXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXD98I3wmKS8sIFwiXCIpXG4gICAgICAgICAgICAuc3BsaXQoXCImXCIpXG4gICAgICAgICAgICAubWFwKHBhcmFtID0+IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikuc3BsaXQoXCI9XCIpLm1hcChkZWNvZGVVUklDb21wb25lbnQpKVxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnRyaXBsZS1lcXVhbHNcbiAgICAgICAgICAgIC5maW5kKChba2V5XSkgPT4ga2V5ID09IG5hbWUpIHx8IFtdKVsxXVxuICAgICk7XG59XG5cbnR5cGUgVGFzayA9IChjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpID0+IHZvaWQ7XG5cbmZ1bmN0aW9uIHJ1blBhcmFsbGVsKHRhc2tzOiBUYXNrW10sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBjb21wbGV0ZWQgPSAwO1xuXG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgdGFzayhlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0YXNrcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaW50ZXJmYWNlIFN0YXJ0Rm9ybVNldHRpbmcge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxlZnROdW1iZXJzID0gbGVmdFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgY29uc3QgcmlnaHROdW1iZXJzID0gcmlnaHRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAobGVmdE51bWJlcnNbMF0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzBdID8/IDApIHx8XG4gICAgICAgICAgICAoKGxlZnROdW1iZXJzWzBdID8/IDApID09PSAocmlnaHROdW1iZXJzWzBdID8/IDApICYmXG4gICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMV0gPz8gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxlZnROdW1iZXJzWzJdID8/IDApID49IChyaWdodE51bWJlcnNbMl0gPz8gMCkpKSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbG9hZEZvcm0oc2V0dGluZ3M6IFN0YXJ0Rm9ybVNldHRpbmcsIGNhbGxiYWNrOiAoZXJyb3I/OiBudWxsIHwgdW5kZWZpbmVkIHwgRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdmdiwgZW5naW5lVmVyc2lvbiwgcmVzb3VyY2VzVmVyc2lvbiB9ID0gc2V0dGluZ3M7XG5cbiAgICBpZiAoZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzTmVlZEVuZ2luZSA9IGVuZ2luZVZlcnNpb24gJiYgIWdsb2JhbFtlbmdpbmVWZXJzaW9uXTtcbiAgICBjb25zdCBub1N0eWxlc0ZvckdmdiA9IGZhbHNlOyAvLyBlbmdpbmVWZXJzaW9uICE9IHVuZGVmaW5lZCAmJiAoaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGVuZ2luZVZlcnNpb24sIFwiNC4yMTQuMFwiKSB8fCBlbmdpbmVWZXJzaW9uID09PSBcImxvY2FsXCIpO1xuICAgIGNvbnN0IG5lZWRMb2FkU3R5bGVzRm9yR2Z2ID0gIW5vU3R5bGVzRm9yR2Z2O1xuICAgIGNvbnN0IG1pbiA9IGdldFBhcmFtZXRlckJ5TmFtZShcImRlYnVnXCIpID09PSBcInRydWVcIiA/IFwiXCIgOiBcIi5taW5cIjtcbiAgICBjb25zdCB0YXNrczogVGFza1tdID0gW107XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHY6IHJlc291cmNlc1ZlcnNpb24sIHJlc291cmNlWm9uZTogc2V0dGluZ3MucmVzb3VyY2Vab25lIH07XG4gICAgaWYgKG5lZWRMb2FkU3R5bGVzRm9yR2Z2KSB7XG4gICAgICAgIHRhc2tzLnB1c2goY2IgPT5cbiAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzLyR7Z2Z2fSR7bWlufS5jc3NgLCBwYXJhbXMpKSwgdHJ1ZSwgY2IpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRhc2tzLnB1c2goY2IgPT4gTG9hZEludG9Eb2N1bWVudC5zY3JpcHQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtnZnZ9JHttaW59LmpzYCwgcGFyYW1zKSksIGNiKSk7XG5cbiAgICBpZiAoaXNOZWVkRW5naW5lKSB7XG4gICAgICAgIHRhc2tzLnB1c2goXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmNzc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5qc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBydW5QYXJhbGxlbCh0YXNrcywgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb3JtKFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncyxcbiAgICBjYWxsYmFjazogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPlxuKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUVudHJ5UG9pbnQgPVxuICAgICAgICBnbG9iYWwuQ0YuZW50cnlQb2ludFtleHRlbmRlZFNldHRpbmdzLmdmdl0gPz8gcmVqZWN0KGBGb3JtIGVudHJ5IHBvaW50ICR7ZXh0ZW5kZWRTZXR0aW5ncy5nZnZ9IG5vdCBmb3VuZC5gKTtcbiAgICBmb3JtRW50cnlQb2ludChwYWdlQ29udGVudCwgZXh0ZW5kZWRTZXR0aW5ncylcbiAgICAgICAgLnRoZW4oZm9ybSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNGb3JtID0gZm9ybS5wdWJsaWNGb3JtIHx8IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybSk7XG5cbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHB1YmxpY0Zvcm0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Rm9ybU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEFVT09wdGlvbnM+IHtcbiAgICBuczogc3RyaW5nO1xuICAgIGRyYWZ0SWQ6IHN0cmluZztcbiAgICBnZnY/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBmZWVkYmFja0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsZWFuRm9ybT86IGJvb2xlYW47XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIGF1dGhlbnRpY2F0aW9uPzogXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIiB8IHsgYXV0aFNpZDogc3RyaW5nIH07XG4gICAgZmV0Y2g/OiB0eXBlb2YgZmV0Y2g7XG4gICAgbW9kZWw/OiB7IFtwYXRoOiBzdHJpbmddOiB1bmtub3duIH07XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLi4uY2xpZW50RHJhZnRJbmZvLFxuICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbGVhbkZvcm06IG9wdGlvbnMuaXNEaXNhYmxlZENsZWFuRm9ybSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxvYWRGb3JtKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBleHRlbmRlZFNldHRpbmdzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5lbmdpbmVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlc1ZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAgcmVzb3VyY2VzVmVyc2lvbjogXCJ7cmVzb3VyY2VzVmVyc2lvbn1cIixcbiAgICBrb250dXJEb21haW5zOiBcIntrb250dXJEb21haW5zfVwiLFxufTtcbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0NsaWVudEluaXRPcHRpb25zLCBGaWFzQXBpIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuXG5pbXBvcnQgeyBJTGVnYWN5Rm9ybSB9IGZyb20gXCIuL0lMZWdhY3lGb3JtXCI7XG5cbmV4cG9ydCB0eXBlIE1vZGVsRXZlbnRQYXRoID1cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbENoYW5nZUV2ZW50UGF0aChwYXRoPzogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBNb2RlbEV2ZW50UGF0aCB7XG4gICAgaWYgKGZpZWxkTmFtZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aCwgZmllbGROYW1lXTtcbiAgICB9XG4gICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdO1xufVxuXG5mdW5jdGlvbiBtYXBDaHVua1ZhbHVlcyhjaHVuazogUmVhZG9ubHlNb2RlbENodW5rKTogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNodW5rKVxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gY2h1bmtbcGF0aF0gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNodW5rW3BhdGhdLCBcInZhbHVlXCIpKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2h1bmtbcGF0aF07XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IFtwYXRoXTogcmVzdWx0LnZhbHVlIH07XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VDaHVua1ZhbHVlcyhjaHVua3M6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgIHJldHVybiBjaHVua3MucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjaHVuaykgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIC4uLmNodW5rLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5jbGFzcyBMZWdhY3lQdWJsaWNGb3JtIGltcGxlbWVudHMgSVB1YmxpY0Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogSUxlZ2FjeUZvcm07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybTogSUxlZ2FjeUZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmF0Y2hVcGRhdGUodXBkYXRlUHJvYzogKHVwZGF0ZUFjY2Vzc29yOiBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bkNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IFBhcnRpYWw8U2VydmVyRXJyb3JMb2c+KTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNoaWxkcmVuQnlQYXRoKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhlbXBsb3llZXM6IEVtcGxveWVlW10sIG9wdGlvbnM/OiB7IHNjZW5hcmlvPzogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHByaW50VHlwZTogUHJpbnRUeXBlLCBib2R5Pzogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIHB1YmxpYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlHSWQoZ0lkOiBzdHJpbmcsIGZpbHRlcj86IERpZ2VzdFF1ZXJ5RmlsdGVyKTogUHJvbWlzZTxQaWNrbGlzdFF1ZXJ5UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5waWNrbGlzdHNQcm92aWRlci5nZXREaWdlc3RBcGlQaWNrbGlzdChnSWQpLnF1ZXJ5KGZpbHRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYoW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2UocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGxpc3RlbmVyOiB1bmtub3duKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtLm9uTW9kZWxDaGFuZ2UoKSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtLmNoYW5nZVNldC5zdG9wQXV0b3NlbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS51bm1vdW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udW5tb3VudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3VyU3RlcHMoKTogU3RlcFtdIHtcbiAgICAgICAgLy8gRm9yIG9sZCBrZXdlYlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlINCt0YLQviDQsiDRgdGC0LDRgNGL0YUg0LTQstC40LbQutCw0YUg0YLRg9GCINGC0LDQutC+0Lkg0LLRi9C30L7QslxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZGF0b3IudmFsaWRhdGVBbGwoa2V5cyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRBZGRpdGlvbmFsRW1wbG95ZWVJbmZvKGZpbHRlcnM6IEdldEVtcGxveWVlTGlzdFJlcXVlc3QpOiBQcm9taXNlPEVtcGxveWVlTGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZElubmVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdvcmtpbmdFdmVudHNGb3JFbXBsb3llZShmaWx0ZXJzOiBHZXRXb3JraW5nRXZlbnRMaXN0UmVxdWVzdCk6IFByb21pc2U8V29ya2luZ0V2ZW50TGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHRoaXMuZm9ybS5tb2RlbC5nZXQodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpO1xuICAgICAgICByZXR1cm4gZXJyb3JDb3VudCAhPSB1bmRlZmluZWQgJiYgZXJyb3JDb3VudCA+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24obW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9KTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcsIHZhbHVlOiBNb2RlbFZhbHVlKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChcbiAgICAgICAgcGF0aE9yTW9kZWxDaHVuazogc3RyaW5nIHwgeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0sXG4gICAgICAgIHZhbHVlPzogTW9kZWxWYWx1ZVxuICAgICk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGF0aE9yTW9kZWxDaHVuayAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgIT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShwYXRoT3JNb2RlbENodW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2h1bmsgPSBPYmplY3Qua2V5cyhwYXRoT3JNb2RlbENodW5rKS5yZWR1Y2U8UmVhZG9ubHlNb2RlbENodW5rPihcbiAgICAgICAgICAgICAgICAocmVzdWx0LCBwYXRoKSA9PiAoeyBbcGF0aF06IHsgdmFsdWU6IHBhdGhPck1vZGVsQ2h1bmtbcGF0aF0gfSwgLi4ucmVzdWx0IH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuZmlsbChpbm5lckNodW5rKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLnNldChwYXRoT3JNb2RlbENodW5rLCBcInZhbHVlXCIsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uc2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBvYmplY3Qgd2l0aCBwYXRoLXZhbHVlIHBhaXJzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQocGF0aE9yQXJyYXk6IHN0cmluZyB8IHN0cmluZ1tdKTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF0aE9yQXJyYXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMoXG4gICAgICAgICAgICAgICAgcGF0aE9yQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwYXRoID0+IG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoKSkpXG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZTxBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+PigocmVzdWx0LCBhcnJheSkgPT4gcmVzdWx0LmNvbmNhdChhcnJheSksIFtdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yQXJyYXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aE9yQXJyYXkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aE9yQXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5nZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIGFycmF5IG9mIHBhdGhzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZShwYXRoOiBzdHJpbmcpOiBNb2RlbFZhbHVlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ubW9kZWwuZ2V0KHBhdGgsIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlTdWJ0cmVlKFxuICAgICAgICBzb3VyY2VCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICB0YXJnZXRCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICBkb05vdENvcHlQYXRocz86IHN0cmluZ1tdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEluc3RhbmNlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaWxkcmVuKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXVpZEdlbmVyYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dNb2RhbChvcHRpb25zOiBNb2RhbE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU2VjdGlvbihvcHRpb25zOiBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsbEluaXRTZWN0aW9uKG9wdGlvbnM6IENhbGxJbml0U2VjdGlvbkxpZ2h0Ym94UHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmlhc0FwaUNsaWVudChvcHRpb25zOiBGaWFzQ2xpZW50SW5pdE9wdGlvbnMpOiBGaWFzQXBpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkVtcGxveWVlRWRpdG9yKGVtcGxveWVlSWQ6IHN0cmluZykge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZShwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzKHBhdGg6IHN0cmluZywgaW5zdGFuY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c09uQ29udHJvbElmRXhpc3QocGF0aDogQmluZGluZ1BhdGgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyhlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0b0ZpZWxkc1RvQXV0b1ZhbHVlKHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnN1cmVJbnN0YW5jZUZ1bGx5TG9hZGVkKFxuICAgICAgICBiaW5kaW5nUGF0aDogc3RyaW5nIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgLi4uaW5zdGFuY2VzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3VzdG9tTm9ybWFsaXplKG5vcm1hbGl6ZXJJZDogc3RyaW5nLCBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXNCeVJ1bGVzKHJ1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9DQyxDQUFBO1FBQTlCLFNB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
1653
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwidCIsImQiLCJyIiwibSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiTnVtYmVyIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJfY3JlYXRlU3VwZXIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2dldFByb3RvdHlwZU9mIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiTWFwIiwiX2lzTmF0aXZlRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJfY29uc3RydWN0IiwiYmluZCIsInB1c2giLCJGdW5jdGlvbiIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwidG9TdHJpbmciLCJpbmRleE9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsIm5qIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIl9fc2lnbmF0dXJlX18iLCJBcHBsaWNhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3N1cGVyIiwibmFtZSIsIl9fcmVhY3RzdGFuZGluX19yZWdlbmVyYXRlQnlFdmFsIiwiY29kZSIsImV2YWwiLCJFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yIiwiX3N1cGVyMiIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiX3N1cGVyMyIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yMyIsIl9zdXBlcjQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNCIsIl9zdXBlcjUiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsIl9zdXBlcjYiLCJyZWFjdEhvdExvYWRlciIsInUiLCJzIiwibCIsImMiLCJmIiwiZDEiLCJtZXNzYWdlIiwidHJpbSIsInNsaWNlIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiYm9keVVzZWQiLCJQcm9taXNlIiwicmVqZWN0Iiwib25sb2FkIiwicmVzdWx0Iiwib25lcnJvciIsImVycm9yIiwicCIsIkZpbGVSZWFkZXIiLCJyZWFkQXNBcnJheUJ1ZmZlciIsInkiLCJVaW50OEFycmF5IiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJEYXRhVmlldyIsIl9ib2R5QXJyYXlCdWZmZXIiLCJoZWFkZXJzIiwidHlwZSIsInJlc29sdmUiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsIl8iLCJqc29uIiwiSlNPTiIsInBhcnNlIiwiZGVsZXRlIiwiaGFzT3duUHJvcGVydHkiLCJrZXlzIiwidmFsdWVzIiwiZW50cmllcyIsImgiLCJnIiwiYm9keSIsInVybCIsImNyZWRlbnRpYWxzIiwibWV0aG9kIiwibW9kZSIsInNpZ25hbCIsInRvVXBwZXJDYXNlIiwicmVmZXJyZXIiLCJjYWNoZSIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsInNwbGl0IiwiZGVjb2RlVVJJQ29tcG9uZW50IiwidiIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwidyIsIkRPTUV4Y2VwdGlvbiIsInN0YWNrIiwiRSIsImFib3J0ZWQiLCJYTUxIdHRwUmVxdWVzdCIsImFib3J0IiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwic3Vic3RyIiwicmVzcG9uc2VVUkwiLCJyZXNwb25zZSIsInJlc3BvbnNlVGV4dCIsInNldFRpbWVvdXQiLCJvbnRpbWVvdXQiLCJvbmFib3J0Iiwib3BlbiIsImhyZWYiLCJ3aXRoQ3JlZGVudGlhbHMiLCJyZXNwb25zZVR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2VuZCIsInBvbHlmaWxsIiwiZmV0Y2giLCJIZWFkZXJzIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiQyIsImsiLCJQIiwiQSIsIk8iLCJMIiwiUyIsIkIiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJUIiwiaiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiSSIsIkYiLCJIIiwiTSIsIkNGIiwia2Vmb3Jtc1VybCIsIlUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJEIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJOIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwicmVzb3VyY2Vab25lIiwic3R5bGVTaGVldCIsInNjcmlwdCIsIlIiLCJwdWJsaWNGb3JtIiwiY2F0Y2giLCJWIiwicSIsIloiLCJrb250dXJEb21haW5zIiwiYXV0aG9yaXplZCIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsIkF1dGhvcml6YXRpb24iLCJjYXVsZHJvbkFwaVVybCIsImlzVGVzdFNlcnZlciIsInJlbmRlckNhY2hpbmdGb3JJRTgiLCJub3JtYWxpemF0aW9uT25TZXJ2ZXIiLCJub3JtYXRpdmVVcmwiLCJmZWVkYmFja0VuYWJsZWQiLCJpc0Rpc2FibGVkQ2xlYW5Gb3JtIiwiaXNEaXNhYmxlZENsb3NlQnV0dG9uIiwiaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiIsInRoZW1lIiwidGVtcGxhdGVzQXBpIiwicmVuZGVyRm9ybSIsIksiLCJXIiwic3RhcnQiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwicGFyc2VJbnQiLCJjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIiwiX0NvbW1vbl9FcnJvcnNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJhcmciLCJ3cmFwIiwiX2ludm9rZSIsIl9fYXdhaXQiLCJkZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIm93bktleXMiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJtYXBDaHVua1ZhbHVlcyIsInJlZHVjZUNodW5rVmFsdWVzIiwicmVkdWNlIiwiTGVnYWN5UHVibGljRm9ybSIsImZvcm0iLCJfcmVsb2FkSW5uZXIiLCJfSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCJ2YXIgZ2xvYmFsID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpXG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGdsb2JhbCxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGdsb2JhbCAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZ2xvYmFsICYmXG4gICAgJ0Jsb2InIGluIGdsb2JhbCAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZ2xvYmFsLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnbG9iYWxcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbFxuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGdsb2JhbC5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPyBnbG9iYWwubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXIgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykuaW5kZXhPZignYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnbG9iYWwuZmV0Y2gpIHtcbiAgZ2xvYmFsLmZldGNoID0gZmV0Y2hcbiAgZ2xvYmFsLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGdsb2JhbC5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnbG9iYWwuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcbmltcG9ydCB7IEFsbEljb25OYW1lcyB9IGZyb20gXCJyZWFjdC11aVwiO1xuXG5pbXBvcnQgeyBFcnJvckZpcnN0Q2FsbGJhY2ssIHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB7IExvYWRJbnRvRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9Mb2FkSW50b0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50IH0gZnJvbSBcIi4uL1R5cGVzL0lLZVdlYlRlbXBsYXRlc0FwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnREcmFmdEluZm9SZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0NsaWVudERyYWZ0SW5mb1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBnZXRDbGllbnREcmFmdEluZm9VcmwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmxcIjtcbmltcG9ydCB7IEFVT09wdGlvbnMgfSBmcm9tIFwiLi4vVHlwZXMvQVVPT3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRFdmVudHNTdGF0aWMgfSBmcm9tIFwiLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL0xheW91dEV2ZW50cy9MYXlvdXRFdmVudHNcIjtcblxuaW1wb3J0IHsgY2xpZW50U2V0dGluZ3MgfSBmcm9tIFwiLi9DbGllbnRTZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlTGVnYWN5UHVibGljRm9ybSB9IGZyb20gXCIuL0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybVwiO1xuXG50eXBlIEZvcm1Db250YWluZXIgPSBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxudHlwZSBFbmdpbmVFbnRyeVBvaW50ID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25EZXNjcmlwdGlvbiB7XG4gICAgaWNvbjogQWxsSWNvbk5hbWVzO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgICBoaW50PzogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGlkPzogc3RyaW5nO1xuICAgIHdlaWdodDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVuZGVyRm9ybVNldHRpbmdzIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBlbmdpbmVWZXJzaW9uPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZW5kZXJGb3JtOiB1bmRlZmluZWQgfCBFbmdpbmVFbnRyeVBvaW50O1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xufVxuXG50eXBlIFN0YXJ0Rm9ybUZ1bmMgPSAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncykgPT4gUHJvbWlzZTxJRm9ybT47XG5cbmludGVyZmFjZSBDYW5keUdsb2JhbEluamVjdGVkVmFyIHtcbiAgICBzdGFydDogKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLCBjYWxsYmFjaz86IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4pID0+IHZvaWQ7XG4gICAga2Vmb3Jtc1VybD86IHN0cmluZztcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBib29sZWFuO1xuICAgIGVudHJ5UG9pbnQ6IHsgW2tleTogc3RyaW5nXTogU3RhcnRGb3JtRnVuYyB9O1xuICAgIGxvYWRFcnJvcj86IHVua25vd247XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICAgICAgaW50ZXJmYWNlIEdsb2JhbCB7XG4gICAgICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IFdpbmRvdztcblxuZnVuY3Rpb24gZGVmYXVsdENhbGxiYWNrKCk6IHZvaWQge1xuICAgIC8qIGVtcHR5ICovXG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gdXJsKHJlbGF0aXZlVXJsOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2xvYmFsLkNGLmtlZm9ybXNVcmwgfHwgXCJcIjtcblxuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3JlbGF0aXZlVXJsfWAucmVwbGFjZSgvKFteOl0pXFwvezIsfS9nLCBcIiQxL1wiKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogdW5kZWZpbmVkIHwgc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHBhcmFtVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBxdWVyeVBhcnRzLnB1c2goYCR7cGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnlQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCI/XCIgKyBxdWVyeVBhcnRzLmpvaW4oXCImXCIpO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWQoZG9tYWluczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oPzoke2RvbWFpbnMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiW2EtejAtOS0uX10rXCIpfSkkYCkudGVzdChcbiAgICAgICAgZ2xvYmFsLmxvY2F0aW9uLmhvc3RcbiAgICApO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJhbWV0ZXJCeU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoZ2xvYmFsLmxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoL14oXFw/fCN8JikvLCBcIlwiKVxuICAgICAgICAgICAgLnNwbGl0KFwiJlwiKVxuICAgICAgICAgICAgLm1hcChwYXJhbSA9PiBwYXJhbS5yZXBsYWNlKC9cXCsvZywgXCIgXCIpLnNwbGl0KFwiPVwiKS5tYXAoZGVjb2RlVVJJQ29tcG9uZW50KSlcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp0cmlwbGUtZXF1YWxzXG4gICAgICAgICAgICAuZmluZCgoW2tleV0pID0+IGtleSA9PSBuYW1lKSB8fCBbXSlbMV1cbiAgICApO1xufVxuXG50eXBlIFRhc2sgPSAoY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiBydW5QYXJhbGxlbCh0YXNrczogVGFza1tdLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgY29tcGxldGVkID0gMDtcblxuICAgIHRhc2tzLmZvckVhY2godGFzayA9PiB7XG4gICAgICAgIHRhc2soZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gdGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkID0gdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbXBsZXRlZCArPSAxO1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA9PT0gdGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmludGVyZmFjZSBTdGFydEZvcm1TZXR0aW5nIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBlbmdpbmVWZXJzaW9uPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBsZWZ0TnVtYmVycyA9IGxlZnRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0TnVtYmVycyA9IHJpZ2h0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGxlZnROdW1iZXJzWzBdID8/IDApID4gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSB8fFxuICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1swXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzFdID8/IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMV0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0TnVtYmVyc1syXSA/PyAwKSA+PSAocmlnaHROdW1iZXJzWzJdID8/IDApKSkpXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvYWRGb3JtKHNldHRpbmdzOiBTdGFydEZvcm1TZXR0aW5nLCBjYWxsYmFjazogKGVycm9yPzogbnVsbCB8IHVuZGVmaW5lZCB8IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgeyBnZnYsIGVuZ2luZVZlcnNpb24sIHJlc291cmNlc1ZlcnNpb24gfSA9IHNldHRpbmdzO1xuXG4gICAgaWYgKGdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc05lZWRFbmdpbmUgPSBlbmdpbmVWZXJzaW9uICYmICFnbG9iYWxbZW5naW5lVmVyc2lvbl07XG4gICAgY29uc3Qgbm9TdHlsZXNGb3JHZnYgPSBmYWxzZTsgLy8gZW5naW5lVmVyc2lvbiAhPSB1bmRlZmluZWQgJiYgKGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChlbmdpbmVWZXJzaW9uLCBcIjQuMjE0LjBcIikgfHwgZW5naW5lVmVyc2lvbiA9PT0gXCJsb2NhbFwiKTtcbiAgICBjb25zdCBuZWVkTG9hZFN0eWxlc0ZvckdmdiA9ICFub1N0eWxlc0ZvckdmdjtcbiAgICBjb25zdCBtaW4gPSBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJkZWJ1Z1wiKSA9PT0gXCJ0cnVlXCIgPyBcIlwiIDogXCIubWluXCI7XG4gICAgY29uc3QgdGFza3M6IFRhc2tbXSA9IFtdO1xuXG4gICAgY29uc3QgcGFyYW1zID0geyB2OiByZXNvdXJjZXNWZXJzaW9uLCByZXNvdXJjZVpvbmU6IHNldHRpbmdzLnJlc291cmNlWm9uZSB9O1xuICAgIGlmIChuZWVkTG9hZFN0eWxlc0Zvckdmdikge1xuICAgICAgICB0YXNrcy5wdXNoKGNiID0+XG4gICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2dmdn0ke21pbn0uY3NzYCwgcGFyYW1zKSksIHRydWUsIGNiKVxuICAgICAgICApO1xuICAgIH1cbiAgICB0YXNrcy5wdXNoKGNiID0+IExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7Z2Z2fSR7bWlufS5qc2AsIHBhcmFtcykpLCBjYikpO1xuXG4gICAgaWYgKGlzTmVlZEVuZ2luZSkge1xuICAgICAgICB0YXNrcy5wdXNoKFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5jc3NgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zY3JpcHQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uanNgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcnVuUGFyYWxsZWwodGFza3MsIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRm9ybShcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT5cbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1FbnRyeVBvaW50ID1cbiAgICAgICAgZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZXh0ZW5kZWRTZXR0aW5ncy5nZnZdID8/IHJlamVjdChgRm9ybSBlbnRyeSBwb2ludCAke2V4dGVuZGVkU2V0dGluZ3MuZ2Z2fSBub3QgZm91bmQuYCk7XG4gICAgZm9ybUVudHJ5UG9pbnQocGFnZUNvbnRlbnQsIGV4dGVuZGVkU2V0dGluZ3MpXG4gICAgICAgIC50aGVuKGZvcm0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcHVibGljRm9ybSA9IGZvcm0ucHVibGljRm9ybSB8fCBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm0pO1xuXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBwdWJsaWNGb3JtKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydEZvcm1PcHRpb25zIGV4dGVuZHMgUGFydGlhbDxBVU9PcHRpb25zPiB7XG4gICAgbnM6IHN0cmluZztcbiAgICBkcmFmdElkOiBzdHJpbmc7XG4gICAgZ2Z2Pzogc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgZmVlZGJhY2tFbmFibGVkPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbGVhbkZvcm0/OiBib29sZWFuO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICBhdXRoZW50aWNhdGlvbj86IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIgfCB7IGF1dGhTaWQ6IHN0cmluZyB9O1xuICAgIGZldGNoPzogdHlwZW9mIGZldGNoO1xuICAgIG1vZGVsPzogeyBbcGF0aDogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIHBhbmVsQWN0aW9ucz86IEFjdGlvbkRlc2NyaXB0aW9uW107XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLi4uY2xpZW50RHJhZnRJbmZvLFxuICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbGVhbkZvcm06IG9wdGlvbnMuaXNEaXNhYmxlZENsZWFuRm9ybSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxvYWRGb3JtKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBleHRlbmRlZFNldHRpbmdzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5lbmdpbmVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlc1ZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAgcmVzb3VyY2VzVmVyc2lvbjogXCJ7cmVzb3VyY2VzVmVyc2lvbn1cIixcbiAgICBrb250dXJEb21haW5zOiBcIntrb250dXJEb21haW5zfVwiLFxufTtcbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0NsaWVudEluaXRPcHRpb25zLCBGaWFzQXBpIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuXG5pbXBvcnQgeyBJTGVnYWN5Rm9ybSB9IGZyb20gXCIuL0lMZWdhY3lGb3JtXCI7XG5cbmV4cG9ydCB0eXBlIE1vZGVsRXZlbnRQYXRoID1cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbENoYW5nZUV2ZW50UGF0aChwYXRoPzogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBNb2RlbEV2ZW50UGF0aCB7XG4gICAgaWYgKGZpZWxkTmFtZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aCwgZmllbGROYW1lXTtcbiAgICB9XG4gICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdO1xufVxuXG5mdW5jdGlvbiBtYXBDaHVua1ZhbHVlcyhjaHVuazogUmVhZG9ubHlNb2RlbENodW5rKTogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNodW5rKVxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gY2h1bmtbcGF0aF0gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNodW5rW3BhdGhdLCBcInZhbHVlXCIpKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2h1bmtbcGF0aF07XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IFtwYXRoXTogcmVzdWx0LnZhbHVlIH07XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VDaHVua1ZhbHVlcyhjaHVua3M6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgIHJldHVybiBjaHVua3MucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjaHVuaykgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIC4uLmNodW5rLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5jbGFzcyBMZWdhY3lQdWJsaWNGb3JtIGltcGxlbWVudHMgSVB1YmxpY0Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogSUxlZ2FjeUZvcm07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybTogSUxlZ2FjeUZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmF0Y2hVcGRhdGUodXBkYXRlUHJvYzogKHVwZGF0ZUFjY2Vzc29yOiBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bkNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IFBhcnRpYWw8U2VydmVyRXJyb3JMb2c+KTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNoaWxkcmVuQnlQYXRoKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9fSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyhcbiAgICAgICAgcGF0aFNwZWM6IHN0cmluZ1xuICAgICk6IFByb21pc2U8KGVtcGxveWVlOiBFbXBsb3llZSkgPT4gYm9vbGVhbj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhlbXBsb3llZXM6IEVtcGxveWVlW10sIG9wdGlvbnM/OiB7IHNjZW5hcmlvPzogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHByaW50VHlwZTogUHJpbnRUeXBlLCBib2R5Pzogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIHB1YmxpYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlHSWQoZ0lkOiBzdHJpbmcsIGZpbHRlcj86IERpZ2VzdFF1ZXJ5RmlsdGVyKTogUHJvbWlzZTxQaWNrbGlzdFF1ZXJ5UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5waWNrbGlzdHNQcm92aWRlci5nZXREaWdlc3RBcGlQaWNrbGlzdChnSWQpLnF1ZXJ5KGZpbHRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYoW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2UocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGxpc3RlbmVyOiB1bmtub3duKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtLm9uTW9kZWxDaGFuZ2UoKSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtLmNoYW5nZVNldC5zdG9wQXV0b3NlbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS51bm1vdW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udW5tb3VudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3VyU3RlcHMoKTogU3RlcFtdIHtcbiAgICAgICAgLy8gRm9yIG9sZCBrZXdlYlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlINCt0YLQviDQsiDRgdGC0LDRgNGL0YUg0LTQstC40LbQutCw0YUg0YLRg9GCINGC0LDQutC+0Lkg0LLRi9C30L7QslxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZGF0b3IudmFsaWRhdGVBbGwoa2V5cyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRBZGRpdGlvbmFsRW1wbG95ZWVJbmZvKGZpbHRlcnM6IEdldEVtcGxveWVlTGlzdFJlcXVlc3QpOiBQcm9taXNlPEVtcGxveWVlTGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZElubmVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdvcmtpbmdFdmVudHNGb3JFbXBsb3llZShmaWx0ZXJzOiBHZXRXb3JraW5nRXZlbnRMaXN0UmVxdWVzdCk6IFByb21pc2U8V29ya2luZ0V2ZW50TGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHRoaXMuZm9ybS5tb2RlbC5nZXQodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpO1xuICAgICAgICByZXR1cm4gZXJyb3JDb3VudCAhPSB1bmRlZmluZWQgJiYgZXJyb3JDb3VudCA+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24obW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9KTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcsIHZhbHVlOiBNb2RlbFZhbHVlKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChcbiAgICAgICAgcGF0aE9yTW9kZWxDaHVuazogc3RyaW5nIHwgeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0sXG4gICAgICAgIHZhbHVlPzogTW9kZWxWYWx1ZVxuICAgICk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGF0aE9yTW9kZWxDaHVuayAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgIT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShwYXRoT3JNb2RlbENodW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2h1bmsgPSBPYmplY3Qua2V5cyhwYXRoT3JNb2RlbENodW5rKS5yZWR1Y2U8UmVhZG9ubHlNb2RlbENodW5rPihcbiAgICAgICAgICAgICAgICAocmVzdWx0LCBwYXRoKSA9PiAoeyBbcGF0aF06IHsgdmFsdWU6IHBhdGhPck1vZGVsQ2h1bmtbcGF0aF0gfSwgLi4ucmVzdWx0IH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuZmlsbChpbm5lckNodW5rKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLnNldChwYXRoT3JNb2RlbENodW5rLCBcInZhbHVlXCIsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uc2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBvYmplY3Qgd2l0aCBwYXRoLXZhbHVlIHBhaXJzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQocGF0aE9yQXJyYXk6IHN0cmluZyB8IHN0cmluZ1tdKTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF0aE9yQXJyYXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMoXG4gICAgICAgICAgICAgICAgcGF0aE9yQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwYXRoID0+IG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoKSkpXG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZTxBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+PigocmVzdWx0LCBhcnJheSkgPT4gcmVzdWx0LmNvbmNhdChhcnJheSksIFtdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yQXJyYXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aE9yQXJyYXkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aE9yQXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5nZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIGFycmF5IG9mIHBhdGhzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZShwYXRoOiBzdHJpbmcpOiBNb2RlbFZhbHVlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ubW9kZWwuZ2V0KHBhdGgsIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlTdWJ0cmVlKFxuICAgICAgICBzb3VyY2VCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICB0YXJnZXRCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICBkb05vdENvcHlQYXRocz86IHN0cmluZ1tdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEluc3RhbmNlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaWxkcmVuKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXVpZEdlbmVyYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dNb2RhbChvcHRpb25zOiBNb2RhbE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU2VjdGlvbihvcHRpb25zOiBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsbEluaXRTZWN0aW9uKG9wdGlvbnM6IENhbGxJbml0U2VjdGlvbkxpZ2h0Ym94UHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmlhc0FwaUNsaWVudChvcHRpb25zOiBGaWFzQ2xpZW50SW5pdE9wdGlvbnMpOiBGaWFzQXBpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkVtcGxveWVlRWRpdG9yKGVtcGxveWVlSWQ6IHN0cmluZykge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZShwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzKHBhdGg6IHN0cmluZywgaW5zdGFuY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c09uQ29udHJvbElmRXhpc3QocGF0aDogQmluZGluZ1BhdGgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0b0ZpZWxkc1RvQXV0b1ZhbHVlKHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnN1cmVJbnN0YW5jZUZ1bGx5TG9hZGVkKFxuICAgICAgICBiaW5kaW5nUGF0aDogc3RyaW5nIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgLi4uaW5zdGFuY2VzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3VzdG9tTm9ybWFsaXplKG5vcm1hbGl6ZXJJZDogc3RyaW5nLCBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXNCeVJ1bGVzKHJ1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9DQyxDQUFBO1FBQTlCLFNBQVNDLEVBQXNCQyxDQUFBO1VBR2xDLE9BQU8sU0FBUEMsTUFBQSxDQUFnQkQsQ0FBQSxDQUFRRSxFQUFBLEVBQUUsWUFBQUQsTUFBQSxDQUFXRCxDQUFBLENBQVFHLE9BQUEsRUFBTyxxQkFDeEQ7UUFBQTtRQUFBQyxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBQyxDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBUixDQUFBO1VBQUE7UUFBQSxJQUFBQyxDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFTLENBQUEseUJBQUFDLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsY0FBQUYsQ0FBQSxDQUFBVCxDQUFBLHlCQUFBVSxvQkFBQSxJQUFBQSxvQkFBQSxDQUFBRSxPQUFBLENBQUFDLFNBQUEsR0FBQ2hCLENBQUEseUJBQUFhLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsY0FBQWYsQ0FBQSxDQUFBaUIs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