sliftutils 1.7.42 → 1.7.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/index.d.ts +16 -0
  2. package/misc/dist/environment.ts.cache +2 -2
  3. package/misc/dist/zip.ts.cache +2 -2
  4. package/package.json +1 -1
  5. package/render-utils/dist/observer.tsx.cache +2 -2
  6. package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
  7. package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
  8. package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
  9. package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +2 -2
  10. package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
  11. package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
  12. package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
  13. package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
  14. package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
  15. package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
  16. package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
  17. package/storage/dist/ArchivesDisk.ts.cache +2 -2
  18. package/storage/dist/FileFolderAPI.tsx.cache +2 -2
  19. package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
  20. package/storage/dist/JSONStorage.ts.cache +2 -2
  21. package/storage/dist/PendingManager.tsx.cache +2 -2
  22. package/storage/dist/TransactionStorage.ts.cache +2 -2
  23. package/storage/dist/fileSystemPointer.ts.cache +2 -2
  24. package/storage/dist/remoteFileStorage.ts.cache +2 -2
  25. package/storage/remoteStorage/createArchives.d.ts +7 -0
  26. package/storage/remoteStorage/createArchives.ts +5 -0
  27. package/storage/remoteStorage/deployTakeover.ts +1 -1
  28. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +2 -2
  29. package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
  30. package/storage/remoteStorage/dist/blobStore.ts.cache +2 -2
  31. package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
  32. package/storage/remoteStorage/dist/createArchives.ts.cache +9 -4
  33. package/storage/remoteStorage/dist/deployTakeover.ts.cache +4 -4
  34. package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
  35. package/storage/remoteStorage/dist/remoteConfig.ts.cache +2 -2
  36. package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
  37. package/storage/remoteStorage/dist/storageController.ts.cache +8 -3
  38. package/storage/remoteStorage/dist/storageServerState.ts.cache +67 -10
  39. package/storage/remoteStorage/storageController.d.ts +4 -0
  40. package/storage/remoteStorage/storageController.ts +6 -1
  41. package/storage/remoteStorage/storageServerState.d.ts +5 -0
  42. package/storage/remoteStorage/storageServerState.ts +63 -7
@@ -1,4 +1,4 @@
1
- "use strict";
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";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.blockCache = exports.BlockCache = exports.encodeCompressedBlocks = void 0;
4
4
  const LZ4_1 = require("socket-function/src/lz4/LZ4");
@@ -160,4 +160,4 @@ exports.BlockCache = BlockCache;
160
160
  // Shared across every BulkDatabase2 collection/file (the 512MB budget is global).
161
161
  exports.blockCache = new BlockCache();
162
162
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tDYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJsb2NrQ2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBRWxELCtGQUErRjtBQUMvRixHQUFHO0FBQ0gsMlhBQTJYO0FBQzNYLEdBQUc7QUFDSCxpRkFBaUY7QUFDakYsR0FBRztBQUNILDZYQUE2WDtBQUM3WCxHQUFHO0FBQ0gseUlBQXlJO0FBRXpJLE1BQU0sVUFBVSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7QUFDaEUsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUFFaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQVcsQ0FBQztBQWF4QywrRUFBK0U7QUFDL0UsU0FBZ0Isc0JBQXNCLENBQUMsSUFBWTtJQUMvQyxJQUFJLE1BQU0sR0FBZ0IsRUFBRSxDQUFDO0lBQzdCLElBQUksV0FBVyxHQUFhLEVBQUUsQ0FBQztJQUMvQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyRixJQUFJLFVBQVUsR0FBRyxTQUFHLENBQUMsUUFBUSxDQUFDLEdB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LENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNoSixDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFsSEQsZ0NBa0hDO0FBRUQsa0ZBQWtGO0FBQ3JFLFFBQUEsVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMWjQgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9sejQvTFo0XCI7XG5cbi8vIEJsb2NrLWFsaWduZWQsIHByb21pc2UtZGVkdXBlZCwgZGVjb21wcmVzc2luZyByYW5nZSBjYWNoZSBmb3IgQnVsa0RhdGFiYXNlMidzIG9uLWRpc2sgZmlsZXMuXG4vLyBcbi8vIE9uLWRpc2sgZm9ybWF0IChwcm9kdWNlZCBieSBlbmNvZGVDb21wcmVzc2VkQmxvY2tzKTogdGhlIGxvZ2ljYWwgKHVuY29tcHJlc3NlZCkgYnVsayBidWZmZXIgaXMgc3BsaXQgaW50byBmaXhlZCBCTE9DS19TSVpFIGJsb2NrczsgZWFjaCBibG9jayBpcyBMWjQtY29tcHJlc3NlZCB1bmxlc3MgdGhhdCB3b3VsZG4ndCBzaHJpbmsgaXQgYnkgYXQgbGVhc3QgMngsIGluIHdoaWNoIGNhc2UgaXQncyBzdG9yZWQgcmF3LiBUaGUgZmlsZSBzdGFydHMgd2l0aCBhIEpTT04gaW5kZXggbWFwcGluZyBlYWNoIGJsb2NrIHRvIGl0cyBzdG9yZWQgbGVuZ3RoICsgYSBjb21wcmVzc2VkIGZsYWcsIHNvIGEgcmVhZGVyIGNhbiBzZWVrIHN0cmFpZ2h0IHRvIGFueSBibG9jazpcbi8vIFxuLy8gICBbdTMyIGluZGV4TGVuZ3RoXVtpbmRleCBKU09OXVtibG9jayAwIHN0b3JlZCBieXRlc11bYmxvY2sgMSBzdG9yZWQgYnl0ZXNdLi4uXG4vLyBcbi8vIFRoZSBjYWNoZSBwcmVzZW50cyBhICpsb2dpY2FsKiBnZXRSYW5nZSAob3ZlciB1bmNvbXByZXNzZWQgYnl0ZXMpIHNvIEJ1bGtEYXRhYmFzZTIncyByZWFkZXIgaXMgb2JsaXZpb3VzIHRvIGNvbXByZXNzaW9uLiBJdCByZWFkcyBjb21wcmVzc2VkIGJ5dGVzIHZpYSB0aGUgdW5kZXJseWluZyBnZXRSYW5nZSwgZGVjb21wcmVzc2VzLCBhbmQgY2FjaGVzIHRoZSB1bmNvbXByZXNzZWQgYmxvY2tzLiBSZWFkcyBhcmUgcHJvbWlzZS1kZWR1cGVkIGFuZCBjb250aWd1b3VzIG1pc3NpbmcgYmxvY2tzIGFyZSBjb2FsZXNjZWQgaW50byBvbmUgdW5kZXJseWluZyByZWFkLiBGaWxlcyBhcmUgaW1tdXRhYmxlLCBzbyBjYWNoZWQgYmxvY2tzIGFyZSB2YWxpZCBmb3JldmVyLlxuLy8gXG4vLyBQZXItYmxvY2sgY29tcHJlc3Npb24gbWFpbmx5IGhlbHBzIHNsb3cgc3RvcmFnZSAoSEREKTogZmV3ZXIgYnl0ZXMgb2ZmIGRpc2sgcGVyIGJsb2NrLCBhdCB0aGUgY29zdCBvZiBhIGZhc3QgaW4tbWVtb3J5IExaNCBkZWNvbXByZXNzLlxuXG5jb25zdCBCTE9DS19TSVpFID0gMjU2ICogMTAyNDtcbmNvbnN0IE1BWF9CTE9DS1MgPSBNYXRoLmZsb29yKCg1MTIgKiAxMDI0ICogMTAyNCkgLyBCTE9DS19TSVpFKTtcbmNvbnN0IE1JTl9DT01QUkVTU0lPTl9SQVRJTyA9IDI7XG5cbmNvbnN0IEVNUFRZID0gQnVmZmVyLmFsbG9jKDApIGFzIEJ1ZmZlcjtcblxuZXhwb3J0IHR5cGUgR2V0UmFuZ2UgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpID0+IFByb21pc2U8QnVmZmVyPjtcblxudHlwZSBCbG9ja01ldGEgPSB7IGxlbjogbnVtYmVyOyBjOiAwIHwgMSB9O1xudHlwZSBGaWxlSW5kZXggPSB7XG4gICAgdW5jb21wcmVzc2VkU2l6ZTogbnVtYmVyO1xuICAgIGJsb2NrU2l6ZTogbnVtYmVyO1xuICAgIGJsb2NrczogQmxvY2tNZXRhW107XG4gICAgLy8gU3RvcmVkIGJ5dGUgb2Zmc2V0IG9mIGVhY2ggYmxvY2sgKG9mZnNldHNbaV0uLm9mZnNldHNbaV0rYmxvY2tzW2ldLmxlbiksIGZpbGxlZCBpbiBvbiBwYXJzZS5cbiAgICBvZmZzZXRzOiBudW1iZXJbXTtcbn07XG5cbi8vIFdyaXRlcyBhIGxvZ2ljYWwgYnVsayBidWZmZXIgaW4gdGhlIGNvbXByZXNzZWQtYmxvY2sgZm9ybWF0IGRlc2NyaWJlZCBhYm92ZS5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkQmxvY2tzKGRhdGE6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgbGV0IGJsb2NrczogQmxvY2tNZXRhW10gPSBbXTtcbiAgICBsZXQgc3RvcmVkUGFydHM6IEJ1ZmZlcltdID0gW107XG4gICAgbGV0IGJsb2NrQ291bnQgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyBCTE9DS19TSVpFKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsb2NrQ291bnQ7IGkrKykge1xuICAgICAgICBsZXQgcmF3ID0gZGF0YS5zdWJhcnJheShpICogQkxPQ0tfU0laRSwgTWF0aC5taW4oKGkgKyAxKSAqIEJMT0NLX1NJWkUsIGRhdGEubGVuZ3RoKSk7XG4gICAgICAgIGxldCBjb21wcmVzc2VkID0gTFo0LmNvbXByZXNzKHJhdyk7XG4gICAgICAgIC8vIE9ubHkga2VlcCB0aGUgY29tcHJlc3NlZCBmb3JtIGlmIGl0IHNocmlua3MgdGhlIGJsb2NrIGJ5IGF0IGxlYXN0IE1JTl9DT01QUkVTU0lPTl9SQVRJTy5cbiAgICAgICAgaWYgKGNvbXByZXNzZWQubGVuZ3RoICogTUlOX0NPTVBSRVNTSU9OX1JBVElPIDw9IHJhdy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0b3JlZFBhcnRzLnB1c2goY29tcHJlc3NlZCk7XG4gICAgICAgICAgICBibG9ja3MucHVzaCh7IGxlbjogY29tcHJlc3NlZC5sZW5ndGgsIGM6IDEgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdG9yZWRQYXJ0cy5wdXNoKHJhdyk7XG4gICAgICAgICAgICBibG9ja3MucHVzaCh7IGxlbjogcmF3Lmxlbmd0aCwgYzogMCB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgaW5kZXhCdWYgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh7IHVuY29tcHJlc3NlZFNpemU6IGRhdGEubGVuZ3RoLCBibG9ja1NpemU6IEJMT0NLX1NJWkUsIGJsb2NrcyB9KSwgXCJ1dGY4XCIpO1xuICAgIGxldCBwcmVmaXggPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgcHJlZml4LndyaXRlVUludDMyTEUoaW5kZXhCdWYubGVuZ3RoLCAwKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbcHJlZml4LCBpbmRleEJ1ZiwgLi4uc3RvcmVkUGFydHNdKTtcbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrQ2FjaGUge1xuICAgIC8vIFVuY29tcHJlc3NlZCBibG9ja3M7IGluc2VydGlvbiBvcmRlciBpcyBMUlUgb3JkZXIgKHJlLWluc2VydGVkIG9uIGFjY2VzcykuXG4gICAgcHJpdmF0ZSBibG9ja3MgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxCdWZmZXI+PigpO1xuICAgIC8vIFBhcnNlZCBmaWxlIGluZGV4IHBlciBmaWxlSWQgKHNtYWxsOyBub3Qgc3ViamVjdCB0byB0aGUgYmxvY2sgTFJVKS5cbiAgICBwcml2YXRlIGluZGV4ZXMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxGaWxlSW5kZXg+PigpO1xuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmJsb2Nrcy5jbGVhcigpO1xuICAgICAgICB0aGlzLmluZGV4ZXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXZpY3QoZmlsZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzLmRlbGV0ZShmaWxlSWQpO1xuICAgICAgICBjb25zdCBwcmVmaXggPSBmaWxlSWQgKyBcIjpcIjtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5ibG9ja3Mua2V5cygpKSBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkgdGhpcy5ibG9ja3MuZGVsZXRlKGtleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b3VjaChrZXk6IHN0cmluZywgdmFsdWU6IFByb21pc2U8QnVmZmVyPikge1xuICAgICAgICB0aGlzLmJsb2Nrcy5kZWxldGUoa2V5KTtcbiAgICAgICAgdGhpcy5ibG9ja3Muc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB3aGlsZSAodGhpcy5ibG9ja3Muc2l6ZSA+IE1BWF9CTE9DS1MpIHtcbiAgICAgICAgICAgIGxldCBvbGRlc3QgPSB0aGlzLmJsb2Nrcy5rZXlzKCkubmV4dCgpLnZhbHVlO1xuICAgICAgICAgICAgaWYgKG9sZGVzdCA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgICAgIHRoaXMuYmxvY2tzLmRlbGV0ZShvbGRlc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVhZHMgKyB2YWxpZGF0ZXMgdGhlIGZpbGUgaW5kZXguIFJlamVjdHMgdGhlIFdIT0xFIGZpbGUgaWYgaXQgaXNuJ3QgZXhhY3RseSB0aGUgc2l6ZSBpdHMgaW5kZXggaW1wbGllcyDigJQgYSB0cnVuY2F0ZWQvcGFydGlhbCB3cml0ZSAoZS5nLiBhIGNyYXNoIG1pZC13cml0ZSkgaXMgZGV0ZWN0ZWQgaGVyZSByYXRoZXIgdGhhbiBzaWxlbnRseSByZXR1cm5pbmcgY29ycnVwdGVkIHZhbHVlcyBmb3IgdGhlIHJvd3MgbmVhciB0aGUgZW5kLlxuICAgIHByaXZhdGUgYXN5bmMgcmVhZEluZGV4KHJhd0dldFJhbmdlOiBHZXRSYW5nZSwgZmlsZVNpemU6IG51bWJlcik6IFByb21pc2U8RmlsZUluZGV4PiB7XG4gICAgICAgIGxldCBoZWFkID0gYXdhaXQgcmF3R2V0UmFuZ2UoMCwgNCk7XG4gICAgICAgIGlmIChoZWFkLmxlbmd0aCA8IDQpIHRocm93IG5ldyBFcnJvcihgYnVsayBmaWxlIHRvbyBzaG9ydCBmb3IgYW4gaW5kZXggaGVhZGVyICgke2ZpbGVTaXplfSBieXRlcylgKTtcbiAgICAgICAgbGV0IGluZGV4TGVuZ3RoID0gaGVhZC5yZWFkVUludDMyTEUoMCk7XG4gICAgICAgIGlmIChpbmRleExlbmd0aCA8PSAwIHx8IDQgKyBpbmRleExlbmd0aCA+IGZpbGVTaXplKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJ1bGsgZmlsZSBpbmRleCBsZW5ndGggJHtpbmRleExlbmd0aH0gaXMgaW52YWxpZCBmb3IgYSAke2ZpbGVTaXplfS1ieXRlIGZpbGVgKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5kZXhCdWYgPSBhd2FpdCByYXdHZXRSYW5nZSg0LCA0ICsgaW5kZXhMZW5ndGgpO1xuICAgICAgICBsZXQgcGFyc2VkID0gSlNPTi5wYXJzZShpbmRleEJ1Zi50b1N0cmluZyhcInV0ZjhcIikpIGFzIHsgdW5jb21wcmVzc2VkU2l6ZTogbnVtYmVyOyBibG9ja1NpemU6IG51bWJlcjsgYmxvY2tzOiBCbG9ja01ldGFbXSB9O1xuICAgICAgICBsZXQgZGF0YUJhc2UgPSA0ICsgaW5kZXhMZW5ndGg7XG4gICAgICAgIGxldCBvZmZzZXRzOiBudW1iZXJbXSA9IFtdO1xuICAgICAgICBsZXQgb2Zmc2V0ID0gZGF0YUJhc2U7XG4gICAgICAgIGZvciAobGV0IGJsb2NrIG9mIHBhcnNlZC5ibG9ja3MpIHtcbiAgICAgICAgICAgIG9mZnNldHMucHVzaChvZmZzZXQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IGJsb2NrLmxlbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgYmxvY2tzIG11c3QgYWNjb3VudCBmb3IgZXhhY3RseSB0aGUgcmVzdCBvZiB0aGUgZmlsZS4gQW55IG1pc21hdGNoIG1lYW5zIHRoZSBmaWxlIGlzIHRydW5jYXRlZCBvciBvdGhlcndpc2UgY29ycnVwdCDigJQgcmVqZWN0IGl0IGVudGlyZWx5LlxuICAgICAgICBpZiAob2Zmc2V0ICE9PSBmaWxlU2l6ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBidWxrIGZpbGUgaXMgJHtmaWxlU2l6ZX0gYnl0ZXMgYnV0IGl0cyBpbmRleCBpbXBsaWVzICR7b2Zmc2V0fSAodHJ1bmNhdGVkL2NvcnJ1cHQpYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ucGFyc2VkLCBvZmZzZXRzIH07XG4gICAgfVxuXG4gICAgLy8gT3BlbnMgYW4gaW1tdXRhYmxlIGZpbGU6IHJlYWRzICsgdmFsaWRhdGVzIGl0cyBpbmRleCAoY2FjaGVkKSBhbmQgcmV0dXJucyB0aGUgbG9naWNhbCAodW5jb21wcmVzc2VkKSBzaXplIHBsdXMgYSBsb2dpY2FsIGdldFJhbmdlIHRoYXQgdGhlIGNhbGxlciBjYW4gdXNlIGV4YWN0bHkgbGlrZSBhbiB1bmNvbXByZXNzZWQgZmlsZS4gYGZpbGVTaXplYCBpcyB0aGUgYWN0dWFsIG9uLWRpc2sgYnl0ZSBsZW5ndGgsIHVzZWQgdG8gZGV0ZWN0IHRydW5jYXRpb24uXG4gICAgcHVibGljIGFzeW5jIG9wZW4oZmlsZUlkOiBzdHJpbmcsIGZpbGVTaXplOiBudW1iZXIsIHJhd0dldFJhbmdlOiBHZXRSYW5nZSk6IFByb21pc2U8eyB1bmNvbXByZXNzZWRTaXplOiBudW1iZXI7IGdldFJhbmdlOiBHZXRSYW5nZSB9PiB7XG4gICAgICAgIGxldCBpbmRleFByb21pc2UgPSB0aGlzLmluZGV4ZXMuZ2V0KGZpbGVJZCk7XG4gICAgICAgIGlmICghaW5kZXhQcm9taXNlKSB7XG4gICAgICAgICAgICBpbmRleFByb21pc2UgPSB0aGlzLnJlYWRJbmRleChyYXdHZXRSYW5nZSwgZmlsZVNpemUpO1xuICAgICAgICAgICAgdGhpcy5pbmRleGVzLnNldChmaWxlSWQsIGluZGV4UHJvbWlzZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluZGV4ID0gYXdhaXQgaW5kZXhQcm9taXNlO1xuICAgICAgICByZXR1cm4geyB1bmNvbXByZXNzZWRTaXplOiBpbmRleC51bmNvbXByZXNzZWRTaXplLCBnZXRSYW5nZTogdGhpcy5tYWtlR2V0UmFuZ2UoZmlsZUlkLCBpbmRleCwgcmF3R2V0UmFuZ2UpIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlR2V0UmFuZ2UoZmlsZUlkOiBzdHJpbmcsIGluZGV4OiBGaWxlSW5kZXgsIHJhd0dldFJhbmdlOiBHZXRSYW5nZSk6IEdldFJhbmdlIHtcbiAgICAgICAgbGV0IGJsb2NrU2l6ZSA9IGluZGV4LmJsb2NrU2l6ZTtcbiAgICAgICAgcmV0dXJuIGFzeW5jIChzdGFydCwgZW5kKSA9PiB7XG4gICAgICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICBsZXQgZmlyc3RCbG9jayA9IE1hdGguZmxvb3Ioc3RhcnQgLyBibG9ja1NpemUpO1xuICAgICAgICAgICAgbGV0IGxhc3RCbG9jayA9IE1hdGguZmxvb3IoKGVuZCAtIDEpIC8gYmxvY2tTaXplKTtcblxuICAgICAgICAgICAgbGV0IHBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICAgICAgbGV0IGJsb2NrID0gZmlyc3RCbG9jaztcbiAgICAgICAgICAgIHdoaWxlIChibG9jayA8PSBsYXN0QmxvY2spIHtcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gYCR7ZmlsZUlkfToke2Jsb2NrfWA7XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZCA9IHRoaXMuYmxvY2tzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaChrZXksIGNhY2hlZCk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYXdhaXQgY2FjaGVkKTtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2srKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIENvYWxlc2NlIGEgcnVuIG9mIGNvbnNlY3V0aXZlIG1pc3NpbmcgYmxvY2tzIGludG8gb25lIHVuZGVybHlpbmcgKGNvbXByZXNzZWQpIHJlYWQuXG4gICAgICAgICAgICAgICAgbGV0IHJ1blN0YXJ0ID0gYmxvY2s7XG4gICAgICAgICAgICAgICAgbGV0IHJ1bkVuZCA9IGJsb2NrICsgMTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocnVuRW5kIDw9IGxhc3RCbG9jayAmJiAhdGhpcy5ibG9ja3MuaGFzKGAke2ZpbGVJZH06JHtydW5FbmR9YCkpIHJ1bkVuZCsrO1xuICAgICAgICAgICAgICAgIGxldCBjb21wU3RhcnQgPSBpbmRleC5vZmZzZXRzW3J1blN0YXJ0XTtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdE1ldGEgPSBpbmRleC5ibG9ja3NbcnVuRW5kIC0gMV07XG4gICAgICAgICAgICAgICAgbGV0IGNvbXBFbmQgPSBpbmRleC5vZmZzZXRzW3J1bkVuZCAtIDFdICsgbGFzdE1ldGEubGVuO1xuICAgICAgICAgICAgICAgIGxldCBydW5Db21wcmVzc2VkID0gcmF3R2V0UmFuZ2UoY29tcFN0YXJ0LCBjb21wRW5kKTtcbiAgICAgICAgICAgICAgICAvLyBIb2xkIHRoaXMgcnVuJ3MgcHJvbWlzZXMgbG9jYWxseS4gUmVnaXN0ZXJpbmcgdGhlbSBpbiB0aGUgTFJVIGNhbiBldmljdCBlYXJsaWVyIGJsb2NrcyBvZiB0aGUgc2FtZSBydW4gKG9yIG9mIGEgY29uY3VycmVudCBydW4pIGJlZm9yZSB3ZSBnZXQgdG8gYXdhaXQgdGhlbSwgc28gcmVhZGluZyB0aGVtIGJhY2sgb3V0IG9mIHRoZSBjYWNoZSB3b3VsZCBzaWxlbnRseSBkcm9wIGJsb2NrcyBhbmQgcmV0dXJuIGEgc2hvcnQgYnVmZmVyLiBXZSBzdGlsbCByZWdpc3RlciBpbiB0aGUgTFJVIHNvIGNvbmN1cnJlbnQgcmVhZHMgZGVkdXBlIG9udG8gdGhlbS5cbiAgICAgICAgICAgICAgICBsZXQgcnVuUHJvbWlzZXM6IFByb21pc2U8QnVmZmVyPltdID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHJ1blN0YXJ0OyBpIDwgcnVuRW5kOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1ldGEgPSBpbmRleC5ibG9ja3NbaV07XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWxPZmZzZXQgPSBpbmRleC5vZmZzZXRzW2ldIC0gY29tcFN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tQcm9taXNlID0gcnVuQ29tcHJlc3NlZC50aGVuKGJ1ZiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RvcmVkID0gYnVmLnN1YmFycmF5KHJlbE9mZnNldCwgcmVsT2Zmc2V0ICsgbWV0YS5sZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGEuYykgcmV0dXJuIExaNC5kZWNvbXByZXNzKHN0b3JlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmVkO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcnVuUHJvbWlzZXMucHVzaChibG9ja1Byb21pc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoKGAke2ZpbGVJZH06JHtpfWAsIGJsb2NrUHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb21pc2Ugb2YgcnVuUHJvbWlzZXMpIHBhcnRzLnB1c2goYXdhaXQgcHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgYmxvY2sgPSBydW5FbmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb21iaW5lZCA9IHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBwYXJ0c1swXSB8fCBCdWZmZXIuY29uY2F0KHBhcnRzKTtcbiAgICAgICAgICAgIGxldCBzbGljZVN0YXJ0ID0gc3RhcnQgLSBmaXJzdEJsb2NrICogYmxvY2tTaXplO1xuICAgICAgICAgICAgLy8gQSBzaG9ydCBjb21iaW5lZCBidWZmZXIgbWVhbnMgd2UgbG9zdCBibG9ja3M7IHN1YmFycmF5IHdvdWxkIGNsYW1wIGFuZCBoYW5kIGJhY2sgdHJ1bmNhdGVkIGRhdGEgdGhhdCBldmVyeSBjYWxsZXIgdHJlYXRzIGFzIHZhbGlkLiBGYWlsIGxvdWRseSBpbnN0ZWFkLlxuICAgICAgICAgICAgaWYgKGNvbWJpbmVkLmxlbmd0aCA8IHNsaWNlU3RhcnQgKyAoZW5kIC0gc3RhcnQpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke3NsaWNlU3RhcnQgKyAoZW5kIC0gc3RhcnQpfSBieXRlcyBvZiBibG9ja3MgZm9yIHJhbmdlIFske3N0YXJ0fSwgJHtlbmR9KSBvZiAke2ZpbGVJZH0sIHdhcyAke2NvbWJpbmVkLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb21iaW5lZC5zdWJhcnJheShzbGljZVN0YXJ0LCBzbGljZVN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSk7XG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vLyBTaGFyZWQgYWNyb3NzIGV2ZXJ5IEJ1bGtEYXRhYmFzZTIgY29sbGVjdGlvbi9maWxlICh0aGUgNTEyTUIgYnVkZ2V0IGlzIGdsb2JhbCkuXG5leHBvcnQgY29uc3QgYmxvY2tDYWNoZSA9IG5ldyBCbG9ja0NhY2hlKCk7XG4iXX0=
163
- /* _JS_SOURCE_HASH = "3163c091d00d8e1d771e9b0df56046cefa6cce296d5712b1e59ea17780504faf"; */
163
+ /* _JS_SOURCE_HASH = "4df6981e7e357ab47de6fcfbe0f2aa24bad99984453482b285a26d5a51d24dde"; */
@@ -1,4 +1,4 @@
1
- "use strict";
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";
2
2
  // Best-effort "only one tab merges this collection at a time" guard. This is purely an efficiency measure: correctness does NOT depend on it. Reads resolve by per-row write-time, merges write new files before deleting consumed ones, and a duplicate-heavy region gets re-merged — so two tabs merging at once only waste work and briefly duplicate data, never corrupt or lose it. The lock just stops that wasted work. It uses localStorage (shared across same-origin tabs) and is a no-op where localStorage is unavailable (Node) — there concurrent merges are harmless, which the Node stress tests exercise. localStorage has no atomic compare-and-swap, so we write-then-reread to shrink the race window, and a TTL frees a lock left behind by a tab that crashed or closed mid-merge.
3
3
  //
4
4
  // File-lock layer (see acquireMergeFileLock at the bottom): for cross-PROCESS safety (different browsers, different machines pointing at the same remote storage), we ALSO write a `.merge-lock` file inside the collection's storage with our ID. The protocol is check-write-wait-recheck — last writer wins after the 15s settle window. The localStorage lock above covers same-origin tabs; this covers everything else (separate processes, remote shared storage).
@@ -127,4 +127,4 @@ async function releaseMergeFileLock(storage, holderId) {
127
127
  }
128
128
  exports.releaseMergeFileLock = releaseMergeFileLock;
129
129
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VMb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyZ2VMb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx5d0JBQXl3QjtBQUN6d0IsR0FBRztBQUNILDBjQUEwYzs7O0FBSTFjLE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFJOUIsU0FBUyxjQUFjLENBQUMsS0FBYTtJQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxHQUFHLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNoQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNyRCxDQUFDO0FBRUQsU0FBUyxlQUFlO0lBQ3BCLElBQUksQ0FBQztRQUNELE9BQU8sT0FBTyxZQUFZLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMxRSxDQUFDO0lBQUMsV0FBTSxDQUFDO1FBQ0wsT0FBTyxTQUFTLENBQUMsQ0FBQywyREFBMkQ7SUFDakYsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxVQUFrQjtJQUMvQixPQUFPLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztBQUMvQyxDQUFDO0FBRUQsaVpBQWlaO0FBQ2paLFNBQWdCLG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsUUFBZ0I7SUFDcEUsTUFBTSxFQUFFLEdBQUcsZUFBZSxF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bUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQzNELE1BQU0sS0FBSyxHQUFHLE1BQU0saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDO0FBQ2xELENBQUM7QUFSRCwwREFRQztBQUVELGlTQUFpUztBQUNqUyxTQUFnQiwyQkFBMkIsQ0FBQyxPQUFvQixFQUFFLFFBQWdCOztJQUM5RSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQzlCLEtBQUssa0JBQWtCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNCLE1BQUEsTUFBQyxRQUFtQyxFQUFDLEtBQUssa0RBQUksQ0FBQztJQUMvQyxPQUFPLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBTkQsa0VBTUM7QUFFTSxLQUFLLFVBQVUsb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxRQUFnQjtJQUM3RSxJQUFJLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUTtZQUFFLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQUMsUUFBUSxZQUFZLElBQWQsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFMRCxvREFLQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJlc3QtZWZmb3J0IFwib25seSBvbmUgdGFiIG1lcmdlcyB0aGlzIGNvbGxlY3Rpb24gYXQgYSB0aW1lXCIgZ3VhcmQuIFRoaXMgaXMgcHVyZWx5IGFuIGVmZmljaWVuY3kgbWVhc3VyZTogY29ycmVjdG5lc3MgZG9lcyBOT1QgZGVwZW5kIG9uIGl0LiBSZWFkcyByZXNvbHZlIGJ5IHBlci1yb3cgd3JpdGUtdGltZSwgbWVyZ2VzIHdyaXRlIG5ldyBmaWxlcyBiZWZvcmUgZGVsZXRpbmcgY29uc3VtZWQgb25lcywgYW5kIGEgZHVwbGljYXRlLWhlYXZ5IHJlZ2lvbiBnZXRzIHJlLW1lcmdlZCDigJQgc28gdHdvIHRhYnMgbWVyZ2luZyBhdCBvbmNlIG9ubHkgd2FzdGUgd29yayBhbmQgYnJpZWZseSBkdXBsaWNhdGUgZGF0YSwgbmV2ZXIgY29ycnVwdCBvciBsb3NlIGl0LiBUaGUgbG9jayBqdXN0IHN0b3BzIHRoYXQgd2FzdGVkIHdvcmsuIEl0IHVzZXMgbG9jYWxTdG9yYWdlIChzaGFyZWQgYWNyb3NzIHNhbWUtb3JpZ2luIHRhYnMpIGFuZCBpcyBhIG5vLW9wIHdoZXJlIGxvY2FsU3RvcmFnZSBpcyB1bmF2YWlsYWJsZSAoTm9kZSkg4oCUIHRoZXJlIGNvbmN1cnJlbnQgbWVyZ2VzIGFyZSBoYXJtbGVzcywgd2hpY2ggdGhlIE5vZGUgc3RyZXNzIHRlc3RzIGV4ZXJjaXNlLiBsb2NhbFN0b3JhZ2UgaGFzIG5vIGF0b21pYyBjb21wYXJlLWFuZC1zd2FwLCBzbyB3ZSB3cml0ZS10aGVuLXJlcmVhZCB0byBzaHJpbmsgdGhlIHJhY2Ugd2luZG93LCBhbmQgYSBUVEwgZnJlZXMgYSBsb2NrIGxlZnQgYmVoaW5kIGJ5IGEgdGFiIHRoYXQgY3Jhc2hlZCBvciBjbG9zZWQgbWlkLW1lcmdlLlxuLy8gXG4vLyBGaWxlLWxvY2sgbGF5ZXIgKHNlZSBhY3F1aXJlTWVyZ2VGaWxlTG9jayBhdCB0aGUgYm90dG9tKTogZm9yIGNyb3NzLVBST0NFU1Mgc2FmZXR5IChkaWZmZXJlbnQgYnJvd3NlcnMsIGRpZmZlcmVudCBtYWNoaW5lcyBwb2ludGluZyBhdCB0aGUgc2FtZSByZW1vdGUgc3RvcmFnZSksIHdlIEFMU08gd3JpdGUgYSBgLm1lcmdlLWxvY2tgIGZpbGUgaW5zaWRlIHRoZSBjb2xsZWN0aW9uJ3Mgc3RvcmFnZSB3aXRoIG91ciBJRC4gVGhlIHByb3RvY29sIGlzIGNoZWNrLXdyaXRlLXdhaXQtcmVjaGVjayDigJQgbGFzdCB3cml0ZXIgd2lucyBhZnRlciB0aGUgMTVzIHNldHRsZSB3aW5kb3cuIFRoZSBsb2NhbFN0b3JhZ2UgbG9jayBhYm92ZSBjb3ZlcnMgc2FtZS1vcmlnaW4gdGFiczsgdGhpcyBjb3ZlcnMgZXZlcnl0aGluZyBlbHNlIChzZXBhcmF0ZSBwcm9jZXNzZXMsIHJlbW90ZSBzaGFyZWQgc3RvcmFnZSkuXG5cbmltcG9ydCB0eXBlIHsgRmlsZVN0b3JhZ2UgfSBmcm9tIFwiLi4vRmlsZUZvbGRlckFQSVwiO1xuXG5jb25zdCBMT0NLX1RUTF9NUyA9IDMwICogMTAwMDtcblxuZXhwb3J0IHR5cGUgTWVyZ2VMb2NrSW5mbyA9IHsgaG9sZGVySWQ6IHN0cmluZzsgZXhwaXJlc0luTXM6IG51bWJlciB9O1xuXG5mdW5jdGlvbiBwYXJzZUxvY2tUb2tlbih0b2tlbjogc3RyaW5nKTogeyBob2xkZXJJZDogc3RyaW5nOyB0aW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29sb24gPSB0b2tlbi5sYXN0SW5kZXhPZihcIjpcIik7XG4gICAgaWYgKGNvbG9uIDwgMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB0aW1lID0gcGFyc2VJbnQodG9rZW4uc2xpY2UoY29sb24gKyAxKSwgMTApO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHRpbWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IGhvbGRlcklkOiB0b2tlbi5zbGljZSgwLCBjb2xvbiksIHRpbWUgfTtcbn1cblxuZnVuY3Rpb24gZ2V0TG9jYWxTdG9yYWdlKCk6IFN0b3JhZ2UgfCB1bmRlZmluZWQge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbG9jYWxTdG9yYWdlICE9PSBcInVuZGVmaW5lZFwiID8gbG9jYWxTdG9yYWdlIDogdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBhY2Nlc3NpbmcgbG9jYWxTdG9yYWdlIGNhbiB0aHJvdyAoZS5nLiBkaXNhYmxlZCBjb29raWVzKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbG9ja0tleShjb2xsZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBcImJ1bGtEYXRhYmFzZTItbWVyZ2U6XCIgKyBjb2xsZWN0aW9uO1xufVxuXG4vLyBSZXR1cm5zIHRydWUgaWYgd2Ugbm93IGhvbGQgdGhlIGxvY2sgKG9yIHRoZXJlJ3Mgbm8gbG9jYWxTdG9yYWdlIHRvIGNvb3JkaW5hdGUgdGhyb3VnaCwgaW4gd2hpY2ggY2FzZSB3ZSBwcm9jZWVkIOKAlCBjb25jdXJyZW50IG1lcmdlcyBhcmUgaGFybWxlc3MpLiBSZXR1cm5zIGZhbHNlIG9ubHkgaWYgYSBESUZGRVJFTlQgaG9sZGVyIGhhcyBhIGZyZXNoIGxvY2suIFJlLXN0YW1waW5nIG91ciBvd24gbG9jayBhbHdheXMgc3VjY2VlZHMsIHNvIHRoaXMgZG91YmxlcyBhcyBhIGhlYXJ0YmVhdDogY2FsbCBpdCBwZXJpb2RpY2FsbHkgZHVyaW5nIGEgbG9uZywgc3BhY2VkLW91dCBtZXJnZSB0byBrZWVwIHRoZSBsb2NrIGFsaXZlIChhbmQgZGV0ZWN0IGlmIGFub3RoZXIgdGFiIHRvb2sgaXQgb3ZlcikuXG5leHBvcnQgZnVuY3Rpb24gdHJ5QWNxdWlyZU1lcmdlTG9jayhjb2xsZWN0aW9uOiBzdHJpbmcsIGhvbGRlcklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBscyA9IGdldExvY2FsU3RvcmFnZSgpO1xuICAgIGlmICghbHMpIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IGtleSA9IGxvY2tLZXkoY29sbGVjdGlvbik7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBleGlzdGluZyA9IGxzLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgIWV4aXN0aW5nLnN0YXJ0c1dpdGgoaG9sZGVySWQgKyBcIjpcIikpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VMb2NrVG9rZW4oZXhpc3RpbmcpO1xuICAgICAgICBpZiAocGFyc2VkICYmIG5vdyAtIHBhcnNlZC50aW1lIDwgTE9DS19UVExfTVMpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgdG9rZW4gPSBob2xkZXJJZCArIFwiOlwiICsgbm93O1xuICAgIGxzLnNldEl0ZW0oa2V5LCB0b2tlbik7XG4gICAgLy8gUmUtcmVhZCB0byBjYXRjaCBhIHJhY2luZyBzZXRJdGVtIGZyb20gYW5vdGhlciB0YWIgKGJlc3QtZWZmb3J0LCBub3QgYXRvbWljKS5cbiAgICByZXR1cm4gbHMuZ2V0SXRlbShrZXkpID09PSB0b2tlbjtcbn1cblxuLy8gTm9uLW11dGF0aW5nIGxvb2sgYXQgdGhlIHRhYiBsb2NrOiB3aG8gaG9sZHMgaXQgYW5kIGhvdyBsb25nIHVudGlsIGl0IGdvZXMgc3RhbGUgKG5lZ2F0aXZlID0gYWxyZWFkeSBzdGFsZSkuIEZvciBsb2dnaW5nIHdoeSBhIG1lcmdlIHdhcyBza2lwcGVkLlxuZXhwb3J0IGZ1bmN0aW9uIHBlZWtNZXJnZUxvY2soY29sbGVjdGlvbjogc3RyaW5nKTogTWVyZ2VMb2NrSW5mbyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbHMgPSBnZXRMb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAoIWxzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbHMuZ2V0SXRlbShsb2NrS2V5KGNvbGxlY3Rpb24pKTtcbiAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlTG9ja1Rva2VuKGV4aXN0aW5nKTtcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBob2xkZXJJZDogcGFyc2VkLmhvbGRlcklkLCBleHBpcmVzSW5NczogcGFyc2VkLnRpbWUgKyBMT0NLX1RUTF9NUyAtIERhdGUubm93KCkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VNZXJnZUxvY2soY29sbGVjdGlvbjogc3RyaW5nLCBob2xkZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbHMgPSBnZXRMb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAoIWxzKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbG9ja0tleShjb2xsZWN0aW9uKTtcbiAgICBjb25zdCBleGlzdGluZyA9IGxzLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3Rpbmcuc3RhcnRzV2l0aChob2xkZXJJZCArIFwiOlwiKSkgbHMucmVtb3ZlSXRlbShrZXkpO1xufVxuXG4vLyDilIDilIAgRmlsZS1iYXNlZCBsb2NrIChjcm9zcy1wcm9jZXNzIC8gc2hhcmVkIHN0b3JhZ2UpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuY29uc3QgRklMRV9MT0NLX0tFWSA9IFwiLm1lcmdlLWxvY2tcIjtcbmNvbnN0IEZJTEVfTE9DS19UVExfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgRklMRV9MT0NLX1NFVFRMRV9NUyA9IDE1ICogMTAwMDtcbmNvbnN0IEZJTEVfTE9DS19IRUFSVEJFQVRfTVMgPSAyICogNjAgKiAxMDAwO1xuXG5hc3luYyBmdW5jdGlvbiByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlOiBGaWxlU3RvcmFnZSk6IFByb21pc2U8eyBob2xkZXJJZDogc3RyaW5nOyB0aW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IHN0b3JhZ2UuZ2V0KEZJTEVfTE9DS19LRVkpO1xuICAgICAgICBpZiAoIWJ1ZikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHBhcnNlTG9ja1Rva2VuKGJ1Zi50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgIH0gY2F0Y2ggeyByZXR1cm4gdW5kZWZpbmVkOyB9XG59XG5cbi8vIE5vbi1tdXRhdGluZyBsb29rIGF0IHRoZSBjcm9zcy1wcm9jZXNzIGxvY2sgZmlsZSAoc2VlIHBlZWtNZXJnZUxvY2spLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBlZWtNZXJnZUZpbGVMb2NrKHN0b3JhZ2U6IEZpbGVTdG9yYWdlKTogUHJvbWlzZTxNZXJnZUxvY2tJbmZvIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IGhvbGRlcklkOiBleGlzdGluZy5ob2xkZXJJZCwgZXhwaXJlc0luTXM6IGV4aXN0aW5nLnRpbWUgKyBGSUxFX0xPQ0tfVFRMX01TIC0gRGF0ZS5ub3coKSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZU1lcmdlRmlsZUxvY2soc3RvcmFnZTogRmlsZVN0b3JhZ2UsIGhvbGRlcklkOiBzdHJpbmcsIHRpbWU6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN0b3JhZ2Uuc2V0KEZJTEVfTE9DS19LRVksIEJ1ZmZlci5mcm9tKGAke2hvbGRlcklkfToke3RpbWV9YCwgXCJ1dGY4XCIpIGFzIEJ1ZmZlcik7XG59XG5cbi8vIEFjcXVpcmUgdGhlIGNyb3NzLXByb2Nlc3MgZmlsZSBsb2NrLiBSZXNvbHZlcyB0byB0cnVlIE9OTFkgaWYsIGFmdGVyIHdyaXRpbmcgb3VyIElEIGFuZCB3YWl0aW5nIEZJTEVfTE9DS19TRVRUTEVfTVMgZm9yIGNvbmN1cnJlbnQgd3JpdGVycyB0byBzZXR0bGUsIHRoZSBmaWxlIHN0aWxsIG5hbWVzIHVzLiBDYWxsZXIgbXVzdCByZWxlYXNlTWVyZ2VGaWxlTG9jaygpIG9uIHRoZSBzYW1lIHN0b3JhZ2UgKyBob2xkZXJJZCB3aGVuIGRvbmUuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJ5QWNxdWlyZU1lcmdlRmlsZUxvY2soc3RvcmFnZTogRmlsZVN0b3JhZ2UsIGhvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQgcmVhZE1lcmdlRmlsZUxvY2soc3RvcmFnZSk7XG4gICAgaWYgKGV4aXN0aW5nICYmIGV4aXN0aW5nLmhvbGRlcklkICE9PSBob2xkZXJJZCAmJiBub3cgLSBleGlzdGluZy50aW1lIDwgRklMRV9MT0NLX1RUTF9NUykgcmV0dXJuIGZhbHNlO1xuICAgIGF3YWl0IHdyaXRlTWVyZ2VGaWxlTG9jayhzdG9yYWdlLCBob2xkZXJJZCwgbm93KTtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgRklMRV9MT0NLX1NFVFRMRV9NUykpO1xuICAgIGNvbnN0IGFmdGVyID0gYXdhaXQgcmVhZE1lcmdlRmlsZUxvY2soc3RvcmFnZSk7XG4gICAgcmV0dXJuICEhYWZ0ZXIgJiYgYWZ0ZXIuaG9sZGVySWQgPT09IGhvbGRlcklkO1xufVxuXG4vLyBLZWVwIHRoZSBsb2NrIGZyZXNoLiBUaGUgbWVyZ2UgbWlnaHQgcnVuIGxvbmdlciB0aGFuIEZJTEVfTE9DS19UVExfTVM7IHdpdGhvdXQgcGVyaW9kaWMgcmUtc3RhbXBpbmcsIGFub3RoZXIgcHJvY2VzcyB3b3VsZCBzZWUgdGhlIGxvY2sgYXMgc3RhbGUgYW5kIGFjcXVpcmUgaXQuIFJldHVybnMgYSBzdG9wIGZ1bmN0aW9uIHRoZSBjYWxsZXIgY2FsbHMgaW4gYGZpbmFsbHlgLiBIZWFydGJlYXQgaXMgYmVzdC1lZmZvcnQ6IGEgZmFpbGVkIHdyaXRlIGlzIGxvZ2dlZCBidXQgbm90IHByb3BhZ2F0ZWQuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRNZXJnZUZpbGVMb2NrSGVhcnRiZWF0KHN0b3JhZ2U6IEZpbGVTdG9yYWdlLCBob2xkZXJJZDogc3RyaW5nKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIHZvaWQgd3JpdGVNZXJnZUZpbGVMb2NrKHN0b3JhZ2UsIGhvbGRlcklkLCBEYXRlLm5vdygpKS5jYXRjaCgoKSA9PiB7IC8qIGJlc3QtZWZmb3J0ICovIH0pO1xuICAgIH0sIEZJTEVfTE9DS19IRUFSVEJFQVRfTVMpO1xuICAgIChpbnRlcnZhbCBhcyB7IHVucmVmPzogKCkgPT4gdm9pZCB9KS51bnJlZj8uKCk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsZWFzZU1lcmdlRmlsZUxvY2soc3RvcmFnZTogRmlsZVN0b3JhZ2UsIGhvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IGF3YWl0IHJlYWRNZXJnZUZpbGVMb2NrKHN0b3JhZ2UpO1xuICAgICAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3RpbmcuaG9sZGVySWQgPT09IGhvbGRlcklkKSBhd2FpdCBzdG9yYWdlLnJlbW92ZShGSUxFX0xPQ0tfS0VZKTtcbiAgICB9IGNhdGNoIHsgLyogaWdub3JlICovIH1cbn1cbiJdfQ==
130
- /* _JS_SOURCE_HASH = "5195c5628e713ef973ebd5ca191fe0f42f1299a5439cfd9794739b87d603c89c"; */
130
+ /* _JS_SOURCE_HASH = "4835586d08d4f89d124b3f45f798b450a1de03dea4f9332b3dd22ae53f266c1f"; */
@@ -1,4 +1,4 @@
1
- "use strict";
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";
2
2
  // Deletion markers: how a merge retires the input files it consumed WITHOUT deleting them inline.
3
3
  //
4
4
  // The old approach deleted consumed inputs on a 15-min timer. If the tab closed before the timer fired the inputs survived AND were still read — so the next merge re-merged the same duplicates, forever (the "1739 files, 155GB, 99% duplicate" loop). Markers fix both halves: the consumed inputs are EXCLUDED from reads the moment the marker exists (so they're never re-merged), and their physical deletion is driven off the marker on a later read instead of an in-process timer.
@@ -90,4 +90,4 @@ async function processDeleteMarkers(name, storage, markers, allNames) {
90
90
  }
91
91
  exports.processDeleteMarkers = processDeleteMarkers;
92
92
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VNYXJrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyZ2VNYXJrZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrR0FBa0c7QUFDbEcsR0FBRztBQUNILDhkQUE4ZDtBQUM5ZCxHQUFHO0FBQ0gsMElBQTBJO0FBQzFJLDJHQUEyRztBQUMzRyw4TUFBOE07QUFDOU0sK01BQStNOzs7QUFHL00sd0VBQXlFO0FBRXpFLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDO0FBQ3hDLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBU3RDLFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3JDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRkQsb0NBRUM7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsT0FBb0IsRUFBRSxNQUF1RDtJQUNqSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDeEIsTUFBTSxJQUFJLEdBQUcsR0FBRyxhQUFhLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFXLENBQUMsQ0FBQztBQUNqRSxDQUFDO0FBTEQsOENBS0M7QUFFTSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsT0FBb0IsRUFBRSxRQUFrQjtJQUM1RSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQXFDLEVBQUU7UUFDcEcsSUFBSSxDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBb0UsQ0FBQztZQUNuSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDOUYsT0FBTztnQkFDSCxRQUFRO2dCQUNSLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBdUI7Z0JBQzNDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBc0I7Z0JBQ3pDLElBQUksRUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFELENBQUM7UUFDTixDQUFDO1FBQUMsV0FBTSxDQUFDO1lBQ0wsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDSixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQW5CRCw4Q0FtQkM7QUFFRCxtR0FBbUc7QUFDbkcsU0FBZ0IsZ0JBQWdCLENBQUMsT0FBdUI7SUFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNuQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU87UUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXO1lBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBSkQsNENBSUM7QUFFRCxvTUFBb007QUFDN0wsS0FBSyxVQUFVLG9CQUFvQixDQUFDLElBQVksRUFBRSxPQUFvQixFQUFFLE9BQXVCLEVBQUUsUUFBa0I7SUFDdEgsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDM0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2Qix1R0FBdUc7WUFDdkcsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDO29CQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQUMsQ0FBQztnQkFBQyxRQUFRLGtCQUFrQixJQUFwQixDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMvRSxDQUFDO1lBQ0QsU0FBUztRQUNiLENBQUM7UUFDRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxjQUFjLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2pILElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFLLE1BQU0sQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUM7b0JBQUMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUFDLENBQUM7Z0JBQUMsUUFBUSxrQkFBa0IsSUFBcEIsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDNUUsQ0FBQztZQUNELElBQUksT0FBTztnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBQSxnQkFBSSxFQUFDLElBQUksQ0FBQyxJQUFJLElBQUEsbUJBQU8sRUFBQyxRQUFRLENBQUMsYUFBYSxPQUFPLCtCQUErQixNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzdILENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQztBQXRCRCxvREFzQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBEZWxldGlvbiBtYXJrZXJzOiBob3cgYSBtZXJnZSByZXRpcmVzIHRoZSBpbnB1dCBmaWxlcyBpdCBjb25zdW1lZCBXSVRIT1VUIGRlbGV0aW5nIHRoZW0gaW5saW5lLlxuLy8gXG4vLyBUaGUgb2xkIGFwcHJvYWNoIGRlbGV0ZWQgY29uc3VtZWQgaW5wdXRzIG9uIGEgMTUtbWluIHRpbWVyLiBJZiB0aGUgdGFiIGNsb3NlZCBiZWZvcmUgdGhlIHRpbWVyIGZpcmVkIHRoZSBpbnB1dHMgc3Vydml2ZWQgQU5EIHdlcmUgc3RpbGwgcmVhZCDigJQgc28gdGhlIG5leHQgbWVyZ2UgcmUtbWVyZ2VkIHRoZSBzYW1lIGR1cGxpY2F0ZXMsIGZvcmV2ZXIgKHRoZSBcIjE3MzkgZmlsZXMsIDE1NUdCLCA5OSUgZHVwbGljYXRlXCIgbG9vcCkuIE1hcmtlcnMgZml4IGJvdGggaGFsdmVzOiB0aGUgY29uc3VtZWQgaW5wdXRzIGFyZSBFWENMVURFRCBmcm9tIHJlYWRzIHRoZSBtb21lbnQgdGhlIG1hcmtlciBleGlzdHMgKHNvIHRoZXkncmUgbmV2ZXIgcmUtbWVyZ2VkKSwgYW5kIHRoZWlyIHBoeXNpY2FsIGRlbGV0aW9uIGlzIGRyaXZlbiBvZmYgdGhlIG1hcmtlciBvbiBhIGxhdGVyIHJlYWQgaW5zdGVhZCBvZiBhbiBpbi1wcm9jZXNzIHRpbWVyLlxuLy8gXG4vLyBBIG1hcmtlciBuYW1lcyB0aGUgaW5wdXQgZmlsZXMgaXQgd2FudHMgZ29uZSAoYGRlbGV0ZUZpbGVzYCkgYW5kIHRoZSBvdXRwdXQgZmlsZXMgdGhhdCBzdXBlcnNlZGUgdGhlbSAoYHJlcGxhY2VkQnlgKS4gT24gZXZlcnkgcmVhZCB3ZTpcbi8vICAgMSkgZXhjbHVkZSBldmVyeSBgZGVsZXRlRmlsZXNgIGVudHJ5IGZyb20gdGhlIGFjdGl2ZSBmaWxlIHNldCAodW5jb25kaXRpb25hbGx5IOKAlCB0aGF0J3MgdGhlIGxvb3AgZml4KTtcbi8vICAgMikgZGVsZXRlIGEgbWFya2VyJ3MgYGRlbGV0ZUZpbGVzYCBvbmNlIGl0cyBgcmVwbGFjZWRCeWAgb3V0cHV0cyBhbGwgZXhpc3QgT1IgdGhlIG1hcmtlciBpcyBvbGRlciB0aGFuIHRoZSBncmFjZSB3aW5kb3cgKGEgY3Jhc2gtc2FmZXR5IGZsb29yIHNvIGEgbWFya2VyIHdob3NlIG91dHB1dHMgbmV2ZXIgbGFuZGVkIHN0aWxsIGdldHMgY2xlYW5lZCk7XG4vLyAgIDMpIG9uY2UgYSBtYXJrZXIncyBgZGVsZXRlRmlsZXNgIGFyZSBhbGwgZ29uZSwgYW5kIHRoZSBtYXJrZXIgaGFzIGFnZWQgcGFzdCB0aGUgZ3JhY2Ugd2luZG93LCBkZWxldGUgdGhlIG1hcmtlciBpdHNlbGYgKGtlcHQgYXJvdW5kIGJyaWVmbHkgc28gYSBjb25jdXJyZW50IHJlYWRlciBzdGlsbCBleGNsdWRlcyB0aGUgZmlsZXMgY29uc2lzdGVudGx5KS5cblxuaW1wb3J0IHR5cGUgeyBGaWxlU3RvcmFnZSB9IGZyb20gXCIuLi9GaWxlRm9sZGVyQVBJXCI7XG5pbXBvcnQgeyBibHVlLCBtYWdlbnRhIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvZm9ybWF0dGluZy9sb2dDb2xvcnNcIjtcblxuY29uc3QgTUFSS0VSX1BSRUZJWCA9IFwiLmRlbGV0ZS1tYXJrZXJfXCI7XG5jb25zdCBNQVJLRVJfR1JBQ0VfTVMgPSA1ICogNjAgKiAxMDAwO1xuXG5leHBvcnQgdHlwZSBEZWxldGVNYXJrZXIgPSB7XG4gICAgZmlsZU5hbWU6IHN0cmluZztcbiAgICBkZWxldGVGaWxlczogc3RyaW5nW107XG4gICAgcmVwbGFjZWRCeTogc3RyaW5nW107XG4gICAgdGltZTogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWFya2VyRmlsZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmFtZS5zdGFydHNXaXRoKE1BUktFUl9QUkVGSVgpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVEZWxldGVNYXJrZXIoc3RvcmFnZTogRmlsZVN0b3JhZ2UsIGNvbmZpZzogeyBkZWxldGVGaWxlczogc3RyaW5nW107IHJlcGxhY2VkQnk6IHN0cmluZ1tdIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBuYW1lID0gYCR7TUFSS0VSX1BSRUZJWH0ke3RpbWV9XyR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgMTApfWA7XG4gICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHsgZGVsZXRlRmlsZXM6IGNvbmZpZy5kZWxldGVGaWxlcywgcmVwbGFjZWRCeTogY29uZmlnLnJlcGxhY2VkQnksIHRpbWUgfSk7XG4gICAgYXdhaXQgc3RvcmFnZS5zZXQobmFtZSwgQnVmZmVyLmZyb20oYm9keSwgXCJ1dGY4XCIpIGFzIEJ1ZmZlcik7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRGVsZXRlTWFya2VycyhzdG9yYWdlOiBGaWxlU3RvcmFnZSwgYWxsTmFtZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxEZWxldGVNYXJrZXJbXT4ge1xuICAgIGNvbnN0IG1hcmtlck5hbWVzID0gYWxsTmFtZXMuZmlsdGVyKGlzTWFya2VyRmlsZSk7XG4gICAgY29uc3QgbWFya2VycyA9IGF3YWl0IFByb21pc2UuYWxsKG1hcmtlck5hbWVzLm1hcChhc3luYyAoZmlsZU5hbWUpOiBQcm9taXNlPERlbGV0ZU1hcmtlciB8IHVuZGVmaW5lZD4gPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYnVmID0gYXdhaXQgc3RvcmFnZS5nZXQoZmlsZU5hbWUpO1xuICAgICAgICAgICAgaWYgKCFidWYpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGJ1Zi50b1N0cmluZyhcInV0ZjhcIikpIGFzIHsgZGVsZXRlRmlsZXM/OiB1bmtub3duOyByZXBsYWNlZEJ5PzogdW5rbm93bjsgdGltZT86IHVua25vd24gfTtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJzZWQuZGVsZXRlRmlsZXMpIHx8ICFBcnJheS5pc0FycmF5KHBhcnNlZC5yZXBsYWNlZEJ5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgZGVsZXRlRmlsZXM6IHBhcnNlZC5kZWxldGVGaWxlcyBhcyBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICByZXBsYWNlZEJ5OiBwYXJzZWQucmVwbGFjZWRCeSBhcyBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICB0aW1lOiB0eXBlb2YgcGFyc2VkLnRpbWUgPT09IFwibnVtYmVyXCIgPyBwYXJzZWQudGltZSA6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9KSk7XG4gICAgcmV0dXJuIG1hcmtlcnMuZmlsdGVyKChtKTogbSBpcyBEZWxldGVNYXJrZXIgPT4gISFtKTtcbn1cblxuLy8gVGhlIHNldCBvZiBmaWxlcyB0aGF0IGFueSBtYXJrZXIgd2FudHMgZGVsZXRlZCDigJQgdGhlc2UgbXVzdCBiZSBkcm9wcGVkIGZyb20gdGhlIGFjdGl2ZSByZWFkIHNldC5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZXJFeGNsdXNpb25zKG1hcmtlcnM6IERlbGV0ZU1hcmtlcltdKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IGV4Y2x1ZGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBtIG9mIG1hcmtlcnMpIGZvciAoY29uc3QgbiBvZiBtLmRlbGV0ZUZpbGVzKSBleGNsdWRlZC5hZGQobik7XG4gICAgcmV0dXJuIGV4Y2x1ZGVkO1xufVxuXG4vLyBBY3Qgb24gZWFjaCBtYXJrZXIgKHNlZSBmaWxlIGhlYWRlcikuIElkZW1wb3RlbnQgYW5kIGJlc3QtZWZmb3J0OiBldmVyeSByZW1vdmFsIGlzIGd1YXJkZWQsIHNvIHR3byBwcm9jZXNzZXMgKG9yIHR3byByZWFkcykgcnVubmluZyB0aGlzIGF0IG9uY2UganVzdCByYWNlIHRvIHRoZSBzYW1lIGFscmVhZHktY29ycmVjdCBlbmQgc3RhdGUuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RlbGV0ZU1hcmtlcnMobmFtZTogc3RyaW5nLCBzdG9yYWdlOiBGaWxlU3RvcmFnZSwgbWFya2VyczogRGVsZXRlTWFya2VyW10sIGFsbE5hbWVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByZXNlbnQgPSBuZXcgU2V0KGFsbE5hbWVzKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGZvciAoY29uc3QgbWFya2VyIG9mIG1hcmtlcnMpIHtcbiAgICAgICAgY29uc3Qgc3RpbGxQcmVzZW50ID0gbWFya2VyLmRlbGV0ZUZpbGVzLmZpbHRlcihuID0+IHByZXNlbnQuaGFzKG4pKTtcbiAgICAgICAgaWYgKCFzdGlsbFByZXNlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBUaGUgZmlsZXMgdGhpcyBtYXJrZXIgcmV0aXJlZCBhcmUgZ29uZTsgb25jZSBpdCdzIGFnZWQgcGFzdCB0aGUgZ3JhY2Ugd2luZG93LCByZXRpcmUgdGhlIG1hcmtlciB0b28uXG4gICAgICAgICAgICBpZiAobm93IC0gbWFya2VyLnRpbWUgPiBNQVJLRVJfR1JBQ0VfTVMpIHtcbiAgICAgICAgICAgICAgICB0cnkgeyBhd2FpdCBzdG9yYWdlLnJlbW92ZShtYXJrZXIuZmlsZU5hbWUpOyB9IGNhdGNoIHsgLyogYWxyZWFkeSBnb25lICovIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkRXhpc3RzID0gbWFya2VyLnJlcGxhY2VkQnkubGVuZ3RoID4gMCAmJiBtYXJrZXIucmVwbGFjZWRCeS5ldmVyeShuID0+IHByZXNlbnQuaGFzKG4pKTtcbiAgICAgICAgaWYgKHJlcGxhY2VkRXhpc3RzIHx8IG5vdyAtIG1hcmtlci50aW1lID4gTUFSS0VSX0dSQUNFX01TKSB7XG4gICAgICAgICAgICBjb25zdCByZWFzb24gPSByZXBsYWNlZEV4aXN0cyA/IGByZXBsYWNlbWVudHMgbGFuZGVkYCA6IGBtYXJrZXIgYWdlZCAke01hdGgucm91bmQoKG5vdyAtIG1hcmtlci50aW1lKSAvIDEwMDApfXNgO1xuICAgICAgICAgICAgbGV0IGRlbGV0ZWQgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBuIG9mIHN0aWxsUHJlc2VudCkge1xuICAgICAgICAgICAgICAgIHRyeSB7IGF3YWl0IHN0b3JhZ2UucmVtb3ZlKG4pOyBkZWxldGVkKys7IH0gY2F0Y2ggeyAvKiBhbHJlYWR5IGdvbmUgKi8gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlbGV0ZWQpIGNvbnNvbGUubG9nKGAke2JsdWUobmFtZSl9ICR7bWFnZW50YShcInJldGlyZVwiKX06IGRlbGV0ZWQgJHtkZWxldGVkfSBtZXJnZWQtYXdheSBpbnB1dCBmaWxlKHMpICgke3JlYXNvbn0pYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
93
- /* _JS_SOURCE_HASH = "c00bbebf382077207984695a3a92c937523b2bc2859a28be48744bdb4670b2d0"; */
93
+ /* _JS_SOURCE_HASH = "467563fc9e9ab0cb44c142e68d864cde7f3a0ac92c177b15c7b80ba76a9f88cd"; */
@@ -1,4 +1,4 @@
1
- "use strict";
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";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -198,4 +198,4 @@ function getStreamColumnIndex(keys, byKey, column) {
198
198
  // Per stream-reader cache of its column indexes. Keyed by the reader's byKey map (a fresh streamReaderFromEntries call produces a fresh map, so this is effectively per-reader).
199
199
  const columnIndexCache = new WeakMap();
200
200
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtTG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RyZWFtTG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUEyQjtBQUMzQiw2REFBd0k7QUFFeEksdU1BQXVNO0FBQ3ZNLEdBQUc7QUFDSCwyREFBMkQ7QUFDM0QsR0FBRztBQUNILCtlQUErZTtBQUVsZSxRQUFBLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztBQUUxQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGdCQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFJakUsU0FBUyxLQUFLLENBQUMsT0FBZTtJQUMxQixJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELCtZQUErWTtBQUUvWSxvTUFBb007QUFDcE0sU0FBZ0IsU0FBUyxDQUFDLE9BQXlEO0lBQy9FLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVHLENBQUM7QUFGRCw4QkFFQztBQUVELFNBQWdCLFlBQVksQ0FBQyxPQUF3QztJQUNqRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcs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QztLQUNKLENBQUM7SUFDRixJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUNsRixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQixPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxpTEFBaUw7QUFDakwsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBa0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjYm9yeCBmcm9tIFwiY2Jvci14XCI7XG5pbXBvcnQgeyBBQlNFTlQsIEJhc2VCdWxrRGF0YWJhc2VSZWFkZXIsIENvbHVtbkluZGV4LCBFTVBUWV9CVUZGRVIsIGVuY29kZVZhbHVlLCBSYXdDZWxsLCBUWVBFX0FCU0VOVF9UQUcgfSBmcm9tIFwiLi9CdWxrRGF0YWJhc2VGb3JtYXRcIjtcblxuLy8gVGllci0wIHN0cmVhbWluZyBmb3JtYXQ6IGFuIGFwcGVuZCBsb2cgb2Ygd2hvbGUtcm93IHdyaXRlcyBhbmQgZGVsZXRlcyAocm93LWZvcm1hdCwgbm90IGNvbHVtbmFyKSwgc28gc21hbGwgbXV0YXRpb25zIGFyZSBhIHNpbmdsZSBjaGVhcCBhcHBlbmQgaW5zdGVhZCBvZiByZXdyaXRpbmcgYSBjb2x1bW5hciBmaWxlLiBFYWNoIGJsb2NrIGlzOlxuLy8gXG4vLyAgIFt1MzIgbGVuXVtDQk9SKHsgdCwgdiB9KSAgb3IgIENCT1IoeyB0LCBkIH0pXVt1MzIgbGVuXVxuLy8gXG4vLyBgdGAgaXMgYSBwZXItd3JpdGUgdW5pcXVlIHRpbWVzdGFtcCAoZ2V0VGltZVVuaXF1ZSk7IGB2YCBpcyBhIHNldCByb3c7IGBkYCBpcyBhIGRlbGV0ZWQga2V5LiBCZWNhdXNlIGV2ZXJ5IHRocmVhZCBzdHJlYW1zIHRvIGl0cyBvd24gZmlsZSwgdGhlIG9ubHkgd2F5IHRvIHJlY292ZXIgdGhlIGdsb2JhbCBtdXRhdGlvbiBvcmRlciDigJQgbmVlZGVkIGZvciBuZXdlc3Qtd2lucyDigJQgaXMgYSBwZXItd3JpdGUgdGltZXN0YW1wLCB3aXRoIHRpZXMgYnJva2VuIGJ5IGZpbGUgbmFtZS4gVGhlIHRyYWlsaW5nIGxlbmd0aCBtdXN0IG1hdGNoIHRoZSBsZWFkaW5nIG9uZTsgYSB0b3JuL2luY29tcGxldGUgYXBwZW5kIGxlYXZlcyBhIG1pc21hdGNoZWQgb3IgbWlzc2luZyBzdWZmaXgsIHNvIHdlIHN0b3AgdGhlcmUgYW5kIHJlcG9ydCB0cmFpbGluZyBiYWQgYnl0ZXMgaW5zdGVhZCBvZiB0aHJvd2luZy4gc3RydWN0dXJlZENsb25lIHByZXNlcnZlcyB0eXBlZCBhcnJheXMuXG5cbmV4cG9ydCBjb25zdCBTVFJFQU1fRVhURU5TSU9OID0gXCIuc3RyZWFtXCI7XG5cbmNvbnN0IGNib3JFbmNvZGVyID0gbmV3IGNib3J4LkVuY29kZXIoeyBzdHJ1Y3R1cmVkQ2xvbmU6IHRydWUgfSk7XG5cbmV4cG9ydCB0eXBlIFN0cmVhbUVudHJ5ID0geyB0aW1lOiBudW1iZXI7IHJvdz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+OyBkZWxldGVkS2V5Pzogc3RyaW5nIH07XG5cbmZ1bmN0aW9uIGZyYW1lKHBheWxvYWQ6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgbGV0IGxlbiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBsZW4ud3JpdGVVSW50MzJMRShwYXlsb2FkLmxlbmd0aCwgMCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2xlbiwgcGF5bG9hZCwgbGVuXSk7XG59XG5cbi8vIEZyYW1pbmcgb25seSDigJQgbm8gYmF0Y2hpbmcgaGVyZS4gQnVsa0RhdGFiYXNlMiBjb2FsZXNjZXMgYW5kIGZsdXNoZXMgdGhlc2UgZnJhbWVkIGJ5dGVzIG9uIGEgcmFtcGluZyBwZXItY29sbGVjdGlvbiBzY2hlZHVsZSAoc2VlIHN0cmVhbUFwcGVuZCBpbiBCdWxrRGF0YWJhc2VCYXNlKSwgYmVjYXVzZSB0aGUgYnJvd3NlciBGaWxlIFN5c3RlbSBBY2Nlc3MgQVBJIHJld3JpdGVzIHRoZSB3aG9sZSBmaWxlIG9uIGV2ZXJ5IGFwcGVuZCwgc28gb25lLWFwcGVuZC1wZXItd3JpdGUgaXMgcXVhZHJhdGljLiBUaGUgZmlyc3Qgd3JpdGUgYWZ0ZXIgYSBsdWxsIHN0aWxsIGZsdXNoZXMgaW1tZWRpYXRlbHksIHNvIGEgc2luZ2xlIGFjdGlvbiB0aGVuIGEgdGFiIGNsb3NlIGlzIHNhdmVkIGF0IG9uY2UuXG5cbi8vIFRpbWVzIGFyZSBhc3NpZ25lZCBieSB0aGUgY2FsbGVyIChCdWxrRGF0YWJhc2UyKSBzbyB0aGUgZXhhY3Qgc2FtZSB0aW1lc3RhbXAgbGFuZHMgb24gZGlzaywgaW4gdGhlIGluLW1lbW9yeSBvdmVybGF5LCBhbmQgaW4gdGhlIGNyb3NzLXRhYiBicm9hZGNhc3Qg4oCUIGtlZXBpbmcgdGhlIGdsb2JhbCB3cml0ZSBvcmRlciBjb25zaXN0ZW50LlxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lUm93cyhlbnRyaWVzOiB7IHRpbWU6IG51bWJlcjsgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9W10pOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGVudHJpZXMubWFwKGUgPT4gZnJhbWUoQnVmZmVyLmZyb20oY2JvckVuY29kZXIuZW5jb2RlKHsgdDogZS50aW1lLCB2OiBlLnJvdyB9KSkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZURlbGV0ZXMoZW50cmllczogeyB0aW1lOiBudW1iZXI7IGtleTogc3RyaW5nIH1bXSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoZW50cmllcy5tYXAoZSA9PiBmcmFtZShCdWZmZXIuZnJvbShjYm9yRW5jb2Rlci5lbmNvZGUoeyB0OiBlLnRpbWUsIGQ6IGUua2V5IH0pKSkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RyZWFtKGJ1ZmZlcjogQnVmZmVyKTogeyBlbnRyaWVzOiBTdHJlYW1FbnRyeVtdOyBiYWRCeXRlczogbnVtYmVyIH0ge1xuICAgIGxldCBlbnRyaWVzOiBTdHJlYW1FbnRyeVtdID0gW107XG4gICAgbGV0IHBvcyA9IDA7XG4gICAgd2hpbGUgKHBvcyArIDQgPD0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICBsZXQgbGVuID0gYnVmZmVyLnJlYWRVSW50MzJMRShwb3MpO1xuICAgICAgICBsZXQgcGF5bG9hZFN0YXJ0ID0gcG9zICsgNDtcbiAgICAgICAgbGV0IHN1ZmZpeFN0YXJ0ID0gcGF5bG9hZFN0YXJ0ICsgbGVuO1xuICAgICAgICBpZiAoc3VmZml4U3RhcnQgKyA0ID4gYnVmZmVyLmxlbmd0aCkgYnJlYWs7XG4gICAgICAgIGlmIChidWZmZXIucmVhZFVJbnQzMkxFKHN1ZmZpeFN0YXJ0KSAhPT0gbGVuKSBicmVhaztcbiAgICAgICAgbGV0IGRlY29kZWQ6IHsgdDogbnVtYmVyOyB2PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IGQ/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRlY29kZWQgPSBjYm9yRW5jb2Rlci5kZWNvZGUoYnVmZmVyLnN1YmFycmF5KHBheWxvYWRTdGFydCwgc3VmZml4U3RhcnQpKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVjb2RlZCAmJiBkZWNvZGVkLmQgIT09IHVuZGVmaW5lZCkgZW50cmllcy5wdXNoKHsgdGltZTogZGVjb2RlZC50LCBkZWxldGVkS2V5OiBkZWNvZGVkLmQgfSk7XG4gICAgICAgIGVsc2UgaWYgKGRlY29kZWQgJiYgZGVjb2RlZC52KSBlbnRyaWVzLnB1c2goeyB0aW1lOiBkZWNvZGVkLnQsIHJvdzogZGVjb2RlZC52IH0pO1xuICAgICAgICBwb3MgPSBzdWZmaXhTdGFydCArIDQ7XG4gICAgfVxuICAgIHJldHVybiB7IGVudHJpZXMsIGJhZEJ5dGVzOiBidWZmZXIubGVuZ3RoIC0gcG9zIH07XG59XG5cbi8vIFdyYXBzIHN0cmVhbWVkIGVudHJpZXMgKGFscmVhZHkgb3JkZXJlZCBvbGRlc3QtZmlyc3QpIGFzIGEgQmFzZUJ1bGtEYXRhYmFzZVJlYWRlci4gRWFjaCBzZXQgTUVSR0VTIGl0cyBmaWVsZHMgb250byB0aGUga2V5J3MgY3VycmVudCByb3cgKHNvIGEgcGFydGlhbCB3cml0ZS91cGRhdGUgb25seSBjaGFuZ2VzIHRoZSBjb2x1bW5zIGl0IGluY2x1ZGVzKTsgYSBkZWxldGUgdG9tYnN0b25lcyB0aGUga2V5IChleHBvc2VkIHZpYSBkZWxldGVkS2V5cyBzbyB0aGUgam9pbiBzdXBwcmVzc2VzIGl0IGluIG9sZGVyIGJ1bGsgcmVhZGVycykgYW5kIHJlc2V0cyB0aGUgbWVyZ2UuIEEgY29sdW1uIHRoZSBtZXJnZWQgcm93IG5ldmVyIHNldCByZWFkcyBhcyBBQlNFTlQsIHNvIHRoZSBqb2luIGZhbGxzIHRocm91Z2ggdG8gb2xkZXIgcmVhZGVycyBmb3IgaXQuIEFsc28gcmV0dXJucyB0aGUgbGF0ZXN0IHRpbWVzdGFtcCBzZWVuIHBlciBrZXkgKGxpdmUgb3IgZGVsZXRlZCksIHVzZWQgZm9yIGNyb3NzLXRhYiBjb25mbGljdCByZXNvbHV0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbVJlYWRlckZyb21FbnRyaWVzKGVudHJpZXM6IFN0cmVhbUVudHJ5W10sIHRvdGFsQnl0ZXM6IG51bWJlcik6IHsgcmVhZGVyOiBCYXNlQnVsa0RhdGFiYXNlUmVhZGVyOyB0aW1lczogTWFwPHN0cmluZywgbnVtYmVyPiB9IHtcbiAgICBsZXQgYnlLZXkgPSBuZXcgTWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KCk7XG4gICAgbGV0IGRlbGV0ZWRLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgbGV0IHRpbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGlmIChlbnRyeS5kZWxldGVkS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGJ5S2V5LmRlbGV0ZShlbnRyeS5kZWxldGVkS2V5KTtcbiAgICAgICAgICAgIGRlbGV0ZWRLZXlzLmFkZChlbnRyeS5kZWxldGVkS2V5KTtcbiAgICAgICAgICAgIHRpbWVzLnNldChlbnRyeS5kZWxldGVkS2V5LCBlbnRyeS50aW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbnRyeS5yb3cpIHtcbiAgICAgICAgICAgIGxldCBrZXkgPSBlbnRyeS5yb3cua2V5IGFzIHN0cmluZztcbiAgICAgICAgICAgIGJ5S2V5LnNldChrZXksIHsgLi4uYnlLZXkuZ2V0KGtleSksIC4uLmVudHJ5LnJvdyB9KTtcbiAgICAgICAgICAgIGRlbGV0ZWRLZXlzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgdGltZXMuc2V0KGtleSwgZW50cnkudGltZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGtleXMgPSBbLi4uYnlLZXkua2V5cygpXTtcbiAgICBsZXQgY29sdW1uTmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGxldCByb3cgb2YgYnlLZXkudmFsdWVzKCkpIHtcbiAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgT2JqZWN0LmtleXMocm93KSkge1xuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKGZpZWxkKSkgY29udGludWU7XG4gICAgICAgICAgICBzZWVuLmFkZChmaWVsZCk7XG4gICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKGZpZWxkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgY29sdW1ucyA9IGNvbHVtbk5hbWVzLm1hcChjb2x1bW4gPT4gKHsgY29sdW1uLCBieXRlU2l6ZTogMCB9KSk7XG4gICAgLy8gUGVyLWtleSB0b21ic3RvbmUgdGltZXMgZm9yIHRoZSBqb2luJ3MgZGVsZXRlIHJlc29sdXRpb24uXG4gICAgbGV0IGRlbGV0ZVRpbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICBmb3IgKGxldCBrZXkgb2YgZGVsZXRlZEtleXMpIGRlbGV0ZVRpbWVzLnNldChrZXksIHRpbWVzLmdldChrZXkpIHx8IDApO1xuICAgIC8vIEl0ZXJhdGUgdG8gZmluZCBtaW4vbWF4IOKAlCBOT1QgTWF0aC5taW4oLi4udGltZXMpL01hdGgubWF4KC4uLnRpbWVzKTogc3ByZWFkaW5nIGEgbGFyZ2UgYXJyYXkgYXMgY2FsbCBhcmd1bWVudHMgb3ZlcmZsb3dzIHRoZSBzdGFjayAoXCJNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiKSBvbmNlIGEgc3RyZWFtIGhhcyBtYW55IGtleXMuXG4gICAgbGV0IG1pblRpbWUgPSBJbmZpbml0eSwgbWF4VGltZSA9IC1JbmZpbml0eTtcbiAgICBmb3IgKGxldCB0IG9mIHRpbWVzLnZhbHVlcygpKSB7XG4gICAgICAgIGlmICh0IDwgbWluVGltZSkgbWluVGltZSA9IHQ7XG4gICAgICAgIGlmICh0ID4gbWF4VGltZSkgbWF4VGltZSA9IHQ7XG4gICAgfVxuICAgIGNvbnN0IGtleUluZGV4TWFwID0gYnVpbGRLZXlJbmRleChrZXlzKTtcbiAgICBsZXQgcmVhZGVyOiBCYXNlQnVsa0RhdGFiYXNlUmVhZGVyID0ge1xuICAgICAgICBuYW1lOiBcIihzdHJlYW1zKVwiLFxuICAgICAgICB0b3RhbEJ5dGVzLFxuICAgICAgICByb3dDb3VudDoga2V5cy5sZW5ndGgsXG4gICAgICAgIG1pblRpbWU6IHRpbWVzLnNpemUgPyBtaW5UaW1lIDogMCxcbiAgICAgICAgbWF4VGltZTogdGltZXMuc2l6ZSA/IG1heFRpbWUgOiAwLFxuICAgICAgICBrZXlzLFxuICAgICAgICBrZXlUaW1lczogbmV3IE1hcChrZXlzLm1hcChrZXkgPT4gW2tleSwgdGltZXMuZ2V0KGtleSkgfHwgMF0pKSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZGVsZXRlVGltZXMsXG4gICAgICAgIC8vIEEga2V5J3MgdGltZSBpcyBpdHMgbGF0ZXN0IHdyaXRlIGFjcm9zcyBhbGwgY29sdW1ucyAocGVyLWtleSwgbm90IHBlci1jb2x1bW4pLiBGb3IgYSBjb2x1bW4gaXQgbmV2ZXIgc2V0IHdlIHJldHVybiBBQlNFTlQgc28gdGhlIGpvaW4gZmFsbHMgdGhyb3VnaCB0byBhbiBvbGRlciByZWFkZXIuXG4gICAgICAgIGFzeW5jIGdldENvbHVtbihjb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlzLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByb3cgPSBieUtleS5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBrZXksIHZhbHVlOiByb3cgJiYgY29sdW1uIGluIHJvdyA/IHJvd1tjb2x1bW5dIDogQUJTRU5ULCB0aW1lOiB0aW1lcy5nZXQoa2V5KSB8fCAwIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgZ2V0U2luZ2xlRmllbGQoa2V5LCBjb2x1bW4pIHtcbiAgICAgICAgICAgIGxldCByb3cgPSBieUtleS5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmICghcm93IHx8ICEoY29sdW1uIGluIHJvdykpIHJldHVybiBBQlNFTlQ7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogcm93W2NvbHVtbl0sIHRpbWU6IHRpbWVzLmdldChrZXkpIHx8IDAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gU3RyZWFtIHZhbHVlcyBhcmUgZGVjb2RlZCBvYmplY3RzIChDQk9SKSwgc28gdW5saWtlIGEgYnVsayBmaWxlIHdlIGhhdmUgdG8gZW5jb2RlIHRoZW0gdG8gcmF3IGNlbGxzIGhlcmUuIFN0cmVhbSBkYXRhIGlzIHNtYWxsICh0aWVyLTAsIHNpemUtY2FwcGVkKSwgc28gdGhpcyBpcyBjaGVhcC4gQSBjb2x1bW4gdGhlIHJvdyBuZXZlciBzZXQgaXMgb21pdHRlZCAoQUJTRU5UIOKGkiBmYWxsIHRocm91Z2gpOyBhIHN0b3JlZCB1bmRlZmluZWQgaXMga2VwdCAoYSByZWFsIGNsZWFyKS5cbiAgICAgICAgYXN5bmMgZ2V0UmF3Q29sdW1uKGNvbHVtbikge1xuICAgICAgICAgICAgbGV0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSYXdDZWxsPigpO1xuICAgICAgICAgICAgZm9yIChsZXQga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgcm93ID0gYnlLZXkuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFyb3cgfHwgIShjb2x1bW4gaW4gcm93KSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgbWFwLnNldChrZXksIGVuY29kZVZhbHVlKHJvd1tjb2x1bW5dKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICB9LFxuICAgICAgICAvLyBQZXItY29sdW1uIGluZGV4IGluIHRoZSBzYW1lIHNoYXBlIGEgYnVsayBmaWxlIGV4cG9zZXMsIG1hdGVyaWFsaXplZCBpbiBtZW1vcnkgb25jZSAoc3RyZWFtIGRhdGEgaXMgdGllci0wLCBzaXplLWNhcHBlZCwgc28gdGhlIGVuY29kZSBpcyBjaGVhcCkuIExldHMgdGhlIHBsYW5uZWQgbWVyZ2UgdHJlYXQgc3RyZWFtICsgYnVsayBzb3VyY2VzIHVuaWZvcm1seTogaXQgbG9hZHMgZWFjaCAoc291cmNlLCBjb2x1bW4pIGluZGV4LCB1c2VzIG9mZnNldHMvdHlwZXMgdG8gcGxhbiB0aGUgb3V0cHV0J3MgYnl0ZSBsYXlvdXQsIGFuZCByZWFkcyBjb250aWd1b3VzIHJ1bnMgZnJvbSB0aGlzIGluZGV4J3MgaW4tbWVtb3J5IGRhdGEgYnVmZmVyIGR1cmluZyBleGVjdXRlLlxuICAgICAgICBhc3luYyBnZXRDb2x1bW5JbmRleChjb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRTdHJlYW1Db2x1bW5JbmRleChrZXlzLCBieUtleSwgY29sdW1uKTtcbiAgICAgICAgfSxcbiAgICAgICAgcm93T2ZLZXkoa2V5KSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5SW5kZXhNYXAuZ2V0KGtleSk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4geyByZWFkZXIsIHRpbWVzIH07XG59XG5cbi8vIGtleXNbXSBpcyB0aGUgY29sdW1uLXNpZGUgcm93IG9yZGVyIGZvciB0aGlzIHN0cmVhbSByZWFkZXI7IHJvd09mS2V5IGlzIHVzZWQgYnkgdGhlIHBsYW5uZXIgdG8gbG9vayB1cCBhIHdpbm5pbmcgY2VsbCdzIHNvdXJjZSByb3cgd2l0aG91dCBnb2luZyB0aHJvdWdoIGEgY29sdW1uIHJlYWQuIFN0YXlzIGNvbnNpc3RlbnQgd2l0aCBnZXRDb2x1bW5JbmRleCwgd2hpY2ggYnVpbGRzIGl0cyBvZmZzZXRzL3R5cGVzIG92ZXIgdGhlIHNhbWUgYGtleXNgIGFycmF5IGluIHRoZSBzYW1lIG9yZGVyLlxuZnVuY3Rpb24gYnVpbGRLZXlJbmRleChrZXlzOiBzdHJpbmdbXSk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICAgIGNvbnN0IG0gPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgbS5zZXQoa2V5c1tpXSwgaSk7XG4gICAgcmV0dXJuIG07XG59XG5cbi8vIEJ1aWxkIGEgc3RyZWFtLXNpZGUgQ29sdW1uSW5kZXggKG9mZnNldHMgKyB0eXBlcyArIGEgY29udGlndW91cy1yb3cgYnl0ZSBzbGljZXIpIG92ZXIgdGhlIGluLW1lbW9yeSBtZXJnZWQgcm93cy4gRW5jb2RlcyBlYWNoIHJvdydzIHZhbHVlIGZvciB0aGlzIGNvbHVtbiBvbmNlIGludG8gYSBzaW5nbGUgYmFja2luZyBidWZmZXI7IHJlYWRWYWx1ZUJ5dGVzIHRoZW4gc2xpY2VzIGl0LiBDYWNoZWQgcGVyIChyZWFkZXIsIGNvbHVtbikgc28gYSBtZXJnZSBwbGFubmluZyArIGV4ZWN1dGlvbiBwYXNzIGRvZXNuJ3QgcmUtZW5jb2RlLlxuZnVuY3Rpb24gZ2V0U3RyZWFtQ29sdW1uSW5kZXgoa2V5czogc3RyaW5nW10sIGJ5S2V5OiBNYXA8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sIGNvbHVtbjogc3RyaW5nKTogQ29sdW1uSW5kZXgge1xuICAgIGxldCBjYWNoZWQgPSBjb2x1bW5JbmRleENhY2hlLmdldChieUtleSk/LmdldChjb2x1bW4pO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG4gICAgY29uc3Qgb2Zmc2V0cyA9IG5ldyBVaW50MzJBcnJheShrZXlzLmxlbmd0aCArIDEpO1xuICAgIGNvbnN0IHR5cGVzID0gbmV3IFVpbnQ4QXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgIGNvbnN0IHBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuICAgIGxldCBwb3MgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCByb3cgPSBieUtleS5nZXQoa2V5c1tpXSk7XG4gICAgICAgIG9mZnNldHNbaV0gPSBwb3M7XG4gICAgICAgIGlmICghcm93IHx8ICEoY29sdW1uIGluIHJvdykpIHtcbiAgICAgICAgICAgIHR5cGVzW2ldID0gVFlQRV9BQlNFTlRfVEFHO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB0eXBlLCBieXRlcyB9ID0gZW5jb2RlVmFsdWUocm93W2NvbHVtbl0pO1xuICAgICAgICB0eXBlc1tpXSA9IHR5cGU7XG4gICAgICAgIHBhcnRzLnB1c2goYnl0ZXMpO1xuICAgICAgICBwb3MgKz0gYnl0ZXMubGVuZ3RoO1xuICAgIH1cbiAgICBvZmZzZXRzW2tleXMubGVuZ3RoXSA9IHBvcztcbiAgICBjb25zdCBkYXRhID0gcGFydHMubGVuZ3RoID8gQnVmZmVyLmNvbmNhdChwYXJ0cykgOiBFTVBUWV9CVUZGRVI7XG4gICAgY29uc3QgaWR4OiBDb2x1bW5JbmRleCA9IHtcbiAgICAgICAgb2Zmc2V0cyxcbiAgICAgICAgdHlwZXMsXG4gICAgICAgIGFzeW5jIHJlYWRWYWx1ZUJ5dGVzKHN0YXJ0Um93LCBlbmRSb3cpIHtcbiAgICAgICAgICAgIGlmIChlbmRSb3cgPD0gc3RhcnRSb3cpIHJldHVybiBFTVBUWV9CVUZGRVI7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IG9mZnNldHNbc3RhcnRSb3ddO1xuICAgICAgICAgICAgY29uc3QgZW5kID0gb2Zmc2V0c1tlbmRSb3ddO1xuICAgICAgICAgICAgaWYgKGVuZCA8PSBzdGFydCkgcmV0dXJuIEVNUFRZX0JVRkZFUjtcbiAgICAgICAgICAgIHJldHVybiBkYXRhLnN1YmFycmF5KHN0YXJ0LCBlbmQpO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgbGV0IHBlclJlYWRlciA9IGNvbHVtbkluZGV4Q2FjaGUuZ2V0KGJ5S2V5KTtcbiAgICBpZiAoIXBlclJlYWRlcikgeyBwZXJSZWFkZXIgPSBuZXcgTWFwKCk7IGNvbHVtbkluZGV4Q2FjaGUuc2V0KGJ5S2V5LCBwZXJSZWFkZXIpOyB9XG4gICAgcGVyUmVhZGVyLnNldChjb2x1bW4sIGlkeCk7XG4gICAgcmV0dXJuIGlkeDtcbn1cblxuLy8gUGVyIHN0cmVhbS1yZWFkZXIgY2FjaGUgb2YgaXRzIGNvbHVtbiBpbmRleGVzLiBLZXllZCBieSB0aGUgcmVhZGVyJ3MgYnlLZXkgbWFwIChhIGZyZXNoIHN0cmVhbVJlYWRlckZyb21FbnRyaWVzIGNhbGwgcHJvZHVjZXMgYSBmcmVzaCBtYXAsIHNvIHRoaXMgaXMgZWZmZWN0aXZlbHkgcGVyLXJlYWRlcikuXG5jb25zdCBjb2x1bW5JbmRleENhY2hlID0gbmV3IFdlYWtNYXA8TWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBNYXA8c3RyaW5nLCBDb2x1bW5JbmRleD4+KCk7XG4iXX0=
201
- /* _JS_SOURCE_HASH = "f675b4e03d8c41b4d0592b51bf6e9faf7386637c92404dc39863a0eb37f8693c"; */
201
+ /* _JS_SOURCE_HASH = "efc43db21e50b2804f6d23b6c8b9202622e7616e222981c9cb612fd3ed580fd5"; */
@@ -1,4 +1,4 @@
1
- "use strict";
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";
2
2
  // Browser-side cross-tab write sync for BulkDatabase2, over BroadcastChannel (one channel per collection, same-origin tabs and workers). It does NOT persist anything — each side writes to disk itself; this just relays live writes to other open tabs/workers and, when one starts up, asks peers for writes they've made recently that may not be on disk yet. No-op in Node / where BroadcastChannel is unavailable, so BulkDatabase2 can call these unconditionally. This is an optional feature, so there is no fallback.
3
3
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
4
4
  //exports.broadcastSeal = exports.broadcast = exports.connect = exports.isSyncSupported = void 0;
@@ -85,4 +85,4 @@ function broadcastSeal(collection) {
85
85
  }
86
86
  exports.broadcastSeal = broadcastSeal;
87
87
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY0NsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN5bmNDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlnQkFBaWdCOzs7QUFJamdCLHFMQUFxTDtBQUNyTCxNQUFNLGdCQUFnQixHQUFHLEtBQU0sQ0FBQztBQVdoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUU1QyxTQUFnQixlQUFlO0lBQzNCLHNMQUFzTDtJQUN0TCxJQUFJLGlCQUFpQixHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVc7V0FDOUMsbUJBQW1CLElBQUksVUFBVSxDQUFDO0lBQ3pDLE9BQU8saUJBQWlCLElBQUksT0FBTyxnQkFBZ0IsS0FBSyxXQUFXLENBQUM7QUFDeEUsQ0FBQztBQUxELDBDQUtDO0FBRUQsU0FBUyxXQUFXLENBQUMsT0FBZ0I7SUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLGdCQUFnQixDQUFDO0lBQzdDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxPQUFnQixFQUFFLEtBQWtCO0lBQ2pELEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVc7UUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsTUFBTSxDQUFDLFVBQWtCO0lBQzlCLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUN6QyxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDO0lBQzVCLGtKQUFrSjtJQUNsSixNQUFNLEVBQUUs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TSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTztJQUNyQixPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFKRCxzQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEJyb3dzZXItc2lkZSBjcm9zcy10YWIgd3JpdGUgc3luYyBmb3IgQnVsa0RhdGFiYXNlMiwgb3ZlciBCcm9hZGNhc3RDaGFubmVsIChvbmUgY2hhbm5lbCBwZXIgY29sbGVjdGlvbiwgc2FtZS1vcmlnaW4gdGFicyBhbmQgd29ya2VycykuIEl0IGRvZXMgTk9UIHBlcnNpc3QgYW55dGhpbmcg4oCUIGVhY2ggc2lkZSB3cml0ZXMgdG8gZGlzayBpdHNlbGY7IHRoaXMganVzdCByZWxheXMgbGl2ZSB3cml0ZXMgdG8gb3RoZXIgb3BlbiB0YWJzL3dvcmtlcnMgYW5kLCB3aGVuIG9uZSBzdGFydHMgdXAsIGFza3MgcGVlcnMgZm9yIHdyaXRlcyB0aGV5J3ZlIG1hZGUgcmVjZW50bHkgdGhhdCBtYXkgbm90IGJlIG9uIGRpc2sgeWV0LiBOby1vcCBpbiBOb2RlIC8gd2hlcmUgQnJvYWRjYXN0Q2hhbm5lbCBpcyB1bmF2YWlsYWJsZSwgc28gQnVsa0RhdGFiYXNlMiBjYW4gY2FsbCB0aGVzZSB1bmNvbmRpdGlvbmFsbHkuIFRoaXMgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSwgc28gdGhlcmUgaXMgbm8gZmFsbGJhY2suXG5cbmV4cG9ydCB0eXBlIFJlbW90ZVdyaXRlID0geyBrZXk6IHN0cmluZzsgdGltZTogbnVtYmVyOyBkZWxldGVkPzogYm9vbGVhbjsgdmFsdWU/OiB1bmtub3duIH07XG5cbi8vIFdyaXRlcyBvbGRlciB0aGFuIHRoaXMgYXJlIGFzc3VtZWQgYWxyZWFkeSBmbHVzaGVkIHRvIGRpc2sgKGEgZnJlc2hseS1vcGVuZWQgdGFiIGdldHMgdGhvc2UgYnkgcmVhZGluZyBkaXNrKSwgc28gYSB0YWIgb25seSByZXBsYXlzIHdyaXRlcyBuZXdlciB0aGFuIHRoaXMgd2hlbiBhIHBlZXIgc2F5cyBoZWxsby5cbmNvbnN0IFJFQ0VOVF9XSU5ET1dfTVMgPSA2MF8wMDA7XG5cbnR5cGUgQ2hhbm5lbCA9IHtcbiAgICBiYzogQnJvYWRjYXN0Q2hhbm5lbDtcbiAgICBzdWJzY3JpYmVyczogKCh3cml0ZTogUmVtb3RlV3JpdGUpID0+IHZvaWQpW107XG4gICAgLy8gQ2FsbGVkIHdoZW4gYSBwZWVyIGFza3MgZXZlcnlvbmUgdG8gc2VhbCAoc3RvcCBhcHBlbmRpbmcgdG8pIHRoZWlyIGN1cnJlbnQgc3RyZWFtIGZpbGUuXG4gICAgc2VhbFN1YnNjcmliZXJzOiAoKCkgPT4gdm9pZClbXTtcbiAgICAvLyBUaGlzIHRhYidzIG93biByZWNlbnQgd3JpdGVzLCBrZXB0IHNvIGl0IGNhbiBhbnN3ZXIgYW5vdGhlciB0YWIncyBcImhlbGxvXCIuXG4gICAgcmVjZW50OiBSZW1vdGVXcml0ZVtdO1xufTtcblxuY29uc3QgY2hhbm5lbHMgPSBuZXcgTWFwPHN0cmluZywgQ2hhbm5lbD4oKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3luY1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICAvLyB3aW5kb3cgKG1haW4tdGhyZWFkIGJyb3dzZXIpIG9yIFdvcmtlckdsb2JhbFNjb3BlIChXZWIvU2VydmljZS9TaGFyZWQgd29ya2VyKSDigJQgYnV0IG5vdCBOb2RlICh0eXBlc2FmZWNzcydzIGlzTm9kZSBpcyBgdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcImAsIHdoaWNoIG1pc2NsYXNzaWZpZXMgd29ya2VycylcbiAgICBsZXQgaXNCcm93c2VyT3JXb3JrZXIgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgIHx8IFwiV29ya2VyR2xvYmFsU2NvcGVcIiBpbiBnbG9iYWxUaGlzO1xuICAgIHJldHVybiBpc0Jyb3dzZXJPcldvcmtlciAmJiB0eXBlb2YgQnJvYWRjYXN0Q2hhbm5lbCAhPT0gXCJ1bmRlZmluZWRcIjtcbn1cblxuZnVuY3Rpb24gcHJ1bmVSZWNlbnQoY2hhbm5lbDogQ2hhbm5lbCkge1xuICAgIGNvbnN0IGN1dG9mZiA9IERhdGUubm93KCkgLSBSRUNFTlRfV0lORE9XX01TO1xuICAgIGNoYW5uZWwucmVjZW50ID0gY2hhbm5lbC5yZWNlbnQuZmlsdGVyKHcgPT4gdy50aW1lID49IGN1dG9mZik7XG59XG5cbmZ1bmN0aW9uIGRlbGl2ZXIoY2hhbm5lbDogQ2hhbm5lbCwgd3JpdGU6IFJlbW90ZVdyaXRlKSB7XG4gICAgZm9yIChjb25zdCBzdWIgb2YgY2hhbm5lbC5zdWJzY3JpYmVycykgc3ViKHdyaXRlKTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlKGNvbGxlY3Rpb246IHN0cmluZyk6IENoYW5uZWwgfCB1bmRlZmluZWQge1xuICAgIGlmICghaXNTeW5jU3VwcG9ydGVkKCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IGNoYW5uZWwgPSBjaGFubmVscy5nZXQoY29sbGVjdGlvbik7XG4gICAgaWYgKGNoYW5uZWwpIHJldHVybiBjaGFubmVsO1xuICAgIC8vIEJyb2FkY2FzdENoYW5uZWwgbmV2ZXIgZGVsaXZlcnMgYSBtZXNzYWdlIGJhY2sgdG8gdGhlIGluc3RhbmNlIHRoYXQgc2VudCBpdCwgc28gYSB0YWIgbmV2ZXIgaGVhcnMgaXRzIG93biB3cml0ZXMg4oCUIG9ubHkgdGhlIG90aGVyIG9wZW4gdGFicyBkby5cbiAgICBjb25zdCBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGBidWxrRGF0YWJhc2UyOiR7Y29sbGVjdGlvbn1gKTtcbiAgICBjb25zdCBjcmVhdGVkOiBDaGFubmVsID0geyBiYywgc3Vic2NyaWJlcnM6IFtdLCBzZWFsU3Vic2NyaWJlcnM6IFtdLCByZWNlbnQ6IFtdIH07XG4gICAgYmMub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgbXNnID0gZXZlbnQuZGF0YSBhcyB7IHR5cGU6IHN0cmluZzsgd3JpdGU/OiBSZW1vdGVXcml0ZTsgd3JpdGVzPzogUmVtb3RlV3JpdGVbXSB9O1xuICAgICAgICBpZiAoIW1zZykgcmV0dXJuO1xuICAgICAgICBpZiAobXNnLnR5cGUgPT09IFwid3JpdGVcIiAmJiBtc2cud3JpdGUpIHtcbiAgICAgICAgICAgIGRlbGl2ZXIoY3JlYXRlZCwgbXNnLndyaXRlKTtcbiAgICAgICAgfSBlbHNlIGlmIChtc2cudHlwZSA9PT0gXCJyZWNlbnRcIiAmJiBtc2cud3JpdGVzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHdyaXRlIG9mIG1zZy53cml0ZXMpIGRlbGl2ZXIoY3JlYXRlZCwgd3JpdGUpO1xuICAgICAgICB9IGVsc2UgaWYgKG1zZy50eXBlID09PSBcInNlYWxcIikge1xuICAgICAgICAgICAgLy8gQSBwZWVyIGlzIGFib3V0IHRvIGZvbGQgcmVjZW50IGRhdGE7IHN0b3AgYXBwZW5kaW5nIHRvIG91ciBjdXJyZW50IHN0cmVhbSBmaWxlIHNvIGl0IGJlY29tZXMgY29tcGxldGUgYW5kIHRoZSBtZXJnZSBjYW4gZm9sZCBpdCB3aG9sZS4gT3VyIG5leHQgd3JpdGUgc3RhcnRzIGEgZnJlc2ggZmlsZS5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIGNyZWF0ZWQuc2VhbFN1YnNjcmliZXJzKSBzdWIoKTtcbiAgICAgICAgfSBlbHNlIGlmIChtc2cudHlwZSA9PT0gXCJoZWxsb1wiKSB7XG4gICAgICAgICAgICAvLyBBbm90aGVyIHRhYiBqdXN0IHN0YXJ0ZWQ7IHJlcGxheSBvdXIgcmVjZW50IHdyaXRlcyBzbyBpdCBkb2Vzbid0IG1pc3MgYW55LiBUaGUgcmVwbHkgZ29lcyB0byBldmVyeSB0YWIsIGJ1dCBwZWVycyB0aGF0IGFscmVhZHkgaGF2ZSBhIHdyaXRlIGlnbm9yZSBpdCAoaXRzIHRpbWVzdGFtcCBpc24ndCBuZXdlciB0aGFuIHdoYXQgdGhleSBob2xkKSwgc28gdGhlIHJlZHVuZGFudCBicm9hZGNhc3QgaXMgaGFybWxlc3MuXG4gICAgICAgICAgICBwcnVuZVJlY2VudChjcmVhdGVkKTtcbiAgICAgICAgICAgIGlmIChjcmVhdGVkLnJlY2VudC5sZW5ndGgpIGNyZWF0ZWQuYmMucG9zdE1lc3NhZ2UoeyB0eXBlOiBcInJlY2VudFwiLCB3cml0ZXM6IGNyZWF0ZWQucmVjZW50IH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjaGFubmVscy5zZXQoY29sbGVjdGlvbiwgY3JlYXRlZCk7XG4gICAgcmV0dXJuIGNyZWF0ZWQ7XG59XG5cbi8vIFN1YnNjcmliZSB0byByZW1vdGUgd3JpdGVzIGZvciBhIGNvbGxlY3Rpb24uIFJlY2VudCB3cml0ZXMgZnJvbSBhbHJlYWR5LW9wZW4gdGFicyBhcnJpdmUgdGhyb3VnaCB0aGUgc2FtZSBvbldyaXRlIGNhbGxiYWNrIChhcyB0aGUgcmVwbHkgdG8gb3VyIGhlbGxvKSwgc28gdGhlIHJldHVybmVkIGFycmF5IGlzIGFsd2F5cyBlbXB0eSDigJQgaXQncyBrZXB0IG9ubHkgZm9yIEFQSSBjb21wYXRpYmlsaXR5IHdpdGggY2FsbGVycyB0aGF0IGF3YWl0IGl0LlxuZXhwb3J0IGZ1bmN0aW9uIGNvbm5lY3QoY29sbGVjdGlvbjogc3RyaW5nLCBvbldyaXRlOiAod3JpdGU6IFJlbW90ZVdyaXRlKSA9PiB2b2lkLCBvblNlYWw/OiAoKSA9PiB2b2lkKTogUHJvbWlzZTxSZW1vdGVXcml0ZVtdPiB7XG4gICAgY29uc3QgY2hhbm5lbCA9IGVuc3VyZShjb2xsZWN0aW9uKTtcbiAgICBpZiAoIWNoYW5uZWwpIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIGNoYW5uZWwuc3Vic2NyaWJlcnMucHVzaChvbldyaXRlKTtcbiAgICBpZiAob25TZWFsKSBjaGFubmVsLnNlYWxTdWJzY3JpYmVycy5wdXNoKG9uU2VhbCk7XG4gICAgY2hhbm5lbC5iYy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwiaGVsbG9cIiB9KTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJyb2FkY2FzdChjb2xsZWN0aW9uOiBzdHJpbmcsIHdyaXRlOiBSZW1vdGVXcml0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5uZWwgPSBlbnN1cmUoY29sbGVjdGlvbik7XG4gICAgaWYgKCFjaGFubmVsKSByZXR1cm47XG4gICAgY2hhbm5lbC5yZWNlbnQucHVzaCh3cml0ZSk7XG4gICAgcHJ1bmVSZWNlbnQoY2hhbm5lbCk7XG4gICAgY2hhbm5lbC5iYy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwid3JpdGVcIiwgd3JpdGUgfSk7XG59XG5cbi8vIEFzayBldmVyeSBvdGhlciBvcGVuIHRhYiBvZiB0aGlzIGNvbGxlY3Rpb24gdG8gc2VhbCAoc3RvcCBhcHBlbmRpbmcgdG8pIGl0cyBjdXJyZW50IHN0cmVhbSBmaWxlLCBzbyBhIG1lcmdlIGNhbiBmb2xkIHJlY2VudCBkYXRhIHVwIHRvIHRoZSBwcmVzZW50IHdpdGhvdXQgcmFjaW5nIGFuIGFwcGVuZC4gQmVzdC1lZmZvcnQ6IG5vLW9wIGluIE5vZGUsIGFuZCBhIHBlZXIgdGhhdCBtaXNzZXMgaXQganVzdCBrZWVwcyBhcHBlbmRpbmcg4oCUIHdvcnN0IGNhc2UgdGhlIG1lcmdlIGZvbGRzIGEgcHJlZml4IGFuZCB0aGUgcmVzdCBmb2xkcyBsYXRlciAoZHVwbGljYXRpb24sIHJlc29sdmVkIGJ5IHdyaXRlLXRpbWUpLCBuZXZlciBkYXRhIGxvc3MuXG5leHBvcnQgZnVuY3Rpb24gYnJvYWRjYXN0U2VhbChjb2xsZWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFubmVsID0gZW5zdXJlKGNvbGxlY3Rpb24pO1xuICAgIGlmICghY2hhbm5lbCkgcmV0dXJuO1xuICAgIGNoYW5uZWwuYmMucG9zdE1lc3NhZ2UoeyB0eXBlOiBcInNlYWxcIiB9KTtcbn1cbiJdfQ==
88
- /* _JS_SOURCE_HASH = "cdc761db7ccaac86e5229f930d16f0ed0ba5fca698c49d5e370e5c3c12b596d4"; */
88
+ /* _JS_SOURCE_HASH = "c3aed40d112d1e5210b8ee9a02d667a1c8f1331f529823f55959039b68084cfd"; */
@@ -1,4 +1,4 @@
1
- "use strict";
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";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -361,4 +361,4 @@ function applyFindInfoShape(files, prefix, config) {
361
361
  }
362
362
  exports.applyFindInfoShape = applyFindInfoShape;
363
363
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjaGl2ZXNEaXNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQXJjaGl2ZXNEaXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFDeEIseURBQW1EO0FBQ25ELDJEQUErRDtBQUMvRCxtREFBbUU7QUFDbkUsMkNBQWtHO0FBRWxHLDRiQUE0YjtBQUU1YixNQUFNLG1CQUFtQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDdEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBUXhDLDhjQUE4YztBQUM5YyxNQUFNLGVBQWU7SUFNakI7UUFMUSxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFDakQsMERBQTBEO1FBQ2xELFFBQUcsR0FBa0IsRUFBRSxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUcvQyxJQUFBLDBCQUFlLEVBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELCtFQUErRTtJQUN4RSxHQUFHLENBQUksUUFBZ0IsRUFBRSxHQUFxQjtRQUNqRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QiwyRkFBMkY7UUFDM0YsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDaEIsMEVBQTBFO1lBQzFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxvRkFBb0Y7SUFDN0UsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFnQixFQUFFLEtBQWE7UUFDbEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxLQUFLLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELCtDQUErQztJQUN4QyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQ2xDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWtCO1FBQ3BDLElBQUksS0FBSyxHQUFHLElBQUEsd0JBQWlCLEVBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxPQUFPO1FBQ3RCLGtFQUFrRTtRQUNsRSxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE9BQU87WUFDWCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFLO1FBQ2YsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLG1CQUFtQixDQUFDO1FBQzlDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2xFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsa0ZBQWtGO1lBQ2xGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLEtBQUssRUFBRSxDQUFDO2dCQUNSLFNBQVM7WUFDYixDQUFDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQUVELE1BQWEsWUFBWTtJQUNyQixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUUxQixhQUFRLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLGVBQVUsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDL0MsWUFBTyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUN0RCxzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFdkIsU0FBSSxHQUFHLElBQUEsY0FBSSxFQUFDLEtBQUssSUFBSSxFQUFFO1lBQzFCLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzVELE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlELDJGQUEyRjtZQUMzRixLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBZm1DLENBQUM7SUFpQmhDLFlBQVk7UUFDZixPQUFPLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUztRQUNsQixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sUUFBUSxDQUFDLEdBQVc7UUFDeEIsSUFBSSxNQUFNLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVksRUFBRSxNQUFrQztRQUMxRSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLFlBQVksR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsWUFBWSxDQUFDO1FBQ3hDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDZixJQUFBLG1DQUF1QixFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hDLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQy9DLGtFQUFrRTtnQkFDbEUsSUFBSSxRQUFRLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPO29CQUFFLE9BQU87WUFDNUQsQ0FBQztZQUNELE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFlBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFlBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDZixNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUN4RSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVc7UUFDeEIsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN4QyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQztnQkFDRCxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRO29CQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxNQUFtRDtRQUM3RSxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQVcsRUFBRSxNQUFtRDtRQUM5RSxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLEtBQUssR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMvQyxJQUFJLE1BQThCLENBQUM7WUFDbkMsSUFBSSxDQUFDO2dCQUNELE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxZQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pFLENBQUM7WUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRO29CQUFFLE9BQU8sU0FBUyxDQUFDO2dCQUMxQyxNQUFNLENBQUMsQ0FBQztZQUNaLENBQUM7WUFDRCxJQUFJLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3RCLElBQUksS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RELElBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ3JELElBQUksR0FBRyxJQUFJLEtBQUs7Z0JBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ25GLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZFLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLE1BQU0sQ0FBQyxNQUFNLGFBQWEsUUFBUSxJQUFJLEtBQUssVUFBVSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ2xHLENBQUM7WUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVc7UUFDNUIsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQy9DLElBQUksS0FBSyxHQUFHLE1BQU0sZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUFFLE9BQU8sU0FBUyxDQUFDO1lBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBYyxFQUFFLE1BQXlEO1FBQ3ZGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQWMsRUFBRSxNQUEwRDtRQUM1RixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUMvQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELElBQUEsV0FBSSxFQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsaUdBQWlHO0lBQ3pGLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxLQUFtQztRQUMxRixJQUFJLE9BQW9CLENBQUM7UUFDekIsSUFBSSxDQUFDO1lBQ0QsT0FBTyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkcsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUTtnQkFBRSxPQUFPO1lBQ2hDLE1BQU0sQ0FBQyxDQUFDO1FBQ1osQ0FBQztRQUNELEtBQUssSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7WUFDeEIsSUFBSSxPQUFPLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxPQUFPLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDNUIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDM0QsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBQ0QsU0FBUztZQUNiLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFBRSxTQUFTO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFBRSxTQUFTO1lBQzFDLElBQUksS0FBSyxHQUFHLE1BQU0sZUFBZSxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsS0FBSztnQkFBRSxTQUFTO1lBQ3JCLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQW9FO1FBQzFGLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDO1lBQ0QsT0FBTyxJQUFJLEVBQUUsQ0FBQztnQkFDVixJQUFJLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLElBQUk7b0JBQUUsTUFBTTtnQkFDakIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFDRCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLENBQUM7UUFDWixDQUFDO0lBQ0wsQ0FBQztJQUVELHNKQUFzSjtJQUMvSSxLQUFLLENBQUMsZ0JBQWdCO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xCLElBQUksRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFVLEVBQUUsSUFBWTtRQUNuRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUMvQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtZQUN2QyxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxZQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pILE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDTSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBVSxFQUFFLEdBQVc7UUFDbEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hDLDBGQUEwRjtZQUMxRixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQztnQkFDRCxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUTtvQkFBRSxNQUFNLENBQUMsQ0FBQztnQkFDakMsa0VBQWtFO2dCQUNsRSxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFVO1FBQ3JDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNwQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDO2dCQUNELE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVE7b0JBQUUsTUFBTSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN4RyxDQUFDO0NBQ0o7QUFsT0Qsb0NBa09DO0FBRUQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxRQUFnQjtJQUMzQyxJQUFJLENBQUM7UUFDRCxPQUFPLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxDQUFDO0lBQ1osQ0FBQztBQUNMLENBQUM7QUFFRCwwS0FBMEs7QUFDMUssU0FBZ0Isa0JBQWtCLENBQUMsS0FBd0IsRUFBRSxNQUFjLEVBQUUsTUFBMEQ7SUFDbkksSUFBSSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxJQUFJLE1BQUssU0FBUyxFQUFFLENBQUM7UUFDN0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7UUFDakQsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFBRSxTQUFTO1lBQ25DLElBQUksTUFBYyxDQUFDO1lBQ25CLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixNQUFNLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekQsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsSUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxFQUFFLENBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFyQkQsZ0RBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGxhenkgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9jYWNoaW5nXCI7XG5pbXBvcnQgeyBydW5JbmZpbml0ZVBvbGwgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9iYXRjaGluZ1wiO1xuaW1wb3J0IHsgc29ydCwgYmluYXJ5U2VhcmNoQmFzaWMgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9taXNjXCI7XG5pbXBvcnQgeyBJQXJjaGl2ZXMsIEFyY2hpdmVGaWxlSW5mbywgQXJjaGl2ZXNDb25maWcsIGFzc2VydFZhbGlkTGFzdE1vZGlmaWVkIH0gZnJvbSBcIi4vSUFyY2hpdmVzXCI7XG5cbi8vIFRoZSBiYXNlIGZpbGUtc3lzdGVtIElBcmNoaXZlczogc3RvcmFnZSBpcyBvbmUtdG8tb25lIHdpdGggdGhlIGZpbGUgc3lzdGVtLCBldmVyeSBrZXkgaXMgZXhhY3RseSBvbmUgcmVhbCBmaWxlIHVuZGVyIDxmb2xkZXI+L2ZpbGVzLCBzbyB0aGUgZmlsZSBzeXN0ZW0gaXRzZWxmIGlzIHRoZSBpbmRleC4gRmlsZSBoYW5kbGVzIGFyZSBjYWNoZWQgYW5kIHJldXNlZCwgYW5kIGNsb3NlZCBvbmNlIGlkbGUgKHNlZSBGaWxlSGFuZGxlQ2FjaGUpLiBBbGwgb3BlcmF0aW9ucyBvbiBhIGZpbGUgcnVuIGluIHNlcmlhbCwgc28gdGhleSBjYW4ndCBjb2xsaWRlIHdpdGggZWFjaCBvdGhlciBvciB3aXRoIGhhbmRsZSBjbG9zaW5nLiBVc2VkIGFzIHRoZSBkaXNrIHN5bmNocm9uaXphdGlvbiBzb3VyY2Ugb2YgQmxvYlN0b3JlIChzZWUgcmVtb3RlU3RvcmFnZS9ibG9iU3RvcmUudHMpLlxuXG5jb25zdCBIQU5ETEVfSURMRV9USU1FT1VUID0gMTAwMCAqIDYwO1xuY29uc3QgSEFORExFX1NXRUVQX0lOVEVSVkFMID0gMTAwMCAqIDE1O1xuXG50eXBlIEhhbmRsZUVudHJ5ID0ge1xuICAgIGZpbGVQYXRoOiBzdHJpbmc7XG4gICAgaGFuZGxlOiBmcy5wcm9taXNlcy5GaWxlSGFuZGxlO1xuICAgIGxhc3RVc2U6IG51bWJlcjtcbn07XG5cbi8vIENhY2hlcyBvcGVuIGZpbGUgaGFuZGxlcywgY2xvc2luZyB0aGVtIG9uY2UgaWRsZSBmb3IgSEFORExFX0lETEVfVElNRU9VVC4gSW5zdGVhZCBvZiBvbmUgc2V0VGltZW91dCBwZXIgaGFuZGxlLCBhIGxpc3Qgc29ydGVkIGJ5IGxhc3QgdXNlIGlzIHN3ZXB0IHBlcmlvZGljYWxseSAoZW50cmllcyBhcmUgbW92ZWQgdmlhIGJpbmFyeSBzZWFyY2ggb24gYWNjZXNzLCBhbmQgbGFzdFVzZSB2YWx1ZXMgb25seSBpbmNyZWFzZSwgc28gdG91Y2hlZCBlbnRyaWVzIGFwcGVuZCBhdCB0aGUgZW5kKS4gQWxzbyBzZXJpYWxpemVzIG9wZXJhdGlvbnMgcGVyIGZpbGU6IGVhY2ggb3BlcmF0aW9uIG9ubHkgc3RhcnRzIG9uY2UgdGhlIHByZXZpb3VzIG9uZSBvbiB0aGUgc2FtZSBmaWxlIGZpbmlzaGVkLCBhbmQgYSBoYW5kbGUgaXMgbmV2ZXIgY2xvc2VkIHdoaWxlIGFuIG9wZXJhdGlvbiBpcyBwZW5kaW5nIG9uIGl0LlxuY2xhc3MgRmlsZUhhbmRsZUNhY2hlIHtcbiAgICBwcml2YXRlIGVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgSGFuZGxlRW50cnk+KCk7XG4gICAgLy8gU29ydGVkIGJ5IGxhc3RVc2UgYXNjZW5kaW5nIChsZWFzdCByZWNlbnRseSB1c2VkIGZpcnN0KVxuICAgIHByaXZhdGUgbHJ1OiBIYW5kbGVFbnRyeVtdID0gW107XG4gICAgcHJpdmF0ZSBwZW5kaW5nID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgcnVuSW5maW5pdGVQb2xsKEhBTkRMRV9TV0VFUF9JTlRFUlZBTCwgKCkgPT4gdGhpcy5zd2VlcCgpKTtcbiAgICB9XG5cbiAgICAvLyBSdW5zIGZuYyBhZnRlciBldmVyeSBwcmV2aW91c2x5IHNjaGVkdWxlZCBvcGVyYXRpb24gb24gZmlsZVBhdGggaGFzIGZpbmlzaGVkXG4gICAgcHVibGljIHJ1bjxUPihmaWxlUGF0aDogc3RyaW5nLCBmbmM6ICgpID0+IFByb21pc2U8VD4pOiBQcm9taXNlPFQ+IHtcbiAgICAgICAgbGV0IHByZXYgPSB0aGlzLnBlbmRpbmcuZ2V0KGZpbGVQYXRoKSB8fCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHByZXYudGhlbihmbmMpO1xuICAgICAgICAvLyBUaGUgcGVuZGluZyBjaGFpbiBtdXN0IG5ldmVyIHJlamVjdCwgb3Igb25lIGZhaWxlZCBvcGVyYXRpb24gd291bGQgcG9pc29uIGFsbCBsYXRlciBvbmVzXG4gICAgICAgIGxldCBsYXN0ID0gcmVzdWx0LnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pO1xuICAgICAgICB0aGlzLnBlbmRpbmcuc2V0KGZpbGVQYXRoLCBsYXN0KTtcbiAgICAgICAgdm9pZCBsYXN0LnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gSWYgd2UncmUgc3RpbGwgdGhlIGxhc3QgcGVuZGluZyBvcGVyYXRpb24gb24gdGhpcyBmaWxlLCBjbGVhciBvdXJzZWx2ZXNcbiAgICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmcuZ2V0KGZpbGVQYXRoKSA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZy5kZWxldGUoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBPbmx5IGNhbGwgaW5zaWRlIHJ1bigpIGZvciB0aGUgc2FtZSBmaWxlUGF0aCAoc28gb3BlbnMgY2FuJ3QgY29sbGlkZSB3aXRoIGNsb3NlcylcbiAgICBwdWJsaWMgYXN5bmMgZ2V0SGFuZGxlKGZpbGVQYXRoOiBzdHJpbmcsIGZsYWdzOiBudW1iZXIpOiBQcm9taXNlPGZzLnByb21pc2VzLkZpbGVIYW5kbGU+IHtcbiAgICAgICAgbGV0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmdldChmaWxlUGF0aCk7XG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tTFJVKGVudHJ5KTtcbiAgICAgICAgICAgIGVudHJ5Lmxhc3RVc2UgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgdGhpcy5scnUucHVzaChlbnRyeSk7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuaGFuZGxlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBoYW5kbGUgPSBhd2FpdCBmcy5wcm9taXNlcy5vcGVuKGZpbGVQYXRoLCBmbGFncyk7XG4gICAgICAgIGVudHJ5ID0geyBmaWxlUGF0aCwgaGFuZGxlLCBsYXN0VXNlOiBEYXRlLm5vdygpIH07XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQoZmlsZVBhdGgsIGVudHJ5KTtcbiAgICAgICAgdGhpcy5scnUucHVzaChlbnRyeSk7XG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfVxuXG4gICAgLy8gT25seSBjYWxsIGluc2lkZSBydW4oKSBmb3IgdGhlIHNhbWUgZmlsZVBhdGhcbiAgICBwdWJsaWMgYXN5bmMgY2xvc2VOb3coZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgZW50cnkgPSB0aGlzLmVudHJpZXMuZ2V0KGZpbGVQYXRoKTtcbiAgICAgICAgaWYgKCFlbnRyeSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmVudHJpZXMuZGVsZXRlKGZpbGVQYXRoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVGcm9tTFJVKGVudHJ5KTtcbiAgICAgICAgYXdhaXQgZW50cnkuaGFuZGxlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVGcm9tTFJVKGVudHJ5OiBIYW5kbGVFbnRyeSkge1xuICAgICAgICBsZXQgaW5kZXggPSBiaW5hcnlTZWFyY2hCYXNpYyh0aGlzLmxydSwgeCA9PiB4Lmxhc3RVc2UsIGVudHJ5Lmxhc3RVc2UpO1xuICAgICAgICBpZiAoaW5kZXggPCAwKSByZXR1cm47XG4gICAgICAgIC8vIE11bHRpcGxlIGVudHJpZXMgY2FuIHNoYXJlIGEgbGFzdFVzZSwgc28gc2NhbiBmb3IgdGhlIGV4YWN0IG9uZVxuICAgICAgICB3aGlsZSAoaW5kZXggPCB0aGlzLmxydS5sZW5ndGggJiYgdGhpcy5scnVbaW5kZXhdLmxhc3RVc2UgPT09IGVudHJ5Lmxhc3RVc2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxydVtpbmRleF0gPT09IGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5scnUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzd2VlcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGN1dG9mZiA9IERhdGUubm93KCkgLSBIQU5ETEVfSURMRV9USU1FT1VUO1xuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaW5kZXggPCB0aGlzLmxydS5sZW5ndGggJiYgdGhpcy5scnVbaW5kZXhdLmxhc3RVc2UgPD0gY3V0b2ZmKSB7XG4gICAgICAgICAgICBsZXQgZW50cnkgPSB0aGlzLmxydVtpbmRleF07XG4gICAgICAgICAgICAvLyBDYW4ndCBjbG9zZSBhIGhhbmRsZSB3aXRoIGEgcGVuZGluZyBvcGVyYXRpb247IGl0J2xsIGJlIHN3ZXB0IGFmdGVyIGl0IGZpbmlzaGVzXG4gICAgICAgICAgICBpZiAodGhpcy5wZW5kaW5nLmhhcyhlbnRyeS5maWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5scnUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5kZWxldGUoZW50cnkuZmlsZVBhdGgpO1xuICAgICAgICAgICAgYXdhaXQgZW50cnkuaGFuZGxlLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcmNoaXZlc0Rpc2sgaW1wbGVtZW50cyBJQXJjaGl2ZXMge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9sZGVyOiBzdHJpbmcpIHsgfVxuXG4gICAgcHJpdmF0ZSBmaWxlc0RpciA9IHBhdGguam9pbih0aGlzLmZvbGRlciwgXCJmaWxlc1wiKTtcbiAgICBwcml2YXRlIHVwbG9hZHNEaXIgPSBwYXRoLmpvaW4odGhpcy5mb2xkZXIsIFwidXBsb2Fkc1wiKTtcbiAgICBwcml2YXRlIGhhbmRsZXMgPSBuZXcgRmlsZUhhbmRsZUNhY2hlKCk7XG4gICAgcHJpdmF0ZSBsYXJnZVVwbG9hZHMgPSBuZXcgTWFwPHN0cmluZywgeyB0bXBQYXRoOiBzdHJpbmcgfT4oKTtcbiAgICBwcml2YXRlIG5leHRMYXJnZVVwbG9hZElkID0gMTtcblxuICAgIHB1YmxpYyBpbml0ID0gbGF6eShhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHRoaXMuZmlsZXNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2Rpcih0aGlzLnVwbG9hZHNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAvLyBVcGxvYWRzIGRvbid0IHN1cnZpdmUgcmVzdGFydHMgKHRoZSB1cGxvYWRlciBzdHJlYW1zIGludG8gdGhlbSksIHNvIG9sZCBvbmVzIGFyZSBnYXJiYWdlXG4gICAgICAgIGZvciAobGV0IGZpbGUgb2YgYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcih0aGlzLnVwbG9hZHNEaXIpKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy51bmxpbmsocGF0aC5qb2luKHRoaXMudXBsb2Fkc0RpciwgZmlsZSkpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgZ2V0RGVidWdOYW1lKCkge1xuICAgICAgICByZXR1cm4gYGRpc2sgJHt0aGlzLmZvbGRlcn1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDb25maWcoKTogUHJvbWlzZTxBcmNoaXZlc0NvbmZpZz4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGhhc1dyaXRlQWNjZXNzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbGVQYXRoKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHBhdGguam9pbih0aGlzLmZpbGVzRGlyLCBrZXkpO1xuICAgICAgICBpZiAoIXJlc3VsdC5zdGFydHNXaXRoKHRoaXMuZmlsZXNEaXIgKyBwYXRoLnNlcCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBrZXkgJHtKU09OLnN0cmluZ2lmeShrZXkuc2xpY2UoMCwgMjAwKSl9LCBpdCBlc2NhcGVzIHRoZSBzdG9yZSBmb2xkZXJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXQoa2V5OiBzdHJpbmcsIGRhdGE6IEJ1ZmZlciwgY29uZmlnPzogeyBsYXN0TW9kaWZpZWQ/OiBudW1iZXIgfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgICAgICBsZXQgbGFzdE1vZGlmaWVkID0gY29uZmlnPy5sYXN0TW9kaWZpZWQ7XG4gICAgICAgIGlmIChsYXN0TW9kaWZpZWQpIHtcbiAgICAgICAgICAgIGFzc2VydFZhbGlkTGFzdE1vZGlmaWVkKGxhc3RNb2RpZmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aChrZXkpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKGZpbGVQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAobGFzdE1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGV4aXN0aW5nID0gYXdhaXQgc3RhdE9yVW5kZWZpbmVkKGZpbGVQYXRoKTtcbiAgICAgICAgICAgICAgICAvLyBBbiBvbGRlciB3cml0ZSBuZXZlciBvdmVyd3JpdGVzIGEgbmV3ZXIgb25lIChzZWUgSUFyY2hpdmVzLnNldClcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgJiYgbGFzdE1vZGlmaWVkIDwgZXhpc3RpbmcubXRpbWVNcykgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0gYXdhaXQgdGhpcy5oYW5kbGVzLmdldEhhbmRsZShmaWxlUGF0aCwgZnMuY29uc3RhbnRzLk9fUkRXUiB8IGZzLmNvbnN0YW50cy5PX0NSRUFUKTtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZS50cnVuY2F0ZSgwKTtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZS53cml0ZShkYXRhLCAwLCBkYXRhLmxlbmd0aCwgMCk7XG4gICAgICAgICAgICBpZiAobGFzdE1vZGlmaWVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgaGFuZGxlLnV0aW1lcyhuZXcgRGF0ZShsYXN0TW9kaWZpZWQpLCBuZXcgRGF0ZShsYXN0TW9kaWZpZWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRlbChrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICAgICAgbGV0IGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aChrZXkpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKGZpbGVQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMuY2xvc2VOb3coZmlsZVBhdGgpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy51bmxpbmsoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuY29kZSAhPT0gXCJFTk9FTlRcIikgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldChrZXk6IHN0cmluZywgY29uZmlnPzogeyByYW5nZT86IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfSB9KTogUHJvbWlzZTxCdWZmZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0MihrZXksIGNvbmZpZyk7XG4gICAgICAgIHJldHVybiByZXN1bHQgJiYgcmVzdWx0LmRhdGEgfHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXQyKGtleTogc3RyaW5nLCBjb25maWc/OiB7IHJhbmdlPzogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9IH0pOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgICAgIGxldCByYW5nZSA9IGNvbmZpZz8ucmFuZ2U7XG4gICAgICAgIGxldCBmaWxlUGF0aCA9IHRoaXMuZmlsZVBhdGgoa2V5KTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlcy5ydW4oZmlsZVBhdGgsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBoYW5kbGU6IGZzLnByb21pc2VzLkZpbGVIYW5kbGU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGhhbmRsZSA9IGF3YWl0IHRoaXMuaGFuZGxlcy5nZXRIYW5kbGUoZmlsZVBhdGgsIGZzLmNvbnN0YW50cy5PX1JEV1IpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHN0YXRzID0gYXdhaXQgaGFuZGxlLnN0YXQoKTtcbiAgICAgICAgICAgIGxldCBzaXplID0gc3RhdHMuc2l6ZTtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IHJhbmdlICYmIE1hdGgubWluKHJhbmdlLnN0YXJ0LCBzaXplKSB8fCAwO1xuICAgICAgICAgICAgbGV0IGVuZCA9IHJhbmdlICYmIE1hdGgubWluKHJhbmdlLmVuZCwgc2l6ZSkgfHwgc2l6ZTtcbiAgICAgICAgICAgIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiB7IGRhdGE6IEJ1ZmZlci5hbGxvYygwKSwgd3JpdGVUaW1lOiBzdGF0cy5tdGltZU1zLCBzaXplIH07XG4gICAgICAgICAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmFsbG9jKGVuZCAtIHN0YXJ0KTtcbiAgICAgICAgICAgIGxldCB7IGJ5dGVzUmVhZCB9ID0gYXdhaXQgaGFuZGxlLnJlYWQoYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoLCBzdGFydCk7XG4gICAgICAgICAgICBpZiAoYnl0ZXNSZWFkICE9PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2J1ZmZlci5sZW5ndGh9IGJ5dGVzIGF0ICR7ZmlsZVBhdGh9OiR7c3RhcnR9LCByZWFkICR7Ynl0ZXNSZWFkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogYnVmZmVyLCB3cml0ZVRpbWU6IHN0YXRzLm10aW1lTXMsIHNpemUgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm8oa2V5OiBzdHJpbmcpOiBQcm9taXNlPHsgd3JpdGVUaW1lOiBudW1iZXI7IHNpemU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgICAgICBsZXQgZmlsZVBhdGggPSB0aGlzLmZpbGVQYXRoKGtleSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKGZpbGVQYXRoLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RhdHMgPSBhd2FpdCBzdGF0T3JVbmRlZmluZWQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgaWYgKCFzdGF0cyB8fCAhc3RhdHMuaXNGaWxlKCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4geyB3cml0ZVRpbWU6IHN0YXRzLm10aW1lTXMsIHNpemU6IHN0YXRzLnNpemUgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmQocHJlZml4OiBzdHJpbmcsIGNvbmZpZz86IHsgc2hhbGxvdz86IGJvb2xlYW47IHR5cGU6IFwiZmlsZXNcIiB8IFwiZm9sZGVyc1wiIH0pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5maW5kSW5mbyhwcmVmaXgsIGNvbmZpZykpLm1hcCh4ID0+IHgucGF0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRJbmZvKHByZWZpeDogc3RyaW5nLCBjb25maWc/OiB7IHNoYWxsb3c/OiBib29sZWFuOyB0eXBlPzogXCJmaWxlc1wiIHwgXCJmb2xkZXJzXCIgfSk6IFByb21pc2U8QXJjaGl2ZUZpbGVJbmZvW10+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0KCk7XG4gICAgICAgIGxldCBpbmZvcyA9IG5ldyBNYXA8c3RyaW5nLCBBcmNoaXZlRmlsZUluZm8+KCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY29sbGVjdEZpbGVzKFwiXCIsIHByZWZpeCwgaW5mb3MpO1xuICAgICAgICBsZXQgZmlsZXMgPSBBcnJheS5mcm9tKGluZm9zLnZhbHVlcygpKTtcbiAgICAgICAgZmlsZXMgPSBhcHBseUZpbmRJbmZvU2hhcGUoZmlsZXMsIHByZWZpeCwgY29uZmlnKTtcbiAgICAgICAgc29ydChmaWxlcywgeCA9PiB4LnBhdGgpO1xuICAgICAgICByZXR1cm4gZmlsZXM7XG4gICAgfVxuXG4gICAgLy8gcmVsRGlyIGlzIFwiXCIgb3IgZW5kcyB3aXRoIFwiL1wiLiBPbmx5IGRlc2NlbmRzIGludG8gZGlyZWN0b3JpZXMgdGhhdCBjYW4gc3RpbGwgbWF0Y2ggdGhlIHByZWZpeC5cbiAgICBwcml2YXRlIGFzeW5jIGNvbGxlY3RGaWxlcyhyZWxEaXI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIGluZm9zOiBNYXA8c3RyaW5nLCBBcmNoaXZlRmlsZUluZm8+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCBlbnRyaWVzOiBmcy5EaXJlbnRbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGVudHJpZXMgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKHBhdGguam9pbih0aGlzLmZpbGVzRGlyLCByZWxEaXIpLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgICBsZXQgcmVsUGF0aCA9IHJlbERpciArIGVudHJ5Lm5hbWU7XG4gICAgICAgICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgIGxldCBkaXJQYXRoID0gcmVsUGF0aCArIFwiL1wiO1xuICAgICAgICAgICAgICAgIGlmIChkaXJQYXRoLnN0YXJ0c1dpdGgocHJlZml4KSB8fCBwcmVmaXguc3RhcnRzV2l0aChkaXJQYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbGxlY3RGaWxlcyhkaXJQYXRoLCBwcmVmaXgsIGluZm9zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWVudHJ5LmlzRmlsZSgpKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghcmVsUGF0aC5zdGFydHNXaXRoKHByZWZpeCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IHN0YXRzID0gYXdhaXQgc3RhdE9yVW5kZWZpbmVkKHBhdGguam9pbih0aGlzLmZpbGVzRGlyLCByZWxQYXRoKSk7XG4gICAgICAgICAgICAvLyBEZWxldGVkIHdoaWxlIHdlIHdlcmUgd2Fsa2luZ1xuICAgICAgICAgICAgaWYgKCFzdGF0cykgY29udGludWU7XG4gICAgICAgICAgICBpbmZvcy5zZXQocmVsUGF0aCwgeyBwYXRoOiByZWxQYXRoLCBjcmVhdGVUaW1lOiBzdGF0cy5tdGltZU1zLCBzaXplOiBzdGF0cy5zaXplIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldExhcmdlRmlsZShjb25maWc6IHsgcGF0aDogc3RyaW5nOyBnZXROZXh0RGF0YSgpOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgaWQgPSBhd2FpdCB0aGlzLnN0YXJ0TGFyZ2VVcGxvYWQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBjb25maWcuZ2V0TmV4dERhdGEoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIGJyZWFrO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYXBwZW5kTGFyZ2VVcGxvYWQoaWQsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5maW5pc2hMYXJnZVVwbG9hZChpZCwgY29uZmlnLnBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNhbmNlbExhcmdlVXBsb2FkKGlkKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMYXJnZSBmaWxlcyBzdHJlYW0gaW50byB0aGVpciBvd24gZmlsZSB1bmRlciB1cGxvYWRzLywgdGhlbiBtb3ZlIGludG8gcGxhY2Ugb24gZmluaXNoLiBObyBoYW5kbGUgaXMgb3BlbmVkIHVudGlsIHRoZSBmaXJzdCBhcHBlbmQgYWN0dWFsbHkgaGFwcGVucy5cbiAgICBwdWJsaWMgYXN5bmMgc3RhcnRMYXJnZVVwbG9hZCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICAgICAgbGV0IGlkID0gYCR7RGF0ZS5ub3coKX1fJHt0aGlzLm5leHRMYXJnZVVwbG9hZElkKyt9YDtcbiAgICAgICAgdGhpcy5sYXJnZVVwbG9hZHMuc2V0KGlkLCB7IHRtcFBhdGg6IHBhdGguam9pbih0aGlzLnVwbG9hZHNEaXIsIGB1cGxvYWRfJHtpZH0udG1wYCkgfSk7XG4gICAgICAgIHJldHVybiBpZDtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIGFwcGVuZExhcmdlVXBsb2FkKGlkOiBzdHJpbmcsIGRhdGE6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgdXBsb2FkID0gdGhpcy5sYXJnZVVwbG9hZHMuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCF1cGxvYWQpIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBsYXJnZSB1cGxvYWQgJHtpZH1gKTtcbiAgICAgICAgY29uc3QgdG1wUGF0aCA9IHVwbG9hZC50bXBQYXRoO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKHRtcFBhdGgsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSBhd2FpdCB0aGlzLmhhbmRsZXMuZ2V0SGFuZGxlKHRtcFBhdGgsIGZzLmNvbnN0YW50cy5PX1dST05MWSB8IGZzLmNvbnN0YW50cy5PX0NSRUFUIHwgZnMuY29uc3RhbnRzLk9fQVBQRU5EKTtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZS53cml0ZShkYXRhLCAwLCBkYXRhLmxlbmd0aCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgZmluaXNoTGFyZ2VVcGxvYWQoaWQ6IHN0cmluZywga2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHVwbG9hZCA9IHRoaXMubGFyZ2VVcGxvYWRzLmdldChpZCk7XG4gICAgICAgIGlmICghdXBsb2FkKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbGFyZ2UgdXBsb2FkICR7aWR9YCk7XG4gICAgICAgIGNvbnN0IHRtcFBhdGggPSB1cGxvYWQudG1wUGF0aDtcbiAgICAgICAgdGhpcy5sYXJnZVVwbG9hZHMuZGVsZXRlKGlkKTtcbiAgICAgICAgbGV0IGZpbGVQYXRoID0gdGhpcy5maWxlUGF0aChrZXkpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKHRtcFBhdGgsICgpID0+IHRoaXMuaGFuZGxlcy5jbG9zZU5vdyh0bXBQYXRoKSk7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5ydW4oZmlsZVBhdGgsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIC8vIENsb3NlIGFueSBjYWNoZWQgaGFuZGxlIHRvIHRoZSBmaWxlIHdlJ3JlIHJlcGxhY2luZywgc28gbGF0ZXIgcmVhZHMgcmVvcGVuIHRoZSBuZXcgZmlsZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVzLmNsb3NlTm93KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5yZW5hbWUodG1wUGF0aCwgZmlsZVBhdGgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuY29kZSAhPT0gXCJFTk9FTlRcIikgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAvLyBOb3RoaW5nIHdhcyBldmVyIGFwcGVuZGVkLCBzbyB0aGUgdXBsb2FkIGZpbGUgd2FzIG5ldmVyIGNyZWF0ZWRcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZVBhdGgsIEJ1ZmZlci5hbGxvYygwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgY2FuY2VsTGFyZ2VVcGxvYWQoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgdXBsb2FkID0gdGhpcy5sYXJnZVVwbG9hZHMuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCF1cGxvYWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgdG1wUGF0aCA9IHVwbG9hZC50bXBQYXRoO1xuICAgICAgICB0aGlzLmxhcmdlVXBsb2Fkcy5kZWxldGUoaWQpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZXMucnVuKHRtcFBhdGgsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcy5jbG9zZU5vdyh0bXBQYXRoKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKHRtcFBhdGgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuY29kZSAhPT0gXCJFTk9FTlRcIikgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFVSTChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdldFVSTCBpcyBub3Qgc3VwcG9ydGVkIGZvciBkaXNrIGFyY2hpdmVzICgke3RoaXMuZ2V0RGVidWdOYW1lKCl9LCBwYXRoICR7cGF0aH0pYCk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzdGF0T3JVbmRlZmluZWQoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8ZnMuU3RhdHMgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZnMucHJvbWlzZXMuc3RhdChmaWxlUGF0aCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmIChlLmNvZGUgPT09IFwiRU5PRU5UXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgfVxufVxuXG4vLyBUaGUgZm9sZGVycy9zaGFsbG93IHBvc3QtcHJvY2Vzc2luZyBzaGFyZWQgYnkgZmluZEluZm8gaW1wbGVtZW50YXRpb25zIHRoYXQgbGlzdCBmbGF0IGZpbGVzICh1c2VkIGJ5IEFyY2hpdmVzRGlzayBvbiB0aGUgcmF3IGRpc2sgd2FsaywgYW5kIGJ5IEJsb2JTdG9yZSBvbiBpdHMgaW5kZXgpLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RmluZEluZm9TaGFwZShmaWxlczogQXJjaGl2ZUZpbGVJbmZvW10sIHByZWZpeDogc3RyaW5nLCBjb25maWc/OiB7IHNoYWxsb3c/OiBib29sZWFuOyB0eXBlPzogXCJmaWxlc1wiIHwgXCJmb2xkZXJzXCIgfSk6IEFyY2hpdmVGaWxlSW5mb1tdIHtcbiAgICBpZiAoY29uZmlnPy50eXBlID09PSBcImZvbGRlcnNcIikge1xuICAgICAgICBsZXQgZm9sZGVycyA9IG5ldyBNYXA8c3RyaW5nLCBBcmNoaXZlRmlsZUluZm8+KCk7XG4gICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGxldCByZXN0ID0gZmlsZS5wYXRoLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgICAgICAgICAgbGV0IHJlc3RQYXJ0cyA9IHJlc3Quc3BsaXQoXCIvXCIpO1xuICAgICAgICAgICAgaWYgKHJlc3RQYXJ0cy5sZW5ndGggPCAyKSBjb250aW51ZTtcbiAgICAgICAgICAgIGxldCBmb2xkZXI6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChjb25maWcuc2hhbGxvdykge1xuICAgICAgICAgICAgICAgIGZvbGRlciA9IHByZWZpeCArIHJlc3RQYXJ0c1swXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9sZGVyID0gZmlsZS5wYXRoLnNwbGl0KFwiL1wiKS5zbGljZSgwLCAtMSkuam9pbihcIi9cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb2xkZXJzLnNldChmb2xkZXIsIHsgcGF0aDogZm9sZGVyLCBjcmVhdGVUaW1lOiBmaWxlLmNyZWF0ZVRpbWUsIHNpemU6IGZpbGUuc2l6ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShmb2xkZXJzLnZhbHVlcygpKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZz8uc2hhbGxvdykge1xuICAgICAgICByZXR1cm4gZmlsZXMuZmlsdGVyKGZpbGUgPT4gIWZpbGUucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKS5pbmNsdWRlcyhcIi9cIikpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZXM7XG59XG4iXX0=
364
- /* _JS_SOURCE_HASH = "9b9ebf71f1c4d9cdeb97f549e86d16c238a472337a6dce34f8679bd6d3cc8380"; */
364
+ /* _JS_SOURCE_HASH = "750b6bff0c433e0bf1cde56447424f14fe01c46482c5eee319f956617ca092d5"; */