{"_id":"sorted-btree","_rev":"28-c4cbed89ca3d0eeb260fb213d4fab5f5","name":"sorted-btree","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"sorted-btree","version":"1.0.0","keywords":["B+","tree","btree","sorted","map","collection","fast-cloning","copy-on-write","lazy-copying","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.0.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"e8a906dddc6b47fff93ce26b31ea16e1e45d3922","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.0.0.tgz","fileCount":5,"integrity":"sha512-GLvnKyOeEeYBdK4Qf4lvbPwPZc8LX68M2qlbDkZXAKC/EuJz2vd6lj7ABTHq5pKz7BZ9y2Jse4Dpu9Xh4GmjMg==","signatures":[{"sig":"MEUCIQC/nw9VoXLqIi7Q1gWB4rWc7A+nKnQm07hQW799w6gCygIgKniP7JPxIEj4KOlQaUQxoCpd45KRVyRLyG9OTcvDDpw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":83762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWiJRCRA9TVsSAnZWagAAnVMP/350jQBHNEaMd5e1DyhV\ncjlGnlSNYqpxh1XXsTXxp2mp+qB5jkxy0vWEemLi9EMuB5w7fZ+fU228bph+\nRCYPdZFu9TnKvAJDq2j9kudWPIgbPTqhidxuvkt82azRXohbHR1mQHg+ntz3\nmevy83OEqf/r80t8gI5+CWAicJlfiRk/5r4taRGpBWgD8yVQtPrXl5qtsGi6\nPkAny7e5/ZyqvrlQn2NdLdGuPOsWkDdghKQ8XSW72yd963DXCEXaRB4LF3SP\n2xfKLfKt1TZy2DVIDJ82Ajf6Es+0U3Odgs1lEVrBx0mSWKTkmVBrHE4I08Br\njW3iv2I3dTimD5wLSmNPpNXCp88k6ofh6o3rpMPHF6GRAqRxOg81R1qDSc/1\nY2d9Ah4QAnmEwGfR/nLRIj82GrIgd1AkaB2lScWFciF4Ke9Gi2WNXmQvwWgw\n1KFDX3MX4gWzNCkx/Ct4b5kBeap7Mfrj9J71IYhR84oHEVbxdgS/nMt8/pIp\nhL7LTdfGxn8g1XGVJFfGRWiUbSsAYeZMpeIQk3fb7Sgzzl2sH0y+MQIFDi/4\nMAQrJ42v7fqhqJzzlO7Dtfob+/S02V4mO86YS7Oje/bAwAuYq99+PYBuJP+k\nwAbp3yYbB5WpCHQAXNW1gO6b0npjKvl7k+xjk1/E5XVi7F1Hzsh298YiPGKH\nx1QP\r\n=EK2W\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","readme.md"],"gitHead":"397d68658ff71b2d399eb7f0702f1dd19ddc4ca7","scripts":{"test":"jest","build":"tsc","prepare":"npm run build","safePublish":"testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A list of key-value pairs kept sorted in a fast in-memory B+ tree with a powerful API, similar to Map.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","babel-core":"^6.26.3","typescript":"^2.9.2","testpack-cli":"^1.1.1","@types/jasmine":"^2.8.8","mersenne-twister":"^1.1.0","@types/mersenne-twister":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.0.0_1532633680977_0.43063766160432904","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"sorted-btree","version":"1.0.1","keywords":["B+","tree","btree","sorted","map","collection","fast-cloning","copy-on-write","lazy-copying","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.0.1","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"cebe1d92fa60204379040482d4bbf4b2aeff55c7","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.0.1.tgz","fileCount":5,"integrity":"sha512-5QHKKaAY6JNtPXiE03DZeNMTXa6aTceBbMWAscB/9bJcdwNOvxjKYKl8pwIwA8V6JHuibSPDD2OlxPmEWHW1nQ==","signatures":[{"sig":"MEUCIEFhgbcURzpfEEwAZfNauVKCT8140KsMc20QDrcuZIoBAiEAq8wux8VYorgNo/fod+toVmltnFX+hpxkALv/25VmvNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":84089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWjAiCRA9TVsSAnZWagAA+VwP/RMxLjby3wFCPOeO3NFK\nAlKF1zlmi0inSaewnWlArT/TKJgjOuGPkAp0+3Zdop3xzIDzzQUJJsvFGB23\nSPXzTaf6WeJH72fxE9APSXummJVz12UZgwtUPXN5K+xCEbyn0uN8/SQdOxn5\n9u9G5iZTTh/4b7a7vRnQLylA1Dw5jXmNcZezZKVoGmZplnE09b1R5U658SE4\n9mGDlhfIOsaSssaxnB/Z4KYy9nR/dDIEW7oOGza/HbrSqpilSRC6PID1lA3S\nIbBzE9fTafdx8K3g1TGaMaZQJ5gxDx74vKad1wEnGYv2kMiOG1d2El/soHhf\n3zvpBfrtDQvsVaIxCLMjwTjlAIhkE+NcHhiIfuxtMB998cSnwPJQNX2jSC6g\nONueGvYEcCvRpjuEz+uugoMLhig4z0tt31XAW8VPsQEd3fjxpa3V0CnGqLJ7\nAcY6dthNYUYCVP0qCHT0QeYbwWGFvw1tJCRKlm3Qx9wDnxG8WcdXoPn5URHe\nX8Ncfi+JOEhtLbIOGIoeIC4qiv2/X4unBGsaTeENRY6o/XJNSl3auFTJ4KZn\ngG7BPle66b2mC9k2iWe+bm4b60HC3axDgqlL5zc+vmYZrnyB6CK9yooyLkX+\n0IO1zfTuB9bYz+roEnZhdyhSKYGTc60J19xr7ApMSKIhlYF21Bn2dUSezgyG\nnPwc\r\n=URwb\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","readme.md"],"gitHead":"397d68658ff71b2d399eb7f0702f1dd19ddc4ca7","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A list of key-value pairs kept sorted in a fast in-memory B+ tree with a powerful API, similar to Map.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","mersenne-twister":"^1.1.0","@types/mersenne-twister":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.0.1_1532637218121_0.06619537195038339","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"sorted-btree","version":"1.0.2","keywords":["B+","tree","btree","sorted","map","collection","fast-cloning","copy-on-write","lazy-copying","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.0.2","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"1b11851b8d38fe2ac59fdbcddb0fdc347927b9ba","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.0.2.tgz","fileCount":6,"integrity":"sha512-YXJ1k/gvx5BXtXXnMPXDhuSvwCCpxphK66ul2RHp/QZk3dM/UjurORdQa2a6ORehgysItgvn/RfJVAEOgEL2RQ==","signatures":[{"sig":"MEUCIQCXxb8XJk1NvhVKpVFsTQFTEBvOa8xVfiwsmgGVg2/UkAIgZVhe2YaKI/Mj6zmHqgyrVBTjVBz7kxEHrYHa5S4QHeQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWjRkCRA9TVsSAnZWagAA3I4QAJw3x8VXkfesFZKqYwEG\ndaKjsSwvLr6JZFAWpLUWKIWPWsVlMXOLzYpw2unuQ8nZuPtWk7/yjof4pPob\n+4dphmtSH8OjxnSapvrBFcGSlWL0CEDA3EBxVmgTpvQge/Qp3xC7lpmOooGu\nipXr+ETrJpgD9xDLPh03CU4yw1roTuOstNnf6C5wiL8EyhrUHaCCa4TUeqpq\nFdaBFGjhoG258E9PmGWGLUHQDqSoy1gzci2bWT79kyQEM7hL1NsHdldYyfXk\nkw6LgZPDTxSoccj7FK5saDYHAfa8c2V3hWRnvUV9g1Lc0VqO5vdj+OuK/P67\nvUVDTOwMLvQXzloXxb9KaHHgY5KsE+yoY4lKJe4c/BRLdla7oJhncWgjsMok\nK/srzMT1UNPpgpjPE3Wd7wSX9lGLcpIfId+7a0eIyzBZokp5pTp7zUAbjH8D\nZFtfL8rBNHLo81o/bXWXG0fnBg/J4cwk8QKzMWeuBsgEEpvZPaP36OcPnsuh\nZfmk1zvO8UhXKeRJV4CybG3FRQlxnrF9jdJzjti5ND3qnzrHxmIK9EU5Rrdu\nvgrT+E3JCQxa5qNWq88bcLgFdjdb7OUyAyqlxBWyYO4gWdg+dXgm1Hbgxk3S\nAmgTsryUQnRssqoEckP+Ij3anikW+4oVZZ/cKk6QKu8bASJtQ6D4QwyYDtHU\noA6d\r\n=aZPf\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","readme.md"],"gitHead":"7b760e5108361fa3304b547be5529f734fe60f9b","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A list of key-value pairs kept sorted in a fast in-memory B+ tree with a powerful API, similar to Map.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","mersenne-twister":"^1.1.0","@types/mersenne-twister":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.0.2_1532638308126_0.3467546514097666","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"sorted-btree","version":"1.0.3","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.0.3","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"3079947b15fd2c47d9b4b7279edcb746df752676","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.0.3.tgz","fileCount":8,"integrity":"sha512-Q24dfkYtR/tMW7Xo/S3/R0/PHA5PCzYny4NQWfsaFHWxAJxexYgUwao4Gn6RIez9dR4NMzZG/E3ypngqt0vX1g==","signatures":[{"sig":"MEYCIQCuVKa3qwN52dE7G1qiR5C8FWIK+XW1IEByxxEj6YKYaQIhAJTuYsTtCPpj9Jccko0Qpvq0V8gPjPzAGDbEBcIF52ZR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":112581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWpmrCRA9TVsSAnZWagAAyUUP/0bj8NUxDT/Mj9ihdZXa\nthUdVylLKDltFPX7qWlwS8/vj5nRmrMOAM5RY63HqHGO2Dvlrsyn9xy/84XK\nurr/FEMcelXLQtCBHyH/I/B8dctzcA1Ua4smEgs+cryZRLzLb5FirCJCoQyC\nJljwASEjGI9r812fSe9Bpi+4N0pTb0JeYerFcn2bAxGMrdhSGmLzeuvWSt4w\nuc24VwSm65EW9B6B72kCmamv7cIAnEzUJ1NBy/+jMfW1LuS1IGdjGtuja1w/\nLXUt0h1E5R2WEGLHlYDNfuMt+/TjaLHB2yHKOzIqHVfxyD7PEdXo3huftzhJ\nmMfGxpNXmncRYLpzXLe0YdSoIC3+kLSnfBqoMRSYIN52sSV7duPI3rOcbeua\nupHmHze8gDcU/RCIWCxLBm90Evw3iFL5Xzub0cz4bGBKe2axcpWs1SExHLSG\nRLWeJmpjBDbJY4vgyzr/8v5tPSz2zS1Sucrr5H/jblF61Vf/GurXo64u/oZ+\nXljLQNIpxeqauiAsSY3Pcpwa1zIWPL1d+MuqamRPaqrKjVonsle1R28KbvrW\nHNcqD5e62DT1Fitk8B/YEqpKqMZo9yrt4JA3ZEXHO9/4sfV62BjEwVPrG8J0\nQAG3enBrIt8DRoq5EiDUszYEwEYb3UE6SoPZz7VQ9GmgpdlU3yq9Y17E5bww\ngZDo\r\n=UnPg\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","readme.md"],"gitHead":"7b760e5108361fa3304b547be5529f734fe60f9b","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{"@types/bintrees":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.0.3_1532664235465_0.1335395858058106","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"sorted-btree","version":"1.0.4","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.0.4","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"8de55efb201319ccc3ba3030b5083a625a41420b","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.0.4.tgz","fileCount":8,"integrity":"sha512-N4SVbphDKvebaAHujtbiqvkTigKdwx2eS6Bn17Tqoc6wYqx7OwJB6VqOS+CCUHjljOeoN/gmEJ19n1+4zPnbCw==","signatures":[{"sig":"MEYCIQCDTQBX5DhG527kwW+AG/KRgXGNE6K8BJZMG0RX2tYgYgIhAKNxstCjJFwcXznhWbz04Yyztqn1JwEn1rY2586cWoyR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":113080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWp4ZCRA9TVsSAnZWagAAUu4P/iPa19FTgyoVK2MtSop+\nsK/hfcu5i8ir/R/vTdvlABF5kIRMKbLfe4QBgTVN2zLLHjdLr2Ttq3kvrJAA\nrF5aM2sObCLEFFaSw6a9vgjYvj8oa9zcfybwfF8la/vekKV1uQ8mh7C6pY56\nbOHpojFsaZ1awZ4Llon/wQsEAepNeM+85BtPuwON7ysqlIFZN1MWGAgIQQL8\ndxv1d6cDCDt/E/WRbRa+vFYiW8H5L14JEuhzBjcADrlGiguBdyfWnawPWrAa\nn2XPdM0Gk2bRiTbFvLKkGSJszK3N3+ci3/I7HBrzqY4Lu9XP3W4yQ7WrAa50\n51IDXKoM2eWLZA3vs/mG92ja+Q2kWYSEsZmcytlnH5sGpks5eWITBs/bzjZV\nkPm/x+YLa+un7V/W4/qzc67xP2faOTiLoiRUwpRo5qWHcTZt97Z2MIWTmUx5\nPZdbl3e/8b4nlvz9JaRKxFzFjAI95AKEBX3aqszXq2X86k7KoCh2PzwAKyvo\n/ACCp1S+slzVWfXyMtqNFLj3o6WOm6ELotqfL0AsUf/HlpnrSMiAVua2V7dS\nA+QHjDwFBB96KH0M20nJK8PC6fQ2gWTocAOQlWbj4AkdtIOM7yTDpMI6/mjs\n0HLU2qKoZjBWp8kIEedSwGjaMnt79WqbSUM86D3IzaELW3Z2wrjtJ6J429IF\nz3WY\r\n=RA2N\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","readme.md"],"gitHead":"7b760e5108361fa3304b547be5529f734fe60f9b","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{"@types/bintrees":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.0.4_1532665369832_0.9629590508687018","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"sorted-btree","version":"1.0.5","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.0.5","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"09e472e1f8d08dec3175ed1f177acbdbfcd745d6","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.0.5.tgz","fileCount":8,"integrity":"sha512-OVBOZ1dEtnhxbMPUqwnX51rf4nVWfGYDZ4VPu+Ehnb8fnNNNFog1WBB7vDyc85QTwkTRrbHxNcDM0HlflgAJNg==","signatures":[{"sig":"MEQCIFNBS50NaLy4dUIVZDur0WZj72QtCPNN1eiZf5uLujNbAiBqS3dMx3O4sVXK7mVPx2/IdaGD3qSiBE6+vDHXvitZqQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":113078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWp/wCRA9TVsSAnZWagAALvwP/AvSNs23JuMY7I5hxYcd\nqh8WSjTVKF0lu+RUOT5qo76OTBaHfGhjG7pKuxs0aVMN1TAvNhUDSWTT9eab\ns66C7HJOFSrG7qunLbki2Vg8FdjKluG41BdG8nQhRdo5HU7QJl0nZkbXheLK\nv8I8TklADGmpMc0e9gYt/q2Yk45YO2dPxd19BuslMNoUOBiudI4i3m8vmoop\nO2yA7NXshJL9RXPU5WfgVVySTYDBvkHa4tSmFndeG4tReMZfJ2CVwElnW67U\nZyXnFOfHAZ8iDw5dsRo0ii7ieOOliuv/eXpByZf9KJV38df7I/aoup176CVM\nFeSOwW/gbNxkp++JAeZ7ABesBjQiNu5ePORHW1hrcxK3FgdOpRLf5oUitXks\n6vfbSSlfWnHzK3jzTLUABAlwcepPSzniGdmQNuiH+AXreADfcq1lFJnqXqqV\net7aFoUjA9aEoHMtXjXHkYcLCQ6UZ77OwZY8tvXwlEWJQtfSpoYFt+mLICKW\nhq46PVCw+5v1ayTb+DGiWMGhSv2OPa2T+5LFxrwun4AtuvdaEFPohMm/Rg/W\nIfP1EshVk+sP70OAtXUWuRxxdvrjz/rSOGMBiKfIwpkL4bmYtbsddwUF/+g9\nN0PwOs8D56xogM/u8oPmD8R0fI8nO+SLec1rKS8D4XRtYS9YOBp7HQbi1iSO\nDxr1\r\n=w0l0\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","readme.md"],"gitHead":"7516bc57b5a60c2a6970ce01c04c591f01085339","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.0.5_1532665839059_0.08081105682247403","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"sorted-btree","version":"1.0.6","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.0.6","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"fa7aa9a02572e34dae15a8c2cc714d177c29644b","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.0.6.tgz","fileCount":8,"integrity":"sha512-lME3M1gTNK5MxD24WevrE1L+aGThLxk6Ti1LuGflWxgLa0z42JGWtZsBabmiJKmaZA53lWyCiHUrpgu3/2nF4A==","signatures":[{"sig":"MEQCIAO92raX50uE9V8aDZissKlJZ0DIOKanH3E19wUaZrSLAiA/KRc+I1+C90i0h1uByDHH9OUCY38EWHK1+L34IWxdIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":113280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbWq0zCRA9TVsSAnZWagAAZFAQAJ2S/k1I1doattlINzOq\nRaNlt6BvupZz6CtlGy33R3IzsEdMbMMuVdqeTI38Sqm0c5oyGtn8W2PRxKFS\nl34DDNgdRNpb84Tmhy0U3PHqNscJ0OX2H1q5nocVFPmjz9aBCreYOpB0xOgp\ncnKKan1VFr6bu1hEuidaMoKc5/9M8y6vH1Zln/MSK6Ktb0MV8yC2qFzYgrfq\nI6NZRmNG7fuK+oVKKjDCWdoISEF7SAb8bfHI6BJNbeivBTP6cPdHTwXJdqeK\nvMQZDMpbH39g5n3cPPB95fGfNO0L6CrgHXVzj+jLh+ALuwWK5JI0SzPMnklp\ngVunxAP4AUyHa2rgNhcCU0NRrlDG+MTD9l+o2ZB3ncICecaVAFIQi1SuASee\nqrgsc9t2n0YiGnhBHL5x4AozaimnhUrt9l990IT0tNEydfMxkygHgHkz2fTT\nFCI0BQb87zkc+6f09k4GkEKJ9F1d+diqtbl8rDqSyuvK+sQdVjsDQhY62K94\n7mIJdbGHamQnhqq4NqOsC4YF+ZLXl/0qz2J5jmed7mfCsOMKdv9lQz1bsFUF\nWtWmKck/aV96aZ/vxJJ1riZ/6hSm9GNBMVWdHbkGZdP0/d93hNUByvOoFqIt\n9A5FBpUNnKCeEkzfRHPFffN3MxeuxoG9UpdEiXV8G425aNyAqtwAawPJ+YzC\n9hmY\r\n=g9hz\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","readme.md"],"gitHead":"38ece7438cd48d3e1c175b95939631bb835b5e59","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","ts-node":"^7.0.0","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.0.6_1532669235485_0.8475116802320717","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"sorted-btree","version":"1.1.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.1.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"bbb5cfd3f033be4237f745f4725247c8833e9172","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.1.0.tgz","fileCount":8,"integrity":"sha512-i5eIoO6LucziVb48kE7orwav4ca3Yp4zKyKHm1yNlXzYejJrHjmFS3wRIhBYe72wSU5qE5XEQg1Wm3fECKCddg==","signatures":[{"sig":"MEYCIQCPN9RDIFG7B3OXG9teuSpQS2wRsc/uJ6mX/szp3+K0+QIhAI64+Q0TY4fQqDW7DFPUDa9w4HXTEY6GV2Kc0L02kg5k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXgZMCRA9TVsSAnZWagAAJfMP/AnHlVckeXredIGhbm+R\n50D7kWGirvyz9mkZeUQZjZbMdt3RX9XbGgUcciXjE9xCItLKXMDJJToi2LwE\nrUZWSMxgq4ACdMbxXgQhQrUXy6ztdaYFz01yDg+FRbGbYH+U6iu2o11+Uk0T\nAWUTbRfn/EvxadXnpcz4Y226j5/fCwQ9PmmWaLaNLXJPQ/qBZKaoJaDmqjSu\np3OF+BRIHtmXfxq3896omkZNEm6f2MpPrDQWTTpTAj/yWO778pLsAYWBtbpO\n6edvN3o1II5CJTPmmHhUJyRM1PI84aI/8TlI20/9MXWDP++g5/79eWnX60cQ\n+Unh0PaVXjvUiqZti5o4FBF0ZS7IJilU49FlF0df2Hm0DwSd2jFFZCI16X6z\nMEOqRLEjJ1eAepGpaWkCtpLiDSSC+nW7uxGdMlL4OhCPTAUOFq0dqjZo56TR\n2C5xTugwLHlAkP6LUbCLH/8ZGMdgSRnE/5NaPF4Bre7BAPKiLGvoAOyaQV7S\nHPRtGXZWcOmYZumpm+nZAx3nWuHS/1GOwwZKDBS8soM8ijBn5M2t55gaGabD\nc3UiE4kdgYzm8RtbhRXl+yr1CcbpYTkF4SjiQWlvVmqM+QNOBNw89RpdnkAF\nFbmzC1Q9GziGob3sXk7v/fijKkdAHK/MEfPix/5WGSjqCIh926g0hWk7FXWr\nVwLq\r\n=6pJP\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","readme.md"],"gitHead":"226690c303b6792c34ae99360a190bb3135b5324","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","ts-node":"^7.0.0","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.1.0_1532888651921_0.26952251190206056","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"sorted-btree","version":"1.1.1","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.1.1","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"acedffbbd84f994d8dcd1453c5ae4be584d98dbf","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.1.1.tgz","fileCount":8,"integrity":"sha512-2MUwF25mYsU0dvMbhDgLUNDGxtHhuzdN3SxRSBmkW3Akts6hKomGqSxF0vGqS+czaokLJAu6pEM8nqrCj1okzg==","signatures":[{"sig":"MEUCIQDMfWCDbEykjJ4+YM1gtON+c6bFB59pqJstx/Ij6Po0ZgIgT3/OQAGFahrSfBC0nQV0W6wGUdWPfGM1aZ5u5gvpK98=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXjEFCRA9TVsSAnZWagAAlVEP/02izPDy7O7IXd+6Cr0J\nlRlGUjy6MN5bS4BIJvFjX/COQ3lLOg1fePwZPt8BQQZRGyb+zLa3mprgTDk+\n5iiU2gKdeabFm7mbIBgtJAeePfzJaalke1cSTXmwhzXbwlHfQf4olJ348/QH\n77qjHo3FBVlwL+LU6Dgepk0mplzzxWxlKsXLk/9zpTy1KwuEKMbhmm3/GngG\nctfpPxVmGfXcMMIVjOD72mAMT8YammEkIZJwc3y5i0JUqfpE56EBVVM7OkJl\npdejQ/PVXdaOhvi8nE7AopfFfDKjt7lwcf3s550LqQrG8b0tFwQwslB0yROz\nthoLQdvmLCNp1TS6Hm12Tdpg5FfRX7So27U2nlNVvMkJzEJDYQHsVbrxMu9X\nWRj+CRmkGunmWHep1TE8WmX363d1/KkefzTVQ6ZHB2Wgo6J7CE8ptIvNdkRo\nsGMGOO9IWAdqqQ5vRjHUND4cachIBqcRl72bMn6ab1n71oiMQwdfsFSQQg5C\nV2xmDSIq87NiB3cJcUli9n7PfqyiioTfBWaYv7yYFHLphSGoH+NJu7JZbT/y\ndAoxo5JwajA7fa64N1Nr/2DlhVOkoGmswjSqZ69ISntXCbTfhRDbKXJk/lcn\nJqtsOuNh7GJWpxAuvun+AlxkDphariLVF0ooJGjW7UcyIEI7Dth93pZNrOVn\nAv31\r\n=n+DG\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","readme.md"],"gitHead":"445e12eccf5d2eec40ca6f68266b97f0f0e602c9","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","ts-node":"^7.0.0","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.1.1_1532899589040_0.6106734111401142","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"sorted-btree","version":"1.1.2","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.1.2","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"849da3353b756f086d4345b0691af7e813afe635","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.1.2.tgz","fileCount":8,"integrity":"sha512-YotMYvROhMjj4EzVRcufRoMUEsgN8a9sXx/td9m/MbUocMf86utV6dXVdNUfW5RVjIF1uJA4w9WcrkMD859Evw==","signatures":[{"sig":"MEYCIQCiLTU5D9I3uhDga/tYisKQV5GWmJgTgX5xDGm3hgwifQIhAM/CJuh3aCV6TXrvwtdiGCH+PhDxAqbjQDAf/EBJPjLU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZhM6CRA9TVsSAnZWagAAI/sP/R/kXZwyqoqNJvXNZKSB\nStq8FcpZeDrnQtHYfTZeA3aDL3vuv4EeEG1CPSRrAO0zWmzQMam2MyZ2QebQ\npoI6yAex8YhD+ZU6dIUOH07o2KDyIDQnR2GjTWYdjq0SOF9yncNCsBEzTw0a\niVplDjf6yBEq8I2SpLzc5cuYLAii05jQiYokYiJTjZ25FA6stbcRa+IZxdxn\nAAJZZBMo3d6os0gAKv/2vWszT9007C38EvcW3y8B3+DyOXFIrIXSVpZel9jv\nVJqVLQDS8FrIBjtmDKvM0s0U8Fq/d0fve/u1woLOt/OhoVfXoaVXWj9hm7Oo\nsdCMxvw/WOj+iPjRYlD4D1oGzvkk8dvAnC7A2ErTa+MShSyt9Ll1Dz8N31xP\nNPYiDel1ZvxtePEjqv0l6l6h7fsaNHK+R/uZ7kQV24fiXW/Z2eDLpt7VZD8i\ni4fm1S3mF6WMmydYQzWeC2HlbxKjy0bIHEtzGjybN3jv9LknzoQ9q8UjmLqK\n3Q+S7gMHG6pO3Lbr1f9QzQlMaMfEJ2bjEYeNyUJPjEoTy4nef79Y1BGD5lFY\nAESRspeWG1Svs2gikdS4Iz/mFRKm7ZYcbGtlOwtW1DNaCPHZEJPrHwzW8ROa\nCcMiyOcxi00D5gVuahWNsU+Bxc1bwX8MiJcan24pPJargsx/8lyuKv++bpLV\nd7G6\r\n=hy0A\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","readme.md"],"gitHead":"30e6c40d5fd0f2c15697a8c8dae54f0fcb776077","scripts":{"test":"tsc && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","ts-node":"^7.0.0","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.1.2_1533416249503_0.5321135231865592","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"sorted-btree","version":"1.2.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.2.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"87324242e808727c4f79fc455a68c4344f30b52b","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.2.0.tgz","fileCount":9,"integrity":"sha512-Zb8va6RZ8lwqLsbDsiXqiuc1O/tqeuW6SXrHatVj+XhpltEwdB3cH6ojj+/eSbAQK/WpUMjxi6MMSTjjioCCKQ==","signatures":[{"sig":"MEQCIAW/DAXAml87Bgv7ptygcaAm4n0CUWnDDf3XWgrWx4CbAiBxyhYmBxH/MsnrmxP7elsRbVZ07Ss2vopVt+xBFjhdWg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZmtYCRA9TVsSAnZWagAAx5kP/0k5A9IKoex88SeNj6J6\niYdUmbVlNQ1N6O0cKkBmG/zqzKYdPbSGj9uLtatnL7+WdEu3+Itk0Ow2bNTB\n4HQAJdPkCAMoo1DJvIReqzMwg1IGFITpv/lgigZ3eEnM+UyPFEkFUAMFqKAY\nRlq5LeIyOoJ1aXVcK3zHwkjmor3pMgLi5WRx07A1kWLdMn+JMoRST3s3ktLb\nmNvZgNWxjYdPK2It38hhnctHx8WEwrrfCs+fqTxy8aVkB2y4rH92vBO3IrsN\nb6DHXPfsh9PhO3H5eXxIPGgOCa4f3kCanifQGbd2y1zPrL8S2FELvYAnnn25\np7Ymv6mL1yhZF71Wd5O3uAfFd1oxi94DVHObCEpm+E6CuPNZJcILpvJFSXOW\nck0ZI//u++zIGqq9vJieiXTWvBwF7VMrtZ6V9jxElYv0szgMVhJirUQKL+es\nIJki7aHJ+GYKauFRlDy+RkZcz2/xL+Id2KOY3OoX8INbPncpuYGLHsfIC8Ho\nnDDiotzomY08kNogSX3gD1/FnGKSlRWuqcNzqSJ5ckpgDn86C6QDs8F72n0t\nBIwILPoAgbfK3imbySFCeBSV0Ag8DJwbWl/2WcG8WauhHeAU2Vo2MhDJ/01+\nfWueQJ3YYc3a2UJzeL4JkHtdAsDQLMMNMu0T/8l464gxOPygAsByIxaXzVas\nx3Ap\r\n=DnXc\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","interfaces.d.ts","readme.md"],"gitHead":"7bca4f68c74d84bddf435f83be137dc818ce0ef7","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","ts-node":"^7.0.0","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.2.0_1533438807683_0.11406075404829519","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"sorted-btree","version":"1.2.1","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.2.1","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"3ee3fe2614fcaf427c88051a8de7a8581e846538","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.2.1.tgz","fileCount":9,"integrity":"sha512-RK3eLFfGMKil9CcNwTQasKabi6B+Pzb2ZawX5LW7uyZ6zfvII5LX2FY6ETicx5qZVxQTToy9fMcNRTqj7VEnKA==","signatures":[{"sig":"MEUCIQCESF6uO2tC2iKU4Wh/eo6iTuZ2tOVUlQ1Ri7e4S5JwjgIgY3cLsu3IBpvScAGhzxIFsSItoTeKGoUWGAncG85gfRA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbadkSCRA9TVsSAnZWagAAsGQP/0RddZjOG7rFKdfCXbyP\nU8YMQ+5wGHZmN8Rgd1ARwvmiMPDTqlbk6ZOrsa5ikIjYyGcrgsFAAEVk6A8U\nmozBfS9FqXnJIOvk3YMFK/ck90x/n/VDBRZh/hXsnAkDVfp5tJneGhPjQuPI\n+xFmJe+vUzTcrTa7SPjK5+2M6RLTzvg2R7vj21ZBHy2TSjnmM7guPV9R5Ymd\nFOqItTDsHYb76yk2rmaKcr/w1lKsssSmzjy9Qt3yeIr6ihQiw1ExlUktsjyI\nrBbZOxVtxHa7aFVsu5csIenxOSAJm5ZyHPXxCgNq3Fu/Gy5D5afZhXPMVyfF\nzVLbZ+Z++JygVeWZXhKx8b/pv+Pwbqsr+/VR1ypZFI4ea7vHAvjIqntfNC+o\nw4gRBvciG+C1kjbcH2Gwoavsu/FP8MXlLrXikSYp1uu8mIviQK1rOcNbB/FL\nbtE6dBNSCD38iS4r+/QvWlIsB5Gb3QqkbgV0zevE2eiBk/KGF0r/XH5DpotG\nsO5NcgxQRvw2Ah3wvi82oQkw+FwPkWDMTmEIzKXm5ne/HZtjR4WjG1h8UqTa\nzRS+yFMqO6IPmy0mmTMREPC04W6d+TF68Juf8H3x8aPE2W0OiSq10lZ/a9cm\n3Ic/jCQtKsW8TnfT88AsHwf97TRCWnm5/BD6QJAb52blRwg0q/ngXM1684rd\nvA9i\r\n=TrVn\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","files":["b+tree.js","b+tree.d.ts","b+tree.min.js","sorted-array.js","sorted-array.d.ts","interfaces.d.ts","readme.md"],"gitHead":"2b7f9a1b4a7239b3b1754ff77e07d0d7070c2e08","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree.min|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.1.0","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"10.4.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","ts-node":"^7.0.0","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.2.1_1533663506480_0.045736616825023946","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"sorted-btree","version":"1.2.2","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.2.2","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"89bf5aa9092442d219307f23b47e99b3a8907b63","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.2.2.tgz","fileCount":9,"integrity":"sha512-7hj37niHc/jgG4FJD0Aq4CzDLZx2Hn62PNve+Q2z+t3j4cKtmeRHrWTd7hTJ9AX5vY1SWpFNdWACJzsrcD5tEg==","signatures":[{"sig":"MEUCIQCGu4WSMYV+BxUVk7ghESZ8bH51aaxMPJrTT+0eXwv4uwIgNHbeHedalQLx9Je5NLIoT0Yioi76U1fvg/eEQSqngkI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRcmYCRA9TVsSAnZWagAAM1oQAJjIp4jukXPfHnSQoAGc\nF9bi4i7iXY4tyJXUmcbySPf7VLRaAPqdSRaGtVWFHOj/3lHbLgxTgsI3u1qS\ns+VLUFtygpA7FY6NJfp58SJSU0elugqPQOkOezaKCDnncgzSPOghShBGPkRY\ncApLYBJJTOL0IXpgWmEYG+aY8b2D8YG9hXW84s5nhOfOmBxjAxw0ZOaSWrzv\nvpdNTmT+6+nsLp61dM5Q78FxF/bav7T9M9YSzw8wCx/ljX/YuoyfMSSX3eqx\n2NRx6jHnHvKJrQfWtxfAgnWKMJ0JwPLV+pmkUovpFXxbn9jqlmctItXp/hbY\nC4VgWgl4SrcHTMyKWTLxHJxxuFcHaNm23x6XqZz6XIQSXqpAOOOJ8aDUn4a7\nA9oLIHEuWeWT5TtFTszyCCLmNOMLxohNRqYer0tXzs3+8jOcbIJVoBikpS2X\nlgpsL6jpc1BJxGod0I99aN5mu61kcJweBiyP61EZQSl0j+wQ4e+d40WSCVbq\nQVfGjQOixo9MbAbYIxNH1yxazAnbjWx4yhe8UumrmjiF5tfBrXNcS+uGwNco\nv+DQSu5Ri46NGt2m2L2yOEjp30HTjnyYN/DyEJIC5jYKG3inUAP4HGenZngh\n3BFCOT2nc95/tt1GBw0MYd/7Yd/b2nUCQZCXbBIxFLEcotZUJJN9rxmL5yiy\nrbBQ\r\n=HJr7\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"900b006ada00b78e448f893bca29c6d6f3d1c2c9","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.14.4","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"12.16.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","ts-jest":"^22.4.6","ts-node":"^7.0.0","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.5.3","collections":"^5.1.5","testpack-cli":"^1.1.2","@types/jasmine":"^2.8.8","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.0","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.2.2_1598409111647_0.7197352673914428","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"sorted-btree","version":"1.2.3","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.2.3","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"7006849481c1f6338030bf8d77d6309016784459","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.2.3.tgz","fileCount":9,"integrity":"sha512-EmpFv26K46yv/VWpG0eOTWUxxbkVrk/a1WinnLCI+wsSDROvX1ExTGDyjGjjca23DTb4p9mc+yr8urL8h2DRNQ==","signatures":[{"sig":"MEQCIGhY6mjklo2sQSoA2L7zLlQS+3nDGHeTdTude35dYoPtAiBXAbJokg6iOMBCjwanNs5CYJGpsVBSVioVVFJZ0VUB5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRnFxCRA9TVsSAnZWagAAhF0P/RJPz0VLe8BqpyY1vt0u\nbT/g/ALb+g2GgEcyaFHcZfLyoNVYEp2m5LB1Bax4gPBstMj0QHS+UiVd+sVV\n7f357OI8I3ye5SDXpDywyUvJ3UV41P5PDi8uPGK7qcu6E33zaLoJGVVBTtmm\npcPQ/jx4RhVMjtGzFV2KzR8w+dcpdsKMMsDmodmDiUvrKGzr0h8ov95imB34\nVESFLVhGMp7/M/hSX7jGYf8wKU7aWp0uY5ILADHjVDsR+fYlC/D4wCO6Hgjx\njkwmPkVYOfiFTS+BOUt5kH+yM/F9CE5yUdaJEQZz3zgEznfWtn6j+WSutaUq\nOFF1fvRsFktQ6ZKL4XEpF+nwATpbfP9R5ZPdntjBrGCy27cZyNtpSwW3kYfm\nw25abYu01sh8ZJREf75iZ/95cliyo+1nhcEwkyvLqIfDPCLrZmLUG0sSk6Ff\nA1jP00CzYzYFPPjvLd4QTnIpK/oSXFmdSUweNOhGnCxtbNAMohZTmLJE5/UK\ntnadPFiPf/RrUszu1Na4paizllaaubrs5zXBYNbONv0IC/XXYMv+GYWF3FSF\nvud1Hou1aMEkNV+rk8izZoW/t9uhLPAfUIE+9OhjYU0cjPR0BcA0O3V66R2m\nFVTjBPde1Fj1w0UgEXdJjrXZxp+K0sOp3Qp9MzLntHQczIjyTCn41YAnvoBQ\n3b3d\r\n=/BnA\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"5c8e5700f269652687339fecad9d355fef0ffed1","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.14.4","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"12.16.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.6.0","ts-jest":"^22.4.6","ts-node":"^7.0.1","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/jasmine":"^2.8.17","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.2.3_1598452080615_0.7434436096359862","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"sorted-btree","version":"1.2.4","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.2.4","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"df91250ae1dd552d07353870747c3893f75317ac","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.2.4.tgz","fileCount":9,"integrity":"sha512-Z3IzxHb1aBh7cAD5EKeWCHUGWd7ss9CNJm6M5ChcF3U4JDvvfZbdDjEvV9uKjoremfqoYO4GriaSEp569btQWA==","signatures":[{"sig":"MEUCIQCtc6PZAfBI87LYnfAVH198ufVW2e+m+lU42SYoyJSGLQIgZoWSJWURIi62eZP2RCoaSFyXoqW960AmdlLdpQpuzRA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkJLsCRA9TVsSAnZWagAAqIsQAITEc/m/HyLbgvnbG9r6\nl/SeVjyP+WihHg+D/jJFMO61QayksxKZp7Z6TIkzd7TmCCaoPWpplxJC52XA\ngizNpZLtsnwSGk3BjpAy/OJxVZm91bzZyxIVrS7p7kQKBJz40JmTke9WoOrf\nI/goH0fQjsZa0YS5lHR7QGEFPUOwlvV/IoDNM8aDR6bKsWHzAOst2GxK/x0U\nZqC2bDKW61OA7uanBjLW6Zyqr3lTju5zBjFHhUEn0800pqfGKY5OkLt4fev8\n9pq49Y8XvnIDfGZrgSXO+Ag54IYN80+0SIp5kTzf6RN/M2E6yFRJEpdugIam\nEdi31e/Tz9Y3WOuD26YJI71MOumlPHUx0mhV6pwLTlNmtOfFQuqxOaESnQTi\nEWs3wYrqwGC0CvdIqAXV16LAu7288/1960OKabHkzbzYpVpPBXRw1vcHH7w6\nh9sE0kpzfk1ueQWSqnWYUoYbPvhKtOf08l+udJcnC1YRwl7FYYvTHaRg5ryT\n60qHrULl5egVpYujaYTLyeaNm/oYPm+Iiw6D4vkbsJwttwz3MkfeFNt61zCx\nizjpF0ZiArkj568SvUwMyzyMAwAcwo/1r2aYhWEO/DtWwYnd7vZvW8pFlqy7\nGq1ijXVbYFaMcb3cnUJUXVj3Je/MHDsIgQ5vkK/v7tQLmLfl1B8tDTjo3oBR\nIl9o\r\n=cbnp\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"5c8e5700f269652687339fecad9d355fef0ffed1","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.14.4","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"12.16.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.6.0","ts-jest":"^22.4.6","ts-node":"^7.0.1","bintrees":"^1.0.2","uglifyjs":"^2.4.11","babel-core":"^6.26.3","typescript":"^2.9.2","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/jasmine":"^2.8.17","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.2.4_1603310315396_0.6080329880535802","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"sorted-btree","version":"1.3.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.3.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"7814645e93925858d33801efcca026952b26532f","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.3.0.tgz","fileCount":9,"integrity":"sha512-Z9qRHy3hBp8ORCVArEqTXBB9vIs2hMlu5rVzaEVXjfumLvOHOSqn3v3wIoi1kWf5RCVt4dlxjuXRD1PLleMO0A==","signatures":[{"sig":"MEUCIGLAlufwVNuG+3BAoUiSRLPcGPAsGU6XsoFNDVEDMMmPAiEAqR+w9PvR4Pp7YXdJEdZXlgMiTmcq7K6+E447GQlSYpQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoD1SCRA9TVsSAnZWagAAntoP/iWJ8+40EZjBBfKWPB0R\nW0oMCJ72U79mMfxSMzQv8TpC6V/3FRLv6Mdln0rqObjCPfJwD3x2HZnSczOT\ndluxp77D8kHrxpPDEbYBH+oTPq9o5UqtWNAn2y29SnKeYGOJ3BFbgdFQWIsm\njhx4BbWElUSzqo7P1LJxOl84qZyG/yAKRzF1s5+Kp4B2o/jI/yGIyWwE2vw4\nSH9PQLQvH9QnoNaHHlZjT0N/Fwu96a2oBTRAcVdebxzvxh083NTiGu0Wz2vB\nohlO5BGbsow09GDEYX9jQRUJizCYxjVivh9DUei3vkw2jx3JNZJ65KSLuowd\nfja0TzbOa6I+onb+VuBVvEy+9h65/RfhAFHz6H3qywMK8LSrSMyRKS+8oT4w\nNeoqAXIsiWUFXjwpwibkNCky0YyblapcOyUPFJjX4GPJu0lbKIAO1u6IX2Ld\nv0RUEUSuGYIzXsAh7DgTGYFBMXlJVLkBAjn17rHSZmx9D9K2SjneMK5g9tY9\nILRSMltO1VPM+uAJLPawtnZGzOg20oG4leD1AAVOho4a5NI1U/7vMJJVZIXd\nS/wyR2nVL369LaPJJGLwQOOhH9h/scbqdg9MtgNeMUj638lGJMbFeM5bzQp/\noO3OI1vyKjdZYVk1V+jLc8xv20JftA/bk/czyc/6o9qk4Dy6g5iytEFlcCY3\ndzhx\r\n=SahC\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"0f8dcc4d7c012efde53c29bcb59226674e08a0ac","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.14.4","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"12.16.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^3.8.3","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.3.0_1604336977760_0.6625095999791419","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"sorted-btree","version":"1.4.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.4.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"cfc2785c25d038d75bec08e4f5a6c21eef09f8dc","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.4.0.tgz","fileCount":9,"integrity":"sha512-SqT/kawJE45AWiBuIpzfXNwFSYgWTFpduekFKnpE3JVb1JkldV3TziQF9gAAMcmXasZ/SYB3ZEs6u+IY5o9hiQ==","signatures":[{"sig":"MEUCIQDPZTu+R+W7tQCNKw4N22Y6Bs7tu0sdL6EgjAXPZqljPAIgWg1HT79pYE8lW6QHUcyxT3xo8QwTQYw9e0HHiJZDz2M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoILzCRA9TVsSAnZWagAAliwP/iUa4DBMAGrOlO8n8+fQ\n4IYbczyxGqNDCVdLjihFbKTVcjsnpSstEbkGtm+thDFVWubhrEidEC7t66TW\nqknIZU+9MdM45CIEe9UkFDNhcEEOnme86bwZoc+UIJZaHJb/h25WFc3Ecx3Q\n1B+gFT/hG0W25c8DhFBjp48oZgkHPyLftOwAraZhqbdhjdXsGlAnvciIv3iQ\nPTCph+jWzC/Jq5qhSgUr4dYWK1mC0vjWxsAFYQ8fCf+FEOwVqNAz78xL68zn\nAY9nMbBqhhIGKKZUd/fFMZDCvTNpLEMG93YKAxUlBE1Pc6MY/oo7yWHsEaG0\nf/79BDMAKb/4VM2bkXXVCJgt+OkQ6Hjr6vjeZotK4ra+V1NEZOt+cJGAC+4t\nh0Is8g/JpNoiSGw9+kTrYIUhWL3U/XQUxXVrzY3R8Xf1c0zwakZZ5lY0x/3a\niXkZ71ekFP1qbeLLErkNlEu6wAdKVySQAP3MZzBw+Y+Nu3XelGWtoSJ2tdfc\nr5Er5vxCYeLQAXvKrHKniVJcQwYffzb9YnrR6JzuatKWTBXbT+prXp40EfMq\nIloeEpodhpKUEd8Ok1GD8pUoGXcSENG7LB6g4HdNmDgH/tNYMxwHQR2OfvtZ\nm4wcKhW0Fex9Lzhkg/GhcQiyy2xJSVjvtTyk5VEoIC8Wt961ntCmMjdwDVO1\nlFyq\r\n=iQvy\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"0f8dcc4d7c012efde53c29bcb59226674e08a0ac","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.14.4","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"12.16.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^3.8.3","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.4.0_1604354802742_0.7130476778021888","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"sorted-btree","version":"1.5.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.5.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"57b621c10e124c34122c6c156becda0e4731b19f","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.5.0.tgz","fileCount":9,"integrity":"sha512-1KzY80r3VpwGLGN/9oWjReUml3czxKfLz4iMV8Ro9KAHCg9xt0HwTkcb20JR+sHCiR5WUJ6uMAbe/HB3gy1qYA==","signatures":[{"sig":"MEQCIB/i/jhoSQPgC4Ku31V38CDAaPaq7wJonSoFYAwN3CbNAiBWy1kqf7J0dGKdqVewqh1K50h8DzyykzlozD2tnU4AUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjKOqCRA9TVsSAnZWagAAkzUP/RzuUzU2TnQwSd3sZff6\nRJ/5+0Nin4sciaGbWDd3Ulrw4aYROTDFTgh4B1zDIvT1tO0JYvWalAyLxyGJ\nKjkBy/YzleYxQpZ/CWJibdMdDUZ92pwPCpmfRmLoRq8t6HG6tfJcWZlEx5UB\nTdGGDwS4F1uahGzR4TfcSL7+KHIC6/42xZ6X3gM/BXUKPLR4ndsowXEBto1K\n/6zJuXd54gEgsxC7VICZ+s7Rzf+SpjTy+3WzqTNI0DvjdbBobf6Yzw4k5VLE\nf76VsNJGEtZVbkWy+TSXUyGOULLyX3fxHTS6XU48tCg0w2U+O9GWNhDrbQqS\n5h0tkZ7/xo8Fn/es80lM3FQ3BP+4/0bnS4yAmUCCxkvKk83HaQLedhhPdCky\nMJqupUhd9bfG/df9BYKbA7GTHpR6HZpgefPcyxe0qmeQfgn6c3/3C2d7jZpP\nZreTcikTSf6lGVh6vMyg1Y0XxB72jnUdh8EYxp5sCRhhiWt6M0X9pnwVigly\no38I8BH23A3hgrd/yqiW57m2zPTVEDE9ugUCg6u8uSwnocv4yH/P0ip7pQ7Q\nh1vr6WXShg8kOXIyjv2hayLMSQHmYrL+gaZcvmcezC8U0bO2V31egKKAagF2\nRsuQOd4U7yIzhiPHqAGZ840SmS5anrCtZh28L1zDx7KEHv//Wh8cBgJLn1y7\nKoyr\r\n=qF3m\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"fb31d70600668324811d1739f05d09b847872967","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest","typescript"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.14.12","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"14.16.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^3.8.3","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.5.0_1619829673654_0.327680771013088","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"sorted-btree","version":"1.6.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.6.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"b37994211ed58e4014ce7ca1e3f6b6caba954f7a","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.6.0.tgz","fileCount":9,"integrity":"sha512-1GB1zaxtugp75RYiVN2YunIiKBjKh8W0mod5g16MgWRBSC8bv+sVl0KOCDTR/pdEghJq+zJlO/28Kk4IgI1RLA==","signatures":[{"sig":"MEQCIHC0NBOmbQeUhq1QOTJsdVEQnZjfCDfkuJROt2J7fdTzAiAh5KzDN0sOsh9jO4FyxRb5CqUp3zSbnCWxFCX3EvzMSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhK9VnCRA9TVsSAnZWagAAhc0QAJFUaxHcCJwMSg7Ap7wE\n1wB2p8pAHplanXCke1TXrUMBgT9Treyu3gmi9sY1sDRyz9Y+OJAibiP/ROx6\nckZ4LsYLRWV6RFIifNipq78mVnC4MjDKiRaRbc62l/SFBqkRAgA7TUpsEIGE\ng7uGxWwFuUg+RW1ED2GlR1hEbLoTBg/nNZ9ExSd9x0eORf83WQ96CNaUV7dx\nn+Clc/5T7WCnK4Z4Dxf72GMMzBFudrrEYZ9NICnJVauyxW2VP987bT+39Xlz\nA20GqgDCdFefJi6mjbySi+UlRlZGUtvtLQuN509T+AuNQm4uMBTW6MUs8V/l\n3TRFbzcHbJTPKy2iJIy9dwDFbAa1haknN8OkKk+BHSXgDy/D9Qk0AIB7aOIF\nskTCQj1y8SOjfQZrhtKnCuEgTJ7jC6fHapcXqy+N4i+0aAd3pRG1qwo8XRlD\nLXxqkO2qKu4tn/P7cQE93JDGKm0E+Ri3aOyUTMu8d1Ke3PF+OLRg1g8++L8q\nG/GuEkbE+u2CQh1HY/o95xi5QWc1ocXvEDN0C7FUX9PiPNlBQ9DwF0wYHy25\nDy4xH1Sfuo1gKG2wqh6xxvzVryEXxsK0p6KPnhARIZjiSuy+bbakk+5buCvA\nqn1Q2wclz3xBYzdNQ2j1f6YUqzCsUCf663N/MKFJPnnmmWX2GR3MN/j3G882\n24Pu\r\n=sL+W\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"7cebbb101adca30a584ec8417d293f852cf27ffe","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"6.14.14","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"12.22.5","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^3.8.3","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.6.0_1630262631586_0.9918103107043186","host":"s3://npm-registry-packages"}},"1.6.1":{"name":"sorted-btree","version":"1.6.1","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.6.1","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"ed6a8d2e6ed32521203f9278304c8cccbb4a3240","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.6.1.tgz","fileCount":9,"integrity":"sha512-ArjVZ2oZJ2o6e1rofnFNexboY4Yy7CulhycW8QWPq5tq2bFIpmQJ3rLTjiuQmQq5h3yZzcrbcGYrUPhkYTWyEQ==","signatures":[{"sig":"MEUCIAYS7byfY+8ZW03si/6CqnFdDSmsCVP42o4tddH52khpAiEA/fNrFZ7H66KfqZ9NW3wmpjWPmm8tbRRIb8Kjhdy+XQQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":181034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHl/RACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqeYQ/+L791m+tgBMjFHpxdx/yJTe1e5Q/C7bSqMzrr87TcBsjY7zpi\r\nXdXuVENTaNQKK381573xLZj2W7HVCgor4zQOjPxPTRJEiK6Yeuj3fj2pyfTs\r\nvO0eiU9QA0so1+ri3zEiutkQFf4Eomiqyd2QEtz0RGVpe02s0sJ9lxSjvwoy\r\nJjNPb0YcT12ZU7zZsSBDU2fO4SuZg0LcFx5VfCYNe5aKo62VpDvobb8cDxoJ\r\n7Kc8/RHKWS41hoPaFh85aHTsB+VvvF59Fo8mnQuYhxQrIGGHHEdJui5OqWVP\r\nWjmq9CvK7hPxCCbsenxZelvJtohwKM9L4OjYevTlY0fbC0CN5VCsVh5Zbkw3\r\nlQJ5oQTnRxCr7I/ipD/WbRNSOnnnzcWc+p+eVYFxrCtGqpT4FssUp20k5rrp\r\niBjR2Y6oR2ANNREWm4Nb1zIAkxZwXb8+vcwdIMwlqFUIwh0nfm/hVZmanAYz\r\nESKO0aO75+SHP1Z0UPzZ7YpTGqvbWEswCQRyI8sMneavc7S1ofBv1GEghAhj\r\nn9IE+ihpEzynS9rGErxJ3Y4ewbX3I7bi2R77MFwgTCGcS//qtH6COoTqJElG\r\ncMpNoPcqIRcxum1KjzHuh2iKgfgyd4fYTcF4G/fj7m26uiSRh/vF6MKnXUH0\r\ndSHODRxTwUbjZ4yUAZ9OOv52GqbLGmvskTQ=\r\n=ulYx\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"2a7c8d47280764a7f88dc674c8f09d13f2ccc3c6","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"8.3.1","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"16.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^4.0.8","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.6.1_1646157776933_0.14337200369358571","host":"s3://npm-registry-packages"}},"1.6.2":{"name":"sorted-btree","version":"1.6.2","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.6.2","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"957ab81774fc2efb8da0cfc622ac9b481e42b5d2","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.6.2.tgz","fileCount":9,"integrity":"sha512-/EEt4rmULVz+Tw9iAUo0LKaSnEPP/bOojgXu8aaXNGkff+VvPWTmwS5ClArI26WlfoPWbyKi3N+wYLZN5wOtHw==","signatures":[{"sig":"MEQCIFAgbfqQ/sTz/3zyV5+10fMduaGqFrrfv5rTlRvAXG1jAiAYL7dZl4OJOvBaPeK/tRwzY96qHjAfVd9QIguzhyV0/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJ8IoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUqBAAnpyStUNQ33Wgc16iFCyk4Nny7l2+d+oCSAL/3u8naJt5WjgN\r\n6JtC5MvLeZ8S3szX40vk5otAp5jwWJjjSvhUaB5SNdjHxjK18SXPY7nekLak\r\nc0abmJmUCjdwwNic5I8UizeEcxf6V8+kruRuW6A2zepnG+4AUu+aI3QFP9Ed\r\n8xPdO74ambhzvPakDaASBRcdGd7zQ3XR5VHz0kpRzMTAuo8U2e+Kew/pIsRV\r\nHcWmlB+prQvv3j9hxmHYxCighUvgy1F2SUhluGNh8v8sTcVkK+aFX8EtTAva\r\nk+QhpCROU8s6ON6hUDDyNoJxx5hRXMWhoTrPM0KEFT00A5SmwcTRclPfiOvH\r\nA+YUuhkXqviGZ2dVFOqCdNgHLQSy7RPHMWJ2hvhT+2Z+H30OTp6VSyCxMOQ5\r\nYctV/fhAMlFG267gp+Kfk+PvdDvatiwS7yKMdsp+F105X9ZVPHojAPbOmzcR\r\nWHlJlAUZ2G31pmwGcR1Xa6vij7LAQ/S/IdeJ2p8YZjRes3QZ+ctwgF7gwVoj\r\nkm11VZn2CLr6L5yJxoLLOx3dzT2SqopPVvtAYeohddRYp5X7zjmNveD7Wawl\r\nvN7wNQKLp9zRBfztVsbowPVCuOn0C2PCKTeIQbhM7sO5uzlcCfAF0AHHOzUT\r\n1BVBi6inoboyTKKtQBF/TgMhkP1cnvkzgsc=\r\n=FDjK\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"1ef4f4a2ad24ede0cbb8a22f0d43a10efe7b51cd","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"8.3.1","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"16.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^4.0.8","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.6.2_1646772776278_0.5714542891962562","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"sorted-btree","version":"1.7.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.7.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"ba2e46560e32b8e55e032f1af5488dc4b80989f0","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.7.0.tgz","fileCount":9,"integrity":"sha512-vg9J5dn0fH8pCEDYNQ8d597sT0sTpHOJtqZ5Z0i2Q5t7Jc9dgaEDuK2+OeRj6nZasjG/h/yHdU6oVBowUQRePA==","signatures":[{"sig":"MEUCIF9LE5OmyneYfoh4Pyo7KllKk4HfX2ycyYhEQ9sAmTeFAiEAuvBsYiZA+wG7AxXIbLm6fNNHJqigdhnxX1O1ZgwBvFA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKDWvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRkA//XROplctqH7ZBPEy6/t1zr2xCqfSolYw9kJfbSyQj3TgWEnlX\r\nxKbaYEKadeGsJn2SfdFbCA08ZGvjhqknhcM9xjIAzuC1kZZSYE9RIiDK4r3S\r\nwIW/9pV+6xwn3mCxuptD8SPsCFAAgHQj57FNe/uIrPkW4cx25fYm5hEbBdOI\r\nOeaFg2T/JLYklgwGydn7qBhVZfs4yGjusA2dbLv704jNHAKPjPLQZUZDFAFX\r\nWiyT9TCWGGh60oA6fjYtPVpJT/YuwOOXnONsola5592f1FFoK1+TP2YX+LAK\r\nPkcQPVUNSQadVm1bSQc0IQ++7rR/BlIGxxujgm0OcMuD52yyQr58SlTE+ADG\r\nBgIRH9eDGE9r+dqXOZ+SUnEusyGqHqaDd+uvYwt/5oUy+UMr2YYquNQzIGQb\r\nlZpJbmLxosuigw3P2tGqwLEvhrfIc52OH4SQzhI6Cw9nqIJE6qUPaSVOVxeP\r\nrg3xzcICgJi0vns6CqPoVH/nEmNYdkr47otcupGvDTKziXwI0T5dT5y5o0AB\r\nBOKqn5rAhNwAQdYr1kKvNmfnOCmhrHUASj3DmbCAJl0HH9KMFjQ4w0033DML\r\nV+hedryUO/2DWCTBwuV6EFwvrgY5hMzpcBiRPJte87Xl3+s/qOSHCX9TxxHe\r\nyVYtjSBj/w8I0LxlST3ADlzqGeMQ4EAYvKA=\r\n=MTe0\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"0e53cd29df103facd5fa01c86bcdbe1b703da39e","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"8.3.1","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"16.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^4.0.8","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.7.0_1646802351366_0.5458471635628515","host":"s3://npm-registry-packages"}},"1.8.0":{"name":"sorted-btree","version":"1.8.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.8.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"3fe8ceeb3882b6cdbe27f66fa9640aac91459dd6","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.8.0.tgz","fileCount":9,"integrity":"sha512-AbLHqsE2CStFKk3e6T7jf0ZRg1GXb9km6urm8jFO2XDbC1KXV6pM8s91vz2VzFA241Pmz6p3OG5LP1p9hmpJ/A==","signatures":[{"sig":"MEUCIQCNSH5+tDUQEwBv1zK/lQr5HUkgU7mSm4ulrYF/3+8EUwIgW0dxYBRawbFu3hnZu/dXMFWiNaSZjufBrIYKgQuJFCQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPQNuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpR7A/6A3VT9vwFIJIlRF/hU0qkGI8W4U7yHgLPg9JVJ2nwG5B1qIxG\r\nSJqttYclb5oc/ZjECIYe/0yBa7L8CcUcXg4IEs+aGOObgeFflBPsOvD+q0Me\r\nSXqzC0VBAB7W6Qxg8dpDlRMvs+vcKLYqfW2gu0Yc4hcfTko2Yp8BG2buuvPl\r\n0M1+exsE3ZOmX3UqVFYQt9k9vxO4rlxdc9496oJqynp/jqDosyTgRbYC7BXr\r\nLbkUb4b3EaKms+m1aJEHZMVvaAwym7tSemf8VV3sBCUtBG4L4Bt06KflG82+\r\nHKemCRuBxY8IoFdbGd3DgOr1dngGVOGvs4LIRYSf+hDO20UYxx1BD89nk+dp\r\nfD3PzY1c7P3v1XXFcc2nCUy98huIFs6y/H0J6HJHmNchRo3KG3blSFcyViFx\r\n2Yjs+MgUwoI5s7sxHZEc7uoLch1gx2KoX0AZcsxG+OOBVmd+oz9xBoxPLMht\r\nh2RmAc8mJUbKQeCgAZIuglaGUhjMFsjO+KzrOOu8h72Tjog7NckjlFiLNJBI\r\nGbWeyPO8D8sGcN97/6Por1tCW6zI3kpCge1Gy5nvH1WuR7drSngvbUlMxWEJ\r\nUJWtLVkUG3hYg5rrxfNLXKgiyYrAVz4IMY9jCJpGW72OCQeYBZvVc0cERWCx\r\ndXrg7eqOrDmQMugxQuNFssKhKa3sryzDP4M=\r\n=db3f\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"e54ffd3c042fd066be55262751691b271413794c","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"8.3.1","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"16.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^4.0.8","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.8.0_1648165742438_0.3470783053088584","host":"s3://npm-registry-packages"}},"1.8.1":{"name":"sorted-btree","version":"1.8.1","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@1.8.1","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"6e6275f7955e5892bb8737149cbe495be10f426f","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.8.1.tgz","fileCount":9,"integrity":"sha512-395+XIP+wqNn3USkFSrNz7G3Ss/MXlZEqesxvzCRFwL14h6e8LukDHdLBePn5pwbm5OQ9vGu8mDyz2lLDIqamQ==","signatures":[{"sig":"MEUCIQCwkzWQhn3mpSBsqaWv60JOBw+KC+3vDv+VVUcVjWVRbQIga8IeBUowsbSEQN+tHYyoWtA99zW+LncKmvPwnqpuKLo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjP2phACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrpuw//Qd4BeGFYgTtVL5iU61la3cmU/HQ/GNGMADSjhy1Ipmtchh4e\r\nKYT1z1OvLuc4CmcQw6h6/76mFazWsiJub7hYf9bRr//sXgDLsYSayYrt3i7E\r\nl9E0EFZvJQNQlfYSt0HU0DppDua750WhJGEW5OTseXS64uZpAyTEeglGvQ1I\r\nEwT7pj8JEFOuThBrU1P3P4ywQeFl9KniKT/0IciD6kAUy2Y5pIBWep/U5vSs\r\ni0cWRNRBst3Q8K3gkgU3HffP+7gtMba7JqHGb4FkXyBxuKhl51iRj+l6C8uX\r\nIHGDi2hGTqzmFQtD2LGHzir1cZkihWR/6BwJE2+aTGb/hQQ2VHoaZSeSK6mn\r\n9LHKXuYWvYARNbVRvN2aFiXZHPsAiDrGwGuNRbo9SpOYw7FYO1OkhwlCISnI\r\njhbNNe3pEtA5XdaYqcXqADadAW0KPBogkufSN2SGH3xAdICxbOd3M1e3wmjc\r\ngrY2KwogsRrHn6TFocNLkHLHfT8r+nVRg/XYsCka7OSzz4Sf+8Nj3CalVCUO\r\nHn6CYKVFFwyuECFjOjX8tVAjyeTdnpgQPHRic5EU70ZDqNaNRAt/MCSDSB+f\r\ndU0CTCoRkwCdVMulDgsVcR51QX0rE9Id9dfNhs/zv1X9kmFgFa9o+Y2s0oZc\r\nXL6Ar7QdFNbuTK9tZhZUXNHiIXt6QSH82PA=\r\n=b8fZ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"e54ffd3c042fd066be55262751691b271413794c","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","minify":"uglifyjs -cm -o b+tree.min.js -- b+tree.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"8.3.1","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"_nodeVersion":"16.14.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^4.0.8","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_1.8.1_1665100385395_0.7670968178948547","host":"s3://npm-registry-packages"}},"2.0.0-alpha.0":{"name":"sorted-btree","version":"2.0.0-alpha.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@2.0.0-alpha.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"8669efd785d4ab80097902b2943af4083e5b9ef2","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-2.0.0-alpha.0.tgz","fileCount":18,"integrity":"sha512-5vENrSvpho3IDbvGnKBP8Wz/QfQc/BgMC3pkafYIM38EylnkaZD4cpVmSKbn38lzk3E8bXb+57ZKdlzUUX36DQ==","signatures":[{"sig":"MEUCIAM2IH1CKoOFDz56PuQxxRVlaTHW0EQjPeOVaOFoQ6CYAiEAmmZxmzFoGMwtDRsoRrzwXCrPaSprL1SDtrRpXlMQYT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194018},"jest":{"bail":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"52893ae0f207c835388a0f6e6d1033c0bf44d9ce","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","sizes":"npm run build && node scripts/size-report.js","minify":"node scripts/minify.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|./b\\+tree|$P/b+tree|","|..?|$P|","|..?([/\\\\].*)|$P$1|"],"replace-import//":"// Use the minified version in .testpack"},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"10.2.4","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"sideEffects":false,"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^4.0.8","@types/node":"^10.17.28","collections":"^5.1.11","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_2.0.0-alpha.0_1762907318420_0.0012722385352503807","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"sorted-btree","version":"2.1.0","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"author":{"name":"David Piepgrass"},"license":"MIT","_id":"sorted-btree@2.1.0","maintainers":[{"name":"qwertie","email":"qwertie256@gmail.com"}],"homepage":"https://github.com/qwertie/btree-typescript#readme","bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"dist":{"shasum":"90f4d7d5411f21d092035b836d8c260e3e70042e","tarball":"https://registry.npmjs.org/sorted-btree/-/sorted-btree-2.1.0.tgz","fileCount":42,"integrity":"sha512-AtYXy3lL+5jrATpbymC2bM8anN/3maLkmVCd94MzypnKjokfCid/zeS3rvXedv7W6ffSfqKIGdz3UaJPWRBZ0g==","signatures":[{"sig":"MEQCIEVZiHDG5I6jlsMSoudqOlOWuEyvnoqP6/sPAhza+bK0AiB+H+Xth9YGbyZ+nbTaHKGfdgsJCAwjAb13jJ1w+nye1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329248},"jest":{"bail":false,"globals":{"ts-jest":{"diagnostics":{"//":"There are errors accessing internal symbols during safePublish; treat them as warnings","warnOnly":true}}},"verbose":true,"testRegex":"(/tests/.*|(\\.|/)test)\\.(jsx?|tsx?)$","transform":{"^.+\\.tsx?$":"ts-jest"},"testEnvironment":"node","moduleFileExtensions":["ts","tsx","js","jsx","json"],"testPathIgnorePatterns":["<rootDir>.*nontest.*","<rootDir>/.testpack"]},"main":"b+tree.js","gitHead":"491067c0ccc47d852f8ff99f1d924118ab3c4a3c","scripts":{"test":"tsc && echo //ts-jest-issue-657 >interfaces.js && jest","build":"tsc && npm run minify","sizes":"npm run build && node scripts/size-report.js","minify":"node scripts/minify.js","prepare":"npm run build","benchmark":"npm run build && node benchmarks.js","safePublish":"npm run build && testpack && npm publish"},"typings":"b+tree","_npmUser":{"name":"qwertie","email":"qwertie256@gmail.com"},"testpack":{"dirty":true,"rmdir":true,"install":["ts-jest@26.4.3","typescript@3.8.3"],"verbose":true,"packagejson":{"scripts":{"test":"echo //for ts-jest bug #618 > workaround.ts && jest"}},"test-folder":".testpack","replace-import":["|\\./b\\+tree|$P/b+tree|","|\\.\\.|$P|","|\\.\\.([/\\\\].*)|$P$1|"],"replace-import//":["The first argument ensures tests run against the minified version of the library.","The second and third patterns are similar to defaults in testpack, but only replace relative imports that navigate","outside the test directory. This is necessary because the test directory is not published with the package."]},"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"_npmVersion":"10.2.4","description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","directories":{},"sideEffects":false,"_nodeVersion":"20.11.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.2","ts-jest":"^26.4.3","ts-node":"^7.0.1","bintrees":"^1.0.2","uglify-js":"^3.11.4","babel-core":"^6.26.3","typescript":"^4.0.8","@types/node":"^10.17.28","collections":"^5.1.13","testpack-cli":"^1.1.4","@types/bintrees":"^1.0.2","mersenne-twister":"^1.1.0","@types/collections":"^5.0.2","@types/mersenne-twister":"^1.1.2","functional-red-black-tree":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sorted-btree_2.1.0_1765417869891_0.9557569582181802","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2018-07-26T19:34:40.977Z","modified":"2026-09-29T15:59:36.514Z","1.0.0":"2018-07-26T19:34:41.058Z","1.0.1":"2018-07-26T20:33:38.211Z","1.0.2":"2018-07-26T20:51:48.201Z","1.0.3":"2018-07-27T04:03:55.555Z","1.0.4":"2018-07-27T04:22:49.931Z","1.0.5":"2018-07-27T04:30:40.093Z","1.0.6":"2018-07-27T05:27:15.826Z","1.1.0":"2018-07-29T18:24:12.006Z","1.1.1":"2018-07-29T21:26:29.119Z","1.1.2":"2018-08-04T20:57:29.613Z","1.2.0":"2018-08-05T03:13:27.854Z","1.2.1":"2018-08-07T17:38:26.644Z","1.2.2":"2020-08-26T02:31:51.852Z","1.2.3":"2020-08-26T14:28:00.823Z","1.2.4":"2020-10-21T19:58:35.546Z","1.3.0":"2020-11-02T17:09:37.900Z","1.4.0":"2020-11-02T22:06:42.852Z","1.5.0":"2021-05-01T00:41:13.846Z","1.6.0":"2021-08-29T18:43:51.739Z","1.6.1":"2022-03-01T18:02:57.090Z","1.6.2":"2022-03-08T20:52:56.425Z","1.7.0":"2022-03-09T05:05:51.515Z","1.8.0":"2022-03-24T23:49:02.593Z","1.8.1":"2022-10-06T23:53:05.695Z","2.0.0-alpha.0":"2025-11-12T00:28:38.614Z","2.1.0":"2025-12-11T01:51:10.118Z"},"bugs":{"url":"https://github.com/qwertie/btree-typescript/issues"},"author":{"name":"David Piepgrass"},"license":"MIT","homepage":"https://github.com/qwertie/btree-typescript#readme","keywords":["B+","tree","btree","sorted","set","map","list","collection","fast-cloning","copy-on-write","optimized"],"repository":{"url":"git+https://github.com/qwertie/btree-typescript.git","type":"git"},"description":"A sorted list of key-value pairs in a fast, typed in-memory B+ tree with a powerful API.","maintainers":[{"email":"qwertie256@gmail.com","name":"qwertie"},{"email":"taylorsw@microsoft.com","name":"taylorsw04"}],"readme":"B+ tree\n=======\n\nB+ trees are ordered collections of key-value pairs, sorted by key.\n\nThis is a fast B+ tree implementation, largely compatible with the standard Map, but with a much more diverse and powerful API. To use it, `import BTree from 'sorted-btree'`.\n\n`BTree` is faster and/or uses less memory than other popular JavaScript sorted trees (see Benchmarks). However, data structures in JavaScript tend to be slower than the built-in `Array` and `Map` data structures in typical cases, because the built-in data structures are mostly implemented in a faster language such as C++. Even so, if you have a large amount of data that you want to keep sorted, the built-in data structures will not serve you well, and `BTree` offers a variety of features like fast cloning and diffing, which the built-in types don't.\n\nUse `npm install sorted-btree` in a terminal to install it in your npm-based project.\n\nFeatures\n--------\n\n- Requires ES5 only (`Symbol.iterator` is not required but is used if defined.)\n- Includes typings (`BTree` was written in TypeScript)\n- API similar to ES6 `Map` with methods such as `size(), clear()`, \n  `forEach((v,k,tree)=>{}), get(K), set(K,V), has(K), delete(K)`,\n  plus iterator functions `keys()`, `values()` and `entries()`.\n- Supports keys that are numbers, strings, arrays of numbers/strings, `Date`,\n  and objects that have a `valueOf()` method that returns a number or string.\n- Other data types can also be supported with a custom comparator (second  \n  constructor argument).\n- Supports O(1) fast cloning with subtree sharing. This works by marking the\n  root node as \"shared between instances\". This makes the tree read-only \n  with copy-on-edit behavior; both copies of the tree remain mutable. I call \n  this category of data structure \"dynamically persistent\" or \"mutably \n  persistent\" because AFAIK no one else has given it a name; it walks the line \n  between mutating and [persistent](https://en.wikipedia.org/wiki/Persistent_data_structure).\n- Includes persistent methods such as `with` and `without`, which return a\n  modified tree without changing the original (in O(log(size)) time).\n- When a node fills up, items are shifted to siblings when possible to \n  keep nodes near their capacity, to improve memory utilization.\n- Efficiently supports sets (keys without values). The collection does\n  not allocate memory for values if the value `undefined` is associated \n  with all keys in a given node.\n- Includes neat stuff such as `Range` methods for batch operations\n- Throws an exception if you try to use `NaN` as a key, but infinity is allowed.\n- No dependencies. 19.5K minified, 5.5K gzipped (plus an extra 22.8K minified / 9.2K gzipped if you use `BTreeEx`)\n- Includes a lattice of interfaces for TypeScript users (see below)\n- Supports diffing computation between two trees that is highly optimized for the case\n  in which a majority of nodes are shared (such as when persistent methods are used).\n- Supports fast union & shared-key iteration via `forEachKeyInBoth` with asymptotic speedups when large disjoint ranges of keys are present.\n  The union operation generates a new tree that shares nodes with the original trees when possible.\n\n### Additional operations supported on this `BTree` ###\n\n- Set a value only if the key does not already exist: `t.setIfNotPresent(k,v)`\n- Set a value only if the key already exists: `t.changeIfPresent(k,v)`\n- Iterate in backward order: `for (pair of t.entriesReversed()) {}`\n- Iterate from a particular first element: `for (let p of t.entries(first)) {}`\n- Convert to an array: `t.toArray()`, `t.keysArray()`, `t.valuesArray()`\n- Get pairs for a range of keys ([K,V][]): `t.getRange(loK, hiK, includeHi)`\n- Delete a range of keys and their values: `t.deleteRange(loK, hiK, includeHi)`\n- Scan all items: `t.forEachPair((key, value, index) => {...})`\n- Scan a range of items: `t.forRange(lowKey, highKey, includeHiFlag, (k,v) => {...})`\n- Count the number of keys in a range: `c = t.forRange(loK, hiK, includeHi, undefined)`\n- Get smallest or largest key: `t.minKey()`, `t.maxKey()`\n- Get next larger key/pair than `k`: `t.nextHigherKey(k)`, `t.nextHigherPair(k)`\n- Get largest key/pair that is lower than `k`: `t.nextLowerKey(k)`, `t.nextLowerPair(k)`\n- Freeze to prevent modifications: `t.freeze()` (you can also `t.unfreeze()`)\n- Fast clone: `t.clone()`\n- For more information, **see [full documentation](https://github.com/qwertie/btree-typescript/blob/master/b%2Btree.ts) in the source code.**\n\n**Note:** Confusingly, the ES6 `Map.forEach(c)` method calls `c(value,key)` instead of `c(key,value)`, in contrast to other methods such as `set()` and `entries()` which put the key first. I can only assume that they reversed the order on the hypothesis that users would usually want to examine values and ignore keys. BTree's `forEach()` therefore works the same way, but there is a second method `.forEachPair((key,value)=>{...})` which sends you the key first and the value second; this method is slightly faster because it is the \"native\" for-each method for this class.\n\n**Note:** Duplicate keys are not allowed (supporting duplicates properly is complex).\n\nThe \"scanning\" methods (`forEach, forRange, editRange, deleteRange`) will normally return the number of elements that were scanned. However, the callback can return `{break:R}` to stop iterating early and return a value `R` from the scanning method.\n\n#### Functional methods\n\n- Get a copy of the tree including only items fitting a criteria: `t.filter((k,v) => k.fitsCriteria())`\n- Get a copy of the tree with all values modified: `t.mapValues((v,k) => v.toString())`\n- Reduce a tree (see below): `t.reduce((acc, pair) => acc+pair[1], 0)`\n\n#### Persistent methods\n\n- Get a new tree with one pair changed: `t.with(key, value)`\n- Get a new tree with multiple pairs changed: `t.withPairs([[k1,v1], [k2,v2]])`\n- Ensure that specified keys exist in a new tree: `t.withKeys([k1,k2])`\n- Get a new tree with one pair removed: `t.without(key)`\n- Get a new tree with specific pairs removed: `t.withoutKeys(keys)`\n- Get a new tree with a range of keys removed: `t.withoutRange(low, high, includeHi)`\n- Get a new tree that is the result of a union: `t.union(other, unionFn)`\n\n**Things to keep in mind:** I ran a test which suggested `t.with` is three times slower than `t.set`. These methods do not return a frozen tree even if the original tree was frozen (for performance reasons, e.g. frozen trees use slightly more memory.)\n\n### Additional optimized operations in `BTreeEx`\n\n- Find differences between two trees, quickly skipping shared subtrees: `tree1.diffAgainst(tree2, function tree1Only(k, v) {}, function tree2Only(k, v) {}, function different(k, v1, v2) {})` (standalone: `diffAgainst(treeA, treeB, ...)`)\n- Examine keys shared between two trees: `tree1.forEachKeyInBoth(tree2, (k, val1, val2) => {...})`\n- Examine keys unique to this tree: `tree1.forEachKeyNotIn(tree2, (k, v) => {...})`\n- Get the intersection (overlap) between two trees: `tree1.intersect(tree2, (k, val1, val2) => val1)`\n- Get the union (combination) of two trees: `tree1.union(tree2, (k, val1, val2) => val1)`\n- Get a copy without keys from another tree: `tree1.subtract(tree2)`\n- Fast bulk load: `BTreeEx.bulkLoad(entries, 32)`\n- For more information, **see [full documentation](https://github.com/qwertie/btree-typescript/blob/master/extended/index.ts) in the source code.**\n\n### Two ways to use the extra algorithms\n\nThe default export gives you the core tree and functionality; import `BTreeEx` to get an extended `BTreeEx` class with all the extra goodies:\n\n```ts\nimport BTreeEx from 'sorted-btree/extended';\n```\n\nAlternately, you can continue using `BTree` but import individual algorithms instead:\n\n```ts\nimport diffAgainst from 'sorted-btree/extended/diffAgainst';\n```\n\n`BTreeEx` is a drop-in subclass of `BTree` that keeps advanced helpers on the instance, while the standalone `diffAgainst` entry point lets bundlers include only that function when you don't need the rest of the extended surface.\n\nExamples\n--------\n\n### Custom comparator ###\n\nGiven a set of `{name: string, age: number}` objects, you can create a tree sorted by name and then by age like this:\n\n~~~js\n  // First constructor argument is an optional list of pairs ([K,V][])\n  var tree = new BTree(undefined, (a, b) => {\n    if (a.name > b.name)\n      return 1; // Return a number >0 when a > b\n    else if (a.name < b.name)\n      return -1; // Return a number <0 when a < b\n    else // names are equal (or incomparable)\n      return a.age - b.age; // Return >0 when a.age > b.age\n  });\n\n  tree.set({name:\"Bill\", age:17}, \"happy\");\n  tree.set({name:\"Fran\", age:40}, \"busy & stressed\");\n  tree.set({name:\"Bill\", age:55}, \"recently laid off\");\n  tree.forEachPair((k, v) => {\n    console.log(`Name: ${k.name} Age: ${k.age} Status: ${v}`);\n  });\n~~~\n\n### reduce ###\n\nThe `reduce` method performs a reduction operation, like the `reduce` method of `Array`. It is used to combine all keys, values or pairs into a single value, or to perform type conversions conversions. `reduce` is best understood by example. So here's how you can multiply all the keys in a tree together:\n\n    var product = tree.reduce((p, pair) => p * pair[0], 1)\n\nIt means \"start with `p=1`, and for each pair change `p` to `p * pair[0]`\" (`pair[0]` is the key). You may be thinking \"hey, wouldn't it make more sense if the `1` argument came _first_?\" Yes it would, but in `Array` the parameter is second, so it must also be second in `BTree` for consistency.\n\nHere's a similar example that adds all values together:\n\n    var total = tree.reduce((sum, pair) => sum + pair[1], 0)\n\nThis final example converts the tree to a Map:\n\n    var map = tree.reduce((m, pair) => m.set(pair[0], pair[1]), new Map())`\n\nRemember that `m.set` returns `m`, which is different from `BTree` where `tree.set` returns a boolean indicating whether a new key was added.\n\n### editRange ###\n\nYou can scan a range of items and selectively delete or change some of them using `t.editRange`. For example, the following code adds an exclamation mark to each non-boring value and deletes key number 4:\n\n~~~js\nvar t = new BTree().setRange([[1,\"fun\"],[2,\"yay\"],[4,\"whee\"],[8,\"zany\"],[10,\"boring\"]);\nt.editRange(t.minKey(), t.maxKey(), true, (k, v) => {\n  if (k === 4) \n    return {delete: true};\n  if (v !== \"boring\")\n    return {value: v + '!'};\n})\n~~~\n\nInterface lattice\n-----------------\n\nBTree includes a [lattice of interface types](https://github.com/qwertie/btree-typescript/blob/master/interfaces.d.ts) representing subsets of BTree's interface. I would encourage other authors of map/dictionary/tree/hashtable types to utilize these interfaces. These interfaces can be divided along three dimensions:\n\n### 1. Read/write access ###\n\nI have defined several kinds of interfaces along the read/write access dimension:\n\n- **Source**: A \"source\" is a read-only interface (`ISetSource<K>` and `IMapSource<K,V>`). At minimum, sources include a `size` property and methods `get`, `has`, `forEach`, and `keys`.\n- **Sink**: A \"sink\" is a write-only interface (`ISetSink<K>` and `IMapSink<K,V>`). At minimum, sinks have `set`, `delete` and `clear` methods.\n- **Mutable**: An interface that combines the source and sink interfaces (`ISet<K>` and `IMap<K,V>`).\n- **Functional**: An interface for [persistent](https://en.wikipedia.org/wiki/Persistent_data_structure) data structures. It combines a read-only interface with methods that return a modified copy of the collection. The functional interfaces end with `F` (`ISetF<K>` and `IMapF<K,V>`).\n\n### 2. Sorted versus unsorted ###\n\nThe `Sorted` interfaces extend the non-sorted interfaces with queries that only a sorted collection can perform efficiently, such as `minKey()` and `nextHigherKey(k)`. At minimum, sorted interfaces add methods `minKey`, `maxKey`, `nextHigherKey`, `nextLowerKey`, and `forRange`, plus iterators that return keys/values/pairs in sorted order and accept a `firstKey` parameter to control the starting point of iteration.\n\n**Note:** in sorted-btree ≤ v1.7.x, these interfaces have methods `nextHigherKey(key: K)` and `nextLowerKey(key: K)` which should be `nextHigherKey(key: K|undefined)` and `nextLowerKey(key: K|undefined)`. These signatures are changed in the next version.\n\n### 3. Set versus map ###\n\nA map is a collection of keys with values, while a set is a collection of keys without values.\n\nFor the most part, each `Set` interface is a subset of the corresponding `Map` interface with \"values\" removed. For example, `MapF<K,V>` extends `SetF<K>`. An exception to this is that `IMapSink<K, V>` could not be derived from `ISetSink<K>` (and thus `IMap<K,V>` is not derived from `ISet<K>`) because the type `V` does not necessarily include `undefined`. Therefore you can write `set.set(key)` to add a key to a set, but you cannot write `map.set(key)` without specifying a value (in TypeScript this is true _even if `V` includes undefined_.)\n\n### List of interfaces ###\n\nAll of these [interfaces](https://github.com/qwertie/btree-typescript/blob/master/interfaces.d.ts) use `any` as the default type of `K` and `V`.\n\n- `ISetSource<K>`\n- `ISetSink<K>`\n- `ISet<K>               extends ISetSource<K>, ISetSink<K>`\n- `IMapSource<K, V>      extends ISetSource<K>`\n- `IMapSink<K, V>`\n- `IMap<K, V>            extends IMapSource<K,V>, IMapSink<K,V>`\n- `ISortedSetSource<K>   extends ISetSource<K>`\n- `ISortedSet<K>         extends ISortedSetSource<K>, ISetSink<K>`\n- `ISortedMapSource<K,V> extends IMapSource<K, V>, ISortedSetSource<K>`\n- `ISortedMap<K,V>       extends IMap<K,V>, ISortedMapSource<K,V>`\n- `ISetF<K>              extends ISetSource<K>`\n- `IMapF<K, V>           extends IMapSource<K,V>, ISetF<K>`\n- `ISortedSetF<K>        extends ISetF<K>, ISortedSetSource<K>`\n- `ISortedMapF<K,V>      extends ISortedSetF<K>, IMapF<K,V>, ISortedMapSource<K,V>`\n\nIf the lattice were complete there would be 16 interfaces (`4*2*2`). In fact there are only 14 interfaces because `ISortedMapSink<K,V>` and `ISortedSetSink<K, V>` don't exist, because sorted sinks are indistinguishable from unsorted sinks.\n\n`BTree<K,V>` implements all of these interfaces except `ISetSink<K>`, `ISet<K>`, and `ISortedSet<K>`. However, `BTree<K,V>` may be _compatible_ with these interfaces even if TypeScript doesn't realize it. Therefore, if `V` includes `undefined`, the `BTree<K,V>.asSet` property is provided to cast the `BTree` to a set type. The `asSet` property returns the same `BTree` as type `ISortedSet<K>` (which is assignable to `ISetSink<K>`, `ISet<K>` and `ISortedSetSource<K>`).\n\n### ES6 Map/Set compatibility ###\n\nThe `IMap<K,V>` interface is compatible with the ES6 `Map<K,V>` type as well as `BTree<K,V>`. In order to accomplish this, compromises had to be made:\n\n- The `set(k,v)` method returns `any` for compatibility with both `BTree` and `Map`, since `BTree` returns `boolean` (true if an item was added or false if it already existed), while `Map` returns `this`.\n- ES6's `Map.forEach(c)` method calls `c(value,key)` instead of `c(key,value)`, unlike all other methods which put the key first. Therefore `IMap` works the same way. Unfortunately, this means that `ISetSource<K>`, the supertype of `IMapSource<K,V>`, cannot sanely have a `forEach` method because if it did, the first parameter to the callback would be unused.\n- The batch operations `setPairs`, `deletePairs` and `reduce` are left out because they are not defined by `Map`. Instead, these methods are defined in `ISortedMap<K,V>`.\n- Likewise, the functional operations `reduce`, `filter` and `mapValues` are not included in `IMap`, but they are defined in `IMapF<K,V>` and (except `mapValues`) `ISetF<K>`.\n\nSimilarly, `ISet<K>` is compatible with ES6 `Set`. Again there are compromises:\n\n- The `set` method is renamed `add` in `Set` and `ISet<K>`, so `add` exists on `BTree.prototype` as a synonym for `set`.\n- There is no `forEach` method for reasons alluded to above. Use `keys()` instead.\n- There is no `filter` or `reduce` because `Set` doesn't support them.\n\nAlthough `BTree<K,V>` doesn't directly implement `ISet<K>`, it does implement `ISetSource<K>` and it is safe to cast `BTree<K,V>` to `ISet<K>` or `ISortedSet<K>` provided that `V` is allowed to be undefined.\n\nUkraine is still under attack\n-----------------------------\n\nI wrote this on March 24, 2022: the one-month anniversary of the full-scale invasion of Ukraine.\n\n![Mariupol](http://david.loyc.net/misc/ukraine/Mariupol-from-above.webp)\n\nThis is the city of Mariupol, which Russia badly damaged after cutting off electricity, water and heat on March 1. Pre-war population: 431,859. Do you see any military targets here? No, these are homes that many people still live in. Russia has even made it [dangerous to leave](https://www.bbc.com/news/world-europe-60629851). [An official told NPR:](https://www.dailymail.co.uk/news/article-10580113/All-people-die-Zelensky-slams-NATOs-refusal-establish-no-fly-zone.html) 'When the people organised in evacuation points, they [Russians] started attack on evacuation points. Not all the city. Just evacuation points.'\n\nOfficially, [as of 9 days ago, 2,400 civilians had been killed](https://www.nytimes.com/2022/03/15/world/europe/mariupol-death-toll-ukraine.html), but this is said to be an underestimate and the actual number of murders may have been as high as 20,000... nine days ago.\n\nNow, I'm just a lowly programming-language designer with no real following on [Twitter](https://twitter.com/DPiepgrass), so I'm venting here.\n\nI have donated to the Red Cross in support of Ukraine [update: reports have said this is not an effective charity], and also to AVD-Info and Meduza in order to help give Russians access to information (the Russian internet is heavily censored, and independent media are banned). For more donation ideas, [see here](https://forum.effectivealtruism.org/posts/qkhoBJRNQT4EFWos7/what-are-effective-ways-to-help-ukrainians-right-now).\n\n[As of 2025, I still find it hard to find effective charities. The most impactful thing you could do is probably to request that your government support Ukraine financially. Trump has cut aid almost to zero, invited Putin to Alaska and proposed restoring economic ties to Russia, which has emboldened Putin to fight harder. I remind people that Putin is wanted by the ICC for mass-kidnapping of Ukrainian children. Don't forget the Bucha massacre, the [genocidal rhetoric](https://www.youtube.com/watch?v=I5yvjyJdDW0), the poison-gas attacks, or the executions on video of Ukrainian POWs. Don't forget the Human Safari (Documentary [one](https://www.youtube.com/watch?v=yaAUV3JmxwM), [two](https://khersonhumansafari.com/), [three](https://www.youtube.com/watch?v=xZ60RwJk88A)). Don't forget that Russia still maintains enormous demands that the Ukrainian people can't accept, including giving up the fortress belt that protects Ukraine from Russian advances in the Donbass region, the Ukrainian-held city of Zaporizhzhia (pre-war population: over 700,000), the Ukrainian-held city of Kherson, two large bridgeheads over the Dnipro river, and most recently, [the Russians claim \"Novorussiya\"](https://x.com/DPiepgrass/status/1903806027872809231) ― two extra provinces, to turn Ukraine into a landlocked country in order to destroy Ukraine's economy. They also want to prevent Ukraine from having effective guarantees against further attacks. Don't forget that Russia destroys every city before taking it, because they don't want infrastructure, they want a Russian empire bordered by a Europe filled with Ukrainian refugees. In short, they continue to insist that Ukraine give up almost everything valuable and place themselves at the mercy of Russia, and this extremism is why we must ensure that they fail. And now, back to 2022:]\n\nWithout electricity, reports from Mariupol have been limited, but certainly there is enough information to see that the situation is very bad.\n\n![Mariupol apartment bombed](http://david.loyc.net/misc/ukraine/Mariupol-explosion.webp)\n\nHere you can see the famous Donetsk Academic Regional Drama Theatre, labeled \"дети\" (\"children\") in huge letters, which held over 1,000 civilians. Russia bombed it anyway.\n\n![Mariupol theatre](http://david.loyc.net/misc/ukraine/Mariupol-theatre-children.webp)\n![Mariupol theatre before](http://david.loyc.net/misc/ukraine/Mariupol-theatre-children-before.jpg)\n\nFor more images and stories from Mariupol, [see here](https://twitter.com/DPiepgrass/status/1506642788074536965).\n\nMeanwhile, I hope you don't live in an apartment in [Borodyanka](https://euromaidanpress.com/2022/03/06/close-the-sky-or-how-russia-bombed-out-my-town-of-borodyanka), near Kyiv...\n\n![Borodyanka 1](http://david.loyc.net/misc/ukraine/central-Borodyanka-after.jpeg)\n![Borodyanka 2](http://david.loyc.net/misc/ukraine/Borodyanka.png)\n\nOr in these other places...\n\n![Before/after](http://david.loyc.net/misc/ukraine/before-after.jpg)\n![Chernihiv](http://david.loyc.net/misc/ukraine/Chernihiv-before-after.webp)\n![Irpin](http://david.loyc.net/misc/ukraine/Irpin-burns.webp)\n![Kharkiv](http://david.loyc.net/misc/ukraine/Kharkiv-firefighters-rubble.webp)\n![Kharkiv](http://david.loyc.net/misc/ukraine/Kharkiv-two-dead.webp)\n\nIt was true in 2022 and remains true in 2025: **Russia will not stop until it is stopped.** Democracies are on the decline globally ― as India, Hungary and Turkey slide into authoritarianism, the internet fills with dis/misinformation, some of it generated by dictatorships, while China prepares to blockade and invade Taiwan. Russia has turned totalitarian, and now Russia wants to destroy yet another democracy after previously invading Chechnya, Georgia, and Ukraine (in 2014). Please care about this, because democracies need to stick together. The intensity of the war hasn't slowed down after three years; instead, Russia spent a majority of its cash reserves to ramp up attacks (see [Inside Russia](https://www.youtube.com/@INSIDERUSSIA) and [Ukraine Matters](https://www.youtube.com/@UkraineMatters)). Ukrainians want peace, but they also want to keep their democracy, their homes, their land and their livelihoods (see [Ukrainian public opinion survey](https://www.ipsos.com/en/survey-ukranian-citizens)). They have fought long and hard, and remain willing, but can only succeed with strong western support. Russian cash will not last forever, and our economies are much stronger than Russia's.\n\nUkrainians have the only army in the world that knows how to fight a modern war, and they manufacture more drones than any country besides China and maybe Russia. If we let Ukraine lose, we lose their military strength and production capacity at a time when we might well need it ourselves, for Ukraine is not the only territory that Putin believes belongs to him, nor is Putin the only one who considers starting wars. Ukrainians offer to teach our militaries something they don't know: how to fight a modern drone war. All they want in exchange is to keep existing as a free people, and we in the west can grant them that. Slava Ukrayini, i dyakuyu.\n\nBenchmarks (in milliseconds for integer keys/values)\n----------------------------------------------------\n\n- These benchmark results were gathered on my PC in Node v20.11.1, December 2025\n- `BTree` is 3 to 5 times faster than `SortedMap` and `SortedSet` in the `collections` package\n- `BTree` has similar speed to `RBTree` at smaller sizes, but is faster at very large sizes and uses less memory because it packs many keys into one array instead of allocating an extra heap object for every key.\n- If you need [functional persistence](https://en.wikipedia.org/wiki/Persistent_data_structure), `functional-red-black-tree` is remarkably fast for a persistent tree, but `BTree` should require less memory _unless_ you frequently use `clone/with/without` and are saving snapshots of the old tree to prevent garbage collection.\n- B+ trees normally use less memory than hashtables (such as the standard `Map`), although in JavaScript this is not guaranteed because the B+ tree's memory efficiency depends on avoiding wasted space in the arrays for each node, and JavaScript provides no way to detect or control the capacity of an array's underlying memory area. Also, `Map` should be faster because it does not sort its keys.\n- \"Sorted array\" refers to `SortedArray<K,V>`, a wrapper class for an array of `[K,V]` pairs. Benchmark results were not gathered for sorted arrays with one million elements (it takes too long).\n- \"Baseline algorithms\" below are typically based on converting the B+ tree to an array (`toArray()`) and doing the operation in that array.\n\n### Insertions at random locations: sorted-btree vs the competition (millisec) ###\n\n    1.16    Insert 1000 pairs in sorted-btree's BTree\n    0.39    Insert 1000 pairs in sorted-btree's BTree set (no values)\n    3.07    Insert 1000 pairs in collections' SortedMap\n    2.44    Insert 1000 pairs in collections' SortedSet (no values)\n    1.86    Insert 1000 pairs in functional-red-black-tree\n    1.22    Insert 1000 pairs in bintrees' RBTree (no values)\n    \n    3.25    Insert 10000 pairs in sorted-btree's BTree\n    2.31    Insert 10000 pairs in sorted-btree's BTree set (no values)\n    21.08   Insert 10000 pairs in collections' SortedMap\n    12.66   Insert 10000 pairs in collections' SortedSet (no values)\n    4.14    Insert 10000 pairs in functional-red-black-tree\n    1.84    Insert 10000 pairs in bintrees' RBTree (no values)\n    \n    37.29   Insert 100000 pairs in sorted-btree's BTree\n    27.88   Insert 100000 pairs in sorted-btree's BTree set (no values)\n    329.64  Insert 100000 pairs in collections' SortedMap\n    206.27  Insert 100000 pairs in collections' SortedSet (no values)\n    81.06   Insert 100000 pairs in functional-red-black-tree\n    28.54   Insert 100000 pairs in bintrees' RBTree (no values)\n    \n    625.89  Insert 1000000 pairs in sorted-btree's BTree\n    437.59  Insert 1000000 pairs in sorted-btree's BTree set (no values)\n    5673.62 Insert 1000000 pairs in collections' SortedMap\n    3496.35 Insert 1000000 pairs in collections' SortedSet (no values)\n    1892.51 Insert 1000000 pairs in functional-red-black-tree\n    834.54  Insert 1000000 pairs in bintrees' RBTree (no values)\n\n### Insert in order, delete: sorted-btree vs the competition ###\n\n    0.16    Insert 1000 sorted pairs in B+ tree\n    0.14    Insert 1000 sorted keys in B+ tree set (no values)\n    0.4     Insert 1000 sorted pairs in collections' SortedMap\n    0.2     Insert 1000 sorted keys in collections' SortedSet (no values)\n    0.24    Insert 1000 sorted pairs in functional-red-black-tree\n    0.78    Insert 1000 sorted keys in bintrees' RBTree (no values)\n    0.41    Delete every second item in B+ tree\n    0.66    Delete every second item in B+ tree set\n    0.42    Bulk-delete every second item in B+ tree set\n    0.79    Delete every second item in collections' SortedMap\n    0.6     Delete every second item in collections' SortedSet\n    1.66    Delete every second item in functional-red-black-tree\n    1.23    Delete every second item in bintrees' RBTree\n    \n    2.22    Insert 10000 sorted pairs in B+ tree\n    1.52    Insert 10000 sorted keys in B+ tree set (no values)\n    3.28    Insert 10000 sorted pairs in collections' SortedMap\n    2.4     Insert 10000 sorted keys in collections' SortedSet (no values)\n    5.77    Insert 10000 sorted pairs in functional-red-black-tree\n    2.48    Insert 10000 sorted keys in bintrees' RBTree (no values)\n    2.15    Delete every second item in B+ tree\n    2.01    Delete every second item in B+ tree set\n    1.26    Bulk-delete every second item in B+ tree set\n    5.17    Delete every second item in collections' SortedMap\n    4.46    Delete every second item in collections' SortedSet\n    7.33    Delete every second item in functional-red-black-tree\n    1.82    Delete every second item in bintrees' RBTree\n    \n    22.26   Insert 100000 sorted pairs in B+ tree\n    17      Insert 100000 sorted keys in B+ tree set (no values)\n    53.62   Insert 100000 sorted pairs in collections' SortedMap\n    34.65   Insert 100000 sorted keys in collections' SortedSet (no values)\n    70.5    Insert 100000 sorted pairs in functional-red-black-tree\n    29.61   Insert 100000 sorted keys in bintrees' RBTree (no values)\n    18.91   Delete every second item in B+ tree\n    16.52   Delete every second item in B+ tree set\n    5.31    Bulk-delete every second item in B+ tree set\n    50.01   Delete every second item in collections' SortedMap\n    33.12   Delete every second item in collections' SortedSet\n    28.09   Delete every second item in functional-red-black-tree\n    13.79   Delete every second item in bintrees' RBTree\n    \n    239.15  Insert 1000000 sorted pairs in B+ tree\n    194.53  Insert 1000000 sorted keys in B+ tree set (no values)\n    652.82  Insert 1000000 sorted pairs in collections' SortedMap\n    364.85  Insert 1000000 sorted keys in collections' SortedSet (no values)\n    833.39  Insert 1000000 sorted pairs in functional-red-black-tree\n    367.05  Insert 1000000 sorted keys in bintrees' RBTree (no values)\n    177.48  Delete every second item in B+ tree\n    137.5   Delete every second item in B+ tree set\n    43.13   Bulk-delete every second item in B+ tree set\n    407.36  Delete every second item in collections' SortedMap\n    349.39  Delete every second item in collections' SortedSet\n    337.67  Delete every second item in functional-red-black-tree\n    116.74  Delete every second item in bintrees' RBTree\n\n### Insertions at random locations: sorted-btree vs Array vs Map ###\n\n    0.16    Insert 1000 pairs in sorted array\n    0.2     Insert 1000 pairs in B+ tree\n    0.03    Insert 1000 pairs in ES6 Map (hashtable)\n    \n    6.04    Insert 10000 pairs in sorted array\n    2.66    Insert 10000 pairs in B+ tree\n    0.7     Insert 10000 pairs in ES6 Map (hashtable)\n    \n    1852.77 Insert 100000 pairs in sorted array\n    36.07   Insert 100000 pairs in B+ tree\n    8.64    Insert 100000 pairs in ES6 Map (hashtable)\n    \n    SLOW!   Insert 1000000 pairs in sorted array\n    613.34  Insert 1000000 pairs in B+ tree\n    133.13  Insert 1000000 pairs in ES6 Map (hashtable)\n\n### Insert in order, scan, delete: sorted-btree vs Array vs Map ###\n\n    0.16    Insert 1000 sorted pairs in array\n    0.27    Insert 1000 sorted pairs in B+ tree\n    0.09    Insert 1000 sorted pairs in Map hashtable\n    0.03    Sum of all values with forEach in sorted array: 27414400\n    0.09    Sum of all values with forEachPair in B+ tree: 27414400\n    0.1     Sum of all values with forEach in B+ tree: 27414400\n    0.18    Sum of all values with iterator in B+ tree: 27414400\n    0.03    Sum of all values with forEach in Map: 27414400\n    0.19    Delete every second item in sorted array\n    0.32    Delete every second item in B+ tree\n    0.06    Delete every second item in Map hashtable\n    \n    1.48    Insert 10000 sorted pairs in array\n    2.02    Insert 10000 sorted pairs in B+ tree\n    0.7     Insert 10000 sorted pairs in Map hashtable\n    0.17    Sum of all values with forEach in sorted array: 2727131580\n    0.13    Sum of all values with forEachPair in B+ tree: 2727131580\n    0.15    Sum of all values with forEach in B+ tree: 2727131580\n    1.05    Sum of all values with iterator in B+ tree: 2727131580\n    0.11    Sum of all values with forEach in Map: 2727131580\n    0.36    Delete every second item in sorted array\n    0.62    Delete every second item in B+ tree\n    0.18    Delete every second item in Map hashtable\n    \n    16.46   Insert 100000 sorted pairs in array\n    23.9    Insert 100000 sorted pairs in B+ tree\n    8.07    Insert 100000 sorted pairs in Map hashtable\n    0.95    Sum of all values with forEach in sorted array: 274463815510\n    1.4     Sum of all values with forEachPair in B+ tree: 274463815510\n    1.37    Sum of all values with forEach in B+ tree: 274463815510\n    1.61    Sum of all values with iterator in B+ tree: 274463815510\n    0.82    Sum of all values with forEach in Map: 274463815510\n    1478.85 Delete every second item in sorted array\n    7.69    Delete every second item in B+ tree\n    2.32    Delete every second item in Map hashtable\n    \n    298.73  Insert 1000000 sorted pairs in array\n    241.94  Insert 1000000 sorted pairs in B+ tree\n    125.53  Insert 1000000 sorted pairs in Map hashtable\n    12.13   Sum of all values with forEach in sorted array: 27511905926210\n    15.43   Sum of all values with forEachPair in B+ tree: 27511905926210\n    15.72   Sum of all values with forEach in B+ tree: 27511905926210\n    13.65   Sum of all values with iterator in B+ tree: 27511905926210\n    8.72    Sum of all values with forEach in Map: 27511905926210\n    SLOW!   Delete every second item in sorted array\n    79.73   Delete every second item in B+ tree\n    85.45   Delete every second item in Map hashtable\n\n### BTree.diffAgainst() ###\n\n    0.3     BTree.diffAgainst 1000 pairs vs 100 pairs\n    0.83    BTree.diffAgainst 10000 pairs vs 100 pairs\n    0.18    BTree.diffAgainst 10000 pairs vs 1000 pairs\n    1.15    BTree.diffAgainst 100000 pairs vs 100 pairs\n    2.29    BTree.diffAgainst 100000 pairs vs 1000 pairs\n    1.31    BTree.diffAgainst 100000 pairs vs 10000 pairs\n    13.04   BTree.diffAgainst 1000000 pairs vs 100 pairs\n    13.14   BTree.diffAgainst 1000000 pairs vs 1000 pairs\n    14.12   BTree.diffAgainst 1000000 pairs vs 10000 pairs\n    15.79   BTree.diffAgainst 1000000 pairs vs 100000 pairs\n    \n    0.03    BTree.diffAgainst 100 pairs vs cloned copy with 100 extra pairs\n    0.14    BTree.diffAgainst 100 pairs vs cloned copy with 1000 extra pairs\n    0.31    BTree.diffAgainst 100 pairs vs cloned copy with 10000 extra pairs\n    2.09    BTree.diffAgainst 100 pairs vs cloned copy with 100000 extra pairs\n    26.64   BTree.diffAgainst 100 pairs vs cloned copy with 1000000 extra pairs\n    0.15    BTree.diffAgainst 1000 pairs vs cloned copy with 100 extra pairs\n    0.27    BTree.diffAgainst 1000 pairs vs cloned copy with 1000 extra pairs\n    0.39    BTree.diffAgainst 1000 pairs vs cloned copy with 10000 extra pairs\n    2.29    BTree.diffAgainst 1000 pairs vs cloned copy with 100000 extra pairs\n    29.45   BTree.diffAgainst 1000 pairs vs cloned copy with 1000000 extra pairs\n    0.09    BTree.diffAgainst 10000 pairs vs cloned copy with 100 extra pairs\n    0.4     BTree.diffAgainst 10000 pairs vs cloned copy with 1000 extra pairs\n    0.58    BTree.diffAgainst 10000 pairs vs cloned copy with 10000 extra pairs\n    2.99    BTree.diffAgainst 10000 pairs vs cloned copy with 100000 extra pairs\n    29.59   BTree.diffAgainst 10000 pairs vs cloned copy with 1000000 extra pairs\n    0.2     BTree.diffAgainst 100000 pairs vs cloned copy with 100 extra pairs\n    1.02    BTree.diffAgainst 100000 pairs vs cloned copy with 1000 extra pairs\n    3.71    BTree.diffAgainst 100000 pairs vs cloned copy with 10000 extra pairs\n    7.58    BTree.diffAgainst 100000 pairs vs cloned copy with 100000 extra pairs\n    34.55   BTree.diffAgainst 100000 pairs vs cloned copy with 1000000 extra pairs\n    0.38    BTree.diffAgainst 1000000 pairs vs cloned copy with 100 extra pairs\n    4.29    BTree.diffAgainst 1000000 pairs vs cloned copy with 1000 extra pairs\n    18.86   BTree.diffAgainst 1000000 pairs vs cloned copy with 10000 extra pairs\n    48.21   BTree.diffAgainst 1000000 pairs vs cloned copy with 100000 extra pairs\n    90.29   BTree.diffAgainst 1000000 pairs vs cloned copy with 1000000 extra pairs\n\n### Accelerated union of B+ trees (vs non-accelerated baseline algorithm) ###\n\n#### Adjacent ranges (one intersection point)\n\n    0.04    union():  Union 100+100 trees with 1 keys overlaping\n            union():  6/10 shared nodes, 0/10 underfilled nodes, 65.00% average load factor\n    0.2     union():  Union 1000+1000 trees with 1 keys overlaping\n            union():  62/70 shared nodes, 0/70 underfilled nodes, 92.32% average load factor\n    0.22    union():  Union 10000+10000 trees with 1 keys overlaping\n            union():  641/650 shared nodes, 0/650 underfilled nodes, 99.27% average load factor\n    0.1     union():  Union 100000+100000 trees with 1 keys overlaping\n            union():  6446/6459 shared nodes, 0/6459 underfilled nodes, 99.89% average load factor\n\n#### 10% overlap\n\n    0.01    union():  Union trees with 10% overlap (100+100 keys)\n            union():  6/9 shared nodes, 0/9 underfilled nodes, 68.75% average load factor\n    0.02    baseline: Union trees with 10% overlap (100+100 keys)\n            baseline: 2/7 shared nodes, 0/7 underfilled nodes, 87.50% average load factor\n    0.03    union():  Union trees with 10% overlap (1000+1000 keys)\n            union():  56/66 shared nodes, 0/66 underfilled nodes, 93.04% average load factor\n    0.21    baseline: Union trees with 10% overlap (1000+1000 keys)\n            baseline: 28/63 shared nodes, 0/63 underfilled nodes, 97.32% average load factor\n    0.12    union():  Union trees with 10% overlap (10000+10000 keys)\n            union():  578/630 shared nodes, 0/630 underfilled nodes, 97.37% average load factor\n    2.33    baseline: Union trees with 10% overlap (10000+10000 keys)\n            baseline: 289/614 shared nodes, 0/614 underfilled nodes, 99.82% average load factor\n    1.42    union():  Union trees with 10% overlap (100000+100000 keys)\n            union():  5803/6276 shared nodes, 0/6276 underfilled nodes, 97.73% average load factor\n    24.69   baseline: Union trees with 10% overlap (100000+100000 keys)\n            baseline: 2901/6131 shared nodes, 0/6131 underfilled nodes, 99.97% average load factor\n\n#### Large sparse-overlap trees (1M keys each, 10 overlaps per 100k)\n\n    0.5     union():  Union 1000000+1000000 sparse-overlap trees\n            union():  64461/64552 shared nodes, 0/64552 underfilled nodes, 99.94% average load factor\n    288.2   baseline: Union 1000000+1000000 sparse-overlap trees\n            baseline: 32223/64516 shared nodes, 0/64516 underfilled nodes, 100.00% average load factor\n    \n### Subtraction of B+ trees (vs non-accelerated baseline algorithm) ###\n\n#### Non-overlapping ranges (nothing removed)\n\n    0.01    subtract: Subtract 100+100 disjoint trees\n            subtract: 4/5 shared nodes, 0/5 underfilled nodes, 65.00% average load factor\n    0.02    baseline: Subtract 100+100 disjoint trees\n            baseline: 4/5 shared nodes, 0/5 underfilled nodes, 65.00% average load factor\n    0.01    subtract: Subtract 1000+1000 disjoint trees\n            subtract: 33/33 shared nodes, 0/33 underfilled nodes, 97.73% average load factor\n    0.18    baseline: Subtract 1000+1000 disjoint trees\n            baseline: 32/33 shared nodes, 0/33 underfilled nodes, 97.73% average load factor\n    0.01    subtract: Subtract 10000+10000 disjoint trees\n            subtract: 323/324 shared nodes, 0/324 underfilled nodes, 99.57% average load factor\n    0.38    baseline: Subtract 10000+10000 disjoint trees\n            baseline: 323/324 shared nodes, 0/324 underfilled nodes, 99.57% average load factor\n    0.01    subtract: Subtract 100000+100000 disjoint trees\n            subtract: 3227/3228 shared nodes, 0/3228 underfilled nodes, 99.93% average load factor\n    2.55    baseline: Subtract 100000+100000 disjoint trees\n            baseline: 3227/3228 shared nodes, 0/3228 underfilled nodes, 99.93% average load factor\n\n#### Partial overlap (middle segment removed)\n\n    0.03    subtract: Subtract 100+50 partially overlapping trees\n            subtract: 1/3 shared nodes, 0/3 underfilled nodes, 54.17% average load factor\n    0.03    baseline: Subtract 100+50 partially overlapping trees\n            baseline: 1/3 shared nodes, 0/3 underfilled nodes, 54.17% average load factor\n    0.23    subtract: Subtract 1000+500 partially overlapping trees\n            subtract: 15/18 shared nodes, 0/18 underfilled nodes, 89.76% average load factor\n    0.31    baseline: Subtract 1000+500 partially overlapping trees\n            baseline: 15/18 shared nodes, 1/18 underfilled nodes, 89.76% average load factor\n    0.94    subtract: Subtract 10000+5000 partially overlapping trees\n            subtract: 159/164 shared nodes, 0/164 underfilled nodes, 98.38% average load factor\n    2.12    baseline: Subtract 10000+5000 partially overlapping trees\n            baseline: 160/163 shared nodes, 0/163 underfilled nodes, 98.96% average load factor\n    3.82    subtract: Subtract 100000+50000 partially overlapping trees\n            subtract: 1608/1619 shared nodes, 0/1619 underfilled nodes, 99.63% average load factor\n    17.3    baseline: Subtract 100000+50000 partially overlapping trees\n            baseline: 1610/1616 shared nodes, 0/1616 underfilled nodes, 99.81% average load factor\n\n#### Interleaved keys (every other key removed)\n\n    0.02    subtract: Subtract 200-100 interleaved trees\n            subtract: 0/6 shared nodes, 0/6 underfilled nodes, 54.69% average load factor\n    0.08    baseline: Subtract 200-100 interleaved trees\n            baseline: 0/5 shared nodes, 1/5 underfilled nodes, 65.00% average load factor\n    0.15    subtract: Subtract 2000-1000 interleaved trees\n            subtract: 0/47 shared nodes, 0/47 underfilled nodes, 69.55% average load factor\n    0.54    baseline: Subtract 2000-1000 interleaved trees\n            baseline: 0/33 shared nodes, 0/33 underfilled nodes, 97.73% average load factor\n    1.94    subtract: Subtract 20000-10000 interleaved trees\n            subtract: 0/463 shared nodes, 0/463 underfilled nodes, 70.61% average load factor\n    3.14    baseline: Subtract 20000-10000 interleaved trees\n            baseline: 0/324 shared nodes, 0/324 underfilled nodes, 99.57% average load factor\n    20.97   subtract: Subtract 200000-100000 interleaved trees\n            subtract: 0/4636 shared nodes, 0/4636 underfilled nodes, 70.53% average load factor\n    39.68   baseline: Subtract 200000-100000 interleaved trees\n            baseline: 0/3229 shared nodes, 2/3229 underfilled nodes, 99.90% average load factor\n\n#### Large sparse-overlap trees (1M keys each, 10 overlaps per 100k)\n\n    0.25    subtract: Subtract 1000000+1000000 sparse-overlap trees\n            subtract: 32208/32291 shared nodes, 0/32291 underfilled nodes, 99.89% average load factor\n    49.97   baseline: Subtract 1000000+1000000 sparse-overlap trees\n            baseline: 32228/32259 shared nodes, 0/32259 underfilled nodes, 99.99% average load factor\n\n### Intersection between B+ trees (vs non-accelerated baseline algorithm) ###\n\n#### Non-overlapping ranges (no shared keys)\n\n    0.01    intersect: Intersect 100+100 disjoint trees\n            intersect: 0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n    0.04    baseline:  Intersect 100+100 disjoint trees\n            baseline:  0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n    0.01    intersect: Intersect 1000+1000 disjoint trees\n            intersect: 0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n    0.08    baseline:  Intersect 1000+1000 disjoint trees\n            baseline:  0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n    0       intersect: Intersect 10000+10000 disjoint trees\n            intersect: 0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n    0.57    baseline:  Intersect 10000+10000 disjoint trees\n            baseline:  0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n    0       intersect: Intersect 100000+100000 disjoint trees\n            intersect: 0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n    10.02   baseline:  Intersect 100000+100000 disjoint trees\n            baseline:  0/0 shared nodes, 0/0 underfilled nodes, 0.00% average load factor\n\n#### Partial overlap (middle segment shared)\n\n    0.02    intersect: Intersect 100+50 partially overlapping trees\n            intersect: 0/3 shared nodes, 0/3 underfilled nodes, 54.17% average load factor\n    0.02    baseline:  Intersect 100+50 partially overlapping trees\n            baseline:  0/3 shared nodes, 0/3 underfilled nodes, 54.17% average load factor\n    0.14    intersect: Intersect 1000+500 partially overlapping trees\n            intersect: 0/21 shared nodes, 0/21 underfilled nodes, 77.38% average load factor\n    0.51    baseline:  Intersect 1000+500 partially overlapping trees\n            baseline:  0/17 shared nodes, 0/17 underfilled nodes, 94.85% average load factor\n    0.62    intersect: Intersect 10000+5000 partially overlapping trees\n            intersect: 0/202 shared nodes, 0/202 underfilled nodes, 80.46% average load factor\n    1.71    baseline:  Intersect 10000+5000 partially overlapping trees\n            baseline:  0/163 shared nodes, 0/163 underfilled nodes, 98.96% average load factor\n    4.65    intersect: Intersect 100000+50000 partially overlapping trees\n            intersect: 0/2002 shared nodes, 0/2002 underfilled nodes, 81.17% average load factor\n    17.16   baseline:  Intersect 100000+50000 partially overlapping trees\n            baseline:  0/1615 shared nodes, 0/1615 underfilled nodes, 99.87% average load factor\n\n#### Interleaved keys (every other key shared)\n\n    0.01    intersect: Intersect 200+100 interleaved trees\n            intersect: 0/5 shared nodes, 0/5 underfilled nodes, 65.00% average load factor\n    0.02    baseline:  Intersect 200+100 interleaved trees\n            baseline:  0/5 shared nodes, 0/5 underfilled nodes, 65.00% average load factor\n    0.17    intersect: Intersect 2000+1000 interleaved trees\n            intersect: 0/42 shared nodes, 0/42 underfilled nodes, 77.46% average load factor\n    0.28    baseline:  Intersect 2000+1000 interleaved trees\n            baseline:  0/33 shared nodes, 0/33 underfilled nodes, 97.73% average load factor\n    1.11    intersect: Intersect 20000+10000 interleaved trees\n            intersect: 0/401 shared nodes, 0/401 underfilled nodes, 81.05% average load factor\n    3.16    baseline:  Intersect 20000+10000 interleaved trees\n            baseline:  0/324 shared nodes, 0/324 underfilled nodes, 99.57% average load factor\n    12.65   intersect: Intersect 200000+100000 interleaved trees\n            intersect: 0/4002 shared nodes, 0/4002 underfilled nodes, 81.21% average load factor\n    73.05   baseline:  Intersect 200000+100000 interleaved trees\n            baseline:  0/3228 shared nodes, 0/3228 underfilled nodes, 99.93% average load factor\n\n#### Large sparse-overlap trees (1M keys each, 10 overlaps per 100k)\n\n    0.02    intersect: Intersect 1000000+1000000 sparse-overlap trees\n            intersect: 0/5 shared nodes, 0/5 underfilled nodes, 65.00% average load factor\n    327.57  baseline:  Intersect 1000000+1000000 sparse-overlap trees\n            baseline:  0/5 shared nodes, 0/5 underfilled nodes, 65.00% average load factor\n\n### forEachKeyInBoth ###\n\n#### Non-overlapping ranges (no shared keys)\n\n    0       forEachKeyInBoth: [count=0, checksum=0]\n    0       forEachKeyInBoth: [count=0, checksum=0]\n    0       forEachKeyInBoth: [count=0, checksum=0]\n    0       forEachKeyInBoth: [count=0, checksum=0]\n\n#### 50% overlapping ranges\n\n    0.01    forEachKeyInBoth: [count=50, checksum=11175]\n    0.09    forEachKeyInBoth: [count=500, checksum=1124250]\n    0.89    forEachKeyInBoth: [count=5000, checksum=112492500]\n    2.14    forEachKeyInBoth: [count=50000, checksum=11249925000]\n\n#### Random overlaps (~10% shared keys)\n\n    0.01    forEachKeyInBoth: [count=22, checksum=70248]\n    0.09    forEachKeyInBoth: [count=252, checksum=7524384]\n    1.32    forEachKeyInBoth: [count=2409, checksum=772269240]\n    9.69    forEachKeyInBoth: [count=24895, checksum=80459452812]\n\n#### Large sparse-overlap trees (1M keys each, 10 overlaps per 100k)\n\n    0.01    forEachKeyInBoth: [count=100, checksum=360003600]\n\n### forEachKeyNotIn ###\n\n#### Non-overlapping ranges (all keys survive)\n\n    0.02    forEachKeyNotIn: [count=100, checksum=4950]\n    0.41    forEachKeyNotIn: [count=1000, checksum=499500]\n    3.04    forEachKeyNotIn: [count=10000, checksum=49995000]\n    4.93    forEachKeyNotIn: [count=100000, checksum=4999950000]\n\n#### 50% overlapping ranges\n\n    0.03    forEachKeyNotIn: [count=50, checksum=1225]\n    0.18    forEachKeyNotIn: [count=500, checksum=124750]\n    0.99    forEachKeyNotIn: [count=5000, checksum=12497500]\n    7.02    forEachKeyNotIn: [count=50000, checksum=1249975000]\n\n#### Random overlaps (~10% of include removed)\n\n    0.01    forEachKeyNotIn: [count=67, checksum=83085]\n    0.07    forEachKeyNotIn: [count=743, checksum=10109320]\n    1.5     forEachKeyNotIn: [count=7492, checksum=1035797435]\n    8.29    forEachKeyNotIn: [count=75400, checksum=104318180340]\n\n#### Large sparse-overlap trees (1M keys each, 10 overlaps per 100k)\n\n    33.03   forEachKeyNotIn: [count=999900, checksum=499954499550]\n\nVersion history\n---------------\n\n### v2.1.0 ###\n\n- Introduced the new `sorted-btree/extended` entry point that holds `BTreeEx`. The default `sorted-btree` export stays lean (tree-shakable) while the extended build keeps parity with the old API surface.\n  - Thanks to Microsoft, Taylor Williams and Craig Macomber for these new features.\n- Added a dedicated `sorted-btree/extended/diffAgainst` entry so apps can import just the standalone diff helper without pulling in `BTreeEx`.\n- **Breaking change:** `diffAgainst` is no longer available on the default `BTree` export. Switch to `BTreeEx#diffAgainst` (imported from `sorted-btree/extended`) or the standalone `diffAgainst(treeA, treeB, ...)` helper to continue using the diff API.\n- `checkValid` now has a parameter `checkOrdering = false` for more thorough checking\n\n### v1.8.0 ###\n\n- Argument of `ISortedSetSource.nextHigherKey(key: K)` changed to `key?: K`\n- Argument of `ISortedSetSource.nextLowerKey(key: K)` changed to `key?: K`\n- Argument of `ISortedMapSource.nextHigherPair(key: K)` changed to `key?: K`\n- Argument of `ISortedMapSource.nextLowerPair(key: K)` changed to `key?: K`\n\n### v1.7.0 ###\n\n- Added `asSet` method, defined as follows: `asSet<K,V>(btree: BTree<K,V>): undefined extends V ? ISortedSet<K> : unknown { return btree as any; }`\n\n### v1.6.2 ###\n\n- Bug fixes: two rare situations were discovered in which shared nodes could fail to be marked as shared, and as a result, mutations could affect copies that should have been completely separate.\n- Bug fix: greedyClone(true) did not clone shared nodes recursively.\n\n### v1.6.0 ###\n\n- Added `BTree.getPairOrNextLower` and `BTree.getPairOrNextHigher` methods (PR #23)\n- Added optional second parameter `reusedArray` to `nextHigherPair` and `nextLowerPair` (PR #23)\n- Optimizations added in `diffAgainst` (PR #24) and `nextLowerPair` (PR #23)\n\n### v1.5.0 ###\n\n- Added `BTree.diffAgainst` method (PR #16)\n- Added `simpleComparator` function (PR #15)\n- Improved `defaultComparator` (PR #15) to support edge cases better. Most notably, heterogenous key types will no longer cause trouble such as failure to find keys that are, in fact, present in the tree. `BTree` is slightly slower using the new default comparator, but the benchmarks above have not been refreshed. For maximum performance, use `simpleComparator` or a custom comparator as the second constructor parameter. The simplest possible comparator is `(a, b) => a - b`, which works for finite numbers only.\n\n### v1.4.0 ###\n\n- Now built as CommonJS module instead of UMD module, for better compatibility with webpack. No semantic change.\n\n### v1.3.0 ###\n\n- Now built with TypeScript v3.8.3. No semantic change.\n\n### v1.2.4 ###\n\n- Issue #9 fixed: `nextLowerPair(0)` was being treated like `nextLowerPair(undefined)`, and `nextLowerPair(undefined)` was returning the second-highest pair when it should have returned the highest pair.\n\n### v1.2.3 ###\n\n- Important bug fix in deletion code avoids occasional tree corruption that can occur after a series of delete operations\n- Add `typings` option in package.json so that `tsc` works for end-users\n\n### v1.2 ###\n\n- Added a complete lattice of interfaces as described above.\n- Interfaces have been moved to a separate *interfaces.d.ts* file which is re-exported by the main module in *b+tree.d.ts*.\n\n### v1.1 ###\n\n- Added `isEmpty` property getter\n- Added `nextHigherPair`, `nextHigherKey`, `nextLowerPair`, `nextLowerKey` methods\n- Added `editAll`, which is like `editRange` but touches all keys\n- Added `deleteKeys` for deleting a sequence of keys (iterable)\n- Added persistent methods `with`, `withPairs`, `withKeys`, `without`, `withoutKeys`, `withoutRange`\n- Added functional methods `filter`, `reduce`, `mapValues`\n- Added `greedyClone` for cloning nodes immediately, to avoid marking the original tree as shared which slows it down.\n- Relaxed type constraint on second parameter of `entries`/`entriesReversed`\n- Renamed `setRange` to `setPairs` for logical consistency with `withoutPairs` and `withoutRange`. The old name is deprecated but added to the `prototype` as a synonym. `setPairs` returns the number of pairs added instead of `this`.\n- Added export `EmptyBTree`, a frozen empty tree\n\n### v1.0: Initial version ###\n\n- With fast cloning and all that good stuff\n\n\n### Endnote ###\n\n♥ This package was made to help people [learn TypeScript & React](http://typescript-react-primer.loyc.net/).\n\nAre you a C# developer? You might like the similar data structures I made for C# ([BDictionary, BList, etc.](core.loyc.net/collections/alists-part2)), and other [dynamically persistent collection types](http://core.loyc.net/collections/).\n\nYou might think that the package name \"sorted btree\" is overly redundant, but I _did_ make a data structure similar to B+ Tree that is _not_ sorted. I called it the [A-List](http://core.loyc.net/collections/alists-part1) (C#). But yeah, the names `btree` and `bplustree` were already taken, so what was I supposed to do, right?\n","readmeFilename":"readme.md"}