@cloudcome/utils-core 1.21.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array.cjs.map +1 -1
- package/dist/array.mjs.map +1 -1
- package/dist/async.cjs +1 -0
- package/dist/async.cjs.map +1 -1
- package/dist/async.mjs +1 -0
- package/dist/async.mjs.map +1 -1
- package/dist/base64.cjs.map +1 -1
- package/dist/base64.mjs.map +1 -1
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.mjs.map +1 -1
- package/dist/color.cjs.map +1 -1
- package/dist/color.mjs.map +1 -1
- package/dist/crypto.cjs.map +1 -1
- package/dist/crypto.mjs.map +1 -1
- package/dist/date.cjs.map +1 -1
- package/dist/date.mjs.map +1 -1
- package/dist/dict.cjs.map +1 -1
- package/dist/dict.mjs.map +1 -1
- package/dist/easing.cjs.map +1 -1
- package/dist/easing.mjs.map +1 -1
- package/dist/emitter.cjs.map +1 -1
- package/dist/emitter.mjs.map +1 -1
- package/dist/env.cjs.map +1 -1
- package/dist/env.mjs.map +1 -1
- package/dist/error.cjs.map +1 -1
- package/dist/error.mjs.map +1 -1
- package/dist/function.cjs.map +1 -1
- package/dist/function.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/object.cjs.map +1 -1
- package/dist/object.mjs.map +1 -1
- package/dist/path.cjs.map +1 -1
- package/dist/path.mjs.map +1 -1
- package/dist/promise.cjs.map +1 -1
- package/dist/promise.mjs.map +1 -1
- package/dist/qs.cjs.map +1 -1
- package/dist/qs.mjs.map +1 -1
- package/dist/regexp.cjs.map +1 -1
- package/dist/regexp.mjs.map +1 -1
- package/dist/string2.cjs.map +1 -1
- package/dist/string2.mjs.map +1 -1
- package/dist/time.cjs.map +1 -1
- package/dist/time.mjs.map +1 -1
- package/dist/timer.cjs.map +1 -1
- package/dist/timer.d.ts +1 -2
- package/dist/timer.mjs.map +1 -1
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.mjs.map +1 -1
- package/dist/try.cjs.map +1 -1
- package/dist/try.mjs.map +1 -1
- package/dist/type.cjs.map +1 -1
- package/dist/type.mjs.map +1 -1
- package/dist/unique.cjs.map +1 -1
- package/dist/unique.mjs.map +1 -1
- package/dist/url.cjs.map +1 -1
- package/dist/url.mjs.map +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +1 -9
- package/dist/exception.cjs +0 -40
- package/dist/exception.cjs.map +0 -1
- package/dist/exception.d.ts +0 -31
- package/dist/exception.mjs +0 -39
- package/dist/exception.mjs.map +0 -1
package/dist/color.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.mjs","names":[],"sources":["../src/color/luminance.ts","../src/color/contrast.ts","../src/color/distance.ts","../src/color/helpers.ts","../src/color/hex-rgb.ts","../src/color/rgb-hsl.ts","../src/color/hex-hsl.ts","../src/color/rgb-hsv.ts","../src/color/hex-hsv.ts","../src/color/rgb-hwb.ts","../src/color/hex-hwb.ts","../src/color/hsl-lighten.ts","../src/color/hsv-brighten.ts","../src/color/mix.ts","../src/color/rgb-xyz.ts","../src/color/xyz-lab.ts","../src/color/rgb-lab.ts","../src/color/rgb-whiter.ts"],"sourcesContent":["import type { RGB } from './types';\n\n/**\n * 计算RGB颜色的相对亮度(符合WCAG 2.1标准)\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {number} 相对亮度值(0-1之间)\n * @see https://www.w3.org/TR/WCAG21/#dfn-relative-luminance\n * @example\n * luminance({r: 255, g: 255, b: 255}) // 返回1\n */\nexport function luminance({ r, g, b }: RGB) {\n const a = [r, g, b].map((v) => {\n const vFinal = v / 255;\n return vFinal <= 0.03928 ? vFinal / 12.92 : ((vFinal + 0.055) / 1.055) ** 2.4;\n });\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n}\n","import { luminance } from './luminance';\nimport type { RGB } from './types';\n\n/**\n * 计算两个颜色之间的对比度比率(符合WCAG 2.1标准)\n * @param rgb1 第一个RGB颜色对象(分量范围0-255)\n * @param rgb2 第二个RGB颜色对象(分量范围0-255)\n * @returns {number} 对比度比率,范围1-21(1:1 到 21:1)\n * @example\n * contrast({r: 0, g: 0, b: 0}, {r: 255, g: 255, b: 255}) // 返回21\n */\nexport function contrast(rgb1: RGB, rgb2: RGB) {\n const lum1 = luminance(rgb1);\n const lum2 = luminance(rgb2);\n\n const brightest = Math.max(lum1, lum2);\n const darkest = Math.min(lum1, lum2);\n\n return (brightest + 0.05) / (darkest + 0.05);\n}\n","import type { LAB } from './types';\n\n// calculate the perceptual distance between colors in CIELAB\n// https://github.com/THEjoezack/ColorMine/blob/master/ColorMine/ColorSpaces/Comparisons/Cie94Comparison.cs\n\n/**\n * 计算两个颜色之间的距离(距离越小相似度越高),值范围 [0, 1]\n * @param {LAB} labA\n * @param {LAB} labB\n * @returns {number}\n */\nexport function distance(labA: LAB, labB: LAB) {\n const deltaL = labA.l - labB.l;\n const deltaA = labA.a - labB.a;\n const deltaB = labA.b - labB.b;\n const c1 = Math.sqrt(labA.a * labA.a + labA.b * labA.b);\n const c2 = Math.sqrt(labB.a * labB.a + labB.b * labB.b);\n const deltaC = c1 - c2;\n let deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;\n deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);\n const sc = 1.0 + 0.045 * c1;\n const sh = 1.0 + 0.015 * c1;\n const deltaLKlsl = deltaL / 1.0;\n const deltaCkcsc = deltaC / sc;\n const deltaHkhsh = deltaH / sh;\n const i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;\n return (i < 0 ? 0 : Math.sqrt(i)) / 100;\n}\n","import type { RGB } from './types';\n\nconst { min, max } = Math;\n\nexport function rgbToHue({ r, g, b }: RGB): [number, number, number, number] {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const rgbMax = max(r, g, b);\n const rgbMin = min(r, g, b);\n const rgbDiff = rgbMax - rgbMin;\n const h =\n rgbDiff === 0\n ? 0\n : rgbDiff && rgbMax === r\n ? (g - b) / rgbDiff\n : rgbMax === g\n ? 2 + (b - r) / rgbDiff\n : 4 + (r - g) / rgbDiff;\n\n return [60 * (h < 0 ? h + 6 : h), rgbMax, rgbMin, rgbDiff];\n}\n","import type { HEX, RGB } from './types';\n\n/**\n * 将HEX颜色字符串转换为RGB颜色对象\n * @param hex HEX颜色字符串,支持3位或6位格式(例如#f00或#ff0000)\n * @returns {RGB} 对应的RGB颜色对象\n * @throws {SyntaxError} 当颜色格式不符合规范时抛出\n * @example\n * hexToRgb('#f00') // returns {r: 255, g: 0, b: 0}\n */\nexport function hexToRgb(hex: HEX): RGB {\n const reg = hex.length === 4 ? /^#(.)(.)(.)$/ : /^#(.{2})(.{2})(.{2})$/;\n const result = reg.exec(hex);\n\n if (!result) throw new SyntaxError(`颜色(${hex})表达式有误`);\n\n const [_, r, g, b] = result;\n\n return {\n r: Number.parseInt(r.padEnd(2, r), 16),\n g: Number.parseInt(g.padEnd(2, g), 16),\n b: Number.parseInt(b.padEnd(2, b), 16),\n };\n}\n\nfunction to16(n: number) {\n return Math.round(n).toString(16).padStart(2, '0');\n}\n\n/**\n * 将RGB颜色对象转换为HEX颜色字符串\n * @param rgb RGB颜色对象\n * @returns {HEX} 6位HEX颜色字符串(带#前缀)\n * @example\n * rgbToHex({r: 255, g: 0, b: 0}) // returns '#ff0000'\n */\nexport function rgbToHex(rgb: RGB): HEX {\n return `#${to16(rgb.r)}${to16(rgb.g)}${to16(rgb.b)}`;\n}\n","// @ref https://www.w3schools.com/lib/w3color.js\nimport { rgbToHue } from './helpers';\nimport type { HSL, RGB } from './types';\n\nconst { min, max } = Math;\n\n/**\n * 将RGB颜色转换为HSL颜色空间\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {HSL} HSL颜色对象,其中:\n * h: 色相(0-360度)\n * s: 饱和度(0-100%)\n * l: 亮度(0-100%)\n * @example\n * rgbToHsl({r: 255, g: 0, b: 0}) // returns {h: 0, s: 100, l: 50}\n */\nexport function rgbToHsl(rgb: RGB): HSL {\n const [hue, max, min, diff] = rgbToHue(rgb);\n const l = (2 * max - diff) / 2;\n const s = min === max ? 0 : l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n\n return {\n h: hue,\n s: s * 100,\n l: l * 100,\n };\n}\n\n// @ref https://www.30secondsofcode.org/js/s/hsl-to-rgb/\n/**\n * 将HSL颜色转换回RGB颜色空间\n * @param hsl HSL颜色对象\n * @param hsl.h 色相(0-360度)\n * @param hsl.s 饱和度(0-100%)\n * @param hsl.l 亮度(0-100%)\n * @returns {RGB} RGB颜色对象(分量范围0-255)\n * @example\n * hslToRgb({h: 0, s: 100, l: 50}) // returns {r: 255, g: 0, b: 0}\n */\nexport function hslToRgb({ h, s, l }: HSL): RGB {\n s /= 100;\n l /= 100;\n\n const a = s * min(l, 1 - l);\n const k = (n: number) => (n + h / 30) % 12;\n const f = (n: number) => l - a * max(-1, min(k(n) - 3, min(9 - k(n), 1)));\n\n return {\n r: 255 * f(0),\n g: 255 * f(8),\n b: 255 * f(4),\n };\n}\n","import { hexToRgb, rgbToHex } from './hex-rgb';\nimport { hslToRgb, rgbToHsl } from './rgb-hsl';\nimport type { HEX, HSL } from './types';\n\nexport function hslToHex(hsl: HSL): HEX {\n return rgbToHex(hslToRgb(hsl));\n}\n\nexport function hexToHsl(hex: HEX): HSL {\n return rgbToHsl(hexToRgb(hex));\n}\n","import { rgbToHue } from './helpers';\nimport type { HSV, RGB } from './types';\n\nconst { min, max } = Math;\n\n// @ref https://www.30secondsofcode.org/js/s/rgb-to-hsb/\n/**\n * 将RGB颜色转换为HSV颜色空间\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {HSV} HSV颜色对象:\n * h: 色相(0-360度)\n * s: 饱和度(0-100%)\n * v: 明度(0-100%)\n * @see https://en.wikipedia.org/wiki/HSL_and_HSV\n * @example\n * rgbToHsv({r: 255, g: 0, b: 0}) // {h: 0, s: 100, v: 100}\n */\nexport function rgbToHsv(rgb: RGB): HSV {\n const [hue, max, _min, diff] = rgbToHue(rgb);\n\n return {\n h: hue,\n s: max && (diff / max) * 100,\n v: max * 100,\n };\n}\n\n// @ref https://www.30secondsofcode.org/js/s/hsb-to-rgb/\n/**\n * 将HSV颜色转换回RGB颜色空间\n * @param hsv HSV颜色对象\n * @param hsv.h 色相(0-360度)\n * @param hsv.s 饱和度(0-100%)\n * @param hsv.v 明度(0-100%)\n * @returns {RGB} RGB颜色对象(分量范围0-255)\n * @see https://www.rapidtables.com/convert/color/hsv-to-rgb.html\n * @example\n * hsvToRgb({h: 0, s: 100, v: 100}) // {r: 255, g: 0, b: 0}\n */\nexport function hsvToRgb({ h, s, v }: HSV): RGB {\n s /= 100;\n v /= 100;\n\n const k = (n: number) => (n + h / 60) % 6;\n const f = (n: number) => v * (1 - s * max(0, min(k(n), 4 - k(n), 1)));\n\n return {\n r: 255 * f(5),\n g: 255 * f(3),\n b: 255 * f(1),\n };\n}\n","import { hexToRgb, rgbToHex } from './hex-rgb';\nimport { hsvToRgb, rgbToHsv } from './rgb-hsv';\nimport type { HEX, HSV } from './types';\n\n/**\n * 将HEX颜色转换为HSV颜色空间\n * @param hex HEX颜色字符串(支持3位或6位格式)\n * @returns {HSV} HSV颜色对象,包含:\n * h: 色相(0-360度)\n * s: 饱和度(0-100%)\n * v: 明度(0-100%)\n * @example\n * hexToHsv('#ff0000') // returns {h: 0, s: 100, v: 100}\n */\nexport function hexToHsv(hex: HEX): HSV {\n return rgbToHsv(hexToRgb(hex));\n}\n\n/**\n * 将HSV颜色转换回HEX字符串\n * @param hsv HSV颜色对象\n * @returns {HEX} 6位HEX颜色字符串(带#前缀)\n * @example\n * hsvToHex({h: 0, s: 100, v: 100}) // returns '#ff0000'\n */\nexport function hsvToHex(hsv: HSV): HEX {\n return rgbToHex(hsvToRgb(hsv));\n}\n","import { rgbToHue } from './helpers';\nimport { hslToRgb } from './rgb-hsl';\nimport type { HWB, RGB } from './types';\n\n/**\n * 将RGB颜色转换为HWB颜色空间\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {HWB} HWB颜色对象:\n * h: 色相(0-360度)\n * w: 白度(0-100%)\n * b: 黑度(0-100%)\n * @see https://www.w3.org/TR/css-color-4/#hwb-to-rgb\n * @example\n * rgbToHwb({r: 255, g: 0, b: 0}) // {h: 0, w: 0, b: 0}\n */\nexport function rgbToHwb(rgb: RGB): HWB {\n const [hue, max, min, _diff] = rgbToHue(rgb);\n return {\n h: hue,\n w: min * 100,\n b: (1 - max) * 100,\n };\n}\n\n// @ref https://www.w3schools.com/lib/w3color.js\n/**\n * 将HWB颜色转换回RGB颜色空间\n * @param hwb HWB颜色对象\n * @param hwb.h 色相(0-360度)\n * @param hwb.w 白度(0-100%)\n * @param hwb.b 黑度(0-100%)\n * @returns {RGB} RGB颜色对象(分量范围0-255)\n * @see https://en.wikipedia.org/wiki/HWB_color_model\n * @example\n * hwbToRgb({h: 0, w: 0, b: 0}) // {r: 255, g: 0, b: 0}\n */\nexport function hwbToRgb({ h, w: white, b: black }: HWB) {\n white /= 100;\n black /= 100;\n\n const { r, g, b } = hslToRgb({ h, s: 100, l: 50 });\n const tot = white + black;\n\n if (tot > 1) {\n white = white / tot;\n black = black / tot;\n }\n\n const f = (n: number) => ((n / 255) * (1 - white - black) + white) * 255;\n\n return {\n r: f(r),\n g: f(g),\n b: f(b),\n };\n}\n","import { hexToRgb, rgbToHex } from './hex-rgb';\nimport { hwbToRgb, rgbToHwb } from './rgb-hwb';\nimport type { HEX, HWB } from './types';\n\n/**\n * 将HWB颜色转换为HEX字符串\n * @param hwb HWB颜色对象\n * @param hwb.h 色相(0-360度)\n * @param hwb.w 白度(0-100%)\n * @param hwb.b 黑度(0-100%)\n * @returns {HEX} 6位HEX颜色字符串(带#前缀)\n * @example\n * hwbToHex({h: 0, w: 0, b: 0}) // returns '#ff0000'\n */\nexport function hwbToHex(hwb: HWB): HEX {\n return rgbToHex(hwbToRgb(hwb));\n}\n\n/**\n * 将HEX颜色转换为HWB颜色空间\n * @param hex HEX颜色字符串(支持3位或6位格式)\n * @returns {HWB} HWB颜色对象,包含:\n * h: 色相(0-360度)\n * w: 白度(0-100%)\n * b: 黑度(0-100%)\n * @example\n * hexToHwb('#ff0000') // returns {h: 0, w: 0, b: 0}\n */\nexport function hexToHwb(hex: HEX): HWB {\n return rgbToHwb(hexToRgb(hex));\n}\n","import type { HSL } from './types';\n\n/**\n * 通过HSL颜色空间调整颜色亮度\n * @param hsl 原始 HSL 颜色\n * @param value 亮度调整系数(0-1之间,0.1表示增加10%亮度)\n * @returns {HSL} 调整后的 HSL 颜色\n * @example\n * hslLighten({h: 300, s: 33, l: 44}, 0.2) // 返回亮度增加20%后的颜色\n */\nexport function hslLighten(hsl: HSL, value: number): HSL {\n const hslFinal = { ...hsl };\n hslFinal.l = hslFinal.l * (1 + value);\n return hslFinal;\n}\n","import type { HSV } from './types';\n\n/**\n * 通过HSV颜色空间调整颜色明度\n * @param hsv 原始HSV颜色对象\n * @param value 明度调整系数(-1到1之间):\n * - 正值增加明度(如0.2表示+20%)\n * - 负值降低明度(如-0.1表示-10%)\n * @returns {HSV} 调整后的HSV颜色对象(v值范围0-100%)\n * @example\n * hsvBrighten({h: 0, s: 100, v: 50}, 0.3) // 返回{h: 0, s: 100, v: 65}\n */\nexport function hsvBrighten(hsv: HSV, value: number): HSV {\n const hsvFinal = { ...hsv };\n hsvFinal.v = hsvFinal.v * (1 + value);\n return hsvFinal;\n}\n","import type { HSL, HSV, RGB } from './types';\n\n/**\n * 颜色混合函数(支持RGB/HSL/HSV色彩模型)\n * @template T 颜色类型,支持RGB、HSL或HSV对象\n * @param {T} a 第一个颜色对象\n * @param {T} b 第二个颜色对象\n * @param {number} [weight=0.5] 混合权重(0-1之间):\n * - 0 表示完全使用第一个颜色\n * - 1 表示完全使用第二个颜色\n * @returns {T} 线性混合后的新颜色对象\n * @example\n * // RGB混合示例\n * mix({r: 255, g: 0, b: 0}, {r: 0, g: 0, b: 255}, 0.5) // 返回紫色\n *\n * // HSL混合示例\n * mix({h: 0, s: 100, l: 50}, {h: 120, s: 100, l: 50}, 0.3)\n */\nexport function mix<T extends RGB | HSV | HSL>(a: T, b: T, weight = 0.5): T {\n return Object.keys(a).reduce((acc, key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n acc[key] = (b[key] - a[key]) * weight + a[key];\n return acc;\n }, {} as T);\n}\n","// https://stackoverflow.com/a/73998199\n\nimport type { RGB, XYZ } from './types';\n\n/**\n * 将RGB颜色转换为CIE 1931 XYZ颜色空间(D65白点,2°观察者)\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {XYZ} XYZ颜色对象:\n * x: 约0-95.047\n * y: 约0-100.0\n * z: 约0-108.883\n * @see https://en.wikipedia.org/wiki/CIE_1931_color_space\n * @example\n * rgbToXyz({r: 255, g: 255, b: 255}) // {x: 95.047, y: 100.0, z: 108.883}\n */\nexport function rgbToXyz(rgb: RGB): XYZ {\n const { r, g, b } = rgb;\n const [var_R, var_G, var_B] = [r, g, b]\n .map((x) => x / 255)\n .map((x) => (x > 0.04045 ? ((x + 0.055) / 1.055) ** 2.4 : x / 12.92))\n .map((x) => x * 100);\n\n return {\n // Observer. = 2°, Illuminant = D65\n x: var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805,\n y: var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722,\n z: var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505,\n };\n}\n\n/**\n * 将XYZ颜色转换回RGB颜色空间(可能超出常规范围)\n * @param xyz XYZ颜色对象\n * @returns {RGB} RGB颜色对象(分量可能超出0-255范围)\n * @see https://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html\n * @example\n * xyzToRgb({x: 95.047, y: 100.0, z: 108.883}) // {r: 255, g: 255, b: 255}\n */\nexport function xyzToRgb(xyz: XYZ): RGB {\n const { x, y, z } = xyz;\n\n //X, Y and Z input refer to a D65/2° standard illuminant.\n //sR, sG and sB (standard RGB) output range = 0 ÷ 255\n\n const var_X = x / 100;\n const var_Y = y / 100;\n const var_Z = z / 100;\n\n const var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986;\n const var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415;\n const var_B = var_X * 0.0557 + var_Y * -0.204 + var_Z * 1.057;\n\n const [r, g, b] = [var_R, var_G, var_B]\n .map((n) => (n > 0.0031308 ? 1.055 * n ** (1 / 2.4) - 0.055 : 12.92 * n))\n .map((n) => n * 255);\n\n return {\n r,\n g,\n b,\n };\n}\n","// https://stackoverflow.com/a/73998199\n\nimport type { LAB, XYZ } from './types';\n\nconst ref_X = 95.047;\nconst ref_Y = 100.0;\nconst ref_Z = 108.883;\n\n/**\n * 将XYZ颜色转换为Lab颜色空间(CIE 1976 L*a*b*,D65白点)\n * @param xyz XYZ颜色对象(参考值:D65白点X=95.047,Y=100,Z=108.883)\n * @returns {LAB} Lab颜色对象:\n * l: 明度(0-100)\n * a: 绿-红分量(典型范围-128到127)\n * b: 蓝-黄分量(典型范围-128到127)\n * @see https://en.wikipedia.org/wiki/CIELAB_color_space\n * @example\n * xyzToLab({x: 95.047, y: 100.0, z: 108.883}) // {l: 100, a: 0, b: 0}\n */\nexport function xyzToLab(xyz: XYZ): LAB {\n const { x, y, z } = xyz;\n const [var_X, var_Y, var_Z] = [x / ref_X, y / ref_Y, z / ref_Z].map((a) =>\n a > 0.008856 ? a ** (1 / 3) : 7.787 * a + 16 / 116,\n );\n\n const l = 116 * var_Y - 16;\n const a = 500 * (var_X - var_Y);\n const b = 200 * (var_Y - var_Z);\n\n return { l, a, b };\n}\n\n/**\n * 将Lab颜色转换回XYZ颜色空间\n * @param lab Lab颜色对象\n * @param lab.l 明度(0-100)\n * @param lab.a 绿-红分量(典型范围-128到127)\n * @param lab.b 蓝-黄分量(典型范围-128到127)\n * @returns {XYZ} XYZ颜色对象(基于D65白点)\n * @see https://www.easyrgb.com/en/math.php\n * @example\n * labToXyz({l: 100, a: 0, b: 0}) // {x: 95.047, y: 100.0, z: 108.883}\n */\nexport function labToXyz(lab: LAB): XYZ {\n const { l, a, b } = lab;\n\n const var_Y = (l + 16) / 116;\n const var_X = a / 500 + var_Y;\n const var_Z = var_Y - b / 200;\n\n const [X, Y, Z] = [var_X, var_Y, var_Z].map((n) => (n ** 3 > 0.008856 ? n ** 3 : (n - 16 / 116) / 7.787));\n\n return { x: X * ref_X, y: Y * ref_Y, z: Z * ref_Z };\n}\n","import { rgbToXyz, xyzToRgb } from './rgb-xyz';\nimport type { LAB, RGB } from './types';\nimport { labToXyz, xyzToLab } from './xyz-lab';\n\n/**\n * 将RGB颜色转换为Lab颜色空间(CIE 1976标准)\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {LAB} Lab颜色对象:\n * l: 明度(0-100)\n * a: 绿-红分量(-128到127)\n * b: 蓝-黄分量(-128到127)\n * @see https://en.wikipedia.org/wiki/CIELAB_color_space\n * @example\n * rgbToLab({r: 255, g: 0, b: 0}) // {l: 53.24, a: 80.09, b: 67.20}\n */\nexport function rgbToLab(rgb: RGB): LAB {\n return xyzToLab(rgbToXyz(rgb));\n}\n\n/**\n * 将Lab颜色转换回RGB颜色空间\n * @param lab Lab颜色对象\n * @param lab.l 明度(0-100)\n * @param lab.a 绿-红分量(-128到127)\n * @param lab.b 蓝-黄分量(-128到127)\n * @returns {RGB} RGB颜色对象(分量可能超出0-255范围)\n * @see https://www.easyrgb.com/en/math.php\n * @example\n * labToRgb({l: 53.24, a: 80.09, b: 67.20}) // {r: 255, g: 0, b: 0}\n */\nexport function labToRgb(lab: LAB): RGB {\n return xyzToRgb(labToXyz(lab));\n}\n","import { mix } from './mix';\nimport type { RGB } from './types';\n\nconst { abs } = Math;\n\nconst whiteRGB: RGB = { r: 0, g: 0, b: 0 };\nconst blackRGB: RGB = { r: 255, g: 255, b: 255 };\n\n/**\n * 通过混合颜色调整明暗度\n * @param rgb 原始RGB颜色对象\n * @param value 调整强度(-1到1之间):\n * - 正值时与黑色混合(增加暗度)\n * - 负值时与白色混合(增加亮度)\n * @returns {RGB} 调整后的RGB颜色对象\n * @example\n * rgbDarken({r: 100, g: 150, b: 200}, 0.2) // 变暗20%\n */\nexport function rgbWhiter(rgb: RGB, value: number): RGB {\n const rgb2: RGB = value > 0 ? whiteRGB : blackRGB;\n return mix(rgb, rgb2, abs(value));\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"color.mjs","names":[],"sources":["../src/color/luminance.ts","../src/color/contrast.ts","../src/color/distance.ts","../src/color/helpers.ts","../src/color/hex-rgb.ts","../src/color/rgb-hsl.ts","../src/color/hex-hsl.ts","../src/color/rgb-hsv.ts","../src/color/hex-hsv.ts","../src/color/rgb-hwb.ts","../src/color/hex-hwb.ts","../src/color/hsl-lighten.ts","../src/color/hsv-brighten.ts","../src/color/mix.ts","../src/color/rgb-xyz.ts","../src/color/xyz-lab.ts","../src/color/rgb-lab.ts","../src/color/rgb-whiter.ts"],"sourcesContent":["import type { RGB } from './types';\n\n/**\n * 计算RGB颜色的相对亮度(符合WCAG 2.1标准)\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {number} 相对亮度值(0-1之间)\n * @see https://www.w3.org/TR/WCAG21/#dfn-relative-luminance\n * @example\n * luminance({r: 255, g: 255, b: 255}) // 返回1\n */\nexport function luminance({ r, g, b }: RGB) {\n const a = [r, g, b].map((v) => {\n const vFinal = v / 255;\n return vFinal <= 0.03928 ? vFinal / 12.92 : ((vFinal + 0.055) / 1.055) ** 2.4;\n });\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n}\n","import { luminance } from './luminance';\nimport type { RGB } from './types';\n\n/**\n * 计算两个颜色之间的对比度比率(符合WCAG 2.1标准)\n * @param rgb1 第一个RGB颜色对象(分量范围0-255)\n * @param rgb2 第二个RGB颜色对象(分量范围0-255)\n * @returns {number} 对比度比率,范围1-21(1:1 到 21:1)\n * @example\n * contrast({r: 0, g: 0, b: 0}, {r: 255, g: 255, b: 255}) // 返回21\n */\nexport function contrast(rgb1: RGB, rgb2: RGB) {\n const lum1 = luminance(rgb1);\n const lum2 = luminance(rgb2);\n\n const brightest = Math.max(lum1, lum2);\n const darkest = Math.min(lum1, lum2);\n\n return (brightest + 0.05) / (darkest + 0.05);\n}\n","import type { LAB } from './types';\n\n// calculate the perceptual distance between colors in CIELAB\n// https://github.com/THEjoezack/ColorMine/blob/master/ColorMine/ColorSpaces/Comparisons/Cie94Comparison.cs\n\n/**\n * 计算两个颜色之间的距离(距离越小相似度越高),值范围 [0, 1]\n * @param {LAB} labA\n * @param {LAB} labB\n * @returns {number}\n */\nexport function distance(labA: LAB, labB: LAB) {\n const deltaL = labA.l - labB.l;\n const deltaA = labA.a - labB.a;\n const deltaB = labA.b - labB.b;\n const c1 = Math.sqrt(labA.a * labA.a + labA.b * labA.b);\n const c2 = Math.sqrt(labB.a * labB.a + labB.b * labB.b);\n const deltaC = c1 - c2;\n let deltaH = deltaA * deltaA + deltaB * deltaB - deltaC * deltaC;\n deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);\n const sc = 1.0 + 0.045 * c1;\n const sh = 1.0 + 0.015 * c1;\n const deltaLKlsl = deltaL / 1.0;\n const deltaCkcsc = deltaC / sc;\n const deltaHkhsh = deltaH / sh;\n const i = deltaLKlsl * deltaLKlsl + deltaCkcsc * deltaCkcsc + deltaHkhsh * deltaHkhsh;\n return (i < 0 ? 0 : Math.sqrt(i)) / 100;\n}\n","import type { RGB } from './types';\n\nconst { min, max } = Math;\n\nexport function rgbToHue({ r, g, b }: RGB): [number, number, number, number] {\n r /= 255;\n g /= 255;\n b /= 255;\n\n const rgbMax = max(r, g, b);\n const rgbMin = min(r, g, b);\n const rgbDiff = rgbMax - rgbMin;\n const h =\n rgbDiff === 0\n ? 0\n : rgbDiff && rgbMax === r\n ? (g - b) / rgbDiff\n : rgbMax === g\n ? 2 + (b - r) / rgbDiff\n : 4 + (r - g) / rgbDiff;\n\n return [60 * (h < 0 ? h + 6 : h), rgbMax, rgbMin, rgbDiff];\n}\n","import type { HEX, RGB } from './types';\n\n/**\n * 将HEX颜色字符串转换为RGB颜色对象\n * @param hex HEX颜色字符串,支持3位或6位格式(例如#f00或#ff0000)\n * @returns {RGB} 对应的RGB颜色对象\n * @throws {SyntaxError} 当颜色格式不符合规范时抛出\n * @example\n * hexToRgb('#f00') // returns {r: 255, g: 0, b: 0}\n */\nexport function hexToRgb(hex: HEX): RGB {\n const reg = hex.length === 4 ? /^#(.)(.)(.)$/ : /^#(.{2})(.{2})(.{2})$/;\n const result = reg.exec(hex);\n\n if (!result) throw new SyntaxError(`颜色(${hex})表达式有误`);\n\n const [_, r, g, b] = result;\n\n return {\n r: Number.parseInt(r.padEnd(2, r), 16),\n g: Number.parseInt(g.padEnd(2, g), 16),\n b: Number.parseInt(b.padEnd(2, b), 16),\n };\n}\n\nfunction to16(n: number) {\n return Math.round(n).toString(16).padStart(2, '0');\n}\n\n/**\n * 将RGB颜色对象转换为HEX颜色字符串\n * @param rgb RGB颜色对象\n * @returns {HEX} 6位HEX颜色字符串(带#前缀)\n * @example\n * rgbToHex({r: 255, g: 0, b: 0}) // returns '#ff0000'\n */\nexport function rgbToHex(rgb: RGB): HEX {\n return `#${to16(rgb.r)}${to16(rgb.g)}${to16(rgb.b)}`;\n}\n","// @ref https://www.w3schools.com/lib/w3color.js\nimport { rgbToHue } from './helpers';\nimport type { HSL, RGB } from './types';\n\nconst { min, max } = Math;\n\n/**\n * 将RGB颜色转换为HSL颜色空间\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {HSL} HSL颜色对象,其中:\n * h: 色相(0-360度)\n * s: 饱和度(0-100%)\n * l: 亮度(0-100%)\n * @example\n * rgbToHsl({r: 255, g: 0, b: 0}) // returns {h: 0, s: 100, l: 50}\n */\nexport function rgbToHsl(rgb: RGB): HSL {\n const [hue, max, min, diff] = rgbToHue(rgb);\n const l = (2 * max - diff) / 2;\n const s = min === max ? 0 : l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n\n return {\n h: hue,\n s: s * 100,\n l: l * 100,\n };\n}\n\n// @ref https://www.30secondsofcode.org/js/s/hsl-to-rgb/\n/**\n * 将HSL颜色转换回RGB颜色空间\n * @param hsl HSL颜色对象\n * @param hsl.h 色相(0-360度)\n * @param hsl.s 饱和度(0-100%)\n * @param hsl.l 亮度(0-100%)\n * @returns {RGB} RGB颜色对象(分量范围0-255)\n * @example\n * hslToRgb({h: 0, s: 100, l: 50}) // returns {r: 255, g: 0, b: 0}\n */\nexport function hslToRgb({ h, s, l }: HSL): RGB {\n s /= 100;\n l /= 100;\n\n const a = s * min(l, 1 - l);\n const k = (n: number) => (n + h / 30) % 12;\n const f = (n: number) => l - a * max(-1, min(k(n) - 3, min(9 - k(n), 1)));\n\n return {\n r: 255 * f(0),\n g: 255 * f(8),\n b: 255 * f(4),\n };\n}\n","import { hexToRgb, rgbToHex } from './hex-rgb';\nimport { hslToRgb, rgbToHsl } from './rgb-hsl';\nimport type { HEX, HSL } from './types';\n\nexport function hslToHex(hsl: HSL): HEX {\n return rgbToHex(hslToRgb(hsl));\n}\n\nexport function hexToHsl(hex: HEX): HSL {\n return rgbToHsl(hexToRgb(hex));\n}\n","import { rgbToHue } from './helpers';\nimport type { HSV, RGB } from './types';\n\nconst { min, max } = Math;\n\n// @ref https://www.30secondsofcode.org/js/s/rgb-to-hsb/\n/**\n * 将RGB颜色转换为HSV颜色空间\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {HSV} HSV颜色对象:\n * h: 色相(0-360度)\n * s: 饱和度(0-100%)\n * v: 明度(0-100%)\n * @see https://en.wikipedia.org/wiki/HSL_and_HSV\n * @example\n * rgbToHsv({r: 255, g: 0, b: 0}) // {h: 0, s: 100, v: 100}\n */\nexport function rgbToHsv(rgb: RGB): HSV {\n const [hue, max, _min, diff] = rgbToHue(rgb);\n\n return {\n h: hue,\n s: max && (diff / max) * 100,\n v: max * 100,\n };\n}\n\n// @ref https://www.30secondsofcode.org/js/s/hsb-to-rgb/\n/**\n * 将HSV颜色转换回RGB颜色空间\n * @param hsv HSV颜色对象\n * @param hsv.h 色相(0-360度)\n * @param hsv.s 饱和度(0-100%)\n * @param hsv.v 明度(0-100%)\n * @returns {RGB} RGB颜色对象(分量范围0-255)\n * @see https://www.rapidtables.com/convert/color/hsv-to-rgb.html\n * @example\n * hsvToRgb({h: 0, s: 100, v: 100}) // {r: 255, g: 0, b: 0}\n */\nexport function hsvToRgb({ h, s, v }: HSV): RGB {\n s /= 100;\n v /= 100;\n\n const k = (n: number) => (n + h / 60) % 6;\n const f = (n: number) => v * (1 - s * max(0, min(k(n), 4 - k(n), 1)));\n\n return {\n r: 255 * f(5),\n g: 255 * f(3),\n b: 255 * f(1),\n };\n}\n","import { hexToRgb, rgbToHex } from './hex-rgb';\nimport { hsvToRgb, rgbToHsv } from './rgb-hsv';\nimport type { HEX, HSV } from './types';\n\n/**\n * 将HEX颜色转换为HSV颜色空间\n * @param hex HEX颜色字符串(支持3位或6位格式)\n * @returns {HSV} HSV颜色对象,包含:\n * h: 色相(0-360度)\n * s: 饱和度(0-100%)\n * v: 明度(0-100%)\n * @example\n * hexToHsv('#ff0000') // returns {h: 0, s: 100, v: 100}\n */\nexport function hexToHsv(hex: HEX): HSV {\n return rgbToHsv(hexToRgb(hex));\n}\n\n/**\n * 将HSV颜色转换回HEX字符串\n * @param hsv HSV颜色对象\n * @returns {HEX} 6位HEX颜色字符串(带#前缀)\n * @example\n * hsvToHex({h: 0, s: 100, v: 100}) // returns '#ff0000'\n */\nexport function hsvToHex(hsv: HSV): HEX {\n return rgbToHex(hsvToRgb(hsv));\n}\n","import { rgbToHue } from './helpers';\nimport { hslToRgb } from './rgb-hsl';\nimport type { HWB, RGB } from './types';\n\n/**\n * 将RGB颜色转换为HWB颜色空间\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {HWB} HWB颜色对象:\n * h: 色相(0-360度)\n * w: 白度(0-100%)\n * b: 黑度(0-100%)\n * @see https://www.w3.org/TR/css-color-4/#hwb-to-rgb\n * @example\n * rgbToHwb({r: 255, g: 0, b: 0}) // {h: 0, w: 0, b: 0}\n */\nexport function rgbToHwb(rgb: RGB): HWB {\n const [hue, max, min, _diff] = rgbToHue(rgb);\n return {\n h: hue,\n w: min * 100,\n b: (1 - max) * 100,\n };\n}\n\n// @ref https://www.w3schools.com/lib/w3color.js\n/**\n * 将HWB颜色转换回RGB颜色空间\n * @param hwb HWB颜色对象\n * @param hwb.h 色相(0-360度)\n * @param hwb.w 白度(0-100%)\n * @param hwb.b 黑度(0-100%)\n * @returns {RGB} RGB颜色对象(分量范围0-255)\n * @see https://en.wikipedia.org/wiki/HWB_color_model\n * @example\n * hwbToRgb({h: 0, w: 0, b: 0}) // {r: 255, g: 0, b: 0}\n */\nexport function hwbToRgb({ h, w: white, b: black }: HWB) {\n white /= 100;\n black /= 100;\n\n const { r, g, b } = hslToRgb({ h, s: 100, l: 50 });\n const tot = white + black;\n\n if (tot > 1) {\n white = white / tot;\n black = black / tot;\n }\n\n const f = (n: number) => ((n / 255) * (1 - white - black) + white) * 255;\n\n return {\n r: f(r),\n g: f(g),\n b: f(b),\n };\n}\n","import { hexToRgb, rgbToHex } from './hex-rgb';\nimport { hwbToRgb, rgbToHwb } from './rgb-hwb';\nimport type { HEX, HWB } from './types';\n\n/**\n * 将HWB颜色转换为HEX字符串\n * @param hwb HWB颜色对象\n * @param hwb.h 色相(0-360度)\n * @param hwb.w 白度(0-100%)\n * @param hwb.b 黑度(0-100%)\n * @returns {HEX} 6位HEX颜色字符串(带#前缀)\n * @example\n * hwbToHex({h: 0, w: 0, b: 0}) // returns '#ff0000'\n */\nexport function hwbToHex(hwb: HWB): HEX {\n return rgbToHex(hwbToRgb(hwb));\n}\n\n/**\n * 将HEX颜色转换为HWB颜色空间\n * @param hex HEX颜色字符串(支持3位或6位格式)\n * @returns {HWB} HWB颜色对象,包含:\n * h: 色相(0-360度)\n * w: 白度(0-100%)\n * b: 黑度(0-100%)\n * @example\n * hexToHwb('#ff0000') // returns {h: 0, w: 0, b: 0}\n */\nexport function hexToHwb(hex: HEX): HWB {\n return rgbToHwb(hexToRgb(hex));\n}\n","import type { HSL } from './types';\n\n/**\n * 通过HSL颜色空间调整颜色亮度\n * @param hsl 原始 HSL 颜色\n * @param value 亮度调整系数(0-1之间,0.1表示增加10%亮度)\n * @returns {HSL} 调整后的 HSL 颜色\n * @example\n * hslLighten({h: 300, s: 33, l: 44}, 0.2) // 返回亮度增加20%后的颜色\n */\nexport function hslLighten(hsl: HSL, value: number): HSL {\n const hslFinal = { ...hsl };\n hslFinal.l = hslFinal.l * (1 + value);\n return hslFinal;\n}\n","import type { HSV } from './types';\n\n/**\n * 通过HSV颜色空间调整颜色明度\n * @param hsv 原始HSV颜色对象\n * @param value 明度调整系数(-1到1之间):\n * - 正值增加明度(如0.2表示+20%)\n * - 负值降低明度(如-0.1表示-10%)\n * @returns {HSV} 调整后的HSV颜色对象(v值范围0-100%)\n * @example\n * hsvBrighten({h: 0, s: 100, v: 50}, 0.3) // 返回{h: 0, s: 100, v: 65}\n */\nexport function hsvBrighten(hsv: HSV, value: number): HSV {\n const hsvFinal = { ...hsv };\n hsvFinal.v = hsvFinal.v * (1 + value);\n return hsvFinal;\n}\n","import type { HSL, HSV, RGB } from './types';\n\n/**\n * 颜色混合函数(支持RGB/HSL/HSV色彩模型)\n * @template T 颜色类型,支持RGB、HSL或HSV对象\n * @param {T} a 第一个颜色对象\n * @param {T} b 第二个颜色对象\n * @param {number} [weight=0.5] 混合权重(0-1之间):\n * - 0 表示完全使用第一个颜色\n * - 1 表示完全使用第二个颜色\n * @returns {T} 线性混合后的新颜色对象\n * @example\n * // RGB混合示例\n * mix({r: 255, g: 0, b: 0}, {r: 0, g: 0, b: 255}, 0.5) // 返回紫色\n *\n * // HSL混合示例\n * mix({h: 0, s: 100, l: 50}, {h: 120, s: 100, l: 50}, 0.3)\n */\nexport function mix<T extends RGB | HSV | HSL>(a: T, b: T, weight = 0.5): T {\n return Object.keys(a).reduce((acc, key) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n acc[key] = (b[key] - a[key]) * weight + a[key];\n return acc;\n }, {} as T);\n}\n","// https://stackoverflow.com/a/73998199\n\nimport type { RGB, XYZ } from './types';\n\n/**\n * 将RGB颜色转换为CIE 1931 XYZ颜色空间(D65白点,2°观察者)\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {XYZ} XYZ颜色对象:\n * x: 约0-95.047\n * y: 约0-100.0\n * z: 约0-108.883\n * @see https://en.wikipedia.org/wiki/CIE_1931_color_space\n * @example\n * rgbToXyz({r: 255, g: 255, b: 255}) // {x: 95.047, y: 100.0, z: 108.883}\n */\nexport function rgbToXyz(rgb: RGB): XYZ {\n const { r, g, b } = rgb;\n const [var_R, var_G, var_B] = [r, g, b]\n .map((x) => x / 255)\n .map((x) => (x > 0.04045 ? ((x + 0.055) / 1.055) ** 2.4 : x / 12.92))\n .map((x) => x * 100);\n\n return {\n // Observer. = 2°, Illuminant = D65\n x: var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805,\n y: var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722,\n z: var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505,\n };\n}\n\n/**\n * 将XYZ颜色转换回RGB颜色空间(可能超出常规范围)\n * @param xyz XYZ颜色对象\n * @returns {RGB} RGB颜色对象(分量可能超出0-255范围)\n * @see https://www.brucelindbloom.com/index.html?Eqn_XYZ_to_RGB.html\n * @example\n * xyzToRgb({x: 95.047, y: 100.0, z: 108.883}) // {r: 255, g: 255, b: 255}\n */\nexport function xyzToRgb(xyz: XYZ): RGB {\n const { x, y, z } = xyz;\n\n //X, Y and Z input refer to a D65/2° standard illuminant.\n //sR, sG and sB (standard RGB) output range = 0 ÷ 255\n\n const var_X = x / 100;\n const var_Y = y / 100;\n const var_Z = z / 100;\n\n const var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986;\n const var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415;\n const var_B = var_X * 0.0557 + var_Y * -0.204 + var_Z * 1.057;\n\n const [r, g, b] = [var_R, var_G, var_B]\n .map((n) => (n > 0.0031308 ? 1.055 * n ** (1 / 2.4) - 0.055 : 12.92 * n))\n .map((n) => n * 255);\n\n return {\n r,\n g,\n b,\n };\n}\n","// https://stackoverflow.com/a/73998199\n\nimport type { LAB, XYZ } from './types';\n\nconst ref_X = 95.047;\nconst ref_Y = 100.0;\nconst ref_Z = 108.883;\n\n/**\n * 将XYZ颜色转换为Lab颜色空间(CIE 1976 L*a*b*,D65白点)\n * @param xyz XYZ颜色对象(参考值:D65白点X=95.047,Y=100,Z=108.883)\n * @returns {LAB} Lab颜色对象:\n * l: 明度(0-100)\n * a: 绿-红分量(典型范围-128到127)\n * b: 蓝-黄分量(典型范围-128到127)\n * @see https://en.wikipedia.org/wiki/CIELAB_color_space\n * @example\n * xyzToLab({x: 95.047, y: 100.0, z: 108.883}) // {l: 100, a: 0, b: 0}\n */\nexport function xyzToLab(xyz: XYZ): LAB {\n const { x, y, z } = xyz;\n const [var_X, var_Y, var_Z] = [x / ref_X, y / ref_Y, z / ref_Z].map((a) =>\n a > 0.008856 ? a ** (1 / 3) : 7.787 * a + 16 / 116,\n );\n\n const l = 116 * var_Y - 16;\n const a = 500 * (var_X - var_Y);\n const b = 200 * (var_Y - var_Z);\n\n return { l, a, b };\n}\n\n/**\n * 将Lab颜色转换回XYZ颜色空间\n * @param lab Lab颜色对象\n * @param lab.l 明度(0-100)\n * @param lab.a 绿-红分量(典型范围-128到127)\n * @param lab.b 蓝-黄分量(典型范围-128到127)\n * @returns {XYZ} XYZ颜色对象(基于D65白点)\n * @see https://www.easyrgb.com/en/math.php\n * @example\n * labToXyz({l: 100, a: 0, b: 0}) // {x: 95.047, y: 100.0, z: 108.883}\n */\nexport function labToXyz(lab: LAB): XYZ {\n const { l, a, b } = lab;\n\n const var_Y = (l + 16) / 116;\n const var_X = a / 500 + var_Y;\n const var_Z = var_Y - b / 200;\n\n const [X, Y, Z] = [var_X, var_Y, var_Z].map((n) => (n ** 3 > 0.008856 ? n ** 3 : (n - 16 / 116) / 7.787));\n\n return { x: X * ref_X, y: Y * ref_Y, z: Z * ref_Z };\n}\n","import { rgbToXyz, xyzToRgb } from './rgb-xyz';\nimport type { LAB, RGB } from './types';\nimport { labToXyz, xyzToLab } from './xyz-lab';\n\n/**\n * 将RGB颜色转换为Lab颜色空间(CIE 1976标准)\n * @param rgb RGB颜色对象(分量范围0-255)\n * @returns {LAB} Lab颜色对象:\n * l: 明度(0-100)\n * a: 绿-红分量(-128到127)\n * b: 蓝-黄分量(-128到127)\n * @see https://en.wikipedia.org/wiki/CIELAB_color_space\n * @example\n * rgbToLab({r: 255, g: 0, b: 0}) // {l: 53.24, a: 80.09, b: 67.20}\n */\nexport function rgbToLab(rgb: RGB): LAB {\n return xyzToLab(rgbToXyz(rgb));\n}\n\n/**\n * 将Lab颜色转换回RGB颜色空间\n * @param lab Lab颜色对象\n * @param lab.l 明度(0-100)\n * @param lab.a 绿-红分量(-128到127)\n * @param lab.b 蓝-黄分量(-128到127)\n * @returns {RGB} RGB颜色对象(分量可能超出0-255范围)\n * @see https://www.easyrgb.com/en/math.php\n * @example\n * labToRgb({l: 53.24, a: 80.09, b: 67.20}) // {r: 255, g: 0, b: 0}\n */\nexport function labToRgb(lab: LAB): RGB {\n return xyzToRgb(labToXyz(lab));\n}\n","import { mix } from './mix';\nimport type { RGB } from './types';\n\nconst { abs } = Math;\n\nconst whiteRGB: RGB = { r: 0, g: 0, b: 0 };\nconst blackRGB: RGB = { r: 255, g: 255, b: 255 };\n\n/**\n * 通过混合颜色调整明暗度\n * @param rgb 原始RGB颜色对象\n * @param value 调整强度(-1到1之间):\n * - 正值时与黑色混合(增加暗度)\n * - 负值时与白色混合(增加亮度)\n * @returns {RGB} 调整后的RGB颜色对象\n * @example\n * rgbDarken({r: 100, g: 150, b: 200}, 0.2) // 变暗20%\n */\nexport function rgbWhiter(rgb: RGB, value: number): RGB {\n const rgb2: RGB = value > 0 ? whiteRGB : blackRGB;\n return mix(rgb, rgb2, abs(value));\n}\n"],"mappings":"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"}
|
package/dist/crypto.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.cjs","names":["hexcase","rstr2hex","str2rstr_utf8","safe_add","bit_rol","hexcase","rstr2hex","str2rstr_utf8","binb2rstr","rstr2binb","safe_add","hexcase","rstr2hex","str2rstr_utf8","binb2rstr","rstr2binb"],"sources":["../src/crypto/md5.mjs","../src/crypto/sha1.mjs","../src/crypto/sha256.mjs","../src/crypto/sha512.mjs","../src/crypto.ts"],"sourcesContent":["/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = ''; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_md5(s) {\n return rstr2hex(rstr_md5(str2rstr_utf8(s)));\n}\nfunction b64_md5(s) {\n return rstr2b64(rstr_md5(str2rstr_utf8(s)));\n}\nfunction any_md5(s, e) {\n return rstr2any(rstr_md5(str2rstr_utf8(s)), e);\n}\nfunction hex_hmac_md5(k, d) {\n return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)));\n}\nfunction b64_hmac_md5(k, d) {\n return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)));\n}\nfunction any_hmac_md5(k, d, e) {\n return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e);\n}\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction md5_vm_test() {\n return hex_md5('abc').toLowerCase() == '900150983cd24fb0d6963f7d28e17f72';\n}\n\n/*\n * Calculate the MD5 of a raw string\n */\nfunction rstr_md5(s) {\n return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\nfunction rstr_hmac_md5(key, data) {\n var bkey = rstr2binl(key);\n if (bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);\n\n var ipad = Array(16),\n opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n\n var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try {\n hexcase;\n } catch (e) {\n hexcase = 0;\n }\n var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef';\n var output = '';\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0f) + hex_tab.charAt(x & 0x0f);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try {\n b64pad;\n } catch (e) {\n b64pad = '';\n }\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var output = '';\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet =\n (input.charCodeAt(i) << 16) |\n (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) |\n (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> (6 * (3 - j))) & 0x3f);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var i, j, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. All remainders are stored for later\n * use.\n */\n var full_length = Math.ceil((input.length * 8) / (Math.log(encoding.length) / Math.log(2)));\n var remainders = Array(full_length);\n for (j = 0; j < full_length; j++) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0) quotient[quotient.length] = q;\n }\n remainders[j] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = '';\n for (i = remainders.length - 1; i >= 0; i--) output += encoding.charAt(remainders[i]);\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = '';\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xd800 <= x && x <= 0xdbff && 0xdc00 <= y && y <= 0xdfff) {\n x = 0x10000 + ((x & 0x03ff) << 10) + (y & 0x03ff);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7f) output += String.fromCharCode(x);\n else if (x <= 0x7ff) output += String.fromCharCode(0xc0 | ((x >>> 6) & 0x1f), 0x80 | (x & 0x3f));\n else if (x <= 0xffff)\n output += String.fromCharCode(0xe0 | ((x >>> 12) & 0x0f), 0x80 | ((x >>> 6) & 0x3f), 0x80 | (x & 0x3f));\n else if (x <= 0x1fffff)\n output += String.fromCharCode(\n 0xf0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3f),\n 0x80 | ((x >>> 6) & 0x3f),\n 0x80 | (x & 0x3f),\n );\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = '';\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xff, (input.charCodeAt(i) >>> 8) & 0xff);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = '';\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xff, input.charCodeAt(i) & 0xff);\n return output;\n}\n\n/*\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binl(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++) output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8) output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n return output;\n}\n\n/*\n * Convert an array of little-endian words to a string\n */\nfunction binl2rstr(input) {\n var output = '';\n for (var i = 0; i < input.length * 32; i += 8) output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n return output;\n}\n\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\nfunction binl_md5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n }\n return Array(a, b, c, d);\n}\n\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\nfunction md5_cmn(q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);\n}\nfunction md5_ff(a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5_gg(a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5_hh(a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5_ii(a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); }\nfunction b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); }\nfunction any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha1(k, d) { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha1(k, d) { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha1(k, d, e) { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha1_vm_test() {\n return hex_sha1(\"abc\").toLowerCase() == \"a9993e364706816aba3e25717850c26c9cd0d89d\";\n}\n\n/*\n * Calculate the SHA1 of a raw string\n */\nfunction rstr_sha1(s) {\n return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha1(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for (i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\nfunction binb_sha1(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n var w = Array(80);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var e = -1009589776;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n var olde = e;\n\n for (var j = 0; j < 80; j++) {\n if (j < 16) w[j] = x[i + j];\n else w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n\n}\n\n/*\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\nfunction sha1_ft(t, b, c, d) {\n if (t < 20) return (b & c) | ((~b) & d);\n if (t < 40) return b ^ c ^ d;\n if (t < 60) return (b & c) | (b & d) | (c & d);\n return b ^ c ^ d;\n}\n\n/*\n * Determine the appropriate additive constant for the current iteration\n */\nfunction sha1_kt(t) {\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha256(s) { return rstr2hex(rstr_sha256(str2rstr_utf8(s))); }\nfunction b64_sha256(s) { return rstr2b64(rstr_sha256(str2rstr_utf8(s))); }\nfunction any_sha256(s, e) { return rstr2any(rstr_sha256(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha256(k, d) { return rstr2hex(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha256(k, d) { return rstr2b64(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha256(k, d, e) { return rstr2any(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha256_vm_test() {\n return hex_sha256(\"abc\").toLowerCase() ==\n \"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\";\n}\n\n/*\n * Calculate the sha256 of a raw string\n */\nfunction rstr_sha256(s) {\n return binb2rstr(binb_sha256(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha256(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 16) bkey = binb_sha256(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha256(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha256(opad.concat(hash), 512 + 256));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for (i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Main sha256 function, with its support functions\n */\nfunction sha256_S(X, n) { return (X >>> n) | (X << (32 - n)); }\nfunction sha256_R(X, n) { return (X >>> n); }\nfunction sha256_Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }\nfunction sha256_Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }\nfunction sha256_Sigma0256(x) { return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22)); }\nfunction sha256_Sigma1256(x) { return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25)); }\nfunction sha256_Gamma0256(x) { return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3)); }\nfunction sha256_Gamma1256(x) { return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10)); }\nfunction sha256_Sigma0512(x) { return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39)); }\nfunction sha256_Sigma1512(x) { return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41)); }\nfunction sha256_Gamma0512(x) { return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7)); }\nfunction sha256_Gamma1512(x) { return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6)); }\n\nvar sha256_K = new Array\n (\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,\n -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,\n -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,\n -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,\n -1866530822, -1538233109, -1090935817, -965641998\n );\n\nfunction binb_sha256(m, l) {\n var HASH = new Array(1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225);\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for (j = 0; j < 64; j++) {\n if (j < 16) W[j] = m[j + i];\n else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n}\n\nfunction safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined\n * in FIPS 180-2\n * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha512(s) { return rstr2hex(rstr_sha512(str2rstr_utf8(s))); }\nfunction b64_sha512(s) { return rstr2b64(rstr_sha512(str2rstr_utf8(s))); }\nfunction any_sha512(s, e) { return rstr2any(rstr_sha512(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha512(k, d) { return rstr2hex(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha512(k, d) { return rstr2b64(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha512(k, d, e) { return rstr2any(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha512_vm_test() {\n return hex_sha512(\"abc\").toLowerCase() ==\n \"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a\" +\n \"2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f\";\n}\n\n/*\n * Calculate the SHA-512 of a raw string\n */\nfunction rstr_sha512(s) {\n return binb2rstr(binb_sha512(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-SHA-512 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha512(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 32) bkey = binb_sha512(bkey, key.length * 8);\n\n var ipad = Array(32), opad = Array(32);\n for (var i = 0; i < 32; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha512(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);\n return binb2rstr(binb_sha512(opad.concat(hash), 1024 + 512));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var i, j, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. All remainders are stored for later\n * use.\n */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)));\n var remainders = Array(full_length);\n for (j = 0; j < full_length; j++) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[j] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Calculate the SHA-512 of an array of big-endian dwords, and a bit length\n */\nvar sha512_k;\nfunction binb_sha512(x, len) {\n if (sha512_k == undefined) {\n //SHA512 constants\n sha512_k = new Array(\n new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),\n new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),\n new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),\n new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),\n new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),\n new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),\n new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),\n new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),\n new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),\n new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),\n new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),\n new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),\n new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),\n new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),\n new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),\n new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),\n new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),\n new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),\n new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),\n new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),\n new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),\n new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),\n new int64(-354779690, -840897762), new int64(-176337025, -294727304),\n new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),\n new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),\n new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817));\n }\n\n //Initial hash values\n var H = new Array(\n new int64(0x6a09e667, -205731576),\n new int64(-1150833019, -2067093701),\n new int64(0x3c6ef372, -23791573),\n new int64(-1521486534, 0x5f1d36f1),\n new int64(0x510e527f, -1377402159),\n new int64(-1694144372, 0x2b3e6c1f),\n new int64(0x1f83d9ab, -79577749),\n new int64(0x5be0cd19, 0x137e2179));\n\n var T1 = new int64(0, 0),\n T2 = new int64(0, 0),\n a = new int64(0, 0),\n b = new int64(0, 0),\n c = new int64(0, 0),\n d = new int64(0, 0),\n e = new int64(0, 0),\n f = new int64(0, 0),\n g = new int64(0, 0),\n h = new int64(0, 0),\n //Temporary variables not specified by the document\n s0 = new int64(0, 0),\n s1 = new int64(0, 0),\n Ch = new int64(0, 0),\n Maj = new int64(0, 0),\n r1 = new int64(0, 0),\n r2 = new int64(0, 0),\n r3 = new int64(0, 0);\n var j, i;\n var W = new Array(80);\n for (i = 0; i < 80; i++)\n W[i] = new int64(0, 0);\n\n // append padding to the source string. The format is described in the FIPS.\n x[len >> 5] |= 0x80 << (24 - (len & 0x1f));\n x[((len + 128 >> 10) << 5) + 31] = len;\n\n for (i = 0; i < x.length; i += 32) //32 dwords is the block size\n {\n int64copy(a, H[0]);\n int64copy(b, H[1]);\n int64copy(c, H[2]);\n int64copy(d, H[3]);\n int64copy(e, H[4]);\n int64copy(f, H[5]);\n int64copy(g, H[6]);\n int64copy(h, H[7]);\n\n for (j = 0; j < 16; j++) {\n W[j].h = x[i + 2 * j];\n W[j].l = x[i + 2 * j + 1];\n }\n\n for (j = 16; j < 80; j++) {\n //sigma1\n int64rrot(r1, W[j - 2], 19);\n int64revrrot(r2, W[j - 2], 29);\n int64shr(r3, W[j - 2], 6);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n //sigma0\n int64rrot(r1, W[j - 15], 1);\n int64rrot(r2, W[j - 15], 8);\n int64shr(r3, W[j - 15], 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n int64add4(W[j], s1, W[j - 7], s0, W[j - 16]);\n }\n\n for (j = 0; j < 80; j++) {\n //Ch\n Ch.l = (e.l & f.l) ^ (~e.l & g.l);\n Ch.h = (e.h & f.h) ^ (~e.h & g.h);\n\n //Sigma1\n int64rrot(r1, e, 14);\n int64rrot(r2, e, 18);\n int64revrrot(r3, e, 9);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n\n //Sigma0\n int64rrot(r1, a, 28);\n int64revrrot(r2, a, 2);\n int64revrrot(r3, a, 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n //Maj\n Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);\n Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);\n\n int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);\n int64add(T2, s0, Maj);\n\n int64copy(h, g);\n int64copy(g, f);\n int64copy(f, e);\n int64add(e, d, T1);\n int64copy(d, c);\n int64copy(c, b);\n int64copy(b, a);\n int64add(a, T1, T2);\n }\n int64add(H[0], H[0], a);\n int64add(H[1], H[1], b);\n int64add(H[2], H[2], c);\n int64add(H[3], H[3], d);\n int64add(H[4], H[4], e);\n int64add(H[5], H[5], f);\n int64add(H[6], H[6], g);\n int64add(H[7], H[7], h);\n }\n\n //represent the hash as an array of 32-bit dwords\n var hash = new Array(16);\n for (i = 0; i < 8; i++) {\n hash[2 * i] = H[i].h;\n hash[2 * i + 1] = H[i].l;\n }\n return hash;\n}\n\n//A constructor for 64-bit numbers\nfunction int64(h, l) {\n this.h = h;\n this.l = l;\n //this.toString = int64toString;\n}\n\n//Copies src into dst, assuming both are 64-bit numbers\nfunction int64copy(dst, src) {\n dst.h = src.h;\n dst.l = src.l;\n}\n\n//Right-rotates a 64-bit number by shift\n//Won't handle cases of shift>=32\n//The function revrrot() is for that\nfunction int64rrot(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift) | (x.l << (32 - shift));\n}\n\n//Reverses the dwords of the source and then rotates right by shift.\n//This is equivalent to rotation by 32+shift\nfunction int64revrrot(dst, x, shift) {\n dst.l = (x.h >>> shift) | (x.l << (32 - shift));\n dst.h = (x.l >>> shift) | (x.h << (32 - shift));\n}\n\n//Bitwise-shifts right a 64-bit number by shift\n//Won't handle shift>=32, but it's never needed in SHA512\nfunction int64shr(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift);\n}\n\n//Adds two 64-bit numbers\n//Like the original implementation, does not rely on 32-bit operations\nfunction int64add(dst, x, y) {\n var w0 = (x.l & 0xffff) + (y.l & 0xffff);\n var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);\n var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);\n var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n\n//Same, except with 4 addends. Works faster than adding them one by one.\nfunction int64add4(dst, a, b, c, d) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n\n//Same, except with 5 addends\nfunction int64add5(dst, a, b, c, d, e) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n","import { hex_md5 } from './crypto/md5.mjs';\nimport { hex_sha1 } from './crypto/sha1.mjs';\nimport { hex_sha256 } from './crypto/sha256.mjs';\nimport { hex_sha512 } from './crypto/sha512.mjs';\n\n/**\n * 计算字符串的 MD5 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 32 个字符的十六进制 MD5 哈希值\n * @example\n * ```typescript\n * const hash = md5String('hello world');\n * console.log(hash); // '5eb63bbbe01eeed093cb22bb8f5acdc3'\n * ```\n */\nexport function md5String(input: string): string {\n return hex_md5(input);\n}\n\n/**\n * 计算字符串的 SHA1 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 40 个字符的十六进制 SHA1 哈希值\n * @example\n * ```typescript\n * const hash = sha1String('hello world');\n * console.log(hash); // '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'\n * ```\n */\nexport function sha1String(input: string): string {\n return hex_sha1(input);\n}\n\n/**\n * 计算字符串的 SHA256 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 64 个字符的十六进制 SHA256 哈希值\n * @example\n * ```typescript\n * const hash = sha256String('hello world');\n * console.log(hash); // 'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9'\n * ```\n */\nexport function sha256String(input: string): string {\n return hex_sha256(input);\n}\n\n/**\n * 计算字符串的 SHA512 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 128 个字符的十六进制 SHA512 哈希值\n * @example\n * ```typescript\n * const hash = sha512String('hello world');\n * console.log(hash); // '309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f'\n * ```\n */\nexport function sha512String(input: string): string {\n return hex_sha512(input);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crypto.cjs","names":["hexcase","rstr2hex","str2rstr_utf8","safe_add","bit_rol","hexcase","rstr2hex","str2rstr_utf8","binb2rstr","rstr2binb","safe_add","hexcase","rstr2hex","str2rstr_utf8","binb2rstr","rstr2binb"],"sources":["../src/crypto/md5.mjs","../src/crypto/sha1.mjs","../src/crypto/sha256.mjs","../src/crypto/sha512.mjs","../src/crypto.ts"],"sourcesContent":["/*\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = ''; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_md5(s) {\n return rstr2hex(rstr_md5(str2rstr_utf8(s)));\n}\nfunction b64_md5(s) {\n return rstr2b64(rstr_md5(str2rstr_utf8(s)));\n}\nfunction any_md5(s, e) {\n return rstr2any(rstr_md5(str2rstr_utf8(s)), e);\n}\nfunction hex_hmac_md5(k, d) {\n return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)));\n}\nfunction b64_hmac_md5(k, d) {\n return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)));\n}\nfunction any_hmac_md5(k, d, e) {\n return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e);\n}\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction md5_vm_test() {\n return hex_md5('abc').toLowerCase() == '900150983cd24fb0d6963f7d28e17f72';\n}\n\n/*\n * Calculate the MD5 of a raw string\n */\nfunction rstr_md5(s) {\n return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\nfunction rstr_hmac_md5(key, data) {\n var bkey = rstr2binl(key);\n if (bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);\n\n var ipad = Array(16),\n opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5c5c5c5c;\n }\n\n var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try {\n hexcase;\n } catch (e) {\n hexcase = 0;\n }\n var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef';\n var output = '';\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0f) + hex_tab.charAt(x & 0x0f);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try {\n b64pad;\n } catch (e) {\n b64pad = '';\n }\n var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var output = '';\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet =\n (input.charCodeAt(i) << 16) |\n (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) |\n (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> (6 * (3 - j))) & 0x3f);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var i, j, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. All remainders are stored for later\n * use.\n */\n var full_length = Math.ceil((input.length * 8) / (Math.log(encoding.length) / Math.log(2)));\n var remainders = Array(full_length);\n for (j = 0; j < full_length; j++) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0) quotient[quotient.length] = q;\n }\n remainders[j] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = '';\n for (i = remainders.length - 1; i >= 0; i--) output += encoding.charAt(remainders[i]);\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = '';\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xd800 <= x && x <= 0xdbff && 0xdc00 <= y && y <= 0xdfff) {\n x = 0x10000 + ((x & 0x03ff) << 10) + (y & 0x03ff);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7f) output += String.fromCharCode(x);\n else if (x <= 0x7ff) output += String.fromCharCode(0xc0 | ((x >>> 6) & 0x1f), 0x80 | (x & 0x3f));\n else if (x <= 0xffff)\n output += String.fromCharCode(0xe0 | ((x >>> 12) & 0x0f), 0x80 | ((x >>> 6) & 0x3f), 0x80 | (x & 0x3f));\n else if (x <= 0x1fffff)\n output += String.fromCharCode(\n 0xf0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3f),\n 0x80 | ((x >>> 6) & 0x3f),\n 0x80 | (x & 0x3f),\n );\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = '';\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xff, (input.charCodeAt(i) >>> 8) & 0xff);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = '';\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xff, input.charCodeAt(i) & 0xff);\n return output;\n}\n\n/*\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binl(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++) output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8) output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n return output;\n}\n\n/*\n * Convert an array of little-endian words to a string\n */\nfunction binl2rstr(input) {\n var output = '';\n for (var i = 0; i < input.length * 32; i += 8) output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n return output;\n}\n\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\nfunction binl_md5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n\n a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);\n a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);\n c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);\n d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n }\n return Array(a, b, c, d);\n}\n\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\nfunction md5_cmn(q, a, b, x, s, t) {\n return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);\n}\nfunction md5_ff(a, b, c, d, x, s, t) {\n return md5_cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5_gg(a, b, c, d, x, s, t) {\n return md5_cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5_hh(a, b, c, d, x, s, t) {\n return md5_cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5_ii(a, b, c, d, x, s, t) {\n return md5_cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS 180-1\n * Version 2.2 Copyright Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha1(s) { return rstr2hex(rstr_sha1(str2rstr_utf8(s))); }\nfunction b64_sha1(s) { return rstr2b64(rstr_sha1(str2rstr_utf8(s))); }\nfunction any_sha1(s, e) { return rstr2any(rstr_sha1(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha1(k, d) { return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha1(k, d) { return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha1(k, d, e) { return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha1_vm_test() {\n return hex_sha1(\"abc\").toLowerCase() == \"a9993e364706816aba3e25717850c26c9cd0d89d\";\n}\n\n/*\n * Calculate the SHA1 of a raw string\n */\nfunction rstr_sha1(s) {\n return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-SHA1 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha1(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 16) bkey = binb_sha1(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha1(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha1(opad.concat(hash), 512 + 160));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for (i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */\nfunction binb_sha1(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << (24 - len % 32);\n x[((len + 64 >> 9) << 4) + 15] = len;\n\n var w = Array(80);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var e = -1009589776;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n var olde = e;\n\n for (var j = 0; j < 80; j++) {\n if (j < 16) w[j] = x[i + j];\n else w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),\n safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return Array(a, b, c, d, e);\n\n}\n\n/*\n * Perform the appropriate triplet combination function for the current\n * iteration\n */\nfunction sha1_ft(t, b, c, d) {\n if (t < 20) return (b & c) | ((~b) & d);\n if (t < 40) return b ^ c ^ d;\n if (t < 60) return (b & c) | (b & d) | (c & d);\n return b ^ c ^ d;\n}\n\n/*\n * Determine the appropriate additive constant for the current iteration\n */\nfunction sha1_kt(t) {\n return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 :\n (t < 60) ? -1894007588 : -899497514;\n}\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nfunction safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nfunction bit_rol(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n * Also http://anmar.eu.org/projects/jssha2/\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha256(s) { return rstr2hex(rstr_sha256(str2rstr_utf8(s))); }\nfunction b64_sha256(s) { return rstr2b64(rstr_sha256(str2rstr_utf8(s))); }\nfunction any_sha256(s, e) { return rstr2any(rstr_sha256(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha256(k, d) { return rstr2hex(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha256(k, d) { return rstr2b64(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha256(k, d, e) { return rstr2any(rstr_hmac_sha256(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha256_vm_test() {\n return hex_sha256(\"abc\").toLowerCase() ==\n \"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\";\n}\n\n/*\n * Calculate the sha256 of a raw string\n */\nfunction rstr_sha256(s) {\n return binb2rstr(binb_sha256(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-sha256 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha256(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 16) bkey = binb_sha256(bkey, key.length * 8);\n\n var ipad = Array(16), opad = Array(16);\n for (var i = 0; i < 16; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha256(ipad.concat(rstr2binb(data)), 512 + data.length * 8);\n return binb2rstr(binb_sha256(opad.concat(hash), 512 + 256));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var remainders = Array();\n var i, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. We stop when the dividend is zero.\n * All remainders are stored for later use.\n */\n while (dividend.length > 0) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[remainders.length] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n /* Append leading zero equivalents */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)))\n for (i = output.length; i < full_length; i++)\n output = encoding[0] + output;\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Main sha256 function, with its support functions\n */\nfunction sha256_S(X, n) { return (X >>> n) | (X << (32 - n)); }\nfunction sha256_R(X, n) { return (X >>> n); }\nfunction sha256_Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }\nfunction sha256_Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }\nfunction sha256_Sigma0256(x) { return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22)); }\nfunction sha256_Sigma1256(x) { return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25)); }\nfunction sha256_Gamma0256(x) { return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3)); }\nfunction sha256_Gamma1256(x) { return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10)); }\nfunction sha256_Sigma0512(x) { return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39)); }\nfunction sha256_Sigma1512(x) { return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41)); }\nfunction sha256_Gamma0512(x) { return (sha256_S(x, 1) ^ sha256_S(x, 8) ^ sha256_R(x, 7)); }\nfunction sha256_Gamma1512(x) { return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6)); }\n\nvar sha256_K = new Array\n (\n 1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,\n -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,\n 1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,\n 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,\n -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,\n 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,\n 1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,\n -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,\n 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,\n 1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,\n -1866530822, -1538233109, -1090935817, -965641998\n );\n\nfunction binb_sha256(m, l) {\n var HASH = new Array(1779033703, -1150833019, 1013904242, -1521486534,\n 1359893119, -1694144372, 528734635, 1541459225);\n var W = new Array(64);\n var a, b, c, d, e, f, g, h;\n var i, j, T1, T2;\n\n /* append padding */\n m[l >> 5] |= 0x80 << (24 - l % 32);\n m[((l + 64 >> 9) << 4) + 15] = l;\n\n for (i = 0; i < m.length; i += 16) {\n a = HASH[0];\n b = HASH[1];\n c = HASH[2];\n d = HASH[3];\n e = HASH[4];\n f = HASH[5];\n g = HASH[6];\n h = HASH[7];\n\n for (j = 0; j < 64; j++) {\n if (j < 16) W[j] = m[j + i];\n else W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),\n sha256_Gamma0256(W[j - 15])), W[j - 16]);\n\n T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),\n sha256_K[j]), W[j]);\n T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));\n h = g;\n g = f;\n f = e;\n e = safe_add(d, T1);\n d = c;\n c = b;\n b = a;\n a = safe_add(T1, T2);\n }\n\n HASH[0] = safe_add(a, HASH[0]);\n HASH[1] = safe_add(b, HASH[1]);\n HASH[2] = safe_add(c, HASH[2]);\n HASH[3] = safe_add(d, HASH[3]);\n HASH[4] = safe_add(e, HASH[4]);\n HASH[5] = safe_add(f, HASH[5]);\n HASH[6] = safe_add(g, HASH[6]);\n HASH[7] = safe_add(h, HASH[7]);\n }\n return HASH;\n}\n\nfunction safe_add(x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n}\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined\n * in FIPS 180-2\n * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\n/*\n * Configurable variables. You may need to tweak these to be compatible with\n * the server-side, but the defaults work in most cases.\n */\nvar hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */\nvar b64pad = \"\"; /* base-64 pad character. \"=\" for strict RFC compliance */\n\n/*\n * These are the functions you'll usually want to call\n * They take string arguments and return either hex or base-64 encoded strings\n */\nexport function hex_sha512(s) { return rstr2hex(rstr_sha512(str2rstr_utf8(s))); }\nfunction b64_sha512(s) { return rstr2b64(rstr_sha512(str2rstr_utf8(s))); }\nfunction any_sha512(s, e) { return rstr2any(rstr_sha512(str2rstr_utf8(s)), e); }\nfunction hex_hmac_sha512(k, d) { return rstr2hex(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction b64_hmac_sha512(k, d) { return rstr2b64(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d))); }\nfunction any_hmac_sha512(k, d, e) { return rstr2any(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d)), e); }\n\n/*\n * Perform a simple self-test to see if the VM is working\n */\nfunction sha512_vm_test() {\n return hex_sha512(\"abc\").toLowerCase() ==\n \"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a\" +\n \"2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f\";\n}\n\n/*\n * Calculate the SHA-512 of a raw string\n */\nfunction rstr_sha512(s) {\n return binb2rstr(binb_sha512(rstr2binb(s), s.length * 8));\n}\n\n/*\n * Calculate the HMAC-SHA-512 of a key and some data (raw strings)\n */\nfunction rstr_hmac_sha512(key, data) {\n var bkey = rstr2binb(key);\n if (bkey.length > 32) bkey = binb_sha512(bkey, key.length * 8);\n\n var ipad = Array(32), opad = Array(32);\n for (var i = 0; i < 32; i++) {\n ipad[i] = bkey[i] ^ 0x36363636;\n opad[i] = bkey[i] ^ 0x5C5C5C5C;\n }\n\n var hash = binb_sha512(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);\n return binb2rstr(binb_sha512(opad.concat(hash), 1024 + 512));\n}\n\n/*\n * Convert a raw string to a hex string\n */\nfunction rstr2hex(input) {\n try { hexcase } catch (e) { hexcase = 0; }\n var hex_tab = hexcase ? \"0123456789ABCDEF\" : \"0123456789abcdef\";\n var output = \"\";\n var x;\n for (var i = 0; i < input.length; i++) {\n x = input.charCodeAt(i);\n output += hex_tab.charAt((x >>> 4) & 0x0F)\n + hex_tab.charAt(x & 0x0F);\n }\n return output;\n}\n\n/*\n * Convert a raw string to a base-64 string\n */\nfunction rstr2b64(input) {\n try { b64pad } catch (e) { b64pad = ''; }\n var tab = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var output = \"\";\n var len = input.length;\n for (var i = 0; i < len; i += 3) {\n var triplet = (input.charCodeAt(i) << 16)\n | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0)\n | (i + 2 < len ? input.charCodeAt(i + 2) : 0);\n for (var j = 0; j < 4; j++) {\n if (i * 8 + j * 6 > input.length * 8) output += b64pad;\n else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F);\n }\n }\n return output;\n}\n\n/*\n * Convert a raw string to an arbitrary string encoding\n */\nfunction rstr2any(input, encoding) {\n var divisor = encoding.length;\n var i, j, q, x, quotient;\n\n /* Convert to an array of 16-bit big-endian values, forming the dividend */\n var dividend = Array(Math.ceil(input.length / 2));\n for (i = 0; i < dividend.length; i++) {\n dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);\n }\n\n /*\n * Repeatedly perform a long division. The binary array forms the dividend,\n * the length of the encoding is the divisor. Once computed, the quotient\n * forms the dividend for the next step. All remainders are stored for later\n * use.\n */\n var full_length = Math.ceil(input.length * 8 /\n (Math.log(encoding.length) / Math.log(2)));\n var remainders = Array(full_length);\n for (j = 0; j < full_length; j++) {\n quotient = Array();\n x = 0;\n for (i = 0; i < dividend.length; i++) {\n x = (x << 16) + dividend[i];\n q = Math.floor(x / divisor);\n x -= q * divisor;\n if (quotient.length > 0 || q > 0)\n quotient[quotient.length] = q;\n }\n remainders[j] = x;\n dividend = quotient;\n }\n\n /* Convert the remainders to the output string */\n var output = \"\";\n for (i = remainders.length - 1; i >= 0; i--)\n output += encoding.charAt(remainders[i]);\n\n return output;\n}\n\n/*\n * Encode a string as utf-8.\n * For efficiency, this assumes the input is valid utf-16.\n */\nfunction str2rstr_utf8(input) {\n var output = \"\";\n var i = -1;\n var x, y;\n\n while (++i < input.length) {\n /* Decode utf-16 surrogate pairs */\n x = input.charCodeAt(i);\n y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;\n if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {\n x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);\n i++;\n }\n\n /* Encode output as utf-8 */\n if (x <= 0x7F)\n output += String.fromCharCode(x);\n else if (x <= 0x7FF)\n output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F),\n 0x80 | (x & 0x3F));\n else if (x <= 0xFFFF)\n output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n else if (x <= 0x1FFFFF)\n output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),\n 0x80 | ((x >>> 12) & 0x3F),\n 0x80 | ((x >>> 6) & 0x3F),\n 0x80 | (x & 0x3F));\n }\n return output;\n}\n\n/*\n * Encode a string as utf-16\n */\nfunction str2rstr_utf16le(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode(input.charCodeAt(i) & 0xFF,\n (input.charCodeAt(i) >>> 8) & 0xFF);\n return output;\n}\n\nfunction str2rstr_utf16be(input) {\n var output = \"\";\n for (var i = 0; i < input.length; i++)\n output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,\n input.charCodeAt(i) & 0xFF);\n return output;\n}\n\n/*\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nfunction rstr2binb(input) {\n var output = Array(input.length >> 2);\n for (var i = 0; i < output.length; i++)\n output[i] = 0;\n for (var i = 0; i < input.length * 8; i += 8)\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);\n return output;\n}\n\n/*\n * Convert an array of big-endian words to a string\n */\nfunction binb2rstr(input) {\n var output = \"\";\n for (var i = 0; i < input.length * 32; i += 8)\n output += String.fromCharCode((input[i >> 5] >>> (24 - i % 32)) & 0xFF);\n return output;\n}\n\n/*\n * Calculate the SHA-512 of an array of big-endian dwords, and a bit length\n */\nvar sha512_k;\nfunction binb_sha512(x, len) {\n if (sha512_k == undefined) {\n //SHA512 constants\n sha512_k = new Array(\n new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),\n new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),\n new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),\n new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),\n new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),\n new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),\n new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),\n new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),\n new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),\n new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),\n new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),\n new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),\n new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),\n new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),\n new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),\n new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),\n new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),\n new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),\n new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),\n new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),\n new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),\n new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),\n new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),\n new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),\n new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),\n new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),\n new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),\n new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),\n new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),\n new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),\n new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),\n new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),\n new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),\n new int64(-354779690, -840897762), new int64(-176337025, -294727304),\n new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),\n new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),\n new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),\n new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),\n new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),\n new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817));\n }\n\n //Initial hash values\n var H = new Array(\n new int64(0x6a09e667, -205731576),\n new int64(-1150833019, -2067093701),\n new int64(0x3c6ef372, -23791573),\n new int64(-1521486534, 0x5f1d36f1),\n new int64(0x510e527f, -1377402159),\n new int64(-1694144372, 0x2b3e6c1f),\n new int64(0x1f83d9ab, -79577749),\n new int64(0x5be0cd19, 0x137e2179));\n\n var T1 = new int64(0, 0),\n T2 = new int64(0, 0),\n a = new int64(0, 0),\n b = new int64(0, 0),\n c = new int64(0, 0),\n d = new int64(0, 0),\n e = new int64(0, 0),\n f = new int64(0, 0),\n g = new int64(0, 0),\n h = new int64(0, 0),\n //Temporary variables not specified by the document\n s0 = new int64(0, 0),\n s1 = new int64(0, 0),\n Ch = new int64(0, 0),\n Maj = new int64(0, 0),\n r1 = new int64(0, 0),\n r2 = new int64(0, 0),\n r3 = new int64(0, 0);\n var j, i;\n var W = new Array(80);\n for (i = 0; i < 80; i++)\n W[i] = new int64(0, 0);\n\n // append padding to the source string. The format is described in the FIPS.\n x[len >> 5] |= 0x80 << (24 - (len & 0x1f));\n x[((len + 128 >> 10) << 5) + 31] = len;\n\n for (i = 0; i < x.length; i += 32) //32 dwords is the block size\n {\n int64copy(a, H[0]);\n int64copy(b, H[1]);\n int64copy(c, H[2]);\n int64copy(d, H[3]);\n int64copy(e, H[4]);\n int64copy(f, H[5]);\n int64copy(g, H[6]);\n int64copy(h, H[7]);\n\n for (j = 0; j < 16; j++) {\n W[j].h = x[i + 2 * j];\n W[j].l = x[i + 2 * j + 1];\n }\n\n for (j = 16; j < 80; j++) {\n //sigma1\n int64rrot(r1, W[j - 2], 19);\n int64revrrot(r2, W[j - 2], 29);\n int64shr(r3, W[j - 2], 6);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n //sigma0\n int64rrot(r1, W[j - 15], 1);\n int64rrot(r2, W[j - 15], 8);\n int64shr(r3, W[j - 15], 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n int64add4(W[j], s1, W[j - 7], s0, W[j - 16]);\n }\n\n for (j = 0; j < 80; j++) {\n //Ch\n Ch.l = (e.l & f.l) ^ (~e.l & g.l);\n Ch.h = (e.h & f.h) ^ (~e.h & g.h);\n\n //Sigma1\n int64rrot(r1, e, 14);\n int64rrot(r2, e, 18);\n int64revrrot(r3, e, 9);\n s1.l = r1.l ^ r2.l ^ r3.l;\n s1.h = r1.h ^ r2.h ^ r3.h;\n\n //Sigma0\n int64rrot(r1, a, 28);\n int64revrrot(r2, a, 2);\n int64revrrot(r3, a, 7);\n s0.l = r1.l ^ r2.l ^ r3.l;\n s0.h = r1.h ^ r2.h ^ r3.h;\n\n //Maj\n Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);\n Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);\n\n int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);\n int64add(T2, s0, Maj);\n\n int64copy(h, g);\n int64copy(g, f);\n int64copy(f, e);\n int64add(e, d, T1);\n int64copy(d, c);\n int64copy(c, b);\n int64copy(b, a);\n int64add(a, T1, T2);\n }\n int64add(H[0], H[0], a);\n int64add(H[1], H[1], b);\n int64add(H[2], H[2], c);\n int64add(H[3], H[3], d);\n int64add(H[4], H[4], e);\n int64add(H[5], H[5], f);\n int64add(H[6], H[6], g);\n int64add(H[7], H[7], h);\n }\n\n //represent the hash as an array of 32-bit dwords\n var hash = new Array(16);\n for (i = 0; i < 8; i++) {\n hash[2 * i] = H[i].h;\n hash[2 * i + 1] = H[i].l;\n }\n return hash;\n}\n\n//A constructor for 64-bit numbers\nfunction int64(h, l) {\n this.h = h;\n this.l = l;\n //this.toString = int64toString;\n}\n\n//Copies src into dst, assuming both are 64-bit numbers\nfunction int64copy(dst, src) {\n dst.h = src.h;\n dst.l = src.l;\n}\n\n//Right-rotates a 64-bit number by shift\n//Won't handle cases of shift>=32\n//The function revrrot() is for that\nfunction int64rrot(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift) | (x.l << (32 - shift));\n}\n\n//Reverses the dwords of the source and then rotates right by shift.\n//This is equivalent to rotation by 32+shift\nfunction int64revrrot(dst, x, shift) {\n dst.l = (x.h >>> shift) | (x.l << (32 - shift));\n dst.h = (x.l >>> shift) | (x.h << (32 - shift));\n}\n\n//Bitwise-shifts right a 64-bit number by shift\n//Won't handle shift>=32, but it's never needed in SHA512\nfunction int64shr(dst, x, shift) {\n dst.l = (x.l >>> shift) | (x.h << (32 - shift));\n dst.h = (x.h >>> shift);\n}\n\n//Adds two 64-bit numbers\n//Like the original implementation, does not rely on 32-bit operations\nfunction int64add(dst, x, y) {\n var w0 = (x.l & 0xffff) + (y.l & 0xffff);\n var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);\n var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);\n var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n\n//Same, except with 4 addends. Works faster than adding them one by one.\nfunction int64add4(dst, a, b, c, d) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n\n//Same, except with 5 addends\nfunction int64add5(dst, a, b, c, d, e) {\n var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff);\n var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16);\n var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16);\n var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);\n dst.l = (w0 & 0xffff) | (w1 << 16);\n dst.h = (w2 & 0xffff) | (w3 << 16);\n}\n","import { hex_md5 } from './crypto/md5.mjs';\nimport { hex_sha1 } from './crypto/sha1.mjs';\nimport { hex_sha256 } from './crypto/sha256.mjs';\nimport { hex_sha512 } from './crypto/sha512.mjs';\n\n/**\n * 计算字符串的 MD5 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 32 个字符的十六进制 MD5 哈希值\n * @example\n * ```typescript\n * const hash = md5String('hello world');\n * console.log(hash); // '5eb63bbbe01eeed093cb22bb8f5acdc3'\n * ```\n */\nexport function md5String(input: string): string {\n return hex_md5(input);\n}\n\n/**\n * 计算字符串的 SHA1 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 40 个字符的十六进制 SHA1 哈希值\n * @example\n * ```typescript\n * const hash = sha1String('hello world');\n * console.log(hash); // '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'\n * ```\n */\nexport function sha1String(input: string): string {\n return hex_sha1(input);\n}\n\n/**\n * 计算字符串的 SHA256 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 64 个字符的十六进制 SHA256 哈希值\n * @example\n * ```typescript\n * const hash = sha256String('hello world');\n * console.log(hash); // 'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9'\n * ```\n */\nexport function sha256String(input: string): string {\n return hex_sha256(input);\n}\n\n/**\n * 计算字符串的 SHA512 哈希值\n * @param input - 需要计算哈希值的字符串\n * @returns 返回 128 个字符的十六进制 SHA512 哈希值\n * @example\n * ```typescript\n * const hash = sha512String('hello world');\n * console.log(hash); // '309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f'\n * ```\n */\nexport function sha512String(input: string): string {\n return hex_sha512(input);\n}\n"],"mappings":"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"}
|