obsidian-integration-testing 14.0.0 → 15.0.0

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 (114) hide show
  1. package/README.md +2 -0
  2. package/dist/lib/cjs/appium-dependencies.cjs +2 -5
  3. package/dist/lib/cjs/appium-server-marker.cjs +3 -9
  4. package/dist/lib/cjs/asar-fallback-detection.cjs +2 -5
  5. package/dist/lib/cjs/avd-probe-verdict.cjs +3 -9
  6. package/dist/lib/cjs/capture-obsidian-screenshot.cjs +9 -1
  7. package/dist/lib/cjs/capture-obsidian-screenshot.d.cts +21 -0
  8. package/dist/lib/cjs/capture-screenshot.cjs +2 -5
  9. package/dist/lib/cjs/cli.cjs +2 -5
  10. package/dist/lib/cjs/demo-vault-populate.cjs +7 -9
  11. package/dist/lib/cjs/device-setting-restore.cjs +2 -5
  12. package/dist/lib/cjs/electron-compatibility.cjs +8 -11
  13. package/dist/lib/cjs/emulator-arguments.cjs +14 -14
  14. package/dist/lib/cjs/emulator-marker.cjs +4 -13
  15. package/dist/lib/cjs/emulator-reaper.cjs +2 -5
  16. package/dist/lib/cjs/emulator-snapshot.cjs +3 -9
  17. package/dist/lib/cjs/eval-cap-exceeded-error.cjs +2 -5
  18. package/dist/lib/cjs/exec.cjs +12 -24
  19. package/dist/lib/cjs/function-expression.cjs +2 -5
  20. package/dist/lib/cjs/global-setup-core.cjs +53 -18
  21. package/dist/lib/cjs/hide-vault-name.cjs +45 -0
  22. package/dist/lib/cjs/hide-vault-name.d.cts +67 -0
  23. package/dist/lib/cjs/index.cjs +9 -1
  24. package/dist/lib/cjs/index.d.cts +6 -2
  25. package/dist/lib/cjs/installer-asset.cjs +3 -9
  26. package/dist/lib/cjs/installer-compatibility.cjs +9 -12
  27. package/dist/lib/cjs/label-screenshot.cjs +63 -4
  28. package/dist/lib/cjs/label-screenshot.d.cts +66 -2
  29. package/dist/lib/cjs/leftover-cleanup.cjs +2 -5
  30. package/dist/lib/cjs/library.cjs +1 -1
  31. package/dist/lib/cjs/mobile-input.cjs +17 -31
  32. package/dist/lib/cjs/namespace-bootstrap.cjs +3 -9
  33. package/dist/lib/cjs/obsidian-executable.cjs +2 -5
  34. package/dist/lib/cjs/obsidian-installer.cjs +3 -9
  35. package/dist/lib/cjs/obsidian-instance.cjs +1 -1
  36. package/dist/lib/cjs/obsidian-instance.d.cts +8 -0
  37. package/dist/lib/cjs/owned-instance-exit-marker.cjs +2 -5
  38. package/dist/lib/cjs/owned-instance-exited-error.cjs +13 -17
  39. package/dist/lib/cjs/process-exit-message.cjs +3 -9
  40. package/dist/lib/cjs/renderer-boot-detection.cjs +3 -9
  41. package/dist/lib/cjs/setup-lock.cjs +3 -9
  42. package/dist/lib/cjs/sharp-loader.cjs +1 -1
  43. package/dist/lib/cjs/sharp-loader.d.cts +11 -0
  44. package/dist/lib/cjs/soft-keyboard-geometry.cjs +4 -9
  45. package/dist/lib/cjs/stale-build-detection.cjs +115 -0
  46. package/dist/lib/cjs/stale-build-detection.d.cts +108 -0
  47. package/dist/lib/cjs/stale-build-error.cjs +74 -0
  48. package/dist/lib/cjs/stale-build-error.d.cts +81 -0
  49. package/dist/lib/cjs/strict-proxy.cjs +3 -9
  50. package/dist/lib/cjs/transport-appium.cjs +3 -9
  51. package/dist/lib/cjs/transport-desktop-cdp.cjs +18 -32
  52. package/dist/lib/cjs/transport-factory.cjs +20 -25
  53. package/dist/lib/cjs/transport-options.cjs +2 -5
  54. package/dist/lib/cjs/transport-options.d.cts +36 -0
  55. package/dist/lib/cjs/vault-teardown-verdict.cjs +2 -5
  56. package/dist/lib/cjs/version-matrix.cjs +4 -13
  57. package/dist/lib/cjs/wedged-appium-server.cjs +3 -9
  58. package/dist/lib/esm/appium-dependencies.mjs +2 -5
  59. package/dist/lib/esm/appium-server-marker.mjs +3 -9
  60. package/dist/lib/esm/asar-fallback-detection.mjs +2 -5
  61. package/dist/lib/esm/avd-probe-verdict.mjs +3 -9
  62. package/dist/lib/esm/capture-obsidian-screenshot.d.mts +21 -0
  63. package/dist/lib/esm/capture-obsidian-screenshot.mjs +9 -1
  64. package/dist/lib/esm/capture-screenshot.mjs +2 -5
  65. package/dist/lib/esm/cli.mjs +2 -5
  66. package/dist/lib/esm/demo-vault-populate.mjs +7 -9
  67. package/dist/lib/esm/device-setting-restore.mjs +2 -5
  68. package/dist/lib/esm/electron-compatibility.mjs +8 -11
  69. package/dist/lib/esm/emulator-arguments.mjs +14 -14
  70. package/dist/lib/esm/emulator-marker.mjs +4 -13
  71. package/dist/lib/esm/emulator-reaper.mjs +2 -5
  72. package/dist/lib/esm/emulator-snapshot.mjs +3 -9
  73. package/dist/lib/esm/eval-cap-exceeded-error.mjs +2 -5
  74. package/dist/lib/esm/exec.mjs +12 -24
  75. package/dist/lib/esm/function-expression.mjs +2 -5
  76. package/dist/lib/esm/global-setup-core.mjs +60 -19
  77. package/dist/lib/esm/hide-vault-name.d.mts +67 -0
  78. package/dist/lib/esm/hide-vault-name.mjs +21 -0
  79. package/dist/lib/esm/index.d.mts +6 -2
  80. package/dist/lib/esm/index.mjs +8 -2
  81. package/dist/lib/esm/installer-asset.mjs +3 -9
  82. package/dist/lib/esm/installer-compatibility.mjs +9 -12
  83. package/dist/lib/esm/label-screenshot.d.mts +66 -2
  84. package/dist/lib/esm/label-screenshot.mjs +61 -3
  85. package/dist/lib/esm/leftover-cleanup.mjs +2 -5
  86. package/dist/lib/esm/library.mjs +1 -1
  87. package/dist/lib/esm/mobile-input.mjs +17 -31
  88. package/dist/lib/esm/namespace-bootstrap.mjs +3 -9
  89. package/dist/lib/esm/obsidian-executable.mjs +2 -5
  90. package/dist/lib/esm/obsidian-installer.mjs +3 -9
  91. package/dist/lib/esm/obsidian-instance.d.mts +8 -0
  92. package/dist/lib/esm/obsidian-instance.mjs +1 -1
  93. package/dist/lib/esm/owned-instance-exit-marker.mjs +2 -5
  94. package/dist/lib/esm/owned-instance-exited-error.mjs +13 -17
  95. package/dist/lib/esm/process-exit-message.mjs +3 -9
  96. package/dist/lib/esm/renderer-boot-detection.mjs +3 -9
  97. package/dist/lib/esm/setup-lock.mjs +3 -9
  98. package/dist/lib/esm/sharp-loader.d.mts +11 -0
  99. package/dist/lib/esm/sharp-loader.mjs +1 -1
  100. package/dist/lib/esm/soft-keyboard-geometry.mjs +4 -9
  101. package/dist/lib/esm/stale-build-detection.d.mts +108 -0
  102. package/dist/lib/esm/stale-build-detection.mjs +84 -0
  103. package/dist/lib/esm/stale-build-error.d.mts +81 -0
  104. package/dist/lib/esm/stale-build-error.mjs +50 -0
  105. package/dist/lib/esm/strict-proxy.mjs +3 -9
  106. package/dist/lib/esm/transport-appium.mjs +3 -9
  107. package/dist/lib/esm/transport-desktop-cdp.mjs +18 -32
  108. package/dist/lib/esm/transport-factory.mjs +20 -25
  109. package/dist/lib/esm/transport-options.d.mts +36 -0
  110. package/dist/lib/esm/transport-options.mjs +2 -5
  111. package/dist/lib/esm/vault-teardown-verdict.mjs +2 -5
  112. package/dist/lib/esm/version-matrix.mjs +4 -13
  113. package/dist/lib/esm/wedged-appium-server.mjs +3 -9
  114. package/package.json +20 -19
@@ -11,10 +11,7 @@ import { checkIsProcessAlive } from "./process-liveness.mjs";
11
11
  const MARKER_DIR_NAME = "obsidian-integration-testing";
12
12
  const MARKER_FILE_SUFFIX = ".appium-server.json";
13
13
  function checkIsHarnessOwnedAppiumServer(marker) {
14
- if (!marker) {
15
- return false;
16
- }
17
- return checkIsProcessAlive(marker.pid);
14
+ return marker !== void 0 && checkIsProcessAlive(marker.pid);
18
15
  }
19
16
  function clearAppiumServerMarker(port) {
20
17
  try {
@@ -61,10 +58,7 @@ function parseMarker(parsed, port) {
61
58
  }
62
59
  const record = parsed;
63
60
  const { pid, port: markedPort, startedAtInMilliseconds, stopAttemptedAtInMilliseconds } = record;
64
- if (typeof pid !== "number" || typeof startedAtInMilliseconds !== "number" || markedPort !== port) {
65
- return void 0;
66
- }
67
- return {
61
+ return typeof pid !== "number" || typeof startedAtInMilliseconds !== "number" || markedPort !== port ? void 0 : {
68
62
  pid,
69
63
  port,
70
64
  startedAtInMilliseconds,
@@ -86,4 +80,4 @@ export {
86
80
  recordAppiumServerStopAttempt,
87
81
  writeAppiumServerMarker
88
82
  };
89
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcGl1bS1zZXJ2ZXItbWFya2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVjb3JkcyB3aGljaCBBcHBpdW0gc2VydmVyIG9uIGEgcG9ydCB0aGlzIGhhcm5lc3Mgc3RhcnRlZCwgc28gYSBsYXRlciBydW5cbiAqIHRoYXQgZmluZHMgYSBzZXJ2ZXIgYWxyZWFkeSBsaXN0ZW5pbmcgY2FuIHRlbGwgKipwcm92ZW5hbmNlKio6IG9uZSBvZiBvdXIgb3duXG4gKiBzZXJ2ZXJzIGxlZnQgb3ZlciBmcm9tIGFuIGVhcmxpZXIgcnVuLCBvciBhIGZvcmVpZ24gb25lIHRoZSB1c2VyIG1hbmFnZXMuXG4gKlxuICogVGhlIHByZWZsaWdodCBhZG9wdHMgYW55IHNlcnZlciB0aGF0IGFuc3dlcnMgYC9zdGF0dXNgLCBhbmQgYWRvcHRpb24gaXMgdGhlXG4gKiByaWdodCBkZWZhdWx0IFx1MjAxNCBzdGFydGluZyBhIHNlY29uZCBzZXJ2ZXIgb24gYW4gb2NjdXBpZWQgcG9ydCBjYW5ub3Qgd29yay4gQnV0XG4gKiBhZG9wdGluZyBzaWxlbnRseSBtZWFucyBhIHdlZGdlZCBsZWZ0b3ZlciAoc2VlIGB3ZWRnZWQtYXBwaXVtLXNlcnZlci50c2ApIGlzXG4gKiBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgaGVhbHRoeSBzZXJ2ZXIsIGFuZCB0aGUgaGFybmVzcyBoYXMgbm8gYmFzaXMgb24gd2hpY2hcbiAqIHRvIGRlY2lkZSB3aGV0aGVyIHJlc3RhcnRpbmcgaXQgaXMgaXRzIGNhbGwgdG8gbWFrZS4gVGhlIG1hcmtlciBzdXBwbGllcyB0aGF0XG4gKiBiYXNpczogYSBzZXJ2ZXIgd2Ugc3RhcnRlZCBtYXkgYmUgcmVzdGFydGVkLCBhIGZvcmVpZ24gb25lIGlzIG9ubHkgZXZlclxuICogcmVwb3J0ZWQuXG4gKlxuICogVGhlIG1hcmtlciBpcyBhIHNtYWxsIEpTT04gc2VudGluZWwgbmV4dCB0byB0aGUgc2V0dXAgbG9jayAoYHNldHVwLWxvY2sudHNgKSxcbiAqIGtleWVkIGJ5IHBvcnQsIGFuZCBpcyBkZWxpYmVyYXRlbHkgdG9sZXJhbnQgXHUyMDE0IGEgbWlzc2luZywgdW5yZWFkYWJsZSwgb3JcbiAqIG1pc21hdGNoZWQgbWFya2VyIHNpbXBseSByZWFkcyBhcyBcIm5vdCBvdXJzXCIuXG4gKi9cblxuaW1wb3J0IHtcbiAgbWtkaXJTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJtU3luYyxcbiAgd3JpdGVGaWxlU3luY1xufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLm1qcyc7XG5pbXBvcnQgeyBjaGVja0lzUHJvY2Vzc0FsaXZlIH0gZnJvbSAnLi9wcm9jZXNzLWxpdmVuZXNzLm1qcyc7XG5cbmNvbnN0IE1BUktFUl9ESVJfTkFNRSA9ICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcbmNvbnN0IE1BUktFUl9GSUxFX1NVRkZJWCA9ICcuYXBwaXVtLXNlcnZlci5qc29uJztcblxuLyoqXG4gKiBJZGVudGlmaWVzIHRoZSBBcHBpdW0gc2VydmVyIHRoaXMgaGFybmVzcyBzdGFydGVkIG9uIGEgcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBpdW1TZXJ2ZXJNYXJrZXIge1xuICAvKipcbiAgUElEIG9mIHRoZSBzcGF3bmVkIHNlcnZlciBwcm9jZXNzICh0aGUgc2hlbGwgd3JhcHBlciB0aGF0IG93bnMgdGhlIHNlcnZlcidzIHByb2Nlc3MgdHJlZSkuXG4gICAqL1xuICByZWFkb25seSBwaWQ6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIHBvcnQgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCBvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgV2hlbiB0aGUgc2VydmVyIHdhcyBzdGFydGVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0ZWRBdEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBydW4gdHJpZWQgdG8gc3RvcCB0aGlzIHNlcnZlciBhbmQgY291bGQgbm90IHZlcmlmeSBpdCBleGl0ZWRcbiAgICogKGBEYXRlLm5vdygpYCBlcG9jaCBtaWxsaXNlY29uZHMpLCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIHN0b3AgaGFzIGZhaWxlZC5cbiAgICpcbiAgICogSXRzIHByZXNlbmNlIG1lYW5zIHRoZSBzZXJ2ZXIgaXMgYSAqKmtub3duLWRvb21lZCBsZWZ0b3ZlcioqOiBpdCB3YXMgb3VycyxcbiAgICogd2UgYXNrZWQgaXQgdG8gZGllLCBhbmQgaXQgZGlkIG5vdC4gU2VlIHtAbGluayByZWNvcmRBcHBpdW1TZXJ2ZXJTdG9wQXR0ZW1wdH0uXG4gICAqL1xuICByZWFkb25seSBzdG9wQXR0ZW1wdGVkQXRJbk1pbGxpc2Vjb25kcz86IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd3JpdGVBcHBpdW1TZXJ2ZXJNYXJrZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlQXBwaXVtU2VydmVyTWFya2VyUGFyYW1zIHtcbiAgLyoqXG4gIFBJRCBvZiB0aGUgc3Bhd25lZCBzZXJ2ZXIgcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IHBpZDogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgcG9ydCB0aGUgc2VydmVyIHdhcyBzdGFydGVkIG9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBtYXJrZWQgc2VydmVyIGlzIHN0aWxsIHJ1bm5pbmcsIHdoaWNoIGlzIHdoYXQgbWFrZXMgYW5cbiAqIGFkb3B0ZWQgc2VydmVyIG91cnMgdG8gcmVzdGFydC5cbiAqXG4gKiBBIGRlYWQgUElEIG1lYW5zIHRoZSBtYXJrZXIgb3V0bGl2ZWQgaXRzIHNlcnZlciwgc28gd2hhdGV2ZXIgYW5zd2VycyBvbiB0aGF0XG4gKiBwb3J0IG5vdyBpcyBzb21lYm9keSBlbHNlJ3MgXHUyMDE0IHRoZSBtYXJrZXIgcHJvdmVzIG5vdGhpbmcgYWJvdXQgaXQuXG4gKlxuICogQHBhcmFtIG1hcmtlciAtIFRoZSBtYXJrZXIgcmVhZCBmb3IgdGhlIHBvcnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGFuIGVhcmxpZXIgcnVuIG9mIHRoaXMgaGFybmVzcyBzdGFydGVkIHRoZSBzZXJ2ZXIgbm93IGxpc3RlbmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSXNIYXJuZXNzT3duZWRBcHBpdW1TZXJ2ZXIobWFya2VyOiBBcHBpdW1TZXJ2ZXJNYXJrZXIgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgaWYgKCFtYXJrZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gY2hlY2tJc1Byb2Nlc3NBbGl2ZShtYXJrZXIucGlkKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBtYXJrZXIgZm9yIGEgcG9ydC4gQ2FsbGVkIG9uY2UgdGhlIG1hcmtlZCBzZXJ2ZXIgaGFzIGJlZW4gc3RvcHBlZCxcbiAqIHNvIGEgbGF0ZXIgcnVuIGRvZXMgbm90IG1pc3Rha2UgYSByZWN5Y2xlZCBQSUQgZm9yIG91ciBzZXJ2ZXIuXG4gKlxuICogQHBhcmFtIHBvcnQgLSBUaGUgQXBwaXVtIHNlcnZlciBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJBcHBpdW1TZXJ2ZXJNYXJrZXIocG9ydDogbnVtYmVyKTogdm9pZCB7XG4gIHRyeSB7XG4gICAgcm1TeW5jKGdldE1hcmtlckZpbGVQYXRoKHBvcnQpLCB7IGZvcmNlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGxvZyhgW2FwcGl1bS1zZXJ2ZXItbWFya2VyXSBDb3VsZCBub3QgcmVtb3ZlIHRoZSBtYXJrZXIgZm9yIHBvcnQgJHtTdHJpbmcocG9ydCl9OiAke2dldEVycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgbWFya2VyIGZvciBhIHBvcnQuXG4gKlxuICogQHBhcmFtIHBvcnQgLSBUaGUgQXBwaXVtIHNlcnZlciBwb3J0LlxuICogQHJldHVybnMgVGhlIG1hcmtlciwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGVyZSBpcyBub25lLCBpdCBpcyB1bnJlYWRhYmxlLCBvciBpdCBkb2VzIG5vdCBkZXNjcmliZSB0aGlzIHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkQXBwaXVtU2VydmVyTWFya2VyKHBvcnQ6IG51bWJlcik6IEFwcGl1bVNlcnZlck1hcmtlciB8IHVuZGVmaW5lZCB7XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoZ2V0TWFya2VyRmlsZVBhdGgocG9ydCksICd1dGYtOCcpKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBwYXJzZU1hcmtlcihwYXJzZWQsIHBvcnQpO1xufVxuXG4vKipcbiAqIFJlY29yZHMgdGhhdCBhIHJ1biB0cmllZCB0byBzdG9wIHRoZSBtYXJrZWQgc2VydmVyIGFuZCBjb3VsZCBub3QgdmVyaWZ5IGl0XG4gKiBleGl0ZWQgXHUyMDE0ICoqaW5zdGVhZCBvZioqIGNsZWFyaW5nIHRoZSBtYXJrZXIuXG4gKlxuICogQ2xlYXJpbmcgaXQgd291bGQgYmUgdGhlIHdvcnN0IG9mIGJvdGggd29ybGRzOiB0aGUgbGVmdG92ZXIga2VlcHMgc2VydmluZywgYW5kXG4gKiB0aGUgbmV4dCBydW4gcmVhZHMgaXQgYXMgYSBmb3JlaWduLCB1c2VyLW1hbmFnZWQgc2VydmVyIGl0IG11c3QgbmV2ZXIgdG91Y2hcbiAqIChgY2hlY2tJc0hhcm5lc3NPd25lZEFwcGl1bVNlcnZlcmAgbmVlZHMgdGhlIG1hcmtlciB0byBjb252aWN0IGl0KS4gS2VlcGluZ1xuICogdGhlIG1hcmtlciwgc3RhbXBlZCwgc2F5cyBleGFjdGx5IHdoYXQgaXMgdHJ1ZSBcdTIwMTQgdGhpcyBpcyBvdXJzLCBhbmQgaXQgb3V0bGl2ZWRcbiAqIG91ciB0ZWFyZG93biBcdTIwMTQgd2hpY2ggaXMgd2hhdCBsZXRzIHRoZSBuZXh0IHJ1biByZWZ1c2UgdG8gYWRvcHQgaXQgYW5kIHJlcGxhY2VcbiAqIGl0IGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHBvcnQgLSBUaGUgQXBwaXVtIHNlcnZlciBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkQXBwaXVtU2VydmVyU3RvcEF0dGVtcHQocG9ydDogbnVtYmVyKTogdm9pZCB7XG4gIGNvbnN0IG1hcmtlciA9IHJlYWRBcHBpdW1TZXJ2ZXJNYXJrZXIocG9ydCk7XG4gIGlmICghbWFya2VyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgd3JpdGVNYXJrZXIoeyAuLi5tYXJrZXIsIHN0b3BBdHRlbXB0ZWRBdEluTWlsbGlzZWNvbmRzOiBEYXRlLm5vdygpIH0pO1xufVxuXG4vKipcbiAqIFJlY29yZHMgdGhlIHNlcnZlciB0aGlzIHJ1biBqdXN0IHN0YXJ0ZWQsIHN0YW1waW5nIGl0IHdpdGggdGhlIGN1cnJlbnQgdGltZSBzb1xuICogYSBsYXRlciBydW4gY2FuIHJlcG9ydCBob3cgbG9uZyBpdCBoYXMgYmVlbiB1cC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHN0YXJ0ZWQgc2VydmVyJ3MgUElEIGFuZCBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVBcHBpdW1TZXJ2ZXJNYXJrZXIocGFyYW1zOiBXcml0ZUFwcGl1bVNlcnZlck1hcmtlclBhcmFtcyk6IHZvaWQge1xuICB3cml0ZU1hcmtlcih7XG4gICAgcGlkOiBwYXJhbXMucGlkLFxuICAgIHBvcnQ6IHBhcmFtcy5wb3J0LFxuICAgIHN0YXJ0ZWRBdEluTWlsbGlzZWNvbmRzOiBEYXRlLm5vdygpXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3I6IHVua25vd24pOiBzdHJpbmcge1xuICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xufVxuXG5mdW5jdGlvbiBnZXRNYXJrZXJEaXJlY3RvcnkoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGpvaW4odG1wZGlyKCksIE1BUktFUl9ESVJfTkFNRSk7XG59XG5cbmZ1bmN0aW9uIGdldE1hcmtlckZpbGVQYXRoKHBvcnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKGdldE1hcmtlckRpcmVjdG9yeSgpLCBgJHtTdHJpbmcocG9ydCl9JHtNQVJLRVJfRklMRV9TVUZGSVh9YCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTWFya2VyKHBhcnNlZDogdW5rbm93biwgcG9ydDogbnVtYmVyKTogQXBwaXVtU2VydmVyTWFya2VyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiBwYXJzZWQgIT09ICdvYmplY3QnIHx8IHBhcnNlZCA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCByZWNvcmQgPSBwYXJzZWQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHsgcGlkLCBwb3J0OiBtYXJrZWRQb3J0LCBzdGFydGVkQXRJbk1pbGxpc2Vjb25kcywgc3RvcEF0dGVtcHRlZEF0SW5NaWxsaXNlY29uZHMgfSA9IHJlY29yZDtcblxuICBpZiAodHlwZW9mIHBpZCAhPT0gJ251bWJlcicgfHwgdHlwZW9mIHN0YXJ0ZWRBdEluTWlsbGlzZWNvbmRzICE9PSAnbnVtYmVyJyB8fCBtYXJrZWRQb3J0ICE9PSBwb3J0KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGlkLFxuICAgIHBvcnQsXG4gICAgc3RhcnRlZEF0SW5NaWxsaXNlY29uZHMsXG4gICAgLi4uKHR5cGVvZiBzdG9wQXR0ZW1wdGVkQXRJbk1pbGxpc2Vjb25kcyA9PT0gJ251bWJlcicgJiYgeyBzdG9wQXR0ZW1wdGVkQXRJbk1pbGxpc2Vjb25kcyB9KVxuICB9O1xufVxuXG5mdW5jdGlvbiB3cml0ZU1hcmtlcihtYXJrZXI6IEFwcGl1bVNlcnZlck1hcmtlcik6IHZvaWQge1xuICB0cnkge1xuICAgIG1rZGlyU3luYyhnZXRNYXJrZXJEaXJlY3RvcnkoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlU3luYyhnZXRNYXJrZXJGaWxlUGF0aChtYXJrZXIucG9ydCksIEpTT04uc3RyaW5naWZ5KG1hcmtlcikpO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGxvZyhgW2FwcGl1bS1zZXJ2ZXItbWFya2VyXSBDb3VsZCBub3QgcmVjb3JkIHRoZSBzZXJ2ZXIgb24gcG9ydCAke1N0cmluZyhtYXJrZXIucG9ydCl9OiAke2dldEVycm9yTWVzc2FnZShlcnJvcil9YCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQW9CQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxjQUFjO0FBQ3ZCLFNBQVMsWUFBWTtBQUVyQixTQUFTLFdBQVc7QUFDcEIsU0FBUywyQkFBMkI7QUFFcEMsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxxQkFBcUI7QUF3RHBCLFNBQVMsZ0NBQWdDLFFBQWlEO0FBQy9GLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLG9CQUFvQixPQUFPLEdBQUc7QUFDdkM7QUFRTyxTQUFTLHdCQUF3QixNQUFvQjtBQUMxRCxNQUFJO0FBQ0YsV0FBTyxrQkFBa0IsSUFBSSxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFBQSxFQUNqRCxTQUFTLE9BQWdCO0FBQ3ZCLFFBQUksK0RBQStELE9BQU8sSUFBSSxDQUFDLEtBQUssZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO0FBQUEsRUFDOUc7QUFDRjtBQVFPLFNBQVMsdUJBQXVCLE1BQThDO0FBQ25GLE1BQUk7QUFDSixNQUFJO0FBQ0YsYUFBUyxLQUFLLE1BQU0sYUFBYSxrQkFBa0IsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUFBLEVBQ3BFLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sWUFBWSxRQUFRLElBQUk7QUFDakM7QUFlTyxTQUFTLDhCQUE4QixNQUFvQjtBQUNoRSxRQUFNLFNBQVMsdUJBQXVCLElBQUk7QUFDMUMsTUFBSSxDQUFDLFFBQVE7QUFDWDtBQUFBLEVBQ0Y7QUFFQSxjQUFZLEVBQUUsR0FBRyxRQUFRLCtCQUErQixLQUFLLElBQUksRUFBRSxDQUFDO0FBQ3RFO0FBUU8sU0FBUyx3QkFBd0IsUUFBNkM7QUFDbkYsY0FBWTtBQUFBLElBQ1YsS0FBSyxPQUFPO0FBQUEsSUFDWixNQUFNLE9BQU87QUFBQSxJQUNiLHlCQUF5QixLQUFLLElBQUk7QUFBQSxFQUNwQyxDQUFDO0FBQ0g7QUFFQSxTQUFTLGdCQUFnQixPQUF3QjtBQUMvQyxTQUFPLGlCQUFpQixRQUFRLE1BQU0sVUFBVSxPQUFPLEtBQUs7QUFDOUQ7QUFFQSxTQUFTLHFCQUE2QjtBQUNwQyxTQUFPLEtBQUssT0FBTyxHQUFHLGVBQWU7QUFDdkM7QUFFQSxTQUFTLGtCQUFrQixNQUFzQjtBQUMvQyxTQUFPLEtBQUssbUJBQW1CLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFO0FBQzFFO0FBRUEsU0FBUyxZQUFZLFFBQWlCLE1BQThDO0FBQ2xGLE1BQUksT0FBTyxXQUFXLFlBQVksV0FBVyxNQUFNO0FBQ2pELFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxTQUFTO0FBQ2YsUUFBTSxFQUFFLEtBQUssTUFBTSxZQUFZLHlCQUF5Qiw4QkFBOEIsSUFBSTtBQUUxRixNQUFJLE9BQU8sUUFBUSxZQUFZLE9BQU8sNEJBQTRCLFlBQVksZUFBZSxNQUFNO0FBQ2pHLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBSSxPQUFPLGtDQUFrQyxZQUFZLEVBQUUsOEJBQThCO0FBQUEsRUFDM0Y7QUFDRjtBQUVBLFNBQVMsWUFBWSxRQUFrQztBQUNyRCxNQUFJO0FBQ0YsY0FBVSxtQkFBbUIsR0FBRyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQ25ELGtCQUFjLGtCQUFrQixPQUFPLElBQUksR0FBRyxLQUFLLFVBQVUsTUFBTSxDQUFDO0FBQUEsRUFDdEUsU0FBUyxPQUFnQjtBQUN2QixRQUFJLDhEQUE4RCxPQUFPLE9BQU8sSUFBSSxDQUFDLEtBQUssZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO0FBQUEsRUFDcEg7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
83
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FwcGl1bS1zZXJ2ZXItbWFya2VyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVjb3JkcyB3aGljaCBBcHBpdW0gc2VydmVyIG9uIGEgcG9ydCB0aGlzIGhhcm5lc3Mgc3RhcnRlZCwgc28gYSBsYXRlciBydW5cbiAqIHRoYXQgZmluZHMgYSBzZXJ2ZXIgYWxyZWFkeSBsaXN0ZW5pbmcgY2FuIHRlbGwgKipwcm92ZW5hbmNlKio6IG9uZSBvZiBvdXIgb3duXG4gKiBzZXJ2ZXJzIGxlZnQgb3ZlciBmcm9tIGFuIGVhcmxpZXIgcnVuLCBvciBhIGZvcmVpZ24gb25lIHRoZSB1c2VyIG1hbmFnZXMuXG4gKlxuICogVGhlIHByZWZsaWdodCBhZG9wdHMgYW55IHNlcnZlciB0aGF0IGFuc3dlcnMgYC9zdGF0dXNgLCBhbmQgYWRvcHRpb24gaXMgdGhlXG4gKiByaWdodCBkZWZhdWx0IFx1MjAxNCBzdGFydGluZyBhIHNlY29uZCBzZXJ2ZXIgb24gYW4gb2NjdXBpZWQgcG9ydCBjYW5ub3Qgd29yay4gQnV0XG4gKiBhZG9wdGluZyBzaWxlbnRseSBtZWFucyBhIHdlZGdlZCBsZWZ0b3ZlciAoc2VlIGB3ZWRnZWQtYXBwaXVtLXNlcnZlci50c2ApIGlzXG4gKiBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgaGVhbHRoeSBzZXJ2ZXIsIGFuZCB0aGUgaGFybmVzcyBoYXMgbm8gYmFzaXMgb24gd2hpY2hcbiAqIHRvIGRlY2lkZSB3aGV0aGVyIHJlc3RhcnRpbmcgaXQgaXMgaXRzIGNhbGwgdG8gbWFrZS4gVGhlIG1hcmtlciBzdXBwbGllcyB0aGF0XG4gKiBiYXNpczogYSBzZXJ2ZXIgd2Ugc3RhcnRlZCBtYXkgYmUgcmVzdGFydGVkLCBhIGZvcmVpZ24gb25lIGlzIG9ubHkgZXZlclxuICogcmVwb3J0ZWQuXG4gKlxuICogVGhlIG1hcmtlciBpcyBhIHNtYWxsIEpTT04gc2VudGluZWwgbmV4dCB0byB0aGUgc2V0dXAgbG9jayAoYHNldHVwLWxvY2sudHNgKSxcbiAqIGtleWVkIGJ5IHBvcnQsIGFuZCBpcyBkZWxpYmVyYXRlbHkgdG9sZXJhbnQgXHUyMDE0IGEgbWlzc2luZywgdW5yZWFkYWJsZSwgb3JcbiAqIG1pc21hdGNoZWQgbWFya2VyIHNpbXBseSByZWFkcyBhcyBcIm5vdCBvdXJzXCIuXG4gKi9cblxuaW1wb3J0IHtcbiAgbWtkaXJTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJtU3luYyxcbiAgd3JpdGVGaWxlU3luY1xufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLm1qcyc7XG5pbXBvcnQgeyBjaGVja0lzUHJvY2Vzc0FsaXZlIH0gZnJvbSAnLi9wcm9jZXNzLWxpdmVuZXNzLm1qcyc7XG5cbmNvbnN0IE1BUktFUl9ESVJfTkFNRSA9ICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcbmNvbnN0IE1BUktFUl9GSUxFX1NVRkZJWCA9ICcuYXBwaXVtLXNlcnZlci5qc29uJztcblxuLyoqXG4gKiBJZGVudGlmaWVzIHRoZSBBcHBpdW0gc2VydmVyIHRoaXMgaGFybmVzcyBzdGFydGVkIG9uIGEgcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBpdW1TZXJ2ZXJNYXJrZXIge1xuICAvKipcbiAgUElEIG9mIHRoZSBzcGF3bmVkIHNlcnZlciBwcm9jZXNzICh0aGUgc2hlbGwgd3JhcHBlciB0aGF0IG93bnMgdGhlIHNlcnZlcidzIHByb2Nlc3MgdHJlZSkuXG4gICAqL1xuICByZWFkb25seSBwaWQ6IG51bWJlcjtcblxuICAvKipcbiAgVGhlIHBvcnQgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCBvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgV2hlbiB0aGUgc2VydmVyIHdhcyBzdGFydGVkIChgRGF0ZS5ub3coKWAgZXBvY2ggbWlsbGlzZWNvbmRzKS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0ZWRBdEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBydW4gdHJpZWQgdG8gc3RvcCB0aGlzIHNlcnZlciBhbmQgY291bGQgbm90IHZlcmlmeSBpdCBleGl0ZWRcbiAgICogKGBEYXRlLm5vdygpYCBlcG9jaCBtaWxsaXNlY29uZHMpLCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIHN0b3AgaGFzIGZhaWxlZC5cbiAgICpcbiAgICogSXRzIHByZXNlbmNlIG1lYW5zIHRoZSBzZXJ2ZXIgaXMgYSAqKmtub3duLWRvb21lZCBsZWZ0b3ZlcioqOiBpdCB3YXMgb3VycyxcbiAgICogd2UgYXNrZWQgaXQgdG8gZGllLCBhbmQgaXQgZGlkIG5vdC4gU2VlIHtAbGluayByZWNvcmRBcHBpdW1TZXJ2ZXJTdG9wQXR0ZW1wdH0uXG4gICAqL1xuICByZWFkb25seSBzdG9wQXR0ZW1wdGVkQXRJbk1pbGxpc2Vjb25kcz86IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd3JpdGVBcHBpdW1TZXJ2ZXJNYXJrZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRlQXBwaXVtU2VydmVyTWFya2VyUGFyYW1zIHtcbiAgLyoqXG4gIFBJRCBvZiB0aGUgc3Bhd25lZCBzZXJ2ZXIgcHJvY2Vzcy5cbiAgICovXG4gIHJlYWRvbmx5IHBpZDogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgcG9ydCB0aGUgc2VydmVyIHdhcyBzdGFydGVkIG9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBtYXJrZWQgc2VydmVyIGlzIHN0aWxsIHJ1bm5pbmcsIHdoaWNoIGlzIHdoYXQgbWFrZXMgYW5cbiAqIGFkb3B0ZWQgc2VydmVyIG91cnMgdG8gcmVzdGFydC5cbiAqXG4gKiBBIGRlYWQgUElEIG1lYW5zIHRoZSBtYXJrZXIgb3V0bGl2ZWQgaXRzIHNlcnZlciwgc28gd2hhdGV2ZXIgYW5zd2VycyBvbiB0aGF0XG4gKiBwb3J0IG5vdyBpcyBzb21lYm9keSBlbHNlJ3MgXHUyMDE0IHRoZSBtYXJrZXIgcHJvdmVzIG5vdGhpbmcgYWJvdXQgaXQuXG4gKlxuICogQHBhcmFtIG1hcmtlciAtIFRoZSBtYXJrZXIgcmVhZCBmb3IgdGhlIHBvcnQsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIGFuIGVhcmxpZXIgcnVuIG9mIHRoaXMgaGFybmVzcyBzdGFydGVkIHRoZSBzZXJ2ZXIgbm93IGxpc3RlbmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSXNIYXJuZXNzT3duZWRBcHBpdW1TZXJ2ZXIobWFya2VyOiBBcHBpdW1TZXJ2ZXJNYXJrZXIgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIG1hcmtlciAhPT0gdW5kZWZpbmVkICYmIGNoZWNrSXNQcm9jZXNzQWxpdmUobWFya2VyLnBpZCk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgbWFya2VyIGZvciBhIHBvcnQuIENhbGxlZCBvbmNlIHRoZSBtYXJrZWQgc2VydmVyIGhhcyBiZWVuIHN0b3BwZWQsXG4gKiBzbyBhIGxhdGVyIHJ1biBkb2VzIG5vdCBtaXN0YWtlIGEgcmVjeWNsZWQgUElEIGZvciBvdXIgc2VydmVyLlxuICpcbiAqIEBwYXJhbSBwb3J0IC0gVGhlIEFwcGl1bSBzZXJ2ZXIgcG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQXBwaXVtU2VydmVyTWFya2VyKHBvcnQ6IG51bWJlcik6IHZvaWQge1xuICB0cnkge1xuICAgIHJtU3luYyhnZXRNYXJrZXJGaWxlUGF0aChwb3J0KSwgeyBmb3JjZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2coYFthcHBpdW0tc2VydmVyLW1hcmtlcl0gQ291bGQgbm90IHJlbW92ZSB0aGUgbWFya2VyIGZvciBwb3J0ICR7U3RyaW5nKHBvcnQpfTogJHtnZXRFcnJvck1lc3NhZ2UoZXJyb3IpfWApO1xuICB9XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIG1hcmtlciBmb3IgYSBwb3J0LlxuICpcbiAqIEBwYXJhbSBwb3J0IC0gVGhlIEFwcGl1bSBzZXJ2ZXIgcG9ydC5cbiAqIEByZXR1cm5zIFRoZSBtYXJrZXIsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZSwgaXQgaXMgdW5yZWFkYWJsZSwgb3IgaXQgZG9lcyBub3QgZGVzY3JpYmUgdGhpcyBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEFwcGl1bVNlcnZlck1hcmtlcihwb3J0OiBudW1iZXIpOiBBcHBpdW1TZXJ2ZXJNYXJrZXIgfCB1bmRlZmluZWQge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKGdldE1hcmtlckZpbGVQYXRoKHBvcnQpLCAndXRmLTgnKSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gcGFyc2VNYXJrZXIocGFyc2VkLCBwb3J0KTtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIHRoYXQgYSBydW4gdHJpZWQgdG8gc3RvcCB0aGUgbWFya2VkIHNlcnZlciBhbmQgY291bGQgbm90IHZlcmlmeSBpdFxuICogZXhpdGVkIFx1MjAxNCAqKmluc3RlYWQgb2YqKiBjbGVhcmluZyB0aGUgbWFya2VyLlxuICpcbiAqIENsZWFyaW5nIGl0IHdvdWxkIGJlIHRoZSB3b3JzdCBvZiBib3RoIHdvcmxkczogdGhlIGxlZnRvdmVyIGtlZXBzIHNlcnZpbmcsIGFuZFxuICogdGhlIG5leHQgcnVuIHJlYWRzIGl0IGFzIGEgZm9yZWlnbiwgdXNlci1tYW5hZ2VkIHNlcnZlciBpdCBtdXN0IG5ldmVyIHRvdWNoXG4gKiAoYGNoZWNrSXNIYXJuZXNzT3duZWRBcHBpdW1TZXJ2ZXJgIG5lZWRzIHRoZSBtYXJrZXIgdG8gY29udmljdCBpdCkuIEtlZXBpbmdcbiAqIHRoZSBtYXJrZXIsIHN0YW1wZWQsIHNheXMgZXhhY3RseSB3aGF0IGlzIHRydWUgXHUyMDE0IHRoaXMgaXMgb3VycywgYW5kIGl0IG91dGxpdmVkXG4gKiBvdXIgdGVhcmRvd24gXHUyMDE0IHdoaWNoIGlzIHdoYXQgbGV0cyB0aGUgbmV4dCBydW4gcmVmdXNlIHRvIGFkb3B0IGl0IGFuZCByZXBsYWNlXG4gKiBpdCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBwb3J0IC0gVGhlIEFwcGl1bSBzZXJ2ZXIgcG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZEFwcGl1bVNlcnZlclN0b3BBdHRlbXB0KHBvcnQ6IG51bWJlcik6IHZvaWQge1xuICBjb25zdCBtYXJrZXIgPSByZWFkQXBwaXVtU2VydmVyTWFya2VyKHBvcnQpO1xuICBpZiAoIW1hcmtlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdyaXRlTWFya2VyKHsgLi4ubWFya2VyLCBzdG9wQXR0ZW1wdGVkQXRJbk1pbGxpc2Vjb25kczogRGF0ZS5ub3coKSB9KTtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIHRoZSBzZXJ2ZXIgdGhpcyBydW4ganVzdCBzdGFydGVkLCBzdGFtcGluZyBpdCB3aXRoIHRoZSBjdXJyZW50IHRpbWUgc29cbiAqIGEgbGF0ZXIgcnVuIGNhbiByZXBvcnQgaG93IGxvbmcgaXQgaGFzIGJlZW4gdXAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzdGFydGVkIHNlcnZlcidzIFBJRCBhbmQgcG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQXBwaXVtU2VydmVyTWFya2VyKHBhcmFtczogV3JpdGVBcHBpdW1TZXJ2ZXJNYXJrZXJQYXJhbXMpOiB2b2lkIHtcbiAgd3JpdGVNYXJrZXIoe1xuICAgIHBpZDogcGFyYW1zLnBpZCxcbiAgICBwb3J0OiBwYXJhbXMucG9ydCxcbiAgICBzdGFydGVkQXRJbk1pbGxpc2Vjb25kczogRGF0ZS5ub3coKVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFya2VyRGlyZWN0b3J5KCk6IHN0cmluZyB7XG4gIHJldHVybiBqb2luKHRtcGRpcigpLCBNQVJLRVJfRElSX05BTUUpO1xufVxuXG5mdW5jdGlvbiBnZXRNYXJrZXJGaWxlUGF0aChwb3J0OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gam9pbihnZXRNYXJrZXJEaXJlY3RvcnkoKSwgYCR7U3RyaW5nKHBvcnQpfSR7TUFSS0VSX0ZJTEVfU1VGRklYfWApO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1hcmtlcihwYXJzZWQ6IHVua25vd24sIHBvcnQ6IG51bWJlcik6IEFwcGl1bVNlcnZlck1hcmtlciB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgcGFyc2VkICE9PSAnb2JqZWN0JyB8fCBwYXJzZWQgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcmVjb3JkID0gcGFyc2VkIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCB7IHBpZCwgcG9ydDogbWFya2VkUG9ydCwgc3RhcnRlZEF0SW5NaWxsaXNlY29uZHMsIHN0b3BBdHRlbXB0ZWRBdEluTWlsbGlzZWNvbmRzIH0gPSByZWNvcmQ7XG5cbiAgcmV0dXJuIHR5cGVvZiBwaWQgIT09ICdudW1iZXInIHx8IHR5cGVvZiBzdGFydGVkQXRJbk1pbGxpc2Vjb25kcyAhPT0gJ251bWJlcicgfHwgbWFya2VkUG9ydCAhPT0gcG9ydFxuICAgID8gdW5kZWZpbmVkXG4gICAgOiB7XG4gICAgICBwaWQsXG4gICAgICBwb3J0LFxuICAgICAgc3RhcnRlZEF0SW5NaWxsaXNlY29uZHMsXG4gICAgICAuLi4odHlwZW9mIHN0b3BBdHRlbXB0ZWRBdEluTWlsbGlzZWNvbmRzID09PSAnbnVtYmVyJyAmJiB7IHN0b3BBdHRlbXB0ZWRBdEluTWlsbGlzZWNvbmRzIH0pXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gd3JpdGVNYXJrZXIobWFya2VyOiBBcHBpdW1TZXJ2ZXJNYXJrZXIpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBta2RpclN5bmMoZ2V0TWFya2VyRGlyZWN0b3J5KCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIHdyaXRlRmlsZVN5bmMoZ2V0TWFya2VyRmlsZVBhdGgobWFya2VyLnBvcnQpLCBKU09OLnN0cmluZ2lmeShtYXJrZXIpKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2coYFthcHBpdW0tc2VydmVyLW1hcmtlcl0gQ291bGQgbm90IHJlY29yZCB0aGUgc2VydmVyIG9uIHBvcnQgJHtTdHJpbmcobWFya2VyLnBvcnQpfTogJHtnZXRFcnJvck1lc3NhZ2UoZXJyb3IpfWApO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFvQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsY0FBYztBQUN2QixTQUFTLFlBQVk7QUFFckIsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsMkJBQTJCO0FBRXBDLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0scUJBQXFCO0FBd0RwQixTQUFTLGdDQUFnQyxRQUFpRDtBQUMvRixTQUFPLFdBQVcsVUFBYSxvQkFBb0IsT0FBTyxHQUFHO0FBQy9EO0FBUU8sU0FBUyx3QkFBd0IsTUFBb0I7QUFDMUQsTUFBSTtBQUNGLFdBQU8sa0JBQWtCLElBQUksR0FBRyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQUEsRUFDakQsU0FBUyxPQUFnQjtBQUN2QixRQUFJLCtEQUErRCxPQUFPLElBQUksQ0FBQyxLQUFLLGdCQUFnQixLQUFLLENBQUMsRUFBRTtBQUFBLEVBQzlHO0FBQ0Y7QUFRTyxTQUFTLHVCQUF1QixNQUE4QztBQUNuRixNQUFJO0FBQ0osTUFBSTtBQUNGLGFBQVMsS0FBSyxNQUFNLGFBQWEsa0JBQWtCLElBQUksR0FBRyxPQUFPLENBQUM7QUFBQSxFQUNwRSxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLFlBQVksUUFBUSxJQUFJO0FBQ2pDO0FBZU8sU0FBUyw4QkFBOEIsTUFBb0I7QUFDaEUsUUFBTSxTQUFTLHVCQUF1QixJQUFJO0FBQzFDLE1BQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxFQUNGO0FBRUEsY0FBWSxFQUFFLEdBQUcsUUFBUSwrQkFBK0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztBQUN0RTtBQVFPLFNBQVMsd0JBQXdCLFFBQTZDO0FBQ25GLGNBQVk7QUFBQSxJQUNWLEtBQUssT0FBTztBQUFBLElBQ1osTUFBTSxPQUFPO0FBQUEsSUFDYix5QkFBeUIsS0FBSyxJQUFJO0FBQUEsRUFDcEMsQ0FBQztBQUNIO0FBRUEsU0FBUyxnQkFBZ0IsT0FBd0I7QUFDL0MsU0FBTyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsT0FBTyxLQUFLO0FBQzlEO0FBRUEsU0FBUyxxQkFBNkI7QUFDcEMsU0FBTyxLQUFLLE9BQU8sR0FBRyxlQUFlO0FBQ3ZDO0FBRUEsU0FBUyxrQkFBa0IsTUFBc0I7QUFDL0MsU0FBTyxLQUFLLG1CQUFtQixHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsRUFBRTtBQUMxRTtBQUVBLFNBQVMsWUFBWSxRQUFpQixNQUE4QztBQUNsRixNQUFJLE9BQU8sV0FBVyxZQUFZLFdBQVcsTUFBTTtBQUNqRCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sU0FBUztBQUNmLFFBQU0sRUFBRSxLQUFLLE1BQU0sWUFBWSx5QkFBeUIsOEJBQThCLElBQUk7QUFFMUYsU0FBTyxPQUFPLFFBQVEsWUFBWSxPQUFPLDRCQUE0QixZQUFZLGVBQWUsT0FDNUYsU0FDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBSSxPQUFPLGtDQUFrQyxZQUFZLEVBQUUsOEJBQThCO0FBQUEsRUFDM0Y7QUFDSjtBQUVBLFNBQVMsWUFBWSxRQUFrQztBQUNyRCxNQUFJO0FBQ0YsY0FBVSxtQkFBbUIsR0FBRyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQ25ELGtCQUFjLGtCQUFrQixPQUFPLElBQUksR0FBRyxLQUFLLFVBQVUsTUFBTSxDQUFDO0FBQUEsRUFDdEUsU0FBUyxPQUFnQjtBQUN2QixRQUFJLDhEQUE4RCxPQUFPLE9BQU8sSUFBSSxDQUFDLEtBQUssZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO0FBQUEsRUFDcEg7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -8,10 +8,7 @@ function resolveAsarFallback(params) {
8
8
  tier: "unknown"
9
9
  };
10
10
  }
11
- if (compareVersions(runningApiVersion, requestedVersion) === 0) {
12
- return { requestedVersion, runningApiVersion, tier: "match" };
13
- }
14
- return {
11
+ return compareVersions(runningApiVersion, requestedVersion) === 0 ? { requestedVersion, runningApiVersion, tier: "match" } : {
15
12
  message: `Obsidian was pinned to app version ${requestedVersion} but is actually running ${runningApiVersion} \u2014 the installer silently fell back to its own bundled asar instead of running the pinned version. Pin an obsidianInstallerVersion at or above ${requestedVersion}'s run floor so the pin actually runs.`,
16
13
  requestedVersion,
17
14
  runningApiVersion,
@@ -21,4 +18,4 @@ function resolveAsarFallback(params) {
21
18
  export {
22
19
  resolveAsarFallback
23
20
  };
24
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzYXItZmFsbGJhY2stZGV0ZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSB2ZXJkaWN0IG9uIHdoZXRoZXIgYSBib290ZWQgb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZ1xuICogdGhlIHBpbm5lZCBhcHAgKGFzYXIpIHZlcnNpb24sIG9yICoqc2lsZW50bHkgZmVsbCBiYWNrKiogdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyLiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGBcbiAqICh3aGljaCByZWFkcyB0aGUgbGl2ZSB2ZXJzaW9uIG92ZXIgQ0RQIGFuZCBpcyBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZVxuICogdGllciBsb2dpYyBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGBpbnN0YWxsZXItY29tcGF0aWJpbGl0eWAgL1xuICogYGVsZWN0cm9uLWNvbXBhdGliaWxpdHlgIC8gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYCBzcGxpdC5cbiAqXG4gKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCBiZWxvdyBpdHMgcmVhbCBib290IGZsb29yLCB0aGVcbiAqIHJlbmRlcmVyIGRvZXMgbm90IGFsd2F5cyBkZWFkLWJvb3QgKHRoZSBibGFjayBzY3JlZW4gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYFxuICogY2F0Y2hlcykuIFNvbWUgYXBwIHZlcnNpb25zIGluc3RlYWQgKipzaWxlbnRseSByZXZlcnQgdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyKiogYW5kIHJlbmRlciBhIHBlcmZlY3RseSBoZWFsdGh5IFVJIG9mIHRoZSAqd3JvbmcgKG9sZGVyKSogdmVyc2lvbi5cbiAqIFRoZSBkZWFkLWJvb3QgZGV0ZWN0b3IgcmVhZHMgdGhhdCBoZWFsdGh5IFVJIGFzIGEgZmFsc2UtcG9zaXRpdmUgXCJydW5uYWJsZVwiIFx1MjAxNFxuICogZXhhY3RseSBob3cgT2JzaWRpYW4gYDEuMTMuMGAgb24gaW5zdGFsbGVyIGAxLjEuOWAgd2FzIGZpcnN0IG1pcy1tZWFzdXJlZCAoaXRcbiAqIHJlcG9ydHMgYGFwaVZlcnNpb25gIGAxLjEuOWAsIG5vdCBgMS4xMy4wYCkuXG4gKlxuICogVGhlIGRpc2NyaW1pbmF0b3IgaXMgdGhlICoqcnVubmluZyoqIGFwcCB2ZXJzaW9uLCByZWFkIGxpdmUgcG9zdC1ib290XG4gKiAoYGlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2ZXJzaW9uJylgIC8gYG9ic2lkaWFuTW9kdWxlLmFwaVZlcnNpb25gLCB3aGljaCBib3RoXG4gKiB0cmFjayB0aGUgYXNhciBhY3R1YWxseSBydW5uaW5nKS4gVGhpcyB2ZXJkaWN0IGNvbXBhcmVzIGl0IHRvIHRoZSBwaW5uZWRcbiAqIHZlcnNpb246IGVxdWFsIFx1MjFEMiBgJ21hdGNoJ2AsIGRpZmZlcmVudCBcdTIxRDIgYCdmYWxsYmFjaydgICh0aGUgcGluIHdhcyBub3QgaG9ub3JlZCksXG4gKiBhbmQgYCd1bmtub3duJ2Agd2hlbiBlaXRoZXIgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSAobm8gYXNhciB3YXMgc3dhcHBlZCwgb3IgdGhlXG4gKiBsaXZlIHZlcnNpb24gY291bGQgbm90IGJlIHJlYWQpIFx1MjAxNCBpbiB3aGljaCBjYXNlIG5vdGhpbmcgaXMgdGhyb3duIG9yIHdhcm5lZC5cbiAqL1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24ubWpzJztcblxuLyoqXG4gKiBUaGUgc2lsZW50LWFzYXItZmFsbGJhY2sgdmVyZGljdCBmb3IgYSBib290ZWQgb3duZWQgaW5zdGFuY2UsIGNhcnJpZWQgYXMgZGF0YVxuICogb24gdGhlIHRyYW5zcG9ydCAvIGNvbm5lY3Rpb24gcmVzdWx0IHNvIGNvbnN1bWVycyBjYW4gYXNzZXJ0IG9uIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzYXJGYWxsYmFjayB7XG4gIC8qKlxuICBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uLCBwcmVzZW50IGZvciB0aGUgYCdmYWxsYmFjaydgIHRpZXIuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcGlubmVkIGFwcCAoYXNhcikgdmVyc2lvbiB0aGF0IHdhcyByZXF1ZXN0ZWQsIG9yIGBudWxsYCB3aGVuIG5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0ZWRWZXJzaW9uOiBudWxsIHwgc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgYXBwIChhc2FyKSB2ZXJzaW9uIGFjdHVhbGx5IHJ1bm5pbmcsIG9yIGBudWxsYCB3aGVuIHVucmVhZGFibGUuXG4gICAqL1xuICByZWFkb25seSBydW5uaW5nQXBpVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKipcbiAgVGhlIHJlc29sdmVkIGZhbGxiYWNrIHRpZXIuXG4gICAqL1xuICByZWFkb25seSB0aWVyOiBBc2FyRmFsbGJhY2tUaWVyO1xufVxuXG4vKipcbiAqIFRoZSBzaWxlbnQtYXNhci1mYWxsYmFjayB0aWVyIGZvciBhIGJvb3RlZCBvd25lZCBpbnN0YW5jZS5cbiAqXG4gKiAtIGAnbWF0Y2gnYCBcdTIwMTQgdGhlIHJ1bm5pbmcgYXBwIHZlcnNpb24gZXF1YWxzIHRoZSBwaW5uZWQgdmVyc2lvbjsgdGhlIHBpbiB3YXNcbiAqICAgaG9ub3JlZC5cbiAqIC0gYCdmYWxsYmFjaydgIFx1MjAxNCB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBkaWZmZXJzIGZyb20gdGhlIHBpbm5lZCB2ZXJzaW9uOyB0aGVcbiAqICAgaW5zdGFsbGVyIHNpbGVudGx5IHJhbiBhIGRpZmZlcmVudCAoaXRzIG93biBidW5kbGVkKSBhc2FyIGluc3RlYWQgb2YgdGhlIHBpbi5cbiAqIC0gYCd1bmtub3duJ2AgXHUyMDE0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIChubyBhc2FyIHdhcyBzd2FwcGVkLCBzbyB0aGVyZSBpcyBubyBwaW4gdG9cbiAqICAgdmVyaWZ5LCBvciB0aGUgbGl2ZSBydW5uaW5nIHZlcnNpb24gY291bGQgbm90IGJlIHJlYWQpLlxuICovXG5leHBvcnQgdHlwZSBBc2FyRmFsbGJhY2tUaWVyID0gJ2ZhbGxiYWNrJyB8ICdtYXRjaCcgfCAndW5rbm93bic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVBc2FyRmFsbGJhY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBpbm5lZCBPYnNpZGlhbiBhcHAgKGFzYXIpIHZlcnNpb24gdGhlIG93bmVkIGluc3RhbmNlIHdhcyBhc2tlZCB0byBydW4sXG4gICAqIG9yIGB1bmRlZmluZWRgIHdoZW4gbm8gYXNhciB3YXMgc3dhcHBlZCAoc28gdGhlcmUgaXMgbm90aGluZyB0byB2ZXJpZnkpLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdGVkVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIChhc2FyKSB2ZXJzaW9uIHRoZSBpbnN0YW5jZSBpcyBhY3R1YWxseSBydW5uaW5nLCByZWFkIGxpdmVcbiAgICogcG9zdC1ib290LCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IGNvdWxkIG5vdCBiZSByZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmluZ0FwaVZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgc2lsZW50LWFzYXItZmFsbGJhY2sgdmVyZGljdCBmb3IgYSBib290ZWQgb3duZWQgaW5zdGFuY2UuXG4gKlxuICogT25seSBgJ2ZhbGxiYWNrJ2Agd2FycmFudHMgYWN0aW9uIChhIHRocm93IC8gd2FybmluZyk7IGAnbWF0Y2gnYCBhbmQgYCd1bmtub3duJ2BcbiAqIGFyZSBzaWxlbnQuIENvbXBhcmlzb24gaXMgYSBwdXJlIGB4LnkuemAgdmVyc2lvbiBjb21wYXJlIFx1MjAxNCBubyBJL08uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwaW5uZWQgdmVyc2lvbiBhbmQgdGhlIGxpdmUgcnVubmluZyB2ZXJzaW9uLlxuICogQHJldHVybnMgVGhlIGZhbGxiYWNrIHZlcmRpY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXNhckZhbGxiYWNrKHBhcmFtczogUmVzb2x2ZUFzYXJGYWxsYmFja1BhcmFtcyk6IEFzYXJGYWxsYmFjayB7XG4gIGNvbnN0IHsgcmVxdWVzdGVkVmVyc2lvbiwgcnVubmluZ0FwaVZlcnNpb24gfSA9IHBhcmFtcztcblxuICBpZiAocmVxdWVzdGVkVmVyc2lvbiA9PT0gdW5kZWZpbmVkIHx8IHJ1bm5pbmdBcGlWZXJzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWVzdGVkVmVyc2lvbjogcmVxdWVzdGVkVmVyc2lvbiA/PyBudWxsLFxuICAgICAgcnVubmluZ0FwaVZlcnNpb246IHJ1bm5pbmdBcGlWZXJzaW9uID8/IG51bGwsXG4gICAgICB0aWVyOiAndW5rbm93bidcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNvbXBhcmVWZXJzaW9ucyhydW5uaW5nQXBpVmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbikgPT09IDApIHtcbiAgICByZXR1cm4geyByZXF1ZXN0ZWRWZXJzaW9uLCBydW5uaW5nQXBpVmVyc2lvbiwgdGllcjogJ21hdGNoJyB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBgT2JzaWRpYW4gd2FzIHBpbm5lZCB0byBhcHAgdmVyc2lvbiAke3JlcXVlc3RlZFZlcnNpb259IGJ1dCBpcyBhY3R1YWxseSBydW5uaW5nICR7cnVubmluZ0FwaVZlcnNpb259IFx1MjAxNCBgXG4gICAgICArICd0aGUgaW5zdGFsbGVyIHNpbGVudGx5IGZlbGwgYmFjayB0byBpdHMgb3duIGJ1bmRsZWQgYXNhciBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlIHBpbm5lZCB2ZXJzaW9uLiAnXG4gICAgICArIGBQaW4gYW4gb2JzaWRpYW5JbnN0YWxsZXJWZXJzaW9uIGF0IG9yIGFib3ZlICR7cmVxdWVzdGVkVmVyc2lvbn0ncyBydW4gZmxvb3Igc28gdGhlIHBpbiBhY3R1YWxseSBydW5zLmAsXG4gICAgcmVxdWVzdGVkVmVyc2lvbixcbiAgICBydW5uaW5nQXBpVmVyc2lvbixcbiAgICB0aWVyOiAnZmFsbGJhY2snXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUEwQkEsU0FBUyx1QkFBdUI7QUFrRXpCLFNBQVMsb0JBQW9CLFFBQWlEO0FBQ25GLFFBQU0sRUFBRSxrQkFBa0Isa0JBQWtCLElBQUk7QUFFaEQsTUFBSSxxQkFBcUIsVUFBYSxzQkFBc0IsUUFBVztBQUNyRSxXQUFPO0FBQUEsTUFDTCxrQkFBa0Isb0JBQW9CO0FBQUEsTUFDdEMsbUJBQW1CLHFCQUFxQjtBQUFBLE1BQ3hDLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUVBLE1BQUksZ0JBQWdCLG1CQUFtQixnQkFBZ0IsTUFBTSxHQUFHO0FBQzlELFdBQU8sRUFBRSxrQkFBa0IsbUJBQW1CLE1BQU0sUUFBUTtBQUFBLEVBQzlEO0FBRUEsU0FBTztBQUFBLElBQ0wsU0FBUyxzQ0FBc0MsZ0JBQWdCLDRCQUE0QixpQkFBaUIsdUpBRXpELGdCQUFnQjtBQUFBLElBQ25FO0FBQUEsSUFDQTtBQUFBLElBQ0EsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
21
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzYXItZmFsbGJhY2stZGV0ZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSB2ZXJkaWN0IG9uIHdoZXRoZXIgYSBib290ZWQgb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZ1xuICogdGhlIHBpbm5lZCBhcHAgKGFzYXIpIHZlcnNpb24sIG9yICoqc2lsZW50bHkgZmVsbCBiYWNrKiogdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyLiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGBcbiAqICh3aGljaCByZWFkcyB0aGUgbGl2ZSB2ZXJzaW9uIG92ZXIgQ0RQIGFuZCBpcyBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZVxuICogdGllciBsb2dpYyBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGBpbnN0YWxsZXItY29tcGF0aWJpbGl0eWAgL1xuICogYGVsZWN0cm9uLWNvbXBhdGliaWxpdHlgIC8gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYCBzcGxpdC5cbiAqXG4gKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCBiZWxvdyBpdHMgcmVhbCBib290IGZsb29yLCB0aGVcbiAqIHJlbmRlcmVyIGRvZXMgbm90IGFsd2F5cyBkZWFkLWJvb3QgKHRoZSBibGFjayBzY3JlZW4gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYFxuICogY2F0Y2hlcykuIFNvbWUgYXBwIHZlcnNpb25zIGluc3RlYWQgKipzaWxlbnRseSByZXZlcnQgdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyKiogYW5kIHJlbmRlciBhIHBlcmZlY3RseSBoZWFsdGh5IFVJIG9mIHRoZSAqd3JvbmcgKG9sZGVyKSogdmVyc2lvbi5cbiAqIFRoZSBkZWFkLWJvb3QgZGV0ZWN0b3IgcmVhZHMgdGhhdCBoZWFsdGh5IFVJIGFzIGEgZmFsc2UtcG9zaXRpdmUgXCJydW5uYWJsZVwiIFx1MjAxNFxuICogZXhhY3RseSBob3cgT2JzaWRpYW4gYDEuMTMuMGAgb24gaW5zdGFsbGVyIGAxLjEuOWAgd2FzIGZpcnN0IG1pcy1tZWFzdXJlZCAoaXRcbiAqIHJlcG9ydHMgYGFwaVZlcnNpb25gIGAxLjEuOWAsIG5vdCBgMS4xMy4wYCkuXG4gKlxuICogVGhlIGRpc2NyaW1pbmF0b3IgaXMgdGhlICoqcnVubmluZyoqIGFwcCB2ZXJzaW9uLCByZWFkIGxpdmUgcG9zdC1ib290XG4gKiAoYGlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2ZXJzaW9uJylgIC8gYG9ic2lkaWFuTW9kdWxlLmFwaVZlcnNpb25gLCB3aGljaCBib3RoXG4gKiB0cmFjayB0aGUgYXNhciBhY3R1YWxseSBydW5uaW5nKS4gVGhpcyB2ZXJkaWN0IGNvbXBhcmVzIGl0IHRvIHRoZSBwaW5uZWRcbiAqIHZlcnNpb246IGVxdWFsIFx1MjFEMiBgJ21hdGNoJ2AsIGRpZmZlcmVudCBcdTIxRDIgYCdmYWxsYmFjaydgICh0aGUgcGluIHdhcyBub3QgaG9ub3JlZCksXG4gKiBhbmQgYCd1bmtub3duJ2Agd2hlbiBlaXRoZXIgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSAobm8gYXNhciB3YXMgc3dhcHBlZCwgb3IgdGhlXG4gKiBsaXZlIHZlcnNpb24gY291bGQgbm90IGJlIHJlYWQpIFx1MjAxNCBpbiB3aGljaCBjYXNlIG5vdGhpbmcgaXMgdGhyb3duIG9yIHdhcm5lZC5cbiAqL1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24ubWpzJztcblxuLyoqXG4gKiBUaGUgc2lsZW50LWFzYXItZmFsbGJhY2sgdmVyZGljdCBmb3IgYSBib290ZWQgb3duZWQgaW5zdGFuY2UsIGNhcnJpZWQgYXMgZGF0YVxuICogb24gdGhlIHRyYW5zcG9ydCAvIGNvbm5lY3Rpb24gcmVzdWx0IHNvIGNvbnN1bWVycyBjYW4gYXNzZXJ0IG9uIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzYXJGYWxsYmFjayB7XG4gIC8qKlxuICBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uLCBwcmVzZW50IGZvciB0aGUgYCdmYWxsYmFjaydgIHRpZXIuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgcGlubmVkIGFwcCAoYXNhcikgdmVyc2lvbiB0aGF0IHdhcyByZXF1ZXN0ZWQsIG9yIGBudWxsYCB3aGVuIG5vbmUuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0ZWRWZXJzaW9uOiBudWxsIHwgc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgYXBwIChhc2FyKSB2ZXJzaW9uIGFjdHVhbGx5IHJ1bm5pbmcsIG9yIGBudWxsYCB3aGVuIHVucmVhZGFibGUuXG4gICAqL1xuICByZWFkb25seSBydW5uaW5nQXBpVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKipcbiAgVGhlIHJlc29sdmVkIGZhbGxiYWNrIHRpZXIuXG4gICAqL1xuICByZWFkb25seSB0aWVyOiBBc2FyRmFsbGJhY2tUaWVyO1xufVxuXG4vKipcbiAqIFRoZSBzaWxlbnQtYXNhci1mYWxsYmFjayB0aWVyIGZvciBhIGJvb3RlZCBvd25lZCBpbnN0YW5jZS5cbiAqXG4gKiAtIGAnbWF0Y2gnYCBcdTIwMTQgdGhlIHJ1bm5pbmcgYXBwIHZlcnNpb24gZXF1YWxzIHRoZSBwaW5uZWQgdmVyc2lvbjsgdGhlIHBpbiB3YXNcbiAqICAgaG9ub3JlZC5cbiAqIC0gYCdmYWxsYmFjaydgIFx1MjAxNCB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBkaWZmZXJzIGZyb20gdGhlIHBpbm5lZCB2ZXJzaW9uOyB0aGVcbiAqICAgaW5zdGFsbGVyIHNpbGVudGx5IHJhbiBhIGRpZmZlcmVudCAoaXRzIG93biBidW5kbGVkKSBhc2FyIGluc3RlYWQgb2YgdGhlIHBpbi5cbiAqIC0gYCd1bmtub3duJ2AgXHUyMDE0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIChubyBhc2FyIHdhcyBzd2FwcGVkLCBzbyB0aGVyZSBpcyBubyBwaW4gdG9cbiAqICAgdmVyaWZ5LCBvciB0aGUgbGl2ZSBydW5uaW5nIHZlcnNpb24gY291bGQgbm90IGJlIHJlYWQpLlxuICovXG5leHBvcnQgdHlwZSBBc2FyRmFsbGJhY2tUaWVyID0gJ2ZhbGxiYWNrJyB8ICdtYXRjaCcgfCAndW5rbm93bic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVBc2FyRmFsbGJhY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBpbm5lZCBPYnNpZGlhbiBhcHAgKGFzYXIpIHZlcnNpb24gdGhlIG93bmVkIGluc3RhbmNlIHdhcyBhc2tlZCB0byBydW4sXG4gICAqIG9yIGB1bmRlZmluZWRgIHdoZW4gbm8gYXNhciB3YXMgc3dhcHBlZCAoc28gdGhlcmUgaXMgbm90aGluZyB0byB2ZXJpZnkpLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdGVkVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIChhc2FyKSB2ZXJzaW9uIHRoZSBpbnN0YW5jZSBpcyBhY3R1YWxseSBydW5uaW5nLCByZWFkIGxpdmVcbiAgICogcG9zdC1ib290LCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IGNvdWxkIG5vdCBiZSByZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmluZ0FwaVZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgc2lsZW50LWFzYXItZmFsbGJhY2sgdmVyZGljdCBmb3IgYSBib290ZWQgb3duZWQgaW5zdGFuY2UuXG4gKlxuICogT25seSBgJ2ZhbGxiYWNrJ2Agd2FycmFudHMgYWN0aW9uIChhIHRocm93IC8gd2FybmluZyk7IGAnbWF0Y2gnYCBhbmQgYCd1bmtub3duJ2BcbiAqIGFyZSBzaWxlbnQuIENvbXBhcmlzb24gaXMgYSBwdXJlIGB4LnkuemAgdmVyc2lvbiBjb21wYXJlIFx1MjAxNCBubyBJL08uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwaW5uZWQgdmVyc2lvbiBhbmQgdGhlIGxpdmUgcnVubmluZyB2ZXJzaW9uLlxuICogQHJldHVybnMgVGhlIGZhbGxiYWNrIHZlcmRpY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXNhckZhbGxiYWNrKHBhcmFtczogUmVzb2x2ZUFzYXJGYWxsYmFja1BhcmFtcyk6IEFzYXJGYWxsYmFjayB7XG4gIGNvbnN0IHsgcmVxdWVzdGVkVmVyc2lvbiwgcnVubmluZ0FwaVZlcnNpb24gfSA9IHBhcmFtcztcblxuICBpZiAocmVxdWVzdGVkVmVyc2lvbiA9PT0gdW5kZWZpbmVkIHx8IHJ1bm5pbmdBcGlWZXJzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWVzdGVkVmVyc2lvbjogcmVxdWVzdGVkVmVyc2lvbiA/PyBudWxsLFxuICAgICAgcnVubmluZ0FwaVZlcnNpb246IHJ1bm5pbmdBcGlWZXJzaW9uID8/IG51bGwsXG4gICAgICB0aWVyOiAndW5rbm93bidcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGNvbXBhcmVWZXJzaW9ucyhydW5uaW5nQXBpVmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbikgPT09IDBcbiAgICA/IHsgcmVxdWVzdGVkVmVyc2lvbiwgcnVubmluZ0FwaVZlcnNpb24sIHRpZXI6ICdtYXRjaCcgfVxuICAgIDoge1xuICAgICAgbWVzc2FnZTogYE9ic2lkaWFuIHdhcyBwaW5uZWQgdG8gYXBwIHZlcnNpb24gJHtyZXF1ZXN0ZWRWZXJzaW9ufSBidXQgaXMgYWN0dWFsbHkgcnVubmluZyAke3J1bm5pbmdBcGlWZXJzaW9ufSBcdTIwMTQgYFxuICAgICAgICArICd0aGUgaW5zdGFsbGVyIHNpbGVudGx5IGZlbGwgYmFjayB0byBpdHMgb3duIGJ1bmRsZWQgYXNhciBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlIHBpbm5lZCB2ZXJzaW9uLiAnXG4gICAgICAgICsgYFBpbiBhbiBvYnNpZGlhbkluc3RhbGxlclZlcnNpb24gYXQgb3IgYWJvdmUgJHtyZXF1ZXN0ZWRWZXJzaW9ufSdzIHJ1biBmbG9vciBzbyB0aGUgcGluIGFjdHVhbGx5IHJ1bnMuYCxcbiAgICAgIHJlcXVlc3RlZFZlcnNpb24sXG4gICAgICBydW5uaW5nQXBpVmVyc2lvbixcbiAgICAgIHRpZXI6ICdmYWxsYmFjaydcbiAgICB9O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBMEJBLFNBQVMsdUJBQXVCO0FBa0V6QixTQUFTLG9CQUFvQixRQUFpRDtBQUNuRixRQUFNLEVBQUUsa0JBQWtCLGtCQUFrQixJQUFJO0FBRWhELE1BQUkscUJBQXFCLFVBQWEsc0JBQXNCLFFBQVc7QUFDckUsV0FBTztBQUFBLE1BQ0wsa0JBQWtCLG9CQUFvQjtBQUFBLE1BQ3RDLG1CQUFtQixxQkFBcUI7QUFBQSxNQUN4QyxNQUFNO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLGdCQUFnQixtQkFBbUIsZ0JBQWdCLE1BQU0sSUFDNUQsRUFBRSxrQkFBa0IsbUJBQW1CLE1BQU0sUUFBUSxJQUNyRDtBQUFBLElBQ0EsU0FBUyxzQ0FBc0MsZ0JBQWdCLDRCQUE0QixpQkFBaUIsdUpBRXpELGdCQUFnQjtBQUFBLElBQ25FO0FBQUEsSUFDQTtBQUFBLElBQ0EsTUFBTTtBQUFBLEVBQ1I7QUFDSjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,10 +1,7 @@
1
1
  import { assertNever } from "./type-guards.mjs";
2
2
  const EMULATOR_DEVICE_ID_PATTERN = /^emulator-\d+$/;
3
3
  function buildAvdProbeSummary(results) {
4
- if (results.length === 0) {
5
- return "no devices";
6
- }
7
- return results.map((result) => `${result.deviceId}=${result.outcome}`).join(", ");
4
+ return results.length === 0 ? "no devices" : results.map((result) => `${result.deviceId}=${result.outcome}`).join(", ");
8
5
  }
9
6
  function buildUnreadableDevicesMessage(params) {
10
7
  const deviceList = params.unreadableDeviceIds.join(", ");
@@ -47,10 +44,7 @@ function resolveAvdProbeVerdict(results) {
47
44
  }
48
45
  }
49
46
  }
50
- if (unreadableDeviceIds.length > 0) {
51
- return { unreadableDeviceIds, verdict: "refuse" };
52
- }
53
- return { verdict: "start-new" };
47
+ return unreadableDeviceIds.length > 0 ? { unreadableDeviceIds, verdict: "refuse" } : { verdict: "start-new" };
54
48
  }
55
49
  export {
56
50
  buildAvdProbeSummary,
@@ -59,4 +53,4 @@ export {
59
53
  classifyAvdProbe,
60
54
  resolveAvdProbeVerdict
61
55
  };
62
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F2ZC1wcm9iZS12ZXJkaWN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBjbGFzc2lmaWNhdGlvbiBvZiB0aGUgQVZEIGFkb3B0aW9uIHByb2JlIFx1MjAxNCBkZWNpZGluZywgZnJvbSB3aGF0IGVhY2hcbiAqIGNvbm5lY3RlZCBkZXZpY2UgYW5zd2VyZWQsIHdoZXRoZXIgdGhpcyBydW4gbWF5IHJldXNlIG9uZSwgbXVzdCBzdGFydCBpdHNcbiAqIG93biBlbXVsYXRvciwgb3IgY2Fubm90IHNhZmVseSBkbyBlaXRoZXIuXG4gKlxuICogVGhlIHByb2JlIChgYWRiIC1zIDxkZXZpY2U+IGVtdSBhdmQgbmFtZWApIHVzZWQgdG8gZGlzY2FyZCBpdHMgZXJyb3IgYW5kXG4gKiByZXNvbHZlIGAnJ2AsIHNvIGEgY2FsbCB0aGF0ICoqbmV2ZXIgYW5zd2VyZWQqKiB3YXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBvbmVcbiAqIHRoYXQgYW5zd2VyZWQgKlwiYSBkaWZmZXJlbnQgQVZEXCIqLiBCb3RoIGZlbGwgdGhyb3VnaCB0byBcInN0YXJ0IGEgbmV3XG4gKiBlbXVsYXRvclwiLCB3aGljaCBjb2xsaWRlcyB3aXRoIHRoZSBlbXVsYXRvciBhbHJlYWR5IHNlcnZpbmcgdGhhdCBBVkQ6XG4gKlxuICogYGBgdGV4dFxuICogMTQ6Mjc6NTIuMTE0ICBDaGVja2luZyBleGlzdGluZyBkZXZpY2VzIGZvciBBVkQgXCJvYnNpZGlhbl90ZXN0XCIuLi4gKGNvbm5lY3RlZDogW2VtdWxhdG9yLTU1NTRdKVxuICogMTQ6Mjc6NTcuMTcwICBBVkQgXCJvYnNpZGlhbl90ZXN0XCIgbm90IGZvdW5kIG9uIGFueSBleGlzdGluZyBkZXZpY2UsIHN0YXJ0aW5nIGEgbmV3IGVtdWxhdG9yLi4uXG4gKiBgYGBcbiAqXG4gKiA1LjA1NnMgYXBhcnQgXHUyMDE0IGV4YWN0bHkgdGhlIHByb2JlJ3Mgb3duIHRpbWVvdXQuIFRoZSBsYXVuY2ggdGhhdCBmb2xsb3dlZCBoaXRcbiAqIGBGQVRBTCB8IFJ1bm5pbmcgbXVsdGlwbGUgZW11bGF0b3JzIHdpdGggdGhlIHNhbWUgQVZEIGlzIGFuIGV4cGVyaW1lbnRhbFxuICogZmVhdHVyZWAsIHdoaWNoIHRoZSBlbXVsYXRvciB3cml0ZXMgdG8gaXRzIG93biBzdGRvdXQuICoqQSBwcm9iZSB0aGF0IG5ldmVyXG4gKiBhbnN3ZXJlZCBpcyBub3QgZXZpZGVuY2UgdGhhdCB0aGUgYW5zd2VyIGlzIG5vKiogXHUyMDE0IHRoZSBzYW1lIGRpc3RpbmN0aW9uXG4gKiBgYWRiLWRldmljZS1saXN0LnRzYCBkcmF3cyBiZXR3ZWVuIGBvZmZsaW5lYCBhbmQgYWJzZW50LCBhbmQgdGhlIHNhbWUgb25lXG4gKiB0aGUgY29ubmVjdGl2aXR5IHByb2JlIGRyYXdzIGJldHdlZW4gYSBmYWlsZWQgZHVtcCBhbmQgYSBtaXNzaW5nIG5ldHdvcmsuXG4gKlxuICogV29yc2UsIHRoZSBwcm9iZSBpcyBhc2tlZCBpdHMgcXVlc3Rpb24gcHJlY2lzZWx5IHdoZW4gdGhlIGd1ZXN0IGlzIGxlYXN0IGFibGVcbiAqIHRvIGFuc3dlciBpdCBcdTIwMTQgYSB3ZWRnZWQgZW11bGF0b3IgdGltZXMgb3V0IGV2ZXJ5IGBhZGJgIGNhbGwgXHUyMDE0IHdoaWNoIGlzIHRoZVxuICogY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgY29sbGlkaW5nIGxhdW5jaCBkb2VzIHRoZSBtb3N0IGRhbWFnZS5cbiAqXG4gKiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCAoZXhjbHVkZWQgZnJvbVxuICogdW5pdCB0ZXN0cykgc28gdGhlIGNsYXNzaWZpY2F0aW9uIHN0YXlzIHVuaXQtdGVzdGFibGUgXHUyMDE0IHRoZSBmYWN0b3J5IGl0c2VsZlxuICogc2hlbGxzIG91dCB0byBgYWRiYC5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJy4vdHlwZS1ndWFyZHMubWpzJztcblxuLyoqXG4gKiBXaGF0IG9uZSBkZXZpY2UgYW5zd2VyZWQgd2hlbiBhc2tlZCB3aGljaCBBVkQgaXQgaXMgc2VydmluZy5cbiAqXG4gKiBgbm90LWFuLWVtdWxhdG9yYCBhbmQgYG90aGVyLWF2ZGAgYXJlIGJvdGggbGVnaXRpbWF0ZSBza2lwczsgb25seVxuICogYG5vLWFuc3dlcmAgaXMgdGhlIHNpbGVuY2UgdGhhdCBtdXN0IG5ldmVyIGJlIHJlYWQgYXMgb25lLlxuICovXG5leHBvcnQgdHlwZSBBdmRQcm9iZU91dGNvbWUgPSAnbWF0Y2gnIHwgJ25vLWFuc3dlcicgfCAnbm90LWFuLWVtdWxhdG9yJyB8ICdvdGhlci1hdmQnO1xuXG4vKipcbiAqIFRoZSBydW4gY2Fubm90IHRlbGwgd2hldGhlciB0aGUgQVZEIGlzIGFscmVhZHkgcnVubmluZywgc28gaXQgbXVzdCBub3QgbGF1bmNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2ZFByb2JlUmVmdXNlVmVyZGljdCB7XG4gIC8qKlxuICBUaGUgZGV2aWNlcyB0aGF0IGNvdWxkIG5vdCBiZSByZWFkLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBydWxlZCBvdXQgYXMgdGhlIEFWRCdzIGhvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IHVucmVhZGFibGVEZXZpY2VJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBEaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSB2ZXJkaWN0OiAncmVmdXNlJztcbn1cblxuLyoqXG4gKiBPbmUgZGV2aWNlJ3MgcHJvYmUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmRQcm9iZVJlc3VsdCB7XG4gIC8qKlxuICBUaGUgZGV2aWNlIFVESUQsIGUuZy4gYGVtdWxhdG9yLTU1NTRgLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgV2hhdCB0aGUgZGV2aWNlIGFuc3dlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0Y29tZTogQXZkUHJvYmVPdXRjb21lO1xufVxuXG4vKipcbiAqIFRoZSBBVkQgaXMgYWxyZWFkeSBydW5uaW5nLCBvbiBhIGRldmljZSB0aGlzIHJ1biBtYXkgYWRvcHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXZkUHJvYmVSZXVzZVZlcmRpY3Qge1xuICAvKipcbiAgVGhlIGRldmljZSBhbHJlYWR5IHNlcnZpbmcgdGhlIHJlcXVlc3RlZCBBVkQuXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICBEaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSB2ZXJkaWN0OiAncmV1c2UnO1xufVxuXG4vKipcbiAqIEV2ZXJ5IGRldmljZSBhbnN3ZXJlZCwgbm9uZSBpcyBzZXJ2aW5nIHRoZSBBVkQsIHNvIGxhdW5jaGluZyBjYW5ub3QgY29sbGlkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmRQcm9iZVN0YXJ0TmV3VmVyZGljdCB7XG4gIC8qKlxuICBEaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSB2ZXJkaWN0OiAnc3RhcnQtbmV3Jztcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSBydW4gbWF5IGRvLCBnaXZlbiBldmVyeSBkZXZpY2UncyBwcm9iZSBvdXRjb21lLlxuICovXG5leHBvcnQgdHlwZSBBdmRQcm9iZVZlcmRpY3QgPSBBdmRQcm9iZVJlZnVzZVZlcmRpY3QgfCBBdmRQcm9iZVJldXNlVmVyZGljdCB8IEF2ZFByb2JlU3RhcnROZXdWZXJkaWN0O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBidWlsZFVucmVhZGFibGVEZXZpY2VzTWVzc2FnZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRVbnJlYWRhYmxlRGV2aWNlc01lc3NhZ2VQYXJhbXMge1xuICAvKipcbiAgVGhlIEFWRCB0aGUgcnVuIHdhbnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIGJ1ZGdldCBlYWNoIHByb2JlIGF0dGVtcHQgd2FzIGdpdmVuLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSBwcm9iZVRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgZGV2aWNlcyB0aGF0IGRpZCBub3QgYW5zd2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgdW5yZWFkYWJsZURldmljZUlkczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNsYXNzaWZ5QXZkUHJvYmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzaWZ5QXZkUHJvYmVQYXJhbXMge1xuICAvKipcbiAgVGhlIEFWRCB0aGUgcnVuIHdhbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgZGV2aWNlIHRoYXQgd2FzIHByb2JlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBBVkQgbmFtZSB0aGUgZGV2aWNlIGFuc3dlcmVkLCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IGRpZCBub3QgYW5zd2VyIGF0IGFsbC5cbiAgICovXG4gIHJlYWRvbmx5IHByb2JlZEF2ZE5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTWF0Y2hlcyB0aGUgZGV2aWNlIElEcyBhZGIgZ2l2ZXMgZW11bGF0b3JzIHN0YXJ0ZWQgdGhlIHdheSB0aGlzIGhhcm5lc3NcbiAqIHN0YXJ0cyB0aGVtOiBgZW11bGF0b3IgLWF2ZCA8bmFtZT5gLCB3aG9zZSBjb25zb2xlIGxhbmRzIG9uIGEgbG9jYWwgcG9ydC5cbiAqXG4gKiBPbmx5IHN1Y2ggYSBkZXZpY2UgY2FuIGNvbGxpZGUgd2l0aCB0aGlzIHJ1bidzIGxhdW5jaCwgc28gb25seSBzdWNoIGEgZGV2aWNlJ3NcbiAqIHNpbGVuY2UgaXMgd29ydGggcmVmdXNpbmcgb3Zlci4gQSBwaHlzaWNhbCBoYW5kc2V0IChhbiBhcmJpdHJhcnkgc2VyaWFsKSBvciBhXG4gKiBUQ1AtYXR0YWNoZWQgZGV2aWNlIGFuc3dlcnMgYGFkYiBcdTIwMjYgZW11IGF2ZCBuYW1lYCB3aXRoIGFuIGVycm9yIGhvd2V2ZXIgaGVhbHRoeVxuICogaXQgaXM7IHJlYWRpbmcgdGhhdCBhcyBcImRpZCBub3QgYW5zd2VyXCIgd291bGQgYmxvY2sgZXZlcnkgcnVuIG9uIGEgaG9zdCB3aXRoIGFcbiAqIHBob25lIHBsdWdnZWQgaW4sIHdoaWNoIGlzIGEgd29yc2UgZGVmZWN0IHRoYW4gdGhlIG9uZSB0aGlzIG1vZHVsZSBmaXhlcy5cbiAqL1xuY29uc3QgRU1VTEFUT1JfREVWSUNFX0lEX1BBVFRFUk4gPSAvXmVtdWxhdG9yLVxcZCskLztcblxuLyoqXG4gKiBCdWlsZHMgdGhlIHN1bW1hcnkgbGluZSBuYW1pbmcgd2hhdCBlYWNoIGRldmljZSBhbnN3ZXJlZC5cbiAqXG4gKiBUaGUgb2xkIGxvZyBwcmludGVkIG9ubHkgdGhlIGNvbmNsdXNpb24gKGBub3QgZm91bmQgb24gYW55IGV4aXN0aW5nIGRldmljZWApLFxuICogd2hpY2ggaXMgZXhhY3RseSB0aGUgbGluZSB0aGF0IHdhcyB3cm9uZzsgcHJpbnRpbmcgdGhlIGV2aWRlbmNlIG5leHQgdG8gaXQgaXNcbiAqIHdoYXQgbWFrZXMgYSBiYWQgY29uY2x1c2lvbiB2aXNpYmxlIHdpdGhvdXQgYSBzZWNvbmQgcnVuLlxuICpcbiAqIEBwYXJhbSByZXN1bHRzIC0gRXZlcnkgZGV2aWNlJ3MgcHJvYmUgb3V0Y29tZS5cbiAqIEByZXR1cm5zIFRoZSBzdW1tYXJ5LCBvciBgbm8gZGV2aWNlc2Agd2hlbiBub3RoaW5nIHdhcyBjb25uZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEF2ZFByb2JlU3VtbWFyeShyZXN1bHRzOiByZWFkb25seSBBdmRQcm9iZVJlc3VsdFtdKTogc3RyaW5nIHtcbiAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdubyBkZXZpY2VzJztcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiBgJHtyZXN1bHQuZGV2aWNlSWR9PSR7cmVzdWx0Lm91dGNvbWV9YCkuam9pbignLCAnKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHJlZnVzYWwgbWVzc2FnZSBmb3IgZGV2aWNlcyB0aGF0IGNvdWxkIG5vdCBiZSByZWFkLlxuICpcbiAqIE5hbWVzIHRoZSBkZXZpY2UsIHRoZSBBVkQsIHRoZSBidWRnZXQsIHRoZSBjb25zZXF1ZW5jZSBhbmQgdGhlIHJlY292ZXJ5IFx1MjAxNCB0aGVcbiAqIHNoYXBlIGB0ZWFyZG93bi12ZXJkaWN0LnRzYCB1c2VzIGZvciBpdHMgb3duIHdhcm5pbmcsIGJlY2F1c2UgYSBtZXNzYWdlIHRoYXRcbiAqIHN0b3BzIGEgcnVuIGhhcyB0byBsZWF2ZSB0aGUgcmVhZGVyIGFibGUgdG8gdW5ibG9jayBpdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIEFWRCwgdGhlIHByb2JlIGJ1ZGdldCwgYW5kIHRoZSBkZXZpY2VzIHRoYXQgZGlkIG5vdCBhbnN3ZXIuXG4gKiBAcmV0dXJucyBUaGUgcmVmdXNhbCBtZXNzYWdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVbnJlYWRhYmxlRGV2aWNlc01lc3NhZ2UocGFyYW1zOiBCdWlsZFVucmVhZGFibGVEZXZpY2VzTWVzc2FnZVBhcmFtcyk6IHN0cmluZyB7XG4gIC8qXG4gICAqIFdoZW4gdGhlcmUgaXMgZXhhY3RseSBvbmUgZGV2aWNlIHRoZSBqb2luZWQgbGlzdCBJUyBpdHMgSUQsIHNvIHRoZSBzaW5ndWxhclxuICAgKiB3b3JkaW5nIG5lZWRzIG5vIGluZGV4IGFjY2VzcyBcdTIwMTQgYW5kIG5vIHVucmVhY2hhYmxlIGZhbGxiYWNrIGZvciBvbmUuXG4gICAqL1xuICBjb25zdCBkZXZpY2VMaXN0ID0gcGFyYW1zLnVucmVhZGFibGVEZXZpY2VJZHMuam9pbignLCAnKTtcbiAgY29uc3QgaXNTaW5nbGUgPSBwYXJhbXMudW5yZWFkYWJsZURldmljZUlkcy5sZW5ndGggPT09IDE7XG5cbiAgY29uc3Qgc3ViamVjdCA9IGlzU2luZ2xlID8gYGRldmljZSAke2RldmljZUxpc3R9YCA6IGBkZXZpY2VzICR7ZGV2aWNlTGlzdH1gO1xuICBjb25zdCBjb21tYW5kID0gaXNTaW5nbGUgPyBgYWRiIC1zICR7ZGV2aWNlTGlzdH0gZW11IGF2ZCBuYW1lYCA6ICdhZGIgLXMgPGRldmljZT4gZW11IGF2ZCBuYW1lJztcbiAgY29uc3QgaG9sZGVyID0gaXNTaW5nbGUgPyAnaXQgaXMnIDogJ29uZSBvZiB0aGVtIGlzJztcbiAgY29uc3QgcmVtZWR5ID0gaXNTaW5nbGUgPyAnS2lsbCB0aGUgdW5yZXNwb25zaXZlIGRldmljZScgOiAnS2lsbCB0aGUgdW5yZXNwb25zaXZlIGRldmljZXMnO1xuXG4gIHJldHVybiBgQVZEIFwiJHtwYXJhbXMuYXZkTmFtZX1cIjogJHtzdWJqZWN0fSBkaWQgbm90IGFuc3dlciBcXGAke2NvbW1hbmR9XFxgIHdpdGhpbiAke1N0cmluZyhwYXJhbXMucHJvYmVUaW1lb3V0SW5NaWxsaXNlY29uZHMpfW1zIChyZXRyaWVkIG9uY2UpLCBgXG4gICAgKyBgc28gdGhpcyBydW4gY2Fubm90IHRlbGwgd2hldGhlciAke2hvbGRlcn0gYWxyZWFkeSBzZXJ2aW5nIHRoYXQgQVZELiBTdGFydGluZyBhbiBlbXVsYXRvciBhbnl3YXkgd291bGQgY29sbGlkZSBgXG4gICAgKyAnKGBGQVRBTCB8IFJ1bm5pbmcgbXVsdGlwbGUgZW11bGF0b3JzIHdpdGggdGhlIHNhbWUgQVZEIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlYCksIHdoaWNoIHRoZSBlbXVsYXRvciByZXBvcnRzIG9ubHkgdG8gaXRzIG93biBzdGRvdXQuICdcbiAgICArIGAke3JlbWVkeX0sIG9yIHJ1biBcXGBhZGIga2lsbC1zZXJ2ZXJcXGAsIHRoZW4gcmV0cnkuYDtcbn1cblxuLyoqXG4gKiBEZWNpZGVzIHdoZXRoZXIgYSBkZXZpY2UgY2FuIGhvbGQgYW4gQVZEIHRoaXMgcnVuIGNvdWxkIGNvbGxpZGUgd2l0aC5cbiAqXG4gKiBAcGFyYW0gZGV2aWNlSWQgLSBUaGUgZGV2aWNlIFVESUQgdG8ganVkZ2UuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgZm9yIGEgbG9jYWxseSBzdGFydGVkIGVtdWxhdG9yLCB3aG9zZSBjb25zb2xlIHRoaXMgcnVuIGNhbiBhc2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0lzRW11bGF0b3JEZXZpY2VJZChkZXZpY2VJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBFTVVMQVRPUl9ERVZJQ0VfSURfUEFUVEVSTi50ZXN0KGRldmljZUlkKTtcbn1cblxuLyoqXG4gKiBDbGFzc2lmaWVzIG9uZSBkZXZpY2UncyBwcm9iZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIEFWRCB3YW50ZWQsIHRoZSBkZXZpY2UgcHJvYmVkLCBhbmQgd2hhdCBpdCBhbnN3ZXJlZC5cbiAqIEByZXR1cm5zIFRoZSBvdXRjb21lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlBdmRQcm9iZShwYXJhbXM6IENsYXNzaWZ5QXZkUHJvYmVQYXJhbXMpOiBBdmRQcm9iZU91dGNvbWUge1xuICBpZiAoIWNoZWNrSXNFbXVsYXRvckRldmljZUlkKHBhcmFtcy5kZXZpY2VJZCkpIHtcbiAgICByZXR1cm4gJ25vdC1hbi1lbXVsYXRvcic7XG4gIH1cblxuICBpZiAocGFyYW1zLnByb2JlZEF2ZE5hbWUgPT09IHVuZGVmaW5lZCB8fCBwYXJhbXMucHJvYmVkQXZkTmFtZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ25vLWFuc3dlcic7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zLnByb2JlZEF2ZE5hbWUgPT09IHBhcmFtcy5hdmROYW1lID8gJ21hdGNoJyA6ICdvdGhlci1hdmQnO1xufVxuXG4vKipcbiAqIERlY2lkZXMgd2hhdCB0aGUgcnVuIG1heSBkbywgZnJvbSBldmVyeSBkZXZpY2UncyBwcm9iZSBvdXRjb21lLlxuICpcbiAqICoqQSBtYXRjaCB3aW5zIG92ZXIgYW4gdW5yZWFkYWJsZSBzaWJsaW5nLioqIE9uY2UgdGhlIHJlcXVlc3RlZCBBVkQgaXMgZm91bmRcbiAqIGFuZCByZXVzYWJsZSwgYW4gdW5yZWxhdGVkIHdlZGdlZCBkZXZpY2UgaXMgc29tZWJvZHkgZWxzZSdzIHByb2JsZW0gYW5kIG11c3RcbiAqIG5vdCBibG9jayBhIHJ1biB0aGF0IGhhcyBldmVyeXRoaW5nIGl0IG5lZWRzIFx1MjAxNCB0aGUgc2FtZSByZXN0cmFpbnRcbiAqIGBlbXVsYXRvci1iYWNrZW5kLnRzYCBzaG93cyBpbiBuZXZlciBzd2VlcGluZyBhIGBxZW11KmAgaXQgZG9lcyBub3Qgb3duLiBPbmx5XG4gKiB3aGVuIG5vdGhpbmcgbWF0Y2hlZCBkb2VzIHNpbGVuY2UgYmVjb21lIGRlY2lzaXZlLCBiZWNhdXNlIG9ubHkgdGhlbiB3b3VsZCB0aGVcbiAqIHJ1biBnbyBvbiB0byBsYXVuY2guXG4gKlxuICogQHBhcmFtIHJlc3VsdHMgLSBFdmVyeSBkZXZpY2UncyBwcm9iZSBvdXRjb21lLlxuICogQHJldHVybnMgVGhlIHZlcmRpY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXZkUHJvYmVWZXJkaWN0KHJlc3VsdHM6IHJlYWRvbmx5IEF2ZFByb2JlUmVzdWx0W10pOiBBdmRQcm9iZVZlcmRpY3Qge1xuICBjb25zdCB1bnJlYWRhYmxlRGV2aWNlSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICBzd2l0Y2ggKHJlc3VsdC5vdXRjb21lKSB7XG4gICAgICBjYXNlICdtYXRjaCc6IHtcbiAgICAgICAgcmV0dXJuIHsgZGV2aWNlSWQ6IHJlc3VsdC5kZXZpY2VJZCwgdmVyZGljdDogJ3JldXNlJyB9O1xuICAgICAgfVxuICAgICAgY2FzZSAnbm8tYW5zd2VyJzoge1xuICAgICAgICB1bnJlYWRhYmxlRGV2aWNlSWRzLnB1c2gocmVzdWx0LmRldmljZUlkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdub3QtYW4tZW11bGF0b3InOlxuICAgICAgY2FzZSAnb3RoZXItYXZkJzoge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIGFzc2VydE5ldmVyKHJlc3VsdC5vdXRjb21lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodW5yZWFkYWJsZURldmljZUlkcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHsgdW5yZWFkYWJsZURldmljZUlkcywgdmVyZGljdDogJ3JlZnVzZScgfTtcbiAgfVxuXG4gIHJldHVybiB7IHZlcmRpY3Q6ICdzdGFydC1uZXcnIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFpQ0EsU0FBUyxtQkFBbUI7QUF3SDVCLE1BQU0sNkJBQTZCO0FBWTVCLFNBQVMscUJBQXFCLFNBQTRDO0FBQy9FLE1BQUksUUFBUSxXQUFXLEdBQUc7QUFDeEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLFFBQVEsSUFBSSxPQUFPLE9BQU8sRUFBRSxFQUFFLEtBQUssSUFBSTtBQUNsRjtBQVlPLFNBQVMsOEJBQThCLFFBQXFEO0FBS2pHLFFBQU0sYUFBYSxPQUFPLG9CQUFvQixLQUFLLElBQUk7QUFDdkQsUUFBTSxXQUFXLE9BQU8sb0JBQW9CLFdBQVc7QUFFdkQsUUFBTSxVQUFVLFdBQVcsVUFBVSxVQUFVLEtBQUssV0FBVyxVQUFVO0FBQ3pFLFFBQU0sVUFBVSxXQUFXLFVBQVUsVUFBVSxrQkFBa0I7QUFDakUsUUFBTSxTQUFTLFdBQVcsVUFBVTtBQUNwQyxRQUFNLFNBQVMsV0FBVyxpQ0FBaUM7QUFFM0QsU0FBTyxRQUFRLE9BQU8sT0FBTyxNQUFNLE9BQU8scUJBQXFCLE9BQU8sYUFBYSxPQUFPLE9BQU8sMEJBQTBCLENBQUMsc0RBQ3JGLE1BQU0sa05BRXRDLE1BQU07QUFDZjtBQVFPLFNBQVMsd0JBQXdCLFVBQTJCO0FBQ2pFLFNBQU8sMkJBQTJCLEtBQUssUUFBUTtBQUNqRDtBQVFPLFNBQVMsaUJBQWlCLFFBQWlEO0FBQ2hGLE1BQUksQ0FBQyx3QkFBd0IsT0FBTyxRQUFRLEdBQUc7QUFDN0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLE9BQU8sa0JBQWtCLFVBQWEsT0FBTyxjQUFjLFdBQVcsR0FBRztBQUMzRSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sT0FBTyxrQkFBa0IsT0FBTyxVQUFVLFVBQVU7QUFDN0Q7QUFlTyxTQUFTLHVCQUF1QixTQUFxRDtBQUMxRixRQUFNLHNCQUFnQyxDQUFDO0FBRXZDLGFBQVcsVUFBVSxTQUFTO0FBQzVCLFlBQVEsT0FBTyxTQUFTO0FBQUEsTUFDdEIsS0FBSyxTQUFTO0FBQ1osZUFBTyxFQUFFLFVBQVUsT0FBTyxVQUFVLFNBQVMsUUFBUTtBQUFBLE1BQ3ZEO0FBQUEsTUFDQSxLQUFLLGFBQWE7QUFDaEIsNEJBQW9CLEtBQUssT0FBTyxRQUFRO0FBQ3hDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSztBQUFBLE1BQ0wsS0FBSyxhQUFhO0FBQ2hCO0FBQUEsTUFDRjtBQUFBLE1BQ0EsU0FBUztBQUNQLGVBQU8sWUFBWSxPQUFPLE9BQU87QUFBQSxNQUNuQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSSxvQkFBb0IsU0FBUyxHQUFHO0FBQ2xDLFdBQU8sRUFBRSxxQkFBcUIsU0FBUyxTQUFTO0FBQUEsRUFDbEQ7QUFFQSxTQUFPLEVBQUUsU0FBUyxZQUFZO0FBQ2hDOyIsCiAgIm5hbWVzIjogW10KfQo=
56
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F2ZC1wcm9iZS12ZXJkaWN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBjbGFzc2lmaWNhdGlvbiBvZiB0aGUgQVZEIGFkb3B0aW9uIHByb2JlIFx1MjAxNCBkZWNpZGluZywgZnJvbSB3aGF0IGVhY2hcbiAqIGNvbm5lY3RlZCBkZXZpY2UgYW5zd2VyZWQsIHdoZXRoZXIgdGhpcyBydW4gbWF5IHJldXNlIG9uZSwgbXVzdCBzdGFydCBpdHNcbiAqIG93biBlbXVsYXRvciwgb3IgY2Fubm90IHNhZmVseSBkbyBlaXRoZXIuXG4gKlxuICogVGhlIHByb2JlIChgYWRiIC1zIDxkZXZpY2U+IGVtdSBhdmQgbmFtZWApIHVzZWQgdG8gZGlzY2FyZCBpdHMgZXJyb3IgYW5kXG4gKiByZXNvbHZlIGAnJ2AsIHNvIGEgY2FsbCB0aGF0ICoqbmV2ZXIgYW5zd2VyZWQqKiB3YXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBvbmVcbiAqIHRoYXQgYW5zd2VyZWQgKlwiYSBkaWZmZXJlbnQgQVZEXCIqLiBCb3RoIGZlbGwgdGhyb3VnaCB0byBcInN0YXJ0IGEgbmV3XG4gKiBlbXVsYXRvclwiLCB3aGljaCBjb2xsaWRlcyB3aXRoIHRoZSBlbXVsYXRvciBhbHJlYWR5IHNlcnZpbmcgdGhhdCBBVkQ6XG4gKlxuICogYGBgdGV4dFxuICogMTQ6Mjc6NTIuMTE0ICBDaGVja2luZyBleGlzdGluZyBkZXZpY2VzIGZvciBBVkQgXCJvYnNpZGlhbl90ZXN0XCIuLi4gKGNvbm5lY3RlZDogW2VtdWxhdG9yLTU1NTRdKVxuICogMTQ6Mjc6NTcuMTcwICBBVkQgXCJvYnNpZGlhbl90ZXN0XCIgbm90IGZvdW5kIG9uIGFueSBleGlzdGluZyBkZXZpY2UsIHN0YXJ0aW5nIGEgbmV3IGVtdWxhdG9yLi4uXG4gKiBgYGBcbiAqXG4gKiA1LjA1NnMgYXBhcnQgXHUyMDE0IGV4YWN0bHkgdGhlIHByb2JlJ3Mgb3duIHRpbWVvdXQuIFRoZSBsYXVuY2ggdGhhdCBmb2xsb3dlZCBoaXRcbiAqIGBGQVRBTCB8IFJ1bm5pbmcgbXVsdGlwbGUgZW11bGF0b3JzIHdpdGggdGhlIHNhbWUgQVZEIGlzIGFuIGV4cGVyaW1lbnRhbFxuICogZmVhdHVyZWAsIHdoaWNoIHRoZSBlbXVsYXRvciB3cml0ZXMgdG8gaXRzIG93biBzdGRvdXQuICoqQSBwcm9iZSB0aGF0IG5ldmVyXG4gKiBhbnN3ZXJlZCBpcyBub3QgZXZpZGVuY2UgdGhhdCB0aGUgYW5zd2VyIGlzIG5vKiogXHUyMDE0IHRoZSBzYW1lIGRpc3RpbmN0aW9uXG4gKiBgYWRiLWRldmljZS1saXN0LnRzYCBkcmF3cyBiZXR3ZWVuIGBvZmZsaW5lYCBhbmQgYWJzZW50LCBhbmQgdGhlIHNhbWUgb25lXG4gKiB0aGUgY29ubmVjdGl2aXR5IHByb2JlIGRyYXdzIGJldHdlZW4gYSBmYWlsZWQgZHVtcCBhbmQgYSBtaXNzaW5nIG5ldHdvcmsuXG4gKlxuICogV29yc2UsIHRoZSBwcm9iZSBpcyBhc2tlZCBpdHMgcXVlc3Rpb24gcHJlY2lzZWx5IHdoZW4gdGhlIGd1ZXN0IGlzIGxlYXN0IGFibGVcbiAqIHRvIGFuc3dlciBpdCBcdTIwMTQgYSB3ZWRnZWQgZW11bGF0b3IgdGltZXMgb3V0IGV2ZXJ5IGBhZGJgIGNhbGwgXHUyMDE0IHdoaWNoIGlzIHRoZVxuICogY29uZGl0aW9uIHVuZGVyIHdoaWNoIGEgY29sbGlkaW5nIGxhdW5jaCBkb2VzIHRoZSBtb3N0IGRhbWFnZS5cbiAqXG4gKiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1mYWN0b3J5YCAoZXhjbHVkZWQgZnJvbVxuICogdW5pdCB0ZXN0cykgc28gdGhlIGNsYXNzaWZpY2F0aW9uIHN0YXlzIHVuaXQtdGVzdGFibGUgXHUyMDE0IHRoZSBmYWN0b3J5IGl0c2VsZlxuICogc2hlbGxzIG91dCB0byBgYWRiYC5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJy4vdHlwZS1ndWFyZHMubWpzJztcblxuLyoqXG4gKiBXaGF0IG9uZSBkZXZpY2UgYW5zd2VyZWQgd2hlbiBhc2tlZCB3aGljaCBBVkQgaXQgaXMgc2VydmluZy5cbiAqXG4gKiBgbm90LWFuLWVtdWxhdG9yYCBhbmQgYG90aGVyLWF2ZGAgYXJlIGJvdGggbGVnaXRpbWF0ZSBza2lwczsgb25seVxuICogYG5vLWFuc3dlcmAgaXMgdGhlIHNpbGVuY2UgdGhhdCBtdXN0IG5ldmVyIGJlIHJlYWQgYXMgb25lLlxuICovXG5leHBvcnQgdHlwZSBBdmRQcm9iZU91dGNvbWUgPSAnbWF0Y2gnIHwgJ25vLWFuc3dlcicgfCAnbm90LWFuLWVtdWxhdG9yJyB8ICdvdGhlci1hdmQnO1xuXG4vKipcbiAqIFRoZSBydW4gY2Fubm90IHRlbGwgd2hldGhlciB0aGUgQVZEIGlzIGFscmVhZHkgcnVubmluZywgc28gaXQgbXVzdCBub3QgbGF1bmNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2ZFByb2JlUmVmdXNlVmVyZGljdCB7XG4gIC8qKlxuICBUaGUgZGV2aWNlcyB0aGF0IGNvdWxkIG5vdCBiZSByZWFkLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBydWxlZCBvdXQgYXMgdGhlIEFWRCdzIGhvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IHVucmVhZGFibGVEZXZpY2VJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBEaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSB2ZXJkaWN0OiAncmVmdXNlJztcbn1cblxuLyoqXG4gKiBPbmUgZGV2aWNlJ3MgcHJvYmUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmRQcm9iZVJlc3VsdCB7XG4gIC8qKlxuICBUaGUgZGV2aWNlIFVESUQsIGUuZy4gYGVtdWxhdG9yLTU1NTRgLlxuICAgKi9cbiAgcmVhZG9ubHkgZGV2aWNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgV2hhdCB0aGUgZGV2aWNlIGFuc3dlcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0Y29tZTogQXZkUHJvYmVPdXRjb21lO1xufVxuXG4vKipcbiAqIFRoZSBBVkQgaXMgYWxyZWFkeSBydW5uaW5nLCBvbiBhIGRldmljZSB0aGlzIHJ1biBtYXkgYWRvcHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXZkUHJvYmVSZXVzZVZlcmRpY3Qge1xuICAvKipcbiAgVGhlIGRldmljZSBhbHJlYWR5IHNlcnZpbmcgdGhlIHJlcXVlc3RlZCBBVkQuXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICBEaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSB2ZXJkaWN0OiAncmV1c2UnO1xufVxuXG4vKipcbiAqIEV2ZXJ5IGRldmljZSBhbnN3ZXJlZCwgbm9uZSBpcyBzZXJ2aW5nIHRoZSBBVkQsIHNvIGxhdW5jaGluZyBjYW5ub3QgY29sbGlkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdmRQcm9iZVN0YXJ0TmV3VmVyZGljdCB7XG4gIC8qKlxuICBEaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSB2ZXJkaWN0OiAnc3RhcnQtbmV3Jztcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSBydW4gbWF5IGRvLCBnaXZlbiBldmVyeSBkZXZpY2UncyBwcm9iZSBvdXRjb21lLlxuICovXG5leHBvcnQgdHlwZSBBdmRQcm9iZVZlcmRpY3QgPSBBdmRQcm9iZVJlZnVzZVZlcmRpY3QgfCBBdmRQcm9iZVJldXNlVmVyZGljdCB8IEF2ZFByb2JlU3RhcnROZXdWZXJkaWN0O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBidWlsZFVucmVhZGFibGVEZXZpY2VzTWVzc2FnZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRVbnJlYWRhYmxlRGV2aWNlc01lc3NhZ2VQYXJhbXMge1xuICAvKipcbiAgVGhlIEFWRCB0aGUgcnVuIHdhbnRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGF2ZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIGJ1ZGdldCBlYWNoIHByb2JlIGF0dGVtcHQgd2FzIGdpdmVuLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSBwcm9iZVRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgZGV2aWNlcyB0aGF0IGRpZCBub3QgYW5zd2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgdW5yZWFkYWJsZURldmljZUlkczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNsYXNzaWZ5QXZkUHJvYmV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsYXNzaWZ5QXZkUHJvYmVQYXJhbXMge1xuICAvKipcbiAgVGhlIEFWRCB0aGUgcnVuIHdhbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgZGV2aWNlIHRoYXQgd2FzIHByb2JlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRldmljZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSBBVkQgbmFtZSB0aGUgZGV2aWNlIGFuc3dlcmVkLCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IGRpZCBub3QgYW5zd2VyIGF0IGFsbC5cbiAgICovXG4gIHJlYWRvbmx5IHByb2JlZEF2ZE5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogTWF0Y2hlcyB0aGUgZGV2aWNlIElEcyBhZGIgZ2l2ZXMgZW11bGF0b3JzIHN0YXJ0ZWQgdGhlIHdheSB0aGlzIGhhcm5lc3NcbiAqIHN0YXJ0cyB0aGVtOiBgZW11bGF0b3IgLWF2ZCA8bmFtZT5gLCB3aG9zZSBjb25zb2xlIGxhbmRzIG9uIGEgbG9jYWwgcG9ydC5cbiAqXG4gKiBPbmx5IHN1Y2ggYSBkZXZpY2UgY2FuIGNvbGxpZGUgd2l0aCB0aGlzIHJ1bidzIGxhdW5jaCwgc28gb25seSBzdWNoIGEgZGV2aWNlJ3NcbiAqIHNpbGVuY2UgaXMgd29ydGggcmVmdXNpbmcgb3Zlci4gQSBwaHlzaWNhbCBoYW5kc2V0IChhbiBhcmJpdHJhcnkgc2VyaWFsKSBvciBhXG4gKiBUQ1AtYXR0YWNoZWQgZGV2aWNlIGFuc3dlcnMgYGFkYiBcdTIwMjYgZW11IGF2ZCBuYW1lYCB3aXRoIGFuIGVycm9yIGhvd2V2ZXIgaGVhbHRoeVxuICogaXQgaXM7IHJlYWRpbmcgdGhhdCBhcyBcImRpZCBub3QgYW5zd2VyXCIgd291bGQgYmxvY2sgZXZlcnkgcnVuIG9uIGEgaG9zdCB3aXRoIGFcbiAqIHBob25lIHBsdWdnZWQgaW4sIHdoaWNoIGlzIGEgd29yc2UgZGVmZWN0IHRoYW4gdGhlIG9uZSB0aGlzIG1vZHVsZSBmaXhlcy5cbiAqL1xuY29uc3QgRU1VTEFUT1JfREVWSUNFX0lEX1BBVFRFUk4gPSAvXmVtdWxhdG9yLVxcZCskLztcblxuLyoqXG4gKiBCdWlsZHMgdGhlIHN1bW1hcnkgbGluZSBuYW1pbmcgd2hhdCBlYWNoIGRldmljZSBhbnN3ZXJlZC5cbiAqXG4gKiBUaGUgb2xkIGxvZyBwcmludGVkIG9ubHkgdGhlIGNvbmNsdXNpb24gKGBub3QgZm91bmQgb24gYW55IGV4aXN0aW5nIGRldmljZWApLFxuICogd2hpY2ggaXMgZXhhY3RseSB0aGUgbGluZSB0aGF0IHdhcyB3cm9uZzsgcHJpbnRpbmcgdGhlIGV2aWRlbmNlIG5leHQgdG8gaXQgaXNcbiAqIHdoYXQgbWFrZXMgYSBiYWQgY29uY2x1c2lvbiB2aXNpYmxlIHdpdGhvdXQgYSBzZWNvbmQgcnVuLlxuICpcbiAqIEBwYXJhbSByZXN1bHRzIC0gRXZlcnkgZGV2aWNlJ3MgcHJvYmUgb3V0Y29tZS5cbiAqIEByZXR1cm5zIFRoZSBzdW1tYXJ5LCBvciBgbm8gZGV2aWNlc2Agd2hlbiBub3RoaW5nIHdhcyBjb25uZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEF2ZFByb2JlU3VtbWFyeShyZXN1bHRzOiByZWFkb25seSBBdmRQcm9iZVJlc3VsdFtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc3VsdHMubGVuZ3RoID09PSAwID8gJ25vIGRldmljZXMnIDogcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gYCR7cmVzdWx0LmRldmljZUlkfT0ke3Jlc3VsdC5vdXRjb21lfWApLmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSByZWZ1c2FsIG1lc3NhZ2UgZm9yIGRldmljZXMgdGhhdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAqXG4gKiBOYW1lcyB0aGUgZGV2aWNlLCB0aGUgQVZELCB0aGUgYnVkZ2V0LCB0aGUgY29uc2VxdWVuY2UgYW5kIHRoZSByZWNvdmVyeSBcdTIwMTQgdGhlXG4gKiBzaGFwZSBgdGVhcmRvd24tdmVyZGljdC50c2AgdXNlcyBmb3IgaXRzIG93biB3YXJuaW5nLCBiZWNhdXNlIGEgbWVzc2FnZSB0aGF0XG4gKiBzdG9wcyBhIHJ1biBoYXMgdG8gbGVhdmUgdGhlIHJlYWRlciBhYmxlIHRvIHVuYmxvY2sgaXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBBVkQsIHRoZSBwcm9iZSBidWRnZXQsIGFuZCB0aGUgZGV2aWNlcyB0aGF0IGRpZCBub3QgYW5zd2VyLlxuICogQHJldHVybnMgVGhlIHJlZnVzYWwgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVW5yZWFkYWJsZURldmljZXNNZXNzYWdlKHBhcmFtczogQnVpbGRVbnJlYWRhYmxlRGV2aWNlc01lc3NhZ2VQYXJhbXMpOiBzdHJpbmcge1xuICAvKlxuICAgKiBXaGVuIHRoZXJlIGlzIGV4YWN0bHkgb25lIGRldmljZSB0aGUgam9pbmVkIGxpc3QgSVMgaXRzIElELCBzbyB0aGUgc2luZ3VsYXJcbiAgICogd29yZGluZyBuZWVkcyBubyBpbmRleCBhY2Nlc3MgXHUyMDE0IGFuZCBubyB1bnJlYWNoYWJsZSBmYWxsYmFjayBmb3Igb25lLlxuICAgKi9cbiAgY29uc3QgZGV2aWNlTGlzdCA9IHBhcmFtcy51bnJlYWRhYmxlRGV2aWNlSWRzLmpvaW4oJywgJyk7XG4gIGNvbnN0IGlzU2luZ2xlID0gcGFyYW1zLnVucmVhZGFibGVEZXZpY2VJZHMubGVuZ3RoID09PSAxO1xuXG4gIGNvbnN0IHN1YmplY3QgPSBpc1NpbmdsZSA/IGBkZXZpY2UgJHtkZXZpY2VMaXN0fWAgOiBgZGV2aWNlcyAke2RldmljZUxpc3R9YDtcbiAgY29uc3QgY29tbWFuZCA9IGlzU2luZ2xlID8gYGFkYiAtcyAke2RldmljZUxpc3R9IGVtdSBhdmQgbmFtZWAgOiAnYWRiIC1zIDxkZXZpY2U+IGVtdSBhdmQgbmFtZSc7XG4gIGNvbnN0IGhvbGRlciA9IGlzU2luZ2xlID8gJ2l0IGlzJyA6ICdvbmUgb2YgdGhlbSBpcyc7XG4gIGNvbnN0IHJlbWVkeSA9IGlzU2luZ2xlID8gJ0tpbGwgdGhlIHVucmVzcG9uc2l2ZSBkZXZpY2UnIDogJ0tpbGwgdGhlIHVucmVzcG9uc2l2ZSBkZXZpY2VzJztcblxuICByZXR1cm4gYEFWRCBcIiR7cGFyYW1zLmF2ZE5hbWV9XCI6ICR7c3ViamVjdH0gZGlkIG5vdCBhbnN3ZXIgXFxgJHtjb21tYW5kfVxcYCB3aXRoaW4gJHtTdHJpbmcocGFyYW1zLnByb2JlVGltZW91dEluTWlsbGlzZWNvbmRzKX1tcyAocmV0cmllZCBvbmNlKSwgYFxuICAgICsgYHNvIHRoaXMgcnVuIGNhbm5vdCB0ZWxsIHdoZXRoZXIgJHtob2xkZXJ9IGFscmVhZHkgc2VydmluZyB0aGF0IEFWRC4gU3RhcnRpbmcgYW4gZW11bGF0b3IgYW55d2F5IHdvdWxkIGNvbGxpZGUgYFxuICAgICsgJyhgRkFUQUwgfCBSdW5uaW5nIG11bHRpcGxlIGVtdWxhdG9ycyB3aXRoIHRoZSBzYW1lIEFWRCBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZWApLCB3aGljaCB0aGUgZW11bGF0b3IgcmVwb3J0cyBvbmx5IHRvIGl0cyBvd24gc3Rkb3V0LiAnXG4gICAgKyBgJHtyZW1lZHl9LCBvciBydW4gXFxgYWRiIGtpbGwtc2VydmVyXFxgLCB0aGVuIHJldHJ5LmA7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgZGV2aWNlIGNhbiBob2xkIGFuIEFWRCB0aGlzIHJ1biBjb3VsZCBjb2xsaWRlIHdpdGguXG4gKlxuICogQHBhcmFtIGRldmljZUlkIC0gVGhlIGRldmljZSBVRElEIHRvIGp1ZGdlLlxuICogQHJldHVybnMgYHRydWVgIGZvciBhIGxvY2FsbHkgc3RhcnRlZCBlbXVsYXRvciwgd2hvc2UgY29uc29sZSB0aGlzIHJ1biBjYW4gYXNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJc0VtdWxhdG9yRGV2aWNlSWQoZGV2aWNlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gRU1VTEFUT1JfREVWSUNFX0lEX1BBVFRFUk4udGVzdChkZXZpY2VJZCk7XG59XG5cbi8qKlxuICogQ2xhc3NpZmllcyBvbmUgZGV2aWNlJ3MgcHJvYmUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBBVkQgd2FudGVkLCB0aGUgZGV2aWNlIHByb2JlZCwgYW5kIHdoYXQgaXQgYW5zd2VyZWQuXG4gKiBAcmV0dXJucyBUaGUgb3V0Y29tZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzaWZ5QXZkUHJvYmUocGFyYW1zOiBDbGFzc2lmeUF2ZFByb2JlUGFyYW1zKTogQXZkUHJvYmVPdXRjb21lIHtcbiAgaWYgKCFjaGVja0lzRW11bGF0b3JEZXZpY2VJZChwYXJhbXMuZGV2aWNlSWQpKSB7XG4gICAgcmV0dXJuICdub3QtYW4tZW11bGF0b3InO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5wcm9iZWRBdmROYW1lID09PSB1bmRlZmluZWQgfHwgcGFyYW1zLnByb2JlZEF2ZE5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICduby1hbnN3ZXInO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcy5wcm9iZWRBdmROYW1lID09PSBwYXJhbXMuYXZkTmFtZSA/ICdtYXRjaCcgOiAnb3RoZXItYXZkJztcbn1cblxuLyoqXG4gKiBEZWNpZGVzIHdoYXQgdGhlIHJ1biBtYXkgZG8sIGZyb20gZXZlcnkgZGV2aWNlJ3MgcHJvYmUgb3V0Y29tZS5cbiAqXG4gKiAqKkEgbWF0Y2ggd2lucyBvdmVyIGFuIHVucmVhZGFibGUgc2libGluZy4qKiBPbmNlIHRoZSByZXF1ZXN0ZWQgQVZEIGlzIGZvdW5kXG4gKiBhbmQgcmV1c2FibGUsIGFuIHVucmVsYXRlZCB3ZWRnZWQgZGV2aWNlIGlzIHNvbWVib2R5IGVsc2UncyBwcm9ibGVtIGFuZCBtdXN0XG4gKiBub3QgYmxvY2sgYSBydW4gdGhhdCBoYXMgZXZlcnl0aGluZyBpdCBuZWVkcyBcdTIwMTQgdGhlIHNhbWUgcmVzdHJhaW50XG4gKiBgZW11bGF0b3ItYmFja2VuZC50c2Agc2hvd3MgaW4gbmV2ZXIgc3dlZXBpbmcgYSBgcWVtdSpgIGl0IGRvZXMgbm90IG93bi4gT25seVxuICogd2hlbiBub3RoaW5nIG1hdGNoZWQgZG9lcyBzaWxlbmNlIGJlY29tZSBkZWNpc2l2ZSwgYmVjYXVzZSBvbmx5IHRoZW4gd291bGQgdGhlXG4gKiBydW4gZ28gb24gdG8gbGF1bmNoLlxuICpcbiAqIEBwYXJhbSByZXN1bHRzIC0gRXZlcnkgZGV2aWNlJ3MgcHJvYmUgb3V0Y29tZS5cbiAqIEByZXR1cm5zIFRoZSB2ZXJkaWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUF2ZFByb2JlVmVyZGljdChyZXN1bHRzOiByZWFkb25seSBBdmRQcm9iZVJlc3VsdFtdKTogQXZkUHJvYmVWZXJkaWN0IHtcbiAgY29uc3QgdW5yZWFkYWJsZURldmljZUlkczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgc3dpdGNoIChyZXN1bHQub3V0Y29tZSkge1xuICAgICAgY2FzZSAnbWF0Y2gnOiB7XG4gICAgICAgIHJldHVybiB7IGRldmljZUlkOiByZXN1bHQuZGV2aWNlSWQsIHZlcmRpY3Q6ICdyZXVzZScgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ25vLWFuc3dlcic6IHtcbiAgICAgICAgdW5yZWFkYWJsZURldmljZUlkcy5wdXNoKHJlc3VsdC5kZXZpY2VJZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbm90LWFuLWVtdWxhdG9yJzpcbiAgICAgIGNhc2UgJ290aGVyLWF2ZCc6IHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiBhc3NlcnROZXZlcihyZXN1bHQub3V0Y29tZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVucmVhZGFibGVEZXZpY2VJZHMubGVuZ3RoID4gMCA/IHsgdW5yZWFkYWJsZURldmljZUlkcywgdmVyZGljdDogJ3JlZnVzZScgfSA6IHsgdmVyZGljdDogJ3N0YXJ0LW5ldycgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQWlDQSxTQUFTLG1CQUFtQjtBQXdINUIsTUFBTSw2QkFBNkI7QUFZNUIsU0FBUyxxQkFBcUIsU0FBNEM7QUFDL0UsU0FBTyxRQUFRLFdBQVcsSUFBSSxlQUFlLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLFFBQVEsSUFBSSxPQUFPLE9BQU8sRUFBRSxFQUFFLEtBQUssSUFBSTtBQUN4SDtBQVlPLFNBQVMsOEJBQThCLFFBQXFEO0FBS2pHLFFBQU0sYUFBYSxPQUFPLG9CQUFvQixLQUFLLElBQUk7QUFDdkQsUUFBTSxXQUFXLE9BQU8sb0JBQW9CLFdBQVc7QUFFdkQsUUFBTSxVQUFVLFdBQVcsVUFBVSxVQUFVLEtBQUssV0FBVyxVQUFVO0FBQ3pFLFFBQU0sVUFBVSxXQUFXLFVBQVUsVUFBVSxrQkFBa0I7QUFDakUsUUFBTSxTQUFTLFdBQVcsVUFBVTtBQUNwQyxRQUFNLFNBQVMsV0FBVyxpQ0FBaUM7QUFFM0QsU0FBTyxRQUFRLE9BQU8sT0FBTyxNQUFNLE9BQU8scUJBQXFCLE9BQU8sYUFBYSxPQUFPLE9BQU8sMEJBQTBCLENBQUMsc0RBQ3JGLE1BQU0sa05BRXRDLE1BQU07QUFDZjtBQVFPLFNBQVMsd0JBQXdCLFVBQTJCO0FBQ2pFLFNBQU8sMkJBQTJCLEtBQUssUUFBUTtBQUNqRDtBQVFPLFNBQVMsaUJBQWlCLFFBQWlEO0FBQ2hGLE1BQUksQ0FBQyx3QkFBd0IsT0FBTyxRQUFRLEdBQUc7QUFDN0MsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLE9BQU8sa0JBQWtCLFVBQWEsT0FBTyxjQUFjLFdBQVcsR0FBRztBQUMzRSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sT0FBTyxrQkFBa0IsT0FBTyxVQUFVLFVBQVU7QUFDN0Q7QUFlTyxTQUFTLHVCQUF1QixTQUFxRDtBQUMxRixRQUFNLHNCQUFnQyxDQUFDO0FBRXZDLGFBQVcsVUFBVSxTQUFTO0FBQzVCLFlBQVEsT0FBTyxTQUFTO0FBQUEsTUFDdEIsS0FBSyxTQUFTO0FBQ1osZUFBTyxFQUFFLFVBQVUsT0FBTyxVQUFVLFNBQVMsUUFBUTtBQUFBLE1BQ3ZEO0FBQUEsTUFDQSxLQUFLLGFBQWE7QUFDaEIsNEJBQW9CLEtBQUssT0FBTyxRQUFRO0FBQ3hDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSztBQUFBLE1BQ0wsS0FBSyxhQUFhO0FBQ2hCO0FBQUEsTUFDRjtBQUFBLE1BQ0EsU0FBUztBQUNQLGVBQU8sWUFBWSxPQUFPLE9BQU87QUFBQSxNQUNuQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTyxvQkFBb0IsU0FBUyxJQUFJLEVBQUUscUJBQXFCLFNBQVMsU0FBUyxJQUFJLEVBQUUsU0FBUyxZQUFZO0FBQzlHOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -10,6 +10,10 @@
10
10
  * context-resolving entry point, the screenshot counterpart of
11
11
  * `evalInObsidian` / `pollInObsidian`: with no arguments at all it captures
12
12
  * whatever instance the active project is driving, desktop or mobile.
13
+ *
14
+ * It also makes the frame REPRODUCIBLE before taking it, by hiding the vault's
15
+ * name — see `hide-vault-name.ts` for why a `temp-vault-<random>` bleeds
16
+ * through the caption band and rewrites a checked-in PNG on every run.
13
17
  */
14
18
  import type { ObsidianTransport } from './transport.mjs';
15
19
  /**
@@ -25,6 +29,18 @@ export interface CaptureObsidianScreenshotOptions {
25
29
  * geometry.
26
30
  */
27
31
  readonly heightInPixels?: number;
32
+ /**
33
+ * Whether to hide the vault's name before capturing, so the frame does not
34
+ * depend on the random suffix of the harness's temporary vault.
35
+ *
36
+ * A default rather than a knob: reproducibility is what a checked-in
37
+ * screenshot is for, and the row it collapses sits under the caption band,
38
+ * so nothing a reader sees moves. Turn it off only to photograph the vault
39
+ * switcher itself.
40
+ *
41
+ * @default `true`
42
+ */
43
+ readonly shouldHideVaultName?: boolean;
28
44
  /**
29
45
  * Override the transport. When omitted, the transport the current test
30
46
  * context is driving is used.
@@ -46,6 +62,11 @@ export interface CaptureObsidianScreenshotOptions {
46
62
  * Captures a PNG screenshot of the running Obsidian instance, resolving the
47
63
  * transport and vault from the current test context.
48
64
  *
65
+ * The vault's name is hidden first, so two runs of the same suite against two
66
+ * differently-named temporary vaults produce byte-identical PNGs. Pass
67
+ * {@link CaptureObsidianScreenshotOptions.shouldHideVaultName} as `false` to
68
+ * photograph it.
69
+ *
49
70
  * @param options - Optional size, transport and vault overrides.
50
71
  * @returns A {@link Promise} that resolves to the raw PNG bytes.
51
72
  * @throws Error if the active transport cannot capture screenshots.
@@ -3,11 +3,13 @@ import {
3
3
  getTransportOptions,
4
4
  getVaultPath
5
5
  } from "./context-provider.mjs";
6
+ import { hideVaultName } from "./hide-vault-name.mjs";
6
7
  import { normalizeOptionalProperties } from "./normalize-optional-properties.mjs";
7
8
  import { getOrCreateTransport } from "./transport-factory.mjs";
8
9
  async function captureObsidianScreenshot(options) {
9
10
  const {
10
11
  heightInPixels,
12
+ shouldHideVaultName = true,
11
13
  transport: transportOverride,
12
14
  vaultPath,
13
15
  widthInPixels
@@ -17,6 +19,12 @@ async function captureObsidianScreenshot(options) {
17
19
  if (!transport.captureScreenshot) {
18
20
  throw new Error("captureObsidianScreenshot: the active transport cannot capture screenshots.");
19
21
  }
22
+ if (shouldHideVaultName) {
23
+ await hideVaultName({
24
+ transport,
25
+ vaultPath: cwd
26
+ });
27
+ }
20
28
  return transport.captureScreenshot(normalizeOptionalProperties({
21
29
  cwd,
22
30
  heightInPixels,
@@ -26,4 +34,4 @@ async function captureObsidianScreenshot(options) {
26
34
  export {
27
35
  captureObsidianScreenshot
28
36
  };
29
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENhcHR1cmVzIGEgc2NyZWVuc2hvdCBvZiB0aGUgT2JzaWRpYW4gaW5zdGFuY2UgdGhlIGN1cnJlbnQgdGVzdCBjb250ZXh0IGlzXG4gKiBhbHJlYWR5IGRyaXZpbmcuXG4gKlxuICogVGhlIHRyYW5zcG9ydC1sZXZlbCBgY2FwdHVyZVNjcmVlbnNob3RgIG5lZWRzIGEgdHJhbnNwb3J0IGluIGhhbmQsIHdoaWNoIGFcbiAqIHRlc3QgcnVubmluZyB1bmRlciB0aGUgaGFybmVzcydzIGdsb2JhbCBzZXR1cCBuZXZlciBoYXMgXHUyMDE0IHRoZSBpbnN0YW5jZSBpc1xuICogb3duZWQgYnkgdGhhdCBzZXR1cCBhbmQgcmVhY2hlZCB0aHJvdWdoIHRoZSBjb250ZXh0IHByb3ZpZGVyLiBUaGlzIGlzIHRoZVxuICogY29udGV4dC1yZXNvbHZpbmcgZW50cnkgcG9pbnQsIHRoZSBzY3JlZW5zaG90IGNvdW50ZXJwYXJ0IG9mXG4gKiBgZXZhbEluT2JzaWRpYW5gIC8gYHBvbGxJbk9ic2lkaWFuYDogd2l0aCBubyBhcmd1bWVudHMgYXQgYWxsIGl0IGNhcHR1cmVzXG4gKiB3aGF0ZXZlciBpbnN0YW5jZSB0aGUgYWN0aXZlIHByb2plY3QgaXMgZHJpdmluZywgZGVza3RvcCBvciBtb2JpbGUuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgY29kZSAoZHJpdmVzIGEgbGl2ZSBPYnNpZGlhbikgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHsgQ2FwdHVyZVNjcmVlbnNob3RQYXJhbXMgfSBmcm9tICcuL2NhcHR1cmUtc2NyZWVuc2hvdC5tanMnO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0Lm1qcyc7XG5cbmltcG9ydCB7XG4gIGdldFRyYW5zcG9ydE9wdGlvbnMsXG4gIGdldFZhdWx0UGF0aFxufSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXIubWpzJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJy4vbm9ybWFsaXplLW9wdGlvbmFsLXByb3BlcnRpZXMubWpzJztcbmltcG9ydCB7IGdldE9yQ3JlYXRlVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtZmFjdG9yeS5tanMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBjYXB0dXJlT2JzaWRpYW5TY3JlZW5zaG90fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlT2JzaWRpYW5TY3JlZW5zaG90T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZXhhY3QgaGVpZ2h0IGluIHBpeGVscyB0aGUgY2FwdHVyZWQgaW1hZ2Ugc2hvdWxkIGhhdmUuXG4gICAqXG4gICAqIERlc2t0b3Agb25seSwgYW5kIG9ubHkgbWVhbmluZ2Z1bCB0b2dldGhlciB3aXRoIHtAbGluayB3aWR0aEluUGl4ZWxzfS5cbiAgICogSWdub3JlZCBvbiBtb2JpbGUsIHdoZXJlIHRoZSBpbWFnZSBpcyBhbHdheXMgdGhlIGRldmljZSdzIG5hdGl2ZVxuICAgKiBmcmFtZWJ1ZmZlciBcdTIwMTQgc2l6ZSB0aG9zZSBieSBjaG9vc2luZyBhbiBBVkQgd2l0aCB0aGUgd2FudGVkIHNjcmVlblxuICAgKiBnZW9tZXRyeS5cbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodEluUGl4ZWxzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgdHJhbnNwb3J0LiBXaGVuIG9taXR0ZWQsIHRoZSB0cmFuc3BvcnQgdGhlIGN1cnJlbnQgdGVzdFxuICAgKiBjb250ZXh0IGlzIGRyaXZpbmcgaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydD86IE9ic2lkaWFuVHJhbnNwb3J0O1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQgcGF0aCB0byBjYXB0dXJlLiBXaGVuIG9taXR0ZWQsIHRoZSBjdXJyZW50IHRlc3QgY29udGV4dCdzIHZhdWx0XG4gICAqIGlzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSB2YXVsdFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBleGFjdCB3aWR0aCBpbiBwaXhlbHMgdGhlIGNhcHR1cmVkIGltYWdlIHNob3VsZCBoYXZlLlxuICAgKlxuICAgKiBTZWUge0BsaW5rIGhlaWdodEluUGl4ZWxzfSBcdTIwMTQgdGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyIG9yIG5vdCBhdCBhbGwuXG4gICAqL1xuICByZWFkb25seSB3aWR0aEluUGl4ZWxzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENhcHR1cmVzIGEgUE5HIHNjcmVlbnNob3Qgb2YgdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2UsIHJlc29sdmluZyB0aGVcbiAqIHRyYW5zcG9ydCBhbmQgdmF1bHQgZnJvbSB0aGUgY3VycmVudCB0ZXN0IGNvbnRleHQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBzaXplLCB0cmFuc3BvcnQgYW5kIHZhdWx0IG92ZXJyaWRlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHJhdyBQTkcgYnl0ZXMuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBhY3RpdmUgdHJhbnNwb3J0IGNhbm5vdCBjYXB0dXJlIHNjcmVlbnNob3RzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdChvcHRpb25zPzogQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMpOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgY29uc3Qge1xuICAgIGhlaWdodEluUGl4ZWxzLFxuICAgIHRyYW5zcG9ydDogdHJhbnNwb3J0T3ZlcnJpZGUsXG4gICAgdmF1bHRQYXRoLFxuICAgIHdpZHRoSW5QaXhlbHNcbiAgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgY29uc3QgY3dkID0gdmF1bHRQYXRoID8/IGdldFZhdWx0UGF0aCgpID8/IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IHRyYW5zcG9ydE92ZXJyaWRlID8/IGF3YWl0IGdldE9yQ3JlYXRlVHJhbnNwb3J0KGdldFRyYW5zcG9ydE9wdGlvbnMoKSk7XG5cbiAgaWYgKCF0cmFuc3BvcnQuY2FwdHVyZVNjcmVlbnNob3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhcHR1cmVPYnNpZGlhblNjcmVlbnNob3Q6IHRoZSBhY3RpdmUgdHJhbnNwb3J0IGNhbm5vdCBjYXB0dXJlIHNjcmVlbnNob3RzLicpO1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zcG9ydC5jYXB0dXJlU2NyZWVuc2hvdChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8Q2FwdHVyZVNjcmVlbnNob3RQYXJhbXM+KHtcbiAgICBjd2QsXG4gICAgaGVpZ2h0SW5QaXhlbHMsXG4gICAgd2lkdGhJblBpeGVsc1xuICB9KSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiQUFnQkEsT0FBTyxhQUFhO0FBS3BCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyw0QkFBNEI7QUE0Q3JDLGVBQXNCLDBCQUEwQixTQUFpRTtBQUMvRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0EsV0FBVztBQUFBLElBQ1g7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJLFdBQVcsQ0FBQztBQUVoQixRQUFNLE1BQU0sYUFBYSxhQUFhLEtBQUssUUFBUSxJQUFJO0FBQ3ZELFFBQU0sWUFBWSxxQkFBcUIsTUFBTSxxQkFBcUIsb0JBQW9CLENBQUM7QUFFdkYsTUFBSSxDQUFDLFVBQVUsbUJBQW1CO0FBQ2hDLFVBQU0sSUFBSSxNQUFNLDZFQUE2RTtBQUFBLEVBQy9GO0FBRUEsU0FBTyxVQUFVLGtCQUFrQiw0QkFBcUQ7QUFBQSxJQUN0RjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDLENBQUM7QUFDSjsiLAogICJuYW1lcyI6IFtdCn0K
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENhcHR1cmVzIGEgc2NyZWVuc2hvdCBvZiB0aGUgT2JzaWRpYW4gaW5zdGFuY2UgdGhlIGN1cnJlbnQgdGVzdCBjb250ZXh0IGlzXG4gKiBhbHJlYWR5IGRyaXZpbmcuXG4gKlxuICogVGhlIHRyYW5zcG9ydC1sZXZlbCBgY2FwdHVyZVNjcmVlbnNob3RgIG5lZWRzIGEgdHJhbnNwb3J0IGluIGhhbmQsIHdoaWNoIGFcbiAqIHRlc3QgcnVubmluZyB1bmRlciB0aGUgaGFybmVzcydzIGdsb2JhbCBzZXR1cCBuZXZlciBoYXMgXHUyMDE0IHRoZSBpbnN0YW5jZSBpc1xuICogb3duZWQgYnkgdGhhdCBzZXR1cCBhbmQgcmVhY2hlZCB0aHJvdWdoIHRoZSBjb250ZXh0IHByb3ZpZGVyLiBUaGlzIGlzIHRoZVxuICogY29udGV4dC1yZXNvbHZpbmcgZW50cnkgcG9pbnQsIHRoZSBzY3JlZW5zaG90IGNvdW50ZXJwYXJ0IG9mXG4gKiBgZXZhbEluT2JzaWRpYW5gIC8gYHBvbGxJbk9ic2lkaWFuYDogd2l0aCBubyBhcmd1bWVudHMgYXQgYWxsIGl0IGNhcHR1cmVzXG4gKiB3aGF0ZXZlciBpbnN0YW5jZSB0aGUgYWN0aXZlIHByb2plY3QgaXMgZHJpdmluZywgZGVza3RvcCBvciBtb2JpbGUuXG4gKlxuICogSXQgYWxzbyBtYWtlcyB0aGUgZnJhbWUgUkVQUk9EVUNJQkxFIGJlZm9yZSB0YWtpbmcgaXQsIGJ5IGhpZGluZyB0aGUgdmF1bHQnc1xuICogbmFtZSBcdTIwMTQgc2VlIGBoaWRlLXZhdWx0LW5hbWUudHNgIGZvciB3aHkgYSBgdGVtcC12YXVsdC08cmFuZG9tPmAgYmxlZWRzXG4gKiB0aHJvdWdoIHRoZSBjYXB0aW9uIGJhbmQgYW5kIHJld3JpdGVzIGEgY2hlY2tlZC1pbiBQTkcgb24gZXZlcnkgcnVuLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIGNvZGUgKGRyaXZlcyBhIGxpdmUgT2JzaWRpYW4pIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IENhcHR1cmVTY3JlZW5zaG90UGFyYW1zIH0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC5tanMnO1xuXG5pbXBvcnQge1xuICBnZXRUcmFuc3BvcnRPcHRpb25zLFxuICBnZXRWYXVsdFBhdGhcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5pbXBvcnQgeyBoaWRlVmF1bHROYW1lIH0gZnJvbSAnLi9oaWRlLXZhdWx0LW5hbWUubWpzJztcbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJy4vbm9ybWFsaXplLW9wdGlvbmFsLXByb3BlcnRpZXMubWpzJztcbmltcG9ydCB7IGdldE9yQ3JlYXRlVHJhbnNwb3J0IH0gZnJvbSAnLi90cmFuc3BvcnQtZmFjdG9yeS5tanMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBjYXB0dXJlT2JzaWRpYW5TY3JlZW5zaG90fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlT2JzaWRpYW5TY3JlZW5zaG90T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZXhhY3QgaGVpZ2h0IGluIHBpeGVscyB0aGUgY2FwdHVyZWQgaW1hZ2Ugc2hvdWxkIGhhdmUuXG4gICAqXG4gICAqIERlc2t0b3Agb25seSwgYW5kIG9ubHkgbWVhbmluZ2Z1bCB0b2dldGhlciB3aXRoIHtAbGluayB3aWR0aEluUGl4ZWxzfS5cbiAgICogSWdub3JlZCBvbiBtb2JpbGUsIHdoZXJlIHRoZSBpbWFnZSBpcyBhbHdheXMgdGhlIGRldmljZSdzIG5hdGl2ZVxuICAgKiBmcmFtZWJ1ZmZlciBcdTIwMTQgc2l6ZSB0aG9zZSBieSBjaG9vc2luZyBhbiBBVkQgd2l0aCB0aGUgd2FudGVkIHNjcmVlblxuICAgKiBnZW9tZXRyeS5cbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodEluUGl4ZWxzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgdGhlIHZhdWx0J3MgbmFtZSBiZWZvcmUgY2FwdHVyaW5nLCBzbyB0aGUgZnJhbWUgZG9lcyBub3RcbiAgICogZGVwZW5kIG9uIHRoZSByYW5kb20gc3VmZml4IG9mIHRoZSBoYXJuZXNzJ3MgdGVtcG9yYXJ5IHZhdWx0LlxuICAgKlxuICAgKiBBIGRlZmF1bHQgcmF0aGVyIHRoYW4gYSBrbm9iOiByZXByb2R1Y2liaWxpdHkgaXMgd2hhdCBhIGNoZWNrZWQtaW5cbiAgICogc2NyZWVuc2hvdCBpcyBmb3IsIGFuZCB0aGUgcm93IGl0IGNvbGxhcHNlcyBzaXRzIHVuZGVyIHRoZSBjYXB0aW9uIGJhbmQsXG4gICAqIHNvIG5vdGhpbmcgYSByZWFkZXIgc2VlcyBtb3Zlcy4gVHVybiBpdCBvZmYgb25seSB0byBwaG90b2dyYXBoIHRoZSB2YXVsdFxuICAgKiBzd2l0Y2hlciBpdHNlbGYuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSGlkZVZhdWx0TmFtZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSB0cmFuc3BvcnQuIFdoZW4gb21pdHRlZCwgdGhlIHRyYW5zcG9ydCB0aGUgY3VycmVudCB0ZXN0XG4gICAqIGNvbnRleHQgaXMgZHJpdmluZyBpcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNwb3J0PzogT2JzaWRpYW5UcmFuc3BvcnQ7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBwYXRoIHRvIGNhcHR1cmUuIFdoZW4gb21pdHRlZCwgdGhlIGN1cnJlbnQgdGVzdCBjb250ZXh0J3MgdmF1bHRcbiAgICogaXMgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGV4YWN0IHdpZHRoIGluIHBpeGVscyB0aGUgY2FwdHVyZWQgaW1hZ2Ugc2hvdWxkIGhhdmUuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgaGVpZ2h0SW5QaXhlbHN9IFx1MjAxNCB0aGUgdHdvIGFyZSBzZXQgdG9nZXRoZXIgb3Igbm90IGF0IGFsbC5cbiAgICovXG4gIHJlYWRvbmx5IHdpZHRoSW5QaXhlbHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ2FwdHVyZXMgYSBQTkcgc2NyZWVuc2hvdCBvZiB0aGUgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZSwgcmVzb2x2aW5nIHRoZVxuICogdHJhbnNwb3J0IGFuZCB2YXVsdCBmcm9tIHRoZSBjdXJyZW50IHRlc3QgY29udGV4dC5cbiAqXG4gKiBUaGUgdmF1bHQncyBuYW1lIGlzIGhpZGRlbiBmaXJzdCwgc28gdHdvIHJ1bnMgb2YgdGhlIHNhbWUgc3VpdGUgYWdhaW5zdCB0d29cbiAqIGRpZmZlcmVudGx5LW5hbWVkIHRlbXBvcmFyeSB2YXVsdHMgcHJvZHVjZSBieXRlLWlkZW50aWNhbCBQTkdzLiBQYXNzXG4gKiB7QGxpbmsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMuc2hvdWxkSGlkZVZhdWx0TmFtZX0gYXMgYGZhbHNlYCB0b1xuICogcGhvdG9ncmFwaCBpdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIHNpemUsIHRyYW5zcG9ydCBhbmQgdmF1bHQgb3ZlcnJpZGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgcmF3IFBORyBieXRlcy5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGFjdGl2ZSB0cmFuc3BvcnQgY2Fubm90IGNhcHR1cmUgc2NyZWVuc2hvdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYXB0dXJlT2JzaWRpYW5TY3JlZW5zaG90KG9wdGlvbnM/OiBDYXB0dXJlT2JzaWRpYW5TY3JlZW5zaG90T3B0aW9ucyk6IFByb21pc2U8VWludDhBcnJheT4ge1xuICBjb25zdCB7XG4gICAgaGVpZ2h0SW5QaXhlbHMsXG4gICAgc2hvdWxkSGlkZVZhdWx0TmFtZSA9IHRydWUsXG4gICAgdHJhbnNwb3J0OiB0cmFuc3BvcnRPdmVycmlkZSxcbiAgICB2YXVsdFBhdGgsXG4gICAgd2lkdGhJblBpeGVsc1xuICB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICBjb25zdCBjd2QgPSB2YXVsdFBhdGggPz8gZ2V0VmF1bHRQYXRoKCkgPz8gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgdHJhbnNwb3J0ID0gdHJhbnNwb3J0T3ZlcnJpZGUgPz8gYXdhaXQgZ2V0T3JDcmVhdGVUcmFuc3BvcnQoZ2V0VHJhbnNwb3J0T3B0aW9ucygpKTtcblxuICBpZiAoIXRyYW5zcG9ydC5jYXB0dXJlU2NyZWVuc2hvdCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdDogdGhlIGFjdGl2ZSB0cmFuc3BvcnQgY2Fubm90IGNhcHR1cmUgc2NyZWVuc2hvdHMuJyk7XG4gIH1cblxuICBpZiAoc2hvdWxkSGlkZVZhdWx0TmFtZSkge1xuICAgIGF3YWl0IGhpZGVWYXVsdE5hbWUoe1xuICAgICAgdHJhbnNwb3J0LFxuICAgICAgdmF1bHRQYXRoOiBjd2RcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0cmFuc3BvcnQuY2FwdHVyZVNjcmVlbnNob3Qobm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPENhcHR1cmVTY3JlZW5zaG90UGFyYW1zPih7XG4gICAgY3dkLFxuICAgIGhlaWdodEluUGl4ZWxzLFxuICAgIHdpZHRoSW5QaXhlbHNcbiAgfSkpO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBb0JBLE9BQU8sYUFBYTtBQUtwQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsbUNBQW1DO0FBQzVDLFNBQVMsNEJBQTRCO0FBOERyQyxlQUFzQiwwQkFBMEIsU0FBaUU7QUFDL0csUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBLHNCQUFzQjtBQUFBLElBQ3RCLFdBQVc7QUFBQSxJQUNYO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSSxXQUFXLENBQUM7QUFFaEIsUUFBTSxNQUFNLGFBQWEsYUFBYSxLQUFLLFFBQVEsSUFBSTtBQUN2RCxRQUFNLFlBQVkscUJBQXFCLE1BQU0scUJBQXFCLG9CQUFvQixDQUFDO0FBRXZGLE1BQUksQ0FBQyxVQUFVLG1CQUFtQjtBQUNoQyxVQUFNLElBQUksTUFBTSw2RUFBNkU7QUFBQSxFQUMvRjtBQUVBLE1BQUkscUJBQXFCO0FBQ3ZCLFVBQU0sY0FBYztBQUFBLE1BQ2xCO0FBQUEsTUFDQSxXQUFXO0FBQUEsSUFDYixDQUFDO0FBQUEsRUFDSDtBQUVBLFNBQU8sVUFBVSxrQkFBa0IsNEJBQXFEO0FBQUEsSUFDdEY7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQyxDQUFDO0FBQ0o7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -41,10 +41,7 @@ function readPngDimensions(bytes) {
41
41
  };
42
42
  }
43
43
  function readAscii(bytes, offset, length) {
44
- if (bytes.length < offset + length) {
45
- return "";
46
- }
47
- return Buffer.from(bytes.subarray(offset, offset + length)).toString("ascii");
44
+ return bytes.length < offset + length ? "" : Buffer.from(bytes.subarray(offset, offset + length)).toString("ascii");
48
45
  }
49
46
  export {
50
47
  buildDeviceMetricsOverride,
@@ -52,4 +49,4 @@ export {
52
49
  isPng,
53
50
  readPngDimensions
54
51
  };
55
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NhcHR1cmUtc2NyZWVuc2hvdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgaGVscGVycyBmb3Igc2NyZWVuc2hvdCBjYXB0dXJlOiBidWlsZGluZyB0aGUgQ0RQIGRldmljZS1tZXRyaWNzIG92ZXJyaWRlXG4gKiBwYXlsb2FkLCBkZWNvZGluZyBhIGJhc2U2NC1lbmNvZGVkIFBORywgYW5kIHJlYWRpbmcgYSBQTkcncyBwaXhlbCBkaW1lbnNpb25zXG4gKiBvdXQgb2YgaXRzIElIRFIgaGVhZGVyLlxuICpcbiAqIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgdHJhbnNwb3J0cyAod2hpY2ggYXJlIGludGVncmF0aW9uLW9ubHkgYW5kIGV4Y2x1ZGVkXG4gKiBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZSBwYXlsb2FkIHNoYXBlIGFuZCB0aGUgUE5HIHBhcnNpbmcgc3RheSB1bml0LXRlc3RhYmxlIFx1MjAxNFxuICogdGhlIHRyYW5zcG9ydHMgdGhlbXNlbHZlcyBvbmx5IHRhbGsgdG8gQ0RQIC8gQXBwaXVtLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRXhjZXB0IH0gZnJvbSAndHlwZS1mZXN0JztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciBjYXB0dXJpbmcgYSBzY3JlZW5zaG90IG9mIGEgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlU2NyZWVuc2hvdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkgKHZhdWx0IHBhdGgpIGlkZW50aWZ5aW5nIHdoaWNoIE9ic2lkaWFuIHdpbmRvdyB0b1xuICAgKiBjYXB0dXJlLlxuICAgKlxuICAgKiBNaXJyb3JzIHRoZSBgY3dkYCBvZiBhbiBldmFsdWF0aW9uOiBhIGRlc2t0b3AgaW5zdGFuY2UgY2FuIGhvbGQgc2V2ZXJhbFxuICAgKiB2YXVsdCB3aW5kb3dzLCBhbmQgdGhlIGNhcHR1cmUgaGFzIHRvIGJlIHJvdXRlZCB0byB0aGUgcmlnaHQgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBleGFjdCBoZWlnaHQgaW4gcGl4ZWxzIHRoZSBjYXB0dXJlZCBpbWFnZSBzaG91bGQgaGF2ZS5cbiAgICpcbiAgICogRGVza3RvcCBvbmx5LCBhbmQgb25seSBtZWFuaW5nZnVsIHRvZ2V0aGVyIHdpdGgge0BsaW5rIHdpZHRoSW5QaXhlbHN9OiB0aGVcbiAgICogdmlld3BvcnQgaXMgcGlubmVkIHRvIHRoZXNlIG1ldHJpY3MgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgY2FwdHVyZSwgc28gdGhlXG4gICAqIHJlc3VsdGluZyBQTkcgaXMgZXhhY3RseSB0aGlzIHNpemUgd2hhdGV2ZXIgc2l6ZSB0aGUgd2luZG93IGhhcHBlbnMgdG8gYmUuXG4gICAqIE9taXQgYm90aCB0byBjYXB0dXJlIHRoZSB3aW5kb3cgYXQgaXRzIG5hdHVyYWwgc2l6ZS5cbiAgICpcbiAgICogSWdub3JlZCBieSB0aGUgQXBwaXVtIHRyYW5zcG9ydCwgd2hpY2ggY2FuIG9ubHkgcmV0dXJuIHRoZSBkZXZpY2UncyBuYXRpdmVcbiAgICogZnJhbWVidWZmZXIgXHUyMDE0IHNpemUgYSBtb2JpbGUgY2FwdHVyZSBieSBjaG9vc2luZyBhbiBBVkQgd2l0aCB0aGUgd2FudGVkXG4gICAqIHNjcmVlbiBnZW9tZXRyeSBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVpZ2h0SW5QaXhlbHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBleGFjdCB3aWR0aCBpbiBwaXhlbHMgdGhlIGNhcHR1cmVkIGltYWdlIHNob3VsZCBoYXZlLlxuICAgKlxuICAgKiBTZWUge0BsaW5rIGhlaWdodEluUGl4ZWxzfSBcdTIwMTQgdGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyIG9yIG5vdCBhdCBhbGwuXG4gICAqL1xuICByZWFkb25seSB3aWR0aEluUGl4ZWxzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBwaXhlbCBkaW1lbnNpb25zIHJlYWQgb3V0IG9mIGEgUE5HJ3MgSUhEUiBoZWFkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5nRGltZW5zaW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UgaGVpZ2h0IGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodEluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBpbWFnZSB3aWR0aCBpbiBwaXhlbHMuXG4gICAqL1xuICByZWFkb25seSB3aWR0aEluUGl4ZWxzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEFTQ0lJIG1hcmtlciBpbnNpZGUgYSBQTkcncyA4LWJ5dGUgc2lnbmF0dXJlLlxuICpcbiAqIE1hdGNoZWQgYXMgdGV4dCByYXRoZXIgdGhhbiBhcyB0aGUgcmF3IHNpZ25hdHVyZSBieXRlcyBzbyB0aGlzIGZpbGUgc3RheXNcbiAqIHB1cmUgQVNDSUkgXHUyMDE0IHR3byBvZiB0aG9zZSBlaWdodCBieXRlcyBhcmUgdW5wcmludGFibGUsIGFuZCBhIGxpdGVyYWwgYDB4MUFgXG4gKiBpbiBhIHNvdXJjZSBmaWxlIGlzIHJlYWQgYXMgZW5kLW9mLWZpbGUgYnkgc29tZSBXaW5kb3dzIHRvb2xpbmcuXG4gKi9cbmNvbnN0IFBOR19NQVJLRVIgPSAnUE5HJztcblxuLyoqXG4gKiBCeXRlIG9mZnNldCBvZiB7QGxpbmsgUE5HX01BUktFUn0sIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzaWduYXR1cmUncyBsZWFkaW5nXG4gKiB1bnByaW50YWJsZSBieXRlLlxuICovXG5jb25zdCBQTkdfTUFSS0VSX09GRlNFVCA9IDE7XG5cbi8qKlxuICogVGhlIElIRFIgY2h1bmsncyB0eXBlIG1hcmtlci5cbiAqXG4gKiBSZXF1aXJlZCBhbG9uZ3NpZGUge0BsaW5rIFBOR19NQVJLRVJ9IGJlY2F1c2UgdGhlIGRpbWVuc2lvbnMgYXJlIHJlYWQgb3V0IG9mXG4gKiBleGFjdGx5IHRoYXQgY2h1bmssIHNvIGl0cyBwcmVzZW5jZSBpcyB3aGF0IGFjdHVhbGx5IGhhcyB0byBob2xkIGhlcmUuXG4gKi9cbmNvbnN0IFBOR19JSERSX01BUktFUiA9ICdJSERSJztcblxuLyoqXG4gKiBCeXRlIG9mZnNldCBvZiB7QGxpbmsgUE5HX0lIRFJfTUFSS0VSfTogdGhlIDgtYnl0ZSBzaWduYXR1cmUgcGx1cyB0aGUgY2h1bmsnc1xuICogNC1ieXRlIGxlbmd0aCBmaWVsZC5cbiAqL1xuY29uc3QgUE5HX0lIRFJfTUFSS0VSX09GRlNFVCA9IDEyO1xuXG4vKipcbiAqIEJ5dGUgb2Zmc2V0IG9mIHRoZSBiaWctZW5kaWFuIGB3aWR0aGAgZmllbGQsIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBJSERSIHR5cGUuXG4gKi9cbmNvbnN0IFBOR19XSURUSF9PRkZTRVQgPSAxNjtcblxuLyoqXG4gKiBCeXRlIG9mZnNldCBvZiB0aGUgYmlnLWVuZGlhbiBgaGVpZ2h0YCBmaWVsZCwgaW1tZWRpYXRlbHkgYWZ0ZXIgYHdpZHRoYC5cbiAqL1xuY29uc3QgUE5HX0hFSUdIVF9PRkZTRVQgPSAyMDtcblxuLyoqXG4gKiBUaGUgc2hvcnRlc3QgcHJlZml4IGZyb20gd2hpY2gge0BsaW5rIHJlYWRQbmdEaW1lbnNpb25zfSBjYW4gcmVhZDogZXZlcnl0aGluZ1xuICogdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgSUhEUiBgaGVpZ2h0YCBmaWVsZC5cbiAqL1xuY29uc3QgUE5HX0hFQURFUl9NSU5fTEVOR1RIID0gMjQ7XG5cbi8qKlxuICogRGV2aWNlIHNjYWxlIGZhY3RvciBmb3IgYSBjYXB0dXJlLlxuICpcbiAqIEFsd2F5cyBgMWAsIHNvIHRoZSBlbWl0dGVkIFBORyBpcyBleGFjdGx5IHRoZSByZXF1ZXN0ZWQgQ1NTIHBpeGVsIHNpemUgcmF0aGVyXG4gKiB0aGFuIGEgbXVsdGlwbGUgb2YgaXQuXG4gKi9cbmNvbnN0IENBUFRVUkVfREVWSUNFX1NDQUxFX0ZBQ1RPUiA9IDE7XG5cbi8qKlxuICogQnVpbGRzIHRoZSBgRW11bGF0aW9uLnNldERldmljZU1ldHJpY3NPdmVycmlkZWAgcGF5bG9hZCB0aGF0IHBpbnMgYSBkZXNrdG9wXG4gKiBjYXB0dXJlIHRvIGFuIGV4YWN0IHBpeGVsIHNpemUuXG4gKlxuICogVGFrZXMgb25seSB0aGUgc2l6ZSBoYWxmIG9mIHtAbGluayBDYXB0dXJlU2NyZWVuc2hvdFBhcmFtc30gXHUyMDE0IHJvdXRpbmcgdGhlXG4gKiBjYXB0dXJlIHRvIGEgd2luZG93IGlzIHRoZSB0cmFuc3BvcnQncyBqb2IsIG5vdCB0aGUgcGF5bG9hZCdzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcmVxdWVzdGVkIGNhcHR1cmUgc2l6ZS5cbiAqIEByZXR1cm5zIFRoZSBDRFAgcGF5bG9hZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBubyBzaXplIHdhcyByZXF1ZXN0ZWQgKGNhcHR1cmUgdGhlIHdpbmRvdyBhcyBpdCBpcykuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGV4YWN0bHkgb25lIG9mIHRoZSB0d28gZGltZW5zaW9ucyBpcyBnaXZlbiBcdTIwMTQgYSBoYWxmLXNwZWNpZmllZCBzaXplIGNhbm5vdCBiZSBob25vdXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRGV2aWNlTWV0cmljc092ZXJyaWRlKHBhcmFtczogRXhjZXB0PENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLCAnY3dkJz4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgaGVpZ2h0SW5QaXhlbHMsIHdpZHRoSW5QaXhlbHMgfSA9IHBhcmFtcztcbiAgaWYgKGhlaWdodEluUGl4ZWxzID09PSB1bmRlZmluZWQgJiYgd2lkdGhJblBpeGVscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChoZWlnaHRJblBpeGVscyA9PT0gdW5kZWZpbmVkIHx8IHdpZHRoSW5QaXhlbHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2FwdHVyZVNjcmVlbnNob3Q6IHdpZHRoSW5QaXhlbHMgYW5kIGhlaWdodEluUGl4ZWxzIG11c3QgYmUgZ2l2ZW4gdG9nZXRoZXIuJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRldmljZVNjYWxlRmFjdG9yOiBDQVBUVVJFX0RFVklDRV9TQ0FMRV9GQUNUT1IsXG4gICAgaGVpZ2h0OiBoZWlnaHRJblBpeGVscyxcbiAgICBtb2JpbGU6IGZhbHNlLFxuICAgIHdpZHRoOiB3aWR0aEluUGl4ZWxzXG4gIH07XG59XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgYmFzZTY0IHBheWxvYWQgYm90aCBDRFAgKGBQYWdlLmNhcHR1cmVTY3JlZW5zaG90YCkgYW5kIEFwcGl1bVxuICogKGB0YWtlU2NyZWVuc2hvdGApIHJldHVybiBpbnRvIHJhdyBQTkcgYnl0ZXMuXG4gKlxuICogQHBhcmFtIGJhc2U2NCAtIFRoZSBiYXNlNjQtZW5jb2RlZCBpbWFnZSBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgYnl0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVCYXNlNjRQbmcoYmFzZTY0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKTtcbn1cblxuLyoqXG4gKiBEZWNpZGVzIHdoZXRoZXIgdGhlIGdpdmVuIGJ5dGVzIGFyZSBhIFBORyBjYXJyeWluZyBhbiBJSERSIGNodW5rLlxuICpcbiAqIFVzZWQgdG8gZmFpbCBhIGNhcHR1cmUgbG91ZGx5IHdoZW4gYSB0cmFuc3BvcnQgaGFuZHMgYmFjayBzb21ldGhpbmcgdGhhdCBpc1xuICogbm90IGFuIGltYWdlLCByYXRoZXIgdGhhbiB3cml0aW5nIGEgY29ycnVwdCBmaWxlIHRvIGRpc2suXG4gKlxuICogQHBhcmFtIGJ5dGVzIC0gVGhlIGJ5dGVzIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGJ5dGVzIGFyZSBhIFBORy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG5nKGJ5dGVzOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gIHJldHVybiByZWFkQXNjaWkoYnl0ZXMsIFBOR19NQVJLRVJfT0ZGU0VULCBQTkdfTUFSS0VSLmxlbmd0aCkgPT09IFBOR19NQVJLRVJcbiAgICAmJiByZWFkQXNjaWkoYnl0ZXMsIFBOR19JSERSX01BUktFUl9PRkZTRVQsIFBOR19JSERSX01BUktFUi5sZW5ndGgpID09PSBQTkdfSUhEUl9NQVJLRVI7XG59XG5cbi8qKlxuICogUmVhZHMgYSBQTkcncyBwaXhlbCBkaW1lbnNpb25zIGZyb20gaXRzIElIRFIgaGVhZGVyLlxuICpcbiAqIFRoZSB3aG9sZSBwb2ludCBpcyB2ZXJpZmljYXRpb246IGEgY2FwdHVyZSB0aGF0IHNpbGVudGx5IGNvbWVzIGJhY2sgYXQgdGhlXG4gKiB3cm9uZyBzaXplIGlzIHRoZSBmYWlsdXJlIG1vZGUgdGhhdCBwcm9kdWNlcyBhbiBvZmYtc3BlYyBzY3JlZW5zaG90IHNldCwgc29cbiAqIHRoZSBzaXplIGlzIHJlYWQgYmFjayBmcm9tIHRoZSBieXRlcyByYXRoZXIgdGhhbiBhc3N1bWVkIGZyb20gdGhlIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIGJ5dGVzIC0gVGhlIFBORyBieXRlcy5cbiAqIEByZXR1cm5zIFRoZSBpbWFnZSdzIHdpZHRoIGFuZCBoZWlnaHQgaW4gcGl4ZWxzLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYnl0ZXMgYXJlIG5vdCBhIFBORywgb3IgYXJlIHRvbyBzaG9ydCB0byBjYXJyeSBhbiBJSERSIGhlYWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRQbmdEaW1lbnNpb25zKGJ5dGVzOiBVaW50OEFycmF5KTogUG5nRGltZW5zaW9ucyB7XG4gIGlmICghaXNQbmcoYnl0ZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZWFkUG5nRGltZW5zaW9uczogdGhlIGdpdmVuIGJ5dGVzIGFyZSBub3QgYSBQTkcuJyk7XG4gIH1cblxuICBpZiAoYnl0ZXMubGVuZ3RoIDwgUE5HX0hFQURFUl9NSU5fTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZWFkUG5nRGltZW5zaW9uczogYSBQTkcgaGVhZGVyIG5lZWRzIGF0IGxlYXN0ICR7U3RyaW5nKFBOR19IRUFERVJfTUlOX0xFTkdUSCl9IGJ5dGVzLCBnb3QgJHtTdHJpbmcoYnl0ZXMubGVuZ3RoKX0uYCk7XG4gIH1cblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ5dGVzLmJ1ZmZlciwgYnl0ZXMuYnl0ZU9mZnNldCwgYnl0ZXMuYnl0ZUxlbmd0aCk7XG4gIHJldHVybiB7XG4gICAgaGVpZ2h0SW5QaXhlbHM6IHZpZXcuZ2V0VWludDMyKFBOR19IRUlHSFRfT0ZGU0VUKSxcbiAgICB3aWR0aEluUGl4ZWxzOiB2aWV3LmdldFVpbnQzMihQTkdfV0lEVEhfT0ZGU0VUKVxuICB9O1xufVxuXG4vKipcbiAqIFJlYWRzIGEgZml4ZWQtbGVuZ3RoIEFTQ0lJIG1hcmtlciBvdXQgb2YgYSBieXRlIGJ1ZmZlci5cbiAqXG4gKiBAcGFyYW0gYnl0ZXMgLSBUaGUgYnl0ZXMgdG8gcmVhZCBmcm9tLlxuICogQHBhcmFtIG9mZnNldCAtIEJ5dGUgb2Zmc2V0IHRoZSBtYXJrZXIgc3RhcnRzIGF0LlxuICogQHBhcmFtIGxlbmd0aCAtIE1hcmtlciBsZW5ndGggaW4gYnl0ZXMuXG4gKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBtYXJrZXIsIG9yIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZSBidWZmZXIgaXMgdG9vIHNob3J0IHRvIGhvbGQgaXQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRBc2NpaShieXRlczogVWludDhBcnJheSwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKGJ5dGVzLmxlbmd0aCA8IG9mZnNldCArIGxlbmd0aCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShieXRlcy5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCkpLnRvU3RyaW5nKCdhc2NpaScpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBdUVBLE1BQU0sYUFBYTtBQU1uQixNQUFNLG9CQUFvQjtBQVExQixNQUFNLGtCQUFrQjtBQU14QixNQUFNLHlCQUF5QjtBQUsvQixNQUFNLG1CQUFtQjtBQUt6QixNQUFNLG9CQUFvQjtBQU0xQixNQUFNLHdCQUF3QjtBQVE5QixNQUFNLDhCQUE4QjtBQWE3QixTQUFTLDJCQUEyQixRQUFxRjtBQUM5SCxRQUFNLEVBQUUsZ0JBQWdCLGNBQWMsSUFBSTtBQUMxQyxNQUFJLG1CQUFtQixVQUFhLGtCQUFrQixRQUFXO0FBQy9ELFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxtQkFBbUIsVUFBYSxrQkFBa0IsUUFBVztBQUMvRCxVQUFNLElBQUksTUFBTSw2RUFBNkU7QUFBQSxFQUMvRjtBQUVBLFNBQU87QUFBQSxJQUNMLG1CQUFtQjtBQUFBLElBQ25CLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxFQUNUO0FBQ0Y7QUFTTyxTQUFTLGdCQUFnQixRQUE0QjtBQUMxRCxTQUFPLElBQUksV0FBVyxPQUFPLEtBQUssUUFBUSxRQUFRLENBQUM7QUFDckQ7QUFXTyxTQUFTLE1BQU0sT0FBNEI7QUFDaEQsU0FBTyxVQUFVLE9BQU8sbUJBQW1CLFdBQVcsTUFBTSxNQUFNLGNBQzdELFVBQVUsT0FBTyx3QkFBd0IsZ0JBQWdCLE1BQU0sTUFBTTtBQUM1RTtBQWFPLFNBQVMsa0JBQWtCLE9BQWtDO0FBQ2xFLE1BQUksQ0FBQyxNQUFNLEtBQUssR0FBRztBQUNqQixVQUFNLElBQUksTUFBTSxtREFBbUQ7QUFBQSxFQUNyRTtBQUVBLE1BQUksTUFBTSxTQUFTLHVCQUF1QjtBQUN4QyxVQUFNLElBQUksTUFBTSxrREFBa0QsT0FBTyxxQkFBcUIsQ0FBQyxlQUFlLE9BQU8sTUFBTSxNQUFNLENBQUMsR0FBRztBQUFBLEVBQ3ZJO0FBRUEsUUFBTSxPQUFPLElBQUksU0FBUyxNQUFNLFFBQVEsTUFBTSxZQUFZLE1BQU0sVUFBVTtBQUMxRSxTQUFPO0FBQUEsSUFDTCxnQkFBZ0IsS0FBSyxVQUFVLGlCQUFpQjtBQUFBLElBQ2hELGVBQWUsS0FBSyxVQUFVLGdCQUFnQjtBQUFBLEVBQ2hEO0FBQ0Y7QUFVQSxTQUFTLFVBQVUsT0FBbUIsUUFBZ0IsUUFBd0I7QUFDNUUsTUFBSSxNQUFNLFNBQVMsU0FBUyxRQUFRO0FBQ2xDLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxPQUFPLEtBQUssTUFBTSxTQUFTLFFBQVEsU0FBUyxNQUFNLENBQUMsRUFBRSxTQUFTLE9BQU87QUFDOUU7IiwKICAibmFtZXMiOiBbXQp9Cg==
52
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NhcHR1cmUtc2NyZWVuc2hvdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgaGVscGVycyBmb3Igc2NyZWVuc2hvdCBjYXB0dXJlOiBidWlsZGluZyB0aGUgQ0RQIGRldmljZS1tZXRyaWNzIG92ZXJyaWRlXG4gKiBwYXlsb2FkLCBkZWNvZGluZyBhIGJhc2U2NC1lbmNvZGVkIFBORywgYW5kIHJlYWRpbmcgYSBQTkcncyBwaXhlbCBkaW1lbnNpb25zXG4gKiBvdXQgb2YgaXRzIElIRFIgaGVhZGVyLlxuICpcbiAqIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgdHJhbnNwb3J0cyAod2hpY2ggYXJlIGludGVncmF0aW9uLW9ubHkgYW5kIGV4Y2x1ZGVkXG4gKiBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZSBwYXlsb2FkIHNoYXBlIGFuZCB0aGUgUE5HIHBhcnNpbmcgc3RheSB1bml0LXRlc3RhYmxlIFx1MjAxNFxuICogdGhlIHRyYW5zcG9ydHMgdGhlbXNlbHZlcyBvbmx5IHRhbGsgdG8gQ0RQIC8gQXBwaXVtLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRXhjZXB0IH0gZnJvbSAndHlwZS1mZXN0JztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciBjYXB0dXJpbmcgYSBzY3JlZW5zaG90IG9mIGEgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlU2NyZWVuc2hvdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkgKHZhdWx0IHBhdGgpIGlkZW50aWZ5aW5nIHdoaWNoIE9ic2lkaWFuIHdpbmRvdyB0b1xuICAgKiBjYXB0dXJlLlxuICAgKlxuICAgKiBNaXJyb3JzIHRoZSBgY3dkYCBvZiBhbiBldmFsdWF0aW9uOiBhIGRlc2t0b3AgaW5zdGFuY2UgY2FuIGhvbGQgc2V2ZXJhbFxuICAgKiB2YXVsdCB3aW5kb3dzLCBhbmQgdGhlIGNhcHR1cmUgaGFzIHRvIGJlIHJvdXRlZCB0byB0aGUgcmlnaHQgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBleGFjdCBoZWlnaHQgaW4gcGl4ZWxzIHRoZSBjYXB0dXJlZCBpbWFnZSBzaG91bGQgaGF2ZS5cbiAgICpcbiAgICogRGVza3RvcCBvbmx5LCBhbmQgb25seSBtZWFuaW5nZnVsIHRvZ2V0aGVyIHdpdGgge0BsaW5rIHdpZHRoSW5QaXhlbHN9OiB0aGVcbiAgICogdmlld3BvcnQgaXMgcGlubmVkIHRvIHRoZXNlIG1ldHJpY3MgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgY2FwdHVyZSwgc28gdGhlXG4gICAqIHJlc3VsdGluZyBQTkcgaXMgZXhhY3RseSB0aGlzIHNpemUgd2hhdGV2ZXIgc2l6ZSB0aGUgd2luZG93IGhhcHBlbnMgdG8gYmUuXG4gICAqIE9taXQgYm90aCB0byBjYXB0dXJlIHRoZSB3aW5kb3cgYXQgaXRzIG5hdHVyYWwgc2l6ZS5cbiAgICpcbiAgICogSWdub3JlZCBieSB0aGUgQXBwaXVtIHRyYW5zcG9ydCwgd2hpY2ggY2FuIG9ubHkgcmV0dXJuIHRoZSBkZXZpY2UncyBuYXRpdmVcbiAgICogZnJhbWVidWZmZXIgXHUyMDE0IHNpemUgYSBtb2JpbGUgY2FwdHVyZSBieSBjaG9vc2luZyBhbiBBVkQgd2l0aCB0aGUgd2FudGVkXG4gICAqIHNjcmVlbiBnZW9tZXRyeSBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVpZ2h0SW5QaXhlbHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBleGFjdCB3aWR0aCBpbiBwaXhlbHMgdGhlIGNhcHR1cmVkIGltYWdlIHNob3VsZCBoYXZlLlxuICAgKlxuICAgKiBTZWUge0BsaW5rIGhlaWdodEluUGl4ZWxzfSBcdTIwMTQgdGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyIG9yIG5vdCBhdCBhbGwuXG4gICAqL1xuICByZWFkb25seSB3aWR0aEluUGl4ZWxzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBwaXhlbCBkaW1lbnNpb25zIHJlYWQgb3V0IG9mIGEgUE5HJ3MgSUhEUiBoZWFkZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG5nRGltZW5zaW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UgaGVpZ2h0IGluIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodEluUGl4ZWxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBpbWFnZSB3aWR0aCBpbiBwaXhlbHMuXG4gICAqL1xuICByZWFkb25seSB3aWR0aEluUGl4ZWxzOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEFTQ0lJIG1hcmtlciBpbnNpZGUgYSBQTkcncyA4LWJ5dGUgc2lnbmF0dXJlLlxuICpcbiAqIE1hdGNoZWQgYXMgdGV4dCByYXRoZXIgdGhhbiBhcyB0aGUgcmF3IHNpZ25hdHVyZSBieXRlcyBzbyB0aGlzIGZpbGUgc3RheXNcbiAqIHB1cmUgQVNDSUkgXHUyMDE0IHR3byBvZiB0aG9zZSBlaWdodCBieXRlcyBhcmUgdW5wcmludGFibGUsIGFuZCBhIGxpdGVyYWwgYDB4MUFgXG4gKiBpbiBhIHNvdXJjZSBmaWxlIGlzIHJlYWQgYXMgZW5kLW9mLWZpbGUgYnkgc29tZSBXaW5kb3dzIHRvb2xpbmcuXG4gKi9cbmNvbnN0IFBOR19NQVJLRVIgPSAnUE5HJztcblxuLyoqXG4gKiBCeXRlIG9mZnNldCBvZiB7QGxpbmsgUE5HX01BUktFUn0sIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzaWduYXR1cmUncyBsZWFkaW5nXG4gKiB1bnByaW50YWJsZSBieXRlLlxuICovXG5jb25zdCBQTkdfTUFSS0VSX09GRlNFVCA9IDE7XG5cbi8qKlxuICogVGhlIElIRFIgY2h1bmsncyB0eXBlIG1hcmtlci5cbiAqXG4gKiBSZXF1aXJlZCBhbG9uZ3NpZGUge0BsaW5rIFBOR19NQVJLRVJ9IGJlY2F1c2UgdGhlIGRpbWVuc2lvbnMgYXJlIHJlYWQgb3V0IG9mXG4gKiBleGFjdGx5IHRoYXQgY2h1bmssIHNvIGl0cyBwcmVzZW5jZSBpcyB3aGF0IGFjdHVhbGx5IGhhcyB0byBob2xkIGhlcmUuXG4gKi9cbmNvbnN0IFBOR19JSERSX01BUktFUiA9ICdJSERSJztcblxuLyoqXG4gKiBCeXRlIG9mZnNldCBvZiB7QGxpbmsgUE5HX0lIRFJfTUFSS0VSfTogdGhlIDgtYnl0ZSBzaWduYXR1cmUgcGx1cyB0aGUgY2h1bmsnc1xuICogNC1ieXRlIGxlbmd0aCBmaWVsZC5cbiAqL1xuY29uc3QgUE5HX0lIRFJfTUFSS0VSX09GRlNFVCA9IDEyO1xuXG4vKipcbiAqIEJ5dGUgb2Zmc2V0IG9mIHRoZSBiaWctZW5kaWFuIGB3aWR0aGAgZmllbGQsIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBJSERSIHR5cGUuXG4gKi9cbmNvbnN0IFBOR19XSURUSF9PRkZTRVQgPSAxNjtcblxuLyoqXG4gKiBCeXRlIG9mZnNldCBvZiB0aGUgYmlnLWVuZGlhbiBgaGVpZ2h0YCBmaWVsZCwgaW1tZWRpYXRlbHkgYWZ0ZXIgYHdpZHRoYC5cbiAqL1xuY29uc3QgUE5HX0hFSUdIVF9PRkZTRVQgPSAyMDtcblxuLyoqXG4gKiBUaGUgc2hvcnRlc3QgcHJlZml4IGZyb20gd2hpY2gge0BsaW5rIHJlYWRQbmdEaW1lbnNpb25zfSBjYW4gcmVhZDogZXZlcnl0aGluZ1xuICogdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgSUhEUiBgaGVpZ2h0YCBmaWVsZC5cbiAqL1xuY29uc3QgUE5HX0hFQURFUl9NSU5fTEVOR1RIID0gMjQ7XG5cbi8qKlxuICogRGV2aWNlIHNjYWxlIGZhY3RvciBmb3IgYSBjYXB0dXJlLlxuICpcbiAqIEFsd2F5cyBgMWAsIHNvIHRoZSBlbWl0dGVkIFBORyBpcyBleGFjdGx5IHRoZSByZXF1ZXN0ZWQgQ1NTIHBpeGVsIHNpemUgcmF0aGVyXG4gKiB0aGFuIGEgbXVsdGlwbGUgb2YgaXQuXG4gKi9cbmNvbnN0IENBUFRVUkVfREVWSUNFX1NDQUxFX0ZBQ1RPUiA9IDE7XG5cbi8qKlxuICogQnVpbGRzIHRoZSBgRW11bGF0aW9uLnNldERldmljZU1ldHJpY3NPdmVycmlkZWAgcGF5bG9hZCB0aGF0IHBpbnMgYSBkZXNrdG9wXG4gKiBjYXB0dXJlIHRvIGFuIGV4YWN0IHBpeGVsIHNpemUuXG4gKlxuICogVGFrZXMgb25seSB0aGUgc2l6ZSBoYWxmIG9mIHtAbGluayBDYXB0dXJlU2NyZWVuc2hvdFBhcmFtc30gXHUyMDE0IHJvdXRpbmcgdGhlXG4gKiBjYXB0dXJlIHRvIGEgd2luZG93IGlzIHRoZSB0cmFuc3BvcnQncyBqb2IsIG5vdCB0aGUgcGF5bG9hZCdzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcmVxdWVzdGVkIGNhcHR1cmUgc2l6ZS5cbiAqIEByZXR1cm5zIFRoZSBDRFAgcGF5bG9hZCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBubyBzaXplIHdhcyByZXF1ZXN0ZWQgKGNhcHR1cmUgdGhlIHdpbmRvdyBhcyBpdCBpcykuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGV4YWN0bHkgb25lIG9mIHRoZSB0d28gZGltZW5zaW9ucyBpcyBnaXZlbiBcdTIwMTQgYSBoYWxmLXNwZWNpZmllZCBzaXplIGNhbm5vdCBiZSBob25vdXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRGV2aWNlTWV0cmljc092ZXJyaWRlKHBhcmFtczogRXhjZXB0PENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLCAnY3dkJz4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgaGVpZ2h0SW5QaXhlbHMsIHdpZHRoSW5QaXhlbHMgfSA9IHBhcmFtcztcbiAgaWYgKGhlaWdodEluUGl4ZWxzID09PSB1bmRlZmluZWQgJiYgd2lkdGhJblBpeGVscyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChoZWlnaHRJblBpeGVscyA9PT0gdW5kZWZpbmVkIHx8IHdpZHRoSW5QaXhlbHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2FwdHVyZVNjcmVlbnNob3Q6IHdpZHRoSW5QaXhlbHMgYW5kIGhlaWdodEluUGl4ZWxzIG11c3QgYmUgZ2l2ZW4gdG9nZXRoZXIuJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRldmljZVNjYWxlRmFjdG9yOiBDQVBUVVJFX0RFVklDRV9TQ0FMRV9GQUNUT1IsXG4gICAgaGVpZ2h0OiBoZWlnaHRJblBpeGVscyxcbiAgICBtb2JpbGU6IGZhbHNlLFxuICAgIHdpZHRoOiB3aWR0aEluUGl4ZWxzXG4gIH07XG59XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgYmFzZTY0IHBheWxvYWQgYm90aCBDRFAgKGBQYWdlLmNhcHR1cmVTY3JlZW5zaG90YCkgYW5kIEFwcGl1bVxuICogKGB0YWtlU2NyZWVuc2hvdGApIHJldHVybiBpbnRvIHJhdyBQTkcgYnl0ZXMuXG4gKlxuICogQHBhcmFtIGJhc2U2NCAtIFRoZSBiYXNlNjQtZW5jb2RlZCBpbWFnZSBkYXRhLlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgYnl0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVCYXNlNjRQbmcoYmFzZTY0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpKTtcbn1cblxuLyoqXG4gKiBEZWNpZGVzIHdoZXRoZXIgdGhlIGdpdmVuIGJ5dGVzIGFyZSBhIFBORyBjYXJyeWluZyBhbiBJSERSIGNodW5rLlxuICpcbiAqIFVzZWQgdG8gZmFpbCBhIGNhcHR1cmUgbG91ZGx5IHdoZW4gYSB0cmFuc3BvcnQgaGFuZHMgYmFjayBzb21ldGhpbmcgdGhhdCBpc1xuICogbm90IGFuIGltYWdlLCByYXRoZXIgdGhhbiB3cml0aW5nIGEgY29ycnVwdCBmaWxlIHRvIGRpc2suXG4gKlxuICogQHBhcmFtIGJ5dGVzIC0gVGhlIGJ5dGVzIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGJ5dGVzIGFyZSBhIFBORy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG5nKGJ5dGVzOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gIHJldHVybiByZWFkQXNjaWkoYnl0ZXMsIFBOR19NQVJLRVJfT0ZGU0VULCBQTkdfTUFSS0VSLmxlbmd0aCkgPT09IFBOR19NQVJLRVJcbiAgICAmJiByZWFkQXNjaWkoYnl0ZXMsIFBOR19JSERSX01BUktFUl9PRkZTRVQsIFBOR19JSERSX01BUktFUi5sZW5ndGgpID09PSBQTkdfSUhEUl9NQVJLRVI7XG59XG5cbi8qKlxuICogUmVhZHMgYSBQTkcncyBwaXhlbCBkaW1lbnNpb25zIGZyb20gaXRzIElIRFIgaGVhZGVyLlxuICpcbiAqIFRoZSB3aG9sZSBwb2ludCBpcyB2ZXJpZmljYXRpb246IGEgY2FwdHVyZSB0aGF0IHNpbGVudGx5IGNvbWVzIGJhY2sgYXQgdGhlXG4gKiB3cm9uZyBzaXplIGlzIHRoZSBmYWlsdXJlIG1vZGUgdGhhdCBwcm9kdWNlcyBhbiBvZmYtc3BlYyBzY3JlZW5zaG90IHNldCwgc29cbiAqIHRoZSBzaXplIGlzIHJlYWQgYmFjayBmcm9tIHRoZSBieXRlcyByYXRoZXIgdGhhbiBhc3N1bWVkIGZyb20gdGhlIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIGJ5dGVzIC0gVGhlIFBORyBieXRlcy5cbiAqIEByZXR1cm5zIFRoZSBpbWFnZSdzIHdpZHRoIGFuZCBoZWlnaHQgaW4gcGl4ZWxzLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYnl0ZXMgYXJlIG5vdCBhIFBORywgb3IgYXJlIHRvbyBzaG9ydCB0byBjYXJyeSBhbiBJSERSIGhlYWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRQbmdEaW1lbnNpb25zKGJ5dGVzOiBVaW50OEFycmF5KTogUG5nRGltZW5zaW9ucyB7XG4gIGlmICghaXNQbmcoYnl0ZXMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZWFkUG5nRGltZW5zaW9uczogdGhlIGdpdmVuIGJ5dGVzIGFyZSBub3QgYSBQTkcuJyk7XG4gIH1cblxuICBpZiAoYnl0ZXMubGVuZ3RoIDwgUE5HX0hFQURFUl9NSU5fTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZWFkUG5nRGltZW5zaW9uczogYSBQTkcgaGVhZGVyIG5lZWRzIGF0IGxlYXN0ICR7U3RyaW5nKFBOR19IRUFERVJfTUlOX0xFTkdUSCl9IGJ5dGVzLCBnb3QgJHtTdHJpbmcoYnl0ZXMubGVuZ3RoKX0uYCk7XG4gIH1cblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ5dGVzLmJ1ZmZlciwgYnl0ZXMuYnl0ZU9mZnNldCwgYnl0ZXMuYnl0ZUxlbmd0aCk7XG4gIHJldHVybiB7XG4gICAgaGVpZ2h0SW5QaXhlbHM6IHZpZXcuZ2V0VWludDMyKFBOR19IRUlHSFRfT0ZGU0VUKSxcbiAgICB3aWR0aEluUGl4ZWxzOiB2aWV3LmdldFVpbnQzMihQTkdfV0lEVEhfT0ZGU0VUKVxuICB9O1xufVxuXG4vKipcbiAqIFJlYWRzIGEgZml4ZWQtbGVuZ3RoIEFTQ0lJIG1hcmtlciBvdXQgb2YgYSBieXRlIGJ1ZmZlci5cbiAqXG4gKiBAcGFyYW0gYnl0ZXMgLSBUaGUgYnl0ZXMgdG8gcmVhZCBmcm9tLlxuICogQHBhcmFtIG9mZnNldCAtIEJ5dGUgb2Zmc2V0IHRoZSBtYXJrZXIgc3RhcnRzIGF0LlxuICogQHBhcmFtIGxlbmd0aCAtIE1hcmtlciBsZW5ndGggaW4gYnl0ZXMuXG4gKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBtYXJrZXIsIG9yIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRoZSBidWZmZXIgaXMgdG9vIHNob3J0IHRvIGhvbGQgaXQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRBc2NpaShieXRlczogVWludDhBcnJheSwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGJ5dGVzLmxlbmd0aCA8IG9mZnNldCArIGxlbmd0aCA/ICcnIDogQnVmZmVyLmZyb20oYnl0ZXMuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpKS50b1N0cmluZygnYXNjaWknKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXVFQSxNQUFNLGFBQWE7QUFNbkIsTUFBTSxvQkFBb0I7QUFRMUIsTUFBTSxrQkFBa0I7QUFNeEIsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSxtQkFBbUI7QUFLekIsTUFBTSxvQkFBb0I7QUFNMUIsTUFBTSx3QkFBd0I7QUFROUIsTUFBTSw4QkFBOEI7QUFhN0IsU0FBUywyQkFBMkIsUUFBcUY7QUFDOUgsUUFBTSxFQUFFLGdCQUFnQixjQUFjLElBQUk7QUFDMUMsTUFBSSxtQkFBbUIsVUFBYSxrQkFBa0IsUUFBVztBQUMvRCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksbUJBQW1CLFVBQWEsa0JBQWtCLFFBQVc7QUFDL0QsVUFBTSxJQUFJLE1BQU0sNkVBQTZFO0FBQUEsRUFDL0Y7QUFFQSxTQUFPO0FBQUEsSUFDTCxtQkFBbUI7QUFBQSxJQUNuQixRQUFRO0FBQUEsSUFDUixRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsRUFDVDtBQUNGO0FBU08sU0FBUyxnQkFBZ0IsUUFBNEI7QUFDMUQsU0FBTyxJQUFJLFdBQVcsT0FBTyxLQUFLLFFBQVEsUUFBUSxDQUFDO0FBQ3JEO0FBV08sU0FBUyxNQUFNLE9BQTRCO0FBQ2hELFNBQU8sVUFBVSxPQUFPLG1CQUFtQixXQUFXLE1BQU0sTUFBTSxjQUM3RCxVQUFVLE9BQU8sd0JBQXdCLGdCQUFnQixNQUFNLE1BQU07QUFDNUU7QUFhTyxTQUFTLGtCQUFrQixPQUFrQztBQUNsRSxNQUFJLENBQUMsTUFBTSxLQUFLLEdBQUc7QUFDakIsVUFBTSxJQUFJLE1BQU0sbURBQW1EO0FBQUEsRUFDckU7QUFFQSxNQUFJLE1BQU0sU0FBUyx1QkFBdUI7QUFDeEMsVUFBTSxJQUFJLE1BQU0sa0RBQWtELE9BQU8scUJBQXFCLENBQUMsZUFBZSxPQUFPLE1BQU0sTUFBTSxDQUFDLEdBQUc7QUFBQSxFQUN2STtBQUVBLFFBQU0sT0FBTyxJQUFJLFNBQVMsTUFBTSxRQUFRLE1BQU0sWUFBWSxNQUFNLFVBQVU7QUFDMUUsU0FBTztBQUFBLElBQ0wsZ0JBQWdCLEtBQUssVUFBVSxpQkFBaUI7QUFBQSxJQUNoRCxlQUFlLEtBQUssVUFBVSxnQkFBZ0I7QUFBQSxFQUNoRDtBQUNGO0FBVUEsU0FBUyxVQUFVLE9BQW1CLFFBQWdCLFFBQXdCO0FBQzVFLFNBQU8sTUFBTSxTQUFTLFNBQVMsU0FBUyxLQUFLLE9BQU8sS0FBSyxNQUFNLFNBQVMsUUFBUSxTQUFTLE1BQU0sQ0FBQyxFQUFFLFNBQVMsT0FBTztBQUNwSDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -54,10 +54,7 @@ function buildOptions(values) {
54
54
  }
55
55
  function discoverDemoVaultPluginIds(demoVaultPath) {
56
56
  const pluginsDirectory = join(demoVaultPath, ".obsidian", "plugins");
57
- if (!existsSync(pluginsDirectory)) {
58
- return [];
59
- }
60
- return readdirSync(pluginsDirectory, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => entry.name);
57
+ return existsSync(pluginsDirectory) ? readdirSync(pluginsDirectory, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => entry.name) : [];
61
58
  }
62
59
  function parseNumber(flag, raw) {
63
60
  const value = Number(raw);
@@ -170,4 +167,4 @@ function waitForShutdownOrInstanceClose(cdpUrl) {
170
167
  export {
171
168
  main
172
169
  };
173
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBwYWNrYWdlJ3MgQ0xJLiBUd28gY29tbWFuZHM6XG4gKlxuICogLSBUaGUgKipkZWZhdWx0KiogKG5vIHN1YmNvbW1hbmQpIFx1MjAxNCBhIHRoaW4gQ0xJIG92ZXIge0BsaW5rIGNvbm5lY3RUb0NkcH06IGxhdW5jaGVzXG4gKiAgIChvciBhdHRhY2hlcyB0bykgYSBDRFAtZW5hYmxlZCBPYnNpZGlhbiBpbnN0YW5jZSB3aXRoIHRoZSBydW50aW1lIGhlbHBlclxuICogICBuYW1lc3BhY2UgYm9vdHN0cmFwcGVkLCBwcmludHMgdGhlIGNob3NlbiBDRFAgcG9ydC9VUkwsIGFuZCBzdGF5cyBhbGl2ZSB1bnRpbFxuICogICBpbnRlcnJ1cHRlZCBzbyBhbiBleHRlcm5hbCB0b29sIChyYXcgQ0RQIGB3c2AsIERldlRvb2xzLCBcdTIwMjYpIGNhbiBhdHRhY2guXG4gKiAtICoqYGJvb3RzdHJhcC1kZW1vLXZhdWx0YCoqIFx1MjAxNCBpbnN0YWxscyBhIGRlbW8gdmF1bHQncyBpbmplY3RlZCBjb21tdW5pdHkgcGx1Z2luc1xuICogICBoZWFkbGVzc2x5IChzZWUgYGRlbW8tdmF1bHQtYm9vdHN0cmFwLnRzYCkuIFRoaXMgaXMgdGhlIGNvcHktcGFzdGVhYmxlIHJlbWVkeVxuICogICBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWAncyB0aHJvdyBuYW1lcywgcmVwbGFjaW5nIHRoZSBHVUktb25seSBcIm9wZW5cbiAqICAgYGRlbW8tdmF1bHQvYCBpbiBPYnNpZGlhbiBvbmNlXCIgc3RlcCB0aGF0IGEgZnJlc2ggY2xvbmUgb3IgQ0kgY2Fubm90IHBlcmZvcm0uXG4gKlxuICogQW55dGhpbmcgdGhhdCBpcyBub3QgYSByZWNvZ25pemVkIHN1YmNvbW1hbmQgZmFsbHMgdGhyb3VnaCB0byB0aGUgZGVmYXVsdFxuICogY29tbWFuZCwgc28gYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcgLS12YXVsdCBcdTIwMjZgIGtlZXBzIHdvcmtpbmcgdW5jaGFuZ2VkLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIENMSSAobGF1bmNoZXMgT2JzaWRpYW4gLyBDRFAsIGRvd25sb2FkcyByZWxlYXNlcykgY292ZXJlZCBtYW51YWxseSwgbm90IGJ5IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIHJlYWRkaXJTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgam9pbixcbiAgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aFxufSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gJ25vZGU6dXRpbCc7XG5cbmltcG9ydCB0eXBlIHsgQ29ubmVjdFRvQ2RwT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmltcG9ydCB0eXBlIHsgSW5qZWN0UGx1Z2luUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5cbmltcG9ydCB7IGNvbm5lY3RUb0NkcCB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmltcG9ydCB7IGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnMgfSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5cbmNvbnN0IEJPT1RTVFJBUF9ERU1PX1ZBVUxUX0NPTU1BTkQgPSAnYm9vdHN0cmFwLWRlbW8tdmF1bHQnO1xuY29uc3QgSEVMUF9GTEFHUyA9IG5ldyBTZXQoWyctLWhlbHAnLCAnLWgnXSk7XG5cbi8qKlxuSW5kZXggb2YgYSBzdWJjb21tYW5kJ3MgZmlyc3QgYXJndW1lbnQgaW4gYHByb2Nlc3MuYXJndmAgKGBbbm9kZSwgc2NyaXB0LCBzdWJjb21tYW5kLCBcdTIwMjZdYCkuXG4gKi9cbmNvbnN0IFNVQkNPTU1BTkRfQVJHVU1FTlRTX1NUQVJUX0lOREVYID0gMztcblxuY29uc3QgVVNBR0UgPSBgVXNhZ2U6XG4gIG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcgW29wdGlvbnNdXG4gICAgICBMYXVuY2ggKG9yIGF0dGFjaCB0bykgYSBDRFAtZW5hYmxlZCBPYnNpZGlhbiBpbnN0YW5jZSBhbmQgcHJpbnQgaXRzIGVuZHBvaW50LlxuICAgICAgT3B0aW9uczogLS12YXVsdCwgLS1wb3J0LCAtLWhvc3QsIC0tb2JzaWRpYW4tdmVyc2lvbiwgLS1vYnNpZGlhbi1pbnN0YWxsZXItdmVyc2lvbixcbiAgICAgICAgICAgICAgIC0tY29tbWFuZC10aW1lb3V0LCAtLW5vLXJlbW92ZS12YXVsdFxuXG4gIG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcgJHtCT09UU1RSQVBfREVNT19WQVVMVF9DT01NQU5EfSBbb3B0aW9uc11cbiAgICAgIEluc3RhbGwgYSBkZW1vIHZhdWx0J3MgaW5qZWN0ZWQgY29tbXVuaXR5IHBsdWdpbnMgZnJvbSB0aGVpciBwdWJsaXNoZWQgR2l0SHViXG4gICAgICByZWxlYXNlcywgc28gaW50ZWdyYXRpb24gdGVzdHMgcnVuIHdpdGhvdXQgb3BlbmluZyBPYnNpZGlhbiBieSBoYW5kLlxuICAgICAgT3B0aW9uczogLS1kZW1vLXZhdWx0IDxwYXRoPiAgIGRlbW8gdmF1bHQgZGlyZWN0b3J5IChkZWZhdWx0OiAuL2RlbW8tdmF1bHQpXG4gICAgICAgICAgICAgICAtLXBsdWdpbiA8aWQ+ICAgICAgICAgcGx1Z2luIGlkIHRvIGluc3RhbGwgKHJlcGVhdGFibGU7IGRlZmF1bHQ6IGV2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgYWxyZWFkeSBwcmVzZW50IHVuZGVyIC5vYnNpZGlhbi9wbHVnaW5zLylcbiAgICAgICAgICAgICAgIC0tcmVwbyA8b3duZXIvbmFtZT4gICBvdmVycmlkZSB0aGUgcmVnaXN0cnkgbG9va3VwIChzaW5nbGUgLS1wbHVnaW4gb25seSlcbiAgICAgICAgICAgICAgIC0tdmVyc2lvbiA8dGFnPiAgICAgICBwaW4gYSByZWxlYXNlIHRhZyAoc2luZ2xlIC0tcGx1Z2luIG9ubHkpXG4gICAgICAgICAgICAgICAtLWZvcmNlICAgICAgICAgICAgICAgcmUtZG93bmxvYWQgcGx1Z2lucyB0aGF0IGFyZSBhbHJlYWR5IGluc3RhbGxlZFxuYDtcblxuLyoqXG4gKiBUaGUgc2hhcGUgb2YgdGhlIHBhcnNlZCBDTEkgZmxhZyB2YWx1ZXMuXG4gKi9cbmludGVyZmFjZSBQYXJzZWRDbGlWYWx1ZXMge1xuICAnY29tbWFuZC10aW1lb3V0Jz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgJ2hvc3QnPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAnbm8tcmVtb3ZlLXZhdWx0Jz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICdvYnNpZGlhbi1pbnN0YWxsZXItdmVyc2lvbic/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICdvYnNpZGlhbi12ZXJzaW9uJz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgJ3BvcnQnPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAndmF1bHQnPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERpc3BhdGNoZXMgdG8gdGhlIHJlcXVlc3RlZCBzdWJjb21tYW5kLCBmYWxsaW5nIHRocm91Z2ggdG8gdGhlIGRlZmF1bHQgQ0RQXG4gKiBjb21tYW5kIGZvciBhbnl0aGluZyB0aGF0IGlzIG5vdCBvbmUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBjaG9zZW4gY29tbWFuZCBoYXMgZmluaXNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYWluKCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBbLCAsIGZpcnN0QXJndW1lbnRdID0gcHJvY2Vzcy5hcmd2O1xuXG4gIGlmIChmaXJzdEFyZ3VtZW50ICE9PSB1bmRlZmluZWQgJiYgSEVMUF9GTEFHUy5oYXMoZmlyc3RBcmd1bWVudCkpIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShVU0FHRSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGZpcnN0QXJndW1lbnQgPT09IEJPT1RTVFJBUF9ERU1PX1ZBVUxUX0NPTU1BTkQpIHtcbiAgICBhd2FpdCBydW5Cb290c3RyYXBEZW1vVmF1bHRDb21tYW5kKHByb2Nlc3MuYXJndi5zbGljZShTVUJDT01NQU5EX0FSR1VNRU5UU19TVEFSVF9JTkRFWCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHJ1bkNvbm5lY3RDb21tYW5kKCk7XG59XG5cbi8qKlxuICogQnVpbGRzIHtAbGluayBDb25uZWN0VG9DZHBPcHRpb25zfSBmcm9tIHBhcnNlZCBDTEkgZmxhZyB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHZhbHVlcyAtIFRoZSBwYXJzZWQgYHBhcnNlQXJnc2AgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGNvbm5lY3Rpb24gb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRPcHRpb25zKHZhbHVlczogUGFyc2VkQ2xpVmFsdWVzKTogQ29ubmVjdFRvQ2RwT3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgLi4uKHZhbHVlc1snY29tbWFuZC10aW1lb3V0J10gIT09IHVuZGVmaW5lZCAmJiB7IGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IHBhcnNlTnVtYmVyKCdjb21tYW5kLXRpbWVvdXQnLCB2YWx1ZXNbJ2NvbW1hbmQtdGltZW91dCddKSB9KSxcbiAgICAuLi4odmFsdWVzLmhvc3QgIT09IHVuZGVmaW5lZCAmJiB7IGhvc3Q6IHZhbHVlcy5ob3N0IH0pLFxuICAgIC4uLih2YWx1ZXNbJ25vLXJlbW92ZS12YXVsdCddID09PSB0cnVlICYmIHsgc2hvdWxkUmVtb3ZlVmF1bHRPbkRpc3Bvc2U6IGZhbHNlIH0pLFxuICAgIC4uLih2YWx1ZXNbJ29ic2lkaWFuLWluc3RhbGxlci12ZXJzaW9uJ10gIT09IHVuZGVmaW5lZCAmJiB7IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbjogdmFsdWVzWydvYnNpZGlhbi1pbnN0YWxsZXItdmVyc2lvbiddIH0pLFxuICAgIC4uLih2YWx1ZXNbJ29ic2lkaWFuLXZlcnNpb24nXSAhPT0gdW5kZWZpbmVkICYmIHsgb2JzaWRpYW5WZXJzaW9uOiB2YWx1ZXNbJ29ic2lkaWFuLXZlcnNpb24nXSB9KSxcbiAgICAuLi4odmFsdWVzLnBvcnQgIT09IHVuZGVmaW5lZCAmJiB7IHBvcnQ6IHBhcnNlTnVtYmVyKCdwb3J0JywgdmFsdWVzLnBvcnQpIH0pLFxuICAgIC4uLih2YWx1ZXMudmF1bHQgIT09IHVuZGVmaW5lZCAmJiB7IHZhdWx0OiB2YWx1ZXMudmF1bHQgfSlcbiAgfTtcbn1cblxuLyoqXG4gKiBMaXN0cyB0aGUgcGx1Z2luIGlkcyBhbHJlYWR5IHByZXNlbnQgdW5kZXIgYSBkZW1vIHZhdWx0J3MgYC5vYnNpZGlhbi9wbHVnaW5zL2AsIHVzZWQgYXMgdGhlIGRlZmF1bHRcbiAqIGluc3RhbGwgc2V0IHdoZW4gYC0tcGx1Z2luYCBpcyBvbWl0dGVkLiBBIGZvbGRlciB0aGF0IGV4aXN0cyBidXQgbGFja3MgYG1haW4uanNgIGlzIGV4YWN0bHkgdGhlIHN0YXRlXG4gKiB0aGlzIGNvbW1hbmQgcmVwYWlycywgc28gcHJlc2VuY2UgXHUyMDE0IG5vdCBjb21wbGV0ZW5lc3MgXHUyMDE0IGlzIHRoZSBjcml0ZXJpb24uXG4gKlxuICogQHBhcmFtIGRlbW9WYXVsdFBhdGggLSBUaGUgZGVtbyB2YXVsdCByb290LlxuICogQHJldHVybnMgVGhlIHBsdWdpbiBpZHMsIG9yIGFuIGVtcHR5IGFycmF5IHdoZW4gdGhlIHZhdWx0IGhhcyBubyBwbHVnaW5zIGZvbGRlci5cbiAqL1xuZnVuY3Rpb24gZGlzY292ZXJEZW1vVmF1bHRQbHVnaW5JZHMoZGVtb1ZhdWx0UGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwbHVnaW5zRGlyZWN0b3J5ID0gam9pbihkZW1vVmF1bHRQYXRoLCAnLm9ic2lkaWFuJywgJ3BsdWdpbnMnKTtcbiAgaWYgKCFleGlzdHNTeW5jKHBsdWdpbnNEaXJlY3RvcnkpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiByZWFkZGlyU3luYyhwbHVnaW5zRGlyZWN0b3J5LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSkuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuaXNEaXJlY3RvcnkoKSkubWFwKChlbnRyeSkgPT4gZW50cnkubmFtZSk7XG59XG5cbi8qKlxuICogUGFyc2VzIGEgbnVtZXJpYyBDTEkgZmxhZyB2YWx1ZSwgdGhyb3dpbmcgb24gYSBub24tZmluaXRlIHJlc3VsdC5cbiAqXG4gKiBAcGFyYW0gZmxhZyAtIFRoZSBmbGFnIG5hbWUgKGZvciB0aGUgZXJyb3IgbWVzc2FnZSkuXG4gKiBAcGFyYW0gcmF3IC0gVGhlIHJhdyBzdHJpbmcgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIG51bWJlci5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgYHJhd2AgaXMgbm90IGEgZmluaXRlIG51bWJlci5cbiAqL1xuZnVuY3Rpb24gcGFyc2VOdW1iZXIoZmxhZzogc3RyaW5nLCByYXc6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHZhbHVlID0gTnVtYmVyKHJhdyk7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYC0tJHtmbGFnfSBtdXN0IGJlIGEgbnVtYmVyLCBnb3Q6ICR7cmF3fWApO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBgYm9vdHN0cmFwLWRlbW8tdmF1bHRgIHN1YmNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmRBcmd1bWVudHMgLSBUaGUgc3ViY29tbWFuZCdzIGFyZ3VtZW50cyAoZXZlcnl0aGluZyBhZnRlciB0aGUgc3ViY29tbWFuZCBuYW1lKS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgaW5zdGFsbCBoYXMgZmluaXNoZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIG5vIHBsdWdpbiBpZHMgY2FuIGJlIGRldGVybWluZWQsIG9yIGAtLXJlcG9gIC8gYC0tdmVyc2lvbmAgYXJlIHVzZWQgd2l0aCBzZXZlcmFsIHBsdWdpbnMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkJvb3RzdHJhcERlbW9WYXVsdENvbW1hbmQoY29tbWFuZEFyZ3VtZW50czogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYGFyZ3NgIGlzIE5vZGUncyBvd24gYHBhcnNlQXJnc2Agb3B0aW9uIG5hbWUuXG4gICAgYXJnczogY29tbWFuZEFyZ3VtZW50cyxcbiAgICBvcHRpb25zOiB7XG4gICAgICAnZGVtby12YXVsdCc6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICdmb3JjZSc6IHsgdHlwZTogJ2Jvb2xlYW4nIH0sXG4gICAgICAncGx1Z2luJzogeyBtdWx0aXBsZTogdHJ1ZSwgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICdyZXBvJzogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgJ3ZlcnNpb24nOiB7IHR5cGU6ICdzdHJpbmcnIH1cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGRlbW9WYXVsdFBhdGggPSByZXNvbHZlUGF0aCh2YWx1ZXNbJ2RlbW8tdmF1bHQnXSA/PyBqb2luKHByb2Nlc3MuY3dkKCksICdkZW1vLXZhdWx0JykpO1xuICBjb25zdCBwbHVnaW5JZHMgPSB2YWx1ZXMucGx1Z2luID8/IGRpc2NvdmVyRGVtb1ZhdWx0UGx1Z2luSWRzKGRlbW9WYXVsdFBhdGgpO1xuXG4gIGlmIChwbHVnaW5JZHMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYE5vIGNvbW11bml0eSBwbHVnaW5zIHRvIGluc3RhbGw6ICR7ZGVtb1ZhdWx0UGF0aH0gaGFzIG5vIC5vYnNpZGlhbi9wbHVnaW5zLyBlbnRyaWVzLiBgXG4gICAgICAgICsgJ05hbWUgdGhlbSBleHBsaWNpdGx5LCBlLmcuIC0tcGx1Z2luIGZpeC1yZXF1aXJlLW1vZHVsZXMuJ1xuICAgICk7XG4gIH1cblxuICBpZiAocGx1Z2luSWRzLmxlbmd0aCA+IDEgJiYgKHZhbHVlcy5yZXBvICE9PSB1bmRlZmluZWQgfHwgdmFsdWVzLnZlcnNpb24gIT09IHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJy0tcmVwbyBhbmQgLS12ZXJzaW9uIGFwcGx5IHRvIGEgc2luZ2xlIHBsdWdpbjsgcGFzcyBleGFjdGx5IG9uZSAtLXBsdWdpbiwgb3IgcnVuIHRoZSBjb21tYW5kIG9uY2UgcGVyIHBsdWdpbi4nKTtcbiAgfVxuXG4gIGNvbnN0IGluamVjdFBsdWdpbnM6IEluamVjdFBsdWdpblBhcmFtc1tdID0gcGx1Z2luSWRzLm1hcCgocGx1Z2luSWQpID0+ICh7XG4gICAgcGx1Z2luSWQsXG4gICAgLi4uKHZhbHVlcy5yZXBvICE9PSB1bmRlZmluZWQgJiYgeyByZXBvOiB2YWx1ZXMucmVwbyB9KSxcbiAgICAuLi4odmFsdWVzLnZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IHZlcnNpb246IHZhbHVlcy52ZXJzaW9uIH0pXG4gIH0pKTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBib290c3RyYXBEZW1vVmF1bHRQbHVnaW5zKHtcbiAgICBkZW1vVmF1bHRQYXRoLFxuICAgIGluamVjdFBsdWdpbnMsXG4gICAgc2hvdWxkRm9yY2U6IHZhbHVlcy5mb3JjZSA9PT0gdHJ1ZVxuICB9KTtcblxuICBmb3IgKGNvbnN0IGluZm8gb2YgcmVzdWx0Lmluc3RhbGxlZCkge1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBJbnN0YWxsZWQgJHtpbmZvLnBsdWdpbklkfSBmcm9tICR7aW5mby5yZXBvfUAke2luZm8udmVyc2lvbiA/PyAnbGF0ZXN0J306ICR7aW5mby5hc3NldE5hbWVzLmpvaW4oJywgJyl9XFxuYCk7XG4gIH1cblxuICBpZiAocmVzdWx0LnNraXBwZWRQbHVnaW5JZHMubGVuZ3RoID4gMCkge1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBBbHJlYWR5IGluc3RhbGxlZCAodXNlIC0tZm9yY2UgdG8gcmUtZG93bmxvYWQpOiAke3Jlc3VsdC5za2lwcGVkUGx1Z2luSWRzLmpvaW4oJywgJyl9XFxuYCk7XG4gIH1cblxuICBpZiAocmVzdWx0Lmluc3RhbGxlZC5sZW5ndGggPT09IDApIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnTm90aGluZyB0byBpbnN0YWxsLlxcbicpO1xuICB9XG59XG5cbi8qKlxuICogUnVucyB0aGUgZGVmYXVsdCBjb21tYW5kOiBwYXJzZXMgQ0xJIGFyZ3VtZW50cywgb3BlbnMgdGhlIGNvbm5lY3Rpb24sIHByaW50cyBpdHNcbiAqIGVuZHBvaW50LCBhbmQgYmxvY2tzIHVudGlsIGBTSUdJTlRgL2BTSUdURVJNYCBvciB0aGUgb3duZWQgT2JzaWRpYW4gd2luZG93IGlzXG4gKiBjbG9zZWQsIGRpc3Bvc2luZyB0aGUgY29ubmVjdGlvbiBvbiBzaHV0ZG93bi5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gZGlzcG9zZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkNvbm5lY3RDb21tYW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcbiAgICBvcHRpb25zOiB7XG4gICAgICAnY29tbWFuZC10aW1lb3V0JzogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgJ2hvc3QnOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAnbm8tcmVtb3ZlLXZhdWx0JzogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgICdvYnNpZGlhbi1pbnN0YWxsZXItdmVyc2lvbic6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICdvYnNpZGlhbi12ZXJzaW9uJzogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgJ3BvcnQnOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAndmF1bHQnOiB7IHR5cGU6ICdzdHJpbmcnIH1cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBjb25uZWN0VG9DZHAoYnVpbGRPcHRpb25zKHZhbHVlcykpO1xuXG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKFxuICAgICdPYnNpZGlhbiBDRFAgcmVhZHkuXFxuJ1xuICAgICAgKyBgICBwb3J0OiAgICR7U3RyaW5nKGNvbm5lY3Rpb24ucG9ydCl9XFxuYFxuICAgICAgKyBgICBjZHBVcmw6ICR7Y29ubmVjdGlvbi5jZHBVcmx9XFxuYFxuICAgICAgKyBgICB2YXVsdDogICR7Y29ubmVjdGlvbi52YXVsdC5wYXRofVxcbmBcbiAgICAgICsgJ1J1bnRpbWUgaGVscGVycyBib290c3RyYXBwZWQgYXMgd2luZG93Ll9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcuXFxuJ1xuICAgICAgKyAnUHJlc3MgQ3RybCtDIHRvIHN0b3AuXFxuJ1xuICApO1xuXG4gIGF3YWl0IHdhaXRGb3JTaHV0ZG93bk9ySW5zdGFuY2VDbG9zZShjb25uZWN0aW9uLmNkcFVybCk7XG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xcblNodXR0aW5nIGRvd25cdTIwMjZcXG4nKTtcbiAgYXdhaXQgY29ubmVjdGlvbi5kaXNwb3NlKCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyByZWNlaXZlcyBgU0lHSU5UYC9gU0lHVEVSTWAsIG9yIHRoZSBDRFAgZW5kcG9pbnRcbiAqIHN0b3BzIGFuc3dlcmluZyAodGhlIG93bmVkIE9ic2lkaWFuIHdpbmRvdyB3YXMgY2xvc2VkKS5cbiAqXG4gKiBAcGFyYW0gY2RwVXJsIC0gVGhlIGNvbm5lY3Rpb24ncyBDRFAgYmFzZSBVUkwgdG8gcG9sbC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb24gdGhlIGZpcnN0IHNodXRkb3duIHRyaWdnZXIuXG4gKi9cbmZ1bmN0aW9uIHdhaXRGb3JTaHV0ZG93bk9ySW5zdGFuY2VDbG9zZShjZHBVcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBQT0xMX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyA9IDEwMDA7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHZlcnNpb25VcmwgPSBgJHtjZHBVcmx9L2pzb24vdmVyc2lvbmA7XG4gICAgbGV0IGlzU2V0dGxlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBwcm9iZUFsaXZlKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBJZ25vcmUgcG9sbCBlcnJvcnMuXG4gICAgICB9KTtcbiAgICB9LCBQT0xMX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyk7XG5cbiAgICBwcm9jZXNzLm9uY2UoJ1NJR0lOVCcsIHNldHRsZSk7XG4gICAgcHJvY2Vzcy5vbmNlKCdTSUdURVJNJywgc2V0dGxlKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2JlQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHZlcnNpb25VcmwpO1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgc2V0dGxlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBUaGUgQ0RQIHBvcnQgc3RvcHBlZCBhbnN3ZXJpbmc6IHRoZSBPYnNpZGlhbiB3aW5kb3cgd2FzIGNsb3NlZC5cbiAgICAgICAgc2V0dGxlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0dGxlKCk6IHZvaWQge1xuICAgICAgaWYgKGlzU2V0dGxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpc1NldHRsZWQgPSB0cnVlO1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICJBQW9CQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0EsV0FBVztBQUFBLE9BQ047QUFDUCxPQUFPLGFBQWE7QUFDcEIsU0FBUyxpQkFBaUI7QUFLMUIsU0FBUyxvQkFBb0I7QUFDN0IsU0FBUyxpQ0FBaUM7QUFFMUMsTUFBTSwrQkFBK0I7QUFDckMsTUFBTSxhQUFhLG9CQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQztBQUszQyxNQUFNLG1DQUFtQztBQUV6QyxNQUFNLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsaUNBTW1CLDRCQUE0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThCN0QsZUFBc0IsT0FBc0I7QUFDMUMsUUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLElBQUksUUFBUTtBQUVwQyxNQUFJLGtCQUFrQixVQUFhLFdBQVcsSUFBSSxhQUFhLEdBQUc7QUFDaEUsWUFBUSxPQUFPLE1BQU0sS0FBSztBQUMxQjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLGtCQUFrQiw4QkFBOEI7QUFDbEQsVUFBTSw2QkFBNkIsUUFBUSxLQUFLLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkY7QUFBQSxFQUNGO0FBRUEsUUFBTSxrQkFBa0I7QUFDMUI7QUFRQSxTQUFTLGFBQWEsUUFBOEM7QUFDbEUsU0FBTztBQUFBLElBQ0wsR0FBSSxPQUFPLGlCQUFpQixNQUFNLFVBQWEsRUFBRSw4QkFBOEIsWUFBWSxtQkFBbUIs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
170
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBwYWNrYWdlJ3MgQ0xJLiBUd28gY29tbWFuZHM6XG4gKlxuICogLSBUaGUgKipkZWZhdWx0KiogKG5vIHN1YmNvbW1hbmQpIFx1MjAxNCBhIHRoaW4gQ0xJIG92ZXIge0BsaW5rIGNvbm5lY3RUb0NkcH06IGxhdW5jaGVzXG4gKiAgIChvciBhdHRhY2hlcyB0bykgYSBDRFAtZW5hYmxlZCBPYnNpZGlhbiBpbnN0YW5jZSB3aXRoIHRoZSBydW50aW1lIGhlbHBlclxuICogICBuYW1lc3BhY2UgYm9vdHN0cmFwcGVkLCBwcmludHMgdGhlIGNob3NlbiBDRFAgcG9ydC9VUkwsIGFuZCBzdGF5cyBhbGl2ZSB1bnRpbFxuICogICBpbnRlcnJ1cHRlZCBzbyBhbiBleHRlcm5hbCB0b29sIChyYXcgQ0RQIGB3c2AsIERldlRvb2xzLCBcdTIwMjYpIGNhbiBhdHRhY2guXG4gKiAtICoqYGJvb3RzdHJhcC1kZW1vLXZhdWx0YCoqIFx1MjAxNCBpbnN0YWxscyBhIGRlbW8gdmF1bHQncyBpbmplY3RlZCBjb21tdW5pdHkgcGx1Z2luc1xuICogICBoZWFkbGVzc2x5IChzZWUgYGRlbW8tdmF1bHQtYm9vdHN0cmFwLnRzYCkuIFRoaXMgaXMgdGhlIGNvcHktcGFzdGVhYmxlIHJlbWVkeVxuICogICBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWAncyB0aHJvdyBuYW1lcywgcmVwbGFjaW5nIHRoZSBHVUktb25seSBcIm9wZW5cbiAqICAgYGRlbW8tdmF1bHQvYCBpbiBPYnNpZGlhbiBvbmNlXCIgc3RlcCB0aGF0IGEgZnJlc2ggY2xvbmUgb3IgQ0kgY2Fubm90IHBlcmZvcm0uXG4gKlxuICogQW55dGhpbmcgdGhhdCBpcyBub3QgYSByZWNvZ25pemVkIHN1YmNvbW1hbmQgZmFsbHMgdGhyb3VnaCB0byB0aGUgZGVmYXVsdFxuICogY29tbWFuZCwgc28gYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcgLS12YXVsdCBcdTIwMjZgIGtlZXBzIHdvcmtpbmcgdW5jaGFuZ2VkLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIENMSSAobGF1bmNoZXMgT2JzaWRpYW4gLyBDRFAsIGRvd25sb2FkcyByZWxlYXNlcykgY292ZXJlZCBtYW51YWxseSwgbm90IGJ5IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB7XG4gIGV4aXN0c1N5bmMsXG4gIHJlYWRkaXJTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgam9pbixcbiAgcmVzb2x2ZSBhcyByZXNvbHZlUGF0aFxufSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gJ25vZGU6dXRpbCc7XG5cbmltcG9ydCB0eXBlIHsgQ29ubmVjdFRvQ2RwT3B0aW9ucyB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmltcG9ydCB0eXBlIHsgSW5qZWN0UGx1Z2luUGFyYW1zIH0gZnJvbSAnLi9kZW1vLXZhdWx0LXBvcHVsYXRlLm1qcyc7XG5cbmltcG9ydCB7IGNvbm5lY3RUb0NkcCB9IGZyb20gJy4vY29ubmVjdC10by1jZHAubWpzJztcbmltcG9ydCB7IGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnMgfSBmcm9tICcuL2RlbW8tdmF1bHQtYm9vdHN0cmFwLm1qcyc7XG5cbmNvbnN0IEJPT1RTVFJBUF9ERU1PX1ZBVUxUX0NPTU1BTkQgPSAnYm9vdHN0cmFwLWRlbW8tdmF1bHQnO1xuY29uc3QgSEVMUF9GTEFHUyA9IG5ldyBTZXQoWyctLWhlbHAnLCAnLWgnXSk7XG5cbi8qKlxuSW5kZXggb2YgYSBzdWJjb21tYW5kJ3MgZmlyc3QgYXJndW1lbnQgaW4gYHByb2Nlc3MuYXJndmAgKGBbbm9kZSwgc2NyaXB0LCBzdWJjb21tYW5kLCBcdTIwMjZdYCkuXG4gKi9cbmNvbnN0IFNVQkNPTU1BTkRfQVJHVU1FTlRTX1NUQVJUX0lOREVYID0gMztcblxuY29uc3QgVVNBR0UgPSBgVXNhZ2U6XG4gIG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcgW29wdGlvbnNdXG4gICAgICBMYXVuY2ggKG9yIGF0dGFjaCB0bykgYSBDRFAtZW5hYmxlZCBPYnNpZGlhbiBpbnN0YW5jZSBhbmQgcHJpbnQgaXRzIGVuZHBvaW50LlxuICAgICAgT3B0aW9uczogLS12YXVsdCwgLS1wb3J0LCAtLWhvc3QsIC0tb2JzaWRpYW4tdmVyc2lvbiwgLS1vYnNpZGlhbi1pbnN0YWxsZXItdmVyc2lvbixcbiAgICAgICAgICAgICAgIC0tY29tbWFuZC10aW1lb3V0LCAtLW5vLXJlbW92ZS12YXVsdFxuXG4gIG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcgJHtCT09UU1RSQVBfREVNT19WQVVMVF9DT01NQU5EfSBbb3B0aW9uc11cbiAgICAgIEluc3RhbGwgYSBkZW1vIHZhdWx0J3MgaW5qZWN0ZWQgY29tbXVuaXR5IHBsdWdpbnMgZnJvbSB0aGVpciBwdWJsaXNoZWQgR2l0SHViXG4gICAgICByZWxlYXNlcywgc28gaW50ZWdyYXRpb24gdGVzdHMgcnVuIHdpdGhvdXQgb3BlbmluZyBPYnNpZGlhbiBieSBoYW5kLlxuICAgICAgT3B0aW9uczogLS1kZW1vLXZhdWx0IDxwYXRoPiAgIGRlbW8gdmF1bHQgZGlyZWN0b3J5IChkZWZhdWx0OiAuL2RlbW8tdmF1bHQpXG4gICAgICAgICAgICAgICAtLXBsdWdpbiA8aWQ+ICAgICAgICAgcGx1Z2luIGlkIHRvIGluc3RhbGwgKHJlcGVhdGFibGU7IGRlZmF1bHQ6IGV2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgYWxyZWFkeSBwcmVzZW50IHVuZGVyIC5vYnNpZGlhbi9wbHVnaW5zLylcbiAgICAgICAgICAgICAgIC0tcmVwbyA8b3duZXIvbmFtZT4gICBvdmVycmlkZSB0aGUgcmVnaXN0cnkgbG9va3VwIChzaW5nbGUgLS1wbHVnaW4gb25seSlcbiAgICAgICAgICAgICAgIC0tdmVyc2lvbiA8dGFnPiAgICAgICBwaW4gYSByZWxlYXNlIHRhZyAoc2luZ2xlIC0tcGx1Z2luIG9ubHkpXG4gICAgICAgICAgICAgICAtLWZvcmNlICAgICAgICAgICAgICAgcmUtZG93bmxvYWQgcGx1Z2lucyB0aGF0IGFyZSBhbHJlYWR5IGluc3RhbGxlZFxuYDtcblxuLyoqXG4gKiBUaGUgc2hhcGUgb2YgdGhlIHBhcnNlZCBDTEkgZmxhZyB2YWx1ZXMuXG4gKi9cbmludGVyZmFjZSBQYXJzZWRDbGlWYWx1ZXMge1xuICAnY29tbWFuZC10aW1lb3V0Jz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgJ2hvc3QnPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAnbm8tcmVtb3ZlLXZhdWx0Jz86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICdvYnNpZGlhbi1pbnN0YWxsZXItdmVyc2lvbic/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICdvYnNpZGlhbi12ZXJzaW9uJz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgJ3BvcnQnPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAndmF1bHQnPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERpc3BhdGNoZXMgdG8gdGhlIHJlcXVlc3RlZCBzdWJjb21tYW5kLCBmYWxsaW5nIHRocm91Z2ggdG8gdGhlIGRlZmF1bHQgQ0RQXG4gKiBjb21tYW5kIGZvciBhbnl0aGluZyB0aGF0IGlzIG5vdCBvbmUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBjaG9zZW4gY29tbWFuZCBoYXMgZmluaXNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYWluKCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBbLCAsIGZpcnN0QXJndW1lbnRdID0gcHJvY2Vzcy5hcmd2O1xuXG4gIGlmIChmaXJzdEFyZ3VtZW50ICE9PSB1bmRlZmluZWQgJiYgSEVMUF9GTEFHUy5oYXMoZmlyc3RBcmd1bWVudCkpIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShVU0FHRSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGZpcnN0QXJndW1lbnQgPT09IEJPT1RTVFJBUF9ERU1PX1ZBVUxUX0NPTU1BTkQpIHtcbiAgICBhd2FpdCBydW5Cb290c3RyYXBEZW1vVmF1bHRDb21tYW5kKHByb2Nlc3MuYXJndi5zbGljZShTVUJDT01NQU5EX0FSR1VNRU5UU19TVEFSVF9JTkRFWCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHJ1bkNvbm5lY3RDb21tYW5kKCk7XG59XG5cbi8qKlxuICogQnVpbGRzIHtAbGluayBDb25uZWN0VG9DZHBPcHRpb25zfSBmcm9tIHBhcnNlZCBDTEkgZmxhZyB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHZhbHVlcyAtIFRoZSBwYXJzZWQgYHBhcnNlQXJnc2AgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGNvbm5lY3Rpb24gb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRPcHRpb25zKHZhbHVlczogUGFyc2VkQ2xpVmFsdWVzKTogQ29ubmVjdFRvQ2RwT3B0aW9ucyB7XG4gIHJldHVybiB7XG4gICAgLi4uKHZhbHVlc1snY29tbWFuZC10aW1lb3V0J10gIT09IHVuZGVmaW5lZCAmJiB7IGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IHBhcnNlTnVtYmVyKCdjb21tYW5kLXRpbWVvdXQnLCB2YWx1ZXNbJ2NvbW1hbmQtdGltZW91dCddKSB9KSxcbiAgICAuLi4odmFsdWVzLmhvc3QgIT09IHVuZGVmaW5lZCAmJiB7IGhvc3Q6IHZhbHVlcy5ob3N0IH0pLFxuICAgIC4uLih2YWx1ZXNbJ25vLXJlbW92ZS12YXVsdCddID09PSB0cnVlICYmIHsgc2hvdWxkUmVtb3ZlVmF1bHRPbkRpc3Bvc2U6IGZhbHNlIH0pLFxuICAgIC4uLih2YWx1ZXNbJ29ic2lkaWFuLWluc3RhbGxlci12ZXJzaW9uJ10gIT09IHVuZGVmaW5lZCAmJiB7IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbjogdmFsdWVzWydvYnNpZGlhbi1pbnN0YWxsZXItdmVyc2lvbiddIH0pLFxuICAgIC4uLih2YWx1ZXNbJ29ic2lkaWFuLXZlcnNpb24nXSAhPT0gdW5kZWZpbmVkICYmIHsgb2JzaWRpYW5WZXJzaW9uOiB2YWx1ZXNbJ29ic2lkaWFuLXZlcnNpb24nXSB9KSxcbiAgICAuLi4odmFsdWVzLnBvcnQgIT09IHVuZGVmaW5lZCAmJiB7IHBvcnQ6IHBhcnNlTnVtYmVyKCdwb3J0JywgdmFsdWVzLnBvcnQpIH0pLFxuICAgIC4uLih2YWx1ZXMudmF1bHQgIT09IHVuZGVmaW5lZCAmJiB7IHZhdWx0OiB2YWx1ZXMudmF1bHQgfSlcbiAgfTtcbn1cblxuLyoqXG4gKiBMaXN0cyB0aGUgcGx1Z2luIGlkcyBhbHJlYWR5IHByZXNlbnQgdW5kZXIgYSBkZW1vIHZhdWx0J3MgYC5vYnNpZGlhbi9wbHVnaW5zL2AsIHVzZWQgYXMgdGhlIGRlZmF1bHRcbiAqIGluc3RhbGwgc2V0IHdoZW4gYC0tcGx1Z2luYCBpcyBvbWl0dGVkLiBBIGZvbGRlciB0aGF0IGV4aXN0cyBidXQgbGFja3MgYG1haW4uanNgIGlzIGV4YWN0bHkgdGhlIHN0YXRlXG4gKiB0aGlzIGNvbW1hbmQgcmVwYWlycywgc28gcHJlc2VuY2UgXHUyMDE0IG5vdCBjb21wbGV0ZW5lc3MgXHUyMDE0IGlzIHRoZSBjcml0ZXJpb24uXG4gKlxuICogQHBhcmFtIGRlbW9WYXVsdFBhdGggLSBUaGUgZGVtbyB2YXVsdCByb290LlxuICogQHJldHVybnMgVGhlIHBsdWdpbiBpZHMsIG9yIGFuIGVtcHR5IGFycmF5IHdoZW4gdGhlIHZhdWx0IGhhcyBubyBwbHVnaW5zIGZvbGRlci5cbiAqL1xuZnVuY3Rpb24gZGlzY292ZXJEZW1vVmF1bHRQbHVnaW5JZHMoZGVtb1ZhdWx0UGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwbHVnaW5zRGlyZWN0b3J5ID0gam9pbihkZW1vVmF1bHRQYXRoLCAnLm9ic2lkaWFuJywgJ3BsdWdpbnMnKTtcbiAgcmV0dXJuIGV4aXN0c1N5bmMocGx1Z2luc0RpcmVjdG9yeSkgPyByZWFkZGlyU3luYyhwbHVnaW5zRGlyZWN0b3J5LCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSkuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuaXNEaXJlY3RvcnkoKSkubWFwKChlbnRyeSkgPT4gZW50cnkubmFtZSkgOiBbXTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBudW1lcmljIENMSSBmbGFnIHZhbHVlLCB0aHJvd2luZyBvbiBhIG5vbi1maW5pdGUgcmVzdWx0LlxuICpcbiAqIEBwYXJhbSBmbGFnIC0gVGhlIGZsYWcgbmFtZSAoZm9yIHRoZSBlcnJvciBtZXNzYWdlKS5cbiAqIEBwYXJhbSByYXcgLSBUaGUgcmF3IHN0cmluZyB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgbnVtYmVyLlxuICogQHRocm93cyBFcnJvciBpZiBgcmF3YCBpcyBub3QgYSBmaW5pdGUgbnVtYmVyLlxuICovXG5mdW5jdGlvbiBwYXJzZU51bWJlcihmbGFnOiBzdHJpbmcsIHJhdzogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgdmFsdWUgPSBOdW1iZXIocmF3KTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgLS0ke2ZsYWd9IG11c3QgYmUgYSBudW1iZXIsIGdvdDogJHtyYXd9YCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGBib290c3RyYXAtZGVtby12YXVsdGAgc3ViY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZEFyZ3VtZW50cyAtIFRoZSBzdWJjb21tYW5kJ3MgYXJndW1lbnRzIChldmVyeXRoaW5nIGFmdGVyIHRoZSBzdWJjb21tYW5kIG5hbWUpLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBpbnN0YWxsIGhhcyBmaW5pc2hlZC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gcGx1Z2luIGlkcyBjYW4gYmUgZGV0ZXJtaW5lZCwgb3IgYC0tcmVwb2AgLyBgLS12ZXJzaW9uYCBhcmUgdXNlZCB3aXRoIHNldmVyYWwgcGx1Z2lucy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuQm9vdHN0cmFwRGVtb1ZhdWx0Q29tbWFuZChjb21tYW5kQXJndW1lbnRzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBgYXJnc2AgaXMgTm9kZSdzIG93biBgcGFyc2VBcmdzYCBvcHRpb24gbmFtZS5cbiAgICBhcmdzOiBjb21tYW5kQXJndW1lbnRzLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgICdkZW1vLXZhdWx0JzogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgJ2ZvcmNlJzogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgICAgICdwbHVnaW4nOiB7IG11bHRpcGxlOiB0cnVlLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgJ3JlcG8nOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAndmVyc2lvbic6IHsgdHlwZTogJ3N0cmluZycgfVxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgZGVtb1ZhdWx0UGF0aCA9IHJlc29sdmVQYXRoKHZhbHVlc1snZGVtby12YXVsdCddID8/IGpvaW4ocHJvY2Vzcy5jd2QoKSwgJ2RlbW8tdmF1bHQnKSk7XG4gIGNvbnN0IHBsdWdpbklkcyA9IHZhbHVlcy5wbHVnaW4gPz8gZGlzY292ZXJEZW1vVmF1bHRQbHVnaW5JZHMoZGVtb1ZhdWx0UGF0aCk7XG5cbiAgaWYgKHBsdWdpbklkcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gY29tbXVuaXR5IHBsdWdpbnMgdG8gaW5zdGFsbDogJHtkZW1vVmF1bHRQYXRofSBoYXMgbm8gLm9ic2lkaWFuL3BsdWdpbnMvIGVudHJpZXMuIGBcbiAgICAgICAgKyAnTmFtZSB0aGVtIGV4cGxpY2l0bHksIGUuZy4gLS1wbHVnaW4gZml4LXJlcXVpcmUtbW9kdWxlcy4nXG4gICAgKTtcbiAgfVxuXG4gIGlmIChwbHVnaW5JZHMubGVuZ3RoID4gMSAmJiAodmFsdWVzLnJlcG8gIT09IHVuZGVmaW5lZCB8fCB2YWx1ZXMudmVyc2lvbiAhPT0gdW5kZWZpbmVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLS1yZXBvIGFuZCAtLXZlcnNpb24gYXBwbHkgdG8gYSBzaW5nbGUgcGx1Z2luOyBwYXNzIGV4YWN0bHkgb25lIC0tcGx1Z2luLCBvciBydW4gdGhlIGNvbW1hbmQgb25jZSBwZXIgcGx1Z2luLicpO1xuICB9XG5cbiAgY29uc3QgaW5qZWN0UGx1Z2luczogSW5qZWN0UGx1Z2luUGFyYW1zW10gPSBwbHVnaW5JZHMubWFwKChwbHVnaW5JZCkgPT4gKHtcbiAgICBwbHVnaW5JZCxcbiAgICAuLi4odmFsdWVzLnJlcG8gIT09IHVuZGVmaW5lZCAmJiB7IHJlcG86IHZhbHVlcy5yZXBvIH0pLFxuICAgIC4uLih2YWx1ZXMudmVyc2lvbiAhPT0gdW5kZWZpbmVkICYmIHsgdmVyc2lvbjogdmFsdWVzLnZlcnNpb24gfSlcbiAgfSkpO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnMoe1xuICAgIGRlbW9WYXVsdFBhdGgsXG4gICAgaW5qZWN0UGx1Z2lucyxcbiAgICBzaG91bGRGb3JjZTogdmFsdWVzLmZvcmNlID09PSB0cnVlXG4gIH0pO1xuXG4gIGZvciAoY29uc3QgaW5mbyBvZiByZXN1bHQuaW5zdGFsbGVkKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYEluc3RhbGxlZCAke2luZm8ucGx1Z2luSWR9IGZyb20gJHtpbmZvLnJlcG99QCR7aW5mby52ZXJzaW9uID8/ICdsYXRlc3QnfTogJHtpbmZvLmFzc2V0TmFtZXMuam9pbignLCAnKX1cXG5gKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQuc2tpcHBlZFBsdWdpbklkcy5sZW5ndGggPiAwKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYEFscmVhZHkgaW5zdGFsbGVkICh1c2UgLS1mb3JjZSB0byByZS1kb3dubG9hZCk6ICR7cmVzdWx0LnNraXBwZWRQbHVnaW5JZHMuam9pbignLCAnKX1cXG5gKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQuaW5zdGFsbGVkLmxlbmd0aCA9PT0gMCkge1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdOb3RoaW5nIHRvIGluc3RhbGwuXFxuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBkZWZhdWx0IGNvbW1hbmQ6IHBhcnNlcyBDTEkgYXJndW1lbnRzLCBvcGVucyB0aGUgY29ubmVjdGlvbiwgcHJpbnRzIGl0c1xuICogZW5kcG9pbnQsIGFuZCBibG9ja3MgdW50aWwgYFNJR0lOVGAvYFNJR1RFUk1gIG9yIHRoZSBvd25lZCBPYnNpZGlhbiB3aW5kb3cgaXNcbiAqIGNsb3NlZCwgZGlzcG9zaW5nIHRoZSBjb25uZWN0aW9uIG9uIHNodXRkb3duLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgY29ubmVjdGlvbiBoYXMgYmVlbiBkaXNwb3NlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuQ29ubmVjdENvbW1hbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgdmFsdWVzIH0gPSBwYXJzZUFyZ3Moe1xuICAgIG9wdGlvbnM6IHtcbiAgICAgICdjb21tYW5kLXRpbWVvdXQnOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAnaG9zdCc6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICduby1yZW1vdmUtdmF1bHQnOiB7IHR5cGU6ICdib29sZWFuJyB9LFxuICAgICAgJ29ic2lkaWFuLWluc3RhbGxlci12ZXJzaW9uJzogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgJ29ic2lkaWFuLXZlcnNpb24nOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAncG9ydCc6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICd2YXVsdCc6IHsgdHlwZTogJ3N0cmluZycgfVxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgY29ubmVjdGlvbiA9IGF3YWl0IGNvbm5lY3RUb0NkcChidWlsZE9wdGlvbnModmFsdWVzKSk7XG5cbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoXG4gICAgJ09ic2lkaWFuIENEUCByZWFkeS5cXG4nXG4gICAgICArIGAgIHBvcnQ6ICAgJHtTdHJpbmcoY29ubmVjdGlvbi5wb3J0KX1cXG5gXG4gICAgICArIGAgIGNkcFVybDogJHtjb25uZWN0aW9uLmNkcFVybH1cXG5gXG4gICAgICArIGAgIHZhdWx0OiAgJHtjb25uZWN0aW9uLnZhdWx0LnBhdGh9XFxuYFxuICAgICAgKyAnUnVudGltZSBoZWxwZXJzIGJvb3RzdHJhcHBlZCBhcyB3aW5kb3cuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy5cXG4nXG4gICAgICArICdQcmVzcyBDdHJsK0MgdG8gc3RvcC5cXG4nXG4gICk7XG5cbiAgYXdhaXQgd2FpdEZvclNodXRkb3duT3JJbnN0YW5jZUNsb3NlKGNvbm5lY3Rpb24uY2RwVXJsKTtcblxuICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFxuU2h1dHRpbmcgZG93blx1MjAyNlxcbicpO1xuICBhd2FpdCBjb25uZWN0aW9uLmRpc3Bvc2UoKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBvbmNlIHRoZSBwcm9jZXNzIHJlY2VpdmVzIGBTSUdJTlRgL2BTSUdURVJNYCwgb3IgdGhlIENEUCBlbmRwb2ludFxuICogc3RvcHMgYW5zd2VyaW5nICh0aGUgb3duZWQgT2JzaWRpYW4gd2luZG93IHdhcyBjbG9zZWQpLlxuICpcbiAqIEBwYXJhbSBjZHBVcmwgLSBUaGUgY29ubmVjdGlvbidzIENEUCBiYXNlIFVSTCB0byBwb2xsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbiB0aGUgZmlyc3Qgc2h1dGRvd24gdHJpZ2dlci5cbiAqL1xuZnVuY3Rpb24gd2FpdEZvclNodXRkb3duT3JJbnN0YW5jZUNsb3NlKGNkcFVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IFBPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gMTAwMDtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdmVyc2lvblVybCA9IGAke2NkcFVybH0vanNvbi92ZXJzaW9uYDtcbiAgICBsZXQgaXNTZXR0bGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHByb2JlQWxpdmUoKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIC8vIElnbm9yZSBwb2xsIGVycm9ycy5cbiAgICAgIH0pO1xuICAgIH0sIFBPTExfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTKTtcblxuICAgIHByb2Nlc3Mub25jZSgnU0lHSU5UJywgc2V0dGxlKTtcbiAgICBwcm9jZXNzLm9uY2UoJ1NJR1RFUk0nLCBzZXR0bGUpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvYmVBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godmVyc2lvblVybCk7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBzZXR0bGUoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIFRoZSBDRFAgcG9ydCBzdG9wcGVkIGFuc3dlcmluZzogdGhlIE9ic2lkaWFuIHdpbmRvdyB3YXMgY2xvc2VkLlxuICAgICAgICBzZXR0bGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXR0bGUoKTogdm9pZCB7XG4gICAgICBpZiAoaXNTZXR0bGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlzU2V0dGxlZCA9IHRydWU7XG4gICAgICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBb0JBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQSxXQUFXO0FBQUEsT0FDTjtBQUNQLE9BQU8sYUFBYTtBQUNwQixTQUFTLGlCQUFpQjtBQUsxQixTQUFTLG9CQUFvQjtBQUM3QixTQUFTLGlDQUFpQztBQUUxQyxNQUFNLCtCQUErQjtBQUNyQyxNQUFNLGFBQWEsb0JBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDO0FBSzNDLE1BQU0sbUNBQW1DO0FBRXpDLE1BQU0sUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQ0FNbUIsNEJBQTRCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOEI3RCxlQUFzQixPQUFzQjtBQUMxQyxRQUFNLENBQUMsRUFBRSxFQUFFLGFBQWEsSUFBSSxRQUFRO0FBRXBDLE1BQUksa0JBQWtCLFVBQWEsV0FBVyxJQUFJLGFBQWEsR0FBRztBQUNoRSxZQUFRLE9BQU8sTUFBTSxLQUFLO0FBQzFCO0FBQUEsRUFDRjtBQUVBLE1BQUksa0JBQWtCLDhCQUE4QjtBQUNsRCxVQUFNLDZCQUE2QixRQUFRLEtBQUssTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGtCQUFrQjtBQUMxQjtBQVFBLFNBQVMsYUFBYSxRQUE4QztBQUNsRSxTQUFPO0FBQUEsSUFDTCxHQUFJLE9BQU8saUJBQWlCLE1BQU0sVUFBYSxFQUFFLDhCQUE4QixZQUFZLG1CQUFtQixPQUFPLGlCQUFpQixDQUFDLEVBQUU7QUFB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