@1money/component-ui 0.0.73 → 0.0.75

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 (91) hide show
  1. package/es/components/Dialog/Dialog.js +7 -39
  2. package/es/components/Dialog/constants.d.ts +0 -3
  3. package/es/components/Dialog/constants.js +1 -4
  4. package/es/components/Dialog/style/Dialog.css +0 -21
  5. package/es/components/ProForm/ProForm.js +201 -48
  6. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  7. package/es/components/ProForm/ProFormDependency.js +29 -136
  8. package/es/components/ProForm/ProFormItem.js +81 -24
  9. package/es/components/ProForm/ProFormList.js +114 -62
  10. package/es/components/ProForm/Submitter.js +15 -4
  11. package/es/components/ProForm/context.d.ts +11 -3
  12. package/es/components/ProForm/context.js +32 -12
  13. package/es/components/ProForm/core/constants.d.ts +10 -2
  14. package/es/components/ProForm/core/constants.js +17 -3
  15. package/es/components/ProForm/core/formStore.d.ts +24 -0
  16. package/es/components/ProForm/core/formStore.js +101 -0
  17. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  18. package/es/components/ProForm/core/hooks/useForm.js +220 -120
  19. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  20. package/es/components/ProForm/core/hooks/useFormCore.js +114 -90
  21. package/es/components/ProForm/core/runRules.d.ts +5 -3
  22. package/es/components/ProForm/core/runRules.js +13 -5
  23. package/es/components/ProForm/core/useFormItem.d.ts +2 -2
  24. package/es/components/ProForm/core/useFormItem.js +46 -23
  25. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  26. package/es/components/ProForm/fields/createProFormField.js +14 -4
  27. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  28. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  29. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  30. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  31. package/es/components/ProForm/index.d.ts +2 -2
  32. package/es/components/ProForm/index.js +1 -1
  33. package/es/components/ProForm/interface.d.ts +105 -23
  34. package/es/components/ProForm/layouts/DialogForm.js +17 -7
  35. package/es/components/ProForm/layouts/DrawerForm.js +16 -7
  36. package/es/components/ProForm/layouts/QueryFilter.js +46 -135
  37. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  38. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  39. package/es/components/ProForm/style/ProForm.css +0 -7
  40. package/es/components/ProForm/utils.js +32 -8
  41. package/es/components/ProTable/ProTable.js +3 -3
  42. package/es/index.css +1 -1
  43. package/es/index.d.ts +1 -1
  44. package/es/index.js +1 -1
  45. package/lib/components/Dialog/Dialog.js +6 -38
  46. package/lib/components/Dialog/constants.d.ts +0 -3
  47. package/lib/components/Dialog/constants.js +1 -4
  48. package/lib/components/Dialog/style/Dialog.css +0 -21
  49. package/lib/components/ProForm/ProForm.js +201 -48
  50. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  51. package/lib/components/ProForm/ProFormDependency.js +30 -138
  52. package/lib/components/ProForm/ProFormItem.js +78 -21
  53. package/lib/components/ProForm/ProFormList.js +112 -60
  54. package/lib/components/ProForm/Submitter.js +15 -4
  55. package/lib/components/ProForm/context.d.ts +11 -3
  56. package/lib/components/ProForm/context.js +33 -13
  57. package/lib/components/ProForm/core/constants.d.ts +10 -2
  58. package/lib/components/ProForm/core/constants.js +18 -4
  59. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  60. package/lib/components/ProForm/core/formStore.js +110 -0
  61. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  62. package/lib/components/ProForm/core/hooks/useForm.js +220 -120
  63. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  64. package/lib/components/ProForm/core/hooks/useFormCore.js +113 -89
  65. package/lib/components/ProForm/core/runRules.d.ts +5 -3
  66. package/lib/components/ProForm/core/runRules.js +13 -5
  67. package/lib/components/ProForm/core/useFormItem.d.ts +2 -2
  68. package/lib/components/ProForm/core/useFormItem.js +44 -21
  69. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  70. package/lib/components/ProForm/fields/createProFormField.js +14 -4
  71. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  72. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  73. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  74. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  75. package/lib/components/ProForm/index.d.ts +2 -2
  76. package/lib/components/ProForm/index.js +1 -1
  77. package/lib/components/ProForm/interface.d.ts +105 -23
  78. package/lib/components/ProForm/layouts/DialogForm.js +17 -7
  79. package/lib/components/ProForm/layouts/DrawerForm.js +16 -7
  80. package/lib/components/ProForm/layouts/QueryFilter.js +45 -134
  81. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  82. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  83. package/lib/components/ProForm/style/ProForm.css +0 -7
  84. package/lib/components/ProForm/utils.js +32 -8
  85. package/lib/components/ProTable/ProTable.js +3 -3
  86. package/lib/index.css +1 -1
  87. package/lib/index.d.ts +1 -1
  88. package/lib/index.js +1 -1
  89. package/package.json +1 -1
  90. package/scripts/mcp-server/examples.generated.json +36 -0
  91. package/scripts/mcp-server/index.generated.json +538 -16
@@ -17,16 +17,40 @@ export { getNestedValue, setNestedValue };
17
17
  // ---------------------------------------------------------------------------
18
18
  // stableSerialize — deterministic deep serialization for params comparison
19
19
  // ---------------------------------------------------------------------------
20
- export function stableSerialize(value) {
20
+ function serializeWithSeen(value, seen) {
21
+ var _a;
21
22
  if (value === null || value === undefined) return String(value);
22
- if (_typeof(value) !== 'object') return JSON.stringify(value);
23
+ // Date must be serialized by VALUE: the generic object branch would see no
24
+ // enumerable keys and collapse every Date to '{}', so a params object whose
25
+ // only change is a date would never trigger a request re-fetch.
26
+ if (value instanceof Date) return "Date(".concat(value.getTime(), ")");
27
+ if (_typeof(value) !== 'object') {
28
+ // JSON.stringify yields undefined for functions/symbols — fall back to a
29
+ // (still deterministic) String() so the result always concatenates.
30
+ return (_a = JSON.stringify(value)) !== null && _a !== void 0 ? _a : String(value);
31
+ }
32
+ // `seen` tracks the current ANCESTOR chain only (entries are removed on the
33
+ // way back out), so shared-but-acyclic references serialize normally and
34
+ // genuine cycles short-circuit instead of overflowing the stack.
35
+ if (seen.has(value)) return '"[Circular]"';
36
+ seen.add(value);
37
+ var result;
23
38
  if (Array.isArray(value)) {
24
- return '[' + value.map(stableSerialize).join(',') + ']';
39
+ result = '[' + value.map(function (item) {
40
+ return serializeWithSeen(item, seen);
41
+ }).join(',') + ']';
42
+ } else {
43
+ var record = value;
44
+ var keys = Object.keys(record).sort();
45
+ result = '{' + keys.map(function (k) {
46
+ return JSON.stringify(k) + ':' + serializeWithSeen(record[k], seen);
47
+ }).join(',') + '}';
25
48
  }
26
- var keys = Object.keys(value).sort();
27
- return '{' + keys.map(function (k) {
28
- return JSON.stringify(k) + ':' + stableSerialize(value[k]);
29
- }).join(',') + '}';
49
+ seen["delete"](value);
50
+ return result;
51
+ }
52
+ export function stableSerialize(value) {
53
+ return serializeWithSeen(value, new WeakSet());
30
54
  }
31
55
  // ---------------------------------------------------------------------------
32
56
  // Readonly renderers
@@ -211,4 +235,4 @@ export function valueEnumToOptions(valueEnum) {
211
235
  };
212
236
  });
213
237
  }
214
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS91dGlscy5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS91dGlscy50cyJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIldJRFRIX1NJWkVfTUFQIiwiZ2V0TmVzdGVkVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsInN0YWJsZVNlcmlhbGl6ZSIsInZhbHVlIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwiX3R5cGVvZiIsIkpTT04iLCJzdHJpbmdpZnkiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJqb2luIiwia2V5cyIsInNvcnQiLCJrIiwicmVuZGVyVGV4dFJlYWRvbmx5IiwicmVuZGVyQm9vbGVhblJlYWRvbmx5IiwicmVuZGVyTnVtZXJpY1JlYWRvbmx5IiwibnVtIiwiTnVtYmVyIiwiaXNOYU4iLCJyZXNvbHZlV2lkdGgiLCJ3aWR0aCIsIl9hIiwibWQiLCJleHRyYWN0QnV0dG9uUHJvcHMiLCJjb25maWciLCJkaXNhYmxlZCIsInJlc3QiLCJfY29uZmlnJGRpc2FibGVkIiwiaXNQbGFpbk9iamVjdCIsInRyYW5zZm9ybVN1Ym1pdFZhbHVlcyIsInZhbHVlcyIsInRyYW5zZm9ybXMiLCJyZXN1bHQiLCJhc3NpZ24iLCJmb3JFYWNoIiwibmFtZSIsInRyYW5zZm9ybUZuIiwicmF3VmFsdWUiLCJ0cmFuc2Zvcm1lZCIsImRvdEluZGV4IiwibGFzdEluZGV4T2YiLCJwYXJlbnRQYXRoIiwic2xpY2UiLCJwYXJlbnQiLCJjaGlsZEtleSIsIm5ld1BhcmVudCIsImluY2x1ZGVzIiwiX2RlZmluZVByb3BlcnR5IiwiREFURV9GT1JNQVQiLCJEQVRFX1RJTUVfRk9STUFUIiwiZm9ybWF0RGF0ZUJ5UGF0dGVybiIsImRhdGUiLCJwYXR0ZXJuIiwicGFkIiwibiIsInBhZFN0YXJ0IiwicmVwbGFjZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsImZvcm1hdERhdGVWYWx1ZXMiLCJkYXRlRm9ybWF0dGVyIiwidmFsdWVUeXBlcyIsImZvcm1hdE9uZSIsInBhdGgiLCJnZXRUaW1lIiwid2FsayIsIkRhdGUiLCJjaGFuZ2VkIiwibmV4dCIsIml0ZW0iLCJpbmRleCIsIndhbGtlZCIsImNvbmNhdCIsIl9pIiwiX09iamVjdCRrZXlzIiwia2V5IiwiY2hpbGQiLCJvbWl0TmlsVmFsdWVzIiwiX2kyIiwiX09iamVjdCRrZXlzMiIsInYiLCJjbGVhbmVkIiwidmFsdWVFbnVtVG9PcHRpb25zIiwidmFsdWVFbnVtIiwiZW50cmllcyIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5IiwibGFiZWwiLCJ0ZXh0Il0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDO0FDUkQsU0FBU1csY0FBYyxRQUFRLGFBQWE7QUFDNUMsU0FBU0MsY0FBYyxFQUFFQyxjQUFjLFFBQVEsa0JBQWtCO0FBUWpFO0FBQ0E7QUFDQSxTQUFTRCxjQUFjLEVBQUVDLGNBQWM7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsT0FBTSxTQUFVQyxlQUFlQSxDQUFDQyxLQUFjLEVBQUE7RUFDNUMsSUFBSUEsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLQyxTQUFTLEVBQUUsT0FBT0MsTUFBTSxDQUFDRixLQUFLLENBQUM7RUFDL0QsSUFBSUcsT0FBQSxDQUFPSCxLQUFLLE1BQUssUUFBUSxFQUFFLE9BQU9JLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxLQUFLLENBQUM7RUFFM0QsSUFBSU0sS0FBSyxDQUFDQyxPQUFPLENBQUNQLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLE9BQU8sR0FBRyxHQUFHQSxLQUFLLENBQUNRLEdBQUcsQ0FBQ1QsZUFBZSxDQUFDLENBQUNVLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHO0VBQ3pEO0VBRUEsSUFBTUMsSUFBSSxHQUFHdkIsTUFBTSxDQUFDdUIsSUFBSSxDQUFDVixLQUFnQyxDQUFDLENBQUNXLElBQUksQ0FBQSxDQUFFO0VBQ2pFLE9BQ0UsR0FBRyxHQUNIRCxJQUFJLENBQ0RGLEdBQUcsQ0FDRixVQUFDSSxDQUFDO0lBQUEsT0FDQVIsSUFBSSxDQUFDQyxTQUFTLENBQUNPLENBQUMsQ0FBQyxHQUNqQixHQUFHLEdBQ0hiLGVBQWUsQ0FBRUMsS0FBaUMsQ0FBQ1ksQ0FBQyxDQUFDLENBQUM7RUFBQSxFQUN6RCxDQUNBSCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQ1osR0FBRztBQUVQO0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTSxTQUFVSSxrQkFBa0JBLENBQUNiLEtBQWMsRUFBQTtFQUMvQyxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtDLFNBQVMsSUFBSUQsS0FBSyxLQUFLLEVBQUUsRUFBRSxPQUFPLEdBQUc7RUFDckUsT0FBT0UsTUFBTSxDQUFDRixLQUFLLENBQUM7QUFDdEI7QUFFQSxPQUFNLFNBQVVjLHFCQUFxQkEsQ0FBQ2QsS0FBYyxFQUFBO0VBQ2xELElBQUlBLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0MsU0FBUyxFQUFFLE9BQU8sR0FBRztFQUNyRCxPQUFPRCxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUk7QUFDN0I7QUFFQSxPQUFNLFNBQVVlLHFCQUFxQkEsQ0FBQ2YsS0FBYyxFQUFBO0VBQ2xELElBQUlBLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0MsU0FBUyxJQUFJRCxLQUFLLEtBQUssRUFBRSxFQUFFLE9BQU8sR0FBRztFQUNyRSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUUsT0FBT0UsTUFBTSxDQUFDRixLQUFLLENBQUM7RUFDbkQsSUFBTWdCLEdBQUcsR0FBR0MsTUFBTSxDQUFDakIsS0FBSyxDQUFDO0VBQ3pCLElBQUlpQixNQUFNLENBQUNDLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHO0VBQ2pDLE9BQU9kLE1BQU0sQ0FBQ2MsR0FBRyxDQUFDO0FBQ3BCO0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTSxTQUFVRyxZQUFZQSxDQUFDQyxLQUF5QyxFQUFBO0VERmxFLElBQUlDLEVBQUU7RUNHUixJQUFJLE9BQU9ELEtBQUssS0FBSyxRQUFRLEVBQUUsT0FBT0EsS0FBSztFQUMzQyxPQUFPLENBQUFDLEVBQUEsR0FBQXpCLGNBQWMsQ0FBQ3dCLEtBQUssQ0FBQyxNQUFBLElBQUEsSUFBQUMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUl6QixjQUFjLENBQUMwQixFQUFFO0FBQ25EO0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTSxTQUFVQyxrQkFBa0JBLENBQ2hDQyxNQUFnRCxFQUFBO0VBRWhELElBQUlBLE1BQU0sS0FBSyxLQUFLLElBQUlBLE1BQU0sS0FBS3ZCLFNBQVMsRUFBRTtJQUM1QyxPQUFPO01BQUV3QixRQUFRLEVBQUUsS0FBSztNQUFFQyxJQUFJLEVBQUUsQ0FBQTtJQUFFLENBQUU7RUFDdEM7RUFDQSxJQUFBQyxnQkFBQSxHQUFzQ0gsTUFBTSxDQUFwQ0MsUUFBUTtJQUFSQSxRQUFRLEdBQUFFLGdCQUFBLGNBQUcsS0FBSyxHQUFBQSxnQkFBQTtJQUFLRCxJQUFJLEdBQUE1QyxNQUFBLENBQUswQyxNQUFNLEVBQXRDLENBQUEsVUFBQSxDQUE2QixDQUFTO0VBQzVDLE9BQU87SUFBRUMsUUFBUSxFQUFSQSxRQUFRO0lBQUVDLElBQUksRUFBSkE7RUFBSSxDQUFFO0FBQzNCO0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0UsYUFBYUEsQ0FBQzVCLEtBQWMsRUFBQTtFQUNuQyxPQUFPQSxLQUFLLEtBQUssSUFBSSxJQUFJRyxPQUFBLENBQU9ILEtBQUssTUFBSyxRQUFRLElBQUksQ0FBQ00sS0FBSyxDQUFDQyxPQUFPLENBQUNQLEtBQUssQ0FBQztBQUM3RTtBQUVBLE9BQU0sU0FBVTZCLHFCQUFxQkEsQ0FDbkNDLE1BQStCLEVBQy9CQyxVQUFtRCxFQUFBO0VBRW5ELElBQU1yQixJQUFJLEdBQUd2QixNQUFNLENBQUN1QixJQUFJLENBQUNxQixVQUFVLENBQUM7RUFDcEMsSUFBSXJCLElBQUksQ0FBQ2hCLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBT29DLE1BQU07RUFFcEM7RUFDQTtFQUNBO0VBQ0EsSUFBSUUsTUFBTSxHQUFBN0MsTUFBQSxDQUFBOEMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRSCxNQUFNLENBQUU7RUFFMUI7RUFDQXBCLElBQUksQ0FBQ0MsSUFBSSxDQUFBLENBQUUsQ0FBQ3VCLE9BQU8sQ0FBQyxVQUFDQyxJQUFJLEVBQUk7SUFDM0IsSUFBTUMsV0FBVyxHQUFHTCxVQUFVLENBQUNJLElBQUksQ0FBQztJQUNwQyxJQUFJLE9BQU9DLFdBQVcsS0FBSyxVQUFVLEVBQUU7SUFFdkMsSUFBTUMsUUFBUSxHQUFHeEMsY0FBYyxDQUFDbUMsTUFBTSxFQUFFRyxJQUFJLENBQUM7SUFDN0MsSUFBTUcsV0FBVyxHQUFHRixXQUFXLENBQUNDLFFBQVEsRUFBRUYsSUFBSSxFQUFFSCxNQUFNLENBQUM7SUFFdkQsSUFBSUosYUFBYSxDQUFDVSxXQUFXLENBQUMsRUFBRTtNQUM5QjtNQUNBLElBQU1DLFFBQVEsR0FBR0osSUFBSSxDQUFDSyxXQUFXLENBQUMsR0FBRyxDQUFDO01BQ3RDLElBQUlELFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNuQjtRQUNBLE9BQU9QLE1BQU0sQ0FBQ0csSUFBSSxDQUFDO1FBQ25CaEQsTUFBTSxDQUFDOEMsTUFBTSxDQUFDRCxNQUFNLEVBQUVNLFdBQVcsQ0FBQztNQUNwQyxDQUFDLE1BQU07UUFDTDtRQUNBLElBQU1HLFVBQVUsR0FBR04sSUFBSSxDQUFDTyxLQUFLLENBQUMsQ0FBQyxFQUFFSCxRQUFRLENBQUM7UUFDMUMsSUFBTUksTUFBTSxHQUFHOUMsY0FBYyxDQUFDbUMsTUFBTSxFQUFFUyxVQUFVLENBQUM7UUFDakQsSUFBSWIsYUFBYSxDQUFDZSxNQUFNLENBQUMsRUFBRTtVQUN6QixJQUFNQyxRQUFRLEdBQUdULElBQUksQ0FBQ08sS0FBSyxDQUFDSCxRQUFRLEdBQUcsQ0FBQyxDQUFDO1VBQ3pDLElBQU1NLFNBQVMsR0FBQTFELE1BQUEsQ0FBQThDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBUVUsTUFBTSxDQUFFO1VBQy9CLE9BQU9FLFNBQVMsQ0FBQ0QsUUFBUSxDQUFDO1VBQzFCekQsTUFBTSxDQUFDOEMsTUFBTSxDQUFDWSxTQUFTLEVBQUVQLFdBQVcsQ0FBQztVQUNyQ04sTUFBTSxHQUFHbEMsY0FBYyxDQUFDa0MsTUFBTSxFQUFFUyxVQUFVLEVBQUVJLFNBQVMsQ0FBQztRQUN4RDtNQUNGO0lBQ0YsQ0FBQyxNQUFNO01BQ0w7TUFDQWIsTUFBTSxHQUFHRyxJQUFJLENBQUNXLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FDdkJoRCxjQUFjLENBQUNrQyxNQUFNLEVBQUVHLElBQUksRUFBRUcsV0FBVyxDQUFDLEdBQzFDbkQsTUFBQSxDQUFBOEMsTUFBQSxDQUFBOUMsTUFBQSxDQUFBOEMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFNRCxNQUFNLENBQUEsRUFBQWUsZUFBQSxLQUFHWixJQUFJLEVBQUdHLFdBQVcsQ0FBQSxDQUFFO0lBQ3hDO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsT0FBT04sTUFBTTtBQUNmO0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNZ0IsV0FBVyxHQUFHLFlBQVk7QUFDdkMsT0FBTyxJQUFNQyxnQkFBZ0IsR0FBRyxxQkFBcUI7QUFFckQ7QUFDQSxPQUFNLFNBQVVDLG1CQUFtQkEsQ0FBQ0MsSUFBVSxFQUFFQyxPQUFlLEVBQUE7RUFDN0QsSUFBTUMsR0FBRyxHQUFHLFNBQU5BLEdBQUdBLENBQUlDLENBQVM7SUFBQSxPQUFLcEQsTUFBTSxDQUFDb0QsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQUE7RUFDckQsT0FBT0gsT0FBTyxDQUNYSSxPQUFPLENBQUMsT0FBTyxFQUFFdEQsTUFBTSxDQUFDaUQsSUFBSSxDQUFDTSxXQUFXLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FDNUNELE9BQU8sQ0FBQyxLQUFLLEVBQUVILEdBQUcsQ0FBQ0YsSUFBSSxDQUFDTyxRQUFRLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3hDRixPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1EsT0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQ25DSCxPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1MsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQ3BDSixPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1UsVUFBVSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQ3RDTCxPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1csVUFBVSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzNDO0FBRUE7QURaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDY0EsT0FBTSxTQUFVQyxnQkFBZ0JBLENBQzlCakMsTUFBK0IsRUFDL0JrQyxhQUFtQyxFQUNuQ0MsVUFBNEMsRUFBQTtFQUU1QyxJQUFJRCxhQUFhLEtBQUssS0FBSyxFQUFFLE9BQU9sQyxNQUFNO0VBRTFDLElBQU1vQyxTQUFTLEdBQUcsU0FBWkEsU0FBU0EsQ0FBSWYsSUFBVSxFQUFFZ0IsSUFBWSxFQUFhO0lBQ3RELElBQUksT0FBT0gsYUFBYSxLQUFLLFVBQVUsRUFBRSxPQUFPQSxhQUFhLENBQUNiLElBQUksRUFBRWdCLElBQUksQ0FBQztJQUN6RSxJQUFJSCxhQUFhLEtBQUssUUFBUSxFQUFFLE9BQU9iLElBQUksQ0FBQ2lCLE9BQU8sQ0FBQSxDQUFFO0lBQ3JELElBQUlKLGFBQWEsS0FBSyxRQUFRLEVBQUU7TUFDOUIsSUFBTVosT0FBTyxHQUFHYSxVQUFVLENBQUNFLElBQUksQ0FBQyxLQUFLLFVBQVUsR0FBR2xCLGdCQUFnQixHQUFHRCxXQUFXO01BQ2hGLE9BQU9FLG1CQUFtQixDQUFDQyxJQUFJLEVBQUVDLE9BQU8sQ0FBQztJQUMzQztJQUNBLE9BQU9GLG1CQUFtQixDQUFDQyxJQUFJLEVBQUVhLGFBQWEsQ0FBQztFQUNqRCxDQUFDO0VBRUQsSUFBTUssS0FBSSxHQUFHLFNBQVBBLElBQUlBLENBQUlyRSxLQUFjLEVBQUVtRSxJQUFZLEVBQWE7SUFDckQsSUFBSW5FLEtBQUssWUFBWXNFLElBQUksRUFBRSxPQUFPSixTQUFTLENBQUNsRSxLQUFLLEVBQUVtRSxJQUFJLENBQUM7SUFDeEQsSUFBSTdELEtBQUssQ0FBQ0MsT0FBTyxDQUFDUCxLQUFLLENBQUMsRUFBRTtNQUN4QixJQUFJdUUsT0FBTyxHQUFHLEtBQUs7TUFDbkIsSUFBTUMsSUFBSSxHQUFHeEUsS0FBSyxDQUFDUSxHQUFHLENBQUMsVUFBQ2lFLElBQUksRUFBRUMsS0FBSyxFQUFJO1FBQ3JDLElBQU1DLE1BQU0sR0FBR04sS0FBSSxDQUFDSSxJQUFJLEVBQUVOLElBQUksTUFBQVMsTUFBQSxDQUFNVCxJQUFJLE9BQUFTLE1BQUEsQ0FBSUYsS0FBSyxJQUFLeEUsTUFBTSxDQUFDd0UsS0FBSyxDQUFDLENBQUM7UUFDcEUsSUFBSUMsTUFBTSxLQUFLRixJQUFJLEVBQUVGLE9BQU8sR0FBRyxJQUFJO1FBQ25DLE9BQU9JLE1BQU07TUFDZixDQUFDLENBQUM7TUFDRixPQUFPSixPQUFPLEdBQUdDLElBQUksR0FBR3hFLEtBQUs7SUFDL0I7SUFDQSxJQUFJNEIsYUFBYSxDQUFDNUIsS0FBSyxDQUFDLEVBQUU7TUFDeEIsSUFBSXVFLFFBQU8sR0FBRyxLQUFLO01BQ25CLElBQU1DLEtBQUksR0FBNEIsQ0FBQSxDQUFFO01BQ3hDLFNBQUFLLEVBQUEsTUFBQUMsWUFBQSxHQUFrQjNGLE1BQU0sQ0FBQ3VCLElBQUksQ0FBQ1YsS0FBSyxDQUFDLEVBQUE2RSxFQUFBLEdBQUFDLFlBQUEsQ0FBQXBGLE1BQUEsRUFBQW1GLEVBQUEsSUFBRTtRQUFqQyxJQUFNRSxHQUFHLEdBQUFELFlBQUEsQ0FBQUQsRUFBQTtRQUNaLElBQU1HLEtBQUssR0FBR2hGLEtBQUssQ0FBQytFLEdBQUcsQ0FBQztRQUN4QixJQUFNSixNQUFNLEdBQUdOLEtBQUksQ0FBQ1csS0FBSyxFQUFFYixJQUFJLE1BQUFTLE1BQUEsQ0FBTVQsSUFBSSxPQUFBUyxNQUFBLENBQUlHLEdBQUcsSUFBS0EsR0FBRyxDQUFDO1FBQ3pELElBQUlKLE1BQU0sS0FBS0ssS0FBSyxFQUFFVCxRQUFPLEdBQUcsSUFBSTtRQUNwQ0MsS0FBSSxDQUFDTyxHQUFHLENBQUMsR0FBR0osTUFBTTtNQUNwQjtNQUNBLE9BQU9KLFFBQU8sR0FBR0MsS0FBSSxHQUFHeEUsS0FBSztJQUMvQjtJQUNBLE9BQU9BLEtBQUs7RUFDZCxDQUFDO0VBRUQsT0FBT3FFLEtBQUksQ0FBQ3ZDLE1BQU0sRUFBRSxFQUFFLENBQTRCO0FBQ3BEO0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTSxTQUFVbUQsYUFBYUEsQ0FDM0JuRCxNQUErQixFQUFBO0VBRS9CLElBQU1FLE1BQU0sR0FBNEIsQ0FBQSxDQUFFO0VBQzFDLFNBQUFrRCxHQUFBLE1BQUFDLGFBQUEsR0FBa0JoRyxNQUFNLENBQUN1QixJQUFJLENBQUNvQixNQUFNLENBQUMsRUFBQW9ELEdBQUEsR0FBQUMsYUFBQSxDQUFBekYsTUFBQSxFQUFBd0YsR0FBQSxJQUFFO0lBQWxDLElBQU1ILEdBQUcsR0FBQUksYUFBQSxDQUFBRCxHQUFBO0lBQ1osSUFBTUUsQ0FBQyxHQUFHdEQsTUFBTSxDQUFDaUQsR0FBRyxDQUFDO0lBQ3JCLElBQUlLLENBQUMsS0FBSyxJQUFJLElBQUlBLENBQUMsS0FBS25GLFNBQVMsSUFBSW1GLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDL0MsSUFBSXhELGFBQWEsQ0FBQ3dELENBQUMsQ0FBQyxFQUFFO01BQ3BCLElBQU1DLE9BQU8sR0FBR0osYUFBYSxDQUFDRyxDQUFDLENBQUM7TUFDaEMsSUFBSWpHLE1BQU0sQ0FBQ3VCLElBQUksQ0FBQzJFLE9BQU8sQ0FBQyxDQUFDM0YsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNuQ3NDLE1BQU0sQ0FBQytDLEdBQUcsQ0FBQyxHQUFHTSxPQUFPO01BQ3ZCO0lBQ0YsQ0FBQyxNQUFNO01BQ0xyRCxNQUFNLENBQUMrQyxHQUFHLENBQUMsR0FBR0ssQ0FBQztJQUNqQjtFQUNGO0VBQ0EsT0FBT3BELE1BQU07QUFDZjtBQVdBLE9BQU0sU0FBVXNELGtCQUFrQkEsQ0FDaENDLFNBQThCLEVBQUE7RUFFOUIsT0FBT3BHLE1BQU0sQ0FBQ3FHLE9BQU8sQ0FBQ0QsU0FBUyxDQUFDLENBQUMvRSxHQUFHLENBQUMsVUFBQWlGLElBQUEsRUFBa0I7SUFBQSxJQUFBQyxLQUFBLEdBQUFDLGNBQUEsQ0FBQUYsSUFBQTtNQUFoQlYsR0FBRyxHQUFBVyxLQUFBO01BQUVsRSxNQUFNLEdBQUFrRSxLQUFBO0lBQ2hELElBQUksT0FBT2xFLE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFDOUIsT0FBTztRQUFFb0UsS0FBSyxFQUFFcEUsTUFBTTtRQUFFeEIsS0FBSyxFQUFFK0U7TUFBRyxDQUFFO0lBQ3RDO0lBQ0EsT0FBTztNQUFFYSxLQUFLLEVBQUVwRSxNQUFNLENBQUNxRSxJQUFJO01BQUU3RixLQUFLLEVBQUUrRSxHQUFHO01BQUV0RCxRQUFRLEVBQUVELE1BQU0sQ0FBQ0M7SUFBUSxDQUFFO0VBQ3RFLENBQUMsQ0FBQztBQUNKIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS91dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IFdJRFRIX1NJWkVfTUFQIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG4vLyBSZS1leHBvcnRlZCBmb3IgY29uc3VtZXJzIHRoYXQgaW1wb3J0IHRoZSBuZXN0ZWQtcGF0aCBoZWxwZXJzIGZyb20gYC4vdXRpbHNgXG4vLyAoUHJvRm9ybURlcGVuZGVuY3ksIFByb0Zvcm1MaXN0KS4gQ2Fub25pY2FsIGRlZmluaXRpb25zIGxpdmUgaW4gY29yZS9wYXRoVXRpbHMuXG5leHBvcnQgeyBnZXROZXN0ZWRWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gc3RhYmxlU2VyaWFsaXplIOKAlCBkZXRlcm1pbmlzdGljIGRlZXAgc2VyaWFsaXphdGlvbiBmb3IgcGFyYW1zIGNvbXBhcmlzb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIHN0YWJsZVNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICdbJyArIHZhbHVlLm1hcChzdGFibGVTZXJpYWxpemUpLmpvaW4oJywnKSArICddJztcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKS5zb3J0KCk7XG4gICAgcmV0dXJuICgneycgK1xuICAgICAgICBrZXlzXG4gICAgICAgICAgICAubWFwKChrKSA9PiBKU09OLnN0cmluZ2lmeShrKSArXG4gICAgICAgICAgICAnOicgK1xuICAgICAgICAgICAgc3RhYmxlU2VyaWFsaXplKHZhbHVlW2tdKSlcbiAgICAgICAgICAgIC5qb2luKCcsJykgK1xuICAgICAgICAnfScpO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWFkb25seSByZW5kZXJlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclRleHRSZWFkb25seSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJylcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCb29sZWFuUmVhZG9ubHkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gdmFsdWUgPyAnWWVzJyA6ICdObyc7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTnVtZXJpY1JlYWRvbmx5KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKVxuICAgICAgICByZXR1cm4gJy0nO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSlcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gU3RyaW5nKG51bSk7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHJlc29sdmVXaWR0aCDigJQgY29udmVydCBuYW1lZCB3aWR0aCB0byBweCBvciBwYXNzIHRocm91Z2ggbnVtYmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlV2lkdGgod2lkdGgpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICByZXR1cm4gKF9hID0gV0lEVEhfU0laRV9NQVBbd2lkdGhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBXSURUSF9TSVpFX01BUC5tZDtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZXh0cmFjdEJ1dHRvblByb3BzIOKAlCBzYWZlbHkgZXh0cmFjdCBwcm9wcyBmcm9tIGJ1dHRvbiBjb25maWdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RCdXR0b25Qcm9wcyhjb25maWcpIHtcbiAgICBpZiAoY29uZmlnID09PSBmYWxzZSB8fCBjb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4geyBkaXNhYmxlZDogZmFsc2UsIHJlc3Q6IHt9IH07XG4gICAgfVxuICAgIGNvbnN0IHsgZGlzYWJsZWQgPSBmYWxzZSB9ID0gY29uZmlnLCByZXN0ID0gX19yZXN0KGNvbmZpZywgW1wiZGlzYWJsZWRcIl0pO1xuICAgIHJldHVybiB7IGRpc2FibGVkLCByZXN0IH07XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyDigJQgYXBwbHkgcmVnaXN0ZXJlZCBmaWVsZCB0cmFuc2Zvcm1zIHRvIGZvcm0gdmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtU3VibWl0VmFsdWVzKHZhbHVlcywgdHJhbnNmb3Jtcykge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0cmFuc2Zvcm1zKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgLy8gQWxsIG5lc3RlZCB3cml0ZXMgZ28gdGhyb3VnaCBzZXROZXN0ZWRWYWx1ZSAoY2xvbmVzIGV2ZXJ5IG9iamVjdC9hcnJheSBvblxuICAgIC8vIHRoZSBwYXRoKSDigJQgYHZhbHVlc2AgaXMgdGhlIGxpdmUgZm9ybSBzdGF0ZSBhbmQgbXVzdCBuZXZlciBiZSBtdXRhdGVkO1xuICAgIC8vIG9ubHkgYHJlc3VsdGAgaXRzZWxmIChvdXIgb3duIHNoYWxsb3cgY29weSkgbWF5IGJlIHdyaXR0ZW4gZGlyZWN0bHkuXG4gICAgbGV0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIHZhbHVlcyk7XG4gICAgLy8gUHJvY2VzcyB0cmFuc2Zvcm1zIGluIHNvcnRlZCBrZXkgb3JkZXIgZm9yIGRldGVybWluaXNtXG4gICAga2V5cy5zb3J0KCkuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1GbiA9IHRyYW5zZm9ybXNbbmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gZ2V0TmVzdGVkVmFsdWUocmVzdWx0LCBuYW1lKTtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1GbihyYXdWYWx1ZSwgbmFtZSwgcmVzdWx0KTtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodHJhbnNmb3JtZWQpKSB7XG4gICAgICAgICAgICAvLyBJZiB0cmFuc2Zvcm0gcmV0dXJucyBhbiBvYmplY3QsIGRlbGV0ZSBvcmlnaW5hbCBrZXkgYW5kIG1lcmdlIHRvIHBhcmVudFxuICAgICAgICAgICAgY29uc3QgZG90SW5kZXggPSBuYW1lLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgICAgICAgICBpZiAoZG90SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gVG9wLWxldmVsIGZpZWxkIOKAlCBkZWxldGUgb3JpZ2luYWwgYW5kIG1lcmdlIGF0IHJvb3RcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVzdWx0W25hbWVdO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCB0cmFuc2Zvcm1lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBOZXN0ZWQgZmllbGQg4oCUIHJlYnVpbGQgdGhlIHBhcmVudCB3aXRob3V0IHRoZSBvcmlnaW5hbCBrZXksIG1lcmdlZFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBuYW1lLnNsaWNlKDAsIGRvdEluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBnZXROZXN0ZWRWYWx1ZShyZXN1bHQsIHBhcmVudFBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRLZXkgPSBuYW1lLnNsaWNlKGRvdEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhcmVudCA9IE9iamVjdC5hc3NpZ24oe30sIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdQYXJlbnRbY2hpbGRLZXldO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG5ld1BhcmVudCwgdHJhbnNmb3JtZWQpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXROZXN0ZWRWYWx1ZShyZXN1bHQsIHBhcmVudFBhdGgsIG5ld1BhcmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gUHJpbWl0aXZlIHZhbHVlIOKAlCByZXBsYWNlIGF0IHRoZSAocG9zc2libHkgbmVzdGVkKSBwYXRoXG4gICAgICAgICAgICByZXN1bHQgPSBuYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IHNldE5lc3RlZFZhbHVlKHJlc3VsdCwgbmFtZSwgdHJhbnNmb3JtZWQpXG4gICAgICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHJlc3VsdCksIHsgW25hbWVdOiB0cmFuc2Zvcm1lZCB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIERhdGUgZm9ybWF0dGluZyAoZm9ybS1sZXZlbCBkYXRlRm9ybWF0dGVyLCBkZXBlbmRlbmN5LWZyZWUpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZLU1NLUREJztcbmV4cG9ydCBjb25zdCBEQVRFX1RJTUVfRk9STUFUID0gJ1lZWVktTU0tREQgSEg6bW06c3MnO1xuLyoqIE1pbmltYWwgcGF0dGVybiBmb3JtYXR0ZXIgc3VwcG9ydGluZyBZWVlZIC8gTU0gLyBERCAvIEhIIC8gbW0gLyBzcyB0b2tlbnMuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZUJ5UGF0dGVybihkYXRlLCBwYXR0ZXJuKSB7XG4gICAgY29uc3QgcGFkID0gKG4pID0+IFN0cmluZyhuKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIHJldHVybiBwYXR0ZXJuXG4gICAgICAgIC5yZXBsYWNlKC9ZWVlZL2csIFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpKVxuICAgICAgICAucmVwbGFjZSgvTU0vZywgcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpKVxuICAgICAgICAucmVwbGFjZSgvREQvZywgcGFkKGRhdGUuZ2V0RGF0ZSgpKSlcbiAgICAgICAgLnJlcGxhY2UoL0hIL2csIHBhZChkYXRlLmdldEhvdXJzKCkpKVxuICAgICAgICAucmVwbGFjZSgvbW0vZywgcGFkKGRhdGUuZ2V0TWludXRlcygpKSlcbiAgICAgICAgLnJlcGxhY2UoL3NzL2csIHBhZChkYXRlLmdldFNlY29uZHMoKSkpO1xufVxuLyoqXG4gKiBSZWN1cnNpdmVseSBzZXJpYWxpemUgZXZlcnkgYERhdGVgIGluIGB2YWx1ZXNgIGFjY29yZGluZyB0byBgZGF0ZUZvcm1hdHRlcmAuXG4gKiBXaXRoIGAnc3RyaW5nJ2AsIGZpZWxkcyByZWdpc3RlcmVkIGFzIGB2YWx1ZVR5cGU6ICdkYXRlVGltZSdgIHVzZVxuICogYFlZWVktTU0tREQgSEg6bW06c3NgLCBldmVyeXRoaW5nIGVsc2UgYFlZWVktTU0tRERgLiBVbnRvdWNoZWQgd2hlbiB0aGVcbiAqIGZvcm1hdHRlciBpcyBgZmFsc2VgLiBOb24tRGF0ZSB2YWx1ZXMgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVzKSB7XG4gICAgaWYgKGRhdGVGb3JtYXR0ZXIgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIGNvbnN0IGZvcm1hdE9uZSA9IChkYXRlLCBwYXRoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0ZUZvcm1hdHRlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHJldHVybiBkYXRlRm9ybWF0dGVyKGRhdGUsIHBhdGgpO1xuICAgICAgICBpZiAoZGF0ZUZvcm1hdHRlciA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgIGlmIChkYXRlRm9ybWF0dGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcGF0dGVybiA9IHZhbHVlVHlwZXNbcGF0aF0gPT09ICdkYXRlVGltZScgPyBEQVRFX1RJTUVfRk9STUFUIDogREFURV9GT1JNQVQ7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZUJ5UGF0dGVybihkYXRlLCBwYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZUJ5UGF0dGVybihkYXRlLCBkYXRlRm9ybWF0dGVyKTtcbiAgICB9O1xuICAgIGNvbnN0IHdhbGsgPSAodmFsdWUsIHBhdGgpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSlcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPbmUodmFsdWUsIHBhdGgpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gdmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdhbGtlZCA9IHdhbGsoaXRlbSwgcGF0aCA/IGAke3BhdGh9LiR7aW5kZXh9YCA6IFN0cmluZyhpbmRleCkpO1xuICAgICAgICAgICAgICAgIGlmICh3YWxrZWQgIT09IGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB3YWxrZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkID8gbmV4dCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdmFsdWVba2V5XTtcbiAgICAgICAgICAgICAgICBjb25zdCB3YWxrZWQgPSB3YWxrKGNoaWxkLCBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHdhbGtlZCAhPT0gY2hpbGQpXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG5leHRba2V5XSA9IHdhbGtlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkID8gbmV4dCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiB3YWxrKHZhbHVlcywgJycpO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBvbWl0TmlsVmFsdWVzIOKAlCByZWN1cnNpdmVseSByZW1vdmUgbnVsbCAvIHVuZGVmaW5lZCAvICcnIGZyb20gb2JqZWN0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiBvbWl0TmlsVmFsdWVzKHZhbHVlcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlcykpIHtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlc1trZXldO1xuICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gJycpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodikpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuZWQgPSBvbWl0TmlsVmFsdWVzKHYpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGNsZWFuZWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGNsZWFuZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUVudW1Ub09wdGlvbnModmFsdWVFbnVtKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlRW51bSkubWFwKChba2V5LCBjb25maWddKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGNvbmZpZywgdmFsdWU6IGtleSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiBjb25maWcudGV4dCwgdmFsdWU6IGtleSwgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZCB9O1xuICAgIH0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
238
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS91dGlscy5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS91dGlscy50cyJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIldJRFRIX1NJWkVfTUFQIiwiZ2V0TmVzdGVkVmFsdWUiLCJzZXROZXN0ZWRWYWx1ZSIsInNlcmlhbGl6ZVdpdGhTZWVuIiwidmFsdWUiLCJzZWVuIiwiX2EiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJEYXRlIiwiY29uY2F0IiwiZ2V0VGltZSIsIl90eXBlb2YiLCJKU09OIiwic3RyaW5naWZ5IiwiaGFzIiwiYWRkIiwicmVzdWx0IiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiaXRlbSIsImpvaW4iLCJyZWNvcmQiLCJrZXlzIiwic29ydCIsImsiLCJzdGFibGVTZXJpYWxpemUiLCJXZWFrU2V0IiwicmVuZGVyVGV4dFJlYWRvbmx5IiwicmVuZGVyQm9vbGVhblJlYWRvbmx5IiwicmVuZGVyTnVtZXJpY1JlYWRvbmx5IiwibnVtIiwiTnVtYmVyIiwiaXNOYU4iLCJyZXNvbHZlV2lkdGgiLCJ3aWR0aCIsIm1kIiwiZXh0cmFjdEJ1dHRvblByb3BzIiwiY29uZmlnIiwiZGlzYWJsZWQiLCJyZXN0IiwiX2NvbmZpZyRkaXNhYmxlZCIsImlzUGxhaW5PYmplY3QiLCJ0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMiLCJ2YWx1ZXMiLCJ0cmFuc2Zvcm1zIiwiYXNzaWduIiwiZm9yRWFjaCIsIm5hbWUiLCJ0cmFuc2Zvcm1GbiIsInJhd1ZhbHVlIiwidHJhbnNmb3JtZWQiLCJkb3RJbmRleCIsImxhc3RJbmRleE9mIiwicGFyZW50UGF0aCIsInNsaWNlIiwicGFyZW50IiwiY2hpbGRLZXkiLCJuZXdQYXJlbnQiLCJpbmNsdWRlcyIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRBVEVfRk9STUFUIiwiREFURV9USU1FX0ZPUk1BVCIsImZvcm1hdERhdGVCeVBhdHRlcm4iLCJkYXRlIiwicGF0dGVybiIsInBhZCIsIm4iLCJwYWRTdGFydCIsInJlcGxhY2UiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJmb3JtYXREYXRlVmFsdWVzIiwiZGF0ZUZvcm1hdHRlciIsInZhbHVlVHlwZXMiLCJmb3JtYXRPbmUiLCJwYXRoIiwid2FsayIsImNoYW5nZWQiLCJuZXh0IiwiaW5kZXgiLCJ3YWxrZWQiLCJfaSIsIl9PYmplY3Qka2V5cyIsImtleSIsImNoaWxkIiwib21pdE5pbFZhbHVlcyIsIl9pMiIsIl9PYmplY3Qka2V5czIiLCJ2IiwiY2xlYW5lZCIsInZhbHVlRW51bVRvT3B0aW9ucyIsInZhbHVlRW51bSIsImVudHJpZXMiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheSIsImxhYmVsIiwidGV4dCJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDVCxDQUFDLENBQUMsRUFBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsSUFBSVQsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlOLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDTyxvQkFBb0IsQ0FBQ0wsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsRUFDMUVSLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHVixDQUFDLENBQUNHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUM7RUFDekI7RUFDSixPQUFPUixDQUFDO0FBQ1osQ0FBQztBQ1JELFNBQVNXLGNBQWMsUUFBUSxhQUFhO0FBQzVDLFNBQVNDLGNBQWMsRUFBRUMsY0FBYyxRQUFRLGtCQUFrQjtBQVFqRTtBQUNBO0FBQ0EsU0FBU0QsY0FBYyxFQUFFQyxjQUFjO0FBRXZDO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGlCQUFpQkEsQ0FBQ0MsS0FBYyxFQUFFQyxJQUFxQixFQUFBO0VERTVELElBQUlDLEVBQUU7RUNEUixJQUFJRixLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtHLFNBQVMsRUFBRSxPQUFPQyxNQUFNLENBQUNKLEtBQUssQ0FBQztFQUMvRDtFQUNBO0VBQ0E7RUFDQSxJQUFJQSxLQUFLLFlBQVlLLElBQUksRUFBRSxlQUFBQyxNQUFBLENBQWVOLEtBQUssQ0FBQ08sT0FBTyxDQUFBLENBQUU7RUFDekQsSUFBSUMsT0FBQSxDQUFPUixLQUFLLE1BQUssUUFBUSxFQUFFO0lBQzdCO0lBQ0E7SUFDQSxPQUFPLENBQUFFLEVBQUEsR0FBQU8sSUFBSSxDQUFDQyxTQUFTLENBQUNWLEtBQUssQ0FBQyxNQUFBLElBQUEsSUFBQUUsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUlFLE1BQU0sQ0FBQ0osS0FBSyxDQUFDO0VBQy9DO0VBRUE7RUFDQTtFQUNBO0VBQ0EsSUFBSUMsSUFBSSxDQUFDVSxHQUFHLENBQUNYLEtBQUssQ0FBQyxFQUFFLE9BQU8sY0FBYztFQUMxQ0MsSUFBSSxDQUFDVyxHQUFHLENBQUNaLEtBQUssQ0FBQztFQUVmLElBQUlhLE1BQWM7RUFDbEIsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNmLEtBQUssQ0FBQyxFQUFFO0lBQ3hCYSxNQUFNLEdBQUcsR0FBRyxHQUFHYixLQUFLLENBQUNnQixHQUFHLENBQUMsVUFBQ0MsSUFBSTtNQUFBLE9BQUtsQixpQkFBaUIsQ0FBQ2tCLElBQUksRUFBRWhCLElBQUksQ0FBQztJQUFBLEVBQUMsQ0FBQ2lCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHO0VBQ25GLENBQUMsTUFBTTtJQUNMLElBQU1DLE1BQU0sR0FBR25CLEtBQWdDO0lBQy9DLElBQU1vQixJQUFJLEdBQUdqQyxNQUFNLENBQUNpQyxJQUFJLENBQUNELE1BQU0sQ0FBQyxDQUFDRSxJQUFJLENBQUEsQ0FBRTtJQUN2Q1IsTUFBTSxHQUNKLEdBQUcsR0FDSE8sSUFBSSxDQUFDSixHQUFHLENBQUMsVUFBQ00sQ0FBQztNQUFBLE9BQUtiLElBQUksQ0FBQ0MsU0FBUyxDQUFDWSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUd2QixpQkFBaUIsQ0FBQ29CLE1BQU0sQ0FBQ0csQ0FBQyxDQUFDLEVBQUVyQixJQUFJLENBQUM7SUFBQSxFQUFDLENBQUNpQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQ3ZGLEdBQUc7RUFDUDtFQUVBakIsSUFBSSxVQUFPLENBQUNELEtBQUssQ0FBQztFQUNsQixPQUFPYSxNQUFNO0FBQ2Y7QUFFQSxPQUFNLFNBQVVVLGVBQWVBLENBQUN2QixLQUFjLEVBQUE7RUFDNUMsT0FBT0QsaUJBQWlCLENBQUNDLEtBQUssRUFBRSxJQUFJd0IsT0FBTyxDQUFBLENBQUUsQ0FBQztBQUNoRDtBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU0sU0FBVUMsa0JBQWtCQSxDQUFDekIsS0FBYyxFQUFBO0VBQy9DLElBQUlBLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0csU0FBUyxJQUFJSCxLQUFLLEtBQUssRUFBRSxFQUFFLE9BQU8sR0FBRztFQUNyRSxPQUFPSSxNQUFNLENBQUNKLEtBQUssQ0FBQztBQUN0QjtBQUVBLE9BQU0sU0FBVTBCLHFCQUFxQkEsQ0FBQzFCLEtBQWMsRUFBQTtFQUNsRCxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUtHLFNBQVMsRUFBRSxPQUFPLEdBQUc7RUFDckQsT0FBT0gsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJO0FBQzdCO0FBRUEsT0FBTSxTQUFVMkIscUJBQXFCQSxDQUFDM0IsS0FBYyxFQUFBO0VBQ2xELElBQUlBLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0csU0FBUyxJQUFJSCxLQUFLLEtBQUssRUFBRSxFQUFFLE9BQU8sR0FBRztFQUNyRSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUUsT0FBT0ksTUFBTSxDQUFDSixLQUFLLENBQUM7RUFDbkQsSUFBTTRCLEdBQUcsR0FBR0MsTUFBTSxDQUFDN0IsS0FBSyxDQUFDO0VBQ3pCLElBQUk2QixNQUFNLENBQUNDLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHO0VBQ2pDLE9BQU94QixNQUFNLENBQUN3QixHQUFHLENBQUM7QUFDcEI7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFNLFNBQVVHLFlBQVlBLENBQUNDLEtBQXlDLEVBQUE7RURJbEUsSUFBSTlCLEVBQUU7RUNIUixJQUFJLE9BQU84QixLQUFLLEtBQUssUUFBUSxFQUFFLE9BQU9BLEtBQUs7RUFDM0MsT0FBTyxDQUFBOUIsRUFBQSxHQUFBTixjQUFjLENBQUNvQyxLQUFLLENBQUMsTUFBQSxJQUFBLElBQUE5QixFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSU4sY0FBYyxDQUFDcUMsRUFBRTtBQUNuRDtBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU0sU0FBVUMsa0JBQWtCQSxDQUNoQ0MsTUFBZ0QsRUFBQTtFQUVoRCxJQUFJQSxNQUFNLEtBQUssS0FBSyxJQUFJQSxNQUFNLEtBQUtoQyxTQUFTLEVBQUU7SUFDNUMsT0FBTztNQUFFaUMsUUFBUSxFQUFFLEtBQUs7TUFBRUMsSUFBSSxFQUFFLENBQUE7SUFBRSxDQUFFO0VBQ3RDO0VBQ0EsSUFBQUMsZ0JBQUEsR0FBc0NILE1BQU0sQ0FBcENDLFFBQVE7SUFBUkEsUUFBUSxHQUFBRSxnQkFBQSxjQUFHLEtBQUssR0FBQUEsZ0JBQUE7SUFBS0QsSUFBSSxHQUFBdkQsTUFBQSxDQUFLcUQsTUFBTSxFQUF0QyxDQUFBLFVBQUEsQ0FBNkIsQ0FBUztFQUM1QyxPQUFPO0lBQUVDLFFBQVEsRUFBUkEsUUFBUTtJQUFFQyxJQUFJLEVBQUpBO0VBQUksQ0FBRTtBQUMzQjtBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVNFLGFBQWFBLENBQUN2QyxLQUFjLEVBQUE7RUFDbkMsT0FBT0EsS0FBSyxLQUFLLElBQUksSUFBSVEsT0FBQSxDQUFPUixLQUFLLE1BQUssUUFBUSxJQUFJLENBQUNjLEtBQUssQ0FBQ0MsT0FBTyxDQUFDZixLQUFLLENBQUM7QUFDN0U7QUFFQSxPQUFNLFNBQVV3QyxxQkFBcUJBLENBQ25DQyxNQUErQixFQUMvQkMsVUFBbUQsRUFBQTtFQUVuRCxJQUFNdEIsSUFBSSxHQUFHakMsTUFBTSxDQUFDaUMsSUFBSSxDQUFDc0IsVUFBVSxDQUFDO0VBQ3BDLElBQUl0QixJQUFJLENBQUMxQixNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8rQyxNQUFNO0VBRXBDO0VBQ0E7RUFDQTtFQUNBLElBQUk1QixNQUFNLEdBQUExQixNQUFBLENBQUF3RCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFGLE1BQU0sQ0FBRTtFQUUxQjtFQUNBckIsSUFBSSxDQUFDQyxJQUFJLENBQUEsQ0FBRSxDQUFDdUIsT0FBTyxDQUFDLFVBQUNDLElBQUksRUFBSTtJQUMzQixJQUFNQyxXQUFXLEdBQUdKLFVBQVUsQ0FBQ0csSUFBSSxDQUFDO0lBQ3BDLElBQUksT0FBT0MsV0FBVyxLQUFLLFVBQVUsRUFBRTtJQUV2QyxJQUFNQyxRQUFRLEdBQUdsRCxjQUFjLENBQUNnQixNQUFNLEVBQUVnQyxJQUFJLENBQUM7SUFDN0MsSUFBTUcsV0FBVyxHQUFHRixXQUFXLENBQUNDLFFBQVEsRUFBRUYsSUFBSSxFQUFFaEMsTUFBTSxDQUFDO0lBRXZELElBQUkwQixhQUFhLENBQUNTLFdBQVcsQ0FBQyxFQUFFO01BQzlCO01BQ0EsSUFBTUMsUUFBUSxHQUFHSixJQUFJLENBQUNLLFdBQVcsQ0FBQyxHQUFHLENBQUM7TUFDdEMsSUFBSUQsUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ25CO1FBQ0EsT0FBT3BDLE1BQU0sQ0FBQ2dDLElBQUksQ0FBQztRQUNuQjFELE1BQU0sQ0FBQ3dELE1BQU0sQ0FBQzlCLE1BQU0sRUFBRW1DLFdBQVcsQ0FBQztNQUNwQyxDQUFDLE1BQU07UUFDTDtRQUNBLElBQU1HLFVBQVUsR0FBR04sSUFBSSxDQUFDTyxLQUFLLENBQUMsQ0FBQyxFQUFFSCxRQUFRLENBQUM7UUFDMUMsSUFBTUksTUFBTSxHQUFHeEQsY0FBYyxDQUFDZ0IsTUFBTSxFQUFFc0MsVUFBVSxDQUFDO1FBQ2pELElBQUlaLGFBQWEsQ0FBQ2MsTUFBTSxDQUFDLEVBQUU7VUFDekIsSUFBTUMsUUFBUSxHQUFHVCxJQUFJLENBQUNPLEtBQUssQ0FBQ0gsUUFBUSxHQUFHLENBQUMsQ0FBQztVQUN6QyxJQUFNTSxTQUFTLEdBQUFwRSxNQUFBLENBQUF3RCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFVLE1BQU0sQ0FBRTtVQUMvQixPQUFPRSxTQUFTLENBQUNELFFBQVEsQ0FBQztVQUMxQm5FLE1BQU0sQ0FBQ3dELE1BQU0sQ0FBQ1ksU0FBUyxFQUFFUCxXQUFXLENBQUM7VUFDckNuQyxNQUFNLEdBQUdmLGNBQWMsQ0FBQ2UsTUFBTSxFQUFFc0MsVUFBVSxFQUFFSSxTQUFTLENBQUM7UUFDeEQ7TUFDRjtJQUNGLENBQUMsTUFBTTtNQUNMO01BQ0ExQyxNQUFNLEdBQUdnQyxJQUFJLENBQUNXLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FDdkIxRCxjQUFjLENBQUNlLE1BQU0sRUFBRWdDLElBQUksRUFBRUcsV0FBVyxDQUFDLEdBQzFDN0QsTUFBQSxDQUFBd0QsTUFBQSxDQUFBeEQsTUFBQSxDQUFBd0QsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFNOUIsTUFBTSxDQUFBLEVBQUE0QyxlQUFBLEtBQUdaLElBQUksRUFBR0csV0FBVyxDQUFBLENBQUU7SUFDeEM7RUFDRixDQUFDLENBQUM7RUFFRixPQUFPbkMsTUFBTTtBQUNmO0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNNkMsV0FBVyxHQUFHLFlBQVk7QUFDdkMsT0FBTyxJQUFNQyxnQkFBZ0IsR0FBRyxxQkFBcUI7QUFFckQ7QUFDQSxPQUFNLFNBQVVDLG1CQUFtQkEsQ0FBQ0MsSUFBVSxFQUFFQyxPQUFlLEVBQUE7RUFDN0QsSUFBTUMsR0FBRyxHQUFHLFNBQU5BLEdBQUdBLENBQUlDLENBQVM7SUFBQSxPQUFLNUQsTUFBTSxDQUFDNEQsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQUE7RUFDckQsT0FBT0gsT0FBTyxDQUNYSSxPQUFPLENBQUMsT0FBTyxFQUFFOUQsTUFBTSxDQUFDeUQsSUFBSSxDQUFDTSxXQUFXLENBQUEsQ0FBRSxDQUFDLENBQUMsQ0FDNUNELE9BQU8sQ0FBQyxLQUFLLEVBQUVILEdBQUcsQ0FBQ0YsSUFBSSxDQUFDTyxRQUFRLENBQUEsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3hDRixPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1EsT0FBTyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQ25DSCxPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1MsUUFBUSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQ3BDSixPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1UsVUFBVSxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQ3RDTCxPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ1csVUFBVSxDQUFBLENBQUUsQ0FBQyxDQUFDO0FBQzNDO0FBRUE7QUROQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FDUUEsT0FBTSxTQUFVQyxnQkFBZ0JBLENBQzlCaEMsTUFBK0IsRUFDL0JpQyxhQUFtQyxFQUNuQ0MsVUFBNEMsRUFBQTtFQUU1QyxJQUFJRCxhQUFhLEtBQUssS0FBSyxFQUFFLE9BQU9qQyxNQUFNO0VBRTFDLElBQU1tQyxTQUFTLEdBQUcsU0FBWkEsU0FBU0EsQ0FBSWYsSUFBVSxFQUFFZ0IsSUFBWSxFQUFhO0lBQ3RELElBQUksT0FBT0gsYUFBYSxLQUFLLFVBQVUsRUFBRSxPQUFPQSxhQUFhLENBQUNiLElBQUksRUFBRWdCLElBQUksQ0FBQztJQUN6RSxJQUFJSCxhQUFhLEtBQUssUUFBUSxFQUFFLE9BQU9iLElBQUksQ0FBQ3RELE9BQU8sQ0FBQSxDQUFFO0lBQ3JELElBQUltRSxhQUFhLEtBQUssUUFBUSxFQUFFO01BQzlCLElBQU1aLE9BQU8sR0FBR2EsVUFBVSxDQUFDRSxJQUFJLENBQUMsS0FBSyxVQUFVLEdBQUdsQixnQkFBZ0IsR0FBR0QsV0FBVztNQUNoRixPQUFPRSxtQkFBbUIsQ0FBQ0MsSUFBSSxFQUFFQyxPQUFPLENBQUM7SUFDM0M7SUFDQSxPQUFPRixtQkFBbUIsQ0FBQ0MsSUFBSSxFQUFFYSxhQUFhLENBQUM7RUFDakQsQ0FBQztFQUVELElBQU1JLEtBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFJOUUsS0FBYyxFQUFFNkUsSUFBWSxFQUFhO0lBQ3JELElBQUk3RSxLQUFLLFlBQVlLLElBQUksRUFBRSxPQUFPdUUsU0FBUyxDQUFDNUUsS0FBSyxFQUFFNkUsSUFBSSxDQUFDO0lBQ3hELElBQUkvRCxLQUFLLENBQUNDLE9BQU8sQ0FBQ2YsS0FBSyxDQUFDLEVBQUU7TUFDeEIsSUFBSStFLE9BQU8sR0FBRyxLQUFLO01BQ25CLElBQU1DLElBQUksR0FBR2hGLEtBQUssQ0FBQ2dCLEdBQUcsQ0FBQyxVQUFDQyxJQUFJLEVBQUVnRSxLQUFLLEVBQUk7UUFDckMsSUFBTUMsTUFBTSxHQUFHSixLQUFJLENBQUM3RCxJQUFJLEVBQUU0RCxJQUFJLE1BQUF2RSxNQUFBLENBQU11RSxJQUFJLE9BQUF2RSxNQUFBLENBQUkyRSxLQUFLLElBQUs3RSxNQUFNLENBQUM2RSxLQUFLLENBQUMsQ0FBQztRQUNwRSxJQUFJQyxNQUFNLEtBQUtqRSxJQUFJLEVBQUU4RCxPQUFPLEdBQUcsSUFBSTtRQUNuQyxPQUFPRyxNQUFNO01BQ2YsQ0FBQyxDQUFDO01BQ0YsT0FBT0gsT0FBTyxHQUFHQyxJQUFJLEdBQUdoRixLQUFLO0lBQy9CO0lBQ0EsSUFBSXVDLGFBQWEsQ0FBQ3ZDLEtBQUssQ0FBQyxFQUFFO01BQ3hCLElBQUkrRSxRQUFPLEdBQUcsS0FBSztNQUNuQixJQUFNQyxLQUFJLEdBQTRCLENBQUEsQ0FBRTtNQUN4QyxTQUFBRyxFQUFBLE1BQUFDLFlBQUEsR0FBa0JqRyxNQUFNLENBQUNpQyxJQUFJLENBQUNwQixLQUFLLENBQUMsRUFBQW1GLEVBQUEsR0FBQUMsWUFBQSxDQUFBMUYsTUFBQSxFQUFBeUYsRUFBQSxJQUFFO1FBQWpDLElBQU1FLEdBQUcsR0FBQUQsWUFBQSxDQUFBRCxFQUFBO1FBQ1osSUFBTUcsS0FBSyxHQUFHdEYsS0FBSyxDQUFDcUYsR0FBRyxDQUFDO1FBQ3hCLElBQU1ILE1BQU0sR0FBR0osS0FBSSxDQUFDUSxLQUFLLEVBQUVULElBQUksTUFBQXZFLE1BQUEsQ0FBTXVFLElBQUksT0FBQXZFLE1BQUEsQ0FBSStFLEdBQUcsSUFBS0EsR0FBRyxDQUFDO1FBQ3pELElBQUlILE1BQU0sS0FBS0ksS0FBSyxFQUFFUCxRQUFPLEdBQUcsSUFBSTtRQUNwQ0MsS0FBSSxDQUFDSyxHQUFHLENBQUMsR0FBR0gsTUFBTTtNQUNwQjtNQUNBLE9BQU9ILFFBQU8sR0FBR0MsS0FBSSxHQUFHaEYsS0FBSztJQUMvQjtJQUNBLE9BQU9BLEtBQUs7RUFDZCxDQUFDO0VBRUQsT0FBTzhFLEtBQUksQ0FBQ3JDLE1BQU0sRUFBRSxFQUFFLENBQTRCO0FBQ3BEO0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTSxTQUFVOEMsYUFBYUEsQ0FDM0I5QyxNQUErQixFQUFBO0VBRS9CLElBQU01QixNQUFNLEdBQTRCLENBQUEsQ0FBRTtFQUMxQyxTQUFBMkUsR0FBQSxNQUFBQyxhQUFBLEdBQWtCdEcsTUFBTSxDQUFDaUMsSUFBSSxDQUFDcUIsTUFBTSxDQUFDLEVBQUErQyxHQUFBLEdBQUFDLGFBQUEsQ0FBQS9GLE1BQUEsRUFBQThGLEdBQUEsSUFBRTtJQUFsQyxJQUFNSCxHQUFHLEdBQUFJLGFBQUEsQ0FBQUQsR0FBQTtJQUNaLElBQU1FLENBQUMsR0FBR2pELE1BQU0sQ0FBQzRDLEdBQUcsQ0FBQztJQUNyQixJQUFJSyxDQUFDLEtBQUssSUFBSSxJQUFJQSxDQUFDLEtBQUt2RixTQUFTLElBQUl1RixDQUFDLEtBQUssRUFBRSxFQUFFO0lBQy9DLElBQUluRCxhQUFhLENBQUNtRCxDQUFDLENBQUMsRUFBRTtNQUNwQixJQUFNQyxPQUFPLEdBQUdKLGFBQWEsQ0FBQ0csQ0FBQyxDQUFDO01BQ2hDLElBQUl2RyxNQUFNLENBQUNpQyxJQUFJLENBQUN1RSxPQUFPLENBQUMsQ0FBQ2pHLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDbkNtQixNQUFNLENBQUN3RSxHQUFHLENBQUMsR0FBR00sT0FBTztNQUN2QjtJQUNGLENBQUMsTUFBTTtNQUNMOUUsTUFBTSxDQUFDd0UsR0FBRyxDQUFDLEdBQUdLLENBQUM7SUFDakI7RUFDRjtFQUNBLE9BQU83RSxNQUFNO0FBQ2Y7QUFXQSxPQUFNLFNBQVUrRSxrQkFBa0JBLENBQ2hDQyxTQUE4QixFQUFBO0VBRTlCLE9BQU8xRyxNQUFNLENBQUMyRyxPQUFPLENBQUNELFNBQVMsQ0FBQyxDQUFDN0UsR0FBRyxDQUFDLFVBQUErRSxJQUFBLEVBQWtCO0lBQUEsSUFBQUMsS0FBQSxHQUFBQyxjQUFBLENBQUFGLElBQUE7TUFBaEJWLEdBQUcsR0FBQVcsS0FBQTtNQUFFN0QsTUFBTSxHQUFBNkQsS0FBQTtJQUNoRCxJQUFJLE9BQU83RCxNQUFNLEtBQUssUUFBUSxFQUFFO01BQzlCLE9BQU87UUFBRStELEtBQUssRUFBRS9ELE1BQU07UUFBRW5DLEtBQUssRUFBRXFGO01BQUcsQ0FBRTtJQUN0QztJQUNBLE9BQU87TUFBRWEsS0FBSyxFQUFFL0QsTUFBTSxDQUFDZ0UsSUFBSTtNQUFFbkcsS0FBSyxFQUFFcUYsR0FBRztNQUFFakQsUUFBUSxFQUFFRCxNQUFNLENBQUNDO0lBQVEsQ0FBRTtFQUN0RSxDQUFDLENBQUM7QUFDSiIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBXSURUSF9TSVpFX01BUCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldE5lc3RlZFZhbHVlLCBzZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vY29yZS9wYXRoVXRpbHMnO1xuLy8gUmUtZXhwb3J0ZWQgZm9yIGNvbnN1bWVycyB0aGF0IGltcG9ydCB0aGUgbmVzdGVkLXBhdGggaGVscGVycyBmcm9tIGAuL3V0aWxzYFxuLy8gKFByb0Zvcm1EZXBlbmRlbmN5LCBQcm9Gb3JtTGlzdCkuIENhbm9uaWNhbCBkZWZpbml0aW9ucyBsaXZlIGluIGNvcmUvcGF0aFV0aWxzLlxuZXhwb3J0IHsgZ2V0TmVzdGVkVmFsdWUsIHNldE5lc3RlZFZhbHVlIH07XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHN0YWJsZVNlcmlhbGl6ZSDigJQgZGV0ZXJtaW5pc3RpYyBkZWVwIHNlcmlhbGl6YXRpb24gZm9yIHBhcmFtcyBjb21wYXJpc29uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHNlcmlhbGl6ZVdpdGhTZWVuKHZhbHVlLCBzZWVuKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAvLyBEYXRlIG11c3QgYmUgc2VyaWFsaXplZCBieSBWQUxVRTogdGhlIGdlbmVyaWMgb2JqZWN0IGJyYW5jaCB3b3VsZCBzZWUgbm9cbiAgICAvLyBlbnVtZXJhYmxlIGtleXMgYW5kIGNvbGxhcHNlIGV2ZXJ5IERhdGUgdG8gJ3t9Jywgc28gYSBwYXJhbXMgb2JqZWN0IHdob3NlXG4gICAgLy8gb25seSBjaGFuZ2UgaXMgYSBkYXRlIHdvdWxkIG5ldmVyIHRyaWdnZXIgYSByZXF1ZXN0IHJlLWZldGNoLlxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAgIHJldHVybiBgRGF0ZSgke3ZhbHVlLmdldFRpbWUoKX0pYDtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBKU09OLnN0cmluZ2lmeSB5aWVsZHMgdW5kZWZpbmVkIGZvciBmdW5jdGlvbnMvc3ltYm9scyDigJQgZmFsbCBiYWNrIHRvIGFcbiAgICAgICAgLy8gKHN0aWxsIGRldGVybWluaXN0aWMpIFN0cmluZygpIHNvIHRoZSByZXN1bHQgYWx3YXlzIGNvbmNhdGVuYXRlcy5cbiAgICAgICAgcmV0dXJuIChfYSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgLy8gYHNlZW5gIHRyYWNrcyB0aGUgY3VycmVudCBBTkNFU1RPUiBjaGFpbiBvbmx5IChlbnRyaWVzIGFyZSByZW1vdmVkIG9uIHRoZVxuICAgIC8vIHdheSBiYWNrIG91dCksIHNvIHNoYXJlZC1idXQtYWN5Y2xpYyByZWZlcmVuY2VzIHNlcmlhbGl6ZSBub3JtYWxseSBhbmRcbiAgICAvLyBnZW51aW5lIGN5Y2xlcyBzaG9ydC1jaXJjdWl0IGluc3RlYWQgb2Ygb3ZlcmZsb3dpbmcgdGhlIHN0YWNrLlxuICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpXG4gICAgICAgIHJldHVybiAnXCJbQ2lyY3VsYXJdXCInO1xuICAgIHNlZW4uYWRkKHZhbHVlKTtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSAnWycgKyB2YWx1ZS5tYXAoKGl0ZW0pID0+IHNlcmlhbGl6ZVdpdGhTZWVuKGl0ZW0sIHNlZW4pKS5qb2luKCcsJykgKyAnXSc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCByZWNvcmQgPSB2YWx1ZTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJlY29yZCkuc29ydCgpO1xuICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgJ3snICtcbiAgICAgICAgICAgICAgICBrZXlzLm1hcCgoaykgPT4gSlNPTi5zdHJpbmdpZnkoaykgKyAnOicgKyBzZXJpYWxpemVXaXRoU2VlbihyZWNvcmRba10sIHNlZW4pKS5qb2luKCcsJykgK1xuICAgICAgICAgICAgICAgICd9JztcbiAgICB9XG4gICAgc2Vlbi5kZWxldGUodmFsdWUpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gc3RhYmxlU2VyaWFsaXplKHZhbHVlKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZVdpdGhTZWVuKHZhbHVlLCBuZXcgV2Vha1NldCgpKTtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmVhZG9ubHkgcmVuZGVyZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJUZXh0UmVhZG9ubHkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpXG4gICAgICAgIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQm9vbGVhblJlYWRvbmx5KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIHZhbHVlID8gJ1llcycgOiAnTm8nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck51bWVyaWNSZWFkb25seSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJylcbiAgICAgICAgcmV0dXJuICctJztcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKG51bSkpXG4gICAgICAgIHJldHVybiAnLSc7XG4gICAgcmV0dXJuIFN0cmluZyhudW0pO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyByZXNvbHZlV2lkdGgg4oCUIGNvbnZlcnQgbmFtZWQgd2lkdGggdG8gcHggb3IgcGFzcyB0aHJvdWdoIG51bWJlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVdpZHRoKHdpZHRoKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gd2lkdGg7XG4gICAgcmV0dXJuIChfYSA9IFdJRFRIX1NJWkVfTUFQW3dpZHRoXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogV0lEVEhfU0laRV9NQVAubWQ7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGV4dHJhY3RCdXR0b25Qcm9wcyDigJQgc2FmZWx5IGV4dHJhY3QgcHJvcHMgZnJvbSBidXR0b24gY29uZmlnXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0QnV0dG9uUHJvcHMoY29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZyA9PT0gZmFsc2UgfHwgY29uZmlnID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgZGlzYWJsZWQ6IGZhbHNlLCByZXN0OiB7fSB9O1xuICAgIH1cbiAgICBjb25zdCB7IGRpc2FibGVkID0gZmFsc2UgfSA9IGNvbmZpZywgcmVzdCA9IF9fcmVzdChjb25maWcsIFtcImRpc2FibGVkXCJdKTtcbiAgICByZXR1cm4geyBkaXNhYmxlZCwgcmVzdCB9O1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMg4oCUIGFwcGx5IHJlZ2lzdGVyZWQgZmllbGQgdHJhbnNmb3JtcyB0byBmb3JtIHZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyh2YWx1ZXMsIHRyYW5zZm9ybXMpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModHJhbnNmb3Jtcyk7XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIC8vIEFsbCBuZXN0ZWQgd3JpdGVzIGdvIHRocm91Z2ggc2V0TmVzdGVkVmFsdWUgKGNsb25lcyBldmVyeSBvYmplY3QvYXJyYXkgb25cbiAgICAvLyB0aGUgcGF0aCkg4oCUIGB2YWx1ZXNgIGlzIHRoZSBsaXZlIGZvcm0gc3RhdGUgYW5kIG11c3QgbmV2ZXIgYmUgbXV0YXRlZDtcbiAgICAvLyBvbmx5IGByZXN1bHRgIGl0c2VsZiAob3VyIG93biBzaGFsbG93IGNvcHkpIG1heSBiZSB3cml0dGVuIGRpcmVjdGx5LlxuICAgIGxldCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCB2YWx1ZXMpO1xuICAgIC8vIFByb2Nlc3MgdHJhbnNmb3JtcyBpbiBzb3J0ZWQga2V5IG9yZGVyIGZvciBkZXRlcm1pbmlzbVxuICAgIGtleXMuc29ydCgpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtRm4gPSB0cmFuc2Zvcm1zW25hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHRyYW5zZm9ybUZuICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGdldE5lc3RlZFZhbHVlKHJlc3VsdCwgbmFtZSk7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gdHJhbnNmb3JtRm4ocmF3VmFsdWUsIG5hbWUsIHJlc3VsdCk7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHRyYW5zZm9ybWVkKSkge1xuICAgICAgICAgICAgLy8gSWYgdHJhbnNmb3JtIHJldHVybnMgYW4gb2JqZWN0LCBkZWxldGUgb3JpZ2luYWwga2V5IGFuZCBtZXJnZSB0byBwYXJlbnRcbiAgICAgICAgICAgIGNvbnN0IGRvdEluZGV4ID0gbmFtZS5sYXN0SW5kZXhPZignLicpO1xuICAgICAgICAgICAgaWYgKGRvdEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIFRvcC1sZXZlbCBmaWVsZCDigJQgZGVsZXRlIG9yaWdpbmFsIGFuZCBtZXJnZSBhdCByb290XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdFtuYW1lXTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgdHJhbnNmb3JtZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTmVzdGVkIGZpZWxkIOKAlCByZWJ1aWxkIHRoZSBwYXJlbnQgd2l0aG91dCB0aGUgb3JpZ2luYWwga2V5LCBtZXJnZWRcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRQYXRoID0gbmFtZS5zbGljZSgwLCBkb3RJbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZ2V0TmVzdGVkVmFsdWUocmVzdWx0LCBwYXJlbnRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChwYXJlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gbmFtZS5zbGljZShkb3RJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdQYXJlbnQgPSBPYmplY3QuYXNzaWduKHt9LCBwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbmV3UGFyZW50W2NoaWxkS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihuZXdQYXJlbnQsIHRyYW5zZm9ybWVkKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0TmVzdGVkVmFsdWUocmVzdWx0LCBwYXJlbnRQYXRoLCBuZXdQYXJlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFByaW1pdGl2ZSB2YWx1ZSDigJQgcmVwbGFjZSBhdCB0aGUgKHBvc3NpYmx5IG5lc3RlZCkgcGF0aFxuICAgICAgICAgICAgcmVzdWx0ID0gbmFtZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBzZXROZXN0ZWRWYWx1ZShyZXN1bHQsIG5hbWUsIHRyYW5zZm9ybWVkKVxuICAgICAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCByZXN1bHQpLCB7IFtuYW1lXTogdHJhbnNmb3JtZWQgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEYXRlIGZvcm1hdHRpbmcgKGZvcm0tbGV2ZWwgZGF0ZUZvcm1hdHRlciwgZGVwZW5kZW5jeS1mcmVlKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgY29uc3QgREFURV9GT1JNQVQgPSAnWVlZWS1NTS1ERCc7XG5leHBvcnQgY29uc3QgREFURV9USU1FX0ZPUk1BVCA9ICdZWVlZLU1NLUREIEhIOm1tOnNzJztcbi8qKiBNaW5pbWFsIHBhdHRlcm4gZm9ybWF0dGVyIHN1cHBvcnRpbmcgWVlZWSAvIE1NIC8gREQgLyBISCAvIG1tIC8gc3MgdG9rZW5zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGVCeVBhdHRlcm4oZGF0ZSwgcGF0dGVybikge1xuICAgIGNvbnN0IHBhZCA9IChuKSA9PiBTdHJpbmcobikucGFkU3RhcnQoMiwgJzAnKTtcbiAgICByZXR1cm4gcGF0dGVyblxuICAgICAgICAucmVwbGFjZSgvWVlZWS9nLCBTdHJpbmcoZGF0ZS5nZXRGdWxsWWVhcigpKSlcbiAgICAgICAgLnJlcGxhY2UoL01NL2csIHBhZChkYXRlLmdldE1vbnRoKCkgKyAxKSlcbiAgICAgICAgLnJlcGxhY2UoL0REL2csIHBhZChkYXRlLmdldERhdGUoKSkpXG4gICAgICAgIC5yZXBsYWNlKC9ISC9nLCBwYWQoZGF0ZS5nZXRIb3VycygpKSlcbiAgICAgICAgLnJlcGxhY2UoL21tL2csIHBhZChkYXRlLmdldE1pbnV0ZXMoKSkpXG4gICAgICAgIC5yZXBsYWNlKC9zcy9nLCBwYWQoZGF0ZS5nZXRTZWNvbmRzKCkpKTtcbn1cbi8qKlxuICogUmVjdXJzaXZlbHkgc2VyaWFsaXplIGV2ZXJ5IGBEYXRlYCBpbiBgdmFsdWVzYCBhY2NvcmRpbmcgdG8gYGRhdGVGb3JtYXR0ZXJgLlxuICogV2l0aCBgJ3N0cmluZydgLCBmaWVsZHMgcmVnaXN0ZXJlZCBhcyBgdmFsdWVUeXBlOiAnZGF0ZVRpbWUnYCB1c2VcbiAqIGBZWVlZLU1NLUREIEhIOm1tOnNzYCwgZXZlcnl0aGluZyBlbHNlIGBZWVlZLU1NLUREYC4gVW50b3VjaGVkIHdoZW4gdGhlXG4gKiBmb3JtYXR0ZXIgaXMgYGZhbHNlYC4gTm9uLURhdGUgdmFsdWVzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREYXRlVmFsdWVzKHZhbHVlcywgZGF0ZUZvcm1hdHRlciwgdmFsdWVUeXBlcykge1xuICAgIGlmIChkYXRlRm9ybWF0dGVyID09PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICBjb25zdCBmb3JtYXRPbmUgPSAoZGF0ZSwgcGF0aCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGRhdGVGb3JtYXR0ZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICByZXR1cm4gZGF0ZUZvcm1hdHRlcihkYXRlLCBwYXRoKTtcbiAgICAgICAgaWYgKGRhdGVGb3JtYXR0ZXIgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpO1xuICAgICAgICBpZiAoZGF0ZUZvcm1hdHRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdHRlcm4gPSB2YWx1ZVR5cGVzW3BhdGhdID09PSAnZGF0ZVRpbWUnID8gREFURV9USU1FX0ZPUk1BVCA6IERBVEVfRk9STUFUO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdERhdGVCeVBhdHRlcm4oZGF0ZSwgcGF0dGVybik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdERhdGVCeVBhdHRlcm4oZGF0ZSwgZGF0ZUZvcm1hdHRlcik7XG4gICAgfTtcbiAgICBjb25zdCB3YWxrID0gKHZhbHVlLCBwYXRoKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0T25lKHZhbHVlLCBwYXRoKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgbmV4dCA9IHZhbHVlLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB3YWxrZWQgPSB3YWxrKGl0ZW0sIHBhdGggPyBgJHtwYXRofS4ke2luZGV4fWAgOiBTdHJpbmcoaW5kZXgpKTtcbiAgICAgICAgICAgICAgICBpZiAod2Fsa2VkICE9PSBpdGVtKVxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Fsa2VkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gY2hhbmdlZCA/IG5leHQgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZCA9IHZhbHVlW2tleV07XG4gICAgICAgICAgICAgICAgY29uc3Qgd2Fsa2VkID0gd2FsayhjaGlsZCwgcGF0aCA/IGAke3BhdGh9LiR7a2V5fWAgOiBrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh3YWxrZWQgIT09IGNoaWxkKVxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBuZXh0W2tleV0gPSB3YWxrZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2hhbmdlZCA/IG5leHQgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gd2Fsayh2YWx1ZXMsICcnKTtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gb21pdE5pbFZhbHVlcyDigJQgcmVjdXJzaXZlbHkgcmVtb3ZlIG51bGwgLyB1bmRlZmluZWQgLyAnJyBmcm9tIG9iamVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5leHBvcnQgZnVuY3Rpb24gb21pdE5pbFZhbHVlcyh2YWx1ZXMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZXMpKSB7XG4gICAgICAgIGNvbnN0IHYgPSB2YWx1ZXNba2V5XTtcbiAgICAgICAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09ICcnKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHYpKSB7XG4gICAgICAgICAgICBjb25zdCBjbGVhbmVkID0gb21pdE5pbFZhbHVlcyh2KTtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhjbGVhbmVkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBjbGVhbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gdmFsdWVFbnVtVG9PcHRpb25zKHZhbHVlRW51bSkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh2YWx1ZUVudW0pLm1hcCgoW2tleSwgY29uZmlnXSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBjb25maWcsIHZhbHVlOiBrZXkgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBsYWJlbDogY29uZmlnLnRleHQsIHZhbHVlOiBrZXksIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQgfTtcbiAgICB9KTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -173,8 +173,8 @@ function ProTableInner(props) {
173
173
  });
174
174
  var handleSearchReset = useMemoizedFn(function () {
175
175
  var _a;
176
- // Use the array form (`resetFields(names)`) the no-arg form re-invokes the
177
- // form's own `onReset`, which loops back here and recurses infinitely.
176
+ // Use the array form (`resetFields(names)`) to reset ONLY the search
177
+ // fields a full reset would also wipe non-search form state.
178
178
  (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.resetFields(searchFieldNames);
179
179
  setSearchParams({});
180
180
  setPageInfo({
@@ -307,4 +307,4 @@ function ProTableInner(props) {
307
307
  }
308
308
  export var ProTable = /*#__PURE__*/memo(ProTableInner);
309
309
  export default ProTable;
310
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvUHJvVGFibGUuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb1RhYmxlL1Byb1RhYmxlLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsInVzZVNhZmVTdGF0ZSIsIlBhZ2luYXRpb24iLCJUYWJsZSIsIlF1ZXJ5RmlsdGVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJDU1NfUFJFRklYIiwiREVGQVVMVF9DVVJSRU5UIiwiREVGQVVMVF9QQUdFX1NJWkUiLCJERUZBVUxUX1RFWFQiLCJ1c2VGZXRjaERhdGEiLCJnZW5Db2x1bW5zIiwiYXBwbHlTZWFyY2hUcmFuc2Zvcm1zIiwiZ2VuU2VhcmNoRmllbGRzIiwicmVhZFVybFZhbHVlcyIsInN5bmNUb1VybCIsIndpbmRvdyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZm9yRWFjaCIsImtleSIsIlByb1RhYmxlSW5uZXIiLCJwcm9wcyIsIl90aGlzIiwiX2EiLCJfYiIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJjbGFzc05hbWUiLCJjb2x1bW5zIiwicmVxdWVzdCIsImNvbnRyb2xsZWREYXRhIiwiZGF0YVNvdXJjZSIsImNvbnRyb2xsZWRMb2FkaW5nIiwibG9hZGluZyIsImRlZmF1bHREYXRhIiwibWFudWFsUmVxdWVzdCIsImRlYm91bmNlVGltZSIsInBvc3REYXRhIiwicG9sbGluZyIsImJlZm9yZVNlYXJjaFN1Ym1pdCIsImNvbHVtbkVtcHR5VGV4dCIsInNlYXJjaEZvcm1SZW5kZXIiLCJfcHJvcHMkcGFnaW5hdGlvbiIsInBhZ2luYXRpb24iLCJfcHJvcHMkc2VhcmNoIiwicm93U2VsZWN0aW9uIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiYWN0aW9uUmVmIiwib25Mb2FkIiwib25Mb2FkaW5nQ2hhbmdlIiwib25SZXF1ZXN0RXJyb3IiLCJvbkNoYW5nZSIsInJvd0tleSIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsImJvcmRlcmVkIiwic2Nyb2xsIiwic3RpY2t5IiwiZXhwYW5kYWJsZSIsImVtcHR5IiwidGFibGVMYXlvdXQiLCJyb3dDbGFzc05hbWUiLCJvblJvdyIsInN1bW1hcnkiLCJmb290ZXIiLCJjbGFzc2VzIiwidGFibGVDb2x1bW5zIiwic2VhcmNoQ2ZnIiwidW5kZWZpbmVkIiwiX3VzZU1lbW8iLCJzZWFyY2hGaWVsZHMiLCJmaWVsZHMiLCJzZWFyY2hJbml0aWFsVmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsInNlYXJjaEZpZWxkTmFtZXMiLCJuYW1lcyIsImhhc1NlYXJjaCIsImxlbmd0aCIsIm1lcmdlZEluaXRpYWxWYWx1ZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJfdXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlYXJjaFBhcmFtcyIsInNldFNlYXJjaFBhcmFtcyIsImZvcm1SZWYiLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic29ydCIsInNldFNvcnQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VTYWZlU3RhdGU2IiwiZmlsdGVyIiwic2V0RmlsdGVyIiwicGFnaW5hdGVkIiwiZGVmYXVsdFBhZ2VTaXplIiwicGFnZVNpemUiLCJkZWZhdWx0Q3VycmVudCIsImN1cnJlbnQiLCJtYW51YWwiLCJfdXNlRmV0Y2hEYXRhIiwiZmV0Y2hlZERhdGEiLCJmZXRjaExvYWRpbmciLCJwYWdlSW5mbyIsInNldFBhZ2VJbmZvIiwicmVsb2FkIiwicmVzZXQiLCJoYW5kbGVTZWFyY2hGaW5pc2giLCJ2YWx1ZXMiLCJwZXJDb2x1bW4iLCJmaW5hbFBhcmFtcyIsImhhbmRsZVNlYXJjaFJlc2V0IiwicmVzZXRGaWVsZHMiLCJoYW5kbGVUYWJsZUNoYW5nZSIsIm1ldGEiLCJzb3J0ZXIiLCJfbWV0YSRzb3J0ZXIiLCJjb2x1bW5LZXkiLCJvcmRlciIsIl9kZWZpbmVQcm9wZXJ0eSIsIlN0cmluZyIsImZpbHRlcnMiLCJoYW5kbGVQYWdlQ2hhbmdlIiwicGFnZSIsImN1cnJlbnREYXRhU291cmNlIiwiYWN0aW9uIiwicmVsb2FkQW5kUmVzdCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdG9wIiwic2VhcmNoTm9kZSIsInNlYXJjaEZvcm0iLCJkZWZhdWx0Q29sbGFwc2VkIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwic2VhcmNoQ29uZmlnIiwic2VhcmNoVGV4dCIsInJlc2V0VGV4dCIsIm9uRmluaXNoIiwib25SZXNldCIsImNoaWxkcmVuIiwidG90YWwiLCJQcm9UYWJsZSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFN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ZCxFQUVEK0IsU0FBUyxJQUNSM0csSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLc0MsU0FBUyxFQUFFdUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUFBZ0YsUUFBQSxFQUNuQzdKLElBQUEsQ0FBQ1MsVUFBVSxFQUFBO1VBQ1RxSixLQUFLLEVBQUUxQyxRQUFRLENBQUMwQyxLQUFLO1VBQ3JCL0MsT0FBTyxFQUFFSyxRQUFRLENBQUNMLE9BQU87VUFDekJGLFFBQVEsRUFBRU8sUUFBUSxDQUFDUCxRQUFRO1VBQzNCOUMsUUFBUSxFQUFFd0U7UUFBZ0IsQ0FBQTtNQUMxQixDQUFBLENBRUw7SUFBQSxDQUFBLENBQ0c7RUFBQSxDQUFBLENBQ0Y7QUFFVjtBQUVBLE9BQU8sSUFBTXdCLFFBQVEsZ0JBQUc1SixJQUFJLENBQUM0QixhQUFhLENBQXlCO0FBRW5FLGVBQWVnSSxRQUFRIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvVGFibGUvUHJvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSAnLi4vUGFnaW5hdGlvbic7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL1RhYmxlJztcbmltcG9ydCB7IFF1ZXJ5RmlsdGVyIH0gZnJvbSAnLi4vUHJvRm9ybSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfQ1VSUkVOVCwgREVGQVVMVF9QQUdFX1NJWkUsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZUZldGNoRGF0YSB9IGZyb20gJy4vdXNlRmV0Y2hEYXRhJztcbmltcG9ydCB7IGdlbkNvbHVtbnMgfSBmcm9tICcuL2NvcmUvZ2VuQ29sdW1ucyc7XG5pbXBvcnQgeyBhcHBseVNlYXJjaFRyYW5zZm9ybXMsIGdlblNlYXJjaEZpZWxkcyB9IGZyb20gJy4vY29yZS9nZW5TZWFyY2hGaWVsZHMnO1xuLyoqIFJlYWQgdGhlIGN1cnJlbnQgVVJMIHF1ZXJ5IHN0cmluZyBpbnRvIHNlYXJjaCB2YWx1ZXMsIGFwcGx5aW5nIHRoZSBgJ2dldCdgIHRyYW5zZm9ybS4gKi9cbmZ1bmN0aW9uIHJlYWRVcmxWYWx1ZXMoc3luY1RvVXJsKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIHBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHR5cGVvZiBzeW5jVG9VcmwgPT09ICdmdW5jdGlvbicgPyBzeW5jVG9VcmwocGFyYW1zLCAnZ2V0JykgOiBwYXJhbXM7XG59XG5mdW5jdGlvbiBQcm9UYWJsZUlubmVyKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IHByZWZpeENscyA9IENTU19QUkVGSVgsIGNsYXNzTmFtZSwgY29sdW1ucywgcmVxdWVzdCwgcGFyYW1zLCBkYXRhU291cmNlOiBjb250cm9sbGVkRGF0YSwgbG9hZGluZzogY29udHJvbGxlZExvYWRpbmcsIGRlZmF1bHREYXRhLCBtYW51YWxSZXF1ZXN0LCBkZWJvdW5jZVRpbWUsIHBvc3REYXRhLCBwb2xsaW5nLCBiZWZvcmVTZWFyY2hTdWJtaXQsIGNvbHVtbkVtcHR5VGV4dCwgc2VhcmNoRm9ybVJlbmRlciwgcGFnaW5hdGlvbiA9IHt9LCBzZWFyY2ggPSB7fSwgcm93U2VsZWN0aW9uLCBzaXplID0gJ3NtYWxsJywgYWN0aW9uUmVmLCBvbkxvYWQsIG9uTG9hZGluZ0NoYW5nZSwgb25SZXF1ZXN0RXJyb3IsIG9uQ2hhbmdlLCByb3dLZXksIHZhcmlhbnQgPSAnc3Ryb2tlJywgYm9yZGVyZWQsIHNjcm9sbCwgc3RpY2t5LCBleHBhbmRhYmxlLCBlbXB0eSwgdGFibGVMYXlvdXQsIHJvd0NsYXNzTmFtZSwgb25Sb3csIHN1bW1hcnksIGZvb3RlciwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgdGFibGVDb2x1bW5zID0gdXNlTWVtbygoKSA9PiBnZW5Db2x1bW5zKGNvbHVtbnMsIGNvbHVtbkVtcHR5VGV4dCksIFtjb2x1bW5zLCBjb2x1bW5FbXB0eVRleHRdKTtcbiAgICAvLyDilIDilIAgc2VhcmNoIGZvcm0gKGF1dG8tZ2VuZXJhdGVkIGZyb20gY29sdW1ucykg4pSA4pSAXG4gICAgY29uc3Qgc2VhcmNoQ2ZnID0gc2VhcmNoID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHNlYXJjaDtcbiAgICBjb25zdCB7IGZpZWxkczogc2VhcmNoRmllbGRzLCBpbml0aWFsVmFsdWVzOiBzZWFyY2hJbml0aWFsVmFsdWVzLCBuYW1lczogc2VhcmNoRmllbGROYW1lcyB9ID0gdXNlTWVtbygoKSA9PiBnZW5TZWFyY2hGaWVsZHMoY29sdW1ucyksIFtjb2x1bW5zXSk7XG4gICAgY29uc3QgaGFzU2VhcmNoID0gc2VhcmNoICE9PSBmYWxzZSAmJiBzZWFyY2hGaWVsZHMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBzeW5jVG9VcmwgPSBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcuc3luY1RvVXJsO1xuICAgIC8vIFNlZWQgaW5pdGlhbCB2YWx1ZXMgKGFuZCB0aGUgZmlyc3QgcmVxdWVzdCkgZnJvbSB0aGUgVVJMIHdoZW4gc3luY1RvVXJsIGlzIG9uLlxuICAgIGNvbnN0IG1lcmdlZEluaXRpYWxWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IChzeW5jVG9VcmwgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNlYXJjaEluaXRpYWxWYWx1ZXMpLCByZWFkVXJsVmFsdWVzKHN5bmNUb1VybCkpIDogc2VhcmNoSW5pdGlhbFZhbHVlcyksIFxuICAgIC8vIG1vdW50LW9ubHkgc25hcHNob3Qgb2YgdGhlIFVSTFxuICAgIFtzZWFyY2hJbml0aWFsVmFsdWVzXSk7XG4gICAgY29uc3QgW3NlYXJjaFBhcmFtcywgc2V0U2VhcmNoUGFyYW1zXSA9IHVzZVNhZmVTdGF0ZSgoKSA9PiBtZXJnZWRJbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBmb3JtUmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgLy8g4pSA4pSAIHNlcnZlciBzb3J0IC8gZmlsdGVyIOKUgOKUgFxuICAgIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgLy8g4pSA4pSAIHBhZ2luYXRpb24gY29uZmlnIOKUgOKUgFxuICAgIGNvbnN0IHBhZ2luYXRlZCA9IHBhZ2luYXRpb24gIT09IGZhbHNlO1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZSA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdFBhZ2VTaXplKSB8fCAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnBhZ2VTaXplKSB8fCBERUZBVUxUX1BBR0VfU0laRTtcbiAgICBjb25zdCBkZWZhdWx0Q3VycmVudCA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdEN1cnJlbnQpIHx8IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uY3VycmVudCkgfHwgREVGQVVMVF9DVVJSRU5UO1xuICAgIGNvbnN0IG1hbnVhbCA9IGNvbnRyb2xsZWREYXRhICE9PSB1bmRlZmluZWQgfHwgIXJlcXVlc3Q7XG4gICAgY29uc3QgeyBkYXRhU291cmNlOiBmZXRjaGVkRGF0YSwgbG9hZGluZzogZmV0Y2hMb2FkaW5nLCBwYWdlSW5mbywgc2V0UGFnZUluZm8sIHJlbG9hZCwgcmVzZXQgfSA9IHVzZUZldGNoRGF0YSh7XG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1hbnVhbCxcbiAgICAgICAgbWFudWFsUmVxdWVzdCxcbiAgICAgICAgZGVib3VuY2VUaW1lLFxuICAgICAgICBwb3N0RGF0YSxcbiAgICAgICAgcG9sbGluZyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBkZWZhdWx0RGF0YSxcbiAgICAgICAgcGFnaW5hdGVkLFxuICAgICAgICBkZWZhdWx0Q3VycmVudCxcbiAgICAgICAgZGVmYXVsdFBhZ2VTaXplLFxuICAgICAgICBzZWFyY2hQYXJhbXMsXG4gICAgICAgIHNvcnQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgb25Mb2FkLFxuICAgICAgICBvbkxvYWRpbmdDaGFuZ2UsXG4gICAgICAgIG9uUmVxdWVzdEVycm9yLFxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBjb250cm9sbGVkRGF0YSAhPT0gbnVsbCAmJiBjb250cm9sbGVkRGF0YSAhPT0gdm9pZCAwID8gY29udHJvbGxlZERhdGEgOiBmZXRjaGVkRGF0YTtcbiAgICBjb25zdCBsb2FkaW5nID0gY29udHJvbGxlZExvYWRpbmcgIT09IG51bGwgJiYgY29udHJvbGxlZExvYWRpbmcgIT09IHZvaWQgMCA/IGNvbnRyb2xsZWRMb2FkaW5nIDogKG1hbnVhbCA/IGZhbHNlIDogZmV0Y2hMb2FkaW5nKTtcbiAgICAvLyDilIDilIAgaGFuZGxlcnMg4pSA4pSAXG4gICAgY29uc3QgaGFuZGxlU2VhcmNoRmluaXNoID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHBlckNvbHVtbiA9IGFwcGx5U2VhcmNoVHJhbnNmb3Jtcyh2YWx1ZXMsIGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBmaW5hbFBhcmFtcyA9IGJlZm9yZVNlYXJjaFN1Ym1pdCA/IGJlZm9yZVNlYXJjaFN1Ym1pdChwZXJDb2x1bW4pIDogcGVyQ29sdW1uO1xuICAgICAgICBzZXRTZWFyY2hQYXJhbXMoZmluYWxQYXJhbXMpO1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICB2b2lkIHJlbG9hZCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaFJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gVXNlIHRoZSBhcnJheSBmb3JtIChgcmVzZXRGaWVsZHMobmFtZXMpYCkg4oCUIHRoZSBuby1hcmcgZm9ybSByZS1pbnZva2VzIHRoZVxuICAgICAgICAvLyBmb3JtJ3Mgb3duIGBvblJlc2V0YCwgd2hpY2ggbG9vcHMgYmFjayBoZXJlIGFuZCByZWN1cnNlcyBpbmZpbml0ZWx5LlxuICAgICAgICAoX2EgPSBmb3JtUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXNldEZpZWxkcyhzZWFyY2hGaWVsZE5hbWVzKTtcbiAgICAgICAgc2V0U2VhcmNoUGFyYW1zKHt9KTtcbiAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgdm9pZCByZWxvYWQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWJsZUNoYW5nZSA9IHVzZU1lbW9pemVkRm4oKG1ldGEpID0+IHtcbiAgICAgICAgaWYgKG1ldGEuc29ydGVyKSB7XG4gICAgICAgICAgICBjb25zdCB7IGNvbHVtbktleSwgb3JkZXIgfSA9IG1ldGEuc29ydGVyO1xuICAgICAgICAgICAgc2V0U29ydChjb2x1bW5LZXkgJiYgb3JkZXIgPyB7IFtTdHJpbmcoY29sdW1uS2V5KV06IG9yZGVyIH0gOiB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGEuZmlsdGVycylcbiAgICAgICAgICAgIHNldEZpbHRlcihtZXRhLmZpbHRlcnMpO1xuICAgICAgICBpZiAobWV0YS5zb3J0ZXIgfHwgbWV0YS5maWx0ZXJzKVxuICAgICAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG1ldGEpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVBhZ2VDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChwYWdlLCBwYWdlU2l6ZSkgPT4ge1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0pO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2Uoe1xuICAgICAgICAgICAgY3VycmVudERhdGFTb3VyY2U6IGRhdGFTb3VyY2UsXG4gICAgICAgICAgICBhY3Rpb246ICdwYWdpbmF0ZScsXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IHBhZ2UsIHBhZ2VTaXplIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBpbXBlcmF0aXZlIGhhbmRsZSDilIDilIBcbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKGFjdGlvblJlZiwgKCkgPT4gKHtcbiAgICAgICAgcmVsb2FkOiAoKSA9PiByZWxvYWQoKSxcbiAgICAgICAgcmVsb2FkQW5kUmVzdDogKCkgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgc2V0UGFnZUluZm8oeyBjdXJyZW50OiBkZWZhdWx0Q3VycmVudCB9KTtcbiAgICAgICAgICAgIHlpZWxkIHJlbG9hZCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGZvcm1SZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc2V0RmllbGRzKHNlYXJjaEZpZWxkTmFtZXMpO1xuICAgICAgICAgICAgc2V0U2VhcmNoUGFyYW1zKHNlYXJjaEluaXRpYWxWYWx1ZXMpO1xuICAgICAgICAgICAgc2V0U29ydCh7fSk7XG4gICAgICAgICAgICBzZXRGaWx0ZXIoe30pO1xuICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgIHZvaWQgcmVsb2FkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldFBhZ2VJbmZvLFxuICAgIH0pKTtcbiAgICAvLyDilIDilIAgc2VhcmNoIGZvcm0gbm9kZSAob25seSBidWlsdCB3aGVuIHRoZXJlIGFyZSBzZWFyY2hhYmxlIGNvbHVtbnMpIOKUgOKUgFxuICAgIGxldCBzZWFyY2hOb2RlID0gbnVsbDtcbiAgICBpZiAoaGFzU2VhcmNoKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaEZvcm0gPSAoX2pzeChRdWVyeUZpbHRlciwgeyBmb3JtUmVmOiBmb3JtUmVmLCBzaXplOiBcInNtYWxsXCIsIGluaXRpYWxWYWx1ZXM6IG1lcmdlZEluaXRpYWxWYWx1ZXMsIGRlZmF1bHRDb2xsYXBzZWQ6IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5kZWZhdWx0Q29sbGFwc2VkLCBkZWZhdWx0Q29sc051bWJlcjogc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLmRlZmF1bHRDb2xzTnVtYmVyLCBsYWJlbFdpZHRoOiBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcubGFiZWxXaWR0aCwgc3luY1RvVXJsOiBzeW5jVG9VcmwsIHNlYXJjaENvbmZpZzoge1xuICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ6IChfYSA9IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5zZWFyY2hUZXh0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBERUZBVUxUX1RFWFQuc2VhcmNoLFxuICAgICAgICAgICAgICAgIHJlc2V0VGV4dDogKF9iID0gc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLnJlc2V0VGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULnJlc2V0LFxuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgfSwgb25GaW5pc2g6IGhhbmRsZVNlYXJjaEZpbmlzaCwgb25SZXNldDogaGFuZGxlU2VhcmNoUmVzZXQsIGNoaWxkcmVuOiBzZWFyY2hGaWVsZHMgfSkpO1xuICAgICAgICBzZWFyY2hOb2RlID0gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3NlYXJjaCcpLCBjaGlsZHJlbjogc2VhcmNoRm9ybVJlbmRlciA/IHNlYXJjaEZvcm1SZW5kZXIoc2VhcmNoRm9ybSkgOiBzZWFyY2hGb3JtIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh1bmRlZmluZWQsIGNsYXNzTmFtZSksIGNoaWxkcmVuOiBbc2VhcmNoTm9kZSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRhaW5lcicpLCBjaGlsZHJlbjogW19qc3goVGFibGUsIHsgcm93S2V5OiByb3dLZXksIGNvbHVtbnM6IHRhYmxlQ29sdW1ucywgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSwgbG9hZGluZzogbG9hZGluZywgc2l6ZTogc2l6ZSwgcGFnaW5hdGlvbjogZmFsc2UsIHJvd1NlbGVjdGlvbjogcm93U2VsZWN0aW9uLCBvbkNoYW5nZTogaGFuZGxlVGFibGVDaGFuZ2UsIHZhcmlhbnQ6IHZhcmlhbnQsIGJvcmRlcmVkOiBib3JkZXJlZCwgc2Nyb2xsOiBzY3JvbGwsIHN0aWNreTogc3RpY2t5LCBleHBhbmRhYmxlOiBleHBhbmRhYmxlLCBlbXB0eTogZW1wdHksIHRhYmxlTGF5b3V0OiB0YWJsZUxheW91dCwgcm93Q2xhc3NOYW1lOiByb3dDbGFzc05hbWUsIG9uUm93OiBvblJvdywgc3VtbWFyeTogc3VtbWFyeSwgZm9vdGVyOiBmb290ZXIgfSksIHBhZ2luYXRlZCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFnaW5hdGlvbicpLCBjaGlsZHJlbjogX2pzeChQYWdpbmF0aW9uLCB7IHRvdGFsOiBwYWdlSW5mby50b3RhbCwgY3VycmVudDogcGFnZUluZm8uY3VycmVudCwgcGFnZVNpemU6IHBhZ2VJbmZvLnBhZ2VTaXplLCBvbkNoYW5nZTogaGFuZGxlUGFnZUNoYW5nZSB9KSB9KSldIH0pXSB9KSk7XG59XG5leHBvcnQgY29uc3QgUHJvVGFibGUgPSBtZW1vKFByb1RhYmxlSW5uZXIpO1xuZXhwb3J0IGRlZmF1bHQgUHJvVGFibGU7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
310
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvVGFibGUvUHJvVGFibGUuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1Byb1RhYmxlL1Byb1RhYmxlLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwibWVtbyIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsInVzZVNhZmVTdGF0ZSIsIlBhZ2luYXRpb24iLCJUYWJsZSIsIlF1ZXJ5RmlsdGVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJDU1NfUFJFRklYIiwiREVGQVVMVF9DVVJSRU5UIiwiREVGQVVMVF9QQUdFX1NJWkUiLCJERUZBVUxUX1RFWFQiLCJ1c2VGZXRjaERhdGEiLCJnZW5Db2x1bW5zIiwiYXBwbHlTZWFyY2hUcmFuc2Zvcm1zIiwiZ2VuU2VhcmNoRmllbGRzIiwicmVhZFVybFZhbHVlcyIsInN5bmNUb1VybCIsIndpbmRvdyIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZm9yRWFjaCIsImtleSIsIlByb1RhYmxlSW5uZXIiLCJwcm9wcyIsIl90aGlzIiwiX2EiLCJfYiIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJjbGFzc05hbWUiLCJjb2x1bW5zIiwicmVxdWVzdCIsImNvbnRyb2xsZWREYXRhIiwiZGF0YVNvdXJjZSIsImNvbnRyb2xsZWRMb2FkaW5nIiwibG9hZGluZyIsImRlZmF1bHREYXRhIiwibWFudWFsUmVxdWVzdCIsImRlYm91bmNlVGltZSIsInBvc3REYXRhIiwicG9sbGluZyIsImJlZm9yZVNlYXJjaFN1Ym1pdCIsImNvbHVtbkVtcHR5VGV4dCIsInNlYXJjaEZvcm1SZW5kZXIiLCJfcHJvcHMkcGFnaW5hdGlvbiIsInBhZ2luYXRpb24iLCJfcHJvcHMkc2VhcmNoIiwicm93U2VsZWN0aW9uIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiYWN0aW9uUmVmIiwib25Mb2FkIiwib25Mb2FkaW5nQ2hhbmdlIiwib25SZXF1ZXN0RXJyb3IiLCJvbkNoYW5nZSIsInJvd0tleSIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsImJvcmRlcmVkIiwic2Nyb2xsIiwic3RpY2t5IiwiZXhwYW5kYWJsZSIsImVtcHR5IiwidGFibGVMYXlvdXQiLCJyb3dDbGFzc05hbWUiLCJvblJvdyIsInN1bW1hcnkiLCJmb290ZXIiLCJjbGFzc2VzIiwidGFibGVDb2x1bW5zIiwic2VhcmNoQ2ZnIiwidW5kZWZpbmVkIiwiX3VzZU1lbW8iLCJzZWFyY2hGaWVsZHMiLCJmaWVsZHMiLCJzZWFyY2hJbml0aWFsVmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsInNlYXJjaEZpZWxkTmFtZXMiLCJuYW1lcyIsImhhc1NlYXJjaCIsImxlbmd0aCIsIm1lcmdlZEluaXRpYWxWYWx1ZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJfdXNlU2FmZVN0YXRlIiwiX3VzZVNhZmVTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlYXJjaFBhcmFtcyIsInNldFNlYXJjaFBhcmFtcyIsImZvcm1SZWYiLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic29ydCIsInNldFNvcnQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VTYWZlU3RhdGU2IiwiZmlsdGVyIiwic2V0RmlsdGVyIiwicGFnaW5hdGVkIiwiZGVmYXVsdFBhZ2VTaXplIiwicGFnZVNpemUiLCJkZWZhdWx0Q3VycmVudCIsImN1cnJlbnQiLCJtYW51YWwiLCJfdXNlRmV0Y2hEYXRhIiwiZmV0Y2hlZERhdGEiLCJmZXRjaExvYWRpbmciLCJwYWdlSW5mbyIsInNldFBhZ2VJbmZvIiwicmVsb2FkIiwicmVzZXQiLCJoYW5kbGVTZWFyY2hGaW5pc2giLCJ2YWx1ZXMiLCJwZXJDb2x1bW4iLCJmaW5hbFBhcmFtcyIsImhhbmRsZVNlYXJjaFJlc2V0IiwicmVzZXRGaWVsZHMiLCJoYW5kbGVUYWJsZUNoYW5nZSIsIm1ldGEiLCJzb3J0ZXIiLCJfbWV0YSRzb3J0ZXIiLCJjb2x1bW5LZXkiLCJvcmRlciIsIl9kZWZpbmVQcm9wZXJ0eSIsIlN0cmluZyIsImZpbHRlcnMiLCJoYW5kbGVQYWdlQ2hhbmdlIiwicGFnZSIsImN1cnJlbnREYXRhU291cmNlIiwiYWN0aW9uIiwicmVsb2FkQW5kUmVzdCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJzdG9wIiwic2VhcmNoTm9kZSIsInNlYXJjaEZvcm0iLCJkZWZhdWx0Q29sbGFwc2VkIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwic2VhcmNoQ29uZmlnIiwic2VhcmNoVGV4dCIsInJlc2V0VGV4dCIsIm9uRmluaXNoIiwib25SZXNldCIsImNoaWxkcmVuIiwidG90YWwiLCJQcm9UYWJsZSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDN0YsU0FBU0YsSUFBSUEsQ0FBQ0ksTUFBTSxFQUFFO01BQUVBLE1BQU0sQ0FBQ0MsSUFBSSxHQUFHVCxPQUFPLENBQUNRLE1BQU0sQ0FBQ1QsS0FBSyxDQUFDLEdBQUdELEtBQUssQ0FBQ1UsTUFBTSxDQUFDVCxLQUFLLENBQUMsQ0FBQ1csSUFBSSxDQUFDUCxTQUFTLEVBQUVJLFFBQVEsQ0FBQztJQUFFO0lBQzdHSCxJQUFJLENBQUMsQ0FBQ1AsU0FBUyxHQUFHQSxTQUFTLENBQUNjLEtBQUssQ0FBQ2pCLE9BQU8sRUFBRUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFVSxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ3pFLENBQUMsQ0FBQztBQUNOLENBQUM7QUFDRCxTQUFTTyxHQUFHLElBQUlDLElBQUksRUFBRUMsSUFBSSxJQUFJQyxLQUFLLFFBQVEsbUJBQW1CO0FDVDlELFNBQVNDLElBQUksRUFBRUMsbUJBQW1CLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFFbEUsT0FBT0MsYUFBYSxNQUFNLDZCQUE2QjtBQUN2RCxPQUFPQyxZQUFZLE1BQU0sNEJBQTRCO0FBQ3JELFNBQVNDLFVBQVUsUUFBUSxlQUFlO0FBQzFDLFNBQVNDLEtBQUssUUFBUSxVQUFVO0FBRWhDLFNBQVNDLFdBQVcsUUFBUSxZQUFZO0FBRXhDLFNBQVNDLE9BQU8sSUFBSUMsVUFBVSxRQUFRLHdCQUF3QjtBQUM5RCxTQUFTQyxVQUFVLEVBQUVDLGVBQWUsRUFBRUMsaUJBQWlCLEVBQUVDLFlBQVksUUFBUSxhQUFhO0FBQzFGLFNBQVNDLFlBQVksUUFBUSxnQkFBZ0I7QUFDN0MsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxTQUFTQyxxQkFBcUIsRUFBRUMsZUFBZSxRQUFRLHdCQUF3QjtBQVMvRTtBQUNBLFNBQVNDLGFBQWFBLENBQUNDLFNBQW9CLEVBQUE7RUFDekMsSUFBSSxPQUFPQyxNQUFNLEtBQUssV0FBVyxFQUFFLE9BQU8sQ0FBQSxDQUFFO0VBQzVDLElBQU1DLE1BQU0sR0FBMkIsQ0FBQSxDQUFFO0VBQ3pDLElBQUlDLGVBQWUsQ0FBQ0YsTUFBTSxDQUFDRyxRQUFRLENBQUNDLE1BQU0sQ0FBQyxDQUFDQyxPQUFPLENBQUMsVUFBQzNDLEtBQUssRUFBRTRDLEdBQUcsRUFBSTtJQUNqRUwsTUFBTSxDQUFDSyxHQUFHLENBQUMsR0FBRzVDLEtBQUs7RUFDckIsQ0FBQyxDQUFDO0VBQ0YsT0FBTyxPQUFPcUMsU0FBUyxLQUFLLFVBQVUsR0FBR0EsU0FBUyxDQUFDRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUdBLE1BQU07QUFDNUU7QUFFQSxTQUFTTSxhQUFhQSxDQUdwQkMsS0FBK0IsRUFBQTtFQUFBLElBQUFDLEtBQUE7RURIN0IsSUFBSUMsRUFBRSxFQUFFQyxFQUFFO0VDSVosSUFBQUMsZ0JBQUEsR0FxQ0lKLEtBQUssQ0FwQ1BLLFNBQVM7SUFBVEEsU0FBUyxHQUFBRCxnQkFBQSxjQUFHdEIsVUFBVSxHQUFBc0IsZ0JBQUE7SUFDdEJFLFNBQVMsR0FtQ1BOLEtBQUssQ0FuQ1BNLFNBQVM7SUFDVEMsT0FBTyxHQWtDTFAsS0FBSyxDQWxDUE8sT0FBTztJQUNQQyxPQUFPLEdBaUNMUixLQUFLLENBakNQUSxPQUFPO0lBQ1BmLE1BQU0sR0FnQ0pPLEtBQUssQ0FoQ1BQLE1BQU07SUFDTWdCLGNBQWMsR0ErQnhCVCxLQUFLLENBL0JQVSxVQUFVO0lBQ0RDLGlCQUFpQixHQThCeEJYLEtBQUssQ0E5QlBZLE9BQU87SUFDUEMsV0FBVyxHQTZCVGIsS0FBSyxDQTdCUGEsV0FBVztJQUNYQyxhQUFhLEdBNEJYZCxLQUFLLENBNUJQYyxhQUFhO0lBQ2JDLFlBQVksR0EyQlZmLEtBQUssQ0EzQlBlLFlBQVk7SUFDWkMsUUFBUSxHQTBCTmhCLEtBQUssQ0ExQlBnQixRQUFRO0lBQ1JDLE9BQU8sR0F5QkxqQixLQUFLLENBekJQaUIsT0FBTztJQUNQQyxrQkFBa0IsR0F3QmhCbEIsS0FBSyxDQXhCUGtCLGtCQUFrQjtJQUNsQkMsZUFBZSxHQXVCYm5CLEtBQUssQ0F2QlBtQixlQUFlO0lBQ2ZDLGdCQUFnQixHQXNCZHBCLEtBQUssQ0F0QlBvQixnQkFBZ0I7SUFBQUMsaUJBQUEsR0FzQmRyQixLQUFLLENBckJQc0IsVUFBVTtJQUFWQSxVQUFVLEdBQUFELGlCQUFBLGNBQUcsQ0FBQSxDQUFFLEdBQUFBLGlCQUFBO0lBQUFFLGFBQUEsR0FxQmJ2QixLQUFLLENBcEJQSixNQUFNO0lBQU5BLE1BQU0sR0FBQTJCLGFBQUEsY0FBRyxDQUFBLENBQUUsR0FBQUEsYUFBQTtJQUNYQyxZQUFZLEdBbUJWeEIsS0FBSyxDQW5CUHdCLFlBQVk7SUFBQUMsV0FBQSxHQW1CVnpCLEtBQUssQ0FsQlAwQixJQUFJO0lBQUpBLElBQUksR0FBQUQsV0FBQSxjQUFHLE9BQU8sR0FBQUEsV0FBQTtJQUNkRSxTQUFTLEdBaUJQM0IsS0FBSyxDQWpCUDJCLFNBQVM7SUFDVEMsTUFBTSxHQWdCSjVCLEtBQUssQ0FoQlA0QixNQUFNO0lBQ05DLGVBQWUsR0FlYjdCLEtBQUssQ0FmUDZCLGVBQWU7SUFDZkMsY0FBYyxHQWNaOUIsS0FBSyxDQWRQOEIsY0FBYztJQUNkQyxRQUFRLEdBYU4vQixLQUFLLENBYlArQixRQUFRO0lBQ1JDLE1BQU0sR0FZSmhDLEtBQUssQ0FaUGdDLE1BQU07SUFBQUMsY0FBQSxHQVlKakMsS0FBSyxDQVhQa0MsT0FBTztJQUFQQSxPQUFPLEdBQUFELGNBQUEsY0FBRyxRQUFRLEdBQUFBLGNBQUE7SUFDbEJFLFFBQVEsR0FVTm5DLEtBQUssQ0FWUG1DLFFBQVE7SUFDUkMsTUFBTSxHQVNKcEMsS0FBSyxDQVRQb0MsTUFBTTtJQUNOQyxNQUFNLEdBUUpyQyxLQUFLLENBUlBxQyxNQUFNO0lBQ05DLFVBQVUsR0FPUnRDLEtBQUssQ0FQUHNDLFVBQVU7SUFDVkMsS0FBSyxHQU1IdkMsS0FBSyxDQU5QdUMsS0FBSztJQUNMQyxXQUFXLEdBS1R4QyxLQUFLLENBTFB3QyxXQUFXO0lBQ1hDLFlBQVksR0FJVnpDLEtBQUssQ0FKUHlDLFlBQVk7SUFDWkMsS0FBSyxHQUdIMUMsS0FBSyxDQUhQMEMsS0FBSztJQUNMQyxPQUFPLEdBRUwzQyxLQUFLLENBRlAyQyxPQUFPO0lBQ1BDLE1BQU0sR0FDSjVDLEtBQUssQ0FEUDRDLE1BQU07RUFHUixJQUFNQyxPQUFPLEdBQUdoRSxVQUFVLENBQUN3QixTQUFTLENBQUM7RUFFckMsSUFBTXlDLFlBQVksR0FBR3pFLE9BQU8sQ0FBQztJQUFBLE9BQU1jLFVBQVUsQ0FBQ29CLE9BQU8sRUFBRVksZUFBZSxDQUFDO0VBQUEsR0FBRSxDQUFDWixPQUFPLEVBQUVZLGVBQWUsQ0FBQyxDQUFDO0VBRXBHO0VBQ0EsSUFBTTRCLFNBQVMsR0FBR25ELE1BQU0sS0FBSyxLQUFLLEdBQUdvRCxTQUFTLEdBQUdwRCxNQUFNO0VBQ3ZELElBQUFxRCxRQUFBLEdBQThGNUUsT0FBTyxDQUNuRztNQUFBLE9BQU1nQixlQUFlLENBQUNrQixPQUFPLENBQUM7SUFBQSxHQUM5QixDQUFDQSxPQUFPLENBQUMsQ0FDVjtJQUhlMkMsWUFBWSxHQUFBRCxRQUFBLENBQXBCRSxNQUFNO0lBQStCQyxtQkFBbUIsR0FBQUgsUUFBQSxDQUFsQ0ksYUFBYTtJQUE4QkMsZ0JBQWdCLEdBQUFMLFFBQUEsQ0FBdkJNLEtBQUs7RUFJdkUsSUFBTUMsU0FBUyxHQUFHNUQsTUFBTSxLQUFLLEtBQUssSUFBSXNELFlBQVksQ0FBQ08sTUFBTSxHQUFHLENBQUM7RUFDN0QsSUFBTWxFLFNBQVMsR0FBR3dELFNBQVMsS0FBQSxJQUFBLElBQVRBLFNBQVMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxDQUFFeEQsU0FBUztFQUN0QztFQUNBLElBQU1tRSxtQkFBbUIsR0FBR3JGLE9BQU8sQ0FDakM7SUFBQSxPQUFPa0IsU0FBUyxHQUFFb0UsTUFBQSxDQUFBQyxNQUFBLENBQUFELE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFNUixtQkFBbUIsQ0FBQSxFQUFLOUQsYUFBYSxDQUFDQyxTQUFTLENBQUMsQ0FBQSxHQUFLNkQsbUJBQW1CO0VBQUEsQ0FBQztFQUNqRztFQUNBLENBQUNBLG1CQUFtQixDQUFDLENBQ3RCO0VBQ0QsSUFBQVMsYUFBQSxHQUF3Q3JGLFlBQVksQ0FBMEI7TUFBQSxPQUFNa0YsbUJBQW1CO0lBQUEsRUFBQztJQUFBSSxjQUFBLEdBQUFDLGNBQUEsQ0FBQUYsYUFBQTtJQUFqR0csWUFBWSxHQUFBRixjQUFBO0lBQUVHLGVBQWUsR0FBQUgsY0FBQTtFQUNwQyxJQUFNSSxPQUFPLEdBQUc1RixNQUFNLENBQXNCMEUsU0FBUyxDQUFDO0VBRXREO0VBQ0EsSUFBQW1CLGNBQUEsR0FBd0IzRixZQUFZLENBQW9CLENBQUEsQ0FBRSxDQUFDO0lBQUE0RixjQUFBLEdBQUFMLGNBQUEsQ0FBQUksY0FBQTtJQUFwREUsSUFBSSxHQUFBRCxjQUFBO0lBQUVFLE9BQU8sR0FBQUYsY0FBQTtFQUNwQixJQUFBRyxjQUFBLEdBQTRCL0YsWUFBWSxDQUFzQixDQUFBLENBQUUsQ0FBQztJQUFBZ0csY0FBQSxHQUFBVCxjQUFBLENBQUFRLGNBQUE7SUFBMURFLE1BQU0sR0FBQUQsY0FBQTtJQUFFRSxTQUFTLEdBQUFGLGNBQUE7RUFFeEI7RUFDQSxJQUFNRyxTQUFTLEdBQUdyRCxVQUFVLEtBQUssS0FBSztFQUN0QyxJQUFNc0QsZUFBZSxHQUFJdEQsVUFBVSxJQUFJQSxVQUFVLENBQUNzRCxlQUFlLElBQU10RCxVQUFVLElBQUlBLFVBQVUsQ0FBQ3VELFFBQVMsSUFBSTdGLGlCQUFpQjtFQUM5SCxJQUFNOEYsY0FBYyxHQUFJeEQsVUFBVSxJQUFJQSxVQUFVLENBQUN3RCxjQUFjLElBQU14RCxVQUFVLElBQUlBLFVBQVUsQ0FBQ3lELE9BQVEsSUFBSWhHLGVBQWU7RUFFekgsSUFBTWlHLE1BQU0sR0FBR3ZFLGNBQWMsS0FBS3VDLFNBQVMsSUFBSSxDQUFDeEMsT0FBTztFQUV2RCxJQUFBeUUsYUFBQSxHQUFpRy9GLFlBQVksQ0FDM0c7TUFDRXNCLE9BQU8sRUFBUEEsT0FBTztNQUNQd0UsTUFBTSxFQUFOQSxNQUFNO01BQ05sRSxhQUFhLEVBQWJBLGFBQWE7TUFDYkMsWUFBWSxFQUFaQSxZQUFZO01BQ1pDLFFBQVEsRUFBUkEsUUFBUTtNQUNSQyxPQUFPLEVBQVBBLE9BQU87TUFDUHhCLE1BQU0sRUFBTkEsTUFBTTtNQUNOb0IsV0FBVyxFQUFYQSxXQUFXO01BQ1g4RCxTQUFTLEVBQVRBLFNBQVM7TUFDVEcsY0FBYyxFQUFkQSxjQUFjO01BQ2RGLGVBQWUsRUFBZkEsZUFBZTtNQUNmWixZQUFZLEVBQVpBLFlBQVk7TUFDWkssSUFBSSxFQUFKQSxJQUFJO01BQ0pJLE1BQU0sRUFBTkEsTUFBTTtNQUNON0MsTUFBTSxFQUFOQSxNQUFNO01BQ05DLGVBQWUsRUFBZkEsZUFBZTtNQUNmQyxjQUFjLEVBQWRBO0lEcERGLENDcURDLENBQ0Y7SUFwQm1Cb0QsV0FBVyxHQUFBRCxhQUFBLENBQXZCdkUsVUFBVTtJQUF3QnlFLFlBQVksR0FBQUYsYUFBQSxDQUFyQnJFLE9BQU87SUFBZ0J3RSxRQUFRLEdBQUFILGFBQUEsQ0FBUkcsUUFBUTtJQUFFQyxXQUFXLEdBQUFKLGFBQUEsQ0FBWEksV0FBVztJQUFFQyxPQUFNLEdBQUFMLGFBQUEsQ0FBTkssTUFBTTtJQUFFQyxNQUFLLEdBQUFOLGFBQUEsQ0FBTE0sS0FBSztFQXNCNUYsSUFBTTdFLFVBQVUsR0FBR0QsY0FBYyxLQUFBLElBQUEsSUFBZEEsY0FBYyxLQUFBLEtBQUEsQ0FBQSxHQUFkQSxjQUFjLEdBQUl5RSxXQUFXO0VBQ2hELElBQU10RSxPQUFPLEdBQUdELGlCQUFpQixLQUFBLElBQUEsSUFBakJBLGlCQUFpQixLQUFBLEtBQUEsQ0FBQSxHQUFqQkEsaUJBQWlCLEdBQUtxRSxNQUFNLEdBQUcsS0FBSyxHQUFHRyxZQUFhO0VBRXBFO0VBQ0EsSUFBTUssa0JBQWtCLEdBQUdqSCxhQUFhLENBQUMsVUFBQ2tILE1BQStCLEVBQUk7SUFDM0UsSUFBTUMsU0FBUyxHQUFHdEcscUJBQXFCLENBQUNxRyxNQUFNLEVBQUVsRixPQUFPLENBQUM7SUFDeEQsSUFBTW9GLFdBQVcsR0FBR3pFLGtCQUFrQixHQUFHQSxrQkFBa0IsQ0FBQ3dFLFNBQVMsQ0FBQyxHQUFHQSxTQUFTO0lBQ2xGekIsZUFBZSxDQUFDMEIsV0FBVyxDQUFDO0lBQzVCTixXQUFXLENBQUM7TUFBRU4sT0FBTyxFQUFFRDtJQUFjLENBQUUsQ0FBQztJQUN4QyxLQUFLUSxPQUFNLENBQUEsQ0FBRTtFQUNmLENBQUMsQ0FBQztFQUNGLElBQU1NLGlCQUFpQixHQUFHckgsYUFBYSxDQUFDLFlBQUs7SUR2RHZDLElBQUkyQixFQUFFO0lDd0RWO0lBQ0E7SUFDQSxDQUFBQSxFQUFBLEdBQUFnRSxPQUFPLENBQUNhLE9BQU8sTUFBQSxJQUFBLElBQUE3RSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRTJGLFdBQVcsQ0FBQ3ZDLGdCQUFnQixDQUFDO0lBQzlDVyxlQUFlLENBQUMsQ0FBQSxDQUFFLENBQUM7SUFDbkJvQixXQUFXLENBQUM7TUFBRU4sT0FBTyxFQUFFRDtJQUFjLENBQUUsQ0FBQztJQUN4QyxLQUFLUSxPQUFNLENBQUEsQ0FBRTtFQUNmLENBQUMsQ0FBQztFQUVGLElBQU1RLGlCQUFpQixHQUFHdkgsYUFBYSxDQUFDLFVBQUN3SCxJQUF3QixFQUFJO0lBQ25FLElBQUlBLElBQUksQ0FBQ0MsTUFBTSxFQUFFO01BQ2YsSUFBQUMsWUFBQSxHQUE2QkYsSUFBSSxDQUFDQyxNQUFNO1FBQWhDRSxTQUFTLEdBQUFELFlBQUEsQ0FBVEMsU0FBUztRQUFFQyxLQUFLLEdBQUFGLFlBQUEsQ0FBTEUsS0FBSztNQUN4QjdCLE9BQU8sQ0FBQzRCLFNBQVMsSUFBSUMsS0FBSyxHQUFBQyxlQUFBLEtBQU1DLE1BQU0sQ0FBQ0gsU0FBUyxDQUFDLEVBQUdDLEtBQUssSUFBSyxDQUFBLENBQUUsQ0FBQztJQUNuRTtJQUNBLElBQUlKLElBQUksQ0FBQ08sT0FBTyxFQUFFNUIsU0FBUyxDQUFDcUIsSUFBSSxDQUFDTyxPQUE4QixDQUFDO0lBQ2hFLElBQUlQLElBQUksQ0FBQ0MsTUFBTSxJQUFJRCxJQUFJLENBQUNPLE9BQU8sRUFBRWpCLFdBQVcsQ0FBQztNQUFFTixPQUFPLEVBQUVEO0lBQWMsQ0FBRSxDQUFDO0lBQ3pFL0MsUUFBUSxLQUFBLElBQUEsSUFBUkEsUUFBUSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFSQSxRQUFRLENBQUdnRSxJQUFJLENBQUM7RUFDbEIsQ0FBQyxDQUFDO0VBRUYsSUFBTVEsZ0JBQWdCLEdBQUdoSSxhQUFhLENBQUMsVUFBQ2lJLElBQVksRUFBRTNCLFFBQWdCLEVBQUk7SUFDeEVRLFdBQVcsQ0FBQztNQUFFTixPQUFPLEVBQUV5QixJQUFJO01BQUUzQixRQUFRLEVBQVJBO0lBQVEsQ0FBRSxDQUFDO0lBQ3hDOUMsUUFBUSxLQUFBLElBQUEsSUFBUkEsUUFBUSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFSQSxRQUFRLENBQUc7TUFDVDBFLGlCQUFpQixFQUFFL0YsVUFBVTtNQUM3QmdHLE1BQU0sRUFBRSxVQUFVO01BQ2xCcEYsVUFBVSxFQUFFO1FBQUV5RCxPQUFPLEVBQUV5QixJQUFJO1FBQUUzQixRQUFRLEVBQVJBO01BQVE7SUR0RG5DLENDdURILENBQUM7RUFDSixDQUFDLENBQUM7RUFFRjtFQUNBekcsbUJBQW1CLENBQUN1RCxTQUFTLEVBQUU7SUFBQSxPQUEwQjtNQUN2RDJELE1BQU0sRUFBRSxTQUFSQSxNQUFNQSxDQUFBO1FBQUEsT0FBUUEsT0FBTSxDQUFBLENBQUU7TUFBQTtNQUN0QnFCLGFBQWEsRUFBRSxTQUFmQSxhQUFhQSxDQUFBO1FBQUEsT0FBYS9KLFNBQUEsQ0FBQXFELEtBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsZUFBQTJHLG1CQUFBLENBQUFDLElBQUEsQ0FBQSxTQUFBQyxRQUFBO1VBQUEsT0FBQUYsbUJBQUEsQ0FBQUcsSUFBQSxXQUFBQyxRQUFBO1lBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUF4SixJQUFBO2NBQUE7Z0JBQ3hCNkgsV0FBVyxDQUFDO2tCQUFFTixPQUFPLEVBQUVEO2dCQUFjLENBQUUsQ0FBQztnQkFBQ2tDLFFBQUEsQ0FBQXhKLElBQUE7Z0JBQ3pDLE9BQU04SCxPQUFNLENBQUEsQ0FBRTtjQUFBO2NBQUE7Z0JBQUEsT0FBQTBCLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUEsR0FBQUosT0FBQTtRQUFBLENBQ2YsRUFBQTtNQUFBO01BQ0R2QixLQUFLLEVBQUUsU0FBUEEsS0FBS0EsQ0FBQSxFQUFPO1FEdkRKLElBQUlyRixFQUFFO1FDd0RaLENBQUFBLEVBQUEsR0FBQWdFLE9BQU8sQ0FBQ2EsT0FBTyxNQUFBLElBQUEsSUFBQTdFLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFMkYsV0FBVyxDQUFDdkMsZ0JBQWdCLENBQUM7UUFDOUNXLGVBQWUsQ0FBQ2IsbUJBQW1CLENBQUM7UUFDcENrQixPQUFPLENBQUMsQ0FBQSxDQUFFLENBQUM7UUFDWEksU0FBUyxDQUFDLENBQUEsQ0FBRSxDQUFDO1FBQ2JhLE1BQUssQ0FBQSxDQUFFO1FBQ1AsS0FBS0QsT0FBTSxDQUFBLENBQUU7TUFDZixDQUFDO01BQ0RELFdBQVcsRUFBWEE7SUR0REEsQ0N1REQ7RUFBQSxDQUFDLENBQUM7RUFFSDtFQUNBLElBQUk4QixVQUFVLEdBQWMsSUFBSTtFQUNoQyxJQUFJM0QsU0FBUyxFQUFFO0lBQ2IsSUFBTTRELFVBQVUsR0FDZHBKLElBQUEsQ0FBQ1csV0FBVyxFQUFBO01BQ1Z1RixPQUFPLEVBQUVBLE9BQU87TUFDaEJ4QyxJQUFJLEVBQUMsT0FBTztNQUNaMkIsYUFBYSxFQUFFSyxtQkFBbUI7TUFDbEMyRCxnQkFBZ0IsRUFBRXRFLFNBQVMsS0FBQSxJQUFBLElBQVRBLFNBQVMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxDQUFFc0UsZ0JBQWdCO01BQzdDQyxpQkFBaUIsRUFBRXZFLFNBQVMsS0FBQSxJQUFBLElBQVRBLFNBQVMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxDQUFFdUUsaUJBQWlCO01BQy9DQyxVQUFVLEVBQUV4RSxTQUFTLEtBQUEsSUFBQSxJQUFUQSxTQUFTLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVRBLFNBQVMsQ0FBRXdFLFVBQVU7TUFDakNoSSxTQUFTLEVBQUVBLFNBQVM7TUFDcEJpSSxZQUFZLEVBQUU7UUFDWkMsVUFBVSxFQUFFLENBQUF2SCxFQUFBLEdBQUE2QyxTQUFTLEtBQUEsSUFBQSxJQUFUQSxTQUFTLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVRBLFNBQVMsQ0FBRTBFLFVBQVUsTUFBQSxJQUFBLElBQUF2SCxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsR0FBSWpCLFlBQVksQ0FBQ1csTUFBTTtRQUN4RDhILFNBQVMsRUFBRSxDQUFBdkgsRUFBQSxHQUFBNEMsU0FBUyxLQUFBLElBQUEsSUFBVEEsU0FBUyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFUQSxTQUFTLENBQUUyRSxTQUFTLE1BQUEsSUFBQSxJQUFBdkgsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUlsQixZQUFZLENBQUNzRyxLQUFLO1FBQ3JEN0QsSUFBSSxFQUFFO01EaEVKLENDaUVIO01BQ0RpRyxRQUFRLEVBQUVuQyxrQkFBa0I7TUFDNUJvQyxPQUFPLEVBQUVoQyxpQkFBaUI7TUFBQWlDLFFBQUEsRUFFekIzRTtJQUFZLENBQUEsQ0FFaEI7SUFDRGlFLFVBQVUsR0FDUm5KLElBQUEsQ0FBQSxLQUFBLEVBQUE7TUFBS3NDLFNBQVMsRUFBRXVDLE9BQU8sQ0FBQyxRQUFRLENBQUM7TUFBQWdGLFFBQUEsRUFBR3pHLGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ2dHLFVBQVUsQ0FBQyxHQUFHQTtJQUFVLENBQUEsQ0FDakc7RUFDSDtFQUVBLE9BQ0VsSixLQUFBLENBQUEsS0FBQSxFQUFBO0lBQUtvQyxTQUFTLEVBQUV1QyxPQUFPLENBQUNHLFNBQVMsRUFBRTFDLFNBQVMsQ0FBQztJQUFBdUgsUUFBQSxFQUFBLENBQzFDVixVQUFVLEVBRVhqSixLQUFBLENBQUEsS0FBQSxFQUFBO01BQUtvQyxTQUFTLEVBQUV1QyxPQUFPLENBQUMsV0FBVyxDQUFDO01BQUFnRixRQUFBLEVBQUEsQ0FDbEM3SixJQUFBLENBQUNVLEtBQUssRUFBQTtRQUNKc0QsTUFBTSxFQUFFQSxNQUFNO1FBQ2R6QixPQUFPLEVBQUV1QyxZQUFZO1FBQ3JCcEMsVUFBVSxFQUFFQSxVQUFVO1FBQ3RCRSxPQUFPLEVBQUVBLE9BQU87UUFDaEJjLElBQUksRUFBRUEsSUFBSTtRQUNWSixVQUFVLEVBQUUsS0FBSztRQUNqQkUsWUFBWSxFQUFFQSxZQUFZO1FBQzFCTyxRQUFRLEVBQUUrRCxpQkFBaUI7UUFDM0I1RCxPQUFPLEVBQUVBLE9BQU87UUFDaEJDLFFBQVEsRUFBRUEsUUFBUTtRQUNsQkMsTUFBTSxFQUFFQSxNQUFNO1FBQ2RDLE1BQU0sRUFBRUEsTUFBTTtRQUNkQyxVQUFVLEVBQUVBLFVBQVU7UUFDdEJDLEtBQUssRUFBRUEsS0FBSztRQUNaQyxXQUFXLEVBQUVBLFdBQVc7UUFDeEJDLFlBQVksRUFBRUEsWUFBWTtRQUMxQkMsS0FBSyxFQUFFQSxLQUFLO1FBQ1pDLE9BQU8sRUFBRUEsT0FBTztRQUNoQkMsTUFBTSxFQUFFQTtNQUFNLENBQUEsQ0FDZCxFQUVEK0IsU0FBUyxJQUNSM0csSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLc0MsU0FBUyxFQUFFdUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUFBZ0YsUUFBQSxFQUNuQzdKLElBQUEsQ0FBQ1MsVUFBVSxFQUFBO1VBQ1RxSixLQUFLLEVBQUUxQyxRQUFRLENBQUMwQyxLQUFLO1VBQ3JCL0MsT0FBTyxFQUFFSyxRQUFRLENBQUNMLE9BQU87VUFDekJGLFFBQVEsRUFBRU8sUUFBUSxDQUFDUCxRQUFRO1VBQzNCOUMsUUFBUSxFQUFFd0U7UUFBZ0IsQ0FBQTtNQUMxQixDQUFBLENBRUw7SUFBQSxDQUFBLENBQ0c7RUFBQSxDQUFBLENBQ0Y7QUFFVjtBQUVBLE9BQU8sSUFBTXdCLFFBQVEsZ0JBQUc1SixJQUFJLENBQUM0QixhQUFhLENBQXlCO0FBRW5FLGVBQWVnSSxRQUFRIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvVGFibGUvUHJvVGFibGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VJbXBlcmF0aXZlSGFuZGxlLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSAnLi4vUGFnaW5hdGlvbic7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL1RhYmxlJztcbmltcG9ydCB7IFF1ZXJ5RmlsdGVyIH0gZnJvbSAnLi4vUHJvRm9ybSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfQ1VSUkVOVCwgREVGQVVMVF9QQUdFX1NJWkUsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZUZldGNoRGF0YSB9IGZyb20gJy4vdXNlRmV0Y2hEYXRhJztcbmltcG9ydCB7IGdlbkNvbHVtbnMgfSBmcm9tICcuL2NvcmUvZ2VuQ29sdW1ucyc7XG5pbXBvcnQgeyBhcHBseVNlYXJjaFRyYW5zZm9ybXMsIGdlblNlYXJjaEZpZWxkcyB9IGZyb20gJy4vY29yZS9nZW5TZWFyY2hGaWVsZHMnO1xuLyoqIFJlYWQgdGhlIGN1cnJlbnQgVVJMIHF1ZXJ5IHN0cmluZyBpbnRvIHNlYXJjaCB2YWx1ZXMsIGFwcGx5aW5nIHRoZSBgJ2dldCdgIHRyYW5zZm9ybS4gKi9cbmZ1bmN0aW9uIHJlYWRVcmxWYWx1ZXMoc3luY1RvVXJsKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIHBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHR5cGVvZiBzeW5jVG9VcmwgPT09ICdmdW5jdGlvbicgPyBzeW5jVG9VcmwocGFyYW1zLCAnZ2V0JykgOiBwYXJhbXM7XG59XG5mdW5jdGlvbiBQcm9UYWJsZUlubmVyKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IHByZWZpeENscyA9IENTU19QUkVGSVgsIGNsYXNzTmFtZSwgY29sdW1ucywgcmVxdWVzdCwgcGFyYW1zLCBkYXRhU291cmNlOiBjb250cm9sbGVkRGF0YSwgbG9hZGluZzogY29udHJvbGxlZExvYWRpbmcsIGRlZmF1bHREYXRhLCBtYW51YWxSZXF1ZXN0LCBkZWJvdW5jZVRpbWUsIHBvc3REYXRhLCBwb2xsaW5nLCBiZWZvcmVTZWFyY2hTdWJtaXQsIGNvbHVtbkVtcHR5VGV4dCwgc2VhcmNoRm9ybVJlbmRlciwgcGFnaW5hdGlvbiA9IHt9LCBzZWFyY2ggPSB7fSwgcm93U2VsZWN0aW9uLCBzaXplID0gJ3NtYWxsJywgYWN0aW9uUmVmLCBvbkxvYWQsIG9uTG9hZGluZ0NoYW5nZSwgb25SZXF1ZXN0RXJyb3IsIG9uQ2hhbmdlLCByb3dLZXksIHZhcmlhbnQgPSAnc3Ryb2tlJywgYm9yZGVyZWQsIHNjcm9sbCwgc3RpY2t5LCBleHBhbmRhYmxlLCBlbXB0eSwgdGFibGVMYXlvdXQsIHJvd0NsYXNzTmFtZSwgb25Sb3csIHN1bW1hcnksIGZvb3RlciwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgY29uc3QgdGFibGVDb2x1bW5zID0gdXNlTWVtbygoKSA9PiBnZW5Db2x1bW5zKGNvbHVtbnMsIGNvbHVtbkVtcHR5VGV4dCksIFtjb2x1bW5zLCBjb2x1bW5FbXB0eVRleHRdKTtcbiAgICAvLyDilIDilIAgc2VhcmNoIGZvcm0gKGF1dG8tZ2VuZXJhdGVkIGZyb20gY29sdW1ucykg4pSA4pSAXG4gICAgY29uc3Qgc2VhcmNoQ2ZnID0gc2VhcmNoID09PSBmYWxzZSA/IHVuZGVmaW5lZCA6IHNlYXJjaDtcbiAgICBjb25zdCB7IGZpZWxkczogc2VhcmNoRmllbGRzLCBpbml0aWFsVmFsdWVzOiBzZWFyY2hJbml0aWFsVmFsdWVzLCBuYW1lczogc2VhcmNoRmllbGROYW1lcyB9ID0gdXNlTWVtbygoKSA9PiBnZW5TZWFyY2hGaWVsZHMoY29sdW1ucyksIFtjb2x1bW5zXSk7XG4gICAgY29uc3QgaGFzU2VhcmNoID0gc2VhcmNoICE9PSBmYWxzZSAmJiBzZWFyY2hGaWVsZHMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBzeW5jVG9VcmwgPSBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcuc3luY1RvVXJsO1xuICAgIC8vIFNlZWQgaW5pdGlhbCB2YWx1ZXMgKGFuZCB0aGUgZmlyc3QgcmVxdWVzdCkgZnJvbSB0aGUgVVJMIHdoZW4gc3luY1RvVXJsIGlzIG9uLlxuICAgIGNvbnN0IG1lcmdlZEluaXRpYWxWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IChzeW5jVG9VcmwgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHNlYXJjaEluaXRpYWxWYWx1ZXMpLCByZWFkVXJsVmFsdWVzKHN5bmNUb1VybCkpIDogc2VhcmNoSW5pdGlhbFZhbHVlcyksIFxuICAgIC8vIG1vdW50LW9ubHkgc25hcHNob3Qgb2YgdGhlIFVSTFxuICAgIFtzZWFyY2hJbml0aWFsVmFsdWVzXSk7XG4gICAgY29uc3QgW3NlYXJjaFBhcmFtcywgc2V0U2VhcmNoUGFyYW1zXSA9IHVzZVNhZmVTdGF0ZSgoKSA9PiBtZXJnZWRJbml0aWFsVmFsdWVzKTtcbiAgICBjb25zdCBmb3JtUmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgLy8g4pSA4pSAIHNlcnZlciBzb3J0IC8gZmlsdGVyIOKUgOKUgFxuICAgIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVNhZmVTdGF0ZSh7fSk7XG4gICAgLy8g4pSA4pSAIHBhZ2luYXRpb24gY29uZmlnIOKUgOKUgFxuICAgIGNvbnN0IHBhZ2luYXRlZCA9IHBhZ2luYXRpb24gIT09IGZhbHNlO1xuICAgIGNvbnN0IGRlZmF1bHRQYWdlU2l6ZSA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdFBhZ2VTaXplKSB8fCAocGFnaW5hdGlvbiAmJiBwYWdpbmF0aW9uLnBhZ2VTaXplKSB8fCBERUZBVUxUX1BBR0VfU0laRTtcbiAgICBjb25zdCBkZWZhdWx0Q3VycmVudCA9IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uZGVmYXVsdEN1cnJlbnQpIHx8IChwYWdpbmF0aW9uICYmIHBhZ2luYXRpb24uY3VycmVudCkgfHwgREVGQVVMVF9DVVJSRU5UO1xuICAgIGNvbnN0IG1hbnVhbCA9IGNvbnRyb2xsZWREYXRhICE9PSB1bmRlZmluZWQgfHwgIXJlcXVlc3Q7XG4gICAgY29uc3QgeyBkYXRhU291cmNlOiBmZXRjaGVkRGF0YSwgbG9hZGluZzogZmV0Y2hMb2FkaW5nLCBwYWdlSW5mbywgc2V0UGFnZUluZm8sIHJlbG9hZCwgcmVzZXQgfSA9IHVzZUZldGNoRGF0YSh7XG4gICAgICAgIHJlcXVlc3QsXG4gICAgICAgIG1hbnVhbCxcbiAgICAgICAgbWFudWFsUmVxdWVzdCxcbiAgICAgICAgZGVib3VuY2VUaW1lLFxuICAgICAgICBwb3N0RGF0YSxcbiAgICAgICAgcG9sbGluZyxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBkZWZhdWx0RGF0YSxcbiAgICAgICAgcGFnaW5hdGVkLFxuICAgICAgICBkZWZhdWx0Q3VycmVudCxcbiAgICAgICAgZGVmYXVsdFBhZ2VTaXplLFxuICAgICAgICBzZWFyY2hQYXJhbXMsXG4gICAgICAgIHNvcnQsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgb25Mb2FkLFxuICAgICAgICBvbkxvYWRpbmdDaGFuZ2UsXG4gICAgICAgIG9uUmVxdWVzdEVycm9yLFxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBjb250cm9sbGVkRGF0YSAhPT0gbnVsbCAmJiBjb250cm9sbGVkRGF0YSAhPT0gdm9pZCAwID8gY29udHJvbGxlZERhdGEgOiBmZXRjaGVkRGF0YTtcbiAgICBjb25zdCBsb2FkaW5nID0gY29udHJvbGxlZExvYWRpbmcgIT09IG51bGwgJiYgY29udHJvbGxlZExvYWRpbmcgIT09IHZvaWQgMCA/IGNvbnRyb2xsZWRMb2FkaW5nIDogKG1hbnVhbCA/IGZhbHNlIDogZmV0Y2hMb2FkaW5nKTtcbiAgICAvLyDilIDilIAgaGFuZGxlcnMg4pSA4pSAXG4gICAgY29uc3QgaGFuZGxlU2VhcmNoRmluaXNoID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHBlckNvbHVtbiA9IGFwcGx5U2VhcmNoVHJhbnNmb3Jtcyh2YWx1ZXMsIGNvbHVtbnMpO1xuICAgICAgICBjb25zdCBmaW5hbFBhcmFtcyA9IGJlZm9yZVNlYXJjaFN1Ym1pdCA/IGJlZm9yZVNlYXJjaFN1Ym1pdChwZXJDb2x1bW4pIDogcGVyQ29sdW1uO1xuICAgICAgICBzZXRTZWFyY2hQYXJhbXMoZmluYWxQYXJhbXMpO1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICB2b2lkIHJlbG9hZCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaFJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgLy8gVXNlIHRoZSBhcnJheSBmb3JtIChgcmVzZXRGaWVsZHMobmFtZXMpYCkgdG8gcmVzZXQgT05MWSB0aGUgc2VhcmNoXG4gICAgICAgIC8vIGZpZWxkcyDigJQgYSBmdWxsIHJlc2V0IHdvdWxkIGFsc28gd2lwZSBub24tc2VhcmNoIGZvcm0gc3RhdGUuXG4gICAgICAgIChfYSA9IGZvcm1SZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlc2V0RmllbGRzKHNlYXJjaEZpZWxkTmFtZXMpO1xuICAgICAgICBzZXRTZWFyY2hQYXJhbXMoe30pO1xuICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICB2b2lkIHJlbG9hZCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhYmxlQ2hhbmdlID0gdXNlTWVtb2l6ZWRGbigobWV0YSkgPT4ge1xuICAgICAgICBpZiAobWV0YS5zb3J0ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgY29sdW1uS2V5LCBvcmRlciB9ID0gbWV0YS5zb3J0ZXI7XG4gICAgICAgICAgICBzZXRTb3J0KGNvbHVtbktleSAmJiBvcmRlciA/IHsgW1N0cmluZyhjb2x1bW5LZXkpXTogb3JkZXIgfSA6IHt9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0YS5maWx0ZXJzKVxuICAgICAgICAgICAgc2V0RmlsdGVyKG1ldGEuZmlsdGVycyk7XG4gICAgICAgIGlmIChtZXRhLnNvcnRlciB8fCBtZXRhLmZpbHRlcnMpXG4gICAgICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UobWV0YSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUGFnZUNoYW5nZSA9IHVzZU1lbW9pemVkRm4oKHBhZ2UsIHBhZ2VTaXplKSA9PiB7XG4gICAgICAgIHNldFBhZ2VJbmZvKHsgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZSh7XG4gICAgICAgICAgICBjdXJyZW50RGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGFjdGlvbjogJ3BhZ2luYXRlJyxcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogcGFnZSwgcGFnZVNpemUgfSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIGltcGVyYXRpdmUgaGFuZGxlIOKUgOKUgFxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUoYWN0aW9uUmVmLCAoKSA9PiAoe1xuICAgICAgICByZWxvYWQ6ICgpID0+IHJlbG9hZCgpLFxuICAgICAgICByZWxvYWRBbmRSZXN0OiAoKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBzZXRQYWdlSW5mbyh7IGN1cnJlbnQ6IGRlZmF1bHRDdXJyZW50IH0pO1xuICAgICAgICAgICAgeWllbGQgcmVsb2FkKCk7XG4gICAgICAgIH0pLFxuICAgICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gZm9ybVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVzZXRGaWVsZHMoc2VhcmNoRmllbGROYW1lcyk7XG4gICAgICAgICAgICBzZXRTZWFyY2hQYXJhbXMoc2VhcmNoSW5pdGlhbFZhbHVlcyk7XG4gICAgICAgICAgICBzZXRTb3J0KHt9KTtcbiAgICAgICAgICAgIHNldEZpbHRlcih7fSk7XG4gICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgdm9pZCByZWxvYWQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0UGFnZUluZm8sXG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBzZWFyY2ggZm9ybSBub2RlIChvbmx5IGJ1aWx0IHdoZW4gdGhlcmUgYXJlIHNlYXJjaGFibGUgY29sdW1ucykg4pSA4pSAXG4gICAgbGV0IHNlYXJjaE5vZGUgPSBudWxsO1xuICAgIGlmIChoYXNTZWFyY2gpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoRm9ybSA9IChfanN4KFF1ZXJ5RmlsdGVyLCB7IGZvcm1SZWY6IGZvcm1SZWYsIHNpemU6IFwic21hbGxcIiwgaW5pdGlhbFZhbHVlczogbWVyZ2VkSW5pdGlhbFZhbHVlcywgZGVmYXVsdENvbGxhcHNlZDogc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLmRlZmF1bHRDb2xsYXBzZWQsIGRlZmF1bHRDb2xzTnVtYmVyOiBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcuZGVmYXVsdENvbHNOdW1iZXIsIGxhYmVsV2lkdGg6IHNlYXJjaENmZyA9PT0gbnVsbCB8fCBzZWFyY2hDZmcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENmZy5sYWJlbFdpZHRoLCBzeW5jVG9Vcmw6IHN5bmNUb1VybCwgc2VhcmNoQ29uZmlnOiB7XG4gICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogKF9hID0gc2VhcmNoQ2ZnID09PSBudWxsIHx8IHNlYXJjaENmZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ2ZnLnNlYXJjaFRleHQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IERFRkFVTFRfVEVYVC5zZWFyY2gsXG4gICAgICAgICAgICAgICAgcmVzZXRUZXh0OiAoX2IgPSBzZWFyY2hDZmcgPT09IG51bGwgfHwgc2VhcmNoQ2ZnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDZmcucmVzZXRUZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQucmVzZXQsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICB9LCBvbkZpbmlzaDogaGFuZGxlU2VhcmNoRmluaXNoLCBvblJlc2V0OiBoYW5kbGVTZWFyY2hSZXNldCwgY2hpbGRyZW46IHNlYXJjaEZpZWxkcyB9KSk7XG4gICAgICAgIHNlYXJjaE5vZGUgPSAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc2VhcmNoJyksIGNoaWxkcmVuOiBzZWFyY2hGb3JtUmVuZGVyID8gc2VhcmNoRm9ybVJlbmRlcihzZWFyY2hGb3JtKSA6IHNlYXJjaEZvcm0gfSkpO1xuICAgIH1cbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHVuZGVmaW5lZCwgY2xhc3NOYW1lKSwgY2hpbGRyZW46IFtzZWFyY2hOb2RlLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGFpbmVyJyksIGNoaWxkcmVuOiBbX2pzeChUYWJsZSwgeyByb3dLZXk6IHJvd0tleSwgY29sdW1uczogdGFibGVDb2x1bW5zLCBkYXRhU291cmNlOiBkYXRhU291cmNlLCBsb2FkaW5nOiBsb2FkaW5nLCBzaXplOiBzaXplLCBwYWdpbmF0aW9uOiBmYWxzZSwgcm93U2VsZWN0aW9uOiByb3dTZWxlY3Rpb24sIG9uQ2hhbmdlOiBoYW5kbGVUYWJsZUNoYW5nZSwgdmFyaWFudDogdmFyaWFudCwgYm9yZGVyZWQ6IGJvcmRlcmVkLCBzY3JvbGw6IHNjcm9sbCwgc3RpY2t5OiBzdGlja3ksIGV4cGFuZGFibGU6IGV4cGFuZGFibGUsIGVtcHR5OiBlbXB0eSwgdGFibGVMYXlvdXQ6IHRhYmxlTGF5b3V0LCByb3dDbGFzc05hbWU6IHJvd0NsYXNzTmFtZSwgb25Sb3c6IG9uUm93LCBzdW1tYXJ5OiBzdW1tYXJ5LCBmb290ZXI6IGZvb3RlciB9KSwgcGFnaW5hdGVkICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYWdpbmF0aW9uJyksIGNoaWxkcmVuOiBfanN4KFBhZ2luYXRpb24sIHsgdG90YWw6IHBhZ2VJbmZvLnRvdGFsLCBjdXJyZW50OiBwYWdlSW5mby5jdXJyZW50LCBwYWdlU2l6ZTogcGFnZUluZm8ucGFnZVNpemUsIG9uQ2hhbmdlOiBoYW5kbGVQYWdlQ2hhbmdlIH0pIH0pKV0gfSldIH0pKTtcbn1cbmV4cG9ydCBjb25zdCBQcm9UYWJsZSA9IG1lbW8oUHJvVGFibGVJbm5lcik7XG5leHBvcnQgZGVmYXVsdCBQcm9UYWJsZTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=