{"ScriptPreparationCode":"function BlazeHash() {\r\n let key = String(performance.now()), seed = 0, keyLength = 6;\r\n let h1 = 0xcafebabe ^ seed, h2 = 0xdeadbeef ^ seed, i = 0;\r\n for(let b = keyLength \u0026 -8; i \u003C b; i \u002B= 8) {\r\n h1 ^= key[i\u002B3] \u003C\u003C 24 | key[i\u002B2] \u003C\u003C 16 | key[i\u002B1] \u003C\u003C 8 | key[i ];\r\n h2 ^= key[i\u002B7] \u003C\u003C 24 | key[i\u002B6] \u003C\u003C 16 | key[i\u002B5] \u003C\u003C 8 | key[i\u002B4];\r\n h1 ^= Math.imul(h2 ^ (h2 \u003E\u003E\u003E 15), 0xca9b4735);\r\n h2 ^= Math.imul(h1 ^ (h1 \u003E\u003E\u003E 16), 0x38b34ae5);\r\n }\r\n switch(keyLength \u0026 7) {\r\n case 7: h2 ^= key[i\u002B6] \u003C\u003C 16;\r\n case 6: h2 ^= key[i\u002B5] \u003C\u003C 8;\r\n case 5: h2 ^= key[i\u002B4];\r\n case 4: h1 ^= key[i\u002B3] \u003C\u003C 24;\r\n case 3: h1 ^= key[i\u002B2] \u003C\u003C 16;\r\n case 2: h1 ^= key[i\u002B1] \u003C\u003C 8;\r\n case 1: h1 ^= key[i];\r\n h1 ^= Math.imul(h2 ^ (h2 \u003E\u003E\u003E 15), 0xca9b4735);\r\n h2 ^= Math.imul(h1 ^ (h1 \u003E\u003E\u003E 16), 0x38b34ae5);\r\n }\r\n h1 ^= keyLength ^ h2;\r\n h1 ^= Math.imul(h1 ^ (h2 \u003E\u003E\u003E 15), 0x735a2d97);\r\n h2 ^= Math.imul(h2 ^ (h1 \u003E\u003E\u003E 15), 0xcaf649a9);\r\n h1 ^= h2 \u003E\u003E\u003E 16; h2 ^= h1 \u003E\u003E\u003E 16;\r\n return [h1 \u003E\u003E\u003E 0, h2 \u003E\u003E\u003E 0];\r\n //return 2097152 * (h2 \u003E\u003E\u003E 0) \u002B (h1 \u003E\u003E\u003E 11);\r\n}\r\n\r\nfunction javaStringHash() {\r\n let key = String(performance.now()), keyLength = 6;\r\n var hash = 0;\r\n for (var i = 0; i \u003C keyLength; i\u002B\u002B) {\r\n hash = ((hash \u003C\u003C 5) - hash) \u002B key.charCodeAt(i);\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n return hash;\r\n}\r\n\r\nfunction djb2() {\r\n let key = String(performance.now()), keyLength = 6, hash = 5381;\r\n for (var i = 0; i \u003C keyLength; i\u002B\u002B) {\r\n hash = ((hash \u003C\u003C 5) \u002B hash) \u002B key.charCodeAt(i);\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n return hash;\r\n}\r\n\r\n\r\nfunction cyrb53() {\r\n let key = String(performance.now()), seed = 0, keyLength = 6;\r\n var h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\r\n \r\n for (var i = 0; i \u003C keyLength; i\u002B\u002B) {\r\n var ch = key.charCodeAt(i);\r\n h1 = Math.imul(h1 ^ ch, 2654435761);\r\n h2 = Math.imul(h2 ^ ch, 1597334677);\r\n }\r\n\r\n h1 = Math.imul(h1 ^ (h1 \u003E\u003E\u003E 16), 2246822507) ^ Math.imul(h2 ^ (h2 \u003E\u003E\u003E 13), 3266489909);\r\n h2 = Math.imul(h2 ^ (h2 \u003E\u003E\u003E 16), 2246822507) ^ Math.imul(h1 ^ (h1 \u003E\u003E\u003E 13), 3266489909);\r\n\r\n return 4294967296 * (2097151 \u0026 h2) \u002B (h1 \u003E\u003E\u003E 0);\r\n};\r\n\r\n\r\nconst cyrb53_beta1 = function() {\r\n let key = String(performance.now()), seed = 0, keyLength = 6;\r\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\r\n for(let i = 0, ch; i \u003C keyLength; i\u002B\u002B) {\r\n ch = key.charCodeAt(i);\r\n h1 = Math.imul(h1 ^ ch, 2654435761);\r\n h2 = Math.imul(h2 ^ ch, 1597334677);\r\n }\r\n h1 = Math.imul(h1 ^ (h1 \u003E\u003E\u003E 16), 2246822507);\r\n h1 ^= Math.imul(h2 ^ (h2 \u003E\u003E\u003E 13), 3266489909);\r\n h2 = Math.imul(h2 ^ (h2 \u003E\u003E\u003E 16), 2246822507);\r\n h2 ^= Math.imul(h1 ^ (h1 \u003E\u003E\u003E 13), 3266489909);\r\n return 4294967296 * (2097151 \u0026 h2) \u002B (h1 \u003E\u003E\u003E 0);\r\n};\r\n\r\n/*\r\n cyrb53a beta (c) 2023 bryc (github.com/bryc)\r\n License: Public domain (or MIT if needed). Attribution appreciated.\r\n This is a work-in-progress, and changes to the algorithm are expected.\r\n The original cyrb53 has a slight mixing bias in the low bits of h1.\r\n This doesn\u0027t affect collision rate, but I want to try to improve it.\r\n This new version has preliminary improvements in avalanche behavior.\r\n*/\r\nconst cyrb53a_beta2 = function() {\r\n let key = String(performance.now()), seed = 0, keyLength = 6;\r\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\r\n for(let i = 0, ch; i \u003C keyLength; i\u002B\u002B) {\r\n ch = key.charCodeAt(i);\r\n h1 = Math.imul(h1 ^ ch, 0x85ebca77);\r\n h2 = Math.imul(h2 ^ ch, 0xc2b2ae3d);\r\n }\r\n h1 ^= Math.imul(h1 ^ (h2 \u003E\u003E\u003E 15), 0x735a2d97);\r\n h2 ^= Math.imul(h2 ^ (h1 \u003E\u003E\u003E 15), 0xcaf649a9);\r\n h1 ^= h2 \u003E\u003E\u003E 16; h2 ^= h1 \u003E\u003E\u003E 16;\r\n return 2097152 * (h2 \u003E\u003E\u003E 0) \u002B (h1 \u003E\u003E\u003E 11);\r\n};\r\n\r\nfunction splitmix32() {\r\n let a = performance.now()\r\n a |= 0; a = a \u002B 0x9e3779b9 | 0;\r\n var t = a ^ a \u003E\u003E\u003E 16; t = Math.imul(t, 0x21f0aaad);\r\n t = t ^ t \u003E\u003E\u003E 15; t = Math.imul(t, 0x735a2d97);\r\n return ((t = t ^ t \u003E\u003E\u003E 15) \u003E\u003E\u003E 0) / 4294967296;\r\n\r\n};\r\n\r\n\r\nfunction MurmurHash1() {\r\n let key = String(performance.now()), seed = 0, keyLength = 6, m = 3332679571, h = Math.imul(key.length, m) ^ seed;\r\n\r\n for(var i = 0, b = keyLength \u0026 -4; i \u003C b; i \u002B= 4) {\r\n h \u002B= key[i\u002B3] \u003C\u003C 24 | key[i\u002B2] \u003C\u003C 16 | key[i\u002B1] \u003C\u003C 8 | key[i];\r\n h = Math.imul(h, m); h ^= h \u003E\u003E\u003E 16;\r\n }\r\n\r\n switch(keyLength \u0026 3) {\r\n case 3: h \u002B= key[i\u002B2] \u003C\u003C 16;\r\n case 2: h \u002B= key[i\u002B1] \u003C\u003C 8;\r\n case 1: h \u002B= key[i];\r\n h = Math.imul(h, m); h ^= h \u003E\u003E\u003E 16;\r\n }\r\n\r\n h = Math.imul(h, m); h ^= h \u003E\u003E\u003E 10;\r\n h = Math.imul(h, m); h ^= h \u003E\u003E\u003E 17;\r\n\r\n return h \u003E\u003E\u003E 0;\r\n};\r\n\r\n","TestCases":[{"Name":"Blaze","Code":"BlazeHash()","IsDeferred":false},{"Name":"Java","Code":"javaStringHash()","IsDeferred":false},{"Name":"djb2","Code":"djb2()","IsDeferred":false},{"Name":"cyrb53","Code":"cyrb53()","IsDeferred":false},{"Name":"cyrb53_beta1","Code":"cyrb53_beta1()","IsDeferred":false},{"Name":"cyrb53a_beta2","Code":"cyrb53a_beta2()","IsDeferred":false},{"Name":"crypto","Code":"crypto.randomUUID()","IsDeferred":false},{"Name":"splitmix32","Code":"splitmix32()","IsDeferred":false},{"Name":"MurmurHash1","Code":"MurmurHash1()","IsDeferred":false}]}