@kintone/rest-api-client 2.0.34 → 2.0.37

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 (42) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/esm/error/KintoneAllRecordsError.js.map +1 -1
  3. package/esm/error/KintoneRestAPIError.js.map +1 -1
  4. package/esm/platform/UnsupportedPlatformError.js.map +1 -1
  5. package/esm/platform/browser.js +1 -0
  6. package/esm/platform/browser.js.map +1 -1
  7. package/esm/platform/index.js +25 -9
  8. package/esm/platform/index.js.map +1 -1
  9. package/lib/KintoneFields/types/layout.js +5 -1
  10. package/lib/KintoneFields/types/layout.js.map +1 -1
  11. package/lib/__tests__/KintoneRequestConfigBuilder.test.js +5 -1
  12. package/lib/__tests__/KintoneRequestConfigBuilder.test.js.map +1 -1
  13. package/lib/__tests__/KintoneRestAPIClient.test.js +5 -1
  14. package/lib/__tests__/KintoneRestAPIClient.test.js.map +1 -1
  15. package/lib/__tests__/index.browser.test.js +5 -1
  16. package/lib/__tests__/index.browser.test.js.map +1 -1
  17. package/lib/__tests__/index.test.js +5 -1
  18. package/lib/__tests__/index.test.js.map +1 -1
  19. package/lib/__tests__/setup.js +5 -1
  20. package/lib/__tests__/setup.js.map +1 -1
  21. package/lib/client/__tests__/File.test.js +5 -1
  22. package/lib/client/__tests__/File.test.js.map +1 -1
  23. package/lib/client/types/app/index.js +5 -1
  24. package/lib/client/types/app/index.js.map +1 -1
  25. package/lib/client/types/index.js +5 -1
  26. package/lib/client/types/index.js.map +1 -1
  27. package/lib/error/KintoneAllRecordsError.js.map +1 -1
  28. package/lib/error/KintoneRestAPIError.js.map +1 -1
  29. package/lib/error/index.js +5 -1
  30. package/lib/error/index.js.map +1 -1
  31. package/lib/index.browser.js +5 -1
  32. package/lib/index.browser.js.map +1 -1
  33. package/lib/index.js +5 -1
  34. package/lib/index.js.map +1 -1
  35. package/lib/platform/UnsupportedPlatformError.js.map +1 -1
  36. package/lib/platform/browser.js +1 -0
  37. package/lib/platform/browser.js.map +1 -1
  38. package/lib/platform/index.js +25 -9
  39. package/lib/platform/index.js.map +1 -1
  40. package/package.json +7 -7
  41. package/umd/KintoneRestAPIClient.js +125 -98
  42. package/umd/KintoneRestAPIClient.min.js +1 -1
@@ -31,14 +31,37 @@
31
31
  }
32
32
  };
33
33
  var injectPlatformDeps = function injectPlatformDeps(deps) {
34
- platformDeps.readFileFromPath = deps.readFileFromPath;
35
- platformDeps.getRequestToken = deps.getRequestToken;
36
- platformDeps.getDefaultAuth = deps.getDefaultAuth;
37
- platformDeps.buildPlatformDependentConfig = deps.buildPlatformDependentConfig;
38
- platformDeps.buildHeaders = deps.buildHeaders;
39
- platformDeps.buildFormDataValue = deps.buildFormDataValue;
40
- platformDeps.buildBaseUrl = deps.buildBaseUrl;
41
- platformDeps.getVersion = deps.getVersion;
34
+ if (deps.readFileFromPath) {
35
+ platformDeps.readFileFromPath = deps.readFileFromPath;
36
+ }
37
+
38
+ if (deps.getRequestToken) {
39
+ platformDeps.getRequestToken = deps.getRequestToken;
40
+ }
41
+
42
+ if (deps.getDefaultAuth) {
43
+ platformDeps.getDefaultAuth = deps.getDefaultAuth;
44
+ }
45
+
46
+ if (deps.buildPlatformDependentConfig) {
47
+ platformDeps.buildPlatformDependentConfig = deps.buildPlatformDependentConfig;
48
+ }
49
+
50
+ if (deps.buildHeaders) {
51
+ platformDeps.buildHeaders = deps.buildHeaders;
52
+ }
53
+
54
+ if (deps.buildFormDataValue) {
55
+ platformDeps.buildFormDataValue = deps.buildFormDataValue;
56
+ }
57
+
58
+ if (deps.buildBaseUrl) {
59
+ platformDeps.buildBaseUrl = deps.buildBaseUrl;
60
+ }
61
+
62
+ if (deps.getVersion) {
63
+ platformDeps.getVersion = deps.getVersion;
64
+ }
42
65
  };
43
66
 
44
67
  function ownKeys$2(object, enumerableOnly) {
@@ -663,10 +686,10 @@
663
686
  (shared$4.exports = function (key, value) {
664
687
  return store$2[key] || (store$2[key] = value !== undefined ? value : {});
665
688
  })('versions', []).push({
666
- version: '3.21.0',
689
+ version: '3.21.1',
667
690
  mode: 'global',
668
691
  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
669
- license: 'https://github.com/zloirock/core-js/blob/v3.21.0/LICENSE',
692
+ license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',
670
693
  source: 'https://github.com/zloirock/core-js'
671
694
  });
672
695
 
@@ -2406,7 +2429,8 @@
2406
2429
  var buildBaseUrl = function buildBaseUrl(baseUrl) {
2407
2430
  if (baseUrl) {
2408
2431
  return baseUrl;
2409
- }
2432
+ } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2433
+
2410
2434
 
2411
2435
  var _ref2 = location,
2412
2436
  host = _ref2.host,
@@ -2414,7 +2438,7 @@
2414
2438
  return "".concat(protocol, "//").concat(host);
2415
2439
  };
2416
2440
  var getVersion = function getVersion() {
2417
- return "2.0.34";
2441
+ return "2.0.37";
2418
2442
  };
2419
2443
 
2420
2444
  var browserDeps = /*#__PURE__*/Object.freeze({
@@ -3828,9 +3852,9 @@
3828
3852
  var arrayMethodIsStrict$4 = function arrayMethodIsStrict(METHOD_NAME, argument) {
3829
3853
  var method = [][METHOD_NAME];
3830
3854
  return !!method && fails$2(function () {
3831
- // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
3855
+ // eslint-disable-next-line no-useless-call -- required for testing
3832
3856
  method.call(null, argument || function () {
3833
- throw 1;
3857
+ return 1;
3834
3858
  }, 1);
3835
3859
  });
3836
3860
  };
@@ -5260,7 +5284,7 @@
5260
5284
  */
5261
5285
 
5262
5286
  function isArray$4(val) {
5263
- return toString.call(val) === '[object Array]';
5287
+ return Array.isArray(val);
5264
5288
  }
5265
5289
  /**
5266
5290
  * Determine if a value is undefined
@@ -5304,7 +5328,7 @@
5304
5328
 
5305
5329
 
5306
5330
  function isFormData(val) {
5307
- return typeof FormData !== 'undefined' && val instanceof FormData;
5331
+ return toString.call(val) === '[object FormData]';
5308
5332
  }
5309
5333
  /**
5310
5334
  * Determine if a value is a view on an ArrayBuffer
@@ -5320,7 +5344,7 @@
5320
5344
  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {
5321
5345
  result = ArrayBuffer.isView(val);
5322
5346
  } else {
5323
- result = val && val.buffer && val.buffer instanceof ArrayBuffer;
5347
+ result = val && val.buffer && isArrayBuffer(val.buffer);
5324
5348
  }
5325
5349
 
5326
5350
  return result;
@@ -5438,7 +5462,7 @@
5438
5462
 
5439
5463
 
5440
5464
  function isURLSearchParams(val) {
5441
- return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
5465
+ return toString.call(val) === '[object URLSearchParams]';
5442
5466
  }
5443
5467
  /**
5444
5468
  * Trim excess whitespace off the beginning and end of a string
@@ -5593,7 +5617,7 @@
5593
5617
  return content;
5594
5618
  }
5595
5619
 
5596
- var utils$g = {
5620
+ var utils$h = {
5597
5621
  isArray: isArray$4,
5598
5622
  isArrayBuffer: isArrayBuffer,
5599
5623
  isBuffer: isBuffer$1,
@@ -5618,7 +5642,7 @@
5618
5642
  stripBOM: stripBOM
5619
5643
  };
5620
5644
 
5621
- var utils$f = utils$g;
5645
+ var utils$g = utils$h;
5622
5646
 
5623
5647
  function encode$2(val) {
5624
5648
  return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');
@@ -5642,25 +5666,25 @@
5642
5666
 
5643
5667
  if (paramsSerializer) {
5644
5668
  serializedParams = paramsSerializer(params);
5645
- } else if (utils$f.isURLSearchParams(params)) {
5669
+ } else if (utils$g.isURLSearchParams(params)) {
5646
5670
  serializedParams = params.toString();
5647
5671
  } else {
5648
5672
  var parts = [];
5649
- utils$f.forEach(params, function serialize(val, key) {
5673
+ utils$g.forEach(params, function serialize(val, key) {
5650
5674
  if (val === null || typeof val === 'undefined') {
5651
5675
  return;
5652
5676
  }
5653
5677
 
5654
- if (utils$f.isArray(val)) {
5678
+ if (utils$g.isArray(val)) {
5655
5679
  key = key + '[]';
5656
5680
  } else {
5657
5681
  val = [val];
5658
5682
  }
5659
5683
 
5660
- utils$f.forEach(val, function parseValue(v) {
5661
- if (utils$f.isDate(v)) {
5684
+ utils$g.forEach(val, function parseValue(v) {
5685
+ if (utils$g.isDate(v)) {
5662
5686
  v = v.toISOString();
5663
- } else if (utils$f.isObject(v)) {
5687
+ } else if (utils$g.isObject(v)) {
5664
5688
  v = JSON.stringify(v);
5665
5689
  }
5666
5690
 
@@ -5683,7 +5707,7 @@
5683
5707
  return url;
5684
5708
  };
5685
5709
 
5686
- var utils$e = utils$g;
5710
+ var utils$f = utils$h;
5687
5711
 
5688
5712
  function InterceptorManager$1() {
5689
5713
  this.handlers = [];
@@ -5730,7 +5754,7 @@
5730
5754
 
5731
5755
 
5732
5756
  InterceptorManager$1.prototype.forEach = function forEach(fn) {
5733
- utils$e.forEach(this.handlers, function forEachHandler(h) {
5757
+ utils$f.forEach(this.handlers, function forEachHandler(h) {
5734
5758
  if (h !== null) {
5735
5759
  fn(h);
5736
5760
  }
@@ -5981,10 +6005,10 @@
5981
6005
  uptime: uptime
5982
6006
  };
5983
6007
 
5984
- var utils$d = utils$g;
6008
+ var utils$e = utils$h;
5985
6009
 
5986
6010
  var normalizeHeaderName$1 = function normalizeHeaderName(headers, normalizedName) {
5987
- utils$d.forEach(headers, function processHeader(value, name) {
6011
+ utils$e.forEach(headers, function processHeader(value, name) {
5988
6012
  if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
5989
6013
  headers[normalizedName] = value;
5990
6014
  delete headers[name];
@@ -6038,6 +6062,12 @@
6038
6062
  return error;
6039
6063
  };
6040
6064
 
6065
+ var transitional = {
6066
+ silentJSONParsing: true,
6067
+ forcedJSONParsing: true,
6068
+ clarifyTimeoutError: false
6069
+ };
6070
+
6041
6071
  var enhanceError$1 = enhanceError$2;
6042
6072
  /**
6043
6073
  * Create an Error with the specified message, config, error code, request and response.
@@ -6074,23 +6104,23 @@
6074
6104
  }
6075
6105
  };
6076
6106
 
6077
- var utils$c = utils$g;
6078
- var cookies$1 = utils$c.isStandardBrowserEnv() ? // Standard browser envs support document.cookie
6107
+ var utils$d = utils$h;
6108
+ var cookies$1 = utils$d.isStandardBrowserEnv() ? // Standard browser envs support document.cookie
6079
6109
  function standardBrowserEnv() {
6080
6110
  return {
6081
6111
  write: function write(name, value, expires, path, domain, secure) {
6082
6112
  var cookie = [];
6083
6113
  cookie.push(name + '=' + encodeURIComponent(value));
6084
6114
 
6085
- if (utils$c.isNumber(expires)) {
6115
+ if (utils$d.isNumber(expires)) {
6086
6116
  cookie.push('expires=' + new Date(expires).toGMTString());
6087
6117
  }
6088
6118
 
6089
- if (utils$c.isString(path)) {
6119
+ if (utils$d.isString(path)) {
6090
6120
  cookie.push('path=' + path);
6091
6121
  }
6092
6122
 
6093
- if (utils$c.isString(domain)) {
6123
+ if (utils$d.isString(domain)) {
6094
6124
  cookie.push('domain=' + domain);
6095
6125
  }
6096
6126
 
@@ -6131,7 +6161,7 @@
6131
6161
  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
6132
6162
  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
6133
6163
  // by any combination of letters, digits, plus, period, or hyphen.
6134
- return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
6164
+ return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
6135
6165
  };
6136
6166
 
6137
6167
  /**
@@ -6167,7 +6197,7 @@
6167
6197
  return requestedURL;
6168
6198
  };
6169
6199
 
6170
- var utils$b = utils$g; // Headers whose duplicates are ignored by node
6200
+ var utils$c = utils$h; // Headers whose duplicates are ignored by node
6171
6201
  // c.f. https://nodejs.org/api/http.html#http_message_headers
6172
6202
 
6173
6203
  var ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];
@@ -6195,10 +6225,10 @@
6195
6225
  return parsed;
6196
6226
  }
6197
6227
 
6198
- utils$b.forEach(headers.split('\n'), function parser(line) {
6228
+ utils$c.forEach(headers.split('\n'), function parser(line) {
6199
6229
  i = line.indexOf(':');
6200
- key = utils$b.trim(line.substr(0, i)).toLowerCase();
6201
- val = utils$b.trim(line.substr(i + 1));
6230
+ key = utils$c.trim(line.substr(0, i)).toLowerCase();
6231
+ val = utils$c.trim(line.substr(i + 1));
6202
6232
 
6203
6233
  if (key) {
6204
6234
  if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
@@ -6215,8 +6245,8 @@
6215
6245
  return parsed;
6216
6246
  };
6217
6247
 
6218
- var utils$a = utils$g;
6219
- var isURLSameOrigin$1 = utils$a.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test
6248
+ var utils$b = utils$h;
6249
+ var isURLSameOrigin$1 = utils$b.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test
6220
6250
  // whether the request URL is of the same origin as current location.
6221
6251
  function standardBrowserEnv() {
6222
6252
  var msie = /(msie|trident)/i.test(navigator.userAgent);
@@ -6261,7 +6291,7 @@
6261
6291
  */
6262
6292
 
6263
6293
  return function isURLSameOrigin(requestURL) {
6264
- var parsed = utils$a.isString(requestURL) ? resolveURL(requestURL) : requestURL;
6294
+ var parsed = utils$b.isString(requestURL) ? resolveURL(requestURL) : requestURL;
6265
6295
  return parsed.protocol === originURL.protocol && parsed.host === originURL.host;
6266
6296
  };
6267
6297
  }() : // Non standard browser envs (web workers, react-native) lack needed support.
@@ -6290,7 +6320,7 @@
6290
6320
  Cancel$3.prototype.__CANCEL__ = true;
6291
6321
  var Cancel_1 = Cancel$3;
6292
6322
 
6293
- var utils$9 = utils$g;
6323
+ var utils$a = utils$h;
6294
6324
  var settle = settle$1;
6295
6325
  var cookies = cookies$1;
6296
6326
  var buildURL$1 = buildURL$2;
@@ -6298,7 +6328,7 @@
6298
6328
  var parseHeaders = parseHeaders$1;
6299
6329
  var isURLSameOrigin = isURLSameOrigin$1;
6300
6330
  var createError = createError$2;
6301
- var defaults$6 = defaults_1;
6331
+ var transitionalDefaults$1 = transitional;
6302
6332
  var Cancel$2 = Cancel_1;
6303
6333
 
6304
6334
  var xhr = function xhrAdapter(config) {
@@ -6318,7 +6348,7 @@
6318
6348
  }
6319
6349
  }
6320
6350
 
6321
- if (utils$9.isFormData(requestData)) {
6351
+ if (utils$a.isFormData(requestData)) {
6322
6352
  delete requestHeaders['Content-Type']; // Let the browser set it
6323
6353
  }
6324
6354
 
@@ -6409,7 +6439,7 @@
6409
6439
 
6410
6440
  request.ontimeout = function handleTimeout() {
6411
6441
  var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
6412
- var transitional = config.transitional || defaults$6.transitional;
6442
+ var transitional = config.transitional || transitionalDefaults$1;
6413
6443
 
6414
6444
  if (config.timeoutErrorMessage) {
6415
6445
  timeoutErrorMessage = config.timeoutErrorMessage;
@@ -6423,7 +6453,7 @@
6423
6453
  // Specifically not if we're in a web worker, or react-native.
6424
6454
 
6425
6455
 
6426
- if (utils$9.isStandardBrowserEnv()) {
6456
+ if (utils$a.isStandardBrowserEnv()) {
6427
6457
  // Add xsrf header
6428
6458
  var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;
6429
6459
 
@@ -6434,7 +6464,7 @@
6434
6464
 
6435
6465
 
6436
6466
  if ('setRequestHeader' in request) {
6437
- utils$9.forEach(requestHeaders, function setRequestHeader(val, key) {
6467
+ utils$a.forEach(requestHeaders, function setRequestHeader(val, key) {
6438
6468
  if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
6439
6469
  // Remove Content-Type if data is undefined
6440
6470
  delete requestHeaders[key];
@@ -6446,7 +6476,7 @@
6446
6476
  } // Add withCredentials to request if needed
6447
6477
 
6448
6478
 
6449
- if (!utils$9.isUndefined(config.withCredentials)) {
6479
+ if (!utils$a.isUndefined(config.withCredentials)) {
6450
6480
  request.withCredentials = !!config.withCredentials;
6451
6481
  } // Add responseType to request if needed
6452
6482
 
@@ -6494,15 +6524,16 @@
6494
6524
  });
6495
6525
  };
6496
6526
 
6497
- var utils$8 = utils$g;
6527
+ var utils$9 = utils$h;
6498
6528
  var normalizeHeaderName = normalizeHeaderName$1;
6499
6529
  var enhanceError = enhanceError$2;
6530
+ var transitionalDefaults = transitional;
6500
6531
  var DEFAULT_CONTENT_TYPE = {
6501
6532
  'Content-Type': 'application/x-www-form-urlencoded'
6502
6533
  };
6503
6534
 
6504
6535
  function setContentTypeIfUnset(headers, value) {
6505
- if (!utils$8.isUndefined(headers) && utils$8.isUndefined(headers['Content-Type'])) {
6536
+ if (!utils$9.isUndefined(headers) && utils$9.isUndefined(headers['Content-Type'])) {
6506
6537
  headers['Content-Type'] = value;
6507
6538
  }
6508
6539
  }
@@ -6522,10 +6553,10 @@
6522
6553
  }
6523
6554
 
6524
6555
  function stringifySafely(rawValue, parser, encoder) {
6525
- if (utils$8.isString(rawValue)) {
6556
+ if (utils$9.isString(rawValue)) {
6526
6557
  try {
6527
6558
  (parser || JSON.parse)(rawValue);
6528
- return utils$8.trim(rawValue);
6559
+ return utils$9.trim(rawValue);
6529
6560
  } catch (e) {
6530
6561
  if (e.name !== 'SyntaxError') {
6531
6562
  throw e;
@@ -6537,30 +6568,26 @@
6537
6568
  }
6538
6569
 
6539
6570
  var defaults$5 = {
6540
- transitional: {
6541
- silentJSONParsing: true,
6542
- forcedJSONParsing: true,
6543
- clarifyTimeoutError: false
6544
- },
6571
+ transitional: transitionalDefaults,
6545
6572
  adapter: getDefaultAdapter(),
6546
6573
  transformRequest: [function transformRequest(data, headers) {
6547
6574
  normalizeHeaderName(headers, 'Accept');
6548
6575
  normalizeHeaderName(headers, 'Content-Type');
6549
6576
 
6550
- if (utils$8.isFormData(data) || utils$8.isArrayBuffer(data) || utils$8.isBuffer(data) || utils$8.isStream(data) || utils$8.isFile(data) || utils$8.isBlob(data)) {
6577
+ if (utils$9.isFormData(data) || utils$9.isArrayBuffer(data) || utils$9.isBuffer(data) || utils$9.isStream(data) || utils$9.isFile(data) || utils$9.isBlob(data)) {
6551
6578
  return data;
6552
6579
  }
6553
6580
 
6554
- if (utils$8.isArrayBufferView(data)) {
6581
+ if (utils$9.isArrayBufferView(data)) {
6555
6582
  return data.buffer;
6556
6583
  }
6557
6584
 
6558
- if (utils$8.isURLSearchParams(data)) {
6585
+ if (utils$9.isURLSearchParams(data)) {
6559
6586
  setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
6560
6587
  return data.toString();
6561
6588
  }
6562
6589
 
6563
- if (utils$8.isObject(data) || headers && headers['Content-Type'] === 'application/json') {
6590
+ if (utils$9.isObject(data) || headers && headers['Content-Type'] === 'application/json') {
6564
6591
  setContentTypeIfUnset(headers, 'application/json');
6565
6592
  return stringifySafely(data);
6566
6593
  }
@@ -6573,7 +6600,7 @@
6573
6600
  var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
6574
6601
  var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
6575
6602
 
6576
- if (strictJSONParsing || forcedJSONParsing && utils$8.isString(data) && data.length) {
6603
+ if (strictJSONParsing || forcedJSONParsing && utils$9.isString(data) && data.length) {
6577
6604
  try {
6578
6605
  return JSON.parse(data);
6579
6606
  } catch (e) {
@@ -6608,15 +6635,15 @@
6608
6635
  }
6609
6636
  }
6610
6637
  };
6611
- utils$8.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
6638
+ utils$9.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
6612
6639
  defaults$5.headers[method] = {};
6613
6640
  });
6614
- utils$8.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
6615
- defaults$5.headers[method] = utils$8.merge(DEFAULT_CONTENT_TYPE);
6641
+ utils$9.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
6642
+ defaults$5.headers[method] = utils$9.merge(DEFAULT_CONTENT_TYPE);
6616
6643
  });
6617
6644
  var defaults_1 = defaults$5;
6618
6645
 
6619
- var utils$7 = utils$g;
6646
+ var utils$8 = utils$h;
6620
6647
  var defaults$4 = defaults_1;
6621
6648
  /**
6622
6649
  * Transform the data for a request or a response
@@ -6631,7 +6658,7 @@
6631
6658
  var context = this || defaults$4;
6632
6659
  /*eslint no-param-reassign:0*/
6633
6660
 
6634
- utils$7.forEach(fns, function transform(fn) {
6661
+ utils$8.forEach(fns, function transform(fn) {
6635
6662
  data = fn.call(context, data, headers);
6636
6663
  });
6637
6664
  return data;
@@ -6641,7 +6668,7 @@
6641
6668
  return !!(value && value.__CANCEL__);
6642
6669
  };
6643
6670
 
6644
- var utils$6 = utils$g;
6671
+ var utils$7 = utils$h;
6645
6672
  var transformData = transformData$1;
6646
6673
  var isCancel = isCancel$1;
6647
6674
  var defaults$3 = defaults_1;
@@ -6674,8 +6701,8 @@
6674
6701
 
6675
6702
  config.data = transformData.call(config, config.data, config.headers, config.transformRequest); // Flatten headers
6676
6703
 
6677
- config.headers = utils$6.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);
6678
- utils$6.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {
6704
+ config.headers = utils$7.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);
6705
+ utils$7.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {
6679
6706
  delete config.headers[method];
6680
6707
  });
6681
6708
  var adapter = config.adapter || defaults$3.adapter;
@@ -6697,7 +6724,7 @@
6697
6724
  });
6698
6725
  };
6699
6726
 
6700
- var utils$5 = utils$g;
6727
+ var utils$6 = utils$h;
6701
6728
  /**
6702
6729
  * Config-specific merge-function which creates a new config-object
6703
6730
  * by merging two configuration objects together.
@@ -6713,11 +6740,11 @@
6713
6740
  var config = {};
6714
6741
 
6715
6742
  function getMergedValue(target, source) {
6716
- if (utils$5.isPlainObject(target) && utils$5.isPlainObject(source)) {
6717
- return utils$5.merge(target, source);
6718
- } else if (utils$5.isPlainObject(source)) {
6719
- return utils$5.merge({}, source);
6720
- } else if (utils$5.isArray(source)) {
6743
+ if (utils$6.isPlainObject(target) && utils$6.isPlainObject(source)) {
6744
+ return utils$6.merge(target, source);
6745
+ } else if (utils$6.isPlainObject(source)) {
6746
+ return utils$6.merge({}, source);
6747
+ } else if (utils$6.isArray(source)) {
6721
6748
  return source.slice();
6722
6749
  }
6723
6750
 
@@ -6726,25 +6753,25 @@
6726
6753
 
6727
6754
 
6728
6755
  function mergeDeepProperties(prop) {
6729
- if (!utils$5.isUndefined(config2[prop])) {
6756
+ if (!utils$6.isUndefined(config2[prop])) {
6730
6757
  return getMergedValue(config1[prop], config2[prop]);
6731
- } else if (!utils$5.isUndefined(config1[prop])) {
6758
+ } else if (!utils$6.isUndefined(config1[prop])) {
6732
6759
  return getMergedValue(undefined, config1[prop]);
6733
6760
  }
6734
6761
  } // eslint-disable-next-line consistent-return
6735
6762
 
6736
6763
 
6737
6764
  function valueFromConfig2(prop) {
6738
- if (!utils$5.isUndefined(config2[prop])) {
6765
+ if (!utils$6.isUndefined(config2[prop])) {
6739
6766
  return getMergedValue(undefined, config2[prop]);
6740
6767
  }
6741
6768
  } // eslint-disable-next-line consistent-return
6742
6769
 
6743
6770
 
6744
6771
  function defaultToConfig2(prop) {
6745
- if (!utils$5.isUndefined(config2[prop])) {
6772
+ if (!utils$6.isUndefined(config2[prop])) {
6746
6773
  return getMergedValue(undefined, config2[prop]);
6747
- } else if (!utils$5.isUndefined(config1[prop])) {
6774
+ } else if (!utils$6.isUndefined(config1[prop])) {
6748
6775
  return getMergedValue(undefined, config1[prop]);
6749
6776
  }
6750
6777
  } // eslint-disable-next-line consistent-return
@@ -6786,16 +6813,16 @@
6786
6813
  'responseEncoding': defaultToConfig2,
6787
6814
  'validateStatus': mergeDirectKeys
6788
6815
  };
6789
- utils$5.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
6816
+ utils$6.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
6790
6817
  var merge = mergeMap[prop] || mergeDeepProperties;
6791
6818
  var configValue = merge(prop);
6792
- utils$5.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);
6819
+ utils$6.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);
6793
6820
  });
6794
6821
  return config;
6795
6822
  };
6796
6823
 
6797
6824
  var data = {
6798
- "version": "0.24.0"
6825
+ "version": "0.26.1"
6799
6826
  };
6800
6827
 
6801
6828
  var VERSION$1 = data.version;
@@ -6877,7 +6904,7 @@
6877
6904
  validators: validators$1
6878
6905
  };
6879
6906
 
6880
- var utils$4 = utils$g;
6907
+ var utils$5 = utils$h;
6881
6908
  var buildURL = buildURL$2;
6882
6909
  var InterceptorManager = InterceptorManager_1;
6883
6910
  var dispatchRequest = dispatchRequest$1;
@@ -6904,14 +6931,14 @@
6904
6931
  */
6905
6932
 
6906
6933
 
6907
- Axios$1.prototype.request = function request(config) {
6934
+ Axios$1.prototype.request = function request(configOrUrl, config) {
6908
6935
  /*eslint no-param-reassign:0*/
6909
6936
  // Allow for axios('example/url'[, config]) a la fetch API
6910
- if (typeof config === 'string') {
6911
- config = arguments[1] || {};
6912
- config.url = arguments[0];
6913
- } else {
6937
+ if (typeof configOrUrl === 'string') {
6914
6938
  config = config || {};
6939
+ config.url = configOrUrl;
6940
+ } else {
6941
+ config = configOrUrl || {};
6915
6942
  }
6916
6943
 
6917
6944
  config = mergeConfig$1(this.defaults, config); // Set config.method
@@ -6997,7 +7024,7 @@
6997
7024
  }; // Provide aliases for supported request methods
6998
7025
 
6999
7026
 
7000
- utils$4.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
7027
+ utils$5.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
7001
7028
  /*eslint func-names:0*/
7002
7029
  Axios$1.prototype[method] = function (url, config) {
7003
7030
  return this.request(mergeConfig$1(config || {}, {
@@ -7007,7 +7034,7 @@
7007
7034
  }));
7008
7035
  };
7009
7036
  });
7010
- utils$4.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
7037
+ utils$5.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
7011
7038
  /*eslint func-names:0*/
7012
7039
  Axios$1.prototype[method] = function (url, data, config) {
7013
7040
  return this.request(mergeConfig$1(config || {}, {
@@ -7166,6 +7193,7 @@
7166
7193
  };
7167
7194
  };
7168
7195
 
7196
+ var utils$4 = utils$h;
7169
7197
  /**
7170
7198
  * Determines whether the payload is an error thrown by Axios
7171
7199
  *
@@ -7173,12 +7201,11 @@
7173
7201
  * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
7174
7202
  */
7175
7203
 
7176
-
7177
7204
  var isAxiosError = function isAxiosError(payload) {
7178
- return _typeof(payload) === 'object' && payload.isAxiosError === true;
7205
+ return utils$4.isObject(payload) && payload.isAxiosError === true;
7179
7206
  };
7180
7207
 
7181
- var utils$3 = utils$g;
7208
+ var utils$3 = utils$h;
7182
7209
  var bind$3 = bind$5;
7183
7210
  var Axios = Axios_1;
7184
7211
  var mergeConfig = mergeConfig$2;
@@ -10795,4 +10822,4 @@
10795
10822
  Object.defineProperty(exports, '__esModule', { value: true });
10796
10823
 
10797
10824
  }));
10798
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2ludG9uZVJlc3RBUElDbGllbnQuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9wbGF0Zm9ybS9pbmRleC50cyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jb25zdHJ1Y3Rvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uL3NyYy9wbGF0Zm9ybS9VbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3IudHMiLCIuLi9zcmMvcGxhdGZvcm0vYnJvd3Nlci50cyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiLCIuLi9zcmMvdXJsLnRzIiwiLi4vc3JjL2NsaWVudC9CdWxrUmVxdWVzdENsaWVudC50cyIsIi4uL3NyYy9jbGllbnQvQXBwQ2xpZW50LnRzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1hc3NpZ24uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtc3RpY2t5LWhlbHBlcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5tYXRjaC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RoaXMtbnVtYmVyLXZhbHVlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3doaXRlc3BhY2VzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy10cmltLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5kZXgtb2YuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmV2ZXJ5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC10by1zdHJpbmcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmlzLWFycmF5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1yZWR1Y2UuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJlZHVjZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiLCIuLi9zcmMvZXJyb3IvS2ludG9uZUFsbFJlY29yZHNFcnJvci50cyIsIi4uL3NyYy9jbGllbnQvUmVjb3JkQ2xpZW50LnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Zvcm0tZGF0YS9saWIvYnJvd3Nlci5qcyIsIi4uL3NyYy9jbGllbnQvRmlsZUNsaWVudC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9JbnRlcmNlcHRvck1hbmFnZXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWdsb2JhbHMvc3JjL2dsb2JhbC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9wcm9jZXNzLWVzNi9icm93c2VyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2NyZWF0ZUVycm9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZUhlYWRlcnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9kaXNwYXRjaFJlcXVlc3QuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3ZhbGlkYXRvci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzIiwiLi4vc3JjL2h0dHAvQXhpb3NDbGllbnQudHMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvaGFzLXN5bWJvbHMvc2hhbXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvaGFzLXN5bWJvbHMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZnVuY3Rpb24tYmluZC9pbXBsZW1lbnRhdGlvbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2hhcy9zcmMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZ2V0LWludHJpbnNpYy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwvbm9kZV9tb2R1bGVzL2NhbGwtYmluZC9ub2RlX21vZHVsZXMvZ2V0LWludHJpbnNpYy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwvbm9kZV9tb2R1bGVzL2NhbGwtYmluZC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwvbm9kZV9tb2R1bGVzL2NhbGwtYmluZC9jYWxsQm91bmQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2lkZS1jaGFubmVsL25vZGVfbW9kdWxlcy9vYmplY3QtaW5zcGVjdC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvcXMvbGliL2Zvcm1hdHMuanMiLCIuLi9ub2RlX21vZHVsZXMvcXMvbGliL3V0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9zdHJpbmdpZnkuanMiLCIuLi9ub2RlX21vZHVsZXMvcXMvbGliL3BhcnNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9qcy1iYXNlNjQvYmFzZTY0Lm1qcyIsIi4uL3NyYy9LaW50b25lUmVxdWVzdENvbmZpZ0J1aWxkZXIudHMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmRhdGUudG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIiwiLi4vc3JjL2Vycm9yL0tpbnRvbmVBYm9ydFNlYXJjaEVycm9yLnRzIiwiLi4vc3JjL2Vycm9yL0tpbnRvbmVSZXN0QVBJRXJyb3IudHMiLCIuLi9zcmMvS2ludG9uZVJlc3BvbnNlSGFuZGxlci50cyIsIi4uL3NyYy9LaW50b25lUmVzdEFQSUNsaWVudC50cyIsIi4uL3NyYy9pbmRleC5icm93c2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpc2NyaW1pbmF0ZWRBdXRoIH0gZnJvbSBcIi4uL3R5cGVzL2F1dGhcIjtcbnR5cGUgUGxhdGZvcm1EZXBzID0ge1xuICByZWFkRmlsZUZyb21QYXRoOiAoXG4gICAgZmlsZVBhdGg6IHN0cmluZ1xuICApID0+IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfT47XG4gIGdldFJlcXVlc3RUb2tlbjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBnZXREZWZhdWx0QXV0aDogKCkgPT4gRGlzY3JpbWluYXRlZEF1dGg7XG4gIGJ1aWxkUGxhdGZvcm1EZXBlbmRlbnRDb25maWc6IChwYXJhbXM6IG9iamVjdCkgPT4gb2JqZWN0O1xuICBidWlsZEhlYWRlcnM6IChwYXJhbXM6IHsgdXNlckFnZW50Pzogc3RyaW5nIH0pID0+IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGJ1aWxkRm9ybURhdGFWYWx1ZTogKGRhdGE6IHVua25vd24pID0+IHVua25vd247XG4gIGJ1aWxkQmFzZVVybDogKGJhc2VVcmw/OiBzdHJpbmcpID0+IHN0cmluZztcbiAgZ2V0VmVyc2lvbjogKCkgPT4gc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IHBsYXRmb3JtRGVwczogUGxhdGZvcm1EZXBzID0ge1xuICByZWFkRmlsZUZyb21QYXRoOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICB9LFxuICBnZXRSZXF1ZXN0VG9rZW46ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gIH0sXG4gIGdldERlZmF1bHRBdXRoOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICB9LFxuICBidWlsZFBsYXRmb3JtRGVwZW5kZW50Q29uZmlnOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICB9LFxuICBidWlsZEhlYWRlcnM6ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gIH0sXG4gIGJ1aWxkRm9ybURhdGFWYWx1ZTogKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfSxcbiAgYnVpbGRCYXNlVXJsOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICB9LFxuICBnZXRWZXJzaW9uOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGluamVjdFBsYXRmb3JtRGVwcyA9IChkZXBzOiBQYXJ0aWFsPFBsYXRmb3JtRGVwcz4pID0+IHtcbiAgcGxhdGZvcm1EZXBzLnJlYWRGaWxlRnJvbVBhdGggPSBkZXBzLnJlYWRGaWxlRnJvbVBhdGghO1xuICBwbGF0Zm9ybURlcHMuZ2V0UmVxdWVzdFRva2VuID0gZGVwcy5nZXRSZXF1ZXN0VG9rZW4hO1xuICBwbGF0Zm9ybURlcHMuZ2V0RGVmYXVsdEF1dGggPSBkZXBzLmdldERlZmF1bHRBdXRoITtcbiAgcGxhdGZvcm1EZXBzLmJ1aWxkUGxhdGZvcm1EZXBlbmRlbnRDb25maWcgPVxuICAgIGRlcHMuYnVpbGRQbGF0Zm9ybURlcGVuZGVudENvbmZpZyE7XG4gIHBsYXRmb3JtRGVwcy5idWlsZEhlYWRlcnMgPSBkZXBzLmJ1aWxkSGVhZGVycyE7XG4gIHBsYXRmb3JtRGVwcy5idWlsZEZvcm1EYXRhVmFsdWUgPSBkZXBzLmJ1aWxkRm9ybURhdGFWYWx1ZSE7XG4gIHBsYXRmb3JtRGVwcy5idWlsZEJhc2VVcmwgPSBkZXBzLmJ1aWxkQmFzZVVybCE7XG4gIHBsYXRmb3JtRGVwcy5nZXRWZXJzaW9uID0gZGVwcy5nZXRWZXJzaW9uITtcbn07XG4iLCJ2YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9IDc7XG59KTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsInZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgYmluZCA9IEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQ7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXMgPSBOQVRJVkVfQklORCAmJiBiaW5kLmJpbmQoY2FsbCwgY2FsbCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZuICYmIHVuY3VycnlUaGlzKGZuKTtcbn0gOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZuICYmIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCJ2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBPYmplY3QgPSBnbG9iYWwuT2JqZWN0O1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiAhT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT0gJ1N0cmluZycgPyBzcGxpdChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCIvLyBgSXNDYWxsYWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY2FsbGFibGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCJ2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxbbmFtZXNwYWNlXSkgOiBnbG9iYWxbbmFtZXNwYWNlXSAmJiBnbG9iYWxbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ25hdmlnYXRvcicsICd1c2VyQWdlbnQnKSB8fCAnJztcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbC5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwiLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgcmV0dXJuICFTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MXG4gICYmICFTeW1ib2wuc2hhbVxuICAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgT2JqZWN0ID0gZ2xvYmFsLk9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCBPYmplY3QoaXQpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gU3RyaW5nKGFyZ3VtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ09iamVjdCc7XG4gIH1cbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NhbGxhYmxlKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwidmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gZnVuYyA9PSBudWxsID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBkZWZpbmVQcm9wZXJ0eShnbG9iYWwsIGtleSwgeyB2YWx1ZTogdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmU7XG4iLCJ2YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4yMS4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yMS4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgT2JqZWN0ID0gZ2xvYmFsLk9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIHN5bWJvbEZvciA9IFN5bWJvbCAmJiBTeW1ib2xbJ2ZvciddO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpIHx8ICEoTkFUSVZFX1NZTUJPTCB8fCB0eXBlb2YgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID09ICdzdHJpbmcnKSkge1xuICAgIHZhciBkZXNjcmlwdGlvbiA9ICdTeW1ib2wuJyArIG5hbWU7XG4gICAgaWYgKE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSkpIHtcbiAgICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IFN5bWJvbFtuYW1lXTtcbiAgICB9IGVsc2UgaWYgKFVTRV9TWU1CT0xfQVNfVUlEICYmIHN5bWJvbEZvcikge1xuICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gc3ltYm9sRm9yKGRlc2NyaXB0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gY3JlYXRlV2VsbEtub3duU3ltYm9sKGRlc2NyaXB0aW9uKTtcbiAgICB9XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICB9XG4gIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnbnVtYmVyJztcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIHByZWYpO1xufTtcbiIsInZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcblxuLy8gYFRvUHJvcGVydHlLZXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdzdHJpbmcnKTtcbiAgcmV0dXJuIGlzU3ltYm9sKGtleSkgPyBrZXkgOiBrZXkgKyAnJztcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFua3MgdG8gSUU4IGZvciBpdHMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhc093bihPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLCBPLCBQKSwgT1tQXSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPSA0Mjtcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgRU5VTUVSQUJMRSA9ICdlbnVtZXJhYmxlJztcbnZhciBDT05GSUdVUkFCTEUgPSAnY29uZmlndXJhYmxlJztcbnZhciBXUklUQUJMRSA9ICd3cml0YWJsZSc7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmICh0eXBlb2YgTyA9PT0gJ2Z1bmN0aW9uJyAmJiBQID09PSAncHJvdG90eXBlJyAmJiAndmFsdWUnIGluIEF0dHJpYnV0ZXMgJiYgV1JJVEFCTEUgaW4gQXR0cmlidXRlcyAmJiAhQXR0cmlidXRlc1tXUklUQUJMRV0pIHtcbiAgICB2YXIgY3VycmVudCA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgZW51bWVyYWJsZTogRU5VTUVSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tFTlVNRVJBQkxFXSA6IGN1cnJlbnRbRU5VTUVSQUJMRV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH0gcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbn0gOiAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChpbnNwZWN0U291cmNlKFdlYWtNYXApKTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICB2YXIgd21nZXQgPSB1bmN1cnJ5VGhpcyhzdG9yZS5nZXQpO1xuICB2YXIgd21oYXMgPSB1bmN1cnJ5VGhpcyhzdG9yZS5oYXMpO1xuICB2YXIgd21zZXQgPSB1bmN1cnJ5VGhpcyhzdG9yZS5zZXQpO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHdtaGFzKHN0b3JlLCBpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHdtc2V0KHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0KHN0b3JlLCBpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWhhcyhzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXREZXNjcmlwdG9yID0gREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIEVYSVNUUyA9IGhhc093bihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKTtcbi8vIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBmcm9tIG1pbmlmaWVkIC8gbWFuZ2xlZCAvIGRyb3BwZWQgZnVuY3Rpb24gbmFtZXNcbnZhciBQUk9QRVIgPSBFWElTVFMgJiYgKGZ1bmN0aW9uIHNvbWV0aGluZygpIHsgLyogZW1wdHkgKi8gfSkubmFtZSA9PT0gJ3NvbWV0aGluZyc7XG52YXIgQ09ORklHVVJBQkxFID0gRVhJU1RTICYmICghREVTQ1JJUFRPUlMgfHwgKERFU0NSSVBUT1JTICYmIGdldERlc2NyaXB0b3IoRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJykuY29uZmlndXJhYmxlKSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBFWElTVFM6IEVYSVNUUyxcbiAgUFJPUEVSOiBQUk9QRVIsXG4gIENPTkZJR1VSQUJMRTogQ09ORklHVVJBQkxFXG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zICYmIG9wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uYW1lIDoga2V5O1xuICB2YXIgc3RhdGU7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkge1xuICAgIGlmIChTdHJpbmcobmFtZSkuc2xpY2UoMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgICAgbmFtZSA9ICdbJyArIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9eU3ltYm9sXFwoKFteKV0qKVxcKS8sICckMScpICsgJ10nO1xuICAgIH1cbiAgICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCBuYW1lKTtcbiAgICB9XG4gICAgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gICAgaWYgKCFzdGF0ZS5zb3VyY2UpIHtcbiAgICAgIHN0YXRlLnNvdXJjZSA9IFRFTVBMQVRFLmpvaW4odHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICAgIH1cbiAgfVxuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBzZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCF1bnNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICB9IGVsc2UgaWYgKCFub1RhcmdldEdldCAmJiBPW2tleV0pIHtcbiAgICBzaW1wbGUgPSB0cnVlO1xuICB9XG4gIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICBlbHNlIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShPLCBrZXksIHZhbHVlKTtcbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0pO1xuIiwidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyT3JJbmZpbml0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvaW50ZWdlcm9yaW5maW5pdHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBudW1iZXIgPSArYXJndW1lbnQ7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gc2FmZVxuICByZXR1cm4gbnVtYmVyICE9PSBudW1iZXIgfHwgbnVtYmVyID09PSAwID8gMCA6IChudW1iZXIgPiAwID8gZmxvb3IgOiBjZWlsKShudW1iZXIpO1xufTtcbiIsInZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGludGVnZXIsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsInZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXJPckluZmluaXR5KGFyZ3VtZW50KSwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwidmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xuXG4vLyBgTGVuZ3RoT2ZBcnJheUxpa2VgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1sZW5ndGhvZmFycmF5bGlrZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0b0xlbmd0aChvYmoubGVuZ3RoKTtcbn07XG4iLCJ2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG52YXIgaGlkZGVuS2V5cyA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsInZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIG93bktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3duLWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UsIGV4Y2VwdGlvbnMpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpICYmICEoZXhjZXB0aW9ucyAmJiBoYXNPd24oZXhjZXB0aW9ucywga2V5KSkpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICB9XG4gIH1cbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4gIG9wdGlvbnMubmFtZSAgICAgICAgLSB0aGUgLm5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBrZXlcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gfHwgc2V0R2xvYmFsKFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IChnbG9iYWxbVEFSR0VUXSB8fCB7fSkucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMubm9UYXJnZXRHZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1pc2FycmF5IC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZ3VtZW50KSB7XG4gIHJldHVybiBjbGFzc29mKGFyZ3VtZW50KSA9PSAnQXJyYXknO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBwcm9wZXJ0eUtleSA9IHRvUHJvcGVydHlLZXkoa2V5KTtcbiAgaWYgKHByb3BlcnR5S2V5IGluIG9iamVjdCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciB0ZXN0ID0ge307XG5cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciBPYmplY3QgPSBnbG9iYWwuT2JqZWN0O1xuXG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyBjbGFzc29mUmF3IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCJ2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBub29wID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIGVtcHR5ID0gW107XG52YXIgY29uc3RydWN0ID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdjb25zdHJ1Y3QnKTtcbnZhciBjb25zdHJ1Y3RvclJlZ0V4cCA9IC9eXFxzKig/OmNsYXNzfGZ1bmN0aW9uKVxcYi87XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKGNvbnN0cnVjdG9yUmVnRXhwLmV4ZWMpO1xudmFyIElOQ09SUkVDVF9UT19TVFJJTkcgPSAhY29uc3RydWN0b3JSZWdFeHAuZXhlYyhub29wKTtcblxudmFyIGlzQ29uc3RydWN0b3JNb2Rlcm4gPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdHJ1Y3Qobm9vcCwgZW1wdHksIGFyZ3VtZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBpc0NvbnN0cnVjdG9yTGVnYWN5ID0gZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHN3aXRjaCAoY2xhc3NvZihhcmd1bWVudCkpIHtcbiAgICBjYXNlICdBc3luY0Z1bmN0aW9uJzpcbiAgICBjYXNlICdHZW5lcmF0b3JGdW5jdGlvbic6XG4gICAgY2FzZSAnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbic6IHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIC8vIHdlIGNhbid0IGNoZWNrIC5wcm90b3R5cGUgc2luY2UgY29uc3RydWN0b3JzIHByb2R1Y2VkIGJ5IC5iaW5kIGhhdmVuJ3QgaXRcbiAgICAvLyBgRnVuY3Rpb24jdG9TdHJpbmdgIHRocm93cyBvbiBzb21lIGJ1aWx0LWl0IGZ1bmN0aW9uIGluIHNvbWUgbGVnYWN5IGVuZ2luZXNcbiAgICAvLyAoZm9yIGV4YW1wbGUsIGBET01RdWFkYCBhbmQgc2ltaWxhciBpbiBGRjQxLSlcbiAgICByZXR1cm4gSU5DT1JSRUNUX1RPX1NUUklORyB8fCAhIWV4ZWMoY29uc3RydWN0b3JSZWdFeHAsIGluc3BlY3RTb3VyY2UoYXJndW1lbnQpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuaXNDb25zdHJ1Y3RvckxlZ2FjeS5zaGFtID0gdHJ1ZTtcblxuLy8gYElzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NvbnN0cnVjdG9yXG5tb2R1bGUuZXhwb3J0cyA9ICFjb25zdHJ1Y3QgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgY2FsbGVkO1xuICByZXR1cm4gaXNDb25zdHJ1Y3Rvck1vZGVybihpc0NvbnN0cnVjdG9yTW9kZXJuLmNhbGwpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oT2JqZWN0KVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKGZ1bmN0aW9uICgpIHsgY2FsbGVkID0gdHJ1ZTsgfSlcbiAgICB8fCBjYWxsZWQ7XG59KSA/IGlzQ29uc3RydWN0b3JMZWdhY3kgOiBpc0NvbnN0cnVjdG9yTW9kZXJuO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIEFycmF5ID0gZ2xvYmFsLkFycmF5O1xuXG4vLyBhIHBhcnQgb2YgYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICBDID0gb3JpZ2luYWxBcnJheS5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmIChpc0NvbnN0cnVjdG9yKEMpICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEM7XG59O1xuIiwidmFyIGFycmF5U3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3InKTtcblxuLy8gYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgKGFycmF5U3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsQXJyYXkpKShsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoKTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIC8vIFdlIGNhbid0IHVzZSB0aGlzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuICAvLyBkZW9wdGltaXphdGlvbiBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc3XG4gIHJldHVybiBWOF9WRVJTSU9OID49IDUxIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgdmFyIGNvbnN0cnVjdG9yID0gYXJyYXkuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGZvbzogMSB9O1xuICAgIH07XG4gICAgcmV0dXJuIGFycmF5W01FVEhPRF9OQU1FXShCb29sZWFuKS5mb28gIT09IDE7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBJU19DT05DQVRfU1BSRUFEQUJMRSA9IHdlbGxLbm93blN5bWJvbCgnaXNDb25jYXRTcHJlYWRhYmxlJyk7XG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDB4MUZGRkZGRkZGRkZGRkY7XG52YXIgTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEID0gJ01heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxuLy8gV2UgY2FuJ3QgdXNlIHRoaXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4vLyBkZW9wdGltaXphdGlvbiBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgPSBWOF9WRVJTSU9OID49IDUxIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBhcnJheSA9IFtdO1xuICBhcnJheVtJU19DT05DQVRfU1BSRUFEQUJMRV0gPSBmYWxzZTtcbiAgcmV0dXJuIGFycmF5LmNvbmNhdCgpWzBdICE9PSBhcnJheTtcbn0pO1xuXG52YXIgU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnY29uY2F0Jyk7XG5cbnZhciBpc0NvbmNhdFNwcmVhZGFibGUgPSBmdW5jdGlvbiAoTykge1xuICBpZiAoIWlzT2JqZWN0KE8pKSByZXR1cm4gZmFsc2U7XG4gIHZhciBzcHJlYWRhYmxlID0gT1tJU19DT05DQVRfU1BSRUFEQUJMRV07XG4gIHJldHVybiBzcHJlYWRhYmxlICE9PSB1bmRlZmluZWQgPyAhIXNwcmVhZGFibGUgOiBpc0FycmF5KE8pO1xufTtcblxudmFyIEZPUkNFRCA9ICFJU19DT05DQVRfU1BSRUFEQUJMRV9TVVBQT1JUIHx8ICFTUEVDSUVTX1NVUFBPUlQ7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuY29uY2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmNvbmNhdFxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQGlzQ29uY2F0U3ByZWFkYWJsZSBhbmQgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBjb25jYXQ6IGZ1bmN0aW9uIGNvbmNhdChhcmcpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoaXMpO1xuICAgIHZhciBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgIHZhciBuID0gMDtcbiAgICB2YXIgaSwgaywgbGVuZ3RoLCBsZW4sIEU7XG4gICAgZm9yIChpID0gLTEsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgRSA9IGkgPT09IC0xID8gTyA6IGFyZ3VtZW50c1tpXTtcbiAgICAgIGlmIChpc0NvbmNhdFNwcmVhZGFibGUoRSkpIHtcbiAgICAgICAgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoRSk7XG4gICAgICAgIGlmIChuICsgbGVuID4gTUFYX1NBRkVfSU5URUdFUikgdGhyb3cgVHlwZUVycm9yKE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCk7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBsZW47IGsrKywgbisrKSBpZiAoayBpbiBFKSBjcmVhdGVQcm9wZXJ0eShBLCBuLCBFW2tdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuID49IE1BWF9TQUZFX0lOVEVHRVIpIHRocm93IFR5cGVFcnJvcihNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQpO1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShBLCBuKyssIEUpO1xuICAgICAgfVxuICAgIH1cbiAgICBBLmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIEE7XG4gIH1cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIGRlZmluZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfVxuICB0cnkge1xuICAgIC8vIElFIDggaGFzIGEgYnJva2VuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0aGF0IG9ubHkgd29ya3Mgb24gRE9NIG9iamVjdHMuXG4gICAgZGVmaW5lKHt9LCBcIlwiKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZGVmaW5lID0gZnVuY3Rpb24ob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqW2tleV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgZXhwb3J0cy53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBkZWZpbmUoXG4gICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsXG4gICAgdG9TdHJpbmdUYWdTeW1ib2wsXG4gICAgXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICk7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgZGVmaW5lKHByb3RvdHlwZSwgbWV0aG9kLCBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIGV4cG9ydHMubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgZGVmaW5lKGdlbkZ1biwgdG9TdHJpbmdUYWdTeW1ib2wsIFwiR2VuZXJhdG9yRnVuY3Rpb25cIik7XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvciwgUHJvbWlzZUltcGwpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICAgICAgLy8gSWYgYSByZWplY3RlZCBQcm9taXNlIHdhcyB5aWVsZGVkLCB0aHJvdyB0aGUgcmVqZWN0aW9uIGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgcmV0dXJuIGludm9rZShcInRocm93XCIsIGVycm9yLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUltcGwoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgZGVmaW5lKEdwLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JcIik7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgZXhwb3J0cy5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIGV4cG9ydHMudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZVxuICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgLy8gcmVnZW5lcmF0b3JSdW50aW1lIGluIHRoZSBvdXRlciBzY29wZSwgd2hpY2ggYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlXG4gIC8vIGluamVjdGVkIGVhc2lseSBieSBgYmluL3JlZ2VuZXJhdG9yIC0taW5jbHVkZS1ydW50aW1lIHNjcmlwdC5qc2AuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KFxuICAvLyBJZiB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGUsIHVzZSBtb2R1bGUuZXhwb3J0c1xuICAvLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuICAvLyBvYmplY3QuIEVpdGhlciB3YXksIHRoZSByZXN1bHRpbmcgb2JqZWN0IHdpbGwgYmUgdXNlZCB0byBpbml0aWFsaXplXG4gIC8vIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgdmFyaWFibGUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuXG4gIHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgPyBtb2R1bGUuZXhwb3J0cyA6IHt9XG4pKTtcblxudHJ5IHtcbiAgcmVnZW5lcmF0b3JSdW50aW1lID0gcnVudGltZTtcbn0gY2F0Y2ggKGFjY2lkZW50YWxTdHJpY3RNb2RlKSB7XG4gIC8vIFRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgcnVubmluZyBpbiBzdHJpY3QgbW9kZSwgc28gdGhlIGFib3ZlXG4gIC8vIGFzc2lnbm1lbnQgc2hvdWxkIGFsd2F5cyB3b3JrIHVubGVzcyBzb21ldGhpbmcgaXMgbWlzY29uZmlndXJlZC4gSnVzdFxuICAvLyBpbiBjYXNlIHJ1bnRpbWUuanMgYWNjaWRlbnRhbGx5IHJ1bnMgaW4gc3RyaWN0IG1vZGUsIHdlIGNhbiBlc2NhcGVcbiAgLy8gc3RyaWN0IG1vZGUgdXNpbmcgYSBnbG9iYWwgRnVuY3Rpb24gY2FsbC4gVGhpcyBjb3VsZCBjb25jZWl2YWJseSBmYWlsXG4gIC8vIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZm9yYmlkcyB1c2luZyBGdW5jdGlvbiwgYnV0IGluIHRoYXQgY2FzZVxuICAvLyB0aGUgcHJvcGVyIHNvbHV0aW9uIGlzIHRvIGZpeCB0aGUgYWNjaWRlbnRhbCBzdHJpY3QgbW9kZSBwcm9ibGVtLiBJZlxuICAvLyB5b3UndmUgbWlzY29uZmlndXJlZCB5b3VyIGJ1bmRsZXIgdG8gZm9yY2Ugc3RyaWN0IG1vZGUgYW5kIGFwcGxpZWQgYVxuICAvLyBDU1AgdG8gZm9yYmlkIEZ1bmN0aW9uLCBhbmQgeW91J3JlIG5vdCB3aWxsaW5nIHRvIGZpeCBlaXRoZXIgb2YgdGhvc2VcbiAgLy8gcHJvYmxlbXMsIHBsZWFzZSBkZXRhaWwgeW91ciB1bmlxdWUgcHJlZGljYW1lbnQgaW4gYSBHaXRIdWIgaXNzdWUuXG4gIEZ1bmN0aW9uKFwiclwiLCBcInJlZ2VuZXJhdG9yUnVudGltZSA9IHJcIikocnVudGltZSk7XG59XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBGVU5DVElPTl9OQU1FX0VYSVNUUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuRVhJU1RTO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uUHJvdG90eXBlLnRvU3RyaW5nKTtcbnZhciBuYW1lUkUgPSAvZnVuY3Rpb25cXGIoPzpcXHN8XFwvXFwqW1xcU1xcc10qP1xcKlxcL3xcXC9cXC9bXlxcblxccl0qW1xcblxccl0rKSooW15cXHMoL10qKS87XG52YXIgcmVnRXhwRXhlYyA9IHVuY3VycnlUaGlzKG5hbWVSRS5leGVjKTtcbnZhciBOQU1FID0gJ25hbWUnO1xuXG4vLyBGdW5jdGlvbiBpbnN0YW5jZXMgYC5uYW1lYCBwcm9wZXJ0eVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1mdW5jdGlvbi1pbnN0YW5jZXMtbmFtZVxuaWYgKERFU0NSSVBUT1JTICYmICFGVU5DVElPTl9OQU1FX0VYSVNUUykge1xuICBkZWZpbmVQcm9wZXJ0eShGdW5jdGlvblByb3RvdHlwZSwgTkFNRSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiByZWdFeHBFeGVjKG5hbWVSRSwgZnVuY3Rpb25Ub1N0cmluZyh0aGlzKSlbMV07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAodHlwZW9mIGFyZ3VtZW50ID09ICdvYmplY3QnIHx8IGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArIFN0cmluZyhhcmd1bWVudCkgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gLS0gc2FmZSAqL1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFQb3NzaWJsZVByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qtc2V0cHJvdG90eXBlb2YgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKCdfX3Byb3RvX18nIGluIHt9ID8gZnVuY3Rpb24gKCkge1xuICB2YXIgQ09SUkVDVF9TRVRURVIgPSBmYWxzZTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdmFyIHNldHRlcjtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG4gICAgc2V0dGVyID0gdW5jdXJyeVRoaXMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0KTtcbiAgICBzZXR0ZXIodGVzdCwgW10pO1xuICAgIENPUlJFQ1RfU0VUVEVSID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIGFuT2JqZWN0KE8pO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgaWYgKENPUlJFQ1RfU0VUVEVSKSBzZXR0ZXIoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xuXG4vLyBgT2JqZWN0LnNldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnNldHByb3RvdHlwZW9mXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIHNldFByb3RvdHlwZU9mOiBzZXRQcm90b3R5cGVPZlxufSk7XG4iLCJ0eXBlIFBsYXRmb3JtID0gXCJCcm93c2VyXCIgfCBcIk5vZGUuanNcIjtcblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybTtcblxuICBjb25zdHJ1Y3RvcihwbGF0Zm9ybTogUGxhdGZvcm0pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYFRoaXMgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpbiAke3BsYXRmb3JtfSBlbnZpcm9ubWVudGA7XG4gICAgc3VwZXIobWVzc2FnZSk7XG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9FcnJvciNDdXN0b21fRXJyb3JfVHlwZXNcbiAgICAvLyBNYWludGFpbnMgcHJvcGVyIHN0YWNrIHRyYWNlIGZvciB3aGVyZSBvdXIgZXJyb3Igd2FzIHRocm93biAob25seSBhdmFpbGFibGUgb24gVjgpXG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBVbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3IpO1xuICAgIH1cblxuICAgIHRoaXMubmFtZSA9IFwiVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yXCI7XG4gICAgdGhpcy5wbGF0Zm9ybSA9IHBsYXRmb3JtO1xuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbiAgICAvLyBTZXQgdGhlIHByb3RvdHlwZSBleHBsaWNpdGx5LlxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBVbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yIH0gZnJvbSBcIi4vVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yXCI7XG5pbXBvcnQgeyBEaXNjcmltaW5hdGVkQXV0aCB9IGZyb20gXCIuLi90eXBlcy9hdXRoXCI7XG5cbmV4cG9ydCBjb25zdCByZWFkRmlsZUZyb21QYXRoID0gKGZpbGVQYXRoOiBzdHJpbmcpID0+IHtcbiAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvcihcIkJyb3dzZXJcIik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVxdWVzdFRva2VuID0gYXN5bmMgKCkgPT4ge1xuICBpZiAoXG4gICAgdHlwZW9mIGtpbnRvbmUgPT09IFwib2JqZWN0XCIgJiZcbiAgICBraW50b25lICE9PSBudWxsICYmXG4gICAgdHlwZW9mIGtpbnRvbmUuZ2V0UmVxdWVzdFRva2VuID09PSBcImZ1bmN0aW9uXCJcbiAgKSB7XG4gICAgcmV0dXJuIGtpbnRvbmUuZ2V0UmVxdWVzdFRva2VuKCk7XG4gIH1cblxuICBpZiAoXG4gICAgdHlwZW9mIGdhcm9vbiA9PT0gXCJvYmplY3RcIiAmJlxuICAgIGdhcm9vbiAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiBnYXJvb24uY29ubmVjdD8ua2ludG9uZT8uZ2V0UmVxdWVzdFRva2VuID09PSBcImZ1bmN0aW9uXCJcbiAgKSB7XG4gICAgcmV0dXJuIGdhcm9vbi5jb25uZWN0LmtpbnRvbmUuZ2V0UmVxdWVzdFRva2VuKCk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXCJzZXNzaW9uIGF1dGhlbnRpY2F0aW9uIG11c3Qgc3BlY2lmeSBhIHJlcXVlc3QgdG9rZW5cIik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdEF1dGggPSAoKTogRGlzY3JpbWluYXRlZEF1dGggPT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwic2Vzc2lvblwiLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUGxhdGZvcm1EZXBlbmRlbnRDb25maWcgPSAoKSA9PiB7XG4gIHJldHVybiB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEhlYWRlcnMgPSAoKSA9PiB7XG4gIHJldHVybiB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEZvcm1EYXRhVmFsdWUgPSAoZGF0YTogdW5rbm93bikgPT4ge1xuICByZXR1cm4gbmV3IEJsb2IoW2RhdGFdKTtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEJhc2VVcmwgPSAoYmFzZVVybD86IHN0cmluZykgPT4ge1xuICBpZiAoYmFzZVVybCkge1xuICAgIHJldHVybiBiYXNlVXJsO1xuICB9XG5cbiAgY29uc3QgeyBob3N0LCBwcm90b2NvbCB9ID0gbG9jYXRpb24hO1xuICByZXR1cm4gYCR7cHJvdG9jb2x9Ly8ke2hvc3R9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gKCkgPT4ge1xuICByZXR1cm4gUEFDS0FHRV9WRVJTSU9OO1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBiaW5kID0gdW5jdXJyeVRoaXModW5jdXJyeVRoaXMuYmluZCk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQpIHtcbiAgYUNhbGxhYmxlKGZuKTtcbiAgcmV0dXJuIHRoYXQgPT09IHVuZGVmaW5lZCA/IGZuIDogTkFUSVZFX0JJTkQgPyBiaW5kKGZuLCB0aGF0KSA6IGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5cbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCwgZmlsdGVyUmVqZWN0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIElTX0ZJTFRFUl9SRUpFQ1QgPSBUWVBFID09IDc7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKHNlbGYpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNyZWF0ZSA9IHNwZWNpZmljQ3JlYXRlIHx8IGFycmF5U3BlY2llc0NyZWF0ZTtcbiAgICB2YXIgdGFyZ2V0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSIHx8IElTX0ZJTFRFUl9SRUpFQ1QgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHRhcmdldFtpbmRleF0gPSByZXN1bHQ7IC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsdWU7ICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiBwdXNoKHRhcmdldCwgdmFsdWUpOyAgICAgIC8vIGZpbHRlclxuICAgICAgICB9IGVsc2Ugc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgIC8vIGV2ZXJ5XG4gICAgICAgICAgY2FzZSA3OiBwdXNoKHRhcmdldCwgdmFsdWUpOyAgICAgIC8vIGZpbHRlclJlamVjdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuICBmb3JFYWNoOiBjcmVhdGVNZXRob2QoMCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUubWFwYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4gIG1hcDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc29tZVxuICBzb21lOiBjcmVhdGVNZXRob2QoMyksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5ldmVyeVxuICBldmVyeTogY3JlYXRlTWV0aG9kKDQpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhcbiAgZmluZEluZGV4OiBjcmVhdGVNZXRob2QoNiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyUmVqZWN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG4gIGZpbHRlclJlamVjdDogY3JlYXRlTWV0aG9kKDcpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJG1hcCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5tYXA7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xuXG52YXIgSEFTX1NQRUNJRVNfU1VQUE9SVCA9IGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ21hcCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbi8vIHdpdGggYWRkaW5nIHN1cHBvcnQgb2YgQEBzcGVjaWVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhSEFTX1NQRUNJRVNfU1VQUE9SVCB9LCB7XG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRtYXAodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsImV4cG9ydCBjb25zdCBidWlsZFBhdGggPSAocGFyYW1zOiB7XG4gIGVuZHBvaW50TmFtZTogc3RyaW5nO1xuICBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHByZXZpZXc/OiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGVuZHBvaW50TmFtZSwgZ3Vlc3RTcGFjZUlkLCBwcmV2aWV3IH0gPSBwYXJhbXM7XG4gIGNvbnN0IGd1ZXN0UGF0aCA9IGd1ZXN0U3BhY2VJZCAhPT0gdW5kZWZpbmVkID8gYC9ndWVzdC8ke2d1ZXN0U3BhY2VJZH1gIDogXCJcIjtcbiAgY29uc3QgcHJldmlld1BhdGggPSBwcmV2aWV3ID8gXCIvcHJldmlld1wiIDogXCJcIjtcbiAgcmV0dXJuIGAvayR7Z3Vlc3RQYXRofS92MSR7cHJldmlld1BhdGh9LyR7ZW5kcG9pbnROYW1lfS5qc29uYDtcbn07XG4iLCJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIi4uL2h0dHBcIjtcbmltcG9ydCB7IGJ1aWxkUGF0aCB9IGZyb20gXCIuLi91cmxcIjtcblxuZXhwb3J0IHR5cGUgRW5kcG9pbnROYW1lID1cbiAgfCBcInJlY29yZFwiXG4gIHwgXCJyZWNvcmRzXCJcbiAgfCBcInJlY29yZC9zdGF0dXNcIlxuICB8IFwicmVjb3Jkcy9zdGF0dXNcIlxuICB8IFwicmVjb3JkL2Fzc2lnbmVlc1wiO1xuXG5leHBvcnQgY2xhc3MgQnVsa1JlcXVlc3RDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogSHR0cENsaWVudDtcbiAgcHJpdmF0ZSBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBSRVFVRVNUU19MRU5HVEhfTElNSVQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihjbGllbnQ6IEh0dHBDbGllbnQsIGd1ZXN0U3BhY2VJZD86IG51bWJlciB8IHN0cmluZykge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICAgIHRoaXMuZ3Vlc3RTcGFjZUlkID0gZ3Vlc3RTcGFjZUlkO1xuICAgIHRoaXMuUkVRVUVTVFNfTEVOR1RIX0xJTUlUID0gMjA7XG4gIH1cblxuICBwdWJsaWMgc2VuZChwYXJhbXM6IHtcbiAgICByZXF1ZXN0czogQXJyYXk8XG4gICAgICB8IHtcbiAgICAgICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgICAgICBhcGk6IHN0cmluZztcbiAgICAgICAgICBwYXlsb2FkOiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIG1ldGhvZDogc3RyaW5nO1xuICAgICAgICAgIGVuZHBvaW50TmFtZTogRW5kcG9pbnROYW1lO1xuICAgICAgICAgIHBheWxvYWQ6IG9iamVjdDtcbiAgICAgICAgfVxuICAgID47XG4gIH0pOiBQcm9taXNlPHsgcmVzdWx0czogQXJyYXk8eyBbSzogc3RyaW5nXTogYW55IH0+IH0+IHtcbiAgICBjb25zdCB7IHJlcXVlc3RzOiByZXF1ZXN0c1BhcmFtIH0gPSBwYXJhbXM7XG5cbiAgICBjb25zdCByZXF1ZXN0cyA9IHJlcXVlc3RzUGFyYW0ubWFwKChyZXF1ZXN0KSA9PiB7XG4gICAgICBpZiAoXCJlbmRwb2ludE5hbWVcIiBpbiByZXF1ZXN0KSB7XG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnROYW1lLCAuLi5yZXN0IH0gPSByZXF1ZXN0O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFwaTogdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHsgZW5kcG9pbnROYW1lIH0pLFxuICAgICAgICAgIC4uLnJlc3QsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9KTtcblxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImJ1bGtSZXF1ZXN0XCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnBvc3QocGF0aCwgeyByZXF1ZXN0cyB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZChwYXJhbXM6IHsgZW5kcG9pbnROYW1lOiBzdHJpbmcgfSkge1xuICAgIHJldHVybiBidWlsZFBhdGgoe1xuICAgICAgLi4ucGFyYW1zLFxuICAgICAgZ3Vlc3RTcGFjZUlkOiB0aGlzLmd1ZXN0U3BhY2VJZCxcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCIuLi9odHRwXCI7XG5pbXBvcnQgeyBidWlsZFBhdGggfSBmcm9tIFwiLi4vdXJsXCI7XG5pbXBvcnQge1xuICBBcHBJRCxcbiAgUmVjb3JkSUQsXG4gIFJldmlzaW9uLFxuICBQcm9wZXJ0aWVzLFxuICBMYW5nLFxuICBMYXlvdXQsXG4gIFZpZXdGb3JSZXNwb25zZSxcbiAgVmlld0ZvclBhcmFtZXRlcixcbiAgQXBwLFxuICBTdGF0ZUZvclJlc3BvbnNlLFxuICBTdGF0ZUZvclBhcmFtZXRlcixcbiAgQWN0aW9uRm9yUmVzcG9uc2UsXG4gIEFjdGlvbkZvclBhcmFtZXRlcixcbiAgRGVwbG95U3RhdHVzLFxuICBGaWVsZFJpZ2h0Rm9yUmVzcG9uc2UsXG4gIEZpZWxkUmlnaHRGb3JQYXJhbWV0ZXIsXG4gIEFwcFJpZ2h0RW50aXR5Rm9yUmVzcG9uc2UsXG4gIEFwcFJpZ2h0RW50aXR5Rm9yUGFyYW1ldGVyLFxuICBFdmFsdWF0ZWRSZWNvcmRSaWdodCxcbiAgUmVjb3JkUmlnaHRGb3JSZXNwb25zZSxcbiAgUmVjb3JkUmlnaHRGb3JQYXJhbWV0ZXIsXG4gIEFwcEN1c3RvbWl6ZVNjb3BlLFxuICBBcHBDdXN0b21pemVGb3JSZXNwb25zZSxcbiAgQXBwQ3VzdG9taXplRm9yUGFyYW1ldGVyLFxuICBHZW5lcmFsTm90aWZpY2F0aW9uRm9yUGFyYW1ldGVyLFxuICBHZW5lcmFsTm90aWZpY2F0aW9uRm9yUmVzcG9uc2UsXG4gIFBlclJlY29yZE5vdGlmaWNhdGlvbkZvclBhcmFtZXRlcixcbiAgUGVyUmVjb3JkTm90aWZpY2F0aW9uRm9yUmVzcG9uc2UsXG4gIFJlbWluZGVyTm90aWZpY2F0aW9uRm9yUGFyYW1ldGVyLFxuICBSZW1pbmRlck5vdGlmaWNhdGlvbkZvclJlc3BvbnNlLFxuICBSZXBvcnRGb3JQYXJhbWV0ZXIsXG4gIFJlcG9ydEZvclJlc3BvbnNlLFxuICBBcHBBY3Rpb25zRm9yUGFyYW1ldGVyLFxuICBBcHBBY3Rpb25zRm9yUmVzcG9uc2UsXG59IGZyb20gXCIuL3R5cGVzXCI7XG50eXBlIFJvd0xheW91dEZvclBhcmFtZXRlciA9IHtcbiAgdHlwZTogXCJST1dcIjtcbiAgZmllbGRzOiBBcnJheTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT47XG59O1xudHlwZSBTdWJ0YWJsZUxheW91dEZvclBhcmFtZXRlciA9IHtcbiAgdHlwZTogXCJTVUJUQUJMRVwiO1xuICBjb2RlOiBzdHJpbmc7XG4gIGZpZWxkczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+O1xufTtcbnR5cGUgR3JvdXBMYXlvdXRGb3JQYXJhbWV0ZXIgPSB7XG4gIHR5cGU6IFwiR1JPVVBcIjtcbiAgY29kZTogc3RyaW5nO1xuICBsYXlvdXQ6IFJvd0xheW91dEZvclBhcmFtZXRlcltdO1xufTtcbnR5cGUgTGF5b3V0Rm9yUGFyYW1ldGVyID0gQXJyYXk8XG4gIFJvd0xheW91dEZvclBhcmFtZXRlciB8IFN1YnRhYmxlTGF5b3V0Rm9yUGFyYW1ldGVyIHwgR3JvdXBMYXlvdXRGb3JQYXJhbWV0ZXJcbj47XG50eXBlIE5lc3RlZFBhcnRpYWw8VD4gPSBUIGV4dGVuZHMgb2JqZWN0XG4gID8ge1xuICAgICAgW0sgaW4ga2V5b2YgVF0/OiBOZXN0ZWRQYXJ0aWFsPFRbS10+O1xuICAgIH1cbiAgOiBUO1xuXG50eXBlIFByb3BlcnRpZXNGb3JQYXJhbWV0ZXIgPSBOZXN0ZWRQYXJ0aWFsPFByb3BlcnRpZXM+O1xuXG5leHBvcnQgY2xhc3MgQXBwQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEh0dHBDbGllbnQ7XG4gIHByaXZhdGUgZ3Vlc3RTcGFjZUlkPzogbnVtYmVyIHwgc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNsaWVudDogSHR0cENsaWVudCwgZ3Vlc3RTcGFjZUlkPzogbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnQ7XG4gICAgdGhpcy5ndWVzdFNwYWNlSWQgPSBndWVzdFNwYWNlSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUZpZWxkczxUIGV4dGVuZHMgUHJvcGVydGllcz4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYW5nPzogTGFuZztcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8eyBwcm9wZXJ0aWVzOiBUOyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvZm9ybS9maWVsZHNcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCB7IC4uLnJlc3QgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkRm9ybUZpZWxkcyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHByb3BlcnRpZXM6IFByb3BlcnRpZXNGb3JQYXJhbWV0ZXI7XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvZm9ybS9maWVsZHNcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnBvc3QocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JtRmllbGRzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcHJvcGVydGllczogUHJvcGVydGllc0ZvclBhcmFtZXRlcjtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9mb3JtL2ZpZWxkc1wiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRm9ybUZpZWxkcyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGZpZWxkczogc3RyaW5nW107XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSkge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9mb3JtL2ZpZWxkc1wiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZGVsZXRlKHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUxheW91dDxUIGV4dGVuZHMgTGF5b3V0PihwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7IGxheW91dDogVDsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2Zvcm0vbGF5b3V0XCIsXG4gICAgICBwcmV2aWV3LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgeyAuLi5yZXN0IH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1MYXlvdXQocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYXlvdXQ6IExheW91dEZvclBhcmFtZXRlcjtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9mb3JtL2xheW91dFwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Vmlld3MocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYW5nPzogTGFuZztcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8e1xuICAgIHZpZXdzOiB7IFt2aWV3TmFtZTogc3RyaW5nXTogVmlld0ZvclJlc3BvbnNlIH07XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC92aWV3c1wiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHJlc3QpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVZpZXdzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgdmlld3M6IHsgW3ZpZXdOYW1lOiBzdHJpbmddOiBWaWV3Rm9yUGFyYW1ldGVyIH07XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8e1xuICAgIHZpZXdzOiB7IFt2aWV3TmFtZTogc3RyaW5nXTogeyBpZDogc3RyaW5nIH0gfTtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL3ZpZXdzXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBcHAocGFyYW1zOiB7IGlkOiBBcHBJRCB9KTogUHJvbWlzZTxBcHA+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHBcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXBwcyhwYXJhbXM6IHtcbiAgICBpZHM/OiBBcHBJRFtdIHwgbnVsbDtcbiAgICBjb2Rlcz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgICBzcGFjZUlkcz86IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBudWxsO1xuICAgIGxpbWl0Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIG9mZnNldD86IHN0cmluZyB8IG51bWJlcjtcbiAgfSk6IFByb21pc2U8eyBhcHBzOiBBcHBbXSB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwc1wiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBcHAocGFyYW1zOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHNwYWNlPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9KTogUHJvbWlzZTx7IGFwcDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCB7IG5hbWUsIHNwYWNlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIGlmIChzcGFjZSkge1xuICAgICAgLy8gTk9URTogQWx0aG91Z2ggYHRocmVhZGAgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGluIFJFU1QgQVBJLFxuICAgICAgLy8gdGhlcmUgYXJlIG5vIHZpc3VhbCByZXByZXNlbnRhdGlvbnMgb2YgYXBwcyBiZWluZyByZWxhdGVkIHRvIHRocmVhZHMuXG4gICAgICAvLyBNb3Jlb3ZlciwgdGhlcmUgaXMgY3VycmVudGx5IG5vIGhlbHBmdWwgcmVhc29uIHRvIGNyZWF0ZSBhcHBzIGluIHRocmVhZHMgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCB0aHJlYWQsXG4gICAgICAvLyBzbyB0aGUgQVBJIENsaWVudCBzZXRzIHRoZSBkZWZhdWx0IHRocmVhZCBpZCBoZXJlLlxuICAgICAgY29uc3Qgc3BhY2VQYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgICAgZW5kcG9pbnROYW1lOiBcInNwYWNlXCIsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHsgZGVmYXVsdFRocmVhZCB9ID0gYXdhaXQgdGhpcy5jbGllbnQuZ2V0KHNwYWNlUGF0aCwge1xuICAgICAgICBpZDogc3BhY2UsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHsgLi4ucGFyYW1zLCB0aHJlYWQ6IGRlZmF1bHRUaHJlYWQgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHsgbmFtZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBcHBTZXR0aW5ncyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGxhbmc/OiBMYW5nO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgaWNvbjpcbiAgICAgIHwge1xuICAgICAgICAgIHR5cGU6IFwiRklMRVwiO1xuICAgICAgICAgIGZpbGU6IHtcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gICAgICAgICAgICBmaWxlS2V5OiBzdHJpbmc7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICBzaXplOiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfCB7IHR5cGU6IFwiUFJFU0VUXCI7IGtleTogc3RyaW5nIH07XG4gICAgdGhlbWU6XG4gICAgICB8IFwiV0hJVEVcIlxuICAgICAgfCBcIkNMSVBCT0FSRFwiXG4gICAgICB8IFwiQklOREVSXCJcbiAgICAgIHwgXCJQRU5DSUxcIlxuICAgICAgfCBcIkNMSVBTXCJcbiAgICAgIHwgXCJSRURcIlxuICAgICAgfCBcIkJMVUVcIlxuICAgICAgfCBcIkdSRUVOXCJcbiAgICAgIHwgXCJZRUxMT1dcIlxuICAgICAgfCBcIkJMQUNLXCI7XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9zZXR0aW5nc1wiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHJlc3QpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFwcFNldHRpbmdzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBpY29uPzpcbiAgICAgIHwge1xuICAgICAgICAgIHR5cGU6IFwiRklMRVwiO1xuICAgICAgICAgIGZpbGU6IHtcbiAgICAgICAgICAgIGZpbGVLZXk6IHN0cmluZztcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB8IHsgdHlwZTogXCJQUkVTRVRcIjsga2V5OiBzdHJpbmcgfTtcbiAgICB0aGVtZT86XG4gICAgICB8IFwiV0hJVEVcIlxuICAgICAgfCBcIkNMSVBCT0FSRFwiXG4gICAgICB8IFwiQklOREVSXCJcbiAgICAgIHwgXCJQRU5DSUxcIlxuICAgICAgfCBcIkNMSVBTXCJcbiAgICAgIHwgXCJSRURcIlxuICAgICAgfCBcIkJMVUVcIlxuICAgICAgfCBcIkdSRUVOXCJcbiAgICAgIHwgXCJZRUxMT1dcIlxuICAgICAgfCBcIkJMQUNLXCI7XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvc2V0dGluZ3NcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldFByb2Nlc3NNYW5hZ2VtZW50KHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbGFuZz86IExhbmc7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgc3RhdGVzOiB7XG4gICAgICBbc3RhdHVzTmFtZTogc3RyaW5nXTogU3RhdGVGb3JSZXNwb25zZTtcbiAgICB9O1xuICAgIGFjdGlvbnM6IEFjdGlvbkZvclJlc3BvbnNlW107XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9zdGF0dXNcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCByZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVQcm9jZXNzTWFuYWdlbWVudChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGVuYWJsZT86IGJvb2xlYW47XG4gICAgc3RhdGVzPzogeyBbc3RhdHVzTmFtZTogc3RyaW5nXTogU3RhdGVGb3JQYXJhbWV0ZXIgfTtcbiAgICBhY3Rpb25zPzogQWN0aW9uRm9yUGFyYW1ldGVyW107XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvc3RhdHVzXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZXBsb3lTdGF0dXMocGFyYW1zOiB7XG4gICAgYXBwczogQXBwSURbXTtcbiAgfSk6IFByb21pc2U8eyBhcHBzOiBBcnJheTx7IGFwcDogc3RyaW5nOyBzdGF0dXM6IERlcGxveVN0YXR1cyB9PiB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2RlcGxveVwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZGVwbG95QXBwKHBhcmFtczoge1xuICAgIGFwcHM6IEFycmF5PHsgYXBwOiBBcHBJRDsgcmV2aXNpb24/OiBSZXZpc2lvbiB9PjtcbiAgICByZXZlcnQ/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7fT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9kZXBsb3lcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnBvc3QocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWVsZEFjbChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7IHJpZ2h0czogRmllbGRSaWdodEZvclJlc3BvbnNlW107IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImZpZWxkL2FjbFwiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHsgLi4ucmVzdCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGaWVsZEFjbChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJpZ2h0czogRmllbGRSaWdodEZvclBhcmFtZXRlcltdO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgLy8gTk9URTogV2hlbiBleGVjdXRpbmcgdGhpcyBBUEkgd2l0aG91dCBgcHJldmlld2AsXG4gICAgLy8gYWxsIHByZS1saXZlIGFwcCdzIHNldHRpbmdzIHdpbGwgYmUgZGVwbG95ZWQgdG8gbGl2ZSBhcHAuXG4gICAgLy8gVGhpcyBiZWhhdmlvciBtYXkgbm90IGJlIHdoYXQgdGhlIHVzZXJzIGV4cGVjdGVkLFxuICAgIC8vIHNvIHdlIGRpc2FibGUgaXQgdGVtcG9yYXJpbHkuXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiZmllbGQvYWNsXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBcHBBY2wocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8eyByaWdodHM6IEFwcFJpZ2h0RW50aXR5Rm9yUmVzcG9uc2VbXTsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2FjbFwiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHsgLi4ucmVzdCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBcHBBY2wocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByaWdodHM6IEFwcFJpZ2h0RW50aXR5Rm9yUGFyYW1ldGVyW107XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICAvLyBOT1RFOiBXaGVuIGV4ZWN1dGluZyB0aGlzIEFQSSB3aXRob3V0IGBwcmV2aWV3YCxcbiAgICAvLyBhbGwgcHJlLWxpdmUgYXBwJ3Mgc2V0dGluZ3Mgd2lsbCBiZSBkZXBsb3llZCB0byBsaXZlIGFwcC5cbiAgICAvLyBUaGlzIGJlaGF2aW9yIG1heSBub3QgYmUgd2hhdCB0aGUgdXNlcnMgZXhwZWN0ZWQsXG4gICAgLy8gc28gd2UgZGlzYWJsZSBpdCB0ZW1wb3JhcmlseS5cbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvYWNsXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBldmFsdWF0ZVJlY29yZHNBY2wocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBpZHM6IFJlY29yZElEW107XG4gIH0pOiBQcm9taXNlPHsgcmlnaHRzOiBFdmFsdWF0ZWRSZWNvcmRSaWdodFtdIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRzL2FjbC9ldmFsdWF0ZVwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWNvcmRBY2wocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYW5nPzogTGFuZztcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8eyByaWdodHM6IFJlY29yZFJpZ2h0Rm9yUmVzcG9uc2VbXTsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3JkL2FjbFwiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHsgLi4ucmVzdCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSZWNvcmRBY2wocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByaWdodHM6IFJlY29yZFJpZ2h0Rm9yUGFyYW1ldGVyW107XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICAvLyBOT1RFOiBXaGVuIGV4ZWN1dGluZyB0aGlzIEFQSSB3aXRob3V0IGBwcmV2aWV3YCxcbiAgICAvLyBhbGwgcHJlLWxpdmUgYXBwJ3Mgc2V0dGluZ3Mgd2lsbCBiZSBkZXBsb3llZCB0byBsaXZlIGFwcC5cbiAgICAvLyBUaGlzIGJlaGF2aW9yIG1heSBub3QgYmUgd2hhdCB0aGUgdXNlcnMgZXhwZWN0ZWQsXG4gICAgLy8gc28gd2UgZGlzYWJsZSBpdCB0ZW1wb3JhcmlseS5cbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmQvYWNsXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBcHBDdXN0b21pemUocGFyYW1zOiB7IGFwcDogQXBwSUQ7IHByZXZpZXc/OiBib29sZWFuIH0pOiBQcm9taXNlPHtcbiAgICBzY29wZTogQXBwQ3VzdG9taXplU2NvcGU7XG4gICAgZGVza3RvcDogQXBwQ3VzdG9taXplRm9yUmVzcG9uc2U7XG4gICAgbW9iaWxlOiBBcHBDdXN0b21pemVGb3JSZXNwb25zZTtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2N1c3RvbWl6ZVwiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHsgLi4ucmVzdCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBcHBDdXN0b21pemUocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBzY29wZT86IEFwcEN1c3RvbWl6ZVNjb3BlO1xuICAgIGRlc2t0b3A/OiBBcHBDdXN0b21pemVGb3JQYXJhbWV0ZXI7XG4gICAgbW9iaWxlPzogQXBwQ3VzdG9taXplRm9yUGFyYW1ldGVyO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2N1c3RvbWl6ZVwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0R2VuZXJhbE5vdGlmaWNhdGlvbnMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8e1xuICAgIG5vdGlmaWNhdGlvbnM6IEdlbmVyYWxOb3RpZmljYXRpb25Gb3JSZXNwb25zZVtdO1xuICAgIG5vdGlmeVRvQ29tbWVudGVyOiBib29sZWFuO1xuICAgIHJldmlzaW9uOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvbm90aWZpY2F0aW9ucy9nZW5lcmFsXCIsXG4gICAgICBwcmV2aWV3LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgeyAuLi5yZXN0IH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUdlbmVyYWxOb3RpZmljYXRpb25zKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbm90aWZpY2F0aW9ucz86IEdlbmVyYWxOb3RpZmljYXRpb25Gb3JQYXJhbWV0ZXJbXTtcbiAgICBub3RpZnlUb0NvbW1lbnRlcj86IGJvb2xlYW47XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvbm90aWZpY2F0aW9ucy9nZW5lcmFsXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQZXJSZWNvcmROb3RpZmljYXRpb25zKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbGFuZz86IExhbmc7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHtcbiAgICBub3RpZmljYXRpb25zOiBQZXJSZWNvcmROb3RpZmljYXRpb25Gb3JSZXNwb25zZVtdO1xuICAgIHJldmlzaW9uOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvbm90aWZpY2F0aW9ucy9wZXJSZWNvcmRcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCByZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVQZXJSZWNvcmROb3RpZmljYXRpb25zKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbm90aWZpY2F0aW9uczogUGVyUmVjb3JkTm90aWZpY2F0aW9uRm9yUGFyYW1ldGVyW107XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvbm90aWZpY2F0aW9ucy9wZXJSZWNvcmRcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldFJlbWluZGVyTm90aWZpY2F0aW9ucyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGxhbmc/OiBMYW5nO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7XG4gICAgbm90aWZpY2F0aW9uczogUmVtaW5kZXJOb3RpZmljYXRpb25Gb3JSZXNwb25zZVtdO1xuICAgIHRpbWV6b25lOiBzdHJpbmc7XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9ub3RpZmljYXRpb25zL3JlbWluZGVyXCIsXG4gICAgICBwcmV2aWV3LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgcmVzdCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVtaW5kZXJOb3RpZmljYXRpb25zKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbm90aWZpY2F0aW9ucz86IFJlbWluZGVyTm90aWZpY2F0aW9uRm9yUGFyYW1ldGVyW107XG4gICAgdGltZXpvbmU/OiBzdHJpbmc7XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvbm90aWZpY2F0aW9ucy9yZW1pbmRlclwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVwb3J0cyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGxhbmc/OiBMYW5nO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7XG4gICAgcmVwb3J0czogeyBbcmVwb3J0TmFtZTogc3RyaW5nXTogUmVwb3J0Rm9yUmVzcG9uc2UgfTtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL3JlcG9ydHNcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCByZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVSZXBvcnRzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVwb3J0czogUmVwb3J0Rm9yUGFyYW1ldGVyO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICAgIHJlcG9ydHM6IHsgW3JlcG9ydE5hbWU6IHN0cmluZ106IHsgaWQ6IHN0cmluZyB9IH07XG4gIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvcmVwb3J0c1wiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXBwQWN0aW9ucyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGxhbmc/OiBMYW5nO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7XG4gICAgYWN0aW9uczogQXBwQWN0aW9uc0ZvclJlc3BvbnNlO1xuICAgIHJldmlzaW9uOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvYWN0aW9uc1wiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHJlc3QpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFwcEFjdGlvbnMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBhY3Rpb25zOiBBcHBBY3Rpb25zRm9yUGFyYW1ldGVyO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICAgIGFjdGlvbnM6IHsgW2FjdGlvbk5hbWU6IHN0cmluZ106IHsgaWQ6IHN0cmluZyB9IH07XG4gIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvYWN0aW9uc1wiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQocGFyYW1zOiB7XG4gICAgZW5kcG9pbnROYW1lOiBzdHJpbmc7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pIHtcbiAgICByZXR1cm4gYnVpbGRQYXRoKHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIGd1ZXN0U3BhY2VJZDogdGhpcy5ndWVzdFNwYWNlSWQsXG4gICAgfSk7XG4gIH1cbn1cbiIsInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWtleXMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1hc3NpZ24gLS0gc2FmZVxudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGBPYmplY3QuYXNzaWduYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmFzc2lnblxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHNob3VsZCBoYXZlIGNvcnJlY3Qgb3JkZXIgb2Ygb3BlcmF0aW9ucyAoRWRnZSBidWcpXG4gIGlmIChERVNDUklQVE9SUyAmJiAkYXNzaWduKHsgYjogMSB9LCAkYXNzaWduKGRlZmluZVByb3BlcnR5KHt9LCAnYScsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGhpcywgJ2InLCB7XG4gICAgICAgIHZhbHVlOiAzLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9KSwgeyBiOiAyIH0pKS5iICE9PSAxKSByZXR1cm4gdHJ1ZTtcbiAgLy8gc2hvdWxkIHdvcmsgd2l0aCBzeW1ib2xzIGFuZCBzaG91bGQgaGF2ZSBkZXRlcm1pbmlzdGljIHByb3BlcnR5IG9yZGVyIChWOCBidWcpXG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zeW1ib2wgLS0gc2FmZVxuICB2YXIgc3ltYm9sID0gU3ltYm9sKCk7XG4gIHZhciBhbHBoYWJldCA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbc3ltYm9sXSA9IDc7XG4gIGFscGhhYmV0LnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChjaHIpIHsgQltjaHJdID0gY2hyOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW3N5bWJvbF0gIT0gNyB8fCBvYmplY3RLZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBhbHBoYWJldDtcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG4gIHdoaWxlIChhcmd1bWVudHNMZW5ndGggPiBpbmRleCkge1xuICAgIHZhciBTID0gSW5kZXhlZE9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KG9iamVjdEtleXMoUyksIGdldE93blByb3BlcnR5U3ltYm9scyhTKSkgOiBvYmplY3RLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlLCBTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbicpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBPYmplY3QuYXNzaWduICE9PSBhc3NpZ24gfSwge1xuICBhc3NpZ246IGFzc2lnblxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xuXG52YXIgU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGNsYXNzb2YoYXJndW1lbnQpID09PSAnU3ltYm9sJykgdGhyb3cgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICByZXR1cm4gU3RyaW5nKGFyZ3VtZW50KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LXJlZ2V4cC5wcm90b3R5cGUuZmxhZ3Ncbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC5kb3RBbGwpIHJlc3VsdCArPSAncyc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSBhbmQgQ2xvc3VyZSBDb21waWxlciB0cmFuc3BpbGVzIFJlZ0V4cCgnYScsICd5JykgLT4gL2EveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgJFJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG5cbnZhciBVTlNVUFBPUlRFRF9ZID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUgPSAkUmVnRXhwKCdhJywgJ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ2FiY2QnKSAhPSBudWxsO1xufSk7XG5cbi8vIFVDIEJyb3dzZXIgYnVnXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTAwOFxudmFyIE1JU1NFRF9TVElDS1kgPSBVTlNVUFBPUlRFRF9ZIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEkUmVnRXhwKCdhJywgJ3knKS5zdGlja3k7XG59KTtcblxudmFyIEJST0tFTl9DQVJFVCA9IFVOU1VQUE9SVEVEX1kgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM2ODdcbiAgdmFyIHJlID0gJFJlZ0V4cCgnXnInLCAnZ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ3N0cicpICE9IG51bGw7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEJST0tFTl9DQVJFVDogQlJPS0VOX0NBUkVULFxuICBNSVNTRURfU1RJQ0tZOiBNSVNTRURfU1RJQ0tZLFxuICBVTlNVUFBPUlRFRF9ZOiBVTlNVUFBPUlRFRF9ZXG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnRpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0aWVzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTICYmICFWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIgcHJvcHMgPSB0b0luZGV4ZWRPYmplY3QoUHJvcGVydGllcyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5ID0ga2V5c1tpbmRleCsrXSwgcHJvcHNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwiLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3QgLS0gb2xkIElFLCBXU0ggKi9cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcblxudmFyIEdUID0gJz4nO1xudmFyIExUID0gJzwnO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIFNDUklQVCA9ICdzY3JpcHQnO1xudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xuXG52YXIgRW1wdHlDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxudmFyIHNjcmlwdFRhZyA9IGZ1bmN0aW9uIChjb250ZW50KSB7XG4gIHJldHVybiBMVCArIFNDUklQVCArIEdUICsgY29udGVudCArIExUICsgJy8nICsgU0NSSVBUICsgR1Q7XG59O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgQWN0aXZlWCBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVggPSBmdW5jdGlvbiAoYWN0aXZlWERvY3VtZW50KSB7XG4gIGFjdGl2ZVhEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJycpKTtcbiAgYWN0aXZlWERvY3VtZW50LmNsb3NlKCk7XG4gIHZhciB0ZW1wID0gYWN0aXZlWERvY3VtZW50LnBhcmVudFdpbmRvdy5PYmplY3Q7XG4gIGFjdGl2ZVhEb2N1bWVudCA9IG51bGw7IC8vIGF2b2lkIG1lbW9yeSBsZWFrXG4gIHJldHVybiB0ZW1wO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIE51bGxQcm90b09iamVjdFZpYUlGcmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBKUyA9ICdqYXZhJyArIFNDUklQVCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNDc1XG4gIGlmcmFtZS5zcmMgPSBTdHJpbmcoSlMpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnZG9jdW1lbnQuRj1PYmplY3QnKSk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIHJldHVybiBpZnJhbWVEb2N1bWVudC5GO1xufTtcblxuLy8gQ2hlY2sgZm9yIGRvY3VtZW50LmRvbWFpbiBhbmQgYWN0aXZlIHggc3VwcG9ydFxuLy8gTm8gbmVlZCB0byB1c2UgYWN0aXZlIHggYXBwcm9hY2ggd2hlbiBkb2N1bWVudC5kb21haW4gaXMgbm90IHNldFxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbS9pc3N1ZXMvMTUwXG4vLyB2YXJpYXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2tpdGNhbWJyaWRnZS9lczUtc2hpbS9jb21taXQvNGY3MzhhYzA2NjM0NlxuLy8gYXZvaWQgSUUgR0MgYnVnXG52YXIgYWN0aXZlWERvY3VtZW50O1xudmFyIE51bGxQcm90b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBhY3RpdmVYRG9jdW1lbnQgPSBuZXcgQWN0aXZlWE9iamVjdCgnaHRtbGZpbGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogaWdub3JlICovIH1cbiAgTnVsbFByb3RvT2JqZWN0ID0gdHlwZW9mIGRvY3VtZW50ICE9ICd1bmRlZmluZWQnXG4gICAgPyBkb2N1bWVudC5kb21haW4gJiYgYWN0aXZlWERvY3VtZW50XG4gICAgICA/IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KSAvLyBvbGQgSUVcbiAgICAgIDogTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lKClcbiAgICA6IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KTsgLy8gV1NIXG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkgZGVsZXRlIE51bGxQcm90b09iamVjdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gTnVsbFByb3RvT2JqZWN0KCk7XG59O1xuXG5oaWRkZW5LZXlzW0lFX1BST1RPXSA9IHRydWU7XG5cbi8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5Q29uc3RydWN0b3IoKTtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IE51bGxQcm90b09iamVjdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllc01vZHVsZS5mKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBiYWJlbC1taW5pZnkgYW5kIENsb3N1cmUgQ29tcGlsZXIgdHJhbnNwaWxlcyBSZWdFeHAoJy4nLCAncycpIC0+IC8uL3MgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxudmFyICRSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gJFJlZ0V4cCgnLicsICdzJyk7XG4gIHJldHVybiAhKHJlLmRvdEFsbCAmJiByZS5leGVjKCdcXG4nKSAmJiByZS5mbGFncyA9PT0gJ3MnKTtcbn0pO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBiYWJlbC1taW5pZnkgYW5kIENsb3N1cmUgQ29tcGlsZXIgdHJhbnNwaWxlcyBSZWdFeHAoJyg/PGE+YiknLCAnZycpIC0+IC8oPzxhPmIpL2cgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxudmFyICRSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gJFJlZ0V4cCgnKD88YT5iKScsICdnJyk7XG4gIHJldHVybiByZS5leGVjKCdiJykuZ3JvdXBzLmEgIT09ICdiJyB8fFxuICAgICdiJy5yZXBsYWNlKHJlLCAnJDxhPmMnKSAhPT0gJ2JjJztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgcmVnZXhwL25vLWVtcHR5LWNhcHR1cmluZy1ncm91cCwgcmVnZXhwL25vLWVtcHR5LWdyb3VwLCByZWdleHAvbm8tbGF6eS1lbmRzIC0tIHRlc3RpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby11c2VsZXNzLXF1YW50aWZpZXIgLS0gdGVzdGluZyAqL1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHJlZ2V4cEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpLmdldDtcbnZhciBVTlNVUFBPUlRFRF9ET1RfQUxMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1kb3QtYWxsJyk7XG52YXIgVU5TVVBQT1JURURfTkNHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1uY2cnKTtcblxudmFyIG5hdGl2ZVJlcGxhY2UgPSBzaGFyZWQoJ25hdGl2ZS1zdHJpbmctcmVwbGFjZScsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG52YXIgbmF0aXZlRXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBpbmRleE9mID0gdW5jdXJyeVRoaXMoJycuaW5kZXhPZik7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG52YXIgVVBEQVRFU19MQVNUX0lOREVYX1dST05HID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlMSA9IC9hLztcbiAgdmFyIHJlMiA9IC9iKi9nO1xuICBjYWxsKG5hdGl2ZUV4ZWMsIHJlMSwgJ2EnKTtcbiAgY2FsbChuYXRpdmVFeGVjLCByZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IHN0aWNreUhlbHBlcnMuQlJPS0VOX0NBUkVUO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRCB8fCBVTlNVUFBPUlRFRF9ZIHx8IFVOU1VQUE9SVEVEX0RPVF9BTEwgfHwgVU5TVVBQT1JURURfTkNHO1xuXG5pZiAoUEFUQ0gpIHtcbiAgcGF0Y2hlZEV4ZWMgPSBmdW5jdGlvbiBleGVjKHN0cmluZykge1xuICAgIHZhciByZSA9IHRoaXM7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZShyZSk7XG4gICAgdmFyIHN0ciA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgdmFyIHJhdyA9IHN0YXRlLnJhdztcbiAgICB2YXIgcmVzdWx0LCByZUNvcHksIGxhc3RJbmRleCwgbWF0Y2gsIGksIG9iamVjdCwgZ3JvdXA7XG5cbiAgICBpZiAocmF3KSB7XG4gICAgICByYXcubGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuICAgICAgcmVzdWx0ID0gY2FsbChwYXRjaGVkRXhlYywgcmF3LCBzdHIpO1xuICAgICAgcmUubGFzdEluZGV4ID0gcmF3Lmxhc3RJbmRleDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgdmFyIGdyb3VwcyA9IHN0YXRlLmdyb3VwcztcbiAgICB2YXIgc3RpY2t5ID0gVU5TVVBQT1JURURfWSAmJiByZS5zdGlja3k7XG4gICAgdmFyIGZsYWdzID0gY2FsbChyZWdleHBGbGFncywgcmUpO1xuICAgIHZhciBzb3VyY2UgPSByZS5zb3VyY2U7XG4gICAgdmFyIGNoYXJzQWRkZWQgPSAwO1xuICAgIHZhciBzdHJDb3B5ID0gc3RyO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgZmxhZ3MgPSByZXBsYWNlKGZsYWdzLCAneScsICcnKTtcbiAgICAgIGlmIChpbmRleE9mKGZsYWdzLCAnZycpID09PSAtMSkge1xuICAgICAgICBmbGFncyArPSAnZyc7XG4gICAgICB9XG5cbiAgICAgIHN0ckNvcHkgPSBzdHJpbmdTbGljZShzdHIsIHJlLmxhc3RJbmRleCk7XG4gICAgICAvLyBTdXBwb3J0IGFuY2hvcmVkIHN0aWNreSBiZWhhdmlvci5cbiAgICAgIGlmIChyZS5sYXN0SW5kZXggPiAwICYmICghcmUubXVsdGlsaW5lIHx8IHJlLm11bHRpbGluZSAmJiBjaGFyQXQoc3RyLCByZS5sYXN0SW5kZXggLSAxKSAhPT0gJ1xcbicpKSB7XG4gICAgICAgIHNvdXJjZSA9ICcoPzogJyArIHNvdXJjZSArICcpJztcbiAgICAgICAgc3RyQ29weSA9ICcgJyArIHN0ckNvcHk7XG4gICAgICAgIGNoYXJzQWRkZWQrKztcbiAgICAgIH1cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBzdHIgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14oPzonICsgc291cmNlICsgJyknLCBmbGFncyk7XG4gICAgfVxuXG4gICAgaWYgKE5QQ0dfSU5DTFVERUQpIHtcbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14nICsgc291cmNlICsgJyQoPyFcXFxccyknLCBmbGFncyk7XG4gICAgfVxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcpIGxhc3RJbmRleCA9IHJlLmxhc3RJbmRleDtcblxuICAgIG1hdGNoID0gY2FsbChuYXRpdmVFeGVjLCBzdGlja3kgPyByZUNvcHkgOiByZSwgc3RyQ29weSk7XG5cbiAgICBpZiAoc3RpY2t5KSB7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgbWF0Y2guaW5wdXQgPSBzdHJpbmdTbGljZShtYXRjaC5pbnB1dCwgY2hhcnNBZGRlZCk7XG4gICAgICAgIG1hdGNoWzBdID0gc3RyaW5nU2xpY2UobWF0Y2hbMF0sIGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaC5pbmRleCA9IHJlLmxhc3RJbmRleDtcbiAgICAgICAgcmUubGFzdEluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIH0gZWxzZSByZS5sYXN0SW5kZXggPSAwO1xuICAgIH0gZWxzZSBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgY2FsbChuYXRpdmVSZXBsYWNlLCBtYXRjaFswXSwgcmVDb3B5LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoICYmIGdyb3Vwcykge1xuICAgICAgbWF0Y2guZ3JvdXBzID0gb2JqZWN0ID0gY3JlYXRlKG51bGwpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBncm91cCA9IGdyb3Vwc1tpXTtcbiAgICAgICAgb2JqZWN0W2dyb3VwWzBdXSA9IG1hdGNoW2dyb3VwWzFdXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBleGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmV4ZWNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLmV4ZWNcbiQoeyB0YXJnZXQ6ICdSZWdFeHAnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAvLi8uZXhlYyAhPT0gZXhlYyB9LCB7XG4gIGV4ZWM6IGV4ZWNcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyBtb3ZlZCB0byBlbnRyeSBwb2ludHNcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHJlZ2V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMsIEZPUkNFRCwgU0hBTSkge1xuICB2YXIgU1lNQk9MID0gd2VsbEtub3duU3ltYm9sKEtFWSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19TWU1CT0wgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN0cmluZyBtZXRob2RzIGNhbGwgc3ltYm9sLW5hbWVkIFJlZ0VwIG1ldGhvZHNcbiAgICB2YXIgTyA9IHt9O1xuICAgIE9bU1lNQk9MXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH07XG4gICAgcmV0dXJuICcnW0tFWV0oTykgIT0gNztcbiAgfSk7XG5cbiAgdmFyIERFTEVHQVRFU19UT19FWEVDID0gREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIFN5bWJvbC1uYW1lZCBSZWdFeHAgbWV0aG9kcyBjYWxsIC5leGVjXG4gICAgdmFyIGV4ZWNDYWxsZWQgPSBmYWxzZTtcbiAgICB2YXIgcmUgPSAvYS87XG5cbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBXZSBjYW4ndCB1c2UgcmVhbCByZWdleCBoZXJlIHNpbmNlIGl0IGNhdXNlcyBkZW9wdGltaXphdGlvblxuICAgICAgLy8gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gaW4gVjhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMDZcbiAgICAgIHJlID0ge307XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgICByZS5mbGFncyA9ICcnO1xuICAgICAgcmVbU1lNQk9MXSA9IC8uL1tTWU1CT0xdO1xuICAgIH1cblxuICAgIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IGV4ZWNDYWxsZWQgPSB0cnVlOyByZXR1cm4gbnVsbDsgfTtcblxuICAgIHJlW1NZTUJPTF0oJycpO1xuICAgIHJldHVybiAhZXhlY0NhbGxlZDtcbiAgfSk7XG5cbiAgaWYgKFxuICAgICFERUxFR0FURVNfVE9fU1lNQk9MIHx8XG4gICAgIURFTEVHQVRFU19UT19FWEVDIHx8XG4gICAgRk9SQ0VEXG4gICkge1xuICAgIHZhciB1bmN1cnJpZWROYXRpdmVSZWdFeHBNZXRob2QgPSB1bmN1cnJ5VGhpcygvLi9bU1lNQk9MXSk7XG4gICAgdmFyIG1ldGhvZHMgPSBleGVjKFNZTUJPTCwgJydbS0VZXSwgZnVuY3Rpb24gKG5hdGl2ZU1ldGhvZCwgcmVnZXhwLCBzdHIsIGFyZzIsIGZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICB2YXIgdW5jdXJyaWVkTmF0aXZlTWV0aG9kID0gdW5jdXJyeVRoaXMobmF0aXZlTWV0aG9kKTtcbiAgICAgIHZhciAkZXhlYyA9IHJlZ2V4cC5leGVjO1xuICAgICAgaWYgKCRleGVjID09PSByZWdleHBFeGVjIHx8ICRleGVjID09PSBSZWdFeHBQcm90b3R5cGUuZXhlYykge1xuICAgICAgICBpZiAoREVMRUdBVEVTX1RPX1NZTUJPTCAmJiAhZm9yY2VTdHJpbmdNZXRob2QpIHtcbiAgICAgICAgICAvLyBUaGUgbmF0aXZlIFN0cmluZyBtZXRob2QgYWxyZWFkeSBkZWxlZ2F0ZXMgdG8gQEBtZXRob2QgKHRoaXNcbiAgICAgICAgICAvLyBwb2x5ZmlsbGVkIGZ1bmN0aW9uKSwgbGVhc2luZyB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gICAgICAgICAgLy8gV2UgYXZvaWQgaXQgYnkgZGlyZWN0bHkgY2FsbGluZyB0aGUgbmF0aXZlIEBAbWV0aG9kIG1ldGhvZC5cbiAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogdW5jdXJyaWVkTmF0aXZlUmVnRXhwTWV0aG9kKHJlZ2V4cCwgc3RyLCBhcmcyKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiB1bmN1cnJpZWROYXRpdmVNZXRob2Qoc3RyLCByZWdleHAsIGFyZzIpIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgIH0pO1xuXG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBtZXRob2RzWzBdKTtcbiAgICByZWRlZmluZShSZWdFeHBQcm90b3R5cGUsIFNZTUJPTCwgbWV0aG9kc1sxXSk7XG4gIH1cblxuICBpZiAoU0hBTSkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFJlZ0V4cFByb3RvdHlwZVtTWU1CT0xdLCAnc2hhbScsIHRydWUpO1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoQ09OVkVSVF9UT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgcG9zKSB7XG4gICAgdmFyIFMgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyT3JJbmZpbml0eShwb3MpO1xuICAgIHZhciBzaXplID0gUy5sZW5ndGg7XG4gICAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBzaXplKSByZXR1cm4gQ09OVkVSVF9UT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBmaXJzdCA9IGNoYXJDb2RlQXQoUywgcG9zaXRpb24pO1xuICAgIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICAgIHx8IChzZWNvbmQgPSBjaGFyQ29kZUF0KFMsIHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HXG4gICAgICAgICAgPyBjaGFyQXQoUywgcG9zaXRpb24pXG4gICAgICAgICAgOiBmaXJzdFxuICAgICAgICA6IENPTlZFUlRfVE9fU1RSSU5HXG4gICAgICAgICAgPyBzdHJpbmdTbGljZShTLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAyKVxuICAgICAgICAgIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcblxuLy8gYEFkdmFuY2VTdHJpbmdJbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBjaGFyQXQoUywgaW5kZXgpLmxlbmd0aCA6IDEpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgUmVnRXhwRXhlY2AgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmIChpc0NhbGxhYmxlKGV4ZWMpKSB7XG4gICAgdmFyIHJlc3VsdCA9IGNhbGwoZXhlYywgUiwgUyk7XG4gICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkgYW5PYmplY3QocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmIChjbGFzc29mKFIpID09PSAnUmVnRXhwJykgcmV0dXJuIGNhbGwocmVnZXhwRXhlYywgUiwgUyk7XG4gIHRocm93IFR5cGVFcnJvcignUmVnRXhwI2V4ZWMgY2FsbGVkIG9uIGluY29tcGF0aWJsZSByZWNlaXZlcicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxuLy8gQEBtYXRjaCBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ21hdGNoJywgZnVuY3Rpb24gKE1BVENILCBuYXRpdmVNYXRjaCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUubWF0Y2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5tYXRjaFxuICAgIGZ1bmN0aW9uIG1hdGNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIG1hdGNoZXIgPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogZ2V0TWV0aG9kKHJlZ2V4cCwgTUFUQ0gpO1xuICAgICAgcmV0dXJuIG1hdGNoZXIgPyBjYWxsKG1hdGNoZXIsIHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbTUFUQ0hdKHRvU3RyaW5nKE8pKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBtYXRjaFxuICAgIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgICAgdmFyIFMgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShuYXRpdmVNYXRjaCwgcngsIFMpO1xuXG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIGlmICghcnguZ2xvYmFsKSByZXR1cm4gcmVnRXhwRXhlYyhyeCwgUyk7XG5cbiAgICAgIHZhciBmdWxsVW5pY29kZSA9IHJ4LnVuaWNvZGU7XG4gICAgICByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgdmFyIEEgPSBbXTtcbiAgICAgIHZhciBuID0gMDtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICB3aGlsZSAoKHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpKSAhPT0gbnVsbCkge1xuICAgICAgICB2YXIgbWF0Y2hTdHIgPSB0b1N0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICBBW25dID0gbWF0Y2hTdHI7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICAgIG4rKztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuID09PSAwID8gbnVsbCA6IEE7XG4gICAgfVxuICBdO1xufSk7XG4iLCJ2YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG5cbi8vIG1ha2VzIHN1YmNsYXNzaW5nIHdvcmsgY29ycmVjdCBmb3Igd3JhcHBlZCBidWlsdC1pbnNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCR0aGlzLCBkdW1teSwgV3JhcHBlcikge1xuICB2YXIgTmV3VGFyZ2V0LCBOZXdUYXJnZXRQcm90b3R5cGU7XG4gIGlmIChcbiAgICAvLyBpdCBjYW4gd29yayBvbmx5IHdpdGggbmF0aXZlIGBzZXRQcm90b3R5cGVPZmBcbiAgICBzZXRQcm90b3R5cGVPZiAmJlxuICAgIC8vIHdlIGhhdmVuJ3QgY29tcGxldGVseSBjb3JyZWN0IHByZS1FUzYgd2F5IGZvciBnZXR0aW5nIGBuZXcudGFyZ2V0YCwgc28gdXNlIHRoaXNcbiAgICBpc0NhbGxhYmxlKE5ld1RhcmdldCA9IGR1bW15LmNvbnN0cnVjdG9yKSAmJlxuICAgIE5ld1RhcmdldCAhPT0gV3JhcHBlciAmJlxuICAgIGlzT2JqZWN0KE5ld1RhcmdldFByb3RvdHlwZSA9IE5ld1RhcmdldC5wcm90b3R5cGUpICYmXG4gICAgTmV3VGFyZ2V0UHJvdG90eXBlICE9PSBXcmFwcGVyLnByb3RvdHlwZVxuICApIHNldFByb3RvdHlwZU9mKCR0aGlzLCBOZXdUYXJnZXRQcm90b3R5cGUpO1xuICByZXR1cm4gJHRoaXM7XG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG4vLyBgdGhpc051bWJlclZhbHVlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdGhpc251bWJlcnZhbHVlXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKDEuMC52YWx1ZU9mKTtcbiIsIi8vIGEgc3RyaW5nIG9mIGFsbCB2YWxpZCB1bmljb2RlIHdoaXRlc3BhY2VzXG5tb2R1bGUuZXhwb3J0cyA9ICdcXHUwMDA5XFx1MDAwQVxcdTAwMEJcXHUwMDBDXFx1MDAwRFxcdTAwMjBcXHUwMEEwXFx1MTY4MFxcdTIwMDBcXHUyMDAxXFx1MjAwMicgK1xuICAnXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgd2hpdGVzcGFjZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMnKTtcblxudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciB3aGl0ZXNwYWNlID0gJ1snICsgd2hpdGVzcGFjZXMgKyAnXSc7XG52YXIgbHRyaW0gPSBSZWdFeHAoJ14nICsgd2hpdGVzcGFjZSArIHdoaXRlc3BhY2UgKyAnKicpO1xudmFyIHJ0cmltID0gUmVnRXhwKHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyokJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnsgdHJpbSwgdHJpbVN0YXJ0LCB0cmltRW5kLCB0cmltTGVmdCwgdHJpbVJpZ2h0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzKSB7XG4gICAgdmFyIHN0cmluZyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICBpZiAoVFlQRSAmIDEpIHN0cmluZyA9IHJlcGxhY2Uoc3RyaW5nLCBsdHJpbSwgJycpO1xuICAgIGlmIChUWVBFICYgMikgc3RyaW5nID0gcmVwbGFjZShzdHJpbmcsIHJ0cmltLCAnJyk7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1MZWZ0LCB0cmltU3RhcnQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbXN0YXJ0XG4gIHN0YXJ0OiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnsgdHJpbVJpZ2h0LCB0cmltRW5kIH1gIG1ldGhvZHNcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1lbmRcbiAgZW5kOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnRyaW1gIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbVxuICB0cmltOiBjcmVhdGVNZXRob2QoMylcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKS5mO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciB0aGlzTnVtYmVyVmFsdWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGhpcy1udW1iZXItdmFsdWUnKTtcbnZhciB0cmltID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy10cmltJykudHJpbTtcblxudmFyIE5VTUJFUiA9ICdOdW1iZXInO1xudmFyIE5hdGl2ZU51bWJlciA9IGdsb2JhbFtOVU1CRVJdO1xudmFyIE51bWJlclByb3RvdHlwZSA9IE5hdGl2ZU51bWJlci5wcm90b3R5cGU7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBhcnJheVNsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIGNoYXJDb2RlQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQ29kZUF0KTtcblxuLy8gYFRvTnVtZXJpY2AgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbnVtZXJpY1xudmFyIHRvTnVtZXJpYyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJpbVZhbHVlID0gdG9QcmltaXRpdmUodmFsdWUsICdudW1iZXInKTtcbiAgcmV0dXJuIHR5cGVvZiBwcmltVmFsdWUgPT0gJ2JpZ2ludCcgPyBwcmltVmFsdWUgOiB0b051bWJlcihwcmltVmFsdWUpO1xufTtcblxuLy8gYFRvTnVtYmVyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9udW1iZXJcbnZhciB0b051bWJlciA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgaXQgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ251bWJlcicpO1xuICB2YXIgZmlyc3QsIHRoaXJkLCByYWRpeCwgbWF4Q29kZSwgZGlnaXRzLCBsZW5ndGgsIGluZGV4LCBjb2RlO1xuICBpZiAoaXNTeW1ib2woaXQpKSB0aHJvdyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgbnVtYmVyJyk7XG4gIGlmICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgJiYgaXQubGVuZ3RoID4gMikge1xuICAgIGl0ID0gdHJpbShpdCk7XG4gICAgZmlyc3QgPSBjaGFyQ29kZUF0KGl0LCAwKTtcbiAgICBpZiAoZmlyc3QgPT09IDQzIHx8IGZpcnN0ID09PSA0NSkge1xuICAgICAgdGhpcmQgPSBjaGFyQ29kZUF0KGl0LCAyKTtcbiAgICAgIGlmICh0aGlyZCA9PT0gODggfHwgdGhpcmQgPT09IDEyMCkgcmV0dXJuIE5hTjsgLy8gTnVtYmVyKCcrMHgxJykgc2hvdWxkIGJlIE5hTiwgb2xkIFY4IGZpeFxuICAgIH0gZWxzZSBpZiAoZmlyc3QgPT09IDQ4KSB7XG4gICAgICBzd2l0Y2ggKGNoYXJDb2RlQXQoaXQsIDEpKSB7XG4gICAgICAgIGNhc2UgNjY6IGNhc2UgOTg6IHJhZGl4ID0gMjsgbWF4Q29kZSA9IDQ5OyBicmVhazsgLy8gZmFzdCBlcXVhbCBvZiAvXjBiWzAxXSskL2lcbiAgICAgICAgY2FzZSA3OTogY2FzZSAxMTE6IHJhZGl4ID0gODsgbWF4Q29kZSA9IDU1OyBicmVhazsgLy8gZmFzdCBlcXVhbCBvZiAvXjBvWzAtN10rJC9pXG4gICAgICAgIGRlZmF1bHQ6IHJldHVybiAraXQ7XG4gICAgICB9XG4gICAgICBkaWdpdHMgPSBhcnJheVNsaWNlKGl0LCAyKTtcbiAgICAgIGxlbmd0aCA9IGRpZ2l0cy5sZW5ndGg7XG4gICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29kZSA9IGNoYXJDb2RlQXQoZGlnaXRzLCBpbmRleCk7XG4gICAgICAgIC8vIHBhcnNlSW50IHBhcnNlcyBhIHN0cmluZyB0byBhIGZpcnN0IHVuYXZhaWxhYmxlIHN5bWJvbFxuICAgICAgICAvLyBidXQgVG9OdW1iZXIgc2hvdWxkIHJldHVybiBOYU4gaWYgYSBzdHJpbmcgY29udGFpbnMgdW5hdmFpbGFibGUgc3ltYm9sc1xuICAgICAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiBtYXhDb2RlKSByZXR1cm4gTmFOO1xuICAgICAgfSByZXR1cm4gcGFyc2VJbnQoZGlnaXRzLCByYWRpeCk7XG4gICAgfVxuICB9IHJldHVybiAraXQ7XG59O1xuXG4vLyBgTnVtYmVyYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1udW1iZXItY29uc3RydWN0b3JcbmlmIChpc0ZvcmNlZChOVU1CRVIsICFOYXRpdmVOdW1iZXIoJyAwbzEnKSB8fCAhTmF0aXZlTnVtYmVyKCcwYjEnKSB8fCBOYXRpdmVOdW1iZXIoJysweDEnKSkpIHtcbiAgdmFyIE51bWJlcldyYXBwZXIgPSBmdW5jdGlvbiBOdW1iZXIodmFsdWUpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGggPCAxID8gMCA6IE5hdGl2ZU51bWJlcih0b051bWVyaWModmFsdWUpKTtcbiAgICB2YXIgZHVtbXkgPSB0aGlzO1xuICAgIC8vIGNoZWNrIG9uIDEuLmNvbnN0cnVjdG9yKGZvbykgY2FzZVxuICAgIHJldHVybiBpc1Byb3RvdHlwZU9mKE51bWJlclByb3RvdHlwZSwgZHVtbXkpICYmIGZhaWxzKGZ1bmN0aW9uICgpIHsgdGhpc051bWJlclZhbHVlKGR1bW15KTsgfSlcbiAgICAgID8gaW5oZXJpdElmUmVxdWlyZWQoT2JqZWN0KG4pLCBkdW1teSwgTnVtYmVyV3JhcHBlcikgOiBuO1xuICB9O1xuICBmb3IgKHZhciBrZXlzID0gREVTQ1JJUFRPUlMgPyBnZXRPd25Qcm9wZXJ0eU5hbWVzKE5hdGl2ZU51bWJlcikgOiAoXG4gICAgLy8gRVMzOlxuICAgICdNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSwnICtcbiAgICAvLyBFUzIwMTUgKGluIGNhc2UsIGlmIG1vZHVsZXMgd2l0aCBFUzIwMTUgTnVtYmVyIHN0YXRpY3MgcmVxdWlyZWQgYmVmb3JlKTpcbiAgICAnRVBTSUxPTixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIsaXNGaW5pdGUsaXNJbnRlZ2VyLGlzTmFOLGlzU2FmZUludGVnZXIscGFyc2VGbG9hdCxwYXJzZUludCwnICtcbiAgICAvLyBFU05leHRcbiAgICAnZnJvbVN0cmluZyxyYW5nZSdcbiAgKS5zcGxpdCgnLCcpLCBqID0gMCwga2V5OyBrZXlzLmxlbmd0aCA+IGo7IGorKykge1xuICAgIGlmIChoYXNPd24oTmF0aXZlTnVtYmVyLCBrZXkgPSBrZXlzW2pdKSAmJiAhaGFzT3duKE51bWJlcldyYXBwZXIsIGtleSkpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KE51bWJlcldyYXBwZXIsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE5hdGl2ZU51bWJlciwga2V5KSk7XG4gICAgfVxuICB9XG4gIE51bWJlcldyYXBwZXIucHJvdG90eXBlID0gTnVtYmVyUHJvdG90eXBlO1xuICBOdW1iZXJQcm90b3R5cGUuY29uc3RydWN0b3IgPSBOdW1iZXJXcmFwcGVyO1xuICByZWRlZmluZShnbG9iYWwsIE5VTUJFUiwgTnVtYmVyV3JhcHBlcik7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhIW1ldGhvZCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWluZGV4b2YgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyICRJbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIHVuJEluZGV4T2YgPSB1bmN1cnJ5VGhpcyhbXS5pbmRleE9mKTtcblxudmFyIE5FR0FUSVZFX1pFUk8gPSAhIXVuJEluZGV4T2YgJiYgMSAvIHVuJEluZGV4T2YoWzFdLCAxLCAtMCkgPCAwO1xudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdpbmRleE9mJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBORUdBVElWRV9aRVJPIHx8ICFTVFJJQ1RfTUVUSE9EIH0sIHtcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHZhciBmcm9tSW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gTkVHQVRJVkVfWkVST1xuICAgICAgLy8gY29udmVydCAtMCB0byArMFxuICAgICAgPyB1biRJbmRleE9mKHRoaXMsIHNlYXJjaEVsZW1lbnQsIGZyb21JbmRleCkgfHwgMFxuICAgICAgOiAkSW5kZXhPZih0aGlzLCBzZWFyY2hFbGVtZW50LCBmcm9tSW5kZXgpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5ldmVyeTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdldmVyeScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZXZlcnkodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyB7fS50b1N0cmluZyA6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ1tvYmplY3QgJyArIGNsYXNzb2YodGhpcykgKyAnXSc7XG59O1xuIiwidmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC10by1zdHJpbmcnKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG5pZiAoIVRPX1NUUklOR19UQUdfU1VQUE9SVCkge1xuICByZWRlZmluZShPYmplY3QucHJvdG90eXBlLCAndG9TdHJpbmcnLCB0b1N0cmluZywgeyB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG5cbi8vIGBBcnJheS5pc0FycmF5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkuaXNhcnJheVxuJCh7IHRhcmdldDogJ0FycmF5Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGlzQXJyYXk6IGlzQXJyYXlcbn0pO1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKFtdLnNsaWNlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xudmFyIHVuJFNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnc2xpY2UnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcbnZhciBBcnJheSA9IGdsb2JhbC5BcnJheTtcbnZhciBtYXggPSBNYXRoLm1heDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5zbGljZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZVxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIEVTMyBzdHJpbmdzIGFuZCBET00gb2JqZWN0c1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgayA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuZ3RoKTtcbiAgICB2YXIgZmluID0gdG9BYnNvbHV0ZUluZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kLCBsZW5ndGgpO1xuICAgIC8vIGlubGluZSBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBmb3IgdXNhZ2UgbmF0aXZlIGBBcnJheSNzbGljZWAgd2hlcmUgaXQncyBwb3NzaWJsZVxuICAgIHZhciBDb25zdHJ1Y3RvciwgcmVzdWx0LCBuO1xuICAgIGlmIChpc0FycmF5KE8pKSB7XG4gICAgICBDb25zdHJ1Y3RvciA9IE8uY29uc3RydWN0b3I7XG4gICAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgICAgaWYgKGlzQ29uc3RydWN0b3IoQ29uc3RydWN0b3IpICYmIChDb25zdHJ1Y3RvciA9PT0gQXJyYXkgfHwgaXNBcnJheShDb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSkge1xuICAgICAgICBDb25zdHJ1Y3RvciA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoQ29uc3RydWN0b3IpKSB7XG4gICAgICAgIENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JbU1BFQ0lFU107XG4gICAgICAgIGlmIChDb25zdHJ1Y3RvciA9PT0gbnVsbCkgQ29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IgPT09IEFycmF5IHx8IENvbnN0cnVjdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuJFNsaWNlKE8sIGssIGZpbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCA9IG5ldyAoQ29uc3RydWN0b3IgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQ29uc3RydWN0b3IpKG1heChmaW4gLSBrLCAwKSk7XG4gICAgZm9yIChuID0gMDsgayA8IGZpbjsgaysrLCBuKyspIGlmIChrIGluIE8pIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgbiwgT1trXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgcmVkdWNlLCByZWR1Y2VSaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX1JJR0hUKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYXJndW1lbnRzTGVuZ3RoLCBtZW1vKSB7XG4gICAgYUNhbGxhYmxlKGNhbGxiYWNrZm4pO1xuICAgIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gICAgdmFyIHNlbGYgPSBJbmRleGVkT2JqZWN0KE8pO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgaW5kZXggPSBJU19SSUdIVCA/IGxlbmd0aCAtIDEgOiAwO1xuICAgIHZhciBpID0gSVNfUklHSFQgPyAtMSA6IDE7XG4gICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA8IDIpIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgICAgICBtZW1vID0gc2VsZltpbmRleF07XG4gICAgICAgIGluZGV4ICs9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaW5kZXggKz0gaTtcbiAgICAgIGlmIChJU19SSUdIVCA/IGluZGV4IDwgMCA6IGxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICg7SVNfUklHSFQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICBtZW1vID0gY2FsbGJhY2tmbihtZW1vLCBzZWxmW2luZGV4XSwgaW5kZXgsIE8pO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnJlZHVjZVxuICBsZWZ0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlcmlnaHRcbiAgcmlnaHQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzb2YoZ2xvYmFsLnByb2Nlc3MpID09ICdwcm9jZXNzJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktcmVkdWNlJykubGVmdDtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcbnZhciBDSFJPTUVfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdyZWR1Y2UnKTtcbi8vIENocm9tZSA4MC04MiBoYXMgYSBjcml0aWNhbCBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEwNDk5ODJcbnZhciBDSFJPTUVfQlVHID0gIUlTX05PREUgJiYgQ0hST01FX1ZFUlNJT04gPiA3OSAmJiBDSFJPTUVfVkVSU0lPTiA8IDgzO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZWR1Y2VcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFTVFJJQ1RfTUVUSE9EIHx8IENIUk9NRV9CVUcgfSwge1xuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgbGVuZ3RoLCBsZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IG5hdGl2ZUtleXMoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUyB9LCB7XG4gIGtleXM6IGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyh0b09iamVjdChpdCkpO1xuICB9XG59KTtcbiIsImltcG9ydCB7IEtpbnRvbmVSZXN0QVBJRXJyb3IgfSBmcm9tIFwiLi9LaW50b25lUmVzdEFQSUVycm9yXCI7XG5cbmV4cG9ydCBjbGFzcyBLaW50b25lQWxsUmVjb3Jkc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwcm9jZXNzZWRSZWNvcmRzUmVzdWx0OiBhbnk7XG4gIHVucHJvY2Vzc2VkUmVjb3JkczogYW55W107XG4gIGVycm9yOiBLaW50b25lUmVzdEFQSUVycm9yO1xuICBlcnJvckluZGV4PzogbnVtYmVyO1xuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlRXJyb3JJbmRleChlcnJvcnM6IHsgW2s6IHN0cmluZ106IGFueSB9KSB7XG4gICAgY29uc3QgZmlyc3RFcnJvcktleSA9IE9iamVjdC5rZXlzKGVycm9ycylbMF07XG4gICAgY29uc3QgcmVzdWx0ID0gZmlyc3RFcnJvcktleS5tYXRjaCgvcmVjb3Jkc1xcWyhcXGQrKVxcXS8pO1xuICAgIHJldHVybiByZXN1bHQgPyBOdW1iZXIocmVzdWx0WzFdKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0RXJyb3JJbmRleChcbiAgICBudW1PZlByb2Nlc3NlZFJlY29yZHM6IG51bWJlcixcbiAgICBlcnJvcjogS2ludG9uZVJlc3RBUElFcnJvcixcbiAgICBjaHVua0xlbmd0aDogbnVtYmVyXG4gICkge1xuICAgIGlmIChlcnJvci5idWxrUmVxdWVzdEluZGV4ICE9PSB1bmRlZmluZWQgJiYgZXJyb3IuZXJyb3JzKSB7XG4gICAgICBjb25zdCBlcnJvclBhcnNlUmVzdWx0ID0gS2ludG9uZUFsbFJlY29yZHNFcnJvci5wYXJzZUVycm9ySW5kZXgoXG4gICAgICAgIGVycm9yLmVycm9yc1xuICAgICAgKTtcbiAgICAgIGlmIChlcnJvclBhcnNlUmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbnVtT2ZQcm9jZXNzZWRSZWNvcmRzICtcbiAgICAgICAgICBlcnJvci5idWxrUmVxdWVzdEluZGV4ICogY2h1bmtMZW5ndGggK1xuICAgICAgICAgIGVycm9yUGFyc2VSZXN1bHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkRXJyb3JNZXNzYWdlKFxuICAgIG51bU9mUHJvY2Vzc2VkUmVjb3JkczogbnVtYmVyLFxuICAgIG51bU9mQWxsUmVjb3JkczogbnVtYmVyLFxuICAgIGVycm9ySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBsZXQgbWVzc2FnZSA9IFwiXCI7XG4gICAgaWYgKGVycm9ySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVzc2FnZSA9IGBBbiBlcnJvciBvY2N1cnJlZCBhdCByZWNvcmRzWyR7ZXJyb3JJbmRleH1dLiBgO1xuICAgIH1cbiAgICBtZXNzYWdlICs9IGAke251bU9mUHJvY2Vzc2VkUmVjb3Jkc30vJHtudW1PZkFsbFJlY29yZHN9IHJlY29yZHMgYXJlIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHlgO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9jZXNzZWRSZWNvcmRzUmVzdWx0OiBhbnksXG4gICAgdW5wcm9jZXNzZWRSZWNvcmRzOiBhbnlbXSxcbiAgICBudW1PZkFsbFJlY29yZHM6IG51bWJlcixcbiAgICBlcnJvcjogS2ludG9uZVJlc3RBUElFcnJvcixcbiAgICBjaHVua0xlbmd0aDogbnVtYmVyXG4gICkge1xuICAgIGNvbnN0IG51bU9mUHJvY2Vzc2VkUmVjb3JkcyA9IG51bU9mQWxsUmVjb3JkcyAtIHVucHJvY2Vzc2VkUmVjb3Jkcy5sZW5ndGg7XG5cbiAgICBjb25zdCBlcnJvckluZGV4ID0gS2ludG9uZUFsbFJlY29yZHNFcnJvci5leHRyYWN0RXJyb3JJbmRleChcbiAgICAgIG51bU9mUHJvY2Vzc2VkUmVjb3JkcyxcbiAgICAgIGVycm9yLFxuICAgICAgY2h1bmtMZW5ndGhcbiAgICApO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IEtpbnRvbmVBbGxSZWNvcmRzRXJyb3IuYnVpbGRFcnJvck1lc3NhZ2UoXG4gICAgICBudW1PZlByb2Nlc3NlZFJlY29yZHMsXG4gICAgICBudW1PZkFsbFJlY29yZHMsXG4gICAgICBlcnJvckluZGV4XG4gICAgKTtcbiAgICBzdXBlcihtZXNzYWdlKTtcblxuICAgIHRoaXMubmFtZSA9IFwiS2ludG9uZUFsbFJlY29yZHNFcnJvclwiO1xuICAgIHRoaXMucHJvY2Vzc2VkUmVjb3Jkc1Jlc3VsdCA9IHByb2Nlc3NlZFJlY29yZHNSZXN1bHQ7XG4gICAgdGhpcy51bnByb2Nlc3NlZFJlY29yZHMgPSB1bnByb2Nlc3NlZFJlY29yZHM7XG4gICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgIHRoaXMuZXJyb3JJbmRleCA9IGVycm9ySW5kZXg7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC93aWtpL0JyZWFraW5nLUNoYW5nZXMjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrXG4gICAgLy8gU2V0IHRoZSBwcm90b3R5cGUgZXhwbGljaXRseS5cbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgS2ludG9uZUFsbFJlY29yZHNFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBidWlsZFBhdGggfSBmcm9tIFwiLi8uLi91cmxcIjtcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiLi8uLi9odHRwL1wiO1xuaW1wb3J0IHsgQnVsa1JlcXVlc3RDbGllbnQgfSBmcm9tIFwiLi9CdWxrUmVxdWVzdENsaWVudFwiO1xuaW1wb3J0IHsgS2ludG9uZUFsbFJlY29yZHNFcnJvciB9IGZyb20gXCIuLi9lcnJvci9LaW50b25lQWxsUmVjb3Jkc0Vycm9yXCI7XG5pbXBvcnQge1xuICBBcHBJRCxcbiAgUmVjb3JkSUQsXG4gIFJldmlzaW9uLFxuICBSZWNvcmQsXG4gIFVwZGF0ZUtleSxcbiAgQ29tbWVudElELFxuICBDb21tZW50LFxuICBNZW50aW9uLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCBBRERfUkVDT1JEU19MSU1JVCA9IDEwMDtcbmNvbnN0IFVQREFURV9SRUNPUkRTX0xJTUlUID0gMTAwO1xuY29uc3QgREVMRVRFX1JFQ09SRFNfTElNSVQgPSAxMDA7XG5cbnR5cGUgUmVjb3JkRm9yUGFyYW1ldGVyID0ge1xuICBbZmllbGRDb2RlOiBzdHJpbmddOiB7XG4gICAgdmFsdWU6IHVua25vd247XG4gIH07XG59O1xuXG5leHBvcnQgY2xhc3MgUmVjb3JkQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEh0dHBDbGllbnQ7XG4gIHByaXZhdGUgYnVsa1JlcXVlc3RDbGllbnQ6IEJ1bGtSZXF1ZXN0Q2xpZW50O1xuICBwcml2YXRlIGd1ZXN0U3BhY2VJZD86IG51bWJlciB8IHN0cmluZztcbiAgcHJpdmF0ZSBkaWRXYXJuTWF4aW11bU9mZnNldFZhbHVlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNsaWVudDogSHR0cENsaWVudCxcbiAgICBidWxrUmVxdWVzdENsaWVudDogQnVsa1JlcXVlc3RDbGllbnQsXG4gICAgZ3Vlc3RTcGFjZUlkPzogbnVtYmVyIHwgc3RyaW5nXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICAgIHRoaXMuYnVsa1JlcXVlc3RDbGllbnQgPSBidWxrUmVxdWVzdENsaWVudDtcbiAgICB0aGlzLmd1ZXN0U3BhY2VJZCA9IGd1ZXN0U3BhY2VJZDtcbiAgICB0aGlzLmRpZFdhcm5NYXhpbXVtT2Zmc2V0VmFsdWUgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWNvcmQ8VCBleHRlbmRzIFJlY29yZD4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBpZDogUmVjb3JkSUQ7XG4gIH0pOiBQcm9taXNlPHsgcmVjb3JkOiBUIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYWRkUmVjb3JkKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkPzogUmVjb3JkRm9yUGFyYW1ldGVyO1xuICB9KTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZFwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVjb3JkKFxuICAgIHBhcmFtczpcbiAgICAgIHwge1xuICAgICAgICAgIGFwcDogQXBwSUQ7XG4gICAgICAgICAgaWQ6IFJlY29yZElEO1xuICAgICAgICAgIHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjtcbiAgICAgICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBhcHA6IEFwcElEO1xuICAgICAgICAgIHVwZGF0ZUtleTogVXBkYXRlS2V5O1xuICAgICAgICAgIHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjtcbiAgICAgICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgICAgICB9XG4gICk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBzZXJ0UmVjb3JkKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgdXBkYXRlS2V5OiBVcGRhdGVLZXk7XG4gICAgcmVjb3JkPzogUmVjb3JkRm9yUGFyYW1ldGVyO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBhcHAsIHVwZGF0ZUtleSwgcmVjb3JkIH0gPSBwYXJhbXM7XG4gICAgLy8gaWYgdGhlIGNsaWVudCBjYW4ndCBnZXQgYSByZWNvcmQgbWF0Y2hlcyBgdXBkYXRlS2V5YCwgdXNlIGBhZGRSZWNvcmRgXG4gICAgY29uc3QgeyByZWNvcmRzIH0gPSBhd2FpdCB0aGlzLmdldFJlY29yZHMoe1xuICAgICAgYXBwLFxuICAgICAgcXVlcnk6IGAke3VwZGF0ZUtleS5maWVsZH0gPSBcIiR7dXBkYXRlS2V5LnZhbHVlfVwiYCxcbiAgICB9KTtcbiAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAocmVjb3Jkc1swXS4kaWQudHlwZSA9PT0gXCJfX0lEX19cIikge1xuICAgICAgICBjb25zdCB7IHJldmlzaW9uIH0gPSBhd2FpdCB0aGlzLnVwZGF0ZVJlY29yZChwYXJhbXMpO1xuICAgICAgICByZXR1cm4geyBpZDogcmVjb3Jkc1swXS4kaWQudmFsdWUsIHJldmlzaW9uIH07XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTWlzc2luZyBgJGlkYCBpbiBgZ2V0UmVjb3Jkc2AgcmVzcG9uc2UuIFRoaXMgZXJyb3IgaXMgbGlrZWx5IGNhdXNlZCBieSBhIGJ1ZyBpbiBLaW50b25lIFJFU1QgQVBJIENsaWVudC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFkZFJlY29yZCh7XG4gICAgICBhcHAsXG4gICAgICByZWNvcmQ6IE9iamVjdC5hc3NpZ24oe30sIHJlY29yZCwge1xuICAgICAgICBbdXBkYXRlS2V5LmZpZWxkXTogeyB2YWx1ZTogdXBkYXRlS2V5LnZhbHVlIH0sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE86IGByZWNvcmRzYCB0eXBlIGluIHJldHVybiB0eXBlIHNob3VsZCBiZSBmaWx0ZXJlZCBieSBgZmllbGRzYC5cbiAgcHVibGljIGFzeW5jIGdldFJlY29yZHM8VCBleHRlbmRzIFJlY29yZD4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBmaWVsZHM/OiBzdHJpbmdbXTtcbiAgICBxdWVyeT86IHN0cmluZztcbiAgICB0b3RhbENvdW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8eyByZWNvcmRzOiBUW107IHRvdGFsQ291bnQ6IHN0cmluZyB8IG51bGwgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHNcIixcbiAgICB9KTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LmdldDx7XG4gICAgICByZWNvcmRzOiBUW107XG4gICAgICB0b3RhbENvdW50OiBzdHJpbmcgfCBudWxsO1xuICAgIH0+KHBhdGgsIHBhcmFtcyk7XG4gICAgdGhpcy53YXJuTWF4aW11bU9mZnNldFZhbHVlSWZOZWVkZWQocGFyYW1zLnF1ZXJ5KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIHdhcm5NYXhpbXVtT2Zmc2V0VmFsdWVJZk5lZWRlZChxdWVyeT86IHN0cmluZykge1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgY29uc3QgcmVnZXhwID0gL29mZnNldFxccysoXFxkKykvaTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHF1ZXJ5Lm1hdGNoKHJlZ2V4cCk7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmRpZFdhcm5NYXhpbXVtT2Zmc2V0VmFsdWUgJiZcbiAgICAgICAgcmVzdWx0ICYmXG4gICAgICAgIE51bWJlcihyZXN1bHRbMV0pID4gMTAwMDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRpZFdhcm5NYXhpbXVtT2Zmc2V0VmFsdWUgPSB0cnVlO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJXYXJuaW5nOiBUaGUgbWF4aW11bSBvZmZzZXQgdmFsdWUgd2lsbCBiZSBsaW1pdGVkIHRvIDEwLDAwMCBpbiB0aGUgZnV0dXJlLiBQbGVhc2UgdXNlIGBjcmVhdGVDdXJzb3IoKWAgYW5kIGBnZXRSZWNvcmRzQnlDdXJzb3IoKWAgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWNvcmRzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkczogUmVjb3JkRm9yUGFyYW1ldGVyW107XG4gIH0pOiBQcm9taXNlPHtcbiAgICBpZHM6IHN0cmluZ1tdO1xuICAgIHJldmlzaW9uczogc3RyaW5nW107XG4gICAgcmVjb3JkczogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+O1xuICB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3Jkc1wiLFxuICAgIH0pO1xuICAgIGNvbnN0IHsgaWRzLCByZXZpc2lvbnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnBvc3Q8e1xuICAgICAgaWRzOiBzdHJpbmdbXTtcbiAgICAgIHJldmlzaW9uczogc3RyaW5nW107XG4gICAgfT4ocGF0aCwgcGFyYW1zKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWRzLFxuICAgICAgcmV2aXNpb25zLFxuICAgICAgcmVjb3JkczogaWRzLm1hcCgoaWQsIGkpID0+ICh7IGlkLCByZXZpc2lvbjogcmV2aXNpb25zW2ldIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVJlY29yZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByZWNvcmRzOiBBcnJheTxcbiAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICB8IHtcbiAgICAgICAgICB1cGRhdGVLZXk6IFVwZGF0ZUtleTtcbiAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgICAgICAgfVxuICAgID47XG4gIH0pOiBQcm9taXNlPHsgcmVjb3JkczogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+IH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRzXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJlY29yZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBpZHM6IFJlY29yZElEW107XG4gICAgcmV2aXNpb25zPzogUmV2aXNpb25bXTtcbiAgfSk6IFByb21pc2U8e30+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRzXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmRlbGV0ZShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUN1cnNvcihwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGZpZWxkcz86IHN0cmluZ1tdO1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICAgIHNpemU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgdG90YWxDb3VudDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRzL2N1cnNvclwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVjb3Jkc0J5Q3Vyc29yPFQgZXh0ZW5kcyBSZWNvcmQ+KHBhcmFtczoge1xuICAgIGlkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHtcbiAgICByZWNvcmRzOiBUW107XG4gICAgbmV4dDogYm9vbGVhbjtcbiAgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHMvY3Vyc29yXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUN1cnNvcihwYXJhbXM6IHsgaWQ6IHN0cmluZyB9KTogUHJvbWlzZTx7fT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHMvY3Vyc29yXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmRlbGV0ZShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFsbFJlY29yZHM8VCBleHRlbmRzIFJlY29yZD4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBmaWVsZHM/OiBzdHJpbmdbXTtcbiAgICBjb25kaXRpb24/OiBzdHJpbmc7XG4gICAgb3JkZXJCeT86IHN0cmluZztcbiAgICB3aXRoQ3Vyc29yPzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgeyBjb25kaXRpb24sIG9yZGVyQnksIHdpdGhDdXJzb3IgPSB0cnVlLCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgaWYgKCFvcmRlckJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzV2l0aElkKHsgLi4ucmVzdCwgY29uZGl0aW9uIH0pO1xuICAgIH1cbiAgICBpZiAod2l0aEN1cnNvcikge1xuICAgICAgY29uc3QgY29uZGl0aW9uUXVlcnkgPSBjb25kaXRpb24gPyBgJHtjb25kaXRpb259IGAgOiBcIlwiO1xuICAgICAgY29uc3QgcXVlcnkgPSBgJHtjb25kaXRpb25RdWVyeX0ke29yZGVyQnkgPyBgb3JkZXIgYnkgJHtvcmRlckJ5fWAgOiBcIlwifWA7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzV2l0aEN1cnNvcih7IC4uLnJlc3QsIHF1ZXJ5IH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzV2l0aE9mZnNldCh7IC4uLnJlc3QsIG9yZGVyQnksIGNvbmRpdGlvbiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxSZWNvcmRzV2l0aElkPFQgZXh0ZW5kcyBSZWNvcmQ+KHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgZmllbGRzPzogc3RyaW5nW107XG4gICAgY29uZGl0aW9uPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGZpZWxkczogb3JpZ2luYWxGaWVsZHMsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBsZXQgZmllbGRzID0gb3JpZ2luYWxGaWVsZHM7XG4gICAgLy8gQXBwZW5kICRpZCBpZiAkaWQgZG9lc24ndCBleGlzdCBpbiBmaWVsZHNcbiAgICBpZiAoZmllbGRzICYmIGZpZWxkcy5sZW5ndGggPiAwICYmIGZpZWxkcy5pbmRleE9mKFwiJGlkXCIpID09PSAtMSkge1xuICAgICAgZmllbGRzID0gWy4uLmZpZWxkcywgXCIkaWRcIl07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEFsbFJlY29yZHNSZWN1cnNpdmVXaXRoSWQoeyAuLi5yZXN0LCBmaWVsZHMgfSwgXCIwXCIsIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZVdpdGhJZDxUIGV4dGVuZHMgUmVjb3JkPihcbiAgICBwYXJhbXM6IHtcbiAgICAgIGFwcDogQXBwSUQ7XG4gICAgICBmaWVsZHM/OiBzdHJpbmdbXTtcbiAgICAgIGNvbmRpdGlvbj86IHN0cmluZztcbiAgICB9LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcmVjb3JkczogVFtdXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgR0VUX1JFQ09SRFNfTElNSVQgPSA1MDA7XG5cbiAgICBjb25zdCB7IGNvbmRpdGlvbiwgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IGNvbmRpdGlvblF1ZXJ5ID0gY29uZGl0aW9uID8gYCgke2NvbmRpdGlvbn0pIGFuZCBgIDogXCJcIjtcbiAgICBjb25zdCBxdWVyeSA9IGAke2NvbmRpdGlvblF1ZXJ5fSRpZCA+ICR7aWR9IG9yZGVyIGJ5ICRpZCBhc2MgbGltaXQgJHtHRVRfUkVDT1JEU19MSU1JVH1gO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0UmVjb3JkczxUPih7IC4uLnJlc3QsIHF1ZXJ5IH0pO1xuICAgIGNvbnN0IGFsbFJlY29yZHMgPSByZWNvcmRzLmNvbmNhdChyZXN1bHQucmVjb3Jkcyk7XG4gICAgaWYgKHJlc3VsdC5yZWNvcmRzLmxlbmd0aCA8IEdFVF9SRUNPUkRTX0xJTUlUKSB7XG4gICAgICByZXR1cm4gYWxsUmVjb3JkcztcbiAgICB9XG4gICAgY29uc3QgbGFzdFJlY29yZCA9IHJlc3VsdC5yZWNvcmRzW3Jlc3VsdC5yZWNvcmRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0UmVjb3JkLiRpZC50eXBlID09PSBcIl9fSURfX1wiKSB7XG4gICAgICBjb25zdCBsYXN0SWQgPSBsYXN0UmVjb3JkLiRpZC52YWx1ZTtcbiAgICAgIHJldHVybiB0aGlzLmdldEFsbFJlY29yZHNSZWN1cnNpdmVXaXRoSWQocGFyYW1zLCBsYXN0SWQsIGFsbFJlY29yZHMpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIk1pc3NpbmcgYCRpZGAgaW4gYGdldFJlY29yZHNgIHJlc3BvbnNlLiBUaGlzIGVycm9yIGlzIGxpa2VseSBjYXVzZWQgYnkgYSBidWcgaW4gS2ludG9uZSBSRVNUIEFQSSBDbGllbnQuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxSZWNvcmRzV2l0aE9mZnNldDxUIGV4dGVuZHMgUmVjb3JkPihwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGZpZWxkcz86IHN0cmluZ1tdO1xuICAgIGNvbmRpdGlvbj86IHN0cmluZztcbiAgICBvcmRlckJ5Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzUmVjdXJzaXZlV2l0aE9mZnNldChwYXJhbXMsIDAsIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZVdpdGhPZmZzZXQ8VCBleHRlbmRzIFJlY29yZD4oXG4gICAgcGFyYW1zOiB7XG4gICAgICBhcHA6IEFwcElEO1xuICAgICAgZmllbGRzPzogc3RyaW5nW107XG4gICAgICBjb25kaXRpb24/OiBzdHJpbmc7XG4gICAgICBvcmRlckJ5Pzogc3RyaW5nO1xuICAgIH0sXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgcmVjb3JkczogVFtdXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgR0VUX1JFQ09SRFNfTElNSVQgPSA1MDA7XG5cbiAgICBjb25zdCB7IGNvbmRpdGlvbiwgb3JkZXJCeSwgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IGNvbmRpdGlvblF1ZXJ5ID0gY29uZGl0aW9uID8gYCR7Y29uZGl0aW9ufSBgIDogXCJcIjtcbiAgICBjb25zdCBxdWVyeSA9IGAke2NvbmRpdGlvblF1ZXJ5fSR7XG4gICAgICBvcmRlckJ5ID8gYG9yZGVyIGJ5ICR7b3JkZXJCeX0gYCA6IFwiXCJcbiAgICB9bGltaXQgJHtHRVRfUkVDT1JEU19MSU1JVH0gb2Zmc2V0ICR7b2Zmc2V0fWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRSZWNvcmRzPFQ+KHsgLi4ucmVzdCwgcXVlcnkgfSk7XG4gICAgY29uc3QgYWxsUmVjb3JkcyA9IHJlY29yZHMuY29uY2F0KHJlc3VsdC5yZWNvcmRzKTtcbiAgICBpZiAocmVzdWx0LnJlY29yZHMubGVuZ3RoIDwgR0VUX1JFQ09SRFNfTElNSVQpIHtcbiAgICAgIHJldHVybiBhbGxSZWNvcmRzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEFsbFJlY29yZHNSZWN1cnNpdmVXaXRoT2Zmc2V0KFxuICAgICAgcGFyYW1zLFxuICAgICAgb2Zmc2V0ICsgR0VUX1JFQ09SRFNfTElNSVQsXG4gICAgICBhbGxSZWNvcmRzXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxSZWNvcmRzV2l0aEN1cnNvcjxUIGV4dGVuZHMgUmVjb3JkPihwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGZpZWxkcz86IHN0cmluZ1tdO1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGlkIH0gPSBhd2FpdCB0aGlzLmNyZWF0ZUN1cnNvcihwYXJhbXMpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRBbGxSZWNvcmRzUmVjdXJzaXZlQnlDdXJzb3I8VD4oaWQsIFtdKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVDdXJzb3IoeyBpZCB9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZUJ5Q3Vyc29yPFQgZXh0ZW5kcyBSZWNvcmQ+KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcmVjb3JkczogVFtdXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRSZWNvcmRzQnlDdXJzb3I8VD4oeyBpZCB9KTtcbiAgICBjb25zdCBhbGxSZWNvcmRzID0gcmVjb3Jkcy5jb25jYXQocmVzdWx0LnJlY29yZHMpO1xuICAgIGlmIChyZXN1bHQubmV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZUJ5Q3Vyc29yKGlkLCBhbGxSZWNvcmRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGFsbFJlY29yZHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQWxsUmVjb3JkcyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IFJlY29yZEZvclBhcmFtZXRlcltdO1xuICB9KTogUHJvbWlzZTx7IHJlY29yZHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB9PiB7XG4gICAgaWYgKFxuICAgICAgIXBhcmFtcy5yZWNvcmRzLmV2ZXJ5KFxuICAgICAgICAocmVjb3JkKSA9PiAhQXJyYXkuaXNBcnJheShyZWNvcmQpICYmIHJlY29yZCBpbnN0YW5jZW9mIE9iamVjdFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGhlIGByZWNvcmRzYCBwYXJhbWV0ZXIgbXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3QuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hZGRBbGxSZWNvcmRzUmVjdXJzaXZlKHBhcmFtcywgcGFyYW1zLnJlY29yZHMubGVuZ3RoLCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZEFsbFJlY29yZHNSZWN1cnNpdmUoXG4gICAgcGFyYW1zOiB7IGFwcDogQXBwSUQ7IHJlY29yZHM6IFJlY29yZEZvclBhcmFtZXRlcltdIH0sXG4gICAgbnVtT2ZBbGxSZWNvcmRzOiBudW1iZXIsXG4gICAgcmVzdWx0czogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+XG4gICk6IFByb21pc2U8eyByZWNvcmRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT4gfT4ge1xuICAgIGNvbnN0IENIVU5LX0xFTkdUSCA9XG4gICAgICB0aGlzLmJ1bGtSZXF1ZXN0Q2xpZW50LlJFUVVFU1RTX0xFTkdUSF9MSU1JVCAqIEFERF9SRUNPUkRTX0xJTUlUO1xuICAgIGNvbnN0IHsgYXBwLCByZWNvcmRzIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcmVjb3Jkc0NodW5rID0gcmVjb3Jkcy5zbGljZSgwLCBDSFVOS19MRU5HVEgpO1xuICAgIGlmIChyZWNvcmRzQ2h1bmsubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyByZWNvcmRzOiByZXN1bHRzIH07XG4gICAgfVxuICAgIGxldCBuZXdSZXN1bHRzO1xuICAgIHRyeSB7XG4gICAgICBuZXdSZXN1bHRzID0gYXdhaXQgdGhpcy5hZGRBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0KHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzQ2h1bmssXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBLaW50b25lQWxsUmVjb3Jkc0Vycm9yKFxuICAgICAgICB7IHJlY29yZHM6IHJlc3VsdHMgfSxcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgbnVtT2ZBbGxSZWNvcmRzLFxuICAgICAgICBlLFxuICAgICAgICBBRERfUkVDT1JEU19MSU1JVFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWRkQWxsUmVjb3Jkc1JlY3Vyc2l2ZShcbiAgICAgIHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzLnNsaWNlKENIVU5LX0xFTkdUSCksXG4gICAgICB9LFxuICAgICAgbnVtT2ZBbGxSZWNvcmRzLFxuICAgICAgcmVzdWx0cy5jb25jYXQobmV3UmVzdWx0cylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0KHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkczogUmVjb3JkRm9yUGFyYW1ldGVyW107XG4gIH0pOiBQcm9taXNlPFxuICAgIEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICByZXZpc2lvbjogc3RyaW5nO1xuICAgIH0+XG4gID4ge1xuICAgIGNvbnN0IHNlcGFyYXRlZFJlY29yZHMgPSB0aGlzLnNlcGFyYXRlQXJyYXlSZWN1cnNpdmUoXG4gICAgICBBRERfUkVDT1JEU19MSU1JVCxcbiAgICAgIFtdLFxuICAgICAgcGFyYW1zLnJlY29yZHNcbiAgICApO1xuICAgIGNvbnN0IHJlcXVlc3RzID0gc2VwYXJhdGVkUmVjb3Jkcy5tYXAoKHJlY29yZHMpID0+ICh7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHNcIiBhcyBjb25zdCxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgICByZWNvcmRzLFxuICAgICAgfSxcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IChhd2FpdCB0aGlzLmJ1bGtSZXF1ZXN0Q2xpZW50LnNlbmQoeyByZXF1ZXN0cyB9KSlcbiAgICAgIC5yZXN1bHRzIGFzIEFycmF5PHsgaWRzOiBzdHJpbmdbXTsgcmV2aXNpb25zOiBzdHJpbmdbXSB9PjtcbiAgICByZXR1cm4gcmVzdWx0c1xuICAgICAgLm1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaWRzLCByZXZpc2lvbnMgfSA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIGlkcy5tYXAoKGlkLCBpKSA9PiAoeyBpZCwgcmV2aXNpb246IHJldmlzaW9uc1tpXSB9KSk7XG4gICAgICB9KVxuICAgICAgLnJlZHVjZSgoYWNjLCByZWNvcmRzKSA9PiB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KHJlY29yZHMpO1xuICAgICAgfSwgW10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUFsbFJlY29yZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByZWNvcmRzOiBBcnJheTxcbiAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICB8IHtcbiAgICAgICAgICB1cGRhdGVLZXk6IFVwZGF0ZUtleTtcbiAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgICAgICAgfVxuICAgID47XG4gIH0pOiBQcm9taXNlPHsgcmVjb3JkczogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+IH0+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVBbGxSZWNvcmRzUmVjdXJzaXZlKHBhcmFtcywgcGFyYW1zLnJlY29yZHMubGVuZ3RoLCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFsbFJlY29yZHNSZWN1cnNpdmUoXG4gICAgcGFyYW1zOiB7XG4gICAgICBhcHA6IEFwcElEO1xuICAgICAgcmVjb3JkczogQXJyYXk8XG4gICAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICAgIHwge1xuICAgICAgICAgICAgdXBkYXRlS2V5OiBVcGRhdGVLZXk7XG4gICAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgICAgICAgIH1cbiAgICAgID47XG4gICAgfSxcbiAgICBudW1PZkFsbFJlY29yZHM6IG51bWJlcixcbiAgICByZXN1bHRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT5cbiAgKTogUHJvbWlzZTx7IHJlY29yZHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB9PiB7XG4gICAgY29uc3QgQ0hVTktfTEVOR1RIID1cbiAgICAgIHRoaXMuYnVsa1JlcXVlc3RDbGllbnQuUkVRVUVTVFNfTEVOR1RIX0xJTUlUICogVVBEQVRFX1JFQ09SRFNfTElNSVQ7XG4gICAgY29uc3QgeyBhcHAsIHJlY29yZHMgfSA9IHBhcmFtcztcbiAgICBjb25zdCByZWNvcmRzQ2h1bmsgPSByZWNvcmRzLnNsaWNlKDAsIENIVU5LX0xFTkdUSCk7XG4gICAgaWYgKHJlY29yZHNDaHVuay5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHJlY29yZHM6IHJlc3VsdHMgfTtcbiAgICB9XG4gICAgbGV0IG5ld1Jlc3VsdHM7XG4gICAgdHJ5IHtcbiAgICAgIG5ld1Jlc3VsdHMgPSBhd2FpdCB0aGlzLnVwZGF0ZUFsbFJlY29yZHNXaXRoQnVsa1JlcXVlc3Qoe1xuICAgICAgICBhcHAsXG4gICAgICAgIHJlY29yZHM6IHJlY29yZHNDaHVuayxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEtpbnRvbmVBbGxSZWNvcmRzRXJyb3IoXG4gICAgICAgIHsgcmVjb3JkczogcmVzdWx0cyB9LFxuICAgICAgICByZWNvcmRzLFxuICAgICAgICBudW1PZkFsbFJlY29yZHMsXG4gICAgICAgIGUsXG4gICAgICAgIFVQREFURV9SRUNPUkRTX0xJTUlUXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cGRhdGVBbGxSZWNvcmRzUmVjdXJzaXZlKFxuICAgICAge1xuICAgICAgICBhcHAsXG4gICAgICAgIHJlY29yZHM6IHJlY29yZHMuc2xpY2UoQ0hVTktfTEVOR1RIKSxcbiAgICAgIH0sXG4gICAgICBudW1PZkFsbFJlY29yZHMsXG4gICAgICByZXN1bHRzLmNvbmNhdChuZXdSZXN1bHRzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFsbFJlY29yZHNXaXRoQnVsa1JlcXVlc3QocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByZWNvcmRzOiBBcnJheTxcbiAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICB8IHtcbiAgICAgICAgICB1cGRhdGVLZXk6IFVwZGF0ZUtleTtcbiAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgICAgICAgfVxuICAgID47XG4gIH0pOiBQcm9taXNlPEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9Pj4ge1xuICAgIGNvbnN0IHNlcGFyYXRlZFJlY29yZHMgPSB0aGlzLnNlcGFyYXRlQXJyYXlSZWN1cnNpdmUoXG4gICAgICBVUERBVEVfUkVDT1JEU19MSU1JVCxcbiAgICAgIFtdLFxuICAgICAgcGFyYW1zLnJlY29yZHNcbiAgICApO1xuICAgIGNvbnN0IHJlcXVlc3RzID0gc2VwYXJhdGVkUmVjb3Jkcy5tYXAoKHJlY29yZHMpID0+ICh7XG4gICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3Jkc1wiIGFzIGNvbnN0LFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBhcHA6IHBhcmFtcy5hcHAsXG4gICAgICAgIHJlY29yZHMsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBjb25zdCByZXN1bHRzID0gKGF3YWl0IHRoaXMuYnVsa1JlcXVlc3RDbGllbnQuc2VuZCh7IHJlcXVlc3RzIH0pKVxuICAgICAgLnJlc3VsdHMgYXMgQXJyYXk8eyByZWNvcmRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT4gfT47XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgIC5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnJlY29yZHMpXG4gICAgICAucmVkdWNlKChhY2MsIHJlY29yZHMpID0+IHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQocmVjb3Jkcyk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQWxsUmVjb3JkcyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IEFycmF5PHtcbiAgICAgIGlkOiBSZWNvcmRJRDtcbiAgICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gICAgfT47XG4gIH0pOiBQcm9taXNlPHt9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQWxsUmVjb3Jkc1JlY3Vyc2l2ZShwYXJhbXMsIHBhcmFtcy5yZWNvcmRzLmxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZUFsbFJlY29yZHNSZWN1cnNpdmUoXG4gICAgcGFyYW1zOiB7XG4gICAgICBhcHA6IEFwcElEO1xuICAgICAgcmVjb3JkczogQXJyYXk8e1xuICAgICAgICBpZDogUmVjb3JkSUQ7XG4gICAgICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gICAgICB9PjtcbiAgICB9LFxuICAgIG51bU9mQWxsUmVjb3JkczogbnVtYmVyXG4gICk6IFByb21pc2U8e30+IHtcbiAgICBjb25zdCBDSFVOS19MRU5HVEggPVxuICAgICAgdGhpcy5idWxrUmVxdWVzdENsaWVudC5SRVFVRVNUU19MRU5HVEhfTElNSVQgKiBERUxFVEVfUkVDT1JEU19MSU1JVDtcbiAgICBjb25zdCB7IGFwcCwgcmVjb3JkcyB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHJlY29yZHNDaHVuayA9IHJlY29yZHMuc2xpY2UoMCwgQ0hVTktfTEVOR1RIKTtcbiAgICBpZiAocmVjb3Jkc0NodW5rLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0KHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzQ2h1bmssXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBLaW50b25lQWxsUmVjb3Jkc0Vycm9yKFxuICAgICAgICB7fSxcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgbnVtT2ZBbGxSZWNvcmRzLFxuICAgICAgICBlLFxuICAgICAgICBERUxFVEVfUkVDT1JEU19MSU1JVFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQWxsUmVjb3Jkc1JlY3Vyc2l2ZShcbiAgICAgIHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzLnNsaWNlKENIVU5LX0xFTkdUSCksXG4gICAgICB9LFxuICAgICAgbnVtT2ZBbGxSZWNvcmRzXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlQWxsUmVjb3Jkc1dpdGhCdWxrUmVxdWVzdChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IEFycmF5PHtcbiAgICAgIGlkOiBSZWNvcmRJRDtcbiAgICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gICAgfT47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXBhcmF0ZWRSZWNvcmRzID0gdGhpcy5zZXBhcmF0ZUFycmF5UmVjdXJzaXZlKFxuICAgICAgREVMRVRFX1JFQ09SRFNfTElNSVQsXG4gICAgICBbXSxcbiAgICAgIHBhcmFtcy5yZWNvcmRzXG4gICAgKTtcbiAgICBjb25zdCByZXF1ZXN0cyA9IHNlcGFyYXRlZFJlY29yZHMubWFwKChyZWNvcmRzKSA9PiAoe1xuICAgICAgbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHNcIiBhcyBjb25zdCxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgICBpZHM6IHJlY29yZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5pZCksXG4gICAgICAgIHJldmlzaW9uczogcmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gcmVjb3JkLnJldmlzaW9uKSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICAgIGF3YWl0IHRoaXMuYnVsa1JlcXVlc3RDbGllbnQuc2VuZCh7IHJlcXVlc3RzIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXBhcmF0ZUFycmF5UmVjdXJzaXZlPFQ+KFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzZXBhcmF0ZWQ6IFRbXVtdLFxuICAgIGFycmF5OiBUW11cbiAgKTogVFtdW10ge1xuICAgIGNvbnN0IGNodW5rID0gYXJyYXkuc2xpY2UoMCwgc2l6ZSk7XG4gICAgaWYgKGNodW5rLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRlZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VwYXJhdGVBcnJheVJlY3Vyc2l2ZShcbiAgICAgIHNpemUsXG4gICAgICBbLi4uc2VwYXJhdGVkLCBjaHVua10sXG4gICAgICBhcnJheS5zbGljZShzaXplKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkUmVjb3JkQ29tbWVudChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZDogUmVjb3JkSUQ7XG4gICAgY29tbWVudDoge1xuICAgICAgdGV4dDogc3RyaW5nO1xuICAgICAgbWVudGlvbnM/OiBNZW50aW9uW107XG4gICAgfTtcbiAgfSk6IFByb21pc2U8eyBpZDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmQvY29tbWVudFwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlUmVjb3JkQ29tbWVudChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZDogUmVjb3JkSUQ7XG4gICAgY29tbWVudDogQ29tbWVudElEO1xuICB9KTogUHJvbWlzZTx7fT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZC9jb21tZW50XCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmRlbGV0ZShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldFJlY29yZENvbW1lbnRzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkOiBSZWNvcmRJRDtcbiAgICBvcmRlcj86IFwiYXNjXCIgfCBcImRlc2NcIjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgbGltaXQ/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHsgY29tbWVudHM6IENvbW1lbnRbXTsgb2xkZXI6IGJvb2xlYW47IG5ld2VyOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmQvY29tbWVudHNcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVjb3JkQXNzaWduZWVzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgaWQ6IFJlY29yZElEO1xuICAgIGFzc2lnbmVlczogc3RyaW5nW107XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmQvYXNzaWduZWVzXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVJlY29yZFN0YXR1cyhwYXJhbXM6IHtcbiAgICBhY3Rpb246IHN0cmluZztcbiAgICBhcHA6IEFwcElEO1xuICAgIGFzc2lnbmVlPzogc3RyaW5nO1xuICAgIGlkOiBSZWNvcmRJRDtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZC9zdGF0dXNcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVjb3Jkc1N0YXR1cyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IEFycmF5PHtcbiAgICAgIGFjdGlvbjogc3RyaW5nO1xuICAgICAgYXNzaWduZWU/OiBzdHJpbmc7XG4gICAgICBpZDogUmVjb3JkSUQ7XG4gICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgIH0+O1xuICB9KTogUHJvbWlzZTx7IHJlY29yZHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3Jkcy9zdGF0dXNcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQocGFyYW1zOiB7IGVuZHBvaW50TmFtZTogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gYnVpbGRQYXRoKHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIGd1ZXN0U3BhY2VJZDogdGhpcy5ndWVzdFNwYWNlSWQsXG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyA/IHNlbGYuRm9ybURhdGEgOiB3aW5kb3cuRm9ybURhdGE7XG4iLCJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIi4uL2h0dHBcIjtcbmltcG9ydCB7IGJ1aWxkUGF0aCB9IGZyb20gXCIuLi91cmxcIjtcbmltcG9ydCBGb3JtRGF0YSBmcm9tIFwiZm9ybS1kYXRhXCI7XG5pbXBvcnQgeyBwbGF0Zm9ybURlcHMgfSBmcm9tIFwiLi4vcGxhdGZvcm1cIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvciB9IGZyb20gXCIuLi9wbGF0Zm9ybS9VbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3JcIjtcblxuZXhwb3J0IGNsYXNzIEZpbGVDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogSHR0cENsaWVudDtcbiAgcHJpdmF0ZSBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY2xpZW50OiBIdHRwQ2xpZW50LCBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICB0aGlzLmd1ZXN0U3BhY2VJZCA9IGd1ZXN0U3BhY2VJZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRGaWxlKHBhcmFtczoge1xuICAgIGZpbGU6IHsgbmFtZTogc3RyaW5nOyBkYXRhOiB1bmtub3duIH0gfCB7IHBhdGg6IHN0cmluZyB9O1xuICB9KTogUHJvbWlzZTx7IGZpbGVLZXk6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiZmlsZVwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBpZiAoXCJwYXRoXCIgaW4gcGFyYW1zLmZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZGF0YSB9ID0gYXdhaXQgcGxhdGZvcm1EZXBzLnJlYWRGaWxlRnJvbVBhdGgoXG4gICAgICAgICAgcGFyYW1zLmZpbGUucGF0aFxuICAgICAgICApO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGRhdGEsIG5hbWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGB1cGxvYWRGaWxlIGRvZXNuJ3QgYWxsb3cgdG8gYWNjZXB0IGEgZmlsZSBwYXRoIGluICR7ZS5wbGF0Zm9ybX0gZW52aXJvbm1lbnQuYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGRhdGEgfSA9IHBhcmFtcy5maWxlO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBwbGF0Zm9ybURlcHMuYnVpbGRGb3JtRGF0YVZhbHVlKGRhdGEpLCBuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnBvc3REYXRhKHBhdGgsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZpbGUocGFyYW1zOiB7IGZpbGVLZXk6IHN0cmluZyB9KTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImZpbGVcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0RGF0YShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHBhcmFtczogeyBlbmRwb2ludE5hbWU6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIGJ1aWxkUGF0aCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBndWVzdFNwYWNlSWQ6IHRoaXMuZ3Vlc3RTcGFjZUlkLFxuICAgIH0pO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsLmNvbnN0cnVjdG9yICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwuY29uc3RydWN0b3IpXG4gICAgJiYgdHlwZW9mIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Zvcm1EYXRhKHZhbCkge1xuICByZXR1cm4gKHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcpICYmICh2YWwgaW5zdGFuY2VvZiBGb3JtRGF0YSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKHZhbC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmluZ1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyaW5nLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIE51bWJlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgTnVtYmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbCkge1xuICBpZiAodG9TdHJpbmcuY2FsbCh2YWwpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKTtcbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBEYXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNEYXRlKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGaWxlKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGaWxlXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCbG9iXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCbG9iLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCbG9iKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBCbG9iXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRnVuY3Rpb24sIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyZWFtXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJlYW0sIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmVhbSh2YWwpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHZhbCkgJiYgaXNGdW5jdGlvbih2YWwucGlwZSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVUkxTZWFyY2hQYXJhbXModmFsKSB7XG4gIHJldHVybiB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSAndW5kZWZpbmVkJyAmJiB2YWwgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXM7XG59XG5cbi8qKlxuICogVHJpbSBleGNlc3Mgd2hpdGVzcGFjZSBvZmYgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgU3RyaW5nIHRvIHRyaW1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBTdHJpbmcgZnJlZWQgb2YgZXhjZXNzIHdoaXRlc3BhY2VcbiAqL1xuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgcmV0dXJuIHN0ci50cmltID8gc3RyLnRyaW0oKSA6IHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICovXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFtrZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2UocmVzdWx0W2tleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGZvckVhY2goYXJndW1lbnRzW2ldLCBhc3NpZ25WYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIG9iamVjdCBhIGJ5IG11dGFibHkgYWRkaW5nIHRvIGl0IHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBiIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZChhLCBiLCB0aGlzQXJnKSB7XG4gIGZvckVhY2goYiwgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAodGhpc0FyZyAmJiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYnl0ZSBvcmRlciBtYXJrZXIuIFRoaXMgY2F0Y2hlcyBFRiBCQiBCRiAodGhlIFVURi04IEJPTSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCB3aXRoIEJPTVxuICogQHJldHVybiB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmZ1bmN0aW9uIHN0cmlwQk9NKGNvbnRlbnQpIHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltLFxuICBzdHJpcEJPTTogc3RyaXBCT01cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIEludGVyY2VwdG9yTWFuYWdlcigpIHtcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCwgb3B0aW9ucykge1xuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxuICAgIHJlamVjdGVkOiByZWplY3RlZCxcbiAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmVqZWN0ID0gZnVuY3Rpb24gZWplY3QoaWQpIHtcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gKlxuICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgIGZuKGgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcbiIsImV4cG9ydCBkZWZhdWx0ICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDpcbiAgICAgICAgICAgIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6XG4gICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pO1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG4vLyBiYXNlZCBvZmYgaHR0cHM6Ly9naXRodWIuY29tL2RlZnVuY3R6b21iaWUvbm9kZS1wcm9jZXNzL2Jsb2IvbWFzdGVyL2Jyb3dzZXIuanNcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG52YXIgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbmlmICh0eXBlb2YgZ2xvYmFsLnNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbn1cbmlmICh0eXBlb2YgZ2xvYmFsLmNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbn1cblxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5leHRUaWNrKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59XG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xuZXhwb3J0IHZhciB0aXRsZSA9ICdicm93c2VyJztcbmV4cG9ydCB2YXIgcGxhdGZvcm0gPSAnYnJvd3Nlcic7XG5leHBvcnQgdmFyIGJyb3dzZXIgPSB0cnVlO1xuZXhwb3J0IHZhciBlbnYgPSB7fTtcbmV4cG9ydCB2YXIgYXJndiA9IFtdO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5leHBvcnQgdmFyIHZlcnNpb25zID0ge307XG5leHBvcnQgdmFyIHJlbGVhc2UgPSB7fTtcbmV4cG9ydCB2YXIgY29uZmlnID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5leHBvcnQgdmFyIG9uID0gbm9vcDtcbmV4cG9ydCB2YXIgYWRkTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciBvbmNlID0gbm9vcDtcbmV4cG9ydCB2YXIgb2ZmID0gbm9vcDtcbmV4cG9ydCB2YXIgcmVtb3ZlTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciByZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuZXhwb3J0IHZhciBlbWl0ID0gbm9vcDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmcobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN3ZCAoKSB7IHJldHVybiAnLycgfVxuZXhwb3J0IGZ1bmN0aW9uIGNoZGlyIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiB1bWFzaygpIHsgcmV0dXJuIDA7IH1cblxuLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20va3VtYXZpcy9icm93c2VyLXByb2Nlc3MtaHJ0aW1lL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG52YXIgcGVyZm9ybWFuY2UgPSBnbG9iYWwucGVyZm9ybWFuY2UgfHwge31cbnZhciBwZXJmb3JtYW5jZU5vdyA9XG4gIHBlcmZvcm1hbmNlLm5vdyAgICAgICAgfHxcbiAgcGVyZm9ybWFuY2UubW96Tm93ICAgICB8fFxuICBwZXJmb3JtYW5jZS5tc05vdyAgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm9Ob3cgICAgICAgfHxcbiAgcGVyZm9ybWFuY2Uud2Via2l0Tm93ICB8fFxuICBmdW5jdGlvbigpeyByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSB9XG5cbi8vIGdlbmVyYXRlIHRpbWVzdGFtcCBvciBkZWx0YVxuLy8gc2VlIGh0dHA6Ly9ub2RlanMub3JnL2FwaS9wcm9jZXNzLmh0bWwjcHJvY2Vzc19wcm9jZXNzX2hydGltZVxuZXhwb3J0IGZ1bmN0aW9uIGhydGltZShwcmV2aW91c1RpbWVzdGFtcCl7XG4gIHZhciBjbG9ja3RpbWUgPSBwZXJmb3JtYW5jZU5vdy5jYWxsKHBlcmZvcm1hbmNlKSoxZS0zXG4gIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcihjbG9ja3RpbWUpXG4gIHZhciBuYW5vc2Vjb25kcyA9IE1hdGguZmxvb3IoKGNsb2NrdGltZSUxKSoxZTkpXG4gIGlmIChwcmV2aW91c1RpbWVzdGFtcCkge1xuICAgIHNlY29uZHMgPSBzZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMF1cbiAgICBuYW5vc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMV1cbiAgICBpZiAobmFub3NlY29uZHM8MCkge1xuICAgICAgc2Vjb25kcy0tXG4gICAgICBuYW5vc2Vjb25kcyArPSAxZTlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtzZWNvbmRzLG5hbm9zZWNvbmRzXVxufVxuXG52YXIgc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcbmV4cG9ydCBmdW5jdGlvbiB1cHRpbWUoKSB7XG4gIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gIHZhciBkaWYgPSBjdXJyZW50VGltZSAtIHN0YXJ0VGltZTtcbiAgcmV0dXJuIGRpZiAvIDEwMDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmV4dFRpY2s6IG5leHRUaWNrLFxuICB0aXRsZTogdGl0bGUsXG4gIGJyb3dzZXI6IGJyb3dzZXIsXG4gIGVudjogZW52LFxuICBhcmd2OiBhcmd2LFxuICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICB2ZXJzaW9uczogdmVyc2lvbnMsXG4gIG9uOiBvbixcbiAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICBvbmNlOiBvbmNlLFxuICBvZmY6IG9mZixcbiAgcmVtb3ZlTGlzdGVuZXI6IHJlbW92ZUxpc3RlbmVyLFxuICByZW1vdmVBbGxMaXN0ZW5lcnM6IHJlbW92ZUFsbExpc3RlbmVycyxcbiAgZW1pdDogZW1pdCxcbiAgYmluZGluZzogYmluZGluZyxcbiAgY3dkOiBjd2QsXG4gIGNoZGlyOiBjaGRpcixcbiAgdW1hc2s6IHVtYXNrLFxuICBocnRpbWU6IGhydGltZSxcbiAgcGxhdGZvcm06IHBsYXRmb3JtLFxuICByZWxlYXNlOiByZWxlYXNlLFxuICBjb25maWc6IGNvbmZpZyxcbiAgdXB0aW1lOiB1cHRpbWVcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCBub3JtYWxpemVkTmFtZSkge1xuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIodmFsdWUsIG5hbWUpIHtcbiAgICBpZiAobmFtZSAhPT0gbm9ybWFsaXplZE5hbWUgJiYgbmFtZS50b1VwcGVyQ2FzZSgpID09PSBub3JtYWxpemVkTmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xuICAgICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XG4gICAgfVxuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXBkYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWcsIGVycm9yIGNvZGUsIGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IgdG8gdXBkYXRlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgZXJyb3IuY29uZmlnID0gY29uZmlnO1xuICBpZiAoY29kZSkge1xuICAgIGVycm9yLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgZXJyb3IucmVxdWVzdCA9IHJlcXVlc3Q7XG4gIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gIGVycm9yLmlzQXhpb3NFcnJvciA9IHRydWU7XG5cbiAgZXJyb3IudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBTdGFuZGFyZFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgLy8gTWljcm9zb2Z0XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXG4gICAgICAvLyBNb3ppbGxhXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIC8vIEF4aW9zXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnJlc3BvbnNlICYmIHRoaXMucmVzcG9uc2Uuc3RhdHVzID8gdGhpcy5yZXNwb25zZS5zdGF0dXMgOiBudWxsXG4gICAgfTtcbiAgfTtcbiAgcmV0dXJuIGVycm9yO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vZW5oYW5jZUVycm9yJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yKG1lc3NhZ2UsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4vY3JlYXRlRXJyb3InKTtcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICB2YXIgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIGlmICghcmVzcG9uc2Uuc3RhdHVzIHx8ICF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUpIHtcbiAgICAgICAgICB2YXIgY29va2llID0gW107XG4gICAgICAgICAgY29va2llLnB1c2gobmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZXhwaXJlcz0nICsgbmV3IERhdGUoZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKHBhdGgpKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgncGF0aD0nICsgcGF0aCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKGRvbWFpbikpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlY3VyZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3NlY3VyZScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQobmFtZSkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCcoXnw7XFxcXHMqKSgnICsgbmFtZSArICcpPShbXjtdKiknKSk7XG4gICAgICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZShuYW1lKSB7XG4gICAgICAgICAgdGhpcy53cml0ZShuYW1lLCAnJywgRGF0ZS5ub3coKSAtIDg2NDAwMDAwKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZSgpIHt9LFxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKCkgeyByZXR1cm4gbnVsbDsgfSxcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxuICAvLyBSRkMgMzk4NiBkZWZpbmVzIHNjaGVtZSBuYW1lIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBiZWdpbm5pbmcgd2l0aCBhIGxldHRlciBhbmQgZm9sbG93ZWRcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXG4gIHJldHVybiAvXihbYS16XVthLXpcXGRcXCtcXC1cXC5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc0Fic29sdXRlVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9pc0Fic29sdXRlVVJMJyk7XG52YXIgY29tYmluZVVSTHMgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2NvbWJpbmVVUkxzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBiYXNlVVJMIHdpdGggdGhlIHJlcXVlc3RlZFVSTCxcbiAqIG9ubHkgd2hlbiB0aGUgcmVxdWVzdGVkVVJMIGlzIG5vdCBhbHJlYWR5IGFuIGFic29sdXRlIFVSTC5cbiAqIElmIHRoZSByZXF1ZXN0VVJMIGlzIGFic29sdXRlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVlc3RlZFVSTCB1bnRvdWNoZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdGVkVVJMIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCB0byBjb21iaW5lXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgZnVsbCBwYXRoXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpIHtcbiAgaWYgKGJhc2VVUkwgJiYgIWlzQWJzb2x1dGVVUkwocmVxdWVzdGVkVVJMKSkge1xuICAgIHJldHVybiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0ZWRVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICB2YXIgb3JpZ2luVVJMO1xuXG4gICAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICAgIHZhciBocmVmID0gdXJsO1xuXG4gICAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICAgICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgICAgcmV0dXJuIChwYXJzZWQucHJvdG9jb2wgPT09IG9yaWdpblVSTC5wcm90b2NvbCAmJlxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQSBgQ2FuY2VsYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbkNhbmNlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XG59O1xuXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcbnZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIGJ1aWxkRnVsbFBhdGggPSByZXF1aXJlKCcuLi9jb3JlL2J1aWxkRnVsbFBhdGgnKTtcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzJyk7XG52YXIgaXNVUkxTYW1lT3JpZ2luID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbicpO1xudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi4vY29yZS9jcmVhdGVFcnJvcicpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcbnZhciBDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcbiAgICB2YXIgcmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB2YXIgb25DYW5jZWxlZDtcbiAgICBmdW5jdGlvbiBkb25lKCkge1xuICAgICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgICBjb25maWcuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgIGNvbmZpZy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShyZXF1ZXN0RGF0YSkpIHtcbiAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1snQ29udGVudC1UeXBlJ107IC8vIExldCB0aGUgYnJvd3NlciBzZXQgaXRcbiAgICB9XG5cbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICAgIGlmIChjb25maWcuYXV0aCkge1xuICAgICAgdmFyIHVzZXJuYW1lID0gY29uZmlnLmF1dGgudXNlcm5hbWUgfHwgJyc7XG4gICAgICB2YXIgcGFzc3dvcmQgPSBjb25maWcuYXV0aC5wYXNzd29yZCA/IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjb25maWcuYXV0aC5wYXNzd29yZCkpIDogJyc7XG4gICAgICByZXF1ZXN0SGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0Jhc2ljICcgKyBidG9hKHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHZhciBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuICAgIHJlcXVlc3Qub3Blbihjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplciksIHRydWUpO1xuXG4gICAgLy8gU2V0IHRoZSByZXF1ZXN0IHRpbWVvdXQgaW4gTVNcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBjb25maWcudGltZW91dDtcblxuICAgIGZ1bmN0aW9uIG9ubG9hZGVuZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xuICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9ICFyZXNwb25zZVR5cGUgfHwgcmVzcG9uc2VUeXBlID09PSAndGV4dCcgfHwgIHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID9cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgdmFyIHJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xuICAgICAgLy8gVXNlIG9ubG9hZGVuZCBpZiBhdmFpbGFibGVcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlIHRvIGVtdWxhdGUgb25sb2FkZW5kXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXG4gICAgICAgIHNldFRpbWVvdXQob25sb2FkZW5kKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBjb25maWcsICdFQ09OTkFCT1JURUQnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICAvLyBSZWFsIGVycm9ycyBhcmUgaGlkZGVuIGZyb20gdXMgYnkgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKCdOZXR3b3JrIEVycm9yJywgY29uZmlnLCBudWxsLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgdGltZW91dFxuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpIHtcbiAgICAgIHZhciB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnIDogJ3RpbWVvdXQgZXhjZWVkZWQnO1xuICAgICAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/ICdFVElNRURPVVQnIDogJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzW2NvbmZpZy54c3JmSGVhZGVyTmFtZV0gPSB4c3JmVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMsIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbiB8fCBjb25maWcuc2lnbmFsKSB7XG4gICAgICAvLyBIYW5kbGUgY2FuY2VsbGF0aW9uXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgb25DYW5jZWxlZCA9IGZ1bmN0aW9uKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgKGNhbmNlbCAmJiBjYW5jZWwudHlwZSkgPyBuZXcgQ2FuY2VsKCdjYW5jZWxlZCcpIDogY2FuY2VsKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbiAmJiBjb25maWcuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5hYm9ydGVkID8gb25DYW5jZWxlZCgpIDogY29uZmlnLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVxdWVzdERhdGEpIHtcbiAgICAgIHJlcXVlc3REYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgbm9ybWFsaXplSGVhZGVyTmFtZSA9IHJlcXVpcmUoJy4vaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lJyk7XG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi9jb3JlL2VuaGFuY2VFcnJvcicpO1xuXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuZnVuY3Rpb24gc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsIHZhbHVlKSB7XG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QWRhcHRlcigpIHtcbiAgdmFyIGFkYXB0ZXI7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gRm9yIGJyb3dzZXJzIHVzZSBYSFIgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuL2FkYXB0ZXJzL3hocicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy9odHRwJyk7XG4gIH1cbiAgcmV0dXJuIGFkYXB0ZXI7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVNhZmVseShyYXdWYWx1ZSwgcGFyc2VyLCBlbmNvZGVyKSB7XG4gIGlmICh1dGlscy5pc1N0cmluZyhyYXdWYWx1ZSkpIHtcbiAgICB0cnkge1xuICAgICAgKHBhcnNlciB8fCBKU09OLnBhcnNlKShyYXdWYWx1ZSk7XG4gICAgICByZXR1cm4gdXRpbHMudHJpbShyYXdWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubmFtZSAhPT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoZW5jb2RlciB8fCBKU09OLnN0cmluZ2lmeSkocmF3VmFsdWUpO1xufVxuXG52YXIgZGVmYXVsdHMgPSB7XG5cbiAgdHJhbnNpdGlvbmFsOiB7XG4gICAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gICAgZm9yY2VkSlNPTlBhcnNpbmc6IHRydWUsXG4gICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogZmFsc2VcbiAgfSxcblxuICBhZGFwdGVyOiBnZXREZWZhdWx0QWRhcHRlcigpLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdBY2NlcHQnKTtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKTtcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzT2JqZWN0KGRhdGEpIHx8IChoZWFkZXJzICYmIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID09PSAnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlTYWZlbHkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICB2YXIgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgIHZhciBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgdmFyIGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICB2YXIgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmIChzdHJpY3RKU09OUGFyc2luZyB8fCAoZm9yY2VkSlNPTlBhcnNpbmcgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5sZW5ndGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgZW5oYW5jZUVycm9yKGUsIHRoaXMsICdFX0pTT05fUEFSU0UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfSxcblxuICBoZWFkZXJzOiB7XG4gICAgY29tbW9uOiB7XG4gICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcbiAgICB9XG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0gdXRpbHMubWVyZ2UoREVGQVVMVF9DT05URU5UX1RZUEUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vLi4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XG4gIHZhciBjb250ZXh0ID0gdGhpcyB8fCBkZWZhdWx0cztcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4uY2FsbChjb250ZXh0LCBkYXRhLCBoZWFkZXJzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciB0cmFuc2Zvcm1EYXRhID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1EYXRhJyk7XG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL0NhbmNlbCcpO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IENhbmNlbCgnY2FuY2VsZWQnKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAvLyBFbnN1cmUgaGVhZGVycyBleGlzdFxuICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy5kYXRhLFxuICAgIGNvbmZpZy5oZWFkZXJzLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gIGNvbmZpZy5oZWFkZXJzID0gdXRpbHMubWVyZ2UoXG4gICAgY29uZmlnLmhlYWRlcnMuY29tbW9uIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzW2NvbmZpZy5tZXRob2RdIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzXG4gICk7XG5cbiAgdXRpbHMuZm9yRWFjaChcbiAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICBmdW5jdGlvbiBjbGVhbkhlYWRlckNvbmZpZyhtZXRob2QpIHtcbiAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyc1ttZXRob2RdO1xuICAgIH1cbiAgKTtcblxuICB2YXIgYWRhcHRlciA9IGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXI7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICBjb25maWcsXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgdmFyIGNvbmZpZyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlKSB7XG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QodGFyZ2V0KSAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbWVyZ2VNYXAgPSB7XG4gICAgJ3VybCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ21ldGhvZCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ2RhdGEnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdiYXNlVVJMJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNmb3JtUmVxdWVzdCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zZm9ybVJlc3BvbnNlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncGFyYW1zU2VyaWFsaXplcic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RpbWVvdXQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0aW1lb3V0TWVzc2FnZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3dpdGhDcmVkZW50aWFscyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2FkYXB0ZXInOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdyZXNwb25zZVR5cGUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd4c3JmQ29va2llTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3hzcmZIZWFkZXJOYW1lJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnb25VcGxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ29uRG93bmxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2RlY29tcHJlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdtYXhDb250ZW50TGVuZ3RoJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnbWF4Qm9keUxlbmd0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zcG9ydCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2h0dHBBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2h0dHBzQWdlbnQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdjYW5jZWxUb2tlbic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3NvY2tldFBhdGgnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdyZXNwb25zZUVuY29kaW5nJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndmFsaWRhdGVTdGF0dXMnOiBtZXJnZURpcmVjdEtleXNcbiAgfTtcblxuICB1dGlscy5mb3JFYWNoKE9iamVjdC5rZXlzKGNvbmZpZzEpLmNvbmNhdChPYmplY3Qua2V5cyhjb25maWcyKSksIGZ1bmN0aW9uIGNvbXB1dGVDb25maWdWYWx1ZShwcm9wKSB7XG4gICAgdmFyIG1lcmdlID0gbWVyZ2VNYXBbcHJvcF0gfHwgbWVyZ2VEZWVwUHJvcGVydGllcztcbiAgICB2YXIgY29uZmlnVmFsdWUgPSBtZXJnZShwcm9wKTtcbiAgICAodXRpbHMuaXNVbmRlZmluZWQoY29uZmlnVmFsdWUpICYmIG1lcmdlICE9PSBtZXJnZURpcmVjdEtleXMpIHx8IChjb25maWdbcHJvcF0gPSBjb25maWdWYWx1ZSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIFwidmVyc2lvblwiOiBcIjAuMjQuMFwiXG59OyIsIid1c2Ugc3RyaWN0JztcblxudmFyIFZFUlNJT04gPSByZXF1aXJlKCcuLi9lbnYvZGF0YScpLnZlcnNpb247XG5cbnZhciB2YWxpZGF0b3JzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaChmdW5jdGlvbih0eXBlLCBpKSB7XG4gIHZhbGlkYXRvcnNbdHlwZV0gPSBmdW5jdGlvbiB2YWxpZGF0b3IodGhpbmcpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcbiAgfTtcbn0pO1xuXG52YXIgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XG5cbi8qKlxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb258Ym9vbGVhbj99IHZhbGlkYXRvciAtIHNldCB0byBmYWxzZSBpZiB0aGUgdHJhbnNpdGlvbmFsIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb24gLSBkZXByZWNhdGVkIHZlcnNpb24gLyByZW1vdmVkIHNpbmNlIHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nP30gbWVzc2FnZSAtIHNvbWUgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb1xuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvcHQsIG9wdHMpIHtcbiAgICBpZiAodmFsaWRhdG9yID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQnICsgKHZlcnNpb24gPyAnIGluICcgKyB2ZXJzaW9uIDogJycpKSk7XG4gICAgfVxuXG4gICAgaWYgKHZlcnNpb24gJiYgIWRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdKSB7XG4gICAgICBkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSA9IHRydWU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKFxuICAgICAgICAgIG9wdCxcbiAgICAgICAgICAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdicgKyB2ZXJzaW9uICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yID8gdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdHMpIDogdHJ1ZTtcbiAgfTtcbn07XG5cbi8qKlxuICogQXNzZXJ0IG9iamVjdCdzIHByb3BlcnRpZXMgdHlwZVxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWFcbiAqIEBwYXJhbSB7Ym9vbGVhbj99IGFsbG93VW5rbm93blxuICovXG5cbmZ1bmN0aW9uIGFzc2VydE9wdGlvbnMob3B0aW9ucywgc2NoZW1hLCBhbGxvd1Vua25vd24pIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgfVxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIHZhciBvcHQgPSBrZXlzW2ldO1xuICAgIHZhciB2YWxpZGF0b3IgPSBzY2hlbWFbb3B0XTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICB2YXIgdmFsdWUgPSBvcHRpb25zW29wdF07XG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0aW9ucyk7XG4gICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiAnICsgb3B0ICsgJyBtdXN0IGJlICcgKyByZXN1bHQpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhbGxvd1Vua25vd24gIT09IHRydWUpIHtcbiAgICAgIHRocm93IEVycm9yKCdVbmtub3duIG9wdGlvbiAnICsgb3B0KTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzc2VydE9wdGlvbnM6IGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG52YXIgdmFsaWRhdG9yID0gcmVxdWlyZSgnLi4vaGVscGVycy92YWxpZGF0b3InKTtcblxudmFyIHZhbGlkYXRvcnMgPSB2YWxpZGF0b3IudmFsaWRhdG9ycztcbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZykge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBhcmd1bWVudHNbMV0gfHwge307XG4gICAgY29uZmlnLnVybCA9IGFyZ3VtZW50c1swXTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gIH1cblxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gIC8vIFNldCBjb25maWcubWV0aG9kXG4gIGlmIChjb25maWcubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRzLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZy5tZXRob2QgPSAnZ2V0JztcbiAgfVxuXG4gIHZhciB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsO1xuXG4gIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbilcbiAgICB9LCBmYWxzZSk7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXG4gIHZhciByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB2YXIgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gdHJ1ZTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2YXIgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24gcHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciBwcm9taXNlO1xuXG4gIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcblxuICAgIEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGNoYWluLCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbik7XG4gICAgY2hhaW4gPSBjaGFpbi5jb25jYXQocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcblxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cblxuICB2YXIgbmV3Q29uZmlnID0gY29uZmlnO1xuICB3aGlsZSAocmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgdmFyIG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB2YXIgb25SZWplY3RlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdHJ5IHtcbiAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uUmVqZWN0ZWQoZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0KG5ld0NvbmZpZyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgfVxuXG4gIHdoaWxlIChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XG4gICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCkpO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2U7XG59O1xuXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICByZXR1cm4gYnVpbGRVUkwoY29uZmlnLnVybCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cXD8vLCAnJyk7XG59O1xuXG4vLyBQcm92aWRlIGFsaWFzZXMgZm9yIHN1cHBvcnRlZCByZXF1ZXN0IG1ldGhvZHNcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4vQ2FuY2VsJyk7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsVG9rZW4oZXhlY3V0b3IpIHtcbiAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciByZXNvbHZlUHJvbWlzZTtcblxuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbihmdW5jdGlvbihjYW5jZWwpIHtcbiAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgIHZhciBpO1xuICAgIHZhciBsID0gdG9rZW4uX2xpc3RlbmVycy5sZW5ndGg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0b2tlbi5fbGlzdGVuZXJzW2ldKGNhbmNlbCk7XG4gICAgfVxuICAgIHRva2VuLl9saXN0ZW5lcnMgPSBudWxsO1xuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbiA9IGZ1bmN0aW9uKG9uZnVsZmlsbGVkKSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB0b2tlbi5zdWJzY3JpYmUocmVzb2x2ZSk7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSkudGhlbihvbmZ1bGZpbGxlZCk7XG5cbiAgICBwcm9taXNlLmNhbmNlbCA9IGZ1bmN0aW9uIHJlamVjdCgpIHtcbiAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH07XG5cbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogU3Vic2NyaWJlIHRvIHRoZSBjYW5jZWwgc2lnbmFsXG4gKi9cblxuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICB9XG59O1xuXG4vKipcbiAqIFVuc3Vic2NyaWJlIGZyb20gdGhlIGNhbmNlbCBzaWduYWxcbiAqL1xuXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiB1bnN1YnNjcmliZShsaXN0ZW5lcikge1xuICBpZiAoIXRoaXMuX2xpc3RlbmVycykge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgbmV3IGBDYW5jZWxUb2tlbmAgYW5kIGEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQsXG4gKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICovXG5DYW5jZWxUb2tlbi5zb3VyY2UgPSBmdW5jdGlvbiBzb3VyY2UoKSB7XG4gIHZhciBjYW5jZWw7XG4gIHZhciB0b2tlbiA9IG5ldyBDYW5jZWxUb2tlbihmdW5jdGlvbiBleGVjdXRvcihjKSB7XG4gICAgY2FuY2VsID0gYztcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgdG9rZW46IHRva2VuLFxuICAgIGNhbmNlbDogY2FuY2VsXG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbFRva2VuO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXG4gKlxuICogQ29tbW9uIHVzZSBjYXNlIHdvdWxkIGJlIHRvIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5YC5cbiAqXG4gKiAgYGBganNcbiAqICBmdW5jdGlvbiBmKHgsIHksIHopIHt9XG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcbiAqICBgYGBcbiAqXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cbiAqXG4gKiAgYGBganNcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XG4gKiAgYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3NcbiAqXG4gKiBAcGFyYW0geyp9IHBheWxvYWQgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBeGlvc0Vycm9yKHBheWxvYWQpIHtcbiAgcmV0dXJuICh0eXBlb2YgcGF5bG9hZCA9PT0gJ29iamVjdCcpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vY29yZS9tZXJnZUNvbmZpZycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gIC8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbiAgaW5zdGFuY2UuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWcsIGluc3RhbmNlQ29uZmlnKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG4vLyBDcmVhdGUgdGhlIGRlZmF1bHQgaW5zdGFuY2UgdG8gYmUgZXhwb3J0ZWRcbnZhciBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbCcpO1xuYXhpb3MuQ2FuY2VsVG9rZW4gPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxUb2tlbicpO1xuYXhpb3MuaXNDYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9pc0NhbmNlbCcpO1xuYXhpb3MuVkVSU0lPTiA9IHJlcXVpcmUoJy4vZW52L2RhdGEnKS52ZXJzaW9uO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuYXhpb3Muc3ByZWFkID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NwcmVhZCcpO1xuXG4vLyBFeHBvc2UgaXNBeGlvc0Vycm9yXG5heGlvcy5pc0F4aW9zRXJyb3IgPSByZXF1aXJlKCcuL2hlbHBlcnMvaXNBeGlvc0Vycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXhpb3M7XG5cbi8vIEFsbG93IHVzZSBvZiBkZWZhdWx0IGltcG9ydCBzeW50YXggaW4gVHlwZVNjcmlwdFxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGF4aW9zO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9heGlvcycpOyIsImltcG9ydCBBeGlvcyBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIFJlcXVlc3RDb25maWdCdWlsZGVyLFxuICBSZXF1ZXN0Q29uZmlnLFxuICBSZXNwb25zZUhhbmRsZXIsXG59IGZyb20gXCIuL0h0dHBDbGllbnRJbnRlcmZhY2VcIjtcbmltcG9ydCBGb3JtRGF0YSBmcm9tIFwiZm9ybS1kYXRhXCI7XG5cbmV4cG9ydCBjbGFzcyBBeGlvc0NsaWVudCBpbXBsZW1lbnRzIEh0dHBDbGllbnQge1xuICBwcml2YXRlIHJlc3BvbnNlSGFuZGxlcjogUmVzcG9uc2VIYW5kbGVyO1xuICBwcml2YXRlIHJlcXVlc3RDb25maWdCdWlsZGVyOiBSZXF1ZXN0Q29uZmlnQnVpbGRlcjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgcmVzcG9uc2VIYW5kbGVyLFxuICAgIHJlcXVlc3RDb25maWdCdWlsZGVyLFxuICB9OiB7XG4gICAgcmVzcG9uc2VIYW5kbGVyOiBSZXNwb25zZUhhbmRsZXI7XG4gICAgcmVxdWVzdENvbmZpZ0J1aWxkZXI6IFJlcXVlc3RDb25maWdCdWlsZGVyO1xuICB9KSB7XG4gICAgdGhpcy5yZXNwb25zZUhhbmRsZXIgPSByZXNwb25zZUhhbmRsZXI7XG4gICAgdGhpcy5yZXF1ZXN0Q29uZmlnQnVpbGRlciA9IHJlcXVlc3RDb25maWdCdWlsZGVyO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldDxUIGV4dGVuZHMgb2JqZWN0PihwYXRoOiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGF3YWl0IHRoaXMucmVxdWVzdENvbmZpZ0J1aWxkZXIuYnVpbGQoXG4gICAgICBcImdldFwiLFxuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KHJlcXVlc3RDb25maWcpKSBhcyBQcm9taXNlPFQ+O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERhdGEocGF0aDogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xuICAgIGNvbnN0IHJlcXVlc3RDb25maWcgPSBhd2FpdCB0aGlzLnJlcXVlc3RDb25maWdCdWlsZGVyLmJ1aWxkKFxuICAgICAgXCJnZXRcIixcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXMsXG4gICAgICB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiLFxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KHJlcXVlc3RDb25maWcpKSBhcyBQcm9taXNlPEFycmF5QnVmZmVyPjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwb3N0PFQgZXh0ZW5kcyBvYmplY3Q+KHBhdGg6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcbiAgICBjb25zdCByZXF1ZXN0Q29uZmlnID0gYXdhaXQgdGhpcy5yZXF1ZXN0Q29uZmlnQnVpbGRlci5idWlsZChcbiAgICAgIFwicG9zdFwiLFxuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KHJlcXVlc3RDb25maWcpKSBhcyBQcm9taXNlPFQ+O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHBvc3REYXRhPFQgZXh0ZW5kcyBvYmplY3Q+KHBhdGg6IHN0cmluZywgZm9ybURhdGE6IEZvcm1EYXRhKSB7XG4gICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGF3YWl0IHRoaXMucmVxdWVzdENvbmZpZ0J1aWxkZXIuYnVpbGQoXG4gICAgICBcInBvc3RcIixcbiAgICAgIHBhdGgsXG4gICAgICBmb3JtRGF0YVxuICAgICk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KHJlcXVlc3RDb25maWcpKSBhcyBQcm9taXNlPFQ+O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHB1dDxUIGV4dGVuZHMgb2JqZWN0PihwYXRoOiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGF3YWl0IHRoaXMucmVxdWVzdENvbmZpZ0J1aWxkZXIuYnVpbGQoXG4gICAgICBcInB1dFwiLFxuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KHJlcXVlc3RDb25maWcpKSBhcyBQcm9taXNlPFQ+O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZTxUIGV4dGVuZHMgb2JqZWN0PihwYXRoOiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGF3YWl0IHRoaXMucmVxdWVzdENvbmZpZ0J1aWxkZXIuYnVpbGQoXG4gICAgICBcImRlbGV0ZVwiLFxuICAgICAgcGF0aCxcbiAgICAgIHBhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnNlbmRSZXF1ZXN0KHJlcXVlc3RDb25maWcpKSBhcyBQcm9taXNlPFQ+O1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kUmVxdWVzdChyZXF1ZXN0Q29uZmlnOiBSZXF1ZXN0Q29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2VIYW5kbGVyLmhhbmRsZShcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG4gICAgICBBeGlvcyh7XG4gICAgICAgIC4uLnJlcXVlc3RDb25maWcsXG5cbiAgICAgICAgbWF4Qm9keUxlbmd0aDogSW5maW5pdHksXG4gICAgICAgIG1heENvbnRlbnRMZW5ndGg6IEluZmluaXR5LFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG5cbnZhciB1biRKb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBFUzNfU1RSSU5HUyA9IEluZGV4ZWRPYmplY3QgIT0gT2JqZWN0O1xudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdqb2luJywgJywnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5qb2luYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmpvaW5cbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEVTM19TVFJJTkdTIHx8ICFTVFJJQ1RfTUVUSE9EIH0sIHtcbiAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpIHtcbiAgICByZXR1cm4gdW4kSm9pbih0b0luZGV4ZWRPYmplY3QodGhpcyksIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkID8gJywnIDogc2VwYXJhdG9yKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGVzbGludCBjb21wbGV4aXR5OiBbMiwgMThdLCBtYXgtc3RhdGVtZW50czogWzIsIDMzXSAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoYXNTeW1ib2xzKCkge1xuXHRpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09ICdzeW1ib2wnKSB7IHJldHVybiB0cnVlOyB9XG5cblx0dmFyIG9iaiA9IHt9O1xuXHR2YXIgc3ltID0gU3ltYm9sKCd0ZXN0Jyk7XG5cdHZhciBzeW1PYmogPSBPYmplY3Qoc3ltKTtcblx0aWYgKHR5cGVvZiBzeW0gPT09ICdzdHJpbmcnKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltT2JqKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0Ly8gdGVtcCBkaXNhYmxlZCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9vYmplY3QuYXNzaWduL2lzc3Vlcy8xN1xuXHQvLyBpZiAoc3ltIGluc3RhbmNlb2YgU3ltYm9sKSB7IHJldHVybiBmYWxzZTsgfVxuXHQvLyB0ZW1wIGRpc2FibGVkIHBlciBodHRwczovL2dpdGh1Yi5jb20vV2ViUmVmbGVjdGlvbi9nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMvaXNzdWVzLzRcblx0Ly8gaWYgKCEoc3ltT2JqIGluc3RhbmNlb2YgU3ltYm9sKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHQvLyBpZiAodHlwZW9mIFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdC8vIGlmIChTdHJpbmcoc3ltKSAhPT0gU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0dmFyIHN5bVZhbCA9IDQyO1xuXHRvYmpbc3ltXSA9IHN5bVZhbDtcblx0Zm9yIChzeW0gaW4gb2JqKSB7IHJldHVybiBmYWxzZTsgfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdGlmICh0eXBlb2YgT2JqZWN0LmtleXMgPT09ICdmdW5jdGlvbicgJiYgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggIT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyA9PT0gJ2Z1bmN0aW9uJyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmxlbmd0aCAhPT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHR2YXIgc3ltcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKTtcblx0aWYgKHN5bXMubGVuZ3RoICE9PSAxIHx8IHN5bXNbMF0gIT09IHN5bSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmosIHN5bSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgc3ltKTtcblx0XHRpZiAoZGVzY3JpcHRvci52YWx1ZSAhPT0gc3ltVmFsIHx8IGRlc2NyaXB0b3IuZW51bWVyYWJsZSAhPT0gdHJ1ZSkgeyByZXR1cm4gZmFsc2U7IH1cblx0fVxuXG5cdHJldHVybiB0cnVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9yaWdTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIGhhc1N5bWJvbFNoYW0gPSByZXF1aXJlKCcuL3NoYW1zJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzTmF0aXZlU3ltYm9scygpIHtcblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sKCdmb28nKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sKCdiYXInKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0cmV0dXJuIGhhc1N5bWJvbFNoYW0oKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGVzbGludCBuby1pbnZhbGlkLXRoaXM6IDEgKi9cblxudmFyIEVSUk9SX01FU1NBR0UgPSAnRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAnO1xudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBmdW5jVHlwZSA9ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZCh0aGF0KSB7XG4gICAgdmFyIHRhcmdldCA9IHRoaXM7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09ICdmdW5jdGlvbicgfHwgdG9TdHIuY2FsbCh0YXJnZXQpICE9PSBmdW5jVHlwZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEVSUk9SX01FU1NBR0UgKyB0YXJnZXQpO1xuICAgIH1cbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIHZhciBib3VuZDtcbiAgICB2YXIgYmluZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIGJvdW5kKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGFyZ2V0LmFwcGx5KFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChPYmplY3QocmVzdWx0KSA9PT0gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseShcbiAgICAgICAgICAgICAgICB0aGF0LFxuICAgICAgICAgICAgICAgIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGJvdW5kTGVuZ3RoID0gTWF0aC5tYXgoMCwgdGFyZ2V0Lmxlbmd0aCAtIGFyZ3MubGVuZ3RoKTtcbiAgICB2YXIgYm91bmRBcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib3VuZExlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJvdW5kQXJncy5wdXNoKCckJyArIGkpO1xuICAgIH1cblxuICAgIGJvdW5kID0gRnVuY3Rpb24oJ2JpbmRlcicsICdyZXR1cm4gZnVuY3Rpb24gKCcgKyBib3VuZEFyZ3Muam9pbignLCcpICsgJyl7IHJldHVybiBiaW5kZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOyB9JykoYmluZGVyKTtcblxuICAgIGlmICh0YXJnZXQucHJvdG90eXBlKSB7XG4gICAgICAgIHZhciBFbXB0eSA9IGZ1bmN0aW9uIEVtcHR5KCkge307XG4gICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IHRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGJvdW5kLnByb3RvdHlwZSA9IG5ldyBFbXB0eSgpO1xuICAgICAgICBFbXB0eS5wcm90b3R5cGUgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBib3VuZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpbXBsZW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCB8fCBpbXBsZW1lbnRhdGlvbjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdW5kZWZpbmVkO1xuXG52YXIgJFN5bnRheEVycm9yID0gU3ludGF4RXJyb3I7XG52YXIgJEZ1bmN0aW9uID0gRnVuY3Rpb247XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG52YXIgZ2V0RXZhbGxlZENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKGV4cHJlc3Npb25TeW50YXgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gJEZ1bmN0aW9uKCdcInVzZSBzdHJpY3RcIjsgcmV0dXJuICgnICsgZXhwcmVzc2lvblN5bnRheCArICcpLmNvbnN0cnVjdG9yOycpKCk7XG5cdH0gY2F0Y2ggKGUpIHt9XG59O1xuXG52YXIgJGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuaWYgKCRnT1BEKSB7XG5cdHRyeSB7XG5cdFx0JGdPUEQoe30sICcnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdCRnT1BEID0gbnVsbDsgLy8gdGhpcyBpcyBJRSA4LCB3aGljaCBoYXMgYSBicm9rZW4gZ09QRFxuXHR9XG59XG5cbnZhciB0aHJvd1R5cGVFcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoKTtcbn07XG52YXIgVGhyb3dUeXBlRXJyb3IgPSAkZ09QRFxuXHQ/IChmdW5jdGlvbiAoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnMsIG5vLWNhbGxlciwgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG5cdFx0XHRhcmd1bWVudHMuY2FsbGVlOyAvLyBJRSA4IGRvZXMgbm90IHRocm93IGhlcmVcblx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHR9IGNhdGNoIChjYWxsZWVUaHJvd3MpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIElFIDggdGhyb3dzIG9uIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnJylcblx0XHRcdFx0cmV0dXJuICRnT1BEKGFyZ3VtZW50cywgJ2NhbGxlZScpLmdldDtcblx0XHRcdH0gY2F0Y2ggKGdPUER0aHJvd3MpIHtcblx0XHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fSgpKVxuXHQ6IHRocm93VHlwZUVycm9yO1xuXG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcblxudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4Ll9fcHJvdG9fXzsgfTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuXG52YXIgbmVlZHNFdmFsID0ge307XG5cbnZhciBUeXBlZEFycmF5ID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8oVWludDhBcnJheSk7XG5cbnZhciBJTlRSSU5TSUNTID0ge1xuXHQnJUFnZ3JlZ2F0ZUVycm9yJSc6IHR5cGVvZiBBZ2dyZWdhdGVFcnJvciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBZ2dyZWdhdGVFcnJvcixcblx0JyVBcnJheSUnOiBBcnJheSxcblx0JyVBcnJheUJ1ZmZlciUnOiB0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQXJyYXlCdWZmZXIsXG5cdCclQXJyYXlJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlJzogdW5kZWZpbmVkLFxuXHQnJUFzeW5jRnVuY3Rpb24lJzogbmVlZHNFdmFsLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJSc6IG5lZWRzRXZhbCxcblx0JyVBdG9taWNzJSc6IHR5cGVvZiBBdG9taWNzID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEF0b21pY3MsXG5cdCclQmlnSW50JSc6IHR5cGVvZiBCaWdJbnQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQmlnSW50LFxuXHQnJUJvb2xlYW4lJzogQm9vbGVhbixcblx0JyVEYXRhVmlldyUnOiB0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRGF0YVZpZXcsXG5cdCclRGF0ZSUnOiBEYXRlLFxuXHQnJWRlY29kZVVSSSUnOiBkZWNvZGVVUkksXG5cdCclZGVjb2RlVVJJQ29tcG9uZW50JSc6IGRlY29kZVVSSUNvbXBvbmVudCxcblx0JyVlbmNvZGVVUkklJzogZW5jb2RlVVJJLFxuXHQnJWVuY29kZVVSSUNvbXBvbmVudCUnOiBlbmNvZGVVUklDb21wb25lbnQsXG5cdCclRXJyb3IlJzogRXJyb3IsXG5cdCclZXZhbCUnOiBldmFsLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV2YWxcblx0JyVFdmFsRXJyb3IlJzogRXZhbEVycm9yLFxuXHQnJUZsb2F0MzJBcnJheSUnOiB0eXBlb2YgRmxvYXQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0MzJBcnJheSxcblx0JyVGbG9hdDY0QXJyYXklJzogdHlwZW9mIEZsb2F0NjRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDY0QXJyYXksXG5cdCclRmluYWxpemF0aW9uUmVnaXN0cnklJzogdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZpbmFsaXphdGlvblJlZ2lzdHJ5LFxuXHQnJUZ1bmN0aW9uJSc6ICRGdW5jdGlvbixcblx0JyVHZW5lcmF0b3JGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclSW50OEFycmF5JSc6IHR5cGVvZiBJbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50OEFycmF5LFxuXHQnJUludDE2QXJyYXklJzogdHlwZW9mIEludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MTZBcnJheSxcblx0JyVJbnQzMkFycmF5JSc6IHR5cGVvZiBJbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDMyQXJyYXksXG5cdCclaXNGaW5pdGUlJzogaXNGaW5pdGUsXG5cdCclaXNOYU4lJzogaXNOYU4sXG5cdCclSXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyA/IGdldFByb3RvKGdldFByb3RvKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkpIDogdW5kZWZpbmVkLFxuXHQnJUpTT04lJzogdHlwZW9mIEpTT04gPT09ICdvYmplY3QnID8gSlNPTiA6IHVuZGVmaW5lZCxcblx0JyVNYXAlJzogdHlwZW9mIE1hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBNYXAsXG5cdCclTWFwSXRlcmF0b3JQcm90b3R5cGUlJzogdHlwZW9mIE1hcCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc1N5bWJvbHMgPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgTWFwKClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVNYXRoJSc6IE1hdGgsXG5cdCclTnVtYmVyJSc6IE51bWJlcixcblx0JyVPYmplY3QlJzogT2JqZWN0LFxuXHQnJXBhcnNlRmxvYXQlJzogcGFyc2VGbG9hdCxcblx0JyVwYXJzZUludCUnOiBwYXJzZUludCxcblx0JyVQcm9taXNlJSc6IHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb21pc2UsXG5cdCclUHJveHklJzogdHlwZW9mIFByb3h5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb3h5LFxuXHQnJVJhbmdlRXJyb3IlJzogUmFuZ2VFcnJvcixcblx0JyVSZWZlcmVuY2VFcnJvciUnOiBSZWZlcmVuY2VFcnJvcixcblx0JyVSZWZsZWN0JSc6IHR5cGVvZiBSZWZsZWN0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFJlZmxlY3QsXG5cdCclUmVnRXhwJSc6IFJlZ0V4cCxcblx0JyVTZXQlJzogdHlwZW9mIFNldCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTZXQsXG5cdCclU2V0SXRlcmF0b3JQcm90b3R5cGUlJzogdHlwZW9mIFNldCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc1N5bWJvbHMgPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgU2V0KClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlciUnOiB0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2hhcmVkQXJyYXlCdWZmZXIsXG5cdCclU3RyaW5nJSc6IFN0cmluZyxcblx0JyVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oJydbU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVTeW1ib2wlJzogaGFzU3ltYm9scyA/IFN5bWJvbCA6IHVuZGVmaW5lZCxcblx0JyVTeW50YXhFcnJvciUnOiAkU3ludGF4RXJyb3IsXG5cdCclVGhyb3dUeXBlRXJyb3IlJzogVGhyb3dUeXBlRXJyb3IsXG5cdCclVHlwZWRBcnJheSUnOiBUeXBlZEFycmF5LFxuXHQnJVR5cGVFcnJvciUnOiAkVHlwZUVycm9yLFxuXHQnJVVpbnQ4QXJyYXklJzogdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhBcnJheSxcblx0JyVVaW50OENsYW1wZWRBcnJheSUnOiB0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhDbGFtcGVkQXJyYXksXG5cdCclVWludDE2QXJyYXklJzogdHlwZW9mIFVpbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQxNkFycmF5LFxuXHQnJVVpbnQzMkFycmF5JSc6IHR5cGVvZiBVaW50MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50MzJBcnJheSxcblx0JyVVUklFcnJvciUnOiBVUklFcnJvcixcblx0JyVXZWFrTWFwJSc6IHR5cGVvZiBXZWFrTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtNYXAsXG5cdCclV2Vha1JlZiUnOiB0eXBlb2YgV2Vha1JlZiA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrUmVmLFxuXHQnJVdlYWtTZXQlJzogdHlwZW9mIFdlYWtTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1NldFxufTtcblxudmFyIGRvRXZhbCA9IGZ1bmN0aW9uIGRvRXZhbChuYW1lKSB7XG5cdHZhciB2YWx1ZTtcblx0aWYgKG5hbWUgPT09ICclQXN5bmNGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uICgpIHt9Jyk7XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVHZW5lcmF0b3JGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2Z1bmN0aW9uKiAoKSB7fScpO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uKiAoKSB7fScpO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3IlJykge1xuXHRcdHZhciBmbiA9IGRvRXZhbCgnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJyk7XG5cdFx0aWYgKGZuKSB7XG5cdFx0XHR2YWx1ZSA9IGZuLnByb3RvdHlwZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJScpIHtcblx0XHR2YXIgZ2VuID0gZG9FdmFsKCclQXN5bmNHZW5lcmF0b3IlJyk7XG5cdFx0aWYgKGdlbikge1xuXHRcdFx0dmFsdWUgPSBnZXRQcm90byhnZW4ucHJvdG90eXBlKTtcblx0XHR9XG5cdH1cblxuXHRJTlRSSU5TSUNTW25hbWVdID0gdmFsdWU7XG5cblx0cmV0dXJuIHZhbHVlO1xufTtcblxudmFyIExFR0FDWV9BTElBU0VTID0ge1xuXHQnJUFycmF5QnVmZmVyUHJvdG90eXBlJSc6IFsnQXJyYXlCdWZmZXInLCAncHJvdG90eXBlJ10sXG5cdCclQXJyYXlQcm90b3R5cGUlJzogWydBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvX2VudHJpZXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAnZW50cmllcyddLFxuXHQnJUFycmF5UHJvdG9fZm9yRWFjaCUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdmb3JFYWNoJ10sXG5cdCclQXJyYXlQcm90b19rZXlzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2tleXMnXSxcblx0JyVBcnJheVByb3RvX3ZhbHVlcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICd2YWx1ZXMnXSxcblx0JyVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJSc6IFsnQXN5bmNGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvciUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUlJzogWydBc3luY0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVCb29sZWFuUHJvdG90eXBlJSc6IFsnQm9vbGVhbicsICdwcm90b3R5cGUnXSxcblx0JyVEYXRhVmlld1Byb3RvdHlwZSUnOiBbJ0RhdGFWaWV3JywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGVQcm90b3R5cGUlJzogWydEYXRlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUVycm9yUHJvdG90eXBlJSc6IFsnRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRXZhbEVycm9yUHJvdG90eXBlJSc6IFsnRXZhbEVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0MzJBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0MzJBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGbG9hdDY0QXJyYXlQcm90b3R5cGUlJzogWydGbG9hdDY0QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclRnVuY3Rpb25Qcm90b3R5cGUlJzogWydGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVHZW5lcmF0b3IlJzogWydHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVHZW5lcmF0b3JQcm90b3R5cGUlJzogWydHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnLCAncHJvdG90eXBlJ10sXG5cdCclSW50OEFycmF5UHJvdG90eXBlJSc6IFsnSW50OEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDE2QXJyYXlQcm90b3R5cGUlJzogWydJbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDMyQXJyYXlQcm90b3R5cGUlJzogWydJbnQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUpTT05QYXJzZSUnOiBbJ0pTT04nLCAncGFyc2UnXSxcblx0JyVKU09OU3RyaW5naWZ5JSc6IFsnSlNPTicsICdzdHJpbmdpZnknXSxcblx0JyVNYXBQcm90b3R5cGUlJzogWydNYXAnLCAncHJvdG90eXBlJ10sXG5cdCclTnVtYmVyUHJvdG90eXBlJSc6IFsnTnVtYmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJU9iamVjdFByb3RvdHlwZSUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnXSxcblx0JyVPYmpQcm90b190b1N0cmluZyUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnLCAndG9TdHJpbmcnXSxcblx0JyVPYmpQcm90b192YWx1ZU9mJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd2YWx1ZU9mJ10sXG5cdCclUHJvbWlzZVByb3RvdHlwZSUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJ10sXG5cdCclUHJvbWlzZVByb3RvX3RoZW4lJzogWydQcm9taXNlJywgJ3Byb3RvdHlwZScsICd0aGVuJ10sXG5cdCclUHJvbWlzZV9hbGwlJzogWydQcm9taXNlJywgJ2FsbCddLFxuXHQnJVByb21pc2VfcmVqZWN0JSc6IFsnUHJvbWlzZScsICdyZWplY3QnXSxcblx0JyVQcm9taXNlX3Jlc29sdmUlJzogWydQcm9taXNlJywgJ3Jlc29sdmUnXSxcblx0JyVSYW5nZUVycm9yUHJvdG90eXBlJSc6IFsnUmFuZ2VFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUnOiBbJ1JlZmVyZW5jZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZ0V4cFByb3RvdHlwZSUnOiBbJ1JlZ0V4cCcsICdwcm90b3R5cGUnXSxcblx0JyVTZXRQcm90b3R5cGUlJzogWydTZXQnLCAncHJvdG90eXBlJ10sXG5cdCclU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydTaGFyZWRBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVTdHJpbmdQcm90b3R5cGUlJzogWydTdHJpbmcnLCAncHJvdG90eXBlJ10sXG5cdCclU3ltYm9sUHJvdG90eXBlJSc6IFsnU3ltYm9sJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN5bnRheEVycm9yUHJvdG90eXBlJSc6IFsnU3ludGF4RXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVHlwZWRBcnJheVByb3RvdHlwZSUnOiBbJ1R5cGVkQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVHlwZUVycm9yUHJvdG90eXBlJSc6IFsnVHlwZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQ4QXJyYXlQcm90b3R5cGUlJzogWydVaW50OEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVWludDhDbGFtcGVkQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDE2QXJyYXlQcm90b3R5cGUlJzogWydVaW50MTZBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVSSUVycm9yUHJvdG90eXBlJSc6IFsnVVJJRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclV2Vha01hcFByb3RvdHlwZSUnOiBbJ1dlYWtNYXAnLCAncHJvdG90eXBlJ10sXG5cdCclV2Vha1NldFByb3RvdHlwZSUnOiBbJ1dlYWtTZXQnLCAncHJvdG90eXBlJ11cbn07XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJ2hhcycpO1xudmFyICRjb25jYXQgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgQXJyYXkucHJvdG90eXBlLmNvbmNhdCk7XG52YXIgJHNwbGljZUFwcGx5ID0gYmluZC5jYWxsKEZ1bmN0aW9uLmFwcGx5LCBBcnJheS5wcm90b3R5cGUuc3BsaWNlKTtcbnZhciAkcmVwbGFjZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpO1xudmFyICRzdHJTbGljZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBTdHJpbmcucHJvdG90eXBlLnNsaWNlKTtcblxuLyogYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvNC4xNy4xNS9kaXN0L2xvZGFzaC5qcyNMNjczNS1MNjc0NCAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14lLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCUkKSkvZztcbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZzsgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgc3RyaW5nVG9QYXRoID0gZnVuY3Rpb24gc3RyaW5nVG9QYXRoKHN0cmluZykge1xuXHR2YXIgZmlyc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAwLCAxKTtcblx0dmFyIGxhc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAtMSk7XG5cdGlmIChmaXJzdCA9PT0gJyUnICYmIGxhc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgY2xvc2luZyBgJWAnKTtcblx0fSBlbHNlIGlmIChsYXN0ID09PSAnJScgJiYgZmlyc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgb3BlbmluZyBgJWAnKTtcblx0fVxuXHR2YXIgcmVzdWx0ID0gW107XG5cdCRyZXBsYWNlKHN0cmluZywgcmVQcm9wTmFtZSwgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcblx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBxdW90ZSA/ICRyZXBsYWNlKHN1YlN0cmluZywgcmVFc2NhcGVDaGFyLCAnJDEnKSA6IG51bWJlciB8fCBtYXRjaDtcblx0fSk7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuLyogZW5kIGFkYXB0YXRpb24gKi9cblxudmFyIGdldEJhc2VJbnRyaW5zaWMgPSBmdW5jdGlvbiBnZXRCYXNlSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljTmFtZSA9IG5hbWU7XG5cdHZhciBhbGlhcztcblx0aWYgKGhhc093bihMRUdBQ1lfQUxJQVNFUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHRhbGlhcyA9IExFR0FDWV9BTElBU0VTW2ludHJpbnNpY05hbWVdO1xuXHRcdGludHJpbnNpY05hbWUgPSAnJScgKyBhbGlhc1swXSArICclJztcblx0fVxuXG5cdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHR2YXIgdmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY05hbWVdO1xuXHRcdGlmICh2YWx1ZSA9PT0gbmVlZHNFdmFsKSB7XG5cdFx0XHR2YWx1ZSA9IGRvRXZhbChpbnRyaW5zaWNOYW1lKTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgIWFsbG93TWlzc2luZykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGFsaWFzOiBhbGlhcyxcblx0XHRcdG5hbWU6IGludHJpbnNpY05hbWUsXG5cdFx0XHR2YWx1ZTogdmFsdWVcblx0XHR9O1xuXHR9XG5cblx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBkb2VzIG5vdCBleGlzdCEnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gR2V0SW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8IG5hbWUubGVuZ3RoID09PSAwKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdH1cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVvZiBhbGxvd01pc3NpbmcgIT09ICdib29sZWFuJykge1xuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdcImFsbG93TWlzc2luZ1wiIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyk7XG5cdH1cblxuXHR2YXIgcGFydHMgPSBzdHJpbmdUb1BhdGgobmFtZSk7XG5cdHZhciBpbnRyaW5zaWNCYXNlTmFtZSA9IHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0c1swXSA6ICcnO1xuXG5cdHZhciBpbnRyaW5zaWMgPSBnZXRCYXNlSW50cmluc2ljKCclJyArIGludHJpbnNpY0Jhc2VOYW1lICsgJyUnLCBhbGxvd01pc3NpbmcpO1xuXHR2YXIgaW50cmluc2ljUmVhbE5hbWUgPSBpbnRyaW5zaWMubmFtZTtcblx0dmFyIHZhbHVlID0gaW50cmluc2ljLnZhbHVlO1xuXHR2YXIgc2tpcEZ1cnRoZXJDYWNoaW5nID0gZmFsc2U7XG5cblx0dmFyIGFsaWFzID0gaW50cmluc2ljLmFsaWFzO1xuXHRpZiAoYWxpYXMpIHtcblx0XHRpbnRyaW5zaWNCYXNlTmFtZSA9IGFsaWFzWzBdO1xuXHRcdCRzcGxpY2VBcHBseShwYXJ0cywgJGNvbmNhdChbMCwgMV0sIGFsaWFzKSk7XG5cdH1cblxuXHRmb3IgKHZhciBpID0gMSwgaXNPd24gPSB0cnVlOyBpIDwgcGFydHMubGVuZ3RoOyBpICs9IDEpIHtcblx0XHR2YXIgcGFydCA9IHBhcnRzW2ldO1xuXHRcdHZhciBmaXJzdCA9ICRzdHJTbGljZShwYXJ0LCAwLCAxKTtcblx0XHR2YXIgbGFzdCA9ICRzdHJTbGljZShwYXJ0LCAtMSk7XG5cdFx0aWYgKFxuXHRcdFx0KFxuXHRcdFx0XHQoZmlyc3QgPT09ICdcIicgfHwgZmlyc3QgPT09IFwiJ1wiIHx8IGZpcnN0ID09PSAnYCcpXG5cdFx0XHRcdHx8IChsYXN0ID09PSAnXCInIHx8IGxhc3QgPT09IFwiJ1wiIHx8IGxhc3QgPT09ICdgJylcblx0XHRcdClcblx0XHRcdCYmIGZpcnN0ICE9PSBsYXN0XG5cdFx0KSB7XG5cdFx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0Y2hpbmcgcXVvdGVzJyk7XG5cdFx0fVxuXHRcdGlmIChwYXJ0ID09PSAnY29uc3RydWN0b3InIHx8ICFpc093bikge1xuXHRcdFx0c2tpcEZ1cnRoZXJDYWNoaW5nID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpbnRyaW5zaWNCYXNlTmFtZSArPSAnLicgKyBwYXJ0O1xuXHRcdGludHJpbnNpY1JlYWxOYW1lID0gJyUnICsgaW50cmluc2ljQmFzZU5hbWUgKyAnJSc7XG5cblx0XHRpZiAoaGFzT3duKElOVFJJTlNJQ1MsIGludHJpbnNpY1JlYWxOYW1lKSkge1xuXHRcdFx0dmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY1JlYWxOYW1lXTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0XHRcdGlmICghKHBhcnQgaW4gdmFsdWUpKSB7XG5cdFx0XHRcdGlmICghYWxsb3dNaXNzaW5nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2Jhc2UgaW50cmluc2ljIGZvciAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgdGhlIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUuJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZvaWQgdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCRnT1BEICYmIChpICsgMSkgPj0gcGFydHMubGVuZ3RoKSB7XG5cdFx0XHRcdHZhciBkZXNjID0gJGdPUEQodmFsdWUsIHBhcnQpO1xuXHRcdFx0XHRpc093biA9ICEhZGVzYztcblxuXHRcdFx0XHQvLyBCeSBjb252ZW50aW9uLCB3aGVuIGEgZGF0YSBwcm9wZXJ0eSBpcyBjb252ZXJ0ZWQgdG8gYW4gYWNjZXNzb3Jcblx0XHRcdFx0Ly8gcHJvcGVydHkgdG8gZW11bGF0ZSBhIGRhdGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBzdWZmZXIgZnJvbVxuXHRcdFx0XHQvLyB0aGUgb3ZlcnJpZGUgbWlzdGFrZSwgdGhhdCBhY2Nlc3NvcidzIGdldHRlciBpcyBtYXJrZWQgd2l0aFxuXHRcdFx0XHQvLyBhbiBgb3JpZ2luYWxWYWx1ZWAgcHJvcGVydHkuIEhlcmUsIHdoZW4gd2UgZGV0ZWN0IHRoaXMsIHdlXG5cdFx0XHRcdC8vIHVwaG9sZCB0aGUgaWxsdXNpb24gYnkgcHJldGVuZGluZyB0byBzZWUgdGhhdCBvcmlnaW5hbCBkYXRhXG5cdFx0XHRcdC8vIHByb3BlcnR5LCBpLmUuLCByZXR1cm5pbmcgdGhlIHZhbHVlIHJhdGhlciB0aGFuIHRoZSBnZXR0ZXJcblx0XHRcdFx0Ly8gaXRzZWxmLlxuXHRcdFx0XHRpZiAoaXNPd24gJiYgJ2dldCcgaW4gZGVzYyAmJiAhKCdvcmlnaW5hbFZhbHVlJyBpbiBkZXNjLmdldCkpIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGRlc2MuZ2V0O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlzT3duID0gaGFzT3duKHZhbHVlLCBwYXJ0KTtcblx0XHRcdFx0dmFsdWUgPSB2YWx1ZVtwYXJ0XTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzT3duICYmICFza2lwRnVydGhlckNhY2hpbmcpIHtcblx0XHRcdFx0SU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyogZ2xvYmFsc1xuXHRBZ2dyZWdhdGVFcnJvcixcblx0QXRvbWljcyxcblx0RmluYWxpemF0aW9uUmVnaXN0cnksXG5cdFNoYXJlZEFycmF5QnVmZmVyLFxuXHRXZWFrUmVmLFxuKi9cblxudmFyIHVuZGVmaW5lZDtcblxudmFyICRTeW50YXhFcnJvciA9IFN5bnRheEVycm9yO1xudmFyICRGdW5jdGlvbiA9IEZ1bmN0aW9uO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxudmFyIGdldEV2YWxsZWRDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChleHByZXNzaW9uU3ludGF4KSB7XG5cdHRyeSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG5cdFx0cmV0dXJuIEZ1bmN0aW9uKCdcInVzZSBzdHJpY3RcIjsgcmV0dXJuICgnICsgZXhwcmVzc2lvblN5bnRheCArICcpLmNvbnN0cnVjdG9yOycpKCk7XG5cdH0gY2F0Y2ggKGUpIHt9XG59O1xuXG52YXIgJGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuaWYgKCRnT1BEKSB7XG5cdHRyeSB7XG5cdFx0JGdPUEQoe30sICcnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdCRnT1BEID0gbnVsbDsgLy8gdGhpcyBpcyBJRSA4LCB3aGljaCBoYXMgYSBicm9rZW4gZ09QRFxuXHR9XG59XG5cbnZhciB0aHJvd1R5cGVFcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoKTtcbn07XG52YXIgVGhyb3dUeXBlRXJyb3IgPSAkZ09QRFxuXHQ/IChmdW5jdGlvbiAoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnMsIG5vLWNhbGxlciwgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG5cdFx0XHRhcmd1bWVudHMuY2FsbGVlOyAvLyBJRSA4IGRvZXMgbm90IHRocm93IGhlcmVcblx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHR9IGNhdGNoIChjYWxsZWVUaHJvd3MpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIElFIDggdGhyb3dzIG9uIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnJylcblx0XHRcdFx0cmV0dXJuICRnT1BEKGFyZ3VtZW50cywgJ2NhbGxlZScpLmdldDtcblx0XHRcdH0gY2F0Y2ggKGdPUER0aHJvd3MpIHtcblx0XHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fSgpKVxuXHQ6IHRocm93VHlwZUVycm9yO1xuXG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcblxudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4Ll9fcHJvdG9fXzsgfTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuXG52YXIgYXN5bmNHZW5GdW5jdGlvbiA9IGdldEV2YWxsZWRDb25zdHJ1Y3RvcignYXN5bmMgZnVuY3Rpb24qICgpIHt9Jyk7XG52YXIgYXN5bmNHZW5GdW5jdGlvblByb3RvdHlwZSA9IGFzeW5jR2VuRnVuY3Rpb24gPyBhc3luY0dlbkZ1bmN0aW9uLnByb3RvdHlwZSA6IHVuZGVmaW5lZDtcbnZhciBhc3luY0dlblByb3RvdHlwZSA9IGFzeW5jR2VuRnVuY3Rpb25Qcm90b3R5cGUgPyBhc3luY0dlbkZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA6IHVuZGVmaW5lZDtcblxudmFyIFR5cGVkQXJyYXkgPSB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBnZXRQcm90byhVaW50OEFycmF5KTtcblxudmFyIElOVFJJTlNJQ1MgPSB7XG5cdCclQWdncmVnYXRlRXJyb3IlJzogdHlwZW9mIEFnZ3JlZ2F0ZUVycm9yID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEFnZ3JlZ2F0ZUVycm9yLFxuXHQnJUFycmF5JSc6IEFycmF5LFxuXHQnJUFycmF5QnVmZmVyJSc6IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBcnJheUJ1ZmZlcixcblx0JyVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90byhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpIDogdW5kZWZpbmVkLFxuXHQnJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiB1bmRlZmluZWQsXG5cdCclQXN5bmNGdW5jdGlvbiUnOiBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uICgpIHt9JyksXG5cdCclQXN5bmNHZW5lcmF0b3IlJzogYXN5bmNHZW5GdW5jdGlvblByb3RvdHlwZSxcblx0JyVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSc6IGFzeW5jR2VuRnVuY3Rpb24sXG5cdCclQXN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiBhc3luY0dlblByb3RvdHlwZSA/IGdldFByb3RvKGFzeW5jR2VuUHJvdG90eXBlKSA6IHVuZGVmaW5lZCxcblx0JyVBdG9taWNzJSc6IHR5cGVvZiBBdG9taWNzID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEF0b21pY3MsXG5cdCclQmlnSW50JSc6IHR5cGVvZiBCaWdJbnQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQmlnSW50LFxuXHQnJUJvb2xlYW4lJzogQm9vbGVhbixcblx0JyVEYXRhVmlldyUnOiB0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRGF0YVZpZXcsXG5cdCclRGF0ZSUnOiBEYXRlLFxuXHQnJWRlY29kZVVSSSUnOiBkZWNvZGVVUkksXG5cdCclZGVjb2RlVVJJQ29tcG9uZW50JSc6IGRlY29kZVVSSUNvbXBvbmVudCxcblx0JyVlbmNvZGVVUkklJzogZW5jb2RlVVJJLFxuXHQnJWVuY29kZVVSSUNvbXBvbmVudCUnOiBlbmNvZGVVUklDb21wb25lbnQsXG5cdCclRXJyb3IlJzogRXJyb3IsXG5cdCclZXZhbCUnOiBldmFsLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV2YWxcblx0JyVFdmFsRXJyb3IlJzogRXZhbEVycm9yLFxuXHQnJUZsb2F0MzJBcnJheSUnOiB0eXBlb2YgRmxvYXQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0MzJBcnJheSxcblx0JyVGbG9hdDY0QXJyYXklJzogdHlwZW9mIEZsb2F0NjRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDY0QXJyYXksXG5cdCclRmluYWxpemF0aW9uUmVnaXN0cnklJzogdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZpbmFsaXphdGlvblJlZ2lzdHJ5LFxuXHQnJUZ1bmN0aW9uJSc6ICRGdW5jdGlvbixcblx0JyVHZW5lcmF0b3JGdW5jdGlvbiUnOiBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2Z1bmN0aW9uKiAoKSB7fScpLFxuXHQnJUludDhBcnJheSUnOiB0eXBlb2YgSW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDhBcnJheSxcblx0JyVJbnQxNkFycmF5JSc6IHR5cGVvZiBJbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDE2QXJyYXksXG5cdCclSW50MzJBcnJheSUnOiB0eXBlb2YgSW50MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQzMkFycmF5LFxuXHQnJWlzRmluaXRlJSc6IGlzRmluaXRlLFxuXHQnJWlzTmFOJSc6IGlzTmFOLFxuXHQnJUl0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90byhnZXRQcm90byhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpKSA6IHVuZGVmaW5lZCxcblx0JyVKU09OJSc6IHR5cGVvZiBKU09OID09PSAnb2JqZWN0JyA/IEpTT04gOiB1bmRlZmluZWQsXG5cdCclTWFwJSc6IHR5cGVvZiBNYXAgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogTWFwLFxuXHQnJU1hcEl0ZXJhdG9yUHJvdG90eXBlJSc6IHR5cGVvZiBNYXAgPT09ICd1bmRlZmluZWQnIHx8ICFoYXNTeW1ib2xzID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8obmV3IE1hcCgpW1N5bWJvbC5pdGVyYXRvcl0oKSksXG5cdCclTWF0aCUnOiBNYXRoLFxuXHQnJU51bWJlciUnOiBOdW1iZXIsXG5cdCclT2JqZWN0JSc6IE9iamVjdCxcblx0JyVwYXJzZUZsb2F0JSc6IHBhcnNlRmxvYXQsXG5cdCclcGFyc2VJbnQlJzogcGFyc2VJbnQsXG5cdCclUHJvbWlzZSUnOiB0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBQcm9taXNlLFxuXHQnJVByb3h5JSc6IHR5cGVvZiBQcm94eSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBQcm94eSxcblx0JyVSYW5nZUVycm9yJSc6IFJhbmdlRXJyb3IsXG5cdCclUmVmZXJlbmNlRXJyb3IlJzogUmVmZXJlbmNlRXJyb3IsXG5cdCclUmVmbGVjdCUnOiB0eXBlb2YgUmVmbGVjdCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBSZWZsZWN0LFxuXHQnJVJlZ0V4cCUnOiBSZWdFeHAsXG5cdCclU2V0JSc6IHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2V0LFxuXHQnJVNldEl0ZXJhdG9yUHJvdG90eXBlJSc6IHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnIHx8ICFoYXNTeW1ib2xzID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8obmV3IFNldCgpW1N5bWJvbC5pdGVyYXRvcl0oKSksXG5cdCclU2hhcmVkQXJyYXlCdWZmZXIlJzogdHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFNoYXJlZEFycmF5QnVmZmVyLFxuXHQnJVN0cmluZyUnOiBTdHJpbmcsXG5cdCclU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyA/IGdldFByb3RvKCcnW1N5bWJvbC5pdGVyYXRvcl0oKSkgOiB1bmRlZmluZWQsXG5cdCclU3ltYm9sJSc6IGhhc1N5bWJvbHMgPyBTeW1ib2wgOiB1bmRlZmluZWQsXG5cdCclU3ludGF4RXJyb3IlJzogJFN5bnRheEVycm9yLFxuXHQnJVRocm93VHlwZUVycm9yJSc6IFRocm93VHlwZUVycm9yLFxuXHQnJVR5cGVkQXJyYXklJzogVHlwZWRBcnJheSxcblx0JyVUeXBlRXJyb3IlJzogJFR5cGVFcnJvcixcblx0JyVVaW50OEFycmF5JSc6IHR5cGVvZiBVaW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQ4QXJyYXksXG5cdCclVWludDhDbGFtcGVkQXJyYXklJzogdHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQ4Q2xhbXBlZEFycmF5LFxuXHQnJVVpbnQxNkFycmF5JSc6IHR5cGVvZiBVaW50MTZBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50MTZBcnJheSxcblx0JyVVaW50MzJBcnJheSUnOiB0eXBlb2YgVWludDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDMyQXJyYXksXG5cdCclVVJJRXJyb3IlJzogVVJJRXJyb3IsXG5cdCclV2Vha01hcCUnOiB0eXBlb2YgV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrTWFwLFxuXHQnJVdlYWtSZWYlJzogdHlwZW9mIFdlYWtSZWYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1JlZixcblx0JyVXZWFrU2V0JSc6IHR5cGVvZiBXZWFrU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtTZXRcbn07XG5cbnZhciBMRUdBQ1lfQUxJQVNFUyA9IHtcblx0JyVBcnJheUJ1ZmZlclByb3RvdHlwZSUnOiBbJ0FycmF5QnVmZmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFycmF5UHJvdG90eXBlJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclQXJyYXlQcm90b19lbnRyaWVzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2VudHJpZXMnXSxcblx0JyVBcnJheVByb3RvX2ZvckVhY2glJzogWydBcnJheScsICdwcm90b3R5cGUnLCAnZm9yRWFjaCddLFxuXHQnJUFycmF5UHJvdG9fa2V5cyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdrZXlzJ10sXG5cdCclQXJyYXlQcm90b192YWx1ZXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAndmFsdWVzJ10sXG5cdCclQXN5bmNGdW5jdGlvblByb3RvdHlwZSUnOiBbJ0FzeW5jRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclQXN5bmNHZW5lcmF0b3IlJzogWydBc3luY0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFzeW5jR2VuZXJhdG9yUHJvdG90eXBlJSc6IFsnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnLCAncHJvdG90eXBlJ10sXG5cdCclQm9vbGVhblByb3RvdHlwZSUnOiBbJ0Jvb2xlYW4nLCAncHJvdG90eXBlJ10sXG5cdCclRGF0YVZpZXdQcm90b3R5cGUlJzogWydEYXRhVmlldycsICdwcm90b3R5cGUnXSxcblx0JyVEYXRlUHJvdG90eXBlJSc6IFsnRGF0ZScsICdwcm90b3R5cGUnXSxcblx0JyVFcnJvclByb3RvdHlwZSUnOiBbJ0Vycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJUV2YWxFcnJvclByb3RvdHlwZSUnOiBbJ0V2YWxFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVGbG9hdDMyQXJyYXlQcm90b3R5cGUlJzogWydGbG9hdDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclRmxvYXQ2NEFycmF5UHJvdG90eXBlJSc6IFsnRmxvYXQ2NEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUZ1bmN0aW9uUHJvdG90eXBlJSc6IFsnRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclR2VuZXJhdG9yJSc6IFsnR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclR2VuZXJhdG9yUHJvdG90eXBlJSc6IFsnR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDhBcnJheVByb3RvdHlwZSUnOiBbJ0ludDhBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQxNkFycmF5UHJvdG90eXBlJSc6IFsnSW50MTZBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQzMkFycmF5UHJvdG90eXBlJSc6IFsnSW50MzJBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVKU09OUGFyc2UlJzogWydKU09OJywgJ3BhcnNlJ10sXG5cdCclSlNPTlN0cmluZ2lmeSUnOiBbJ0pTT04nLCAnc3RyaW5naWZ5J10sXG5cdCclTWFwUHJvdG90eXBlJSc6IFsnTWFwJywgJ3Byb3RvdHlwZSddLFxuXHQnJU51bWJlclByb3RvdHlwZSUnOiBbJ051bWJlcicsICdwcm90b3R5cGUnXSxcblx0JyVPYmplY3RQcm90b3R5cGUlJzogWydPYmplY3QnLCAncHJvdG90eXBlJ10sXG5cdCclT2JqUHJvdG9fdG9TdHJpbmclJzogWydPYmplY3QnLCAncHJvdG90eXBlJywgJ3RvU3RyaW5nJ10sXG5cdCclT2JqUHJvdG9fdmFsdWVPZiUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnLCAndmFsdWVPZiddLFxuXHQnJVByb21pc2VQcm90b3R5cGUlJzogWydQcm9taXNlJywgJ3Byb3RvdHlwZSddLFxuXHQnJVByb21pc2VQcm90b190aGVuJSc6IFsnUHJvbWlzZScsICdwcm90b3R5cGUnLCAndGhlbiddLFxuXHQnJVByb21pc2VfYWxsJSc6IFsnUHJvbWlzZScsICdhbGwnXSxcblx0JyVQcm9taXNlX3JlamVjdCUnOiBbJ1Byb21pc2UnLCAncmVqZWN0J10sXG5cdCclUHJvbWlzZV9yZXNvbHZlJSc6IFsnUHJvbWlzZScsICdyZXNvbHZlJ10sXG5cdCclUmFuZ2VFcnJvclByb3RvdHlwZSUnOiBbJ1JhbmdlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclUmVmZXJlbmNlRXJyb3JQcm90b3R5cGUlJzogWydSZWZlcmVuY2VFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVSZWdFeHBQcm90b3R5cGUlJzogWydSZWdFeHAnLCAncHJvdG90eXBlJ10sXG5cdCclU2V0UHJvdG90eXBlJSc6IFsnU2V0JywgJ3Byb3RvdHlwZSddLFxuXHQnJVNoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlJSc6IFsnU2hhcmVkQXJyYXlCdWZmZXInLCAncHJvdG90eXBlJ10sXG5cdCclU3RyaW5nUHJvdG90eXBlJSc6IFsnU3RyaW5nJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN5bWJvbFByb3RvdHlwZSUnOiBbJ1N5bWJvbCcsICdwcm90b3R5cGUnXSxcblx0JyVTeW50YXhFcnJvclByb3RvdHlwZSUnOiBbJ1N5bnRheEVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVR5cGVkQXJyYXlQcm90b3R5cGUlJzogWydUeXBlZEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVR5cGVFcnJvclByb3RvdHlwZSUnOiBbJ1R5cGVFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVVaW50OEFycmF5UHJvdG90eXBlJSc6IFsnVWludDhBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQ4Q2xhbXBlZEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQxNkFycmF5UHJvdG90eXBlJSc6IFsnVWludDE2QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDMyQXJyYXlQcm90b3R5cGUlJzogWydVaW50MzJBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVUklFcnJvclByb3RvdHlwZSUnOiBbJ1VSSUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVdlYWtNYXBQcm90b3R5cGUlJzogWydXZWFrTWFwJywgJ3Byb3RvdHlwZSddLFxuXHQnJVdlYWtTZXRQcm90b3R5cGUlJzogWydXZWFrU2V0JywgJ3Byb3RvdHlwZSddXG59O1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCdoYXMnKTtcbnZhciAkY29uY2F0ID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIEFycmF5LnByb3RvdHlwZS5jb25jYXQpO1xudmFyICRzcGxpY2VBcHBseSA9IGJpbmQuY2FsbChGdW5jdGlvbi5hcHBseSwgQXJyYXkucHJvdG90eXBlLnNwbGljZSk7XG52YXIgJHJlcGxhY2UgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKTtcblxuLyogYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvNC4xNy4xNS9kaXN0L2xvZGFzaC5qcyNMNjczNS1MNjc0NCAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14lLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCUkKSkvZztcbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZzsgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgc3RyaW5nVG9QYXRoID0gZnVuY3Rpb24gc3RyaW5nVG9QYXRoKHN0cmluZykge1xuXHR2YXIgcmVzdWx0ID0gW107XG5cdCRyZXBsYWNlKHN0cmluZywgcmVQcm9wTmFtZSwgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcblx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBxdW90ZSA/ICRyZXBsYWNlKHN1YlN0cmluZywgcmVFc2NhcGVDaGFyLCAnJDEnKSA6IG51bWJlciB8fCBtYXRjaDtcblx0fSk7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuLyogZW5kIGFkYXB0YXRpb24gKi9cblxudmFyIGdldEJhc2VJbnRyaW5zaWMgPSBmdW5jdGlvbiBnZXRCYXNlSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljTmFtZSA9IG5hbWU7XG5cdHZhciBhbGlhcztcblx0aWYgKGhhc093bihMRUdBQ1lfQUxJQVNFUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHRhbGlhcyA9IExFR0FDWV9BTElBU0VTW2ludHJpbnNpY05hbWVdO1xuXHRcdGludHJpbnNpY05hbWUgPSAnJScgKyBhbGlhc1swXSArICclJztcblx0fVxuXG5cdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHR2YXIgdmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY05hbWVdO1xuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICYmICFhbGxvd01pc3NpbmcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdpbnRyaW5zaWMgJyArIG5hbWUgKyAnIGV4aXN0cywgYnV0IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBmaWxlIGFuIGlzc3VlIScpO1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHRhbGlhczogYWxpYXMsXG5cdFx0XHRuYW1lOiBpbnRyaW5zaWNOYW1lLFxuXHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0fTtcblx0fVxuXG5cdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZG9lcyBub3QgZXhpc3QhJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIEdldEludHJpbnNpYyhuYW1lLCBhbGxvd01pc3NpbmcpIHtcblx0aWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJyB8fCBuYW1lLmxlbmd0aCA9PT0gMCkge1xuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuXHR9XG5cdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlb2YgYWxsb3dNaXNzaW5nICE9PSAnYm9vbGVhbicpIHtcblx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignXCJhbGxvd01pc3NpbmdcIiBhcmd1bWVudCBtdXN0IGJlIGEgYm9vbGVhbicpO1xuXHR9XG5cblx0dmFyIHBhcnRzID0gc3RyaW5nVG9QYXRoKG5hbWUpO1xuXHR2YXIgaW50cmluc2ljQmFzZU5hbWUgPSBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHNbMF0gOiAnJztcblxuXHR2YXIgaW50cmluc2ljID0gZ2V0QmFzZUludHJpbnNpYygnJScgKyBpbnRyaW5zaWNCYXNlTmFtZSArICclJywgYWxsb3dNaXNzaW5nKTtcblx0dmFyIGludHJpbnNpY1JlYWxOYW1lID0gaW50cmluc2ljLm5hbWU7XG5cdHZhciB2YWx1ZSA9IGludHJpbnNpYy52YWx1ZTtcblx0dmFyIHNraXBGdXJ0aGVyQ2FjaGluZyA9IGZhbHNlO1xuXG5cdHZhciBhbGlhcyA9IGludHJpbnNpYy5hbGlhcztcblx0aWYgKGFsaWFzKSB7XG5cdFx0aW50cmluc2ljQmFzZU5hbWUgPSBhbGlhc1swXTtcblx0XHQkc3BsaWNlQXBwbHkocGFydHMsICRjb25jYXQoWzAsIDFdLCBhbGlhcykpO1xuXHR9XG5cblx0Zm9yICh2YXIgaSA9IDEsIGlzT3duID0gdHJ1ZTsgaSA8IHBhcnRzLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0dmFyIHBhcnQgPSBwYXJ0c1tpXTtcblx0XHRpZiAocGFydCA9PT0gJ2NvbnN0cnVjdG9yJyB8fCAhaXNPd24pIHtcblx0XHRcdHNraXBGdXJ0aGVyQ2FjaGluZyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aW50cmluc2ljQmFzZU5hbWUgKz0gJy4nICsgcGFydDtcblx0XHRpbnRyaW5zaWNSZWFsTmFtZSA9ICclJyArIGludHJpbnNpY0Jhc2VOYW1lICsgJyUnO1xuXG5cdFx0aWYgKGhhc093bihJTlRSSU5TSUNTLCBpbnRyaW5zaWNSZWFsTmFtZSkpIHtcblx0XHRcdHZhbHVlID0gSU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV07XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG5cdFx0XHRpZiAoJGdPUEQgJiYgKGkgKyAxKSA+PSBwYXJ0cy5sZW5ndGgpIHtcblx0XHRcdFx0dmFyIGRlc2MgPSAkZ09QRCh2YWx1ZSwgcGFydCk7XG5cdFx0XHRcdGlzT3duID0gISFkZXNjO1xuXG5cdFx0XHRcdGlmICghYWxsb3dNaXNzaW5nICYmICEocGFydCBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignYmFzZSBpbnRyaW5zaWMgZm9yICcgKyBuYW1lICsgJyBleGlzdHMsIGJ1dCB0aGUgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZS4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBCeSBjb252ZW50aW9uLCB3aGVuIGEgZGF0YSBwcm9wZXJ0eSBpcyBjb252ZXJ0ZWQgdG8gYW4gYWNjZXNzb3Jcblx0XHRcdFx0Ly8gcHJvcGVydHkgdG8gZW11bGF0ZSBhIGRhdGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBzdWZmZXIgZnJvbVxuXHRcdFx0XHQvLyB0aGUgb3ZlcnJpZGUgbWlzdGFrZSwgdGhhdCBhY2Nlc3NvcidzIGdldHRlciBpcyBtYXJrZWQgd2l0aFxuXHRcdFx0XHQvLyBhbiBgb3JpZ2luYWxWYWx1ZWAgcHJvcGVydHkuIEhlcmUsIHdoZW4gd2UgZGV0ZWN0IHRoaXMsIHdlXG5cdFx0XHRcdC8vIHVwaG9sZCB0aGUgaWxsdXNpb24gYnkgcHJldGVuZGluZyB0byBzZWUgdGhhdCBvcmlnaW5hbCBkYXRhXG5cdFx0XHRcdC8vIHByb3BlcnR5LCBpLmUuLCByZXR1cm5pbmcgdGhlIHZhbHVlIHJhdGhlciB0aGFuIHRoZSBnZXR0ZXJcblx0XHRcdFx0Ly8gaXRzZWxmLlxuXHRcdFx0XHRpZiAoaXNPd24gJiYgJ2dldCcgaW4gZGVzYyAmJiAhKCdvcmlnaW5hbFZhbHVlJyBpbiBkZXNjLmdldCkpIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGRlc2MuZ2V0O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlzT3duID0gaGFzT3duKHZhbHVlLCBwYXJ0KTtcblx0XHRcdFx0dmFsdWUgPSB2YWx1ZVtwYXJ0XTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzT3duICYmICFza2lwRnVydGhlckNhY2hpbmcpIHtcblx0XHRcdFx0SU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgR2V0SW50cmluc2ljID0gcmVxdWlyZSgnZ2V0LWludHJpbnNpYycpO1xuXG52YXIgJGFwcGx5ID0gR2V0SW50cmluc2ljKCclRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5JScpO1xudmFyICRjYWxsID0gR2V0SW50cmluc2ljKCclRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwlJyk7XG52YXIgJHJlZmxlY3RBcHBseSA9IEdldEludHJpbnNpYygnJVJlZmxlY3QuYXBwbHklJywgdHJ1ZSkgfHwgYmluZC5jYWxsKCRjYWxsLCAkYXBwbHkpO1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gR2V0SW50cmluc2ljKCclT2JqZWN0LmRlZmluZVByb3BlcnR5JScsIHRydWUpO1xuXG5pZiAoJGRlZmluZVByb3BlcnR5KSB7XG5cdHRyeSB7XG5cdFx0JGRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgdmFsdWU6IDEgfSk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBJRSA4IGhhcyBhIGJyb2tlbiBkZWZpbmVQcm9wZXJ0eVxuXHRcdCRkZWZpbmVQcm9wZXJ0eSA9IG51bGw7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjYWxsQmluZCgpIHtcblx0cmV0dXJuICRyZWZsZWN0QXBwbHkoYmluZCwgJGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuXG52YXIgYXBwbHlCaW5kID0gZnVuY3Rpb24gYXBwbHlCaW5kKCkge1xuXHRyZXR1cm4gJHJlZmxlY3RBcHBseShiaW5kLCAkYXBwbHksIGFyZ3VtZW50cyk7XG59O1xuXG5pZiAoJGRlZmluZVByb3BlcnR5KSB7XG5cdCRkZWZpbmVQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgJ2FwcGx5JywgeyB2YWx1ZTogYXBwbHlCaW5kIH0pO1xufSBlbHNlIHtcblx0bW9kdWxlLmV4cG9ydHMuYXBwbHkgPSBhcHBseUJpbmQ7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJy4vJyk7XG5cbnZhciAkaW5kZXhPZiA9IGNhbGxCaW5kKEdldEludHJpbnNpYygnU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mJykpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNhbGxCb3VuZEludHJpbnNpYyhuYW1lLCBhbGxvd01pc3NpbmcpIHtcblx0dmFyIGludHJpbnNpYyA9IEdldEludHJpbnNpYyhuYW1lLCAhIWFsbG93TWlzc2luZyk7XG5cdGlmICh0eXBlb2YgaW50cmluc2ljID09PSAnZnVuY3Rpb24nICYmICRpbmRleE9mKG5hbWUsICcucHJvdG90eXBlLicpID4gLTEpIHtcblx0XHRyZXR1cm4gY2FsbEJpbmQoaW50cmluc2ljKTtcblx0fVxuXHRyZXR1cm4gaW50cmluc2ljO1xufTtcbiIsInZhciBoYXNNYXAgPSB0eXBlb2YgTWFwID09PSAnZnVuY3Rpb24nICYmIE1hcC5wcm90b3R5cGU7XG52YXIgbWFwU2l6ZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmIGhhc01hcCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTWFwLnByb3RvdHlwZSwgJ3NpemUnKSA6IG51bGw7XG52YXIgbWFwU2l6ZSA9IGhhc01hcCAmJiBtYXBTaXplRGVzY3JpcHRvciAmJiB0eXBlb2YgbWFwU2l6ZURlc2NyaXB0b3IuZ2V0ID09PSAnZnVuY3Rpb24nID8gbWFwU2l6ZURlc2NyaXB0b3IuZ2V0IDogbnVsbDtcbnZhciBtYXBGb3JFYWNoID0gaGFzTWFwICYmIE1hcC5wcm90b3R5cGUuZm9yRWFjaDtcbnZhciBoYXNTZXQgPSB0eXBlb2YgU2V0ID09PSAnZnVuY3Rpb24nICYmIFNldC5wcm90b3R5cGU7XG52YXIgc2V0U2l6ZURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmIGhhc1NldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2V0LnByb3RvdHlwZSwgJ3NpemUnKSA6IG51bGw7XG52YXIgc2V0U2l6ZSA9IGhhc1NldCAmJiBzZXRTaXplRGVzY3JpcHRvciAmJiB0eXBlb2Ygc2V0U2l6ZURlc2NyaXB0b3IuZ2V0ID09PSAnZnVuY3Rpb24nID8gc2V0U2l6ZURlc2NyaXB0b3IuZ2V0IDogbnVsbDtcbnZhciBzZXRGb3JFYWNoID0gaGFzU2V0ICYmIFNldC5wcm90b3R5cGUuZm9yRWFjaDtcbnZhciBoYXNXZWFrTWFwID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgV2Vha01hcC5wcm90b3R5cGU7XG52YXIgd2Vha01hcEhhcyA9IGhhc1dlYWtNYXAgPyBXZWFrTWFwLnByb3RvdHlwZS5oYXMgOiBudWxsO1xudmFyIGhhc1dlYWtTZXQgPSB0eXBlb2YgV2Vha1NldCA9PT0gJ2Z1bmN0aW9uJyAmJiBXZWFrU2V0LnByb3RvdHlwZTtcbnZhciB3ZWFrU2V0SGFzID0gaGFzV2Vha1NldCA/IFdlYWtTZXQucHJvdG90eXBlLmhhcyA6IG51bGw7XG52YXIgYm9vbGVhblZhbHVlT2YgPSBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mO1xudmFyIG9iamVjdFRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBmdW5jdGlvblRvU3RyaW5nID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIG1hdGNoID0gU3RyaW5nLnByb3RvdHlwZS5tYXRjaDtcbnZhciBiaWdJbnRWYWx1ZU9mID0gdHlwZW9mIEJpZ0ludCA9PT0gJ2Z1bmN0aW9uJyA/IEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiA6IG51bGw7XG52YXIgZ09QUyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgc3ltVG9TdHJpbmcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nID8gU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZyA6IG51bGw7XG52YXIgaXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxudmFyIGluc3BlY3RDdXN0b20gPSByZXF1aXJlKCcuL3V0aWwuaW5zcGVjdCcpLmN1c3RvbTtcbnZhciBpbnNwZWN0U3ltYm9sID0gaW5zcGVjdEN1c3RvbSAmJiBpc1N5bWJvbChpbnNwZWN0Q3VzdG9tKSA/IGluc3BlY3RDdXN0b20gOiBudWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluc3BlY3RfKG9iaiwgb3B0aW9ucywgZGVwdGgsIHNlZW4pIHtcbiAgICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwge307XG5cbiAgICBpZiAoaGFzKG9wdHMsICdxdW90ZVN0eWxlJykgJiYgKG9wdHMucXVvdGVTdHlsZSAhPT0gJ3NpbmdsZScgJiYgb3B0cy5xdW90ZVN0eWxlICE9PSAnZG91YmxlJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIFwicXVvdGVTdHlsZVwiIG11c3QgYmUgXCJzaW5nbGVcIiBvciBcImRvdWJsZVwiJyk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICAgaGFzKG9wdHMsICdtYXhTdHJpbmdMZW5ndGgnKSAmJiAodHlwZW9mIG9wdHMubWF4U3RyaW5nTGVuZ3RoID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyBvcHRzLm1heFN0cmluZ0xlbmd0aCA8IDAgJiYgb3B0cy5tYXhTdHJpbmdMZW5ndGggIT09IEluZmluaXR5XG4gICAgICAgICAgICA6IG9wdHMubWF4U3RyaW5nTGVuZ3RoICE9PSBudWxsXG4gICAgICAgIClcbiAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIFwibWF4U3RyaW5nTGVuZ3RoXCIsIGlmIHByb3ZpZGVkLCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgSW5maW5pdHksIG9yIGBudWxsYCcpO1xuICAgIH1cbiAgICB2YXIgY3VzdG9tSW5zcGVjdCA9IGhhcyhvcHRzLCAnY3VzdG9tSW5zcGVjdCcpID8gb3B0cy5jdXN0b21JbnNwZWN0IDogdHJ1ZTtcbiAgICBpZiAodHlwZW9mIGN1c3RvbUluc3BlY3QgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gXCJjdXN0b21JbnNwZWN0XCIsIGlmIHByb3ZpZGVkLCBtdXN0IGJlIGB0cnVlYCBvciBgZmFsc2VgJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgICBoYXMob3B0cywgJ2luZGVudCcpXG4gICAgICAgICYmIG9wdHMuaW5kZW50ICE9PSBudWxsXG4gICAgICAgICYmIG9wdHMuaW5kZW50ICE9PSAnXFx0J1xuICAgICAgICAmJiAhKHBhcnNlSW50KG9wdHMuaW5kZW50LCAxMCkgPT09IG9wdHMuaW5kZW50ICYmIG9wdHMuaW5kZW50ID4gMClcbiAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBcImluZGVudFwiIG11c3QgYmUgXCJcXFxcdFwiLCBhbiBpbnRlZ2VyID4gMCwgb3IgYG51bGxgJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiBvYmogPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gaW5zcGVjdFN0cmluZyhvYmosIG9wdHMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKG9iaiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5IC8gb2JqID4gMCA/ICcwJyA6ICctMCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFN0cmluZyhvYmopO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhvYmopICsgJ24nO1xuICAgIH1cblxuICAgIHZhciBtYXhEZXB0aCA9IHR5cGVvZiBvcHRzLmRlcHRoID09PSAndW5kZWZpbmVkJyA/IDUgOiBvcHRzLmRlcHRoO1xuICAgIGlmICh0eXBlb2YgZGVwdGggPT09ICd1bmRlZmluZWQnKSB7IGRlcHRoID0gMDsgfVxuICAgIGlmIChkZXB0aCA+PSBtYXhEZXB0aCAmJiBtYXhEZXB0aCA+IDAgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkob2JqKSA/ICdbQXJyYXldJyA6ICdbT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgdmFyIGluZGVudCA9IGdldEluZGVudChvcHRzLCBkZXB0aCk7XG5cbiAgICBpZiAodHlwZW9mIHNlZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNlZW4gPSBbXTtcbiAgICB9IGVsc2UgaWYgKGluZGV4T2Yoc2Vlbiwgb2JqKSA+PSAwKSB7XG4gICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zcGVjdCh2YWx1ZSwgZnJvbSwgbm9JbmRlbnQpIHtcbiAgICAgICAgaWYgKGZyb20pIHtcbiAgICAgICAgICAgIHNlZW4gPSBzZWVuLnNsaWNlKCk7XG4gICAgICAgICAgICBzZWVuLnB1c2goZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vSW5kZW50KSB7XG4gICAgICAgICAgICB2YXIgbmV3T3B0cyA9IHtcbiAgICAgICAgICAgICAgICBkZXB0aDogb3B0cy5kZXB0aFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChoYXMob3B0cywgJ3F1b3RlU3R5bGUnKSkge1xuICAgICAgICAgICAgICAgIG5ld09wdHMucXVvdGVTdHlsZSA9IG9wdHMucXVvdGVTdHlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbnNwZWN0Xyh2YWx1ZSwgbmV3T3B0cywgZGVwdGggKyAxLCBzZWVuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5zcGVjdF8odmFsdWUsIG9wdHMsIGRlcHRoICsgMSwgc2Vlbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBuYW1lT2Yob2JqKTtcbiAgICAgICAgdmFyIGtleXMgPSBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCk7XG4gICAgICAgIHJldHVybiAnW0Z1bmN0aW9uJyArIChuYW1lID8gJzogJyArIG5hbWUgOiAnIChhbm9ueW1vdXMpJykgKyAnXScgKyAoa2V5cy5sZW5ndGggPiAwID8gJyB7ICcgKyBrZXlzLmpvaW4oJywgJykgKyAnIH0nIDogJycpO1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wob2JqKSkge1xuICAgICAgICB2YXIgc3ltU3RyaW5nID0gc3ltVG9TdHJpbmcuY2FsbChvYmopO1xuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgPyBtYXJrQm94ZWQoc3ltU3RyaW5nKSA6IHN5bVN0cmluZztcbiAgICB9XG4gICAgaWYgKGlzRWxlbWVudChvYmopKSB7XG4gICAgICAgIHZhciBzID0gJzwnICsgU3RyaW5nKG9iai5ub2RlTmFtZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgdmFyIGF0dHJzID0gb2JqLmF0dHJpYnV0ZXMgfHwgW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHMgKz0gJyAnICsgYXR0cnNbaV0ubmFtZSArICc9JyArIHdyYXBRdW90ZXMocXVvdGUoYXR0cnNbaV0udmFsdWUpLCAnZG91YmxlJywgb3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSAnPic7XG4gICAgICAgIGlmIChvYmouY2hpbGROb2RlcyAmJiBvYmouY2hpbGROb2Rlcy5sZW5ndGgpIHsgcyArPSAnLi4uJzsgfVxuICAgICAgICBzICs9ICc8LycgKyBTdHJpbmcob2JqLm5vZGVOYW1lKS50b0xvd2VyQ2FzZSgpICsgJz4nO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9XG4gICAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgICAgICBpZiAob2JqLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJ1tdJzsgfVxuICAgICAgICB2YXIgeHMgPSBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCk7XG4gICAgICAgIGlmIChpbmRlbnQgJiYgIXNpbmdsZUxpbmVWYWx1ZXMoeHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1snICsgaW5kZW50ZWRKb2luKHhzLCBpbmRlbnQpICsgJ10nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnWyAnICsgeHMuam9pbignLCAnKSArICcgXSc7XG4gICAgfVxuICAgIGlmIChpc0Vycm9yKG9iaikpIHtcbiAgICAgICAgdmFyIHBhcnRzID0gYXJyT2JqS2V5cyhvYmosIGluc3BlY3QpO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7IHJldHVybiAnWycgKyBTdHJpbmcob2JqKSArICddJzsgfVxuICAgICAgICByZXR1cm4gJ3sgWycgKyBTdHJpbmcob2JqKSArICddICcgKyBwYXJ0cy5qb2luKCcsICcpICsgJyB9JztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIGN1c3RvbUluc3BlY3QpIHtcbiAgICAgICAgaWYgKGluc3BlY3RTeW1ib2wgJiYgdHlwZW9mIG9ialtpbnNwZWN0U3ltYm9sXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG9ialtpbnNwZWN0U3ltYm9sXSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmouaW5zcGVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5pbnNwZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzTWFwKG9iaikpIHtcbiAgICAgICAgdmFyIG1hcFBhcnRzID0gW107XG4gICAgICAgIG1hcEZvckVhY2guY2FsbChvYmosIGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICBtYXBQYXJ0cy5wdXNoKGluc3BlY3Qoa2V5LCBvYmosIHRydWUpICsgJyA9PiAnICsgaW5zcGVjdCh2YWx1ZSwgb2JqKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbk9mKCdNYXAnLCBtYXBTaXplLmNhbGwob2JqKSwgbWFwUGFydHMsIGluZGVudCk7XG4gICAgfVxuICAgIGlmIChpc1NldChvYmopKSB7XG4gICAgICAgIHZhciBzZXRQYXJ0cyA9IFtdO1xuICAgICAgICBzZXRGb3JFYWNoLmNhbGwob2JqLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHNldFBhcnRzLnB1c2goaW5zcGVjdCh2YWx1ZSwgb2JqKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbk9mKCdTZXQnLCBzZXRTaXplLmNhbGwob2JqKSwgc2V0UGFydHMsIGluZGVudCk7XG4gICAgfVxuICAgIGlmIChpc1dlYWtNYXAob2JqKSkge1xuICAgICAgICByZXR1cm4gd2Vha0NvbGxlY3Rpb25PZignV2Vha01hcCcpO1xuICAgIH1cbiAgICBpZiAoaXNXZWFrU2V0KG9iaikpIHtcbiAgICAgICAgcmV0dXJuIHdlYWtDb2xsZWN0aW9uT2YoJ1dlYWtTZXQnKTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtCb3hlZChpbnNwZWN0KE51bWJlcihvYmopKSk7XG4gICAgfVxuICAgIGlmIChpc0JpZ0ludChvYmopKSB7XG4gICAgICAgIHJldHVybiBtYXJrQm94ZWQoaW5zcGVjdChiaWdJbnRWYWx1ZU9mLmNhbGwob2JqKSkpO1xuICAgIH1cbiAgICBpZiAoaXNCb29sZWFuKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtCb3hlZChib29sZWFuVmFsdWVPZi5jYWxsKG9iaikpO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcob2JqKSkge1xuICAgICAgICByZXR1cm4gbWFya0JveGVkKGluc3BlY3QoU3RyaW5nKG9iaikpKTtcbiAgICB9XG4gICAgaWYgKCFpc0RhdGUob2JqKSAmJiAhaXNSZWdFeHAob2JqKSkge1xuICAgICAgICB2YXIgeXMgPSBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCk7XG4gICAgICAgIGlmICh5cy5sZW5ndGggPT09IDApIHsgcmV0dXJuICd7fSc7IH1cbiAgICAgICAgaWYgKGluZGVudCkge1xuICAgICAgICAgICAgcmV0dXJuICd7JyArIGluZGVudGVkSm9pbih5cywgaW5kZW50KSArICd9JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3sgJyArIHlzLmpvaW4oJywgJykgKyAnIH0nO1xuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKG9iaik7XG59O1xuXG5mdW5jdGlvbiB3cmFwUXVvdGVzKHMsIGRlZmF1bHRTdHlsZSwgb3B0cykge1xuICAgIHZhciBxdW90ZUNoYXIgPSAob3B0cy5xdW90ZVN0eWxlIHx8IGRlZmF1bHRTdHlsZSkgPT09ICdkb3VibGUnID8gJ1wiJyA6IFwiJ1wiO1xuICAgIHJldHVybiBxdW90ZUNoYXIgKyBzICsgcXVvdGVDaGFyO1xufVxuXG5mdW5jdGlvbiBxdW90ZShzKSB7XG4gICAgcmV0dXJuIFN0cmluZyhzKS5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG59XG5cbmZ1bmN0aW9uIGlzQXJyYXkob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBBcnJheV0nOyB9XG5mdW5jdGlvbiBpc0RhdGUob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBEYXRlXSc7IH1cbmZ1bmN0aW9uIGlzUmVnRXhwKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7IH1cbmZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBFcnJvcl0nOyB9XG5mdW5jdGlvbiBpc1N5bWJvbChvYmopIHsgcmV0dXJuIHRvU3RyKG9iaikgPT09ICdbb2JqZWN0IFN5bWJvbF0nOyB9XG5mdW5jdGlvbiBpc1N0cmluZyhvYmopIHsgcmV0dXJuIHRvU3RyKG9iaikgPT09ICdbb2JqZWN0IFN0cmluZ10nOyB9XG5mdW5jdGlvbiBpc051bWJlcihvYmopIHsgcmV0dXJuIHRvU3RyKG9iaikgPT09ICdbb2JqZWN0IE51bWJlcl0nOyB9XG5mdW5jdGlvbiBpc0JpZ0ludChvYmopIHsgcmV0dXJuIHRvU3RyKG9iaikgPT09ICdbb2JqZWN0IEJpZ0ludF0nOyB9XG5mdW5jdGlvbiBpc0Jvb2xlYW4ob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBCb29sZWFuXSc7IH1cblxudmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkgfHwgZnVuY3Rpb24gKGtleSkgeyByZXR1cm4ga2V5IGluIHRoaXM7IH07XG5mdW5jdGlvbiBoYXMob2JqLCBrZXkpIHtcbiAgICByZXR1cm4gaGFzT3duLmNhbGwob2JqLCBrZXkpO1xufVxuXG5mdW5jdGlvbiB0b1N0cihvYmopIHtcbiAgICByZXR1cm4gb2JqZWN0VG9TdHJpbmcuY2FsbChvYmopO1xufVxuXG5mdW5jdGlvbiBuYW1lT2YoZikge1xuICAgIGlmIChmLm5hbWUpIHsgcmV0dXJuIGYubmFtZTsgfVxuICAgIHZhciBtID0gbWF0Y2guY2FsbChmdW5jdGlvblRvU3RyaW5nLmNhbGwoZiksIC9eZnVuY3Rpb25cXHMqKFtcXHckXSspLyk7XG4gICAgaWYgKG0pIHsgcmV0dXJuIG1bMV07IH1cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gaW5kZXhPZih4cywgeCkge1xuICAgIGlmICh4cy5pbmRleE9mKSB7IHJldHVybiB4cy5pbmRleE9mKHgpOyB9XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKHhzW2ldID09PSB4KSB7IHJldHVybiBpOyB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gaXNNYXAoeCkge1xuICAgIGlmICghbWFwU2l6ZSB8fCAheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBtYXBTaXplLmNhbGwoeCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZXRTaXplLmNhbGwoeCk7XG4gICAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4IGluc3RhbmNlb2YgTWFwOyAvLyBjb3JlLWpzIHdvcmthcm91bmQsIHByZS12Mi41LjBcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNXZWFrTWFwKHgpIHtcbiAgICBpZiAoIXdlYWtNYXBIYXMgfHwgIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgd2Vha01hcEhhcy5jYWxsKHgsIHdlYWtNYXBIYXMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgd2Vha1NldEhhcy5jYWxsKHgsIHdlYWtTZXRIYXMpO1xuICAgICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geCBpbnN0YW5jZW9mIFdlYWtNYXA7IC8vIGNvcmUtanMgd29ya2Fyb3VuZCwgcHJlLXYyLjUuMFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1NldCh4KSB7XG4gICAgaWYgKCFzZXRTaXplIHx8ICF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIHNldFNpemUuY2FsbCh4KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1hcFNpemUuY2FsbCh4KTtcbiAgICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHggaW5zdGFuY2VvZiBTZXQ7IC8vIGNvcmUtanMgd29ya2Fyb3VuZCwgcHJlLXYyLjUuMFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1dlYWtTZXQoeCkge1xuICAgIGlmICghd2Vha1NldEhhcyB8fCAheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICB3ZWFrU2V0SGFzLmNhbGwoeCwgd2Vha1NldEhhcyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3ZWFrTWFwSGFzLmNhbGwoeCwgd2Vha01hcEhhcyk7XG4gICAgICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4IGluc3RhbmNlb2YgV2Vha1NldDsgLy8gY29yZS1qcyB3b3JrYXJvdW5kLCBwcmUtdjIuNS4wXG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudCh4KSB7XG4gICAgaWYgKCF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBpZiAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB4IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgeC5ub2RlTmFtZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHguZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0U3RyaW5nKHN0ciwgb3B0cykge1xuICAgIGlmIChzdHIubGVuZ3RoID4gb3B0cy5tYXhTdHJpbmdMZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlbWFpbmluZyA9IHN0ci5sZW5ndGggLSBvcHRzLm1heFN0cmluZ0xlbmd0aDtcbiAgICAgICAgdmFyIHRyYWlsZXIgPSAnLi4uICcgKyByZW1haW5pbmcgKyAnIG1vcmUgY2hhcmFjdGVyJyArIChyZW1haW5pbmcgPiAxID8gJ3MnIDogJycpO1xuICAgICAgICByZXR1cm4gaW5zcGVjdFN0cmluZyhzdHIuc2xpY2UoMCwgb3B0cy5tYXhTdHJpbmdMZW5ndGgpLCBvcHRzKSArIHRyYWlsZXI7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG4gICAgdmFyIHMgPSBzdHIucmVwbGFjZSgvKFsnXFxcXF0pL2csICdcXFxcJDEnKS5yZXBsYWNlKC9bXFx4MDAtXFx4MWZdL2csIGxvd2J5dGUpO1xuICAgIHJldHVybiB3cmFwUXVvdGVzKHMsICdzaW5nbGUnLCBvcHRzKTtcbn1cblxuZnVuY3Rpb24gbG93Ynl0ZShjKSB7XG4gICAgdmFyIG4gPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIHggPSB7XG4gICAgICAgIDg6ICdiJyxcbiAgICAgICAgOTogJ3QnLFxuICAgICAgICAxMDogJ24nLFxuICAgICAgICAxMjogJ2YnLFxuICAgICAgICAxMzogJ3InXG4gICAgfVtuXTtcbiAgICBpZiAoeCkgeyByZXR1cm4gJ1xcXFwnICsgeDsgfVxuICAgIHJldHVybiAnXFxcXHgnICsgKG4gPCAweDEwID8gJzAnIDogJycpICsgbi50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gbWFya0JveGVkKHN0cikge1xuICAgIHJldHVybiAnT2JqZWN0KCcgKyBzdHIgKyAnKSc7XG59XG5cbmZ1bmN0aW9uIHdlYWtDb2xsZWN0aW9uT2YodHlwZSkge1xuICAgIHJldHVybiB0eXBlICsgJyB7ID8gfSc7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3Rpb25PZih0eXBlLCBzaXplLCBlbnRyaWVzLCBpbmRlbnQpIHtcbiAgICB2YXIgam9pbmVkRW50cmllcyA9IGluZGVudCA/IGluZGVudGVkSm9pbihlbnRyaWVzLCBpbmRlbnQpIDogZW50cmllcy5qb2luKCcsICcpO1xuICAgIHJldHVybiB0eXBlICsgJyAoJyArIHNpemUgKyAnKSB7JyArIGpvaW5lZEVudHJpZXMgKyAnfSc7XG59XG5cbmZ1bmN0aW9uIHNpbmdsZUxpbmVWYWx1ZXMoeHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbmRleE9mKHhzW2ldLCAnXFxuJykgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZXRJbmRlbnQob3B0cywgZGVwdGgpIHtcbiAgICB2YXIgYmFzZUluZGVudDtcbiAgICBpZiAob3B0cy5pbmRlbnQgPT09ICdcXHQnKSB7XG4gICAgICAgIGJhc2VJbmRlbnQgPSAnXFx0JztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRzLmluZGVudCA9PT0gJ251bWJlcicgJiYgb3B0cy5pbmRlbnQgPiAwKSB7XG4gICAgICAgIGJhc2VJbmRlbnQgPSBBcnJheShvcHRzLmluZGVudCArIDEpLmpvaW4oJyAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYmFzZTogYmFzZUluZGVudCxcbiAgICAgICAgcHJldjogQXJyYXkoZGVwdGggKyAxKS5qb2luKGJhc2VJbmRlbnQpXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gaW5kZW50ZWRKb2luKHhzLCBpbmRlbnQpIHtcbiAgICBpZiAoeHMubGVuZ3RoID09PSAwKSB7IHJldHVybiAnJzsgfVxuICAgIHZhciBsaW5lSm9pbmVyID0gJ1xcbicgKyBpbmRlbnQucHJldiArIGluZGVudC5iYXNlO1xuICAgIHJldHVybiBsaW5lSm9pbmVyICsgeHMuam9pbignLCcgKyBsaW5lSm9pbmVyKSArICdcXG4nICsgaW5kZW50LnByZXY7XG59XG5cbmZ1bmN0aW9uIGFyck9iaktleXMob2JqLCBpbnNwZWN0KSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheShvYmopO1xuICAgIHZhciB4cyA9IFtdO1xuICAgIGlmIChpc0Fycikge1xuICAgICAgICB4cy5sZW5ndGggPSBvYmoubGVuZ3RoO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgeHNbaV0gPSBoYXMob2JqLCBpKSA/IGluc3BlY3Qob2JqW2ldLCBvYmopIDogJyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgIGlmICghaGFzKG9iaiwga2V5KSkgeyBjb250aW51ZTsgfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1jb250aW51ZVxuICAgICAgICBpZiAoaXNBcnIgJiYgU3RyaW5nKE51bWJlcihrZXkpKSA9PT0ga2V5ICYmIGtleSA8IG9iai5sZW5ndGgpIHsgY29udGludWU7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tY29udGludWVcbiAgICAgICAgaWYgKCgvW15cXHckXS8pLnRlc3Qoa2V5KSkge1xuICAgICAgICAgICAgeHMucHVzaChpbnNwZWN0KGtleSwgb2JqKSArICc6ICcgKyBpbnNwZWN0KG9ialtrZXldLCBvYmopKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHhzLnB1c2goa2V5ICsgJzogJyArIGluc3BlY3Qob2JqW2tleV0sIG9iaikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZ09QUyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgc3ltcyA9IGdPUFMob2JqKTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzeW1zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoaXNFbnVtZXJhYmxlLmNhbGwob2JqLCBzeW1zW2pdKSkge1xuICAgICAgICAgICAgICAgIHhzLnB1c2goJ1snICsgaW5zcGVjdChzeW1zW2pdKSArICddOiAnICsgaW5zcGVjdChvYmpbc3ltc1tqXV0sIG9iaikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB4cztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG52YXIgaW5zcGVjdCA9IHJlcXVpcmUoJ29iamVjdC1pbnNwZWN0Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gR2V0SW50cmluc2ljKCclVHlwZUVycm9yJScpO1xudmFyICRXZWFrTWFwID0gR2V0SW50cmluc2ljKCclV2Vha01hcCUnLCB0cnVlKTtcbnZhciAkTWFwID0gR2V0SW50cmluc2ljKCclTWFwJScsIHRydWUpO1xuXG52YXIgJHdlYWtNYXBHZXQgPSBjYWxsQm91bmQoJ1dlYWtNYXAucHJvdG90eXBlLmdldCcsIHRydWUpO1xudmFyICR3ZWFrTWFwU2V0ID0gY2FsbEJvdW5kKCdXZWFrTWFwLnByb3RvdHlwZS5zZXQnLCB0cnVlKTtcbnZhciAkd2Vha01hcEhhcyA9IGNhbGxCb3VuZCgnV2Vha01hcC5wcm90b3R5cGUuaGFzJywgdHJ1ZSk7XG52YXIgJG1hcEdldCA9IGNhbGxCb3VuZCgnTWFwLnByb3RvdHlwZS5nZXQnLCB0cnVlKTtcbnZhciAkbWFwU2V0ID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLnNldCcsIHRydWUpO1xudmFyICRtYXBIYXMgPSBjYWxsQm91bmQoJ01hcC5wcm90b3R5cGUuaGFzJywgdHJ1ZSk7XG5cbi8qXG4gKiBUaGlzIGZ1bmN0aW9uIHRyYXZlcnNlcyB0aGUgbGlzdCByZXR1cm5pbmcgdGhlIG5vZGUgY29ycmVzcG9uZGluZyB0byB0aGVcbiAqIGdpdmVuIGtleS5cbiAqXG4gKiBUaGF0IG5vZGUgaXMgYWxzbyBtb3ZlZCB0byB0aGUgaGVhZCBvZiB0aGUgbGlzdCwgc28gdGhhdCBpZiBpdCdzIGFjY2Vzc2VkXG4gKiBhZ2FpbiB3ZSBkb24ndCBuZWVkIHRvIHRyYXZlcnNlIHRoZSB3aG9sZSBsaXN0LiBCeSBkb2luZyBzbywgYWxsIHRoZSByZWNlbnRseVxuICogdXNlZCBub2RlcyBjYW4gYmUgYWNjZXNzZWQgcmVsYXRpdmVseSBxdWlja2x5LlxuICovXG52YXIgbGlzdEdldE5vZGUgPSBmdW5jdGlvbiAobGlzdCwga2V5KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblx0Zm9yICh2YXIgcHJldiA9IGxpc3QsIGN1cnI7IChjdXJyID0gcHJldi5uZXh0KSAhPT0gbnVsbDsgcHJldiA9IGN1cnIpIHtcblx0XHRpZiAoY3Vyci5rZXkgPT09IGtleSkge1xuXHRcdFx0cHJldi5uZXh0ID0gY3Vyci5uZXh0O1xuXHRcdFx0Y3Vyci5uZXh0ID0gbGlzdC5uZXh0O1xuXHRcdFx0bGlzdC5uZXh0ID0gY3VycjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0cmV0dXJuIGN1cnI7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgbGlzdEdldCA9IGZ1bmN0aW9uIChvYmplY3RzLCBrZXkpIHtcblx0dmFyIG5vZGUgPSBsaXN0R2V0Tm9kZShvYmplY3RzLCBrZXkpO1xuXHRyZXR1cm4gbm9kZSAmJiBub2RlLnZhbHVlO1xufTtcbnZhciBsaXN0U2V0ID0gZnVuY3Rpb24gKG9iamVjdHMsIGtleSwgdmFsdWUpIHtcblx0dmFyIG5vZGUgPSBsaXN0R2V0Tm9kZShvYmplY3RzLCBrZXkpO1xuXHRpZiAobm9kZSkge1xuXHRcdG5vZGUudmFsdWUgPSB2YWx1ZTtcblx0fSBlbHNlIHtcblx0XHQvLyBQcmVwZW5kIHRoZSBuZXcgbm9kZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0XG5cdFx0b2JqZWN0cy5uZXh0ID0geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRrZXk6IGtleSxcblx0XHRcdG5leHQ6IG9iamVjdHMubmV4dCxcblx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdH07XG5cdH1cbn07XG52YXIgbGlzdEhhcyA9IGZ1bmN0aW9uIChvYmplY3RzLCBrZXkpIHtcblx0cmV0dXJuICEhbGlzdEdldE5vZGUob2JqZWN0cywga2V5KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0U2lkZUNoYW5uZWwoKSB7XG5cdHZhciAkd207XG5cdHZhciAkbTtcblx0dmFyICRvO1xuXHR2YXIgY2hhbm5lbCA9IHtcblx0XHRhc3NlcnQ6IGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdGlmICghY2hhbm5lbC5oYXMoa2V5KSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignU2lkZSBjaGFubmVsIGRvZXMgbm90IGNvbnRhaW4gJyArIGluc3BlY3Qoa2V5KSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRnZXQ6IGZ1bmN0aW9uIChrZXkpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXJldHVyblxuXHRcdFx0aWYgKCRXZWFrTWFwICYmIGtleSAmJiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0aWYgKCR3bSkge1xuXHRcdFx0XHRcdHJldHVybiAkd2Vha01hcEdldCgkd20sIGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoJE1hcCkge1xuXHRcdFx0XHRpZiAoJG0pIHtcblx0XHRcdFx0XHRyZXR1cm4gJG1hcEdldCgkbSwga2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCRvKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbG9uZWx5LWlmXG5cdFx0XHRcdFx0cmV0dXJuIGxpc3RHZXQoJG8sIGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdGhhczogZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0aWYgKCRXZWFrTWFwICYmIGtleSAmJiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGtleSA9PT0gJ2Z1bmN0aW9uJykpIHtcblx0XHRcdFx0aWYgKCR3bSkge1xuXHRcdFx0XHRcdHJldHVybiAkd2Vha01hcEhhcygkd20sIGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoJE1hcCkge1xuXHRcdFx0XHRpZiAoJG0pIHtcblx0XHRcdFx0XHRyZXR1cm4gJG1hcEhhcygkbSwga2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCRvKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbG9uZWx5LWlmXG5cdFx0XHRcdFx0cmV0dXJuIGxpc3RIYXMoJG8sIGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0XHRcdGlmICgkV2Vha01hcCAmJiBrZXkgJiYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBrZXkgPT09ICdmdW5jdGlvbicpKSB7XG5cdFx0XHRcdGlmICghJHdtKSB7XG5cdFx0XHRcdFx0JHdtID0gbmV3ICRXZWFrTWFwKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0JHdlYWtNYXBTZXQoJHdtLCBrZXksIHZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAoJE1hcCkge1xuXHRcdFx0XHRpZiAoISRtKSB7XG5cdFx0XHRcdFx0JG0gPSBuZXcgJE1hcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCRtYXBTZXQoJG0sIGtleSwgdmFsdWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCEkbykge1xuXHRcdFx0XHRcdC8qXG5cdFx0XHRcdFx0ICogSW5pdGlhbGl6ZSB0aGUgbGlua2VkIGxpc3QgYXMgYW4gZW1wdHkgbm9kZSwgc28gdGhhdCB3ZSBkb24ndCBoYXZlXG5cdFx0XHRcdFx0ICogdG8gc3BlY2lhbC1jYXNlIGhhbmRsaW5nIG9mIHRoZSBmaXJzdCBub2RlOiB3ZSBjYW4gYWx3YXlzIHJlZmVyIHRvXG5cdFx0XHRcdFx0ICogaXQgYXMgKHByZXZpb3VzIG5vZGUpLm5leHQsIGluc3RlYWQgb2Ygc29tZXRoaW5nIGxpa2UgKGxpc3QpLmhlYWRcblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHQkbyA9IHsga2V5OiB7fSwgbmV4dDogbnVsbCB9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxpc3RTZXQoJG8sIGtleSwgdmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0cmV0dXJuIGNoYW5uZWw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcbnZhciBwZXJjZW50VHdlbnRpZXMgPSAvJTIwL2c7XG5cbnZhciBGb3JtYXQgPSB7XG4gICAgUkZDMTczODogJ1JGQzE3MzgnLFxuICAgIFJGQzM5ODY6ICdSRkMzOTg2J1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgJ2RlZmF1bHQnOiBGb3JtYXQuUkZDMzk4NixcbiAgICBmb3JtYXR0ZXJzOiB7XG4gICAgICAgIFJGQzE3Mzg6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2UuY2FsbCh2YWx1ZSwgcGVyY2VudFR3ZW50aWVzLCAnKycpO1xuICAgICAgICB9LFxuICAgICAgICBSRkMzOTg2OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBSRkMxNzM4OiBGb3JtYXQuUkZDMTczOCxcbiAgICBSRkMzOTg2OiBGb3JtYXQuUkZDMzk4NlxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbnZhciBoZXhUYWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgICAgICBhcnJheS5wdXNoKCclJyArICgoaSA8IDE2ID8gJzAnIDogJycpICsgaS50b1N0cmluZygxNikpLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnJheTtcbn0oKSk7XG5cbnZhciBjb21wYWN0UXVldWUgPSBmdW5jdGlvbiBjb21wYWN0UXVldWUocXVldWUpIHtcbiAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMSkge1xuICAgICAgICB2YXIgaXRlbSA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICB2YXIgb2JqID0gaXRlbS5vYmpbaXRlbS5wcm9wXTtcblxuICAgICAgICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICB2YXIgY29tcGFjdGVkID0gW107XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2JqLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbal0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBhY3RlZC5wdXNoKG9ialtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtLm9ialtpdGVtLnByb3BdID0gY29tcGFjdGVkO1xuICAgICAgICB9XG4gICAgfVxufTtcblxudmFyIGFycmF5VG9PYmplY3QgPSBmdW5jdGlvbiBhcnJheVRvT2JqZWN0KHNvdXJjZSwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSBvcHRpb25zICYmIG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlW2ldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgb2JqW2ldID0gc291cmNlW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBtZXJnZSA9IGZ1bmN0aW9uIG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgLyogZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOiAwICovXG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgICAgICAgdGFyZ2V0LnB1c2goc291cmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmICgob3B0aW9ucyAmJiAob3B0aW9ucy5wbGFpbk9iamVjdHMgfHwgb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpKSB8fCAhaGFzLmNhbGwoT2JqZWN0LnByb3RvdHlwZSwgc291cmNlKSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtzb3VyY2VdID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbdGFyZ2V0LCBzb3VyY2VdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldCB8fCB0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gW3RhcmdldF0uY29uY2F0KHNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIG1lcmdlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGlmIChpc0FycmF5KHRhcmdldCkgJiYgIWlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBtZXJnZVRhcmdldCA9IGFycmF5VG9PYmplY3QodGFyZ2V0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheSh0YXJnZXQpICYmIGlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBzb3VyY2UuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgICAgICAgaWYgKGhhcy5jYWxsKHRhcmdldCwgaSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0SXRlbSA9IHRhcmdldFtpXTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SXRlbSAmJiB0eXBlb2YgdGFyZ2V0SXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2ldID0gbWVyZ2UodGFyZ2V0SXRlbSwgaXRlbSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbaV0gPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywga2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuXG4gICAgICAgIGlmIChoYXMuY2FsbChhY2MsIGtleSkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2UoYWNjW2tleV0sIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBtZXJnZVRhcmdldCk7XG59O1xuXG52YXIgYXNzaWduID0gZnVuY3Rpb24gYXNzaWduU2luZ2xlU291cmNlKHRhcmdldCwgc291cmNlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICBhY2Nba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHRhcmdldCk7XG59O1xuXG52YXIgZGVjb2RlID0gZnVuY3Rpb24gKHN0ciwgZGVjb2RlciwgY2hhcnNldCkge1xuICAgIHZhciBzdHJXaXRob3V0UGx1cyA9IHN0ci5yZXBsYWNlKC9cXCsvZywgJyAnKTtcbiAgICBpZiAoY2hhcnNldCA9PT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgIC8vIHVuZXNjYXBlIG5ldmVyIHRocm93cywgbm8gdHJ5Li4uY2F0Y2ggbmVlZGVkOlxuICAgICAgICByZXR1cm4gc3RyV2l0aG91dFBsdXMucmVwbGFjZSgvJVswLTlhLWZdezJ9L2dpLCB1bmVzY2FwZSk7XG4gICAgfVxuICAgIC8vIHV0Zi04XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChzdHJXaXRob3V0UGx1cyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gc3RyV2l0aG91dFBsdXM7XG4gICAgfVxufTtcblxudmFyIGVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHIsIGRlZmF1bHRFbmNvZGVyLCBjaGFyc2V0LCBraW5kLCBmb3JtYXQpIHtcbiAgICAvLyBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBCcmlhbiBXaGl0ZSAobXNjZGV4KSBmb3IgdGhlIGlvLmpzIGNvcmUgcXVlcnlzdHJpbmcgbGlicmFyeS5cbiAgICAvLyBJdCBoYXMgYmVlbiBhZGFwdGVkIGhlcmUgZm9yIHN0cmljdGVyIGFkaGVyZW5jZSB0byBSRkMgMzk4NlxuICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgdmFyIHN0cmluZyA9IHN0cjtcbiAgICBpZiAodHlwZW9mIHN0ciA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgc3RyaW5nID0gU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN0cik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgICAgICBzdHJpbmcgPSBTdHJpbmcoc3RyKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhcnNldCA9PT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgIHJldHVybiBlc2NhcGUoc3RyaW5nKS5yZXBsYWNlKC8ldVswLTlhLWZdezR9L2dpLCBmdW5jdGlvbiAoJDApIHtcbiAgICAgICAgICAgIHJldHVybiAnJTI2JTIzJyArIHBhcnNlSW50KCQwLnNsaWNlKDIpLCAxNikgKyAnJTNCJztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIG91dCA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYyA9PT0gMHgyRCAvLyAtXG4gICAgICAgICAgICB8fCBjID09PSAweDJFIC8vIC5cbiAgICAgICAgICAgIHx8IGMgPT09IDB4NUYgLy8gX1xuICAgICAgICAgICAgfHwgYyA9PT0gMHg3RSAvLyB+XG4gICAgICAgICAgICB8fCAoYyA+PSAweDMwICYmIGMgPD0gMHgzOSkgLy8gMC05XG4gICAgICAgICAgICB8fCAoYyA+PSAweDQxICYmIGMgPD0gMHg1QSkgLy8gYS16XG4gICAgICAgICAgICB8fCAoYyA+PSAweDYxICYmIGMgPD0gMHg3QSkgLy8gQS1aXG4gICAgICAgICAgICB8fCAoZm9ybWF0ID09PSBmb3JtYXRzLlJGQzE3MzggJiYgKGMgPT09IDB4MjggfHwgYyA9PT0gMHgyOSkpIC8vICggKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIG91dCArPSBzdHJpbmcuY2hhckF0KGkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgICAgICAgIG91dCA9IG91dCArIGhleFRhYmxlW2NdO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICAgICAgICBvdXQgPSBvdXQgKyAoaGV4VGFibGVbMHhDMCB8IChjID4+IDYpXSArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjIDwgMHhEODAwIHx8IGMgPj0gMHhFMDAwKSB7XG4gICAgICAgICAgICBvdXQgPSBvdXQgKyAoaGV4VGFibGVbMHhFMCB8IChjID4+IDEyKV0gKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDYpICYgMHgzRildICsgaGV4VGFibGVbMHg4MCB8IChjICYgMHgzRildKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaSArPSAxO1xuICAgICAgICBjID0gMHgxMDAwMCArICgoKGMgJiAweDNGRikgPDwgMTApIHwgKHN0cmluZy5jaGFyQ29kZUF0KGkpICYgMHgzRkYpKTtcbiAgICAgICAgLyogZXNsaW50IG9wZXJhdG9yLWxpbmVicmVhazogWzIsIFwiYmVmb3JlXCJdICovXG4gICAgICAgIG91dCArPSBoZXhUYWJsZVsweEYwIHwgKGMgPj4gMTgpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDEyKSAmIDB4M0YpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDYpICYgMHgzRildXG4gICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufTtcblxudmFyIGNvbXBhY3QgPSBmdW5jdGlvbiBjb21wYWN0KHZhbHVlKSB7XG4gICAgdmFyIHF1ZXVlID0gW3sgb2JqOiB7IG86IHZhbHVlIH0sIHByb3A6ICdvJyB9XTtcbiAgICB2YXIgcmVmcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgaXRlbSA9IHF1ZXVlW2ldO1xuICAgICAgICB2YXIgb2JqID0gaXRlbS5vYmpbaXRlbS5wcm9wXTtcblxuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga2V5cy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbal07XG4gICAgICAgICAgICB2YXIgdmFsID0gb2JqW2tleV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsICYmIHJlZnMuaW5kZXhPZih2YWwpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goeyBvYmo6IG9iaiwgcHJvcDoga2V5IH0pO1xuICAgICAgICAgICAgICAgIHJlZnMucHVzaCh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcGFjdFF1ZXVlKHF1ZXVlKTtcblxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cbnZhciBpc1JlZ0V4cCA9IGZ1bmN0aW9uIGlzUmVnRXhwKG9iaikge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59O1xuXG52YXIgaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlcihvYmopIHtcbiAgICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhKG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iaikpO1xufTtcblxudmFyIGNvbWJpbmUgPSBmdW5jdGlvbiBjb21iaW5lKGEsIGIpIHtcbiAgICByZXR1cm4gW10uY29uY2F0KGEsIGIpO1xufTtcblxudmFyIG1heWJlTWFwID0gZnVuY3Rpb24gbWF5YmVNYXAodmFsLCBmbikge1xuICAgIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgICAgdmFyIG1hcHBlZCA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgbWFwcGVkLnB1c2goZm4odmFsW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcHBlZDtcbiAgICB9XG4gICAgcmV0dXJuIGZuKHZhbCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhcnJheVRvT2JqZWN0OiBhcnJheVRvT2JqZWN0LFxuICAgIGFzc2lnbjogYXNzaWduLFxuICAgIGNvbWJpbmU6IGNvbWJpbmUsXG4gICAgY29tcGFjdDogY29tcGFjdCxcbiAgICBkZWNvZGU6IGRlY29kZSxcbiAgICBlbmNvZGU6IGVuY29kZSxcbiAgICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gICAgaXNSZWdFeHA6IGlzUmVnRXhwLFxuICAgIG1heWJlTWFwOiBtYXliZU1hcCxcbiAgICBtZXJnZTogbWVyZ2Vcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBnZXRTaWRlQ2hhbm5lbCA9IHJlcXVpcmUoJ3NpZGUtY2hhbm5lbCcpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgYXJyYXlQcmVmaXhHZW5lcmF0b3JzID0ge1xuICAgIGJyYWNrZXRzOiBmdW5jdGlvbiBicmFja2V0cyhwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArICdbXSc7XG4gICAgfSxcbiAgICBjb21tYTogJ2NvbW1hJyxcbiAgICBpbmRpY2VzOiBmdW5jdGlvbiBpbmRpY2VzKHByZWZpeCwga2V5KSB7XG4gICAgICAgIHJldHVybiBwcmVmaXggKyAnWycgKyBrZXkgKyAnXSc7XG4gICAgfSxcbiAgICByZXBlYXQ6IGZ1bmN0aW9uIHJlcGVhdChwcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHByZWZpeDtcbiAgICB9XG59O1xuXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG52YXIgc3BsaXQgPSBTdHJpbmcucHJvdG90eXBlLnNwbGl0O1xudmFyIHB1c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaDtcbnZhciBwdXNoVG9BcnJheSA9IGZ1bmN0aW9uIChhcnIsIHZhbHVlT3JBcnJheSkge1xuICAgIHB1c2guYXBwbHkoYXJyLCBpc0FycmF5KHZhbHVlT3JBcnJheSkgPyB2YWx1ZU9yQXJyYXkgOiBbdmFsdWVPckFycmF5XSk7XG59O1xuXG52YXIgdG9JU08gPSBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZztcblxudmFyIGRlZmF1bHRGb3JtYXQgPSBmb3JtYXRzWydkZWZhdWx0J107XG52YXIgZGVmYXVsdHMgPSB7XG4gICAgYWRkUXVlcnlQcmVmaXg6IGZhbHNlLFxuICAgIGFsbG93RG90czogZmFsc2UsXG4gICAgY2hhcnNldDogJ3V0Zi04JyxcbiAgICBjaGFyc2V0U2VudGluZWw6IGZhbHNlLFxuICAgIGRlbGltaXRlcjogJyYnLFxuICAgIGVuY29kZTogdHJ1ZSxcbiAgICBlbmNvZGVyOiB1dGlscy5lbmNvZGUsXG4gICAgZW5jb2RlVmFsdWVzT25seTogZmFsc2UsXG4gICAgZm9ybWF0OiBkZWZhdWx0Rm9ybWF0LFxuICAgIGZvcm1hdHRlcjogZm9ybWF0cy5mb3JtYXR0ZXJzW2RlZmF1bHRGb3JtYXRdLFxuICAgIC8vIGRlcHJlY2F0ZWRcbiAgICBpbmRpY2VzOiBmYWxzZSxcbiAgICBzZXJpYWxpemVEYXRlOiBmdW5jdGlvbiBzZXJpYWxpemVEYXRlKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRvSVNPLmNhbGwoZGF0ZSk7XG4gICAgfSxcbiAgICBza2lwTnVsbHM6IGZhbHNlLFxuICAgIHN0cmljdE51bGxIYW5kbGluZzogZmFsc2Vcbn07XG5cbnZhciBpc05vbk51bGxpc2hQcmltaXRpdmUgPSBmdW5jdGlvbiBpc05vbk51bGxpc2hQcmltaXRpdmUodikge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZydcbiAgICAgICAgfHwgdHlwZW9mIHYgPT09ICdudW1iZXInXG4gICAgICAgIHx8IHR5cGVvZiB2ID09PSAnYm9vbGVhbidcbiAgICAgICAgfHwgdHlwZW9mIHYgPT09ICdzeW1ib2wnXG4gICAgICAgIHx8IHR5cGVvZiB2ID09PSAnYmlnaW50Jztcbn07XG5cbnZhciBzZW50aW5lbCA9IHt9O1xuXG52YXIgc3RyaW5naWZ5ID0gZnVuY3Rpb24gc3RyaW5naWZ5KFxuICAgIG9iamVjdCxcbiAgICBwcmVmaXgsXG4gICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICBzdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgc2tpcE51bGxzLFxuICAgIGVuY29kZXIsXG4gICAgZmlsdGVyLFxuICAgIHNvcnQsXG4gICAgYWxsb3dEb3RzLFxuICAgIHNlcmlhbGl6ZURhdGUsXG4gICAgZm9ybWF0LFxuICAgIGZvcm1hdHRlcixcbiAgICBlbmNvZGVWYWx1ZXNPbmx5LFxuICAgIGNoYXJzZXQsXG4gICAgc2lkZUNoYW5uZWxcbikge1xuICAgIHZhciBvYmogPSBvYmplY3Q7XG5cbiAgICB2YXIgdG1wU2MgPSBzaWRlQ2hhbm5lbDtcbiAgICB2YXIgc3RlcCA9IDA7XG4gICAgdmFyIGZpbmRGbGFnID0gZmFsc2U7XG4gICAgd2hpbGUgKCh0bXBTYyA9IHRtcFNjLmdldChzZW50aW5lbCkpICE9PSB2b2lkIHVuZGVmaW5lZCAmJiAhZmluZEZsYWcpIHtcbiAgICAgICAgLy8gV2hlcmUgb2JqZWN0IGxhc3QgYXBwZWFyZWQgaW4gdGhlIHJlZiB0cmVlXG4gICAgICAgIHZhciBwb3MgPSB0bXBTYy5nZXQob2JqZWN0KTtcbiAgICAgICAgc3RlcCArPSAxO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChwb3MgPT09IHN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQ3ljbGljIG9iamVjdCB2YWx1ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaW5kRmxhZyA9IHRydWU7IC8vIEJyZWFrIHdoaWxlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB0bXBTYy5nZXQoc2VudGluZWwpID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc3RlcCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvYmogPSBmaWx0ZXIocHJlZml4LCBvYmopO1xuICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBvYmogPSBzZXJpYWxpemVEYXRlKG9iaik7XG4gICAgfSBlbHNlIGlmIChnZW5lcmF0ZUFycmF5UHJlZml4ID09PSAnY29tbWEnICYmIGlzQXJyYXkob2JqKSkge1xuICAgICAgICBvYmogPSB1dGlscy5tYXliZU1hcChvYmosIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgICAgICBpZiAoc3RyaWN0TnVsbEhhbmRsaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlciAmJiAhZW5jb2RlVmFsdWVzT25seSA/IGVuY29kZXIocHJlZml4LCBkZWZhdWx0cy5lbmNvZGVyLCBjaGFyc2V0LCAna2V5JywgZm9ybWF0KSA6IHByZWZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9iaiA9ICcnO1xuICAgIH1cblxuICAgIGlmIChpc05vbk51bGxpc2hQcmltaXRpdmUob2JqKSB8fCB1dGlscy5pc0J1ZmZlcihvYmopKSB7XG4gICAgICAgIGlmIChlbmNvZGVyKSB7XG4gICAgICAgICAgICB2YXIga2V5VmFsdWUgPSBlbmNvZGVWYWx1ZXNPbmx5ID8gcHJlZml4IDogZW5jb2RlcihwcmVmaXgsIGRlZmF1bHRzLmVuY29kZXIsIGNoYXJzZXQsICdrZXknLCBmb3JtYXQpO1xuICAgICAgICAgICAgaWYgKGdlbmVyYXRlQXJyYXlQcmVmaXggPT09ICdjb21tYScgJiYgZW5jb2RlVmFsdWVzT25seSkge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZXNBcnJheSA9IHNwbGl0LmNhbGwoU3RyaW5nKG9iaiksICcsJyk7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlc0pvaW5lZCA9ICcnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzQXJyYXkubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzSm9pbmVkICs9IChpID09PSAwID8gJycgOiAnLCcpICsgZm9ybWF0dGVyKGVuY29kZXIodmFsdWVzQXJyYXlbaV0sIGRlZmF1bHRzLmVuY29kZXIsIGNoYXJzZXQsICd2YWx1ZScsIGZvcm1hdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW2Zvcm1hdHRlcihrZXlWYWx1ZSkgKyAnPScgKyB2YWx1ZXNKb2luZWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtmb3JtYXR0ZXIoa2V5VmFsdWUpICsgJz0nICsgZm9ybWF0dGVyKGVuY29kZXIob2JqLCBkZWZhdWx0cy5lbmNvZGVyLCBjaGFyc2V0LCAndmFsdWUnLCBmb3JtYXQpKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtmb3JtYXR0ZXIocHJlZml4KSArICc9JyArIGZvcm1hdHRlcihTdHJpbmcob2JqKSldO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZXMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHZhciBvYmpLZXlzO1xuICAgIGlmIChnZW5lcmF0ZUFycmF5UHJlZml4ID09PSAnY29tbWEnICYmIGlzQXJyYXkob2JqKSkge1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIGpvaW4gZWxlbWVudHMgaW5cbiAgICAgICAgb2JqS2V5cyA9IFt7IHZhbHVlOiBvYmoubGVuZ3RoID4gMCA/IG9iai5qb2luKCcsJykgfHwgbnVsbCA6IHZvaWQgdW5kZWZpbmVkIH1dO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShmaWx0ZXIpKSB7XG4gICAgICAgIG9iaktleXMgPSBmaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBvYmpLZXlzID0gc29ydCA/IGtleXMuc29ydChzb3J0KSA6IGtleXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBvYmpLZXlzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpLZXlzW2pdO1xuICAgICAgICB2YXIgdmFsdWUgPSB0eXBlb2Yga2V5ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Yga2V5LnZhbHVlICE9PSAndW5kZWZpbmVkJyA/IGtleS52YWx1ZSA6IG9ialtrZXldO1xuXG4gICAgICAgIGlmIChza2lwTnVsbHMgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGtleVByZWZpeCA9IGlzQXJyYXkob2JqKVxuICAgICAgICAgICAgPyB0eXBlb2YgZ2VuZXJhdGVBcnJheVByZWZpeCA9PT0gJ2Z1bmN0aW9uJyA/IGdlbmVyYXRlQXJyYXlQcmVmaXgocHJlZml4LCBrZXkpIDogcHJlZml4XG4gICAgICAgICAgICA6IHByZWZpeCArIChhbGxvd0RvdHMgPyAnLicgKyBrZXkgOiAnWycgKyBrZXkgKyAnXScpO1xuXG4gICAgICAgIHNpZGVDaGFubmVsLnNldChvYmplY3QsIHN0ZXApO1xuICAgICAgICB2YXIgdmFsdWVTaWRlQ2hhbm5lbCA9IGdldFNpZGVDaGFubmVsKCk7XG4gICAgICAgIHZhbHVlU2lkZUNoYW5uZWwuc2V0KHNlbnRpbmVsLCBzaWRlQ2hhbm5lbCk7XG4gICAgICAgIHB1c2hUb0FycmF5KHZhbHVlcywgc3RyaW5naWZ5KFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBrZXlQcmVmaXgsXG4gICAgICAgICAgICBnZW5lcmF0ZUFycmF5UHJlZml4LFxuICAgICAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgc2tpcE51bGxzLFxuICAgICAgICAgICAgZW5jb2RlcixcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICBhbGxvd0RvdHMsXG4gICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgZW5jb2RlVmFsdWVzT25seSxcbiAgICAgICAgICAgIGNoYXJzZXQsXG4gICAgICAgICAgICB2YWx1ZVNpZGVDaGFubmVsXG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXM7XG59O1xuXG52YXIgbm9ybWFsaXplU3RyaW5naWZ5T3B0aW9ucyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZ2lmeU9wdGlvbnMob3B0cykge1xuICAgIGlmICghb3B0cykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZW5jb2RlciAhPT0gbnVsbCAmJiB0eXBlb2Ygb3B0cy5lbmNvZGVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0cy5lbmNvZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0VuY29kZXIgaGFzIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgdmFyIGNoYXJzZXQgPSBvcHRzLmNoYXJzZXQgfHwgZGVmYXVsdHMuY2hhcnNldDtcbiAgICBpZiAodHlwZW9mIG9wdHMuY2hhcnNldCAhPT0gJ3VuZGVmaW5lZCcgJiYgb3B0cy5jaGFyc2V0ICE9PSAndXRmLTgnICYmIG9wdHMuY2hhcnNldCAhPT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBjaGFyc2V0IG9wdGlvbiBtdXN0IGJlIGVpdGhlciB1dGYtOCwgaXNvLTg4NTktMSwgb3IgdW5kZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdCA9IGZvcm1hdHNbJ2RlZmF1bHQnXTtcbiAgICBpZiAodHlwZW9mIG9wdHMuZm9ybWF0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAoIWhhcy5jYWxsKGZvcm1hdHMuZm9ybWF0dGVycywgb3B0cy5mb3JtYXQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGZvcm1hdCBvcHRpb24gcHJvdmlkZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybWF0ID0gb3B0cy5mb3JtYXQ7XG4gICAgfVxuICAgIHZhciBmb3JtYXR0ZXIgPSBmb3JtYXRzLmZvcm1hdHRlcnNbZm9ybWF0XTtcblxuICAgIHZhciBmaWx0ZXIgPSBkZWZhdWx0cy5maWx0ZXI7XG4gICAgaWYgKHR5cGVvZiBvcHRzLmZpbHRlciA9PT0gJ2Z1bmN0aW9uJyB8fCBpc0FycmF5KG9wdHMuZmlsdGVyKSkge1xuICAgICAgICBmaWx0ZXIgPSBvcHRzLmZpbHRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhZGRRdWVyeVByZWZpeDogdHlwZW9mIG9wdHMuYWRkUXVlcnlQcmVmaXggPT09ICdib29sZWFuJyA/IG9wdHMuYWRkUXVlcnlQcmVmaXggOiBkZWZhdWx0cy5hZGRRdWVyeVByZWZpeCxcbiAgICAgICAgYWxsb3dEb3RzOiB0eXBlb2Ygb3B0cy5hbGxvd0RvdHMgPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdHMuYWxsb3dEb3RzIDogISFvcHRzLmFsbG93RG90cyxcbiAgICAgICAgY2hhcnNldDogY2hhcnNldCxcbiAgICAgICAgY2hhcnNldFNlbnRpbmVsOiB0eXBlb2Ygb3B0cy5jaGFyc2V0U2VudGluZWwgPT09ICdib29sZWFuJyA/IG9wdHMuY2hhcnNldFNlbnRpbmVsIDogZGVmYXVsdHMuY2hhcnNldFNlbnRpbmVsLFxuICAgICAgICBkZWxpbWl0ZXI6IHR5cGVvZiBvcHRzLmRlbGltaXRlciA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZhdWx0cy5kZWxpbWl0ZXIgOiBvcHRzLmRlbGltaXRlcixcbiAgICAgICAgZW5jb2RlOiB0eXBlb2Ygb3B0cy5lbmNvZGUgPT09ICdib29sZWFuJyA/IG9wdHMuZW5jb2RlIDogZGVmYXVsdHMuZW5jb2RlLFxuICAgICAgICBlbmNvZGVyOiB0eXBlb2Ygb3B0cy5lbmNvZGVyID09PSAnZnVuY3Rpb24nID8gb3B0cy5lbmNvZGVyIDogZGVmYXVsdHMuZW5jb2RlcixcbiAgICAgICAgZW5jb2RlVmFsdWVzT25seTogdHlwZW9mIG9wdHMuZW5jb2RlVmFsdWVzT25seSA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5lbmNvZGVWYWx1ZXNPbmx5IDogZGVmYXVsdHMuZW5jb2RlVmFsdWVzT25seSxcbiAgICAgICAgZmlsdGVyOiBmaWx0ZXIsXG4gICAgICAgIGZvcm1hdDogZm9ybWF0LFxuICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcixcbiAgICAgICAgc2VyaWFsaXplRGF0ZTogdHlwZW9mIG9wdHMuc2VyaWFsaXplRGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IG9wdHMuc2VyaWFsaXplRGF0ZSA6IGRlZmF1bHRzLnNlcmlhbGl6ZURhdGUsXG4gICAgICAgIHNraXBOdWxsczogdHlwZW9mIG9wdHMuc2tpcE51bGxzID09PSAnYm9vbGVhbicgPyBvcHRzLnNraXBOdWxscyA6IGRlZmF1bHRzLnNraXBOdWxscyxcbiAgICAgICAgc29ydDogdHlwZW9mIG9wdHMuc29ydCA9PT0gJ2Z1bmN0aW9uJyA/IG9wdHMuc29ydCA6IG51bGwsXG4gICAgICAgIHN0cmljdE51bGxIYW5kbGluZzogdHlwZW9mIG9wdHMuc3RyaWN0TnVsbEhhbmRsaW5nID09PSAnYm9vbGVhbicgPyBvcHRzLnN0cmljdE51bGxIYW5kbGluZyA6IGRlZmF1bHRzLnN0cmljdE51bGxIYW5kbGluZ1xuICAgIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG9wdHMpIHtcbiAgICB2YXIgb2JqID0gb2JqZWN0O1xuICAgIHZhciBvcHRpb25zID0gbm9ybWFsaXplU3RyaW5naWZ5T3B0aW9ucyhvcHRzKTtcblxuICAgIHZhciBvYmpLZXlzO1xuICAgIHZhciBmaWx0ZXI7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZpbHRlciA9IG9wdGlvbnMuZmlsdGVyO1xuICAgICAgICBvYmogPSBmaWx0ZXIoJycsIG9iaik7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KG9wdGlvbnMuZmlsdGVyKSkge1xuICAgICAgICBmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcbiAgICAgICAgb2JqS2V5cyA9IGZpbHRlcjtcbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IFtdO1xuXG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdmFyIGFycmF5Rm9ybWF0O1xuICAgIGlmIChvcHRzICYmIG9wdHMuYXJyYXlGb3JtYXQgaW4gYXJyYXlQcmVmaXhHZW5lcmF0b3JzKSB7XG4gICAgICAgIGFycmF5Rm9ybWF0ID0gb3B0cy5hcnJheUZvcm1hdDtcbiAgICB9IGVsc2UgaWYgKG9wdHMgJiYgJ2luZGljZXMnIGluIG9wdHMpIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBvcHRzLmluZGljZXMgPyAnaW5kaWNlcycgOiAncmVwZWF0JztcbiAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheUZvcm1hdCA9ICdpbmRpY2VzJztcbiAgICB9XG5cbiAgICB2YXIgZ2VuZXJhdGVBcnJheVByZWZpeCA9IGFycmF5UHJlZml4R2VuZXJhdG9yc1thcnJheUZvcm1hdF07XG5cbiAgICBpZiAoIW9iaktleXMpIHtcbiAgICAgICAgb2JqS2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgICBvYmpLZXlzLnNvcnQob3B0aW9ucy5zb3J0KTtcbiAgICB9XG5cbiAgICB2YXIgc2lkZUNoYW5uZWwgPSBnZXRTaWRlQ2hhbm5lbCgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqS2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tpXTtcblxuICAgICAgICBpZiAob3B0aW9ucy5za2lwTnVsbHMgJiYgb2JqW2tleV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHB1c2hUb0FycmF5KGtleXMsIHN0cmluZ2lmeShcbiAgICAgICAgICAgIG9ialtrZXldLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICAgICAgICAgIG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgb3B0aW9ucy5za2lwTnVsbHMsXG4gICAgICAgICAgICBvcHRpb25zLmVuY29kZSA/IG9wdGlvbnMuZW5jb2RlciA6IG51bGwsXG4gICAgICAgICAgICBvcHRpb25zLmZpbHRlcixcbiAgICAgICAgICAgIG9wdGlvbnMuc29ydCxcbiAgICAgICAgICAgIG9wdGlvbnMuYWxsb3dEb3RzLFxuICAgICAgICAgICAgb3B0aW9ucy5zZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgICBvcHRpb25zLmZvcm1hdHRlcixcbiAgICAgICAgICAgIG9wdGlvbnMuZW5jb2RlVmFsdWVzT25seSxcbiAgICAgICAgICAgIG9wdGlvbnMuY2hhcnNldCxcbiAgICAgICAgICAgIHNpZGVDaGFubmVsXG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIHZhciBqb2luZWQgPSBrZXlzLmpvaW4ob3B0aW9ucy5kZWxpbWl0ZXIpO1xuICAgIHZhciBwcmVmaXggPSBvcHRpb25zLmFkZFF1ZXJ5UHJlZml4ID09PSB0cnVlID8gJz8nIDogJyc7XG5cbiAgICBpZiAob3B0aW9ucy5jaGFyc2V0U2VudGluZWwpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuY2hhcnNldCA9PT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgICAgICAvLyBlbmNvZGVVUklDb21wb25lbnQoJyYjMTAwMDM7JyksIHRoZSBcIm51bWVyaWMgZW50aXR5XCIgcmVwcmVzZW50YXRpb24gb2YgYSBjaGVja21hcmtcbiAgICAgICAgICAgIHByZWZpeCArPSAndXRmOD0lMjYlMjMxMDAwMyUzQiYnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZW5jb2RlVVJJQ29tcG9uZW50KCfinJMnKVxuICAgICAgICAgICAgcHJlZml4ICs9ICd1dGY4PSVFMiU5QyU5MyYnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGpvaW5lZC5sZW5ndGggPiAwID8gcHJlZml4ICsgam9pbmVkIDogJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG52YXIgZGVmYXVsdHMgPSB7XG4gICAgYWxsb3dEb3RzOiBmYWxzZSxcbiAgICBhbGxvd1Byb3RvdHlwZXM6IGZhbHNlLFxuICAgIGFsbG93U3BhcnNlOiBmYWxzZSxcbiAgICBhcnJheUxpbWl0OiAyMCxcbiAgICBjaGFyc2V0OiAndXRmLTgnLFxuICAgIGNoYXJzZXRTZW50aW5lbDogZmFsc2UsXG4gICAgY29tbWE6IGZhbHNlLFxuICAgIGRlY29kZXI6IHV0aWxzLmRlY29kZSxcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBkZXB0aDogNSxcbiAgICBpZ25vcmVRdWVyeVByZWZpeDogZmFsc2UsXG4gICAgaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzOiBmYWxzZSxcbiAgICBwYXJhbWV0ZXJMaW1pdDogMTAwMCxcbiAgICBwYXJzZUFycmF5czogdHJ1ZSxcbiAgICBwbGFpbk9iamVjdHM6IGZhbHNlLFxuICAgIHN0cmljdE51bGxIYW5kbGluZzogZmFsc2Vcbn07XG5cbnZhciBpbnRlcnByZXROdW1lcmljRW50aXRpZXMgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8mIyhcXGQrKTsvZywgZnVuY3Rpb24gKCQwLCBudW1iZXJTdHIpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQobnVtYmVyU3RyLCAxMCkpO1xuICAgIH0pO1xufTtcblxudmFyIHBhcnNlQXJyYXlWYWx1ZSA9IGZ1bmN0aW9uICh2YWwsIG9wdGlvbnMpIHtcbiAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnICYmIG9wdGlvbnMuY29tbWEgJiYgdmFsLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB2YWwuc3BsaXQoJywnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsO1xufTtcblxuLy8gVGhpcyBpcyB3aGF0IGJyb3dzZXJzIHdpbGwgc3VibWl0IHdoZW4gdGhlIOKckyBjaGFyYWN0ZXIgb2NjdXJzIGluIGFuXG4vLyBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgYm9keSBhbmQgdGhlIGVuY29kaW5nIG9mIHRoZSBwYWdlIGNvbnRhaW5pbmdcbi8vIHRoZSBmb3JtIGlzIGlzby04ODU5LTEsIG9yIHdoZW4gdGhlIHN1Ym1pdHRlZCBmb3JtIGhhcyBhbiBhY2NlcHQtY2hhcnNldFxuLy8gYXR0cmlidXRlIG9mIGlzby04ODU5LTEuIFByZXN1bWFibHkgYWxzbyB3aXRoIG90aGVyIGNoYXJzZXRzIHRoYXQgZG8gbm90IGNvbnRhaW5cbi8vIHRoZSDinJMgY2hhcmFjdGVyLCBzdWNoIGFzIHVzLWFzY2lpLlxudmFyIGlzb1NlbnRpbmVsID0gJ3V0Zjg9JTI2JTIzMTAwMDMlM0InOyAvLyBlbmNvZGVVUklDb21wb25lbnQoJyYjMTAwMDM7JylcblxuLy8gVGhlc2UgYXJlIHRoZSBwZXJjZW50LWVuY29kZWQgdXRmLTggb2N0ZXRzIHJlcHJlc2VudGluZyBhIGNoZWNrbWFyaywgaW5kaWNhdGluZyB0aGF0IHRoZSByZXF1ZXN0IGFjdHVhbGx5IGlzIHV0Zi04IGVuY29kZWQuXG52YXIgY2hhcnNldFNlbnRpbmVsID0gJ3V0Zjg9JUUyJTlDJTkzJzsgLy8gZW5jb2RlVVJJQ29tcG9uZW50KCfinJMnKVxuXG52YXIgcGFyc2VWYWx1ZXMgPSBmdW5jdGlvbiBwYXJzZVF1ZXJ5U3RyaW5nVmFsdWVzKHN0ciwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSB7fTtcbiAgICB2YXIgY2xlYW5TdHIgPSBvcHRpb25zLmlnbm9yZVF1ZXJ5UHJlZml4ID8gc3RyLnJlcGxhY2UoL15cXD8vLCAnJykgOiBzdHI7XG4gICAgdmFyIGxpbWl0ID0gb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdCA9PT0gSW5maW5pdHkgPyB1bmRlZmluZWQgOiBvcHRpb25zLnBhcmFtZXRlckxpbWl0O1xuICAgIHZhciBwYXJ0cyA9IGNsZWFuU3RyLnNwbGl0KG9wdGlvbnMuZGVsaW1pdGVyLCBsaW1pdCk7XG4gICAgdmFyIHNraXBJbmRleCA9IC0xOyAvLyBLZWVwIHRyYWNrIG9mIHdoZXJlIHRoZSB1dGY4IHNlbnRpbmVsIHdhcyBmb3VuZFxuICAgIHZhciBpO1xuXG4gICAgdmFyIGNoYXJzZXQgPSBvcHRpb25zLmNoYXJzZXQ7XG4gICAgaWYgKG9wdGlvbnMuY2hhcnNldFNlbnRpbmVsKSB7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKHBhcnRzW2ldLmluZGV4T2YoJ3V0Zjg9JykgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAocGFydHNbaV0gPT09IGNoYXJzZXRTZW50aW5lbCkge1xuICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3V0Zi04JztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnRzW2ldID09PSBpc29TZW50aW5lbCkge1xuICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ2lzby04ODU5LTEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBza2lwSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGkgPSBwYXJ0cy5sZW5ndGg7IC8vIFRoZSBlc2xpbnQgc2V0dGluZ3MgZG8gbm90IGFsbG93IGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmIChpID09PSBza2lwSW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgICAgdmFyIGJyYWNrZXRFcXVhbHNQb3MgPSBwYXJ0LmluZGV4T2YoJ109Jyk7XG4gICAgICAgIHZhciBwb3MgPSBicmFja2V0RXF1YWxzUG9zID09PSAtMSA/IHBhcnQuaW5kZXhPZignPScpIDogYnJhY2tldEVxdWFsc1BvcyArIDE7XG5cbiAgICAgICAgdmFyIGtleSwgdmFsO1xuICAgICAgICBpZiAocG9zID09PSAtMSkge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQsIGRlZmF1bHRzLmRlY29kZXIsIGNoYXJzZXQsICdrZXknKTtcbiAgICAgICAgICAgIHZhbCA9IG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nID8gbnVsbCA6ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQuc2xpY2UoMCwgcG9zKSwgZGVmYXVsdHMuZGVjb2RlciwgY2hhcnNldCwgJ2tleScpO1xuICAgICAgICAgICAgdmFsID0gdXRpbHMubWF5YmVNYXAoXG4gICAgICAgICAgICAgICAgcGFyc2VBcnJheVZhbHVlKHBhcnQuc2xpY2UocG9zICsgMSksIG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlbmNvZGVkVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmRlY29kZXIoZW5jb2RlZFZhbCwgZGVmYXVsdHMuZGVjb2RlciwgY2hhcnNldCwgJ3ZhbHVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWwgJiYgb3B0aW9ucy5pbnRlcnByZXROdW1lcmljRW50aXRpZXMgJiYgY2hhcnNldCA9PT0gJ2lzby04ODU5LTEnKSB7XG4gICAgICAgICAgICB2YWwgPSBpbnRlcnByZXROdW1lcmljRW50aXRpZXModmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJ0LmluZGV4T2YoJ1tdPScpID4gLTEpIHtcbiAgICAgICAgICAgIHZhbCA9IGlzQXJyYXkodmFsKSA/IFt2YWxdIDogdmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhcy5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB1dGlscy5jb21iaW5lKG9ialtrZXldLCB2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xufTtcblxudmFyIHBhcnNlT2JqZWN0ID0gZnVuY3Rpb24gKGNoYWluLCB2YWwsIG9wdGlvbnMsIHZhbHVlc1BhcnNlZCkge1xuICAgIHZhciBsZWFmID0gdmFsdWVzUGFyc2VkID8gdmFsIDogcGFyc2VBcnJheVZhbHVlKHZhbCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBpID0gY2hhaW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIG9iajtcbiAgICAgICAgdmFyIHJvb3QgPSBjaGFpbltpXTtcblxuICAgICAgICBpZiAocm9vdCA9PT0gJ1tdJyAmJiBvcHRpb25zLnBhcnNlQXJyYXlzKSB7XG4gICAgICAgICAgICBvYmogPSBbXS5jb25jYXQobGVhZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmogPSBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcbiAgICAgICAgICAgIHZhciBjbGVhblJvb3QgPSByb290LmNoYXJBdCgwKSA9PT0gJ1snICYmIHJvb3QuY2hhckF0KHJvb3QubGVuZ3RoIC0gMSkgPT09ICddJyA/IHJvb3Quc2xpY2UoMSwgLTEpIDogcm9vdDtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlSW50KGNsZWFuUm9vdCwgMTApO1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnBhcnNlQXJyYXlzICYmIGNsZWFuUm9vdCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBvYmogPSB7IDA6IGxlYWYgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgIWlzTmFOKGluZGV4KVxuICAgICAgICAgICAgICAgICYmIHJvb3QgIT09IGNsZWFuUm9vdFxuICAgICAgICAgICAgICAgICYmIFN0cmluZyhpbmRleCkgPT09IGNsZWFuUm9vdFxuICAgICAgICAgICAgICAgICYmIGluZGV4ID49IDBcbiAgICAgICAgICAgICAgICAmJiAob3B0aW9ucy5wYXJzZUFycmF5cyAmJiBpbmRleCA8PSBvcHRpb25zLmFycmF5TGltaXQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBvYmogPSBbXTtcbiAgICAgICAgICAgICAgICBvYmpbaW5kZXhdID0gbGVhZjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xlYW5Sb290ICE9PSAnX19wcm90b19fJykge1xuICAgICAgICAgICAgICAgIG9ialtjbGVhblJvb3RdID0gbGVhZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxlYWYgPSBvYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlYWY7XG59O1xuXG52YXIgcGFyc2VLZXlzID0gZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZ0tleXMoZ2l2ZW5LZXksIHZhbCwgb3B0aW9ucywgdmFsdWVzUGFyc2VkKSB7XG4gICAgaWYgKCFnaXZlbktleSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVHJhbnNmb3JtIGRvdCBub3RhdGlvbiB0byBicmFja2V0IG5vdGF0aW9uXG4gICAgdmFyIGtleSA9IG9wdGlvbnMuYWxsb3dEb3RzID8gZ2l2ZW5LZXkucmVwbGFjZSgvXFwuKFteLltdKykvZywgJ1skMV0nKSA6IGdpdmVuS2V5O1xuXG4gICAgLy8gVGhlIHJlZ2V4IGNodW5rc1xuXG4gICAgdmFyIGJyYWNrZXRzID0gLyhcXFtbXltcXF1dKl0pLztcbiAgICB2YXIgY2hpbGQgPSAvKFxcW1teW1xcXV0qXSkvZztcblxuICAgIC8vIEdldCB0aGUgcGFyZW50XG5cbiAgICB2YXIgc2VnbWVudCA9IG9wdGlvbnMuZGVwdGggPiAwICYmIGJyYWNrZXRzLmV4ZWMoa2V5KTtcbiAgICB2YXIgcGFyZW50ID0gc2VnbWVudCA/IGtleS5zbGljZSgwLCBzZWdtZW50LmluZGV4KSA6IGtleTtcblxuICAgIC8vIFN0YXNoIHRoZSBwYXJlbnQgaWYgaXQgZXhpc3RzXG5cbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgLy8gSWYgd2UgYXJlbid0IHVzaW5nIHBsYWluIG9iamVjdHMsIG9wdGlvbmFsbHkgcHJlZml4IGtleXMgdGhhdCB3b3VsZCBvdmVyd3JpdGUgb2JqZWN0IHByb3RvdHlwZSBwcm9wZXJ0aWVzXG4gICAgICAgIGlmICghb3B0aW9ucy5wbGFpbk9iamVjdHMgJiYgaGFzLmNhbGwoT2JqZWN0LnByb3RvdHlwZSwgcGFyZW50KSkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmFsbG93UHJvdG90eXBlcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGtleXMucHVzaChwYXJlbnQpO1xuICAgIH1cblxuICAgIC8vIExvb3AgdGhyb3VnaCBjaGlsZHJlbiBhcHBlbmRpbmcgdG8gdGhlIGFycmF5IHVudGlsIHdlIGhpdCBkZXB0aFxuXG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChvcHRpb25zLmRlcHRoID4gMCAmJiAoc2VnbWVudCA9IGNoaWxkLmV4ZWMoa2V5KSkgIT09IG51bGwgJiYgaSA8IG9wdGlvbnMuZGVwdGgpIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBpZiAoIW9wdGlvbnMucGxhaW5PYmplY3RzICYmIGhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHNlZ21lbnRbMV0uc2xpY2UoMSwgLTEpKSkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmFsbG93UHJvdG90eXBlcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBrZXlzLnB1c2goc2VnbWVudFsxXSk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUncyBhIHJlbWFpbmRlciwganVzdCBhZGQgd2hhdGV2ZXIgaXMgbGVmdFxuXG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgICAga2V5cy5wdXNoKCdbJyArIGtleS5zbGljZShzZWdtZW50LmluZGV4KSArICddJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlT2JqZWN0KGtleXMsIHZhbCwgb3B0aW9ucywgdmFsdWVzUGFyc2VkKTtcbn07XG5cbnZhciBub3JtYWxpemVQYXJzZU9wdGlvbnMgPSBmdW5jdGlvbiBub3JtYWxpemVQYXJzZU9wdGlvbnMob3B0cykge1xuICAgIGlmICghb3B0cykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMuZGVjb2RlciAhPT0gbnVsbCAmJiBvcHRzLmRlY29kZXIgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0cy5kZWNvZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0RlY29kZXIgaGFzIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRzLmNoYXJzZXQgIT09ICd1bmRlZmluZWQnICYmIG9wdHMuY2hhcnNldCAhPT0gJ3V0Zi04JyAmJiBvcHRzLmNoYXJzZXQgIT09ICdpc28tODg1OS0xJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgY2hhcnNldCBvcHRpb24gbXVzdCBiZSBlaXRoZXIgdXRmLTgsIGlzby04ODU5LTEsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICB2YXIgY2hhcnNldCA9IHR5cGVvZiBvcHRzLmNoYXJzZXQgPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdHMuY2hhcnNldCA6IG9wdHMuY2hhcnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFsbG93RG90czogdHlwZW9mIG9wdHMuYWxsb3dEb3RzID09PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRzLmFsbG93RG90cyA6ICEhb3B0cy5hbGxvd0RvdHMsXG4gICAgICAgIGFsbG93UHJvdG90eXBlczogdHlwZW9mIG9wdHMuYWxsb3dQcm90b3R5cGVzID09PSAnYm9vbGVhbicgPyBvcHRzLmFsbG93UHJvdG90eXBlcyA6IGRlZmF1bHRzLmFsbG93UHJvdG90eXBlcyxcbiAgICAgICAgYWxsb3dTcGFyc2U6IHR5cGVvZiBvcHRzLmFsbG93U3BhcnNlID09PSAnYm9vbGVhbicgPyBvcHRzLmFsbG93U3BhcnNlIDogZGVmYXVsdHMuYWxsb3dTcGFyc2UsXG4gICAgICAgIGFycmF5TGltaXQ6IHR5cGVvZiBvcHRzLmFycmF5TGltaXQgPT09ICdudW1iZXInID8gb3B0cy5hcnJheUxpbWl0IDogZGVmYXVsdHMuYXJyYXlMaW1pdCxcbiAgICAgICAgY2hhcnNldDogY2hhcnNldCxcbiAgICAgICAgY2hhcnNldFNlbnRpbmVsOiB0eXBlb2Ygb3B0cy5jaGFyc2V0U2VudGluZWwgPT09ICdib29sZWFuJyA/IG9wdHMuY2hhcnNldFNlbnRpbmVsIDogZGVmYXVsdHMuY2hhcnNldFNlbnRpbmVsLFxuICAgICAgICBjb21tYTogdHlwZW9mIG9wdHMuY29tbWEgPT09ICdib29sZWFuJyA/IG9wdHMuY29tbWEgOiBkZWZhdWx0cy5jb21tYSxcbiAgICAgICAgZGVjb2RlcjogdHlwZW9mIG9wdHMuZGVjb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdHMuZGVjb2RlciA6IGRlZmF1bHRzLmRlY29kZXIsXG4gICAgICAgIGRlbGltaXRlcjogdHlwZW9mIG9wdHMuZGVsaW1pdGVyID09PSAnc3RyaW5nJyB8fCB1dGlscy5pc1JlZ0V4cChvcHRzLmRlbGltaXRlcikgPyBvcHRzLmRlbGltaXRlciA6IGRlZmF1bHRzLmRlbGltaXRlcixcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWltcGxpY2l0LWNvZXJjaW9uLCBuby1leHRyYS1wYXJlbnNcbiAgICAgICAgZGVwdGg6ICh0eXBlb2Ygb3B0cy5kZXB0aCA9PT0gJ251bWJlcicgfHwgb3B0cy5kZXB0aCA9PT0gZmFsc2UpID8gK29wdHMuZGVwdGggOiBkZWZhdWx0cy5kZXB0aCxcbiAgICAgICAgaWdub3JlUXVlcnlQcmVmaXg6IG9wdHMuaWdub3JlUXVlcnlQcmVmaXggPT09IHRydWUsXG4gICAgICAgIGludGVycHJldE51bWVyaWNFbnRpdGllczogdHlwZW9mIG9wdHMuaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzID09PSAnYm9vbGVhbicgPyBvcHRzLmludGVycHJldE51bWVyaWNFbnRpdGllcyA6IGRlZmF1bHRzLmludGVycHJldE51bWVyaWNFbnRpdGllcyxcbiAgICAgICAgcGFyYW1ldGVyTGltaXQ6IHR5cGVvZiBvcHRzLnBhcmFtZXRlckxpbWl0ID09PSAnbnVtYmVyJyA/IG9wdHMucGFyYW1ldGVyTGltaXQgOiBkZWZhdWx0cy5wYXJhbWV0ZXJMaW1pdCxcbiAgICAgICAgcGFyc2VBcnJheXM6IG9wdHMucGFyc2VBcnJheXMgIT09IGZhbHNlLFxuICAgICAgICBwbGFpbk9iamVjdHM6IHR5cGVvZiBvcHRzLnBsYWluT2JqZWN0cyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5wbGFpbk9iamVjdHMgOiBkZWZhdWx0cy5wbGFpbk9iamVjdHMsXG4gICAgICAgIHN0cmljdE51bGxIYW5kbGluZzogdHlwZW9mIG9wdHMuc3RyaWN0TnVsbEhhbmRsaW5nID09PSAnYm9vbGVhbicgPyBvcHRzLnN0cmljdE51bGxIYW5kbGluZyA6IGRlZmF1bHRzLnN0cmljdE51bGxIYW5kbGluZ1xuICAgIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHIsIG9wdHMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IG5vcm1hbGl6ZVBhcnNlT3B0aW9ucyhvcHRzKTtcblxuICAgIGlmIChzdHIgPT09ICcnIHx8IHN0ciA9PT0gbnVsbCB8fCB0eXBlb2Ygc3RyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG4gICAgfVxuXG4gICAgdmFyIHRlbXBPYmogPSB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyA/IHBhcnNlVmFsdWVzKHN0ciwgb3B0aW9ucykgOiBzdHI7XG4gICAgdmFyIG9iaiA9IG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuXG4gICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBrZXlzIGFuZCBzZXR1cCB0aGUgbmV3IG9iamVjdFxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0ZW1wT2JqKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgIHZhciBuZXdPYmogPSBwYXJzZUtleXMoa2V5LCB0ZW1wT2JqW2tleV0sIG9wdGlvbnMsIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKTtcbiAgICAgICAgb2JqID0gdXRpbHMubWVyZ2Uob2JqLCBuZXdPYmosIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmFsbG93U3BhcnNlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHV0aWxzLmNvbXBhY3Qob2JqKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZm9ybWF0czogZm9ybWF0cyxcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlcbn07XG4iLCIvKipcbiAqICBiYXNlNjQudHNcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEJTRCAzLUNsYXVzZSBMaWNlbnNlLlxuICogICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICpcbiAqICBSZWZlcmVuY2VzOlxuICogICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjRcbiAqXG4gKiBAYXV0aG9yIERhbiBLb2dhaSAoaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpKVxuICovXG5jb25zdCB2ZXJzaW9uID0gJzMuNy4yJztcbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIGxvd2VyY2FzZSBgdmVyc2lvbmAuXG4gKi9cbmNvbnN0IFZFUlNJT04gPSB2ZXJzaW9uO1xuY29uc3QgX2hhc2F0b2IgPSB0eXBlb2YgYXRvYiA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IF9oYXNidG9hID0gdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbic7XG5jb25zdCBfaGFzQnVmZmVyID0gdHlwZW9mIEJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IF9URCA9IHR5cGVvZiBUZXh0RGVjb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBUZXh0RGVjb2RlcigpIDogdW5kZWZpbmVkO1xuY29uc3QgX1RFID0gdHlwZW9mIFRleHRFbmNvZGVyID09PSAnZnVuY3Rpb24nID8gbmV3IFRleHRFbmNvZGVyKCkgOiB1bmRlZmluZWQ7XG5jb25zdCBiNjRjaCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSc7XG5jb25zdCBiNjRjaHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiNjRjaCk7XG5jb25zdCBiNjR0YWIgPSAoKGEpID0+IHtcbiAgICBsZXQgdGFiID0ge307XG4gICAgYS5mb3JFYWNoKChjLCBpKSA9PiB0YWJbY10gPSBpKTtcbiAgICByZXR1cm4gdGFiO1xufSkoYjY0Y2hzKTtcbmNvbnN0IGI2NHJlID0gL14oPzpbQS1aYS16XFxkK1xcL117NH0pKj8oPzpbQS1aYS16XFxkK1xcL117Mn0oPzo9PSk/fFtBLVphLXpcXGQrXFwvXXszfT0/KT8kLztcbmNvbnN0IF9mcm9tQ0MgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmJpbmQoU3RyaW5nKTtcbmNvbnN0IF9VOEFmcm9tID0gdHlwZW9mIFVpbnQ4QXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gVWludDhBcnJheS5mcm9tLmJpbmQoVWludDhBcnJheSlcbiAgICA6IChpdCwgZm4gPSAoeCkgPT4geCkgPT4gbmV3IFVpbnQ4QXJyYXkoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaXQsIDApLm1hcChmbikpO1xuY29uc3QgX21rVXJpU2FmZSA9IChzcmMpID0+IHNyY1xuICAgIC5yZXBsYWNlKC89L2csICcnKS5yZXBsYWNlKC9bK1xcL10vZywgKG0wKSA9PiBtMCA9PSAnKycgPyAnLScgOiAnXycpO1xuY29uc3QgX3RpZHlCNjQgPSAocykgPT4gcy5yZXBsYWNlKC9bXkEtWmEtejAtOVxcK1xcL10vZywgJycpO1xuLyoqXG4gKiBwb2x5ZmlsbCB2ZXJzaW9uIG9mIGBidG9hYFxuICovXG5jb25zdCBidG9hUG9seWZpbGwgPSAoYmluKSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coJ3BvbHlmaWxsZWQnKTtcbiAgICBsZXQgdTMyLCBjMCwgYzEsIGMyLCBhc2MgPSAnJztcbiAgICBjb25zdCBwYWQgPSBiaW4ubGVuZ3RoICUgMztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbi5sZW5ndGg7KSB7XG4gICAgICAgIGlmICgoYzAgPSBiaW4uY2hhckNvZGVBdChpKyspKSA+IDI1NSB8fFxuICAgICAgICAgICAgKGMxID0gYmluLmNoYXJDb2RlQXQoaSsrKSkgPiAyNTUgfHxcbiAgICAgICAgICAgIChjMiA9IGJpbi5jaGFyQ29kZUF0KGkrKykpID4gMjU1KVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBjaGFyYWN0ZXIgZm91bmQnKTtcbiAgICAgICAgdTMyID0gKGMwIDw8IDE2KSB8IChjMSA8PCA4KSB8IGMyO1xuICAgICAgICBhc2MgKz0gYjY0Y2hzW3UzMiA+PiAxOCAmIDYzXVxuICAgICAgICAgICAgKyBiNjRjaHNbdTMyID4+IDEyICYgNjNdXG4gICAgICAgICAgICArIGI2NGNoc1t1MzIgPj4gNiAmIDYzXVxuICAgICAgICAgICAgKyBiNjRjaHNbdTMyICYgNjNdO1xuICAgIH1cbiAgICByZXR1cm4gcGFkID8gYXNjLnNsaWNlKDAsIHBhZCAtIDMpICsgXCI9PT1cIi5zdWJzdHJpbmcocGFkKSA6IGFzYztcbn07XG4vKipcbiAqIGRvZXMgd2hhdCBgd2luZG93LmJ0b2FgIG9mIHdlYiBicm93c2VycyBkby5cbiAqIEBwYXJhbSB7U3RyaW5nfSBiaW4gYmluYXJ5IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgc3RyaW5nXG4gKi9cbmNvbnN0IF9idG9hID0gX2hhc2J0b2EgPyAoYmluKSA9PiBidG9hKGJpbilcbiAgICA6IF9oYXNCdWZmZXIgPyAoYmluKSA9PiBCdWZmZXIuZnJvbShiaW4sICdiaW5hcnknKS50b1N0cmluZygnYmFzZTY0JylcbiAgICAgICAgOiBidG9hUG9seWZpbGw7XG5jb25zdCBfZnJvbVVpbnQ4QXJyYXkgPSBfaGFzQnVmZmVyXG4gICAgPyAodThhKSA9PiBCdWZmZXIuZnJvbSh1OGEpLnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgIDogKHU4YSkgPT4ge1xuICAgICAgICAvLyBjZi4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTI3MTAwMDEvaG93LXRvLWNvbnZlcnQtdWludDgtYXJyYXktdG8tYmFzZTY0LWVuY29kZWQtc3RyaW5nLzEyNzEzMzI2IzEyNzEzMzI2XG4gICAgICAgIGNvbnN0IG1heGFyZ3MgPSAweDEwMDA7XG4gICAgICAgIGxldCBzdHJzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gdThhLmxlbmd0aDsgaSA8IGw7IGkgKz0gbWF4YXJncykge1xuICAgICAgICAgICAgc3Rycy5wdXNoKF9mcm9tQ0MuYXBwbHkobnVsbCwgdThhLnN1YmFycmF5KGksIGkgKyBtYXhhcmdzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfYnRvYShzdHJzLmpvaW4oJycpKTtcbiAgICB9O1xuLyoqXG4gKiBjb252ZXJ0cyBhIFVpbnQ4QXJyYXkgdG8gYSBCYXNlNjQgc3RyaW5nLlxuICogQHBhcmFtIHtib29sZWFufSBbdXJsc2FmZV0gVVJMLWFuZC1maWxlbmFtZS1zYWZlIGEgbGEgUkZDNDY0OCDCpzVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBzdHJpbmdcbiAqL1xuY29uc3QgZnJvbVVpbnQ4QXJyYXkgPSAodThhLCB1cmxzYWZlID0gZmFsc2UpID0+IHVybHNhZmUgPyBfbWtVcmlTYWZlKF9mcm9tVWludDhBcnJheSh1OGEpKSA6IF9mcm9tVWludDhBcnJheSh1OGEpO1xuLy8gVGhpcyB0cmljayBpcyBmb3VuZCBicm9rZW4gaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWJhc2U2NC9pc3N1ZXMvMTMwXG4vLyBjb25zdCB1dG9iID0gKHNyYzogc3RyaW5nKSA9PiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3JjKSk7XG4vLyByZXZlcnRpbmcgZ29vZCBvbGQgZmF0aW9uZWQgcmVnZXhwXG5jb25zdCBjYl91dG9iID0gKGMpID0+IHtcbiAgICBpZiAoYy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHZhciBjYyA9IGMuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgcmV0dXJuIGNjIDwgMHg4MCA/IGNcbiAgICAgICAgICAgIDogY2MgPCAweDgwMCA/IChfZnJvbUNDKDB4YzAgfCAoY2MgPj4+IDYpKVxuICAgICAgICAgICAgICAgICsgX2Zyb21DQygweDgwIHwgKGNjICYgMHgzZikpKVxuICAgICAgICAgICAgICAgIDogKF9mcm9tQ0MoMHhlMCB8ICgoY2MgPj4+IDEyKSAmIDB4MGYpKVxuICAgICAgICAgICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8ICgoY2MgPj4+IDYpICYgMHgzZikpXG4gICAgICAgICAgICAgICAgICAgICsgX2Zyb21DQygweDgwIHwgKGNjICYgMHgzZikpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBjYyA9IDB4MTAwMDBcbiAgICAgICAgICAgICsgKGMuY2hhckNvZGVBdCgwKSAtIDB4RDgwMCkgKiAweDQwMFxuICAgICAgICAgICAgKyAoYy5jaGFyQ29kZUF0KDEpIC0gMHhEQzAwKTtcbiAgICAgICAgcmV0dXJuIChfZnJvbUNDKDB4ZjAgfCAoKGNjID4+PiAxOCkgJiAweDA3KSlcbiAgICAgICAgICAgICsgX2Zyb21DQygweDgwIHwgKChjYyA+Pj4gMTIpICYgMHgzZikpXG4gICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8ICgoY2MgPj4+IDYpICYgMHgzZikpXG4gICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8IChjYyAmIDB4M2YpKSk7XG4gICAgfVxufTtcbmNvbnN0IHJlX3V0b2IgPSAvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGRl18W15cXHgwMC1cXHg3Rl0vZztcbi8qKlxuICogQGRlcHJlY2F0ZWQgc2hvdWxkIGhhdmUgYmVlbiBpbnRlcm5hbCB1c2Ugb25seS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzcmMgVVRGLTggc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBVVEYtMTYgc3RyaW5nXG4gKi9cbmNvbnN0IHV0b2IgPSAodSkgPT4gdS5yZXBsYWNlKHJlX3V0b2IsIGNiX3V0b2IpO1xuLy9cbmNvbnN0IF9lbmNvZGUgPSBfaGFzQnVmZmVyXG4gICAgPyAocykgPT4gQnVmZmVyLmZyb20ocywgJ3V0ZjgnKS50b1N0cmluZygnYmFzZTY0JylcbiAgICA6IF9URVxuICAgICAgICA/IChzKSA9PiBfZnJvbVVpbnQ4QXJyYXkoX1RFLmVuY29kZShzKSlcbiAgICAgICAgOiAocykgPT4gX2J0b2EodXRvYihzKSk7XG4vKipcbiAqIGNvbnZlcnRzIGEgVVRGLTgtZW5jb2RlZCBzdHJpbmcgdG8gYSBCYXNlNjQgc3RyaW5nLlxuICogQHBhcmFtIHtib29sZWFufSBbdXJsc2FmZV0gaWYgYHRydWVgIG1ha2UgdGhlIHJlc3VsdCBVUkwtc2FmZVxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0IHN0cmluZ1xuICovXG5jb25zdCBlbmNvZGUgPSAoc3JjLCB1cmxzYWZlID0gZmFsc2UpID0+IHVybHNhZmVcbiAgICA/IF9ta1VyaVNhZmUoX2VuY29kZShzcmMpKVxuICAgIDogX2VuY29kZShzcmMpO1xuLyoqXG4gKiBjb252ZXJ0cyBhIFVURi04LWVuY29kZWQgc3RyaW5nIHRvIFVSTC1zYWZlIEJhc2U2NCBSRkM0NjQ4IMKnNS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBzdHJpbmdcbiAqL1xuY29uc3QgZW5jb2RlVVJJID0gKHNyYykgPT4gZW5jb2RlKHNyYywgdHJ1ZSk7XG4vLyBUaGlzIHRyaWNrIGlzIGZvdW5kIGJyb2tlbiBodHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtYmFzZTY0L2lzc3Vlcy8xMzBcbi8vIGNvbnN0IGJ0b3UgPSAoc3JjOiBzdHJpbmcpID0+IGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoc3JjKSk7XG4vLyByZXZlcnRpbmcgZ29vZCBvbGQgZmF0aW9uZWQgcmVnZXhwXG5jb25zdCByZV9idG91ID0gL1tcXHhDMC1cXHhERl1bXFx4ODAtXFx4QkZdfFtcXHhFMC1cXHhFRl1bXFx4ODAtXFx4QkZdezJ9fFtcXHhGMC1cXHhGN11bXFx4ODAtXFx4QkZdezN9L2c7XG5jb25zdCBjYl9idG91ID0gKGNjY2MpID0+IHtcbiAgICBzd2l0Y2ggKGNjY2MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHZhciBjcCA9ICgoMHgwNyAmIGNjY2MuY2hhckNvZGVBdCgwKSkgPDwgMTgpXG4gICAgICAgICAgICAgICAgfCAoKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMSkpIDw8IDEyKVxuICAgICAgICAgICAgICAgIHwgKCgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDIpKSA8PCA2KVxuICAgICAgICAgICAgICAgIHwgKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMykpLCBvZmZzZXQgPSBjcCAtIDB4MTAwMDA7XG4gICAgICAgICAgICByZXR1cm4gKF9mcm9tQ0MoKG9mZnNldCA+Pj4gMTApICsgMHhEODAwKVxuICAgICAgICAgICAgICAgICsgX2Zyb21DQygob2Zmc2V0ICYgMHgzRkYpICsgMHhEQzAwKSk7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiBfZnJvbUNDKCgoMHgwZiAmIGNjY2MuY2hhckNvZGVBdCgwKSkgPDwgMTIpXG4gICAgICAgICAgICAgICAgfCAoKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMSkpIDw8IDYpXG4gICAgICAgICAgICAgICAgfCAoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgyKSkpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIF9mcm9tQ0MoKCgweDFmICYgY2NjYy5jaGFyQ29kZUF0KDApKSA8PCA2KVxuICAgICAgICAgICAgICAgIHwgKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMSkpKTtcbiAgICB9XG59O1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBzaG91bGQgaGF2ZSBiZWVuIGludGVybmFsIHVzZSBvbmx5LlxuICogQHBhcmFtIHtzdHJpbmd9IHNyYyBVVEYtMTYgc3RyaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBVVEYtOCBzdHJpbmdcbiAqL1xuY29uc3QgYnRvdSA9IChiKSA9PiBiLnJlcGxhY2UocmVfYnRvdSwgY2JfYnRvdSk7XG4vKipcbiAqIHBvbHlmaWxsIHZlcnNpb24gb2YgYGF0b2JgXG4gKi9cbmNvbnN0IGF0b2JQb2x5ZmlsbCA9IChhc2MpID0+IHtcbiAgICAvLyBjb25zb2xlLmxvZygncG9seWZpbGxlZCcpO1xuICAgIGFzYyA9IGFzYy5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICBpZiAoIWI2NHJlLnRlc3QoYXNjKSlcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWFsZm9ybWVkIGJhc2U2NC4nKTtcbiAgICBhc2MgKz0gJz09Jy5zbGljZSgyIC0gKGFzYy5sZW5ndGggJiAzKSk7XG4gICAgbGV0IHUyNCwgYmluID0gJycsIHIxLCByMjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzYy5sZW5ndGg7KSB7XG4gICAgICAgIHUyNCA9IGI2NHRhYlthc2MuY2hhckF0KGkrKyldIDw8IDE4XG4gICAgICAgICAgICB8IGI2NHRhYlthc2MuY2hhckF0KGkrKyldIDw8IDEyXG4gICAgICAgICAgICB8IChyMSA9IGI2NHRhYlthc2MuY2hhckF0KGkrKyldKSA8PCA2XG4gICAgICAgICAgICB8IChyMiA9IGI2NHRhYlthc2MuY2hhckF0KGkrKyldKTtcbiAgICAgICAgYmluICs9IHIxID09PSA2NCA/IF9mcm9tQ0ModTI0ID4+IDE2ICYgMjU1KVxuICAgICAgICAgICAgOiByMiA9PT0gNjQgPyBfZnJvbUNDKHUyNCA+PiAxNiAmIDI1NSwgdTI0ID4+IDggJiAyNTUpXG4gICAgICAgICAgICAgICAgOiBfZnJvbUNDKHUyNCA+PiAxNiAmIDI1NSwgdTI0ID4+IDggJiAyNTUsIHUyNCAmIDI1NSk7XG4gICAgfVxuICAgIHJldHVybiBiaW47XG59O1xuLyoqXG4gKiBkb2VzIHdoYXQgYHdpbmRvdy5hdG9iYCBvZiB3ZWIgYnJvd3NlcnMgZG8uXG4gKiBAcGFyYW0ge1N0cmluZ30gYXNjIEJhc2U2NC1lbmNvZGVkIHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gYmluYXJ5IHN0cmluZ1xuICovXG5jb25zdCBfYXRvYiA9IF9oYXNhdG9iID8gKGFzYykgPT4gYXRvYihfdGlkeUI2NChhc2MpKVxuICAgIDogX2hhc0J1ZmZlciA/IChhc2MpID0+IEJ1ZmZlci5mcm9tKGFzYywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdiaW5hcnknKVxuICAgICAgICA6IGF0b2JQb2x5ZmlsbDtcbi8vXG5jb25zdCBfdG9VaW50OEFycmF5ID0gX2hhc0J1ZmZlclxuICAgID8gKGEpID0+IF9VOEFmcm9tKEJ1ZmZlci5mcm9tKGEsICdiYXNlNjQnKSlcbiAgICA6IChhKSA9PiBfVThBZnJvbShfYXRvYihhKSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpO1xuLyoqXG4gKiBjb252ZXJ0cyBhIEJhc2U2NCBzdHJpbmcgdG8gYSBVaW50OEFycmF5LlxuICovXG5jb25zdCB0b1VpbnQ4QXJyYXkgPSAoYSkgPT4gX3RvVWludDhBcnJheShfdW5VUkkoYSkpO1xuLy9cbmNvbnN0IF9kZWNvZGUgPSBfaGFzQnVmZmVyXG4gICAgPyAoYSkgPT4gQnVmZmVyLmZyb20oYSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4JylcbiAgICA6IF9URFxuICAgICAgICA/IChhKSA9PiBfVEQuZGVjb2RlKF90b1VpbnQ4QXJyYXkoYSkpXG4gICAgICAgIDogKGEpID0+IGJ0b3UoX2F0b2IoYSkpO1xuY29uc3QgX3VuVVJJID0gKGEpID0+IF90aWR5QjY0KGEucmVwbGFjZSgvWy1fXS9nLCAobTApID0+IG0wID09ICctJyA/ICcrJyA6ICcvJykpO1xuLyoqXG4gKiBjb252ZXJ0cyBhIEJhc2U2NCBzdHJpbmcgdG8gYSBVVEYtOCBzdHJpbmcuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3JjIEJhc2U2NCBzdHJpbmcuICBCb3RoIG5vcm1hbCBhbmQgVVJMLXNhZmUgYXJlIHN1cHBvcnRlZFxuICogQHJldHVybnMge3N0cmluZ30gVVRGLTggc3RyaW5nXG4gKi9cbmNvbnN0IGRlY29kZSA9IChzcmMpID0+IF9kZWNvZGUoX3VuVVJJKHNyYykpO1xuLyoqXG4gKiBjaGVjayBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgQmFzZTY0IHN0cmluZ1xuICogQHBhcmFtIHtTdHJpbmd9IHNyYyBhIHZhbHVlIHRvIGNoZWNrXG4gICovXG5jb25zdCBpc1ZhbGlkID0gKHNyYykgPT4ge1xuICAgIGlmICh0eXBlb2Ygc3JjICE9PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHMgPSBzcmMucmVwbGFjZSgvXFxzKy9nLCAnJykucmVwbGFjZSgvPXswLDJ9JC8sICcnKTtcbiAgICByZXR1cm4gIS9bXlxcczAtOWEtekEtWlxcKy9dLy50ZXN0KHMpIHx8ICEvW15cXHMwLTlhLXpBLVpcXC1fXS8udGVzdChzKTtcbn07XG4vL1xuY29uc3QgX25vRW51bSA9ICh2KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHYsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfTtcbn07XG4vKipcbiAqIGV4dGVuZCBTdHJpbmcucHJvdG90eXBlIHdpdGggcmVsZXZhbnQgbWV0aG9kc1xuICovXG5jb25zdCBleHRlbmRTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgX2FkZCA9IChuYW1lLCBib2R5KSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgbmFtZSwgX25vRW51bShib2R5KSk7XG4gICAgX2FkZCgnZnJvbUJhc2U2NCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRlY29kZSh0aGlzKTsgfSk7XG4gICAgX2FkZCgndG9CYXNlNjQnLCBmdW5jdGlvbiAodXJsc2FmZSkgeyByZXR1cm4gZW5jb2RlKHRoaXMsIHVybHNhZmUpOyB9KTtcbiAgICBfYWRkKCd0b0Jhc2U2NFVSSScsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVuY29kZSh0aGlzLCB0cnVlKTsgfSk7XG4gICAgX2FkZCgndG9CYXNlNjRVUkwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBlbmNvZGUodGhpcywgdHJ1ZSk7IH0pO1xuICAgIF9hZGQoJ3RvVWludDhBcnJheScsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvVWludDhBcnJheSh0aGlzKTsgfSk7XG59O1xuLyoqXG4gKiBleHRlbmQgVWludDhBcnJheS5wcm90b3R5cGUgd2l0aCByZWxldmFudCBtZXRob2RzXG4gKi9cbmNvbnN0IGV4dGVuZFVpbnQ4QXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgX2FkZCA9IChuYW1lLCBib2R5KSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkoVWludDhBcnJheS5wcm90b3R5cGUsIG5hbWUsIF9ub0VudW0oYm9keSkpO1xuICAgIF9hZGQoJ3RvQmFzZTY0JywgZnVuY3Rpb24gKHVybHNhZmUpIHsgcmV0dXJuIGZyb21VaW50OEFycmF5KHRoaXMsIHVybHNhZmUpOyB9KTtcbiAgICBfYWRkKCd0b0Jhc2U2NFVSSScsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZyb21VaW50OEFycmF5KHRoaXMsIHRydWUpOyB9KTtcbiAgICBfYWRkKCd0b0Jhc2U2NFVSTCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZyb21VaW50OEFycmF5KHRoaXMsIHRydWUpOyB9KTtcbn07XG4vKipcbiAqIGV4dGVuZCBCdWlsdGluIHByb3RvdHlwZXMgd2l0aCByZWxldmFudCBtZXRob2RzXG4gKi9cbmNvbnN0IGV4dGVuZEJ1aWx0aW5zID0gKCkgPT4ge1xuICAgIGV4dGVuZFN0cmluZygpO1xuICAgIGV4dGVuZFVpbnQ4QXJyYXkoKTtcbn07XG5jb25zdCBnQmFzZTY0ID0ge1xuICAgIHZlcnNpb246IHZlcnNpb24sXG4gICAgVkVSU0lPTjogVkVSU0lPTixcbiAgICBhdG9iOiBfYXRvYixcbiAgICBhdG9iUG9seWZpbGw6IGF0b2JQb2x5ZmlsbCxcbiAgICBidG9hOiBfYnRvYSxcbiAgICBidG9hUG9seWZpbGw6IGJ0b2FQb2x5ZmlsbCxcbiAgICBmcm9tQmFzZTY0OiBkZWNvZGUsXG4gICAgdG9CYXNlNjQ6IGVuY29kZSxcbiAgICBlbmNvZGU6IGVuY29kZSxcbiAgICBlbmNvZGVVUkk6IGVuY29kZVVSSSxcbiAgICBlbmNvZGVVUkw6IGVuY29kZVVSSSxcbiAgICB1dG9iOiB1dG9iLFxuICAgIGJ0b3U6IGJ0b3UsXG4gICAgZGVjb2RlOiBkZWNvZGUsXG4gICAgaXNWYWxpZDogaXNWYWxpZCxcbiAgICBmcm9tVWludDhBcnJheTogZnJvbVVpbnQ4QXJyYXksXG4gICAgdG9VaW50OEFycmF5OiB0b1VpbnQ4QXJyYXksXG4gICAgZXh0ZW5kU3RyaW5nOiBleHRlbmRTdHJpbmcsXG4gICAgZXh0ZW5kVWludDhBcnJheTogZXh0ZW5kVWludDhBcnJheSxcbiAgICBleHRlbmRCdWlsdGluczogZXh0ZW5kQnVpbHRpbnMsXG59O1xuLy8gbWFrZWNqczpDVVQgLy9cbmV4cG9ydCB7IHZlcnNpb24gfTtcbmV4cG9ydCB7IFZFUlNJT04gfTtcbmV4cG9ydCB7IF9hdG9iIGFzIGF0b2IgfTtcbmV4cG9ydCB7IGF0b2JQb2x5ZmlsbCB9O1xuZXhwb3J0IHsgX2J0b2EgYXMgYnRvYSB9O1xuZXhwb3J0IHsgYnRvYVBvbHlmaWxsIH07XG5leHBvcnQgeyBkZWNvZGUgYXMgZnJvbUJhc2U2NCB9O1xuZXhwb3J0IHsgZW5jb2RlIGFzIHRvQmFzZTY0IH07XG5leHBvcnQgeyB1dG9iIH07XG5leHBvcnQgeyBlbmNvZGUgfTtcbmV4cG9ydCB7IGVuY29kZVVSSSB9O1xuZXhwb3J0IHsgZW5jb2RlVVJJIGFzIGVuY29kZVVSTCB9O1xuZXhwb3J0IHsgYnRvdSB9O1xuZXhwb3J0IHsgZGVjb2RlIH07XG5leHBvcnQgeyBpc1ZhbGlkIH07XG5leHBvcnQgeyBmcm9tVWludDhBcnJheSB9O1xuZXhwb3J0IHsgdG9VaW50OEFycmF5IH07XG5leHBvcnQgeyBleHRlbmRTdHJpbmcgfTtcbmV4cG9ydCB7IGV4dGVuZFVpbnQ4QXJyYXkgfTtcbmV4cG9ydCB7IGV4dGVuZEJ1aWx0aW5zIH07XG4vLyBhbmQgZmluYWxseSxcbmV4cG9ydCB7IGdCYXNlNjQgYXMgQmFzZTY0IH07XG4iLCJpbXBvcnQgRm9ybURhdGEgZnJvbSBcImZvcm0tZGF0YVwiO1xuaW1wb3J0IHFzIGZyb20gXCJxc1wiO1xuaW1wb3J0IHsgQmFzZTY0IH0gZnJvbSBcImpzLWJhc2U2NFwiO1xuXG5pbXBvcnQge1xuICBSZXF1ZXN0Q29uZmlnQnVpbGRlcixcbiAgUmVxdWVzdENvbmZpZyxcbiAgSHR0cE1ldGhvZCxcbiAgUGFyYW1zLFxuICBQcm94eUNvbmZpZyxcbn0gZnJvbSBcIi4vaHR0cC9IdHRwQ2xpZW50SW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBCYXNpY0F1dGgsIERpc2NyaW1pbmF0ZWRBdXRoIH0gZnJvbSBcIi4vdHlwZXMvYXV0aFwiO1xuaW1wb3J0IHsgcGxhdGZvcm1EZXBzIH0gZnJvbSBcIi4vcGxhdGZvcm0vXCI7XG5cbnR5cGUgRGF0YSA9IFBhcmFtcyB8IEZvcm1EYXRhO1xuXG50eXBlIEtpbnRvbmVBdXRoSGVhZGVyID1cbiAgfCB7XG4gICAgICBcIlgtQ3lib3p1LUF1dGhvcml6YXRpb25cIjogc3RyaW5nO1xuICAgICAgQXV0aG9yaXphdGlvbj86IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgXCJYLUN5Ym96dS1BUEktVG9rZW5cIjogc3RyaW5nO1xuICAgICAgQXV0aG9yaXphdGlvbj86IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgXCJYLVJlcXVlc3RlZC1XaXRoXCI6IFwiWE1MSHR0cFJlcXVlc3RcIjtcbiAgICAgIEF1dGhvcml6YXRpb24/OiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIEF1dGhvcml6YXRpb246IHN0cmluZztcbiAgICB9O1xuXG5jb25zdCBUSFJFU0hPTERfQVZPSURfUkVRVUVTVF9VUkxfVE9PX0xBUkdFID0gNDA5NjtcblxuZXhwb3J0IGNsYXNzIEtpbnRvbmVSZXF1ZXN0Q29uZmlnQnVpbGRlciBpbXBsZW1lbnRzIFJlcXVlc3RDb25maWdCdWlsZGVyIHtcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgaGVhZGVyczogS2ludG9uZUF1dGhIZWFkZXI7XG4gIHByaXZhdGUgYXV0aDogRGlzY3JpbWluYXRlZEF1dGg7XG4gIHByaXZhdGUgY2xpZW50Q2VydEF1dGg/OlxuICAgIHwge1xuICAgICAgICBwZng6IEJ1ZmZlcjtcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGZ4RmlsZVBhdGg6IHN0cmluZztcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgIH07XG4gIHByaXZhdGUgcHJveHk/OiBQcm94eUNvbmZpZztcbiAgcHJpdmF0ZSByZXF1ZXN0VG9rZW46IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGJhc2VVcmwsXG4gICAgYXV0aCxcbiAgICBiYXNpY0F1dGgsXG4gICAgY2xpZW50Q2VydEF1dGgsXG4gICAgcHJveHksXG4gICAgdXNlckFnZW50LFxuICB9OiB7XG4gICAgYmFzZVVybDogc3RyaW5nO1xuICAgIGF1dGg6IERpc2NyaW1pbmF0ZWRBdXRoO1xuICAgIGJhc2ljQXV0aD86IEJhc2ljQXV0aDtcbiAgICBjbGllbnRDZXJ0QXV0aD86XG4gICAgICB8IHtcbiAgICAgICAgICBwZng6IEJ1ZmZlcjtcbiAgICAgICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBwZnhGaWxlUGF0aDogc3RyaW5nO1xuICAgICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICAgIH07XG4gICAgcHJveHk/OiBQcm94eUNvbmZpZztcbiAgICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICAgIHRoaXMuYXV0aCA9IGF1dGg7XG4gICAgdGhpcy5oZWFkZXJzID0gdGhpcy5idWlsZEhlYWRlcnMoeyBiYXNpY0F1dGgsIHVzZXJBZ2VudCB9KTtcbiAgICB0aGlzLmNsaWVudENlcnRBdXRoID0gY2xpZW50Q2VydEF1dGg7XG4gICAgdGhpcy5wcm94eSA9IHByb3h5O1xuICAgIHRoaXMucmVxdWVzdFRva2VuID0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBidWlsZChcbiAgICBtZXRob2Q6IEh0dHBNZXRob2QsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHBhcmFtczogRGF0YSxcbiAgICBvcHRpb25zPzogeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9XG4gICkge1xuICAgIGNvbnN0IHJlcXVlc3RDb25maWc6IFJlcXVlc3RDb25maWcgPSB7XG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICB1cmw6IGAke3RoaXMuYmFzZVVybH0ke3BhdGh9YCxcbiAgICAgIC4uLihvcHRpb25zID8gb3B0aW9ucyA6IHt9KSxcbiAgICAgIC4uLnBsYXRmb3JtRGVwcy5idWlsZFBsYXRmb3JtRGVwZW5kZW50Q29uZmlnKHtcbiAgICAgICAgY2xpZW50Q2VydEF1dGg6IHRoaXMuY2xpZW50Q2VydEF1dGgsXG4gICAgICB9KSxcbiAgICAgIHByb3h5OiB0aGlzLnByb3h5LFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSBcImdldFwiOiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RVcmwgPSB0aGlzLmJ1aWxkUmVxdWVzdFVybChwYXRoLCBwYXJhbXMpO1xuICAgICAgICBpZiAocmVxdWVzdFVybC5sZW5ndGggPiBUSFJFU0hPTERfQVZPSURfUkVRVUVTVF9VUkxfVE9PX0xBUkdFKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXG4gICAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiIGFzIGNvbnN0LFxuICAgICAgICAgICAgaGVhZGVyczogeyAuLi50aGlzLmhlYWRlcnMsIFwiWC1IVFRQLU1ldGhvZC1PdmVycmlkZVwiOiBcIkdFVFwiIH0sXG4gICAgICAgICAgICBkYXRhOiBhd2FpdCB0aGlzLmJ1aWxkRGF0YShwYXJhbXMpLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxuICAgICAgICAgIHVybDogcmVxdWVzdFVybCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJwb3N0XCI6IHtcbiAgICAgICAgaWYgKHBhcmFtcyBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBhd2FpdCB0aGlzLmJ1aWxkRGF0YShwYXJhbXMpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLy8gTk9URTogZm9ybURhdGEuZ2V0SGVhZGVycyBkb2VzIG5vdCBleGlzdCBpbiBhIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gICAgICAgICAgICAgIHR5cGVvZiBmb3JtRGF0YS5nZXRIZWFkZXJzID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICA/IHsgLi4udGhpcy5oZWFkZXJzLCAuLi5mb3JtRGF0YS5nZXRIZWFkZXJzKCkgfVxuICAgICAgICAgICAgICAgIDogdGhpcy5oZWFkZXJzLFxuICAgICAgICAgICAgZGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXG4gICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5idWlsZERhdGEocGFyYW1zKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJwdXRcIjoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXG4gICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5idWlsZERhdGEocGFyYW1zKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJkZWxldGVcIjoge1xuICAgICAgICBjb25zdCByZXF1ZXN0VXJsID0gdGhpcy5idWlsZFJlcXVlc3RVcmwoXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBhd2FpdCB0aGlzLmJ1aWxkRGF0YShwYXJhbXMpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcbiAgICAgICAgICB1cmw6IHJlcXVlc3RVcmwsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHttZXRob2R9IG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJlcXVlc3RVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IERhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmJhc2VVcmx9JHtwYXRofT8ke3FzLnN0cmluZ2lmeShwYXJhbXMpfWA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkRGF0YTxUIGV4dGVuZHMgRGF0YT4ocGFyYW1zOiBUKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMuYXV0aC50eXBlID09PSBcInNlc3Npb25cIikge1xuICAgICAgY29uc3QgcmVxdWVzdFRva2VuID0gYXdhaXQgdGhpcy5nZXRSZXF1ZXN0VG9rZW4oKTtcbiAgICAgIGlmIChwYXJhbXMgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICBwYXJhbXMuYXBwZW5kKFwiX19SRVFVRVNUX1RPS0VOX19cIiwgcmVxdWVzdFRva2VuKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fUkVRVUVTVF9UT0tFTl9fOiByZXF1ZXN0VG9rZW4sXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkSGVhZGVycyhwYXJhbXM6IHtcbiAgICBiYXNpY0F1dGg/OiBCYXNpY0F1dGg7XG4gICAgdXNlckFnZW50Pzogc3RyaW5nO1xuICB9KTogS2ludG9uZUF1dGhIZWFkZXIge1xuICAgIGNvbnN0IHsgYmFzaWNBdXRoLCB1c2VyQWdlbnQgfSA9IHBhcmFtcztcbiAgICBjb25zdCBiYXNpY0F1dGhIZWFkZXJzID0gYmFzaWNBdXRoXG4gICAgICA/IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmFzaWMgJHtCYXNlNjQuZW5jb2RlKFxuICAgICAgICAgICAgYCR7YmFzaWNBdXRoLnVzZXJuYW1lfToke2Jhc2ljQXV0aC5wYXNzd29yZH1gXG4gICAgICAgICAgKX1gLFxuICAgICAgICB9XG4gICAgICA6IHt9O1xuICAgIGNvbnN0IHBsYXRmb3JtRGVwc0hlYWRlcnMgPSBwbGF0Zm9ybURlcHMuYnVpbGRIZWFkZXJzKHsgdXNlckFnZW50IH0pO1xuXG4gICAgY29uc3QgY29tbW9uSGVhZGVycyA9IHsgLi4ucGxhdGZvcm1EZXBzSGVhZGVycywgLi4uYmFzaWNBdXRoSGVhZGVycyB9O1xuXG4gICAgc3dpdGNoICh0aGlzLmF1dGgudHlwZSkge1xuICAgICAgY2FzZSBcInBhc3N3b3JkXCI6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jb21tb25IZWFkZXJzLFxuICAgICAgICAgIFwiWC1DeWJvenUtQXV0aG9yaXphdGlvblwiOiBCYXNlNjQuZW5jb2RlKFxuICAgICAgICAgICAgYCR7dGhpcy5hdXRoLnVzZXJuYW1lfToke3RoaXMuYXV0aC5wYXNzd29yZH1gXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJhcGlUb2tlblwiOiB7XG4gICAgICAgIGNvbnN0IGFwaVRva2VuID0gdGhpcy5hdXRoLmFwaVRva2VuO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcGlUb2tlbikpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5jb21tb25IZWFkZXJzLCBcIlgtQ3lib3p1LUFQSS1Ub2tlblwiOiBhcGlUb2tlbi5qb2luKFwiLFwiKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLmNvbW1vbkhlYWRlcnMsIFwiWC1DeWJvenUtQVBJLVRva2VuXCI6IGFwaVRva2VuIH07XG4gICAgICB9XG4gICAgICBjYXNlIFwib0F1dGhUb2tlblwiOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29tbW9uSGVhZGVycyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hdXRoLm9BdXRoVG9rZW59YCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uY29tbW9uSGVhZGVycywgXCJYLVJlcXVlc3RlZC1XaXRoXCI6IFwiWE1MSHR0cFJlcXVlc3RcIiB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVxdWVzdFRva2VuKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMucmVxdWVzdFRva2VuID09PSBudWxsKSB7XG4gICAgICB0aGlzLnJlcXVlc3RUb2tlbiA9IGF3YWl0IHBsYXRmb3JtRGVwcy5nZXRSZXF1ZXN0VG9rZW4oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdFRva2VuO1xuICB9XG59XG4iLCJ2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcblxudmFyIERhdGVQcm90b3R5cGUgPSBEYXRlLnByb3RvdHlwZTtcbnZhciBJTlZBTElEX0RBVEUgPSAnSW52YWxpZCBEYXRlJztcbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIHVuJERhdGVUb1N0cmluZyA9IHVuY3VycnlUaGlzKERhdGVQcm90b3R5cGVbVE9fU1RSSU5HXSk7XG52YXIgZ2V0VGltZSA9IHVuY3VycnlUaGlzKERhdGVQcm90b3R5cGUuZ2V0VGltZSk7XG5cbi8vIGBEYXRlLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWRhdGUucHJvdG90eXBlLnRvc3RyaW5nXG5pZiAoU3RyaW5nKG5ldyBEYXRlKE5hTikpICE9IElOVkFMSURfREFURSkge1xuICByZWRlZmluZShEYXRlUHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciB2YWx1ZSA9IGdldFRpbWUodGhpcyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdW4kRGF0ZVRvU3RyaW5nKHRoaXMpIDogSU5WQUxJRF9EQVRFO1xuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuUFJPUEVSO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgcmVnRXhwRmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG5cbnZhciBUT19TVFJJTkcgPSAndG9TdHJpbmcnO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG52YXIgbiRUb1N0cmluZyA9IFJlZ0V4cFByb3RvdHlwZVtUT19TVFJJTkddO1xudmFyIGdldEZsYWdzID0gdW5jdXJyeVRoaXMocmVnRXhwRmxhZ3MpO1xuXG52YXIgTk9UX0dFTkVSSUMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IHJldHVybiBuJFRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbnZhciBJTkNPUlJFQ1RfTkFNRSA9IFBST1BFUl9GVU5DVElPTl9OQU1FICYmIG4kVG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkc7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuaWYgKE5PVF9HRU5FUklDIHx8IElOQ09SUkVDVF9OQU1FKSB7XG4gIHJlZGVmaW5lKFJlZ0V4cC5wcm90b3R5cGUsIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgdmFyIFIgPSBhbk9iamVjdCh0aGlzKTtcbiAgICB2YXIgcCA9ICR0b1N0cmluZyhSLnNvdXJjZSk7XG4gICAgdmFyIHJmID0gUi5mbGFncztcbiAgICB2YXIgZiA9ICR0b1N0cmluZyhyZiA9PT0gdW5kZWZpbmVkICYmIGlzUHJvdG90eXBlT2YoUmVnRXhwUHJvdG90eXBlLCBSKSAmJiAhKCdmbGFncycgaW4gUmVnRXhwUHJvdG90eXBlKSA/IGdldEZsYWdzKFIpIDogcmYpO1xuICAgIHJldHVybiAnLycgKyBwICsgJy8nICsgZjtcbiAgfSwgeyB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCJleHBvcnQgY2xhc3MgS2ludG9uZUFib3J0U2VhcmNoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJLaW50b25lQWJvcnRTZWFyY2hFcnJvclwiO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvd2lraS9CcmVha2luZy1DaGFuZ2VzI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICAgIC8vIFNldCB0aGUgcHJvdG90eXBlIGV4cGxpY2l0bHkuXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEtpbnRvbmVBYm9ydFNlYXJjaEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEVycm9yUmVzcG9uc2UgfSBmcm9tIFwiLi4vaHR0cC9IdHRwQ2xpZW50SW50ZXJmYWNlXCI7XG5cbnR5cGUgU2luZ2xlRXJyb3JSZXNwb25zZURhdGEgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBlcnJvcnM/OiBhbnk7XG59O1xuXG50eXBlIEJ1bGtSZXF1ZXN0RXJyb3JSZXNwb25zZURhdGEgPSB7XG4gIHJlc3VsdHM6IEFycmF5PFNpbmdsZUVycm9yUmVzcG9uc2VEYXRhIHwge30+O1xufTtcblxudHlwZSBLaW50b25lRXJyb3JSZXNwb25zZURhdGEgPVxuICB8IFNpbmdsZUVycm9yUmVzcG9uc2VEYXRhXG4gIHwgQnVsa1JlcXVlc3RFcnJvclJlc3BvbnNlRGF0YTtcblxuZXhwb3J0IHR5cGUgS2ludG9uZUVycm9yUmVzcG9uc2UgPSBFcnJvclJlc3BvbnNlPEtpbnRvbmVFcnJvclJlc3BvbnNlRGF0YT47XG5cbmV4cG9ydCBjbGFzcyBLaW50b25lUmVzdEFQSUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBpZDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIHN0YXR1czogbnVtYmVyO1xuICBidWxrUmVxdWVzdEluZGV4PzogbnVtYmVyO1xuICBoZWFkZXJzOiBhbnk7XG4gIGVycm9ycz86IGFueTtcblxuICBwcml2YXRlIHN0YXRpYyBmaW5kRXJyb3JSZXNwb25zZURhdGFXaXRoSW5kZXgoXG4gICAgcmVzdWx0czogQnVsa1JlcXVlc3RFcnJvclJlc3BvbnNlRGF0YVtcInJlc3VsdHNcIl1cbiAgKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0c1tpXSkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHRzW2ldIGFzIFNpbmdsZUVycm9yUmVzcG9uc2VEYXRhO1xuICAgICAgICByZXR1cm4geyBkYXRhLCBidWxrUmVxdWVzdEluZGV4OiBpIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBcIk1pc3NpbmcgcmVzcG9uc2UgZGF0YSBpbiBgcmVzdWx0c2AuIFRoaXMgZXJyb3IgaXMgbGlrZWx5IGNhdXNlZCBieSBhIGJ1ZyBpbiBLaW50b25lIFJFU1QgQVBJIENsaWVudC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRFcnJvclJlc3BvbnNlRGF0ZVdpdGhJbmRleChlcnJvcjogS2ludG9uZUVycm9yUmVzcG9uc2UpOiB7XG4gICAgZGF0YTogU2luZ2xlRXJyb3JSZXNwb25zZURhdGE7XG4gICAgYnVsa1JlcXVlc3RJbmRleD86IG51bWJlcjtcbiAgfSB7XG4gICAgaWYgKFwicmVzdWx0c1wiIGluIGVycm9yLmRhdGEpIHtcbiAgICAgIHJldHVybiBLaW50b25lUmVzdEFQSUVycm9yLmZpbmRFcnJvclJlc3BvbnNlRGF0YVdpdGhJbmRleChcbiAgICAgICAgZXJyb3IuZGF0YS5yZXN1bHRzXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4geyBkYXRhOiBlcnJvci5kYXRhIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihlcnJvcjogS2ludG9uZUVycm9yUmVzcG9uc2UpIHtcbiAgICBjb25zdCB7IGRhdGEsIGJ1bGtSZXF1ZXN0SW5kZXggfSA9XG4gICAgICBLaW50b25lUmVzdEFQSUVycm9yLmJ1aWxkRXJyb3JSZXNwb25zZURhdGVXaXRoSW5kZXgoZXJyb3IpO1xuXG4gICAgc3VwZXIoZGF0YS5tZXNzYWdlKTtcblxuICAgIHRoaXMubmFtZSA9IFwiS2ludG9uZVJlc3RBUElFcnJvclwiO1xuICAgIHRoaXMuaWQgPSBkYXRhLmlkO1xuICAgIHRoaXMuY29kZSA9IGRhdGEuY29kZTtcbiAgICB0aGlzLmVycm9ycyA9IGRhdGEuZXJyb3JzO1xuICAgIHRoaXMuc3RhdHVzID0gZXJyb3Iuc3RhdHVzO1xuICAgIHRoaXMuYnVsa1JlcXVlc3RJbmRleCA9IGJ1bGtSZXF1ZXN0SW5kZXg7XG4gICAgdGhpcy5oZWFkZXJzID0gZXJyb3IuaGVhZGVycztcbiAgICB0aGlzLm1lc3NhZ2UgPSBgWyR7ZXJyb3Iuc3RhdHVzfV0gWyR7dGhpcy5jb2RlfV0gJHt0aGlzLm1lc3NhZ2V9ICgke3RoaXMuaWR9KWA7XG5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9FcnJvciNDdXN0b21fRXJyb3JfVHlwZXNcbiAgICAvLyBNYWludGFpbnMgcHJvcGVyIHN0YWNrIHRyYWNlIGZvciB3aGVyZSBvdXIgZXJyb3Igd2FzIHRocm93biAob25seSBhdmFpbGFibGUgb24gVjgpXG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBLaW50b25lUmVzdEFQSUVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvd2lraS9CcmVha2luZy1DaGFuZ2VzI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICAgIC8vIFNldCB0aGUgcHJvdG90eXBlIGV4cGxpY2l0bHkuXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEtpbnRvbmVSZXN0QVBJRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgRXJyb3JSZXNwb25zZSxcbiAgSHR0cENsaWVudEVycm9yLFxuICBSZXNwb25zZSxcbiAgUmVzcG9uc2VIYW5kbGVyLFxufSBmcm9tIFwiLi9odHRwL0h0dHBDbGllbnRJbnRlcmZhY2VcIjtcbmltcG9ydCB7IEtpbnRvbmVBYm9ydFNlYXJjaEVycm9yIH0gZnJvbSBcIi4vZXJyb3IvS2ludG9uZUFib3J0U2VhcmNoRXJyb3JcIjtcbmltcG9ydCB7XG4gIEtpbnRvbmVSZXN0QVBJRXJyb3IsXG4gIEtpbnRvbmVFcnJvclJlc3BvbnNlLFxufSBmcm9tIFwiLi9lcnJvci9LaW50b25lUmVzdEFQSUVycm9yXCI7XG5cbmV4cG9ydCBjbGFzcyBLaW50b25lUmVzcG9uc2VIYW5kbGVyIGltcGxlbWVudHMgUmVzcG9uc2VIYW5kbGVyIHtcbiAgcHJpdmF0ZSBlbmFibGVBYm9ydFNlYXJjaEVycm9yOiBib29sZWFuO1xuICBjb25zdHJ1Y3Rvcih7IGVuYWJsZUFib3J0U2VhcmNoRXJyb3IgfTogeyBlbmFibGVBYm9ydFNlYXJjaEVycm9yOiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmVuYWJsZUFib3J0U2VhcmNoRXJyb3IgPSBlbmFibGVBYm9ydFNlYXJjaEVycm9yO1xuICB9XG4gIGhhbmRsZTxUPihyZXNwb25zZTogUHJvbWlzZTxSZXNwb25zZTxUPj4pOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gcmVzcG9uc2UudGhlbihcbiAgICAgIChyZXMpID0+IHRoaXMuaGFuZGxlU3VjY2Vzc1Jlc3BvbnNlPFQ+KHJlcyksXG4gICAgICAoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShlcnJvcilcbiAgICApO1xuICB9XG4gIHByaXZhdGUgaGFuZGxlU3VjY2Vzc1Jlc3BvbnNlPFQ+KHJlc3BvbnNlOiBSZXNwb25zZTxUPik6IFQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZW5hYmxlQWJvcnRTZWFyY2hFcnJvciAmJlxuICAgICAgL0ZpbHRlciBhYm9ydGVkIGJlY2F1c2Ugb2YgdG9vIG1hbnkgc2VhcmNoIHJlc3VsdHMvLnRlc3QoXG4gICAgICAgIHJlc3BvbnNlLmhlYWRlcnNbXCJ4LWN5Ym96dS13YXJuaW5nXCJdXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgS2ludG9uZUFib3J0U2VhcmNoRXJyb3IocmVzcG9uc2UuaGVhZGVyc1tcIngtY3lib3p1LXdhcm5pbmdcIl0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgfVxuICBwcml2YXRlIGhhbmRsZUVycm9yUmVzcG9uc2UoXG4gICAgZXJyb3I6IEh0dHBDbGllbnRFcnJvcjxFcnJvclJlc3BvbnNlPHN0cmluZz4gfCBLaW50b25lRXJyb3JSZXNwb25zZT5cbiAgKTogbmV2ZXIge1xuICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgIC8vIEZJWE1FOiBmaW5kIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhpcyBlcnJvclxuICAgICAgaWYgKC9tYWMgdmVyaWZ5IGZhaWx1cmUvLnRlc3QoZXJyb3IudG9TdHJpbmcoKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjbGllbnRDZXJ0QXV0aCBzZXR0aW5nXCIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5yZXNwb25zZTtcblxuICAgIGNvbnN0IHsgZGF0YSwgLi4ucmVzdCB9ID0gZXJyb3JSZXNwb25zZTtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyZXN0LnN0YXR1c306ICR7cmVzdC5zdGF0dXNUZXh0fWApO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgS2ludG9uZVJlc3RBUElFcnJvcih7IGRhdGEsIC4uLnJlc3QgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEJ1bGtSZXF1ZXN0Q2xpZW50LCBFbmRwb2ludE5hbWUgfSBmcm9tIFwiLi9jbGllbnQvQnVsa1JlcXVlc3RDbGllbnRcIjtcbmltcG9ydCB7IEFwcENsaWVudCB9IGZyb20gXCIuL2NsaWVudC9BcHBDbGllbnRcIjtcbmltcG9ydCB7IFJlY29yZENsaWVudCB9IGZyb20gXCIuL2NsaWVudC9SZWNvcmRDbGllbnRcIjtcbmltcG9ydCB7IEZpbGVDbGllbnQgfSBmcm9tIFwiLi9jbGllbnQvRmlsZUNsaWVudFwiO1xuaW1wb3J0IHsgRGVmYXVsdEh0dHBDbGllbnQgfSBmcm9tIFwiLi9odHRwL1wiO1xuaW1wb3J0IHsgUHJveHlDb25maWcgfSBmcm9tIFwiLi9odHRwL0h0dHBDbGllbnRJbnRlcmZhY2VcIjtcbmltcG9ydCB7IEJhc2ljQXV0aCwgRGlzY3JpbWluYXRlZEF1dGggfSBmcm9tIFwiLi90eXBlcy9hdXRoXCI7XG5pbXBvcnQgeyBLaW50b25lUmVxdWVzdENvbmZpZ0J1aWxkZXIgfSBmcm9tIFwiLi9LaW50b25lUmVxdWVzdENvbmZpZ0J1aWxkZXJcIjtcbmltcG9ydCB7IEtpbnRvbmVSZXNwb25zZUhhbmRsZXIgfSBmcm9tIFwiLi9LaW50b25lUmVzcG9uc2VIYW5kbGVyXCI7XG5pbXBvcnQgeyBwbGF0Zm9ybURlcHMgfSBmcm9tIFwiLi9wbGF0Zm9ybS9pbmRleFwiO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yIH0gZnJvbSBcIi4vcGxhdGZvcm0vVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yXCI7XG5cbnR5cGUgT21pdFR5cGVQcm9wZXJ0eUZyb21VbmlvbjxUPiA9IFQgZXh0ZW5kcyB1bmtub3duID8gT21pdDxULCBcInR5cGVcIj4gOiBuZXZlcjtcbnR5cGUgQXV0aCA9IE9taXRUeXBlUHJvcGVydHlGcm9tVW5pb248RGlzY3JpbWluYXRlZEF1dGg+O1xuXG50eXBlIE9wdGlvbnMgPSB7XG4gIGJhc2VVcmw/OiBzdHJpbmc7XG4gIGF1dGg/OiBBdXRoO1xuICBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGJhc2ljQXV0aD86IEJhc2ljQXV0aDtcbiAgY2xpZW50Q2VydEF1dGg/OlxuICAgIHwge1xuICAgICAgICBwZng6IEJ1ZmZlcjtcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgcGZ4RmlsZVBhdGg6IHN0cmluZztcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgIH07XG4gIHByb3h5PzogUHJveHlDb25maWc7XG4gIGZlYXR1cmVGbGFncz86IHtcbiAgICBlbmFibGVBYm9ydFNlYXJjaEVycm9yOiBib29sZWFuO1xuICB9O1xuICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBidWlsZERpc2NyaW1pbmF0ZWRBdXRoID0gKGF1dGg6IEF1dGgpOiBEaXNjcmltaW5hdGVkQXV0aCA9PiB7XG4gIGlmIChcInVzZXJuYW1lXCIgaW4gYXV0aCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwicGFzc3dvcmRcIiwgLi4uYXV0aCB9O1xuICB9XG4gIGlmIChcImFwaVRva2VuXCIgaW4gYXV0aCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiYXBpVG9rZW5cIiwgLi4uYXV0aCB9O1xuICB9XG4gIGlmIChcIm9BdXRoVG9rZW5cIiBpbiBhdXRoKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJvQXV0aFRva2VuXCIsIC4uLmF1dGggfTtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBwbGF0Zm9ybURlcHMuZ2V0RGVmYXVsdEF1dGgoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBzZXNzaW9uIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gJHtlLnBsYXRmb3JtfSBlbnZpcm9ubWVudC5gXG4gICAgICApO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5leHBvcnQgY2xhc3MgS2ludG9uZVJlc3RBUElDbGllbnQge1xuICByZWNvcmQ6IFJlY29yZENsaWVudDtcbiAgYXBwOiBBcHBDbGllbnQ7XG4gIGZpbGU6IEZpbGVDbGllbnQ7XG4gIHByaXZhdGUgYnVsa1JlcXVlc3RfOiBCdWxrUmVxdWVzdENsaWVudDtcbiAgcHJpdmF0ZSBiYXNlVXJsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgIHRoaXMuYmFzZVVybCA9IHBsYXRmb3JtRGVwcy5idWlsZEJhc2VVcmwob3B0aW9ucy5iYXNlVXJsKTtcblxuICAgIGNvbnN0IGF1dGggPSBidWlsZERpc2NyaW1pbmF0ZWRBdXRoKG9wdGlvbnMuYXV0aCA/PyB7fSk7XG4gICAgY29uc3QgcmVxdWVzdENvbmZpZ0J1aWxkZXIgPSBuZXcgS2ludG9uZVJlcXVlc3RDb25maWdCdWlsZGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmwsXG4gICAgICBhdXRoLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3BvbnNlSGFuZGxlciA9IG5ldyBLaW50b25lUmVzcG9uc2VIYW5kbGVyKHtcbiAgICAgIGVuYWJsZUFib3J0U2VhcmNoRXJyb3I6XG4gICAgICAgIG9wdGlvbnMuZmVhdHVyZUZsYWdzPy5lbmFibGVBYm9ydFNlYXJjaEVycm9yID8/IGZhbHNlLFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBDbGllbnQgPSBuZXcgRGVmYXVsdEh0dHBDbGllbnQoe1xuICAgICAgcmVzcG9uc2VIYW5kbGVyLFxuICAgICAgcmVxdWVzdENvbmZpZ0J1aWxkZXIsXG4gICAgfSk7XG4gICAgY29uc3QgeyBndWVzdFNwYWNlSWQgfSA9IG9wdGlvbnM7XG5cbiAgICB0aGlzLmJ1bGtSZXF1ZXN0XyA9IG5ldyBCdWxrUmVxdWVzdENsaWVudChodHRwQ2xpZW50LCBndWVzdFNwYWNlSWQpO1xuICAgIHRoaXMucmVjb3JkID0gbmV3IFJlY29yZENsaWVudChodHRwQ2xpZW50LCB0aGlzLmJ1bGtSZXF1ZXN0XywgZ3Vlc3RTcGFjZUlkKTtcbiAgICB0aGlzLmFwcCA9IG5ldyBBcHBDbGllbnQoaHR0cENsaWVudCwgZ3Vlc3RTcGFjZUlkKTtcbiAgICB0aGlzLmZpbGUgPSBuZXcgRmlsZUNsaWVudChodHRwQ2xpZW50LCBndWVzdFNwYWNlSWQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgdmVyc2lvbigpIHtcbiAgICByZXR1cm4gcGxhdGZvcm1EZXBzLmdldFZlcnNpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRCYXNlVXJsKCkge1xuICAgIHJldHVybiB0aGlzLmJhc2VVcmw7XG4gIH1cblxuICBwdWJsaWMgYnVsa1JlcXVlc3QocGFyYW1zOiB7XG4gICAgcmVxdWVzdHM6IEFycmF5PFxuICAgICAgfCB7XG4gICAgICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAgICAgYXBpOiBzdHJpbmc7XG4gICAgICAgICAgcGF5bG9hZDogb2JqZWN0O1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgICAgICBlbmRwb2ludE5hbWU6IEVuZHBvaW50TmFtZTtcbiAgICAgICAgICBwYXlsb2FkOiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICA+O1xuICB9KTogUHJvbWlzZTx7IHJlc3VsdHM6IEFycmF5PHsgW0s6IHN0cmluZ106IGFueSB9PiB9PiB7XG4gICAgcmV0dXJuIHRoaXMuYnVsa1JlcXVlc3RfLnNlbmQocGFyYW1zKTtcbiAgfVxufVxuXG5jb25zdCB2YWxpZGF0ZU9wdGlvbnMgPSAob3B0aW9uczogT3B0aW9ucykgPT4ge1xuICB2YWxpZGF0ZUd1ZXN0U3BhY2VJZChvcHRpb25zLmd1ZXN0U3BhY2VJZCk7XG59O1xuXG5jb25zdCB2YWxpZGF0ZUd1ZXN0U3BhY2VJZCA9IChndWVzdFNwYWNlSWQ6IE9wdGlvbnNbXCJndWVzdFNwYWNlSWRcIl0pID0+IHtcbiAgaWYgKGd1ZXN0U3BhY2VJZCA9PT0gXCJcIiB8fCBndWVzdFNwYWNlSWQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgZ3Vlc3RTcGFjZUlkOiBnb3QgWyR7Z3Vlc3RTcGFjZUlkfV1gKTtcbiAgfVxufTtcbiIsImltcG9ydCB7IGluamVjdFBsYXRmb3JtRGVwcyB9IGZyb20gXCIuL3BsYXRmb3JtL1wiO1xuaW1wb3J0ICogYXMgYnJvd3NlckRlcHMgZnJvbSBcIi4vcGxhdGZvcm0vYnJvd3NlclwiO1xuXG5pbmplY3RQbGF0Zm9ybURlcHMoYnJvd3NlckRlcHMpO1xuXG5leHBvcnQgeyBLaW50b25lUmVzdEFQSUNsaWVudCB9IGZyb20gXCIuL0tpbnRvbmVSZXN0QVBJQ2xpZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvclwiO1xuIl0sIm5hbWVzIjpbInBsYXRmb3JtRGVwcyIsInJlYWRGaWxlRnJvbVBhdGgiLCJFcnJvciIsImdldFJlcXVlc3RUb2tlbiIsImdldERlZmF1bHRBdXRoIiwiYnVpbGRQbGF0Zm9ybURlcGVuZGVudENvbmZpZyIsImJ1aWxkSGVhZGVycyIsImJ1aWxkRm9ybURhdGFWYWx1ZSIsImJ1aWxkQmFzZVVybCIsImdldFZlcnNpb24iLCJpbmplY3RQbGF0Zm9ybURlcHMiLCJkZXBzIiwiY2hlY2siLCJpdCIsIk1hdGgiLCJnbG9iYWwiLCJnbG9iYWxUaGlzIiwid2luZG93Iiwic2VsZiIsIkZ1bmN0aW9uIiwiZmFpbHMiLCJleGVjIiwiZXJyb3IiLCJyZXF1aXJlJCQwIiwiZGVzY3JpcHRvcnMiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsImZ1bmN0aW9uQmluZE5hdGl2ZSIsInRlc3QiLCJiaW5kIiwiaGFzT3duUHJvcGVydHkiLCJOQVRJVkVfQklORCIsImNhbGwiLCJwcm90b3R5cGUiLCJmdW5jdGlvbkNhbGwiLCJhcHBseSIsImFyZ3VtZW50cyIsIiRwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTkFTSE9STl9CVUciLCJWIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJiaXRtYXAiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRnVuY3Rpb25Qcm90b3R5cGUiLCJ1bmN1cnJ5VGhpcyIsImZ1bmN0aW9uVW5jdXJyeVRoaXMiLCJmbiIsInRvU3RyaW5nIiwic3RyaW5nU2xpY2UiLCJzbGljZSIsImNsYXNzb2ZSYXciLCJyZXF1aXJlJCQxIiwicmVxdWlyZSQkMiIsImNsYXNzb2YiLCJyZXF1aXJlJCQzIiwic3BsaXQiLCJpbmRleGVkT2JqZWN0IiwiVHlwZUVycm9yIiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsInVuZGVmaW5lZCIsIkluZGV4ZWRPYmplY3QiLCJ0b0luZGV4ZWRPYmplY3QiLCJpc0NhbGxhYmxlIiwiYXJndW1lbnQiLCJpc09iamVjdCIsImFGdW5jdGlvbiIsImdldEJ1aWx0SW4iLCJuYW1lc3BhY2UiLCJtZXRob2QiLCJsZW5ndGgiLCJvYmplY3RJc1Byb3RvdHlwZU9mIiwiaXNQcm90b3R5cGVPZiIsImVuZ2luZVVzZXJBZ2VudCIsInVzZXJBZ2VudCIsInByb2Nlc3MiLCJEZW5vIiwidmVyc2lvbnMiLCJ2ZXJzaW9uIiwidjgiLCJtYXRjaCIsImVuZ2luZVY4VmVyc2lvbiIsIlY4X1ZFUlNJT04iLCJuYXRpdmVTeW1ib2wiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2wiLCJTeW1ib2wiLCJTdHJpbmciLCJzaGFtIiwiTkFUSVZFX1NZTUJPTCIsInVzZVN5bWJvbEFzVWlkIiwiaXRlcmF0b3IiLCJVU0VfU1lNQk9MX0FTX1VJRCIsInJlcXVpcmUkJDQiLCJpc1N5bWJvbCIsIiRTeW1ib2wiLCJ0cnlUb1N0cmluZyIsImFDYWxsYWJsZSIsImdldE1ldGhvZCIsIlAiLCJmdW5jIiwib3JkaW5hcnlUb1ByaW1pdGl2ZSIsImlucHV0IiwicHJlZiIsInZhbCIsInZhbHVlT2YiLCJzZXRHbG9iYWwiLCJrZXkiLCJTSEFSRUQiLCJzdG9yZSIsInNoYXJlZFN0b3JlIiwic2hhcmVkTW9kdWxlIiwicHVzaCIsIm1vZGUiLCJjb3B5cmlnaHQiLCJsaWNlbnNlIiwic291cmNlIiwidG9PYmplY3QiLCJoYXNPd25Qcm9wZXJ0eV8xIiwiaGFzT3duIiwiaWQiLCJwb3N0Zml4IiwicmFuZG9tIiwidWlkIiwic2hhcmVkIiwicmVxdWlyZSQkNSIsIldlbGxLbm93blN5bWJvbHNTdG9yZSIsInN5bWJvbEZvciIsImNyZWF0ZVdlbGxLbm93blN5bWJvbCIsIndpdGhvdXRTZXR0ZXIiLCJ3ZWxsS25vd25TeW1ib2wiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJyZXF1aXJlJCQ2IiwiVE9fUFJJTUlUSVZFIiwidG9QcmltaXRpdmUiLCJleG90aWNUb1ByaW0iLCJyZXN1bHQiLCJ0b1Byb3BlcnR5S2V5IiwiZG9jdW1lbnQiLCJFWElTVFMiLCJjcmVhdGVFbGVtZW50IiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiREVTQ1JJUFRPUlMiLCJpZThEb21EZWZpbmUiLCJhIiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJJRThfRE9NX0RFRklORSIsInJlcXVpcmUkJDciLCIkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiTyIsImYiLCJ2OFByb3RvdHlwZURlZmluZUJ1ZyIsImFuT2JqZWN0IiwiVjhfUFJPVE9UWVBFX0RFRklORV9CVUciLCIkZGVmaW5lUHJvcGVydHkiLCJFTlVNRVJBQkxFIiwiQ09ORklHVVJBQkxFIiwiV1JJVEFCTEUiLCJBdHRyaWJ1dGVzIiwiY3VycmVudCIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5Iiwib2JqZWN0IiwiZnVuY3Rpb25Ub1N0cmluZyIsImluc3BlY3RTb3VyY2UiLCJXZWFrTWFwIiwibmF0aXZlV2Vha01hcCIsImtleXMiLCJzaGFyZWRLZXkiLCJoaWRkZW5LZXlzIiwiTkFUSVZFX1dFQUtfTUFQIiwicmVxdWlyZSQkOCIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwic2V0IiwiaGFzIiwiZW5mb3JjZSIsImdldHRlckZvciIsIlRZUEUiLCJzdGF0ZSIsInR5cGUiLCJ3bWdldCIsIndtaGFzIiwid21zZXQiLCJtZXRhZGF0YSIsImZhY2FkZSIsIlNUQVRFIiwiaW50ZXJuYWxTdGF0ZSIsImdldERlc2NyaXB0b3IiLCJQUk9QRVIiLCJzb21ldGhpbmciLCJmdW5jdGlvbk5hbWUiLCJJbnRlcm5hbFN0YXRlTW9kdWxlIiwiQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUiLCJnZXRJbnRlcm5hbFN0YXRlIiwiZW5mb3JjZUludGVybmFsU3RhdGUiLCJURU1QTEFURSIsInJlZGVmaW5lTW9kdWxlIiwib3B0aW9ucyIsInVuc2FmZSIsInNpbXBsZSIsIm5vVGFyZ2V0R2V0IiwicmVwbGFjZSIsImpvaW4iLCJjZWlsIiwiZmxvb3IiLCJ0b0ludGVnZXJPckluZmluaXR5IiwibnVtYmVyIiwibWF4IiwibWluIiwidG9BYnNvbHV0ZUluZGV4IiwiaW5kZXgiLCJpbnRlZ2VyIiwidG9MZW5ndGgiLCJsZW5ndGhPZkFycmF5TGlrZSIsIm9iaiIsImNyZWF0ZU1ldGhvZCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImZyb21JbmRleCIsImFycmF5SW5jbHVkZXMiLCJpbmNsdWRlcyIsImluZGV4T2YiLCJvYmplY3RLZXlzSW50ZXJuYWwiLCJuYW1lcyIsImkiLCJlbnVtQnVnS2V5cyIsImludGVybmFsT2JqZWN0S2V5cyIsImNvbmNhdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMiLCJ0YXJnZXQiLCJleGNlcHRpb25zIiwicmVwbGFjZW1lbnQiLCJpc0ZvcmNlZCIsImZlYXR1cmUiLCJkZXRlY3Rpb24iLCJkYXRhIiwibm9ybWFsaXplIiwiUE9MWUZJTEwiLCJOQVRJVkUiLCJzdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImlzRm9yY2VkXzEiLCJyZWRlZmluZSIsIl9leHBvcnQiLCJUQVJHRVQiLCJHTE9CQUwiLCJTVEFUSUMiLCJzdGF0IiwiRk9SQ0VEIiwidGFyZ2V0UHJvcGVydHkiLCJzb3VyY2VQcm9wZXJ0eSIsImZvcmNlZCIsImlzQXJyYXkiLCJBcnJheSIsImNyZWF0ZVByb3BlcnR5IiwicHJvcGVydHlLZXkiLCJUT19TVFJJTkdfVEFHIiwidG9TdHJpbmdUYWdTdXBwb3J0IiwiVE9fU1RSSU5HX1RBR19TVVBQT1JUIiwiQ09SUkVDVF9BUkdVTUVOVFMiLCJ0cnlHZXQiLCJ0YWciLCJjYWxsZWUiLCJub29wIiwiZW1wdHkiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvclJlZ0V4cCIsIklOQ09SUkVDVF9UT19TVFJJTkciLCJpc0NvbnN0cnVjdG9yTW9kZXJuIiwiaXNDb25zdHJ1Y3RvciIsImlzQ29uc3RydWN0b3JMZWdhY3kiLCJjYWxsZWQiLCJTUEVDSUVTIiwiYXJyYXlTcGVjaWVzQ29uc3RydWN0b3IiLCJvcmlnaW5hbEFycmF5IiwiQyIsImNvbnN0cnVjdG9yIiwiYXJyYXlTcGVjaWVzQ3JlYXRlIiwiYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCIsIk1FVEhPRF9OQU1FIiwiYXJyYXkiLCJmb28iLCJCb29sZWFuIiwiJCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwiSVNfQ09OQ0FUX1NQUkVBREFCTEUiLCJNQVhfU0FGRV9JTlRFR0VSIiwiTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEIiwiSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCIsIlNQRUNJRVNfU1VQUE9SVCIsImlzQ29uY2F0U3ByZWFkYWJsZSIsInNwcmVhZGFibGUiLCJwcm90byIsImFyZyIsIkEiLCJuIiwiayIsImxlbiIsIkUiLCJydW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiaXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlcnIiLCJ3cmFwIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJfaW52b2tlIiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiR2VuU3RhdGVTdXNwZW5kZWRTdGFydCIsIkdlblN0YXRlU3VzcGVuZGVkWWllbGQiLCJHZW5TdGF0ZUV4ZWN1dGluZyIsIkdlblN0YXRlQ29tcGxldGVkIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGlzcGxheU5hbWUiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsIl9fYXdhaXQiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwidGhlbiIsInVud3JhcHBlZCIsInByZXZpb3VzUHJvbWlzZSIsImVucXVldWUiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJuZXh0IiwiZG9uZSIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsInJldmVyc2UiLCJwb3AiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJza2lwVGVtcFJlc2V0IiwicHJldiIsImNoYXJBdCIsInN0b3AiLCJyb290RW50cnkiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsIm1vZHVsZSIsInJlZ2VuZXJhdG9yUnVudGltZSIsImFjY2lkZW50YWxTdHJpY3RNb2RlIiwiRlVOQ1RJT05fTkFNRV9FWElTVFMiLCJuYW1lUkUiLCJyZWdFeHBFeGVjIiwiTkFNRSIsImFQb3NzaWJsZVByb3RvdHlwZSIsIm9iamVjdFNldFByb3RvdHlwZU9mIiwiQ09SUkVDVF9TRVRURVIiLCJzZXR0ZXIiLCJVbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3IiLCJwbGF0Zm9ybSIsIm1lc3NhZ2UiLCJjYXB0dXJlU3RhY2tUcmFjZSIsImZpbGVQYXRoIiwia2ludG9uZSIsImdhcm9vbiIsImNvbm5lY3QiLCJCbG9iIiwiYmFzZVVybCIsImxvY2F0aW9uIiwiaG9zdCIsInByb3RvY29sIiwiUEFDS0FHRV9WRVJTSU9OIiwiZnVuY3Rpb25CaW5kQ29udGV4dCIsInRoYXQiLCJJU19NQVAiLCJJU19GSUxURVIiLCJJU19TT01FIiwiSVNfRVZFUlkiLCJJU19GSU5EX0lOREVYIiwiSVNfRklMVEVSX1JFSkVDVCIsIk5PX0hPTEVTIiwiY2FsbGJhY2tmbiIsInNwZWNpZmljQ3JlYXRlIiwiYm91bmRGdW5jdGlvbiIsImFycmF5SXRlcmF0aW9uIiwibWFwIiwiZmlsdGVyIiwic29tZSIsImV2ZXJ5IiwiZmluZCIsImZpbmRJbmRleCIsImZpbHRlclJlamVjdCIsIiRtYXAiLCJIQVNfU1BFQ0lFU19TVVBQT1JUIiwiYnVpbGRQYXRoIiwicGFyYW1zIiwiZW5kcG9pbnROYW1lIiwiZ3Vlc3RTcGFjZUlkIiwicHJldmlldyIsImd1ZXN0UGF0aCIsInByZXZpZXdQYXRoIiwiQnVsa1JlcXVlc3RDbGllbnQiLCJjbGllbnQiLCJSRVFVRVNUU19MRU5HVEhfTElNSVQiLCJyZXF1ZXN0c1BhcmFtIiwicmVxdWVzdHMiLCJyZXF1ZXN0IiwicmVzdCIsImFwaSIsImJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQiLCJwYXRoIiwicG9zdCIsIkFwcENsaWVudCIsInB1dCIsInNwYWNlIiwic3BhY2VQYXRoIiwiZGVmYXVsdFRocmVhZCIsInRocmVhZCIsIm9iamVjdEtleXMiLCIkYXNzaWduIiwiYXNzaWduIiwib2JqZWN0QXNzaWduIiwiYiIsIkIiLCJhbHBoYWJldCIsImNociIsIlQiLCJhcmd1bWVudHNMZW5ndGgiLCJTIiwiaiIsInJlZ2V4cEZsYWdzIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsImRvdEFsbCIsInVuaWNvZGUiLCJzdGlja3kiLCIkUmVnRXhwIiwiUmVnRXhwIiwiVU5TVVBQT1JURURfWSIsInJlIiwibGFzdEluZGV4IiwiTUlTU0VEX1NUSUNLWSIsIkJST0tFTl9DQVJFVCIsInJlZ2V4cFN0aWNreUhlbHBlcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiUHJvcGVydGllcyIsInByb3BzIiwiaHRtbCIsImRlZmluZVByb3BlcnRpZXNNb2R1bGUiLCJHVCIsIkxUIiwiUFJPVE9UWVBFIiwiU0NSSVBUIiwiSUVfUFJPVE8iLCJFbXB0eUNvbnN0cnVjdG9yIiwic2NyaXB0VGFnIiwiY29udGVudCIsIk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgiLCJhY3RpdmVYRG9jdW1lbnQiLCJ3cml0ZSIsImNsb3NlIiwidGVtcCIsInBhcmVudFdpbmRvdyIsIk51bGxQcm90b09iamVjdFZpYUlGcmFtZSIsImlmcmFtZSIsIkpTIiwiaWZyYW1lRG9jdW1lbnQiLCJzdHlsZSIsImRpc3BsYXkiLCJhcHBlbmRDaGlsZCIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwiRiIsIk51bGxQcm90b09iamVjdCIsIkFjdGl2ZVhPYmplY3QiLCJkb21haW4iLCJvYmplY3RDcmVhdGUiLCJyZWdleHBVbnN1cHBvcnRlZERvdEFsbCIsImZsYWdzIiwicmVnZXhwVW5zdXBwb3J0ZWROY2ciLCJncm91cHMiLCJzdGlja3lIZWxwZXJzIiwiVU5TVVBQT1JURURfRE9UX0FMTCIsIlVOU1VQUE9SVEVEX05DRyIsIm5hdGl2ZVJlcGxhY2UiLCJuYXRpdmVFeGVjIiwicGF0Y2hlZEV4ZWMiLCJVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkciLCJyZTEiLCJyZTIiLCJOUENHX0lOQ0xVREVEIiwiUEFUQ0giLCJzdHIiLCJyYXciLCJyZUNvcHkiLCJncm91cCIsImNoYXJzQWRkZWQiLCJzdHJDb3B5IiwicmVnZXhwRXhlYyIsIlJlZ0V4cFByb3RvdHlwZSIsImZpeFJlZ2V4cFdlbGxLbm93blN5bWJvbExvZ2ljIiwiS0VZIiwiU0hBTSIsIlNZTUJPTCIsIkRFTEVHQVRFU19UT19TWU1CT0wiLCJERUxFR0FURVNfVE9fRVhFQyIsImV4ZWNDYWxsZWQiLCJ1bmN1cnJpZWROYXRpdmVSZWdFeHBNZXRob2QiLCJtZXRob2RzIiwibmF0aXZlTWV0aG9kIiwicmVnZXhwIiwiYXJnMiIsImZvcmNlU3RyaW5nTWV0aG9kIiwidW5jdXJyaWVkTmF0aXZlTWV0aG9kIiwiJGV4ZWMiLCJjaGFyQ29kZUF0IiwiQ09OVkVSVF9UT19TVFJJTkciLCJwb3MiLCJwb3NpdGlvbiIsInNpemUiLCJmaXJzdCIsInNlY29uZCIsInN0cmluZ011bHRpYnl0ZSIsImNvZGVBdCIsImFkdmFuY2VTdHJpbmdJbmRleCIsInJlZ2V4cEV4ZWNBYnN0cmFjdCIsIlIiLCJmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyIsIk1BVENIIiwibmF0aXZlTWF0Y2giLCJtYXliZUNhbGxOYXRpdmUiLCJtYXRjaGVyIiwicngiLCJyZXMiLCJmdWxsVW5pY29kZSIsIm1hdGNoU3RyIiwiaW5oZXJpdElmUmVxdWlyZWQiLCJkdW1teSIsIldyYXBwZXIiLCJOZXdUYXJnZXQiLCJOZXdUYXJnZXRQcm90b3R5cGUiLCJ0aGlzTnVtYmVyVmFsdWUiLCJ3aGl0ZXNwYWNlcyIsIndoaXRlc3BhY2UiLCJsdHJpbSIsInJ0cmltIiwic3RyaW5nVHJpbSIsInN0YXJ0IiwiZW5kIiwidHJpbSIsInJlcXVpcmUkJDEyIiwicmVxdWlyZSQkMTMiLCJyZXF1aXJlJCQxNCIsInJlcXVpcmUkJDE1IiwiTlVNQkVSIiwiTmF0aXZlTnVtYmVyIiwiTnVtYmVyUHJvdG90eXBlIiwiYXJyYXlTbGljZSIsInRvTnVtZXJpYyIsInByaW1WYWx1ZSIsInRvTnVtYmVyIiwidGhpcmQiLCJyYWRpeCIsIm1heENvZGUiLCJkaWdpdHMiLCJjb2RlIiwiTmFOIiwicGFyc2VJbnQiLCJOdW1iZXJXcmFwcGVyIiwiTnVtYmVyIiwiYXJyYXlNZXRob2RJc1N0cmljdCIsIiRJbmRleE9mIiwidW4kSW5kZXhPZiIsIk5FR0FUSVZFX1pFUk8iLCJTVFJJQ1RfTUVUSE9EIiwic2VhcmNoRWxlbWVudCIsIiRldmVyeSIsIm9iamVjdFRvU3RyaW5nIiwidW4kU2xpY2UiLCJmaW4iLCJDb25zdHJ1Y3RvciIsIklTX1JJR0hUIiwibWVtbyIsImFycmF5UmVkdWNlIiwibGVmdCIsInJpZ2h0IiwiZW5naW5lSXNOb2RlIiwiJHJlZHVjZSIsIkNIUk9NRV9WRVJTSU9OIiwiSVNfTk9ERSIsIkNIUk9NRV9CVUciLCJyZWR1Y2UiLCJuYXRpdmVLZXlzIiwiRkFJTFNfT05fUFJJTUlUSVZFUyIsIktpbnRvbmVBbGxSZWNvcmRzRXJyb3IiLCJwcm9jZXNzZWRSZWNvcmRzUmVzdWx0IiwidW5wcm9jZXNzZWRSZWNvcmRzIiwibnVtT2ZBbGxSZWNvcmRzIiwiY2h1bmtMZW5ndGgiLCJudW1PZlByb2Nlc3NlZFJlY29yZHMiLCJlcnJvckluZGV4IiwiZXh0cmFjdEVycm9ySW5kZXgiLCJidWlsZEVycm9yTWVzc2FnZSIsImVycm9ycyIsImZpcnN0RXJyb3JLZXkiLCJidWxrUmVxdWVzdEluZGV4IiwiZXJyb3JQYXJzZVJlc3VsdCIsInBhcnNlRXJyb3JJbmRleCIsIkFERF9SRUNPUkRTX0xJTUlUIiwiVVBEQVRFX1JFQ09SRFNfTElNSVQiLCJERUxFVEVfUkVDT1JEU19MSU1JVCIsIlJlY29yZENsaWVudCIsImJ1bGtSZXF1ZXN0Q2xpZW50IiwiZGlkV2Fybk1heGltdW1PZmZzZXRWYWx1ZSIsImFwcCIsInVwZGF0ZUtleSIsImdldFJlY29yZHMiLCJxdWVyeSIsImZpZWxkIiwicmVjb3JkcyIsIiRpZCIsInVwZGF0ZVJlY29yZCIsInJldmlzaW9uIiwiYWRkUmVjb3JkIiwicmVzcG9uc2UiLCJ3YXJuTWF4aW11bU9mZnNldFZhbHVlSWZOZWVkZWQiLCJjb25zb2xlIiwid2FybiIsImlkcyIsInJldmlzaW9ucyIsImNvbmRpdGlvbiIsIm9yZGVyQnkiLCJ3aXRoQ3Vyc29yIiwiZ2V0QWxsUmVjb3Jkc1dpdGhJZCIsImNvbmRpdGlvblF1ZXJ5IiwiZ2V0QWxsUmVjb3Jkc1dpdGhDdXJzb3IiLCJnZXRBbGxSZWNvcmRzV2l0aE9mZnNldCIsIm9yaWdpbmFsRmllbGRzIiwiZmllbGRzIiwiZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZVdpdGhJZCIsIkdFVF9SRUNPUkRTX0xJTUlUIiwiYWxsUmVjb3JkcyIsImxhc3RSZWNvcmQiLCJsYXN0SWQiLCJnZXRBbGxSZWNvcmRzUmVjdXJzaXZlV2l0aE9mZnNldCIsIm9mZnNldCIsImNyZWF0ZUN1cnNvciIsImdldEFsbFJlY29yZHNSZWN1cnNpdmVCeUN1cnNvciIsImRlbGV0ZUN1cnNvciIsImdldFJlY29yZHNCeUN1cnNvciIsImFkZEFsbFJlY29yZHNSZWN1cnNpdmUiLCJyZXN1bHRzIiwiQ0hVTktfTEVOR1RIIiwicmVjb3Jkc0NodW5rIiwiYWRkQWxsUmVjb3Jkc1dpdGhCdWxrUmVxdWVzdCIsIm5ld1Jlc3VsdHMiLCJzZXBhcmF0ZWRSZWNvcmRzIiwic2VwYXJhdGVBcnJheVJlY3Vyc2l2ZSIsInBheWxvYWQiLCJzZW5kIiwiYWNjIiwidXBkYXRlQWxsUmVjb3Jkc1JlY3Vyc2l2ZSIsInVwZGF0ZUFsbFJlY29yZHNXaXRoQnVsa1JlcXVlc3QiLCJkZWxldGVBbGxSZWNvcmRzUmVjdXJzaXZlIiwiZGVsZXRlQWxsUmVjb3Jkc1dpdGhCdWxrUmVxdWVzdCIsInNlcGFyYXRlZCIsImNodW5rIiwiYnJvd3NlciIsIkZvcm1EYXRhIiwiRmlsZUNsaWVudCIsImZvcm1EYXRhIiwiZmlsZSIsImFwcGVuZCIsInBvc3REYXRhIiwiZ2V0RGF0YSIsInRoaXNBcmciLCJhcmdzIiwiaXNVbmRlZmluZWQiLCJpc0J1ZmZlciIsImlzQXJyYXlCdWZmZXIiLCJpc0Zvcm1EYXRhIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsImJ1ZmZlciIsImlzU3RyaW5nIiwiaXNOdW1iZXIiLCJpc1BsYWluT2JqZWN0IiwiaXNEYXRlIiwiaXNGaWxlIiwiaXNCbG9iIiwiaXNGdW5jdGlvbiIsImlzU3RyZWFtIiwicGlwZSIsImlzVVJMU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiaXNTdGFuZGFyZEJyb3dzZXJFbnYiLCJuYXZpZ2F0b3IiLCJwcm9kdWN0IiwibCIsIm1lcmdlIiwiYXNzaWduVmFsdWUiLCJleHRlbmQiLCJzdHJpcEJPTSIsInV0aWxzIiwiZW5jb2RlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYnVpbGRVUkwiLCJ1cmwiLCJwYXJhbXNTZXJpYWxpemVyIiwic2VyaWFsaXplZFBhcmFtcyIsInBhcnRzIiwic2VyaWFsaXplIiwicGFyc2VWYWx1ZSIsInYiLCJ0b0lTT1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJoYXNobWFya0luZGV4IiwiSW50ZXJjZXB0b3JNYW5hZ2VyIiwiaGFuZGxlcnMiLCJ1c2UiLCJmdWxmaWxsZWQiLCJyZWplY3RlZCIsInN5bmNocm9ub3VzIiwicnVuV2hlbiIsImVqZWN0IiwiZm9yRWFjaEhhbmRsZXIiLCJoIiwiSW50ZXJjZXB0b3JNYW5hZ2VyXzEiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwicnVuVGltZW91dCIsImZ1biIsImUiLCJydW5DbGVhclRpbWVvdXQiLCJtYXJrZXIiLCJxdWV1ZSIsImRyYWluaW5nIiwiY3VycmVudFF1ZXVlIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwicnVuIiwibmV4dFRpY2siLCJJdGVtIiwidGl0bGUiLCJlbnYiLCJhcmd2IiwicmVsZWFzZSIsImNvbmZpZyIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwiZGlyIiwidW1hc2siLCJwZXJmb3JtYW5jZSIsInBlcmZvcm1hbmNlTm93Iiwibm93IiwibW96Tm93IiwibXNOb3ciLCJvTm93Iiwid2Via2l0Tm93IiwiRGF0ZSIsImdldFRpbWUiLCJocnRpbWUiLCJwcmV2aW91c1RpbWVzdGFtcCIsImNsb2NrdGltZSIsInNlY29uZHMiLCJuYW5vc2Vjb25kcyIsInN0YXJ0VGltZSIsInVwdGltZSIsImN1cnJlbnRUaW1lIiwiZGlmIiwibm9ybWFsaXplSGVhZGVyTmFtZSIsImhlYWRlcnMiLCJub3JtYWxpemVkTmFtZSIsInByb2Nlc3NIZWFkZXIiLCJ0b1VwcGVyQ2FzZSIsImVuaGFuY2VFcnJvciIsImlzQXhpb3NFcnJvciIsInRvSlNPTiIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImNvbHVtbk51bWJlciIsInN0YWNrIiwic3RhdHVzIiwiY3JlYXRlRXJyb3IiLCJzZXR0bGUiLCJ2YWxpZGF0ZVN0YXR1cyIsImNvb2tpZXMiLCJzdGFuZGFyZEJyb3dzZXJFbnYiLCJleHBpcmVzIiwic2VjdXJlIiwiY29va2llIiwidG9HTVRTdHJpbmciLCJyZWFkIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicmVtb3ZlIiwibm9uU3RhbmRhcmRCcm93c2VyRW52IiwiaXNBYnNvbHV0ZVVSTCIsImNvbWJpbmVVUkxzIiwiYmFzZVVSTCIsInJlbGF0aXZlVVJMIiwiYnVpbGRGdWxsUGF0aCIsInJlcXVlc3RlZFVSTCIsImlnbm9yZUR1cGxpY2F0ZU9mIiwicGFyc2VIZWFkZXJzIiwicGFyc2VkIiwicGFyc2VyIiwibGluZSIsInN1YnN0ciIsImlzVVJMU2FtZU9yaWdpbiIsIm1zaWUiLCJ1cmxQYXJzaW5nTm9kZSIsIm9yaWdpblVSTCIsInJlc29sdmVVUkwiLCJocmVmIiwic2V0QXR0cmlidXRlIiwic2VhcmNoIiwiaGFzaCIsImhvc3RuYW1lIiwicG9ydCIsInBhdGhuYW1lIiwicmVxdWVzdFVSTCIsIkNhbmNlbCIsIl9fQ0FOQ0VMX18iLCJDYW5jZWxfMSIsImRlZmF1bHRzIiwieGhyIiwieGhyQWRhcHRlciIsImRpc3BhdGNoWGhyUmVxdWVzdCIsInJlcXVlc3REYXRhIiwicmVxdWVzdEhlYWRlcnMiLCJyZXNwb25zZVR5cGUiLCJvbkNhbmNlbGVkIiwiY2FuY2VsVG9rZW4iLCJ1bnN1YnNjcmliZSIsInNpZ25hbCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJYTUxIdHRwUmVxdWVzdCIsImF1dGgiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwidW5lc2NhcGUiLCJBdXRob3JpemF0aW9uIiwiYnRvYSIsImZ1bGxQYXRoIiwib25sb2FkZW5kIiwicmVzcG9uc2VIZWFkZXJzIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwicmVzcG9uc2VEYXRhIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzVGV4dCIsIl9yZXNvbHZlIiwiX3JlamVjdCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsImhhbmRsZUxvYWQiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VVUkwiLCJvbmFib3J0IiwiaGFuZGxlQWJvcnQiLCJvbmVycm9yIiwiaGFuZGxlRXJyb3IiLCJvbnRpbWVvdXQiLCJoYW5kbGVUaW1lb3V0IiwidGltZW91dEVycm9yTWVzc2FnZSIsInRyYW5zaXRpb25hbCIsImNsYXJpZnlUaW1lb3V0RXJyb3IiLCJ4c3JmVmFsdWUiLCJ3aXRoQ3JlZGVudGlhbHMiLCJ4c3JmQ29va2llTmFtZSIsInhzcmZIZWFkZXJOYW1lIiwic2V0UmVxdWVzdEhlYWRlciIsIm9uRG93bmxvYWRQcm9ncmVzcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJvblVwbG9hZFByb2dyZXNzIiwidXBsb2FkIiwiY2FuY2VsIiwiYWJvcnQiLCJzdWJzY3JpYmUiLCJhYm9ydGVkIiwiREVGQVVMVF9DT05URU5UX1RZUEUiLCJzZXRDb250ZW50VHlwZUlmVW5zZXQiLCJnZXREZWZhdWx0QWRhcHRlciIsImFkYXB0ZXIiLCJzdHJpbmdpZnlTYWZlbHkiLCJyYXdWYWx1ZSIsImVuY29kZXIiLCJwYXJzZSIsInNpbGVudEpTT05QYXJzaW5nIiwiZm9yY2VkSlNPTlBhcnNpbmciLCJ0cmFuc2Zvcm1SZXF1ZXN0IiwidHJhbnNmb3JtUmVzcG9uc2UiLCJzdHJpY3RKU09OUGFyc2luZyIsIm1heENvbnRlbnRMZW5ndGgiLCJtYXhCb2R5TGVuZ3RoIiwiY29tbW9uIiwiZm9yRWFjaE1ldGhvZE5vRGF0YSIsImZvckVhY2hNZXRob2RXaXRoRGF0YSIsImRlZmF1bHRzXzEiLCJ0cmFuc2Zvcm1EYXRhIiwiZm5zIiwidHJhbnNmb3JtIiwiaXNDYW5jZWwiLCJ0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkIiwidGhyb3dJZlJlcXVlc3RlZCIsImRpc3BhdGNoUmVxdWVzdCIsImNsZWFuSGVhZGVyQ29uZmlnIiwib25BZGFwdGVyUmVzb2x1dGlvbiIsIm9uQWRhcHRlclJlamVjdGlvbiIsInJlYXNvbiIsIm1lcmdlQ29uZmlnIiwiY29uZmlnMSIsImNvbmZpZzIiLCJnZXRNZXJnZWRWYWx1ZSIsIm1lcmdlRGVlcFByb3BlcnRpZXMiLCJwcm9wIiwidmFsdWVGcm9tQ29uZmlnMiIsImRlZmF1bHRUb0NvbmZpZzIiLCJtZXJnZURpcmVjdEtleXMiLCJtZXJnZU1hcCIsImNvbXB1dGVDb25maWdWYWx1ZSIsImNvbmZpZ1ZhbHVlIiwiVkVSU0lPTiIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0b3IiLCJ0aGluZyIsImRlcHJlY2F0ZWRXYXJuaW5ncyIsImZvcm1hdE1lc3NhZ2UiLCJvcHQiLCJkZXNjIiwib3B0cyIsImFzc2VydE9wdGlvbnMiLCJzY2hlbWEiLCJhbGxvd1Vua25vd24iLCJBeGlvcyIsImluc3RhbmNlQ29uZmlnIiwiaW50ZXJjZXB0b3JzIiwiYm9vbGVhbiIsInJlcXVlc3RJbnRlcmNlcHRvckNoYWluIiwic3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzIiwidW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMiLCJpbnRlcmNlcHRvciIsInVuc2hpZnQiLCJyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4iLCJwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMiLCJwcm9taXNlIiwiY2hhaW4iLCJzaGlmdCIsIm5ld0NvbmZpZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsImdldFVyaSIsIkF4aW9zXzEiLCJDYW5jZWxUb2tlbiIsImV4ZWN1dG9yIiwicmVzb2x2ZVByb21pc2UiLCJwcm9taXNlRXhlY3V0b3IiLCJ0b2tlbiIsIl9saXN0ZW5lcnMiLCJvbmZ1bGZpbGxlZCIsImxpc3RlbmVyIiwic3BsaWNlIiwiYyIsIkNhbmNlbFRva2VuXzEiLCJzcHJlYWQiLCJjYWxsYmFjayIsImFyciIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImluc3RhbmNlIiwiYXhpb3MiLCJhbGwiLCJwcm9taXNlcyIsImF4aW9zTW9kdWxlIiwiQXhpb3NDbGllbnQiLCJyZXNwb25zZUhhbmRsZXIiLCJyZXF1ZXN0Q29uZmlnQnVpbGRlciIsImJ1aWxkIiwicmVxdWVzdENvbmZpZyIsInNlbmRSZXF1ZXN0IiwiSW5maW5pdHkiLCJ1biRKb2luIiwiRVMzX1NUUklOR1MiLCJzZXBhcmF0b3IiLCJzaGFtcyIsImhhc1N5bWJvbHMiLCJzeW0iLCJzeW1PYmoiLCJzeW1WYWwiLCJzeW1zIiwib3JpZ1N5bWJvbCIsImhhc1N5bWJvbFNoYW0iLCJoYXNOYXRpdmVTeW1ib2xzIiwiRVJST1JfTUVTU0FHRSIsInRvU3RyIiwiZnVuY1R5cGUiLCJpbXBsZW1lbnRhdGlvbiIsImJvdW5kIiwiYmluZGVyIiwiYm91bmRMZW5ndGgiLCJib3VuZEFyZ3MiLCJFbXB0eSIsImZ1bmN0aW9uQmluZCIsIiRTeW50YXhFcnJvciIsIlN5bnRheEVycm9yIiwiJEZ1bmN0aW9uIiwiJFR5cGVFcnJvciIsImdldEV2YWxsZWRDb25zdHJ1Y3RvciIsImV4cHJlc3Npb25TeW50YXgiLCIkZ09QRCIsInRocm93VHlwZUVycm9yIiwiVGhyb3dUeXBlRXJyb3IiLCJjYWxsZWVUaHJvd3MiLCJnT1BEdGhyb3dzIiwieCIsIm5lZWRzRXZhbCIsIlR5cGVkQXJyYXkiLCJVaW50OEFycmF5IiwiSU5UUklOU0lDUyIsIkFnZ3JlZ2F0ZUVycm9yIiwiQXRvbWljcyIsIkJpZ0ludCIsIkRhdGFWaWV3IiwiZGVjb2RlVVJJIiwiZW5jb2RlVVJJIiwiZXZhbCIsIkV2YWxFcnJvciIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJpc0Zpbml0ZSIsIk1hcCIsInBhcnNlRmxvYXQiLCJQcm94eSIsIlJhbmdlRXJyb3IiLCJSZWZlcmVuY2VFcnJvciIsIlJlZmxlY3QiLCJTZXQiLCJTaGFyZWRBcnJheUJ1ZmZlciIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIlVSSUVycm9yIiwiV2Vha1JlZiIsIldlYWtTZXQiLCJkb0V2YWwiLCJnZW4iLCJMRUdBQ1lfQUxJQVNFUyIsIiRjb25jYXQiLCIkc3BsaWNlQXBwbHkiLCIkcmVwbGFjZSIsIiRzdHJTbGljZSIsInJlUHJvcE5hbWUiLCJyZUVzY2FwZUNoYXIiLCJzdHJpbmdUb1BhdGgiLCJsYXN0IiwicXVvdGUiLCJzdWJTdHJpbmciLCJnZXRCYXNlSW50cmluc2ljIiwiYWxsb3dNaXNzaW5nIiwiaW50cmluc2ljTmFtZSIsImFsaWFzIiwiZ2V0SW50cmluc2ljIiwiR2V0SW50cmluc2ljIiwiaW50cmluc2ljQmFzZU5hbWUiLCJpbnRyaW5zaWMiLCJpbnRyaW5zaWNSZWFsTmFtZSIsInNraXBGdXJ0aGVyQ2FjaGluZyIsImlzT3duIiwicGFydCIsImFzeW5jR2VuRnVuY3Rpb24iLCJhc3luY0dlbkZ1bmN0aW9uUHJvdG90eXBlIiwiYXN5bmNHZW5Qcm90b3R5cGUiLCIkYXBwbHkiLCIkY2FsbCIsIiRyZWZsZWN0QXBwbHkiLCJjYWxsQmluZCIsImFwcGx5QmluZCIsIiRpbmRleE9mIiwiY2FsbEJvdW5kIiwiY2FsbEJvdW5kSW50cmluc2ljIiwiaGFzTWFwIiwibWFwU2l6ZURlc2NyaXB0b3IiLCJtYXBTaXplIiwibWFwRm9yRWFjaCIsImhhc1NldCIsInNldFNpemVEZXNjcmlwdG9yIiwic2V0U2l6ZSIsInNldEZvckVhY2giLCJoYXNXZWFrTWFwIiwid2Vha01hcEhhcyIsImhhc1dlYWtTZXQiLCJ3ZWFrU2V0SGFzIiwiYm9vbGVhblZhbHVlT2YiLCJiaWdJbnRWYWx1ZU9mIiwiZ09QUyIsInN5bVRvU3RyaW5nIiwiaXNFbnVtZXJhYmxlIiwiaW5zcGVjdEN1c3RvbSIsImN1c3RvbSIsImluc3BlY3RTeW1ib2wiLCJvYmplY3RJbnNwZWN0IiwiaW5zcGVjdF8iLCJkZXB0aCIsInNlZW4iLCJxdW90ZVN0eWxlIiwibWF4U3RyaW5nTGVuZ3RoIiwiY3VzdG9tSW5zcGVjdCIsImluZGVudCIsImluc3BlY3RTdHJpbmciLCJtYXhEZXB0aCIsImdldEluZGVudCIsImluc3BlY3QiLCJmcm9tIiwibm9JbmRlbnQiLCJuZXdPcHRzIiwibmFtZU9mIiwiYXJyT2JqS2V5cyIsInN5bVN0cmluZyIsIm1hcmtCb3hlZCIsImlzRWxlbWVudCIsInMiLCJub2RlTmFtZSIsImF0dHJzIiwiYXR0cmlidXRlcyIsIndyYXBRdW90ZXMiLCJjaGlsZE5vZGVzIiwieHMiLCJzaW5nbGVMaW5lVmFsdWVzIiwiaW5kZW50ZWRKb2luIiwiaXNFcnJvciIsImlzTWFwIiwibWFwUGFydHMiLCJjb2xsZWN0aW9uT2YiLCJpc1NldCIsInNldFBhcnRzIiwiaXNXZWFrTWFwIiwid2Vha0NvbGxlY3Rpb25PZiIsImlzV2Vha1NldCIsImlzQmlnSW50IiwiaXNCb29sZWFuIiwiaXNSZWdFeHAiLCJ5cyIsImRlZmF1bHRTdHlsZSIsInF1b3RlQ2hhciIsIm0iLCJIVE1MRWxlbWVudCIsImdldEF0dHJpYnV0ZSIsInJlbWFpbmluZyIsInRyYWlsZXIiLCJsb3dieXRlIiwiZW50cmllcyIsImpvaW5lZEVudHJpZXMiLCJiYXNlSW5kZW50IiwiYmFzZSIsImxpbmVKb2luZXIiLCJpc0FyciIsIiRXZWFrTWFwIiwiJE1hcCIsIiR3ZWFrTWFwR2V0IiwiJHdlYWtNYXBTZXQiLCIkd2Vha01hcEhhcyIsIiRtYXBHZXQiLCIkbWFwU2V0IiwiJG1hcEhhcyIsImxpc3RHZXROb2RlIiwibGlzdCIsImN1cnIiLCJsaXN0R2V0Iiwib2JqZWN0cyIsIm5vZGUiLCJsaXN0U2V0IiwibGlzdEhhcyIsInNpZGVDaGFubmVsIiwiZ2V0U2lkZUNoYW5uZWwiLCIkd20iLCIkbSIsIiRvIiwiY2hhbm5lbCIsImFzc2VydCIsInBlcmNlbnRUd2VudGllcyIsIkZvcm1hdCIsIlJGQzE3MzgiLCJSRkMzOTg2IiwiZm9ybWF0cyIsImZvcm1hdHRlcnMiLCJoZXhUYWJsZSIsImNvbXBhY3RRdWV1ZSIsIml0ZW0iLCJjb21wYWN0ZWQiLCJhcnJheVRvT2JqZWN0IiwicGxhaW5PYmplY3RzIiwiYWxsb3dQcm90b3R5cGVzIiwibWVyZ2VUYXJnZXQiLCJ0YXJnZXRJdGVtIiwiYXNzaWduU2luZ2xlU291cmNlIiwiZGVjb2RlIiwiZGVjb2RlciIsImNoYXJzZXQiLCJzdHJXaXRob3V0UGx1cyIsImRlZmF1bHRFbmNvZGVyIiwia2luZCIsImZvcm1hdCIsImVzY2FwZSIsIiQwIiwib3V0IiwiY29tcGFjdCIsIm8iLCJyZWZzIiwiY29tYmluZSIsIm1heWJlTWFwIiwibWFwcGVkIiwiYXJyYXlQcmVmaXhHZW5lcmF0b3JzIiwiYnJhY2tldHMiLCJwcmVmaXgiLCJjb21tYSIsImluZGljZXMiLCJyZXBlYXQiLCJwdXNoVG9BcnJheSIsInZhbHVlT3JBcnJheSIsInRvSVNPIiwiZGVmYXVsdEZvcm1hdCIsImFkZFF1ZXJ5UHJlZml4IiwiYWxsb3dEb3RzIiwiY2hhcnNldFNlbnRpbmVsIiwiZGVsaW1pdGVyIiwiZW5jb2RlVmFsdWVzT25seSIsImZvcm1hdHRlciIsInNlcmlhbGl6ZURhdGUiLCJkYXRlIiwic2tpcE51bGxzIiwic3RyaWN0TnVsbEhhbmRsaW5nIiwiaXNOb25OdWxsaXNoUHJpbWl0aXZlIiwic2VudGluZWwiLCJnZW5lcmF0ZUFycmF5UHJlZml4Iiwic29ydCIsInRtcFNjIiwic3RlcCIsImZpbmRGbGFnIiwia2V5VmFsdWUiLCJ2YWx1ZXNBcnJheSIsInZhbHVlc0pvaW5lZCIsIm9iaktleXMiLCJrZXlQcmVmaXgiLCJ2YWx1ZVNpZGVDaGFubmVsIiwibm9ybWFsaXplU3RyaW5naWZ5T3B0aW9ucyIsInN0cmluZ2lmeV8xIiwiYXJyYXlGb3JtYXQiLCJqb2luZWQiLCJhbGxvd1NwYXJzZSIsImFycmF5TGltaXQiLCJpZ25vcmVRdWVyeVByZWZpeCIsImludGVycHJldE51bWVyaWNFbnRpdGllcyIsInBhcmFtZXRlckxpbWl0IiwicGFyc2VBcnJheXMiLCJudW1iZXJTdHIiLCJmcm9tQ2hhckNvZGUiLCJwYXJzZUFycmF5VmFsdWUiLCJpc29TZW50aW5lbCIsInBhcnNlVmFsdWVzIiwicGFyc2VRdWVyeVN0cmluZ1ZhbHVlcyIsImNsZWFuU3RyIiwibGltaXQiLCJza2lwSW5kZXgiLCJicmFja2V0RXF1YWxzUG9zIiwiZW5jb2RlZFZhbCIsInBhcnNlT2JqZWN0IiwidmFsdWVzUGFyc2VkIiwibGVhZiIsInJvb3QiLCJjbGVhblJvb3QiLCJwYXJzZUtleXMiLCJwYXJzZVF1ZXJ5U3RyaW5nS2V5cyIsImdpdmVuS2V5IiwiY2hpbGQiLCJzZWdtZW50IiwicGFyZW50Iiwibm9ybWFsaXplUGFyc2VPcHRpb25zIiwidGVtcE9iaiIsIm5ld09iaiIsImxpYiIsIl9oYXNhdG9iIiwiYXRvYiIsIl9oYXNidG9hIiwiX2hhc0J1ZmZlciIsIkJ1ZmZlciIsIl9URCIsIlRleHREZWNvZGVyIiwiX1RFIiwiVGV4dEVuY29kZXIiLCJiNjRjaCIsImI2NGNocyIsImI2NHRhYiIsInRhYiIsImI2NHJlIiwiX2Zyb21DQyIsIl9VOEFmcm9tIiwiX21rVXJpU2FmZSIsIm0wIiwiX3RpZHlCNjQiLCJidG9hUG9seWZpbGwiLCJiaW4iLCJ1MzIiLCJjMCIsImMxIiwiYzIiLCJhc2MiLCJwYWQiLCJzdWJzdHJpbmciLCJfYnRvYSIsIl9mcm9tVWludDhBcnJheSIsInU4YSIsIm1heGFyZ3MiLCJzdHJzIiwic3ViYXJyYXkiLCJmcm9tVWludDhBcnJheSIsInVybHNhZmUiLCJjYl91dG9iIiwiY2MiLCJyZV91dG9iIiwidXRvYiIsInUiLCJfZW5jb2RlIiwicmVfYnRvdSIsImNiX2J0b3UiLCJjY2NjIiwiY3AiLCJidG91IiwiYXRvYlBvbHlmaWxsIiwidTI0IiwicjEiLCJyMiIsIl9hdG9iIiwiX3RvVWludDhBcnJheSIsInRvVWludDhBcnJheSIsIl91blVSSSIsIl9kZWNvZGUiLCJpc1ZhbGlkIiwiX25vRW51bSIsImV4dGVuZFN0cmluZyIsIl9hZGQiLCJib2R5IiwiZXh0ZW5kVWludDhBcnJheSIsImV4dGVuZEJ1aWx0aW5zIiwiZ0Jhc2U2NCIsImZyb21CYXNlNjQiLCJ0b0Jhc2U2NCIsImVuY29kZVVSTCIsIlRIUkVTSE9MRF9BVk9JRF9SRVFVRVNUX1VSTF9UT09fTEFSR0UiLCJLaW50b25lUmVxdWVzdENvbmZpZ0J1aWxkZXIiLCJiYXNpY0F1dGgiLCJjbGllbnRDZXJ0QXV0aCIsInByb3h5IiwicmVxdWVzdFRva2VuIiwicmVxdWVzdFVybCIsImJ1aWxkUmVxdWVzdFVybCIsImJ1aWxkRGF0YSIsImdldEhlYWRlcnMiLCJxcyIsIl9fUkVRVUVTVF9UT0tFTl9fIiwiYmFzaWNBdXRoSGVhZGVycyIsIkJhc2U2NCIsInBsYXRmb3JtRGVwc0hlYWRlcnMiLCJjb21tb25IZWFkZXJzIiwiYXBpVG9rZW4iLCJvQXV0aFRva2VuIiwiRGF0ZVByb3RvdHlwZSIsIklOVkFMSURfREFURSIsIlRPX1NUUklORyIsInVuJERhdGVUb1N0cmluZyIsIlBST1BFUl9GVU5DVElPTl9OQU1FIiwiJHRvU3RyaW5nIiwicmVnRXhwRmxhZ3MiLCJuJFRvU3RyaW5nIiwiZ2V0RmxhZ3MiLCJOT1RfR0VORVJJQyIsIklOQ09SUkVDVF9OQU1FIiwicCIsInJmIiwiS2ludG9uZUFib3J0U2VhcmNoRXJyb3IiLCJLaW50b25lUmVzdEFQSUVycm9yIiwiYnVpbGRFcnJvclJlc3BvbnNlRGF0ZVdpdGhJbmRleCIsImZpbmRFcnJvclJlc3BvbnNlRGF0YVdpdGhJbmRleCIsIktpbnRvbmVSZXNwb25zZUhhbmRsZXIiLCJlbmFibGVBYm9ydFNlYXJjaEVycm9yIiwiaGFuZGxlU3VjY2Vzc1Jlc3BvbnNlIiwiaGFuZGxlRXJyb3JSZXNwb25zZSIsImVycm9yUmVzcG9uc2UiLCJidWlsZERpc2NyaW1pbmF0ZWRBdXRoIiwiS2ludG9uZVJlc3RBUElDbGllbnQiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJmZWF0dXJlRmxhZ3MiLCJodHRwQ2xpZW50IiwiRGVmYXVsdEh0dHBDbGllbnQiLCJidWxrUmVxdWVzdF8iLCJ2YWxpZGF0ZUd1ZXN0U3BhY2VJZCIsImJyb3dzZXJEZXBzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7RUFjTyxJQUFNQSxZQUEwQixHQUFHO0VBQ3hDQyxFQUFBQSxnQkFBZ0IsRUFBRSw0QkFBTTtFQUN0QixVQUFNLElBQUlDLEtBQUosQ0FBVSxpQkFBVixDQUFOO0VBQ0QsR0FIdUM7RUFJeENDLEVBQUFBLGVBQWUsRUFBRSwyQkFBTTtFQUNyQixVQUFNLElBQUlELEtBQUosQ0FBVSxpQkFBVixDQUFOO0VBQ0QsR0FOdUM7RUFPeENFLEVBQUFBLGNBQWMsRUFBRSwwQkFBTTtFQUNwQixVQUFN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
10825
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2ludG9uZVJlc3RBUElDbGllbnQuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9wbGF0Zm9ybS9pbmRleC50cyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jb25zdHJ1Y3Rvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIi4uL3NyYy9wbGF0Zm9ybS9VbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3IudHMiLCIuLi9zcmMvcGxhdGZvcm0vYnJvd3Nlci50cyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiLCIuLi9zcmMvdXJsLnRzIiwiLi4vc3JjL2NsaWVudC9CdWxrUmVxdWVzdENsaWVudC50cyIsIi4uL3NyYy9jbGllbnQvQXBwQ2xpZW50LnRzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1hc3NpZ24uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24uanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtc3RpY2t5LWhlbHBlcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5tYXRjaC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RoaXMtbnVtYmVyLXZhbHVlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3doaXRlc3BhY2VzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy10cmltLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5kZXgtb2YuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmV2ZXJ5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC10by1zdHJpbmcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmlzLWFycmF5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1yZWR1Y2UuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnJlZHVjZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiLCIuLi9zcmMvZXJyb3IvS2ludG9uZUFsbFJlY29yZHNFcnJvci50cyIsIi4uL3NyYy9jbGllbnQvUmVjb3JkQ2xpZW50LnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Zvcm0tZGF0YS9saWIvYnJvd3Nlci5qcyIsIi4uL3NyYy9jbGllbnQvRmlsZUNsaWVudC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9JbnRlcmNlcHRvck1hbmFnZXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcm9sbHVwLXBsdWdpbi1ub2RlLWdsb2JhbHMvc3JjL2dsb2JhbC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9wcm9jZXNzLWVzNi9icm93c2VyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZW5oYW5jZUVycm9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2Nvb2tpZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21iaW5lVVJMcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9idWlsZEZ1bGxQYXRoLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9tZXJnZUNvbmZpZy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZW52L2RhdGEuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0F4aW9zLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsVG9rZW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQXhpb3NFcnJvci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCIuLi9zcmMvaHR0cC9BeGlvc0NsaWVudC50cyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9zaGFtcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2ltcGxlbWVudGF0aW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Z1bmN0aW9uLWJpbmQvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvaGFzL3NyYy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9nZXQtaW50cmluc2ljL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NpZGUtY2hhbm5lbC9ub2RlX21vZHVsZXMvY2FsbC1iaW5kL25vZGVfbW9kdWxlcy9nZXQtaW50cmluc2ljL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NpZGUtY2hhbm5lbC9ub2RlX21vZHVsZXMvY2FsbC1iaW5kL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NpZGUtY2hhbm5lbC9ub2RlX21vZHVsZXMvY2FsbC1iaW5kL2NhbGxCb3VuZC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zaWRlLWNoYW5uZWwvbm9kZV9tb2R1bGVzL29iamVjdC1pbnNwZWN0L2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NpZGUtY2hhbm5lbC9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9xcy9saWIvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9xcy9saWIvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvcXMvbGliL3N0cmluZ2lmeS5qcyIsIi4uL25vZGVfbW9kdWxlcy9xcy9saWIvcGFyc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvcXMvbGliL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2pzLWJhc2U2NC9iYXNlNjQubWpzIiwiLi4vc3JjL0tpbnRvbmVSZXF1ZXN0Q29uZmlnQnVpbGRlci50cyIsIi4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuZGF0ZS50by1zdHJpbmcuanMiLCIuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiLCIuLi9zcmMvZXJyb3IvS2ludG9uZUFib3J0U2VhcmNoRXJyb3IudHMiLCIuLi9zcmMvZXJyb3IvS2ludG9uZVJlc3RBUElFcnJvci50cyIsIi4uL3NyYy9LaW50b25lUmVzcG9uc2VIYW5kbGVyLnRzIiwiLi4vc3JjL0tpbnRvbmVSZXN0QVBJQ2xpZW50LnRzIiwiLi4vc3JjL2luZGV4LmJyb3dzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlzY3JpbWluYXRlZEF1dGggfSBmcm9tIFwiLi4vdHlwZXMvYXV0aFwiO1xudHlwZSBQbGF0Zm9ybURlcHMgPSB7XG4gIHJlYWRGaWxlRnJvbVBhdGg6IChcbiAgICBmaWxlUGF0aDogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9PjtcbiAgZ2V0UmVxdWVzdFRva2VuOiAoKSA9PiBQcm9taXNlPHN0cmluZz47XG4gIGdldERlZmF1bHRBdXRoOiAoKSA9PiBEaXNjcmltaW5hdGVkQXV0aDtcbiAgYnVpbGRQbGF0Zm9ybURlcGVuZGVudENvbmZpZzogKHBhcmFtczogb2JqZWN0KSA9PiBvYmplY3Q7XG4gIGJ1aWxkSGVhZGVyczogKHBhcmFtczogeyB1c2VyQWdlbnQ/OiBzdHJpbmcgfSkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgYnVpbGRGb3JtRGF0YVZhbHVlOiAoZGF0YTogdW5rbm93bikgPT4gdW5rbm93bjtcbiAgYnVpbGRCYXNlVXJsOiAoYmFzZVVybD86IHN0cmluZykgPT4gc3RyaW5nO1xuICBnZXRWZXJzaW9uOiAoKSA9PiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgcGxhdGZvcm1EZXBzOiBQbGF0Zm9ybURlcHMgPSB7XG4gIHJlYWRGaWxlRnJvbVBhdGg6ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gIH0sXG4gIGdldFJlcXVlc3RUb2tlbjogKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfSxcbiAgZ2V0RGVmYXVsdEF1dGg6ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gIH0sXG4gIGJ1aWxkUGxhdGZvcm1EZXBlbmRlbnRDb25maWc6ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gIH0sXG4gIGJ1aWxkSGVhZGVyczogKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfSxcbiAgYnVpbGRGb3JtRGF0YVZhbHVlOiAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICB9LFxuICBidWlsZEJhc2VVcmw6ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gIH0sXG4gIGdldFZlcnNpb246ICgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgaW5qZWN0UGxhdGZvcm1EZXBzID0gKGRlcHM6IFBhcnRpYWw8UGxhdGZvcm1EZXBzPikgPT4ge1xuICBpZiAoZGVwcy5yZWFkRmlsZUZyb21QYXRoKSB7XG4gICAgcGxhdGZvcm1EZXBzLnJlYWRGaWxlRnJvbVBhdGggPSBkZXBzLnJlYWRGaWxlRnJvbVBhdGg7XG4gIH1cbiAgaWYgKGRlcHMuZ2V0UmVxdWVzdFRva2VuKSB7XG4gICAgcGxhdGZvcm1EZXBzLmdldFJlcXVlc3RUb2tlbiA9IGRlcHMuZ2V0UmVxdWVzdFRva2VuO1xuICB9XG4gIGlmIChkZXBzLmdldERlZmF1bHRBdXRoKSB7XG4gICAgcGxhdGZvcm1EZXBzLmdldERlZmF1bHRBdXRoID0gZGVwcy5nZXREZWZhdWx0QXV0aDtcbiAgfVxuICBpZiAoZGVwcy5idWlsZFBsYXRmb3JtRGVwZW5kZW50Q29uZmlnKSB7XG4gICAgcGxhdGZvcm1EZXBzLmJ1aWxkUGxhdGZvcm1EZXBlbmRlbnRDb25maWcgPVxuICAgICAgZGVwcy5idWlsZFBsYXRmb3JtRGVwZW5kZW50Q29uZmlnO1xuICB9XG4gIGlmIChkZXBzLmJ1aWxkSGVhZGVycykge1xuICAgIHBsYXRmb3JtRGVwcy5idWlsZEhlYWRlcnMgPSBkZXBzLmJ1aWxkSGVhZGVycztcbiAgfVxuICBpZiAoZGVwcy5idWlsZEZvcm1EYXRhVmFsdWUpIHtcbiAgICBwbGF0Zm9ybURlcHMuYnVpbGRGb3JtRGF0YVZhbHVlID0gZGVwcy5idWlsZEZvcm1EYXRhVmFsdWU7XG4gIH1cbiAgaWYgKGRlcHMuYnVpbGRCYXNlVXJsKSB7XG4gICAgcGxhdGZvcm1EZXBzLmJ1aWxkQmFzZVVybCA9IGRlcHMuYnVpbGRCYXNlVXJsO1xuICB9XG4gIGlmIChkZXBzLmdldFZlcnNpb24pIHtcbiAgICBwbGF0Zm9ybURlcHMuZ2V0VmVyc2lvbiA9IGRlcHMuZ2V0VmVyc2lvbjtcbiAgfVxufTtcbiIsInZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgMSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSlbMV0gIT0gNztcbn0pO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwidmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwidmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBiaW5kID0gRnVuY3Rpb25Qcm90b3R5cGUuYmluZDtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpcyA9IE5BVElWRV9CSU5EICYmIGJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZm4gJiYgdW5jdXJyeVRoaXMoZm4pO1xufSA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZm4gJiYgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoe30udG9TdHJpbmcpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gc3RyaW5nU2xpY2UodG9TdHJpbmcoaXQpLCA4LCAtMSk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyIE9iamVjdCA9IGdsb2JhbC5PYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICFPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PSAnU3RyaW5nJyA/IHNwbGl0KGl0LCAnJykgOiBPYmplY3QoaXQpO1xufSA6IE9iamVjdDtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsIi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmd1bWVudCA9PSAnZnVuY3Rpb24nO1xufTtcbiIsInZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKSA6IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKHt9LmlzUHJvdG90eXBlT2YpO1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignbmF2aWdhdG9yJywgJ3VzZXJBZ2VudCcpIHx8ICcnO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICByZXR1cm4gIVN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBPYmplY3QgPSBnbG9iYWwuT2JqZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIGlzUHJvdG90eXBlT2YoJFN5bWJvbC5wcm90b3R5cGUsIE9iamVjdChpdCkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiBTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG4iLCJ2YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBmdW5jID09IG51bGwgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZTtcbiIsInZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjIxLjEnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyMiBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG4gIGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjIxLjEvTElDRU5TRScsXG4gIHNvdXJjZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzJ1xufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciBPYmplY3QgPSBnbG9iYWwuT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCJ2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcygxLjAudG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyB0b1N0cmluZygrK2lkICsgcG9zdGZpeCwgMzYpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgc3ltYm9sRm9yID0gU3ltYm9sICYmIFN5bWJvbFsnZm9yJ107XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkgfHwgIShOQVRJVkVfU1lNQk9MIHx8IHR5cGVvZiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPT0gJ3N0cmluZycpKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9uID0gJ1N5bWJvbC4nICsgbmFtZTtcbiAgICBpZiAoTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKSkge1xuICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sW25hbWVdO1xuICAgIH0gZWxzZSBpZiAoVVNFX1NZTUJPTF9BU19VSUQgJiYgc3ltYm9sRm9yKSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBzeW1ib2xGb3IoZGVzY3JpcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBjcmVhdGVXZWxsS25vd25TeW1ib2woZGVzY3JpcHRpb24pO1xuICAgIH1cbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwidmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzT3duKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYsIE8sIFApLCBPW1BdKTtcbn07XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9IDQyO1xufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IFR5cGVFcnJvcihTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBFTlVNRVJBQkxFID0gJ2VudW1lcmFibGUnO1xudmFyIENPTkZJR1VSQUJMRSA9ICdjb25maWd1cmFibGUnO1xudmFyIFdSSVRBQkxFID0gJ3dyaXRhYmxlJztcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKHR5cGVvZiBPID09PSAnZnVuY3Rpb24nICYmIFAgPT09ICdwcm90b3R5cGUnICYmICd2YWx1ZScgaW4gQXR0cmlidXRlcyAmJiBXUklUQUJMRSBpbiBBdHRyaWJ1dGVzICYmICFBdHRyaWJ1dGVzW1dSSVRBQkxFXSkge1xuICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50W1dSSVRBQkxFXSkge1xuICAgICAgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IENPTkZJR1VSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tDT05GSUdVUkFCTEVdIDogY3VycmVudFtDT05GSUdVUkFCTEVdLFxuICAgICAgICBlbnVtZXJhYmxlOiBFTlVNRVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0VOVU1FUkFCTEVdIDogY3VycmVudFtFTlVNRVJBQkxFXSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfSByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xufSA6ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KGluc3BlY3RTb3VyY2UoV2Vha01hcCkpO1xuIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsInZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXdlYWstbWFwJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIHZhciB3bWdldCA9IHVuY3VycnlUaGlzKHN0b3JlLmdldCk7XG4gIHZhciB3bWhhcyA9IHVuY3VycnlUaGlzKHN0b3JlLmhhcyk7XG4gIHZhciB3bXNldCA9IHVuY3VycnlUaGlzKHN0b3JlLnNldCk7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAod21oYXMoc3RvcmUsIGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgd21zZXQoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQoc3RvcmUsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtaGFzKHN0b3JlLCBpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkNPTkZJR1VSQUJMRTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHVuc2FmZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMudW5zYWZlIDogZmFsc2U7XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zID8gISFvcHRpb25zLmVudW1lcmFibGUgOiBmYWxzZTtcbiAgdmFyIG5vVGFyZ2V0R2V0ID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5ub1RhcmdldEdldCA6IGZhbHNlO1xuICB2YXIgbmFtZSA9IG9wdGlvbnMgJiYgb3B0aW9ucy5uYW1lICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5hbWUgOiBrZXk7XG4gIHZhciBzdGF0ZTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSB7XG4gICAgaWYgKFN0cmluZyhuYW1lKS5zbGljZSgwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgICBuYW1lID0gJ1snICsgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15TeW1ib2xcXCgoW14pXSopXFwpLywgJyQxJykgKyAnXSc7XG4gICAgfVxuICAgIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHZhbHVlLCAnbmFtZScsIG5hbWUpO1xuICAgIH1cbiAgICBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgICBpZiAoIXN0YXRlLnNvdXJjZSkge1xuICAgICAgc3RhdGUuc291cmNlID0gVEVNUExBVEUuam9pbih0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gICAgfVxuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gaXNDYWxsYWJsZSh0aGlzKSAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSk7XG4iLCJ2YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJPckluZmluaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIG51bWJlciA9ICthcmd1bWVudDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBzYWZlXG4gIHJldHVybiBudW1iZXIgIT09IG51bWJlciB8fCBudW1iZXIgPT09IDAgPyAwIDogKG51bWJlciA+IDAgPyBmbG9vciA6IGNlaWwpKG51bWJlcik7XG59O1xuIiwidmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwidmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gYXJndW1lbnQgPiAwID8gbWluKHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCJ2YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsInZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzT3duKGhpZGRlbktleXMsIGtleSkgJiYgaGFzT3duKE8sIGtleSkgJiYgcHVzaChyZXN1bHQsIGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXNPd24oTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcHVzaChyZXN1bHQsIGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChrZXlzLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuIiwidmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgZXhjZXB0aW9ucykge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkgJiYgIShleGNlcHRpb25zICYmIGhhc093bihleGNlcHRpb25zLCBrZXkpKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgIH1cbiAgfVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5ub1RhcmdldEdldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNhcnJheVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWlzYXJyYXkgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJndW1lbnQpID09ICdBcnJheSc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9Qcm9wZXJ0eUtleShrZXkpO1xuICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIE9iamVjdCA9IGdsb2JhbC5PYmplY3Q7XG5cbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PSAnT2JqZWN0JyAmJiBpc0NhbGxhYmxlKE8uY2FsbGVlKSA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcblxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgZW1wdHkgPSBbXTtcbnZhciBjb25zdHJ1Y3QgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpO1xudmFyIGNvbnN0cnVjdG9yUmVnRXhwID0gL15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLztcbnZhciBleGVjID0gdW5jdXJyeVRoaXMoY29uc3RydWN0b3JSZWdFeHAuZXhlYyk7XG52YXIgSU5DT1JSRUNUX1RPX1NUUklORyA9ICFjb25zdHJ1Y3RvclJlZ0V4cC5leGVjKG5vb3ApO1xuXG52YXIgaXNDb25zdHJ1Y3Rvck1vZGVybiA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0cnVjdChub29wLCBlbXB0eSwgYXJndW1lbnQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxudmFyIGlzQ29uc3RydWN0b3JMZWdhY3kgPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChjbGFzc29mKGFyZ3VtZW50KSkge1xuICAgIGNhc2UgJ0FzeW5jRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0dlbmVyYXRvckZ1bmN0aW9uJzpcbiAgICBjYXNlICdBc3luY0dlbmVyYXRvckZ1bmN0aW9uJzogcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gd2UgY2FuJ3QgY2hlY2sgLnByb3RvdHlwZSBzaW5jZSBjb25zdHJ1Y3RvcnMgcHJvZHVjZWQgYnkgLmJpbmQgaGF2ZW4ndCBpdFxuICAgIC8vIGBGdW5jdGlvbiN0b1N0cmluZ2AgdGhyb3dzIG9uIHNvbWUgYnVpbHQtaXQgZnVuY3Rpb24gaW4gc29tZSBsZWdhY3kgZW5naW5lc1xuICAgIC8vIChmb3IgZXhhbXBsZSwgYERPTVF1YWRgIGFuZCBzaW1pbGFyIGluIEZGNDEtKVxuICAgIHJldHVybiBJTkNPUlJFQ1RfVE9fU1RSSU5HIHx8ICEhZXhlYyhjb25zdHJ1Y3RvclJlZ0V4cCwgaW5zcGVjdFNvdXJjZShhcmd1bWVudCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5pc0NvbnN0cnVjdG9yTGVnYWN5LnNoYW0gPSB0cnVlO1xuXG4vLyBgSXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gIWNvbnN0cnVjdCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsZWQ7XG4gIHJldHVybiBpc0NvbnN0cnVjdG9yTW9kZXJuKGlzQ29uc3RydWN0b3JNb2Rlcm4uY2FsbClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihPYmplY3QpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oZnVuY3Rpb24gKCkgeyBjYWxsZWQgPSB0cnVlOyB9KVxuICAgIHx8IGNhbGxlZDtcbn0pID8gaXNDb25zdHJ1Y3RvckxlZ2FjeSA6IGlzQ29uc3RydWN0b3JNb2Rlcm47XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgQXJyYXkgPSBnbG9iYWwuQXJyYXk7XG5cbi8vIGEgcGFydCBvZiBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5KSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKGlzQ29uc3RydWN0b3IoQykgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBlbHNlIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQztcbn07XG4iLCJ2YXIgYXJyYXlTcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5LCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoYXJyYXlTcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWxBcnJheSkpKGxlbmd0aCA9PT0gMCA/IDAgOiBsZW5ndGgpO1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgLy8gV2UgY2FuJ3QgdXNlIHRoaXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4gIC8vIGRlb3B0aW1pemF0aW9uIGFuZCBzZXJpb3VzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzdcbiAgcmV0dXJuIFY4X1ZFUlNJT04gPj0gNTEgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJyYXkgPSBbXTtcbiAgICB2YXIgY29uc3RydWN0b3IgPSBhcnJheS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgIGNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHsgZm9vOiAxIH07XG4gICAgfTtcbiAgICByZXR1cm4gYXJyYXlbTUVUSE9EX05BTUVdKEJvb2xlYW4pLmZvbyAhPT0gMTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIFY4X1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcblxudmFyIElTX0NPTkNBVF9TUFJFQURBQkxFID0gd2VsbEtub3duU3ltYm9sKCdpc0NvbmNhdFNwcmVhZGFibGUnKTtcbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gMHgxRkZGRkZGRkZGRkZGRjtcbnZhciBNQVhJTVVNX0FMTE9XRURfSU5ERVhfRVhDRUVERUQgPSAnTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbi8vIGRlb3B0aW1pemF0aW9uIGFuZCBzZXJpb3VzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc5XG52YXIgSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCA9IFY4X1ZFUlNJT04gPj0gNTEgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIGFycmF5W0lTX0NPTkNBVF9TUFJFQURBQkxFXSA9IGZhbHNlO1xuICByZXR1cm4gYXJyYXkuY29uY2F0KClbMF0gIT09IGFycmF5O1xufSk7XG5cbnZhciBTUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdjb25jYXQnKTtcblxudmFyIGlzQ29uY2F0U3ByZWFkYWJsZSA9IGZ1bmN0aW9uIChPKSB7XG4gIGlmICghaXNPYmplY3QoTykpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNwcmVhZGFibGUgPSBPW0lTX0NPTkNBVF9TUFJFQURBQkxFXTtcbiAgcmV0dXJuIHNwcmVhZGFibGUgIT09IHVuZGVmaW5lZCA/ICEhc3ByZWFkYWJsZSA6IGlzQXJyYXkoTyk7XG59O1xuXG52YXIgRk9SQ0VEID0gIUlTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgfHwgIVNQRUNJRVNfU1VQUE9SVDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5jb25jYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuY29uY2F0XG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAaXNDb25jYXRTcHJlYWRhYmxlIGFuZCBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIGNvbmNhdDogZnVuY3Rpb24gY29uY2F0KGFyZykge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIEEgPSBhcnJheVNwZWNpZXNDcmVhdGUoTywgMCk7XG4gICAgdmFyIG4gPSAwO1xuICAgIHZhciBpLCBrLCBsZW5ndGgsIGxlbiwgRTtcbiAgICBmb3IgKGkgPSAtMSwgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBFID0gaSA9PT0gLTEgPyBPIDogYXJndW1lbnRzW2ldO1xuICAgICAgaWYgKGlzQ29uY2F0U3ByZWFkYWJsZShFKSkge1xuICAgICAgICBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShFKTtcbiAgICAgICAgaWYgKG4gKyBsZW4gPiBNQVhfU0FGRV9JTlRFR0VSKSB0aHJvdyBUeXBlRXJyb3IoTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEKTtcbiAgICAgICAgZm9yIChrID0gMDsgayA8IGxlbjsgaysrLCBuKyspIGlmIChrIGluIEUpIGNyZWF0ZVByb3BlcnR5KEEsIG4sIEVba10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG4gPj0gTUFYX1NBRkVfSU5URUdFUikgdGhyb3cgVHlwZUVycm9yKE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCk7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KEEsIG4rKywgRSk7XG4gICAgICB9XG4gICAgfVxuICAgIEEubGVuZ3RoID0gbjtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIEZVTkNUSU9OX05BTUVfRVhJU1RTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5FWElTVFM7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb25Qcm90b3R5cGUudG9TdHJpbmcpO1xudmFyIG5hbWVSRSA9IC9mdW5jdGlvblxcYig/Olxcc3xcXC9cXCpbXFxTXFxzXSo/XFwqXFwvfFxcL1xcL1teXFxuXFxyXSpbXFxuXFxyXSspKihbXlxccygvXSopLztcbnZhciByZWdFeHBFeGVjID0gdW5jdXJyeVRoaXMobmFtZVJFLmV4ZWMpO1xudmFyIE5BTUUgPSAnbmFtZSc7XG5cbi8vIEZ1bmN0aW9uIGluc3RhbmNlcyBgLm5hbWVgIHByb3BlcnR5XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWZ1bmN0aW9uLWluc3RhbmNlcy1uYW1lXG5pZiAoREVTQ1JJUFRPUlMgJiYgIUZVTkNUSU9OX05BTUVfRVhJU1RTKSB7XG4gIGRlZmluZVByb3BlcnR5KEZ1bmN0aW9uUHJvdG90eXBlLCBOQU1FLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHJlZ0V4cEV4ZWMobmFtZVJFLCBmdW5jdGlvblRvU3RyaW5nKHRoaXMpKVsxXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmICh0eXBlb2YgYXJndW1lbnQgPT0gJ29iamVjdCcgfHwgaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3Qgc2V0IFwiICsgU3RyaW5nKGFyZ3VtZW50KSArICcgYXMgYSBwcm90b3R5cGUnKTtcbn07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAtLSBzYWZlICovXG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYVBvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2Zcbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1zZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBDT1JSRUNUX1NFVFRFUiA9IGZhbHNlO1xuICB2YXIgdGVzdCA9IHt9O1xuICB2YXIgc2V0dGVyO1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICBzZXR0ZXIgPSB1bmN1cnJ5VGhpcyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQpO1xuICAgIHNldHRlcih0ZXN0LCBbXSk7XG4gICAgQ09SUkVDVF9TRVRURVIgPSB0ZXN0IGluc3RhbmNlb2YgQXJyYXk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgYW5PYmplY3QoTyk7XG4gICAgYVBvc3NpYmxlUHJvdG90eXBlKHByb3RvKTtcbiAgICBpZiAoQ09SUkVDVF9TRVRURVIpIHNldHRlcihPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2ZcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgc2V0UHJvdG90eXBlT2Y6IHNldFByb3RvdHlwZU9mXG59KTtcbiIsInR5cGUgUGxhdGZvcm0gPSBcIkJyb3dzZXJcIiB8IFwiTm9kZS5qc1wiO1xuXG5leHBvcnQgY2xhc3MgVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtO1xuXG4gIGNvbnN0cnVjdG9yKHBsYXRmb3JtOiBQbGF0Zm9ybSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgVGhpcyBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluICR7cGxhdGZvcm19IGVudmlyb25tZW50YDtcbiAgICBzdXBlcihtZXNzYWdlKTtcblxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0Vycm9yI0N1c3RvbV9FcnJvcl9UeXBlc1xuICAgIC8vIE1haW50YWlucyBwcm9wZXIgc3RhY2sgdHJhY2UgZm9yIHdoZXJlIG91ciBlcnJvciB3YXMgdGhyb3duIChvbmx5IGF2YWlsYWJsZSBvbiBWOClcbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5uYW1lID0gXCJVbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3JcIjtcbiAgICB0aGlzLnBsYXRmb3JtID0gcGxhdGZvcm07XG5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvd2lraS9CcmVha2luZy1DaGFuZ2VzI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29ya1xuICAgIC8vIFNldCB0aGUgcHJvdG90eXBlIGV4cGxpY2l0bHkuXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBVbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3IgfSBmcm9tIFwiLi9VbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3JcIjtcbmltcG9ydCB7IERpc2NyaW1pbmF0ZWRBdXRoIH0gZnJvbSBcIi4uL3R5cGVzL2F1dGhcIjtcblxuZXhwb3J0IGNvbnN0IHJlYWRGaWxlRnJvbVBhdGggPSAoZmlsZVBhdGg6IHN0cmluZykgPT4ge1xuICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRQbGF0Zm9ybUVycm9yKFwiQnJvd3NlclwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZXF1ZXN0VG9rZW4gPSBhc3luYyAoKSA9PiB7XG4gIGlmIChcbiAgICB0eXBlb2Yga2ludG9uZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgIGtpbnRvbmUgIT09IG51bGwgJiZcbiAgICB0eXBlb2Yga2ludG9uZS5nZXRSZXF1ZXN0VG9rZW4gPT09IFwiZnVuY3Rpb25cIlxuICApIHtcbiAgICByZXR1cm4ga2ludG9uZS5nZXRSZXF1ZXN0VG9rZW4oKTtcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgZ2Fyb29uID09PSBcIm9iamVjdFwiICYmXG4gICAgZ2Fyb29uICE9PSBudWxsICYmXG4gICAgdHlwZW9mIGdhcm9vbi5jb25uZWN0Py5raW50b25lPy5nZXRSZXF1ZXN0VG9rZW4gPT09IFwiZnVuY3Rpb25cIlxuICApIHtcbiAgICByZXR1cm4gZ2Fyb29uLmNvbm5lY3Qua2ludG9uZS5nZXRSZXF1ZXN0VG9rZW4oKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcInNlc3Npb24gYXV0aGVudGljYXRpb24gbXVzdCBzcGVjaWZ5IGEgcmVxdWVzdCB0b2tlblwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0QXV0aCA9ICgpOiBEaXNjcmltaW5hdGVkQXV0aCA9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJzZXNzaW9uXCIsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRQbGF0Zm9ybURlcGVuZGVudENvbmZpZyA9ICgpID0+IHtcbiAgcmV0dXJuIHt9O1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkSGVhZGVycyA9ICgpID0+IHtcbiAgcmV0dXJuIHt9O1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkRm9ybURhdGFWYWx1ZSA9IChkYXRhOiB1bmtub3duKSA9PiB7XG4gIHJldHVybiBuZXcgQmxvYihbZGF0YV0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQmFzZVVybCA9IChiYXNlVXJsPzogc3RyaW5nKSA9PiB7XG4gIGlmIChiYXNlVXJsKSB7XG4gICAgcmV0dXJuIGJhc2VVcmw7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICBjb25zdCB7IGhvc3QsIHByb3RvY29sIH0gPSBsb2NhdGlvbiE7XG5cbiAgcmV0dXJuIGAke3Byb3RvY29sfS8vJHtob3N0fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VmVyc2lvbiA9ICgpID0+IHtcbiAgcmV0dXJuIFBBQ0tBR0VfVkVSU0lPTjtcbn07XG4iLCJ2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgYmluZCA9IHVuY3VycnlUaGlzKHVuY3VycnlUaGlzLmJpbmQpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0KSB7XG4gIGFDYWxsYWJsZShmbik7XG4gIHJldHVybiB0aGF0ID09PSB1bmRlZmluZWQgPyBmbiA6IE5BVElWRV9CSU5EID8gYmluZChmbiwgdGhhdCkgOiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgZm9yRWFjaCwgbWFwLCBmaWx0ZXIsIHNvbWUsIGV2ZXJ5LCBmaW5kLCBmaW5kSW5kZXgsIGZpbHRlclJlamVjdCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBJU19GSUxURVJfUkVKRUNUID0gVFlQRSA9PSA3O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCwgc3BlY2lmaWNDcmVhdGUpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShzZWxmKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiB8fCBJU19GSUxURVJfUkVKRUNUID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsdWUsIHJlc3VsdDtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbHVlID0gc2VsZltpbmRleF07XG4gICAgICByZXN1bHQgPSBib3VuZEZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSB0YXJnZXRbaW5kZXhdID0gcmVzdWx0OyAvLyBtYXBcbiAgICAgICAgZWxzZSBpZiAocmVzdWx0KSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbHVlOyAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcHVzaCh0YXJnZXQsIHZhbHVlKTsgICAgICAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAvLyBldmVyeVxuICAgICAgICAgIGNhc2UgNzogcHVzaCh0YXJnZXQsIHZhbHVlKTsgICAgICAvLyBmaWx0ZXJSZWplY3RcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogdGFyZ2V0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuICBtYXA6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgZmlsdGVyOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZXZlcnlcbiAgZXZlcnk6IGNyZWF0ZU1ldGhvZCg0KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuICBmaW5kOiBjcmVhdGVNZXRob2QoNSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlclJlamVjdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbHRlcmluZ1xuICBmaWx0ZXJSZWplY3Q6IGNyZWF0ZU1ldGhvZCg3KVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRtYXAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykubWFwO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdtYXAnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBtYXA6IGZ1bmN0aW9uIG1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkbWFwKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCJleHBvcnQgY29uc3QgYnVpbGRQYXRoID0gKHBhcmFtczoge1xuICBlbmRwb2ludE5hbWU6IHN0cmluZztcbiAgZ3Vlc3RTcGFjZUlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICBwcmV2aWV3PzogYm9vbGVhbjtcbn0pID0+IHtcbiAgY29uc3QgeyBlbmRwb2ludE5hbWUsIGd1ZXN0U3BhY2VJZCwgcHJldmlldyB9ID0gcGFyYW1zO1xuICBjb25zdCBndWVzdFBhdGggPSBndWVzdFNwYWNlSWQgIT09IHVuZGVmaW5lZCA/IGAvZ3Vlc3QvJHtndWVzdFNwYWNlSWR9YCA6IFwiXCI7XG4gIGNvbnN0IHByZXZpZXdQYXRoID0gcHJldmlldyA/IFwiL3ByZXZpZXdcIiA6IFwiXCI7XG4gIHJldHVybiBgL2ske2d1ZXN0UGF0aH0vdjEke3ByZXZpZXdQYXRofS8ke2VuZHBvaW50TmFtZX0uanNvbmA7XG59O1xuIiwiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCIuLi9odHRwXCI7XG5pbXBvcnQgeyBidWlsZFBhdGggfSBmcm9tIFwiLi4vdXJsXCI7XG5cbmV4cG9ydCB0eXBlIEVuZHBvaW50TmFtZSA9XG4gIHwgXCJyZWNvcmRcIlxuICB8IFwicmVjb3Jkc1wiXG4gIHwgXCJyZWNvcmQvc3RhdHVzXCJcbiAgfCBcInJlY29yZHMvc3RhdHVzXCJcbiAgfCBcInJlY29yZC9hc3NpZ25lZXNcIjtcblxuZXhwb3J0IGNsYXNzIEJ1bGtSZXF1ZXN0Q2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEh0dHBDbGllbnQ7XG4gIHByaXZhdGUgZ3Vlc3RTcGFjZUlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgUkVRVUVTVFNfTEVOR1RIX0xJTUlUOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY2xpZW50OiBIdHRwQ2xpZW50LCBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICB0aGlzLmd1ZXN0U3BhY2VJZCA9IGd1ZXN0U3BhY2VJZDtcbiAgICB0aGlzLlJFUVVFU1RTX0xFTkdUSF9MSU1JVCA9IDIwO1xuICB9XG5cbiAgcHVibGljIHNlbmQocGFyYW1zOiB7XG4gICAgcmVxdWVzdHM6IEFycmF5PFxuICAgICAgfCB7XG4gICAgICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAgICAgYXBpOiBzdHJpbmc7XG4gICAgICAgICAgcGF5bG9hZDogb2JqZWN0O1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBtZXRob2Q6IHN0cmluZztcbiAgICAgICAgICBlbmRwb2ludE5hbWU6IEVuZHBvaW50TmFtZTtcbiAgICAgICAgICBwYXlsb2FkOiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICA+O1xuICB9KTogUHJvbWlzZTx7IHJlc3VsdHM6IEFycmF5PHsgW0s6IHN0cmluZ106IGFueSB9PiB9PiB7XG4gICAgY29uc3QgeyByZXF1ZXN0czogcmVxdWVzdHNQYXJhbSB9ID0gcGFyYW1zO1xuXG4gICAgY29uc3QgcmVxdWVzdHMgPSByZXF1ZXN0c1BhcmFtLm1hcCgocmVxdWVzdCkgPT4ge1xuICAgICAgaWYgKFwiZW5kcG9pbnROYW1lXCIgaW4gcmVxdWVzdCkge1xuICAgICAgICBjb25zdCB7IGVuZHBvaW50TmFtZSwgLi4ucmVzdCB9ID0gcmVxdWVzdDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhcGk6IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7IGVuZHBvaW50TmFtZSB9KSxcbiAgICAgICAgICAuLi5yZXN0LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcXVlc3Q7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJidWxrUmVxdWVzdFwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHsgcmVxdWVzdHMgfSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQocGFyYW1zOiB7IGVuZHBvaW50TmFtZTogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gYnVpbGRQYXRoKHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIGd1ZXN0U3BhY2VJZDogdGhpcy5ndWVzdFNwYWNlSWQsXG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiLi4vaHR0cFwiO1xuaW1wb3J0IHsgYnVpbGRQYXRoIH0gZnJvbSBcIi4uL3VybFwiO1xuaW1wb3J0IHtcbiAgQXBwSUQsXG4gIFJlY29yZElELFxuICBSZXZpc2lvbixcbiAgUHJvcGVydGllcyxcbiAgTGFuZyxcbiAgTGF5b3V0LFxuICBWaWV3Rm9yUmVzcG9uc2UsXG4gIFZpZXdGb3JQYXJhbWV0ZXIsXG4gIEFwcCxcbiAgU3RhdGVGb3JSZXNwb25zZSxcbiAgU3RhdGVGb3JQYXJhbWV0ZXIsXG4gIEFjdGlvbkZvclJlc3BvbnNlLFxuICBBY3Rpb25Gb3JQYXJhbWV0ZXIsXG4gIERlcGxveVN0YXR1cyxcbiAgRmllbGRSaWdodEZvclJlc3BvbnNlLFxuICBGaWVsZFJpZ2h0Rm9yUGFyYW1ldGVyLFxuICBBcHBSaWdodEVudGl0eUZvclJlc3BvbnNlLFxuICBBcHBSaWdodEVudGl0eUZvclBhcmFtZXRlcixcbiAgRXZhbHVhdGVkUmVjb3JkUmlnaHQsXG4gIFJlY29yZFJpZ2h0Rm9yUmVzcG9uc2UsXG4gIFJlY29yZFJpZ2h0Rm9yUGFyYW1ldGVyLFxuICBBcHBDdXN0b21pemVTY29wZSxcbiAgQXBwQ3VzdG9taXplRm9yUmVzcG9uc2UsXG4gIEFwcEN1c3RvbWl6ZUZvclBhcmFtZXRlcixcbiAgR2VuZXJhbE5vdGlmaWNhdGlvbkZvclBhcmFtZXRlcixcbiAgR2VuZXJhbE5vdGlmaWNhdGlvbkZvclJlc3BvbnNlLFxuICBQZXJSZWNvcmROb3RpZmljYXRpb25Gb3JQYXJhbWV0ZXIsXG4gIFBlclJlY29yZE5vdGlmaWNhdGlvbkZvclJlc3BvbnNlLFxuICBSZW1pbmRlck5vdGlmaWNhdGlvbkZvclBhcmFtZXRlcixcbiAgUmVtaW5kZXJOb3RpZmljYXRpb25Gb3JSZXNwb25zZSxcbiAgUmVwb3J0Rm9yUGFyYW1ldGVyLFxuICBSZXBvcnRGb3JSZXNwb25zZSxcbiAgQXBwQWN0aW9uc0ZvclBhcmFtZXRlcixcbiAgQXBwQWN0aW9uc0ZvclJlc3BvbnNlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xudHlwZSBSb3dMYXlvdXRGb3JQYXJhbWV0ZXIgPSB7XG4gIHR5cGU6IFwiUk9XXCI7XG4gIGZpZWxkczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+O1xufTtcbnR5cGUgU3VidGFibGVMYXlvdXRGb3JQYXJhbWV0ZXIgPSB7XG4gIHR5cGU6IFwiU1VCVEFCTEVcIjtcbiAgY29kZTogc3RyaW5nO1xuICBmaWVsZHM6IEFycmF5PHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9Pjtcbn07XG50eXBlIEdyb3VwTGF5b3V0Rm9yUGFyYW1ldGVyID0ge1xuICB0eXBlOiBcIkdST1VQXCI7XG4gIGNvZGU6IHN0cmluZztcbiAgbGF5b3V0OiBSb3dMYXlvdXRGb3JQYXJhbWV0ZXJbXTtcbn07XG50eXBlIExheW91dEZvclBhcmFtZXRlciA9IEFycmF5PFxuICBSb3dMYXlvdXRGb3JQYXJhbWV0ZXIgfCBTdWJ0YWJsZUxheW91dEZvclBhcmFtZXRlciB8IEdyb3VwTGF5b3V0Rm9yUGFyYW1ldGVyXG4+O1xudHlwZSBOZXN0ZWRQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIG9iamVjdFxuICA/IHtcbiAgICAgIFtLIGluIGtleW9mIFRdPzogTmVzdGVkUGFydGlhbDxUW0tdPjtcbiAgICB9XG4gIDogVDtcblxudHlwZSBQcm9wZXJ0aWVzRm9yUGFyYW1ldGVyID0gTmVzdGVkUGFydGlhbDxQcm9wZXJ0aWVzPjtcblxuZXhwb3J0IGNsYXNzIEFwcENsaWVudCB7XG4gIHByaXZhdGUgY2xpZW50OiBIdHRwQ2xpZW50O1xuICBwcml2YXRlIGd1ZXN0U3BhY2VJZD86IG51bWJlciB8IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihjbGllbnQ6IEh0dHBDbGllbnQsIGd1ZXN0U3BhY2VJZD86IG51bWJlciB8IHN0cmluZykge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICAgIHRoaXMuZ3Vlc3RTcGFjZUlkID0gZ3Vlc3RTcGFjZUlkO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1GaWVsZHM8VCBleHRlbmRzIFByb3BlcnRpZXM+KHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbGFuZz86IExhbmc7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHsgcHJvcGVydGllczogVDsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2Zvcm0vZmllbGRzXCIsXG4gICAgICBwcmV2aWV3LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgeyAuLi5yZXN0IH0pO1xuICB9XG5cbiAgcHVibGljIGFkZEZvcm1GaWVsZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzRm9yUGFyYW1ldGVyO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2Zvcm0vZmllbGRzXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRm9ybUZpZWxkcyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHByb3BlcnRpZXM6IFByb3BlcnRpZXNGb3JQYXJhbWV0ZXI7XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvZm9ybS9maWVsZHNcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUZvcm1GaWVsZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBmaWVsZHM6IHN0cmluZ1tdO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvZm9ybS9maWVsZHNcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmRlbGV0ZShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1MYXlvdXQ8VCBleHRlbmRzIExheW91dD4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8eyBsYXlvdXQ6IFQ7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9mb3JtL2xheW91dFwiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHsgLi4ucmVzdCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JtTGF5b3V0KHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbGF5b3V0OiBMYXlvdXRGb3JQYXJhbWV0ZXI7XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvZm9ybS9sYXlvdXRcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldFZpZXdzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbGFuZz86IExhbmc7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHtcbiAgICB2aWV3czogeyBbdmlld05hbWU6IHN0cmluZ106IFZpZXdGb3JSZXNwb25zZSB9O1xuICAgIHJldmlzaW9uOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvdmlld3NcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCByZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVWaWV3cyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHZpZXdzOiB7IFt2aWV3TmFtZTogc3RyaW5nXTogVmlld0ZvclBhcmFtZXRlciB9O1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHtcbiAgICB2aWV3czogeyBbdmlld05hbWU6IHN0cmluZ106IHsgaWQ6IHN0cmluZyB9IH07XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC92aWV3c1wiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXBwKHBhcmFtczogeyBpZDogQXBwSUQgfSk6IFByb21pc2U8QXBwPiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldEFwcHMocGFyYW1zOiB7XG4gICAgaWRzPzogQXBwSURbXSB8IG51bGw7XG4gICAgY29kZXM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgc3BhY2VJZHM/OiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgbnVsbDtcbiAgICBsaW1pdD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBvZmZzZXQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHsgYXBwczogQXBwW10gfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcHNcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQXBwKHBhcmFtczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzcGFjZT86IHN0cmluZyB8IG51bWJlcjtcbiAgfSk6IFByb21pc2U8eyBhcHA6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBuYW1lLCBzcGFjZSB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcFwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICBpZiAoc3BhY2UpIHtcbiAgICAgIC8vIE5PVEU6IEFsdGhvdWdoIGB0aHJlYWRgIHBhcmFtZXRlciBpcyByZXF1aXJlZCBpbiBSRVNUIEFQSSxcbiAgICAgIC8vIHRoZXJlIGFyZSBubyB2aXN1YWwgcmVwcmVzZW50YXRpb25zIG9mIGFwcHMgYmVpbmcgcmVsYXRlZCB0byB0aHJlYWRzLlxuICAgICAgLy8gTW9yZW92ZXIsIHRoZXJlIGlzIGN1cnJlbnRseSBubyBoZWxwZnVsIHJlYXNvbiB0byBjcmVhdGUgYXBwcyBpbiB0aHJlYWRzIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgdGhyZWFkLFxuICAgICAgLy8gc28gdGhlIEFQSSBDbGllbnQgc2V0cyB0aGUgZGVmYXVsdCB0aHJlYWQgaWQgaGVyZS5cbiAgICAgIGNvbnN0IHNwYWNlUGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICAgIGVuZHBvaW50TmFtZTogXCJzcGFjZVwiLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB7IGRlZmF1bHRUaHJlYWQgfSA9IGF3YWl0IHRoaXMuY2xpZW50LmdldChzcGFjZVBhdGgsIHtcbiAgICAgICAgaWQ6IHNwYWNlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5jbGllbnQucG9zdChwYXRoLCB7IC4uLnBhcmFtcywgdGhyZWFkOiBkZWZhdWx0VGhyZWFkIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbGllbnQucG9zdChwYXRoLCB7IG5hbWUgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXBwU2V0dGluZ3MocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYW5nPzogTGFuZztcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGljb246XG4gICAgICB8IHtcbiAgICAgICAgICB0eXBlOiBcIkZJTEVcIjtcbiAgICAgICAgICBmaWxlOiB7XG4gICAgICAgICAgICBjb250ZW50VHlwZTogc3RyaW5nO1xuICAgICAgICAgICAgZmlsZUtleTogc3RyaW5nO1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgc2l6ZTogc3RyaW5nO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIHwgeyB0eXBlOiBcIlBSRVNFVFwiOyBrZXk6IHN0cmluZyB9O1xuICAgIHRoZW1lOlxuICAgICAgfCBcIldISVRFXCJcbiAgICAgIHwgXCJDTElQQk9BUkRcIlxuICAgICAgfCBcIkJJTkRFUlwiXG4gICAgICB8IFwiUEVOQ0lMXCJcbiAgICAgIHwgXCJDTElQU1wiXG4gICAgICB8IFwiUkVEXCJcbiAgICAgIHwgXCJCTFVFXCJcbiAgICAgIHwgXCJHUkVFTlwiXG4gICAgICB8IFwiWUVMTE9XXCJcbiAgICAgIHwgXCJCTEFDS1wiO1xuICAgIHJldmlzaW9uOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvc2V0dGluZ3NcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCByZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBcHBTZXR0aW5ncyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaWNvbj86XG4gICAgICB8IHtcbiAgICAgICAgICB0eXBlOiBcIkZJTEVcIjtcbiAgICAgICAgICBmaWxlOiB7XG4gICAgICAgICAgICBmaWxlS2V5OiBzdHJpbmc7XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfCB7IHR5cGU6IFwiUFJFU0VUXCI7IGtleTogc3RyaW5nIH07XG4gICAgdGhlbWU/OlxuICAgICAgfCBcIldISVRFXCJcbiAgICAgIHwgXCJDTElQQk9BUkRcIlxuICAgICAgfCBcIkJJTkRFUlwiXG4gICAgICB8IFwiUEVOQ0lMXCJcbiAgICAgIHwgXCJDTElQU1wiXG4gICAgICB8IFwiUkVEXCJcbiAgICAgIHwgXCJCTFVFXCJcbiAgICAgIHwgXCJHUkVFTlwiXG4gICAgICB8IFwiWUVMTE9XXCJcbiAgICAgIHwgXCJCTEFDS1wiO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL3NldHRpbmdzXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcm9jZXNzTWFuYWdlbWVudChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGxhbmc/OiBMYW5nO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7XG4gICAgZW5hYmxlOiBib29sZWFuO1xuICAgIHN0YXRlczoge1xuICAgICAgW3N0YXR1c05hbWU6IHN0cmluZ106IFN0YXRlRm9yUmVzcG9uc2U7XG4gICAgfTtcbiAgICBhY3Rpb25zOiBBY3Rpb25Gb3JSZXNwb25zZVtdO1xuICAgIHJldmlzaW9uOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvc3RhdHVzXCIsXG4gICAgICBwcmV2aWV3LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgcmVzdCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUHJvY2Vzc01hbmFnZW1lbnQocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBlbmFibGU/OiBib29sZWFuO1xuICAgIHN0YXRlcz86IHsgW3N0YXR1c05hbWU6IHN0cmluZ106IFN0YXRlRm9yUGFyYW1ldGVyIH07XG4gICAgYWN0aW9ucz86IEFjdGlvbkZvclBhcmFtZXRlcltdO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL3N0YXR1c1wiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVwbG95U3RhdHVzKHBhcmFtczoge1xuICAgIGFwcHM6IEFwcElEW107XG4gIH0pOiBQcm9taXNlPHsgYXBwczogQXJyYXk8eyBhcHA6IHN0cmluZzsgc3RhdHVzOiBEZXBsb3lTdGF0dXMgfT4gfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9kZXBsb3lcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGRlcGxveUFwcChwYXJhbXM6IHtcbiAgICBhcHBzOiBBcnJheTx7IGFwcDogQXBwSUQ7IHJldmlzaW9uPzogUmV2aXNpb24gfT47XG4gICAgcmV2ZXJ0PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8e30+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvZGVwbG95XCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RmllbGRBY2wocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8eyByaWdodHM6IEZpZWxkUmlnaHRGb3JSZXNwb25zZVtdOyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJmaWVsZC9hY2xcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCB7IC4uLnJlc3QgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmllbGRBY2wocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByaWdodHM6IEZpZWxkUmlnaHRGb3JQYXJhbWV0ZXJbXTtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIC8vIE5PVEU6IFdoZW4gZXhlY3V0aW5nIHRoaXMgQVBJIHdpdGhvdXQgYHByZXZpZXdgLFxuICAgIC8vIGFsbCBwcmUtbGl2ZSBhcHAncyBzZXR0aW5ncyB3aWxsIGJlIGRlcGxveWVkIHRvIGxpdmUgYXBwLlxuICAgIC8vIFRoaXMgYmVoYXZpb3IgbWF5IG5vdCBiZSB3aGF0IHRoZSB1c2VycyBleHBlY3RlZCxcbiAgICAvLyBzbyB3ZSBkaXNhYmxlIGl0IHRlbXBvcmFyaWx5LlxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImZpZWxkL2FjbFwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXBwQWNsKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHsgcmlnaHRzOiBBcHBSaWdodEVudGl0eUZvclJlc3BvbnNlW107IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9hY2xcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCB7IC4uLnJlc3QgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXBwQWNsKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmlnaHRzOiBBcHBSaWdodEVudGl0eUZvclBhcmFtZXRlcltdO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgLy8gTk9URTogV2hlbiBleGVjdXRpbmcgdGhpcyBBUEkgd2l0aG91dCBgcHJldmlld2AsXG4gICAgLy8gYWxsIHByZS1saXZlIGFwcCdzIHNldHRpbmdzIHdpbGwgYmUgZGVwbG95ZWQgdG8gbGl2ZSBhcHAuXG4gICAgLy8gVGhpcyBiZWhhdmlvciBtYXkgbm90IGJlIHdoYXQgdGhlIHVzZXJzIGV4cGVjdGVkLFxuICAgIC8vIHNvIHdlIGRpc2FibGUgaXQgdGVtcG9yYXJpbHkuXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2FjbFwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZXZhbHVhdGVSZWNvcmRzQWNsKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgaWRzOiBSZWNvcmRJRFtdO1xuICB9KTogUHJvbWlzZTx7IHJpZ2h0czogRXZhbHVhdGVkUmVjb3JkUmlnaHRbXSB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3Jkcy9hY2wvZXZhbHVhdGVcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVjb3JkQWNsKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgbGFuZz86IExhbmc7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHsgcmlnaHRzOiBSZWNvcmRSaWdodEZvclJlc3BvbnNlW107IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZC9hY2xcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCB7IC4uLnJlc3QgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVjb3JkQWNsKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmlnaHRzOiBSZWNvcmRSaWdodEZvclBhcmFtZXRlcltdO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgLy8gTk9URTogV2hlbiBleGVjdXRpbmcgdGhpcyBBUEkgd2l0aG91dCBgcHJldmlld2AsXG4gICAgLy8gYWxsIHByZS1saXZlIGFwcCdzIHNldHRpbmdzIHdpbGwgYmUgZGVwbG95ZWQgdG8gbGl2ZSBhcHAuXG4gICAgLy8gVGhpcyBiZWhhdmlvciBtYXkgbm90IGJlIHdoYXQgdGhlIHVzZXJzIGV4cGVjdGVkLFxuICAgIC8vIHNvIHdlIGRpc2FibGUgaXQgdGVtcG9yYXJpbHkuXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3JkL2FjbFwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXBwQ3VzdG9taXplKHBhcmFtczogeyBhcHA6IEFwcElEOyBwcmV2aWV3PzogYm9vbGVhbiB9KTogUHJvbWlzZTx7XG4gICAgc2NvcGU6IEFwcEN1c3RvbWl6ZVNjb3BlO1xuICAgIGRlc2t0b3A6IEFwcEN1c3RvbWl6ZUZvclJlc3BvbnNlO1xuICAgIG1vYmlsZTogQXBwQ3VzdG9taXplRm9yUmVzcG9uc2U7XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9jdXN0b21pemVcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCB7IC4uLnJlc3QgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXBwQ3VzdG9taXplKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgc2NvcGU/OiBBcHBDdXN0b21pemVTY29wZTtcbiAgICBkZXNrdG9wPzogQXBwQ3VzdG9taXplRm9yUGFyYW1ldGVyO1xuICAgIG1vYmlsZT86IEFwcEN1c3RvbWl6ZUZvclBhcmFtZXRlcjtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9jdXN0b21pemVcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldEdlbmVyYWxOb3RpZmljYXRpb25zKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcHJldmlldz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHtcbiAgICBub3RpZmljYXRpb25zOiBHZW5lcmFsTm90aWZpY2F0aW9uRm9yUmVzcG9uc2VbXTtcbiAgICBub3RpZnlUb0NvbW1lbnRlcjogYm9vbGVhbjtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL25vdGlmaWNhdGlvbnMvZ2VuZXJhbFwiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHsgLi4ucmVzdCB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVHZW5lcmFsTm90aWZpY2F0aW9ucyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIG5vdGlmaWNhdGlvbnM/OiBHZW5lcmFsTm90aWZpY2F0aW9uRm9yUGFyYW1ldGVyW107XG4gICAgbm90aWZ5VG9Db21tZW50ZXI/OiBib29sZWFuO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL25vdGlmaWNhdGlvbnMvZ2VuZXJhbFwiLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGVyUmVjb3JkTm90aWZpY2F0aW9ucyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGxhbmc/OiBMYW5nO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx7XG4gICAgbm90aWZpY2F0aW9uczogUGVyUmVjb3JkTm90aWZpY2F0aW9uRm9yUmVzcG9uc2VbXTtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL25vdGlmaWNhdGlvbnMvcGVyUmVjb3JkXCIsXG4gICAgICBwcmV2aWV3LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgcmVzdCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUGVyUmVjb3JkTm90aWZpY2F0aW9ucyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIG5vdGlmaWNhdGlvbnM6IFBlclJlY29yZE5vdGlmaWNhdGlvbkZvclBhcmFtZXRlcltdO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL25vdGlmaWNhdGlvbnMvcGVyUmVjb3JkXCIsXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wdXQocGF0aCwgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZW1pbmRlck5vdGlmaWNhdGlvbnMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYW5nPzogTGFuZztcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8e1xuICAgIG5vdGlmaWNhdGlvbnM6IFJlbWluZGVyTm90aWZpY2F0aW9uRm9yUmVzcG9uc2VbXTtcbiAgICB0aW1lem9uZTogc3RyaW5nO1xuICAgIHJldmlzaW9uOiBzdHJpbmc7XG4gIH0+IHtcbiAgICBjb25zdCB7IHByZXZpZXcsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJhcHAvbm90aWZpY2F0aW9ucy9yZW1pbmRlclwiLFxuICAgICAgcHJldmlldyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHJlc3QpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVJlbWluZGVyTm90aWZpY2F0aW9ucyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIG5vdGlmaWNhdGlvbnM/OiBSZW1pbmRlck5vdGlmaWNhdGlvbkZvclBhcmFtZXRlcltdO1xuICAgIHRpbWV6b25lPzogc3RyaW5nO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL25vdGlmaWNhdGlvbnMvcmVtaW5kZXJcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldFJlcG9ydHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYW5nPzogTGFuZztcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8e1xuICAgIHJlcG9ydHM6IHsgW3JlcG9ydE5hbWU6IHN0cmluZ106IFJlcG9ydEZvclJlc3BvbnNlIH07XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IHsgcHJldmlldywgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImFwcC9yZXBvcnRzXCIsXG4gICAgICBwcmV2aWV3LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5nZXQocGF0aCwgcmVzdCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVwb3J0cyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlcG9ydHM6IFJlcG9ydEZvclBhcmFtZXRlcjtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgICByZXBvcnRzOiB7IFtyZXBvcnROYW1lOiBzdHJpbmddOiB7IGlkOiBzdHJpbmcgfSB9O1xuICB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL3JlcG9ydHNcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldEFwcEFjdGlvbnMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBsYW5nPzogTGFuZztcbiAgICBwcmV2aWV3PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8e1xuICAgIGFjdGlvbnM6IEFwcEFjdGlvbnNGb3JSZXNwb25zZTtcbiAgICByZXZpc2lvbjogc3RyaW5nO1xuICB9PiB7XG4gICAgY29uc3QgeyBwcmV2aWV3LCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2FjdGlvbnNcIixcbiAgICAgIHByZXZpZXcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCByZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBcHBBY3Rpb25zKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgYWN0aW9uczogQXBwQWN0aW9uc0ZvclBhcmFtZXRlcjtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7XG4gICAgcmV2aXNpb246IHN0cmluZztcbiAgICBhY3Rpb25zOiB7IFthY3Rpb25OYW1lOiBzdHJpbmddOiB7IGlkOiBzdHJpbmcgfSB9O1xuICB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiYXBwL2FjdGlvbnNcIixcbiAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHBhcmFtczoge1xuICAgIGVuZHBvaW50TmFtZTogc3RyaW5nO1xuICAgIHByZXZpZXc/OiBib29sZWFuO1xuICB9KSB7XG4gICAgcmV0dXJuIGJ1aWxkUGF0aCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBndWVzdFNwYWNlSWQ6IHRoaXMuZ3Vlc3RTcGFjZUlkLFxuICAgIH0pO1xuICB9XG59XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1rZXlzIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHNhZmVcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyIG9mIG9wZXJhdGlvbnMgKEVkZ2UgYnVnKVxuICBpZiAoREVTQ1JJUFRPUlMgJiYgJGFzc2lnbih7IGI6IDEgfSwgJGFzc2lnbihkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsICdiJywge1xuICAgICAgICB2YWx1ZTogMyxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIHsgYjogMiB9KSkuYiAhPT0gMSkgcmV0dXJuIHRydWU7XG4gIC8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3ltYm9sIC0tIHNhZmVcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpO1xuICB2YXIgYWxwaGFiZXQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW3N5bWJvbF0gPSA3O1xuICBhbHBoYWJldC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2hyKSB7IEJbY2hyXSA9IGNocjsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtzeW1ib2xdICE9IDcgfHwgb2JqZWN0S2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gYWxwaGFiZXQ7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICB2YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mO1xuICB3aGlsZSAoYXJndW1lbnRzTGVuZ3RoID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IEluZGV4ZWRPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChvYmplY3RLZXlzKFMpLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoUykpIDogb2JqZWN0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIHtcbiAgICAgIGtleSA9IGtleXNbaisrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZSwgUywga2V5KSkgVFtrZXldID0gU1trZXldO1xuICAgIH1cbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24nKTtcblxuLy8gYE9iamVjdC5hc3NpZ25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuYXNzaWduXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWFzc2lnbiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogT2JqZWN0LmFzc2lnbiAhPT0gYXNzaWduIH0sIHtcbiAgYXNzaWduOiBhc3NpZ25cbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcblxudmFyIFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChjbGFzc29mKGFyZ3VtZW50KSA9PT0gJ1N5bWJvbCcpIHRocm93IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcnKTtcbiAgcmV0dXJuIFN0cmluZyhhcmd1bWVudCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBiYWJlbC1taW5pZnkgYW5kIENsb3N1cmUgQ29tcGlsZXIgdHJhbnNwaWxlcyBSZWdFeHAoJ2EnLCAneScpIC0+IC9hL3kgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxudmFyICRSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gJFJlZ0V4cCgnYScsICd5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdhYmNkJykgIT0gbnVsbDtcbn0pO1xuXG4vLyBVQyBCcm93c2VyIGJ1Z1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzEwMDhcbnZhciBNSVNTRURfU1RJQ0tZID0gVU5TVVBQT1JURURfWSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhJFJlZ0V4cCgnYScsICd5Jykuc3RpY2t5O1xufSk7XG5cbnZhciBCUk9LRU5fQ0FSRVQgPSBVTlNVUFBPUlRFRF9ZIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNjg3XG4gIHZhciByZSA9ICRSZWdFeHAoJ15yJywgJ2d5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdzdHInKSAhPSBudWxsO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBCUk9LRU5fQ0FSRVQ6IEJST0tFTl9DQVJFVCxcbiAgTUlTU0VEX1NUSUNLWTogTUlTU0VEX1NUSUNLWSxcbiAgVU5TVVBQT1JURURfWTogVU5TVVBQT1JURURfWVxufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnRpZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydGllcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyAmJiAhVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIHByb3BzID0gdG9JbmRleGVkT2JqZWN0KFByb3BlcnRpZXMpO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIHByb3BzW2tleV0pO1xuICByZXR1cm4gTztcbn07XG4iLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdkb2N1bWVudCcsICdkb2N1bWVudEVsZW1lbnQnKTtcbiIsIi8qIGdsb2JhbCBBY3RpdmVYT2JqZWN0IC0tIG9sZCBJRSwgV1NIICovXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsOyAvLyBhdm9pZCBtZW1vcnkgbGVha1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgYWN0aXZlWERvY3VtZW50ID0gbmV3IEFjdGl2ZVhPYmplY3QoJ2h0bWxmaWxlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGlnbm9yZSAqLyB9XG4gIE51bGxQcm90b09iamVjdCA9IHR5cGVvZiBkb2N1bWVudCAhPSAndW5kZWZpbmVkJ1xuICAgID8gZG9jdW1lbnQuZG9tYWluICYmIGFjdGl2ZVhEb2N1bWVudFxuICAgICAgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgLy8gb2xkIElFXG4gICAgICA6IE51bGxQcm90b09iamVjdFZpYUlGcmFtZSgpXG4gICAgOiBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCk7IC8vIFdTSFxuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBOdWxsUHJvdG9PYmplY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIE51bGxQcm90b09iamVjdCgpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eUNvbnN0cnVjdG9yKCk7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBOdWxsUHJvdG9PYmplY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXNNb2R1bGUuZihyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcuJywgJ3MnKSAtPiAvLi9zIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZSA9ICRSZWdFeHAoJy4nLCAncycpO1xuICByZXR1cm4gIShyZS5kb3RBbGwgJiYgcmUuZXhlYygnXFxuJykgJiYgcmUuZmxhZ3MgPT09ICdzJyk7XG59KTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcoPzxhPmIpJywgJ2cnKSAtPiAvKD88YT5iKS9nIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZSA9ICRSZWdFeHAoJyg/PGE+YiknLCAnZycpO1xuICByZXR1cm4gcmUuZXhlYygnYicpLmdyb3Vwcy5hICE9PSAnYicgfHxcbiAgICAnYicucmVwbGFjZShyZSwgJyQ8YT5jJykgIT09ICdiYyc7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1lbXB0eS1jYXB0dXJpbmctZ3JvdXAsIHJlZ2V4cC9uby1lbXB0eS1ncm91cCwgcmVnZXhwL25vLWxhenktZW5kcyAtLSB0ZXN0aW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWdleHAvbm8tdXNlbGVzcy1xdWFudGlmaWVyIC0tIHRlc3RpbmcgKi9cbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciByZWdleHBGbGFncyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZmxhZ3MnKTtcbnZhciBzdGlja3lIZWxwZXJzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGdldEludGVybmFsU3RhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKS5nZXQ7XG52YXIgVU5TVVBQT1JURURfRE9UX0FMTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbCcpO1xudmFyIFVOU1VQUE9SVEVEX05DRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnJyk7XG5cbnZhciBuYXRpdmVSZXBsYWNlID0gc2hhcmVkKCduYXRpdmUtc3RyaW5nLXJlcGxhY2UnLCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpO1xudmFyIG5hdGl2ZUV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG52YXIgcGF0Y2hlZEV4ZWMgPSBuYXRpdmVFeGVjO1xudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgaW5kZXhPZiA9IHVuY3VycnlUaGlzKCcnLmluZGV4T2YpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxudmFyIFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciByZTEgPSAvYS87XG4gIHZhciByZTIgPSAvYiovZztcbiAgY2FsbChuYXRpdmVFeGVjLCByZTEsICdhJyk7XG4gIGNhbGwobmF0aXZlRXhlYywgcmUyLCAnYScpO1xuICByZXR1cm4gcmUxLmxhc3RJbmRleCAhPT0gMCB8fCByZTIubGFzdEluZGV4ICE9PSAwO1xufSkoKTtcblxudmFyIFVOU1VQUE9SVEVEX1kgPSBzdGlja3lIZWxwZXJzLkJST0tFTl9DQVJFVDtcblxuLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXAsIGNvcGllZCBmcm9tIGVzNS1zaGltJ3MgU3RyaW5nI3NwbGl0IHBhdGNoLlxudmFyIE5QQ0dfSU5DTFVERUQgPSAvKCk/Py8uZXhlYygnJylbMV0gIT09IHVuZGVmaW5lZDtcblxudmFyIFBBVENIID0gVVBEQVRFU19MQVNUX0lOREVYX1dST05HIHx8IE5QQ0dfSU5DTFVERUQgfHwgVU5TVVBQT1JURURfWSB8fCBVTlNVUFBPUlRFRF9ET1RfQUxMIHx8IFVOU1VQUE9SVEVEX05DRztcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHJpbmcpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUocmUpO1xuICAgIHZhciBzdHIgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgIHZhciByYXcgPSBzdGF0ZS5yYXc7XG4gICAgdmFyIHJlc3VsdCwgcmVDb3B5LCBsYXN0SW5kZXgsIG1hdGNoLCBpLCBvYmplY3QsIGdyb3VwO1xuXG4gICAgaWYgKHJhdykge1xuICAgICAgcmF3Lmxhc3RJbmRleCA9IHJlLmxhc3RJbmRleDtcbiAgICAgIHJlc3VsdCA9IGNhbGwocGF0Y2hlZEV4ZWMsIHJhdywgc3RyKTtcbiAgICAgIHJlLmxhc3RJbmRleCA9IHJhdy5sYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHZhciBncm91cHMgPSBzdGF0ZS5ncm91cHM7XG4gICAgdmFyIHN0aWNreSA9IFVOU1VQUE9SVEVEX1kgJiYgcmUuc3RpY2t5O1xuICAgIHZhciBmbGFncyA9IGNhbGwocmVnZXhwRmxhZ3MsIHJlKTtcbiAgICB2YXIgc291cmNlID0gcmUuc291cmNlO1xuICAgIHZhciBjaGFyc0FkZGVkID0gMDtcbiAgICB2YXIgc3RyQ29weSA9IHN0cjtcblxuICAgIGlmIChzdGlja3kpIHtcbiAgICAgIGZsYWdzID0gcmVwbGFjZShmbGFncywgJ3knLCAnJyk7XG4gICAgICBpZiAoaW5kZXhPZihmbGFncywgJ2cnKSA9PT0gLTEpIHtcbiAgICAgICAgZmxhZ3MgKz0gJ2cnO1xuICAgICAgfVxuXG4gICAgICBzdHJDb3B5ID0gc3RyaW5nU2xpY2Uoc3RyLCByZS5sYXN0SW5kZXgpO1xuICAgICAgLy8gU3VwcG9ydCBhbmNob3JlZCBzdGlja3kgYmVoYXZpb3IuXG4gICAgICBpZiAocmUubGFzdEluZGV4ID4gMCAmJiAoIXJlLm11bHRpbGluZSB8fCByZS5tdWx0aWxpbmUgJiYgY2hhckF0KHN0ciwgcmUubGFzdEluZGV4IC0gMSkgIT09ICdcXG4nKSkge1xuICAgICAgICBzb3VyY2UgPSAnKD86ICcgKyBzb3VyY2UgKyAnKSc7XG4gICAgICAgIHN0ckNvcHkgPSAnICcgKyBzdHJDb3B5O1xuICAgICAgICBjaGFyc0FkZGVkKys7XG4gICAgICB9XG4gICAgICAvLyBeKD8gKyByeCArICkgaXMgbmVlZGVkLCBpbiBjb21iaW5hdGlvbiB3aXRoIHNvbWUgc3RyIHNsaWNpbmcsIHRvXG4gICAgICAvLyBzaW11bGF0ZSB0aGUgJ3knIGZsYWcuXG4gICAgICByZUNvcHkgPSBuZXcgUmVnRXhwKCdeKD86JyArIHNvdXJjZSArICcpJywgZmxhZ3MpO1xuICAgIH1cblxuICAgIGlmIChOUENHX0lOQ0xVREVEKSB7XG4gICAgICByZUNvcHkgPSBuZXcgUmVnRXhwKCdeJyArIHNvdXJjZSArICckKD8hXFxcXHMpJywgZmxhZ3MpO1xuICAgIH1cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HKSBsYXN0SW5kZXggPSByZS5sYXN0SW5kZXg7XG5cbiAgICBtYXRjaCA9IGNhbGwobmF0aXZlRXhlYywgc3RpY2t5ID8gcmVDb3B5IDogcmUsIHN0ckNvcHkpO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIG1hdGNoLmlucHV0ID0gc3RyaW5nU2xpY2UobWF0Y2guaW5wdXQsIGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaFswXSA9IHN0cmluZ1NsaWNlKG1hdGNoWzBdLCBjaGFyc0FkZGVkKTtcbiAgICAgICAgbWF0Y2guaW5kZXggPSByZS5sYXN0SW5kZXg7XG4gICAgICAgIHJlLmxhc3RJbmRleCArPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICB9IGVsc2UgcmUubGFzdEluZGV4ID0gMDtcbiAgICB9IGVsc2UgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyAmJiBtYXRjaCkge1xuICAgICAgcmUubGFzdEluZGV4ID0gcmUuZ2xvYmFsID8gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggOiBsYXN0SW5kZXg7XG4gICAgfVxuICAgIGlmIChOUENHX0lOQ0xVREVEICYmIG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgICAvLyBmb3IgTlBDRywgbGlrZSBJRTguIE5PVEU6IFRoaXMgZG9lc24nIHdvcmsgZm9yIC8oLj8pPy9cbiAgICAgIGNhbGwobmF0aXZlUmVwbGFjZSwgbWF0Y2hbMF0sIHJlQ29weSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykge1xuICAgICAgICAgIGlmIChhcmd1bWVudHNbaV0gPT09IHVuZGVmaW5lZCkgbWF0Y2hbaV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtYXRjaCAmJiBncm91cHMpIHtcbiAgICAgIG1hdGNoLmdyb3VwcyA9IG9iamVjdCA9IGNyZWF0ZShudWxsKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbaV07XG4gICAgICAgIG9iamVjdFtncm91cFswXV0gPSBtYXRjaFtncm91cFsxXV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGNoZWRFeGVjO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5leGVjYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS5leGVjXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgbW92ZWQgdG8gZW50cnkgcG9pbnRzXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgUmVnRXhwUHJvdG90eXBlID0gUmVnRXhwLnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjLCBGT1JDRUQsIFNIQU0pIHtcbiAgdmFyIFNZTUJPTCA9IHdlbGxLbm93blN5bWJvbChLRVkpO1xuXG4gIHZhciBERUxFR0FURVNfVE9fU1lNQk9MID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTdHJpbmcgbWV0aG9kcyBjYWxsIHN5bWJvbC1uYW1lZCBSZWdFcCBtZXRob2RzXG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pO1xuXG4gIHZhciBERUxFR0FURVNfVE9fRVhFQyA9IERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTeW1ib2wtbmFtZWQgUmVnRXhwIG1ldGhvZHMgY2FsbCAuZXhlY1xuICAgIHZhciBleGVjQ2FsbGVkID0gZmFsc2U7XG4gICAgdmFyIHJlID0gL2EvO1xuXG4gICAgaWYgKEtFWSA9PT0gJ3NwbGl0Jykge1xuICAgICAgLy8gV2UgY2FuJ3QgdXNlIHJlYWwgcmVnZXggaGVyZSBzaW5jZSBpdCBjYXVzZXMgZGVvcHRpbWl6YXRpb25cbiAgICAgIC8vIGFuZCBzZXJpb3VzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGluIFY4XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzA2XG4gICAgICByZSA9IHt9O1xuICAgICAgLy8gUmVnRXhwW0BAc3BsaXRdIGRvZXNuJ3QgY2FsbCB0aGUgcmVnZXgncyBleGVjIG1ldGhvZCwgYnV0IGZpcnN0IGNyZWF0ZXNcbiAgICAgIC8vIGEgbmV3IG9uZS4gV2UgbmVlZCB0byByZXR1cm4gdGhlIHBhdGNoZWQgcmVnZXggd2hlbiBjcmVhdGluZyB0aGUgbmV3IG9uZS5cbiAgICAgIHJlLmNvbnN0cnVjdG9yID0ge307XG4gICAgICByZS5jb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlOyB9O1xuICAgICAgcmUuZmxhZ3MgPSAnJztcbiAgICAgIHJlW1NZTUJPTF0gPSAvLi9bU1lNQk9MXTtcbiAgICB9XG5cbiAgICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyBleGVjQ2FsbGVkID0gdHJ1ZTsgcmV0dXJuIG51bGw7IH07XG5cbiAgICByZVtTWU1CT0xdKCcnKTtcbiAgICByZXR1cm4gIWV4ZWNDYWxsZWQ7XG4gIH0pO1xuXG4gIGlmIChcbiAgICAhREVMRUdBVEVTX1RPX1NZTUJPTCB8fFxuICAgICFERUxFR0FURVNfVE9fRVhFQyB8fFxuICAgIEZPUkNFRFxuICApIHtcbiAgICB2YXIgdW5jdXJyaWVkTmF0aXZlUmVnRXhwTWV0aG9kID0gdW5jdXJyeVRoaXMoLy4vW1NZTUJPTF0pO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgdmFyIHVuY3VycmllZE5hdGl2ZU1ldGhvZCA9IHVuY3VycnlUaGlzKG5hdGl2ZU1ldGhvZCk7XG4gICAgICB2YXIgJGV4ZWMgPSByZWdleHAuZXhlYztcbiAgICAgIGlmICgkZXhlYyA9PT0gcmVnZXhwRXhlYyB8fCAkZXhlYyA9PT0gUmVnRXhwUHJvdG90eXBlLmV4ZWMpIHtcbiAgICAgICAgaWYgKERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICAgICAgLy8gVGhlIG5hdGl2ZSBTdHJpbmcgbWV0aG9kIGFscmVhZHkgZGVsZWdhdGVzIHRvIEBAbWV0aG9kICh0aGlzXG4gICAgICAgICAgLy8gcG9seWZpbGxlZCBmdW5jdGlvbiksIGxlYXNpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAgICAgICAgIC8vIFdlIGF2b2lkIGl0IGJ5IGRpcmVjdGx5IGNhbGxpbmcgdGhlIG5hdGl2ZSBAQG1ldGhvZCBtZXRob2QuXG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuY3VycmllZE5hdGl2ZVJlZ0V4cE1ldGhvZChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogdW5jdXJyaWVkTmF0aXZlTWV0aG9kKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICB9KTtcblxuICAgIHJlZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIEtFWSwgbWV0aG9kc1swXSk7XG4gICAgcmVkZWZpbmUoUmVnRXhwUHJvdG90eXBlLCBTWU1CT0wsIG1ldGhvZHNbMV0pO1xuICB9XG5cbiAgaWYgKFNIQU0pIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShSZWdFeHBQcm90b3R5cGVbU1lNQk9MXSwgJ3NoYW0nLCB0cnVlKTtcbn07XG4iLCJ2YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgY2hhckNvZGVBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJDb2RlQXQpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIHBvcykge1xuICAgIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIHZhciBwb3NpdGlvbiA9IHRvSW50ZWdlck9ySW5maW5pdHkocG9zKTtcbiAgICB2YXIgc2l6ZSA9IFMubGVuZ3RoO1xuICAgIHZhciBmaXJzdCwgc2Vjb25kO1xuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgZmlyc3QgPSBjaGFyQ29kZUF0KFMsIHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gY2hhckNvZGVBdChTLCBwb3NpdGlvbiArIDEpKSA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkZcbiAgICAgICAgPyBDT05WRVJUX1RPX1NUUklOR1xuICAgICAgICAgID8gY2hhckF0KFMsIHBvc2l0aW9uKVxuICAgICAgICAgIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklOR1xuICAgICAgICAgID8gc3RyaW5nU2xpY2UoUywgcG9zaXRpb24sIHBvc2l0aW9uICsgMilcbiAgICAgICAgICA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRcbiAgY29kZUF0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbiAgY2hhckF0OiBjcmVhdGVNZXRob2QodHJ1ZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG5cbi8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZHZhbmNlc3RyaW5naW5kZXhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFMsIGluZGV4LCB1bmljb2RlKSB7XG4gIHJldHVybiBpbmRleCArICh1bmljb2RlID8gY2hhckF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxuLy8gYFJlZ0V4cEV4ZWNgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHBleGVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChSLCBTKSB7XG4gIHZhciBleGVjID0gUi5leGVjO1xuICBpZiAoaXNDYWxsYWJsZShleGVjKSkge1xuICAgIHZhciByZXN1bHQgPSBjYWxsKGV4ZWMsIFIsIFMpO1xuICAgIGlmIChyZXN1bHQgIT09IG51bGwpIGFuT2JqZWN0KHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY2xhc3NvZihSKSA9PT0gJ1JlZ0V4cCcpIHJldHVybiBjYWxsKHJlZ2V4cEV4ZWMsIFIsIFMpO1xuICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXInKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXgnKTtcbnZhciByZWdFeHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG5cbi8vIEBAbWF0Y2ggbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdtYXRjaCcsIGZ1bmN0aW9uIChNQVRDSCwgbmF0aXZlTWF0Y2gsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLm1hdGNoYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUubWF0Y2hcbiAgICBmdW5jdGlvbiBtYXRjaChyZWdleHApIHtcbiAgICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICAgIHZhciBtYXRjaGVyID0gcmVnZXhwID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGdldE1ldGhvZChyZWdleHAsIE1BVENIKTtcbiAgICAgIHJldHVybiBtYXRjaGVyID8gY2FsbChtYXRjaGVyLCByZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW01BVENIXSh0b1N0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAbWF0Y2hcbiAgICBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdCh0aGlzKTtcbiAgICAgIHZhciBTID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlTWF0Y2gsIHJ4LCBTKTtcblxuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICBpZiAoIXJ4Lmdsb2JhbCkgcmV0dXJuIHJlZ0V4cEV4ZWMocngsIFMpO1xuXG4gICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB2YXIgbiA9IDA7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgd2hpbGUgKChyZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKSkgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIG1hdGNoU3RyID0gdG9TdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgQVtuXSA9IG1hdGNoU3RyO1xuICAgICAgICBpZiAobWF0Y2hTdHIgPT09ICcnKSByeC5sYXN0SW5kZXggPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgdG9MZW5ndGgocngubGFzdEluZGV4KSwgZnVsbFVuaWNvZGUpO1xuICAgICAgICBuKys7XG4gICAgICB9XG4gICAgICByZXR1cm4gbiA9PT0gMCA/IG51bGwgOiBBO1xuICAgIH1cbiAgXTtcbn0pO1xuIiwidmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xuXG4vLyBtYWtlcyBzdWJjbGFzc2luZyB3b3JrIGNvcnJlY3QgZm9yIHdyYXBwZWQgYnVpbHQtaW5zXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgkdGhpcywgZHVtbXksIFdyYXBwZXIpIHtcbiAgdmFyIE5ld1RhcmdldCwgTmV3VGFyZ2V0UHJvdG90eXBlO1xuICBpZiAoXG4gICAgLy8gaXQgY2FuIHdvcmsgb25seSB3aXRoIG5hdGl2ZSBgc2V0UHJvdG90eXBlT2ZgXG4gICAgc2V0UHJvdG90eXBlT2YgJiZcbiAgICAvLyB3ZSBoYXZlbid0IGNvbXBsZXRlbHkgY29ycmVjdCBwcmUtRVM2IHdheSBmb3IgZ2V0dGluZyBgbmV3LnRhcmdldGAsIHNvIHVzZSB0aGlzXG4gICAgaXNDYWxsYWJsZShOZXdUYXJnZXQgPSBkdW1teS5jb25zdHJ1Y3RvcikgJiZcbiAgICBOZXdUYXJnZXQgIT09IFdyYXBwZXIgJiZcbiAgICBpc09iamVjdChOZXdUYXJnZXRQcm90b3R5cGUgPSBOZXdUYXJnZXQucHJvdG90eXBlKSAmJlxuICAgIE5ld1RhcmdldFByb3RvdHlwZSAhPT0gV3JhcHBlci5wcm90b3R5cGVcbiAgKSBzZXRQcm90b3R5cGVPZigkdGhpcywgTmV3VGFyZ2V0UHJvdG90eXBlKTtcbiAgcmV0dXJuICR0aGlzO1xufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxuLy8gYHRoaXNOdW1iZXJWYWx1ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRoaXNudW1iZXJ2YWx1ZVxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcygxLjAudmFsdWVPZik7XG4iLCIvLyBhIHN0cmluZyBvZiBhbGwgdmFsaWQgdW5pY29kZSB3aGl0ZXNwYWNlc1xubW9kdWxlLmV4cG9ydHMgPSAnXFx1MDAwOVxcdTAwMEFcXHUwMDBCXFx1MDAwQ1xcdTAwMERcXHUwMDIwXFx1MDBBMFxcdTE2ODBcXHUyMDAwXFx1MjAwMVxcdTIwMDInICtcbiAgJ1xcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1MjAyOFxcdTIwMjlcXHVGRUZGJztcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgd2hpdGVzcGFjZSA9ICdbJyArIHdoaXRlc3BhY2VzICsgJ10nO1xudmFyIGx0cmltID0gUmVnRXhwKCdeJyArIHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cCh3aGl0ZXNwYWNlICsgd2hpdGVzcGFjZSArICcqJCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW0sIHRyaW1TdGFydCwgdHJpbUVuZCwgdHJpbUxlZnQsIHRyaW1SaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcykge1xuICAgIHZhciBzdHJpbmcgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgaWYgKFRZUEUgJiAxKSBzdHJpbmcgPSByZXBsYWNlKHN0cmluZywgbHRyaW0sICcnKTtcbiAgICBpZiAoVFlQRSAmIDIpIHN0cmluZyA9IHJlcGxhY2Uoc3RyaW5nLCBydHJpbSwgJycpO1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltTGVmdCwgdHJpbVN0YXJ0IH1gIG1ldGhvZHNcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydFxuICBzdGFydDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1SaWdodCwgdHJpbUVuZCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltZW5kXG4gIGVuZDogY3JlYXRlTWV0aG9kKDIpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS50cmltYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1cbiAgdHJpbTogY3JlYXRlTWV0aG9kKDMpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJykuZjtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgdGhpc051bWJlclZhbHVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RoaXMtbnVtYmVyLXZhbHVlJyk7XG52YXIgdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG5cbnZhciBOVU1CRVIgPSAnTnVtYmVyJztcbnZhciBOYXRpdmVOdW1iZXIgPSBnbG9iYWxbTlVNQkVSXTtcbnZhciBOdW1iZXJQcm90b3R5cGUgPSBOYXRpdmVOdW1iZXIucHJvdG90eXBlO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgYXJyYXlTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG5cbi8vIGBUb051bWVyaWNgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b251bWVyaWNcbnZhciB0b051bWVyaWMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByaW1WYWx1ZSA9IHRvUHJpbWl0aXZlKHZhbHVlLCAnbnVtYmVyJyk7XG4gIHJldHVybiB0eXBlb2YgcHJpbVZhbHVlID09ICdiaWdpbnQnID8gcHJpbVZhbHVlIDogdG9OdW1iZXIocHJpbVZhbHVlKTtcbn07XG5cbi8vIGBUb051bWJlcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbnVtYmVyXG52YXIgdG9OdW1iZXIgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGl0ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdudW1iZXInKTtcbiAgdmFyIGZpcnN0LCB0aGlyZCwgcmFkaXgsIG1heENvZGUsIGRpZ2l0cywgbGVuZ3RoLCBpbmRleCwgY29kZTtcbiAgaWYgKGlzU3ltYm9sKGl0KSkgdGhyb3cgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIG51bWJlcicpO1xuICBpZiAodHlwZW9mIGl0ID09ICdzdHJpbmcnICYmIGl0Lmxlbmd0aCA+IDIpIHtcbiAgICBpdCA9IHRyaW0oaXQpO1xuICAgIGZpcnN0ID0gY2hhckNvZGVBdChpdCwgMCk7XG4gICAgaWYgKGZpcnN0ID09PSA0MyB8fCBmaXJzdCA9PT0gNDUpIHtcbiAgICAgIHRoaXJkID0gY2hhckNvZGVBdChpdCwgMik7XG4gICAgICBpZiAodGhpcmQgPT09IDg4IHx8IHRoaXJkID09PSAxMjApIHJldHVybiBOYU47IC8vIE51bWJlcignKzB4MScpIHNob3VsZCBiZSBOYU4sIG9sZCBWOCBmaXhcbiAgICB9IGVsc2UgaWYgKGZpcnN0ID09PSA0OCkge1xuICAgICAgc3dpdGNoIChjaGFyQ29kZUF0KGl0LCAxKSkge1xuICAgICAgICBjYXNlIDY2OiBjYXNlIDk4OiByYWRpeCA9IDI7IG1heENvZGUgPSA0OTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgb2YgL14wYlswMV0rJC9pXG4gICAgICAgIGNhc2UgNzk6IGNhc2UgMTExOiByYWRpeCA9IDg7IG1heENvZGUgPSA1NTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgb2YgL14wb1swLTddKyQvaVxuICAgICAgICBkZWZhdWx0OiByZXR1cm4gK2l0O1xuICAgICAgfVxuICAgICAgZGlnaXRzID0gYXJyYXlTbGljZShpdCwgMik7XG4gICAgICBsZW5ndGggPSBkaWdpdHMubGVuZ3RoO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvZGUgPSBjaGFyQ29kZUF0KGRpZ2l0cywgaW5kZXgpO1xuICAgICAgICAvLyBwYXJzZUludCBwYXJzZXMgYSBzdHJpbmcgdG8gYSBmaXJzdCB1bmF2YWlsYWJsZSBzeW1ib2xcbiAgICAgICAgLy8gYnV0IFRvTnVtYmVyIHNob3VsZCByZXR1cm4gTmFOIGlmIGEgc3RyaW5nIGNvbnRhaW5zIHVuYXZhaWxhYmxlIHN5bWJvbHNcbiAgICAgICAgaWYgKGNvZGUgPCA0OCB8fCBjb2RlID4gbWF4Q29kZSkgcmV0dXJuIE5hTjtcbiAgICAgIH0gcmV0dXJuIHBhcnNlSW50KGRpZ2l0cywgcmFkaXgpO1xuICAgIH1cbiAgfSByZXR1cm4gK2l0O1xufTtcblxuLy8gYE51bWJlcmAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLWNvbnN0cnVjdG9yXG5pZiAoaXNGb3JjZWQoTlVNQkVSLCAhTmF0aXZlTnVtYmVyKCcgMG8xJykgfHwgIU5hdGl2ZU51bWJlcignMGIxJykgfHwgTmF0aXZlTnVtYmVyKCcrMHgxJykpKSB7XG4gIHZhciBOdW1iZXJXcmFwcGVyID0gZnVuY3Rpb24gTnVtYmVyKHZhbHVlKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoIDwgMSA/IDAgOiBOYXRpdmVOdW1iZXIodG9OdW1lcmljKHZhbHVlKSk7XG4gICAgdmFyIGR1bW15ID0gdGhpcztcbiAgICAvLyBjaGVjayBvbiAxLi5jb25zdHJ1Y3Rvcihmb28pIGNhc2VcbiAgICByZXR1cm4gaXNQcm90b3R5cGVPZihOdW1iZXJQcm90b3R5cGUsIGR1bW15KSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7IHRoaXNOdW1iZXJWYWx1ZShkdW1teSk7IH0pXG4gICAgICA/IGluaGVyaXRJZlJlcXVpcmVkKE9iamVjdChuKSwgZHVtbXksIE51bWJlcldyYXBwZXIpIDogbjtcbiAgfTtcbiAgZm9yICh2YXIga2V5cyA9IERFU0NSSVBUT1JTID8gZ2V0T3duUHJvcGVydHlOYW1lcyhOYXRpdmVOdW1iZXIpIDogKFxuICAgIC8vIEVTMzpcbiAgICAnTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksJyArXG4gICAgLy8gRVMyMDE1IChpbiBjYXNlLCBpZiBtb2R1bGVzIHdpdGggRVMyMDE1IE51bWJlciBzdGF0aWNzIHJlcXVpcmVkIGJlZm9yZSk6XG4gICAgJ0VQU0lMT04sTUFYX1NBRkVfSU5URUdFUixNSU5fU0FGRV9JTlRFR0VSLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLHBhcnNlRmxvYXQscGFyc2VJbnQsJyArXG4gICAgLy8gRVNOZXh0XG4gICAgJ2Zyb21TdHJpbmcscmFuZ2UnXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspIHtcbiAgICBpZiAoaGFzT3duKE5hdGl2ZU51bWJlciwga2V5ID0ga2V5c1tqXSkgJiYgIWhhc093bihOdW1iZXJXcmFwcGVyLCBrZXkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eShOdW1iZXJXcmFwcGVyLCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihOYXRpdmVOdW1iZXIsIGtleSkpO1xuICAgIH1cbiAgfVxuICBOdW1iZXJXcmFwcGVyLnByb3RvdHlwZSA9IE51bWJlclByb3RvdHlwZTtcbiAgTnVtYmVyUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTnVtYmVyV3JhcHBlcjtcbiAgcmVkZWZpbmUoZ2xvYmFsLCBOVU1CRVIsIE51bWJlcldyYXBwZXIpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FLCBhcmd1bWVudCkge1xuICB2YXIgbWV0aG9kID0gW11bTUVUSE9EX05BTUVdO1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGwgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgICBtZXRob2QuY2FsbChudWxsLCBhcmd1bWVudCB8fCBmdW5jdGlvbiAoKSB7IHJldHVybiAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWluZGV4b2YgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyICRJbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIHVuJEluZGV4T2YgPSB1bmN1cnJ5VGhpcyhbXS5pbmRleE9mKTtcblxudmFyIE5FR0FUSVZFX1pFUk8gPSAhIXVuJEluZGV4T2YgJiYgMSAvIHVuJEluZGV4T2YoWzFdLCAxLCAtMCkgPCAwO1xudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdpbmRleE9mJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBORUdBVElWRV9aRVJPIHx8ICFTVFJJQ1RfTUVUSE9EIH0sIHtcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHZhciBmcm9tSW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gTkVHQVRJVkVfWkVST1xuICAgICAgLy8gY29udmVydCAtMCB0byArMFxuICAgICAgPyB1biRJbmRleE9mKHRoaXMsIHNlYXJjaEVsZW1lbnQsIGZyb21JbmRleCkgfHwgMFxuICAgICAgOiAkSW5kZXhPZih0aGlzLCBzZWFyY2hFbGVtZW50LCBmcm9tSW5kZXgpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRldmVyeSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5ldmVyeTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdldmVyeScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZXZlcnkodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyB7fS50b1N0cmluZyA6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ1tvYmplY3QgJyArIGNsYXNzb2YodGhpcykgKyAnXSc7XG59O1xuIiwidmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC10by1zdHJpbmcnKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG5pZiAoIVRPX1NUUklOR19UQUdfU1VQUE9SVCkge1xuICByZWRlZmluZShPYmplY3QucHJvdG90eXBlLCAndG9TdHJpbmcnLCB0b1N0cmluZywgeyB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG5cbi8vIGBBcnJheS5pc0FycmF5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkuaXNhcnJheVxuJCh7IHRhcmdldDogJ0FycmF5Jywgc3RhdDogdHJ1ZSB9LCB7XG4gIGlzQXJyYXk6IGlzQXJyYXlcbn0pO1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKFtdLnNsaWNlKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xudmFyIHVuJFNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnc2xpY2UnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcbnZhciBBcnJheSA9IGdsb2JhbC5BcnJheTtcbnZhciBtYXggPSBNYXRoLm1heDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5zbGljZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZVxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIEVTMyBzdHJpbmdzIGFuZCBET00gb2JqZWN0c1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgayA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuZ3RoKTtcbiAgICB2YXIgZmluID0gdG9BYnNvbHV0ZUluZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kLCBsZW5ndGgpO1xuICAgIC8vIGlubGluZSBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBmb3IgdXNhZ2UgbmF0aXZlIGBBcnJheSNzbGljZWAgd2hlcmUgaXQncyBwb3NzaWJsZVxuICAgIHZhciBDb25zdHJ1Y3RvciwgcmVzdWx0LCBuO1xuICAgIGlmIChpc0FycmF5KE8pKSB7XG4gICAgICBDb25zdHJ1Y3RvciA9IE8uY29uc3RydWN0b3I7XG4gICAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgICAgaWYgKGlzQ29uc3RydWN0b3IoQ29uc3RydWN0b3IpICYmIChDb25zdHJ1Y3RvciA9PT0gQXJyYXkgfHwgaXNBcnJheShDb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSkge1xuICAgICAgICBDb25zdHJ1Y3RvciA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoQ29uc3RydWN0b3IpKSB7XG4gICAgICAgIENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JbU1BFQ0lFU107XG4gICAgICAgIGlmIChDb25zdHJ1Y3RvciA9PT0gbnVsbCkgQ29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IgPT09IEFycmF5IHx8IENvbnN0cnVjdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuJFNsaWNlKE8sIGssIGZpbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCA9IG5ldyAoQ29uc3RydWN0b3IgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQ29uc3RydWN0b3IpKG1heChmaW4gLSBrLCAwKSk7XG4gICAgZm9yIChuID0gMDsgayA8IGZpbjsgaysrLCBuKyspIGlmIChrIGluIE8pIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgbiwgT1trXSk7XG4gICAgcmVzdWx0Lmxlbmd0aCA9IG47XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG5cbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgcmVkdWNlLCByZWR1Y2VSaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX1JJR0hUKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgY2FsbGJhY2tmbiwgYXJndW1lbnRzTGVuZ3RoLCBtZW1vKSB7XG4gICAgYUNhbGxhYmxlKGNhbGxiYWNrZm4pO1xuICAgIHZhciBPID0gdG9PYmplY3QodGhhdCk7XG4gICAgdmFyIHNlbGYgPSBJbmRleGVkT2JqZWN0KE8pO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgaW5kZXggPSBJU19SSUdIVCA/IGxlbmd0aCAtIDEgOiAwO1xuICAgIHZhciBpID0gSVNfUklHSFQgPyAtMSA6IDE7XG4gICAgaWYgKGFyZ3VtZW50c0xlbmd0aCA8IDIpIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoaW5kZXggaW4gc2VsZikge1xuICAgICAgICBtZW1vID0gc2VsZltpbmRleF07XG4gICAgICAgIGluZGV4ICs9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaW5kZXggKz0gaTtcbiAgICAgIGlmIChJU19SSUdIVCA/IGluZGV4IDwgMCA6IGxlbmd0aCA8PSBpbmRleCkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICg7SVNfUklHSFQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICBtZW1vID0gY2FsbGJhY2tmbihtZW1vLCBzZWxmW2luZGV4XSwgaW5kZXgsIE8pO1xuICAgIH1cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnJlZHVjZVxuICBsZWZ0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZVJpZ2h0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlcmlnaHRcbiAgcmlnaHQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNsYXNzb2YoZ2xvYmFsLnByb2Nlc3MpID09ICdwcm9jZXNzJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRyZWR1Y2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktcmVkdWNlJykubGVmdDtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcbnZhciBDSFJPTUVfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdyZWR1Y2UnKTtcbi8vIENocm9tZSA4MC04MiBoYXMgYSBjcml0aWNhbCBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEwNDk5ODJcbnZhciBDSFJPTUVfQlVHID0gIUlTX05PREUgJiYgQ0hST01FX1ZFUlNJT04gPiA3OSAmJiBDSFJPTUVfVkVSU0lPTiA8IDgzO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnJlZHVjZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZWR1Y2VcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFTVFJJQ1RfTUVUSE9EIHx8IENIUk9NRV9CVUcgfSwge1xuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgbGVuZ3RoLCBsZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IG5hdGl2ZUtleXMoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogRkFJTFNfT05fUFJJTUlUSVZFUyB9LCB7XG4gIGtleXM6IGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyh0b09iamVjdChpdCkpO1xuICB9XG59KTtcbiIsImltcG9ydCB7IEtpbnRvbmVSZXN0QVBJRXJyb3IgfSBmcm9tIFwiLi9LaW50b25lUmVzdEFQSUVycm9yXCI7XG5cbmV4cG9ydCBjbGFzcyBLaW50b25lQWxsUmVjb3Jkc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwcm9jZXNzZWRSZWNvcmRzUmVzdWx0OiBhbnk7XG4gIHVucHJvY2Vzc2VkUmVjb3JkczogYW55W107XG4gIGVycm9yOiBLaW50b25lUmVzdEFQSUVycm9yO1xuICBlcnJvckluZGV4PzogbnVtYmVyO1xuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlRXJyb3JJbmRleChlcnJvcnM6IHsgW2s6IHN0cmluZ106IGFueSB9KSB7XG4gICAgY29uc3QgZmlyc3RFcnJvcktleSA9IE9iamVjdC5rZXlzKGVycm9ycylbMF07XG4gICAgY29uc3QgcmVzdWx0ID0gZmlyc3RFcnJvcktleS5tYXRjaCgvcmVjb3Jkc1xcWyhcXGQrKVxcXS8pO1xuICAgIHJldHVybiByZXN1bHQgPyBOdW1iZXIocmVzdWx0WzFdKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBleHRyYWN0RXJyb3JJbmRleChcbiAgICBudW1PZlByb2Nlc3NlZFJlY29yZHM6IG51bWJlcixcbiAgICBlcnJvcjogS2ludG9uZVJlc3RBUElFcnJvcixcbiAgICBjaHVua0xlbmd0aDogbnVtYmVyXG4gICkge1xuICAgIGlmIChlcnJvci5idWxrUmVxdWVzdEluZGV4ICE9PSB1bmRlZmluZWQgJiYgZXJyb3IuZXJyb3JzKSB7XG4gICAgICBjb25zdCBlcnJvclBhcnNlUmVzdWx0ID0gS2ludG9uZUFsbFJlY29yZHNFcnJvci5wYXJzZUVycm9ySW5kZXgoXG4gICAgICAgIGVycm9yLmVycm9yc1xuICAgICAgKTtcbiAgICAgIGlmIChlcnJvclBhcnNlUmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbnVtT2ZQcm9jZXNzZWRSZWNvcmRzICtcbiAgICAgICAgICBlcnJvci5idWxrUmVxdWVzdEluZGV4ICogY2h1bmtMZW5ndGggK1xuICAgICAgICAgIGVycm9yUGFyc2VSZXN1bHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkRXJyb3JNZXNzYWdlKFxuICAgIG51bU9mUHJvY2Vzc2VkUmVjb3JkczogbnVtYmVyLFxuICAgIG51bU9mQWxsUmVjb3JkczogbnVtYmVyLFxuICAgIGVycm9ySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBsZXQgbWVzc2FnZSA9IFwiXCI7XG4gICAgaWYgKGVycm9ySW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVzc2FnZSA9IGBBbiBlcnJvciBvY2N1cnJlZCBhdCByZWNvcmRzWyR7ZXJyb3JJbmRleH1dLiBgO1xuICAgIH1cbiAgICBtZXNzYWdlICs9IGAke251bU9mUHJvY2Vzc2VkUmVjb3Jkc30vJHtudW1PZkFsbFJlY29yZHN9IHJlY29yZHMgYXJlIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHlgO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9jZXNzZWRSZWNvcmRzUmVzdWx0OiBhbnksXG4gICAgdW5wcm9jZXNzZWRSZWNvcmRzOiBhbnlbXSxcbiAgICBudW1PZkFsbFJlY29yZHM6IG51bWJlcixcbiAgICBlcnJvcjogS2ludG9uZVJlc3RBUElFcnJvcixcbiAgICBjaHVua0xlbmd0aDogbnVtYmVyXG4gICkge1xuICAgIGNvbnN0IG51bU9mUHJvY2Vzc2VkUmVjb3JkcyA9IG51bU9mQWxsUmVjb3JkcyAtIHVucHJvY2Vzc2VkUmVjb3Jkcy5sZW5ndGg7XG5cbiAgICBjb25zdCBlcnJvckluZGV4ID0gS2ludG9uZUFsbFJlY29yZHNFcnJvci5leHRyYWN0RXJyb3JJbmRleChcbiAgICAgIG51bU9mUHJvY2Vzc2VkUmVjb3JkcyxcbiAgICAgIGVycm9yLFxuICAgICAgY2h1bmtMZW5ndGhcbiAgICApO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IEtpbnRvbmVBbGxSZWNvcmRzRXJyb3IuYnVpbGRFcnJvck1lc3NhZ2UoXG4gICAgICBudW1PZlByb2Nlc3NlZFJlY29yZHMsXG4gICAgICBudW1PZkFsbFJlY29yZHMsXG4gICAgICBlcnJvckluZGV4XG4gICAgKTtcbiAgICBzdXBlcihtZXNzYWdlKTtcblxuICAgIHRoaXMubmFtZSA9IFwiS2ludG9uZUFsbFJlY29yZHNFcnJvclwiO1xuICAgIHRoaXMucHJvY2Vzc2VkUmVjb3Jkc1Jlc3VsdCA9IHByb2Nlc3NlZFJlY29yZHNSZXN1bHQ7XG4gICAgdGhpcy51bnByb2Nlc3NlZFJlY29yZHMgPSB1bnByb2Nlc3NlZFJlY29yZHM7XG4gICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgIHRoaXMuZXJyb3JJbmRleCA9IGVycm9ySW5kZXg7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC93aWtpL0JyZWFraW5nLUNoYW5nZXMjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrXG4gICAgLy8gU2V0IHRoZSBwcm90b3R5cGUgZXhwbGljaXRseS5cbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgS2ludG9uZUFsbFJlY29yZHNFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBidWlsZFBhdGggfSBmcm9tIFwiLi8uLi91cmxcIjtcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiLi8uLi9odHRwL1wiO1xuaW1wb3J0IHsgQnVsa1JlcXVlc3RDbGllbnQgfSBmcm9tIFwiLi9CdWxrUmVxdWVzdENsaWVudFwiO1xuaW1wb3J0IHsgS2ludG9uZUFsbFJlY29yZHNFcnJvciB9IGZyb20gXCIuLi9lcnJvci9LaW50b25lQWxsUmVjb3Jkc0Vycm9yXCI7XG5pbXBvcnQge1xuICBBcHBJRCxcbiAgUmVjb3JkSUQsXG4gIFJldmlzaW9uLFxuICBSZWNvcmQsXG4gIFVwZGF0ZUtleSxcbiAgQ29tbWVudElELFxuICBDb21tZW50LFxuICBNZW50aW9uLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCBBRERfUkVDT1JEU19MSU1JVCA9IDEwMDtcbmNvbnN0IFVQREFURV9SRUNPUkRTX0xJTUlUID0gMTAwO1xuY29uc3QgREVMRVRFX1JFQ09SRFNfTElNSVQgPSAxMDA7XG5cbnR5cGUgUmVjb3JkRm9yUGFyYW1ldGVyID0ge1xuICBbZmllbGRDb2RlOiBzdHJpbmddOiB7XG4gICAgdmFsdWU6IHVua25vd247XG4gIH07XG59O1xuXG5leHBvcnQgY2xhc3MgUmVjb3JkQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEh0dHBDbGllbnQ7XG4gIHByaXZhdGUgYnVsa1JlcXVlc3RDbGllbnQ6IEJ1bGtSZXF1ZXN0Q2xpZW50O1xuICBwcml2YXRlIGd1ZXN0U3BhY2VJZD86IG51bWJlciB8IHN0cmluZztcbiAgcHJpdmF0ZSBkaWRXYXJuTWF4aW11bU9mZnNldFZhbHVlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNsaWVudDogSHR0cENsaWVudCxcbiAgICBidWxrUmVxdWVzdENsaWVudDogQnVsa1JlcXVlc3RDbGllbnQsXG4gICAgZ3Vlc3RTcGFjZUlkPzogbnVtYmVyIHwgc3RyaW5nXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICAgIHRoaXMuYnVsa1JlcXVlc3RDbGllbnQgPSBidWxrUmVxdWVzdENsaWVudDtcbiAgICB0aGlzLmd1ZXN0U3BhY2VJZCA9IGd1ZXN0U3BhY2VJZDtcbiAgICB0aGlzLmRpZFdhcm5NYXhpbXVtT2Zmc2V0VmFsdWUgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWNvcmQ8VCBleHRlbmRzIFJlY29yZD4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBpZDogUmVjb3JkSUQ7XG4gIH0pOiBQcm9taXNlPHsgcmVjb3JkOiBUIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYWRkUmVjb3JkKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkPzogUmVjb3JkRm9yUGFyYW1ldGVyO1xuICB9KTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZFwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVjb3JkKFxuICAgIHBhcmFtczpcbiAgICAgIHwge1xuICAgICAgICAgIGFwcDogQXBwSUQ7XG4gICAgICAgICAgaWQ6IFJlY29yZElEO1xuICAgICAgICAgIHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjtcbiAgICAgICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgICAgICB9XG4gICAgICB8IHtcbiAgICAgICAgICBhcHA6IEFwcElEO1xuICAgICAgICAgIHVwZGF0ZUtleTogVXBkYXRlS2V5O1xuICAgICAgICAgIHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjtcbiAgICAgICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgICAgICB9XG4gICk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBzZXJ0UmVjb3JkKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgdXBkYXRlS2V5OiBVcGRhdGVLZXk7XG4gICAgcmVjb3JkPzogUmVjb3JkRm9yUGFyYW1ldGVyO1xuICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gIH0pOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBhcHAsIHVwZGF0ZUtleSwgcmVjb3JkIH0gPSBwYXJhbXM7XG4gICAgLy8gaWYgdGhlIGNsaWVudCBjYW4ndCBnZXQgYSByZWNvcmQgbWF0Y2hlcyBgdXBkYXRlS2V5YCwgdXNlIGBhZGRSZWNvcmRgXG4gICAgY29uc3QgeyByZWNvcmRzIH0gPSBhd2FpdCB0aGlzLmdldFJlY29yZHMoe1xuICAgICAgYXBwLFxuICAgICAgcXVlcnk6IGAke3VwZGF0ZUtleS5maWVsZH0gPSBcIiR7dXBkYXRlS2V5LnZhbHVlfVwiYCxcbiAgICB9KTtcbiAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAocmVjb3Jkc1swXS4kaWQudHlwZSA9PT0gXCJfX0lEX19cIikge1xuICAgICAgICBjb25zdCB7IHJldmlzaW9uIH0gPSBhd2FpdCB0aGlzLnVwZGF0ZVJlY29yZChwYXJhbXMpO1xuICAgICAgICByZXR1cm4geyBpZDogcmVjb3Jkc1swXS4kaWQudmFsdWUsIHJldmlzaW9uIH07XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiTWlzc2luZyBgJGlkYCBpbiBgZ2V0UmVjb3Jkc2AgcmVzcG9uc2UuIFRoaXMgZXJyb3IgaXMgbGlrZWx5IGNhdXNlZCBieSBhIGJ1ZyBpbiBLaW50b25lIFJFU1QgQVBJIENsaWVudC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFkZFJlY29yZCh7XG4gICAgICBhcHAsXG4gICAgICByZWNvcmQ6IE9iamVjdC5hc3NpZ24oe30sIHJlY29yZCwge1xuICAgICAgICBbdXBkYXRlS2V5LmZpZWxkXTogeyB2YWx1ZTogdXBkYXRlS2V5LnZhbHVlIH0sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE86IGByZWNvcmRzYCB0eXBlIGluIHJldHVybiB0eXBlIHNob3VsZCBiZSBmaWx0ZXJlZCBieSBgZmllbGRzYC5cbiAgcHVibGljIGFzeW5jIGdldFJlY29yZHM8VCBleHRlbmRzIFJlY29yZD4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBmaWVsZHM/OiBzdHJpbmdbXTtcbiAgICBxdWVyeT86IHN0cmluZztcbiAgICB0b3RhbENvdW50PzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8eyByZWNvcmRzOiBUW107IHRvdGFsQ291bnQ6IHN0cmluZyB8IG51bGwgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHNcIixcbiAgICB9KTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LmdldDx7XG4gICAgICByZWNvcmRzOiBUW107XG4gICAgICB0b3RhbENvdW50OiBzdHJpbmcgfCBudWxsO1xuICAgIH0+KHBhdGgsIHBhcmFtcyk7XG4gICAgdGhpcy53YXJuTWF4aW11bU9mZnNldFZhbHVlSWZOZWVkZWQocGFyYW1zLnF1ZXJ5KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIHdhcm5NYXhpbXVtT2Zmc2V0VmFsdWVJZk5lZWRlZChxdWVyeT86IHN0cmluZykge1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgY29uc3QgcmVnZXhwID0gL29mZnNldFxccysoXFxkKykvaTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHF1ZXJ5Lm1hdGNoKHJlZ2V4cCk7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmRpZFdhcm5NYXhpbXVtT2Zmc2V0VmFsdWUgJiZcbiAgICAgICAgcmVzdWx0ICYmXG4gICAgICAgIE51bWJlcihyZXN1bHRbMV0pID4gMTAwMDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRpZFdhcm5NYXhpbXVtT2Zmc2V0VmFsdWUgPSB0cnVlO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJXYXJuaW5nOiBUaGUgbWF4aW11bSBvZmZzZXQgdmFsdWUgd2lsbCBiZSBsaW1pdGVkIHRvIDEwLDAwMCBpbiB0aGUgZnV0dXJlLiBQbGVhc2UgdXNlIGBjcmVhdGVDdXJzb3IoKWAgYW5kIGBnZXRSZWNvcmRzQnlDdXJzb3IoKWAgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRSZWNvcmRzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkczogUmVjb3JkRm9yUGFyYW1ldGVyW107XG4gIH0pOiBQcm9taXNlPHtcbiAgICBpZHM6IHN0cmluZ1tdO1xuICAgIHJldmlzaW9uczogc3RyaW5nW107XG4gICAgcmVjb3JkczogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+O1xuICB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3Jkc1wiLFxuICAgIH0pO1xuICAgIGNvbnN0IHsgaWRzLCByZXZpc2lvbnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnBvc3Q8e1xuICAgICAgaWRzOiBzdHJpbmdbXTtcbiAgICAgIHJldmlzaW9uczogc3RyaW5nW107XG4gICAgfT4ocGF0aCwgcGFyYW1zKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWRzLFxuICAgICAgcmV2aXNpb25zLFxuICAgICAgcmVjb3JkczogaWRzLm1hcCgoaWQsIGkpID0+ICh7IGlkLCByZXZpc2lvbjogcmV2aXNpb25zW2ldIH0pKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVJlY29yZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByZWNvcmRzOiBBcnJheTxcbiAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICB8IHtcbiAgICAgICAgICB1cGRhdGVLZXk6IFVwZGF0ZUtleTtcbiAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgICAgICAgfVxuICAgID47XG4gIH0pOiBQcm9taXNlPHsgcmVjb3JkczogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+IH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRzXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVJlY29yZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBpZHM6IFJlY29yZElEW107XG4gICAgcmV2aXNpb25zPzogUmV2aXNpb25bXTtcbiAgfSk6IFByb21pc2U8e30+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRzXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmRlbGV0ZShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUN1cnNvcihwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGZpZWxkcz86IHN0cmluZ1tdO1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICAgIHNpemU/OiBudW1iZXIgfCBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgdG90YWxDb3VudDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmRzL2N1cnNvclwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVjb3Jkc0J5Q3Vyc29yPFQgZXh0ZW5kcyBSZWNvcmQ+KHBhcmFtczoge1xuICAgIGlkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHtcbiAgICByZWNvcmRzOiBUW107XG4gICAgbmV4dDogYm9vbGVhbjtcbiAgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHMvY3Vyc29yXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmdldChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUN1cnNvcihwYXJhbXM6IHsgaWQ6IHN0cmluZyB9KTogUHJvbWlzZTx7fT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHMvY3Vyc29yXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmRlbGV0ZShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEFsbFJlY29yZHM8VCBleHRlbmRzIFJlY29yZD4ocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICBmaWVsZHM/OiBzdHJpbmdbXTtcbiAgICBjb25kaXRpb24/OiBzdHJpbmc7XG4gICAgb3JkZXJCeT86IHN0cmluZztcbiAgICB3aXRoQ3Vyc29yPzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgeyBjb25kaXRpb24sIG9yZGVyQnksIHdpdGhDdXJzb3IgPSB0cnVlLCAuLi5yZXN0IH0gPSBwYXJhbXM7XG4gICAgaWYgKCFvcmRlckJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzV2l0aElkKHsgLi4ucmVzdCwgY29uZGl0aW9uIH0pO1xuICAgIH1cbiAgICBpZiAod2l0aEN1cnNvcikge1xuICAgICAgY29uc3QgY29uZGl0aW9uUXVlcnkgPSBjb25kaXRpb24gPyBgJHtjb25kaXRpb259IGAgOiBcIlwiO1xuICAgICAgY29uc3QgcXVlcnkgPSBgJHtjb25kaXRpb25RdWVyeX0ke29yZGVyQnkgPyBgb3JkZXIgYnkgJHtvcmRlckJ5fWAgOiBcIlwifWA7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzV2l0aEN1cnNvcih7IC4uLnJlc3QsIHF1ZXJ5IH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzV2l0aE9mZnNldCh7IC4uLnJlc3QsIG9yZGVyQnksIGNvbmRpdGlvbiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxSZWNvcmRzV2l0aElkPFQgZXh0ZW5kcyBSZWNvcmQ+KHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgZmllbGRzPzogc3RyaW5nW107XG4gICAgY29uZGl0aW9uPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGZpZWxkczogb3JpZ2luYWxGaWVsZHMsIC4uLnJlc3QgfSA9IHBhcmFtcztcbiAgICBsZXQgZmllbGRzID0gb3JpZ2luYWxGaWVsZHM7XG4gICAgLy8gQXBwZW5kICRpZCBpZiAkaWQgZG9lc24ndCBleGlzdCBpbiBmaWVsZHNcbiAgICBpZiAoZmllbGRzICYmIGZpZWxkcy5sZW5ndGggPiAwICYmIGZpZWxkcy5pbmRleE9mKFwiJGlkXCIpID09PSAtMSkge1xuICAgICAgZmllbGRzID0gWy4uLmZpZWxkcywgXCIkaWRcIl07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEFsbFJlY29yZHNSZWN1cnNpdmVXaXRoSWQoeyAuLi5yZXN0LCBmaWVsZHMgfSwgXCIwXCIsIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZVdpdGhJZDxUIGV4dGVuZHMgUmVjb3JkPihcbiAgICBwYXJhbXM6IHtcbiAgICAgIGFwcDogQXBwSUQ7XG4gICAgICBmaWVsZHM/OiBzdHJpbmdbXTtcbiAgICAgIGNvbmRpdGlvbj86IHN0cmluZztcbiAgICB9LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcmVjb3JkczogVFtdXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgR0VUX1JFQ09SRFNfTElNSVQgPSA1MDA7XG5cbiAgICBjb25zdCB7IGNvbmRpdGlvbiwgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IGNvbmRpdGlvblF1ZXJ5ID0gY29uZGl0aW9uID8gYCgke2NvbmRpdGlvbn0pIGFuZCBgIDogXCJcIjtcbiAgICBjb25zdCBxdWVyeSA9IGAke2NvbmRpdGlvblF1ZXJ5fSRpZCA+ICR7aWR9IG9yZGVyIGJ5ICRpZCBhc2MgbGltaXQgJHtHRVRfUkVDT1JEU19MSU1JVH1gO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0UmVjb3JkczxUPih7IC4uLnJlc3QsIHF1ZXJ5IH0pO1xuICAgIGNvbnN0IGFsbFJlY29yZHMgPSByZWNvcmRzLmNvbmNhdChyZXN1bHQucmVjb3Jkcyk7XG4gICAgaWYgKHJlc3VsdC5yZWNvcmRzLmxlbmd0aCA8IEdFVF9SRUNPUkRTX0xJTUlUKSB7XG4gICAgICByZXR1cm4gYWxsUmVjb3JkcztcbiAgICB9XG4gICAgY29uc3QgbGFzdFJlY29yZCA9IHJlc3VsdC5yZWNvcmRzW3Jlc3VsdC5yZWNvcmRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0UmVjb3JkLiRpZC50eXBlID09PSBcIl9fSURfX1wiKSB7XG4gICAgICBjb25zdCBsYXN0SWQgPSBsYXN0UmVjb3JkLiRpZC52YWx1ZTtcbiAgICAgIHJldHVybiB0aGlzLmdldEFsbFJlY29yZHNSZWN1cnNpdmVXaXRoSWQocGFyYW1zLCBsYXN0SWQsIGFsbFJlY29yZHMpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIk1pc3NpbmcgYCRpZGAgaW4gYGdldFJlY29yZHNgIHJlc3BvbnNlLiBUaGlzIGVycm9yIGlzIGxpa2VseSBjYXVzZWQgYnkgYSBidWcgaW4gS2ludG9uZSBSRVNUIEFQSSBDbGllbnQuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxSZWNvcmRzV2l0aE9mZnNldDxUIGV4dGVuZHMgUmVjb3JkPihwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGZpZWxkcz86IHN0cmluZ1tdO1xuICAgIGNvbmRpdGlvbj86IHN0cmluZztcbiAgICBvcmRlckJ5Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxSZWNvcmRzUmVjdXJzaXZlV2l0aE9mZnNldChwYXJhbXMsIDAsIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZVdpdGhPZmZzZXQ8VCBleHRlbmRzIFJlY29yZD4oXG4gICAgcGFyYW1zOiB7XG4gICAgICBhcHA6IEFwcElEO1xuICAgICAgZmllbGRzPzogc3RyaW5nW107XG4gICAgICBjb25kaXRpb24/OiBzdHJpbmc7XG4gICAgICBvcmRlckJ5Pzogc3RyaW5nO1xuICAgIH0sXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgcmVjb3JkczogVFtdXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgR0VUX1JFQ09SRFNfTElNSVQgPSA1MDA7XG5cbiAgICBjb25zdCB7IGNvbmRpdGlvbiwgb3JkZXJCeSwgLi4ucmVzdCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IGNvbmRpdGlvblF1ZXJ5ID0gY29uZGl0aW9uID8gYCR7Y29uZGl0aW9ufSBgIDogXCJcIjtcbiAgICBjb25zdCBxdWVyeSA9IGAke2NvbmRpdGlvblF1ZXJ5fSR7XG4gICAgICBvcmRlckJ5ID8gYG9yZGVyIGJ5ICR7b3JkZXJCeX0gYCA6IFwiXCJcbiAgICB9bGltaXQgJHtHRVRfUkVDT1JEU19MSU1JVH0gb2Zmc2V0ICR7b2Zmc2V0fWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRSZWNvcmRzPFQ+KHsgLi4ucmVzdCwgcXVlcnkgfSk7XG4gICAgY29uc3QgYWxsUmVjb3JkcyA9IHJlY29yZHMuY29uY2F0KHJlc3VsdC5yZWNvcmRzKTtcbiAgICBpZiAocmVzdWx0LnJlY29yZHMubGVuZ3RoIDwgR0VUX1JFQ09SRFNfTElNSVQpIHtcbiAgICAgIHJldHVybiBhbGxSZWNvcmRzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEFsbFJlY29yZHNSZWN1cnNpdmVXaXRoT2Zmc2V0KFxuICAgICAgcGFyYW1zLFxuICAgICAgb2Zmc2V0ICsgR0VUX1JFQ09SRFNfTElNSVQsXG4gICAgICBhbGxSZWNvcmRzXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRBbGxSZWNvcmRzV2l0aEN1cnNvcjxUIGV4dGVuZHMgUmVjb3JkPihwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIGZpZWxkcz86IHN0cmluZ1tdO1xuICAgIHF1ZXJ5Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGlkIH0gPSBhd2FpdCB0aGlzLmNyZWF0ZUN1cnNvcihwYXJhbXMpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRBbGxSZWNvcmRzUmVjdXJzaXZlQnlDdXJzb3I8VD4oaWQsIFtdKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVDdXJzb3IoeyBpZCB9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZUJ5Q3Vyc29yPFQgZXh0ZW5kcyBSZWNvcmQ+KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcmVjb3JkczogVFtdXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRSZWNvcmRzQnlDdXJzb3I8VD4oeyBpZCB9KTtcbiAgICBjb25zdCBhbGxSZWNvcmRzID0gcmVjb3Jkcy5jb25jYXQocmVzdWx0LnJlY29yZHMpO1xuICAgIGlmIChyZXN1bHQubmV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZUJ5Q3Vyc29yKGlkLCBhbGxSZWNvcmRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGFsbFJlY29yZHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQWxsUmVjb3JkcyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IFJlY29yZEZvclBhcmFtZXRlcltdO1xuICB9KTogUHJvbWlzZTx7IHJlY29yZHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB9PiB7XG4gICAgaWYgKFxuICAgICAgIXBhcmFtcy5yZWNvcmRzLmV2ZXJ5KFxuICAgICAgICAocmVjb3JkKSA9PiAhQXJyYXkuaXNBcnJheShyZWNvcmQpICYmIHJlY29yZCBpbnN0YW5jZW9mIE9iamVjdFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGhlIGByZWNvcmRzYCBwYXJhbWV0ZXIgbXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3QuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hZGRBbGxSZWNvcmRzUmVjdXJzaXZlKHBhcmFtcywgcGFyYW1zLnJlY29yZHMubGVuZ3RoLCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZEFsbFJlY29yZHNSZWN1cnNpdmUoXG4gICAgcGFyYW1zOiB7IGFwcDogQXBwSUQ7IHJlY29yZHM6IFJlY29yZEZvclBhcmFtZXRlcltdIH0sXG4gICAgbnVtT2ZBbGxSZWNvcmRzOiBudW1iZXIsXG4gICAgcmVzdWx0czogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+XG4gICk6IFByb21pc2U8eyByZWNvcmRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT4gfT4ge1xuICAgIGNvbnN0IENIVU5LX0xFTkdUSCA9XG4gICAgICB0aGlzLmJ1bGtSZXF1ZXN0Q2xpZW50LlJFUVVFU1RTX0xFTkdUSF9MSU1JVCAqIEFERF9SRUNPUkRTX0xJTUlUO1xuICAgIGNvbnN0IHsgYXBwLCByZWNvcmRzIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcmVjb3Jkc0NodW5rID0gcmVjb3Jkcy5zbGljZSgwLCBDSFVOS19MRU5HVEgpO1xuICAgIGlmIChyZWNvcmRzQ2h1bmsubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyByZWNvcmRzOiByZXN1bHRzIH07XG4gICAgfVxuICAgIGxldCBuZXdSZXN1bHRzO1xuICAgIHRyeSB7XG4gICAgICBuZXdSZXN1bHRzID0gYXdhaXQgdGhpcy5hZGRBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0KHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzQ2h1bmssXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBLaW50b25lQWxsUmVjb3Jkc0Vycm9yKFxuICAgICAgICB7IHJlY29yZHM6IHJlc3VsdHMgfSxcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgbnVtT2ZBbGxSZWNvcmRzLFxuICAgICAgICBlLFxuICAgICAgICBBRERfUkVDT1JEU19MSU1JVFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWRkQWxsUmVjb3Jkc1JlY3Vyc2l2ZShcbiAgICAgIHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzLnNsaWNlKENIVU5LX0xFTkdUSCksXG4gICAgICB9LFxuICAgICAgbnVtT2ZBbGxSZWNvcmRzLFxuICAgICAgcmVzdWx0cy5jb25jYXQobmV3UmVzdWx0cylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0KHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkczogUmVjb3JkRm9yUGFyYW1ldGVyW107XG4gIH0pOiBQcm9taXNlPFxuICAgIEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICByZXZpc2lvbjogc3RyaW5nO1xuICAgIH0+XG4gID4ge1xuICAgIGNvbnN0IHNlcGFyYXRlZFJlY29yZHMgPSB0aGlzLnNlcGFyYXRlQXJyYXlSZWN1cnNpdmUoXG4gICAgICBBRERfUkVDT1JEU19MSU1JVCxcbiAgICAgIFtdLFxuICAgICAgcGFyYW1zLnJlY29yZHNcbiAgICApO1xuICAgIGNvbnN0IHJlcXVlc3RzID0gc2VwYXJhdGVkUmVjb3Jkcy5tYXAoKHJlY29yZHMpID0+ICh7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHNcIiBhcyBjb25zdCxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgICByZWNvcmRzLFxuICAgICAgfSxcbiAgICB9KSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IChhd2FpdCB0aGlzLmJ1bGtSZXF1ZXN0Q2xpZW50LnNlbmQoeyByZXF1ZXN0cyB9KSlcbiAgICAgIC5yZXN1bHRzIGFzIEFycmF5PHsgaWRzOiBzdHJpbmdbXTsgcmV2aXNpb25zOiBzdHJpbmdbXSB9PjtcbiAgICByZXR1cm4gcmVzdWx0c1xuICAgICAgLm1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaWRzLCByZXZpc2lvbnMgfSA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIGlkcy5tYXAoKGlkLCBpKSA9PiAoeyBpZCwgcmV2aXNpb246IHJldmlzaW9uc1tpXSB9KSk7XG4gICAgICB9KVxuICAgICAgLnJlZHVjZSgoYWNjLCByZWNvcmRzKSA9PiB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KHJlY29yZHMpO1xuICAgICAgfSwgW10pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUFsbFJlY29yZHMocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByZWNvcmRzOiBBcnJheTxcbiAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICB8IHtcbiAgICAgICAgICB1cGRhdGVLZXk6IFVwZGF0ZUtleTtcbiAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgICAgICAgfVxuICAgID47XG4gIH0pOiBQcm9taXNlPHsgcmVjb3JkczogQXJyYXk8eyBpZDogc3RyaW5nOyByZXZpc2lvbjogc3RyaW5nIH0+IH0+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVBbGxSZWNvcmRzUmVjdXJzaXZlKHBhcmFtcywgcGFyYW1zLnJlY29yZHMubGVuZ3RoLCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFsbFJlY29yZHNSZWN1cnNpdmUoXG4gICAgcGFyYW1zOiB7XG4gICAgICBhcHA6IEFwcElEO1xuICAgICAgcmVjb3JkczogQXJyYXk8XG4gICAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICAgIHwge1xuICAgICAgICAgICAgdXBkYXRlS2V5OiBVcGRhdGVLZXk7XG4gICAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgICAgICAgIH1cbiAgICAgID47XG4gICAgfSxcbiAgICBudW1PZkFsbFJlY29yZHM6IG51bWJlcixcbiAgICByZXN1bHRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT5cbiAgKTogUHJvbWlzZTx7IHJlY29yZHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB9PiB7XG4gICAgY29uc3QgQ0hVTktfTEVOR1RIID1cbiAgICAgIHRoaXMuYnVsa1JlcXVlc3RDbGllbnQuUkVRVUVTVFNfTEVOR1RIX0xJTUlUICogVVBEQVRFX1JFQ09SRFNfTElNSVQ7XG4gICAgY29uc3QgeyBhcHAsIHJlY29yZHMgfSA9IHBhcmFtcztcbiAgICBjb25zdCByZWNvcmRzQ2h1bmsgPSByZWNvcmRzLnNsaWNlKDAsIENIVU5LX0xFTkdUSCk7XG4gICAgaWYgKHJlY29yZHNDaHVuay5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IHJlY29yZHM6IHJlc3VsdHMgfTtcbiAgICB9XG4gICAgbGV0IG5ld1Jlc3VsdHM7XG4gICAgdHJ5IHtcbiAgICAgIG5ld1Jlc3VsdHMgPSBhd2FpdCB0aGlzLnVwZGF0ZUFsbFJlY29yZHNXaXRoQnVsa1JlcXVlc3Qoe1xuICAgICAgICBhcHAsXG4gICAgICAgIHJlY29yZHM6IHJlY29yZHNDaHVuayxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEtpbnRvbmVBbGxSZWNvcmRzRXJyb3IoXG4gICAgICAgIHsgcmVjb3JkczogcmVzdWx0cyB9LFxuICAgICAgICByZWNvcmRzLFxuICAgICAgICBudW1PZkFsbFJlY29yZHMsXG4gICAgICAgIGUsXG4gICAgICAgIFVQREFURV9SRUNPUkRTX0xJTUlUXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51cGRhdGVBbGxSZWNvcmRzUmVjdXJzaXZlKFxuICAgICAge1xuICAgICAgICBhcHAsXG4gICAgICAgIHJlY29yZHM6IHJlY29yZHMuc2xpY2UoQ0hVTktfTEVOR1RIKSxcbiAgICAgIH0sXG4gICAgICBudW1PZkFsbFJlY29yZHMsXG4gICAgICByZXN1bHRzLmNvbmNhdChuZXdSZXN1bHRzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUFsbFJlY29yZHNXaXRoQnVsa1JlcXVlc3QocGFyYW1zOiB7XG4gICAgYXBwOiBBcHBJRDtcbiAgICByZWNvcmRzOiBBcnJheTxcbiAgICAgIHwgeyBpZDogUmVjb3JkSUQ7IHJlY29yZD86IFJlY29yZEZvclBhcmFtZXRlcjsgcmV2aXNpb24/OiBSZXZpc2lvbiB9XG4gICAgICB8IHtcbiAgICAgICAgICB1cGRhdGVLZXk6IFVwZGF0ZUtleTtcbiAgICAgICAgICByZWNvcmQ/OiBSZWNvcmRGb3JQYXJhbWV0ZXI7XG4gICAgICAgICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgICAgICAgfVxuICAgID47XG4gIH0pOiBQcm9taXNlPEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9Pj4ge1xuICAgIGNvbnN0IHNlcGFyYXRlZFJlY29yZHMgPSB0aGlzLnNlcGFyYXRlQXJyYXlSZWN1cnNpdmUoXG4gICAgICBVUERBVEVfUkVDT1JEU19MSU1JVCxcbiAgICAgIFtdLFxuICAgICAgcGFyYW1zLnJlY29yZHNcbiAgICApO1xuICAgIGNvbnN0IHJlcXVlc3RzID0gc2VwYXJhdGVkUmVjb3Jkcy5tYXAoKHJlY29yZHMpID0+ICh7XG4gICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3Jkc1wiIGFzIGNvbnN0LFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBhcHA6IHBhcmFtcy5hcHAsXG4gICAgICAgIHJlY29yZHMsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBjb25zdCByZXN1bHRzID0gKGF3YWl0IHRoaXMuYnVsa1JlcXVlc3RDbGllbnQuc2VuZCh7IHJlcXVlc3RzIH0pKVxuICAgICAgLnJlc3VsdHMgYXMgQXJyYXk8eyByZWNvcmRzOiBBcnJheTx7IGlkOiBzdHJpbmc7IHJldmlzaW9uOiBzdHJpbmcgfT4gfT47XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgIC5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnJlY29yZHMpXG4gICAgICAucmVkdWNlKChhY2MsIHJlY29yZHMpID0+IHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQocmVjb3Jkcyk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQWxsUmVjb3JkcyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IEFycmF5PHtcbiAgICAgIGlkOiBSZWNvcmRJRDtcbiAgICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gICAgfT47XG4gIH0pOiBQcm9taXNlPHt9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQWxsUmVjb3Jkc1JlY3Vyc2l2ZShwYXJhbXMsIHBhcmFtcy5yZWNvcmRzLmxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZUFsbFJlY29yZHNSZWN1cnNpdmUoXG4gICAgcGFyYW1zOiB7XG4gICAgICBhcHA6IEFwcElEO1xuICAgICAgcmVjb3JkczogQXJyYXk8e1xuICAgICAgICBpZDogUmVjb3JkSUQ7XG4gICAgICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gICAgICB9PjtcbiAgICB9LFxuICAgIG51bU9mQWxsUmVjb3JkczogbnVtYmVyXG4gICk6IFByb21pc2U8e30+IHtcbiAgICBjb25zdCBDSFVOS19MRU5HVEggPVxuICAgICAgdGhpcy5idWxrUmVxdWVzdENsaWVudC5SRVFVRVNUU19MRU5HVEhfTElNSVQgKiBERUxFVEVfUkVDT1JEU19MSU1JVDtcbiAgICBjb25zdCB7IGFwcCwgcmVjb3JkcyB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHJlY29yZHNDaHVuayA9IHJlY29yZHMuc2xpY2UoMCwgQ0hVTktfTEVOR1RIKTtcbiAgICBpZiAocmVjb3Jkc0NodW5rLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0KHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzQ2h1bmssXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBLaW50b25lQWxsUmVjb3Jkc0Vycm9yKFxuICAgICAgICB7fSxcbiAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgbnVtT2ZBbGxSZWNvcmRzLFxuICAgICAgICBlLFxuICAgICAgICBERUxFVEVfUkVDT1JEU19MSU1JVFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlQWxsUmVjb3Jkc1JlY3Vyc2l2ZShcbiAgICAgIHtcbiAgICAgICAgYXBwLFxuICAgICAgICByZWNvcmRzOiByZWNvcmRzLnNsaWNlKENIVU5LX0xFTkdUSCksXG4gICAgICB9LFxuICAgICAgbnVtT2ZBbGxSZWNvcmRzXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlQWxsUmVjb3Jkc1dpdGhCdWxrUmVxdWVzdChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IEFycmF5PHtcbiAgICAgIGlkOiBSZWNvcmRJRDtcbiAgICAgIHJldmlzaW9uPzogUmV2aXNpb247XG4gICAgfT47XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXBhcmF0ZWRSZWNvcmRzID0gdGhpcy5zZXBhcmF0ZUFycmF5UmVjdXJzaXZlKFxuICAgICAgREVMRVRFX1JFQ09SRFNfTElNSVQsXG4gICAgICBbXSxcbiAgICAgIHBhcmFtcy5yZWNvcmRzXG4gICAgKTtcbiAgICBjb25zdCByZXF1ZXN0cyA9IHNlcGFyYXRlZFJlY29yZHMubWFwKChyZWNvcmRzKSA9PiAoe1xuICAgICAgbWV0aG9kOiBcIkRFTEVURVwiLFxuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZHNcIiBhcyBjb25zdCxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgICBpZHM6IHJlY29yZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5pZCksXG4gICAgICAgIHJldmlzaW9uczogcmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gcmVjb3JkLnJldmlzaW9uKSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICAgIGF3YWl0IHRoaXMuYnVsa1JlcXVlc3RDbGllbnQuc2VuZCh7IHJlcXVlc3RzIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXBhcmF0ZUFycmF5UmVjdXJzaXZlPFQ+KFxuICAgIHNpemU6IG51bWJlcixcbiAgICBzZXBhcmF0ZWQ6IFRbXVtdLFxuICAgIGFycmF5OiBUW11cbiAgKTogVFtdW10ge1xuICAgIGNvbnN0IGNodW5rID0gYXJyYXkuc2xpY2UoMCwgc2l6ZSk7XG4gICAgaWYgKGNodW5rLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRlZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VwYXJhdGVBcnJheVJlY3Vyc2l2ZShcbiAgICAgIHNpemUsXG4gICAgICBbLi4uc2VwYXJhdGVkLCBjaHVua10sXG4gICAgICBhcnJheS5zbGljZShzaXplKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkUmVjb3JkQ29tbWVudChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZDogUmVjb3JkSUQ7XG4gICAgY29tbWVudDoge1xuICAgICAgdGV4dDogc3RyaW5nO1xuICAgICAgbWVudGlvbnM/OiBNZW50aW9uW107XG4gICAgfTtcbiAgfSk6IFByb21pc2U8eyBpZDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmQvY29tbWVudFwiLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5wb3N0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlUmVjb3JkQ29tbWVudChwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZDogUmVjb3JkSUQ7XG4gICAgY29tbWVudDogQ29tbWVudElEO1xuICB9KTogUHJvbWlzZTx7fT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZC9jb21tZW50XCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmRlbGV0ZShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGdldFJlY29yZENvbW1lbnRzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgcmVjb3JkOiBSZWNvcmRJRDtcbiAgICBvcmRlcj86IFwiYXNjXCIgfCBcImRlc2NcIjtcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgbGltaXQ/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHsgY29tbWVudHM6IENvbW1lbnRbXTsgb2xkZXI6IGJvb2xlYW47IG5ld2VyOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmQvY29tbWVudHNcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVjb3JkQXNzaWduZWVzKHBhcmFtczoge1xuICAgIGFwcDogQXBwSUQ7XG4gICAgaWQ6IFJlY29yZElEO1xuICAgIGFzc2lnbmVlczogc3RyaW5nW107XG4gICAgcmV2aXNpb24/OiBSZXZpc2lvbjtcbiAgfSk6IFByb21pc2U8eyByZXZpc2lvbjogc3RyaW5nIH0+IHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5idWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHtcbiAgICAgIGVuZHBvaW50TmFtZTogXCJyZWNvcmQvYXNzaWduZWVzXCIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnB1dChwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVJlY29yZFN0YXR1cyhwYXJhbXM6IHtcbiAgICBhY3Rpb246IHN0cmluZztcbiAgICBhcHA6IEFwcElEO1xuICAgIGFzc2lnbmVlPzogc3RyaW5nO1xuICAgIGlkOiBSZWNvcmRJRDtcbiAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICB9KTogUHJvbWlzZTx7IHJldmlzaW9uOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcInJlY29yZC9zdGF0dXNcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUmVjb3Jkc1N0YXR1cyhwYXJhbXM6IHtcbiAgICBhcHA6IEFwcElEO1xuICAgIHJlY29yZHM6IEFycmF5PHtcbiAgICAgIGFjdGlvbjogc3RyaW5nO1xuICAgICAgYXNzaWduZWU/OiBzdHJpbmc7XG4gICAgICBpZDogUmVjb3JkSUQ7XG4gICAgICByZXZpc2lvbj86IFJldmlzaW9uO1xuICAgIH0+O1xuICB9KTogUHJvbWlzZTx7IHJlY29yZHM6IEFycmF5PHsgaWQ6IHN0cmluZzsgcmV2aXNpb246IHN0cmluZyB9PiB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwicmVjb3Jkcy9zdGF0dXNcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucHV0KHBhdGgsIHBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQocGFyYW1zOiB7IGVuZHBvaW50TmFtZTogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gYnVpbGRQYXRoKHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIGd1ZXN0U3BhY2VJZDogdGhpcy5ndWVzdFNwYWNlSWQsXG4gICAgfSk7XG4gIH1cbn1cbiIsIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyA/IHNlbGYuRm9ybURhdGEgOiB3aW5kb3cuRm9ybURhdGE7XG4iLCJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIi4uL2h0dHBcIjtcbmltcG9ydCB7IGJ1aWxkUGF0aCB9IGZyb20gXCIuLi91cmxcIjtcbmltcG9ydCBGb3JtRGF0YSBmcm9tIFwiZm9ybS1kYXRhXCI7XG5pbXBvcnQgeyBwbGF0Zm9ybURlcHMgfSBmcm9tIFwiLi4vcGxhdGZvcm1cIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvciB9IGZyb20gXCIuLi9wbGF0Zm9ybS9VbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3JcIjtcblxuZXhwb3J0IGNsYXNzIEZpbGVDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogSHR0cENsaWVudDtcbiAgcHJpdmF0ZSBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY2xpZW50OiBIdHRwQ2xpZW50LCBndWVzdFNwYWNlSWQ/OiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICB0aGlzLmd1ZXN0U3BhY2VJZCA9IGd1ZXN0U3BhY2VJZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGxvYWRGaWxlKHBhcmFtczoge1xuICAgIGZpbGU6IHsgbmFtZTogc3RyaW5nOyBkYXRhOiB1bmtub3duIH0gfCB7IHBhdGg6IHN0cmluZyB9O1xuICB9KTogUHJvbWlzZTx7IGZpbGVLZXk6IHN0cmluZyB9PiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuYnVpbGRQYXRoV2l0aEd1ZXN0U3BhY2VJZCh7XG4gICAgICBlbmRwb2ludE5hbWU6IFwiZmlsZVwiLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBpZiAoXCJwYXRoXCIgaW4gcGFyYW1zLmZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZGF0YSB9ID0gYXdhaXQgcGxhdGZvcm1EZXBzLnJlYWRGaWxlRnJvbVBhdGgoXG4gICAgICAgICAgcGFyYW1zLmZpbGUucGF0aFxuICAgICAgICApO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlXCIsIGRhdGEsIG5hbWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGB1cGxvYWRGaWxlIGRvZXNuJ3QgYWxsb3cgdG8gYWNjZXB0IGEgZmlsZSBwYXRoIGluICR7ZS5wbGF0Zm9ybX0gZW52aXJvbm1lbnQuYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGRhdGEgfSA9IHBhcmFtcy5maWxlO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBwbGF0Zm9ybURlcHMuYnVpbGRGb3JtRGF0YVZhbHVlKGRhdGEpLCBuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnBvc3REYXRhKHBhdGgsIGZvcm1EYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZpbGUocGFyYW1zOiB7IGZpbGVLZXk6IHN0cmluZyB9KTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmJ1aWxkUGF0aFdpdGhHdWVzdFNwYWNlSWQoe1xuICAgICAgZW5kcG9pbnROYW1lOiBcImZpbGVcIixcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuZ2V0RGF0YShwYXRoLCBwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkKHBhcmFtczogeyBlbmRwb2ludE5hbWU6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIGJ1aWxkUGF0aCh7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBndWVzdFNwYWNlSWQ6IHRoaXMuZ3Vlc3RTcGFjZUlkLFxuICAgIH0pO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheSh2YWwpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsLmNvbnN0cnVjdG9yICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwuY29uc3RydWN0b3IpXG4gICAgJiYgdHlwZW9mIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIodmFsKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Zvcm1EYXRhKHZhbCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGb3JtRGF0YV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmIChpc0FycmF5QnVmZmVyKHZhbC5idWZmZXIpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG4gIGlmICh0b1N0cmluZy5jYWxsKHZhbCkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpO1xuICByZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0ZpbGUodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZpbGVdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Jsb2IodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEJsb2JdJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyZWFtKHZhbCkge1xuICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VSTFNlYXJjaFBhcmFtcyh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgVVJMU2VhcmNoUGFyYW1zXSc7XG59XG5cbi8qKlxuICogVHJpbSBleGNlc3Mgd2hpdGVzcGFjZSBvZmYgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgU3RyaW5nIHRvIHRyaW1cbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBTdHJpbmcgZnJlZWQgb2YgZXhjZXNzIHdoaXRlc3BhY2VcbiAqL1xuZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgcmV0dXJuIHN0ci50cmltID8gc3RyLnRyaW0oKSA6IHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICovXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFtrZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2UocmVzdWx0W2tleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGZvckVhY2goYXJndW1lbnRzW2ldLCBhc3NpZ25WYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIG9iamVjdCBhIGJ5IG11dGFibHkgYWRkaW5nIHRvIGl0IHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBiIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZChhLCBiLCB0aGlzQXJnKSB7XG4gIGZvckVhY2goYiwgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAodGhpc0FyZyAmJiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYnl0ZSBvcmRlciBtYXJrZXIuIFRoaXMgY2F0Y2hlcyBFRiBCQiBCRiAodGhlIFVURi04IEJPTSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCB3aXRoIEJPTVxuICogQHJldHVybiB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmZ1bmN0aW9uIHN0cmlwQk9NKGNvbnRlbnQpIHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltLFxuICBzdHJpcEJPTTogc3RyaXBCT01cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIEludGVyY2VwdG9yTWFuYWdlcigpIHtcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCwgb3B0aW9ucykge1xuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxuICAgIHJlamVjdGVkOiByZWplY3RlZCxcbiAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmVqZWN0ID0gZnVuY3Rpb24gZWplY3QoaWQpIHtcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gKlxuICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgIGZuKGgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcbiIsImV4cG9ydCBkZWZhdWx0ICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDpcbiAgICAgICAgICAgIHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6XG4gICAgICAgICAgICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pO1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG4vLyBiYXNlZCBvZmYgaHR0cHM6Ly9naXRodWIuY29tL2RlZnVuY3R6b21iaWUvbm9kZS1wcm9jZXNzL2Jsb2IvbWFzdGVyL2Jyb3dzZXIuanNcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG52YXIgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbmlmICh0eXBlb2YgZ2xvYmFsLnNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbn1cbmlmICh0eXBlb2YgZ2xvYmFsLmNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbn1cblxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5leHRUaWNrKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59XG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xuZXhwb3J0IHZhciB0aXRsZSA9ICdicm93c2VyJztcbmV4cG9ydCB2YXIgcGxhdGZvcm0gPSAnYnJvd3Nlcic7XG5leHBvcnQgdmFyIGJyb3dzZXIgPSB0cnVlO1xuZXhwb3J0IHZhciBlbnYgPSB7fTtcbmV4cG9ydCB2YXIgYXJndiA9IFtdO1xuZXhwb3J0IHZhciB2ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5leHBvcnQgdmFyIHZlcnNpb25zID0ge307XG5leHBvcnQgdmFyIHJlbGVhc2UgPSB7fTtcbmV4cG9ydCB2YXIgY29uZmlnID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5leHBvcnQgdmFyIG9uID0gbm9vcDtcbmV4cG9ydCB2YXIgYWRkTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciBvbmNlID0gbm9vcDtcbmV4cG9ydCB2YXIgb2ZmID0gbm9vcDtcbmV4cG9ydCB2YXIgcmVtb3ZlTGlzdGVuZXIgPSBub29wO1xuZXhwb3J0IHZhciByZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xuZXhwb3J0IHZhciBlbWl0ID0gbm9vcDtcblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmcobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN3ZCAoKSB7IHJldHVybiAnLycgfVxuZXhwb3J0IGZ1bmN0aW9uIGNoZGlyIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiB1bWFzaygpIHsgcmV0dXJuIDA7IH1cblxuLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20va3VtYXZpcy9icm93c2VyLXByb2Nlc3MtaHJ0aW1lL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG52YXIgcGVyZm9ybWFuY2UgPSBnbG9iYWwucGVyZm9ybWFuY2UgfHwge31cbnZhciBwZXJmb3JtYW5jZU5vdyA9XG4gIHBlcmZvcm1hbmNlLm5vdyAgICAgICAgfHxcbiAgcGVyZm9ybWFuY2UubW96Tm93ICAgICB8fFxuICBwZXJmb3JtYW5jZS5tc05vdyAgICAgIHx8XG4gIHBlcmZvcm1hbmNlLm9Ob3cgICAgICAgfHxcbiAgcGVyZm9ybWFuY2Uud2Via2l0Tm93ICB8fFxuICBmdW5jdGlvbigpeyByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSB9XG5cbi8vIGdlbmVyYXRlIHRpbWVzdGFtcCBvciBkZWx0YVxuLy8gc2VlIGh0dHA6Ly9ub2RlanMub3JnL2FwaS9wcm9jZXNzLmh0bWwjcHJvY2Vzc19wcm9jZXNzX2hydGltZVxuZXhwb3J0IGZ1bmN0aW9uIGhydGltZShwcmV2aW91c1RpbWVzdGFtcCl7XG4gIHZhciBjbG9ja3RpbWUgPSBwZXJmb3JtYW5jZU5vdy5jYWxsKHBlcmZvcm1hbmNlKSoxZS0zXG4gIHZhciBzZWNvbmRzID0gTWF0aC5mbG9vcihjbG9ja3RpbWUpXG4gIHZhciBuYW5vc2Vjb25kcyA9IE1hdGguZmxvb3IoKGNsb2NrdGltZSUxKSoxZTkpXG4gIGlmIChwcmV2aW91c1RpbWVzdGFtcCkge1xuICAgIHNlY29uZHMgPSBzZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMF1cbiAgICBuYW5vc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC0gcHJldmlvdXNUaW1lc3RhbXBbMV1cbiAgICBpZiAobmFub3NlY29uZHM8MCkge1xuICAgICAgc2Vjb25kcy0tXG4gICAgICBuYW5vc2Vjb25kcyArPSAxZTlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtzZWNvbmRzLG5hbm9zZWNvbmRzXVxufVxuXG52YXIgc3RhcnRUaW1lID0gbmV3IERhdGUoKTtcbmV4cG9ydCBmdW5jdGlvbiB1cHRpbWUoKSB7XG4gIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gIHZhciBkaWYgPSBjdXJyZW50VGltZSAtIHN0YXJ0VGltZTtcbiAgcmV0dXJuIGRpZiAvIDEwMDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmV4dFRpY2s6IG5leHRUaWNrLFxuICB0aXRsZTogdGl0bGUsXG4gIGJyb3dzZXI6IGJyb3dzZXIsXG4gIGVudjogZW52LFxuICBhcmd2OiBhcmd2LFxuICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICB2ZXJzaW9uczogdmVyc2lvbnMsXG4gIG9uOiBvbixcbiAgYWRkTGlzdGVuZXI6IGFkZExpc3RlbmVyLFxuICBvbmNlOiBvbmNlLFxuICBvZmY6IG9mZixcbiAgcmVtb3ZlTGlzdGVuZXI6IHJlbW92ZUxpc3RlbmVyLFxuICByZW1vdmVBbGxMaXN0ZW5lcnM6IHJlbW92ZUFsbExpc3RlbmVycyxcbiAgZW1pdDogZW1pdCxcbiAgYmluZGluZzogYmluZGluZyxcbiAgY3dkOiBjd2QsXG4gIGNoZGlyOiBjaGRpcixcbiAgdW1hc2s6IHVtYXNrLFxuICBocnRpbWU6IGhydGltZSxcbiAgcGxhdGZvcm06IHBsYXRmb3JtLFxuICByZWxlYXNlOiByZWxlYXNlLFxuICBjb25maWc6IGNvbmZpZyxcbiAgdXB0aW1lOiB1cHRpbWVcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCBub3JtYWxpemVkTmFtZSkge1xuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIodmFsdWUsIG5hbWUpIHtcbiAgICBpZiAobmFtZSAhPT0gbm9ybWFsaXplZE5hbWUgJiYgbmFtZS50b1VwcGVyQ2FzZSgpID09PSBub3JtYWxpemVkTmFtZS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xuICAgICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XG4gICAgfVxuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXBkYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWcsIGVycm9yIGNvZGUsIGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IgdG8gdXBkYXRlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlbmhhbmNlRXJyb3IoZXJyb3IsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgZXJyb3IuY29uZmlnID0gY29uZmlnO1xuICBpZiAoY29kZSkge1xuICAgIGVycm9yLmNvZGUgPSBjb2RlO1xuICB9XG5cbiAgZXJyb3IucmVxdWVzdCA9IHJlcXVlc3Q7XG4gIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gIGVycm9yLmlzQXhpb3NFcnJvciA9IHRydWU7XG5cbiAgZXJyb3IudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBTdGFuZGFyZFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgLy8gTWljcm9zb2Z0XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXG4gICAgICAvLyBNb3ppbGxhXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIC8vIEF4aW9zXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnJlc3BvbnNlICYmIHRoaXMucmVzcG9uc2Uuc3RhdHVzID8gdGhpcy5yZXNwb25zZS5zdGF0dXMgOiBudWxsXG4gICAgfTtcbiAgfTtcbiAgcmV0dXJuIGVycm9yO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNpbGVudEpTT05QYXJzaW5nOiB0cnVlLFxuICBmb3JjZWRKU09OUGFyc2luZzogdHJ1ZSxcbiAgY2xhcmlmeVRpbWVvdXRFcnJvcjogZmFsc2Vcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuL2VuaGFuY2VFcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFcnJvcihtZXNzYWdlLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuL2NyZWF0ZUVycm9yJyk7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgdmFyIHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICBudWxsLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgICAgdmFyIGNvb2tpZSA9IFtdO1xuICAgICAgICAgIGNvb2tpZS5wdXNoKG5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcblxuICAgICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhwYXRoKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKG5hbWUpIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZCgpIHsgcmV0dXJuIG51bGw7IH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkK1xcLS5dKjopP1xcL1xcLy9pLnRlc3QodXJsKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc0Fic29sdXRlVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9pc0Fic29sdXRlVVJMJyk7XG52YXIgY29tYmluZVVSTHMgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2NvbWJpbmVVUkxzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBiYXNlVVJMIHdpdGggdGhlIHJlcXVlc3RlZFVSTCxcbiAqIG9ubHkgd2hlbiB0aGUgcmVxdWVzdGVkVVJMIGlzIG5vdCBhbHJlYWR5IGFuIGFic29sdXRlIFVSTC5cbiAqIElmIHRoZSByZXF1ZXN0VVJMIGlzIGFic29sdXRlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVlc3RlZFVSTCB1bnRvdWNoZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdGVkVVJMIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCB0byBjb21iaW5lXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgZnVsbCBwYXRoXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpIHtcbiAgaWYgKGJhc2VVUkwgJiYgIWlzQWJzb2x1dGVVUkwocmVxdWVzdGVkVVJMKSkge1xuICAgIHJldHVybiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0ZWRVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XG4gIC8vIHdoZXRoZXIgdGhlIHJlcXVlc3QgVVJMIGlzIG9mIHRoZSBzYW1lIG9yaWdpbiBhcyBjdXJyZW50IGxvY2F0aW9uLlxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICB2YXIgdXJsUGFyc2luZ05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICB2YXIgb3JpZ2luVVJMO1xuXG4gICAgICAvKipcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgVGhlIFVSTCB0byBiZSBwYXJzZWRcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgKi9cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVVUkwodXJsKSB7XG4gICAgICAgIHZhciBocmVmID0gdXJsO1xuXG4gICAgICAgIGlmIChtc2llKSB7XG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcbiAgICAgICAgICBocmVmID0gdXJsUGFyc2luZ05vZGUuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdDogdXJsUGFyc2luZ05vZGUuaG9zdCxcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0bmFtZTogdXJsUGFyc2luZ05vZGUuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XG4gICAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZSA6XG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcblxuICAgICAgLyoqXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxuICAgICpcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxuICAgICovXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcbiAgICAgICAgcmV0dXJuIChwYXJzZWQucHJvdG9jb2wgPT09IG9yaWdpblVSTC5wcm90b2NvbCAmJlxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQSBgQ2FuY2VsYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbkNhbmNlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XG59O1xuXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcbnZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIGJ1aWxkRnVsbFBhdGggPSByZXF1aXJlKCcuLi9jb3JlL2J1aWxkRnVsbFBhdGgnKTtcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzJyk7XG52YXIgaXNVUkxTYW1lT3JpZ2luID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbicpO1xudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi4vY29yZS9jcmVhdGVFcnJvcicpO1xudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMvdHJhbnNpdGlvbmFsJyk7XG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL0NhbmNlbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhockFkYXB0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBkaXNwYXRjaFhoclJlcXVlc3QocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3REYXRhID0gY29uZmlnLmRhdGE7XG4gICAgdmFyIHJlcXVlc3RIZWFkZXJzID0gY29uZmlnLmhlYWRlcnM7XG4gICAgdmFyIHJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgdmFyIG9uQ2FuY2VsZWQ7XG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcblxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XG5cbiAgICBmdW5jdGlvbiBvbmxvYWRlbmQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIHZhciByZXNwb25zZUhlYWRlcnMgPSAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ID8gcGFyc2VIZWFkZXJzKHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpIDogbnVsbDtcbiAgICAgIHZhciByZXNwb25zZURhdGEgPSAhcmVzcG9uc2VUeXBlIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnIHx8ICByZXNwb25zZVR5cGUgPT09ICdqc29uJyA/XG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcbiAgICAgIHZhciByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICAgIHJlcXVlc3Q6IHJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIHNldHRsZShmdW5jdGlvbiBfcmVzb2x2ZSh2YWx1ZSkge1xuICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgZnVuY3Rpb24gX3JlamVjdChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIHJlc3BvbnNlKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCdvbmxvYWRlbmQnIGluIHJlcXVlc3QpIHtcbiAgICAgIC8vIFVzZSBvbmxvYWRlbmQgaWYgYXZhaWxhYmxlXG4gICAgICByZXF1ZXN0Lm9ubG9hZGVuZCA9IG9ubG9hZGVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZSB0byBlbXVsYXRlIG9ubG9hZGVuZFxuICAgICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QgfHwgcmVxdWVzdC5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHJlcXVlc3QgZXJyb3JlZCBvdXQgYW5kIHdlIGRpZG4ndCBnZXQgYSByZXNwb25zZSwgdGhpcyB3aWxsIGJlXG4gICAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXG4gICAgICAgIC8vIFdpdGggb25lIGV4Y2VwdGlvbjogcmVxdWVzdCB0aGF0IHVzaW5nIGZpbGU6IHByb3RvY29sLCBtb3N0IGJyb3dzZXJzXG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHN0YXR1cyBhcyAwIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdWNjZXNzZnVsIHJlcXVlc3RcbiAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlYWR5c3RhdGUgaGFuZGxlciBpcyBjYWxsaW5nIGJlZm9yZSBvbmVycm9yIG9yIG9udGltZW91dCBoYW5kbGVycyxcbiAgICAgICAgLy8gc28gd2Ugc2hvdWxkIGNhbGwgb25sb2FkZW5kIG9uIHRoZSBuZXh0ICd0aWNrJ1xuICAgICAgICBzZXRUaW1lb3V0KG9ubG9hZGVuZCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcbiAgICByZXF1ZXN0Lm9uYWJvcnQgPSBmdW5jdGlvbiBoYW5kbGVBYm9ydCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJywgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xuICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkge1xuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignTmV0d29yayBFcnJvcicsIGNvbmZpZywgbnVsbCwgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XG4gICAgICB2YXIgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0ID8gJ3RpbWVvdXQgb2YgJyArIGNvbmZpZy50aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyA6ICd0aW1lb3V0IGV4Y2VlZGVkJztcbiAgICAgIHZhciB0cmFuc2l0aW9uYWwgPSBjb25maWcudHJhbnNpdGlvbmFsIHx8IHRyYW5zaXRpb25hbERlZmF1bHRzO1xuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/ICdFVElNRURPVVQnIDogJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzW2NvbmZpZy54c3JmSGVhZGVyTmFtZV0gPSB4c3JmVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMsIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbiB8fCBjb25maWcuc2lnbmFsKSB7XG4gICAgICAvLyBIYW5kbGUgY2FuY2VsbGF0aW9uXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgICAgb25DYW5jZWxlZCA9IGZ1bmN0aW9uKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgKGNhbmNlbCAmJiBjYW5jZWwudHlwZSkgPyBuZXcgQ2FuY2VsKCdjYW5jZWxlZCcpIDogY2FuY2VsKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbiAmJiBjb25maWcuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5hYm9ydGVkID8gb25DYW5jZWxlZCgpIDogY29uZmlnLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVxdWVzdERhdGEpIHtcbiAgICAgIHJlcXVlc3REYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuLi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUnKTtcbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2VuaGFuY2VFcnJvcicpO1xudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi90cmFuc2l0aW9uYWwnKTtcblxudmFyIERFRkFVTFRfQ09OVEVOVF9UWVBFID0ge1xuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbn07XG5cbmZ1bmN0aW9uIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCB2YWx1ZSkge1xuICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnMpICYmIHV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkge1xuICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdEFkYXB0ZXIoKSB7XG4gIHZhciBhZGFwdGVyO1xuICBpZiAodHlwZW9mIFhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi4vYWRhcHRlcnMveGhyJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChwcm9jZXNzKSA9PT0gJ1tvYmplY3QgcHJvY2Vzc10nKSB7XG4gICAgLy8gRm9yIG5vZGUgdXNlIEhUVFAgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuLi9hZGFwdGVycy9odHRwJyk7XG4gIH1cbiAgcmV0dXJuIGFkYXB0ZXI7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVNhZmVseShyYXdWYWx1ZSwgcGFyc2VyLCBlbmNvZGVyKSB7XG4gIGlmICh1dGlscy5pc1N0cmluZyhyYXdWYWx1ZSkpIHtcbiAgICB0cnkge1xuICAgICAgKHBhcnNlciB8fCBKU09OLnBhcnNlKShyYXdWYWx1ZSk7XG4gICAgICByZXR1cm4gdXRpbHMudHJpbShyYXdWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubmFtZSAhPT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoZW5jb2RlciB8fCBKU09OLnN0cmluZ2lmeSkocmF3VmFsdWUpO1xufVxuXG52YXIgZGVmYXVsdHMgPSB7XG5cbiAgdHJhbnNpdGlvbmFsOiB0cmFuc2l0aW9uYWxEZWZhdWx0cyxcblxuICBhZGFwdGVyOiBnZXREZWZhdWx0QWRhcHRlcigpLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdBY2NlcHQnKTtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKTtcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzT2JqZWN0KGRhdGEpIHx8IChoZWFkZXJzICYmIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID09PSAnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlTYWZlbHkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICB2YXIgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgIHZhciBzaWxlbnRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuc2lsZW50SlNPTlBhcnNpbmc7XG4gICAgdmFyIGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICB2YXIgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmIChzdHJpY3RKU09OUGFyc2luZyB8fCAoZm9yY2VkSlNPTlBhcnNpbmcgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5sZW5ndGgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XG4gICAgICAgICAgaWYgKGUubmFtZSA9PT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICAgICAgdGhyb3cgZW5oYW5jZUVycm9yKGUsIHRoaXMsICdFX0pTT05fUEFSU0UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICAvKipcbiAgICogQSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byBhYm9ydCBhIHJlcXVlc3QuIElmIHNldCB0byAwIChkZWZhdWx0KSBhXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXG4gICAqL1xuICB0aW1lb3V0OiAwLFxuXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXG4gIHhzcmZIZWFkZXJOYW1lOiAnWC1YU1JGLVRPS0VOJyxcblxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcbiAgbWF4Qm9keUxlbmd0aDogLTEsXG5cbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICAgIHJldHVybiBzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMDtcbiAgfSxcblxuICBoZWFkZXJzOiB7XG4gICAgY29tbW9uOiB7XG4gICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcbiAgICB9XG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0gdXRpbHMubWVyZ2UoREVGQVVMVF9DT05URU5UX1RZUEUpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gZGF0YSBUaGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZFxuICogQHBhcmFtIHtBcnJheX0gaGVhZGVycyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3Qgb3IgcmVzcG9uc2VcbiAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb259IGZucyBBIHNpbmdsZSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGRhdGEsIGhlYWRlcnMsIGZucykge1xuICB2YXIgY29udGV4dCA9IHRoaXMgfHwgZGVmYXVsdHM7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuLmNhbGwoY29udGV4dCwgZGF0YSwgaGVhZGVycyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgdHJhbnNmb3JtRGF0YSA9IHJlcXVpcmUoJy4vdHJhbnNmb3JtRGF0YScpO1xudmFyIGlzQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL2lzQ2FuY2VsJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cycpO1xudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWwnKTtcblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcbiAgfVxuXG4gIGlmIChjb25maWcuc2lnbmFsICYmIGNvbmZpZy5zaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBDYW5jZWwoJ2NhbmNlbGVkJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGhlYWRlcnMgZXhpc3RcbiAgY29uZmlnLmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcblxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgIGNvbmZpZyxcbiAgICBjb25maWcuZGF0YSxcbiAgICBjb25maWcuaGVhZGVycyxcbiAgICBjb25maWcudHJhbnNmb3JtUmVxdWVzdFxuICApO1xuXG4gIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICBjb25maWcuaGVhZGVycyA9IHV0aWxzLm1lcmdlKFxuICAgIGNvbmZpZy5oZWFkZXJzLmNvbW1vbiB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1tjb25maWcubWV0aG9kXSB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1xuICApO1xuXG4gIHV0aWxzLmZvckVhY2goXG4gICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgZnVuY3Rpb24gY2xlYW5IZWFkZXJDb25maWcobWV0aG9kKSB7XG4gICAgICBkZWxldGUgY29uZmlnLmhlYWRlcnNbbWV0aG9kXTtcbiAgICB9XG4gICk7XG5cbiAgdmFyIGFkYXB0ZXIgPSBjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgcmVzcG9uc2UuZGF0YSxcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBDb25maWctc3BlY2lmaWMgbWVyZ2UtZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIG5ldyBjb25maWctb2JqZWN0XG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzFcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIHZhciBjb25maWcgPSB7fTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UodGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURpcmVjdEtleXMocHJvcCkge1xuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIG1lcmdlTWFwID0ge1xuICAgICd1cmwnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdtZXRob2QnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdkYXRhJzogdmFsdWVGcm9tQ29uZmlnMixcbiAgICAnYmFzZVVSTCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zZm9ybVJlcXVlc3QnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0cmFuc2Zvcm1SZXNwb25zZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3BhcmFtc1NlcmlhbGl6ZXInOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0aW1lb3V0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndGltZW91dE1lc3NhZ2UnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd3aXRoQ3JlZGVudGlhbHMnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdhZGFwdGVyJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncmVzcG9uc2VUeXBlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAneHNyZkNvb2tpZU5hbWUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd4c3JmSGVhZGVyTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ29uVXBsb2FkUHJvZ3Jlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdvbkRvd25sb2FkUHJvZ3Jlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdkZWNvbXByZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnbWF4Q29udGVudExlbmd0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ21heEJvZHlMZW5ndGgnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0cmFuc3BvcnQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdodHRwQWdlbnQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdodHRwc0FnZW50JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnY2FuY2VsVG9rZW4nOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdzb2NrZXRQYXRoJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncmVzcG9uc2VFbmNvZGluZyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3ZhbGlkYXRlU3RhdHVzJzogbWVyZ2VEaXJlY3RLZXlzXG4gIH07XG5cbiAgdXRpbHMuZm9yRWFjaChPYmplY3Qua2V5cyhjb25maWcxKS5jb25jYXQoT2JqZWN0LmtleXMoY29uZmlnMikpLCBmdW5jdGlvbiBjb21wdXRlQ29uZmlnVmFsdWUocHJvcCkge1xuICAgIHZhciBtZXJnZSA9IG1lcmdlTWFwW3Byb3BdIHx8IG1lcmdlRGVlcFByb3BlcnRpZXM7XG4gICAgdmFyIGNvbmZpZ1ZhbHVlID0gbWVyZ2UocHJvcCk7XG4gICAgKHV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZ1ZhbHVlKSAmJiBtZXJnZSAhPT0gbWVyZ2VEaXJlY3RLZXlzKSB8fCAoY29uZmlnW3Byb3BdID0gY29uZmlnVmFsdWUpO1xuICB9KTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBcInZlcnNpb25cIjogXCIwLjI2LjFcIlxufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBWRVJTSU9OID0gcmVxdWlyZSgnLi4vZW52L2RhdGEnKS52ZXJzaW9uO1xuXG52YXIgdmFsaWRhdG9ycyA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuWydvYmplY3QnLCAnYm9vbGVhbicsICdudW1iZXInLCAnZnVuY3Rpb24nLCAnc3RyaW5nJywgJ3N5bWJvbCddLmZvckVhY2goZnVuY3Rpb24odHlwZSwgaSkge1xuICB2YWxpZGF0b3JzW3R5cGVdID0gZnVuY3Rpb24gdmFsaWRhdG9yKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gdHlwZSB8fCAnYScgKyAoaSA8IDEgPyAnbiAnIDogJyAnKSArIHR5cGU7XG4gIH07XG59KTtcblxudmFyIGRlcHJlY2F0ZWRXYXJuaW5ncyA9IHt9O1xuXG4vKipcbiAqIFRyYW5zaXRpb25hbCBvcHRpb24gdmFsaWRhdG9yXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufGJvb2xlYW4/fSB2YWxpZGF0b3IgLSBzZXQgdG8gZmFsc2UgaWYgdGhlIHRyYW5zaXRpb25hbCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZFxuICogQHBhcmFtIHtzdHJpbmc/fSB2ZXJzaW9uIC0gZGVwcmVjYXRlZCB2ZXJzaW9uIC8gcmVtb3ZlZCBzaW5jZSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZz99IG1lc3NhZ2UgLSBzb21lIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9cbiAqIEByZXR1cm5zIHtmdW5jdGlvbn1cbiAqL1xudmFsaWRhdG9ycy50cmFuc2l0aW9uYWwgPSBmdW5jdGlvbiB0cmFuc2l0aW9uYWwodmFsaWRhdG9yLCB2ZXJzaW9uLCBtZXNzYWdlKSB7XG4gIGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2Uob3B0LCBkZXNjKSB7XG4gICAgcmV0dXJuICdbQXhpb3MgdicgKyBWRVJTSU9OICsgJ10gVHJhbnNpdGlvbmFsIG9wdGlvbiBcXCcnICsgb3B0ICsgJ1xcJycgKyBkZXNjICsgKG1lc3NhZ2UgPyAnLiAnICsgbWVzc2FnZSA6ICcnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3B0LCBvcHRzKSB7XG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkJyArICh2ZXJzaW9uID8gJyBpbiAnICsgdmVyc2lvbiA6ICcnKSkpO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSA+IDApIHtcbiAgICB2YXIgb3B0ID0ga2V5c1tpXTtcbiAgICB2YXIgdmFsaWRhdG9yID0gc2NoZW1hW29wdF07XG4gICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgdmFyIHZhbHVlID0gb3B0aW9uc1tvcHRdO1xuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBFcnJvcignVW5rbm93biBvcHRpb24gJyArIG9wdCk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhc3NlcnRPcHRpb25zOiBhc3NlcnRPcHRpb25zLFxuICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgSW50ZXJjZXB0b3JNYW5hZ2VyID0gcmVxdWlyZSgnLi9JbnRlcmNlcHRvck1hbmFnZXInKTtcbnZhciBkaXNwYXRjaFJlcXVlc3QgPSByZXF1aXJlKCcuL2Rpc3BhdGNoUmVxdWVzdCcpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9tZXJnZUNvbmZpZycpO1xudmFyIHZhbGlkYXRvciA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdmFsaWRhdG9yJyk7XG5cbnZhciB2YWxpZGF0b3JzID0gdmFsaWRhdG9yLnZhbGlkYXRvcnM7XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBBeGlvcyhpbnN0YW5jZUNvbmZpZykge1xuICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XG4gIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcbiAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpXG4gIH07XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHNwZWNpZmljIGZvciB0aGlzIHJlcXVlc3QgKG1lcmdlZCB3aXRoIHRoaXMuZGVmYXVsdHMpXG4gKi9cbkF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0ID0gZnVuY3Rpb24gcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXG4gIGlmICh0eXBlb2YgY29uZmlnT3JVcmwgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgIGNvbmZpZy51cmwgPSBjb25maWdPclVybDtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWdPclVybCB8fCB7fTtcbiAgfVxuXG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG5cbiAgLy8gU2V0IGNvbmZpZy5tZXRob2RcbiAgaWYgKGNvbmZpZy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gY29uZmlnLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdHMubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IHRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnLm1ldGhvZCA9ICdnZXQnO1xuICB9XG5cbiAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWw7XG5cbiAgaWYgKHRyYW5zaXRpb25hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnModHJhbnNpdGlvbmFsLCB7XG4gICAgICBzaWxlbnRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgIGZvcmNlZEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKVxuICAgIH0sIGZhbHNlKTtcbiAgfVxuXG4gIC8vIGZpbHRlciBvdXQgc2tpcHBlZCBpbnRlcmNlcHRvcnNcbiAgdmFyIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHZhciBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xuICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBpZiAodHlwZW9mIGludGVyY2VwdG9yLnJ1bldoZW4gPT09ICdmdW5jdGlvbicgJiYgaW50ZXJjZXB0b3IucnVuV2hlbihjb25maWcpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyAmJiBpbnRlcmNlcHRvci5zeW5jaHJvbm91cztcblxuICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ucHVzaChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgdmFyIHByb21pc2U7XG5cbiAgaWYgKCFzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMpIHtcbiAgICB2YXIgY2hhaW4gPSBbZGlzcGF0Y2hSZXF1ZXN0LCB1bmRlZmluZWRdO1xuXG4gICAgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICBjaGFpbiA9IGNoYWluLmNvbmNhdChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4pO1xuXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25maWcpO1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGgpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oY2hhaW4uc2hpZnQoKSwgY2hhaW4uc2hpZnQoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuXG4gIHZhciBuZXdDb25maWcgPSBjb25maWc7XG4gIHdoaWxlIChyZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5sZW5ndGgpIHtcbiAgICB2YXIgb25GdWxmaWxsZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xuICAgIHZhciBvblJlamVjdGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB0cnkge1xuICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25SZWplY3RlZChlcnJvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIHByb21pc2UgPSBkaXNwYXRjaFJlcXVlc3QobmV3Q29uZmlnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICB9XG5cbiAgd2hpbGUgKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5sZW5ndGgpIHtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpLCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSk7XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG5cbkF4aW9zLnByb3RvdHlwZS5nZXRVcmkgPSBmdW5jdGlvbiBnZXRVcmkoY29uZmlnKSB7XG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG4gIHJldHVybiBidWlsZFVSTChjb25maWcudXJsLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlxcPy8sICcnKTtcbn07XG5cbi8vIFByb3ZpZGUgYWxpYXNlcyBmb3Igc3VwcG9ydGVkIHJlcXVlc3QgbWV0aG9kc1xudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IChjb25maWcgfHwge30pLmRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF4aW9zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuXG4gIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VFeGVjdXRvcihyZXNvbHZlKSB7XG4gICAgcmVzb2x2ZVByb21pc2UgPSByZXNvbHZlO1xuICB9KTtcblxuICB2YXIgdG9rZW4gPSB0aGlzO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHRoaXMucHJvbWlzZS50aGVuKGZ1bmN0aW9uKGNhbmNlbCkge1xuICAgIGlmICghdG9rZW4uX2xpc3RlbmVycykgcmV0dXJuO1xuXG4gICAgdmFyIGk7XG4gICAgdmFyIGwgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRva2VuLl9saXN0ZW5lcnNbaV0oY2FuY2VsKTtcbiAgICB9XG4gICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHRoaXMucHJvbWlzZS50aGVuID0gZnVuY3Rpb24ob25mdWxmaWxsZWQpIHtcbiAgICB2YXIgX3Jlc29sdmU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgIHRva2VuLnN1YnNjcmliZShyZXNvbHZlKTtcbiAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcblxuICAgIHByb21pc2UuY2FuY2VsID0gZnVuY3Rpb24gcmVqZWN0KCkge1xuICAgICAgdG9rZW4udW5zdWJzY3JpYmUoX3Jlc29sdmUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfTtcblxuICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSkge1xuICAgIGlmICh0b2tlbi5yZWFzb24pIHtcbiAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWwobWVzc2FnZSk7XG4gICAgcmVzb2x2ZVByb21pc2UodG9rZW4ucmVhc29uKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQgPSBmdW5jdGlvbiB0aHJvd0lmUmVxdWVzdGVkKCkge1xuICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICB0aHJvdyB0aGlzLnJlYXNvbjtcbiAgfVxufTtcblxuLyoqXG4gKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAqL1xuXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICh0aGlzLnJlYXNvbikge1xuICAgIGxpc3RlbmVyKHRoaXMucmVhc29uKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtsaXN0ZW5lcl07XG4gIH1cbn07XG5cbi8qKlxuICogVW5zdWJzY3JpYmUgZnJvbSB0aGUgY2FuY2VsIHNpZ25hbFxuICovXG5cbkNhbmNlbFRva2VuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBpbmRleCA9IHRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIHRoaXMuX2xpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXG4gKi9cbkNhbmNlbFRva2VuLnNvdXJjZSA9IGZ1bmN0aW9uIHNvdXJjZSgpIHtcbiAgdmFyIGNhbmNlbDtcbiAgdmFyIHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICBjYW5jZWwgPSBjO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbjogdG9rZW4sXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsVG9rZW47XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3ludGFjdGljIHN1Z2FyIGZvciBpbnZva2luZyBhIGZ1bmN0aW9uIGFuZCBleHBhbmRpbmcgYW4gYXJyYXkgZm9yIGFyZ3VtZW50cy5cbiAqXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxuICpcbiAqICBgYGBqc1xuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cbiAqICB2YXIgYXJncyA9IFsxLCAyLCAzXTtcbiAqICBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICogIGBgYFxuICpcbiAqIFdpdGggYHNwcmVhZGAgdGhpcyBleGFtcGxlIGNhbiBiZSByZS13cml0dGVuLlxuICpcbiAqICBgYGBqc1xuICogIHNwcmVhZChmdW5jdGlvbih4LCB5LCB6KSB7fSkoWzEsIDIsIDNdKTtcbiAqICBgYGBcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNwcmVhZChjYWxsYmFjaykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcChhcnIpIHtcbiAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkobnVsbCwgYXJyKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXG4gKlxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xudmFyIEF4aW9zID0gcmVxdWlyZSgnLi9jb3JlL0F4aW9zJyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL2NvcmUvbWVyZ2VDb25maWcnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgdmFyIGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XG4gIHZhciBpbnN0YW5jZSA9IGJpbmQoQXhpb3MucHJvdG90eXBlLnJlcXVlc3QsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgQXhpb3MucHJvdG90eXBlLCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0KTtcblxuICAvLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG4gIGluc3RhbmNlLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpbnN0YW5jZUNvbmZpZykge1xuICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhkZWZhdWx0Q29uZmlnLCBpbnN0YW5jZUNvbmZpZykpO1xuICB9O1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWwnKTtcbmF4aW9zLkNhbmNlbFRva2VuID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsVG9rZW4nKTtcbmF4aW9zLmlzQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvaXNDYW5jZWwnKTtcbmF4aW9zLlZFUlNJT04gPSByZXF1aXJlKCcuL2Vudi9kYXRhJykudmVyc2lvbjtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcbmF4aW9zLnNwcmVhZCA9IHJlcXVpcmUoJy4vaGVscGVycy9zcHJlYWQnKTtcblxuLy8gRXhwb3NlIGlzQXhpb3NFcnJvclxuYXhpb3MuaXNBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzQXhpb3NFcnJvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xuXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBheGlvcztcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvYXhpb3MnKTsiLCJpbXBvcnQgQXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBSZXF1ZXN0Q29uZmlnQnVpbGRlcixcbiAgUmVxdWVzdENvbmZpZyxcbiAgUmVzcG9uc2VIYW5kbGVyLFxufSBmcm9tIFwiLi9IdHRwQ2xpZW50SW50ZXJmYWNlXCI7XG5pbXBvcnQgRm9ybURhdGEgZnJvbSBcImZvcm0tZGF0YVwiO1xuXG5leHBvcnQgY2xhc3MgQXhpb3NDbGllbnQgaW1wbGVtZW50cyBIdHRwQ2xpZW50IHtcbiAgcHJpdmF0ZSByZXNwb25zZUhhbmRsZXI6IFJlc3BvbnNlSGFuZGxlcjtcbiAgcHJpdmF0ZSByZXF1ZXN0Q29uZmlnQnVpbGRlcjogUmVxdWVzdENvbmZpZ0J1aWxkZXI7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIHJlc3BvbnNlSGFuZGxlcixcbiAgICByZXF1ZXN0Q29uZmlnQnVpbGRlcixcbiAgfToge1xuICAgIHJlc3BvbnNlSGFuZGxlcjogUmVzcG9uc2VIYW5kbGVyO1xuICAgIHJlcXVlc3RDb25maWdCdWlsZGVyOiBSZXF1ZXN0Q29uZmlnQnVpbGRlcjtcbiAgfSkge1xuICAgIHRoaXMucmVzcG9uc2VIYW5kbGVyID0gcmVzcG9uc2VIYW5kbGVyO1xuICAgIHRoaXMucmVxdWVzdENvbmZpZ0J1aWxkZXIgPSByZXF1ZXN0Q29uZmlnQnVpbGRlcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXQ8VCBleHRlbmRzIG9iamVjdD4ocGF0aDogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xuICAgIGNvbnN0IHJlcXVlc3RDb25maWcgPSBhd2FpdCB0aGlzLnJlcXVlc3RDb25maWdCdWlsZGVyLmJ1aWxkKFxuICAgICAgXCJnZXRcIixcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXNcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0Q29uZmlnKSkgYXMgUHJvbWlzZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREYXRhKHBhdGg6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcbiAgICBjb25zdCByZXF1ZXN0Q29uZmlnID0gYXdhaXQgdGhpcy5yZXF1ZXN0Q29uZmlnQnVpbGRlci5idWlsZChcbiAgICAgIFwiZ2V0XCIsXG4gICAgICBwYXRoLFxuICAgICAgcGFyYW1zLFxuICAgICAge1xuICAgICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0Q29uZmlnKSkgYXMgUHJvbWlzZTxBcnJheUJ1ZmZlcj47XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcG9zdDxUIGV4dGVuZHMgb2JqZWN0PihwYXRoOiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gICAgY29uc3QgcmVxdWVzdENvbmZpZyA9IGF3YWl0IHRoaXMucmVxdWVzdENvbmZpZ0J1aWxkZXIuYnVpbGQoXG4gICAgICBcInBvc3RcIixcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXNcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0Q29uZmlnKSkgYXMgUHJvbWlzZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwb3N0RGF0YTxUIGV4dGVuZHMgb2JqZWN0PihwYXRoOiBzdHJpbmcsIGZvcm1EYXRhOiBGb3JtRGF0YSkge1xuICAgIGNvbnN0IHJlcXVlc3RDb25maWcgPSBhd2FpdCB0aGlzLnJlcXVlc3RDb25maWdCdWlsZGVyLmJ1aWxkKFxuICAgICAgXCJwb3N0XCIsXG4gICAgICBwYXRoLFxuICAgICAgZm9ybURhdGFcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0Q29uZmlnKSkgYXMgUHJvbWlzZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdXQ8VCBleHRlbmRzIG9iamVjdD4ocGF0aDogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xuICAgIGNvbnN0IHJlcXVlc3RDb25maWcgPSBhd2FpdCB0aGlzLnJlcXVlc3RDb25maWdCdWlsZGVyLmJ1aWxkKFxuICAgICAgXCJwdXRcIixcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXNcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0Q29uZmlnKSkgYXMgUHJvbWlzZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGU8VCBleHRlbmRzIG9iamVjdD4ocGF0aDogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xuICAgIGNvbnN0IHJlcXVlc3RDb25maWcgPSBhd2FpdCB0aGlzLnJlcXVlc3RDb25maWdCdWlsZGVyLmJ1aWxkKFxuICAgICAgXCJkZWxldGVcIixcbiAgICAgIHBhdGgsXG4gICAgICBwYXJhbXNcbiAgICApO1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5zZW5kUmVxdWVzdChyZXF1ZXN0Q29uZmlnKSkgYXMgUHJvbWlzZTxUPjtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZFJlcXVlc3QocmVxdWVzdENvbmZpZzogUmVxdWVzdENvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlSGFuZGxlci5oYW5kbGUoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgQXhpb3Moe1xuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxuXG4gICAgICAgIG1heEJvZHlMZW5ndGg6IEluZmluaXR5LFxuICAgICAgICBtYXhDb250ZW50TGVuZ3RoOiBJbmZpbml0eSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xuXG52YXIgdW4kSm9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgRVMzX1NUUklOR1MgPSBJbmRleGVkT2JqZWN0ICE9IE9iamVjdDtcbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnam9pbicsICcsJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuam9pbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5qb2luXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBFUzNfU1RSSU5HUyB8fCAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIHVuJEpvaW4odG9JbmRleGVkT2JqZWN0KHRoaXMpLCBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCA/ICcsJyA6IHNlcGFyYXRvcik7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgY29tcGxleGl0eTogWzIsIDE4XSwgbWF4LXN0YXRlbWVudHM6IFsyLCAzM10gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzU3ltYm9scygpIHtcblx0aWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAnc3ltYm9sJykgeyByZXR1cm4gdHJ1ZTsgfVxuXG5cdHZhciBvYmogPSB7fTtcblx0dmFyIHN5bSA9IFN5bWJvbCgndGVzdCcpO1xuXHR2YXIgc3ltT2JqID0gT2JqZWN0KHN5bSk7XG5cdGlmICh0eXBlb2Ygc3ltID09PSAnc3RyaW5nJykgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bSkgIT09ICdbb2JqZWN0IFN5bWJvbF0nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bU9iaikgIT09ICdbb2JqZWN0IFN5bWJvbF0nKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdC8vIHRlbXAgZGlzYWJsZWQgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9samhhcmIvb2JqZWN0LmFzc2lnbi9pc3N1ZXMvMTdcblx0Ly8gaWYgKHN5bSBpbnN0YW5jZW9mIFN5bWJvbCkgeyByZXR1cm4gZmFsc2U7IH1cblx0Ly8gdGVtcCBkaXNhYmxlZCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL1dlYlJlZmxlY3Rpb24vZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzL2lzc3Vlcy80XG5cdC8vIGlmICghKHN5bU9iaiBpbnN0YW5jZW9mIFN5bWJvbCkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0Ly8gaWYgKHR5cGVvZiBTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHQvLyBpZiAoU3RyaW5nKHN5bSkgIT09IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzeW0pKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHZhciBzeW1WYWwgPSA0Mjtcblx0b2JqW3N5bV0gPSBzeW1WYWw7XG5cdGZvciAoc3ltIGluIG9iaikgeyByZXR1cm4gZmFsc2U7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRpZiAodHlwZW9mIE9iamVjdC5rZXlzID09PSAnZnVuY3Rpb24nICYmIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoICE9PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgPT09ICdmdW5jdGlvbicgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5sZW5ndGggIT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0dmFyIHN5bXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iaik7XG5cdGlmIChzeW1zLmxlbmd0aCAhPT0gMSB8fCBzeW1zWzBdICE9PSBzeW0pIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqLCBzeW0pKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHN5bSk7XG5cdFx0aWYgKGRlc2NyaXB0b3IudmFsdWUgIT09IHN5bVZhbCB8fCBkZXNjcmlwdG9yLmVudW1lcmFibGUgIT09IHRydWUpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBvcmlnU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBoYXNTeW1ib2xTaGFtID0gcmVxdWlyZSgnLi9zaGFtcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc05hdGl2ZVN5bWJvbHMoKSB7XG5cdGlmICh0eXBlb2Ygb3JpZ1N5bWJvbCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2Ygb3JpZ1N5bWJvbCgnZm9vJykgIT09ICdzeW1ib2wnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbCgnYmFyJykgIT09ICdzeW1ib2wnKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHJldHVybiBoYXNTeW1ib2xTaGFtKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAxICovXG5cbnZhciBFUlJPUl9NRVNTQUdFID0gJ0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgJztcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZnVuY1R5cGUgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQodGhhdCkge1xuICAgIHZhciB0YXJnZXQgPSB0aGlzO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nIHx8IHRvU3RyLmNhbGwodGFyZ2V0KSAhPT0gZnVuY1R5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihFUlJPUl9NRVNTQUdFICsgdGFyZ2V0KTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICB2YXIgYm91bmQ7XG4gICAgdmFyIGJpbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRhcmdldC5hcHBseShcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0KHJlc3VsdCkgPT09IHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkoXG4gICAgICAgICAgICAgICAgdGhhdCxcbiAgICAgICAgICAgICAgICBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBib3VuZExlbmd0aCA9IE1hdGgubWF4KDAsIHRhcmdldC5sZW5ndGggLSBhcmdzLmxlbmd0aCk7XG4gICAgdmFyIGJvdW5kQXJncyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm91bmRMZW5ndGg7IGkrKykge1xuICAgICAgICBib3VuZEFyZ3MucHVzaCgnJCcgKyBpKTtcbiAgICB9XG5cbiAgICBib3VuZCA9IEZ1bmN0aW9uKCdiaW5kZXInLCAncmV0dXJuIGZ1bmN0aW9uICgnICsgYm91bmRBcmdzLmpvaW4oJywnKSArICcpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfScpKGJpbmRlcik7XG5cbiAgICBpZiAodGFyZ2V0LnByb3RvdHlwZSkge1xuICAgICAgICB2YXIgRW1wdHkgPSBmdW5jdGlvbiBFbXB0eSgpIHt9O1xuICAgICAgICBFbXB0eS5wcm90b3R5cGUgPSB0YXJnZXQucHJvdG90eXBlO1xuICAgICAgICBib3VuZC5wcm90b3R5cGUgPSBuZXcgRW1wdHkoKTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgaW1wbGVtZW50YXRpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHVuZGVmaW5lZDtcblxudmFyICRTeW50YXhFcnJvciA9IFN5bnRheEVycm9yO1xudmFyICRGdW5jdGlvbiA9IEZ1bmN0aW9uO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxudmFyIGdldEV2YWxsZWRDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChleHByZXNzaW9uU3ludGF4KSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuICRGdW5jdGlvbignXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiAoJyArIGV4cHJlc3Npb25TeW50YXggKyAnKS5jb25zdHJ1Y3RvcjsnKSgpO1xuXHR9IGNhdGNoIChlKSB7fVxufTtcblxudmFyICRnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbmlmICgkZ09QRCkge1xuXHR0cnkge1xuXHRcdCRnT1BEKHt9LCAnJyk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQkZ09QRCA9IG51bGw7IC8vIHRoaXMgaXMgSUUgOCwgd2hpY2ggaGFzIGEgYnJva2VuIGdPUERcblx0fVxufVxuXG52YXIgdGhyb3dUeXBlRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG5cdHRocm93IG5ldyAkVHlwZUVycm9yKCk7XG59O1xudmFyIFRocm93VHlwZUVycm9yID0gJGdPUERcblx0PyAoZnVuY3Rpb24gKCkge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zLCBuby1jYWxsZXIsIG5vLXJlc3RyaWN0ZWQtcHJvcGVydGllc1xuXHRcdFx0YXJndW1lbnRzLmNhbGxlZTsgLy8gSUUgOCBkb2VzIG5vdCB0aHJvdyBoZXJlXG5cdFx0XHRyZXR1cm4gdGhyb3dUeXBlRXJyb3I7XG5cdFx0fSBjYXRjaCAoY2FsbGVlVGhyb3dzKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHQvLyBJRSA4IHRocm93cyBvbiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJycpXG5cdFx0XHRcdHJldHVybiAkZ09QRChhcmd1bWVudHMsICdjYWxsZWUnKS5nZXQ7XG5cdFx0XHR9IGNhdGNoIChnT1BEdGhyb3dzKSB7XG5cdFx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHRcdH1cblx0XHR9XG5cdH0oKSlcblx0OiB0aHJvd1R5cGVFcnJvcjtcblxudmFyIGhhc1N5bWJvbHMgPSByZXF1aXJlKCdoYXMtc3ltYm9scycpKCk7XG5cbnZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5fX3Byb3RvX187IH07IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cblxudmFyIG5lZWRzRXZhbCA9IHt9O1xuXG52YXIgVHlwZWRBcnJheSA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKFVpbnQ4QXJyYXkpO1xuXG52YXIgSU5UUklOU0lDUyA9IHtcblx0JyVBZ2dyZWdhdGVFcnJvciUnOiB0eXBlb2YgQWdncmVnYXRlRXJyb3IgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQWdncmVnYXRlRXJyb3IsXG5cdCclQXJyYXklJzogQXJyYXksXG5cdCclQXJyYXlCdWZmZXIlJzogdHlwZW9mIEFycmF5QnVmZmVyID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEFycmF5QnVmZmVyLFxuXHQnJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyA/IGdldFByb3RvKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkgOiB1bmRlZmluZWQsXG5cdCclQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlJSc6IHVuZGVmaW5lZCxcblx0JyVBc3luY0Z1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0dlbmVyYXRvciUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiBuZWVkc0V2YWwsXG5cdCclQXRvbWljcyUnOiB0eXBlb2YgQXRvbWljcyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBdG9taWNzLFxuXHQnJUJpZ0ludCUnOiB0eXBlb2YgQmlnSW50ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ0ludCxcblx0JyVCb29sZWFuJSc6IEJvb2xlYW4sXG5cdCclRGF0YVZpZXclJzogdHlwZW9mIERhdGFWaWV3ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IERhdGFWaWV3LFxuXHQnJURhdGUlJzogRGF0ZSxcblx0JyVkZWNvZGVVUkklJzogZGVjb2RlVVJJLFxuXHQnJWRlY29kZVVSSUNvbXBvbmVudCUnOiBkZWNvZGVVUklDb21wb25lbnQsXG5cdCclZW5jb2RlVVJJJSc6IGVuY29kZVVSSSxcblx0JyVlbmNvZGVVUklDb21wb25lbnQlJzogZW5jb2RlVVJJQ29tcG9uZW50LFxuXHQnJUVycm9yJSc6IEVycm9yLFxuXHQnJWV2YWwlJzogZXZhbCwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1ldmFsXG5cdCclRXZhbEVycm9yJSc6IEV2YWxFcnJvcixcblx0JyVGbG9hdDMyQXJyYXklJzogdHlwZW9mIEZsb2F0MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDMyQXJyYXksXG5cdCclRmxvYXQ2NEFycmF5JSc6IHR5cGVvZiBGbG9hdDY0QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQ2NEFycmF5LFxuXHQnJUZpbmFsaXphdGlvblJlZ2lzdHJ5JSc6IHR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGaW5hbGl6YXRpb25SZWdpc3RyeSxcblx0JyVGdW5jdGlvbiUnOiAkRnVuY3Rpb24sXG5cdCclR2VuZXJhdG9yRnVuY3Rpb24lJzogbmVlZHNFdmFsLFxuXHQnJUludDhBcnJheSUnOiB0eXBlb2YgSW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDhBcnJheSxcblx0JyVJbnQxNkFycmF5JSc6IHR5cGVvZiBJbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDE2QXJyYXksXG5cdCclSW50MzJBcnJheSUnOiB0eXBlb2YgSW50MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQzMkFycmF5LFxuXHQnJWlzRmluaXRlJSc6IGlzRmluaXRlLFxuXHQnJWlzTmFOJSc6IGlzTmFOLFxuXHQnJUl0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90byhnZXRQcm90byhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpKSA6IHVuZGVmaW5lZCxcblx0JyVKU09OJSc6IHR5cGVvZiBKU09OID09PSAnb2JqZWN0JyA/IEpTT04gOiB1bmRlZmluZWQsXG5cdCclTWFwJSc6IHR5cGVvZiBNYXAgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogTWFwLFxuXHQnJU1hcEl0ZXJhdG9yUHJvdG90eXBlJSc6IHR5cGVvZiBNYXAgPT09ICd1bmRlZmluZWQnIHx8ICFoYXNTeW1ib2xzID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8obmV3IE1hcCgpW1N5bWJvbC5pdGVyYXRvcl0oKSksXG5cdCclTWF0aCUnOiBNYXRoLFxuXHQnJU51bWJlciUnOiBOdW1iZXIsXG5cdCclT2JqZWN0JSc6IE9iamVjdCxcblx0JyVwYXJzZUZsb2F0JSc6IHBhcnNlRmxvYXQsXG5cdCclcGFyc2VJbnQlJzogcGFyc2VJbnQsXG5cdCclUHJvbWlzZSUnOiB0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBQcm9taXNlLFxuXHQnJVByb3h5JSc6IHR5cGVvZiBQcm94eSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBQcm94eSxcblx0JyVSYW5nZUVycm9yJSc6IFJhbmdlRXJyb3IsXG5cdCclUmVmZXJlbmNlRXJyb3IlJzogUmVmZXJlbmNlRXJyb3IsXG5cdCclUmVmbGVjdCUnOiB0eXBlb2YgUmVmbGVjdCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBSZWZsZWN0LFxuXHQnJVJlZ0V4cCUnOiBSZWdFeHAsXG5cdCclU2V0JSc6IHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2V0LFxuXHQnJVNldEl0ZXJhdG9yUHJvdG90eXBlJSc6IHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnIHx8ICFoYXNTeW1ib2xzID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8obmV3IFNldCgpW1N5bWJvbC5pdGVyYXRvcl0oKSksXG5cdCclU2hhcmVkQXJyYXlCdWZmZXIlJzogdHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFNoYXJlZEFycmF5QnVmZmVyLFxuXHQnJVN0cmluZyUnOiBTdHJpbmcsXG5cdCclU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyA/IGdldFByb3RvKCcnW1N5bWJvbC5pdGVyYXRvcl0oKSkgOiB1bmRlZmluZWQsXG5cdCclU3ltYm9sJSc6IGhhc1N5bWJvbHMgPyBTeW1ib2wgOiB1bmRlZmluZWQsXG5cdCclU3ludGF4RXJyb3IlJzogJFN5bnRheEVycm9yLFxuXHQnJVRocm93VHlwZUVycm9yJSc6IFRocm93VHlwZUVycm9yLFxuXHQnJVR5cGVkQXJyYXklJzogVHlwZWRBcnJheSxcblx0JyVUeXBlRXJyb3IlJzogJFR5cGVFcnJvcixcblx0JyVVaW50OEFycmF5JSc6IHR5cGVvZiBVaW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQ4QXJyYXksXG5cdCclVWludDhDbGFtcGVkQXJyYXklJzogdHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQ4Q2xhbXBlZEFycmF5LFxuXHQnJVVpbnQxNkFycmF5JSc6IHR5cGVvZiBVaW50MTZBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50MTZBcnJheSxcblx0JyVVaW50MzJBcnJheSUnOiB0eXBlb2YgVWludDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDMyQXJyYXksXG5cdCclVVJJRXJyb3IlJzogVVJJRXJyb3IsXG5cdCclV2Vha01hcCUnOiB0eXBlb2YgV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrTWFwLFxuXHQnJVdlYWtSZWYlJzogdHlwZW9mIFdlYWtSZWYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1JlZixcblx0JyVXZWFrU2V0JSc6IHR5cGVvZiBXZWFrU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtTZXRcbn07XG5cbnZhciBkb0V2YWwgPSBmdW5jdGlvbiBkb0V2YWwobmFtZSkge1xuXHR2YXIgdmFsdWU7XG5cdGlmIChuYW1lID09PSAnJUFzeW5jRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0RXZhbGxlZENvbnN0cnVjdG9yKCdhc3luYyBmdW5jdGlvbiAoKSB7fScpO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclR2VuZXJhdG9yRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0RXZhbGxlZENvbnN0cnVjdG9yKCdmdW5jdGlvbiogKCkge30nKTtcblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJykge1xuXHRcdHZhbHVlID0gZ2V0RXZhbGxlZENvbnN0cnVjdG9yKCdhc3luYyBmdW5jdGlvbiogKCkge30nKTtcblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUFzeW5jR2VuZXJhdG9yJScpIHtcblx0XHR2YXIgZm4gPSBkb0V2YWwoJyVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJScpO1xuXHRcdGlmIChmbikge1xuXHRcdFx0dmFsdWUgPSBmbi5wcm90b3R5cGU7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNJdGVyYXRvclByb3RvdHlwZSUnKSB7XG5cdFx0dmFyIGdlbiA9IGRvRXZhbCgnJUFzeW5jR2VuZXJhdG9yJScpO1xuXHRcdGlmIChnZW4pIHtcblx0XHRcdHZhbHVlID0gZ2V0UHJvdG8oZ2VuLnByb3RvdHlwZSk7XG5cdFx0fVxuXHR9XG5cblx0SU5UUklOU0lDU1tuYW1lXSA9IHZhbHVlO1xuXG5cdHJldHVybiB2YWx1ZTtcbn07XG5cbnZhciBMRUdBQ1lfQUxJQVNFUyA9IHtcblx0JyVBcnJheUJ1ZmZlclByb3RvdHlwZSUnOiBbJ0FycmF5QnVmZmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFycmF5UHJvdG90eXBlJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclQXJyYXlQcm90b19lbnRyaWVzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2VudHJpZXMnXSxcblx0JyVBcnJheVByb3RvX2ZvckVhY2glJzogWydBcnJheScsICdwcm90b3R5cGUnLCAnZm9yRWFjaCddLFxuXHQnJUFycmF5UHJvdG9fa2V5cyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdrZXlzJ10sXG5cdCclQXJyYXlQcm90b192YWx1ZXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAndmFsdWVzJ10sXG5cdCclQXN5bmNGdW5jdGlvblByb3RvdHlwZSUnOiBbJ0FzeW5jRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclQXN5bmNHZW5lcmF0b3IlJzogWydBc3luY0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFzeW5jR2VuZXJhdG9yUHJvdG90eXBlJSc6IFsnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnLCAncHJvdG90eXBlJ10sXG5cdCclQm9vbGVhblByb3RvdHlwZSUnOiBbJ0Jvb2xlYW4nLCAncHJvdG90eXBlJ10sXG5cdCclRGF0YVZpZXdQcm90b3R5cGUlJzogWydEYXRhVmlldycsICdwcm90b3R5cGUnXSxcblx0JyVEYXRlUHJvdG90eXBlJSc6IFsnRGF0ZScsICdwcm90b3R5cGUnXSxcblx0JyVFcnJvclByb3RvdHlwZSUnOiBbJ0Vycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJUV2YWxFcnJvclByb3RvdHlwZSUnOiBbJ0V2YWxFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVGbG9hdDMyQXJyYXlQcm90b3R5cGUlJzogWydGbG9hdDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclRmxvYXQ2NEFycmF5UHJvdG90eXBlJSc6IFsnRmxvYXQ2NEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUZ1bmN0aW9uUHJvdG90eXBlJSc6IFsnRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclR2VuZXJhdG9yJSc6IFsnR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclR2VuZXJhdG9yUHJvdG90eXBlJSc6IFsnR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDhBcnJheVByb3RvdHlwZSUnOiBbJ0ludDhBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQxNkFycmF5UHJvdG90eXBlJSc6IFsnSW50MTZBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQzMkFycmF5UHJvdG90eXBlJSc6IFsnSW50MzJBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVKU09OUGFyc2UlJzogWydKU09OJywgJ3BhcnNlJ10sXG5cdCclSlNPTlN0cmluZ2lmeSUnOiBbJ0pTT04nLCAnc3RyaW5naWZ5J10sXG5cdCclTWFwUHJvdG90eXBlJSc6IFsnTWFwJywgJ3Byb3RvdHlwZSddLFxuXHQnJU51bWJlclByb3RvdHlwZSUnOiBbJ051bWJlcicsICdwcm90b3R5cGUnXSxcblx0JyVPYmplY3RQcm90b3R5cGUlJzogWydPYmplY3QnLCAncHJvdG90eXBlJ10sXG5cdCclT2JqUHJvdG9fdG9TdHJpbmclJzogWydPYmplY3QnLCAncHJvdG90eXBlJywgJ3RvU3RyaW5nJ10sXG5cdCclT2JqUHJvdG9fdmFsdWVPZiUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnLCAndmFsdWVPZiddLFxuXHQnJVByb21pc2VQcm90b3R5cGUlJzogWydQcm9taXNlJywgJ3Byb3RvdHlwZSddLFxuXHQnJVByb21pc2VQcm90b190aGVuJSc6IFsnUHJvbWlzZScsICdwcm90b3R5cGUnLCAndGhlbiddLFxuXHQnJVByb21pc2VfYWxsJSc6IFsnUHJvbWlzZScsICdhbGwnXSxcblx0JyVQcm9taXNlX3JlamVjdCUnOiBbJ1Byb21pc2UnLCAncmVqZWN0J10sXG5cdCclUHJvbWlzZV9yZXNvbHZlJSc6IFsnUHJvbWlzZScsICdyZXNvbHZlJ10sXG5cdCclUmFuZ2VFcnJvclByb3RvdHlwZSUnOiBbJ1JhbmdlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclUmVmZXJlbmNlRXJyb3JQcm90b3R5cGUlJzogWydSZWZlcmVuY2VFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVSZWdFeHBQcm90b3R5cGUlJzogWydSZWdFeHAnLCAncHJvdG90eXBlJ10sXG5cdCclU2V0UHJvdG90eXBlJSc6IFsnU2V0JywgJ3Byb3RvdHlwZSddLFxuXHQnJVNoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlJSc6IFsnU2hhcmVkQXJyYXlCdWZmZXInLCAncHJvdG90eXBlJ10sXG5cdCclU3RyaW5nUHJvdG90eXBlJSc6IFsnU3RyaW5nJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN5bWJvbFByb3RvdHlwZSUnOiBbJ1N5bWJvbCcsICdwcm90b3R5cGUnXSxcblx0JyVTeW50YXhFcnJvclByb3RvdHlwZSUnOiBbJ1N5bnRheEVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVR5cGVkQXJyYXlQcm90b3R5cGUlJzogWydUeXBlZEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVR5cGVFcnJvclByb3RvdHlwZSUnOiBbJ1R5cGVFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVVaW50OEFycmF5UHJvdG90eXBlJSc6IFsnVWludDhBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQ4Q2xhbXBlZEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQxNkFycmF5UHJvdG90eXBlJSc6IFsnVWludDE2QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDMyQXJyYXlQcm90b3R5cGUlJzogWydVaW50MzJBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVUklFcnJvclByb3RvdHlwZSUnOiBbJ1VSSUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVdlYWtNYXBQcm90b3R5cGUlJzogWydXZWFrTWFwJywgJ3Byb3RvdHlwZSddLFxuXHQnJVdlYWtTZXRQcm90b3R5cGUlJzogWydXZWFrU2V0JywgJ3Byb3RvdHlwZSddXG59O1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCdoYXMnKTtcbnZhciAkY29uY2F0ID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIEFycmF5LnByb3RvdHlwZS5jb25jYXQpO1xudmFyICRzcGxpY2VBcHBseSA9IGJpbmQuY2FsbChGdW5jdGlvbi5hcHBseSwgQXJyYXkucHJvdG90eXBlLnNwbGljZSk7XG52YXIgJHJlcGxhY2UgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKTtcbnZhciAkc3RyU2xpY2UgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgU3RyaW5nLnByb3RvdHlwZS5zbGljZSk7XG5cbi8qIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iLzQuMTcuMTUvZGlzdC9sb2Rhc2guanMjTDY3MzUtTDY3NDQgKi9cbnZhciByZVByb3BOYW1lID0gL1teJS5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwlJCkpL2c7XG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7IC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IGZ1bmN0aW9uIHN0cmluZ1RvUGF0aChzdHJpbmcpIHtcblx0dmFyIGZpcnN0ID0gJHN0clNsaWNlKHN0cmluZywgMCwgMSk7XG5cdHZhciBsYXN0ID0gJHN0clNsaWNlKHN0cmluZywgLTEpO1xuXHRpZiAoZmlyc3QgPT09ICclJyAmJiBsYXN0ICE9PSAnJScpIHtcblx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIGNsb3NpbmcgYCVgJyk7XG5cdH0gZWxzZSBpZiAobGFzdCA9PT0gJyUnICYmIGZpcnN0ICE9PSAnJScpIHtcblx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIG9wZW5pbmcgYCVgJyk7XG5cdH1cblx0dmFyIHJlc3VsdCA9IFtdO1xuXHQkcmVwbGFjZShzdHJpbmcsIHJlUHJvcE5hbWUsIGZ1bmN0aW9uIChtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG5cdFx0cmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gcXVvdGUgPyAkcmVwbGFjZShzdWJTdHJpbmcsIHJlRXNjYXBlQ2hhciwgJyQxJykgOiBudW1iZXIgfHwgbWF0Y2g7XG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcbi8qIGVuZCBhZGFwdGF0aW9uICovXG5cbnZhciBnZXRCYXNlSW50cmluc2ljID0gZnVuY3Rpb24gZ2V0QmFzZUludHJpbnNpYyhuYW1lLCBhbGxvd01pc3NpbmcpIHtcblx0dmFyIGludHJpbnNpY05hbWUgPSBuYW1lO1xuXHR2YXIgYWxpYXM7XG5cdGlmIChoYXNPd24oTEVHQUNZX0FMSUFTRVMsIGludHJpbnNpY05hbWUpKSB7XG5cdFx0YWxpYXMgPSBMRUdBQ1lfQUxJQVNFU1tpbnRyaW5zaWNOYW1lXTtcblx0XHRpbnRyaW5zaWNOYW1lID0gJyUnICsgYWxpYXNbMF0gKyAnJSc7XG5cdH1cblxuXHRpZiAoaGFzT3duKElOVFJJTlNJQ1MsIGludHJpbnNpY05hbWUpKSB7XG5cdFx0dmFyIHZhbHVlID0gSU5UUklOU0lDU1tpbnRyaW5zaWNOYW1lXTtcblx0XHRpZiAodmFsdWUgPT09IG5lZWRzRXZhbCkge1xuXHRcdFx0dmFsdWUgPSBkb0V2YWwoaW50cmluc2ljTmFtZSk7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICYmICFhbGxvd01pc3NpbmcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdpbnRyaW5zaWMgJyArIG5hbWUgKyAnIGV4aXN0cywgYnV0IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBmaWxlIGFuIGlzc3VlIScpO1xuXHRcdH1cblxuXHRcdHJldHVybiB7XG5cdFx0XHRhbGlhczogYWxpYXMsXG5cdFx0XHRuYW1lOiBpbnRyaW5zaWNOYW1lLFxuXHRcdFx0dmFsdWU6IHZhbHVlXG5cdFx0fTtcblx0fVxuXG5cdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZG9lcyBub3QgZXhpc3QhJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIEdldEludHJpbnNpYyhuYW1lLCBhbGxvd01pc3NpbmcpIHtcblx0aWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJyB8fCBuYW1lLmxlbmd0aCA9PT0gMCkge1xuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuXHR9XG5cdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB0eXBlb2YgYWxsb3dNaXNzaW5nICE9PSAnYm9vbGVhbicpIHtcblx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignXCJhbGxvd01pc3NpbmdcIiBhcmd1bWVudCBtdXN0IGJlIGEgYm9vbGVhbicpO1xuXHR9XG5cblx0dmFyIHBhcnRzID0gc3RyaW5nVG9QYXRoKG5hbWUpO1xuXHR2YXIgaW50cmluc2ljQmFzZU5hbWUgPSBwYXJ0cy5sZW5ndGggPiAwID8gcGFydHNbMF0gOiAnJztcblxuXHR2YXIgaW50cmluc2ljID0gZ2V0QmFzZUludHJpbnNpYygnJScgKyBpbnRyaW5zaWNCYXNlTmFtZSArICclJywgYWxsb3dNaXNzaW5nKTtcblx0dmFyIGludHJpbnNpY1JlYWxOYW1lID0gaW50cmluc2ljLm5hbWU7XG5cdHZhciB2YWx1ZSA9IGludHJpbnNpYy52YWx1ZTtcblx0dmFyIHNraXBGdXJ0aGVyQ2FjaGluZyA9IGZhbHNlO1xuXG5cdHZhciBhbGlhcyA9IGludHJpbnNpYy5hbGlhcztcblx0aWYgKGFsaWFzKSB7XG5cdFx0aW50cmluc2ljQmFzZU5hbWUgPSBhbGlhc1swXTtcblx0XHQkc3BsaWNlQXBwbHkocGFydHMsICRjb25jYXQoWzAsIDFdLCBhbGlhcykpO1xuXHR9XG5cblx0Zm9yICh2YXIgaSA9IDEsIGlzT3duID0gdHJ1ZTsgaSA8IHBhcnRzLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0dmFyIHBhcnQgPSBwYXJ0c1tpXTtcblx0XHR2YXIgZmlyc3QgPSAkc3RyU2xpY2UocGFydCwgMCwgMSk7XG5cdFx0dmFyIGxhc3QgPSAkc3RyU2xpY2UocGFydCwgLTEpO1xuXHRcdGlmIChcblx0XHRcdChcblx0XHRcdFx0KGZpcnN0ID09PSAnXCInIHx8IGZpcnN0ID09PSBcIidcIiB8fCBmaXJzdCA9PT0gJ2AnKVxuXHRcdFx0XHR8fCAobGFzdCA9PT0gJ1wiJyB8fCBsYXN0ID09PSBcIidcIiB8fCBsYXN0ID09PSAnYCcpXG5cdFx0XHQpXG5cdFx0XHQmJiBmaXJzdCAhPT0gbGFzdFxuXHRcdCkge1xuXHRcdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcigncHJvcGVydHkgbmFtZXMgd2l0aCBxdW90ZXMgbXVzdCBoYXZlIG1hdGNoaW5nIHF1b3RlcycpO1xuXHRcdH1cblx0XHRpZiAocGFydCA9PT0gJ2NvbnN0cnVjdG9yJyB8fCAhaXNPd24pIHtcblx0XHRcdHNraXBGdXJ0aGVyQ2FjaGluZyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aW50cmluc2ljQmFzZU5hbWUgKz0gJy4nICsgcGFydDtcblx0XHRpbnRyaW5zaWNSZWFsTmFtZSA9ICclJyArIGludHJpbnNpY0Jhc2VOYW1lICsgJyUnO1xuXG5cdFx0aWYgKGhhc093bihJTlRSSU5TSUNTLCBpbnRyaW5zaWNSZWFsTmFtZSkpIHtcblx0XHRcdHZhbHVlID0gSU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV07XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSAhPSBudWxsKSB7XG5cdFx0XHRpZiAoIShwYXJ0IGluIHZhbHVlKSkge1xuXHRcdFx0XHRpZiAoIWFsbG93TWlzc2luZykge1xuXHRcdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdiYXNlIGludHJpbnNpYyBmb3IgJyArIG5hbWUgKyAnIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLicpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2b2lkIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGlmICgkZ09QRCAmJiAoaSArIDEpID49IHBhcnRzLmxlbmd0aCkge1xuXHRcdFx0XHR2YXIgZGVzYyA9ICRnT1BEKHZhbHVlLCBwYXJ0KTtcblx0XHRcdFx0aXNPd24gPSAhIWRlc2M7XG5cblx0XHRcdFx0Ly8gQnkgY29udmVudGlvbiwgd2hlbiBhIGRhdGEgcHJvcGVydHkgaXMgY29udmVydGVkIHRvIGFuIGFjY2Vzc29yXG5cdFx0XHRcdC8vIHByb3BlcnR5IHRvIGVtdWxhdGUgYSBkYXRhIHByb3BlcnR5IHRoYXQgZG9lcyBub3Qgc3VmZmVyIGZyb21cblx0XHRcdFx0Ly8gdGhlIG92ZXJyaWRlIG1pc3Rha2UsIHRoYXQgYWNjZXNzb3IncyBnZXR0ZXIgaXMgbWFya2VkIHdpdGhcblx0XHRcdFx0Ly8gYW4gYG9yaWdpbmFsVmFsdWVgIHByb3BlcnR5LiBIZXJlLCB3aGVuIHdlIGRldGVjdCB0aGlzLCB3ZVxuXHRcdFx0XHQvLyB1cGhvbGQgdGhlIGlsbHVzaW9uIGJ5IHByZXRlbmRpbmcgdG8gc2VlIHRoYXQgb3JpZ2luYWwgZGF0YVxuXHRcdFx0XHQvLyBwcm9wZXJ0eSwgaS5lLiwgcmV0dXJuaW5nIHRoZSB2YWx1ZSByYXRoZXIgdGhhbiB0aGUgZ2V0dGVyXG5cdFx0XHRcdC8vIGl0c2VsZi5cblx0XHRcdFx0aWYgKGlzT3duICYmICdnZXQnIGluIGRlc2MgJiYgISgnb3JpZ2luYWxWYWx1ZScgaW4gZGVzYy5nZXQpKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBkZXNjLmdldDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlW3BhcnRdO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpc093biA9IGhhc093bih2YWx1ZSwgcGFydCk7XG5cdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc093biAmJiAhc2tpcEZ1cnRoZXJDYWNoaW5nKSB7XG5cdFx0XHRcdElOVFJJTlNJQ1NbaW50cmluc2ljUmVhbE5hbWVdID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGdsb2JhbHNcblx0QWdncmVnYXRlRXJyb3IsXG5cdEF0b21pY3MsXG5cdEZpbmFsaXphdGlvblJlZ2lzdHJ5LFxuXHRTaGFyZWRBcnJheUJ1ZmZlcixcblx0V2Vha1JlZixcbiovXG5cbnZhciB1bmRlZmluZWQ7XG5cbnZhciAkU3ludGF4RXJyb3IgPSBTeW50YXhFcnJvcjtcbnZhciAkRnVuY3Rpb24gPSBGdW5jdGlvbjtcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbnZhciBnZXRFdmFsbGVkQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoZXhwcmVzc2lvblN5bnRheCkge1xuXHR0cnkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuXHRcdHJldHVybiBGdW5jdGlvbignXCJ1c2Ugc3RyaWN0XCI7IHJldHVybiAoJyArIGV4cHJlc3Npb25TeW50YXggKyAnKS5jb25zdHJ1Y3RvcjsnKSgpO1xuXHR9IGNhdGNoIChlKSB7fVxufTtcblxudmFyICRnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbmlmICgkZ09QRCkge1xuXHR0cnkge1xuXHRcdCRnT1BEKHt9LCAnJyk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQkZ09QRCA9IG51bGw7IC8vIHRoaXMgaXMgSUUgOCwgd2hpY2ggaGFzIGEgYnJva2VuIGdPUERcblx0fVxufVxuXG52YXIgdGhyb3dUeXBlRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG5cdHRocm93IG5ldyAkVHlwZUVycm9yKCk7XG59O1xudmFyIFRocm93VHlwZUVycm9yID0gJGdPUERcblx0PyAoZnVuY3Rpb24gKCkge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLWV4cHJlc3Npb25zLCBuby1jYWxsZXIsIG5vLXJlc3RyaWN0ZWQtcHJvcGVydGllc1xuXHRcdFx0YXJndW1lbnRzLmNhbGxlZTsgLy8gSUUgOCBkb2VzIG5vdCB0aHJvdyBoZXJlXG5cdFx0XHRyZXR1cm4gdGhyb3dUeXBlRXJyb3I7XG5cdFx0fSBjYXRjaCAoY2FsbGVlVGhyb3dzKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHQvLyBJRSA4IHRocm93cyBvbiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJycpXG5cdFx0XHRcdHJldHVybiAkZ09QRChhcmd1bWVudHMsICdjYWxsZWUnKS5nZXQ7XG5cdFx0XHR9IGNhdGNoIChnT1BEdGhyb3dzKSB7XG5cdFx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHRcdH1cblx0XHR9XG5cdH0oKSlcblx0OiB0aHJvd1R5cGVFcnJvcjtcblxudmFyIGhhc1N5bWJvbHMgPSByZXF1aXJlKCdoYXMtc3ltYm9scycpKCk7XG5cbnZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5fX3Byb3RvX187IH07IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cblxudmFyIGFzeW5jR2VuRnVuY3Rpb24gPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uKiAoKSB7fScpO1xudmFyIGFzeW5jR2VuRnVuY3Rpb25Qcm90b3R5cGUgPSBhc3luY0dlbkZ1bmN0aW9uID8gYXN5bmNHZW5GdW5jdGlvbi5wcm90b3R5cGUgOiB1bmRlZmluZWQ7XG52YXIgYXN5bmNHZW5Qcm90b3R5cGUgPSBhc3luY0dlbkZ1bmN0aW9uUHJvdG90eXBlID8gYXN5bmNHZW5GdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgOiB1bmRlZmluZWQ7XG5cbnZhciBUeXBlZEFycmF5ID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8oVWludDhBcnJheSk7XG5cbnZhciBJTlRSSU5TSUNTID0ge1xuXHQnJUFnZ3JlZ2F0ZUVycm9yJSc6IHR5cGVvZiBBZ2dyZWdhdGVFcnJvciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBZ2dyZWdhdGVFcnJvcixcblx0JyVBcnJheSUnOiBBcnJheSxcblx0JyVBcnJheUJ1ZmZlciUnOiB0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQXJyYXlCdWZmZXIsXG5cdCclQXJyYXlJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlJzogdW5kZWZpbmVkLFxuXHQnJUFzeW5jRnVuY3Rpb24lJzogZ2V0RXZhbGxlZENvbnN0cnVjdG9yKCdhc3luYyBmdW5jdGlvbiAoKSB7fScpLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IGFzeW5jR2VuRnVuY3Rpb25Qcm90b3R5cGUsXG5cdCclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnOiBhc3luY0dlbkZ1bmN0aW9uLFxuXHQnJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlJzogYXN5bmNHZW5Qcm90b3R5cGUgPyBnZXRQcm90byhhc3luY0dlblByb3RvdHlwZSkgOiB1bmRlZmluZWQsXG5cdCclQXRvbWljcyUnOiB0eXBlb2YgQXRvbWljcyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBdG9taWNzLFxuXHQnJUJpZ0ludCUnOiB0eXBlb2YgQmlnSW50ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEJpZ0ludCxcblx0JyVCb29sZWFuJSc6IEJvb2xlYW4sXG5cdCclRGF0YVZpZXclJzogdHlwZW9mIERhdGFWaWV3ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IERhdGFWaWV3LFxuXHQnJURhdGUlJzogRGF0ZSxcblx0JyVkZWNvZGVVUkklJzogZGVjb2RlVVJJLFxuXHQnJWRlY29kZVVSSUNvbXBvbmVudCUnOiBkZWNvZGVVUklDb21wb25lbnQsXG5cdCclZW5jb2RlVVJJJSc6IGVuY29kZVVSSSxcblx0JyVlbmNvZGVVUklDb21wb25lbnQlJzogZW5jb2RlVVJJQ29tcG9uZW50LFxuXHQnJUVycm9yJSc6IEVycm9yLFxuXHQnJWV2YWwlJzogZXZhbCwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1ldmFsXG5cdCclRXZhbEVycm9yJSc6IEV2YWxFcnJvcixcblx0JyVGbG9hdDMyQXJyYXklJzogdHlwZW9mIEZsb2F0MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDMyQXJyYXksXG5cdCclRmxvYXQ2NEFycmF5JSc6IHR5cGVvZiBGbG9hdDY0QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQ2NEFycmF5LFxuXHQnJUZpbmFsaXphdGlvblJlZ2lzdHJ5JSc6IHR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGaW5hbGl6YXRpb25SZWdpc3RyeSxcblx0JyVGdW5jdGlvbiUnOiAkRnVuY3Rpb24sXG5cdCclR2VuZXJhdG9yRnVuY3Rpb24lJzogZ2V0RXZhbGxlZENvbnN0cnVjdG9yKCdmdW5jdGlvbiogKCkge30nKSxcblx0JyVJbnQ4QXJyYXklJzogdHlwZW9mIEludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQ4QXJyYXksXG5cdCclSW50MTZBcnJheSUnOiB0eXBlb2YgSW50MTZBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQxNkFycmF5LFxuXHQnJUludDMyQXJyYXklJzogdHlwZW9mIEludDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MzJBcnJheSxcblx0JyVpc0Zpbml0ZSUnOiBpc0Zpbml0ZSxcblx0JyVpc05hTiUnOiBpc05hTixcblx0JyVJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSkgOiB1bmRlZmluZWQsXG5cdCclSlNPTiUnOiB0eXBlb2YgSlNPTiA9PT0gJ29iamVjdCcgPyBKU09OIDogdW5kZWZpbmVkLFxuXHQnJU1hcCUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IE1hcCxcblx0JyVNYXBJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKG5ldyBNYXAoKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFxuXHQnJU1hdGglJzogTWF0aCxcblx0JyVOdW1iZXIlJzogTnVtYmVyLFxuXHQnJU9iamVjdCUnOiBPYmplY3QsXG5cdCclcGFyc2VGbG9hdCUnOiBwYXJzZUZsb2F0LFxuXHQnJXBhcnNlSW50JSc6IHBhcnNlSW50LFxuXHQnJVByb21pc2UlJzogdHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJvbWlzZSxcblx0JyVQcm94eSUnOiB0eXBlb2YgUHJveHkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJveHksXG5cdCclUmFuZ2VFcnJvciUnOiBSYW5nZUVycm9yLFxuXHQnJVJlZmVyZW5jZUVycm9yJSc6IFJlZmVyZW5jZUVycm9yLFxuXHQnJVJlZmxlY3QlJzogdHlwZW9mIFJlZmxlY3QgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUmVmbGVjdCxcblx0JyVSZWdFeHAlJzogUmVnRXhwLFxuXHQnJVNldCUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFNldCxcblx0JyVTZXRJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKG5ldyBTZXQoKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFxuXHQnJVNoYXJlZEFycmF5QnVmZmVyJSc6IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTaGFyZWRBcnJheUJ1ZmZlcixcblx0JyVTdHJpbmclJzogU3RyaW5nLFxuXHQnJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90bygnJ1tTeW1ib2wuaXRlcmF0b3JdKCkpIDogdW5kZWZpbmVkLFxuXHQnJVN5bWJvbCUnOiBoYXNTeW1ib2xzID8gU3ltYm9sIDogdW5kZWZpbmVkLFxuXHQnJVN5bnRheEVycm9yJSc6ICRTeW50YXhFcnJvcixcblx0JyVUaHJvd1R5cGVFcnJvciUnOiBUaHJvd1R5cGVFcnJvcixcblx0JyVUeXBlZEFycmF5JSc6IFR5cGVkQXJyYXksXG5cdCclVHlwZUVycm9yJSc6ICRUeXBlRXJyb3IsXG5cdCclVWludDhBcnJheSUnOiB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OEFycmF5LFxuXHQnJVVpbnQ4Q2xhbXBlZEFycmF5JSc6IHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OENsYW1wZWRBcnJheSxcblx0JyVVaW50MTZBcnJheSUnOiB0eXBlb2YgVWludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDE2QXJyYXksXG5cdCclVWludDMyQXJyYXklJzogdHlwZW9mIFVpbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQzMkFycmF5LFxuXHQnJVVSSUVycm9yJSc6IFVSSUVycm9yLFxuXHQnJVdlYWtNYXAlJzogdHlwZW9mIFdlYWtNYXAgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha01hcCxcblx0JyVXZWFrUmVmJSc6IHR5cGVvZiBXZWFrUmVmID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtSZWYsXG5cdCclV2Vha1NldCUnOiB0eXBlb2YgV2Vha1NldCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrU2V0XG59O1xuXG52YXIgTEVHQUNZX0FMSUFTRVMgPSB7XG5cdCclQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvdHlwZSUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUFycmF5UHJvdG9fZW50cmllcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdlbnRyaWVzJ10sXG5cdCclQXJyYXlQcm90b19mb3JFYWNoJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2ZvckVhY2gnXSxcblx0JyVBcnJheVByb3RvX2tleXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAna2V5cyddLFxuXHQnJUFycmF5UHJvdG9fdmFsdWVzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ3ZhbHVlcyddLFxuXHQnJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlJzogWydBc3luY0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IFsnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUJvb2xlYW5Qcm90b3R5cGUlJzogWydCb29sZWFuJywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGFWaWV3UHJvdG90eXBlJSc6IFsnRGF0YVZpZXcnLCAncHJvdG90eXBlJ10sXG5cdCclRGF0ZVByb3RvdHlwZSUnOiBbJ0RhdGUnLCAncHJvdG90eXBlJ10sXG5cdCclRXJyb3JQcm90b3R5cGUlJzogWydFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVFdmFsRXJyb3JQcm90b3R5cGUlJzogWydFdmFsRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRmxvYXQzMkFycmF5UHJvdG90eXBlJSc6IFsnRmxvYXQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0NjRBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0NjRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGdW5jdGlvblByb3RvdHlwZSUnOiBbJ0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvciUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQ4QXJyYXlQcm90b3R5cGUlJzogWydJbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ0ludDE2QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ0ludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSlNPTlBhcnNlJSc6IFsnSlNPTicsICdwYXJzZSddLFxuXHQnJUpTT05TdHJpbmdpZnklJzogWydKU09OJywgJ3N0cmluZ2lmeSddLFxuXHQnJU1hcFByb3RvdHlwZSUnOiBbJ01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVOdW1iZXJQcm90b3R5cGUlJzogWydOdW1iZXInLCAncHJvdG90eXBlJ10sXG5cdCclT2JqZWN0UHJvdG90eXBlJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZSddLFxuXHQnJU9ialByb3RvX3RvU3RyaW5nJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd0b1N0cmluZyddLFxuXHQnJU9ialByb3RvX3ZhbHVlT2YlJzogWydPYmplY3QnLCAncHJvdG90eXBlJywgJ3ZhbHVlT2YnXSxcblx0JyVQcm9taXNlUHJvdG90eXBlJSc6IFsnUHJvbWlzZScsICdwcm90b3R5cGUnXSxcblx0JyVQcm9taXNlUHJvdG9fdGhlbiUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJywgJ3RoZW4nXSxcblx0JyVQcm9taXNlX2FsbCUnOiBbJ1Byb21pc2UnLCAnYWxsJ10sXG5cdCclUHJvbWlzZV9yZWplY3QlJzogWydQcm9taXNlJywgJ3JlamVjdCddLFxuXHQnJVByb21pc2VfcmVzb2x2ZSUnOiBbJ1Byb21pc2UnLCAncmVzb2x2ZSddLFxuXHQnJVJhbmdlRXJyb3JQcm90b3R5cGUlJzogWydSYW5nZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSc6IFsnUmVmZXJlbmNlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclUmVnRXhwUHJvdG90eXBlJSc6IFsnUmVnRXhwJywgJ3Byb3RvdHlwZSddLFxuXHQnJVNldFByb3RvdHlwZSUnOiBbJ1NldCcsICdwcm90b3R5cGUnXSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUnOiBbJ1NoYXJlZEFycmF5QnVmZmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN0cmluZ1Byb3RvdHlwZSUnOiBbJ1N0cmluZycsICdwcm90b3R5cGUnXSxcblx0JyVTeW1ib2xQcm90b3R5cGUlJzogWydTeW1ib2wnLCAncHJvdG90eXBlJ10sXG5cdCclU3ludGF4RXJyb3JQcm90b3R5cGUlJzogWydTeW50YXhFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVHlwZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlRXJyb3JQcm90b3R5cGUlJzogWydUeXBlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUlJzogWydVaW50OENsYW1wZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQzMkFycmF5UHJvdG90eXBlJSc6IFsnVWludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVVJJRXJyb3JQcm90b3R5cGUlJzogWydVUklFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrTWFwUHJvdG90eXBlJSc6IFsnV2Vha01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrU2V0UHJvdG90eXBlJSc6IFsnV2Vha1NldCcsICdwcm90b3R5cGUnXVxufTtcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnaGFzJyk7XG52YXIgJGNvbmNhdCA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBBcnJheS5wcm90b3R5cGUuY29uY2F0KTtcbnZhciAkc3BsaWNlQXBwbHkgPSBiaW5kLmNhbGwoRnVuY3Rpb24uYXBwbHksIEFycmF5LnByb3RvdHlwZS5zcGxpY2UpO1xudmFyICRyZXBsYWNlID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG5cbi8qIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iLzQuMTcuMTUvZGlzdC9sb2Rhc2guanMjTDY3MzUtTDY3NDQgKi9cbnZhciByZVByb3BOYW1lID0gL1teJS5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwlJCkpL2c7XG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7IC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IGZ1bmN0aW9uIHN0cmluZ1RvUGF0aChzdHJpbmcpIHtcblx0dmFyIHJlc3VsdCA9IFtdO1xuXHQkcmVwbGFjZShzdHJpbmcsIHJlUHJvcE5hbWUsIGZ1bmN0aW9uIChtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG5cdFx0cmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gcXVvdGUgPyAkcmVwbGFjZShzdWJTdHJpbmcsIHJlRXNjYXBlQ2hhciwgJyQxJykgOiBudW1iZXIgfHwgbWF0Y2g7XG5cdH0pO1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcbi8qIGVuZCBhZGFwdGF0aW9uICovXG5cbnZhciBnZXRCYXNlSW50cmluc2ljID0gZnVuY3Rpb24gZ2V0QmFzZUludHJpbnNpYyhuYW1lLCBhbGxvd01pc3NpbmcpIHtcblx0dmFyIGludHJpbnNpY05hbWUgPSBuYW1lO1xuXHR2YXIgYWxpYXM7XG5cdGlmIChoYXNPd24oTEVHQUNZX0FMSUFTRVMsIGludHJpbnNpY05hbWUpKSB7XG5cdFx0YWxpYXMgPSBMRUdBQ1lfQUxJQVNFU1tpbnRyaW5zaWNOYW1lXTtcblx0XHRpbnRyaW5zaWNOYW1lID0gJyUnICsgYWxpYXNbMF0gKyAnJSc7XG5cdH1cblxuXHRpZiAoaGFzT3duKElOVFJJTlNJQ1MsIGludHJpbnNpY05hbWUpKSB7XG5cdFx0dmFyIHZhbHVlID0gSU5UUklOU0lDU1tpbnRyaW5zaWNOYW1lXTtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyAmJiAhYWxsb3dNaXNzaW5nKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBleGlzdHMsIGJ1dCBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgZmlsZSBhbiBpc3N1ZSEnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0YWxpYXM6IGFsaWFzLFxuXHRcdFx0bmFtZTogaW50cmluc2ljTmFtZSxcblx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdH07XG5cdH1cblxuXHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdpbnRyaW5zaWMgJyArIG5hbWUgKyAnIGRvZXMgbm90IGV4aXN0IScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBHZXRJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycgfHwgbmFtZS5sZW5ndGggPT09IDApIHtcblx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignaW50cmluc2ljIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcblx0fVxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZW9mIGFsbG93TWlzc2luZyAhPT0gJ2Jvb2xlYW4nKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1wiYWxsb3dNaXNzaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKTtcblx0fVxuXG5cdHZhciBwYXJ0cyA9IHN0cmluZ1RvUGF0aChuYW1lKTtcblx0dmFyIGludHJpbnNpY0Jhc2VOYW1lID0gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzWzBdIDogJyc7XG5cblx0dmFyIGludHJpbnNpYyA9IGdldEJhc2VJbnRyaW5zaWMoJyUnICsgaW50cmluc2ljQmFzZU5hbWUgKyAnJScsIGFsbG93TWlzc2luZyk7XG5cdHZhciBpbnRyaW5zaWNSZWFsTmFtZSA9IGludHJpbnNpYy5uYW1lO1xuXHR2YXIgdmFsdWUgPSBpbnRyaW5zaWMudmFsdWU7XG5cdHZhciBza2lwRnVydGhlckNhY2hpbmcgPSBmYWxzZTtcblxuXHR2YXIgYWxpYXMgPSBpbnRyaW5zaWMuYWxpYXM7XG5cdGlmIChhbGlhcykge1xuXHRcdGludHJpbnNpY0Jhc2VOYW1lID0gYWxpYXNbMF07XG5cdFx0JHNwbGljZUFwcGx5KHBhcnRzLCAkY29uY2F0KFswLCAxXSwgYWxpYXMpKTtcblx0fVxuXG5cdGZvciAodmFyIGkgPSAxLCBpc093biA9IHRydWU7IGkgPCBwYXJ0cy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdHZhciBwYXJ0ID0gcGFydHNbaV07XG5cdFx0aWYgKHBhcnQgPT09ICdjb25zdHJ1Y3RvcicgfHwgIWlzT3duKSB7XG5cdFx0XHRza2lwRnVydGhlckNhY2hpbmcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGludHJpbnNpY0Jhc2VOYW1lICs9ICcuJyArIHBhcnQ7XG5cdFx0aW50cmluc2ljUmVhbE5hbWUgPSAnJScgKyBpbnRyaW5zaWNCYXNlTmFtZSArICclJztcblxuXHRcdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljUmVhbE5hbWUpKSB7XG5cdFx0XHR2YWx1ZSA9IElOVFJJTlNJQ1NbaW50cmluc2ljUmVhbE5hbWVdO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuXHRcdFx0aWYgKCRnT1BEICYmIChpICsgMSkgPj0gcGFydHMubGVuZ3RoKSB7XG5cdFx0XHRcdHZhciBkZXNjID0gJGdPUEQodmFsdWUsIHBhcnQpO1xuXHRcdFx0XHRpc093biA9ICEhZGVzYztcblxuXHRcdFx0XHRpZiAoIWFsbG93TWlzc2luZyAmJiAhKHBhcnQgaW4gdmFsdWUpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2Jhc2UgaW50cmluc2ljIGZvciAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgdGhlIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUuJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gQnkgY29udmVudGlvbiwgd2hlbiBhIGRhdGEgcHJvcGVydHkgaXMgY29udmVydGVkIHRvIGFuIGFjY2Vzc29yXG5cdFx0XHRcdC8vIHByb3BlcnR5IHRvIGVtdWxhdGUgYSBkYXRhIHByb3BlcnR5IHRoYXQgZG9lcyBub3Qgc3VmZmVyIGZyb21cblx0XHRcdFx0Ly8gdGhlIG92ZXJyaWRlIG1pc3Rha2UsIHRoYXQgYWNjZXNzb3IncyBnZXR0ZXIgaXMgbWFya2VkIHdpdGhcblx0XHRcdFx0Ly8gYW4gYG9yaWdpbmFsVmFsdWVgIHByb3BlcnR5LiBIZXJlLCB3aGVuIHdlIGRldGVjdCB0aGlzLCB3ZVxuXHRcdFx0XHQvLyB1cGhvbGQgdGhlIGlsbHVzaW9uIGJ5IHByZXRlbmRpbmcgdG8gc2VlIHRoYXQgb3JpZ2luYWwgZGF0YVxuXHRcdFx0XHQvLyBwcm9wZXJ0eSwgaS5lLiwgcmV0dXJuaW5nIHRoZSB2YWx1ZSByYXRoZXIgdGhhbiB0aGUgZ2V0dGVyXG5cdFx0XHRcdC8vIGl0c2VsZi5cblx0XHRcdFx0aWYgKGlzT3duICYmICdnZXQnIGluIGRlc2MgJiYgISgnb3JpZ2luYWxWYWx1ZScgaW4gZGVzYy5nZXQpKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBkZXNjLmdldDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlW3BhcnRdO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpc093biA9IGhhc093bih2YWx1ZSwgcGFydCk7XG5cdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc093biAmJiAhc2tpcEZ1cnRoZXJDYWNoaW5nKSB7XG5cdFx0XHRcdElOVFJJTlNJQ1NbaW50cmluc2ljUmVhbE5hbWVdID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcblxudmFyICRhcHBseSA9IEdldEludHJpbnNpYygnJUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSUnKTtcbnZhciAkY2FsbCA9IEdldEludHJpbnNpYygnJUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsJScpO1xudmFyICRyZWZsZWN0QXBwbHkgPSBHZXRJbnRyaW5zaWMoJyVSZWZsZWN0LmFwcGx5JScsIHRydWUpIHx8IGJpbmQuY2FsbCgkY2FsbCwgJGFwcGx5KTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IEdldEludHJpbnNpYygnJU9iamVjdC5kZWZpbmVQcm9wZXJ0eSUnLCB0cnVlKTtcblxuaWYgKCRkZWZpbmVQcm9wZXJ0eSkge1xuXHR0cnkge1xuXHRcdCRkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IHZhbHVlOiAxIH0pO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gSUUgOCBoYXMgYSBicm9rZW4gZGVmaW5lUHJvcGVydHlcblx0XHQkZGVmaW5lUHJvcGVydHkgPSBudWxsO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY2FsbEJpbmQoKSB7XG5cdHJldHVybiAkcmVmbGVjdEFwcGx5KGJpbmQsICRjYWxsLCBhcmd1bWVudHMpO1xufTtcblxudmFyIGFwcGx5QmluZCA9IGZ1bmN0aW9uIGFwcGx5QmluZCgpIHtcblx0cmV0dXJuICRyZWZsZWN0QXBwbHkoYmluZCwgJGFwcGx5LCBhcmd1bWVudHMpO1xufTtcblxuaWYgKCRkZWZpbmVQcm9wZXJ0eSkge1xuXHQkZGVmaW5lUHJvcGVydHkobW9kdWxlLmV4cG9ydHMsICdhcHBseScsIHsgdmFsdWU6IGFwcGx5QmluZCB9KTtcbn0gZWxzZSB7XG5cdG1vZHVsZS5leHBvcnRzLmFwcGx5ID0gYXBwbHlCaW5kO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgR2V0SW50cmluc2ljID0gcmVxdWlyZSgnZ2V0LWludHJpbnNpYycpO1xuXG52YXIgY2FsbEJpbmQgPSByZXF1aXJlKCcuLycpO1xuXG52YXIgJGluZGV4T2YgPSBjYWxsQmluZChHZXRJbnRyaW5zaWMoJ1N0cmluZy5wcm90b3R5cGUuaW5kZXhPZicpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjYWxsQm91bmRJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdHZhciBpbnRyaW5zaWMgPSBHZXRJbnRyaW5zaWMobmFtZSwgISFhbGxvd01pc3NpbmcpO1xuXHRpZiAodHlwZW9mIGludHJpbnNpYyA9PT0gJ2Z1bmN0aW9uJyAmJiAkaW5kZXhPZihuYW1lLCAnLnByb3RvdHlwZS4nKSA+IC0xKSB7XG5cdFx0cmV0dXJuIGNhbGxCaW5kKGludHJpbnNpYyk7XG5cdH1cblx0cmV0dXJuIGludHJpbnNpYztcbn07XG4iLCJ2YXIgaGFzTWFwID0gdHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBNYXAucHJvdG90eXBlO1xudmFyIG1hcFNpemVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBoYXNNYXAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE1hcC5wcm90b3R5cGUsICdzaXplJykgOiBudWxsO1xudmFyIG1hcFNpemUgPSBoYXNNYXAgJiYgbWFwU2l6ZURlc2NyaXB0b3IgJiYgdHlwZW9mIG1hcFNpemVEZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJyA/IG1hcFNpemVEZXNjcmlwdG9yLmdldCA6IG51bGw7XG52YXIgbWFwRm9yRWFjaCA9IGhhc01hcCAmJiBNYXAucHJvdG90eXBlLmZvckVhY2g7XG52YXIgaGFzU2V0ID0gdHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJyAmJiBTZXQucHJvdG90eXBlO1xudmFyIHNldFNpemVEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiBoYXNTZXQgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNldC5wcm90b3R5cGUsICdzaXplJykgOiBudWxsO1xudmFyIHNldFNpemUgPSBoYXNTZXQgJiYgc2V0U2l6ZURlc2NyaXB0b3IgJiYgdHlwZW9mIHNldFNpemVEZXNjcmlwdG9yLmdldCA9PT0gJ2Z1bmN0aW9uJyA/IHNldFNpemVEZXNjcmlwdG9yLmdldCA6IG51bGw7XG52YXIgc2V0Rm9yRWFjaCA9IGhhc1NldCAmJiBTZXQucHJvdG90eXBlLmZvckVhY2g7XG52YXIgaGFzV2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIFdlYWtNYXAucHJvdG90eXBlO1xudmFyIHdlYWtNYXBIYXMgPSBoYXNXZWFrTWFwID8gV2Vha01hcC5wcm90b3R5cGUuaGFzIDogbnVsbDtcbnZhciBoYXNXZWFrU2V0ID0gdHlwZW9mIFdlYWtTZXQgPT09ICdmdW5jdGlvbicgJiYgV2Vha1NldC5wcm90b3R5cGU7XG52YXIgd2Vha1NldEhhcyA9IGhhc1dlYWtTZXQgPyBXZWFrU2V0LnByb3RvdHlwZS5oYXMgOiBudWxsO1xudmFyIGJvb2xlYW5WYWx1ZU9mID0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZjtcbnZhciBvYmplY3RUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbnZhciBtYXRjaCA9IFN0cmluZy5wcm90b3R5cGUubWF0Y2g7XG52YXIgYmlnSW50VmFsdWVPZiA9IHR5cGVvZiBCaWdJbnQgPT09ICdmdW5jdGlvbicgPyBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YgOiBudWxsO1xudmFyIGdPUFMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIHN5bVRvU3RyaW5nID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyA/IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcgOiBudWxsO1xudmFyIGlzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbnZhciBpbnNwZWN0Q3VzdG9tID0gcmVxdWlyZSgnLi91dGlsLmluc3BlY3QnKS5jdXN0b207XG52YXIgaW5zcGVjdFN5bWJvbCA9IGluc3BlY3RDdXN0b20gJiYgaXNTeW1ib2woaW5zcGVjdEN1c3RvbSkgPyBpbnNwZWN0Q3VzdG9tIDogbnVsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbnNwZWN0XyhvYmosIG9wdGlvbnMsIGRlcHRoLCBzZWVuKSB7XG4gICAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgaWYgKGhhcyhvcHRzLCAncXVvdGVTdHlsZScpICYmIChvcHRzLnF1b3RlU3R5bGUgIT09ICdzaW5nbGUnICYmIG9wdHMucXVvdGVTdHlsZSAhPT0gJ2RvdWJsZScpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBcInF1b3RlU3R5bGVcIiBtdXN0IGJlIFwic2luZ2xlXCIgb3IgXCJkb3VibGVcIicpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAgIGhhcyhvcHRzLCAnbWF4U3RyaW5nTGVuZ3RoJykgJiYgKHR5cGVvZiBvcHRzLm1heFN0cmluZ0xlbmd0aCA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8gb3B0cy5tYXhTdHJpbmdMZW5ndGggPCAwICYmIG9wdHMubWF4U3RyaW5nTGVuZ3RoICE9PSBJbmZpbml0eVxuICAgICAgICAgICAgOiBvcHRzLm1heFN0cmluZ0xlbmd0aCAhPT0gbnVsbFxuICAgICAgICApXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBcIm1heFN0cmluZ0xlbmd0aFwiLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIEluZmluaXR5LCBvciBgbnVsbGAnKTtcbiAgICB9XG4gICAgdmFyIGN1c3RvbUluc3BlY3QgPSBoYXMob3B0cywgJ2N1c3RvbUluc3BlY3QnKSA/IG9wdHMuY3VzdG9tSW5zcGVjdCA6IHRydWU7XG4gICAgaWYgKHR5cGVvZiBjdXN0b21JbnNwZWN0ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIFwiY3VzdG9tSW5zcGVjdFwiLCBpZiBwcm92aWRlZCwgbXVzdCBiZSBgdHJ1ZWAgb3IgYGZhbHNlYCcpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICAgaGFzKG9wdHMsICdpbmRlbnQnKVxuICAgICAgICAmJiBvcHRzLmluZGVudCAhPT0gbnVsbFxuICAgICAgICAmJiBvcHRzLmluZGVudCAhPT0gJ1xcdCdcbiAgICAgICAgJiYgIShwYXJzZUludChvcHRzLmluZGVudCwgMTApID09PSBvcHRzLmluZGVudCAmJiBvcHRzLmluZGVudCA+IDApXG4gICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgXCJpbmRlbnRcIiBtdXN0IGJlIFwiXFxcXHRcIiwgYW4gaW50ZWdlciA+IDAsIG9yIGBudWxsYCcpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgfVxuICAgIGlmIChvYmogPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gb2JqID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGluc3BlY3RTdHJpbmcob2JqLCBvcHRzKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlmIChvYmogPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBJbmZpbml0eSAvIG9iaiA+IDAgPyAnMCcgOiAnLTAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBTdHJpbmcob2JqKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcob2JqKSArICduJztcbiAgICB9XG5cbiAgICB2YXIgbWF4RGVwdGggPSB0eXBlb2Ygb3B0cy5kZXB0aCA9PT0gJ3VuZGVmaW5lZCcgPyA1IDogb3B0cy5kZXB0aDtcbiAgICBpZiAodHlwZW9mIGRlcHRoID09PSAndW5kZWZpbmVkJykgeyBkZXB0aCA9IDA7IH1cbiAgICBpZiAoZGVwdGggPj0gbWF4RGVwdGggJiYgbWF4RGVwdGggPiAwICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBpc0FycmF5KG9iaikgPyAnW0FycmF5XScgOiAnW09iamVjdF0nO1xuICAgIH1cblxuICAgIHZhciBpbmRlbnQgPSBnZXRJbmRlbnQob3B0cywgZGVwdGgpO1xuXG4gICAgaWYgKHR5cGVvZiBzZWVuID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzZWVuID0gW107XG4gICAgfSBlbHNlIGlmIChpbmRleE9mKHNlZW4sIG9iaikgPj0gMCkge1xuICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3BlY3QodmFsdWUsIGZyb20sIG5vSW5kZW50KSB7XG4gICAgICAgIGlmIChmcm9tKSB7XG4gICAgICAgICAgICBzZWVuID0gc2Vlbi5zbGljZSgpO1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub0luZGVudCkge1xuICAgICAgICAgICAgdmFyIG5ld09wdHMgPSB7XG4gICAgICAgICAgICAgICAgZGVwdGg6IG9wdHMuZGVwdGhcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoaGFzKG9wdHMsICdxdW90ZVN0eWxlJykpIHtcbiAgICAgICAgICAgICAgICBuZXdPcHRzLnF1b3RlU3R5bGUgPSBvcHRzLnF1b3RlU3R5bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5zcGVjdF8odmFsdWUsIG5ld09wdHMsIGRlcHRoICsgMSwgc2Vlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluc3BlY3RfKHZhbHVlLCBvcHRzLCBkZXB0aCArIDEsIHNlZW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBuYW1lID0gbmFtZU9mKG9iaik7XG4gICAgICAgIHZhciBrZXlzID0gYXJyT2JqS2V5cyhvYmosIGluc3BlY3QpO1xuICAgICAgICByZXR1cm4gJ1tGdW5jdGlvbicgKyAobmFtZSA/ICc6ICcgKyBuYW1lIDogJyAoYW5vbnltb3VzKScpICsgJ10nICsgKGtleXMubGVuZ3RoID4gMCA/ICcgeyAnICsga2V5cy5qb2luKCcsICcpICsgJyB9JyA6ICcnKTtcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKG9iaikpIHtcbiAgICAgICAgdmFyIHN5bVN0cmluZyA9IHN5bVRvU3RyaW5nLmNhbGwob2JqKTtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnID8gbWFya0JveGVkKHN5bVN0cmluZykgOiBzeW1TdHJpbmc7XG4gICAgfVxuICAgIGlmIChpc0VsZW1lbnQob2JqKSkge1xuICAgICAgICB2YXIgcyA9ICc8JyArIFN0cmluZyhvYmoubm9kZU5hbWUpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHZhciBhdHRycyA9IG9iai5hdHRyaWJ1dGVzIHx8IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzICs9ICcgJyArIGF0dHJzW2ldLm5hbWUgKyAnPScgKyB3cmFwUXVvdGVzKHF1b3RlKGF0dHJzW2ldLnZhbHVlKSwgJ2RvdWJsZScsIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gJz4nO1xuICAgICAgICBpZiAob2JqLmNoaWxkTm9kZXMgJiYgb2JqLmNoaWxkTm9kZXMubGVuZ3RoKSB7IHMgKz0gJy4uLic7IH1cbiAgICAgICAgcyArPSAnPC8nICsgU3RyaW5nKG9iai5ub2RlTmFtZSkudG9Mb3dlckNhc2UoKSArICc+JztcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAgICAgaWYgKG9iai5sZW5ndGggPT09IDApIHsgcmV0dXJuICdbXSc7IH1cbiAgICAgICAgdmFyIHhzID0gYXJyT2JqS2V5cyhvYmosIGluc3BlY3QpO1xuICAgICAgICBpZiAoaW5kZW50ICYmICFzaW5nbGVMaW5lVmFsdWVzKHhzKSkge1xuICAgICAgICAgICAgcmV0dXJuICdbJyArIGluZGVudGVkSm9pbih4cywgaW5kZW50KSArICddJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1sgJyArIHhzLmpvaW4oJywgJykgKyAnIF0nO1xuICAgIH1cbiAgICBpZiAoaXNFcnJvcihvYmopKSB7XG4gICAgICAgIHZhciBwYXJ0cyA9IGFyck9iaktleXMob2JqLCBpbnNwZWN0KTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJ1snICsgU3RyaW5nKG9iaikgKyAnXSc7IH1cbiAgICAgICAgcmV0dXJuICd7IFsnICsgU3RyaW5nKG9iaikgKyAnXSAnICsgcGFydHMuam9pbignLCAnKSArICcgfSc7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBjdXN0b21JbnNwZWN0KSB7XG4gICAgICAgIGlmIChpbnNwZWN0U3ltYm9sICYmIHR5cGVvZiBvYmpbaW5zcGVjdFN5bWJvbF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmpbaW5zcGVjdFN5bWJvbF0oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqLmluc3BlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouaW5zcGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc01hcChvYmopKSB7XG4gICAgICAgIHZhciBtYXBQYXJ0cyA9IFtdO1xuICAgICAgICBtYXBGb3JFYWNoLmNhbGwob2JqLCBmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICAgICAgbWFwUGFydHMucHVzaChpbnNwZWN0KGtleSwgb2JqLCB0cnVlKSArICcgPT4gJyArIGluc3BlY3QodmFsdWUsIG9iaikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25PZignTWFwJywgbWFwU2l6ZS5jYWxsKG9iaiksIG1hcFBhcnRzLCBpbmRlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNTZXQob2JqKSkge1xuICAgICAgICB2YXIgc2V0UGFydHMgPSBbXTtcbiAgICAgICAgc2V0Rm9yRWFjaC5jYWxsKG9iaiwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBzZXRQYXJ0cy5wdXNoKGluc3BlY3QodmFsdWUsIG9iaikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25PZignU2V0Jywgc2V0U2l6ZS5jYWxsKG9iaiksIHNldFBhcnRzLCBpbmRlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNXZWFrTWFwKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIHdlYWtDb2xsZWN0aW9uT2YoJ1dlYWtNYXAnKTtcbiAgICB9XG4gICAgaWYgKGlzV2Vha1NldChvYmopKSB7XG4gICAgICAgIHJldHVybiB3ZWFrQ29sbGVjdGlvbk9mKCdXZWFrU2V0Jyk7XG4gICAgfVxuICAgIGlmIChpc051bWJlcihvYmopKSB7XG4gICAgICAgIHJldHVybiBtYXJrQm94ZWQoaW5zcGVjdChOdW1iZXIob2JqKSkpO1xuICAgIH1cbiAgICBpZiAoaXNCaWdJbnQob2JqKSkge1xuICAgICAgICByZXR1cm4gbWFya0JveGVkKGluc3BlY3QoYmlnSW50VmFsdWVPZi5jYWxsKG9iaikpKTtcbiAgICB9XG4gICAgaWYgKGlzQm9vbGVhbihvYmopKSB7XG4gICAgICAgIHJldHVybiBtYXJrQm94ZWQoYm9vbGVhblZhbHVlT2YuY2FsbChvYmopKTtcbiAgICB9XG4gICAgaWYgKGlzU3RyaW5nKG9iaikpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtCb3hlZChpbnNwZWN0KFN0cmluZyhvYmopKSk7XG4gICAgfVxuICAgIGlmICghaXNEYXRlKG9iaikgJiYgIWlzUmVnRXhwKG9iaikpIHtcbiAgICAgICAgdmFyIHlzID0gYXJyT2JqS2V5cyhvYmosIGluc3BlY3QpO1xuICAgICAgICBpZiAoeXMubGVuZ3RoID09PSAwKSB7IHJldHVybiAne30nOyB9XG4gICAgICAgIGlmIChpbmRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAneycgKyBpbmRlbnRlZEpvaW4oeXMsIGluZGVudCkgKyAnfSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd7ICcgKyB5cy5qb2luKCcsICcpICsgJyB9JztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhvYmopO1xufTtcblxuZnVuY3Rpb24gd3JhcFF1b3RlcyhzLCBkZWZhdWx0U3R5bGUsIG9wdHMpIHtcbiAgICB2YXIgcXVvdGVDaGFyID0gKG9wdHMucXVvdGVTdHlsZSB8fCBkZWZhdWx0U3R5bGUpID09PSAnZG91YmxlJyA/ICdcIicgOiBcIidcIjtcbiAgICByZXR1cm4gcXVvdGVDaGFyICsgcyArIHF1b3RlQ2hhcjtcbn1cblxuZnVuY3Rpb24gcXVvdGUocykge1xuICAgIHJldHVybiBTdHJpbmcocykucmVwbGFjZSgvXCIvZywgJyZxdW90OycpO1xufVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgQXJyYXldJzsgfVxuZnVuY3Rpb24gaXNEYXRlKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgRGF0ZV0nOyB9XG5mdW5jdGlvbiBpc1JlZ0V4cChvYmopIHsgcmV0dXJuIHRvU3RyKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nOyB9XG5mdW5jdGlvbiBpc0Vycm9yKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgRXJyb3JdJzsgfVxuZnVuY3Rpb24gaXNTeW1ib2wob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBTeW1ib2xdJzsgfVxuZnVuY3Rpb24gaXNTdHJpbmcob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBTdHJpbmddJzsgfVxuZnVuY3Rpb24gaXNOdW1iZXIob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBOdW1iZXJdJzsgfVxuZnVuY3Rpb24gaXNCaWdJbnQob2JqKSB7IHJldHVybiB0b1N0cihvYmopID09PSAnW29iamVjdCBCaWdJbnRdJzsgfVxuZnVuY3Rpb24gaXNCb29sZWFuKG9iaikgeyByZXR1cm4gdG9TdHIob2JqKSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nOyB9XG5cbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5IHx8IGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGtleSBpbiB0aGlzOyB9O1xuZnVuY3Rpb24gaGFzKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIGhhc093bi5jYWxsKG9iaiwga2V5KTtcbn1cblxuZnVuY3Rpb24gdG9TdHIob2JqKSB7XG4gICAgcmV0dXJuIG9iamVjdFRvU3RyaW5nLmNhbGwob2JqKTtcbn1cblxuZnVuY3Rpb24gbmFtZU9mKGYpIHtcbiAgICBpZiAoZi5uYW1lKSB7IHJldHVybiBmLm5hbWU7IH1cbiAgICB2YXIgbSA9IG1hdGNoLmNhbGwoZnVuY3Rpb25Ub1N0cmluZy5jYWxsKGYpLCAvXmZ1bmN0aW9uXFxzKihbXFx3JF0rKS8pO1xuICAgIGlmIChtKSB7IHJldHVybiBtWzFdOyB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgICBpZiAoeHMuaW5kZXhPZikgeyByZXR1cm4geHMuaW5kZXhPZih4KTsgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmICh4c1tpXSA9PT0geCkgeyByZXR1cm4gaTsgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIGlzTWFwKHgpIHtcbiAgICBpZiAoIW1hcFNpemUgfHwgIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgbWFwU2l6ZS5jYWxsKHgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2V0U2l6ZS5jYWxsKHgpO1xuICAgICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geCBpbnN0YW5jZW9mIE1hcDsgLy8gY29yZS1qcyB3b3JrYXJvdW5kLCBwcmUtdjIuNS4wXG4gICAgfSBjYXRjaCAoZSkge31cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzV2Vha01hcCh4KSB7XG4gICAgaWYgKCF3ZWFrTWFwSGFzIHx8ICF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIHdlYWtNYXBIYXMuY2FsbCh4LCB3ZWFrTWFwSGFzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHdlYWtTZXRIYXMuY2FsbCh4LCB3ZWFrU2V0SGFzKTtcbiAgICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHggaW5zdGFuY2VvZiBXZWFrTWFwOyAvLyBjb3JlLWpzIHdvcmthcm91bmQsIHByZS12Mi41LjBcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNTZXQoeCkge1xuICAgIGlmICghc2V0U2l6ZSB8fCAheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBzZXRTaXplLmNhbGwoeCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBtYXBTaXplLmNhbGwoeCk7XG4gICAgICAgIH0gY2F0Y2ggKG0pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4IGluc3RhbmNlb2YgU2V0OyAvLyBjb3JlLWpzIHdvcmthcm91bmQsIHByZS12Mi41LjBcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNXZWFrU2V0KHgpIHtcbiAgICBpZiAoIXdlYWtTZXRIYXMgfHwgIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgd2Vha1NldEhhcy5jYWxsKHgsIHdlYWtTZXRIYXMpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgd2Vha01hcEhhcy5jYWxsKHgsIHdlYWtNYXBIYXMpO1xuICAgICAgICB9IGNhdGNoIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geCBpbnN0YW5jZW9mIFdlYWtTZXQ7IC8vIGNvcmUtanMgd29ya2Fyb3VuZCwgcHJlLXYyLjUuMFxuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnQoeCkge1xuICAgIGlmICgheCB8fCB0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgeCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIHgubm9kZU5hbWUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiB4LmdldEF0dHJpYnV0ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaW5zcGVjdFN0cmluZyhzdHIsIG9wdHMpIHtcbiAgICBpZiAoc3RyLmxlbmd0aCA+IG9wdHMubWF4U3RyaW5nTGVuZ3RoKSB7XG4gICAgICAgIHZhciByZW1haW5pbmcgPSBzdHIubGVuZ3RoIC0gb3B0cy5tYXhTdHJpbmdMZW5ndGg7XG4gICAgICAgIHZhciB0cmFpbGVyID0gJy4uLiAnICsgcmVtYWluaW5nICsgJyBtb3JlIGNoYXJhY3RlcicgKyAocmVtYWluaW5nID4gMSA/ICdzJyA6ICcnKTtcbiAgICAgICAgcmV0dXJuIGluc3BlY3RTdHJpbmcoc3RyLnNsaWNlKDAsIG9wdHMubWF4U3RyaW5nTGVuZ3RoKSwgb3B0cykgKyB0cmFpbGVyO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleFxuICAgIHZhciBzID0gc3RyLnJlcGxhY2UoLyhbJ1xcXFxdKS9nLCAnXFxcXCQxJykucmVwbGFjZSgvW1xceDAwLVxceDFmXS9nLCBsb3dieXRlKTtcbiAgICByZXR1cm4gd3JhcFF1b3RlcyhzLCAnc2luZ2xlJywgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIGxvd2J5dGUoYykge1xuICAgIHZhciBuID0gYy5jaGFyQ29kZUF0KDApO1xuICAgIHZhciB4ID0ge1xuICAgICAgICA4OiAnYicsXG4gICAgICAgIDk6ICd0JyxcbiAgICAgICAgMTA6ICduJyxcbiAgICAgICAgMTI6ICdmJyxcbiAgICAgICAgMTM6ICdyJ1xuICAgIH1bbl07XG4gICAgaWYgKHgpIHsgcmV0dXJuICdcXFxcJyArIHg7IH1cbiAgICByZXR1cm4gJ1xcXFx4JyArIChuIDwgMHgxMCA/ICcwJyA6ICcnKSArIG4udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIG1hcmtCb3hlZChzdHIpIHtcbiAgICByZXR1cm4gJ09iamVjdCgnICsgc3RyICsgJyknO1xufVxuXG5mdW5jdGlvbiB3ZWFrQ29sbGVjdGlvbk9mKHR5cGUpIHtcbiAgICByZXR1cm4gdHlwZSArICcgeyA/IH0nO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0aW9uT2YodHlwZSwgc2l6ZSwgZW50cmllcywgaW5kZW50KSB7XG4gICAgdmFyIGpvaW5lZEVudHJpZXMgPSBpbmRlbnQgPyBpbmRlbnRlZEpvaW4oZW50cmllcywgaW5kZW50KSA6IGVudHJpZXMuam9pbignLCAnKTtcbiAgICByZXR1cm4gdHlwZSArICcgKCcgKyBzaXplICsgJykgeycgKyBqb2luZWRFbnRyaWVzICsgJ30nO1xufVxuXG5mdW5jdGlvbiBzaW5nbGVMaW5lVmFsdWVzKHhzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5kZXhPZih4c1tpXSwgJ1xcbicpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5kZW50KG9wdHMsIGRlcHRoKSB7XG4gICAgdmFyIGJhc2VJbmRlbnQ7XG4gICAgaWYgKG9wdHMuaW5kZW50ID09PSAnXFx0Jykge1xuICAgICAgICBiYXNlSW5kZW50ID0gJ1xcdCc7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0cy5pbmRlbnQgPT09ICdudW1iZXInICYmIG9wdHMuaW5kZW50ID4gMCkge1xuICAgICAgICBiYXNlSW5kZW50ID0gQXJyYXkob3B0cy5pbmRlbnQgKyAxKS5qb2luKCcgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGJhc2U6IGJhc2VJbmRlbnQsXG4gICAgICAgIHByZXY6IEFycmF5KGRlcHRoICsgMSkuam9pbihiYXNlSW5kZW50KVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGluZGVudGVkSm9pbih4cywgaW5kZW50KSB7XG4gICAgaWYgKHhzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJyc7IH1cbiAgICB2YXIgbGluZUpvaW5lciA9ICdcXG4nICsgaW5kZW50LnByZXYgKyBpbmRlbnQuYmFzZTtcbiAgICByZXR1cm4gbGluZUpvaW5lciArIHhzLmpvaW4oJywnICsgbGluZUpvaW5lcikgKyAnXFxuJyArIGluZGVudC5wcmV2O1xufVxuXG5mdW5jdGlvbiBhcnJPYmpLZXlzKG9iaiwgaW5zcGVjdCkge1xuICAgIHZhciBpc0FyciA9IGlzQXJyYXkob2JqKTtcbiAgICB2YXIgeHMgPSBbXTtcbiAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgeHMubGVuZ3RoID0gb2JqLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHhzW2ldID0gaGFzKG9iaiwgaSkgPyBpbnNwZWN0KG9ialtpXSwgb2JqKSA6ICcnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICBpZiAoIWhhcyhvYmosIGtleSkpIHsgY29udGludWU7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tY29udGludWVcbiAgICAgICAgaWYgKGlzQXJyICYmIFN0cmluZyhOdW1iZXIoa2V5KSkgPT09IGtleSAmJiBrZXkgPCBvYmoubGVuZ3RoKSB7IGNvbnRpbnVlOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLWNvbnRpbnVlXG4gICAgICAgIGlmICgoL1teXFx3JF0vKS50ZXN0KGtleSkpIHtcbiAgICAgICAgICAgIHhzLnB1c2goaW5zcGVjdChrZXksIG9iaikgKyAnOiAnICsgaW5zcGVjdChvYmpba2V5XSwgb2JqKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB4cy5wdXNoKGtleSArICc6ICcgKyBpbnNwZWN0KG9ialtrZXldLCBvYmopKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGdPUFMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIHN5bXMgPSBnT1BTKG9iaik7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3ltcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgaWYgKGlzRW51bWVyYWJsZS5jYWxsKG9iaiwgc3ltc1tqXSkpIHtcbiAgICAgICAgICAgICAgICB4cy5wdXNoKCdbJyArIGluc3BlY3Qoc3ltc1tqXSkgKyAnXTogJyArIGluc3BlY3Qob2JqW3N5bXNbal1dLCBvYmopKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geHM7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG52YXIgY2FsbEJvdW5kID0gcmVxdWlyZSgnY2FsbC1iaW5kL2NhbGxCb3VuZCcpO1xudmFyIGluc3BlY3QgPSByZXF1aXJlKCdvYmplY3QtaW5zcGVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IEdldEludHJpbnNpYygnJVR5cGVFcnJvciUnKTtcbnZhciAkV2Vha01hcCA9IEdldEludHJpbnNpYygnJVdlYWtNYXAlJywgdHJ1ZSk7XG52YXIgJE1hcCA9IEdldEludHJpbnNpYygnJU1hcCUnLCB0cnVlKTtcblxudmFyICR3ZWFrTWFwR2V0ID0gY2FsbEJvdW5kKCdXZWFrTWFwLnByb3RvdHlwZS5nZXQnLCB0cnVlKTtcbnZhciAkd2Vha01hcFNldCA9IGNhbGxCb3VuZCgnV2Vha01hcC5wcm90b3R5cGUuc2V0JywgdHJ1ZSk7XG52YXIgJHdlYWtNYXBIYXMgPSBjYWxsQm91bmQoJ1dlYWtNYXAucHJvdG90eXBlLmhhcycsIHRydWUpO1xudmFyICRtYXBHZXQgPSBjYWxsQm91bmQoJ01hcC5wcm90b3R5cGUuZ2V0JywgdHJ1ZSk7XG52YXIgJG1hcFNldCA9IGNhbGxCb3VuZCgnTWFwLnByb3RvdHlwZS5zZXQnLCB0cnVlKTtcbnZhciAkbWFwSGFzID0gY2FsbEJvdW5kKCdNYXAucHJvdG90eXBlLmhhcycsIHRydWUpO1xuXG4vKlxuICogVGhpcyBmdW5jdGlvbiB0cmF2ZXJzZXMgdGhlIGxpc3QgcmV0dXJuaW5nIHRoZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlXG4gKiBnaXZlbiBrZXkuXG4gKlxuICogVGhhdCBub2RlIGlzIGFsc28gbW92ZWQgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QsIHNvIHRoYXQgaWYgaXQncyBhY2Nlc3NlZFxuICogYWdhaW4gd2UgZG9uJ3QgbmVlZCB0byB0cmF2ZXJzZSB0aGUgd2hvbGUgbGlzdC4gQnkgZG9pbmcgc28sIGFsbCB0aGUgcmVjZW50bHlcbiAqIHVzZWQgbm9kZXMgY2FuIGJlIGFjY2Vzc2VkIHJlbGF0aXZlbHkgcXVpY2tseS5cbiAqL1xudmFyIGxpc3RHZXROb2RlID0gZnVuY3Rpb24gKGxpc3QsIGtleSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG5cdGZvciAodmFyIHByZXYgPSBsaXN0LCBjdXJyOyAoY3VyciA9IHByZXYubmV4dCkgIT09IG51bGw7IHByZXYgPSBjdXJyKSB7XG5cdFx0aWYgKGN1cnIua2V5ID09PSBrZXkpIHtcblx0XHRcdHByZXYubmV4dCA9IGN1cnIubmV4dDtcblx0XHRcdGN1cnIubmV4dCA9IGxpc3QubmV4dDtcblx0XHRcdGxpc3QubmV4dCA9IGN1cnI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdHJldHVybiBjdXJyO1xuXHRcdH1cblx0fVxufTtcblxudmFyIGxpc3RHZXQgPSBmdW5jdGlvbiAob2JqZWN0cywga2V5KSB7XG5cdHZhciBub2RlID0gbGlzdEdldE5vZGUob2JqZWN0cywga2V5KTtcblx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZTtcbn07XG52YXIgbGlzdFNldCA9IGZ1bmN0aW9uIChvYmplY3RzLCBrZXksIHZhbHVlKSB7XG5cdHZhciBub2RlID0gbGlzdEdldE5vZGUob2JqZWN0cywga2V5KTtcblx0aWYgKG5vZGUpIHtcblx0XHRub2RlLnZhbHVlID0gdmFsdWU7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gUHJlcGVuZCB0aGUgbmV3IG5vZGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdFxuXHRcdG9iamVjdHMubmV4dCA9IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0a2V5OiBrZXksXG5cdFx0XHRuZXh0OiBvYmplY3RzLm5leHQsXG5cdFx0XHR2YWx1ZTogdmFsdWVcblx0XHR9O1xuXHR9XG59O1xudmFyIGxpc3RIYXMgPSBmdW5jdGlvbiAob2JqZWN0cywga2V5KSB7XG5cdHJldHVybiAhIWxpc3RHZXROb2RlKG9iamVjdHMsIGtleSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFNpZGVDaGFubmVsKCkge1xuXHR2YXIgJHdtO1xuXHR2YXIgJG07XG5cdHZhciAkbztcblx0dmFyIGNoYW5uZWwgPSB7XG5cdFx0YXNzZXJ0OiBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRpZiAoIWNoYW5uZWwuaGFzKGtleSkpIHtcblx0XHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1NpZGUgY2hhbm5lbCBkb2VzIG5vdCBjb250YWluICcgKyBpbnNwZWN0KGtleSkpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0Z2V0OiBmdW5jdGlvbiAoa2V5KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblx0XHRcdGlmICgkV2Vha01hcCAmJiBrZXkgJiYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBrZXkgPT09ICdmdW5jdGlvbicpKSB7XG5cdFx0XHRcdGlmICgkd20pIHtcblx0XHRcdFx0XHRyZXR1cm4gJHdlYWtNYXBHZXQoJHdtLCBrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKCRNYXApIHtcblx0XHRcdFx0aWYgKCRtKSB7XG5cdFx0XHRcdFx0cmV0dXJuICRtYXBHZXQoJG0sIGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICgkbykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWxvbmVseS1pZlxuXHRcdFx0XHRcdHJldHVybiBsaXN0R2V0KCRvLCBrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRoYXM6IGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdGlmICgkV2Vha01hcCAmJiBrZXkgJiYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBrZXkgPT09ICdmdW5jdGlvbicpKSB7XG5cdFx0XHRcdGlmICgkd20pIHtcblx0XHRcdFx0XHRyZXR1cm4gJHdlYWtNYXBIYXMoJHdtLCBrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKCRNYXApIHtcblx0XHRcdFx0aWYgKCRtKSB7XG5cdFx0XHRcdFx0cmV0dXJuICRtYXBIYXMoJG0sIGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICgkbykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWxvbmVseS1pZlxuXHRcdFx0XHRcdHJldHVybiBsaXN0SGFzKCRvLCBrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSxcblx0XHRzZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG5cdFx0XHRpZiAoJFdlYWtNYXAgJiYga2V5ICYmICh0eXBlb2Yga2V5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2Yga2V5ID09PSAnZnVuY3Rpb24nKSkge1xuXHRcdFx0XHRpZiAoISR3bSkge1xuXHRcdFx0XHRcdCR3bSA9IG5ldyAkV2Vha01hcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCR3ZWFrTWFwU2V0KCR3bSwga2V5LCB2YWx1ZSk7XG5cdFx0XHR9IGVsc2UgaWYgKCRNYXApIHtcblx0XHRcdFx0aWYgKCEkbSkge1xuXHRcdFx0XHRcdCRtID0gbmV3ICRNYXAoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQkbWFwU2V0KCRtLCBrZXksIHZhbHVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICghJG8pIHtcblx0XHRcdFx0XHQvKlxuXHRcdFx0XHRcdCAqIEluaXRpYWxpemUgdGhlIGxpbmtlZCBsaXN0IGFzIGFuIGVtcHR5IG5vZGUsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZVxuXHRcdFx0XHRcdCAqIHRvIHNwZWNpYWwtY2FzZSBoYW5kbGluZyBvZiB0aGUgZmlyc3Qgbm9kZTogd2UgY2FuIGFsd2F5cyByZWZlciB0b1xuXHRcdFx0XHRcdCAqIGl0IGFzIChwcmV2aW91cyBub2RlKS5uZXh0LCBpbnN0ZWFkIG9mIHNvbWV0aGluZyBsaWtlIChsaXN0KS5oZWFkXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0JG8gPSB7IGtleToge30sIG5leHQ6IG51bGwgfTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0U2V0KCRvLCBrZXksIHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdHJldHVybiBjaGFubmVsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG52YXIgcGVyY2VudFR3ZW50aWVzID0gLyUyMC9nO1xuXG52YXIgRm9ybWF0ID0ge1xuICAgIFJGQzE3Mzg6ICdSRkMxNzM4JyxcbiAgICBSRkMzOTg2OiAnUkZDMzk4Nidcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgICdkZWZhdWx0JzogRm9ybWF0LlJGQzM5ODYsXG4gICAgZm9ybWF0dGVyczoge1xuICAgICAgICBSRkMxNzM4OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXBsYWNlLmNhbGwodmFsdWUsIHBlcmNlbnRUd2VudGllcywgJysnKTtcbiAgICAgICAgfSxcbiAgICAgICAgUkZDMzk4NjogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUkZDMTczODogRm9ybWF0LlJGQzE3MzgsXG4gICAgUkZDMzk4NjogRm9ybWF0LlJGQzM5ODZcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBmb3JtYXRzID0gcmVxdWlyZSgnLi9mb3JtYXRzJyk7XG5cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG52YXIgaGV4VGFibGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgICAgICAgYXJyYXkucHVzaCgnJScgKyAoKGkgPCAxNiA/ICcwJyA6ICcnKSArIGkudG9TdHJpbmcoMTYpKS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyYXk7XG59KCkpO1xuXG52YXIgY29tcGFjdFF1ZXVlID0gZnVuY3Rpb24gY29tcGFjdFF1ZXVlKHF1ZXVlKSB7XG4gICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZS5wb3AoKTtcbiAgICAgICAgdmFyIG9iaiA9IGl0ZW0ub2JqW2l0ZW0ucHJvcF07XG5cbiAgICAgICAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgdmFyIGNvbXBhY3RlZCA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG9iai5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2pdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wYWN0ZWQucHVzaChvYmpbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaXRlbS5vYmpbaXRlbS5wcm9wXSA9IGNvbXBhY3RlZDtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbnZhciBhcnJheVRvT2JqZWN0ID0gZnVuY3Rpb24gYXJyYXlUb09iamVjdChzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICB2YXIgb2JqID0gb3B0aW9ucyAmJiBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVtpXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG9ialtpXSA9IHNvdXJjZVtpXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG59O1xuXG52YXIgbWVyZ2UgPSBmdW5jdGlvbiBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuICAgIC8qIGVzbGludCBuby1wYXJhbS1yZWFzc2lnbjogMCAqL1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChpc0FycmF5KHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRhcmdldC5wdXNoKHNvdXJjZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAoKG9wdGlvbnMgJiYgKG9wdGlvbnMucGxhaW5PYmplY3RzIHx8IG9wdGlvbnMuYWxsb3dQcm90b3R5cGVzKSkgfHwgIWhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbc291cmNlXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3RhcmdldCwgc291cmNlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQgfHwgdHlwZW9mIHRhcmdldCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIFt0YXJnZXRdLmNvbmNhdChzb3VyY2UpO1xuICAgIH1cblxuICAgIHZhciBtZXJnZVRhcmdldCA9IHRhcmdldDtcbiAgICBpZiAoaXNBcnJheSh0YXJnZXQpICYmICFpc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgbWVyZ2VUYXJnZXQgPSBhcnJheVRvT2JqZWN0KHRhcmdldCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkodGFyZ2V0KSAmJiBpc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgc291cmNlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICAgICAgICAgIGlmIChoYXMuY2FsbCh0YXJnZXQsIGkpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldEl0ZW0gPSB0YXJnZXRbaV07XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldEl0ZW0gJiYgdHlwZW9mIHRhcmdldEl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtpXSA9IG1lcmdlKHRhcmdldEl0ZW0sIGl0ZW0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2ldID0gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzb3VyY2Vba2V5XTtcblxuICAgICAgICBpZiAoaGFzLmNhbGwoYWNjLCBrZXkpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IG1lcmdlKGFjY1trZXldLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbWVyZ2VUYXJnZXQpO1xufTtcblxudmFyIGFzc2lnbiA9IGZ1bmN0aW9uIGFzc2lnblNpbmdsZVNvdXJjZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2UpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgYWNjW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB0YXJnZXQpO1xufTtcblxudmFyIGRlY29kZSA9IGZ1bmN0aW9uIChzdHIsIGRlY29kZXIsIGNoYXJzZXQpIHtcbiAgICB2YXIgc3RyV2l0aG91dFBsdXMgPSBzdHIucmVwbGFjZSgvXFwrL2csICcgJyk7XG4gICAgaWYgKGNoYXJzZXQgPT09ICdpc28tODg1OS0xJykge1xuICAgICAgICAvLyB1bmVzY2FwZSBuZXZlciB0aHJvd3MsIG5vIHRyeS4uLmNhdGNoIG5lZWRlZDpcbiAgICAgICAgcmV0dXJuIHN0cldpdGhvdXRQbHVzLnJlcGxhY2UoLyVbMC05YS1mXXsyfS9naSwgdW5lc2NhcGUpO1xuICAgIH1cbiAgICAvLyB1dGYtOFxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc3RyV2l0aG91dFBsdXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHN0cldpdGhvdXRQbHVzO1xuICAgIH1cbn07XG5cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyLCBkZWZhdWx0RW5jb2RlciwgY2hhcnNldCwga2luZCwgZm9ybWF0KSB7XG4gICAgLy8gVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQnJpYW4gV2hpdGUgKG1zY2RleCkgZm9yIHRoZSBpby5qcyBjb3JlIHF1ZXJ5c3RyaW5nIGxpYnJhcnkuXG4gICAgLy8gSXQgaGFzIGJlZW4gYWRhcHRlZCBoZXJlIGZvciBzdHJpY3RlciBhZGhlcmVuY2UgdG8gUkZDIDM5ODZcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIHZhciBzdHJpbmcgPSBzdHI7XG4gICAgaWYgKHR5cGVvZiBzdHIgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgIHN0cmluZyA9IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdHIpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3RyaW5nID0gU3RyaW5nKHN0cik7XG4gICAgfVxuXG4gICAgaWYgKGNoYXJzZXQgPT09ICdpc28tODg1OS0xJykge1xuICAgICAgICByZXR1cm4gZXNjYXBlKHN0cmluZykucmVwbGFjZSgvJXVbMC05YS1mXXs0fS9naSwgZnVuY3Rpb24gKCQwKSB7XG4gICAgICAgICAgICByZXR1cm4gJyUyNiUyMycgKyBwYXJzZUludCgkMC5zbGljZSgyKSwgMTYpICsgJyUzQic7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBvdXQgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGMgPT09IDB4MkQgLy8gLVxuICAgICAgICAgICAgfHwgYyA9PT0gMHgyRSAvLyAuXG4gICAgICAgICAgICB8fCBjID09PSAweDVGIC8vIF9cbiAgICAgICAgICAgIHx8IGMgPT09IDB4N0UgLy8gflxuICAgICAgICAgICAgfHwgKGMgPj0gMHgzMCAmJiBjIDw9IDB4MzkpIC8vIDAtOVxuICAgICAgICAgICAgfHwgKGMgPj0gMHg0MSAmJiBjIDw9IDB4NUEpIC8vIGEtelxuICAgICAgICAgICAgfHwgKGMgPj0gMHg2MSAmJiBjIDw9IDB4N0EpIC8vIEEtWlxuICAgICAgICAgICAgfHwgKGZvcm1hdCA9PT0gZm9ybWF0cy5SRkMxNzM4ICYmIChjID09PSAweDI4IHx8IGMgPT09IDB4MjkpKSAvLyAoIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBvdXQgKz0gc3RyaW5nLmNoYXJBdChpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICAgICAgICBvdXQgPSBvdXQgKyBoZXhUYWJsZVtjXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgICAgICAgb3V0ID0gb3V0ICsgKGhleFRhYmxlWzB4QzAgfCAoYyA+PiA2KV0gKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA8IDB4RDgwMCB8fCBjID49IDB4RTAwMCkge1xuICAgICAgICAgICAgb3V0ID0gb3V0ICsgKGhleFRhYmxlWzB4RTAgfCAoYyA+PiAxMildICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpXSArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgKz0gMTtcbiAgICAgICAgYyA9IDB4MTAwMDAgKyAoKChjICYgMHgzRkYpIDw8IDEwKSB8IChzdHJpbmcuY2hhckNvZGVBdChpKSAmIDB4M0ZGKSk7XG4gICAgICAgIC8qIGVzbGludCBvcGVyYXRvci1saW5lYnJlYWs6IFsyLCBcImJlZm9yZVwiXSAqL1xuICAgICAgICBvdXQgKz0gaGV4VGFibGVbMHhGMCB8IChjID4+IDE4KV1cbiAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiAxMikgJiAweDNGKV1cbiAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn07XG5cbnZhciBjb21wYWN0ID0gZnVuY3Rpb24gY29tcGFjdCh2YWx1ZSkge1xuICAgIHZhciBxdWV1ZSA9IFt7IG9iajogeyBvOiB2YWx1ZSB9LCBwcm9wOiAnbycgfV07XG4gICAgdmFyIHJlZnMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZVtpXTtcbiAgICAgICAgdmFyIG9iaiA9IGl0ZW0ub2JqW2l0ZW0ucHJvcF07XG5cbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2pdO1xuICAgICAgICAgICAgdmFyIHZhbCA9IG9ialtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCAmJiByZWZzLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKHsgb2JqOiBvYmosIHByb3A6IGtleSB9KTtcbiAgICAgICAgICAgICAgICByZWZzLnB1c2godmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBhY3RRdWV1ZShxdWV1ZSk7XG5cbiAgICByZXR1cm4gdmFsdWU7XG59O1xuXG52YXIgaXNSZWdFeHAgPSBmdW5jdGlvbiBpc1JlZ0V4cChvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufTtcblxudmFyIGlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gICAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhIShvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopKTtcbn07XG5cbnZhciBjb21iaW5lID0gZnVuY3Rpb24gY29tYmluZShhLCBiKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdChhLCBiKTtcbn07XG5cbnZhciBtYXliZU1hcCA9IGZ1bmN0aW9uIG1heWJlTWFwKHZhbCwgZm4pIHtcbiAgICBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIHZhciBtYXBwZWQgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIG1hcHBlZC5wdXNoKGZuKHZhbFtpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXBwZWQ7XG4gICAgfVxuICAgIHJldHVybiBmbih2YWwpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXJyYXlUb09iamVjdDogYXJyYXlUb09iamVjdCxcbiAgICBhc3NpZ246IGFzc2lnbixcbiAgICBjb21iaW5lOiBjb21iaW5lLFxuICAgIGNvbXBhY3Q6IGNvbXBhY3QsXG4gICAgZGVjb2RlOiBkZWNvZGUsXG4gICAgZW5jb2RlOiBlbmNvZGUsXG4gICAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICAgIGlzUmVnRXhwOiBpc1JlZ0V4cCxcbiAgICBtYXliZU1hcDogbWF5YmVNYXAsXG4gICAgbWVyZ2U6IG1lcmdlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZ2V0U2lkZUNoYW5uZWwgPSByZXF1aXJlKCdzaWRlLWNoYW5uZWwnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBmb3JtYXRzID0gcmVxdWlyZSgnLi9mb3JtYXRzJyk7XG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGFycmF5UHJlZml4R2VuZXJhdG9ycyA9IHtcbiAgICBicmFja2V0czogZnVuY3Rpb24gYnJhY2tldHMocHJlZml4KSB7XG4gICAgICAgIHJldHVybiBwcmVmaXggKyAnW10nO1xuICAgIH0sXG4gICAgY29tbWE6ICdjb21tYScsXG4gICAgaW5kaWNlczogZnVuY3Rpb24gaW5kaWNlcyhwcmVmaXgsIGtleSkge1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgJ1snICsga2V5ICsgJ10nO1xuICAgIH0sXG4gICAgcmVwZWF0OiBmdW5jdGlvbiByZXBlYXQocHJlZml4KSB7XG4gICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgfVxufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xudmFyIHNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdDtcbnZhciBwdXNoID0gQXJyYXkucHJvdG90eXBlLnB1c2g7XG52YXIgcHVzaFRvQXJyYXkgPSBmdW5jdGlvbiAoYXJyLCB2YWx1ZU9yQXJyYXkpIHtcbiAgICBwdXNoLmFwcGx5KGFyciwgaXNBcnJheSh2YWx1ZU9yQXJyYXkpID8gdmFsdWVPckFycmF5IDogW3ZhbHVlT3JBcnJheV0pO1xufTtcblxudmFyIHRvSVNPID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBkZWZhdWx0Rm9ybWF0ID0gZm9ybWF0c1snZGVmYXVsdCddO1xudmFyIGRlZmF1bHRzID0ge1xuICAgIGFkZFF1ZXJ5UHJlZml4OiBmYWxzZSxcbiAgICBhbGxvd0RvdHM6IGZhbHNlLFxuICAgIGNoYXJzZXQ6ICd1dGYtOCcsXG4gICAgY2hhcnNldFNlbnRpbmVsOiBmYWxzZSxcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBlbmNvZGU6IHRydWUsXG4gICAgZW5jb2RlcjogdXRpbHMuZW5jb2RlLFxuICAgIGVuY29kZVZhbHVlc09ubHk6IGZhbHNlLFxuICAgIGZvcm1hdDogZGVmYXVsdEZvcm1hdCxcbiAgICBmb3JtYXR0ZXI6IGZvcm1hdHMuZm9ybWF0dGVyc1tkZWZhdWx0Rm9ybWF0XSxcbiAgICAvLyBkZXByZWNhdGVkXG4gICAgaW5kaWNlczogZmFsc2UsXG4gICAgc2VyaWFsaXplRGF0ZTogZnVuY3Rpb24gc2VyaWFsaXplRGF0ZShkYXRlKSB7XG4gICAgICAgIHJldHVybiB0b0lTTy5jYWxsKGRhdGUpO1xuICAgIH0sXG4gICAgc2tpcE51bGxzOiBmYWxzZSxcbiAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IGZhbHNlXG59O1xuXG52YXIgaXNOb25OdWxsaXNoUHJpbWl0aXZlID0gZnVuY3Rpb24gaXNOb25OdWxsaXNoUHJpbWl0aXZlKHYpIHtcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnXG4gICAgICAgIHx8IHR5cGVvZiB2ID09PSAnbnVtYmVyJ1xuICAgICAgICB8fCB0eXBlb2YgdiA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgIHx8IHR5cGVvZiB2ID09PSAnc3ltYm9sJ1xuICAgICAgICB8fCB0eXBlb2YgdiA9PT0gJ2JpZ2ludCc7XG59O1xuXG52YXIgc2VudGluZWwgPSB7fTtcblxudmFyIHN0cmluZ2lmeSA9IGZ1bmN0aW9uIHN0cmluZ2lmeShcbiAgICBvYmplY3QsXG4gICAgcHJlZml4LFxuICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgIHNraXBOdWxscyxcbiAgICBlbmNvZGVyLFxuICAgIGZpbHRlcixcbiAgICBzb3J0LFxuICAgIGFsbG93RG90cyxcbiAgICBzZXJpYWxpemVEYXRlLFxuICAgIGZvcm1hdCxcbiAgICBmb3JtYXR0ZXIsXG4gICAgZW5jb2RlVmFsdWVzT25seSxcbiAgICBjaGFyc2V0LFxuICAgIHNpZGVDaGFubmVsXG4pIHtcbiAgICB2YXIgb2JqID0gb2JqZWN0O1xuXG4gICAgdmFyIHRtcFNjID0gc2lkZUNoYW5uZWw7XG4gICAgdmFyIHN0ZXAgPSAwO1xuICAgIHZhciBmaW5kRmxhZyA9IGZhbHNlO1xuICAgIHdoaWxlICgodG1wU2MgPSB0bXBTYy5nZXQoc2VudGluZWwpKSAhPT0gdm9pZCB1bmRlZmluZWQgJiYgIWZpbmRGbGFnKSB7XG4gICAgICAgIC8vIFdoZXJlIG9iamVjdCBsYXN0IGFwcGVhcmVkIGluIHRoZSByZWYgdHJlZVxuICAgICAgICB2YXIgcG9zID0gdG1wU2MuZ2V0KG9iamVjdCk7XG4gICAgICAgIHN0ZXAgKz0gMTtcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAocG9zID09PSBzdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0N5Y2xpYyBvYmplY3QgdmFsdWUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmluZEZsYWcgPSB0cnVlOyAvLyBCcmVhayB3aGlsZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdG1wU2MuZ2V0KHNlbnRpbmVsKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHN0ZXAgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2JqID0gZmlsdGVyKHByZWZpeCwgb2JqKTtcbiAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgb2JqID0gc2VyaWFsaXplRGF0ZShvYmopO1xuICAgIH0gZWxzZSBpZiAoZ2VuZXJhdGVBcnJheVByZWZpeCA9PT0gJ2NvbW1hJyAmJiBpc0FycmF5KG9iaikpIHtcbiAgICAgICAgb2JqID0gdXRpbHMubWF5YmVNYXAob2JqLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChvYmogPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHN0cmljdE51bGxIYW5kbGluZykge1xuICAgICAgICAgICAgcmV0dXJuIGVuY29kZXIgJiYgIWVuY29kZVZhbHVlc09ubHkgPyBlbmNvZGVyKHByZWZpeCwgZGVmYXVsdHMuZW5jb2RlciwgY2hhcnNldCwgJ2tleScsIGZvcm1hdCkgOiBwcmVmaXg7XG4gICAgICAgIH1cblxuICAgICAgICBvYmogPSAnJztcbiAgICB9XG5cbiAgICBpZiAoaXNOb25OdWxsaXNoUHJpbWl0aXZlKG9iaikgfHwgdXRpbHMuaXNCdWZmZXIob2JqKSkge1xuICAgICAgICBpZiAoZW5jb2Rlcikge1xuICAgICAgICAgICAgdmFyIGtleVZhbHVlID0gZW5jb2RlVmFsdWVzT25seSA/IHByZWZpeCA6IGVuY29kZXIocHJlZml4LCBkZWZhdWx0cy5lbmNvZGVyLCBjaGFyc2V0LCAna2V5JywgZm9ybWF0KTtcbiAgICAgICAgICAgIGlmIChnZW5lcmF0ZUFycmF5UHJlZml4ID09PSAnY29tbWEnICYmIGVuY29kZVZhbHVlc09ubHkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVzQXJyYXkgPSBzcGxpdC5jYWxsKFN0cmluZyhvYmopLCAnLCcpO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZXNKb2luZWQgPSAnJztcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlc0FycmF5Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlc0pvaW5lZCArPSAoaSA9PT0gMCA/ICcnIDogJywnKSArIGZvcm1hdHRlcihlbmNvZGVyKHZhbHVlc0FycmF5W2ldLCBkZWZhdWx0cy5lbmNvZGVyLCBjaGFyc2V0LCAndmFsdWUnLCBmb3JtYXQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtmb3JtYXR0ZXIoa2V5VmFsdWUpICsgJz0nICsgdmFsdWVzSm9pbmVkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbZm9ybWF0dGVyKGtleVZhbHVlKSArICc9JyArIGZvcm1hdHRlcihlbmNvZGVyKG9iaiwgZGVmYXVsdHMuZW5jb2RlciwgY2hhcnNldCwgJ3ZhbHVlJywgZm9ybWF0KSldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbZm9ybWF0dGVyKHByZWZpeCkgKyAnPScgKyBmb3JtYXR0ZXIoU3RyaW5nKG9iaikpXTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVzID0gW107XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG5cbiAgICB2YXIgb2JqS2V5cztcbiAgICBpZiAoZ2VuZXJhdGVBcnJheVByZWZpeCA9PT0gJ2NvbW1hJyAmJiBpc0FycmF5KG9iaikpIHtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBqb2luIGVsZW1lbnRzIGluXG4gICAgICAgIG9iaktleXMgPSBbeyB2YWx1ZTogb2JqLmxlbmd0aCA+IDAgPyBvYmouam9pbignLCcpIHx8IG51bGwgOiB2b2lkIHVuZGVmaW5lZCB9XTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZmlsdGVyKSkge1xuICAgICAgICBvYmpLZXlzID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgb2JqS2V5cyA9IHNvcnQgPyBrZXlzLnNvcnQoc29ydCkgOiBrZXlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2JqS2V5cy5sZW5ndGg7ICsraikge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tqXTtcbiAgICAgICAgdmFyIHZhbHVlID0gdHlwZW9mIGtleSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGtleS52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgPyBrZXkudmFsdWUgOiBvYmpba2V5XTtcblxuICAgICAgICBpZiAoc2tpcE51bGxzICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXlQcmVmaXggPSBpc0FycmF5KG9iailcbiAgICAgICAgICAgID8gdHlwZW9mIGdlbmVyYXRlQXJyYXlQcmVmaXggPT09ICdmdW5jdGlvbicgPyBnZW5lcmF0ZUFycmF5UHJlZml4KHByZWZpeCwga2V5KSA6IHByZWZpeFxuICAgICAgICAgICAgOiBwcmVmaXggKyAoYWxsb3dEb3RzID8gJy4nICsga2V5IDogJ1snICsga2V5ICsgJ10nKTtcblxuICAgICAgICBzaWRlQ2hhbm5lbC5zZXQob2JqZWN0LCBzdGVwKTtcbiAgICAgICAgdmFyIHZhbHVlU2lkZUNoYW5uZWwgPSBnZXRTaWRlQ2hhbm5lbCgpO1xuICAgICAgICB2YWx1ZVNpZGVDaGFubmVsLnNldChzZW50aW5lbCwgc2lkZUNoYW5uZWwpO1xuICAgICAgICBwdXNoVG9BcnJheSh2YWx1ZXMsIHN0cmluZ2lmeShcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAga2V5UHJlZml4LFxuICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICAgICAgICAgIHN0cmljdE51bGxIYW5kbGluZyxcbiAgICAgICAgICAgIHNraXBOdWxscyxcbiAgICAgICAgICAgIGVuY29kZXIsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgYWxsb3dEb3RzLFxuICAgICAgICAgICAgc2VyaWFsaXplRGF0ZSxcbiAgICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgIGVuY29kZVZhbHVlc09ubHksXG4gICAgICAgICAgICBjaGFyc2V0LFxuICAgICAgICAgICAgdmFsdWVTaWRlQ2hhbm5lbFxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xufTtcblxudmFyIG5vcm1hbGl6ZVN0cmluZ2lmeU9wdGlvbnMgPSBmdW5jdGlvbiBub3JtYWxpemVTdHJpbmdpZnlPcHRpb25zKG9wdHMpIHtcbiAgICBpZiAoIW9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgIH1cblxuICAgIGlmIChvcHRzLmVuY29kZXIgIT09IG51bGwgJiYgdHlwZW9mIG9wdHMuZW5jb2RlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG9wdHMuZW5jb2RlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFbmNvZGVyIGhhcyB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIHZhciBjaGFyc2V0ID0gb3B0cy5jaGFyc2V0IHx8IGRlZmF1bHRzLmNoYXJzZXQ7XG4gICAgaWYgKHR5cGVvZiBvcHRzLmNoYXJzZXQgIT09ICd1bmRlZmluZWQnICYmIG9wdHMuY2hhcnNldCAhPT0gJ3V0Zi04JyAmJiBvcHRzLmNoYXJzZXQgIT09ICdpc28tODg1OS0xJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgY2hhcnNldCBvcHRpb24gbXVzdCBiZSBlaXRoZXIgdXRmLTgsIGlzby04ODU5LTEsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIHZhciBmb3JtYXQgPSBmb3JtYXRzWydkZWZhdWx0J107XG4gICAgaWYgKHR5cGVvZiBvcHRzLmZvcm1hdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKCFoYXMuY2FsbChmb3JtYXRzLmZvcm1hdHRlcnMsIG9wdHMuZm9ybWF0KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBmb3JtYXQgb3B0aW9uIHByb3ZpZGVkLicpO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1hdCA9IG9wdHMuZm9ybWF0O1xuICAgIH1cbiAgICB2YXIgZm9ybWF0dGVyID0gZm9ybWF0cy5mb3JtYXR0ZXJzW2Zvcm1hdF07XG5cbiAgICB2YXIgZmlsdGVyID0gZGVmYXVsdHMuZmlsdGVyO1xuICAgIGlmICh0eXBlb2Ygb3B0cy5maWx0ZXIgPT09ICdmdW5jdGlvbicgfHwgaXNBcnJheShvcHRzLmZpbHRlcikpIHtcbiAgICAgICAgZmlsdGVyID0gb3B0cy5maWx0ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWRkUXVlcnlQcmVmaXg6IHR5cGVvZiBvcHRzLmFkZFF1ZXJ5UHJlZml4ID09PSAnYm9vbGVhbicgPyBvcHRzLmFkZFF1ZXJ5UHJlZml4IDogZGVmYXVsdHMuYWRkUXVlcnlQcmVmaXgsXG4gICAgICAgIGFsbG93RG90czogdHlwZW9mIG9wdHMuYWxsb3dEb3RzID09PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRzLmFsbG93RG90cyA6ICEhb3B0cy5hbGxvd0RvdHMsXG4gICAgICAgIGNoYXJzZXQ6IGNoYXJzZXQsXG4gICAgICAgIGNoYXJzZXRTZW50aW5lbDogdHlwZW9mIG9wdHMuY2hhcnNldFNlbnRpbmVsID09PSAnYm9vbGVhbicgPyBvcHRzLmNoYXJzZXRTZW50aW5lbCA6IGRlZmF1bHRzLmNoYXJzZXRTZW50aW5lbCxcbiAgICAgICAgZGVsaW1pdGVyOiB0eXBlb2Ygb3B0cy5kZWxpbWl0ZXIgPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdHMuZGVsaW1pdGVyIDogb3B0cy5kZWxpbWl0ZXIsXG4gICAgICAgIGVuY29kZTogdHlwZW9mIG9wdHMuZW5jb2RlID09PSAnYm9vbGVhbicgPyBvcHRzLmVuY29kZSA6IGRlZmF1bHRzLmVuY29kZSxcbiAgICAgICAgZW5jb2RlcjogdHlwZW9mIG9wdHMuZW5jb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdHMuZW5jb2RlciA6IGRlZmF1bHRzLmVuY29kZXIsXG4gICAgICAgIGVuY29kZVZhbHVlc09ubHk6IHR5cGVvZiBvcHRzLmVuY29kZVZhbHVlc09ubHkgPT09ICdib29sZWFuJyA/IG9wdHMuZW5jb2RlVmFsdWVzT25seSA6IGRlZmF1bHRzLmVuY29kZVZhbHVlc09ubHksXG4gICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIsXG4gICAgICAgIHNlcmlhbGl6ZURhdGU6IHR5cGVvZiBvcHRzLnNlcmlhbGl6ZURhdGUgPT09ICdmdW5jdGlvbicgPyBvcHRzLnNlcmlhbGl6ZURhdGUgOiBkZWZhdWx0cy5zZXJpYWxpemVEYXRlLFxuICAgICAgICBza2lwTnVsbHM6IHR5cGVvZiBvcHRzLnNraXBOdWxscyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5za2lwTnVsbHMgOiBkZWZhdWx0cy5za2lwTnVsbHMsXG4gICAgICAgIHNvcnQ6IHR5cGVvZiBvcHRzLnNvcnQgPT09ICdmdW5jdGlvbicgPyBvcHRzLnNvcnQgOiBudWxsLFxuICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IHR5cGVvZiBvcHRzLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmdcbiAgICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBvcHRzKSB7XG4gICAgdmFyIG9iaiA9IG9iamVjdDtcbiAgICB2YXIgb3B0aW9ucyA9IG5vcm1hbGl6ZVN0cmluZ2lmeU9wdGlvbnMob3B0cyk7XG5cbiAgICB2YXIgb2JqS2V5cztcbiAgICB2YXIgZmlsdGVyO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcbiAgICAgICAgb2JqID0gZmlsdGVyKCcnLCBvYmopO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShvcHRpb25zLmZpbHRlcikpIHtcbiAgICAgICAgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gICAgICAgIG9iaktleXMgPSBmaWx0ZXI7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHZhciBhcnJheUZvcm1hdDtcbiAgICBpZiAob3B0cyAmJiBvcHRzLmFycmF5Rm9ybWF0IGluIGFycmF5UHJlZml4R2VuZXJhdG9ycykge1xuICAgICAgICBhcnJheUZvcm1hdCA9IG9wdHMuYXJyYXlGb3JtYXQ7XG4gICAgfSBlbHNlIGlmIChvcHRzICYmICdpbmRpY2VzJyBpbiBvcHRzKSB7XG4gICAgICAgIGFycmF5Rm9ybWF0ID0gb3B0cy5pbmRpY2VzID8gJ2luZGljZXMnIDogJ3JlcGVhdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSAnaW5kaWNlcyc7XG4gICAgfVxuXG4gICAgdmFyIGdlbmVyYXRlQXJyYXlQcmVmaXggPSBhcnJheVByZWZpeEdlbmVyYXRvcnNbYXJyYXlGb3JtYXRdO1xuXG4gICAgaWYgKCFvYmpLZXlzKSB7XG4gICAgICAgIG9iaktleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICAgICAgb2JqS2V5cy5zb3J0KG9wdGlvbnMuc29ydCk7XG4gICAgfVxuXG4gICAgdmFyIHNpZGVDaGFubmVsID0gZ2V0U2lkZUNoYW5uZWwoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iaktleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGtleSA9IG9iaktleXNbaV07XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc2tpcE51bGxzICYmIG9ialtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBwdXNoVG9BcnJheShrZXlzLCBzdHJpbmdpZnkoXG4gICAgICAgICAgICBvYmpba2V5XSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyxcbiAgICAgICAgICAgIG9wdGlvbnMuc2tpcE51bGxzLFxuICAgICAgICAgICAgb3B0aW9ucy5lbmNvZGUgPyBvcHRpb25zLmVuY29kZXIgOiBudWxsLFxuICAgICAgICAgICAgb3B0aW9ucy5maWx0ZXIsXG4gICAgICAgICAgICBvcHRpb25zLnNvcnQsXG4gICAgICAgICAgICBvcHRpb25zLmFsbG93RG90cyxcbiAgICAgICAgICAgIG9wdGlvbnMuc2VyaWFsaXplRGF0ZSxcbiAgICAgICAgICAgIG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgICAgb3B0aW9ucy5mb3JtYXR0ZXIsXG4gICAgICAgICAgICBvcHRpb25zLmVuY29kZVZhbHVlc09ubHksXG4gICAgICAgICAgICBvcHRpb25zLmNoYXJzZXQsXG4gICAgICAgICAgICBzaWRlQ2hhbm5lbFxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICB2YXIgam9pbmVkID0ga2V5cy5qb2luKG9wdGlvbnMuZGVsaW1pdGVyKTtcbiAgICB2YXIgcHJlZml4ID0gb3B0aW9ucy5hZGRRdWVyeVByZWZpeCA9PT0gdHJ1ZSA/ICc/JyA6ICcnO1xuXG4gICAgaWYgKG9wdGlvbnMuY2hhcnNldFNlbnRpbmVsKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmNoYXJzZXQgPT09ICdpc28tODg1OS0xJykge1xuICAgICAgICAgICAgLy8gZW5jb2RlVVJJQ29tcG9uZW50KCcmIzEwMDAzOycpLCB0aGUgXCJudW1lcmljIGVudGl0eVwiIHJlcHJlc2VudGF0aW9uIG9mIGEgY2hlY2ttYXJrXG4gICAgICAgICAgICBwcmVmaXggKz0gJ3V0Zjg9JTI2JTIzMTAwMDMlM0ImJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVuY29kZVVSSUNvbXBvbmVudCgn4pyTJylcbiAgICAgICAgICAgIHByZWZpeCArPSAndXRmOD0lRTIlOUMlOTMmJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBqb2luZWQubGVuZ3RoID4gMCA/IHByZWZpeCArIGpvaW5lZCA6ICcnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxudmFyIGRlZmF1bHRzID0ge1xuICAgIGFsbG93RG90czogZmFsc2UsXG4gICAgYWxsb3dQcm90b3R5cGVzOiBmYWxzZSxcbiAgICBhbGxvd1NwYXJzZTogZmFsc2UsXG4gICAgYXJyYXlMaW1pdDogMjAsXG4gICAgY2hhcnNldDogJ3V0Zi04JyxcbiAgICBjaGFyc2V0U2VudGluZWw6IGZhbHNlLFxuICAgIGNvbW1hOiBmYWxzZSxcbiAgICBkZWNvZGVyOiB1dGlscy5kZWNvZGUsXG4gICAgZGVsaW1pdGVyOiAnJicsXG4gICAgZGVwdGg6IDUsXG4gICAgaWdub3JlUXVlcnlQcmVmaXg6IGZhbHNlLFxuICAgIGludGVycHJldE51bWVyaWNFbnRpdGllczogZmFsc2UsXG4gICAgcGFyYW1ldGVyTGltaXQ6IDEwMDAsXG4gICAgcGFyc2VBcnJheXM6IHRydWUsXG4gICAgcGxhaW5PYmplY3RzOiBmYWxzZSxcbiAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IGZhbHNlXG59O1xuXG52YXIgaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvJiMoXFxkKyk7L2csIGZ1bmN0aW9uICgkMCwgbnVtYmVyU3RyKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KG51bWJlclN0ciwgMTApKTtcbiAgICB9KTtcbn07XG5cbnZhciBwYXJzZUFycmF5VmFsdWUgPSBmdW5jdGlvbiAodmFsLCBvcHRpb25zKSB7XG4gICAgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiBvcHRpb25zLmNvbW1hICYmIHZhbC5pbmRleE9mKCcsJykgPiAtMSkge1xuICAgICAgICByZXR1cm4gdmFsLnNwbGl0KCcsJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbDtcbn07XG5cbi8vIFRoaXMgaXMgd2hhdCBicm93c2VycyB3aWxsIHN1Ym1pdCB3aGVuIHRoZSDinJMgY2hhcmFjdGVyIG9jY3VycyBpbiBhblxuLy8gYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIGJvZHkgYW5kIHRoZSBlbmNvZGluZyBvZiB0aGUgcGFnZSBjb250YWluaW5nXG4vLyB0aGUgZm9ybSBpcyBpc28tODg1OS0xLCBvciB3aGVuIHRoZSBzdWJtaXR0ZWQgZm9ybSBoYXMgYW4gYWNjZXB0LWNoYXJzZXRcbi8vIGF0dHJpYnV0ZSBvZiBpc28tODg1OS0xLiBQcmVzdW1hYmx5IGFsc28gd2l0aCBvdGhlciBjaGFyc2V0cyB0aGF0IGRvIG5vdCBjb250YWluXG4vLyB0aGUg4pyTIGNoYXJhY3Rlciwgc3VjaCBhcyB1cy1hc2NpaS5cbnZhciBpc29TZW50aW5lbCA9ICd1dGY4PSUyNiUyMzEwMDAzJTNCJzsgLy8gZW5jb2RlVVJJQ29tcG9uZW50KCcmIzEwMDAzOycpXG5cbi8vIFRoZXNlIGFyZSB0aGUgcGVyY2VudC1lbmNvZGVkIHV0Zi04IG9jdGV0cyByZXByZXNlbnRpbmcgYSBjaGVja21hcmssIGluZGljYXRpbmcgdGhhdCB0aGUgcmVxdWVzdCBhY3R1YWxseSBpcyB1dGYtOCBlbmNvZGVkLlxudmFyIGNoYXJzZXRTZW50aW5lbCA9ICd1dGY4PSVFMiU5QyU5Myc7IC8vIGVuY29kZVVSSUNvbXBvbmVudCgn4pyTJylcblxudmFyIHBhcnNlVmFsdWVzID0gZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZ1ZhbHVlcyhzdHIsIG9wdGlvbnMpIHtcbiAgICB2YXIgb2JqID0ge307XG4gICAgdmFyIGNsZWFuU3RyID0gb3B0aW9ucy5pZ25vcmVRdWVyeVByZWZpeCA/IHN0ci5yZXBsYWNlKC9eXFw/LywgJycpIDogc3RyO1xuICAgIHZhciBsaW1pdCA9IG9wdGlvbnMucGFyYW1ldGVyTGltaXQgPT09IEluZmluaXR5ID8gdW5kZWZpbmVkIDogb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdDtcbiAgICB2YXIgcGFydHMgPSBjbGVhblN0ci5zcGxpdChvcHRpb25zLmRlbGltaXRlciwgbGltaXQpO1xuICAgIHZhciBza2lwSW5kZXggPSAtMTsgLy8gS2VlcCB0cmFjayBvZiB3aGVyZSB0aGUgdXRmOCBzZW50aW5lbCB3YXMgZm91bmRcbiAgICB2YXIgaTtcblxuICAgIHZhciBjaGFyc2V0ID0gb3B0aW9ucy5jaGFyc2V0O1xuICAgIGlmIChvcHRpb25zLmNoYXJzZXRTZW50aW5lbCkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChwYXJ0c1tpXS5pbmRleE9mKCd1dGY4PScpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRzW2ldID09PSBjaGFyc2V0U2VudGluZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0c1tpXSA9PT0gaXNvU2VudGluZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICdpc28tODg1OS0xJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2tpcEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBpID0gcGFydHMubGVuZ3RoOyAvLyBUaGUgZXNsaW50IHNldHRpbmdzIGRvIG5vdCBhbGxvdyBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoaSA9PT0gc2tpcEluZGV4KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGFydCA9IHBhcnRzW2ldO1xuXG4gICAgICAgIHZhciBicmFja2V0RXF1YWxzUG9zID0gcGFydC5pbmRleE9mKCddPScpO1xuICAgICAgICB2YXIgcG9zID0gYnJhY2tldEVxdWFsc1BvcyA9PT0gLTEgPyBwYXJ0LmluZGV4T2YoJz0nKSA6IGJyYWNrZXRFcXVhbHNQb3MgKyAxO1xuXG4gICAgICAgIHZhciBrZXksIHZhbDtcbiAgICAgICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgICAgICAgIGtleSA9IG9wdGlvbnMuZGVjb2RlcihwYXJ0LCBkZWZhdWx0cy5kZWNvZGVyLCBjaGFyc2V0LCAna2V5Jyk7XG4gICAgICAgICAgICB2YWwgPSBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA/IG51bGwgOiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtleSA9IG9wdGlvbnMuZGVjb2RlcihwYXJ0LnNsaWNlKDAsIHBvcyksIGRlZmF1bHRzLmRlY29kZXIsIGNoYXJzZXQsICdrZXknKTtcbiAgICAgICAgICAgIHZhbCA9IHV0aWxzLm1heWJlTWFwKFxuICAgICAgICAgICAgICAgIHBhcnNlQXJyYXlWYWx1ZShwYXJ0LnNsaWNlKHBvcyArIDEpLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZW5jb2RlZFZhbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kZWNvZGVyKGVuY29kZWRWYWwsIGRlZmF1bHRzLmRlY29kZXIsIGNoYXJzZXQsICd2YWx1ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsICYmIG9wdGlvbnMuaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzICYmIGNoYXJzZXQgPT09ICdpc28tODg1OS0xJykge1xuICAgICAgICAgICAgdmFsID0gaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzKHZhbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFydC5pbmRleE9mKCdbXT0nKSA+IC0xKSB7XG4gICAgICAgICAgICB2YWwgPSBpc0FycmF5KHZhbCkgPyBbdmFsXSA6IHZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXMuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdXRpbHMuY29tYmluZShvYmpba2V5XSwgdmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBwYXJzZU9iamVjdCA9IGZ1bmN0aW9uIChjaGFpbiwgdmFsLCBvcHRpb25zLCB2YWx1ZXNQYXJzZWQpIHtcbiAgICB2YXIgbGVhZiA9IHZhbHVlc1BhcnNlZCA/IHZhbCA6IHBhcnNlQXJyYXlWYWx1ZSh2YWwsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgaSA9IGNoYWluLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBvYmo7XG4gICAgICAgIHZhciByb290ID0gY2hhaW5baV07XG5cbiAgICAgICAgaWYgKHJvb3QgPT09ICdbXScgJiYgb3B0aW9ucy5wYXJzZUFycmF5cykge1xuICAgICAgICAgICAgb2JqID0gW10uY29uY2F0KGxlYWYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqID0gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG4gICAgICAgICAgICB2YXIgY2xlYW5Sb290ID0gcm9vdC5jaGFyQXQoMCkgPT09ICdbJyAmJiByb290LmNoYXJBdChyb290Lmxlbmd0aCAtIDEpID09PSAnXScgPyByb290LnNsaWNlKDEsIC0xKSA6IHJvb3Q7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludChjbGVhblJvb3QsIDEwKTtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5wYXJzZUFycmF5cyAmJiBjbGVhblJvb3QgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgb2JqID0geyAwOiBsZWFmIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICFpc05hTihpbmRleClcbiAgICAgICAgICAgICAgICAmJiByb290ICE9PSBjbGVhblJvb3RcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcoaW5kZXgpID09PSBjbGVhblJvb3RcbiAgICAgICAgICAgICAgICAmJiBpbmRleCA+PSAwXG4gICAgICAgICAgICAgICAgJiYgKG9wdGlvbnMucGFyc2VBcnJheXMgJiYgaW5kZXggPD0gb3B0aW9ucy5hcnJheUxpbWl0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgb2JqID0gW107XG4gICAgICAgICAgICAgICAgb2JqW2luZGV4XSA9IGxlYWY7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNsZWFuUm9vdCAhPT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgICAgICAgICBvYmpbY2xlYW5Sb290XSA9IGxlYWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZWFmID0gb2JqO1xuICAgIH1cblxuICAgIHJldHVybiBsZWFmO1xufTtcblxudmFyIHBhcnNlS2V5cyA9IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmdLZXlzKGdpdmVuS2V5LCB2YWwsIG9wdGlvbnMsIHZhbHVlc1BhcnNlZCkge1xuICAgIGlmICghZ2l2ZW5LZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybSBkb3Qgbm90YXRpb24gdG8gYnJhY2tldCBub3RhdGlvblxuICAgIHZhciBrZXkgPSBvcHRpb25zLmFsbG93RG90cyA/IGdpdmVuS2V5LnJlcGxhY2UoL1xcLihbXi5bXSspL2csICdbJDFdJykgOiBnaXZlbktleTtcblxuICAgIC8vIFRoZSByZWdleCBjaHVua3NcblxuICAgIHZhciBicmFja2V0cyA9IC8oXFxbW15bXFxdXSpdKS87XG4gICAgdmFyIGNoaWxkID0gLyhcXFtbXltcXF1dKl0pL2c7XG5cbiAgICAvLyBHZXQgdGhlIHBhcmVudFxuXG4gICAgdmFyIHNlZ21lbnQgPSBvcHRpb25zLmRlcHRoID4gMCAmJiBicmFja2V0cy5leGVjKGtleSk7XG4gICAgdmFyIHBhcmVudCA9IHNlZ21lbnQgPyBrZXkuc2xpY2UoMCwgc2VnbWVudC5pbmRleCkgOiBrZXk7XG5cbiAgICAvLyBTdGFzaCB0aGUgcGFyZW50IGlmIGl0IGV4aXN0c1xuXG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIC8vIElmIHdlIGFyZW4ndCB1c2luZyBwbGFpbiBvYmplY3RzLCBvcHRpb25hbGx5IHByZWZpeCBrZXlzIHRoYXQgd291bGQgb3ZlcndyaXRlIG9iamVjdCBwcm90b3R5cGUgcHJvcGVydGllc1xuICAgICAgICBpZiAoIW9wdGlvbnMucGxhaW5PYmplY3RzICYmIGhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHBhcmVudCkpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBrZXlzLnB1c2gocGFyZW50KTtcbiAgICB9XG5cbiAgICAvLyBMb29wIHRocm91Z2ggY2hpbGRyZW4gYXBwZW5kaW5nIHRvIHRoZSBhcnJheSB1bnRpbCB3ZSBoaXQgZGVwdGhcblxuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAob3B0aW9ucy5kZXB0aCA+IDAgJiYgKHNlZ21lbnQgPSBjaGlsZC5leGVjKGtleSkpICE9PSBudWxsICYmIGkgPCBvcHRpb25zLmRlcHRoKSB7XG4gICAgICAgIGkgKz0gMTtcbiAgICAgICAgaWYgKCFvcHRpb25zLnBsYWluT2JqZWN0cyAmJiBoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBzZWdtZW50WzFdLnNsaWNlKDEsIC0xKSkpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5wdXNoKHNlZ21lbnRbMV0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlJ3MgYSByZW1haW5kZXIsIGp1c3QgYWRkIHdoYXRldmVyIGlzIGxlZnRcblxuICAgIGlmIChzZWdtZW50KSB7XG4gICAgICAgIGtleXMucHVzaCgnWycgKyBrZXkuc2xpY2Uoc2VnbWVudC5pbmRleCkgKyAnXScpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZU9iamVjdChrZXlzLCB2YWwsIG9wdGlvbnMsIHZhbHVlc1BhcnNlZCk7XG59O1xuXG52YXIgbm9ybWFsaXplUGFyc2VPcHRpb25zID0gZnVuY3Rpb24gbm9ybWFsaXplUGFyc2VPcHRpb25zKG9wdHMpIHtcbiAgICBpZiAoIW9wdHMpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgIH1cblxuICAgIGlmIChvcHRzLmRlY29kZXIgIT09IG51bGwgJiYgb3B0cy5kZWNvZGVyICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdHMuZGVjb2RlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdEZWNvZGVyIGhhcyB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0cy5jaGFyc2V0ICE9PSAndW5kZWZpbmVkJyAmJiBvcHRzLmNoYXJzZXQgIT09ICd1dGYtOCcgJiYgb3B0cy5jaGFyc2V0ICE9PSAnaXNvLTg4NTktMScpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNoYXJzZXQgb3B0aW9uIG11c3QgYmUgZWl0aGVyIHV0Zi04LCBpc28tODg1OS0xLCBvciB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgdmFyIGNoYXJzZXQgPSB0eXBlb2Ygb3B0cy5jaGFyc2V0ID09PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRzLmNoYXJzZXQgOiBvcHRzLmNoYXJzZXQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhbGxvd0RvdHM6IHR5cGVvZiBvcHRzLmFsbG93RG90cyA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZhdWx0cy5hbGxvd0RvdHMgOiAhIW9wdHMuYWxsb3dEb3RzLFxuICAgICAgICBhbGxvd1Byb3RvdHlwZXM6IHR5cGVvZiBvcHRzLmFsbG93UHJvdG90eXBlcyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5hbGxvd1Byb3RvdHlwZXMgOiBkZWZhdWx0cy5hbGxvd1Byb3RvdHlwZXMsXG4gICAgICAgIGFsbG93U3BhcnNlOiB0eXBlb2Ygb3B0cy5hbGxvd1NwYXJzZSA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5hbGxvd1NwYXJzZSA6IGRlZmF1bHRzLmFsbG93U3BhcnNlLFxuICAgICAgICBhcnJheUxpbWl0OiB0eXBlb2Ygb3B0cy5hcnJheUxpbWl0ID09PSAnbnVtYmVyJyA/IG9wdHMuYXJyYXlMaW1pdCA6IGRlZmF1bHRzLmFycmF5TGltaXQsXG4gICAgICAgIGNoYXJzZXQ6IGNoYXJzZXQsXG4gICAgICAgIGNoYXJzZXRTZW50aW5lbDogdHlwZW9mIG9wdHMuY2hhcnNldFNlbnRpbmVsID09PSAnYm9vbGVhbicgPyBvcHRzLmNoYXJzZXRTZW50aW5lbCA6IGRlZmF1bHRzLmNoYXJzZXRTZW50aW5lbCxcbiAgICAgICAgY29tbWE6IHR5cGVvZiBvcHRzLmNvbW1hID09PSAnYm9vbGVhbicgPyBvcHRzLmNvbW1hIDogZGVmYXVsdHMuY29tbWEsXG4gICAgICAgIGRlY29kZXI6IHR5cGVvZiBvcHRzLmRlY29kZXIgPT09ICdmdW5jdGlvbicgPyBvcHRzLmRlY29kZXIgOiBkZWZhdWx0cy5kZWNvZGVyLFxuICAgICAgICBkZWxpbWl0ZXI6IHR5cGVvZiBvcHRzLmRlbGltaXRlciA9PT0gJ3N0cmluZycgfHwgdXRpbHMuaXNSZWdFeHAob3B0cy5kZWxpbWl0ZXIpID8gb3B0cy5kZWxpbWl0ZXIgOiBkZWZhdWx0cy5kZWxpbWl0ZXIsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1pbXBsaWNpdC1jb2VyY2lvbiwgbm8tZXh0cmEtcGFyZW5zXG4gICAgICAgIGRlcHRoOiAodHlwZW9mIG9wdHMuZGVwdGggPT09ICdudW1iZXInIHx8IG9wdHMuZGVwdGggPT09IGZhbHNlKSA/ICtvcHRzLmRlcHRoIDogZGVmYXVsdHMuZGVwdGgsXG4gICAgICAgIGlnbm9yZVF1ZXJ5UHJlZml4OiBvcHRzLmlnbm9yZVF1ZXJ5UHJlZml4ID09PSB0cnVlLFxuICAgICAgICBpbnRlcnByZXROdW1lcmljRW50aXRpZXM6IHR5cGVvZiBvcHRzLmludGVycHJldE51bWVyaWNFbnRpdGllcyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5pbnRlcnByZXROdW1lcmljRW50aXRpZXMgOiBkZWZhdWx0cy5pbnRlcnByZXROdW1lcmljRW50aXRpZXMsXG4gICAgICAgIHBhcmFtZXRlckxpbWl0OiB0eXBlb2Ygb3B0cy5wYXJhbWV0ZXJMaW1pdCA9PT0gJ251bWJlcicgPyBvcHRzLnBhcmFtZXRlckxpbWl0IDogZGVmYXVsdHMucGFyYW1ldGVyTGltaXQsXG4gICAgICAgIHBhcnNlQXJyYXlzOiBvcHRzLnBhcnNlQXJyYXlzICE9PSBmYWxzZSxcbiAgICAgICAgcGxhaW5PYmplY3RzOiB0eXBlb2Ygb3B0cy5wbGFpbk9iamVjdHMgPT09ICdib29sZWFuJyA/IG9wdHMucGxhaW5PYmplY3RzIDogZGVmYXVsdHMucGxhaW5PYmplY3RzLFxuICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IHR5cGVvZiBvcHRzLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0cy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmdcbiAgICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RyLCBvcHRzKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBub3JtYWxpemVQYXJzZU9wdGlvbnMob3B0cyk7XG5cbiAgICBpZiAoc3RyID09PSAnJyB8fCBzdHIgPT09IG51bGwgfHwgdHlwZW9mIHN0ciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuICAgIH1cblxuICAgIHZhciB0ZW1wT2JqID0gdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgPyBwYXJzZVZhbHVlcyhzdHIsIG9wdGlvbnMpIDogc3RyO1xuICAgIHZhciBvYmogPSBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUga2V5cyBhbmQgc2V0dXAgdGhlIG5ldyBvYmplY3RcblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModGVtcE9iaik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgICB2YXIgbmV3T2JqID0gcGFyc2VLZXlzKGtleSwgdGVtcE9ialtrZXldLCBvcHRpb25zLCB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyk7XG4gICAgICAgIG9iaiA9IHV0aWxzLm1lcmdlKG9iaiwgbmV3T2JqLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5hbGxvd1NwYXJzZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHJldHVybiB1dGlscy5jb21wYWN0KG9iaik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9zdHJpbmdpZnknKTtcbnZhciBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbnZhciBmb3JtYXRzID0gcmVxdWlyZSgnLi9mb3JtYXRzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGZvcm1hdHM6IGZvcm1hdHMsXG4gICAgcGFyc2U6IHBhcnNlLFxuICAgIHN0cmluZ2lmeTogc3RyaW5naWZ5XG59O1xuIiwiLyoqXG4gKiAgYmFzZTY0LnRzXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBCU0QgMy1DbGF1c2UgTGljZW5zZS5cbiAqICAgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqXG4gKiAgUmVmZXJlbmNlczpcbiAqICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0XG4gKlxuICogQGF1dGhvciBEYW4gS29nYWkgKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaSlcbiAqL1xuY29uc3QgdmVyc2lvbiA9ICczLjcuMic7XG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBsb3dlcmNhc2UgYHZlcnNpb25gLlxuICovXG5jb25zdCBWRVJTSU9OID0gdmVyc2lvbjtcbmNvbnN0IF9oYXNhdG9iID0gdHlwZW9mIGF0b2IgPT09ICdmdW5jdGlvbic7XG5jb25zdCBfaGFzYnRvYSA9IHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nO1xuY29uc3QgX2hhc0J1ZmZlciA9IHR5cGVvZiBCdWZmZXIgPT09ICdmdW5jdGlvbic7XG5jb25zdCBfVEQgPSB0eXBlb2YgVGV4dERlY29kZXIgPT09ICdmdW5jdGlvbicgPyBuZXcgVGV4dERlY29kZXIoKSA6IHVuZGVmaW5lZDtcbmNvbnN0IF9URSA9IHR5cGVvZiBUZXh0RW5jb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBUZXh0RW5jb2RlcigpIDogdW5kZWZpbmVkO1xuY29uc3QgYjY0Y2ggPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0nO1xuY29uc3QgYjY0Y2hzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYjY0Y2gpO1xuY29uc3QgYjY0dGFiID0gKChhKSA9PiB7XG4gICAgbGV0IHRhYiA9IHt9O1xuICAgIGEuZm9yRWFjaCgoYywgaSkgPT4gdGFiW2NdID0gaSk7XG4gICAgcmV0dXJuIHRhYjtcbn0pKGI2NGNocyk7XG5jb25zdCBiNjRyZSA9IC9eKD86W0EtWmEtelxcZCtcXC9dezR9KSo/KD86W0EtWmEtelxcZCtcXC9dezJ9KD86PT0pP3xbQS1aYS16XFxkK1xcL117M309Pyk/JC87XG5jb25zdCBfZnJvbUNDID0gU3RyaW5nLmZyb21DaGFyQ29kZS5iaW5kKFN0cmluZyk7XG5jb25zdCBfVThBZnJvbSA9IHR5cGVvZiBVaW50OEFycmF5LmZyb20gPT09ICdmdW5jdGlvbidcbiAgICA/IFVpbnQ4QXJyYXkuZnJvbS5iaW5kKFVpbnQ4QXJyYXkpXG4gICAgOiAoaXQsIGZuID0gKHgpID0+IHgpID0+IG5ldyBVaW50OEFycmF5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGl0LCAwKS5tYXAoZm4pKTtcbmNvbnN0IF9ta1VyaVNhZmUgPSAoc3JjKSA9PiBzcmNcbiAgICAucmVwbGFjZSgvPS9nLCAnJykucmVwbGFjZSgvWytcXC9dL2csIChtMCkgPT4gbTAgPT0gJysnID8gJy0nIDogJ18nKTtcbmNvbnN0IF90aWR5QjY0ID0gKHMpID0+IHMucmVwbGFjZSgvW15BLVphLXowLTlcXCtcXC9dL2csICcnKTtcbi8qKlxuICogcG9seWZpbGwgdmVyc2lvbiBvZiBgYnRvYWBcbiAqL1xuY29uc3QgYnRvYVBvbHlmaWxsID0gKGJpbikgPT4ge1xuICAgIC8vIGNvbnNvbGUubG9nKCdwb2x5ZmlsbGVkJyk7XG4gICAgbGV0IHUzMiwgYzAsIGMxLCBjMiwgYXNjID0gJyc7XG4gICAgY29uc3QgcGFkID0gYmluLmxlbmd0aCAlIDM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaW4ubGVuZ3RoOykge1xuICAgICAgICBpZiAoKGMwID0gYmluLmNoYXJDb2RlQXQoaSsrKSkgPiAyNTUgfHxcbiAgICAgICAgICAgIChjMSA9IGJpbi5jaGFyQ29kZUF0KGkrKykpID4gMjU1IHx8XG4gICAgICAgICAgICAoYzIgPSBiaW4uY2hhckNvZGVBdChpKyspKSA+IDI1NSlcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgY2hhcmFjdGVyIGZvdW5kJyk7XG4gICAgICAgIHUzMiA9IChjMCA8PCAxNikgfCAoYzEgPDwgOCkgfCBjMjtcbiAgICAgICAgYXNjICs9IGI2NGNoc1t1MzIgPj4gMTggJiA2M11cbiAgICAgICAgICAgICsgYjY0Y2hzW3UzMiA+PiAxMiAmIDYzXVxuICAgICAgICAgICAgKyBiNjRjaHNbdTMyID4+IDYgJiA2M11cbiAgICAgICAgICAgICsgYjY0Y2hzW3UzMiAmIDYzXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhZCA/IGFzYy5zbGljZSgwLCBwYWQgLSAzKSArIFwiPT09XCIuc3Vic3RyaW5nKHBhZCkgOiBhc2M7XG59O1xuLyoqXG4gKiBkb2VzIHdoYXQgYHdpbmRvdy5idG9hYCBvZiB3ZWIgYnJvd3NlcnMgZG8uXG4gKiBAcGFyYW0ge1N0cmluZ30gYmluIGJpbmFyeSBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIHN0cmluZ1xuICovXG5jb25zdCBfYnRvYSA9IF9oYXNidG9hID8gKGJpbikgPT4gYnRvYShiaW4pXG4gICAgOiBfaGFzQnVmZmVyID8gKGJpbikgPT4gQnVmZmVyLmZyb20oYmluLCAnYmluYXJ5JykudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIDogYnRvYVBvbHlmaWxsO1xuY29uc3QgX2Zyb21VaW50OEFycmF5ID0gX2hhc0J1ZmZlclxuICAgID8gKHU4YSkgPT4gQnVmZmVyLmZyb20odThhKS50b1N0cmluZygnYmFzZTY0JylcbiAgICA6ICh1OGEpID0+IHtcbiAgICAgICAgLy8gY2YuIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEyNzEwMDAxL2hvdy10by1jb252ZXJ0LXVpbnQ4LWFycmF5LXRvLWJhc2U2NC1lbmNvZGVkLXN0cmluZy8xMjcxMzMyNiMxMjcxMzMyNlxuICAgICAgICBjb25zdCBtYXhhcmdzID0gMHgxMDAwO1xuICAgICAgICBsZXQgc3RycyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHU4YS5sZW5ndGg7IGkgPCBsOyBpICs9IG1heGFyZ3MpIHtcbiAgICAgICAgICAgIHN0cnMucHVzaChfZnJvbUNDLmFwcGx5KG51bGwsIHU4YS5zdWJhcnJheShpLCBpICsgbWF4YXJncykpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX2J0b2Eoc3Rycy5qb2luKCcnKSk7XG4gICAgfTtcbi8qKlxuICogY29udmVydHMgYSBVaW50OEFycmF5IHRvIGEgQmFzZTY0IHN0cmluZy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VybHNhZmVdIFVSTC1hbmQtZmlsZW5hbWUtc2FmZSBhIGxhIFJGQzQ2NDggwqc1XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgc3RyaW5nXG4gKi9cbmNvbnN0IGZyb21VaW50OEFycmF5ID0gKHU4YSwgdXJsc2FmZSA9IGZhbHNlKSA9PiB1cmxzYWZlID8gX21rVXJpU2FmZShfZnJvbVVpbnQ4QXJyYXkodThhKSkgOiBfZnJvbVVpbnQ4QXJyYXkodThhKTtcbi8vIFRoaXMgdHJpY2sgaXMgZm91bmQgYnJva2VuIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5rb2dhaS9qcy1iYXNlNjQvaXNzdWVzLzEzMFxuLy8gY29uc3QgdXRvYiA9IChzcmM6IHN0cmluZykgPT4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHNyYykpO1xuLy8gcmV2ZXJ0aW5nIGdvb2Qgb2xkIGZhdGlvbmVkIHJlZ2V4cFxuY29uc3QgY2JfdXRvYiA9IChjKSA9PiB7XG4gICAgaWYgKGMubGVuZ3RoIDwgMikge1xuICAgICAgICB2YXIgY2MgPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIHJldHVybiBjYyA8IDB4ODAgPyBjXG4gICAgICAgICAgICA6IGNjIDwgMHg4MDAgPyAoX2Zyb21DQygweGMwIHwgKGNjID4+PiA2KSlcbiAgICAgICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8IChjYyAmIDB4M2YpKSlcbiAgICAgICAgICAgICAgICA6IChfZnJvbUNDKDB4ZTAgfCAoKGNjID4+PiAxMikgJiAweDBmKSlcbiAgICAgICAgICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoKGNjID4+PiA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8IChjYyAmIDB4M2YpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgY2MgPSAweDEwMDAwXG4gICAgICAgICAgICArIChjLmNoYXJDb2RlQXQoMCkgLSAweEQ4MDApICogMHg0MDBcbiAgICAgICAgICAgICsgKGMuY2hhckNvZGVBdCgxKSAtIDB4REMwMCk7XG4gICAgICAgIHJldHVybiAoX2Zyb21DQygweGYwIHwgKChjYyA+Pj4gMTgpICYgMHgwNykpXG4gICAgICAgICAgICArIF9mcm9tQ0MoMHg4MCB8ICgoY2MgPj4+IDEyKSAmIDB4M2YpKVxuICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoKGNjID4+PiA2KSAmIDB4M2YpKVxuICAgICAgICAgICAgKyBfZnJvbUNDKDB4ODAgfCAoY2MgJiAweDNmKSkpO1xuICAgIH1cbn07XG5jb25zdCByZV91dG9iID0gL1tcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRkZdfFteXFx4MDAtXFx4N0ZdL2c7XG4vKipcbiAqIEBkZXByZWNhdGVkIHNob3VsZCBoYXZlIGJlZW4gaW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjIFVURi04IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gVVRGLTE2IHN0cmluZ1xuICovXG5jb25zdCB1dG9iID0gKHUpID0+IHUucmVwbGFjZShyZV91dG9iLCBjYl91dG9iKTtcbi8vXG5jb25zdCBfZW5jb2RlID0gX2hhc0J1ZmZlclxuICAgID8gKHMpID0+IEJ1ZmZlci5mcm9tKHMsICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgOiBfVEVcbiAgICAgICAgPyAocykgPT4gX2Zyb21VaW50OEFycmF5KF9URS5lbmNvZGUocykpXG4gICAgICAgIDogKHMpID0+IF9idG9hKHV0b2IocykpO1xuLyoqXG4gKiBjb252ZXJ0cyBhIFVURi04LWVuY29kZWQgc3RyaW5nIHRvIGEgQmFzZTY0IHN0cmluZy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VybHNhZmVdIGlmIGB0cnVlYCBtYWtlIHRoZSByZXN1bHQgVVJMLXNhZmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBzdHJpbmdcbiAqL1xuY29uc3QgZW5jb2RlID0gKHNyYywgdXJsc2FmZSA9IGZhbHNlKSA9PiB1cmxzYWZlXG4gICAgPyBfbWtVcmlTYWZlKF9lbmNvZGUoc3JjKSlcbiAgICA6IF9lbmNvZGUoc3JjKTtcbi8qKlxuICogY29udmVydHMgYSBVVEYtOC1lbmNvZGVkIHN0cmluZyB0byBVUkwtc2FmZSBCYXNlNjQgUkZDNDY0OCDCpzUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgc3RyaW5nXG4gKi9cbmNvbnN0IGVuY29kZVVSSSA9IChzcmMpID0+IGVuY29kZShzcmMsIHRydWUpO1xuLy8gVGhpcyB0cmljayBpcyBmb3VuZCBicm9rZW4gaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWJhc2U2NC9pc3N1ZXMvMTMwXG4vLyBjb25zdCBidG91ID0gKHNyYzogc3RyaW5nKSA9PiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHNyYykpO1xuLy8gcmV2ZXJ0aW5nIGdvb2Qgb2xkIGZhdGlvbmVkIHJlZ2V4cFxuY29uc3QgcmVfYnRvdSA9IC9bXFx4QzAtXFx4REZdW1xceDgwLVxceEJGXXxbXFx4RTAtXFx4RUZdW1xceDgwLVxceEJGXXsyfXxbXFx4RjAtXFx4RjddW1xceDgwLVxceEJGXXszfS9nO1xuY29uc3QgY2JfYnRvdSA9IChjY2NjKSA9PiB7XG4gICAgc3dpdGNoIChjY2NjLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICB2YXIgY3AgPSAoKDB4MDcgJiBjY2NjLmNoYXJDb2RlQXQoMCkpIDw8IDE4KVxuICAgICAgICAgICAgICAgIHwgKCgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDEpKSA8PCAxMilcbiAgICAgICAgICAgICAgICB8ICgoMHgzZiAmIGNjY2MuY2hhckNvZGVBdCgyKSkgPDwgNilcbiAgICAgICAgICAgICAgICB8ICgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDMpKSwgb2Zmc2V0ID0gY3AgLSAweDEwMDAwO1xuICAgICAgICAgICAgcmV0dXJuIChfZnJvbUNDKChvZmZzZXQgPj4+IDEwKSArIDB4RDgwMClcbiAgICAgICAgICAgICAgICArIF9mcm9tQ0MoKG9mZnNldCAmIDB4M0ZGKSArIDB4REMwMCkpO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gX2Zyb21DQygoKDB4MGYgJiBjY2NjLmNoYXJDb2RlQXQoMCkpIDw8IDEyKVxuICAgICAgICAgICAgICAgIHwgKCgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDEpKSA8PCA2KVxuICAgICAgICAgICAgICAgIHwgKDB4M2YgJiBjY2NjLmNoYXJDb2RlQXQoMikpKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBfZnJvbUNDKCgoMHgxZiAmIGNjY2MuY2hhckNvZGVBdCgwKSkgPDwgNilcbiAgICAgICAgICAgICAgICB8ICgweDNmICYgY2NjYy5jaGFyQ29kZUF0KDEpKSk7XG4gICAgfVxufTtcbi8qKlxuICogQGRlcHJlY2F0ZWQgc2hvdWxkIGhhdmUgYmVlbiBpbnRlcm5hbCB1c2Ugb25seS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzcmMgVVRGLTE2IHN0cmluZ1xuICogQHJldHVybnMge3N0cmluZ30gVVRGLTggc3RyaW5nXG4gKi9cbmNvbnN0IGJ0b3UgPSAoYikgPT4gYi5yZXBsYWNlKHJlX2J0b3UsIGNiX2J0b3UpO1xuLyoqXG4gKiBwb2x5ZmlsbCB2ZXJzaW9uIG9mIGBhdG9iYFxuICovXG5jb25zdCBhdG9iUG9seWZpbGwgPSAoYXNjKSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coJ3BvbHlmaWxsZWQnKTtcbiAgICBhc2MgPSBhc2MucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgaWYgKCFiNjRyZS50ZXN0KGFzYykpXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21hbGZvcm1lZCBiYXNlNjQuJyk7XG4gICAgYXNjICs9ICc9PScuc2xpY2UoMiAtIChhc2MubGVuZ3RoICYgMykpO1xuICAgIGxldCB1MjQsIGJpbiA9ICcnLCByMSwgcjI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhc2MubGVuZ3RoOykge1xuICAgICAgICB1MjQgPSBiNjR0YWJbYXNjLmNoYXJBdChpKyspXSA8PCAxOFxuICAgICAgICAgICAgfCBiNjR0YWJbYXNjLmNoYXJBdChpKyspXSA8PCAxMlxuICAgICAgICAgICAgfCAocjEgPSBiNjR0YWJbYXNjLmNoYXJBdChpKyspXSkgPDwgNlxuICAgICAgICAgICAgfCAocjIgPSBiNjR0YWJbYXNjLmNoYXJBdChpKyspXSk7XG4gICAgICAgIGJpbiArPSByMSA9PT0gNjQgPyBfZnJvbUNDKHUyNCA+PiAxNiAmIDI1NSlcbiAgICAgICAgICAgIDogcjIgPT09IDY0ID8gX2Zyb21DQyh1MjQgPj4gMTYgJiAyNTUsIHUyNCA+PiA4ICYgMjU1KVxuICAgICAgICAgICAgICAgIDogX2Zyb21DQyh1MjQgPj4gMTYgJiAyNTUsIHUyNCA+PiA4ICYgMjU1LCB1MjQgJiAyNTUpO1xuICAgIH1cbiAgICByZXR1cm4gYmluO1xufTtcbi8qKlxuICogZG9lcyB3aGF0IGB3aW5kb3cuYXRvYmAgb2Ygd2ViIGJyb3dzZXJzIGRvLlxuICogQHBhcmFtIHtTdHJpbmd9IGFzYyBCYXNlNjQtZW5jb2RlZCBzdHJpbmdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGJpbmFyeSBzdHJpbmdcbiAqL1xuY29uc3QgX2F0b2IgPSBfaGFzYXRvYiA/IChhc2MpID0+IGF0b2IoX3RpZHlCNjQoYXNjKSlcbiAgICA6IF9oYXNCdWZmZXIgPyAoYXNjKSA9PiBCdWZmZXIuZnJvbShhc2MsICdiYXNlNjQnKS50b1N0cmluZygnYmluYXJ5JylcbiAgICAgICAgOiBhdG9iUG9seWZpbGw7XG4vL1xuY29uc3QgX3RvVWludDhBcnJheSA9IF9oYXNCdWZmZXJcbiAgICA/IChhKSA9PiBfVThBZnJvbShCdWZmZXIuZnJvbShhLCAnYmFzZTY0JykpXG4gICAgOiAoYSkgPT4gX1U4QWZyb20oX2F0b2IoYSksIGMgPT4gYy5jaGFyQ29kZUF0KDApKTtcbi8qKlxuICogY29udmVydHMgYSBCYXNlNjQgc3RyaW5nIHRvIGEgVWludDhBcnJheS5cbiAqL1xuY29uc3QgdG9VaW50OEFycmF5ID0gKGEpID0+IF90b1VpbnQ4QXJyYXkoX3VuVVJJKGEpKTtcbi8vXG5jb25zdCBfZGVjb2RlID0gX2hhc0J1ZmZlclxuICAgID8gKGEpID0+IEJ1ZmZlci5mcm9tKGEsICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpXG4gICAgOiBfVERcbiAgICAgICAgPyAoYSkgPT4gX1RELmRlY29kZShfdG9VaW50OEFycmF5KGEpKVxuICAgICAgICA6IChhKSA9PiBidG91KF9hdG9iKGEpKTtcbmNvbnN0IF91blVSSSA9IChhKSA9PiBfdGlkeUI2NChhLnJlcGxhY2UoL1stX10vZywgKG0wKSA9PiBtMCA9PSAnLScgPyAnKycgOiAnLycpKTtcbi8qKlxuICogY29udmVydHMgYSBCYXNlNjQgc3RyaW5nIHRvIGEgVVRGLTggc3RyaW5nLlxuICogQHBhcmFtIHtTdHJpbmd9IHNyYyBCYXNlNjQgc3RyaW5nLiAgQm90aCBub3JtYWwgYW5kIFVSTC1zYWZlIGFyZSBzdXBwb3J0ZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFVURi04IHN0cmluZ1xuICovXG5jb25zdCBkZWNvZGUgPSAoc3JjKSA9PiBfZGVjb2RlKF91blVSSShzcmMpKTtcbi8qKlxuICogY2hlY2sgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIEJhc2U2NCBzdHJpbmdcbiAqIEBwYXJhbSB7U3RyaW5nfSBzcmMgYSB2YWx1ZSB0byBjaGVja1xuICAqL1xuY29uc3QgaXNWYWxpZCA9IChzcmMpID0+IHtcbiAgICBpZiAodHlwZW9mIHNyYyAhPT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBzID0gc3JjLnJlcGxhY2UoL1xccysvZywgJycpLnJlcGxhY2UoLz17MCwyfSQvLCAnJyk7XG4gICAgcmV0dXJuICEvW15cXHMwLTlhLXpBLVpcXCsvXS8udGVzdChzKSB8fCAhL1teXFxzMC05YS16QS1aXFwtX10vLnRlc3Qocyk7XG59O1xuLy9cbmNvbnN0IF9ub0VudW0gPSAodikgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB2LCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH07XG59O1xuLyoqXG4gKiBleHRlbmQgU3RyaW5nLnByb3RvdHlwZSB3aXRoIHJlbGV2YW50IG1ldGhvZHNcbiAqL1xuY29uc3QgZXh0ZW5kU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IF9hZGQgPSAobmFtZSwgYm9keSkgPT4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsIG5hbWUsIF9ub0VudW0oYm9keSkpO1xuICAgIF9hZGQoJ2Zyb21CYXNlNjQnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBkZWNvZGUodGhpcyk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0JywgZnVuY3Rpb24gKHVybHNhZmUpIHsgcmV0dXJuIGVuY29kZSh0aGlzLCB1cmxzYWZlKTsgfSk7XG4gICAgX2FkZCgndG9CYXNlNjRVUkknLCBmdW5jdGlvbiAoKSB7IHJldHVybiBlbmNvZGUodGhpcywgdHJ1ZSk7IH0pO1xuICAgIF9hZGQoJ3RvQmFzZTY0VVJMJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gZW5jb2RlKHRoaXMsIHRydWUpOyB9KTtcbiAgICBfYWRkKCd0b1VpbnQ4QXJyYXknLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0b1VpbnQ4QXJyYXkodGhpcyk7IH0pO1xufTtcbi8qKlxuICogZXh0ZW5kIFVpbnQ4QXJyYXkucHJvdG90eXBlIHdpdGggcmVsZXZhbnQgbWV0aG9kc1xuICovXG5jb25zdCBleHRlbmRVaW50OEFycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IF9hZGQgPSAobmFtZSwgYm9keSkgPT4gT2JqZWN0LmRlZmluZVByb3BlcnR5KFVpbnQ4QXJyYXkucHJvdG90eXBlLCBuYW1lLCBfbm9FbnVtKGJvZHkpKTtcbiAgICBfYWRkKCd0b0Jhc2U2NCcsIGZ1bmN0aW9uICh1cmxzYWZlKSB7IHJldHVybiBmcm9tVWludDhBcnJheSh0aGlzLCB1cmxzYWZlKTsgfSk7XG4gICAgX2FkZCgndG9CYXNlNjRVUkknLCBmdW5jdGlvbiAoKSB7IHJldHVybiBmcm9tVWludDhBcnJheSh0aGlzLCB0cnVlKTsgfSk7XG4gICAgX2FkZCgndG9CYXNlNjRVUkwnLCBmdW5jdGlvbiAoKSB7IHJldHVybiBmcm9tVWludDhBcnJheSh0aGlzLCB0cnVlKTsgfSk7XG59O1xuLyoqXG4gKiBleHRlbmQgQnVpbHRpbiBwcm90b3R5cGVzIHdpdGggcmVsZXZhbnQgbWV0aG9kc1xuICovXG5jb25zdCBleHRlbmRCdWlsdGlucyA9ICgpID0+IHtcbiAgICBleHRlbmRTdHJpbmcoKTtcbiAgICBleHRlbmRVaW50OEFycmF5KCk7XG59O1xuY29uc3QgZ0Jhc2U2NCA9IHtcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICAgIFZFUlNJT046IFZFUlNJT04sXG4gICAgYXRvYjogX2F0b2IsXG4gICAgYXRvYlBvbHlmaWxsOiBhdG9iUG9seWZpbGwsXG4gICAgYnRvYTogX2J0b2EsXG4gICAgYnRvYVBvbHlmaWxsOiBidG9hUG9seWZpbGwsXG4gICAgZnJvbUJhc2U2NDogZGVjb2RlLFxuICAgIHRvQmFzZTY0OiBlbmNvZGUsXG4gICAgZW5jb2RlOiBlbmNvZGUsXG4gICAgZW5jb2RlVVJJOiBlbmNvZGVVUkksXG4gICAgZW5jb2RlVVJMOiBlbmNvZGVVUkksXG4gICAgdXRvYjogdXRvYixcbiAgICBidG91OiBidG91LFxuICAgIGRlY29kZTogZGVjb2RlLFxuICAgIGlzVmFsaWQ6IGlzVmFsaWQsXG4gICAgZnJvbVVpbnQ4QXJyYXk6IGZyb21VaW50OEFycmF5LFxuICAgIHRvVWludDhBcnJheTogdG9VaW50OEFycmF5LFxuICAgIGV4dGVuZFN0cmluZzogZXh0ZW5kU3RyaW5nLFxuICAgIGV4dGVuZFVpbnQ4QXJyYXk6IGV4dGVuZFVpbnQ4QXJyYXksXG4gICAgZXh0ZW5kQnVpbHRpbnM6IGV4dGVuZEJ1aWx0aW5zLFxufTtcbi8vIG1ha2VjanM6Q1VUIC8vXG5leHBvcnQgeyB2ZXJzaW9uIH07XG5leHBvcnQgeyBWRVJTSU9OIH07XG5leHBvcnQgeyBfYXRvYiBhcyBhdG9iIH07XG5leHBvcnQgeyBhdG9iUG9seWZpbGwgfTtcbmV4cG9ydCB7IF9idG9hIGFzIGJ0b2EgfTtcbmV4cG9ydCB7IGJ0b2FQb2x5ZmlsbCB9O1xuZXhwb3J0IHsgZGVjb2RlIGFzIGZyb21CYXNlNjQgfTtcbmV4cG9ydCB7IGVuY29kZSBhcyB0b0Jhc2U2NCB9O1xuZXhwb3J0IHsgdXRvYiB9O1xuZXhwb3J0IHsgZW5jb2RlIH07XG5leHBvcnQgeyBlbmNvZGVVUkkgfTtcbmV4cG9ydCB7IGVuY29kZVVSSSBhcyBlbmNvZGVVUkwgfTtcbmV4cG9ydCB7IGJ0b3UgfTtcbmV4cG9ydCB7IGRlY29kZSB9O1xuZXhwb3J0IHsgaXNWYWxpZCB9O1xuZXhwb3J0IHsgZnJvbVVpbnQ4QXJyYXkgfTtcbmV4cG9ydCB7IHRvVWludDhBcnJheSB9O1xuZXhwb3J0IHsgZXh0ZW5kU3RyaW5nIH07XG5leHBvcnQgeyBleHRlbmRVaW50OEFycmF5IH07XG5leHBvcnQgeyBleHRlbmRCdWlsdGlucyB9O1xuLy8gYW5kIGZpbmFsbHksXG5leHBvcnQgeyBnQmFzZTY0IGFzIEJhc2U2NCB9O1xuIiwiaW1wb3J0IEZvcm1EYXRhIGZyb20gXCJmb3JtLWRhdGFcIjtcbmltcG9ydCBxcyBmcm9tIFwicXNcIjtcbmltcG9ydCB7IEJhc2U2NCB9IGZyb20gXCJqcy1iYXNlNjRcIjtcblxuaW1wb3J0IHtcbiAgUmVxdWVzdENvbmZpZ0J1aWxkZXIsXG4gIFJlcXVlc3RDb25maWcsXG4gIEh0dHBNZXRob2QsXG4gIFBhcmFtcyxcbiAgUHJveHlDb25maWcsXG59IGZyb20gXCIuL2h0dHAvSHR0cENsaWVudEludGVyZmFjZVwiO1xuaW1wb3J0IHsgQmFzaWNBdXRoLCBEaXNjcmltaW5hdGVkQXV0aCB9IGZyb20gXCIuL3R5cGVzL2F1dGhcIjtcbmltcG9ydCB7IHBsYXRmb3JtRGVwcyB9IGZyb20gXCIuL3BsYXRmb3JtL1wiO1xuXG50eXBlIERhdGEgPSBQYXJhbXMgfCBGb3JtRGF0YTtcblxudHlwZSBLaW50b25lQXV0aEhlYWRlciA9XG4gIHwge1xuICAgICAgXCJYLUN5Ym96dS1BdXRob3JpemF0aW9uXCI6IHN0cmluZztcbiAgICAgIEF1dGhvcml6YXRpb24/OiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIFwiWC1DeWJvenUtQVBJLVRva2VuXCI6IHN0cmluZztcbiAgICAgIEF1dGhvcml6YXRpb24/OiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiOiBcIlhNTEh0dHBSZXF1ZXN0XCI7XG4gICAgICBBdXRob3JpemF0aW9uPzogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICBBdXRob3JpemF0aW9uOiBzdHJpbmc7XG4gICAgfTtcblxuY29uc3QgVEhSRVNIT0xEX0FWT0lEX1JFUVVFU1RfVVJMX1RPT19MQVJHRSA9IDQwOTY7XG5cbmV4cG9ydCBjbGFzcyBLaW50b25lUmVxdWVzdENvbmZpZ0J1aWxkZXIgaW1wbGVtZW50cyBSZXF1ZXN0Q29uZmlnQnVpbGRlciB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuICBwcml2YXRlIGhlYWRlcnM6IEtpbnRvbmVBdXRoSGVhZGVyO1xuICBwcml2YXRlIGF1dGg6IERpc2NyaW1pbmF0ZWRBdXRoO1xuICBwcml2YXRlIGNsaWVudENlcnRBdXRoPzpcbiAgICB8IHtcbiAgICAgICAgcGZ4OiBCdWZmZXI7XG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBmeEZpbGVQYXRoOiBzdHJpbmc7XG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICB9O1xuICBwcml2YXRlIHByb3h5PzogUHJveHlDb25maWc7XG4gIHByaXZhdGUgcmVxdWVzdFRva2VuOiBzdHJpbmcgfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBiYXNlVXJsLFxuICAgIGF1dGgsXG4gICAgYmFzaWNBdXRoLFxuICAgIGNsaWVudENlcnRBdXRoLFxuICAgIHByb3h5LFxuICAgIHVzZXJBZ2VudCxcbiAgfToge1xuICAgIGJhc2VVcmw6IHN0cmluZztcbiAgICBhdXRoOiBEaXNjcmltaW5hdGVkQXV0aDtcbiAgICBiYXNpY0F1dGg/OiBCYXNpY0F1dGg7XG4gICAgY2xpZW50Q2VydEF1dGg/OlxuICAgICAgfCB7XG4gICAgICAgICAgcGZ4OiBCdWZmZXI7XG4gICAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgcGZ4RmlsZVBhdGg6IHN0cmluZztcbiAgICAgICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgICB9O1xuICAgIHByb3h5PzogUHJveHlDb25maWc7XG4gICAgdXNlckFnZW50Pzogc3RyaW5nO1xuICB9KSB7XG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmF1dGggPSBhdXRoO1xuICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuYnVpbGRIZWFkZXJzKHsgYmFzaWNBdXRoLCB1c2VyQWdlbnQgfSk7XG4gICAgdGhpcy5jbGllbnRDZXJ0QXV0aCA9IGNsaWVudENlcnRBdXRoO1xuICAgIHRoaXMucHJveHkgPSBwcm94eTtcbiAgICB0aGlzLnJlcXVlc3RUb2tlbiA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYnVpbGQoXG4gICAgbWV0aG9kOiBIdHRwTWV0aG9kLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBwYXJhbXM6IERhdGEsXG4gICAgb3B0aW9ucz86IHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfVxuICApIHtcbiAgICBjb25zdCByZXF1ZXN0Q29uZmlnOiBSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgbWV0aG9kLFxuICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxuICAgICAgdXJsOiBgJHt0aGlzLmJhc2VVcmx9JHtwYXRofWAsXG4gICAgICAuLi4ob3B0aW9ucyA/IG9wdGlvbnMgOiB7fSksXG4gICAgICAuLi5wbGF0Zm9ybURlcHMuYnVpbGRQbGF0Zm9ybURlcGVuZGVudENvbmZpZyh7XG4gICAgICAgIGNsaWVudENlcnRBdXRoOiB0aGlzLmNsaWVudENlcnRBdXRoLFxuICAgICAgfSksXG4gICAgICBwcm94eTogdGhpcy5wcm94eSxcbiAgICB9O1xuXG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgXCJnZXRcIjoge1xuICAgICAgICBjb25zdCByZXF1ZXN0VXJsID0gdGhpcy5idWlsZFJlcXVlc3RVcmwocGF0aCwgcGFyYW1zKTtcbiAgICAgICAgaWYgKHJlcXVlc3RVcmwubGVuZ3RoID4gVEhSRVNIT0xEX0FWT0lEX1JFUVVFU1RfVVJMX1RPT19MQVJHRSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxuICAgICAgICAgICAgbWV0aG9kOiBcInBvc3RcIiBhcyBjb25zdCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgLi4udGhpcy5oZWFkZXJzLCBcIlgtSFRUUC1NZXRob2QtT3ZlcnJpZGVcIjogXCJHRVRcIiB9LFxuICAgICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5idWlsZERhdGEocGFyYW1zKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcbiAgICAgICAgICB1cmw6IHJlcXVlc3RVcmwsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFwicG9zdFwiOiB7XG4gICAgICAgIGlmIChwYXJhbXMgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gYXdhaXQgdGhpcy5idWlsZERhdGEocGFyYW1zKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcbiAgICAgICAgICAgIGhlYWRlcnM6XG4gICAgICAgICAgICAgIC8vIE5PVEU6IGZvcm1EYXRhLmdldEhlYWRlcnMgZG9lcyBub3QgZXhpc3QgaW4gYSBicm93c2VyIGVudmlyb25tZW50LlxuICAgICAgICAgICAgICB0eXBlb2YgZm9ybURhdGEuZ2V0SGVhZGVycyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICAgICAgPyB7IC4uLnRoaXMuaGVhZGVycywgLi4uZm9ybURhdGEuZ2V0SGVhZGVycygpIH1cbiAgICAgICAgICAgICAgICA6IHRoaXMuaGVhZGVycyxcbiAgICAgICAgICAgIGRhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxuICAgICAgICAgIGRhdGE6IGF3YWl0IHRoaXMuYnVpbGREYXRhKHBhcmFtcyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFwicHV0XCI6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxuICAgICAgICAgIGRhdGE6IGF3YWl0IHRoaXMuYnVpbGREYXRhKHBhcmFtcyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFwiZGVsZXRlXCI6IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdFVybCA9IHRoaXMuYnVpbGRSZXF1ZXN0VXJsKFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgYXdhaXQgdGhpcy5idWlsZERhdGEocGFyYW1zKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXG4gICAgICAgICAgdXJsOiByZXF1ZXN0VXJsLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bWV0aG9kfSBtZXRob2QgaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSZXF1ZXN0VXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiBEYXRhKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5iYXNlVXJsfSR7cGF0aH0/JHtxcy5zdHJpbmdpZnkocGFyYW1zKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZERhdGE8VCBleHRlbmRzIERhdGE+KHBhcmFtczogVCk6IFByb21pc2U8VD4ge1xuICAgIGlmICh0aGlzLmF1dGgudHlwZSA9PT0gXCJzZXNzaW9uXCIpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RUb2tlbiA9IGF3YWl0IHRoaXMuZ2V0UmVxdWVzdFRva2VuKCk7XG4gICAgICBpZiAocGFyYW1zIGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICAgICAgcGFyYW1zLmFwcGVuZChcIl9fUkVRVUVTVF9UT0tFTl9fXCIsIHJlcXVlc3RUb2tlbik7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX1JFUVVFU1RfVE9LRU5fXzogcmVxdWVzdFRva2VuLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEhlYWRlcnMocGFyYW1zOiB7XG4gICAgYmFzaWNBdXRoPzogQmFzaWNBdXRoO1xuICAgIHVzZXJBZ2VudD86IHN0cmluZztcbiAgfSk6IEtpbnRvbmVBdXRoSGVhZGVyIHtcbiAgICBjb25zdCB7IGJhc2ljQXV0aCwgdXNlckFnZW50IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgYmFzaWNBdXRoSGVhZGVycyA9IGJhc2ljQXV0aFxuICAgICAgPyB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJhc2ljICR7QmFzZTY0LmVuY29kZShcbiAgICAgICAgICAgIGAke2Jhc2ljQXV0aC51c2VybmFtZX06JHtiYXNpY0F1dGgucGFzc3dvcmR9YFxuICAgICAgICAgICl9YCxcbiAgICAgICAgfVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBwbGF0Zm9ybURlcHNIZWFkZXJzID0gcGxhdGZvcm1EZXBzLmJ1aWxkSGVhZGVycyh7IHVzZXJBZ2VudCB9KTtcblxuICAgIGNvbnN0IGNvbW1vbkhlYWRlcnMgPSB7IC4uLnBsYXRmb3JtRGVwc0hlYWRlcnMsIC4uLmJhc2ljQXV0aEhlYWRlcnMgfTtcblxuICAgIHN3aXRjaCAodGhpcy5hdXRoLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJwYXNzd29yZFwiOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29tbW9uSGVhZGVycyxcbiAgICAgICAgICBcIlgtQ3lib3p1LUF1dGhvcml6YXRpb25cIjogQmFzZTY0LmVuY29kZShcbiAgICAgICAgICAgIGAke3RoaXMuYXV0aC51c2VybmFtZX06JHt0aGlzLmF1dGgucGFzc3dvcmR9YFxuICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFwiYXBpVG9rZW5cIjoge1xuICAgICAgICBjb25zdCBhcGlUb2tlbiA9IHRoaXMuYXV0aC5hcGlUb2tlbjtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXBpVG9rZW4pKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY29tbW9uSGVhZGVycywgXCJYLUN5Ym96dS1BUEktVG9rZW5cIjogYXBpVG9rZW4uam9pbihcIixcIikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5jb21tb25IZWFkZXJzLCBcIlgtQ3lib3p1LUFQSS1Ub2tlblwiOiBhcGlUb2tlbiB9O1xuICAgICAgfVxuICAgICAgY2FzZSBcIm9BdXRoVG9rZW5cIjoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbW1vbkhlYWRlcnMsXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYXV0aC5vQXV0aFRva2VufWAsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7IC4uLmNvbW1vbkhlYWRlcnMsIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiOiBcIlhNTEh0dHBSZXF1ZXN0XCIgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFJlcXVlc3RUb2tlbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLnJlcXVlc3RUb2tlbiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5yZXF1ZXN0VG9rZW4gPSBhd2FpdCBwbGF0Zm9ybURlcHMuZ2V0UmVxdWVzdFRva2VuKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlcXVlc3RUb2tlbjtcbiAgfVxufVxuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG5cbnZhciBEYXRlUHJvdG90eXBlID0gRGF0ZS5wcm90b3R5cGU7XG52YXIgSU5WQUxJRF9EQVRFID0gJ0ludmFsaWQgRGF0ZSc7XG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciB1biREYXRlVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhEYXRlUHJvdG90eXBlW1RPX1NUUklOR10pO1xudmFyIGdldFRpbWUgPSB1bmN1cnJ5VGhpcyhEYXRlUHJvdG90eXBlLmdldFRpbWUpO1xuXG4vLyBgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1kYXRlLnByb3RvdHlwZS50b3N0cmluZ1xuaWYgKFN0cmluZyhuZXcgRGF0ZShOYU4pKSAhPSBJTlZBTElEX0RBVEUpIHtcbiAgcmVkZWZpbmUoRGF0ZVByb3RvdHlwZSwgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lKHRoaXMpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHVuJERhdGVUb1N0cmluZyh0aGlzKSA6IElOVkFMSURfREFURTtcbiAgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLlBST1BFUjtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyICR0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHJlZ0V4cEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xuXG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xudmFyIG4kVG9TdHJpbmcgPSBSZWdFeHBQcm90b3R5cGVbVE9fU1RSSU5HXTtcbnZhciBnZXRGbGFncyA9IHVuY3VycnlUaGlzKHJlZ0V4cEZsYWdzKTtcblxudmFyIE5PVF9HRU5FUklDID0gZmFpbHMoZnVuY3Rpb24gKCkgeyByZXR1cm4gbiRUb1N0cmluZy5jYWxsKHsgc291cmNlOiAnYScsIGZsYWdzOiAnYicgfSkgIT0gJy9hL2InOyB9KTtcbi8vIEZGNDQtIFJlZ0V4cCN0b1N0cmluZyBoYXMgYSB3cm9uZyBuYW1lXG52YXIgSU5DT1JSRUNUX05BTUUgPSBQUk9QRVJfRlVOQ1RJT05fTkFNRSAmJiBuJFRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbmlmIChOT1RfR0VORVJJQyB8fCBJTkNPUlJFQ1RfTkFNRSkge1xuICByZWRlZmluZShSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHAgPSAkdG9TdHJpbmcoUi5zb3VyY2UpO1xuICAgIHZhciByZiA9IFIuZmxhZ3M7XG4gICAgdmFyIGYgPSAkdG9TdHJpbmcocmYgPT09IHVuZGVmaW5lZCAmJiBpc1Byb3RvdHlwZU9mKFJlZ0V4cFByb3RvdHlwZSwgUikgJiYgISgnZmxhZ3MnIGluIFJlZ0V4cFByb3RvdHlwZSkgPyBnZXRGbGFncyhSKSA6IHJmKTtcbiAgICByZXR1cm4gJy8nICsgcCArICcvJyArIGY7XG4gIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwiZXhwb3J0IGNsYXNzIEtpbnRvbmVBYm9ydFNlYXJjaEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcblxuICAgIHRoaXMubmFtZSA9IFwiS2ludG9uZUFib3J0U2VhcmNoRXJyb3JcIjtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbiAgICAvLyBTZXQgdGhlIHByb3RvdHlwZSBleHBsaWNpdGx5LlxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBLaW50b25lQWJvcnRTZWFyY2hFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIi4uL2h0dHAvSHR0cENsaWVudEludGVyZmFjZVwiO1xuXG50eXBlIFNpbmdsZUVycm9yUmVzcG9uc2VEYXRhID0ge1xuICBpZDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3JzPzogYW55O1xufTtcblxudHlwZSBCdWxrUmVxdWVzdEVycm9yUmVzcG9uc2VEYXRhID0ge1xuICByZXN1bHRzOiBBcnJheTxTaW5nbGVFcnJvclJlc3BvbnNlRGF0YSB8IHt9Pjtcbn07XG5cbnR5cGUgS2ludG9uZUVycm9yUmVzcG9uc2VEYXRhID1cbiAgfCBTaW5nbGVFcnJvclJlc3BvbnNlRGF0YVxuICB8IEJ1bGtSZXF1ZXN0RXJyb3JSZXNwb25zZURhdGE7XG5cbmV4cG9ydCB0eXBlIEtpbnRvbmVFcnJvclJlc3BvbnNlID0gRXJyb3JSZXNwb25zZTxLaW50b25lRXJyb3JSZXNwb25zZURhdGE+O1xuXG5leHBvcnQgY2xhc3MgS2ludG9uZVJlc3RBUElFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgaWQ6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcbiAgYnVsa1JlcXVlc3RJbmRleD86IG51bWJlcjtcbiAgaGVhZGVyczogYW55O1xuICBlcnJvcnM/OiBhbnk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZmluZEVycm9yUmVzcG9uc2VEYXRhV2l0aEluZGV4KFxuICAgIHJlc3VsdHM6IEJ1bGtSZXF1ZXN0RXJyb3JSZXNwb25zZURhdGFbXCJyZXN1bHRzXCJdXG4gICkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc3VsdHNbaV0pLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0c1tpXSBhcyBTaW5nbGVFcnJvclJlc3BvbnNlRGF0YTtcbiAgICAgICAgcmV0dXJuIHsgZGF0YSwgYnVsa1JlcXVlc3RJbmRleDogaSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJNaXNzaW5nIHJlc3BvbnNlIGRhdGEgaW4gYHJlc3VsdHNgLiBUaGlzIGVycm9yIGlzIGxpa2VseSBjYXVzZWQgYnkgYSBidWcgaW4gS2ludG9uZSBSRVNUIEFQSSBDbGllbnQuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGJ1aWxkRXJyb3JSZXNwb25zZURhdGVXaXRoSW5kZXgoZXJyb3I6IEtpbnRvbmVFcnJvclJlc3BvbnNlKToge1xuICAgIGRhdGE6IFNpbmdsZUVycm9yUmVzcG9uc2VEYXRhO1xuICAgIGJ1bGtSZXF1ZXN0SW5kZXg/OiBudW1iZXI7XG4gIH0ge1xuICAgIGlmIChcInJlc3VsdHNcIiBpbiBlcnJvci5kYXRhKSB7XG4gICAgICByZXR1cm4gS2ludG9uZVJlc3RBUElFcnJvci5maW5kRXJyb3JSZXNwb25zZURhdGFXaXRoSW5kZXgoXG4gICAgICAgIGVycm9yLmRhdGEucmVzdWx0c1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGF0YTogZXJyb3IuZGF0YSB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXJyb3I6IEtpbnRvbmVFcnJvclJlc3BvbnNlKSB7XG4gICAgY29uc3QgeyBkYXRhLCBidWxrUmVxdWVzdEluZGV4IH0gPVxuICAgICAgS2ludG9uZVJlc3RBUElFcnJvci5idWlsZEVycm9yUmVzcG9uc2VEYXRlV2l0aEluZGV4KGVycm9yKTtcblxuICAgIHN1cGVyKGRhdGEubWVzc2FnZSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIktpbnRvbmVSZXN0QVBJRXJyb3JcIjtcbiAgICB0aGlzLmlkID0gZGF0YS5pZDtcbiAgICB0aGlzLmNvZGUgPSBkYXRhLmNvZGU7XG4gICAgdGhpcy5lcnJvcnMgPSBkYXRhLmVycm9ycztcbiAgICB0aGlzLnN0YXR1cyA9IGVycm9yLnN0YXR1cztcbiAgICB0aGlzLmJ1bGtSZXF1ZXN0SW5kZXggPSBidWxrUmVxdWVzdEluZGV4O1xuICAgIHRoaXMuaGVhZGVycyA9IGVycm9yLmhlYWRlcnM7XG4gICAgdGhpcy5tZXNzYWdlID0gYFske2Vycm9yLnN0YXR1c31dIFske3RoaXMuY29kZX1dICR7dGhpcy5tZXNzYWdlfSAoJHt0aGlzLmlkfSlgO1xuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRXJyb3IjQ3VzdG9tX0Vycm9yX1R5cGVzXG4gICAgLy8gTWFpbnRhaW5zIHByb3BlciBzdGFjayB0cmFjZSBmb3Igd2hlcmUgb3VyIGVycm9yIHdhcyB0aHJvd24gKG9ubHkgYXZhaWxhYmxlIG9uIFY4KVxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgS2ludG9uZVJlc3RBUElFcnJvcik7XG4gICAgfVxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L3dpa2kvQnJlYWtpbmctQ2hhbmdlcyNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmtcbiAgICAvLyBTZXQgdGhlIHByb3RvdHlwZSBleHBsaWNpdGx5LlxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBLaW50b25lUmVzdEFQSUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEVycm9yUmVzcG9uc2UsXG4gIEh0dHBDbGllbnRFcnJvcixcbiAgUmVzcG9uc2UsXG4gIFJlc3BvbnNlSGFuZGxlcixcbn0gZnJvbSBcIi4vaHR0cC9IdHRwQ2xpZW50SW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBLaW50b25lQWJvcnRTZWFyY2hFcnJvciB9IGZyb20gXCIuL2Vycm9yL0tpbnRvbmVBYm9ydFNlYXJjaEVycm9yXCI7XG5pbXBvcnQge1xuICBLaW50b25lUmVzdEFQSUVycm9yLFxuICBLaW50b25lRXJyb3JSZXNwb25zZSxcbn0gZnJvbSBcIi4vZXJyb3IvS2ludG9uZVJlc3RBUElFcnJvclwiO1xuXG5leHBvcnQgY2xhc3MgS2ludG9uZVJlc3BvbnNlSGFuZGxlciBpbXBsZW1lbnRzIFJlc3BvbnNlSGFuZGxlciB7XG4gIHByaXZhdGUgZW5hYmxlQWJvcnRTZWFyY2hFcnJvcjogYm9vbGVhbjtcbiAgY29uc3RydWN0b3IoeyBlbmFibGVBYm9ydFNlYXJjaEVycm9yIH06IHsgZW5hYmxlQWJvcnRTZWFyY2hFcnJvcjogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5lbmFibGVBYm9ydFNlYXJjaEVycm9yID0gZW5hYmxlQWJvcnRTZWFyY2hFcnJvcjtcbiAgfVxuICBoYW5kbGU8VD4ocmVzcG9uc2U6IFByb21pc2U8UmVzcG9uc2U8VD4+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRoZW4oXG4gICAgICAocmVzKSA9PiB0aGlzLmhhbmRsZVN1Y2Nlc3NSZXNwb25zZTxUPihyZXMpLFxuICAgICAgKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yUmVzcG9uc2UoZXJyb3IpXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGhhbmRsZVN1Y2Nlc3NSZXNwb25zZTxUPihyZXNwb25zZTogUmVzcG9uc2U8VD4pOiBUIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmVuYWJsZUFib3J0U2VhcmNoRXJyb3IgJiZcbiAgICAgIC9GaWx0ZXIgYWJvcnRlZCBiZWNhdXNlIG9mIHRvbyBtYW55IHNlYXJjaCByZXN1bHRzLy50ZXN0KFxuICAgICAgICByZXNwb25zZS5oZWFkZXJzW1wieC1jeWJvenUtd2FybmluZ1wiXVxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEtpbnRvbmVBYm9ydFNlYXJjaEVycm9yKHJlc3BvbnNlLmhlYWRlcnNbXCJ4LWN5Ym96dS13YXJuaW5nXCJdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gIH1cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvclJlc3BvbnNlKFxuICAgIGVycm9yOiBIdHRwQ2xpZW50RXJyb3I8RXJyb3JSZXNwb25zZTxzdHJpbmc+IHwgS2ludG9uZUVycm9yUmVzcG9uc2U+XG4gICk6IG5ldmVyIHtcbiAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAvLyBGSVhNRTogZmluZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMgZXJyb3JcbiAgICAgIGlmICgvbWFjIHZlcmlmeSBmYWlsdXJlLy50ZXN0KGVycm9yLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgY2xpZW50Q2VydEF1dGggc2V0dGluZ1wiKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IucmVzcG9uc2U7XG5cbiAgICBjb25zdCB7IGRhdGEsIC4uLnJlc3QgfSA9IGVycm9yUmVzcG9uc2U7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cmVzdC5zdGF0dXN9OiAke3Jlc3Quc3RhdHVzVGV4dH1gKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEtpbnRvbmVSZXN0QVBJRXJyb3IoeyBkYXRhLCAuLi5yZXN0IH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBCdWxrUmVxdWVzdENsaWVudCwgRW5kcG9pbnROYW1lIH0gZnJvbSBcIi4vY2xpZW50L0J1bGtSZXF1ZXN0Q2xpZW50XCI7XG5pbXBvcnQgeyBBcHBDbGllbnQgfSBmcm9tIFwiLi9jbGllbnQvQXBwQ2xpZW50XCI7XG5pbXBvcnQgeyBSZWNvcmRDbGllbnQgfSBmcm9tIFwiLi9jbGllbnQvUmVjb3JkQ2xpZW50XCI7XG5pbXBvcnQgeyBGaWxlQ2xpZW50IH0gZnJvbSBcIi4vY2xpZW50L0ZpbGVDbGllbnRcIjtcbmltcG9ydCB7IERlZmF1bHRIdHRwQ2xpZW50IH0gZnJvbSBcIi4vaHR0cC9cIjtcbmltcG9ydCB7IFByb3h5Q29uZmlnIH0gZnJvbSBcIi4vaHR0cC9IdHRwQ2xpZW50SW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBCYXNpY0F1dGgsIERpc2NyaW1pbmF0ZWRBdXRoIH0gZnJvbSBcIi4vdHlwZXMvYXV0aFwiO1xuaW1wb3J0IHsgS2ludG9uZVJlcXVlc3RDb25maWdCdWlsZGVyIH0gZnJvbSBcIi4vS2ludG9uZVJlcXVlc3RDb25maWdCdWlsZGVyXCI7XG5pbXBvcnQgeyBLaW50b25lUmVzcG9uc2VIYW5kbGVyIH0gZnJvbSBcIi4vS2ludG9uZVJlc3BvbnNlSGFuZGxlclwiO1xuaW1wb3J0IHsgcGxhdGZvcm1EZXBzIH0gZnJvbSBcIi4vcGxhdGZvcm0vaW5kZXhcIjtcbmltcG9ydCB7IFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvciB9IGZyb20gXCIuL3BsYXRmb3JtL1Vuc3VwcG9ydGVkUGxhdGZvcm1FcnJvclwiO1xuXG50eXBlIE9taXRUeXBlUHJvcGVydHlGcm9tVW5pb248VD4gPSBUIGV4dGVuZHMgdW5rbm93biA/IE9taXQ8VCwgXCJ0eXBlXCI+IDogbmV2ZXI7XG50eXBlIEF1dGggPSBPbWl0VHlwZVByb3BlcnR5RnJvbVVuaW9uPERpc2NyaW1pbmF0ZWRBdXRoPjtcblxudHlwZSBPcHRpb25zID0ge1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICBhdXRoPzogQXV0aDtcbiAgZ3Vlc3RTcGFjZUlkPzogbnVtYmVyIHwgc3RyaW5nO1xuICBiYXNpY0F1dGg/OiBCYXNpY0F1dGg7XG4gIGNsaWVudENlcnRBdXRoPzpcbiAgICB8IHtcbiAgICAgICAgcGZ4OiBCdWZmZXI7XG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBmeEZpbGVQYXRoOiBzdHJpbmc7XG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICB9O1xuICBwcm94eT86IFByb3h5Q29uZmlnO1xuICBmZWF0dXJlRmxhZ3M/OiB7XG4gICAgZW5hYmxlQWJvcnRTZWFyY2hFcnJvcjogYm9vbGVhbjtcbiAgfTtcbiAgdXNlckFnZW50Pzogc3RyaW5nO1xufTtcblxuY29uc3QgYnVpbGREaXNjcmltaW5hdGVkQXV0aCA9IChhdXRoOiBBdXRoKTogRGlzY3JpbWluYXRlZEF1dGggPT4ge1xuICBpZiAoXCJ1c2VybmFtZVwiIGluIGF1dGgpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcInBhc3N3b3JkXCIsIC4uLmF1dGggfTtcbiAgfVxuICBpZiAoXCJhcGlUb2tlblwiIGluIGF1dGgpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImFwaVRva2VuXCIsIC4uLmF1dGggfTtcbiAgfVxuICBpZiAoXCJvQXV0aFRva2VuXCIgaW4gYXV0aCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwib0F1dGhUb2tlblwiLCAuLi5hdXRoIH07XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gcGxhdGZvcm1EZXBzLmdldERlZmF1bHRBdXRoKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFVuc3VwcG9ydGVkUGxhdGZvcm1FcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgc2Vzc2lvbiBhdXRoZW50aWNhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGluICR7ZS5wbGF0Zm9ybX0gZW52aXJvbm1lbnQuYFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIEtpbnRvbmVSZXN0QVBJQ2xpZW50IHtcbiAgcmVjb3JkOiBSZWNvcmRDbGllbnQ7XG4gIGFwcDogQXBwQ2xpZW50O1xuICBmaWxlOiBGaWxlQ2xpZW50O1xuICBwcml2YXRlIGJ1bGtSZXF1ZXN0XzogQnVsa1JlcXVlc3RDbGllbnQ7XG4gIHByaXZhdGUgYmFzZVVybD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zID0ge30pIHtcbiAgICB2YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICB0aGlzLmJhc2VVcmwgPSBwbGF0Zm9ybURlcHMuYnVpbGRCYXNlVXJsKG9wdGlvbnMuYmFzZVVybCk7XG5cbiAgICBjb25zdCBhdXRoID0gYnVpbGREaXNjcmltaW5hdGVkQXV0aChvcHRpb25zLmF1dGggPz8ge30pO1xuICAgIGNvbnN0IHJlcXVlc3RDb25maWdCdWlsZGVyID0gbmV3IEtpbnRvbmVSZXF1ZXN0Q29uZmlnQnVpbGRlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsLFxuICAgICAgYXV0aCxcbiAgICB9KTtcbiAgICBjb25zdCByZXNwb25zZUhhbmRsZXIgPSBuZXcgS2ludG9uZVJlc3BvbnNlSGFuZGxlcih7XG4gICAgICBlbmFibGVBYm9ydFNlYXJjaEVycm9yOlxuICAgICAgICBvcHRpb25zLmZlYXR1cmVGbGFncz8uZW5hYmxlQWJvcnRTZWFyY2hFcnJvciA/PyBmYWxzZSxcbiAgICB9KTtcbiAgICBjb25zdCBodHRwQ2xpZW50ID0gbmV3IERlZmF1bHRIdHRwQ2xpZW50KHtcbiAgICAgIHJlc3BvbnNlSGFuZGxlcixcbiAgICAgIHJlcXVlc3RDb25maWdCdWlsZGVyLFxuICAgIH0pO1xuICAgIGNvbnN0IHsgZ3Vlc3RTcGFjZUlkIH0gPSBvcHRpb25zO1xuXG4gICAgdGhpcy5idWxrUmVxdWVzdF8gPSBuZXcgQnVsa1JlcXVlc3RDbGllbnQoaHR0cENsaWVudCwgZ3Vlc3RTcGFjZUlkKTtcbiAgICB0aGlzLnJlY29yZCA9IG5ldyBSZWNvcmRDbGllbnQoaHR0cENsaWVudCwgdGhpcy5idWxrUmVxdWVzdF8sIGd1ZXN0U3BhY2VJZCk7XG4gICAgdGhpcy5hcHAgPSBuZXcgQXBwQ2xpZW50KGh0dHBDbGllbnQsIGd1ZXN0U3BhY2VJZCk7XG4gICAgdGhpcy5maWxlID0gbmV3IEZpbGVDbGllbnQoaHR0cENsaWVudCwgZ3Vlc3RTcGFjZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHBsYXRmb3JtRGVwcy5nZXRWZXJzaW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QmFzZVVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlVXJsO1xuICB9XG5cbiAgcHVibGljIGJ1bGtSZXF1ZXN0KHBhcmFtczoge1xuICAgIHJlcXVlc3RzOiBBcnJheTxcbiAgICAgIHwge1xuICAgICAgICAgIG1ldGhvZDogc3RyaW5nO1xuICAgICAgICAgIGFwaTogc3RyaW5nO1xuICAgICAgICAgIHBheWxvYWQ6IG9iamVjdDtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgICAgICAgZW5kcG9pbnROYW1lOiBFbmRwb2ludE5hbWU7XG4gICAgICAgICAgcGF5bG9hZDogb2JqZWN0O1xuICAgICAgICB9XG4gICAgPjtcbiAgfSk6IFByb21pc2U8eyByZXN1bHRzOiBBcnJheTx7IFtLOiBzdHJpbmddOiBhbnkgfT4gfT4ge1xuICAgIHJldHVybiB0aGlzLmJ1bGtSZXF1ZXN0Xy5zZW5kKHBhcmFtcyk7XG4gIH1cbn1cblxuY29uc3QgdmFsaWRhdGVPcHRpb25zID0gKG9wdGlvbnM6IE9wdGlvbnMpID0+IHtcbiAgdmFsaWRhdGVHdWVzdFNwYWNlSWQob3B0aW9ucy5ndWVzdFNwYWNlSWQpO1xufTtcblxuY29uc3QgdmFsaWRhdGVHdWVzdFNwYWNlSWQgPSAoZ3Vlc3RTcGFjZUlkOiBPcHRpb25zW1wiZ3Vlc3RTcGFjZUlkXCJdKSA9PiB7XG4gIGlmIChndWVzdFNwYWNlSWQgPT09IFwiXCIgfHwgZ3Vlc3RTcGFjZUlkID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGd1ZXN0U3BhY2VJZDogZ290IFske2d1ZXN0U3BhY2VJZH1dYCk7XG4gIH1cbn07XG4iLCJpbXBvcnQgeyBpbmplY3RQbGF0Zm9ybURlcHMgfSBmcm9tIFwiLi9wbGF0Zm9ybS9cIjtcbmltcG9ydCAqIGFzIGJyb3dzZXJEZXBzIGZyb20gXCIuL3BsYXRmb3JtL2Jyb3dzZXJcIjtcblxuaW5qZWN0UGxhdGZvcm1EZXBzKGJyb3dzZXJEZXBzKTtcblxuZXhwb3J0IHsgS2ludG9uZVJlc3RBUElDbGllbnQgfSBmcm9tIFwiLi9LaW50b25lUmVzdEFQSUNsaWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JcIjtcbiJdLCJuYW1lcyI6WyJwbGF0Zm9ybURlcHMiLCJyZWFkRmlsZUZyb21QYXRoIiwiRXJyb3IiLCJnZXRSZXF1ZXN0VG9rZW4iLCJnZXREZWZhdWx0QXV0aCIsImJ1aWxkUGxhdGZvcm1EZXBlbmRlbnRDb25maWciLCJidWlsZEhlYWRlcnMiLCJidWlsZEZvcm1EYXRhVmFsdWUiLCJidWlsZEJhc2VVcmwiLCJnZXRWZXJzaW9uIiwiaW5qZWN0UGxhdGZvcm1EZXBzIiwiZGVwcyIsImNoZWNrIiwiaXQiLCJNYXRoIiwiZ2xvYmFsIiwiZ2xvYmFsVGhpcyIsIndpbmRvdyIsInNlbGYiLCJGdW5jdGlvbiIsImZhaWxzIiwiZXhlYyIsImVycm9yIiwicmVxdWlyZSQkMCIsImRlc2NyaXB0b3JzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJmdW5jdGlvbkJpbmROYXRpdmUiLCJ0ZXN0IiwiYmluZCIsImhhc093blByb3BlcnR5IiwiTkFUSVZFX0JJTkQiLCJjYWxsIiwicHJvdG90eXBlIiwiZnVuY3Rpb25DYWxsIiwiYXBwbHkiLCJhcmd1bWVudHMiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIk5BU0hPUk5fQlVHIiwib2JqZWN0UHJvcGVydHlJc0VudW1lcmFibGUiLCJmIiwiViIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwiYml0bWFwIiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkZ1bmN0aW9uUHJvdG90eXBlIiwidW5jdXJyeVRoaXMiLCJmdW5jdGlvblVuY3VycnlUaGlzIiwiZm4iLCJ0b1N0cmluZyIsInN0cmluZ1NsaWNlIiwic2xpY2UiLCJjbGFzc29mUmF3IiwicmVxdWlyZSQkMSIsInJlcXVpcmUkJDIiLCJjbGFzc29mIiwicmVxdWlyZSQkMyIsInNwbGl0IiwiaW5kZXhlZE9iamVjdCIsIlR5cGVFcnJvciIsInJlcXVpcmVPYmplY3RDb2VyY2libGUiLCJ1bmRlZmluZWQiLCJJbmRleGVkT2JqZWN0IiwidG9JbmRleGVkT2JqZWN0IiwiaXNDYWxsYWJsZSIsImFyZ3VtZW50IiwiaXNPYmplY3QiLCJhRnVuY3Rpb24iLCJnZXRCdWlsdEluIiwibmFtZXNwYWNlIiwibWV0aG9kIiwibGVuZ3RoIiwib2JqZWN0SXNQcm90b3R5cGVPZiIsImlzUHJvdG90eXBlT2YiLCJlbmdpbmVVc2VyQWdlbnQiLCJ1c2VyQWdlbnQiLCJwcm9jZXNzIiwiRGVubyIsInZlcnNpb25zIiwidmVyc2lvbiIsInY4IiwibWF0Y2giLCJlbmdpbmVWOFZlcnNpb24iLCJWOF9WRVJTSU9OIiwibmF0aXZlU3ltYm9sIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9sIiwiU3ltYm9sIiwiU3RyaW5nIiwic2hhbSIsIk5BVElWRV9TWU1CT0wiLCJ1c2VTeW1ib2xBc1VpZCIsIml0ZXJhdG9yIiwiVVNFX1NZTUJPTF9BU19VSUQiLCJyZXF1aXJlJCQ0IiwiaXNTeW1ib2wiLCIkU3ltYm9sIiwidHJ5VG9TdHJpbmciLCJhQ2FsbGFibGUiLCJnZXRNZXRob2QiLCJQIiwiZnVuYyIsIm9yZGluYXJ5VG9QcmltaXRpdmUiLCJpbnB1dCIsInByZWYiLCJ2YWwiLCJ2YWx1ZU9mIiwic2V0R2xvYmFsIiwia2V5IiwiU0hBUkVEIiwic3RvcmUiLCJzaGFyZWRTdG9yZSIsInNoYXJlZE1vZHVsZSIsInB1c2giLCJtb2RlIiwiY29weXJpZ2h0IiwibGljZW5zZSIsInNvdXJjZSIsInRvT2JqZWN0IiwiaGFzT3duUHJvcGVydHlfMSIsImhhc093biIsImlkIiwicG9zdGZpeCIsInJhbmRvbSIsInVpZCIsInNoYXJlZCIsInJlcXVpcmUkJDUiLCJXZWxsS25vd25TeW1ib2xzU3RvcmUiLCJzeW1ib2xGb3IiLCJjcmVhdGVXZWxsS25vd25TeW1ib2wiLCJ3aXRob3V0U2V0dGVyIiwid2VsbEtub3duU3ltYm9sIiwibmFtZSIsImRlc2NyaXB0aW9uIiwicmVxdWlyZSQkNiIsIlRPX1BSSU1JVElWRSIsInRvUHJpbWl0aXZlIiwiZXhvdGljVG9QcmltIiwicmVzdWx0IiwidG9Qcm9wZXJ0eUtleSIsImRvY3VtZW50IiwiRVhJU1RTIiwiY3JlYXRlRWxlbWVudCIsImRvY3VtZW50Q3JlYXRlRWxlbWVudCIsIkRFU0NSSVBUT1JTIiwiaWU4RG9tRGVmaW5lIiwiYSIsInByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlIiwiSUU4X0RPTV9ERUZJTkUiLCJyZXF1aXJlJCQ3IiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIk8iLCJ2OFByb3RvdHlwZURlZmluZUJ1ZyIsImFuT2JqZWN0IiwiVjhfUFJPVE9UWVBFX0RFRklORV9CVUciLCIkZGVmaW5lUHJvcGVydHkiLCJFTlVNRVJBQkxFIiwiQ09ORklHVVJBQkxFIiwiV1JJVEFCTEUiLCJvYmplY3REZWZpbmVQcm9wZXJ0eSIsIkF0dHJpYnV0ZXMiLCJjdXJyZW50IiwiZGVmaW5lUHJvcGVydHlNb2R1bGUiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJvYmplY3QiLCJmdW5jdGlvblRvU3RyaW5nIiwiaW5zcGVjdFNvdXJjZSIsIldlYWtNYXAiLCJuYXRpdmVXZWFrTWFwIiwia2V5cyIsInNoYXJlZEtleSIsImhpZGRlbktleXMiLCJOQVRJVkVfV0VBS19NQVAiLCJyZXF1aXJlJCQ4IiwiT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQiLCJzZXQiLCJoYXMiLCJlbmZvcmNlIiwiZ2V0dGVyRm9yIiwiVFlQRSIsInN0YXRlIiwidHlwZSIsIndtZ2V0Iiwid21oYXMiLCJ3bXNldCIsIm1ldGFkYXRhIiwiZmFjYWRlIiwiU1RBVEUiLCJpbnRlcm5hbFN0YXRlIiwiZ2V0RGVzY3JpcHRvciIsIlBST1BFUiIsInNvbWV0aGluZyIsImZ1bmN0aW9uTmFtZSIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsImdldEludGVybmFsU3RhdGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsIlRFTVBMQVRFIiwicmVkZWZpbmVNb2R1bGUiLCJleHBvcnRzIiwib3B0aW9ucyIsInVuc2FmZSIsInNpbXBsZSIsIm5vVGFyZ2V0R2V0IiwicmVwbGFjZSIsImpvaW4iLCJjZWlsIiwiZmxvb3IiLCJ0b0ludGVnZXJPckluZmluaXR5IiwibnVtYmVyIiwibWF4IiwibWluIiwidG9BYnNvbHV0ZUluZGV4IiwiaW5kZXgiLCJpbnRlZ2VyIiwidG9MZW5ndGgiLCJsZW5ndGhPZkFycmF5TGlrZSIsIm9iaiIsImNyZWF0ZU1ldGhvZCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImZyb21JbmRleCIsImFycmF5SW5jbHVkZXMiLCJpbmNsdWRlcyIsImluZGV4T2YiLCJvYmplY3RLZXlzSW50ZXJuYWwiLCJuYW1lcyIsImkiLCJlbnVtQnVnS2V5cyIsImludGVybmFsT2JqZWN0S2V5cyIsImNvbmNhdCIsIm9iamVjdEdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwib2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSIsImdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUiLCJjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzIiwidGFyZ2V0IiwiZXhjZXB0aW9ucyIsInJlcGxhY2VtZW50IiwiaXNGb3JjZWQiLCJmZWF0dXJlIiwiZGV0ZWN0aW9uIiwiZGF0YSIsIm5vcm1hbGl6ZSIsIlBPTFlGSUxMIiwiTkFUSVZFIiwic3RyaW5nIiwidG9Mb3dlckNhc2UiLCJpc0ZvcmNlZF8xIiwicmVkZWZpbmUiLCJfZXhwb3J0IiwiVEFSR0VUIiwiR0xPQkFMIiwiU1RBVElDIiwic3RhdCIsIkZPUkNFRCIsInRhcmdldFByb3BlcnR5Iiwic291cmNlUHJvcGVydHkiLCJmb3JjZWQiLCJpc0FycmF5IiwiQXJyYXkiLCJjcmVhdGVQcm9wZXJ0eSIsInByb3BlcnR5S2V5IiwiVE9fU1RSSU5HX1RBRyIsInRvU3RyaW5nVGFnU3VwcG9ydCIsIlRPX1NUUklOR19UQUdfU1VQUE9SVCIsIkNPUlJFQ1RfQVJHVU1FTlRTIiwidHJ5R2V0IiwidGFnIiwiY2FsbGVlIiwibm9vcCIsImVtcHR5IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3JSZWdFeHAiLCJJTkNPUlJFQ1RfVE9fU1RSSU5HIiwiaXNDb25zdHJ1Y3Rvck1vZGVybiIsImlzQ29uc3RydWN0b3IiLCJpc0NvbnN0cnVjdG9yTGVnYWN5IiwiY2FsbGVkIiwiU1BFQ0lFUyIsImFycmF5U3BlY2llc0NvbnN0cnVjdG9yIiwib3JpZ2luYWxBcnJheSIsIkMiLCJjb25zdHJ1Y3RvciIsImFycmF5U3BlY2llc0NyZWF0ZSIsImFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQiLCJNRVRIT0RfTkFNRSIsImFycmF5IiwiZm9vIiwiQm9vbGVhbiIsIiQiLCJyZXF1aXJlJCQ5IiwicmVxdWlyZSQkMTAiLCJyZXF1aXJlJCQxMSIsIklTX0NPTkNBVF9TUFJFQURBQkxFIiwiTUFYX1NBRkVfSU5URUdFUiIsIk1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCIsIklTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQiLCJTUEVDSUVTX1NVUFBPUlQiLCJpc0NvbmNhdFNwcmVhZGFibGUiLCJzcHJlYWRhYmxlIiwicHJvdG8iLCJhcmciLCJBIiwibiIsImsiLCJsZW4iLCJFIiwicnVudGltZSIsIk9wIiwiaXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlcnIiLCJ3cmFwIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJfaW52b2tlIiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiR2VuU3RhdGVTdXNwZW5kZWRTdGFydCIsIkdlblN0YXRlU3VzcGVuZGVkWWllbGQiLCJHZW5TdGF0ZUV4ZWN1dGluZyIsIkdlblN0YXRlQ29tcGxldGVkIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGlzcGxheU5hbWUiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsIl9fYXdhaXQiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwidGhlbiIsInVud3JhcHBlZCIsInByZXZpb3VzUHJvbWlzZSIsImVucXVldWUiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJuZXh0IiwiZG9uZSIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsInJldmVyc2UiLCJwb3AiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJza2lwVGVtcFJlc2V0IiwicHJldiIsImNoYXJBdCIsInN0b3AiLCJyb290RW50cnkiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsIm1vZHVsZSIsInJlZ2VuZXJhdG9yUnVudGltZSIsImFjY2lkZW50YWxTdHJpY3RNb2RlIiwiRlVOQ1RJT05fTkFNRV9FWElTVFMiLCJuYW1lUkUiLCJyZWdFeHBFeGVjIiwiTkFNRSIsImFQb3NzaWJsZVByb3RvdHlwZSIsIm9iamVjdFNldFByb3RvdHlwZU9mIiwiQ09SUkVDVF9TRVRURVIiLCJzZXR0ZXIiLCJVbnN1cHBvcnRlZFBsYXRmb3JtRXJyb3IiLCJwbGF0Zm9ybSIsIm1lc3NhZ2UiLCJjYXB0dXJlU3RhY2tUcmFjZSIsImZpbGVQYXRoIiwia2ludG9uZSIsImdhcm9vbiIsImNvbm5lY3QiLCJCbG9iIiwiYmFzZVVybCIsImxvY2F0aW9uIiwiaG9zdCIsInByb3RvY29sIiwiUEFDS0FHRV9WRVJTSU9OIiwiZnVuY3Rpb25CaW5kQ29udGV4dCIsInRoYXQiLCJJU19NQVAiLCJJU19GSUxURVIiLCJJU19TT01FIiwiSVNfRVZFUlkiLCJJU19GSU5EX0lOREVYIiwiSVNfRklMVEVSX1JFSkVDVCIsIk5PX0hPTEVTIiwiY2FsbGJhY2tmbiIsInNwZWNpZmljQ3JlYXRlIiwiYm91bmRGdW5jdGlvbiIsImFycmF5SXRlcmF0aW9uIiwibWFwIiwiZmlsdGVyIiwic29tZSIsImV2ZXJ5IiwiZmluZCIsImZpbmRJbmRleCIsImZpbHRlclJlamVjdCIsIiRtYXAiLCJIQVNfU1BFQ0lFU19TVVBQT1JUIiwiYnVpbGRQYXRoIiwicGFyYW1zIiwiZW5kcG9pbnROYW1lIiwiZ3Vlc3RTcGFjZUlkIiwicHJldmlldyIsImd1ZXN0UGF0aCIsInByZXZpZXdQYXRoIiwiQnVsa1JlcXVlc3RDbGllbnQiLCJjbGllbnQiLCJSRVFVRVNUU19MRU5HVEhfTElNSVQiLCJyZXF1ZXN0c1BhcmFtIiwicmVxdWVzdHMiLCJyZXF1ZXN0IiwicmVzdCIsIl9leGNsdWRlZCIsIl9vYmplY3RTcHJlYWQiLCJhcGkiLCJidWlsZFBhdGhXaXRoR3Vlc3RTcGFjZUlkIiwicGF0aCIsInBvc3QiLCJBcHBDbGllbnQiLCJwdXQiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsInNwYWNlIiwic3BhY2VQYXRoIiwiZGVmYXVsdFRocmVhZCIsInRocmVhZCIsIl9leGNsdWRlZDQiLCJvYmplY3RLZXlzIiwiJGFzc2lnbiIsImFzc2lnbiIsIm9iamVjdEFzc2lnbiIsImIiLCJCIiwiYWxwaGFiZXQiLCJjaHIiLCJUIiwiYXJndW1lbnRzTGVuZ3RoIiwiUyIsImoiLCJyZWdleHBGbGFncyIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJkb3RBbGwiLCJ1bmljb2RlIiwic3RpY2t5IiwiJFJlZ0V4cCIsIlJlZ0V4cCIsIlVOU1VQUE9SVEVEX1kiLCJyZSIsImxhc3RJbmRleCIsIk1JU1NFRF9TVElDS1kiLCJCUk9LRU5fQ0FSRVQiLCJyZWdleHBTdGlja3lIZWxwZXJzIiwib2JqZWN0RGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnRpZXMiLCJQcm9wZXJ0aWVzIiwicHJvcHMiLCJodG1sIiwiZGVmaW5lUHJvcGVydGllc01vZHVsZSIsIkdUIiwiTFQiLCJQUk9UT1RZUEUiLCJTQ1JJUFQiLCJJRV9QUk9UTyIsIkVtcHR5Q29uc3RydWN0b3IiLCJzY3JpcHRUYWciLCJjb250ZW50IiwiTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCIsImFjdGl2ZVhEb2N1bWVudCIsIndyaXRlIiwiY2xvc2UiLCJ0ZW1wIiwicGFyZW50V2luZG93IiwiTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lIiwiaWZyYW1lIiwiSlMiLCJpZnJhbWVEb2N1bWVudCIsInN0eWxlIiwiZGlzcGxheSIsImFwcGVuZENoaWxkIiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJGIiwiTnVsbFByb3RvT2JqZWN0IiwiQWN0aXZlWE9iamVjdCIsImRvbWFpbiIsIm9iamVjdENyZWF0ZSIsInJlZ2V4cFVuc3VwcG9ydGVkRG90QWxsIiwiZmxhZ3MiLCJyZWdleHBVbnN1cHBvcnRlZE5jZyIsImdyb3VwcyIsInN0aWNreUhlbHBlcnMiLCJVTlNVUFBPUlRFRF9ET1RfQUxMIiwiVU5TVVBQT1JURURfTkNHIiwibmF0aXZlUmVwbGFjZSIsIm5hdGl2ZUV4ZWMiLCJwYXRjaGVkRXhlYyIsIlVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyIsInJlMSIsInJlMiIsIk5QQ0dfSU5DTFVERUQiLCJQQVRDSCIsInN0ciIsInJhdyIsInJlQ29weSIsImdyb3VwIiwiY2hhcnNBZGRlZCIsInN0ckNvcHkiLCJyZWdleHBFeGVjIiwiUmVnRXhwUHJvdG90eXBlIiwiZml4UmVnZXhwV2VsbEtub3duU3ltYm9sTG9naWMiLCJLRVkiLCJTSEFNIiwiU1lNQk9MIiwiREVMRUdBVEVTX1RPX1NZTUJPTCIsIkRFTEVHQVRFU19UT19FWEVDIiwiZXhlY0NhbGxlZCIsInVuY3VycmllZE5hdGl2ZVJlZ0V4cE1ldGhvZCIsIm1ldGhvZHMiLCJuYXRpdmVNZXRob2QiLCJyZWdleHAiLCJhcmcyIiwiZm9yY2VTdHJpbmdNZXRob2QiLCJ1bmN1cnJpZWROYXRpdmVNZXRob2QiLCIkZXhlYyIsImNoYXJDb2RlQXQiLCJDT05WRVJUX1RPX1NUUklORyIsInBvcyIsInBvc2l0aW9uIiwic2l6ZSIsImZpcnN0Iiwic2Vjb25kIiwic3RyaW5nTXVsdGlieXRlIiwiY29kZUF0IiwiYWR2YW5jZVN0cmluZ0luZGV4IiwicmVnZXhwRXhlY0Fic3RyYWN0IiwiUiIsImZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljIiwiTUFUQ0giLCJuYXRpdmVNYXRjaCIsIm1heWJlQ2FsbE5hdGl2ZSIsIm1hdGNoZXIiLCJyeCIsInJlcyIsImZ1bGxVbmljb2RlIiwibWF0Y2hTdHIiLCJpbmhlcml0SWZSZXF1aXJlZCIsImR1bW15IiwiV3JhcHBlciIsIk5ld1RhcmdldCIsIk5ld1RhcmdldFByb3RvdHlwZSIsInRoaXNOdW1iZXJWYWx1ZSIsIndoaXRlc3BhY2VzIiwid2hpdGVzcGFjZSIsImx0cmltIiwicnRyaW0iLCJzdHJpbmdUcmltIiwic3RhcnQiLCJlbmQiLCJ0cmltIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwicmVxdWlyZSQkMTUiLCJOVU1CRVIiLCJOYXRpdmVOdW1iZXIiLCJOdW1iZXJQcm90b3R5cGUiLCJhcnJheVNsaWNlIiwidG9OdW1lcmljIiwicHJpbVZhbHVlIiwidG9OdW1iZXIiLCJ0aGlyZCIsInJhZGl4IiwibWF4Q29kZSIsImRpZ2l0cyIsImNvZGUiLCJOYU4iLCJwYXJzZUludCIsIk51bWJlcldyYXBwZXIiLCJOdW1iZXIiLCJhcnJheU1ldGhvZElzU3RyaWN0IiwiJEluZGV4T2YiLCJ1biRJbmRleE9mIiwiTkVHQVRJVkVfWkVSTyIsIlNUUklDVF9NRVRIT0QiLCJzZWFyY2hFbGVtZW50IiwiJGV2ZXJ5Iiwib2JqZWN0VG9TdHJpbmciLCJ1biRTbGljZSIsImZpbiIsIkNvbnN0cnVjdG9yIiwiSVNfUklHSFQiLCJtZW1vIiwiYXJyYXlSZWR1Y2UiLCJsZWZ0IiwicmlnaHQiLCJlbmdpbmVJc05vZGUiLCIkcmVkdWNlIiwiQ0hST01FX1ZFUlNJT04iLCJJU19OT0RFIiwiQ0hST01FX0JVRyIsInJlZHVjZSIsIm5hdGl2ZUtleXMiLCJGQUlMU19PTl9QUklNSVRJVkVTIiwiS2ludG9uZUFsbFJlY29yZHNFcnJvciIsInByb2Nlc3NlZFJlY29yZHNSZXN1bHQiLCJ1bnByb2Nlc3NlZFJlY29yZHMiLCJudW1PZkFsbFJlY29yZHMiLCJjaHVua0xlbmd0aCIsIm51bU9mUHJvY2Vzc2VkUmVjb3JkcyIsImVycm9ySW5kZXgiLCJleHRyYWN0RXJyb3JJbmRleCIsImJ1aWxkRXJyb3JNZXNzYWdlIiwiZXJyb3JzIiwiZmlyc3RFcnJvcktleSIsImJ1bGtSZXF1ZXN0SW5kZXgiLCJlcnJvclBhcnNlUmVzdWx0IiwicGFyc2VFcnJvckluZGV4IiwiQUREX1JFQ09SRFNfTElNSVQiLCJVUERBVEVfUkVDT1JEU19MSU1JVCIsIkRFTEVURV9SRUNPUkRTX0xJTUlUIiwiUmVjb3JkQ2xpZW50IiwiYnVsa1JlcXVlc3RDbGllbnQiLCJkaWRXYXJuTWF4aW11bU9mZnNldFZhbHVlIiwiYXBwIiwidXBkYXRlS2V5IiwiZ2V0UmVjb3JkcyIsInF1ZXJ5IiwiZmllbGQiLCJyZWNvcmRzIiwiJGlkIiwidXBkYXRlUmVjb3JkIiwicmV2aXNpb24iLCJhZGRSZWNvcmQiLCJyZXNwb25zZSIsIndhcm5NYXhpbXVtT2Zmc2V0VmFsdWVJZk5lZWRlZCIsImNvbnNvbGUiLCJ3YXJuIiwiaWRzIiwicmV2aXNpb25zIiwiY29uZGl0aW9uIiwib3JkZXJCeSIsIndpdGhDdXJzb3IiLCJnZXRBbGxSZWNvcmRzV2l0aElkIiwiY29uZGl0aW9uUXVlcnkiLCJnZXRBbGxSZWNvcmRzV2l0aEN1cnNvciIsImdldEFsbFJlY29yZHNXaXRoT2Zmc2V0Iiwib3JpZ2luYWxGaWVsZHMiLCJmaWVsZHMiLCJnZXRBbGxSZWNvcmRzUmVjdXJzaXZlV2l0aElkIiwiR0VUX1JFQ09SRFNfTElNSVQiLCJhbGxSZWNvcmRzIiwibGFzdFJlY29yZCIsImxhc3RJZCIsImdldEFsbFJlY29yZHNSZWN1cnNpdmVXaXRoT2Zmc2V0Iiwib2Zmc2V0IiwiY3JlYXRlQ3Vyc29yIiwiZ2V0QWxsUmVjb3Jkc1JlY3Vyc2l2ZUJ5Q3Vyc29yIiwiZGVsZXRlQ3Vyc29yIiwiZ2V0UmVjb3Jkc0J5Q3Vyc29yIiwiYWRkQWxsUmVjb3Jkc1JlY3Vyc2l2ZSIsInJlc3VsdHMiLCJDSFVOS19MRU5HVEgiLCJyZWNvcmRzQ2h1bmsiLCJhZGRBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0IiwibmV3UmVzdWx0cyIsInNlcGFyYXRlZFJlY29yZHMiLCJzZXBhcmF0ZUFycmF5UmVjdXJzaXZlIiwicGF5bG9hZCIsInNlbmQiLCJhY2MiLCJ1cGRhdGVBbGxSZWNvcmRzUmVjdXJzaXZlIiwidXBkYXRlQWxsUmVjb3Jkc1dpdGhCdWxrUmVxdWVzdCIsImRlbGV0ZUFsbFJlY29yZHNSZWN1cnNpdmUiLCJkZWxldGVBbGxSZWNvcmRzV2l0aEJ1bGtSZXF1ZXN0Iiwic2VwYXJhdGVkIiwiY2h1bmsiLCJicm93c2VyIiwiRm9ybURhdGEiLCJGaWxlQ2xpZW50IiwiZm9ybURhdGEiLCJmaWxlIiwiYXBwZW5kIiwicG9zdERhdGEiLCJnZXREYXRhIiwidGhpc0FyZyIsImFyZ3MiLCJpc1VuZGVmaW5lZCIsImlzQnVmZmVyIiwiaXNBcnJheUJ1ZmZlciIsImlzRm9ybURhdGEiLCJpc0FycmF5QnVmZmVyVmlldyIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwiYnVmZmVyIiwiaXNTdHJpbmciLCJpc051bWJlciIsImlzUGxhaW5PYmplY3QiLCJpc0RhdGUiLCJpc0ZpbGUiLCJpc0Jsb2IiLCJpc0Z1bmN0aW9uIiwiaXNTdHJlYW0iLCJwaXBlIiwiaXNVUkxTZWFyY2hQYXJhbXMiLCJpc1N0YW5kYXJkQnJvd3NlckVudiIsIm5hdmlnYXRvciIsInByb2R1Y3QiLCJsIiwibWVyZ2UiLCJhc3NpZ25WYWx1ZSIsImV4dGVuZCIsInN0cmlwQk9NIiwidXRpbHMiLCJlbmNvZGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJidWlsZFVSTCIsInVybCIsInBhcmFtc1NlcmlhbGl6ZXIiLCJzZXJpYWxpemVkUGFyYW1zIiwicGFydHMiLCJzZXJpYWxpemUiLCJwYXJzZVZhbHVlIiwidiIsInRvSVNPU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImhhc2htYXJrSW5kZXgiLCJJbnRlcmNlcHRvck1hbmFnZXIiLCJoYW5kbGVycyIsInVzZSIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwic3luY2hyb25vdXMiLCJydW5XaGVuIiwiZWplY3QiLCJmb3JFYWNoSGFuZGxlciIsImgiLCJJbnRlcmNlcHRvck1hbmFnZXJfMSIsImRlZmF1bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwiY2FjaGVkU2V0VGltZW91dCIsImNhY2hlZENsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwiZSIsInJ1bkNsZWFyVGltZW91dCIsIm1hcmtlciIsInF1ZXVlIiwiZHJhaW5pbmciLCJjdXJyZW50UXVldWUiLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQiLCJydW4iLCJuZXh0VGljayIsIkl0ZW0iLCJ0aXRsZSIsImVudiIsImFyZ3YiLCJyZWxlYXNlIiwiY29uZmlnIiwib24iLCJhZGRMaXN0ZW5lciIsIm9uY2UiLCJvZmYiLCJyZW1vdmVMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsImVtaXQiLCJiaW5kaW5nIiwiY3dkIiwiY2hkaXIiLCJkaXIiLCJ1bWFzayIsInBlcmZvcm1hbmNlIiwicGVyZm9ybWFuY2VOb3ciLCJub3ciLCJtb3pOb3ciLCJtc05vdyIsIm9Ob3ciLCJ3ZWJraXROb3ciLCJEYXRlIiwiZ2V0VGltZSIsImhydGltZSIsInByZXZpb3VzVGltZXN0YW1wIiwiY2xvY2t0aW1lIiwic2Vjb25kcyIsIm5hbm9zZWNvbmRzIiwic3RhcnRUaW1lIiwidXB0aW1lIiwiY3VycmVudFRpbWUiLCJkaWYiLCJub3JtYWxpemVIZWFkZXJOYW1lIiwiaGVhZGVycyIsIm5vcm1hbGl6ZWROYW1lIiwicHJvY2Vzc0hlYWRlciIsInRvVXBwZXJDYXNlIiwiZW5oYW5jZUVycm9yIiwiaXNBeGlvc0Vycm9yIiwidG9KU09OIiwiZmlsZU5hbWUiLCJsaW5lTnVtYmVyIiwiY29sdW1uTnVtYmVyIiwic3RhY2siLCJzdGF0dXMiLCJ0cmFuc2l0aW9uYWwiLCJzaWxlbnRKU09OUGFyc2luZyIsImZvcmNlZEpTT05QYXJzaW5nIiwiY2xhcmlmeVRpbWVvdXRFcnJvciIsImNyZWF0ZUVycm9yIiwic2V0dGxlIiwidmFsaWRhdGVTdGF0dXMiLCJjb29raWVzIiwic3RhbmRhcmRCcm93c2VyRW52IiwiZXhwaXJlcyIsInNlY3VyZSIsImNvb2tpZSIsInRvR01UU3RyaW5nIiwicmVhZCIsImRlY29kZVVSSUNvbXBvbmVudCIsInJlbW92ZSIsIm5vblN0YW5kYXJkQnJvd3NlckVudiIsImlzQWJzb2x1dGVVUkwiLCJjb21iaW5lVVJMcyIsImJhc2VVUkwiLCJyZWxhdGl2ZVVSTCIsImJ1aWxkRnVsbFBhdGgiLCJyZXF1ZXN0ZWRVUkwiLCJpZ25vcmVEdXBsaWNhdGVPZiIsInBhcnNlSGVhZGVycyIsInBhcnNlZCIsInBhcnNlciIsImxpbmUiLCJzdWJzdHIiLCJpc1VSTFNhbWVPcmlnaW4iLCJtc2llIiwidXJsUGFyc2luZ05vZGUiLCJvcmlnaW5VUkwiLCJyZXNvbHZlVVJMIiwiaHJlZiIsInNldEF0dHJpYnV0ZSIsInNlYXJjaCIsImhhc2giLCJob3N0bmFtZSIsInBvcnQiLCJwYXRobmFtZSIsInJlcXVlc3RVUkwiLCJDYW5jZWwiLCJfX0NBTkNFTF9fIiwiQ2FuY2VsXzEiLCJ0cmFuc2l0aW9uYWxEZWZhdWx0cyIsInhociIsInhockFkYXB0ZXIiLCJkaXNwYXRjaFhoclJlcXVlc3QiLCJyZXF1ZXN0RGF0YSIsInJlcXVlc3RIZWFkZXJzIiwicmVzcG9uc2VUeXBlIiwib25DYW5jZWxlZCIsImNhbmNlbFRva2VuIiwidW5zdWJzY3JpYmUiLCJzaWduYWwiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiWE1MSHR0cFJlcXVlc3QiLCJhdXRoIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInVuZXNjYXBlIiwiQXV0aG9yaXphdGlvbiIsImJ0b2EiLCJmdWxsUGF0aCIsIm9ubG9hZGVuZCIsInJlc3BvbnNlSGVhZGVycyIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJlc3BvbnNlRGF0YSIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJfcmVzb2x2ZSIsIl9yZWplY3QiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJoYW5kbGVMb2FkIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlVVJMIiwib25hYm9ydCIsImhhbmRsZUFib3J0Iiwib25lcnJvciIsImhhbmRsZUVycm9yIiwib250aW1lb3V0IiwiaGFuZGxlVGltZW91dCIsInRpbWVvdXRFcnJvck1lc3NhZ2UiLCJ4c3JmVmFsdWUiLCJ3aXRoQ3JlZGVudGlhbHMiLCJ4c3JmQ29va2llTmFtZSIsInhzcmZIZWFkZXJOYW1lIiwic2V0UmVxdWVzdEhlYWRlciIsIm9uRG93bmxvYWRQcm9ncmVzcyIsImFkZEV2ZW50TGlzdGVuZXIiLCJvblVwbG9hZFByb2dyZXNzIiwidXBsb2FkIiwiY2FuY2VsIiwiYWJvcnQiLCJzdWJzY3JpYmUiLCJhYm9ydGVkIiwiREVGQVVMVF9DT05URU5UX1RZUEUiLCJzZXRDb250ZW50VHlwZUlmVW5zZXQiLCJnZXREZWZhdWx0QWRhcHRlciIsImFkYXB0ZXIiLCJzdHJpbmdpZnlTYWZlbHkiLCJyYXdWYWx1ZSIsImVuY29kZXIiLCJwYXJzZSIsImRlZmF1bHRzIiwidHJhbnNmb3JtUmVxdWVzdCIsInRyYW5zZm9ybVJlc3BvbnNlIiwic3RyaWN0SlNPTlBhcnNpbmciLCJtYXhDb250ZW50TGVuZ3RoIiwibWF4Qm9keUxlbmd0aCIsImNvbW1vbiIsImZvckVhY2hNZXRob2ROb0RhdGEiLCJmb3JFYWNoTWV0aG9kV2l0aERhdGEiLCJkZWZhdWx0c18xIiwidHJhbnNmb3JtRGF0YSIsImZucyIsInRyYW5zZm9ybSIsImlzQ2FuY2VsIiwidGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZCIsInRocm93SWZSZXF1ZXN0ZWQiLCJkaXNwYXRjaFJlcXVlc3QiLCJjbGVhbkhlYWRlckNvbmZpZyIsIm9uQWRhcHRlclJlc29sdXRpb24iLCJvbkFkYXB0ZXJSZWplY3Rpb24iLCJyZWFzb24iLCJtZXJnZUNvbmZpZyIsImNvbmZpZzEiLCJjb25maWcyIiwiZ2V0TWVyZ2VkVmFsdWUiLCJtZXJnZURlZXBQcm9wZXJ0aWVzIiwicHJvcCIsInZhbHVlRnJvbUNvbmZpZzIiLCJkZWZhdWx0VG9Db25maWcyIiwibWVyZ2VEaXJlY3RLZXlzIiwibWVyZ2VNYXAiLCJjb21wdXRlQ29uZmlnVmFsdWUiLCJjb25maWdWYWx1ZSIsIlZFUlNJT04iLCJ2YWxpZGF0b3JzIiwidmFsaWRhdG9yIiwidGhpbmciLCJkZXByZWNhdGVkV2FybmluZ3MiLCJmb3JtYXRNZXNzYWdlIiwib3B0IiwiZGVzYyIsIm9wdHMiLCJhc3NlcnRPcHRpb25zIiwic2NoZW1hIiwiYWxsb3dVbmtub3duIiwiQXhpb3MiLCJpbnN0YW5jZUNvbmZpZyIsImludGVyY2VwdG9ycyIsImNvbmZpZ09yVXJsIiwiYm9vbGVhbiIsInJlcXVlc3RJbnRlcmNlcHRvckNoYWluIiwic3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzIiwidW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMiLCJpbnRlcmNlcHRvciIsInVuc2hpZnQiLCJyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4iLCJwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMiLCJwcm9taXNlIiwiY2hhaW4iLCJzaGlmdCIsIm5ld0NvbmZpZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsImdldFVyaSIsIkF4aW9zXzEiLCJDYW5jZWxUb2tlbiIsImV4ZWN1dG9yIiwicmVzb2x2ZVByb21pc2UiLCJwcm9taXNlRXhlY3V0b3IiLCJ0b2tlbiIsIl9saXN0ZW5lcnMiLCJvbmZ1bGZpbGxlZCIsImxpc3RlbmVyIiwic3BsaWNlIiwiYyIsIkNhbmNlbFRva2VuXzEiLCJzcHJlYWQiLCJjYWxsYmFjayIsImFyciIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImluc3RhbmNlIiwiYXhpb3MiLCJhbGwiLCJwcm9taXNlcyIsImF4aW9zTW9kdWxlIiwiYXhpb3NfMSIsImRlZmF1bHQiLCJBeGlvc0NsaWVudCIsInJlc3BvbnNlSGFuZGxlciIsInJlcXVlc3RDb25maWdCdWlsZGVyIiwiYnVpbGQiLCJyZXF1ZXN0Q29uZmlnIiwic2VuZFJlcXVlc3QiLCJJbmZpbml0eSIsInVuJEpvaW4iLCJFUzNfU1RSSU5HUyIsInNlcGFyYXRvciIsInNoYW1zIiwiaGFzU3ltYm9scyIsInN5bSIsInN5bU9iaiIsInN5bVZhbCIsInN5bXMiLCJvcmlnU3ltYm9sIiwiaGFzU3ltYm9sU2hhbSIsImhhc05hdGl2ZVN5bWJvbHMiLCJFUlJPUl9NRVNTQUdFIiwidG9TdHIiLCJmdW5jVHlwZSIsImltcGxlbWVudGF0aW9uIiwiYm91bmQiLCJiaW5kZXIiLCJib3VuZExlbmd0aCIsImJvdW5kQXJncyIsIkVtcHR5IiwiZnVuY3Rpb25CaW5kIiwiJFN5bnRheEVycm9yIiwiU3ludGF4RXJyb3IiLCIkRnVuY3Rpb24iLCIkVHlwZUVycm9yIiwiZ2V0RXZhbGxlZENvbnN0cnVjdG9yIiwiZXhwcmVzc2lvblN5bnRheCIsIiRnT1BEIiwidGhyb3dUeXBlRXJyb3IiLCJUaHJvd1R5cGVFcnJvciIsImNhbGxlZVRocm93cyIsImdPUER0aHJvd3MiLCJ4IiwibmVlZHNFdmFsIiwiVHlwZWRBcnJheSIsIlVpbnQ4QXJyYXkiLCJJTlRSSU5TSUNTIiwiQWdncmVnYXRlRXJyb3IiLCJBdG9taWNzIiwiQmlnSW50IiwiRGF0YVZpZXciLCJkZWNvZGVVUkkiLCJlbmNvZGVVUkkiLCJldmFsIiwiRXZhbEVycm9yIiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiRmluYWxpemF0aW9uUmVnaXN0cnkiLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsImlzRmluaXRlIiwiTWFwIiwicGFyc2VGbG9hdCIsIlByb3h5IiwiUmFuZ2VFcnJvciIsIlJlZmVyZW5jZUVycm9yIiwiUmVmbGVjdCIsIlNldCIsIlNoYXJlZEFycmF5QnVmZmVyIiwiVWludDhDbGFtcGVkQXJyYXkiLCJVaW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiVVJJRXJyb3IiLCJXZWFrUmVmIiwiV2Vha1NldCIsImRvRXZhbCIsImdlbiIsIkxFR0FDWV9BTElBU0VTIiwiJGNvbmNhdCIsIiRzcGxpY2VBcHBseSIsIiRyZXBsYWNlIiwiJHN0clNsaWNlIiwicmVQcm9wTmFtZSIsInJlRXNjYXBlQ2hhciIsInN0cmluZ1RvUGF0aCIsImxhc3QiLCJxdW90ZSIsInN1YlN0cmluZyIsImdldEJhc2VJbnRyaW5zaWMiLCJhbGxvd01pc3NpbmciLCJpbnRyaW5zaWNOYW1lIiwiYWxpYXMiLCJnZXRJbnRyaW5zaWMiLCJHZXRJbnRyaW5zaWMiLCJpbnRyaW5zaWNCYXNlTmFtZSIsImludHJpbnNpYyIsImludHJpbnNpY1JlYWxOYW1lIiwic2tpcEZ1cnRoZXJDYWNoaW5nIiwiaXNPd24iLCJwYXJ0IiwiYXN5bmNHZW5GdW5jdGlvbiIsImFzeW5jR2VuRnVuY3Rpb25Qcm90b3R5cGUiLCJhc3luY0dlblByb3RvdHlwZSIsIiRhcHBseSIsIiRjYWxsIiwiJHJlZmxlY3RBcHBseSIsImNhbGxCaW5kIiwiYXBwbHlCaW5kIiwiJGluZGV4T2YiLCJjYWxsQm91bmQiLCJjYWxsQm91bmRJbnRyaW5zaWMiLCJoYXNNYXAiLCJtYXBTaXplRGVzY3JpcHRvciIsIm1hcFNpemUiLCJtYXBGb3JFYWNoIiwiaGFzU2V0Iiwic2V0U2l6ZURlc2NyaXB0b3IiLCJzZXRTaXplIiwic2V0Rm9yRWFjaCIsImhhc1dlYWtNYXAiLCJ3ZWFrTWFwSGFzIiwiaGFzV2Vha1NldCIsIndlYWtTZXRIYXMiLCJib29sZWFuVmFsdWVPZiIsImJpZ0ludFZhbHVlT2YiLCJnT1BTIiwic3ltVG9TdHJpbmciLCJpc0VudW1lcmFibGUiLCJpbnNwZWN0Q3VzdG9tIiwiY3VzdG9tIiwiaW5zcGVjdFN5bWJvbCIsIm9iamVjdEluc3BlY3QiLCJpbnNwZWN0XyIsImRlcHRoIiwic2VlbiIsInF1b3RlU3R5bGUiLCJtYXhTdHJpbmdMZW5ndGgiLCJjdXN0b21JbnNwZWN0IiwiaW5kZW50IiwiaW5zcGVjdFN0cmluZyIsIm1heERlcHRoIiwiZ2V0SW5kZW50IiwiaW5zcGVjdCIsImZyb20iLCJub0luZGVudCIsIm5ld09wdHMiLCJuYW1lT2YiLCJhcnJPYmpLZXlzIiwic3ltU3RyaW5nIiwibWFya0JveGVkIiwiaXNFbGVtZW50IiwicyIsIm5vZGVOYW1lIiwiYXR0cnMiLCJhdHRyaWJ1dGVzIiwid3JhcFF1b3RlcyIsImNoaWxkTm9kZXMiLCJ4cyIsInNpbmdsZUxpbmVWYWx1ZXMiLCJpbmRlbnRlZEpvaW4iLCJpc0Vycm9yIiwiaXNNYXAiLCJtYXBQYXJ0cyIsImNvbGxlY3Rpb25PZiIsImlzU2V0Iiwic2V0UGFydHMiLCJpc1dlYWtNYXAiLCJ3ZWFrQ29sbGVjdGlvbk9mIiwiaXNXZWFrU2V0IiwiaXNCaWdJbnQiLCJpc0Jvb2xlYW4iLCJpc1JlZ0V4cCIsInlzIiwiZGVmYXVsdFN0eWxlIiwicXVvdGVDaGFyIiwibSIsIkhUTUxFbGVtZW50IiwiZ2V0QXR0cmlidXRlIiwicmVtYWluaW5nIiwidHJhaWxlciIsImxvd2J5dGUiLCJlbnRyaWVzIiwiam9pbmVkRW50cmllcyIsImJhc2VJbmRlbnQiLCJiYXNlIiwibGluZUpvaW5lciIsImlzQXJyIiwiJFdlYWtNYXAiLCIkTWFwIiwiJHdlYWtNYXBHZXQiLCIkd2Vha01hcFNldCIsIiR3ZWFrTWFwSGFzIiwiJG1hcEdldCIsIiRtYXBTZXQiLCIkbWFwSGFzIiwibGlzdEdldE5vZGUiLCJsaXN0IiwiY3VyciIsImxpc3RHZXQiLCJvYmplY3RzIiwibm9kZSIsImxpc3RTZXQiLCJsaXN0SGFzIiwic2lkZUNoYW5uZWwiLCJnZXRTaWRlQ2hhbm5lbCIsIiR3bSIsIiRtIiwiJG8iLCJjaGFubmVsIiwiYXNzZXJ0IiwicGVyY2VudFR3ZW50aWVzIiwiRm9ybWF0IiwiUkZDMTczOCIsIlJGQzM5ODYiLCJmb3JtYXRzIiwiZm9ybWF0dGVycyIsImhleFRhYmxlIiwiY29tcGFjdFF1ZXVlIiwiaXRlbSIsImNvbXBhY3RlZCIsImFycmF5VG9PYmplY3QiLCJwbGFpbk9iamVjdHMiLCJhbGxvd1Byb3RvdHlwZXMiLCJtZXJnZVRhcmdldCIsInRhcmdldEl0ZW0iLCJhc3NpZ25TaW5nbGVTb3VyY2UiLCJkZWNvZGUiLCJkZWNvZGVyIiwiY2hhcnNldCIsInN0cldpdGhvdXRQbHVzIiwiZGVmYXVsdEVuY29kZXIiLCJraW5kIiwiZm9ybWF0IiwiZXNjYXBlIiwiJDAiLCJvdXQiLCJjb21wYWN0IiwibyIsInJlZnMiLCJjb21iaW5lIiwibWF5YmVNYXAiLCJtYXBwZWQiLCJhcnJheVByZWZpeEdlbmVyYXRvcnMiLCJicmFja2V0cyIsInByZWZpeCIsImNvbW1hIiwiaW5kaWNlcyIsInJlcGVhdCIsInB1c2hUb0FycmF5IiwidmFsdWVPckFycmF5IiwidG9JU08iLCJkZWZhdWx0Rm9ybWF0IiwiYWRkUXVlcnlQcmVmaXgiLCJhbGxvd0RvdHMiLCJjaGFyc2V0U2VudGluZWwiLCJkZWxpbWl0ZXIiLCJlbmNvZGVWYWx1ZXNPbmx5IiwiZm9ybWF0dGVyIiwic2VyaWFsaXplRGF0ZSIsImRhdGUiLCJza2lwTnVsbHMiLCJzdHJpY3ROdWxsSGFuZGxpbmciLCJpc05vbk51bGxpc2hQcmltaXRpdmUiLCJzZW50aW5lbCIsImdlbmVyYXRlQXJyYXlQcmVmaXgiLCJzb3J0IiwidG1wU2MiLCJzdGVwIiwiZmluZEZsYWciLCJrZXlWYWx1ZSIsInZhbHVlc0FycmF5IiwidmFsdWVzSm9pbmVkIiwib2JqS2V5cyIsImtleVByZWZpeCIsInZhbHVlU2lkZUNoYW5uZWwiLCJub3JtYWxpemVTdHJpbmdpZnlPcHRpb25zIiwic3RyaW5naWZ5XzEiLCJhcnJheUZvcm1hdCIsImpvaW5lZCIsImFsbG93U3BhcnNlIiwiYXJyYXlMaW1pdCIsImlnbm9yZVF1ZXJ5UHJlZml4IiwiaW50ZXJwcmV0TnVtZXJpY0VudGl0aWVzIiwicGFyYW1ldGVyTGltaXQiLCJwYXJzZUFycmF5cyIsIm51bWJlclN0ciIsImZyb21DaGFyQ29kZSIsInBhcnNlQXJyYXlWYWx1ZSIsImlzb1NlbnRpbmVsIiwicGFyc2VWYWx1ZXMiLCJwYXJzZVF1ZXJ5U3RyaW5nVmFsdWVzIiwiY2xlYW5TdHIiLCJsaW1pdCIsInNraXBJbmRleCIsImJyYWNrZXRFcXVhbHNQb3MiLCJlbmNvZGVkVmFsIiwicGFyc2VPYmplY3QiLCJ2YWx1ZXNQYXJzZWQiLCJsZWFmIiwicm9vdCIsImNsZWFuUm9vdCIsInBhcnNlS2V5cyIsInBhcnNlUXVlcnlTdHJpbmdLZXlzIiwiZ2l2ZW5LZXkiLCJjaGlsZCIsInNlZ21lbnQiLCJwYXJlbnQiLCJub3JtYWxpemVQYXJzZU9wdGlvbnMiLCJ0ZW1wT2JqIiwibmV3T2JqIiwibGliIiwiX2hhc2F0b2IiLCJhdG9iIiwiX2hhc2J0b2EiLCJfaGFzQnVmZmVyIiwiQnVmZmVyIiwiX1REIiwiVGV4dERlY29kZXIiLCJfVEUiLCJUZXh0RW5jb2RlciIsImI2NGNoIiwiYjY0Y2hzIiwiYjY0dGFiIiwidGFiIiwiYjY0cmUiLCJfZnJvbUNDIiwiX1U4QWZyb20iLCJfbWtVcmlTYWZlIiwibTAiLCJfdGlkeUI2NCIsImJ0b2FQb2x5ZmlsbCIsImJpbiIsInUzMiIsImMwIiwiYzEiLCJjMiIsImFzYyIsInBhZCIsInN1YnN0cmluZyIsIl9idG9hIiwiX2Zyb21VaW50OEFycmF5IiwidThhIiwibWF4YXJncyIsInN0cnMiLCJzdWJhcnJheSIsImZyb21VaW50OEFycmF5IiwidXJsc2FmZSIsImNiX3V0b2IiLCJjYyIsInJlX3V0b2IiLCJ1dG9iIiwidSIsIl9lbmNvZGUiLCJyZV9idG91IiwiY2JfYnRvdSIsImNjY2MiLCJjcCIsImJ0b3UiLCJhdG9iUG9seWZpbGwiLCJ1MjQiLCJyMSIsInIyIiwiX2F0b2IiLCJfdG9VaW50OEFycmF5IiwidG9VaW50OEFycmF5IiwiX3VuVVJJIiwiX2RlY29kZSIsImlzVmFsaWQiLCJfbm9FbnVtIiwiZXh0ZW5kU3RyaW5nIiwiX2FkZCIsImJvZHkiLCJleHRlbmRVaW50OEFycmF5IiwiZXh0ZW5kQnVpbHRpbnMiLCJnQmFzZTY0IiwiZnJvbUJhc2U2NCIsInRvQmFzZTY0IiwiZW5jb2RlVVJMIiwiVEhSRVNIT0xEX0FWT0lEX1JFUVVFU1RfVVJMX1RPT19MQVJHRSIsIktpbnRvbmVSZXF1ZXN0Q29uZmlnQnVpbGRlciIsImJhc2ljQXV0aCIsImNsaWVudENlcnRBdXRoIiwicHJveHkiLCJyZXF1ZXN0VG9rZW4iLCJyZXF1ZXN0VXJsIiwiYnVpbGRSZXF1ZXN0VXJsIiwiYnVpbGREYXRhIiwiZ2V0SGVhZGVycyIsInFzIiwiX19SRVFVRVNUX1RPS0VOX18iLCJiYXNpY0F1dGhIZWFkZXJzIiwiQmFzZTY0IiwicGxhdGZvcm1EZXBzSGVhZGVycyIsImNvbW1vbkhlYWRlcnMiLCJhcGlUb2tlbiIsIm9BdXRoVG9rZW4iLCJEYXRlUHJvdG90eXBlIiwiSU5WQUxJRF9EQVRFIiwiVE9fU1RSSU5HIiwidW4kRGF0ZVRvU3RyaW5nIiwiUFJPUEVSX0ZVTkNUSU9OX05BTUUiLCIkdG9TdHJpbmciLCJyZWdFeHBGbGFncyIsIm4kVG9TdHJpbmciLCJnZXRGbGFncyIsIk5PVF9HRU5FUklDIiwiSU5DT1JSRUNUX05BTUUiLCJwIiwicmYiLCJLaW50b25lQWJvcnRTZWFyY2hFcnJvciIsIktpbnRvbmVSZXN0QVBJRXJyb3IiLCJidWlsZEVycm9yUmVzcG9uc2VEYXRlV2l0aEluZGV4IiwiZmluZEVycm9yUmVzcG9uc2VEYXRhV2l0aEluZGV4IiwiS2ludG9uZVJlc3BvbnNlSGFuZGxlciIsImVuYWJsZUFib3J0U2VhcmNoRXJyb3IiLCJoYW5kbGVTdWNjZXNzUmVzcG9uc2UiLCJoYW5kbGVFcnJvclJlc3BvbnNlIiwiZXJyb3JSZXNwb25zZSIsImJ1aWxkRGlzY3JpbWluYXRlZEF1dGgiLCJLaW50b25lUmVzdEFQSUNsaWVudCIsInZhbGlkYXRlT3B0aW9ucyIsImZlYXR1cmVGbGFncyIsImh0dHBDbGllbnQiLCJEZWZhdWx0SHR0cENsaWVudCIsImJ1bGtSZXF1ZXN0XyIsInZhbGlkYXRlR3Vlc3RTcGFjZUlkIiwiYnJvd3NlckRlcHMiXSwibWFwcGluZ3MiOiI7Ozs7OztFQWNPLElBQU1BLFlBQTBCLEdBQUc7RUFDeENDLEVBQUFBLGdCQUFnQixFQUFFLFNBQU0sZ0JBQUEsR0FBQTtFQUN0QixJQUFBLE1BQU0sSUFBSUMsS0FBSixDQUFVLGlCQUFWLENBQU4sQ0FBQTtFQUNELEdBSHVDO0VBSXhDQyxFQUFBQSxlQUFlLEVBQUUsU0FBTSxlQUFBLEdBQUE7RUFDckIsSUFBQSxNQUFNLElBQUlELEtBQUosQ0FBVSxpQkFBVixDQUFOLENBQUE7RUFDRCxHQU51QztFQU94Q0UsRUFBQUEsY0FBYyxFQUFFLFNBQU0sY0FBQSxHQUFBO0VBQ3BCLElBQUEsTUFBTSxJQUFJRixLQUFKLENBQVUsaUJBQVYsQ0FBTixDQUFBO0VBQ0QsR0FU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