@datagrok-libraries/utils 4.2.1 → 4.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # utils changelog
2
2
 
3
+ ## 4.2.3 (2024-05-06)
4
+
5
+ ### Features
6
+
7
+ * Added support to check Sets and Maps
8
+ * Added serialization support for Sets and Maps
9
+
10
+ ## 4.2.2 (2024-04-22)
11
+
12
+ ### Bug fixes
13
+
14
+ * Forms Viewer: Added check for undefined grid when calculating color coding
15
+
3
16
  ## 4.2.1 (2024-04-19)
4
17
 
5
18
  ### Features
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "email": "amuzychyna@datagrok.ai"
9
9
  },
10
10
  "fullName": "Utils",
11
- "version": "4.2.1",
11
+ "version": "4.2.3",
12
12
  "description": "Common utilities",
13
13
  "dependencies": {
14
14
  "cash-dom": "^8.1.1",
@@ -1 +1 @@
1
- {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["expect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAA;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC;AACtE,MAAM,MAAM,aAAa,GACvB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,aAAa,KAAK,YAAY,EAAE,GAAG,IAAI,CAAC;AAExH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;CACxB;AAID,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAU1C,CAAC;AAIF,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAGzC,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAGlG;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
1
+ {"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["expect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAA;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC;AACtE,MAAM,MAAM,aAAa,GACvB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,aAAa,KAAK,YAAY,EAAE,GAAG,IAAI,CAAC;AAExH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;CACxB;AAID,eAAO,MAAM,iBAAiB,EAAE,WAAW,EAY1C,CAAC;AAIF,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAGzC,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAGlG;AAGD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC1C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
package/src/expect.js CHANGED
@@ -6,6 +6,8 @@ export const defaulCheckersSeq = [
6
6
  { name: 'String', predicate: stringPredicate, checker: eqChecker },
7
7
  { name: 'Integer', predicate: integerPredicate, checker: eqChecker },
8
8
  { name: 'Float', predicate: floatPredicate, checker: floatChecker },
9
+ { name: 'Map', predicate: mapPredicate, checker: mapChecker },
10
+ { name: 'Set', predicate: setPredicate, checker: setChecker },
9
11
  { name: 'ArrayBuffer', predicate: arrayBufferPredicate, checker: arrayBufferChecker },
10
12
  { name: 'Array', predicate: arrayPredicate, checker: arrayChecker },
11
13
  { name: 'DataFrame', predicate: dataframePredicate, checker: dataframeChecker },
@@ -55,6 +57,39 @@ function floatChecker(actual, expected, state) {
55
57
  return [{ msg }];
56
58
  }
57
59
  }
60
+ function mapPredicate(actual, expected) {
61
+ return (actual instanceof Map && expected instanceof Map);
62
+ }
63
+ function mapChecker(actual, expected, _state, checkDeep) {
64
+ const errors = [];
65
+ if (actual.size !== expected.size) {
66
+ const err = { msg: `Maps are of different size: actual map size is ${actual.size} ` +
67
+ `and expected map size is ${expected.size}` };
68
+ errors.push(err);
69
+ }
70
+ for (const k of expected.keys()) {
71
+ const aval = actual.get(k);
72
+ const exval = expected.get(k);
73
+ checkDeep([String(k)], aval, exval);
74
+ }
75
+ return errors;
76
+ }
77
+ function setPredicate(actual, expected) {
78
+ return (actual instanceof Set && expected instanceof Set);
79
+ }
80
+ function setChecker(actual, expected, _state, checkDeep) {
81
+ const errors = [];
82
+ if (actual.size !== expected.size) {
83
+ const err = { msg: `Sets are of different size: actual set size is ${actual.size} ` +
84
+ `and expected set size is ${expected.size}` };
85
+ errors.push(err);
86
+ }
87
+ for (const exval of expected.values()) {
88
+ const aval = actual.has(exval);
89
+ checkDeep([String(exval)], aval, true);
90
+ }
91
+ return errors;
92
+ }
58
93
  function arrayPredicate(actual, expected) {
59
94
  return (actual instanceof Array && expected instanceof Array);
60
95
  }
@@ -186,4 +221,4 @@ class ExpectRunner {
186
221
  return msg;
187
222
  }
188
223
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXhwZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFvQnRDLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0I7SUFDOUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQztJQUM5RCxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQy9ELEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUM7SUFDaEUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQ2xFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUM7SUFDakUsRUFBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUM7SUFDbkYsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBQztJQUNqRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQztJQUM3RSxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFDO0NBQ3JFLENBQUM7QUFHRixtQ0FBbUM7QUFDbkMsTUFBTSxPQUFPLFdBQVksU0FBUSxLQUFLO0NBQUc7QUFXekMsYUFBYTtB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QUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTs7WUFDdEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFBLENBQUMsQ0FBQyxJQUFJLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbi8vIGN1c3RvbSBjaGVja2VycyBpbnRlcmZhY2VzIEFQSSBmb3IgYWRkaW5nIGN1c3RvbSBjaGVja3NcbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tlckVycm9yIHtcbiAgcGF0aD86IHN0cmluZ1tdLFxuICBtc2c6IHN0cmluZyxcbn1cblxuZXhwb3J0IHR5cGUgTmVzdGVkQ2hlY2tlciA9IChwYXRoOiBzdHJpbmdbXSwgYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpID0+IHZvaWRcbmV4cG9ydCB0eXBlIEV4cGVjdFByZWRpY2F0ZSA9IChhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkgPT4gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIEV4cGVjdENoZWNrZXIgPVxuICAoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnksIHN0YXRlOiBSZWFkb25seTxFeHBlY3RSdW5uZXJTdGF0ZT4sIGNoZWNrTmVzdGVkOiBOZXN0ZWRDaGVja2VyKSA9PiBDaGVja2VyRXJyb3JbXSB8IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tlckl0ZW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHByZWRpY2F0ZTogRXhwZWN0UHJlZGljYXRlO1xuICBjaGVja2VyOiBFeHBlY3RDaGVja2VyO1xufVxuXG5cbi8vIGRlZmF1bHQgY2hlY2tlcnMgc2VxdWVuY2UsIG9yZGVyIG1hdHRlcnMhXG5leHBvcnQgY29uc3QgZGVmYXVsQ2hlY2tlcnNTZXE6IENoZWNrZXJJdGVtW10gPSBbXG4gIHtuYW1lOiAnTnVsbCcsIHByZWRpY2F0ZTogbnVsbFByZWRpY2F0ZSwgY2hlY2tlcjogbnVsbENoZWNrZXJ9LFxuICB7bmFtZTogJ0Jvb2xlYW4nLCBwcmVkaWNhdGU6IGJvb2xQcmVkaWNhdGUsIGNoZWNrZXI6IGVxQ2hlY2tlcn0sXG4gIHtuYW1lOiAnU3RyaW5nJywgcHJlZGljYXRlOiBzdHJpbmdQcmVkaWNhdGUsIGNoZWNrZXI6IGVxQ2hlY2tlcn0sXG4gIHtuYW1lOiAnSW50ZWdlcicsIHByZWRpY2F0ZTogaW50ZWdlclByZWRpY2F0ZSwgY2hlY2tlcjogZXFDaGVja2VyfSxcbiAge25hbWU6ICdGbG9hdCcsIHByZWRpY2F0ZTogZmxvYXRQcmVkaWNhdGUsIGNoZWNrZXI6IGZsb2F0Q2hlY2tlcn0sXG4gIHtuYW1lOiAnQXJyYXlCdWZmZXInLCBwcmVkaWNhdGU6IGFycmF5QnVmZmVyUHJlZGljYXRlLCBjaGVja2VyOiBhcnJheUJ1ZmZlckNoZWNrZXJ9LFxuICB7bmFtZTogJ0FycmF5JywgcHJlZGljYXRlOiBhcnJheVByZWRpY2F0ZSwgY2hlY2tlcjogYXJyYXlDaGVja2VyfSxcbiAge25hbWU6ICdEYXRhRnJhbWUnLCBwcmVkaWNhdGU6IGRhdGFmcmFtZVByZWRpY2F0ZSwgY2hlY2tlcjogZGF0YWZyYW1lQ2hlY2tlcn0sXG4gIHtuYW1lOiAnT2JqZWN0JywgcHJlZGljYXRlOiBvYmplY3RQcmVkaWNhdGUsIGNoZWNrZXI6IG9iamVjdENoZWNrZXJ9LFxuXTtcblxuXG4vLyBjdXN0b20gZXJyb3IgY2xhc3MsIGp1c3QgaW4gY2FzZVxuZXhwb3J0IGNsYXNzIEV4cGVjdEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLy8gZXhwZWN0RGVlcEVxdWFsIG9wdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgRXhwZWN0RGVlcEVxdWFsT3B0aW9ucyB7XG4gIGZsb2F0VG9sZXJhbmNlPzogbnVtYmVyLFxuICBtYXhFcnJvcnNSZXBvcnQ/OiBudW1iZXIsXG4gIG1heERlcHRoPzogbnVtYmVyLFxuICBwcmVmaXg/OiBzdHJpbmcsXG4gIGNoZWNrZXJzU2VxPzogQ2hlY2tlckl0ZW1bXSxcbn1cblxuLy8gcHVibGljIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdERlZXBFcXVhbChhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSwgb3B0aW9ucz86IEV4cGVjdERlZXBFcXVhbE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3QgcnVubmVyID0gbmV3IEV4cGVjdFJ1bm5lcihvcHRpb25zKTtcbiAgcnVubmVyLnJ1bihhY3R1YWwsIGV4cGVjdGVkKTtcbn1cblxuLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsc1xuZXhwb3J0IGludGVyZmFjZSBFeHBlY3RSdW5uZXJTdGF0ZSB7XG4gIG9wdGlvbnM6IFJlcXVpcmVkPEV4cGVjdERlZXBFcXVhbE9wdGlvbnM+O1xuICBlcnJvcnM6IENoZWNrZXJFcnJvcltdO1xuICBjdXJyZW50UGF0aDogc3RyaW5nW107XG59XG5cblxuZnVuY3Rpb24gbnVsbFByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gYWN0dWFsID09IG51bGwgJiYgZXhwZWN0ZWQgPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gbnVsbENoZWNrZXIoKSB7XG4gIHJldHVybjtcbn1cblxuXG5mdW5jdGlvbiBpbnRlZ2VyUHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAoTnVtYmVyLmlzSW50ZWdlcihhY3R1YWwpICYmIE51bWJlci5pc0ludGVnZXIoZXhwZWN0ZWQpKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5nUHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAodHlwZW9mIGFjdHVhbCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyk7XG59XG5cbmZ1bmN0aW9uIGJvb2xQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuICh0eXBlb2YgYWN0dWFsID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnYm9vbGVhbicpO1xufVxuXG5mdW5jdGlvbiBlcUNoZWNrZXIoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgY29uc3QgYXJlRXF1YWwgPSBhY3R1YWwgPT09IGV4cGVjdGVkO1xuICBpZiAoIWFyZUVxdWFsKSB7XG4gICAgY29uc3QgbXNnID0gYEV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9YDtcbiAgICByZXR1cm4gW3ttc2d9XTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGZsb2F0UHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAodHlwZW9mIGFjdHVhbCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnbnVtYmVyJyk7XG59XG5cbmZ1bmN0aW9uIGZsb2F0Q2hlY2tlcihhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSwgc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPik6IENoZWNrZXJFcnJvcltdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKChhY3R1YWwgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAmJiBleHBlY3RlZCA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB8fFxuICAgIChhY3R1YWwgPT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSAmJiBleHBlY3RlZCA9PT0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSB8fFxuICAgIChpc05hTihhY3R1YWwpICYmIGlzTmFOKGV4cGVjdGVkKSkpXG4gICAgcmV0dXJuO1xuICBjb25zdCBhcmVFcXVhbCA9IE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8IHN0YXRlLm9wdGlvbnMuZmxvYXRUb2xlcmFuY2U7XG4gIGlmICghYXJlRXF1YWwpIHtcbiAgICBjb25zdCBtc2cgPSBgRXhwZWN0ZWQgJHtleHBlY3RlZH0sIGdvdCAke2FjdHVhbH0gKHRvbGVyYW5jZSA9ICR7c3RhdGUub3B0aW9ucy5mbG9hdFRvbGVyYW5jZX0pYDtcbiAgICByZXR1cm4gW3ttc2d9XTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGFycmF5UHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAoYWN0dWFsIGluc3RhbmNlb2YgQXJyYXkgJiYgZXhwZWN0ZWQgaW5zdGFuY2VvZiBBcnJheSk7XG59XG5cbmZ1bmN0aW9uIGFycmF5Q2hlY2tlcihhY3R1YWw6IGFueVtdLCBleHBlY3RlZDogYW55W10sXG4gIF9zdGF0ZTogUmVhZG9ubHk8RXhwZWN0UnVubmVyU3RhdGU+LCBjaGVja0RlZXA6IE5lc3RlZENoZWNrZXIpOiBDaGVja2VyRXJyb3JbXSB7XG4gIGNvbnN0IGVycm9yczogQ2hlY2tlckVycm9yW10gPSBbXTtcbiAgaWYgKGFjdHVhbC5sZW5ndGggIT09IGV4cGVjdGVkLmxlbmd0aCkge1xuICAgIGNvbnN0IGVyciA9IHttc2c6IGBBcnJheXMgYXJlIG9mIGRpZmZlcmVudCBsZW5ndGg6IGFjdHVhbCBhcnJheSBsZW5ndGggaXMgJHthY3R1YWwubGVuZ3RofSBgICtcbiAgICAgIGBhbmQgZXhwZWN0ZWQgYXJyYXkgbGVuZ3RoIGlzICR7ZXhwZWN0ZWQubGVuZ3RofWB9O1xuICAgIGVycm9ycy5wdXNoKGVycik7XG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyBpKyspXG4gICAgY2hlY2tEZWVwKFtTdHJpbmcoaSldLCBhY3R1YWxbaV0sIGV4cGVjdGVkW2ldKTtcblxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5cbmZ1bmN0aW9uIGRhdGFmcmFtZVByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKGFjdHVhbCBpbnN0YW5jZW9mIERHLkRhdGFGcmFtZSAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIERHLkRhdGFGcmFtZSk7XG59XG5cbmZ1bmN0aW9uIGRhdGFmcmFtZUNoZWNrZXIoYWN0dWFsOiBERy5EYXRhRnJhbWUsIGV4cGVjdGVkOiBERy5EYXRhRnJhbWUsXG4gIF9zdGF0ZTogUmVhZG9ubHk8RXhwZWN0UnVubmVyU3RhdGU+LCBjaGVja0RlZXA6IE5lc3RlZENoZWNrZXIpOiBDaGVja2VyRXJyb3JbXSB7XG4gIGNvbnN0IGVycm9yczogQ2hlY2tlckVycm9yW10gPSBbXTtcbiAgaWYgKGFjdHVhbC5yb3dDb3VudCAhPT0gZXhwZWN0ZWQucm93Q291bnQpIHtcbiAgICBjb25zdCBlcnIgPSB7bXNnOiBgRGF0YWZyYW1lcyBoYXMgZGlmZmVyZW50IHJvdyBjb3VudDogYWN0dWFsIHJvdyBjb3VudCBpcyAke2FjdHVhbC5yb3dDb3VudH0gYCArXG4gICAgICBgYW5kIGV4cGVjdGVkIHJvdyBjb3VudCBpcyAke2V4cGVjdGVkLnJvd0NvdW50fWB9O1xuICAgIGVycm9ycy5wdXNoKGVycik7XG4gIH1cbiAgZm9yIChjb25zdCBjb2x1bW4gb2YgZXhwZWN0ZWQuY29sdW1ucykge1xuICAgIGNvbnN0IGFjdHVhbENvbHVtbiA9IGFjdHVhbC5jb2x1bW5zLmJ5TmFtZShjb2x1bW4ubmFtZSk7XG4gICAgaWYgKCFhY3R1YWxDb2x1bW4pIHtcbiAgICAgIGNvbnN0IGVyciA9IHttc2c6IGBDb2x1bW4gJHtjb2x1bW4ubmFtZX0gbm90IGZvdW5kYH07XG4gICAgICBlcnJvcnMucHVzaChlcnIpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhY3R1YWxDb2x1bW4udHlwZSAhPT0gY29sdW1uLnR5cGUpIHtcbiAgICAgIGNvbnN0IGVyciA9IHttc2c6IGBDb2x1bW4gJHtjb2x1bW4ubmFtZX0gdHlwZSBleHBlY3RlZCAke2NvbHVtbi50eXBlfSBnb3QgJHthY3R1YWxDb2x1bW4udHlwZX1gfTtcbiAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBlY3RlZC5yb3dDb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbENvbHVtbi5nZXQoaSk7XG4gICAgICBjb25zdCBleHBlY3RlZFZhbHVlID0gY29sdW1uLmdldChpKTtcbiAgICAgIGNoZWNrRGVlcChbY29sdW1uLm5hbWUsIFN0cmluZyhpKV0sIGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuXG5mdW5jdGlvbiBhcnJheUJ1ZmZlclByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKGFjdHVhbCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyICYmIGV4cGVjdGVkIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xufVxuXG5mdW5jdGlvbiBhcnJheUJ1ZmZlckNoZWNrZXIoYWN0dWFsOiBBcnJheUJ1ZmZlciwgZXhwZWN0ZWQ6IEFycmF5QnVmZmVyLFxuICBzdGF0ZTogUmVhZG9ubHk8RXhwZWN0UnVubmVyU3RhdGU+LCBjaGVja0RlZXA6IE5lc3RlZENoZWNrZXIpIHtcbiAgcmV0dXJuIGFycmF5Q2hlY2tlcihBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGFjdHVhbCkpLCBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGV4cGVjdGVkKSksIHN0YXRlLCBjaGVja0RlZXApO1xufVxuXG5cbmZ1bmN0aW9uIG9iamVjdFByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKHR5cGVvZiBhY3R1YWwgPT09ICdvYmplY3QnICYmIHR5cGVvZiBleHBlY3RlZCA9PT0gJ29iamVjdCcpO1xufVxuXG5mdW5jdGlvbiBvYmplY3RDaGVja2VyKGFjdHVhbDogUmVjb3JkPGFueSwgYW55PiwgZXhwZWN0ZWQ6IFJlY29yZDxhbnksIGFueT4sXG4gIF9zdGF0ZTogUmVhZG9ubHk8RXhwZWN0UnVubmVyU3RhdGU+LCBjaGVja0RlZXA6IE5lc3RlZENoZWNrZXIpOiBDaGVja2VyRXJyb3JbXSB7XG4gIGNvbnN0IGVycm9yczogQ2hlY2tlckVycm9yW10gPSBbXTtcbiAgZm9yIChjb25zdCBbZXhwZWN0ZWRLZXksIGV4cGVjdGVkVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGV4cGVjdGVkKSkge1xuICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gYWN0dWFsW2V4cGVjdGVkS2V5XTtcbiAgICBjaGVja0RlZXAoW2V4cGVjdGVkS2V5XSwgYWN0dWFsVmFsdWUsIGV4cGVjdGVkVmFsdWUpO1xuICB9XG4gIHJldHVybiBlcnJvcnM7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBSZXF1aXJlZDxFeHBlY3REZWVwRXF1YWxPcHRpb25zPiA9IHtcbiAgZmxvYXRUb2xlcmFuY2U6IDAuMDAxLFxuICBtYXhFcnJvcnNSZXBvcnQ6IDUsXG4gIG1heERlcHRoOiAxMjgsXG4gIGNoZWNrZXJzU2VxOiBkZWZhdWxDaGVja2Vyc1NlcSxcbiAgcHJlZml4OiAnJyxcbn07XG5cblxuY2xhc3MgRXhwZWN0UnVubmVyIHtcbiAgcHJpdmF0ZSBvcHRpb25zOiBSZXF1aXJlZDxFeHBlY3REZWVwRXF1YWxPcHRpb25zPjtcbiAgcHJpdmF0ZSBzdGF0ZTogRXhwZWN0UnVubmVyU3RhdGU7XG5cbiAgY29uc3RydWN0b3Iob3BzOiBFeHBlY3REZWVwRXF1YWxPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7Li4uZGVmYXVsdE9wdGlvbnMsIC4uLm9wc307XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGVycm9yczogW10sXG4gICAgICBjdXJyZW50UGF0aDogW10sXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBydW4oYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm1hdGNoQ2hlY2tlcihhY3R1YWwsIGV4cGVjdGVkKTtcbiAgICB0aGlzLmNoZWNrRXJyb3JzTGltaXQoMCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRGVlcChwYXRoOiBzdHJpbmdbXSwgYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgICBjb25zdCBwYXRoTGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgdGhpcy5zdGF0ZS5jdXJyZW50UGF0aC5wdXNoKC4uLnBhdGgpO1xuICAgIGlmICh0aGlzLnN0YXRlLmN1cnJlbnRQYXRoLmxlbmd0aCA+IHRoaXMub3B0aW9ucy5tYXhEZXB0aClcbiAgICAgIHRocm93IG5ldyBFeHBlY3RFcnJvcihgTWF4IGRlcHRoICR7dGhpcy5vcHRpb25zLm1heERlcHRofSBpcyBleGNlZWRlZCwgcG90ZW50aWFsbHkgYSBjaXJjdWxhciBzdHJ1Y3R1cmVgKTtcblxuICAgIHRoaXMubWF0Y2hDaGVja2VyKGFjdHVhbCwgZXhwZWN0ZWQpO1xuICAgIHRoaXMuc3RhdGUuY3VycmVudFBhdGguc3BsaWNlKC1wYXRoTGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hDaGVja2VyKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB7cHJlZGljYXRlLCBjaGVja2VyfSBvZiB0aGlzLm9wdGlvbnMuY2hlY2tlcnNTZXEpIHtcbiAgICAgIGlmIChwcmVkaWNhdGUoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBjb25zdCBlcnJvcnMgPSBjaGVja2VyKGFjdHVhbCwgZXhwZWN0ZWQsIHRoaXMuc3RhdGUsIHRoaXMuY2hlY2tEZWVwLmJpbmQodGhpcykpO1xuICAgICAgICBpZiAoZXJyb3JzKVxuICAgICAgICAgIGVycm9ycy5tYXAoKGUpID0+IHRoaXMuYWRkRXJyb3IoZSkpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICBjb25zdCBlcnIgPSB7bXNnOiBgVHlwZSBtaXNtYXRjaCBvciBubyBjaGVja2VyIGRlZmluZWQ6IGV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9YH07XG4gICAgICB0aGlzLmFkZEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFcnJvcihlcnI6IENoZWNrZXJFcnJvcik6IHZvaWQge1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gWy4uLih0aGlzLnN0YXRlLmN1cnJlbnRQYXRoID8/IFtdKSwgLi4uKGVyci5wYXRoID8/IFtdKV07XG4gICAgY29uc3QgZmVycjogQ2hlY2tlckVycm9yID0ge1xuICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgICBtc2c6IGVyci5tc2csXG4gICAgfTtcbiAgICB0aGlzLnN0YXRlLmVycm9ycy5wdXNoKGZlcnIpO1xuICAgIHRoaXMuY2hlY2tFcnJvcnNMaW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0Vycm9yc0xpbWl0KGxpbWl0ID0gdGhpcy5vcHRpb25zLm1heEVycm9yc1JlcG9ydCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmVycm9ycy5sZW5ndGggPiBsaW1pdCkge1xuICAgICAgY29uc3QgcmVwb3J0ID0gdGhpcy5tYWtlUmVwb3J0KCk7XG4gICAgICB0aHJvdyBuZXcgRXhwZWN0RXJyb3IocmVwb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1ha2VSZXBvcnQoKSB7XG4gICAgY29uc3QgbXNnID0gdGhpcy5zdGF0ZS5lcnJvcnMubWFwKChlKSA9PiB7XG4gICAgICBjb25zdCBwcmVmaXggPSAoZS5wYXRoID8/IFtdKS5tYXAoKGEpID0+IGBbJyR7U3RyaW5nKGEpfSddYCkuam9pbignLicpO1xuICAgICAgY29uc3QgbXNnID0gcHJlZml4ID8gYCR7cHJlZml4fTogJHtlLm1zZ31gIDogZS5tc2c7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnByZWZpeCA/IGAke3RoaXMub3B0aW9ucy5wcmVmaXh9OiAke21zZ31gIDogbXNnO1xuICAgIH0pLnNsaWNlKDAsIHRoaXMub3B0aW9ucy5tYXhFcnJvcnNSZXBvcnQpLmpvaW4oJ1xcbicpO1xuICAgIHJldHVybiBtc2c7XG4gIH1cbn1cbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXhwZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFvQnRDLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0I7SUFDOUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBQztJQUM5RCxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQy9ELEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUM7SUFDaEUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFDO0lBQ2xFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUM7SUFDakUsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQztJQUMzRCxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFDO0lBQzNELEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFDO0lBQ25GLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUM7SUFDakUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUM7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QU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG4vLyBjdXN0b20gY2hlY2tlcnMgaW50ZXJmYWNlcyBBUEkgZm9yIGFkZGluZyBjdXN0b20gY2hlY2tzXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrZXJFcnJvciB7XG4gIHBhdGg/OiBzdHJpbmdbXSxcbiAgbXNnOiBzdHJpbmcsXG59XG5cbmV4cG9ydCB0eXBlIE5lc3RlZENoZWNrZXIgPSAocGF0aDogc3RyaW5nW10sIGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSA9PiB2b2lkXG5leHBvcnQgdHlwZSBFeHBlY3RQcmVkaWNhdGUgPSAoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpID0+IGJvb2xlYW47XG5leHBvcnQgdHlwZSBFeHBlY3RDaGVja2VyID1cbiAgKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55LCBzdGF0ZTogUmVhZG9ubHk8RXhwZWN0UnVubmVyU3RhdGU+LCBjaGVja05lc3RlZDogTmVzdGVkQ2hlY2tlcikgPT4gQ2hlY2tlckVycm9yW10gfCB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrZXJJdGVtIHtcbiAgbmFtZTogc3RyaW5nO1xuICBwcmVkaWNhdGU6IEV4cGVjdFByZWRpY2F0ZTtcbiAgY2hlY2tlcjogRXhwZWN0Q2hlY2tlcjtcbn1cblxuXG4vLyBkZWZhdWx0IGNoZWNrZXJzIHNlcXVlbmNlLCBvcmRlciBtYXR0ZXJzIVxuZXhwb3J0IGNvbnN0IGRlZmF1bENoZWNrZXJzU2VxOiBDaGVja2VySXRlbVtdID0gW1xuICB7bmFtZTogJ051bGwnLCBwcmVkaWNhdGU6IG51bGxQcmVkaWNhdGUsIGNoZWNrZXI6IG51bGxDaGVja2VyfSxcbiAge25hbWU6ICdCb29sZWFuJywgcHJlZGljYXRlOiBib29sUHJlZGljYXRlLCBjaGVja2VyOiBlcUNoZWNrZXJ9LFxuICB7bmFtZTogJ1N0cmluZycsIHByZWRpY2F0ZTogc3RyaW5nUHJlZGljYXRlLCBjaGVja2VyOiBlcUNoZWNrZXJ9LFxuICB7bmFtZTogJ0ludGVnZXInLCBwcmVkaWNhdGU6IGludGVnZXJQcmVkaWNhdGUsIGNoZWNrZXI6IGVxQ2hlY2tlcn0sXG4gIHtuYW1lOiAnRmxvYXQnLCBwcmVkaWNhdGU6IGZsb2F0UHJlZGljYXRlLCBjaGVja2VyOiBmbG9hdENoZWNrZXJ9LFxuICB7bmFtZTogJ01hcCcsIHByZWRpY2F0ZTogbWFwUHJlZGljYXRlLCBjaGVja2VyOiBtYXBDaGVja2VyfSxcbiAge25hbWU6ICdTZXQnLCBwcmVkaWNhdGU6IHNldFByZWRpY2F0ZSwgY2hlY2tlcjogc2V0Q2hlY2tlcn0sXG4gIHtuYW1lOiAnQXJyYXlCdWZmZXInLCBwcmVkaWNhdGU6IGFycmF5QnVmZmVyUHJlZGljYXRlLCBjaGVja2VyOiBhcnJheUJ1ZmZlckNoZWNrZXJ9LFxuICB7bmFtZTogJ0FycmF5JywgcHJlZGljYXRlOiBhcnJheVByZWRpY2F0ZSwgY2hlY2tlcjogYXJyYXlDaGVja2VyfSxcbiAge25hbWU6ICdEYXRhRnJhbWUnLCBwcmVkaWNhdGU6IGRhdGFmcmFtZVByZWRpY2F0ZSwgY2hlY2tlcjogZGF0YWZyYW1lQ2hlY2tlcn0sXG4gIHtuYW1lOiAnT2JqZWN0JywgcHJlZGljYXRlOiBvYmplY3RQcmVkaWNhdGUsIGNoZWNrZXI6IG9iamVjdENoZWNrZXJ9LFxuXTtcblxuXG4vLyBjdXN0b20gZXJyb3IgY2xhc3MsIGp1c3QgaW4gY2FzZVxuZXhwb3J0IGNsYXNzIEV4cGVjdEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuLy8gZXhwZWN0RGVlcEVxdWFsIG9wdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgRXhwZWN0RGVlcEVxdWFsT3B0aW9ucyB7XG4gIGZsb2F0VG9sZXJhbmNlPzogbnVtYmVyLFxuICBtYXhFcnJvcnNSZXBvcnQ/OiBudW1iZXIsXG4gIG1heERlcHRoPzogbnVtYmVyLFxuICBwcmVmaXg/OiBzdHJpbmcsXG4gIGNoZWNrZXJzU2VxPzogQ2hlY2tlckl0ZW1bXSxcbn1cblxuLy8gcHVibGljIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdERlZXBFcXVhbChhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSwgb3B0aW9ucz86IEV4cGVjdERlZXBFcXVhbE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3QgcnVubmVyID0gbmV3IEV4cGVjdFJ1bm5lcihvcHRpb25zKTtcbiAgcnVubmVyLnJ1bihhY3R1YWwsIGV4cGVjdGVkKTtcbn1cblxuLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsc1xuZXhwb3J0IGludGVyZmFjZSBFeHBlY3RSdW5uZXJTdGF0ZSB7XG4gIG9wdGlvbnM6IFJlcXVpcmVkPEV4cGVjdERlZXBFcXVhbE9wdGlvbnM+O1xuICBlcnJvcnM6IENoZWNrZXJFcnJvcltdO1xuICBjdXJyZW50UGF0aDogc3RyaW5nW107XG59XG5cblxuZnVuY3Rpb24gbnVsbFByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gYWN0dWFsID09IG51bGwgJiYgZXhwZWN0ZWQgPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gbnVsbENoZWNrZXIoKSB7XG4gIHJldHVybjtcbn1cblxuXG5mdW5jdGlvbiBpbnRlZ2VyUHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAoTnVtYmVyLmlzSW50ZWdlcihhY3R1YWwpICYmIE51bWJlci5pc0ludGVnZXIoZXhwZWN0ZWQpKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5nUHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAodHlwZW9mIGFjdHVhbCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyk7XG59XG5cbmZ1bmN0aW9uIGJvb2xQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuICh0eXBlb2YgYWN0dWFsID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnYm9vbGVhbicpO1xufVxuXG5mdW5jdGlvbiBlcUNoZWNrZXIoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgY29uc3QgYXJlRXF1YWwgPSBhY3R1YWwgPT09IGV4cGVjdGVkO1xuICBpZiAoIWFyZUVxdWFsKSB7XG4gICAgY29uc3QgbXNnID0gYEV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9YDtcbiAgICByZXR1cm4gW3ttc2d9XTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGZsb2F0UHJlZGljYXRlKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gIHJldHVybiAodHlwZW9mIGFjdHVhbCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnbnVtYmVyJyk7XG59XG5cbmZ1bmN0aW9uIGZsb2F0Q2hlY2tlcihhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSwgc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPik6IENoZWNrZXJFcnJvcltdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKChhY3R1YWwgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSAmJiBleHBlY3RlZCA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB8fFxuICAgIChhY3R1YWwgPT09IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSAmJiBleHBlY3RlZCA9PT0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSB8fFxuICAgIChpc05hTihhY3R1YWwpICYmIGlzTmFOKGV4cGVjdGVkKSkpXG4gICAgcmV0dXJuO1xuICBjb25zdCBhcmVFcXVhbCA9IE1hdGguYWJzKGFjdHVhbCAtIGV4cGVjdGVkKSA8IHN0YXRlLm9wdGlvbnMuZmxvYXRUb2xlcmFuY2U7XG4gIGlmICghYXJlRXF1YWwpIHtcbiAgICBjb25zdCBtc2cgPSBgRXhwZWN0ZWQgJHtleHBlY3RlZH0sIGdvdCAke2FjdHVhbH0gKHRvbGVyYW5jZSA9ICR7c3RhdGUub3B0aW9ucy5mbG9hdFRvbGVyYW5jZX0pYDtcbiAgICByZXR1cm4gW3ttc2d9XTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIG1hcFByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKGFjdHVhbCBpbnN0YW5jZW9mIE1hcCAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIE1hcCk7XG59XG5cbmZ1bmN0aW9uIG1hcENoZWNrZXIoYWN0dWFsOiBNYXA8YW55LCBhbnk+LCBleHBlY3RlZDogTWFwPGFueSwgYW55PixcbiAgX3N0YXRlOiBSZWFkb25seTxFeHBlY3RSdW5uZXJTdGF0ZT4sIGNoZWNrRGVlcDogTmVzdGVkQ2hlY2tlclxuKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGlmIChhY3R1YWwuc2l6ZSAhPT0gZXhwZWN0ZWQuc2l6ZSkge1xuICAgIGNvbnN0IGVyciA9IHttc2c6IGBNYXBzIGFyZSBvZiBkaWZmZXJlbnQgc2l6ZTogYWN0dWFsIG1hcCBzaXplIGlzICR7YWN0dWFsLnNpemV9IGAgK1xuICAgICAgYGFuZCBleHBlY3RlZCBtYXAgc2l6ZSBpcyAke2V4cGVjdGVkLnNpemV9YH07XG4gICAgZXJyb3JzLnB1c2goZXJyKTtcbiAgfVxuICBmb3IgKGNvbnN0IGsgb2YgZXhwZWN0ZWQua2V5cygpKSB7XG4gICAgY29uc3QgYXZhbCA9IGFjdHVhbC5nZXQoayk7XG4gICAgY29uc3QgZXh2YWwgPSBleHBlY3RlZC5nZXQoayk7XG4gICAgY2hlY2tEZWVwKFtTdHJpbmcoayldLCBhdmFsLCBleHZhbClcbiAgfVxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5cbmZ1bmN0aW9uIHNldFByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKGFjdHVhbCBpbnN0YW5jZW9mIFNldCAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIFNldCk7XG59XG5cbmZ1bmN0aW9uIHNldENoZWNrZXIoYWN0dWFsOiBTZXQ8YW55PiwgZXhwZWN0ZWQ6IFNldDxhbnk+LFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyXG4pOiBDaGVja2VyRXJyb3JbXSB7XG4gIGNvbnN0IGVycm9yczogQ2hlY2tlckVycm9yW10gPSBbXTtcbiAgaWYgKGFjdHVhbC5zaXplICE9PSBleHBlY3RlZC5zaXplKSB7XG4gICAgY29uc3QgZXJyID0ge21zZzogYFNldHMgYXJlIG9mIGRpZmZlcmVudCBzaXplOiBhY3R1YWwgc2V0IHNpemUgaXMgJHthY3R1YWwuc2l6ZX0gYCArXG4gICAgICBgYW5kIGV4cGVjdGVkIHNldCBzaXplIGlzICR7ZXhwZWN0ZWQuc2l6ZX1gfTtcbiAgICBlcnJvcnMucHVzaChlcnIpO1xuICB9XG4gIGZvciAoY29uc3QgZXh2YWwgb2YgZXhwZWN0ZWQudmFsdWVzKCkpIHtcbiAgICBjb25zdCBhdmFsID0gYWN0dWFsLmhhcyhleHZhbCk7XG4gICAgY2hlY2tEZWVwKFtTdHJpbmcoZXh2YWwpXSwgYXZhbCwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuXG5mdW5jdGlvbiBhcnJheVByZWRpY2F0ZShhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICByZXR1cm4gKGFjdHVhbCBpbnN0YW5jZW9mIEFycmF5ICYmIGV4cGVjdGVkIGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG5mdW5jdGlvbiBhcnJheUNoZWNrZXIoYWN0dWFsOiBhbnlbXSwgZXhwZWN0ZWQ6IGFueVtdLFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGlmIChhY3R1YWwubGVuZ3RoICE9PSBleHBlY3RlZC5sZW5ndGgpIHtcbiAgICBjb25zdCBlcnIgPSB7bXNnOiBgQXJyYXlzIGFyZSBvZiBkaWZmZXJlbnQgbGVuZ3RoOiBhY3R1YWwgYXJyYXkgbGVuZ3RoIGlzICR7YWN0dWFsLmxlbmd0aH0gYCArXG4gICAgICBgYW5kIGV4cGVjdGVkIGFycmF5IGxlbmd0aCBpcyAke2V4cGVjdGVkLmxlbmd0aH1gfTtcbiAgICBlcnJvcnMucHVzaChlcnIpO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0dWFsLmxlbmd0aDsgaSsrKVxuICAgIGNoZWNrRGVlcChbU3RyaW5nKGkpXSwgYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuXG5mdW5jdGlvbiBkYXRhZnJhbWVQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuIChhY3R1YWwgaW5zdGFuY2VvZiBERy5EYXRhRnJhbWUgJiYgZXhwZWN0ZWQgaW5zdGFuY2VvZiBERy5EYXRhRnJhbWUpO1xufVxuXG5mdW5jdGlvbiBkYXRhZnJhbWVDaGVja2VyKGFjdHVhbDogREcuRGF0YUZyYW1lLCBleHBlY3RlZDogREcuRGF0YUZyYW1lLFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGlmIChhY3R1YWwucm93Q291bnQgIT09IGV4cGVjdGVkLnJvd0NvdW50KSB7XG4gICAgY29uc3QgZXJyID0ge21zZzogYERhdGFmcmFtZXMgaGFzIGRpZmZlcmVudCByb3cgY291bnQ6IGFjdHVhbCByb3cgY291bnQgaXMgJHthY3R1YWwucm93Q291bnR9IGAgK1xuICAgICAgYGFuZCBleHBlY3RlZCByb3cgY291bnQgaXMgJHtleHBlY3RlZC5yb3dDb3VudH1gfTtcbiAgICBlcnJvcnMucHVzaChlcnIpO1xuICB9XG4gIGZvciAoY29uc3QgY29sdW1uIG9mIGV4cGVjdGVkLmNvbHVtbnMpIHtcbiAgICBjb25zdCBhY3R1YWxDb2x1bW4gPSBhY3R1YWwuY29sdW1ucy5ieU5hbWUoY29sdW1uLm5hbWUpO1xuICAgIGlmICghYWN0dWFsQ29sdW1uKSB7XG4gICAgICBjb25zdCBlcnIgPSB7bXNnOiBgQ29sdW1uICR7Y29sdW1uLm5hbWV9IG5vdCBmb3VuZGB9O1xuICAgICAgZXJyb3JzLnB1c2goZXJyKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYWN0dWFsQ29sdW1uLnR5cGUgIT09IGNvbHVtbi50eXBlKSB7XG4gICAgICBjb25zdCBlcnIgPSB7bXNnOiBgQ29sdW1uICR7Y29sdW1uLm5hbWV9IHR5cGUgZXhwZWN0ZWQgJHtjb2x1bW4udHlwZX0gZ290ICR7YWN0dWFsQ29sdW1uLnR5cGV9YH07XG4gICAgICBlcnJvcnMucHVzaChlcnIpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwZWN0ZWQucm93Q291bnQ7IGkrKykge1xuICAgICAgY29uc3QgYWN0dWFsVmFsdWUgPSBhY3R1YWxDb2x1bW4uZ2V0KGkpO1xuICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IGNvbHVtbi5nZXQoaSk7XG4gICAgICBjaGVja0RlZXAoW2NvbHVtbi5uYW1lLCBTdHJpbmcoaSldLCBhY3R1YWxWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvcnM7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlCdWZmZXJQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuIChhY3R1YWwgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKTtcbn1cblxuZnVuY3Rpb24gYXJyYXlCdWZmZXJDaGVja2VyKGFjdHVhbDogQXJyYXlCdWZmZXIsIGV4cGVjdGVkOiBBcnJheUJ1ZmZlcixcbiAgc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKSB7XG4gIHJldHVybiBhcnJheUNoZWNrZXIoQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShhY3R1YWwpKSwgQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShleHBlY3RlZCkpLCBzdGF0ZSwgY2hlY2tEZWVwKTtcbn1cblxuXG5mdW5jdGlvbiBvYmplY3RQcmVkaWNhdGUoYWN0dWFsOiBhbnksIGV4cGVjdGVkOiBhbnkpIHtcbiAgcmV0dXJuICh0eXBlb2YgYWN0dWFsID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXhwZWN0ZWQgPT09ICdvYmplY3QnKTtcbn1cblxuZnVuY3Rpb24gb2JqZWN0Q2hlY2tlcihhY3R1YWw6IFJlY29yZDxhbnksIGFueT4sIGV4cGVjdGVkOiBSZWNvcmQ8YW55LCBhbnk+LFxuICBfc3RhdGU6IFJlYWRvbmx5PEV4cGVjdFJ1bm5lclN0YXRlPiwgY2hlY2tEZWVwOiBOZXN0ZWRDaGVja2VyKTogQ2hlY2tlckVycm9yW10ge1xuICBjb25zdCBlcnJvcnM6IENoZWNrZXJFcnJvcltdID0gW107XG4gIGZvciAoY29uc3QgW2V4cGVjdGVkS2V5LCBleHBlY3RlZFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhleHBlY3RlZCkpIHtcbiAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGFjdHVhbFtleHBlY3RlZEtleV07XG4gICAgY2hlY2tEZWVwKFtleHBlY3RlZEtleV0sIGFjdHVhbFZhbHVlLCBleHBlY3RlZFZhbHVlKTtcbiAgfVxuICByZXR1cm4gZXJyb3JzO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogUmVxdWlyZWQ8RXhwZWN0RGVlcEVxdWFsT3B0aW9ucz4gPSB7XG4gIGZsb2F0VG9sZXJhbmNlOiAwLjAwMSxcbiAgbWF4RXJyb3JzUmVwb3J0OiA1LFxuICBtYXhEZXB0aDogMTI4LFxuICBjaGVja2Vyc1NlcTogZGVmYXVsQ2hlY2tlcnNTZXEsXG4gIHByZWZpeDogJycsXG59O1xuXG5cbmNsYXNzIEV4cGVjdFJ1bm5lciB7XG4gIHByaXZhdGUgb3B0aW9uczogUmVxdWlyZWQ8RXhwZWN0RGVlcEVxdWFsT3B0aW9ucz47XG4gIHByaXZhdGUgc3RhdGU6IEV4cGVjdFJ1bm5lclN0YXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wczogRXhwZWN0RGVlcEVxdWFsT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5vcHRpb25zID0gey4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHN9O1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgY3VycmVudFBhdGg6IFtdLFxuICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgcnVuKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5tYXRjaENoZWNrZXIoYWN0dWFsLCBleHBlY3RlZCk7XG4gICAgdGhpcy5jaGVja0Vycm9yc0xpbWl0KDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0RlZXAocGF0aDogc3RyaW5nW10sIGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KSB7XG4gICAgY29uc3QgcGF0aExlbmd0aCA9IHBhdGgubGVuZ3RoO1xuICAgIHRoaXMuc3RhdGUuY3VycmVudFBhdGgucHVzaCguLi5wYXRoKTtcbiAgICBpZiAodGhpcy5zdGF0ZS5jdXJyZW50UGF0aC5sZW5ndGggPiB0aGlzLm9wdGlvbnMubWF4RGVwdGgpXG4gICAgICB0aHJvdyBuZXcgRXhwZWN0RXJyb3IoYE1heCBkZXB0aCAke3RoaXMub3B0aW9ucy5tYXhEZXB0aH0gaXMgZXhjZWVkZWQsIHBvdGVudGlhbGx5IGEgY2lyY3VsYXIgc3RydWN0dXJlYCk7XG5cbiAgICB0aGlzLm1hdGNoQ2hlY2tlcihhY3R1YWwsIGV4cGVjdGVkKTtcbiAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYXRoLnNwbGljZSgtcGF0aExlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoQ2hlY2tlcihhY3R1YWw6IGFueSwgZXhwZWN0ZWQ6IGFueSkge1xuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3Qge3ByZWRpY2F0ZSwgY2hlY2tlcn0gb2YgdGhpcy5vcHRpb25zLmNoZWNrZXJzU2VxKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gY2hlY2tlcihhY3R1YWwsIGV4cGVjdGVkLCB0aGlzLnN0YXRlLCB0aGlzLmNoZWNrRGVlcC5iaW5kKHRoaXMpKTtcbiAgICAgICAgaWYgKGVycm9ycylcbiAgICAgICAgICBlcnJvcnMubWFwKChlKSA9PiB0aGlzLmFkZEVycm9yKGUpKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgY29uc3QgZXJyID0ge21zZzogYFR5cGUgbWlzbWF0Y2ggb3Igbm8gY2hlY2tlciBkZWZpbmVkOiBleHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7YWN0dWFsfWB9O1xuICAgICAgdGhpcy5hZGRFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRXJyb3IoZXJyOiBDaGVja2VyRXJyb3IpOiB2b2lkIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IFsuLi4odGhpcy5zdGF0ZS5jdXJyZW50UGF0aCA/PyBbXSksIC4uLihlcnIucGF0aCA/PyBbXSldO1xuICAgIGNvbnN0IGZlcnI6IENoZWNrZXJFcnJvciA9IHtcbiAgICAgIHBhdGg6IGZ1bGxQYXRoLFxuICAgICAgbXNnOiBlcnIubXNnLFxuICAgIH07XG4gICAgdGhpcy5zdGF0ZS5lcnJvcnMucHVzaChmZXJyKTtcbiAgICB0aGlzLmNoZWNrRXJyb3JzTGltaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tFcnJvcnNMaW1pdChsaW1pdCA9IHRoaXMub3B0aW9ucy5tYXhFcnJvcnNSZXBvcnQpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcnMubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHRoaXMubWFrZVJlcG9ydCgpO1xuICAgICAgdGhyb3cgbmV3IEV4cGVjdEVycm9yKHJlcG9ydCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlUmVwb3J0KCkge1xuICAgIGNvbnN0IG1zZyA9IHRoaXMuc3RhdGUuZXJyb3JzLm1hcCgoZSkgPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gKGUucGF0aCA/PyBbXSkubWFwKChhKSA9PiBgWycke1N0cmluZyhhKX0nXWApLmpvaW4oJy4nKTtcbiAgICAgIGNvbnN0IG1zZyA9IHByZWZpeCA/IGAke3ByZWZpeH06ICR7ZS5tc2d9YCA6IGUubXNnO1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5wcmVmaXggPyBgJHt0aGlzLm9wdGlvbnMucHJlZml4fTogJHttc2d9YCA6IG1zZztcbiAgICB9KS5zbGljZSgwLCB0aGlzLm9wdGlvbnMubWF4RXJyb3JzUmVwb3J0KS5qb2luKCdcXG4nKTtcbiAgICByZXR1cm4gbXNnO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"json-serialization.d.ts","sourceRoot":"","sources":["json-serialization.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,SAAI,UAoB5C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,OAKtC;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,OAE5C;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAUjD"}
1
+ {"version":3,"file":"json-serialization.d.ts","sourceRoot":"","sources":["json-serialization.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,SAAI,UAgC5C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,OAKtC;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,OAE5C;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAcjD"}
@@ -16,6 +16,18 @@ export function serialize(obj, space = 2) {
16
16
  value: Array.from(new Uint8Array(value))
17
17
  };
18
18
  }
19
+ if (value instanceof Map) {
20
+ return {
21
+ [customTypeKey]: 'Map',
22
+ value: Array.from(value)
23
+ };
24
+ }
25
+ if (value instanceof Set) {
26
+ return {
27
+ [customTypeKey]: 'Set',
28
+ value: Array.from(value)
29
+ };
30
+ }
19
31
  return value;
20
32
  }, space);
21
33
  }
@@ -25,7 +37,7 @@ export function deserialize(obj) {
25
37
  export function applyTransformations(obj) {
26
38
  return deserialize(JSON.stringify(obj));
27
39
  }
28
- // just apply df transform if the data
40
+ // just apply data transformations if needed
29
41
  export function transform(_key, value) {
30
42
  if (value && value[customTypeKey] && value.value) {
31
43
  switch (value[customTypeKey]) {
@@ -33,8 +45,12 @@ export function transform(_key, value) {
33
45
  return DG.DataFrame.fromByteArray(new Uint8Array(value.value));
34
46
  case 'ArrayBuffer':
35
47
  return new Uint8Array(value.value).buffer;
48
+ case 'Map':
49
+ return new Map(value.value);
50
+ case 'Set':
51
+ return new Set(value.value);
36
52
  }
37
53
  }
38
54
  return value;
39
55
  }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zZXJpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsianNvbi1zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsaUVBQWlFO0FBQ2pFLGlFQUFpRTtBQUVqRSxNQUFNLGFBQWEsR0FBRyw4QkFBOEIsQ0FBQztBQUVyRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVEsRUFBRSxLQUFLLEdBQUcsQ0FBQztJQUMzQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLEdBQUcsRUFDSCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNkLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDakMsT0FBTztnQkFDTCxDQUFDLGFBQWEsQ0FBQyxFQUFFLFdBQVc7Z0JBQzVCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN2QyxDQUFDO1NBQ0g7UUFDRCxJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUU7WUFDaEMsT0FBTztnQkFDTCxDQUFDLGFBQWEsQ0FBQyxFQUFFLGFBQWE7Z0JBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pDLENBQUM7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxFQUNELEtBQUssQ0FDTixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBVztJQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsR0FBRyxFQUNILFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFRO0lBQzNDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsc0NBQXNDO0FBQ3RDLE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWSxFQUFFLEtBQVU7SUFDaEQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7UUFDaEQsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakUsS0FBSyxhQUFhO2dCQUNoQixPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDM0M7S0FDRjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbi8vIFN1cHBvcnQgZm9yIGpzb24gc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gb2Ygb2JqZWN0cyB0aGF0XG4vLyBpbmNsdWRlIERhdGFGcmFtZXMuIE5vdCBlZmZpY2llbnQsIGludGVuZGVkIGZvciB3cml0aW5nIHRlc3RzLlxuXG5jb25zdCBjdXN0b21UeXBlS2V5ID0gJ19ER19DVVNUT01fU0VSSUFMSVpFRF9UT0tFTl8nO1xuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplKG9iajogYW55LCBzcGFjZSA9IDIpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgIG9iaixcbiAgICAoX2tleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERHLkRhdGFGcmFtZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFtjdXN0b21UeXBlS2V5XTogJ0RhdGFGcmFtZScsXG4gICAgICAgICAgdmFsdWU6IEFycmF5LmZyb20odmFsdWUudG9CeXRlQXJyYXkoKSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW2N1c3RvbVR5cGVLZXldOiAnQXJyYXlCdWZmZXInLFxuICAgICAgICAgIHZhbHVlOiBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KHZhbHVlKSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIHNwYWNlXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZShvYmo6IHN0cmluZykge1xuICByZXR1cm4gSlNPTi5wYXJzZShcbiAgICBvYmosXG4gICAgdHJhbnNmb3JtXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVRyYW5zZm9ybWF0aW9ucyhvYmo6IGFueSkge1xuICByZXR1cm4gZGVzZXJpYWxpemUoSlNPTi5zdHJpbmdpZnkob2JqKSk7XG59XG5cbi8vIGp1c3QgYXBwbHkgZGYgdHJhbnNmb3JtIGlmIHRoZSBkYXRhXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtKF9rZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICBpZiAodmFsdWUgJiYgdmFsdWVbY3VzdG9tVHlwZUtleV0gJiYgdmFsdWUudmFsdWUpIHtcbiAgICBzd2l0Y2ggKHZhbHVlW2N1c3RvbVR5cGVLZXldKSB7XG4gICAgY2FzZSAnRGF0YUZyYW1lJzpcbiAgICAgIHJldHVybiBERy5EYXRhRnJhbWUuZnJvbUJ5dGVBcnJheShuZXcgVWludDhBcnJheSh2YWx1ZS52YWx1ZSkpO1xuICAgIGNhc2UgJ0FycmF5QnVmZmVyJzpcbiAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh2YWx1ZS52YWx1ZSkuYnVmZmVyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zZXJpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsianNvbi1zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsaUVBQWlFO0FBQ2pFLGlFQUFpRTtBQUVqRSxNQUFNLGFBQWEsR0FBRyw4QkFBOEIsQ0FBQztBQUVyRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVEsRUFBRSxLQUFLLEdBQUcsQ0FBQztJQUMzQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLEdBQUcsRUFDSCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNkLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDakMsT0FBTztnQkFDTCxDQUFDLGFBQWEsQ0FBQyxFQUFFLFdBQVc7Z0JBQzVCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN2QyxDQUFDO1NBQ0g7UUFDRCxJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUU7WUFDaEMsT0FBTztnQkFDTCxDQUFDLGFBQWEsQ0FBQyxFQUFFLGFBQWE7Z0JBQzlCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pDLENBQUM7U0FDSDtRQUNELElBQUksS0FBSyxZQUFZLEdBQUcsRUFBRTtZQUN4QixPQUFPO2dCQUNMLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztnQkFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3pCLENBQUM7U0FDSDtRQUNELElBQUksS0FBSyxZQUFZLEdBQUcsRUFBRTtZQUN4QixPQUFPO2dCQUNMLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztnQkFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3pCLENBQUM7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxFQUNELEtBQUssQ0FDTixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBVztJQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsR0FBRyxFQUNILFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFRO0lBQzNDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsNENBQTRDO0FBQzVDLE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBWSxFQUFFLEtBQVU7SUFDaEQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7UUFDaEQsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakUsS0FBSyxhQUFhO2dCQUNoQixPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDNUMsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtLQUNGO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuLy8gU3VwcG9ydCBmb3IganNvbiBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBvZiBvYmplY3RzIHRoYXRcbi8vIGluY2x1ZGUgRGF0YUZyYW1lcy4gTm90IGVmZmljaWVudCwgaW50ZW5kZWQgZm9yIHdyaXRpbmcgdGVzdHMuXG5cbmNvbnN0IGN1c3RvbVR5cGVLZXkgPSAnX0RHX0NVU1RPTV9TRVJJQUxJWkVEX1RPS0VOXyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUob2JqOiBhbnksIHNwYWNlID0gMikge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgb2JqLFxuICAgIChfa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgREcuRGF0YUZyYW1lKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW2N1c3RvbVR5cGVLZXldOiAnRGF0YUZyYW1lJyxcbiAgICAgICAgICB2YWx1ZTogQXJyYXkuZnJvbSh2YWx1ZS50b0J5dGVBcnJheSgpKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBbY3VzdG9tVHlwZUtleV06ICdBcnJheUJ1ZmZlcicsXG4gICAgICAgICAgdmFsdWU6IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkodmFsdWUpKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW2N1c3RvbVR5cGVLZXldOiAnTWFwJyxcbiAgICAgICAgICB2YWx1ZTogQXJyYXkuZnJvbSh2YWx1ZSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFtjdXN0b21UeXBlS2V5XTogJ1NldCcsXG4gICAgICAgICAgdmFsdWU6IEFycmF5LmZyb20odmFsdWUpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBzcGFjZVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemUob2JqOiBzdHJpbmcpIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoXG4gICAgb2JqLFxuICAgIHRyYW5zZm9ybVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm1hdGlvbnMob2JqOiBhbnkpIHtcbiAgcmV0dXJuIGRlc2VyaWFsaXplKEpTT04uc3RyaW5naWZ5KG9iaikpO1xufVxuXG4vLyBqdXN0IGFwcGx5IGRhdGEgdHJhbnNmb3JtYXRpb25zIGlmIG5lZWRlZFxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybShfa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgaWYgKHZhbHVlICYmIHZhbHVlW2N1c3RvbVR5cGVLZXldICYmIHZhbHVlLnZhbHVlKSB7XG4gICAgc3dpdGNoICh2YWx1ZVtjdXN0b21UeXBlS2V5XSkge1xuICAgIGNhc2UgJ0RhdGFGcmFtZSc6XG4gICAgICByZXR1cm4gREcuRGF0YUZyYW1lLmZyb21CeXRlQXJyYXkobmV3IFVpbnQ4QXJyYXkodmFsdWUudmFsdWUpKTtcbiAgICBjYXNlICdBcnJheUJ1ZmZlcic6XG4gICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodmFsdWUudmFsdWUpLmJ1ZmZlcjtcbiAgICBjYXNlICdNYXAnOlxuICAgICAgcmV0dXJuIG5ldyBNYXAodmFsdWUudmFsdWUpO1xuICAgIGNhc2UgJ1NldCc6XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZS52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"forms-viewer.d.ts","sourceRoot":"","sources":["forms-viewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC,OAAO,qBAAqB,CAAC;AAK7B,qBAAa,WAAY,SAAQ,EAAE,CAAC,QAAQ;IAC1C,IAAI,IAAI,IAAI,MAAM,CAA0B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,UAAS;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,cAAc,CAAC;IACjC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,mBAAmB,iBAAuF;IAC1G,qBAAqB,iBAA0F;IAE/G,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAG7B;IAED,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAOjC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAG7B;;IAmED,cAAc,CAAC,EAAE,EAAC,WAAW;IAI7B,eAAe;IA2Bf,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE;IASxC,uBAAuB;IAavB,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI;IAO9C,YAAY;IAgCZ,IAAI,aAAa,aAA6C;IAC9D,IAAI,YAAY,iBAA2E;IAE3F,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IA6ExC,MAAM;CAkBP"}
1
+ {"version":3,"file":"forms-viewer.d.ts","sourceRoot":"","sources":["forms-viewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC,OAAO,qBAAqB,CAAC;AAK7B,qBAAa,WAAY,SAAQ,EAAE,CAAC,QAAQ;IAC1C,IAAI,IAAI,IAAI,MAAM,CAA0B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,UAAS;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,cAAc,CAAC;IACjC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAK;IAC7B,mBAAmB,iBAAuF;IAC1G,qBAAqB,iBAA0F;IAE/G,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAG7B;IAED,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAOjC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAG7B;;IAmED,cAAc,CAAC,EAAE,EAAC,WAAW;IAI7B,eAAe;IA2Bf,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE;IASxC,uBAAuB;IAavB,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI;IAO9C,YAAY;IAgCZ,IAAI,aAAa,aAA6C;IAC9D,IAAI,YAAY,iBAA2E;IAE3F,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IA+ExC,MAAM;CAkBP"}
@@ -182,12 +182,14 @@ export class FormsViewer extends DG.JsViewer {
182
182
  input.readOnly = true;
183
183
  if (this.colorCode) {
184
184
  const grid = ((_a = this.view) !== null && _a !== void 0 ? _a : grok.shell.tv).grid;
185
- const color = grid.cell(name, row).color;
186
- if ((_b = grid.col(name)) === null || _b === void 0 ? void 0 : _b.isTextColorCoded)
187
- input.input.setAttribute('style', `color:${DG.Color.toHtml(color)}!important;`);
188
- else {
189
- input.input.setAttribute('style', `color:${DG.Color.toHtml(DG.Color.getContrastColor(color))}!important;`);
190
- input.input.style.backgroundColor = DG.Color.toHtml(color);
185
+ if (grid) {
186
+ const color = grid.cell(name, row).color;
187
+ if ((_b = grid.col(name)) === null || _b === void 0 ? void 0 : _b.isTextColorCoded)
188
+ input.input.setAttribute('style', `color:${DG.Color.toHtml(color)}!important;`);
189
+ else {
190
+ input.input.setAttribute('style', `color:${DG.Color.toHtml(DG.Color.getContrastColor(color))}!important;`);
191
+ input.input.style.backgroundColor = DG.Color.toHtml(color);
192
+ }
191
193
  }
192
194
  }
193
195
  input.input.onclick = (e) => {
@@ -242,4 +244,4 @@ export class FormsViewer extends DG.JsViewer {
242
244
  this.virtualView.setData(this.indexes.length + (this.showCurrentRow ? 1 : 0) + (this.showMouseOverRow ? 1 : 0), (i) => this.renderForm(i));
243
245
  }
244
246
  }
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sMkJBQTJCLEdBQUcsK0RBQStELENBQUM7QUFDcEcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxPQUFPLFdBQVksU0FBUSxFQUFFLENBQUMsUUFBUTtJQUMxQyxJQUFJLElBQUksS0FBYSxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFlNUMsSUFBSSxTQUFTLENBQUMsRUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFjO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENB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Q3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAnLi4vLi4vY3NzL2Zvcm1zLmNzcyc7XG5cbmNvbnN0IENPTFNfTElNSVRfRVhDRUVERURfV0FSTklORyA9IGBOdW1iZXIgb2YgY29sdW1ucyBpcyBtb3JlIHRoYW4gMjAuIEZpcnN0IDIwIGNvbHVtbnMgYXJlIHNob3duYDtcbmNvbnN0IEJPT0xFQU5fSU5QVVRfVE9QX01BUkdJTiA9IDE1O1xuXG5leHBvcnQgY2xhc3MgRm9ybXNWaWV3ZXIgZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gIGdldCB0eXBlKCk6IHN0cmluZyB7IHJldHVybiAnRm9ybXNWaWV3ZXInOyB9XG4gIG1vbGVjdWxlU2l6ZTogc3RyaW5nO1xuICBmaWVsZHNDb2x1bW5OYW1lczogc3RyaW5nW107XG4gIGNvbG9yQ29kZTogYm9vbGVhbjtcbiAgc2hvd0N1cnJlbnRSb3c6IGJvb2xlYW47XG4gIHNob3dNb3VzZU92ZXJSb3c6IGJvb2xlYW47XG4gIHNob3dTZWxlY3RlZFJvd3M6IGJvb2xlYW47XG4gIHNob3dGaXhlZFJvd3MgPSBmYWxzZTtcbiAgaW5kZXhlczogbnVtYmVyW107XG4gIGNvbHVtbkhlYWRlcnNEaXY6IEhUTUxEaXZFbGVtZW50O1xuICB2aXJ0dWFsVmlldzogREcuVmlydHVhbFZpZXc7XG4gIGNvbHVtbkxhYmVsV2lkdGg6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRSb3dJbmRpY2F0b3IgPSB1aS5kaXYoJycsICdkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yIGQ0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3ItY3VycmVudC1yb3cnKTtcbiAgbW91c2VPdmVyUm93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLW1vdXNlLW92ZXItcm93Jyk7XG5cbiAgc2V0IGRhdGFmcmFtZShkZjogREcuRGF0YUZyYW1lKSB7XG4gICAgdGhpcy5kYXRhRnJhbWUgPSBkZjtcbiAgICB0aGlzLm9uVGFibGVBdHRhY2hlZCgpO1xuICB9XG5cbiAgc2V0IGZpeGVkUm93TnVtYmVycyhpZHhzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuaW5kZXhlcyA9IGlkeHM7XG4gICAgdGhpcy5zaG93Q3VycmVudFJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0ZpeGVkUm93cyA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zKGNvbE5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBjb2xOYW1lcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaGVscFVybCA9ICdodHRwczovL2RhdGFncm9rLmFpL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvZm9ybXMnO1xuXG4gICAgLy8gcHJvcGVydGllc1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmFkZFByb3BlcnR5KCdmaWVsZHNDb2x1bW5OYW1lcycsIERHLlRZUEUuQ09MVU1OX0xJU1QpO1xuICAgIHRoaXMuY29sb3JDb2RlID0gdGhpcy5ib29sKCdjb2xvckNvZGUnLCB0cnVlKTtcbiAgICB0aGlzLnNob3dDdXJyZW50Um93ID0gdGhpcy5ib29sKCdzaG93Q3VycmVudFJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IHRoaXMuYm9vbCgnc2hvd01vdXNlT3ZlclJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IHRoaXMuYm9vbCgnc2hvd1NlbGVjdGVkUm93cycsIHRydWUpO1xuICAgIHRoaXMubW9sZWN1bGVTaXplID0gdGhpcy5zdHJpbmcoJ21vbGVjdWxlU2l6ZScsICdzbWFsbCcsIHtjaG9pY2VzOiBbJ3NtYWxsJywgJ25vcm1hbCcsICdsYXJnZSddfSk7XG5cbiAgICAvL2ZpZWxkc1xuICAgIHRoaXMuaW5kZXhlcyA9IFtdO1xuXG4gICAgLy8gaW5pdFxuICAgIHRoaXMucm9vdC5jbGFzc0xpc3QuYWRkKCdkNC1tdWx0aS1mb3JtJyk7XG4gICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2ID0gdWkuZGl2KFtdLCAnZDQtbXVsdGktZm9ybS1oZWFkZXInKTtcbiAgICB0aGlzLnZpcnR1YWxWaWV3ID0gdWkudmlydHVhbFZpZXcoMCwgKGk6IG51bWJlcikgPT4gdGhpcy5yZW5kZXJGb3JtKGkpLCBmYWxzZSwgMSk7XG4gICAgY29uc3QgY29sdW1uSGVhZGVyc0JveCA9IHVpLmRpdih0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuICAgIGNvbnN0IGZvcm1XaXRoSGVhZGVyRGl2ID0gdWkuc3BsaXRIKFtjb2x1bW5IZWFkZXJzQm94LCB0aGlzLnZpcnR1YWxWaWV3LnJvb3RdLCBudWxsLCB0cnVlKTtcbiAgICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQoZm9ybVdpdGhIZWFkZXJEaXYpO1xuXG4gICAgY29uc3Qgc3BsaXRDb2xMZWZ0ID0gZm9ybVdpdGhIZWFkZXJEaXYuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgc3BsaXRDb2xSaWdodCA9IGZvcm1XaXRoSGVhZGVyRGl2Lmxhc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICB1aS50b29sdGlwLmJpbmQodGhpcy5jdXJyZW50Um93SW5kaWNhdG9yLCAnQ3VycmVudCByb3cnKTtcbiAgICB1aS50b29sdGlwLmJpbmQodGhpcy5tb3VzZU92ZXJSb3dJbmRpY2F0b3IsICdNb3VzZSBvdmVyIHJvdycpO1xuXG4gICAgdWkudG9vbHMud2FpdEZvckVsZW1lbnRJbkRvbSh0aGlzLnJvb3QpLnRoZW4oKF8pID0+IHtcbiAgICAgIHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBvdmVmbG93OmhpZGRlbiFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogMTUwcHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgYDtcbiAgICAgIHNwbGl0Q29sTGVmdC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuIWltcG9ydGFudDtcbiAgICAgIGA7XG4gICAgICBjb2x1bW5IZWFkZXJzQm94LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OjE3cHg7XG4gICAgICAgIG92ZXJmbG93OiBzY3JvbGwhaW1wb3J0YW50O1xuICAgICAgYDtcblxuICAgICAgY29sdW1uSGVhZGVyc0JveC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVmlldy5yb290LnNjcm9sbFRvcCA9IGNvbHVtbkhlYWRlcnNCb3guc2Nyb2xsVG9wO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudmlydHVhbFZpZXcucm9vdC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29sdW1uSGVhZGVyc0JveC5zY3JvbGxUb3AgPSB0aGlzLnZpcnR1YWxWaWV3LnJvb3Quc2Nyb2xsVG9wO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMudmlydHVhbFZpZXcucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgY29uc3Qgcm9vdFdpZHRoID0gdGhpcy5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgc3BsaXRDb2xMZWZ0LnN0eWxlLndpZHRoID0gYCR7dGhpcy5jb2x1bW5MYWJlbFdpZHRoKzMwfXB4YDtcbiAgICAgIHNwbGl0Q29sUmlnaHQuc3R5bGUud2lkdGggPSBgJHtyb290V2lkdGgtdGhpcy5jb2x1bW5MYWJlbFdpZHRoLTMwLTR9cHhgO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgZ2V0Q29sdW1uV2lkdGgoZWw6SFRNTEVsZW1lbnQpe1xuICAgIHJldHVybiBwYXJzZUludChlbC5zdHlsZS53aWR0aCk7XG4gIH1cbiAgXG4gIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICBpZiAodGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9PT0gbnVsbClcbiAgICAgIHRoaXMuc2V0ZmllbGRzQ29sdW1uTmFtZXModGhpcy5kYXRhRnJhbWUuY29sdW1ucy5uYW1lcygpKTtcblxuICAgIGNvbnN0IHN1YiA9IChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4sIGFjdGlvbjogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKERHLmRlYm91bmNlKHN0cmVhbSwgNTApLnN1YnNjcmliZSgoXykgPT4gYWN0aW9uKCkpKTtcbiAgICB9O1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5maWx0ZXIub25DaGFuZ2VkLCAoKSA9PiB0aGlzLnJlbmRlcigpKTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbk1ldGFkYXRhQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25Db2x1bW5zUmVtb3ZlZCwgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVmaWVsZHNDb2x1bW5OYW1lcygpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbkN1cnJlbnRSb3dDaGFuZ2VkLnBpcGUoZmlsdGVyKChfKSA9PiB0aGlzLnNob3dDdXJyZW50Um93KSksXG4gICAgICAoKSA9PiB0aGlzLnZpcnR1YWxWaWV3LnJlZnJlc2hJdGVtKHRoaXMuY3VycmVudFJvd1BvcyEpKTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbk1vdXNlT3ZlclJvd0NoYW5nZWQucGlwZShmaWx0ZXIoKF8pID0+IHRoaXMuc2hvd01vdXNlT3ZlclJvdykpLFxuICAgICAgKCkgPT4gdGhpcy52aXJ0dWFsVmlldy5yZWZyZXNoSXRlbSh0aGlzLm1vdXNlT3ZlclBvcyEpKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZXRmaWVsZHNDb2x1bW5OYW1lcyhkZkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGRmQ29sdW1ucy5sZW5ndGggPiAyMCkge1xuICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKENPTFNfTElNSVRfRVhDRUVERURfV0FSTklORyk7XG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gZGZDb2x1bW5zLnNsaWNlKDAsIDIwKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9IGRmQ29sdW1ucztcbiAgfVxuXG4gIHVwZGF0ZWZpZWxkc0NvbHVtbk5hbWVzKCkge1xuICAgIGNvbnN0IG5ld0NvbHVtbnMgPSB0aGlzLmRhdGFGcmFtZS5jb2x1bW5zLm5hbWVzKCk7XG4gICAgbGV0IGNvdW50ZXIgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykge1xuICAgICAgY29uc3QgY29sSWR4ID0gbmV3Q29sdW1ucy5pbmRleE9mKHRoaXMuZmllbGRzQ29sdW1uTmFtZXNbaV0pO1xuICAgICAgaWYgKGNvbElkeCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5OiBERy5Qcm9wZXJ0eSk6IHZvaWQge1xuICAgIGlmICgocHJvcGVydHkubmFtZSA9PT0gJ3Nob3dDdXJyZW50Um93JyB8fCBwcm9wZXJ0eS5uYW1lID09PSAnc2hvd01vdXNlT3ZlclJvdycgfHxcbiAgICAgIHByb3BlcnR5Lm5hbWUgPT09ICdzaG93U2VsZWN0ZWRSb3dzJyAmJiBwcm9wZXJ0eS5nZXQodGhpcykgPT09IHRydWUpICYmIHRoaXMuc2hvd0ZpeGVkUm93cylcbiAgICAgIGdyb2suc2hlbGwud2FybmluZyhgQ2Fubm90IHNldCAke3Byb3BlcnR5Lm5hbWV9IHRvIHRydWUgc2luY2UgZml4ZWQgcm93cyBhcmUgc2V0YCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlckhlYWRlcigpIHtcbiAgICB1aS5lbXB0eSh0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLnJlbmRlckZvcm0oMCwgdHJ1ZSk7XG4gICAgZm9ybS5jbGFzc0xpc3QuYWRkKCd0ZW1wJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTtcblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzKSB7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1tjb2x1bW49XCInICsgbmFtZSArICdcIl0nKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHVpLmJpbmQodGhpcy5kYXRhRnJhbWUuY29sKG5hbWUpLCB1aS5kaXZUZXh0KG5hbWUpKTtcbiAgICAgICAgY29uc3QgY2xvc2VJY29uID0gdWkuaWNvbkZBKCd0aW1lcycsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbmFtZSk7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsQ29udGFpbmVyID0gdWkuZGl2KFtjb2x1bW5MYWJlbCwgY2xvc2VJY29uXSwgJ2Q0LW11bHRpLWZvcm0tY29sdW1uLW5hbWUgZDQtZmxleC1yb3cnKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0VG9wID0gZm9ybUZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgP1xuICAgICAgICAgIGZvcm1GaWVsZC5vZmZzZXRUb3AgLSBCT09MRUFOX0lOUFVUX1RPUF9NQVJHSU4gOiBmb3JtRmllbGQub2Zmc2V0VG9wO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5zdHlsZS50b3AgPSBgJHtvZmZzZXRUb3AgKyAxMH1weGA7XG4gICAgICAgIHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5hcHBlbmRDaGlsZChjb2x1bW5MYWJlbENvbnRhaW5lcik7XG4gICAgICAgIGNvbHVtbkxhYmVsLm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRDb2wgPSB0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiB0aGlzLmNvbHVtbkxhYmVsV2lkdGgpXG4gICAgICAgICAgdGhpcy5jb2x1bW5MYWJlbFdpZHRoID0gY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLm9ubW91c2VlbnRlciA9IChlOiBNb3VzZUV2ZW50KSA9PiBjbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIub25tb3VzZWxlYXZlID0gKGU6IE1vdXNlRXZlbnQpID0+IGNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9ybS5yZW1vdmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Um93UG9zKCkgeyByZXR1cm4gdGhpcy5zaG93Q3VycmVudFJvdyA/IDAgOiBudWxsOyB9XG4gIGdldCBtb3VzZU92ZXJQb3MoKSB7IHJldHVybiB0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSA6IG51bGw7IH1cblxuICByZW5kZXJGb3JtKHJvdzogbnVtYmVyLCBoZWFkZXI/OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2F2ZWRJZHggPSByb3c7XG4gICAgaWYgKGhlYWRlcilcbiAgICAgIHJvdyA9IDA7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5zaG93Q3VycmVudFJvdyAmJiByb3cgPT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgcm93ID0gdGhpcy5kYXRhRnJhbWUuY3VycmVudFJvd0lkeDtcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyAmJiByb3cgPT09IHRoaXMubW91c2VPdmVyUG9zKVxuICAgICAgICByb3cgPSB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHg7XG4gICAgICBlbHNlXG4gICAgICAgIHJvdyA9IHRoaXMuaW5kZXhlc1tyb3cgLSAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSAtICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAxIDogMCldO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm0gPSB1aS5kaXZWKFxuICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5tYXAoKG5hbWUpID0+IHtcbiAgICAgICAgaWYgKHJvdyA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuIHVpLmRpdigpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gREcuSW5wdXRCYXNlLmZvckNvbHVtbih0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhKTtcbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSEuc2VtVHlwZSA9PT0gREcuU0VNVFlQRS5NT0xFQ1VMRSlcbiAgICAgICAgICAgIGlucHV0LmlucHV0LmNsYXNzTGlzdC5hZGQoYGQ0LW11bHRpLWZvcm0tbW9sZWN1bGUtaW5wdXQtJHt0aGlzLm1vbGVjdWxlU2l6ZX1gKTtcbiAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ2NvbHVtbicsIG5hbWUpO1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gdGhpcy5kYXRhRnJhbWUuZ2V0KG5hbWUsIHJvdyk7XG4gICAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY29sb3JDb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBncmlkID0gKCh0aGlzLnZpZXcgPz8gZ3Jvay5zaGVsbC50dikgYXMgREcuVGFibGVWaWV3KS5ncmlkO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBncmlkLmNlbGwobmFtZSwgcm93KS5jb2xvcjtcbiAgICAgICAgICAgIGlmIChncmlkLmNvbChuYW1lKT8uaXNUZXh0Q29sb3JDb2RlZClcbiAgICAgICAgICAgICAgaW5wdXQuaW5wdXQuc2V0QXR0cmlidXRlKCdzdHlsZScsIGBjb2xvcjoke0RHLkNvbG9yLnRvSHRtbChjb2xvcil9IWltcG9ydGFudDtgKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJyxcbiAgICAgICAgICAgICAgICBgY29sb3I6JHtERy5Db2xvci50b0h0bWwoREcuQ29sb3IuZ2V0Q29udHJhc3RDb2xvcihjb2xvcikpfSFpbXBvcnRhbnQ7YCk7XG4gICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IERHLkNvbG9yLnRvSHRtbChjb2xvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlucHV0LmlucHV0Lm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuY3VycmVudENlbGwgPSB0aGlzLmRhdGFGcmFtZS5jZWxsKHJvdywgbmFtZSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICB1aS50b29sdGlwLmJpbmQoaW5wdXQuaW5wdXQsIG5hbWUpO1xuXG4gICAgICAgICAgcmV0dXJuIGlucHV0LmlucHV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1aS5kaXYoKTtcbiAgICAgIH1cbiAgICAgICksICdkNC1tdWx0aS1mb3JtLWZvcm0nKTtcblxuICAgIGlmICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgJiYgc2F2ZWRJZHggPT0gdGhpcy5tb3VzZU92ZXJQb3MpXG4gICAgICBmb3JtLmFwcGVuZCh0aGlzLm1vdXNlT3ZlclJvd0luZGljYXRvcik7XG4gICAgaWYgKHRoaXMuc2hvd0N1cnJlbnRSb3cgJiYgc2F2ZWRJZHggPT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgIGZvcm0uYXBwZW5kKHRoaXMuY3VycmVudFJvd0luZGljYXRvcik7XG5cbiAgICBmb3JtLm9uY2xpY2sgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHJvdzsgaSsrKVxuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQoaSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldChyb3cpO1xuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5zZXQocm93LCAhY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmRhdGFGcmFtZS5yb3dDb3VudDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChpLCBpIDw9IHJvdyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnNob3dDdXJyZW50Um93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLmN1cnJlbnRSb3dQb3MpXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Um93SWR4ID0gcm93O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoIXRoaXMuc2hvd01vdXNlT3ZlclJvdyB8fCBzYXZlZElkeCAhPT0gdGhpcy5tb3VzZU92ZXJQb3MpIHtcbiAgICAgIGZvcm0ub25tb3VzZWVudGVyID0gKCkgPT4gdGhpcy5kYXRhRnJhbWUubW91c2VPdmVyUm93SWR4ID0gcm93O1xuICAgICAgZm9ybS5vbm1vdXNlbGVhdmUgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLnNob3dGaXhlZFJvd3MpIHtcbiAgICAgIGlmICh0aGlzLnNob3dTZWxlY3RlZFJvd3MpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzID0gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnRydWVDb3VudCA+IDAgP1xuICAgICAgICAgIEFycmF5LmZyb20odGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpKSA6IFtdO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmluZGV4ZXMgPSBbXTtcbiAgICB9XG5cbiAgICB1aS5lbXB0eSh0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuXG4gICAgdGhpcy5yZW5kZXJIZWFkZXIoKTtcblxuICAgIHRoaXMudmlydHVhbFZpZXcuc2V0RGF0YShcbiAgICAgIHRoaXMuaW5kZXhlcy5sZW5ndGggKyAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSArICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAxIDogMCksXG4gICAgICAoaTogbnVtYmVyKSA9PiB0aGlzLnJlbmRlckZvcm0oaSkpO1xuICB9XG59XG4iXX0=
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybXMtdmlld2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sMkJBQTJCLEdBQUcsK0RBQStELENBQUM7QUFDcEcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFFcEMsTUFBTSxPQUFPLFdBQVksU0FBUSxFQUFFLENBQUMsUUFBUTtJQUMxQyxJQUFJLElBQUksS0FBYSxPQUFPLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFlNUMsSUFBSSxTQUFTLENBQUMsRUFBZ0I7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFjO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAnLi4vLi4vY3NzL2Zvcm1zLmNzcyc7XG5cbmNvbnN0IENPTFNfTElNSVRfRVhDRUVERURfV0FSTklORyA9IGBOdW1iZXIgb2YgY29sdW1ucyBpcyBtb3JlIHRoYW4gMjAuIEZpcnN0IDIwIGNvbHVtbnMgYXJlIHNob3duYDtcbmNvbnN0IEJPT0xFQU5fSU5QVVRfVE9QX01BUkdJTiA9IDE1O1xuXG5leHBvcnQgY2xhc3MgRm9ybXNWaWV3ZXIgZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gIGdldCB0eXBlKCk6IHN0cmluZyB7IHJldHVybiAnRm9ybXNWaWV3ZXInOyB9XG4gIG1vbGVjdWxlU2l6ZTogc3RyaW5nO1xuICBmaWVsZHNDb2x1bW5OYW1lczogc3RyaW5nW107XG4gIGNvbG9yQ29kZTogYm9vbGVhbjtcbiAgc2hvd0N1cnJlbnRSb3c6IGJvb2xlYW47XG4gIHNob3dNb3VzZU92ZXJSb3c6IGJvb2xlYW47XG4gIHNob3dTZWxlY3RlZFJvd3M6IGJvb2xlYW47XG4gIHNob3dGaXhlZFJvd3MgPSBmYWxzZTtcbiAgaW5kZXhlczogbnVtYmVyW107XG4gIGNvbHVtbkhlYWRlcnNEaXY6IEhUTUxEaXZFbGVtZW50O1xuICB2aXJ0dWFsVmlldzogREcuVmlydHVhbFZpZXc7XG4gIGNvbHVtbkxhYmVsV2lkdGg6IG51bWJlciA9IDA7XG4gIGN1cnJlbnRSb3dJbmRpY2F0b3IgPSB1aS5kaXYoJycsICdkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yIGQ0LW11bHRpLWZvcm0tZm9ybS1pbmRpY2F0b3ItY3VycmVudC1yb3cnKTtcbiAgbW91c2VPdmVyUm93SW5kaWNhdG9yID0gdWkuZGl2KCcnLCAnZDQtbXVsdGktZm9ybS1mb3JtLWluZGljYXRvciBkNC1tdWx0aS1mb3JtLWZvcm0taW5kaWNhdG9yLW1vdXNlLW92ZXItcm93Jyk7XG5cbiAgc2V0IGRhdGFmcmFtZShkZjogREcuRGF0YUZyYW1lKSB7XG4gICAgdGhpcy5kYXRhRnJhbWUgPSBkZjtcbiAgICB0aGlzLm9uVGFibGVBdHRhY2hlZCgpO1xuICB9XG5cbiAgc2V0IGZpeGVkUm93TnVtYmVycyhpZHhzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuaW5kZXhlcyA9IGlkeHM7XG4gICAgdGhpcy5zaG93Q3VycmVudFJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0ZpeGVkUm93cyA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zKGNvbE5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSBjb2xOYW1lcztcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaGVscFVybCA9ICdodHRwczovL2RhdGFncm9rLmFpL2hlbHAvdmlzdWFsaXplL3ZpZXdlcnMvZm9ybXMnO1xuXG4gICAgLy8gcHJvcGVydGllc1xuICAgIHRoaXMuZmllbGRzQ29sdW1uTmFtZXMgPSB0aGlzLmFkZFByb3BlcnR5KCdmaWVsZHNDb2x1bW5OYW1lcycsIERHLlRZUEUuQ09MVU1OX0xJU1QpO1xuICAgIHRoaXMuY29sb3JDb2RlID0gdGhpcy5ib29sKCdjb2xvckNvZGUnLCB0cnVlKTtcbiAgICB0aGlzLnNob3dDdXJyZW50Um93ID0gdGhpcy5ib29sKCdzaG93Q3VycmVudFJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd01vdXNlT3ZlclJvdyA9IHRoaXMuYm9vbCgnc2hvd01vdXNlT3ZlclJvdycsIHRydWUpO1xuICAgIHRoaXMuc2hvd1NlbGVjdGVkUm93cyA9IHRoaXMuYm9vbCgnc2hvd1NlbGVjdGVkUm93cycsIHRydWUpO1xuICAgIHRoaXMubW9sZWN1bGVTaXplID0gdGhpcy5zdHJpbmcoJ21vbGVjdWxlU2l6ZScsICdzbWFsbCcsIHtjaG9pY2VzOiBbJ3NtYWxsJywgJ25vcm1hbCcsICdsYXJnZSddfSk7XG5cbiAgICAvL2ZpZWxkc1xuICAgIHRoaXMuaW5kZXhlcyA9IFtdO1xuXG4gICAgLy8gaW5pdFxuICAgIHRoaXMucm9vdC5jbGFzc0xpc3QuYWRkKCdkNC1tdWx0aS1mb3JtJyk7XG4gICAgdGhpcy5jb2x1bW5IZWFkZXJzRGl2ID0gdWkuZGl2KFtdLCAnZDQtbXVsdGktZm9ybS1oZWFkZXInKTtcbiAgICB0aGlzLnZpcnR1YWxWaWV3ID0gdWkudmlydHVhbFZpZXcoMCwgKGk6IG51bWJlcikgPT4gdGhpcy5yZW5kZXJGb3JtKGkpLCBmYWxzZSwgMSk7XG4gICAgY29uc3QgY29sdW1uSGVhZGVyc0JveCA9IHVpLmRpdih0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuICAgIGNvbnN0IGZvcm1XaXRoSGVhZGVyRGl2ID0gdWkuc3BsaXRIKFtjb2x1bW5IZWFkZXJzQm94LCB0aGlzLnZpcnR1YWxWaWV3LnJvb3RdLCBudWxsLCB0cnVlKTtcbiAgICB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQoZm9ybVdpdGhIZWFkZXJEaXYpO1xuXG4gICAgY29uc3Qgc3BsaXRDb2xMZWZ0ID0gZm9ybVdpdGhIZWFkZXJEaXYuZmlyc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3Qgc3BsaXRDb2xSaWdodCA9IGZvcm1XaXRoSGVhZGVyRGl2Lmxhc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICB1aS50b29sdGlwLmJpbmQodGhpcy5jdXJyZW50Um93SW5kaWNhdG9yLCAnQ3VycmVudCByb3cnKTtcbiAgICB1aS50b29sdGlwLmJpbmQodGhpcy5tb3VzZU92ZXJSb3dJbmRpY2F0b3IsICdNb3VzZSBvdmVyIHJvdycpO1xuXG4gICAgdWkudG9vbHMud2FpdEZvckVsZW1lbnRJbkRvbSh0aGlzLnJvb3QpLnRoZW4oKF8pID0+IHtcbiAgICAgIHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBvdmVmbG93OmhpZGRlbiFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi13aWR0aDogMTUwcHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgYDtcbiAgICAgIHNwbGl0Q29sTGVmdC5zdHlsZS5jc3NUZXh0ID0gYFxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuIWltcG9ydGFudDtcbiAgICAgIGA7XG4gICAgICBjb2x1bW5IZWFkZXJzQm94LnN0eWxlLmNzc1RleHQgPSBgXG4gICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgICAgICB3aWR0aDoxMDAlO1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OjE3cHg7XG4gICAgICAgIG92ZXJmbG93OiBzY3JvbGwhaW1wb3J0YW50O1xuICAgICAgYDtcblxuICAgICAgY29sdW1uSGVhZGVyc0JveC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy52aXJ0dWFsVmlldy5yb290LnNjcm9sbFRvcCA9IGNvbHVtbkhlYWRlcnNCb3guc2Nyb2xsVG9wO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudmlydHVhbFZpZXcucm9vdC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgY29sdW1uSGVhZGVyc0JveC5zY3JvbGxUb3AgPSB0aGlzLnZpcnR1YWxWaWV3LnJvb3Quc2Nyb2xsVG9wO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB1aS50b29scy53YWl0Rm9yRWxlbWVudEluRG9tKHRoaXMudmlydHVhbFZpZXcucm9vdCkudGhlbigoXykgPT4ge1xuICAgICAgY29uc3Qgcm9vdFdpZHRoID0gdGhpcy5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgc3BsaXRDb2xMZWZ0LnN0eWxlLndpZHRoID0gYCR7dGhpcy5jb2x1bW5MYWJlbFdpZHRoKzMwfXB4YDtcbiAgICAgIHNwbGl0Q29sUmlnaHQuc3R5bGUud2lkdGggPSBgJHtyb290V2lkdGgtdGhpcy5jb2x1bW5MYWJlbFdpZHRoLTMwLTR9cHhgO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgZ2V0Q29sdW1uV2lkdGgoZWw6SFRNTEVsZW1lbnQpe1xuICAgIHJldHVybiBwYXJzZUludChlbC5zdHlsZS53aWR0aCk7XG4gIH1cbiAgXG4gIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICBpZiAodGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9PT0gbnVsbClcbiAgICAgIHRoaXMuc2V0ZmllbGRzQ29sdW1uTmFtZXModGhpcy5kYXRhRnJhbWUuY29sdW1ucy5uYW1lcygpKTtcblxuICAgIGNvbnN0IHN1YiA9IChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4sIGFjdGlvbjogRnVuY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKERHLmRlYm91bmNlKHN0cmVhbSwgNTApLnN1YnNjcmliZSgoXykgPT4gYWN0aW9uKCkpKTtcbiAgICB9O1xuXG4gICAgc3ViKHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQsICgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5maWx0ZXIub25DaGFuZ2VkLCAoKSA9PiB0aGlzLnJlbmRlcigpKTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbk1ldGFkYXRhQ2hhbmdlZCwgKCkgPT4gdGhpcy5yZW5kZXIoKSk7XG5cbiAgICBzdWIodGhpcy5kYXRhRnJhbWUub25Db2x1bW5zUmVtb3ZlZCwgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVmaWVsZHNDb2x1bW5OYW1lcygpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbkN1cnJlbnRSb3dDaGFuZ2VkLnBpcGUoZmlsdGVyKChfKSA9PiB0aGlzLnNob3dDdXJyZW50Um93KSksXG4gICAgICAoKSA9PiB0aGlzLnZpcnR1YWxWaWV3LnJlZnJlc2hJdGVtKHRoaXMuY3VycmVudFJvd1BvcyEpKTtcblxuICAgIHN1Yih0aGlzLmRhdGFGcmFtZS5vbk1vdXNlT3ZlclJvd0NoYW5nZWQucGlwZShmaWx0ZXIoKF8pID0+IHRoaXMuc2hvd01vdXNlT3ZlclJvdykpLFxuICAgICAgKCkgPT4gdGhpcy52aXJ0dWFsVmlldy5yZWZyZXNoSXRlbSh0aGlzLm1vdXNlT3ZlclBvcyEpKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZXRmaWVsZHNDb2x1bW5OYW1lcyhkZkNvbHVtbnM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGRmQ29sdW1ucy5sZW5ndGggPiAyMCkge1xuICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKENPTFNfTElNSVRfRVhDRUVERURfV0FSTklORyk7XG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gZGZDb2x1bW5zLnNsaWNlKDAsIDIwKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcyA9IGRmQ29sdW1ucztcbiAgfVxuXG4gIHVwZGF0ZWZpZWxkc0NvbHVtbk5hbWVzKCkge1xuICAgIGNvbnN0IG5ld0NvbHVtbnMgPSB0aGlzLmRhdGFGcmFtZS5jb2x1bW5zLm5hbWVzKCk7XG4gICAgbGV0IGNvdW50ZXIgPSB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50ZXI7IGkrKykge1xuICAgICAgY29uc3QgY29sSWR4ID0gbmV3Q29sdW1ucy5pbmRleE9mKHRoaXMuZmllbGRzQ29sdW1uTmFtZXNbaV0pO1xuICAgICAgaWYgKGNvbElkeCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGNvdW50ZXItLTtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5OiBERy5Qcm9wZXJ0eSk6IHZvaWQge1xuICAgIGlmICgocHJvcGVydHkubmFtZSA9PT0gJ3Nob3dDdXJyZW50Um93JyB8fCBwcm9wZXJ0eS5uYW1lID09PSAnc2hvd01vdXNlT3ZlclJvdycgfHxcbiAgICAgIHByb3BlcnR5Lm5hbWUgPT09ICdzaG93U2VsZWN0ZWRSb3dzJyAmJiBwcm9wZXJ0eS5nZXQodGhpcykgPT09IHRydWUpICYmIHRoaXMuc2hvd0ZpeGVkUm93cylcbiAgICAgIGdyb2suc2hlbGwud2FybmluZyhgQ2Fubm90IHNldCAke3Byb3BlcnR5Lm5hbWV9IHRvIHRydWUgc2luY2UgZml4ZWQgcm93cyBhcmUgc2V0YCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlckhlYWRlcigpIHtcbiAgICB1aS5lbXB0eSh0aGlzLmNvbHVtbkhlYWRlcnNEaXYpO1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLnJlbmRlckZvcm0oMCwgdHJ1ZSk7XG4gICAgZm9ybS5jbGFzc0xpc3QuYWRkKCd0ZW1wJyk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTtcblxuICAgIGZvciAoY29uc3QgbmFtZSBvZiB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzKSB7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1tjb2x1bW49XCInICsgbmFtZSArICdcIl0nKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCBjb2x1bW5MYWJlbCA9IHVpLmJpbmQodGhpcy5kYXRhRnJhbWUuY29sKG5hbWUpLCB1aS5kaXZUZXh0KG5hbWUpKTtcbiAgICAgICAgY29uc3QgY2xvc2VJY29uID0gdWkuaWNvbkZBKCd0aW1lcycsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpZWxkc0NvbHVtbk5hbWVzID0gdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbmFtZSk7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbkxhYmVsQ29udGFpbmVyID0gdWkuZGl2KFtjb2x1bW5MYWJlbCwgY2xvc2VJY29uXSwgJ2Q0LW11bHRpLWZvcm0tY29sdW1uLW5hbWUgZDQtZmxleC1yb3cnKTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0VG9wID0gZm9ybUZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgP1xuICAgICAgICAgIGZvcm1GaWVsZC5vZmZzZXRUb3AgLSBCT09MRUFOX0lOUFVUX1RPUF9NQVJHSU4gOiBmb3JtRmllbGQub2Zmc2V0VG9wO1xuICAgICAgICBjb2x1bW5MYWJlbENvbnRhaW5lci5zdHlsZS50b3AgPSBgJHtvZmZzZXRUb3AgKyAxMH1weGA7XG4gICAgICAgIHRoaXMuY29sdW1uSGVhZGVyc0Rpdi5hcHBlbmRDaGlsZChjb2x1bW5MYWJlbENvbnRhaW5lcik7XG4gICAgICAgIGNvbHVtbkxhYmVsLm9uY2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRDb2wgPSB0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiB0aGlzLmNvbHVtbkxhYmVsV2lkdGgpXG4gICAgICAgICAgdGhpcy5jb2x1bW5MYWJlbFdpZHRoID0gY29sdW1uTGFiZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGNvbHVtbkxhYmVsQ29udGFpbmVyLm9ubW91c2VlbnRlciA9IChlOiBNb3VzZUV2ZW50KSA9PiBjbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgY29sdW1uTGFiZWxDb250YWluZXIub25tb3VzZWxlYXZlID0gKGU6IE1vdXNlRXZlbnQpID0+IGNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9ybS5yZW1vdmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Um93UG9zKCkgeyByZXR1cm4gdGhpcy5zaG93Q3VycmVudFJvdyA/IDAgOiBudWxsOyB9XG4gIGdldCBtb3VzZU92ZXJQb3MoKSB7IHJldHVybiB0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSA6IG51bGw7IH1cblxuICByZW5kZXJGb3JtKHJvdzogbnVtYmVyLCBoZWFkZXI/OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2F2ZWRJZHggPSByb3c7XG4gICAgaWYgKGhlYWRlcilcbiAgICAgIHJvdyA9IDA7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5zaG93Q3VycmVudFJvdyAmJiByb3cgPT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgcm93ID0gdGhpcy5kYXRhRnJhbWUuY3VycmVudFJvd0lkeDtcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyAmJiByb3cgPT09IHRoaXMubW91c2VPdmVyUG9zKVxuICAgICAgICByb3cgPSB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHg7XG4gICAgICBlbHNlXG4gICAgICAgIHJvdyA9IHRoaXMuaW5kZXhlc1tyb3cgLSAodGhpcy5zaG93Q3VycmVudFJvdyA/IDEgOiAwKSAtICh0aGlzLnNob3dNb3VzZU92ZXJSb3cgPyAxIDogMCldO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm0gPSB1aS5kaXZWKFxuICAgICAgdGhpcy5maWVsZHNDb2x1bW5OYW1lcy5tYXAoKG5hbWUpID0+IHtcbiAgICAgICAgaWYgKHJvdyA9PT0gLTEpXG4gICAgICAgICAgcmV0dXJuIHVpLmRpdigpO1xuXG4gICAgICAgIGNvbnN0IGlucHV0ID0gREcuSW5wdXRCYXNlLmZvckNvbHVtbih0aGlzLmRhdGFGcmFtZS5jb2wobmFtZSkhKTtcbiAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lLmNvbChuYW1lKSEuc2VtVHlwZSA9PT0gREcuU0VNVFlQRS5NT0xFQ1VMRSlcbiAgICAgICAgICAgIGlucHV0LmlucHV0LmNsYXNzTGlzdC5hZGQoYGQ0LW11bHRpLWZvcm0tbW9sZWN1bGUtaW5wdXQtJHt0aGlzLm1vbGVjdWxlU2l6ZX1gKTtcbiAgICAgICAgICBpbnB1dC5pbnB1dC5zZXRBdHRyaWJ1dGUoJ2NvbHVtbicsIG5hbWUpO1xuICAgICAgICAgIGlucHV0LnZhbHVlID0gdGhpcy5kYXRhRnJhbWUuZ2V0KG5hbWUsIHJvdyk7XG4gICAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY29sb3JDb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBncmlkID0gKCh0aGlzLnZpZXcgPz8gZ3Jvay5zaGVsbC50dikgYXMgREcuVGFibGVWaWV3KS5ncmlkO1xuICAgICAgICAgICAgaWYgKGdyaWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBncmlkLmNlbGwobmFtZSwgcm93KS5jb2xvcjtcbiAgICAgICAgICAgICAgaWYgKGdyaWQuY29sKG5hbWUpPy5pc1RleHRDb2xvckNvZGVkKVxuICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBgY29sb3I6JHtERy5Db2xvci50b0h0bWwoY29sb3IpfSFpbXBvcnRhbnQ7YCk7XG4gICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLFxuICAgICAgICAgICAgICAgICAgYGNvbG9yOiR7REcuQ29sb3IudG9IdG1sKERHLkNvbG9yLmdldENvbnRyYXN0Q29sb3IoY29sb3IpKX0haW1wb3J0YW50O2ApO1xuICAgICAgICAgICAgICAgIGlucHV0LmlucHV0LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IERHLkNvbG9yLnRvSHRtbChjb2xvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaW5wdXQuaW5wdXQub25jbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5jdXJyZW50Q2VsbCA9IHRoaXMuZGF0YUZyYW1lLmNlbGwocm93LCBuYW1lKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHVpLnRvb2x0aXAuYmluZChpbnB1dC5pbnB1dCwgbmFtZSk7XG5cbiAgICAgICAgICByZXR1cm4gaW5wdXQuaW5wdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVpLmRpdigpO1xuICAgICAgfVxuICAgICAgKSwgJ2Q0LW11bHRpLWZvcm0tZm9ybScpO1xuXG4gICAgaWYgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyAmJiBzYXZlZElkeCA9PSB0aGlzLm1vdXNlT3ZlclBvcylcbiAgICAgIGZvcm0uYXBwZW5kKHRoaXMubW91c2VPdmVyUm93SW5kaWNhdG9yKTtcbiAgICBpZiAodGhpcy5zaG93Q3VycmVudFJvdyAmJiBzYXZlZElkeCA9PT0gdGhpcy5jdXJyZW50Um93UG9zKVxuICAgICAgZm9ybS5hcHBlbmQodGhpcy5jdXJyZW50Um93SW5kaWNhdG9yKTtcblxuICAgIGZvcm0ub25jbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcm93OyBpKyspXG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChpLCBmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0KHJvdyk7XG4gICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLnNldChyb3csICFjdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMuZGF0YUZyYW1lLnJvd0NvdW50OyBpKyspXG4gICAgICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uc2V0KGksIGkgPD0gcm93KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIXRoaXMuc2hvd0N1cnJlbnRSb3cgfHwgc2F2ZWRJZHggIT09IHRoaXMuY3VycmVudFJvd1BvcylcbiAgICAgICAgICAgIHRoaXMuZGF0YUZyYW1lLmN1cnJlbnRSb3dJZHggPSByb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGlmICghdGhpcy5zaG93TW91c2VPdmVyUm93IHx8IHNhdmVkSWR4ICE9PSB0aGlzLm1vdXNlT3ZlclBvcykge1xuICAgICAgZm9ybS5vbm1vdXNlZW50ZXIgPSAoKSA9PiB0aGlzLmRhdGFGcmFtZS5tb3VzZU92ZXJSb3dJZHggPSByb3c7XG4gICAgICBmb3JtLm9ubW91c2VsZWF2ZSA9ICgpID0+IHRoaXMuZGF0YUZyYW1lLm1vdXNlT3ZlclJvd0lkeCA9IC0xO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0ZpeGVkUm93cykge1xuICAgICAgaWYgKHRoaXMuc2hvd1NlbGVjdGVkUm93cykge1xuICAgICAgICB0aGlzLmluZGV4ZXMgPSB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24udHJ1ZUNvdW50ID4gMCA/XG4gICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uZ2V0U2VsZWN0ZWRJbmRleGVzKCkpIDogW107XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMuaW5kZXhlcyA9IFtdO1xuICAgIH1cblxuICAgIHVpLmVtcHR5KHRoaXMuY29sdW1uSGVhZGVyc0Rpdik7XG5cbiAgICB0aGlzLnJlbmRlckhlYWRlcigpO1xuXG4gICAgdGhpcy52aXJ0dWFsVmlldy5zZXREYXRhKFxuICAgICAgdGhpcy5pbmRleGVzLmxlbmd0aCArICh0aGlzLnNob3dDdXJyZW50Um93ID8gMSA6IDApICsgKHRoaXMuc2hvd01vdXNlT3ZlclJvdyA/IDEgOiAwKSxcbiAgICAgIChpOiBudW1iZXIpID0+IHRoaXMucmVuZGVyRm9ybShpKSk7XG4gIH1cbn1cbiJdfQ==