{"version":3,"file":"static/vendor-a523c416.b22775ef.bundle.js","mappings":"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CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,OACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,OACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OAEtCsC,OAAQ,CACN,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC,IAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,MAAO,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,OACpC,EAAK,CAAC,KAAM,MAAO,KAAM,KAAM,KAAM,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACrC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,MAAO,KAAM,KAAM,KAAM,MACrC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MACpC,EAAK,CA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","sources":["webpack://my-paymentshield/../../src/util/colorUtils.ts","webpack://my-paymentshield/../../../src/util/color/transformCIELAB.ts","webpack://my-paymentshield/./node_modules/zxcvbn/lib/scoring.js","webpack://my-paymentshield/./node_modules/zxcvbn/lib/adjacency_graphs.js","webpack://my-paymentshield/./node_modules/zxcvbn/lib/matching.js","webpack://my-paymentshield/../../src/util/helpers.ts","webpack://my-paymentshield/../../src/util/dom.ts","webpack://my-paymentshield/./node_modules/vuex/dist/vuex.esm.js","webpack://my-paymentshield/../../src/util/mixins.ts","webpack://my-paymentshield/./node_modules/zxcvbn/lib/time_estimates.js","webpack://my-paymentshield/./node_modules/zxcvbn/lib/feedback.js","webpack://my-paymentshield/../../src/util/console.ts","webpack://my-paymentshield/./node_modules/zxcvbn/lib/main.js","webpack://my-paymentshield/../../src/util/mergeData.ts","webpack://my-paymentshield/../../../src/util/color/transformSRGB.ts"],"sourcesContent":["// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, padEnd } from './helpers'\nimport { toXYZ } from './color/transformSRGB'\n\n// Types\nimport { VuetifyThemeVariant } from 'types/services/theme'\n\nexport type ColorInt = number\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number }\nexport type HSVA = HSV & { a: number }\nexport type RGB = { r: number, g: number, b: number }\nexport type RGBA = RGB & { a: number }\nexport type HSL = { h: number, s: number, l: number }\nexport type HSLA = HSL & { a: number }\nexport type Hex = string\nexport type Hexa = string\nexport type Color = string | number | {}\n\nexport function isCssColor (color?: string | false): boolean {\n return !!color && !!color.match(/^(#|var\\(--|(rgb|hsl)a?\\()/)\n}\n\nexport function colorToInt (color: Color): ColorInt {\n let rgb\n\n if (typeof color === 'number') {\n rgb = color\n } else if (typeof color === 'string') {\n let c = color[0] === '#' ? color.substring(1) : color\n if (c.length === 3) {\n c = c.split('').map(char => char + char).join('')\n }\n if (c.length !== 6) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n }\n rgb = parseInt(c, 16)\n } else {\n throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`)\n }\n\n if (rgb < 0) {\n consoleWarn(`Colors cannot be negative: '${color}'`)\n rgb = 0\n } else if (rgb > 0xffffff || isNaN(rgb)) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n rgb = 0xffffff\n }\n\n return rgb\n}\n\nexport function classToHex (\n color: string,\n colors: Record>,\n currentTheme: Partial,\n): string {\n const [colorName, colorModifier] = color\n .toString().trim().replace('-', '').split(' ', 2) as (string | undefined)[]\n\n let hexColor = ''\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier]\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName] as string\n }\n\n return hexColor\n}\n\nexport function intToHex (color: ColorInt): string {\n let hexColor: string = color.toString(16)\n\n if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor\n\n return '#' + hexColor\n}\n\nexport function colorToHex (color: Color): string {\n return intToHex(colorToInt(color))\n}\n\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\nexport function HSVAtoRGBA (hsva: HSVA): RGBA {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\nexport function RGBAtoHSVA (rgba: RGBA): HSVA {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVAtoHSLA (hsva: HSVA): HSLA {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLAtoHSVA (hsl: HSLA): HSVA {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBAtoCSS (rgba: RGBA): string {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`\n}\n\nexport function RGBtoCSS (rgba: RGBA): string {\n return RGBAtoCSS({ ...rgba, a: 1 })\n}\n\nexport function RGBAtoHex (rgba: RGBA): Hex {\n const toHex = (v: number) => {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n }\n\n return `#${[\n toHex(rgba.r),\n toHex(rgba.g),\n toHex(rgba.b),\n toHex(Math.round(rgba.a * 255)),\n ].join('')}`\n}\n\nexport function HexToRGBA (hex: Hex): RGBA {\n const rgba = chunk(hex.slice(1), 2).map((c: string) => parseInt(c, 16))\n\n return {\n r: rgba[0],\n g: rgba[1],\n b: rgba[2],\n a: Math.round((rgba[3] / 255) * 100) / 100,\n }\n}\n\nexport function HexToHSVA (hex: Hex): HSVA {\n const rgb = HexToRGBA(hex)\n return RGBAtoHSVA(rgb)\n}\n\nexport function HSVAtoHex (hsva: HSVA): Hex {\n return RGBAtoHex(HSVAtoRGBA(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length === 6) {\n hex = padEnd(hex, 8, 'F')\n } else {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return `#${hex}`.toUpperCase().substr(0, 9)\n}\n\nexport function parseGradient (\n gradient: string,\n colors: Record>,\n currentTheme: Partial,\n) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGBA(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\n })\n}\n\nexport function RGBtoInt (rgba: RGBA): ColorInt {\n return (rgba.r << 16) + (rgba.g << 8) + rgba.b\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\nexport function contrastRatio (c1: RGBA, c2: RGBA): number {\n const [, y1] = toXYZ(RGBtoInt(c1))\n const [, y2] = toXYZ(RGBtoInt(c2))\n\n return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05)\n}\n","import { XYZ, LAB } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6÷29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","// Generated by CoffeeScript 1.10.0\nvar BRUTEFORCE_CARDINALITY, MIN_GUESSES_BEFORE_GROWING_SEQUENCE, MIN_SUBMATCH_GUESSES_MULTI_CHAR, MIN_SUBMATCH_GUESSES_SINGLE_CHAR, adjacency_graphs, calc_average_degree, k, scoring, v;\n\nadjacency_graphs = require('./adjacency_graphs');\n\ncalc_average_degree = function(graph) {\n var average, k, key, n, neighbors, v;\n average = 0;\n for (key in graph) {\n neighbors = graph[key];\n average += ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = neighbors.length; o < len; o++) {\n n = neighbors[o];\n if (n) {\n results.push(n);\n }\n }\n return results;\n })()).length;\n }\n average /= ((function() {\n var results;\n results = [];\n for (k in graph) {\n v = graph[k];\n results.push(k);\n }\n return results;\n })()).length;\n return average;\n};\n\nBRUTEFORCE_CARDINALITY = 10;\n\nMIN_GUESSES_BEFORE_GROWING_SEQUENCE = 10000;\n\nMIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;\n\nMIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;\n\nscoring = {\n nCk: function(n, k) {\n var d, o, r, ref;\n if (k > n) {\n return 0;\n }\n if (k === 0) {\n return 1;\n }\n r = 1;\n for (d = o = 1, ref = k; 1 <= ref ? o <= ref : o >= ref; d = 1 <= ref ? ++o : --o) {\n r *= n;\n r /= d;\n n -= 1;\n }\n return r;\n },\n log10: function(n) {\n return Math.log(n) / Math.log(10);\n },\n log2: function(n) {\n return Math.log(n) / Math.log(2);\n },\n factorial: function(n) {\n var f, i, o, ref;\n if (n < 2) {\n return 1;\n }\n f = 1;\n for (i = o = 2, ref = n; 2 <= ref ? o <= ref : o >= ref; i = 2 <= ref ? ++o : --o) {\n f *= i;\n }\n return f;\n },\n most_guessable_match_sequence: function(password, matches, _exclude_additive) {\n var _, bruteforce_update, guesses, k, l, len, len1, len2, lst, m, make_bruteforce_match, matches_by_j, n, o, optimal, optimal_l, optimal_match_sequence, q, ref, ref1, u, unwind, update, w;\n if (_exclude_additive == null) {\n _exclude_additive = false;\n }\n n = password.length;\n matches_by_j = (function() {\n var o, ref, results;\n results = [];\n for (_ = o = 0, ref = n; 0 <= ref ? o < ref : o > ref; _ = 0 <= ref ? ++o : --o) {\n results.push([]);\n }\n return results;\n })();\n for (o = 0, len = matches.length; o < len; o++) {\n m = matches[o];\n matches_by_j[m.j].push(m);\n }\n for (q = 0, len1 = matches_by_j.length; q < len1; q++) {\n lst = matches_by_j[q];\n lst.sort(function(m1, m2) {\n return m1.i - m2.i;\n });\n }\n optimal = {\n m: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n pi: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n g: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })()\n };\n update = (function(_this) {\n return function(m, l) {\n var competing_g, competing_l, g, k, pi, ref;\n k = m.j;\n pi = _this.estimate_guesses(m, password);\n if (l > 1) {\n pi *= optimal.pi[m.i - 1][l - 1];\n }\n g = _this.factorial(l) * pi;\n if (!_exclude_additive) {\n g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);\n }\n ref = optimal.g[k];\n for (competing_l in ref) {\n competing_g = ref[competing_l];\n if (competing_l > l) {\n continue;\n }\n if (competing_g <= g) {\n return;\n }\n }\n optimal.g[k][l] = g;\n optimal.m[k][l] = m;\n return optimal.pi[k][l] = pi;\n };\n })(this);\n bruteforce_update = (function(_this) {\n return function(k) {\n var i, l, last_m, ref, results, u;\n m = make_bruteforce_match(0, k);\n update(m, 1);\n results = [];\n for (i = u = 1, ref = k; 1 <= ref ? u <= ref : u >= ref; i = 1 <= ref ? ++u : --u) {\n m = make_bruteforce_match(i, k);\n results.push((function() {\n var ref1, results1;\n ref1 = optimal.m[i - 1];\n results1 = [];\n for (l in ref1) {\n last_m = ref1[l];\n l = parseInt(l);\n if (last_m.pattern === 'bruteforce') {\n continue;\n }\n results1.push(update(m, l + 1));\n }\n return results1;\n })());\n }\n return results;\n };\n })(this);\n make_bruteforce_match = (function(_this) {\n return function(i, j) {\n return {\n pattern: 'bruteforce',\n token: password.slice(i, +j + 1 || 9e9),\n i: i,\n j: j\n };\n };\n })(this);\n unwind = (function(_this) {\n return function(n) {\n var candidate_g, candidate_l, g, k, l, optimal_match_sequence, ref;\n optimal_match_sequence = [];\n k = n - 1;\n l = void 0;\n g = Infinity;\n ref = optimal.g[k];\n for (candidate_l in ref) {\n candidate_g = ref[candidate_l];\n if (candidate_g < g) {\n l = candidate_l;\n g = candidate_g;\n }\n }\n while (k >= 0) {\n m = optimal.m[k][l];\n optimal_match_sequence.unshift(m);\n k = m.i - 1;\n l--;\n }\n return optimal_match_sequence;\n };\n })(this);\n for (k = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; k = 0 <= ref ? ++u : --u) {\n ref1 = matches_by_j[k];\n for (w = 0, len2 = ref1.length; w < len2; w++) {\n m = ref1[w];\n if (m.i > 0) {\n for (l in optimal.m[m.i - 1]) {\n l = parseInt(l);\n update(m, l + 1);\n }\n } else {\n update(m, 1);\n }\n }\n bruteforce_update(k);\n }\n optimal_match_sequence = unwind(n);\n optimal_l = optimal_match_sequence.length;\n if (password.length === 0) {\n guesses = 1;\n } else {\n guesses = optimal.g[n - 1][optimal_l];\n }\n return {\n password: password,\n guesses: guesses,\n guesses_log10: this.log10(guesses),\n sequence: optimal_match_sequence\n };\n },\n estimate_guesses: function(match, password) {\n var estimation_functions, guesses, min_guesses;\n if (match.guesses != null) {\n return match.guesses;\n }\n min_guesses = 1;\n if (match.token.length < password.length) {\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR : MIN_SUBMATCH_GUESSES_MULTI_CHAR;\n }\n estimation_functions = {\n bruteforce: this.bruteforce_guesses,\n dictionary: this.dictionary_guesses,\n spatial: this.spatial_guesses,\n repeat: this.repeat_guesses,\n sequence: this.sequence_guesses,\n regex: this.regex_guesses,\n date: this.date_guesses\n };\n guesses = estimation_functions[match.pattern].call(this, match);\n match.guesses = Math.max(guesses, min_guesses);\n match.guesses_log10 = this.log10(match.guesses);\n return match.guesses;\n },\n bruteforce_guesses: function(match) {\n var guesses, min_guesses;\n guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);\n if (guesses === Number.POSITIVE_INFINITY) {\n guesses = Number.MAX_VALUE;\n }\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR + 1 : MIN_SUBMATCH_GUESSES_MULTI_CHAR + 1;\n return Math.max(guesses, min_guesses);\n },\n repeat_guesses: function(match) {\n return match.base_guesses * match.repeat_count;\n },\n sequence_guesses: function(match) {\n var base_guesses, first_chr;\n first_chr = match.token.charAt(0);\n if (first_chr === 'a' || first_chr === 'A' || first_chr === 'z' || first_chr === 'Z' || first_chr === '0' || first_chr === '1' || first_chr === '9') {\n base_guesses = 4;\n } else {\n if (first_chr.match(/\\d/)) {\n base_guesses = 10;\n } else {\n base_guesses = 26;\n }\n }\n if (!match.ascending) {\n base_guesses *= 2;\n }\n return base_guesses * match.token.length;\n },\n MIN_YEAR_SPACE: 20,\n REFERENCE_YEAR: new Date().getFullYear(),\n regex_guesses: function(match) {\n var char_class_bases, year_space;\n char_class_bases = {\n alpha_lower: 26,\n alpha_upper: 26,\n alpha: 52,\n alphanumeric: 62,\n digits: 10,\n symbols: 33\n };\n if (match.regex_name in char_class_bases) {\n return Math.pow(char_class_bases[match.regex_name], match.token.length);\n } else {\n switch (match.regex_name) {\n case 'recent_year':\n year_space = Math.abs(parseInt(match.regex_match[0]) - this.REFERENCE_YEAR);\n year_space = Math.max(year_space, this.MIN_YEAR_SPACE);\n return year_space;\n }\n }\n },\n date_guesses: function(match) {\n var guesses, year_space;\n year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);\n guesses = year_space * 365;\n if (match.separator) {\n guesses *= 4;\n }\n return guesses;\n },\n KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),\n KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),\n KEYBOARD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.qwerty;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n KEYPAD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.keypad;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n spatial_guesses: function(match) {\n var L, S, U, d, guesses, i, j, o, possible_turns, q, ref, ref1, ref2, ref3, s, shifted_variations, t, u;\n if ((ref = match.graph) === 'qwerty' || ref === 'dvorak') {\n s = this.KEYBOARD_STARTING_POSITIONS;\n d = this.KEYBOARD_AVERAGE_DEGREE;\n } else {\n s = this.KEYPAD_STARTING_POSITIONS;\n d = this.KEYPAD_AVERAGE_DEGREE;\n }\n guesses = 0;\n L = match.token.length;\n t = match.turns;\n for (i = o = 2, ref1 = L; 2 <= ref1 ? o <= ref1 : o >= ref1; i = 2 <= ref1 ? ++o : --o) {\n possible_turns = Math.min(t, i - 1);\n for (j = q = 1, ref2 = possible_turns; 1 <= ref2 ? q <= ref2 : q >= ref2; j = 1 <= ref2 ? ++q : --q) {\n guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);\n }\n }\n if (match.shifted_count) {\n S = match.shifted_count;\n U = match.token.length - match.shifted_count;\n if (S === 0 || U === 0) {\n guesses *= 2;\n } else {\n shifted_variations = 0;\n for (i = u = 1, ref3 = Math.min(S, U); 1 <= ref3 ? u <= ref3 : u >= ref3; i = 1 <= ref3 ? ++u : --u) {\n shifted_variations += this.nCk(S + U, i);\n }\n guesses *= shifted_variations;\n }\n }\n return guesses;\n },\n dictionary_guesses: function(match) {\n var reversed_variations;\n match.base_guesses = match.rank;\n match.uppercase_variations = this.uppercase_variations(match);\n match.l33t_variations = this.l33t_variations(match);\n reversed_variations = match.reversed && 2 || 1;\n return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;\n },\n START_UPPER: /^[A-Z][^A-Z]+$/,\n END_UPPER: /^[^A-Z]+[A-Z]$/,\n ALL_UPPER: /^[^a-z]+$/,\n ALL_LOWER: /^[^A-Z]+$/,\n uppercase_variations: function(match) {\n var L, U, chr, i, len, o, q, ref, ref1, regex, variations, word;\n word = match.token;\n if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {\n return 1;\n }\n ref = [this.START_UPPER, this.END_UPPER, this.ALL_UPPER];\n for (o = 0, len = ref.length; o < len; o++) {\n regex = ref[o];\n if (word.match(regex)) {\n return 2;\n }\n }\n U = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[A-Z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n L = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[a-z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n variations = 0;\n for (i = q = 1, ref1 = Math.min(U, L); 1 <= ref1 ? q <= ref1 : q >= ref1; i = 1 <= ref1 ? ++q : --q) {\n variations += this.nCk(U + L, i);\n }\n return variations;\n },\n l33t_variations: function(match) {\n var S, U, chr, chrs, i, o, p, possibilities, ref, ref1, subbed, unsubbed, variations;\n if (!match.l33t) {\n return 1;\n }\n variations = 1;\n ref = match.sub;\n for (subbed in ref) {\n unsubbed = ref[subbed];\n chrs = match.token.toLowerCase().split('');\n S = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === subbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n U = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === unsubbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n if (S === 0 || U === 0) {\n variations *= 2;\n } else {\n p = Math.min(U, S);\n possibilities = 0;\n for (i = o = 1, ref1 = p; 1 <= ref1 ? o <= ref1 : o >= ref1; i = 1 <= ref1 ? ++o : --o) {\n possibilities += this.nCk(U + S, i);\n }\n variations *= possibilities;\n }\n }\n return variations;\n }\n};\n\nmodule.exports = scoring;\n\n//# sourceMappingURL=scoring.js.map\n","// Generated by CoffeeScript 1.10.0\nvar adjacency_graphs;\n\nadjacency_graphs = {\n qwerty: {\n \"!\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"\\\"\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"#\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"$\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"%\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"&\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"'\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"(\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \")\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"*\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"+\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \",\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"-\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \".\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"/\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"0\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"1\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"2\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"3\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"4\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"5\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"6\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"7\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"8\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"9\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \":\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \";\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \"<\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"=\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \">\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"?\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"@\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"A\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"B\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"C\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"D\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"E\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"F\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"G\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"H\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"I\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"J\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"K\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"L\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"M\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"N\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"O\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"P\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"Q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"R\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"S\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"T\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"U\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"V\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"W\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"X\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"Y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"Z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"[\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"\\\\\": [\"]}\", null, null, null, null, null],\n \"]\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"^\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"_\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"b\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"c\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"d\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"e\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"f\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"g\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"h\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"i\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"j\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"k\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"l\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"m\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"n\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"o\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"p\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"r\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"s\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"t\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"u\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"v\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"w\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"x\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"{\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"|\": [\"]}\", null, null, null, null, null],\n \"}\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n dvorak: {\n \"!\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"\\\"\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"#\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"$\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"%\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"&\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"'\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"(\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \")\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"*\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"+\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \",\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"-\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \".\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"/\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"0\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"1\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"2\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"3\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"4\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"5\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"6\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"7\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"8\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"9\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \":\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \";\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \"<\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"=\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \">\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"?\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"@\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"A\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"B\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"C\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"D\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"E\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"F\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"G\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"H\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"I\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"J\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"K\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"L\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"M\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"N\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"O\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"P\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"Q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"R\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"S\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"T\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"U\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"V\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"W\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"X\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"Y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"Z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"[\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"\\\\\": [\"=+\", null, null, null, null, null],\n \"]\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"^\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"_\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"b\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"c\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"d\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"e\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"f\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"g\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"h\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"i\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"j\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"k\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"l\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"m\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"n\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"o\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"p\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"r\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"s\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"t\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"u\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"v\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"w\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"x\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"{\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"|\": [\"=+\", null, null, null, null, null],\n \"}\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n keypad: {\n \"*\": [\"/\", null, null, null, \"-\", \"+\", \"9\", \"8\"],\n \"+\": [\"9\", \"*\", \"-\", null, null, null, null, \"6\"],\n \"-\": [\"*\", null, null, null, null, null, \"+\", \"9\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [null, null, null, null, \"*\", \"9\", \"8\", \"7\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", null, null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"+\", null, null, \"3\", \"2\"],\n \"7\": [null, null, null, \"/\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"/\", \"*\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"/\", \"*\", \"-\", \"+\", null, \"6\", \"5\"]\n },\n mac_keypad: {\n \"*\": [\"/\", null, null, null, null, null, \"-\", \"9\"],\n \"+\": [\"6\", \"9\", \"-\", null, null, null, null, \"3\"],\n \"-\": [\"9\", \"/\", \"*\", null, null, null, \"+\", \"6\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [\"=\", null, null, null, \"*\", \"-\", \"9\", \"8\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", \"+\", null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"-\", \"+\", null, \"3\", \"2\"],\n \"7\": [null, null, null, \"=\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"=\", \"/\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"=\", \"/\", \"*\", \"-\", \"+\", \"6\", \"5\"],\n \"=\": [null, null, null, null, \"/\", \"9\", \"8\", \"7\"]\n }\n};\n\nmodule.exports = adjacency_graphs;\n\n//# sourceMappingURL=adjacency_graphs.js.map\n","// Generated by CoffeeScript 1.10.0\nvar DATE_MAX_YEAR, DATE_MIN_YEAR, DATE_SPLITS, GRAPHS, L33T_TABLE, RANKED_DICTIONARIES, REGEXEN, adjacency_graphs, build_ranked_dict, frequency_lists, lst, matching, name, scoring;\n\nfrequency_lists = require('./frequency_lists');\n\nadjacency_graphs = require('./adjacency_graphs');\n\nscoring = require('./scoring');\n\nbuild_ranked_dict = function(ordered_list) {\n var i, len1, o, result, word;\n result = {};\n i = 1;\n for (o = 0, len1 = ordered_list.length; o < len1; o++) {\n word = ordered_list[o];\n result[word] = i;\n i += 1;\n }\n return result;\n};\n\nRANKED_DICTIONARIES = {};\n\nfor (name in frequency_lists) {\n lst = frequency_lists[name];\n RANKED_DICTIONARIES[name] = build_ranked_dict(lst);\n}\n\nGRAPHS = {\n qwerty: adjacency_graphs.qwerty,\n dvorak: adjacency_graphs.dvorak,\n keypad: adjacency_graphs.keypad,\n mac_keypad: adjacency_graphs.mac_keypad\n};\n\nL33T_TABLE = {\n a: ['4', '@'],\n b: ['8'],\n c: ['(', '{', '[', '<'],\n e: ['3'],\n g: ['6', '9'],\n i: ['1', '!', '|'],\n l: ['1', '|', '7'],\n o: ['0'],\n s: ['$', '5'],\n t: ['+', '7'],\n x: ['%'],\n z: ['2']\n};\n\nREGEXEN = {\n recent_year: /19\\d\\d|200\\d|201\\d/g\n};\n\nDATE_MAX_YEAR = 2050;\n\nDATE_MIN_YEAR = 1000;\n\nDATE_SPLITS = {\n 4: [[1, 2], [2, 3]],\n 5: [[1, 3], [2, 3]],\n 6: [[1, 2], [2, 4], [4, 5]],\n 7: [[1, 3], [2, 3], [4, 5], [4, 6]],\n 8: [[2, 4], [4, 6]]\n};\n\nmatching = {\n empty: function(obj) {\n var k;\n return ((function() {\n var results;\n results = [];\n for (k in obj) {\n results.push(k);\n }\n return results;\n })()).length === 0;\n },\n extend: function(lst, lst2) {\n return lst.push.apply(lst, lst2);\n },\n translate: function(string, chr_map) {\n var chr;\n return ((function() {\n var len1, o, ref, results;\n ref = string.split('');\n results = [];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n results.push(chr_map[chr] || chr);\n }\n return results;\n })()).join('');\n },\n mod: function(n, m) {\n return ((n % m) + m) % m;\n },\n sorted: function(matches) {\n return matches.sort(function(m1, m2) {\n return (m1.i - m2.i) || (m1.j - m2.j);\n });\n },\n omnimatch: function(password) {\n var len1, matcher, matchers, matches, o;\n matches = [];\n matchers = [this.dictionary_match, this.reverse_dictionary_match, this.l33t_match, this.spatial_match, this.repeat_match, this.sequence_match, this.regex_match, this.date_match];\n for (o = 0, len1 = matchers.length; o < len1; o++) {\n matcher = matchers[o];\n this.extend(matches, matcher.call(this, password));\n }\n return this.sorted(matches);\n },\n dictionary_match: function(password, _ranked_dictionaries) {\n var dictionary_name, i, j, len, matches, o, p, password_lower, rank, ranked_dict, ref, ref1, ref2, word;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n matches = [];\n len = password.length;\n password_lower = password.toLowerCase();\n for (dictionary_name in _ranked_dictionaries) {\n ranked_dict = _ranked_dictionaries[dictionary_name];\n for (i = o = 0, ref = len; 0 <= ref ? o < ref : o > ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i, ref2 = len; ref1 <= ref2 ? p < ref2 : p > ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (password_lower.slice(i, +j + 1 || 9e9) in ranked_dict) {\n word = password_lower.slice(i, +j + 1 || 9e9);\n rank = ranked_dict[word];\n matches.push({\n pattern: 'dictionary',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n matched_word: word,\n rank: rank,\n dictionary_name: dictionary_name,\n reversed: false,\n l33t: false\n });\n }\n }\n }\n }\n return this.sorted(matches);\n },\n reverse_dictionary_match: function(password, _ranked_dictionaries) {\n var len1, match, matches, o, ref, reversed_password;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n reversed_password = password.split('').reverse().join('');\n matches = this.dictionary_match(reversed_password, _ranked_dictionaries);\n for (o = 0, len1 = matches.length; o < len1; o++) {\n match = matches[o];\n match.token = match.token.split('').reverse().join('');\n match.reversed = true;\n ref = [password.length - 1 - match.j, password.length - 1 - match.i], match.i = ref[0], match.j = ref[1];\n }\n return this.sorted(matches);\n },\n set_user_input_dictionary: function(ordered_list) {\n return RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict(ordered_list.slice());\n },\n relevant_l33t_subtable: function(password, table) {\n var chr, len1, letter, o, password_chars, ref, relevant_subs, sub, subs, subtable;\n password_chars = {};\n ref = password.split('');\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n password_chars[chr] = true;\n }\n subtable = {};\n for (letter in table) {\n subs = table[letter];\n relevant_subs = (function() {\n var len2, p, results;\n results = [];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n if (sub in password_chars) {\n results.push(sub);\n }\n }\n return results;\n })();\n if (relevant_subs.length > 0) {\n subtable[letter] = relevant_subs;\n }\n }\n return subtable;\n },\n enumerate_l33t_subs: function(table) {\n var chr, dedup, helper, k, keys, l33t_chr, len1, len2, o, p, ref, sub, sub_dict, sub_dicts, subs;\n keys = (function() {\n var results;\n results = [];\n for (k in table) {\n results.push(k);\n }\n return results;\n })();\n subs = [[]];\n dedup = function(subs) {\n var assoc, deduped, label, len1, members, o, sub, v;\n deduped = [];\n members = {};\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n assoc = (function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = sub.length; p < len2; v = ++p) {\n k = sub[v];\n results.push([k, v]);\n }\n return results;\n })();\n assoc.sort();\n label = ((function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = assoc.length; p < len2; v = ++p) {\n k = assoc[v];\n results.push(k + ',' + v);\n }\n return results;\n })()).join('-');\n if (!(label in members)) {\n members[label] = true;\n deduped.push(sub);\n }\n }\n return deduped;\n };\n helper = function(keys) {\n var dup_l33t_index, first_key, i, l33t_chr, len1, len2, next_subs, o, p, q, ref, ref1, rest_keys, sub, sub_alternative, sub_extension;\n if (!keys.length) {\n return;\n }\n first_key = keys[0];\n rest_keys = keys.slice(1);\n next_subs = [];\n ref = table[first_key];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n l33t_chr = ref[o];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n dup_l33t_index = -1;\n for (i = q = 0, ref1 = sub.length; 0 <= ref1 ? q < ref1 : q > ref1; i = 0 <= ref1 ? ++q : --q) {\n if (sub[i][0] === l33t_chr) {\n dup_l33t_index = i;\n break;\n }\n }\n if (dup_l33t_index === -1) {\n sub_extension = sub.concat([[l33t_chr, first_key]]);\n next_subs.push(sub_extension);\n } else {\n sub_alternative = sub.slice(0);\n sub_alternative.splice(dup_l33t_index, 1);\n sub_alternative.push([l33t_chr, first_key]);\n next_subs.push(sub);\n next_subs.push(sub_alternative);\n }\n }\n }\n subs = dedup(next_subs);\n return helper(rest_keys);\n };\n helper(keys);\n sub_dicts = [];\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n sub_dict = {};\n for (p = 0, len2 = sub.length; p < len2; p++) {\n ref = sub[p], l33t_chr = ref[0], chr = ref[1];\n sub_dict[l33t_chr] = chr;\n }\n sub_dicts.push(sub_dict);\n }\n return sub_dicts;\n },\n l33t_match: function(password, _ranked_dictionaries, _l33t_table) {\n var chr, k, len1, len2, match, match_sub, matches, o, p, ref, ref1, sub, subbed_chr, subbed_password, token, v;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n if (_l33t_table == null) {\n _l33t_table = L33T_TABLE;\n }\n matches = [];\n ref = this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table));\n for (o = 0, len1 = ref.length; o < len1; o++) {\n sub = ref[o];\n if (this.empty(sub)) {\n break;\n }\n subbed_password = this.translate(password, sub);\n ref1 = this.dictionary_match(subbed_password, _ranked_dictionaries);\n for (p = 0, len2 = ref1.length; p < len2; p++) {\n match = ref1[p];\n token = password.slice(match.i, +match.j + 1 || 9e9);\n if (token.toLowerCase() === match.matched_word) {\n continue;\n }\n match_sub = {};\n for (subbed_chr in sub) {\n chr = sub[subbed_chr];\n if (token.indexOf(subbed_chr) !== -1) {\n match_sub[subbed_chr] = chr;\n }\n }\n match.l33t = true;\n match.token = token;\n match.sub = match_sub;\n match.sub_display = ((function() {\n var results;\n results = [];\n for (k in match_sub) {\n v = match_sub[k];\n results.push(k + \" -> \" + v);\n }\n return results;\n })()).join(', ');\n matches.push(match);\n }\n }\n return this.sorted(matches.filter(function(match) {\n return match.token.length > 1;\n }));\n },\n spatial_match: function(password, _graphs) {\n var graph, graph_name, matches;\n if (_graphs == null) {\n _graphs = GRAPHS;\n }\n matches = [];\n for (graph_name in _graphs) {\n graph = _graphs[graph_name];\n this.extend(matches, this.spatial_match_helper(password, graph, graph_name));\n }\n return this.sorted(matches);\n },\n SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,\n spatial_match_helper: function(password, graph, graph_name) {\n var adj, adjacents, cur_char, cur_direction, found, found_direction, i, j, last_direction, len1, matches, o, prev_char, shifted_count, turns;\n matches = [];\n i = 0;\n while (i < password.length - 1) {\n j = i + 1;\n last_direction = null;\n turns = 0;\n if ((graph_name === 'qwerty' || graph_name === 'dvorak') && this.SHIFTED_RX.exec(password.charAt(i))) {\n shifted_count = 1;\n } else {\n shifted_count = 0;\n }\n while (true) {\n prev_char = password.charAt(j - 1);\n found = false;\n found_direction = -1;\n cur_direction = -1;\n adjacents = graph[prev_char] || [];\n if (j < password.length) {\n cur_char = password.charAt(j);\n for (o = 0, len1 = adjacents.length; o < len1; o++) {\n adj = adjacents[o];\n cur_direction += 1;\n if (adj && adj.indexOf(cur_char) !== -1) {\n found = true;\n found_direction = cur_direction;\n if (adj.indexOf(cur_char) === 1) {\n shifted_count += 1;\n }\n if (last_direction !== found_direction) {\n turns += 1;\n last_direction = found_direction;\n }\n break;\n }\n }\n }\n if (found) {\n j += 1;\n } else {\n if (j - i > 2) {\n matches.push({\n pattern: 'spatial',\n i: i,\n j: j - 1,\n token: password.slice(i, j),\n graph: graph_name,\n turns: turns,\n shifted_count: shifted_count\n });\n }\n i = j;\n break;\n }\n }\n }\n return matches;\n },\n repeat_match: function(password) {\n var base_analysis, base_guesses, base_matches, base_token, greedy, greedy_match, i, j, lastIndex, lazy, lazy_anchored, lazy_match, match, matches, ref;\n matches = [];\n greedy = /(.+)\\1+/g;\n lazy = /(.+?)\\1+/g;\n lazy_anchored = /^(.+?)\\1+$/;\n lastIndex = 0;\n while (lastIndex < password.length) {\n greedy.lastIndex = lazy.lastIndex = lastIndex;\n greedy_match = greedy.exec(password);\n lazy_match = lazy.exec(password);\n if (greedy_match == null) {\n break;\n }\n if (greedy_match[0].length > lazy_match[0].length) {\n match = greedy_match;\n base_token = lazy_anchored.exec(match[0])[1];\n } else {\n match = lazy_match;\n base_token = match[1];\n }\n ref = [match.index, match.index + match[0].length - 1], i = ref[0], j = ref[1];\n base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));\n base_matches = base_analysis.sequence;\n base_guesses = base_analysis.guesses;\n matches.push({\n pattern: 'repeat',\n i: i,\n j: j,\n token: match[0],\n base_token: base_token,\n base_guesses: base_guesses,\n base_matches: base_matches,\n repeat_count: match[0].length / base_token.length\n });\n lastIndex = j + 1;\n }\n return matches;\n },\n MAX_DELTA: 5,\n sequence_match: function(password) {\n var delta, i, j, k, last_delta, o, ref, result, update;\n if (password.length === 1) {\n return [];\n }\n update = (function(_this) {\n return function(i, j, delta) {\n var ref, sequence_name, sequence_space, token;\n if (j - i > 1 || Math.abs(delta) === 1) {\n if ((0 < (ref = Math.abs(delta)) && ref <= _this.MAX_DELTA)) {\n token = password.slice(i, +j + 1 || 9e9);\n if (/^[a-z]+$/.test(token)) {\n sequence_name = 'lower';\n sequence_space = 26;\n } else if (/^[A-Z]+$/.test(token)) {\n sequence_name = 'upper';\n sequence_space = 26;\n } else if (/^\\d+$/.test(token)) {\n sequence_name = 'digits';\n sequence_space = 10;\n } else {\n sequence_name = 'unicode';\n sequence_space = 26;\n }\n return result.push({\n pattern: 'sequence',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n sequence_name: sequence_name,\n sequence_space: sequence_space,\n ascending: delta > 0\n });\n }\n }\n };\n })(this);\n result = [];\n i = 0;\n last_delta = null;\n for (k = o = 1, ref = password.length; 1 <= ref ? o < ref : o > ref; k = 1 <= ref ? ++o : --o) {\n delta = password.charCodeAt(k) - password.charCodeAt(k - 1);\n if (last_delta == null) {\n last_delta = delta;\n }\n if (delta === last_delta) {\n continue;\n }\n j = k - 1;\n update(i, j, last_delta);\n i = j;\n last_delta = delta;\n }\n update(i, password.length - 1, last_delta);\n return result;\n },\n regex_match: function(password, _regexen) {\n var matches, regex, rx_match, token;\n if (_regexen == null) {\n _regexen = REGEXEN;\n }\n matches = [];\n for (name in _regexen) {\n regex = _regexen[name];\n regex.lastIndex = 0;\n while (rx_match = regex.exec(password)) {\n token = rx_match[0];\n matches.push({\n pattern: 'regex',\n token: token,\n i: rx_match.index,\n j: rx_match.index + rx_match[0].length - 1,\n regex_name: name,\n regex_match: rx_match\n });\n }\n }\n return this.sorted(matches);\n },\n date_match: function(password) {\n var best_candidate, candidate, candidates, distance, dmy, i, j, k, l, len1, len2, matches, maybe_date_no_separator, maybe_date_with_separator, metric, min_distance, o, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, rx_match, s, t, token;\n matches = [];\n maybe_date_no_separator = /^\\d{4,8}$/;\n maybe_date_with_separator = /^(\\d{1,4})([\\s\\/\\\\_.-])(\\d{1,2})\\2(\\d{1,4})$/;\n for (i = o = 0, ref = password.length - 4; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i + 3, ref2 = i + 7; ref1 <= ref2 ? p <= ref2 : p >= ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n if (!maybe_date_no_separator.exec(token)) {\n continue;\n }\n candidates = [];\n ref3 = DATE_SPLITS[token.length];\n for (q = 0, len1 = ref3.length; q < len1; q++) {\n ref4 = ref3[q], k = ref4[0], l = ref4[1];\n dmy = this.map_ints_to_dmy([parseInt(token.slice(0, k)), parseInt(token.slice(k, l)), parseInt(token.slice(l))]);\n if (dmy != null) {\n candidates.push(dmy);\n }\n }\n if (!(candidates.length > 0)) {\n continue;\n }\n best_candidate = candidates[0];\n metric = function(candidate) {\n return Math.abs(candidate.year - scoring.REFERENCE_YEAR);\n };\n min_distance = metric(candidates[0]);\n ref5 = candidates.slice(1);\n for (r = 0, len2 = ref5.length; r < len2; r++) {\n candidate = ref5[r];\n distance = metric(candidate);\n if (distance < min_distance) {\n ref6 = [candidate, distance], best_candidate = ref6[0], min_distance = ref6[1];\n }\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: '',\n year: best_candidate.year,\n month: best_candidate.month,\n day: best_candidate.day\n });\n }\n }\n for (i = s = 0, ref7 = password.length - 6; 0 <= ref7 ? s <= ref7 : s >= ref7; i = 0 <= ref7 ? ++s : --s) {\n for (j = t = ref8 = i + 5, ref9 = i + 9; ref8 <= ref9 ? t <= ref9 : t >= ref9; j = ref8 <= ref9 ? ++t : --t) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n rx_match = maybe_date_with_separator.exec(token);\n if (rx_match == null) {\n continue;\n }\n dmy = this.map_ints_to_dmy([parseInt(rx_match[1]), parseInt(rx_match[3]), parseInt(rx_match[4])]);\n if (dmy == null) {\n continue;\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: rx_match[2],\n year: dmy.year,\n month: dmy.month,\n day: dmy.day\n });\n }\n }\n return this.sorted(matches.filter(function(match) {\n var is_submatch, len3, other_match, u;\n is_submatch = false;\n for (u = 0, len3 = matches.length; u < len3; u++) {\n other_match = matches[u];\n if (match === other_match) {\n continue;\n }\n if (other_match.i <= match.i && other_match.j >= match.j) {\n is_submatch = true;\n break;\n }\n }\n return !is_submatch;\n }));\n },\n map_ints_to_dmy: function(ints) {\n var dm, int, len1, len2, len3, o, over_12, over_31, p, possible_year_splits, q, ref, ref1, rest, under_1, y;\n if (ints[1] > 31 || ints[1] <= 0) {\n return;\n }\n over_12 = 0;\n over_31 = 0;\n under_1 = 0;\n for (o = 0, len1 = ints.length; o < len1; o++) {\n int = ints[o];\n if ((99 < int && int < DATE_MIN_YEAR) || int > DATE_MAX_YEAR) {\n return;\n }\n if (int > 31) {\n over_31 += 1;\n }\n if (int > 12) {\n over_12 += 1;\n }\n if (int <= 0) {\n under_1 += 1;\n }\n }\n if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {\n return;\n }\n possible_year_splits = [[ints[2], ints.slice(0, 2)], [ints[0], ints.slice(1, 3)]];\n for (p = 0, len2 = possible_year_splits.length; p < len2; p++) {\n ref = possible_year_splits[p], y = ref[0], rest = ref[1];\n if ((DATE_MIN_YEAR <= y && y <= DATE_MAX_YEAR)) {\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n } else {\n return;\n }\n }\n }\n for (q = 0, len3 = possible_year_splits.length; q < len3; q++) {\n ref1 = possible_year_splits[q], y = ref1[0], rest = ref1[1];\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n y = this.two_to_four_digit_year(y);\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n }\n }\n },\n map_ints_to_dm: function(ints) {\n var d, len1, m, o, ref, ref1;\n ref = [ints, ints.slice().reverse()];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n ref1 = ref[o], d = ref1[0], m = ref1[1];\n if ((1 <= d && d <= 31) && (1 <= m && m <= 12)) {\n return {\n day: d,\n month: m\n };\n }\n }\n },\n two_to_four_digit_year: function(year) {\n if (year > 99) {\n return year;\n } else if (year > 50) {\n return year + 1900;\n } else {\n return year + 2000;\n }\n }\n};\n\nmodule.exports = matching;\n\n//# sourceMappingURL=matching.js.map\n","import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey, ItemGroup } from 'vuetify/types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n props: {\n tag: {\n type: String,\n default: el,\n },\n },\n\n render (h, { data, props, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(props.tag, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n const once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n }) as EventListener & EventListenerOptions\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) } /* eslint-disable-line no-console */\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: (event: any) => void,\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nexport function filterObjectOnKeys (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\n/**\n * This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n * to the current name or component for that icon.\n */\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n // Look for custom component in the configuration\n const component = vm.$vuetify.icons.component\n\n // Look for overrides\n if (iconName.startsWith('$')) {\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n const override = getObjectValueByPath(vm, iconPath, iconName)\n\n if (typeof override === 'string') iconName = override\n else return override\n }\n\n if (component == null) {\n return iconName\n }\n\n return {\n component,\n props: {\n icon: iconName,\n },\n }\n}\n\nexport function keys (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup[] {\n const key = groupBy[0]\n const groups: ItemGroup[] = []\n let current\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key, null)\n if (current !== val) {\n current = val\n groups.push({\n name: val ?? '',\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - `