sliftutils 1.7.87 → 1.7.89

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 (127) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/dist/treeSummary.ts.cache +2 -2
  3. package/index.d.ts +675 -296
  4. package/misc/dist/environment.ts.cache +2 -2
  5. package/misc/dist/getSecret.ts.cache +2 -2
  6. package/misc/dist/strings.ts.cache +2 -2
  7. package/misc/dist/zip.ts.cache +2 -2
  8. package/misc/https/dist/certs.ts.cache +2 -2
  9. package/misc/https/dist/cloudflareHelpers.ts.cache +2 -2
  10. package/misc/https/dist/dns.ts.cache +2 -2
  11. package/misc/https/dist/hostServer.ts.cache +49 -21
  12. package/misc/https/dist/hostsFile.ts.cache +82 -0
  13. package/misc/https/dist/httpsCerts.ts.cache +2 -2
  14. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  15. package/misc/https/hostServer.d.ts +6 -2
  16. package/misc/https/hostServer.ts +52 -19
  17. package/misc/https/hostsFile.d.ts +7 -0
  18. package/misc/https/hostsFile.ts +66 -0
  19. package/package.json +1 -1
  20. package/render-utils/dist/observer.tsx.cache +2 -2
  21. package/storage/ArchivesDisk.d.ts +3 -6
  22. package/storage/ArchivesDisk.ts +26 -2
  23. package/storage/BulkDatabase2/BulkDatabaseReader.ts +1 -1
  24. package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
  25. package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
  26. package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
  27. package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +3 -3
  28. package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
  29. package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
  30. package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
  31. package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
  32. package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
  33. package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
  34. package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
  35. package/storage/IArchives.d.ts +37 -24
  36. package/storage/IArchives.ts +47 -62
  37. package/storage/LogMap.d.ts +56 -0
  38. package/storage/LogMap.ts +220 -0
  39. package/storage/archiveHelpers.d.ts +36 -0
  40. package/storage/archiveHelpers.ts +103 -0
  41. package/storage/backblaze.d.ts +7 -12
  42. package/storage/backblaze.ts +53 -48
  43. package/storage/dist/ArchivesDisk.ts.cache +28 -2
  44. package/storage/dist/FileFolderAPI.tsx.cache +2 -2
  45. package/storage/dist/IArchives.ts.cache +16 -52
  46. package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
  47. package/storage/dist/JSONStorage.ts.cache +2 -2
  48. package/storage/dist/LogMap.ts.cache +212 -0
  49. package/storage/dist/PendingManager.tsx.cache +2 -2
  50. package/storage/dist/TransactionStorage.ts.cache +2 -2
  51. package/storage/dist/backblaze.ts.cache +58 -44
  52. package/storage/dist/fileSystemPointer.ts.cache +2 -2
  53. package/storage/dist/remoteFileStorage.ts.cache +2 -2
  54. package/storage/remoteStorage/ArchivesDelayed.d.ts +66 -0
  55. package/storage/remoteStorage/ArchivesDelayed.ts +237 -0
  56. package/storage/remoteStorage/ArchivesRemote.d.ts +5 -6
  57. package/storage/remoteStorage/ArchivesRemote.ts +26 -5
  58. package/storage/remoteStorage/ArchivesUrl.d.ts +2 -5
  59. package/storage/remoteStorage/ArchivesUrl.ts +2 -2
  60. package/storage/remoteStorage/accessPage.tsx +12 -0
  61. package/storage/remoteStorage/accessStats.d.ts +1 -1
  62. package/storage/remoteStorage/accessStats.ts +3 -3
  63. package/storage/remoteStorage/blobStore.d.ts +162 -189
  64. package/storage/remoteStorage/blobStore.ts +495 -952
  65. package/storage/remoteStorage/bucketDisk.d.ts +24 -3
  66. package/storage/remoteStorage/bucketDisk.ts +56 -22
  67. package/storage/remoteStorage/certTrustModal.d.ts +1 -0
  68. package/storage/remoteStorage/certTrustModal.tsx +48 -0
  69. package/storage/remoteStorage/cliArgs.d.ts +2 -0
  70. package/storage/remoteStorage/cliArgs.ts +5 -0
  71. package/storage/remoteStorage/createArchives.d.ts +8 -7
  72. package/storage/remoteStorage/createArchives.ts +65 -26
  73. package/storage/remoteStorage/deployTakeover.ts +1 -1
  74. package/storage/remoteStorage/dist/ArchivesDelayed.ts.cache +220 -0
  75. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +25 -5
  76. package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +3 -3
  77. package/storage/remoteStorage/dist/accessPage.tsx.cache +13 -3
  78. package/storage/remoteStorage/dist/accessStats.ts.cache +6 -6
  79. package/storage/remoteStorage/dist/blobStore.ts.cache +483 -965
  80. package/storage/remoteStorage/dist/bucketDisk.ts.cache +60 -29
  81. package/storage/remoteStorage/dist/certTrustModal.tsx.cache +55 -0
  82. package/storage/remoteStorage/dist/cliArgs.ts.cache +9 -4
  83. package/storage/remoteStorage/dist/createArchives.ts.cache +63 -26
  84. package/storage/remoteStorage/dist/deployTakeover.ts.cache +5 -5
  85. package/storage/remoteStorage/dist/intermediateManagement.ts.cache +286 -0
  86. package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
  87. package/storage/remoteStorage/dist/remoteConfig.ts.cache +122 -56
  88. package/storage/remoteStorage/dist/serverConfig.ts.cache +4 -4
  89. package/storage/remoteStorage/dist/sourceWrapper.ts.cache +7 -11
  90. package/storage/remoteStorage/dist/sourcesList.ts.cache +3 -6
  91. package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
  92. package/storage/remoteStorage/dist/storageController.ts.cache +27 -12
  93. package/storage/remoteStorage/dist/storageServer.ts.cache +27 -7
  94. package/storage/remoteStorage/dist/storageServerCli.ts.cache +7 -3
  95. package/storage/remoteStorage/dist/storageServerState.ts.cache +133 -696
  96. package/storage/remoteStorage/dist/storeConfig.ts.cache +52 -0
  97. package/storage/remoteStorage/dist/storePlan.ts.cache +110 -81
  98. package/storage/remoteStorage/dist/storeSources.ts.cache +51 -0
  99. package/storage/remoteStorage/dist/storeSync.ts.cache +650 -0
  100. package/storage/remoteStorage/dist/validation.ts.cache +14 -4
  101. package/storage/remoteStorage/intermediateManagement.d.ts +12 -0
  102. package/storage/remoteStorage/intermediateManagement.ts +264 -0
  103. package/storage/remoteStorage/remoteConfig.d.ts +32 -0
  104. package/storage/remoteStorage/remoteConfig.ts +115 -50
  105. package/storage/remoteStorage/serverConfig.d.ts +1 -1
  106. package/storage/remoteStorage/serverConfig.ts +1 -1
  107. package/storage/remoteStorage/sourceWrapper.ts +4 -8
  108. package/storage/remoteStorage/sourcesList.d.ts +0 -2
  109. package/storage/remoteStorage/sourcesList.ts +0 -3
  110. package/storage/remoteStorage/spec.md +18 -4
  111. package/storage/remoteStorage/storageController.d.ts +10 -0
  112. package/storage/remoteStorage/storageController.ts +29 -16
  113. package/storage/remoteStorage/storageServer.d.ts +2 -0
  114. package/storage/remoteStorage/storageServer.ts +28 -4
  115. package/storage/remoteStorage/storageServerCli.ts +5 -1
  116. package/storage/remoteStorage/storageServerState.d.ts +34 -21
  117. package/storage/remoteStorage/storageServerState.ts +147 -662
  118. package/storage/remoteStorage/storeConfig.d.ts +30 -0
  119. package/storage/remoteStorage/storeConfig.ts +62 -0
  120. package/storage/remoteStorage/storePlan.d.ts +29 -17
  121. package/storage/remoteStorage/storePlan.ts +112 -85
  122. package/storage/remoteStorage/storeSources.d.ts +11 -0
  123. package/storage/remoteStorage/storeSources.ts +47 -0
  124. package/storage/remoteStorage/storeSync.d.ts +53 -0
  125. package/storage/remoteStorage/storeSync.ts +632 -0
  126. package/storage/remoteStorage/validation.d.ts +2 -0
  127. package/storage/remoteStorage/validation.ts +10 -0
@@ -1,4 +1,4 @@
1
- "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  const storageServer_1 = require("./storageServer");
4
4
  const cliArgs_1 = require("./cliArgs");
@@ -28,11 +28,15 @@ async function main() {
28
28
  url,
29
29
  folder,
30
30
  lowSpaceThresholdBytes,
31
+ // Do not forward ports, and base the ip-domain on our internal LAN ip instead of our external ip (for LAN-only servers behind a NAT we can't/won't open)
32
+ internal: (0, cliArgs_1.getFlag)("internal"),
33
+ // Serve a self-signed TLS cert signed by this machine's CA instead of getting a real (ACME) one - for servers without a Cloudflare-managed domain. Clients trust it by trusting the CA, or by visiting the server once and accepting the certificate.
34
+ selfSigned: (0, cliArgs_1.getFlag)("selfSigned"),
31
35
  });
32
36
  }
33
37
  main().catch(e => {
34
38
  console.error(e);
35
39
  process.exit(1);
36
40
  });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZVNlcnZlckNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0b3JhZ2VTZXJ2ZXJDbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFBb0Q7QUFDcEQsdUNBQW1DO0FBRW5DLDhGQUE4RjtBQUU5RixPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUNILE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDO0FBRUgsS0FBSyxVQUFVLElBQUk7SUFDZixJQUFJLEdBQUcsR0FBRyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsSUFBSSxDQUFDLEdBQUc7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7SUFDNUYsSUFBSSxNQUFNLEdBQUcsSUFBQSxnQkFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ3hGLElBQUksc0JBQTBDLENBQUM7SUFDL0MsSUFBSSxpQkFBaUIsR0FBRyxJQUFBLGdCQUFNLEVBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsc0JBQXNCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztRQUM1QyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sSUFBQSxpQ0FBaUIsRUFBQztRQUNwQixHQUFHO1FBQ0gsTUFBTTtRQUNOLHNCQUFzQjtLQUN6QixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaG9zdFN0b3JhZ2VTZXJ2ZXIgfSBmcm9tIFwiLi9zdG9yYWdlU2VydmVyXCI7XG5pbXBvcnQgeyBnZXRBcmcgfSBmcm9tIFwiLi9jbGlBcmdzXCI7XG5cbi8vIEhvc3RzIGEgc3RvcmFnZSBzZXJ2ZXIgZnJvbSB0aGUgY29tbWFuZCBsaW5lICh2aWEgdGhlIHN0b3JhZ2VzZXJ2ZXIgYmluLCBzZWUgcGFja2FnZS5qc29uKS5cblxucHJvY2Vzcy5vbihcInVuaGFuZGxlZFJlamVjdGlvblwiLCAoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKFwiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uOlwiLCBlcnJvcik7XG59KTtcbnByb2Nlc3Mub24oXCJ1bmNhdWdodEV4Y2VwdGlvblwiLCAoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKFwiVW5jYXVnaHQgZXhjZXB0aW9uOlwiLCBlcnJvcik7XG59KTtcblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgICBsZXQgdXJsID0gZ2V0QXJnKFwidXJsXCIpO1xuICAgIGlmICghdXJsKSB0aHJvdyBuZXcgRXJyb3IoYC0tdXJsIGlzIHJlcXVpcmVkIChleDogLS11cmwgaHR0cHM6Ly9zdG9yYWdlLmV4YW1wbGUuY29tOjQ0NDQpYCk7XG4gICAgbGV0IGZvbGRlciA9IGdldEFyZyhcImZvbGRlclwiKTtcbiAgICBpZiAoIWZvbGRlcikgdGhyb3cgbmV3IEVycm9yKGAtLWZvbGRlciBpcyByZXF1aXJlZCAodGhlIGZvbGRlciBhbGwgZGF0YSBpcyBzdG9yZWQgaW4pYCk7XG4gICAgbGV0IGxvd1NwYWNlVGhyZXNob2xkQnl0ZXM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBsZXQgbG93U3BhY2VUaHJlc2hvbGQgPSBnZXRBcmcoXCJsb3dTcGFjZVRocmVzaG9sZFwiKTtcbiAgICBpZiAobG93U3BhY2VUaHJlc2hvbGQpIHtcbiAgICAgICAgbG93U3BhY2VUaHJlc2hvbGRCeXRlcyA9ICtsb3dTcGFjZVRocmVzaG9sZDtcbiAgICAgICAgaWYgKGlzTmFOKGxvd1NwYWNlVGhyZXNob2xkQnl0ZXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYC0tbG93U3BhY2VUaHJlc2hvbGQgbXVzdCBiZSBhIG51bWJlciBvZiBieXRlcywgd2FzICR7SlNPTi5zdHJpbmdpZnkobG93U3BhY2VUaHJlc2hvbGQpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgaG9zdFN0b3JhZ2VTZXJ2ZXIoe1xuICAgICAgICB1cmwsXG4gICAgICAgIGZvbGRlcixcbiAgICAgICAgbG93U3BhY2VUaHJlc2hvbGRCeXRlcyxcbiAgICB9KTtcbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufSk7XG4iXX0//=
38
- /* _JS_SOURCE_HASH = "91d8a145cdce64ce31ec5f501945a4e439be44d4411fda9245ab3a76871ccb87"; */
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZVNlcnZlckNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0b3JhZ2VTZXJ2ZXJDbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFBb0Q7QUFDcEQsdUNBQTRDO0FBRTVDLDhGQUE4RjtBQUU5RixPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUNILE9BQU8sQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQyxDQUFDO0FBRUgsS0FBSyxVQUFVLElBQUk7SUFDZixJQUFJLEdBQUcsR0FBRyxJQUFBLGdCQUFNLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsSUFBSSxDQUFDLEdBQUc7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7SUFDNUYsSUFBSSxNQUFNLEdBQUcsSUFBQSxnQkFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ3hGLElBQUksc0JBQTBDLENBQUM7SUFDL0MsSUFBSSxpQkFBaUIsR0FBRyxJQUFBLGdCQUFNLEVBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsc0JBQXNCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztRQUM1QyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sSUFBQSxpQ0FBaUIsRUFBQztRQUNwQixHQUFHO1FBQ0gsTUFBTTtRQUNOLHNCQUFzQjtRQUN0Qix5SkFBeUo7UUFDekosUUFBUSxFQUFFLElBQUEsaUJBQU8sRUFBQyxVQUFVLENBQUM7UUFDN0Isc1BBQXNQO1FBQ3RQLFVBQVUsRUFBRSxJQUFBLGlCQUFPLEVBQUMsWUFBWSxDQUFDO0tBQ3BDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBob3N0U3RvcmFnZVNlcnZlciB9IGZyb20gXCIuL3N0b3JhZ2VTZXJ2ZXJcIjtcbmltcG9ydCB7IGdldEFyZywgZ2V0RmxhZyB9IGZyb20gXCIuL2NsaUFyZ3NcIjtcblxuLy8gSG9zdHMgYSBzdG9yYWdlIHNlcnZlciBmcm9tIHRoZSBjb21tYW5kIGxpbmUgKHZpYSB0aGUgc3RvcmFnZXNlcnZlciBiaW4sIHNlZSBwYWNrYWdlLmpzb24pLlxuXG5wcm9jZXNzLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb246XCIsIGVycm9yKTtcbn0pO1xucHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVbmNhdWdodCBleGNlcHRpb246XCIsIGVycm9yKTtcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICAgIGxldCB1cmwgPSBnZXRBcmcoXCJ1cmxcIik7XG4gICAgaWYgKCF1cmwpIHRocm93IG5ldyBFcnJvcihgLS11cmwgaXMgcmVxdWlyZWQgKGV4OiAtLXVybCBodHRwczovL3N0b3JhZ2UuZXhhbXBsZS5jb206NDQ0NClgKTtcbiAgICBsZXQgZm9sZGVyID0gZ2V0QXJnKFwiZm9sZGVyXCIpO1xuICAgIGlmICghZm9sZGVyKSB0aHJvdyBuZXcgRXJyb3IoYC0tZm9sZGVyIGlzIHJlcXVpcmVkICh0aGUgZm9sZGVyIGFsbCBkYXRhIGlzIHN0b3JlZCBpbilgKTtcbiAgICBsZXQgbG93U3BhY2VUaHJlc2hvbGRCeXRlczogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGxldCBsb3dTcGFjZVRocmVzaG9sZCA9IGdldEFyZyhcImxvd1NwYWNlVGhyZXNob2xkXCIpO1xuICAgIGlmIChsb3dTcGFjZVRocmVzaG9sZCkge1xuICAgICAgICBsb3dTcGFjZVRocmVzaG9sZEJ5dGVzID0gK2xvd1NwYWNlVGhyZXNob2xkO1xuICAgICAgICBpZiAoaXNOYU4obG93U3BhY2VUaHJlc2hvbGRCeXRlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgLS1sb3dTcGFjZVRocmVzaG9sZCBtdXN0IGJlIGEgbnVtYmVyIG9mIGJ5dGVzLCB3YXMgJHtKU09OLnN0cmluZ2lmeShsb3dTcGFjZVRocmVzaG9sZCl9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBob3N0U3RvcmFnZVNlcnZlcih7XG4gICAgICAgIHVybCxcbiAgICAgICAgZm9sZGVyLFxuICAgICAgICBsb3dTcGFjZVRocmVzaG9sZEJ5dGVzLFxuICAgICAgICAvLyBEbyBub3QgZm9yd2FyZCBwb3J0cywgYW5kIGJhc2UgdGhlIGlwLWRvbWFpbiBvbiBvdXIgaW50ZXJuYWwgTEFOIGlwIGluc3RlYWQgb2Ygb3VyIGV4dGVybmFsIGlwIChmb3IgTEFOLW9ubHkgc2VydmVycyBiZWhpbmQgYSBOQVQgd2UgY2FuJ3Qvd29uJ3Qgb3BlbilcbiAgICAgICAgaW50ZXJuYWw6IGdldEZsYWcoXCJpbnRlcm5hbFwiKSxcbiAgICAgICAgLy8gU2VydmUgYSBzZWxmLXNpZ25lZCBUTFMgY2VydCBzaWduZWQgYnkgdGhpcyBtYWNoaW5lJ3MgQ0EgaW5zdGVhZCBvZiBnZXR0aW5nIGEgcmVhbCAoQUNNRSkgb25lIC0gZm9yIHNlcnZlcnMgd2l0aG91dCBhIENsb3VkZmxhcmUtbWFuYWdlZCBkb21haW4uIENsaWVudHMgdHJ1c3QgaXQgYnkgdHJ1c3RpbmcgdGhlIENBLCBvciBieSB2aXNpdGluZyB0aGUgc2VydmVyIG9uY2UgYW5kIGFjY2VwdGluZyB0aGUgY2VydGlmaWNhdGUuXG4gICAgICAgIHNlbGZTaWduZWQ6IGdldEZsYWcoXCJzZWxmU2lnbmVkXCIpLFxuICAgIH0pO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ=//=
42
+ /* _JS_SOURCE_HASH = "864a13df5159808c0df9ae94e067b40daaba22b7dff0745325980181a8539d1a"; */