{
  "errors": [
    "./src/index.js\nModule not found: Error: Can't resolve 'react-tooltip' in '/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src'\nresolve 'react-tooltip' in '/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src'\n  Parsed request is a module\n  using description file: /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/package.json (relative path: ./src)\n    Field 'browser' doesn't contain a valid alias configuration\n  after using description file: /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/package.json (relative path: ./src)\n    resolve as module\n      /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/node_modules doesn't exist or is not a directory\n      /Users/mike/dev/enzoic/node_modules doesn't exist or is not a directory\n      /Users/mike/dev/node_modules doesn't exist or is not a directory\n      /Users/mike/node_modules doesn't exist or is not a directory\n      /Users/node_modules doesn't exist or is not a directory\n      /node_modules doesn't exist or is not a directory\n      looking for modules in /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules\n        using description file: /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/package.json (relative path: ./node_modules)\n          Field 'browser' doesn't contain a valid alias configuration\n        after using description file: /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/package.json (relative path: ./node_modules)\n          using description file: /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/package.json (relative path: ./node_modules/react-tooltip)\n            no extension\n              Field 'browser' doesn't contain a valid alias configuration\n              /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/react-tooltip doesn't exist\n            .js\n              Field 'browser' doesn't contain a valid alias configuration\n              /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/react-tooltip.js doesn't exist\n            as directory\n              /Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/react-tooltip doesn't exist\n[/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/node_modules]\n[/Users/mike/dev/enzoic/node_modules]\n[/Users/mike/dev/node_modules]\n[/Users/mike/node_modules]\n[/Users/node_modules]\n[/node_modules]\n[/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/react-tooltip]\n[/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/react-tooltip.js]\n[/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/react-tooltip]\n @ ./src/index.js 47:20-44"
  ],
  "warnings": [],
  "version": "3.12.0",
  "hash": "7557953132dcc06286cd",
  "time": 2033,
  "publicPath": "",
  "assetsByChunkName": {
    "main": "../dist/index.js"
  },
  "assets": [
    {
      "name": "../dist/index.js",
      "size": 195016,
      "chunks": [
        0
      ],
      "chunkNames": [
        "main"
      ],
      "emitted": true
    }
  ],
  "filteredAssets": 0,
  "entrypoints": {
    "main": {
      "chunks": [
        0
      ],
      "assets": [
        "../dist/index.js"
      ]
    }
  },
  "chunks": [
    {
      "id": 0,
      "rendered": true,
      "initial": true,
      "entry": true,
      "extraAsync": false,
      "size": 189819,
      "names": [
        "main"
      ],
      "files": [
        "../dist/index.js"
      ],
      "hash": "ca32baff6caeee6edda0",
      "parents": [],
      "modules": [
        {
          "id": 0,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/scoring.js",
          "name": "./src/zxcvbn/scoring.js",
          "index": 10,
          "index2": 7,
          "size": 25316,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "issuerId": 12,
          "issuerName": "./src/zxcvbn/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 12,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
              "module": "./src/zxcvbn/index.js",
              "moduleName": "./src/zxcvbn/index.js",
              "type": "cjs require",
              "userRequest": "./scoring",
              "loc": "13:14-34"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
              "module": "./src/zxcvbn/matching.js",
              "moduleName": "./src/zxcvbn/matching.js",
              "type": "cjs require",
              "userRequest": "./scoring",
              "loc": "7:14-34"
            },
            {
              "moduleId": 16,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/feedback.js",
              "module": "./src/zxcvbn/feedback.js",
              "moduleName": "./src/zxcvbn/feedback.js",
              "type": "cjs require",
              "userRequest": "./scoring",
              "loc": "17:14-34"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "'use strict';\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS202: Simplify dynamic range loops\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar k = void 0,\n    v = void 0;\nvar adjacency_graphs = require('./adjacency_graphs');\n\n// on qwerty, 'g' has degree 6, being adjacent to 'ftyhbv'. '\\' has degree 1.\n// this calculates the average over all keys.\nvar calc_average_degree = function calc_average_degree(graph) {\n  var average = 0;\n  for (var key in graph) {\n    var neighbors = graph[key];\n    average += Array.from(neighbors).filter(function (n) {\n      return n;\n    }).length;\n  }\n  average /= function () {\n    var result = [];\n    for (k in graph) {\n      v = graph[k];\n      result.push(k);\n    }\n    return result;\n  }().length;\n  return average;\n};\n\nvar BRUTEFORCE_CARDINALITY = 10;\nvar MIN_GUESSES_BEFORE_GROWING_SEQUENCE = 10000;\nvar MIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;\nvar MIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;\n\nvar scoring = {\n  nCk: function nCk(n, k) {\n    // http://blog.plover.com/math/choose.html\n    if (k > n) {\n      return 0;\n    }\n    if (k === 0) {\n      return 1;\n    }\n    var r = 1;\n    for (var d = 1, end = k, asc = 1 <= end; asc ? d <= end : d >= end; asc ? d++ : d--) {\n      r *= n;\n      r /= d;\n      n -= 1;\n    }\n    return r;\n  },\n  log10: function log10(n) {\n    return Math.log(n) / Math.log(10);\n  },\n  // IE doesn't support Math.log10 :(\n  log2: function log2(n) {\n    return Math.log(n) / Math.log(2);\n  },\n  factorial: function factorial(n) {\n    // unoptimized, called only on small n\n    if (n < 2) {\n      return 1;\n    }\n    var f = 1;\n    for (var i = 2, end = n, asc = 2 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n      f *= i;\n    }\n    return f;\n  },\n\n\n  // ------------------------------------------------------------------------------\n  // search --- most guessable match sequence -------------------------------------\n  // ------------------------------------------------------------------------------\n  //\n  // takes a sequence of overlapping matches, returns the non-overlapping sequence with\n  // minimum guesses. the following is a O(l_max * (n + m)) dynamic programming algorithm\n  // for a length-n password with m candidate matches. l_max is the maximum optimal\n  // sequence length spanning each prefix of the password. In practice it rarely exceeds 5 and the\n  // search terminates rapidly.\n  //\n  // the optimal \"minimum guesses\" sequence is here defined to be the sequence that\n  // minimizes the following function:\n  //\n  //    g = l! * Product(m.guesses for m in sequence) + D^(l - 1)\n  //\n  // where l is the length of the sequence.\n  //\n  // the factorial term is the number of ways to order l patterns.\n  //\n  // the D^(l-1) term is another length penalty, roughly capturing the idea that an\n  // attacker will try lower-length sequences first before trying length-l sequences.\n  //\n  // for example, consider a sequence that is date-repeat-dictionary.\n  //  - an attacker would need to try other date-repeat-dictionary combinations,\n  //    hence the product term.\n  //  - an attacker would need to try repeat-date-dictionary, dictionary-repeat-date,\n  //    ..., hence the factorial term.\n  //  - an attacker would also likely try length-1 (dictionary) and length-2 (dictionary-date)\n  //    sequences before length-3. assuming at minimum D guesses per pattern type,\n  //    D^(l-1) approximates Sum(D^i for i in [1..l-1]\n  //\n  // ------------------------------------------------------------------------------\n\n  most_guessable_match_sequence: function most_guessable_match_sequence(password, matches, _exclude_additive) {\n    var _this = this;\n\n    var asc4 = void 0,\n        end4 = void 0;\n    var guesses = void 0;\n    var _ = void 0;\n    if (_exclude_additive == null) {\n      _exclude_additive = false;\n    }\n    var n = password.length;\n\n    // partition matches into sublists according to ending index j\n    var matches_by_j = function () {\n      var asc = void 0,\n          end = void 0;\n      var result = [];\n      for (_ = 0, end = n, asc = 0 <= end; asc ? _ < end : _ > end; asc ? _++ : _--) {\n        result.push([]);\n      }\n      return result;\n    }();\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n      for (var _iterator = Array.from(matches)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n        var m = _step.value;\n\n        matches_by_j[m.j].push(m);\n      }\n      // small detail: for deterministic output, sort each sublist by i.\n    } catch (err) {\n      _didIteratorError = true;\n      _iteratorError = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion && _iterator.return) {\n          _iterator.return();\n        }\n      } finally {\n        if (_didIteratorError) {\n          throw _iteratorError;\n        }\n      }\n    }\n\n    var _iteratorNormalCompletion2 = true;\n    var _didIteratorError2 = false;\n    var _iteratorError2 = undefined;\n\n    try {\n      for (var _iterator2 = Array.from(matches_by_j)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n        var lst = _step2.value;\n\n        lst.sort(function (m1, m2) {\n          return m1.i - m2.i;\n        });\n      }\n    } catch (err) {\n      _didIteratorError2 = true;\n      _iteratorError2 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion2 && _iterator2.return) {\n          _iterator2.return();\n        }\n      } finally {\n        if (_didIteratorError2) {\n          throw _iteratorError2;\n        }\n      }\n    }\n\n    var optimal = {\n      // optimal.m[k][l] holds final match in the best length-l match sequence covering the\n      // password prefix up to k, inclusive.\n      // if there is no length-l sequence that scores better (fewer guesses) than\n      // a shorter match sequence spanning the same prefix, optimal.m[k][l] is undefined.\n      m: function () {\n        var asc1 = void 0,\n            end1 = void 0;\n        var result1 = [];\n        for (_ = 0, end1 = n, asc1 = 0 <= end1; asc1 ? _ < end1 : _ > end1; asc1 ? _++ : _--) {\n          result1.push({});\n        }\n        return result1;\n      }(),\n\n      // same structure as optimal.m -- holds the product term Prod(m.guesses for m in sequence).\n      // optimal.pi allows for fast (non-looping) updates to the minimization function.\n      pi: function () {\n        var asc2 = void 0,\n            end2 = void 0;\n        var result2 = [];\n        for (_ = 0, end2 = n, asc2 = 0 <= end2; asc2 ? _ < end2 : _ > end2; asc2 ? _++ : _--) {\n          result2.push({});\n        }\n        return result2;\n      }(),\n\n      // same structure as optimal.m -- holds the overall metric.\n      g: function () {\n        var asc3 = void 0,\n            end3 = void 0;\n        var result3 = [];\n        for (_ = 0, end3 = n, asc3 = 0 <= end3; asc3 ? _ < end3 : _ > end3; asc3 ? _++ : _--) {\n          result3.push({});\n        }\n        return result3;\n      }()\n    };\n\n    // helper: considers whether a length-l sequence ending at match m is better (fewer guesses)\n    // than previously encountered sequences, updating state if so.\n    var update = function update(m, l) {\n      k = m.j;\n      var pi = _this.estimate_guesses(m, password);\n      if (l > 1) {\n        // we're considering a length-l sequence ending with match m:\n        // obtain the product term in the minimization function by multiplying m's guesses\n        // by the product of the length-(l-1) sequence ending just before m, at m.i - 1.\n        pi *= optimal.pi[m.i - 1][l - 1];\n      }\n      // calculate the minimization func\n      var g = _this.factorial(l) * pi;\n      if (!_exclude_additive) {\n        g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);\n      }\n      // update state if new best.\n      // first see if any competing sequences covering this prefix, with l or fewer matches,\n      // fare better than this sequence. if so, skip it and return.\n      for (var competing_l in optimal.g[k]) {\n        var competing_g = optimal.g[k][competing_l];\n        if (competing_l > l) {\n          continue;\n        }\n        if (competing_g <= g) {\n          return;\n        }\n      }\n      // this sequence might be part of the final optimal sequence.\n      optimal.g[k][l] = g;\n      optimal.m[k][l] = m;\n      return optimal.pi[k][l] = pi;\n    };\n\n    // helper: evaluate bruteforce matches ending at k.\n    var bruteforce_update = function bruteforce_update(k) {\n      // see if a single bruteforce match spanning the k-prefix is optimal.\n      m = make_bruteforce_match(0, k);\n      update(m, 1);\n      return function () {\n        var result4 = [];\n        for (var i = 1, end4 = k, asc4 = 1 <= end4; asc4 ? i <= end4 : i >= end4; asc4 ? i++ : i--) {\n          // generate k bruteforce matches, spanning from (i=1, j=k) up to (i=k, j=k).\n          // see if adding these new matches to any of the sequences in optimal[i-1]\n          // leads to new bests.\n          m = make_bruteforce_match(i, k);\n          result4.push(function () {\n            var result5 = [];\n            var object = optimal.m[i - 1];\n            for (var l in object) {\n              var last_m = object[l];\n              l = parseInt(l);\n              // corner: an optimal sequence will never have two adjacent bruteforce matches.\n              // it is strictly better to have a single bruteforce match spanning the same region:\n              // same contribution to the guess product with a lower length.\n              // --> safe to skip those cases.\n              if (last_m.pattern === 'bruteforce') {\n                continue;\n              }\n              // try adding m to this length-l sequence.\n              result5.push(update(m, l + 1));\n            }\n            return result5;\n          }());\n        }\n        return result4;\n      }();\n    };\n\n    // helper: make bruteforce match objects spanning i to j, inclusive.\n    var make_bruteforce_match = function make_bruteforce_match(i, j) {\n      return {\n        pattern: 'bruteforce',\n        token: password.slice(i, +j + 1 || undefined),\n        i: i,\n        j: j\n      };\n    };\n\n    // helper: step backwards through optimal.m starting at the end,\n    // constructing the final optimal match sequence.\n    var unwind = function unwind(n) {\n      var optimal_match_sequence = [];\n      k = n - 1;\n      // find the final best sequence length and score\n      var l = undefined;\n      var g = Infinity;\n      for (var candidate_l in optimal.g[k]) {\n        var candidate_g = optimal.g[k][candidate_l];\n        if (candidate_g < g) {\n          l = candidate_l;\n          g = candidate_g;\n        }\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\n    for (k = 0, end4 = n, asc4 = 0 <= end4; asc4 ? k < end4 : k > end4; asc4 ? k++ : k--) {\n      var _iteratorNormalCompletion3 = true;\n      var _didIteratorError3 = false;\n      var _iteratorError3 = undefined;\n\n      try {\n        for (var _iterator3 = Array.from(matches_by_j[k])[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n          m = _step3.value;\n\n          if (m.i > 0) {\n            for (var 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      } catch (err) {\n        _didIteratorError3 = true;\n        _iteratorError3 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion3 && _iterator3.return) {\n            _iterator3.return();\n          }\n        } finally {\n          if (_didIteratorError3) {\n            throw _iteratorError3;\n          }\n        }\n      }\n\n      bruteforce_update(k);\n    }\n    var optimal_match_sequence = unwind(n);\n    var optimal_l = optimal_match_sequence.length;\n\n    // corner: empty password\n    if (password.length === 0) {\n      guesses = 1;\n    } else {\n      guesses = optimal.g[n - 1][optimal_l];\n    }\n\n    // final result object\n    return {\n      password: password,\n      guesses: guesses,\n      guesses_log10: this.log10(guesses),\n      sequence: optimal_match_sequence\n    };\n  },\n\n\n  // ------------------------------------------------------------------------------\n  // guess estimation -- one function per match pattern ---------------------------\n  // ------------------------------------------------------------------------------\n\n  estimate_guesses: function estimate_guesses(match, password) {\n    if (match.guesses != null) {\n      return match.guesses;\n    } // a match's guess estimate doesn't change. cache it.\n    var 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    var 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    var 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 bruteforce_guesses(match) {\n    var guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);\n    if (guesses === Number.POSITIVE_INFINITY) {\n      guesses = Number.MAX_VALUE;\n    }\n    // small detail: make bruteforce matches at minimum one guess bigger than smallest allowed\n    // submatch guesses, such that non-bruteforce submatches over the same [i..j] take precedence.\n    var 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 repeat_guesses(match) {\n    return match.base_guesses * match.repeat_count;\n  },\n  sequence_guesses: function sequence_guesses(match) {\n    var base_guesses = void 0;\n    var first_chr = match.token.charAt(0);\n    // lower guesses for obvious starting points\n    if (['a', 'A', 'z', 'Z', '0', '1', '9'].includes(first_chr)) {\n      base_guesses = 4;\n    } else {\n      if (first_chr.match(/\\d/)) {\n        base_guesses = 10; // digits\n      } else {\n        // could give a higher base for uppercase,\n        // assigning 26 to both upper and lower sequences is more conservative.\n        base_guesses = 26;\n      }\n    }\n    if (!match.ascending) {\n      // need to try a descending sequence in addition to every ascending sequence ->\n      // 2x guesses\n      base_guesses *= 2;\n    }\n    return base_guesses * match.token.length;\n  },\n\n\n  MIN_YEAR_SPACE: 20,\n  REFERENCE_YEAR: new Date().getFullYear(),\n\n  regex_guesses: function regex_guesses(match) {\n    var 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          // conservative estimate of year space: num years from REFERENCE_YEAR.\n          // if year is close to REFERENCE_YEAR, estimate a year space of MIN_YEAR_SPACE.\n          var 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 date_guesses(match) {\n    // base guesses: (year distance from REFERENCE_YEAR) * num_days * num_years\n    var year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);\n    var guesses = year_space * 365;\n    // add factor of 4 for separator selection (one of ~4 choices)\n    if (match.separator) {\n      guesses *= 4;\n    }\n    return guesses;\n  },\n\n\n  KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),\n  // slightly different for keypad/mac keypad, but close enough\n  KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),\n\n  KEYBOARD_STARTING_POSITIONS: function () {\n    var result = [];\n    for (k in adjacency_graphs.qwerty) {\n      v = adjacency_graphs.qwerty[k];\n      result.push(k);\n    }\n    return result;\n  }().length,\n  KEYPAD_STARTING_POSITIONS: function () {\n    var result1 = [];\n    for (k in adjacency_graphs.keypad) {\n      v = adjacency_graphs.keypad[k];\n      result1.push(k);\n    }\n    return result1;\n  }().length,\n\n  spatial_guesses: function spatial_guesses(match) {\n    var d = void 0,\n        i = void 0,\n        s = void 0;\n    var asc = void 0,\n        end = void 0;\n    if (['qwerty', 'dvorak'].includes(match.graph)) {\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    var guesses = 0;\n    var L = match.token.length;\n    var t = match.turns;\n    // estimate the number of possible patterns w/ length L or less with t turns or less.\n    for (i = 2, end = L, asc = 2 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n      var possible_turns = Math.min(t, i - 1);\n      for (var j = 1, end1 = possible_turns, asc1 = 1 <= end1; asc1 ? j <= end1 : j >= end1; asc1 ? j++ : j--) {\n        guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);\n      }\n    }\n    // add extra guesses for shifted keys. (% instead of 5, A instead of a.)\n    // math is similar to extra guesses of l33t substitutions in dictionary matches.\n    if (match.shifted_count) {\n      var S = match.shifted_count;\n      var U = match.token.length - match.shifted_count; // unshifted count\n      if (S === 0 || U === 0) {\n        guesses *= 2;\n      } else {\n        var asc2 = void 0,\n            end2 = void 0;\n        var shifted_variations = 0;\n        for (i = 1, end2 = Math.min(S, U), asc2 = 1 <= end2; asc2 ? i <= end2 : i >= end2; asc2 ? i++ : i--) {\n          shifted_variations += this.nCk(S + U, i);\n        }\n        guesses *= shifted_variations;\n      }\n    }\n    return guesses;\n  },\n  dictionary_guesses: function dictionary_guesses(match) {\n    match.base_guesses = match.rank; // keep these as properties for display purposes\n    match.uppercase_variations = this.uppercase_variations(match);\n    match.l33t_variations = this.l33t_variations(match);\n    var reversed_variations = match.reversed && 2 || 1;\n    return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;\n  },\n\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\n  uppercase_variations: function uppercase_variations(match) {\n    var chr = void 0;\n    var word = match.token;\n    if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {\n      return 1;\n    }\n    // a capitalized word is the most common capitalization scheme,\n    // so it only doubles the search space (uncapitalized + capitalized).\n    // allcaps and end-capitalized are common enough too, underestimate as 2x factor to be safe.\n    var _arr = [this.START_UPPER, this.END_UPPER, this.ALL_UPPER];\n    for (var _i = 0; _i < _arr.length; _i++) {\n      var regex = _arr[_i];\n      if (word.match(regex)) {\n        return 2;\n      }\n    }\n    // otherwise calculate the number of ways to capitalize U+L uppercase+lowercase letters\n    // with U uppercase letters or less. or, if there's more uppercase than lower (for eg. PASSwORD),\n    // the number of ways to lowercase U+L letters with L lowercase letters or less.\n    var U = function () {\n      var result2 = [];\n      var _iteratorNormalCompletion4 = true;\n      var _didIteratorError4 = false;\n      var _iteratorError4 = undefined;\n\n      try {\n        for (var _iterator4 = Array.from(word.split(''))[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n          chr = _step4.value;\n          if (chr.match(/[A-Z]/)) {\n            result2.push(chr);\n          }\n        }\n      } catch (err) {\n        _didIteratorError4 = true;\n        _iteratorError4 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion4 && _iterator4.return) {\n            _iterator4.return();\n          }\n        } finally {\n          if (_didIteratorError4) {\n            throw _iteratorError4;\n          }\n        }\n      }\n\n      return result2;\n    }().length;\n    var L = function () {\n      var result3 = [];\n      var _iteratorNormalCompletion5 = true;\n      var _didIteratorError5 = false;\n      var _iteratorError5 = undefined;\n\n      try {\n        for (var _iterator5 = Array.from(word.split(''))[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n          chr = _step5.value;\n          if (chr.match(/[a-z]/)) {\n            result3.push(chr);\n          }\n        }\n      } catch (err) {\n        _didIteratorError5 = true;\n        _iteratorError5 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion5 && _iterator5.return) {\n            _iterator5.return();\n          }\n        } finally {\n          if (_didIteratorError5) {\n            throw _iteratorError5;\n          }\n        }\n      }\n\n      return result3;\n    }().length;\n    var variations = 0;\n    for (var i = 1, end = Math.min(U, L), asc = 1 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n      variations += this.nCk(U + L, i);\n    }\n    return variations;\n  },\n  l33t_variations: function l33t_variations(match) {\n    var chr = void 0;\n    if (!match.l33t) {\n      return 1;\n    }\n    var variations = 1;\n    for (var subbed in match.sub) {\n      // lower-case match.token before calculating: capitalization shouldn't affect l33t calc.\n      var unsubbed = match.sub[subbed];\n      var chrs = match.token.toLowerCase().split('');\n      var S = function () {\n        var result2 = [];\n        var _iteratorNormalCompletion6 = true;\n        var _didIteratorError6 = false;\n        var _iteratorError6 = undefined;\n\n        try {\n          for (var _iterator6 = Array.from(chrs)[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n            chr = _step6.value;\n            if (chr === subbed) {\n              result2.push(chr);\n            }\n          }\n        } catch (err) {\n          _didIteratorError6 = true;\n          _iteratorError6 = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion6 && _iterator6.return) {\n              _iterator6.return();\n            }\n          } finally {\n            if (_didIteratorError6) {\n              throw _iteratorError6;\n            }\n          }\n        }\n\n        return result2;\n      }().length; // num of subbed chars\n      var U = function () {\n        var result3 = [];\n        var _iteratorNormalCompletion7 = true;\n        var _didIteratorError7 = false;\n        var _iteratorError7 = undefined;\n\n        try {\n          for (var _iterator7 = Array.from(chrs)[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n            chr = _step7.value;\n            if (chr === unsubbed) {\n              result3.push(chr);\n            }\n          }\n        } catch (err) {\n          _didIteratorError7 = true;\n          _iteratorError7 = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion7 && _iterator7.return) {\n              _iterator7.return();\n            }\n          } finally {\n            if (_didIteratorError7) {\n              throw _iteratorError7;\n            }\n          }\n        }\n\n        return result3;\n      }().length; // num of unsubbed chars\n      if (S === 0 || U === 0) {\n        // for this sub, password is either fully subbed (444) or fully unsubbed (aaa)\n        // treat that as doubling the space (attacker needs to try fully subbed chars in addition to\n        // unsubbed.)\n        variations *= 2;\n      } else {\n        // this case is similar to capitalization:\n        // with aa44a, U = 3, S = 2, attacker needs to try unsubbed + one sub + two subs\n        var p = Math.min(U, S);\n        var possibilities = 0;\n        for (var i = 1, end = p, asc = 1 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n          possibilities += this.nCk(U + S, i);\n        }\n        variations *= possibilities;\n      }\n    }\n    return variations;\n  }\n};\n\n// utilities --------------------------------------------------------------------\n\nmodule.exports = scoring;"
        },
        {
          "id": 1,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/process/browser.js",
          "name": "./node_modules/process/browser.js",
          "index": 15,
          "index2": 13,
          "size": 5418,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
          "issuerId": 17,
          "issuerName": "./node_modules/prop-types/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 17,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
              "module": "./node_modules/prop-types/index.js",
              "moduleName": "./node_modules/prop-types/index.js",
              "type": "cjs require",
              "userRequest": "process",
              "loc": "1:0-34"
            },
            {
              "moduleId": 18,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
              "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "type": "cjs require",
              "userRequest": "process",
              "loc": "1:0-34"
            },
            {
              "moduleId": 20,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/checkPropTypes.js",
              "module": "./node_modules/prop-types/checkPropTypes.js",
              "moduleName": "./node_modules/prop-types/checkPropTypes.js",
              "type": "cjs require",
              "userRequest": "process",
              "loc": "1:0-34"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n"
        },
        {
          "id": 2,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/lib/ReactPropTypesSecret.js",
          "name": "./node_modules/prop-types/lib/ReactPropTypesSecret.js",
          "index": 18,
          "index2": 15,
          "size": 314,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "issuerId": 18,
          "issuerName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 18,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
              "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "type": "cjs require",
              "userRequest": "./lib/ReactPropTypesSecret",
              "loc": "12:27-64"
            },
            {
              "moduleId": 20,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/checkPropTypes.js",
              "module": "./node_modules/prop-types/checkPropTypes.js",
              "moduleName": "./node_modules/prop-types/checkPropTypes.js",
              "type": "cjs require",
              "userRequest": "./lib/ReactPropTypesSecret",
              "loc": "13:29-66"
            },
            {
              "moduleId": 21,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithThrowingShims.js",
              "module": "./node_modules/prop-types/factoryWithThrowingShims.js",
              "moduleName": "./node_modules/prop-types/factoryWithThrowingShims.js",
              "type": "cjs require",
              "userRequest": "./lib/ReactPropTypesSecret",
              "loc": "10:27-64"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 3,
          "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n"
        },
        {
          "id": 3,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/utils.js",
          "name": "./src/hashes/utils.js",
          "index": 22,
          "index2": 20,
          "size": 898,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha1.js",
          "issuerId": 22,
          "issuerName": "./src/hashes/sha1.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 22,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha1.js",
              "module": "./src/hashes/sha1.js",
              "moduleName": "./src/hashes/sha1.js",
              "type": "cjs require",
              "userRequest": "./utils",
              "loc": "7:13-31"
            },
            {
              "moduleId": 23,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha256.js",
              "module": "./src/hashes/sha256.js",
              "moduleName": "./src/hashes/sha256.js",
              "type": "cjs require",
              "userRequest": "./utils",
              "loc": "7:13-31"
            },
            {
              "moduleId": 24,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/md5.js",
              "module": "./src/hashes/md5.js",
              "moduleName": "./src/hashes/md5.js",
              "type": "cjs require",
              "userRequest": "./utils",
              "loc": "228:13-31"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = {\n    /**\n     * Rotates right (circular right shift) value x by n positions [§3.2.4].\n     * @private\n     */\n    ROTR: function ROTR(n, x) {\n        return x >>> n | x << 32 - n;\n    },\n\n    /**\n     * Rotates left (circular left shift) value x by n positions [§3.2.5].\n     * @private\n     */\n    ROTL: function ROTL(x, n) {\n        return x << n | x >>> 32 - n;\n    },\n\n    /**\n     * Hexadecimal representation of a number.\n     * @private\n     */\n    toHexStr: function toHexStr(n) {\n        // note can't use toString(16) as it is implementation-dependant,\n        // and in IE returns signed numbers when used on full words\n        var s = \"\",\n            v;\n        for (var i = 7; i >= 0; i--) {\n            v = n >>> i * 4 & 0xf;s += v.toString(16);\n        }\n        return s;\n    }\n\n};"
        },
        {
          "id": 4,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/adjacency_graphs.js",
          "name": "./src/zxcvbn/adjacency_graphs.js",
          "index": 9,
          "index2": 6,
          "size": 9849,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
          "issuerId": 13,
          "issuerName": "./src/zxcvbn/matching.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 0,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/scoring.js",
              "module": "./src/zxcvbn/scoring.js",
              "moduleName": "./src/zxcvbn/scoring.js",
              "type": "cjs require",
              "userRequest": "./adjacency_graphs",
              "loc": "14:23-52"
            },
            {
              "moduleId": 13,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
              "module": "./src/zxcvbn/matching.js",
              "moduleName": "./src/zxcvbn/matching.js",
              "type": "cjs require",
              "userRequest": "./adjacency_graphs",
              "loc": "6:23-52"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 3,
          "source": "\"use strict\";\n\n// generated by scripts/build_keyboard_adjacency_graphs.py\nvar adjacency_graphs = {\n  qwerty: { \"!\": [\"`~\", null, null, \"2@\", \"qQ\", null], \"\\\"\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"], \"#\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"], \"$\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"], \"%\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"], \"&\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"], \"'\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"], \"(\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"], \")\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"], \"*\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"], \"+\": [\"-_\", null, null, null, \"]}\", \"[{\"], \",\": [\"mM\", \"kK\", \"lL\", \".>\", null, null], \"-\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"], \".\": [\",<\", \"lL\", \";:\", \"/?\", null, null], \"/\": [\".>\", \";:\", \"'\\\"\", null, null, null], \"0\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"], \"1\": [\"`~\", null, null, \"2@\", \"qQ\", null], \"2\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"], \"3\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"], \"4\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"], \"5\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"], \"6\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"], \"7\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"], \"8\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"], \"9\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"], \":\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"], \";\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"], \"<\": [\"mM\", \"kK\", \"lL\", \".>\", null, null], \"=\": [\"-_\", null, null, null, \"]}\", \"[{\"], \">\": [\",<\", \"lL\", \";:\", \"/?\", null, null], \"?\": [\".>\", \";:\", \"'\\\"\", null, null, null], \"@\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"], \"A\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null], \"B\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null], \"C\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null], \"D\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"], \"E\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"], \"F\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"], \"G\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"], \"H\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"], \"I\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"], \"J\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"], \"K\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"], \"L\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"], \"M\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null], \"N\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null], \"O\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"], \"P\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"], \"Q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null], \"R\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"], \"S\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"], \"T\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"], \"U\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"], \"V\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null], \"W\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"], \"X\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null], \"Y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"], \"Z\": [null, \"aA\", \"sS\", \"xX\", null, null], \"[\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"], \"\\\\\": [\"]}\", null, null, null, null, null], \"]\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"], \"^\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"], \"_\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"], \"`\": [null, null, null, \"1!\", null, null], \"a\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null], \"b\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null], \"c\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null], \"d\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"], \"e\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"], \"f\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"], \"g\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"], \"h\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"], \"i\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"], \"j\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"], \"k\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"], \"l\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"], \"m\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null], \"n\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null], \"o\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"], \"p\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"], \"q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null], \"r\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"], \"s\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"], \"t\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"], \"u\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"], \"v\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null], \"w\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"], \"x\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null], \"y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"], \"z\": [null, \"aA\", \"sS\", \"xX\", null, null], \"{\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"], \"|\": [\"]}\", null, null, null, null, null], \"}\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"], \"~\": [null, null, null, \"1!\", null, null] },\n  dvorak: { \"!\": [\"`~\", null, null, \"2@\", \"'\\\"\", null], \"\\\"\": [null, \"1!\", \"2@\", \",<\", \"aA\", null], \"#\": [\"2@\", null, null, \"4$\", \".>\", \",<\"], \"$\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"], \"%\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"], \"&\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"], \"'\": [null, \"1!\", \"2@\", \",<\", \"aA\", null], \"(\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"], \")\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"], \"*\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"], \"+\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"], \",\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"], \"-\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"], \".\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"], \"/\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"], \"0\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"], \"1\": [\"`~\", null, null, \"2@\", \"'\\\"\", null], \"2\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"], \"3\": [\"2@\", null, null, \"4$\", \".>\", \",<\"], \"4\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"], \"5\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"], \"6\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"], \"7\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"], \"8\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"], \"9\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"], \":\": [null, \"aA\", \"oO\", \"qQ\", null, null], \";\": [null, \"aA\", \"oO\", \"qQ\", null, null], \"<\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"], \"=\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"], \">\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"], \"?\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"], \"@\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"], \"A\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null], \"B\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null], \"C\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"], \"D\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"], \"E\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"], \"F\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"], \"G\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"], \"H\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"], \"I\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"], \"J\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null], \"K\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null], \"L\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"], \"M\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null], \"N\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"], \"O\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"], \"P\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"], \"Q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null], \"R\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"], \"S\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"], \"T\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"], \"U\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"], \"V\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null], \"W\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null], \"X\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null], \"Y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"], \"Z\": [\"vV\", \"sS\", \"-_\", null, null, null], \"[\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"], \"\\\\\": [\"=+\", null, null, null, null, null], \"]\": [\"[{\", null, null, null, \"=+\", \"/?\"], \"^\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"], \"_\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"], \"`\": [null, null, null, \"1!\", null, null], \"a\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null], \"b\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null], \"c\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"], \"d\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"], \"e\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"], \"f\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"], \"g\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"], \"h\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"], \"i\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"], \"j\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null], \"k\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null], \"l\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"], \"m\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null], \"n\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"], \"o\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"], \"p\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"], \"q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null], \"r\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"], \"s\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"], \"t\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"], \"u\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"], \"v\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null], \"w\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null], \"x\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null], \"y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"], \"z\": [\"vV\", \"sS\", \"-_\", null, null, null], \"{\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"], \"|\": [\"=+\", null, null, null, null, null], \"}\": [\"[{\", null, null, null, \"=+\", \"/?\"], \"~\": [null, null, null, \"1!\", null, null] },\n  keypad: { \"*\": [\"/\", null, null, null, \"-\", \"+\", \"9\", \"8\"], \"+\": [\"9\", \"*\", \"-\", null, null, null, null, \"6\"], \"-\": [\"*\", null, null, null, null, null, \"+\", \"9\"], \".\": [\"0\", \"2\", \"3\", null, null, null, null, null], \"/\": [null, null, null, null, \"*\", \"9\", \"8\", \"7\"], \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null], \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null], \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null], \"3\": [\"2\", \"5\", \"6\", null, null, null, \".\", \"0\"], \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null], \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"], \"6\": [\"5\", \"8\", \"9\", \"+\", null, null, \"3\", \"2\"], \"7\": [null, null, null, \"/\", \"8\", \"5\", \"4\", null], \"8\": [\"7\", null, \"/\", \"*\", \"9\", \"6\", \"5\", \"4\"], \"9\": [\"8\", \"/\", \"*\", \"-\", \"+\", null, \"6\", \"5\"] },\n  mac_keypad: { \"*\": [\"/\", null, null, null, null, null, \"-\", \"9\"], \"+\": [\"6\", \"9\", \"-\", null, null, null, null, \"3\"], \"-\": [\"9\", \"/\", \"*\", null, null, null, \"+\", \"6\"], \".\": [\"0\", \"2\", \"3\", null, null, null, null, null], \"/\": [\"=\", null, null, null, \"*\", \"-\", \"9\", \"8\"], \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null], \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null], \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null], \"3\": [\"2\", \"5\", \"6\", \"+\", null, null, \".\", \"0\"], \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null], \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"], \"6\": [\"5\", \"8\", \"9\", \"-\", \"+\", null, \"3\", \"2\"], \"7\": [null, null, null, \"=\", \"8\", \"5\", \"4\", null], \"8\": [\"7\", null, \"=\", \"/\", \"9\", \"6\", \"5\", \"4\"], \"9\": [\"8\", \"=\", \"/\", \"*\", \"-\", \"+\", \"6\", \"5\"], \"=\": [null, null, null, null, \"/\", \"9\", \"8\", \"7\"] }\n};\n\nmodule.exports = adjacency_graphs;"
        },
        {
          "id": 5,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/strings/enzoic_strings.js",
          "name": "./src/strings/enzoic_strings.js",
          "index": 13,
          "index2": 10,
          "size": 2911,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "./strings/enzoic_strings",
              "loc": "23:22-57"
            },
            {
              "moduleId": 16,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/feedback.js",
              "module": "./src/zxcvbn/feedback.js",
              "moduleName": "./src/zxcvbn/feedback.js",
              "type": "cjs require",
              "userRequest": "../strings/enzoic_strings",
              "loc": "3:22-58"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = {\n    \"strengthRatings\": [\"Hacked\", \"Very Weak\", \"Weak\", \"Medium\", \"Strong\", \"Very Strong\"],\n    \"enterAPassword\": \"Choose a password\",\n    \"passwordStrength\": \"Password Strength\",\n    \"poweredBy\": \"powered by\",\n    \"breachedPasswordMessage\": \"This password is known to hackers and <b><u>should not be used</u></b>. It was exposed publicly in one or more of the data breaches in recent years (LinkedIn, MySpace, Yahoo, etc.)<br/><br/>We <b><u>strongly</u></b> recommend you choose a different password and discontinue usage of this one.\",\n    \"hackedPasswordMessage\": \"This password is known to hackers and <b><u>should not be used</u></b>. It is found in common password cracking dictionaries.<br/><br/>We <b><u>strongly</u></b> recommend you choose a different password and discontinue usage of this one.\",\n    \"suggestion\": \"Suggestions\",\n    \"suggestions\": {\n        \"defaultFeedback\": \"Use a few words, avoid common phrases\",\n        \"defaultFeedback2\": \"No need for symbols, digits, or uppercase letters\",\n        \"addWord\": \"Add another word or two. Uncommon words are better.\",\n        \"rowsOfKeys\": \"Straight rows of keys are easy to guess\",\n        \"shortKeyboardPatterns\": \"Short keyboard patterns are easy to guess\",\n        \"longerKeyboardPattern\": \"Use a longer keyboard pattern with more turns\",\n        \"shortRepeats\": \"Repeats like \\\"aaa\\\" are easy to guess\",\n        \"longRepeats\": \"Repeats like \\\"abcabcabc\\\" are only slightly harder to guess than \\\"abc\\\"\",\n        \"avoidRepeatedWords\": \"Avoid repeated words and characters\",\n        \"avoidSequences\": \"Sequences like abc or 6543 are easy to guess\",\n        \"avoidSequences2\": \"Avoid sequences\",\n        \"recentYears\": \"Recent years are easy to guess\",\n        \"avoidRecentYears\": \"Avoid recent years\",\n        \"avoidAssociatedYears\": \"Avoid years that are associated with you\",\n        \"datesAreEasy\": \"Dates are often easy to guess\",\n        \"avoidAssociatedDates\": \"Avoid dates and years that are associated with you\",\n        \"similarToCommon\": \"This is similar to a commonly used password\",\n        \"topTenPassword\": \"This is a top-10 common password\",\n        \"top100Password\": \"This is a top-100 common password\",\n        \"veryCommonPassword\": \"This is a very common password\",\n        \"wordByItself\": \"A word by itself is easy to guess\",\n        \"namesByThemselves\": \"Names and surnames by themselves are easy to guess\",\n        \"commonNamesAndSurnames\": \"Common names and surnames are easy to guess\",\n        \"capitalization\": \"Capitalization doesn't help very much\",\n        \"allUpperCase\": \"All-uppercase is almost as easy to guess as all-lowercase\",\n        \"reversedWords\": \"Reversed words aren't much harder to guess\",\n        \"predictableSubs\": \"Predictable substitutions like '@' instead of 'a' don't help very much\"\n    }\n};"
        },
        {
          "id": 6,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "name": "./src/index.js",
          "index": 0,
          "index2": 26,
          "size": 17525,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": null,
          "issuerId": null,
          "issuerName": null,
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 0,
          "source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nrequire('./style.css');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _zxcvbn = require('./zxcvbn');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _enzoic_strings = require('./strings/enzoic_strings');\n\nvar _enzoic_strings2 = _interopRequireDefault(_enzoic_strings);\n\nvar _sha = require('./hashes/sha1');\n\nvar _sha2 = _interopRequireDefault(_sha);\n\nvar _sha3 = require('./hashes/sha256');\n\nvar _sha4 = _interopRequireDefault(_sha3);\n\nvar _md = require('./hashes/md5');\n\nvar _md2 = _interopRequireDefault(_md);\n\nvar _warning = require('../assets/warning.png');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _info = require('../assets/info.png');\n\nvar _info2 = _interopRequireDefault(_info);\n\nvar _reactTooltip = require('react-tooltip');\n\nvar _reactTooltip2 = _interopRequireDefault(_reactTooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Enzoic = function (_Component) {\n    _inherits(Enzoic, _Component);\n\n    function Enzoic(props) {\n        _classCallCheck(this, Enzoic);\n\n        var _this = _possibleConstructorReturn(this, (Enzoic.__proto__ || Object.getPrototypeOf(Enzoic)).call(this, props));\n\n        _this.state = {\n            score: 1,\n            zxcvbnScore: 1,\n            zxcvbnResult: null,\n            isValid: false,\n            password: '',\n            hackedPassword: false,\n            breachedPassword: false,\n            loading: false\n        };\n\n\n        _this.clear = _this.clear.bind(_this);\n        _this.handleChange = _this.handleChange.bind(_this);\n        _this.checkPasswordWhenReady = _this.checkPasswordWhenReady.bind(_this);\n        _this.checkPassword = _this.checkPassword.bind(_this);\n        _this.checkPasswordAgainstEnzoic = _this.checkPasswordAgainstEnzoic.bind(_this);\n        _this.isTooShort = _this.isTooShort.bind(_this);\n\n        _this.apiURL = 'https://api.enzoic.com';\n        _this.rootDomain = Enzoic.getRootDomain(window.location.hostname);\n        return _this;\n    }\n\n    _createClass(Enzoic, [{\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n            var defaultValue = this.props.defaultValue;\n\n\n            if (defaultValue.length > 0) {\n                this.setState({ password: defaultValue }, this.handleChange.bind(this, { target: { value: defaultValue } }));\n            }\n        }\n    }, {\n        key: 'clear',\n        value: function clear() {\n            var _this2 = this;\n\n            var changeCallback = this.props.changeCallback;\n\n\n            this.setState({\n                score: 1,\n                zxcvbnScore: 1,\n                isValid: false,\n                password: '',\n                loading: false\n            }, function () {\n                if (changeCallback !== null) {\n                    changeCallback(_this2.state);\n                }\n            });\n        }\n    }, {\n        key: 'handleChange',\n        value: function handleChange(event) {\n            var _this3 = this;\n\n            var _props = this.props,\n                changeCallback = _props.changeCallback,\n                minScore = _props.minScore;\n\n            var password = event.target.value;\n\n            this.setState({\n                password: password\n            });\n\n            if (this.isTooShort(password) === false) {\n                this.checkPasswordWhenReady(password);\n            } else {\n                // if password is too, short set a score of 1\n                var score = 1;\n\n                this.setState({\n                    isValid: score >= minScore,\n                    score: score,\n                    zxcvbnScore: 1,\n                    zxcvbnResult: null,\n                    loading: false\n                }, function () {\n                    if (changeCallback !== null) {\n                        changeCallback(_this3.state, null);\n                    }\n                });\n            }\n        }\n    }, {\n        key: 'checkPasswordWhenReady',\n        value: function checkPasswordWhenReady(passwordToCheck) {\n            // wait for zxcvbn to be loaded\n            if ((0, _zxcvbn.isZxcvbnLoaded)() === true) {\n                this.checkPassword(passwordToCheck);\n            } else {\n                setTimeout(this.checkPasswordWhenReady.bind(this, passwordToCheck), 500);\n\n                this.setState({\n                    loading: true\n                });\n            }\n        }\n    }, {\n        key: 'checkPassword',\n        value: function checkPassword(passwordToCheck) {\n            if (this.checkTimer) {\n                clearTimeout(this.checkTimer);\n            }\n            this.checkTimer = setTimeout(this.checkPasswordAgainstEnzoic.bind(this, passwordToCheck), 500);\n\n            var zxcvbnResult = (0, _zxcvbn.zxcvbn)(passwordToCheck, this.props.userInputs);\n            var zxcvbnScore = zxcvbnResult.score + 1;\n\n            // store zxcvbn results and set state to loading while Enzoic check is processing\n            this.setState({\n                isValid: this.state.score >= this.props.minScore,\n                score: this.state.score,\n                zxcvbnScore: zxcvbnScore,\n                zxcvbnResult: zxcvbnResult,\n                loading: true\n            });\n        }\n    }, {\n        key: 'checkPasswordAgainstEnzoic',\n        value: function checkPasswordAgainstEnzoic(passwordToCheck) {\n            var _this4 = this;\n\n            // if we already had an outstanding request in progress, cancel\n            if (this.ppCurrentRequest) {\n                this.ppCurrentRequest.abort();\n                this.ppCurrentRequest = undefined;\n            }\n\n            if (passwordToCheck) {\n                var sha2hash = _sha4.default.hash(passwordToCheck);\n                var sha1hash = _sha2.default.hash(passwordToCheck);\n                var md5hash = (0, _md2.default)(passwordToCheck);\n                var sha2partial = sha2hash.substr(0, 10);\n                var sha1partial = sha1hash.substr(0, 10);\n                var md5partial = md5hash.substr(0, 10);\n\n                this.ppCurrentRequest = new XMLHttpRequest();\n                this.ppCurrentRequest.onreadystatechange = function () {\n                    if (_this4.ppCurrentRequest && _this4.ppCurrentRequest.readyState === 4) {\n                        var found = false;\n\n                        if (_this4.ppCurrentRequest.status === 200) {\n                            try {\n                                // loop through and see if we have a match\n                                var result = JSON.parse(_this4.ppCurrentRequest.response);\n                                if (result.candidates) {\n                                    for (var i = 0; i < result.candidates.length; i++) {\n                                        if (result.candidates[i].md5 === md5hash || result.candidates[i].sha1 === sha1hash || result.candidates[i].sha256 === sha2hash) {\n                                            _this4.setState({\n                                                score: 0,\n                                                isValid: false,\n                                                loading: false\n                                            }, function () {\n                                                if (_this4.props.changeCallback !== null) {\n                                                    _this4.props.changeCallback(_this4.state, _this4.state.zxcvbnResult);\n                                                }\n                                            });\n                                            found = true;\n                                            break;\n                                        }\n                                    }\n                                }\n                            } catch (err) {\n                                console.error('Unexpected response from PP API: ' + err);\n                            }\n                        }\n\n                        if (found === false) {\n                            _this4.setState({\n                                loading: false,\n                                score: _this4.state.zxcvbnScore,\n                                isValid: _this4.state.zxcvbnScore >= _this4.props.minScore\n                            }, function () {\n                                if (_this4.props.changeCallback !== null) {\n                                    _this4.props.changeCallback(_this4.state, _this4.state.zxcvbnResult);\n                                }\n                            });\n                        }\n                        _this4.ppCurrentRequest = undefined;\n                    }\n                };\n\n                this.ppCurrentRequest.open('GET', this.apiURL + '/passwords?partial_sha2=' + sha2partial + '&partial_sha1=' + sha1partial + '&partial_md5=' + md5partial, true);\n                this.ppCurrentRequest.setRequestHeader('Orgin', this.rootDomain);\n                this.ppCurrentRequest.timeout = 1500;\n                this.ppCurrentRequest.send();\n            } else {\n                this.setState({ loading: false });\n            }\n        }\n    }, {\n        key: 'isTooShort',\n        value: function isTooShort(password) {\n            return password.length < this.props.minLength;\n        }\n    }, {\n        key: 'render',\n        value: function render() {\n            var _state = this.state,\n                score = _state.score,\n                password = _state.password,\n                isValid = _state.isValid,\n                loading = _state.loading;\n            var _props2 = this.props,\n                scoreWords = _props2.scoreWords,\n                inputProps = _props2.inputProps,\n                className = _props2.className,\n                style = _props2.style,\n                tooShortWord = _props2.tooShortWord;\n\n\n            var inputClasses = ['Enzoic-input'];\n            var wrapperClasses = ['Enzoic', className ? className : '', password.length > 0 && loading === false ? 'is-strength-' + score : '', loading ? 'loading' : ''];\n\n            var strengthDesc = loading === true ? _react2.default.createElement('div', { className: 'Enzoic-spinner' }) : //(<img src={loader} style={{display: 'inline-block'}}/>)\n            this.isTooShort(password) ? tooShortWord : scoreWords[score];\n\n            var tooltip = Enzoic.getScoreTooltip(score, this.state.zxcvbnResult);\n\n            if (isValid === true) {\n                inputClasses.push('is-password-valid');\n            } else if (password.length > 0) {\n                inputClasses.push('is-password-invalid');\n            }\n\n            if (inputProps && inputProps.className) {\n                inputClasses.push(inputProps.className);\n            }\n\n            return _react2.default.createElement(\n                'div',\n                { className: wrapperClasses.join(' '), style: style },\n                _react2.default.createElement('input', _extends({\n                    type: 'password'\n                }, inputProps, {\n                    className: inputClasses.join(' '),\n                    onChange: this.handleChange,\n                    value: password\n                })),\n                _react2.default.createElement('div', { className: 'Enzoic-strength-bar' }),\n                _react2.default.createElement(\n                    'span',\n                    { 'data-tip': tooltip, 'data-html': true, 'data-border': true,\n                        className: 'Enzoic-strength-desc' },\n                    strengthDesc\n                ),\n                _react2.default.createElement(_reactTooltip2.default, null)\n            );\n        }\n    }], [{\n        key: 'getRootDomain',\n        value: function getRootDomain(pageHost) {\n            var domain = pageHost;\n            if (pageHost.indexOf('.') > 0) {\n                var tldn = domain.substring(domain.lastIndexOf('.') + 1);\n\n                if (isNaN(tldn)) {\n                    // check for IP address\n                    var temp = domain.substring(0, domain.lastIndexOf('.'));\n                    if (temp.indexOf('.')) {\n                        temp = temp.substring(temp.lastIndexOf('.') + 1);\n                    }\n\n                    domain = temp + '.' + tldn;\n                }\n            }\n\n            // strip off port, if present\n            if (domain.indexOf(':') > 0) {\n                domain = domain.substring(0, domain.indexOf(':'));\n            }\n\n            return domain;\n        }\n    }, {\n        key: 'getMessageFromZXCVBNResult',\n        value: function getMessageFromZXCVBNResult(zxcvbnresult) {\n            var message = '';\n\n            if (zxcvbnresult && zxcvbnresult.feedback) {\n                message = '<br/>';\n                if (zxcvbnresult.feedback.warning) {\n                    message = '<br/>' + zxcvbnresult.feedback.warning + '<br/><br/>';\n                }\n\n                if (zxcvbnresult.feedback.suggestions.length > 0) {\n                    message += _enzoic_strings2.default.suggestion + \":<ul>\";\n                    for (var i = 0; i < zxcvbnresult.feedback.suggestions.length; i++) {\n                        message += \"<li>\" + zxcvbnresult.feedback.suggestions[i] + \"</li>\";\n                    }\n                    message += \"</ul>\";\n                }\n            }\n\n            return message;\n        }\n    }, {\n        key: 'getScoreTooltip',\n        value: function getScoreTooltip(score, zxcvbnresult) {\n            if (score === 0) {\n                return _enzoic_strings2.default.breachedPasswordMessage;\n            } else if (score < 4) {\n                return Enzoic.getMessageFromZXCVBNResult(zxcvbnresult);\n            }\n            return '';\n        }\n    }]);\n\n    return Enzoic;\n}(_react.Component);\n\nEnzoic.propTypes = {\n    changeCallback: _propTypes2.default.func,\n    className: _propTypes2.default.string,\n    defaultValue: _propTypes2.default.string,\n    inputProps: _propTypes2.default.object,\n    minLength: _propTypes2.default.number,\n    minScore: _propTypes2.default.number,\n    scoreWords: _propTypes2.default.array,\n    style: _propTypes2.default.object,\n    tooShortWord: _propTypes2.default.string,\n    userInputs: _propTypes2.default.array\n};\nEnzoic.defaultProps = {\n    changeCallback: null,\n    className: '',\n    defaultValue: '',\n    minLength: 8,\n    minScore: 4,\n    scoreWords: [_react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _warning2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[0],\n        ' ',\n        _react2.default.createElement('img', {\n            src: _warning2.default, style: { display: 'inline-block' } })\n    ), _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _info2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[1]\n    ), _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _info2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[2]\n    ), _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _info2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[3]\n    ), _enzoic_strings2.default.strengthRatings[4], _enzoic_strings2.default.strengthRatings[5]],\n    tooShortWord: 'Too Short',\n    userInputs: [],\n    requireSymbol: false,\n    requireUppercase: false,\n    requireNumber: false\n};\nexports.default = Enzoic;"
        },
        {
          "id": 7,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "name": "./src/style.css",
          "index": 1,
          "index2": 3,
          "size": 899,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "./style.css",
              "loc": "11:0-22"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/index.js!./style.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../node_modules/css-loader/index.js!./style.css\", function() {\n\t\t\tvar newContent = require(\"!!../node_modules/css-loader/index.js!./style.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}"
        },
        {
          "id": 8,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "name": "./node_modules/css-loader!./src/style.css",
          "index": 2,
          "index2": 1,
          "size": 3873,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "issuerId": 7,
          "issuerName": "./src/style.css",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 7,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
              "module": "./src/style.css",
              "moduleName": "./src/style.css",
              "type": "cjs require",
              "userRequest": "!!../node_modules/css-loader/index.js!./style.css",
              "loc": "4:14-74"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Enzoic {\\n    border: 1px solid #c6c6c6;\\n    box-sizing: border-box;\\n    color: #090809;\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n    font-size: 18px;\\n    line-height: 1;\\n    position: relative;\\n}\\n\\n.Enzoic-input {\\n    border: none;\\n    box-sizing: border-box;\\n    font-size: 18px;\\n    padding: 14px 0 12px 14px;\\n    width: calc(85% - 28px);\\n}\\n\\n.Enzoic-input:not(:focus).is-password-invalid {\\n    color: #D1462F;\\n}\\n\\n.Enzoic-input:focus {\\n    outline: none;\\n}\\n\\n.Enzoic-strength-desc {\\n    color: transparent;\\n    position: absolute;\\n    top: 50%;\\n    right: 0;\\n    transform: translateY(-50%);\\n    text-align: right;\\n    transition: color 250ms ease-in-out;\\n    max-width: 130px;\\n    padding: 1px 4px !important;\\n    margin: 0 6px 0 0;\\n    display: inline;\\n    background: transparent;\\n    font: bold normal normal 11px/20px Helvetica Neue, Helvetica, \\\"MS Sans Serif\\\" !important;\\n    border-radius: 10px !important;\\n    cursor: pointer;\\n}\\n\\n.Enzoic-strength-desc img {\\n    vertical-align: middle;\\n    position: relative;\\n    top: -1px;\\n}\\n\\n.Enzoic-strength-desc-old {\\n    color: transparent;\\n    font-style: italic;\\n    padding: 14px 12px;\\n    position: absolute;\\n    top: 50%;\\n    right: 0;\\n    transform: translateY(-50%);\\n    text-align: right;\\n    transition: color 250ms ease-in-out;\\n    width: 15%;\\n}\\n\\n.Enzoic.is-strength-0 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #ff0000;\\n}\\n\\n.Enzoic.is-strength-1 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #ff0000;\\n    /*color: #D1462F;*/\\n}\\n\\n.Enzoic.is-strength-2 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #ff0000;\\n    /*color: #D1462F;*/\\n}\\n\\n.Enzoic.is-strength-3 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #57B8FF;\\n    /*color: #57B8FF;*/\\n}\\n\\n.Enzoic.is-strength-4 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #2FBF71;\\n    /*color: #2FBF71;*/\\n}\\n\\n.Enzoic.is-strength-5 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #2FBF71;\\n    /*color: #2FBF71;*/\\n}\\n\\n.Enzoic.loading .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: transparent;\\n    /*color: #2FBF71;*/\\n}\\n\\n.Enzoic-strength-bar {\\n    box-sizing: border-box;\\n    height: 2px;\\n    position: relative;\\n    top: 1px;\\n    right: 1px;\\n    transition: width 300ms ease-out;\\n    width: 0;\\n}\\n\\n.Enzoic.is-strength-0 .Enzoic-strength-bar {\\n    background: #ff0000;\\n    width: 20%;\\n}\\n\\n.Enzoic.is-strength-1 .Enzoic-strength-bar {\\n    background: #D1462F;\\n    width: 20%;\\n}\\n\\n.Enzoic.is-strength-2 .Enzoic-strength-bar {\\n    background: #D1462F;\\n    width: 40%;\\n}\\n\\n.Enzoic.is-strength-3 .Enzoic-strength-bar {\\n    background: #57B8FF;\\n    width: 60%;\\n}\\n\\n.Enzoic.is-strength-4 .Enzoic-strength-bar {\\n    background: #2FBF71;\\n    width: 80%;\\n}\\n\\n.Enzoic.is-strength-5 .Enzoic-strength-bar {\\n    background: #2FBF71;\\n    width: calc(100% + 2px);\\n}\\n\\n.Enzoic-spinner {\\n    width: 40px;\\n    height: 40px;\\n    margin: 100px auto;\\n    background-color: #333;\\n\\n    border-radius: 100%;\\n    -webkit-animation: Enzoic-sk-scaleout 1.0s infinite ease-in-out;\\n    animation: Enzoic-sk-scaleout 1.0s infinite ease-in-out;\\n}\\n\\n@-webkit-keyframes Enzoic-sk-scaleout {\\n    0% { -webkit-transform: scale(0) }\\n    100% {\\n        -webkit-transform: scale(1.0);\\n        opacity: 0;\\n    }\\n}\\n\\n@keyframes Enzoic-sk-scaleout {\\n    0% {\\n        -webkit-transform: scale(0);\\n        transform: scale(0);\\n    } 100% {\\n          -webkit-transform: scale(1.0);\\n          transform: scale(1.0);\\n          opacity: 0;\\n      }\\n}\\n\", \"\"]);\n\n// exports\n"
        },
        {
          "id": 9,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/lib/css-base.js",
          "name": "./node_modules/css-loader/lib/css-base.js",
          "index": 3,
          "index2": 0,
          "size": 1506,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "issuerId": 8,
          "issuerName": "./node_modules/css-loader!./src/style.css",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 8,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
              "module": "./node_modules/css-loader!./src/style.css",
              "moduleName": "./node_modules/css-loader!./src/style.css",
              "type": "cjs require",
              "userRequest": "../node_modules/css-loader/lib/css-base.js",
              "loc": "1:27-80"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 3,
          "source": "/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t//  when a module is imported multiple times with different media queries.\r\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n"
        },
        {
          "id": 10,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/addStyles.js",
          "name": "./node_modules/style-loader/addStyles.js",
          "index": 4,
          "index2": 2,
          "size": 6906,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "issuerId": 7,
          "issuerName": "./src/style.css",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 7,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
              "module": "./src/style.css",
              "moduleName": "./src/style.css",
              "type": "cjs require",
              "userRequest": "!../node_modules/style-loader/addStyles.js",
              "loc": "7:13-66"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction createLinkElement(options) {\n\tvar linkElement = document.createElement(\"link\");\n\tlinkElement.rel = \"stylesheet\";\n\tinsertStyleElement(options, linkElement);\n\treturn linkElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else if(obj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\") {\n\t\tstyleElement = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t\tif(styleElement.href)\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t};\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyleElement.setAttribute(\"media\", media)\n\t}\n\n\tif(styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink(linkElement, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\tif(sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = linkElement.href;\n\n\tlinkElement.href = URL.createObjectURL(blob);\n\n\tif(oldSrc)\n\t\tURL.revokeObjectURL(oldSrc);\n}\n"
        },
        {
          "id": 11,
          "identifier": "external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"React\",\"root\":\"React\"}",
          "name": "external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"React\",\"root\":\"React\"}",
          "index": 5,
          "index2": 4,
          "size": 42,
          "cacheable": false,
          "built": false,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "react",
              "loc": "13:13-29"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1
        },
        {
          "id": 12,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "name": "./src/zxcvbn/index.js",
          "index": 6,
          "index2": 12,
          "size": 2641,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "./zxcvbn",
              "loc": "17:14-33"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar matching = require('./matching');\nvar scoring = require('./scoring');\nvar time_estimates = require('./time_estimates');\nvar feedback = require('./feedback');\n\nvar time = function time() {\n    return new Date().getTime();\n};\n\nvar isZxcvbnLoaded = function isZxcvbnLoaded() {\n    return matching.dictionariesLoaded;\n};\n\nvar zxcvbn = function zxcvbn(password, user_inputs) {\n    if (user_inputs == null) {\n        user_inputs = [];\n    }\n    var start = time();\n    // reset the user inputs matcher on a per-request basis to keep things stateless\n    var sanitized_inputs = [];\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n        for (var _iterator = Array.from(user_inputs)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n            var arg = _step.value;\n\n            if ([\"string\", \"number\", \"boolean\"].includes(typeof arg === 'undefined' ? 'undefined' : _typeof(arg))) {\n                sanitized_inputs.push(arg.toString().toLowerCase());\n            }\n        }\n    } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n    } finally {\n        try {\n            if (!_iteratorNormalCompletion && _iterator.return) {\n                _iterator.return();\n            }\n        } finally {\n            if (_didIteratorError) {\n                throw _iteratorError;\n            }\n        }\n    }\n\n    matching.set_user_input_dictionary(sanitized_inputs);\n    var matches = matching.omnimatch(password);\n    var result = scoring.most_guessable_match_sequence(password, matches);\n    result.calc_time = time() - start;\n    var attack_times = time_estimates.estimate_attack_times(result.guesses);\n    for (var prop in attack_times) {\n        var val = attack_times[prop];\n        result[prop] = val;\n    }\n    result.feedback = feedback.get_feedback(result.score, result.sequence);\n    return result;\n};\n\nmodule.exports = { zxcvbn: zxcvbn, isZxcvbnLoaded: isZxcvbnLoaded };"
        },
        {
          "id": 13,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
          "name": "./src/zxcvbn/matching.js",
          "index": 7,
          "index2": 8,
          "size": 49623,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "issuerId": 12,
          "issuerName": "./src/zxcvbn/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 12,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
              "module": "./src/zxcvbn/index.js",
              "moduleName": "./src/zxcvbn/index.js",
              "type": "cjs require",
              "userRequest": "./matching",
              "loc": "12:15-36"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "'use strict';\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar frequency_lists = require('./frequency_lists');\nvar adjacency_graphs = require('./adjacency_graphs');\nvar scoring = require('./scoring');\n\nvar loadFrequencyLists = function loadFrequencyLists(callback) {\n    var request = new XMLHttpRequest();\n    request.onreadystatechange = function () {\n        if (request.readyState === 4) {\n            if (request.status === 200) {\n                var response = request.response;\n                if (response) {\n                    var result = JSON.parse(response);\n\n                    for (var _name in result) {\n                        result[_name] = result[_name].split(\",\");\n                    }\n                    callback(result);\n                } else {\n                    console.log('Unable to load dictionaries for Enzoic');\n                    callback(null);\n                }\n            } else {\n                console.log('Unable to load dictionaries for Enzoic');\n                callback(null);\n            }\n        }\n    };\n\n    request.open('GET', 'https://cdn.enzoic.com/js/zxcvbn_frequency_lists_en.json', true);\n    request.send();\n};\n\nvar build_ranked_dict = function build_ranked_dict(ordered_list) {\n    var result = {};\n    for (var i = 0; i < ordered_list.length; i++) {\n        result[ordered_list[i]] = i + 1;\n    }\n    return result;\n};\n\nvar RANKED_DICTIONARIES = {};\n\nloadFrequencyLists(function (frequencyLists) {\n    if (frequencyLists) {\n        for (var name in frequencyLists) {\n            var lst = frequencyLists[name];\n            RANKED_DICTIONARIES[name] = build_ranked_dict(lst);\n        }\n        matching.dictionariesLoaded = true;\n    }\n});\n\nvar GRAPHS = {\n    qwerty: adjacency_graphs.qwerty,\n    dvorak: adjacency_graphs.dvorak,\n    keypad: adjacency_graphs.keypad,\n    mac_keypad: adjacency_graphs.mac_keypad\n};\n\nvar L33T_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\nvar REGEXEN = { recent_year: /19\\d\\d|200\\d|201\\d/g };\n\nvar DATE_MAX_YEAR = 2050;\nvar DATE_MIN_YEAR = 1000;\nvar DATE_SPLITS = {\n    4: [// for length-4 strings, eg 1191 or 9111, two ways to split:\n    [1, 2], // 1 1 91 (2nd split starts at index 1, 3rd at index 2)\n    [2, 3] // 91 1 1\n    ],\n    5: [[1, 3], // 1 11 91\n    [2, 3] // 11 1 91\n    ],\n    6: [[1, 2], // 1 1 1991\n    [2, 4], // 11 11 91\n    [4, 5] // 1991 1 1\n    ],\n    7: [[1, 3], // 1 11 1991\n    [2, 3], // 11 1 1991\n    [4, 5], // 1991 1 11\n    [4, 6] // 1991 11 1\n    ],\n    8: [[2, 4], // 11 11 1991\n    [4, 6] // 1991 11 11\n    ]\n};\n\nvar matching = {\n    dictionariesLoaded: false,\n\n    empty: function empty(obj) {\n        return function () {\n            var result = [];\n            for (var k in obj) {\n                result.push(k);\n            }\n            return result;\n        }().length === 0;\n    },\n    extend: function extend(lst, lst2) {\n        return lst.push.apply(lst, lst2);\n    },\n    translate: function translate(string, chr_map) {\n        return Array.from(string.split('')).map(function (chr) {\n            return chr_map[chr] || chr;\n        }).join('');\n    },\n    mod: function mod(n, m) {\n        return (n % m + m) % m;\n    },\n    // mod impl that works for negative numbers\n    sorted: function sorted(matches) {\n        // sort on i primary, j secondary\n        return matches.sort(function (m1, m2) {\n            return m1.i - m2.i || m1.j - m2.j;\n        });\n    },\n\n\n    // ------------------------------------------------------------------------------\n    // omnimatch -- combine everything ----------------------------------------------\n    // ------------------------------------------------------------------------------\n\n    omnimatch: function omnimatch(password) {\n        var matches = [];\n        var 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        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n\n        try {\n            for (var _iterator = Array.from(matchers)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n                var matcher = _step.value;\n\n                this.extend(matches, matcher.call(this, password));\n            }\n        } catch (err) {\n            _didIteratorError = true;\n            _iteratorError = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion && _iterator.return) {\n                    _iterator.return();\n                }\n            } finally {\n                if (_didIteratorError) {\n                    throw _iteratorError;\n                }\n            }\n        }\n\n        return this.sorted(matches);\n    },\n\n\n    //-------------------------------------------------------------------------------\n    // dictionary match (common passwords, english, last names, etc) ----------------\n    //-------------------------------------------------------------------------------\n\n    dictionary_match: function dictionary_match(password, _ranked_dictionaries) {\n        // _ranked_dictionaries variable is for unit testing purposes\n        if (_ranked_dictionaries == null) {\n            _ranked_dictionaries = RANKED_DICTIONARIES;\n        }\n        var matches = [];\n        var len = password.length;\n        var password_lower = password.toLowerCase();\n        for (var dictionary_name in _ranked_dictionaries) {\n            var ranked_dict = _ranked_dictionaries[dictionary_name];\n            for (var i = 0, end = len, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n                for (var j = i, end1 = len, asc1 = i <= end1; asc1 ? j < end1 : j > end1; asc1 ? j++ : j--) {\n                    if (password_lower.slice(i, +j + 1 || undefined) in ranked_dict) {\n                        var word = password_lower.slice(i, +j + 1 || undefined);\n                        var rank = ranked_dict[word];\n                        matches.push({\n                            pattern: 'dictionary',\n                            i: i,\n                            j: j,\n                            token: password.slice(i, +j + 1 || undefined),\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 reverse_dictionary_match(password, _ranked_dictionaries) {\n        if (_ranked_dictionaries == null) {\n            _ranked_dictionaries = RANKED_DICTIONARIES;\n        }\n        var reversed_password = password.split('').reverse().join('');\n        var matches = this.dictionary_match(reversed_password, _ranked_dictionaries);\n        var _iteratorNormalCompletion2 = true;\n        var _didIteratorError2 = false;\n        var _iteratorError2 = undefined;\n\n        try {\n            for (var _iterator2 = Array.from(matches)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n                var match = _step2.value;\n\n                match.token = match.token.split('').reverse().join(''); // reverse back\n                match.reversed = true;\n                // map coordinates back to original string\n\n                var _Array$from = Array.from([password.length - 1 - match.j, password.length - 1 - match.i]);\n\n                var _Array$from2 = _slicedToArray(_Array$from, 2);\n\n                match.i = _Array$from2[0];\n                match.j = _Array$from2[1];\n            }\n        } catch (err) {\n            _didIteratorError2 = true;\n            _iteratorError2 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion2 && _iterator2.return) {\n                    _iterator2.return();\n                }\n            } finally {\n                if (_didIteratorError2) {\n                    throw _iteratorError2;\n                }\n            }\n        }\n\n        return this.sorted(matches);\n    },\n    set_user_input_dictionary: function set_user_input_dictionary(ordered_list) {\n        return RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict(ordered_list.slice());\n    },\n\n\n    //-------------------------------------------------------------------------------\n    // dictionary match with common l33t substitutions ------------------------------\n    //-------------------------------------------------------------------------------\n\n    // makes a pruned copy of l33t_table that only includes password's possible substitutions\n    relevant_l33t_subtable: function relevant_l33t_subtable(password, table) {\n        var password_chars = {};\n        var _iteratorNormalCompletion3 = true;\n        var _didIteratorError3 = false;\n        var _iteratorError3 = undefined;\n\n        try {\n            for (var _iterator3 = Array.from(password.split(''))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n                var chr = _step3.value;\n\n                password_chars[chr] = true;\n            }\n        } catch (err) {\n            _didIteratorError3 = true;\n            _iteratorError3 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion3 && _iterator3.return) {\n                    _iterator3.return();\n                }\n            } finally {\n                if (_didIteratorError3) {\n                    throw _iteratorError3;\n                }\n            }\n        }\n\n        var subtable = {};\n        for (var letter in table) {\n            var subs = table[letter];\n            var relevant_subs = Array.from(subs).filter(function (sub) {\n                return sub in password_chars;\n            });\n            if (relevant_subs.length > 0) {\n                subtable[letter] = relevant_subs;\n            }\n        }\n        return subtable;\n    },\n\n\n    // returns the list of possible 1337 replacement dictionaries for a given password\n    enumerate_l33t_subs: function enumerate_l33t_subs(table) {\n        var k = void 0;\n        var keys = function () {\n            var result = [];\n            for (k in table) {\n                result.push(k);\n            }\n            return result;\n        }();\n        var subs = [[]];\n\n        var dedup = function dedup(subs) {\n            var v = void 0,\n                k = void 0;\n            var deduped = [];\n            var members = {};\n            var _iteratorNormalCompletion4 = true;\n            var _didIteratorError4 = false;\n            var _iteratorError4 = undefined;\n\n            try {\n                for (var _iterator4 = Array.from(subs)[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n                    var sub = _step4.value;\n\n                    var assoc = function () {\n                        var result1 = [];\n                        for (v = 0; v < sub.length; v++) {\n                            k = sub[v];\n                            result1.push([k, v]);\n                        }\n                        return result1;\n                    }();\n                    assoc.sort();\n                    var label = function () {\n                        var result2 = [];\n                        for (v = 0; v < assoc.length; v++) {\n                            k = assoc[v];\n                            result2.push(k + ',' + v);\n                        }\n                        return result2;\n                    }().join('-');\n                    if (!(label in members)) {\n                        members[label] = true;\n                        deduped.push(sub);\n                    }\n                }\n            } catch (err) {\n                _didIteratorError4 = true;\n                _iteratorError4 = err;\n            } finally {\n                try {\n                    if (!_iteratorNormalCompletion4 && _iterator4.return) {\n                        _iterator4.return();\n                    }\n                } finally {\n                    if (_didIteratorError4) {\n                        throw _iteratorError4;\n                    }\n                }\n            }\n\n            return deduped;\n        };\n\n        var helper = function helper(keys) {\n            if (!keys.length) {\n                return;\n            }\n            var first_key = keys[0];\n            var rest_keys = keys.slice(1);\n            var next_subs = [];\n            var _iteratorNormalCompletion5 = true;\n            var _didIteratorError5 = false;\n            var _iteratorError5 = undefined;\n\n            try {\n                for (var _iterator5 = Array.from(table[first_key])[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n                    var l33t_chr = _step5.value;\n                    var _iteratorNormalCompletion6 = true;\n                    var _didIteratorError6 = false;\n                    var _iteratorError6 = undefined;\n\n                    try {\n                        for (var _iterator6 = Array.from(subs)[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n                            var sub = _step6.value;\n\n                            var dup_l33t_index = -1;\n                            for (var i = 0, end = sub.length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n                                if (sub[i][0] === l33t_chr) {\n                                    dup_l33t_index = i;\n                                    break;\n                                }\n                            }\n                            if (dup_l33t_index === -1) {\n                                var sub_extension = sub.concat([[l33t_chr, first_key]]);\n                                next_subs.push(sub_extension);\n                            } else {\n                                var 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                    } catch (err) {\n                        _didIteratorError6 = true;\n                        _iteratorError6 = err;\n                    } finally {\n                        try {\n                            if (!_iteratorNormalCompletion6 && _iterator6.return) {\n                                _iterator6.return();\n                            }\n                        } finally {\n                            if (_didIteratorError6) {\n                                throw _iteratorError6;\n                            }\n                        }\n                    }\n                }\n            } catch (err) {\n                _didIteratorError5 = true;\n                _iteratorError5 = err;\n            } finally {\n                try {\n                    if (!_iteratorNormalCompletion5 && _iterator5.return) {\n                        _iterator5.return();\n                    }\n                } finally {\n                    if (_didIteratorError5) {\n                        throw _iteratorError5;\n                    }\n                }\n            }\n\n            subs = dedup(next_subs);\n            return helper(rest_keys);\n        };\n\n        helper(keys);\n        var sub_dicts = []; // convert from assoc lists to dicts\n        var _iteratorNormalCompletion7 = true;\n        var _didIteratorError7 = false;\n        var _iteratorError7 = undefined;\n\n        try {\n            for (var _iterator7 = Array.from(subs)[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n                var sub = _step7.value;\n\n                var sub_dict = {};\n                var _iteratorNormalCompletion8 = true;\n                var _didIteratorError8 = false;\n                var _iteratorError8 = undefined;\n\n                try {\n                    for (var _iterator8 = Array.from(sub)[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n                        var _step8$value = _slicedToArray(_step8.value, 2),\n                            l33t_chr = _step8$value[0],\n                            chr = _step8$value[1];\n\n                        sub_dict[l33t_chr] = chr;\n                    }\n                } catch (err) {\n                    _didIteratorError8 = true;\n                    _iteratorError8 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion8 && _iterator8.return) {\n                            _iterator8.return();\n                        }\n                    } finally {\n                        if (_didIteratorError8) {\n                            throw _iteratorError8;\n                        }\n                    }\n                }\n\n                sub_dicts.push(sub_dict);\n            }\n        } catch (err) {\n            _didIteratorError7 = true;\n            _iteratorError7 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion7 && _iterator7.return) {\n                    _iterator7.return();\n                }\n            } finally {\n                if (_didIteratorError7) {\n                    throw _iteratorError7;\n                }\n            }\n        }\n\n        return sub_dicts;\n    },\n    l33t_match: function l33t_match(password, _ranked_dictionaries, _l33t_table) {\n        var token = void 0;\n        if (_ranked_dictionaries == null) {\n            _ranked_dictionaries = RANKED_DICTIONARIES;\n        }\n        if (_l33t_table == null) {\n            _l33t_table = L33T_TABLE;\n        }\n        var matches = [];\n        var _iteratorNormalCompletion9 = true;\n        var _didIteratorError9 = false;\n        var _iteratorError9 = undefined;\n\n        try {\n            for (var _iterator9 = Array.from(this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table)))[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n                var sub = _step9.value;\n\n                if (this.empty(sub)) {\n                    break;\n                } // corner case: password has no relevant subs.\n                var subbed_password = this.translate(password, sub);\n                var _iteratorNormalCompletion10 = true;\n                var _didIteratorError10 = false;\n                var _iteratorError10 = undefined;\n\n                try {\n                    for (var _iterator10 = Array.from(this.dictionary_match(subbed_password, _ranked_dictionaries))[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n                        var match = _step10.value;\n\n                        token = password.slice(match.i, +match.j + 1 || undefined);\n                        if (token.toLowerCase() === match.matched_word) {\n                            continue; // only return the matches that contain an actual substitution\n                        }\n                        var match_sub = {}; // subset of mappings in sub that are in use for this match\n                        for (var subbed_chr in sub) {\n                            var 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 result = [];\n                            for (var k in match_sub) {\n                                var v = match_sub[k];\n                                result.push(k + ' -> ' + v);\n                            }\n                            return result;\n                        }().join(', ');\n                        matches.push(match);\n                    }\n                } catch (err) {\n                    _didIteratorError10 = true;\n                    _iteratorError10 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion10 && _iterator10.return) {\n                            _iterator10.return();\n                        }\n                    } finally {\n                        if (_didIteratorError10) {\n                            throw _iteratorError10;\n                        }\n                    }\n                }\n            }\n        } catch (err) {\n            _didIteratorError9 = true;\n            _iteratorError9 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion9 && _iterator9.return) {\n                    _iterator9.return();\n                }\n            } finally {\n                if (_didIteratorError9) {\n                    throw _iteratorError9;\n                }\n            }\n        }\n\n        return this.sorted(matches.filter(function (match) {\n            return (\n                // filter single-character l33t matches to reduce noise.\n                // otherwise '1' matches 'i', '4' matches 'a', both very common English words\n                // with low dictionary rank.\n                match.token.length > 1\n            );\n        }));\n    },\n\n\n    // ------------------------------------------------------------------------------\n    // spatial match (qwerty/dvorak/keypad) -----------------------------------------\n    // ------------------------------------------------------------------------------\n\n    spatial_match: function spatial_match(password, _graphs) {\n        if (_graphs == null) {\n            _graphs = GRAPHS;\n        }\n        var matches = [];\n        for (var graph_name in _graphs) {\n            var graph = _graphs[graph_name];\n            this.extend(matches, this.spatial_match_helper(password, graph, graph_name));\n        }\n        return this.sorted(matches);\n    },\n\n\n    SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,\n    spatial_match_helper: function spatial_match_helper(password, graph, graph_name) {\n        var matches = [];\n        var i = 0;\n        while (i < password.length - 1) {\n            var shifted_count;\n            var j = i + 1;\n            var last_direction = null;\n            var turns = 0;\n            if (['qwerty', 'dvorak'].includes(graph_name) && this.SHIFTED_RX.exec(password.charAt(i))) {\n                // initial character is shifted\n                shifted_count = 1;\n            } else {\n                shifted_count = 0;\n            }\n            while (true) {\n                var prev_char = password.charAt(j - 1);\n                var found = false;\n                var found_direction = -1;\n                var cur_direction = -1;\n                var adjacents = graph[prev_char] || [];\n                // consider growing pattern by one character if j hasn't gone over the edge.\n                if (j < password.length) {\n                    var cur_char = password.charAt(j);\n                    var _iteratorNormalCompletion11 = true;\n                    var _didIteratorError11 = false;\n                    var _iteratorError11 = undefined;\n\n                    try {\n                        for (var _iterator11 = Array.from(adjacents)[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {\n                            var adj = _step11.value;\n\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                                    // index 1 in the adjacency means the key is shifted,\n                                    // 0 means unshifted: A vs a, % vs 5, etc.\n                                    // for example, 'q' is adjacent to the entry '2@'.\n                                    // @ is shifted w/ index 1, 2 is unshifted.\n                                    shifted_count += 1;\n                                }\n                                if (last_direction !== found_direction) {\n                                    // adding a turn is correct even in the initial case when last_direction is null:\n                                    // every spatial pattern starts with a turn.\n                                    turns += 1;\n                                    last_direction = found_direction;\n                                }\n                                break;\n                            }\n                        }\n                    } catch (err) {\n                        _didIteratorError11 = true;\n                        _iteratorError11 = err;\n                    } finally {\n                        try {\n                            if (!_iteratorNormalCompletion11 && _iterator11.return) {\n                                _iterator11.return();\n                            }\n                        } finally {\n                            if (_didIteratorError11) {\n                                throw _iteratorError11;\n                            }\n                        }\n                    }\n                }\n                // if the current pattern continued, extend j and try to grow again\n                if (found) {\n                    j += 1;\n                    // otherwise push the pattern discovered so far, if any...\n                } else {\n                    if (j - i > 2) {\n                        // don't consider length 1 or 2 chains.\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                    // ...and then start a new search for the rest of the password.\n                    i = j;\n                    break;\n                }\n            }\n        }\n        return matches;\n    },\n\n\n    //-------------------------------------------------------------------------------\n    // repeats (aaa, abcabcabc) and sequences (abcdef) ------------------------------\n    //-------------------------------------------------------------------------------\n\n    repeat_match: function repeat_match(password) {\n        var matches = [];\n        var greedy = /(.+)\\1+/g;\n        var lazy = /(.+?)\\1+/g;\n        var lazy_anchored = /^(.+?)\\1+$/;\n        var lastIndex = 0;\n        while (lastIndex < password.length) {\n            var base_token, match;\n            greedy.lastIndex = lazy.lastIndex = lastIndex;\n            var greedy_match = greedy.exec(password);\n            var lazy_match = lazy.exec(password);\n            if (greedy_match == null) {\n                break;\n            }\n            if (greedy_match[0].length > lazy_match[0].length) {\n                // greedy beats lazy for 'aabaab'\n                //   greedy: [aabaab, aab]\n                //   lazy:   [aa,     a]\n                match = greedy_match;\n                // greedy's repeated string might itself be repeated, eg.\n                // aabaab in aabaabaabaab.\n                // run an anchored lazy match on greedy's repeated string\n                // to find the shortest repeated string\n                base_token = lazy_anchored.exec(match[0])[1];\n            } else {\n                // lazy beats greedy for 'aaaaa'\n                //   greedy: [aaaa,  aa]\n                //   lazy:   [aaaaa, a]\n                match = lazy_match;\n                base_token = match[1];\n            }\n\n            var _Array$from3 = Array.from([match.index, match.index + match[0].length - 1]),\n                _Array$from4 = _slicedToArray(_Array$from3, 2),\n                i = _Array$from4[0],\n                j = _Array$from4[1];\n            // recursively match and score the base string\n\n\n            var base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));\n            var base_matches = base_analysis.sequence;\n            var 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\n\n    MAX_DELTA: 5,\n    sequence_match: function sequence_match(password) {\n        var _this = this;\n\n        // Identifies sequences by looking for repeated differences in unicode codepoint.\n        // this allows skipping, such as 9753, and also matches some extended unicode sequences\n        // such as Greek and Cyrillic alphabets.\n        //\n        // for example, consider the input 'abcdb975zy'\n        //\n        // password: a   b   c   d   b    9   7   5   z   y\n        // index:    0   1   2   3   4    5   6   7   8   9\n        // delta:      1   1   1  -2  -41  -2  -2  69   1\n        //\n        // expected result:\n        // [(i, j, delta), ...] = [(0, 3, 1), (5, 7, -2), (8, 9, 1)]\n\n        if (password.length === 1) {\n            return [];\n        }\n\n        var update = function update(i, j, delta) {\n            if (j - i > 1 || Math.abs(delta) === 1) {\n                var middle = void 0;\n                if (0 < (middle = Math.abs(delta)) && middle <= _this.MAX_DELTA) {\n                    var sequence_name = void 0,\n                        sequence_space = void 0;\n                    var token = password.slice(i, +j + 1 || undefined);\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                        // conservatively stick with roman alphabet size.\n                        // (this could be improved)\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 || undefined),\n                        sequence_name: sequence_name,\n                        sequence_space: sequence_space,\n                        ascending: delta > 0\n                    });\n                }\n            }\n        };\n\n        var result = [];\n        var i = 0;\n        var last_delta = null;\n\n        for (var k = 1, end = password.length, asc = 1 <= end; asc ? k < end : k > end; asc ? k++ : k--) {\n            var 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            var 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\n\n    //-------------------------------------------------------------------------------\n    // regex matching ---------------------------------------------------------------\n    //-------------------------------------------------------------------------------\n\n    regex_match: function regex_match(password, _regexen) {\n        if (_regexen == null) {\n            _regexen = REGEXEN;\n        }\n        var matches = [];\n        for (name in _regexen) {\n            var rx_match;\n            var regex = _regexen[name];\n            regex.lastIndex = 0; // keeps regex_match stateless\n            while (rx_match = regex.exec(password)) {\n                var 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\n\n    //-------------------------------------------------------------------------------\n    // date matching ----------------------------------------------------------------\n    //-------------------------------------------------------------------------------\n\n    date_match: function date_match(password) {\n        // a \"date\" is recognized as:\n        //   any 3-tuple that starts or ends with a 2- or 4-digit year,\n        //   with 2 or 0 separator chars (1.1.91 or 1191),\n        //   maybe zero-padded (01-01-91 vs 1-1-91),\n        //   a month between 1 and 12,\n        //   a day between 1 and 31.\n        //\n        // note: this isn't true date parsing in that \"feb 31st\" is allowed,\n        // this doesn't check for leap years, etc.\n        //\n        // recipe:\n        // start with regex to find maybe-dates, then attempt to map the integers\n        // onto month-day-year to filter the maybe-dates into dates.\n        // finally, remove matches that are substrings of other matches to reduce noise.\n        //\n        // note: instead of using a lazy or greedy regex to find many dates over the full string,\n        // this uses a ^...$ regex against every substring of the password -- less performant but leads\n        // to every possible date match.\n        var dmy = void 0,\n            i = void 0,\n            j = void 0,\n            token = void 0;\n        var asc = void 0,\n            end = void 0;\n        var asc2 = void 0,\n            end2 = void 0;\n        var matches = [];\n        var maybe_date_no_separator = /^\\d{4,8}$/;\n        var maybe_date_with_separator = new RegExp('^(\\\\d{1,4})([\\\\s/\\\\\\\\_.-])(\\\\d{1,2})\\\\2(\\\\d{1,4})$');\n\n        // dates without separators are between length 4 '1191' and 8 '11111991'\n        for (i = 0, end = password.length - 4, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n            var asc1, end1, start;\n            for (start = i + 3, j = start, end1 = i + 7, asc1 = start <= end1; asc1 ? j <= end1 : j >= end1; asc1 ? j++ : j--) {\n                if (j >= password.length) {\n                    break;\n                }\n                token = password.slice(i, +j + 1 || undefined);\n                if (!maybe_date_no_separator.exec(token)) {\n                    continue;\n                }\n                var candidates = [];\n                var _iteratorNormalCompletion12 = true;\n                var _didIteratorError12 = false;\n                var _iteratorError12 = undefined;\n\n                try {\n                    for (var _iterator12 = Array.from(DATE_SPLITS[token.length])[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {\n                        var _step12$value = _slicedToArray(_step12.value, 2),\n                            k = _step12$value[0],\n                            l = _step12$value[1];\n\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                } catch (err) {\n                    _didIteratorError12 = true;\n                    _iteratorError12 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion12 && _iterator12.return) {\n                            _iterator12.return();\n                        }\n                    } finally {\n                        if (_didIteratorError12) {\n                            throw _iteratorError12;\n                        }\n                    }\n                }\n\n                if (!(candidates.length > 0)) {\n                    continue;\n                }\n                // at this point: different possible dmy mappings for the same i,j substring.\n                // match the candidate date that likely takes the fewest guesses: a year closest to 2000.\n                // (scoring.REFERENCE_YEAR).\n                //\n                // ie, considering '111504', prefer 11-15-04 to 1-1-1504\n                // (interpreting '04' as 2004)\n                var best_candidate = candidates[0];\n                var metric = function metric(candidate) {\n                    return Math.abs(candidate.year - scoring.REFERENCE_YEAR);\n                };\n                var min_distance = metric(candidates[0]);\n                var _iteratorNormalCompletion13 = true;\n                var _didIteratorError13 = false;\n                var _iteratorError13 = undefined;\n\n                try {\n                    for (var _iterator13 = Array.from(candidates.slice(1))[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {\n                        var candidate = _step13.value;\n\n                        var distance = metric(candidate);\n                        if (distance < min_distance) {\n                            var _Array$from5 = Array.from([candidate, distance]);\n\n                            var _Array$from6 = _slicedToArray(_Array$from5, 2);\n\n                            best_candidate = _Array$from6[0];\n                            min_distance = _Array$from6[1];\n                        }\n                    }\n                } catch (err) {\n                    _didIteratorError13 = true;\n                    _iteratorError13 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion13 && _iterator13.return) {\n                            _iterator13.return();\n                        }\n                    } finally {\n                        if (_didIteratorError13) {\n                            throw _iteratorError13;\n                        }\n                    }\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\n        // dates with separators are between length 6 '1/1/91' and 10 '11/11/1991'\n        for (i = 0, end2 = password.length - 6, asc2 = 0 <= end2; asc2 ? i <= end2 : i >= end2; asc2 ? i++ : i--) {\n            var asc3, end3, start1;\n            for (start1 = i + 5, j = start1, end3 = i + 9, asc3 = start1 <= end3; asc3 ? j <= end3 : j >= end3; asc3 ? j++ : j--) {\n                if (j >= password.length) {\n                    break;\n                }\n                token = password.slice(i, +j + 1 || undefined);\n                var 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\n        // matches now contains all valid date strings in a way that is tricky to capture\n        // with regexes only. while thorough, it will contain some unintuitive noise:\n        //\n        // '2015_06_04', in addition to matching 2015_06_04, will also contain\n        // 5(!) other date matches: 15_06_04, 5_06_04, ..., even 2015 (matched as 5/1/2020)\n        //\n        // to reduce noise, remove date matches that are strict substrings of others\n        return this.sorted(matches.filter(function (match) {\n            var is_submatch = false;\n            var _iteratorNormalCompletion14 = true;\n            var _didIteratorError14 = false;\n            var _iteratorError14 = undefined;\n\n            try {\n                for (var _iterator14 = Array.from(matches)[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {\n                    var other_match = _step14.value;\n\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            } catch (err) {\n                _didIteratorError14 = true;\n                _iteratorError14 = err;\n            } finally {\n                try {\n                    if (!_iteratorNormalCompletion14 && _iterator14.return) {\n                        _iterator14.return();\n                    }\n                } finally {\n                    if (_didIteratorError14) {\n                        throw _iteratorError14;\n                    }\n                }\n            }\n\n            return !is_submatch;\n        }));\n    },\n    map_ints_to_dmy: function map_ints_to_dmy(ints) {\n        // given a 3-tuple, discard if:\n        //   middle int is over 31 (for all dmy formats, years are never allowed in the middle)\n        //   middle int is zero\n        //   any int is over the max allowable year\n        //   any int is over two digits but under the min allowable year\n        //   2 ints are over 31, the max allowable day\n        //   2 ints are zero\n        //   all ints are over 12, the max allowable month\n        var dm = void 0;\n        if (ints[1] > 31 || ints[1] <= 0) {\n            return;\n        }\n        var over_12 = 0;\n        var over_31 = 0;\n        var under_1 = 0;\n        var _iteratorNormalCompletion15 = true;\n        var _didIteratorError15 = false;\n        var _iteratorError15 = undefined;\n\n        try {\n            for (var _iterator15 = Array.from(ints)[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {\n                var int = _step15.value;\n\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        } catch (err) {\n            _didIteratorError15 = true;\n            _iteratorError15 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion15 && _iterator15.return) {\n                    _iterator15.return();\n                }\n            } finally {\n                if (_didIteratorError15) {\n                    throw _iteratorError15;\n                }\n            }\n        }\n\n        if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {\n            return;\n        }\n\n        // first look for a four digit year: yyyy + daymonth or daymonth + yyyy\n        var possible_year_splits = [[ints[2], ints.slice(0, 2)], // year last\n        [ints[0], ints.slice(1, 3)] // year first\n        ];\n        var _iteratorNormalCompletion16 = true;\n        var _didIteratorError16 = false;\n        var _iteratorError16 = undefined;\n\n        try {\n            for (var _iterator16 = Array.from(possible_year_splits)[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) {\n                var _step16$value = _slicedToArray(_step16.value, 2),\n                    y = _step16$value[0],\n                    rest = _step16$value[1];\n\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                        // for a candidate that includes a four-digit year,\n                        // when the remaining ints don't match to a day and month,\n                        // it is not a date.\n                        return;\n                    }\n                }\n            }\n\n            // given no four-digit year, two digit years are the most flexible int to match, so\n            // try to parse a day-month out of ints[0..1] or ints[1..0]\n        } catch (err) {\n            _didIteratorError16 = true;\n            _iteratorError16 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion16 && _iterator16.return) {\n                    _iterator16.return();\n                }\n            } finally {\n                if (_didIteratorError16) {\n                    throw _iteratorError16;\n                }\n            }\n        }\n\n        var _iteratorNormalCompletion17 = true;\n        var _didIteratorError17 = false;\n        var _iteratorError17 = undefined;\n\n        try {\n            for (var _iterator17 = Array.from(possible_year_splits)[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) {\n                var _step17$value = _slicedToArray(_step17.value, 2);\n\n                y = _step17$value[0];\n                rest = _step17$value[1];\n\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        } catch (err) {\n            _didIteratorError17 = true;\n            _iteratorError17 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion17 && _iterator17.return) {\n                    _iterator17.return();\n                }\n            } finally {\n                if (_didIteratorError17) {\n                    throw _iteratorError17;\n                }\n            }\n        }\n    },\n    map_ints_to_dm: function map_ints_to_dm(ints) {\n        var _arr = [ints, ints.slice().reverse()];\n\n        for (var _i = 0; _i < _arr.length; _i++) {\n            var _arr$_i = _slicedToArray(_arr[_i], 2),\n                d = _arr$_i[0],\n                m = _arr$_i[1];\n\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 two_to_four_digit_year(year) {\n        if (year > 99) {\n            return year;\n        } else if (year > 50) {\n            // 87 -> 1987\n            return year + 1900;\n        } else {\n            // 15 -> 2015\n            return year + 2000;\n        }\n    }\n};\n\nmodule.exports = matching;"
        },
        {
          "id": 14,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/frequency_lists.js",
          "name": "./src/zxcvbn/frequency_lists.js",
          "index": 8,
          "index2": 5,
          "size": 233,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
          "issuerId": 13,
          "issuerName": "./src/zxcvbn/matching.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 13,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
              "module": "./src/zxcvbn/matching.js",
              "moduleName": "./src/zxcvbn/matching.js",
              "type": "cjs require",
              "userRequest": "./frequency_lists",
              "loc": "5:22-50"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 3,
          "source": "\"use strict\";\n\n// generated by build_frequency_lists.py\nvar frequency_lists = {\n  passwords: [],\n  english_wikipedia: [],\n  female_names: [],\n  surnames: [],\n  us_tv_and_film: [],\n  male_names: []\n};\nmodule.exports = frequency_lists;"
        },
        {
          "id": 15,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/time_estimates.js",
          "name": "./src/zxcvbn/time_estimates.js",
          "index": 11,
          "index2": 9,
          "size": 3952,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "issuerId": 12,
          "issuerName": "./src/zxcvbn/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 12,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
              "module": "./src/zxcvbn/index.js",
              "moduleName": "./src/zxcvbn/index.js",
              "type": "cjs require",
              "userRequest": "./time_estimates",
              "loc": "14:21-48"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "'use strict';\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar time_estimates = {\n  estimate_attack_times: function estimate_attack_times(guesses) {\n    var crack_times_seconds = {\n      online_throttling_100_per_hour: guesses / (100 / 3600),\n      online_no_throttling_10_per_second: guesses / 10,\n      offline_slow_hashing_1e4_per_second: guesses / 1e4,\n      offline_fast_hashing_1e10_per_second: guesses / 1e10\n    };\n\n    var crack_times_display = {};\n    for (var scenario in crack_times_seconds) {\n      var seconds = crack_times_seconds[scenario];\n      crack_times_display[scenario] = this.display_time(seconds);\n    }\n\n    return {\n      crack_times_seconds: crack_times_seconds,\n      crack_times_display: crack_times_display,\n      score: this.guesses_to_score(guesses)\n    };\n  },\n  guesses_to_score: function guesses_to_score(guesses) {\n    var DELTA = 5;\n    if (guesses < 1e3 + DELTA) {\n      // risky password: \"too guessable\"\n      return 0;\n    } else if (guesses < 1e6 + DELTA) {\n      // modest protection from throttled online attacks: \"very guessable\"\n      return 1;\n    } else if (guesses < 1e8 + DELTA) {\n      // modest protection from unthrottled online attacks: \"somewhat guessable\"\n      return 2;\n    } else if (guesses < 1e10 + DELTA) {\n      // modest protection from offline attacks: \"safely unguessable\"\n      // assuming a salted, slow hash function like bcrypt, scrypt, PBKDF2, argon, etc\n      return 3;\n    } else {\n      // strong protection from offline attacks under same scenario: \"very unguessable\"\n      return 4;\n    }\n  },\n  display_time: function display_time(seconds) {\n    var minute = 60;\n    var hour = minute * 60;\n    var day = hour * 24;\n    var month = day * 31;\n    var year = month * 12;\n    var century = year * 100;\n\n    var _Array$from = Array.from(function () {\n      var base = void 0;\n      if (seconds < 1) {\n        return [null, 'less than a second'];\n      } else if (seconds < minute) {\n        base = Math.round(seconds);\n        return [base, base + ' second'];\n      } else if (seconds < hour) {\n        base = Math.round(seconds / minute);\n        return [base, base + ' minute'];\n      } else if (seconds < day) {\n        base = Math.round(seconds / hour);\n        return [base, base + ' hour'];\n      } else if (seconds < month) {\n        base = Math.round(seconds / day);\n        return [base, base + ' day'];\n      } else if (seconds < year) {\n        base = Math.round(seconds / month);\n        return [base, base + ' month'];\n      } else if (seconds < century) {\n        base = Math.round(seconds / year);\n        return [base, base + ' year'];\n      } else {\n        return [null, 'centuries'];\n      }\n    }()),\n        _Array$from2 = _slicedToArray(_Array$from, 2),\n        display_num = _Array$from2[0],\n        display_str = _Array$from2[1];\n\n    if (display_num != null && display_num !== 1) {\n      display_str += 's';\n    }\n    return display_str;\n  }\n};\n\nmodule.exports = time_estimates;"
        },
        {
          "id": 16,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/feedback.js",
          "name": "./src/zxcvbn/feedback.js",
          "index": 12,
          "index2": 11,
          "size": 6915,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "issuerId": 12,
          "issuerName": "./src/zxcvbn/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 12,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
              "module": "./src/zxcvbn/index.js",
              "moduleName": "./src/zxcvbn/index.js",
              "type": "cjs require",
              "userRequest": "./feedback",
              "loc": "15:15-36"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "'use strict';\n\nvar _enzoic_strings = require('../strings/enzoic_strings');\n\nvar _enzoic_strings2 = _interopRequireDefault(_enzoic_strings);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar scoring = require('./scoring');\n\n\nvar feedback = {\n    default_feedback: {\n        warning: '',\n        suggestions: [_enzoic_strings2.default.suggestions.defaultFeedback, _enzoic_strings2.default.suggestions.defaultFeedback2]\n    },\n\n    get_feedback: function get_feedback(score, sequence) {\n        // starting feedback\n        if (sequence.length === 0) {\n            return this.default_feedback;\n        }\n\n        // no feedback if score is good or great.\n        if (score > 2) {\n            return {\n                warning: '',\n                suggestions: []\n            };\n        }\n\n        // tie feedback to the longest match for longer sequences\n        var longest_match = sequence[0];\n        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n\n        try {\n            for (var _iterator = Array.from(sequence.slice(1))[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n                var match = _step.value;\n\n                if (match.token.length > longest_match.token.length) {\n                    longest_match = match;\n                }\n            }\n        } catch (err) {\n            _didIteratorError = true;\n            _iteratorError = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion && _iterator.return) {\n                    _iterator.return();\n                }\n            } finally {\n                if (_didIteratorError) {\n                    throw _iteratorError;\n                }\n            }\n        }\n\n        feedback = this.get_match_feedback(longest_match, sequence.length === 1);\n        var extra_feedback = _enzoic_strings2.default.suggestions.addWord;\n        if (feedback != null) {\n            feedback.suggestions.unshift(extra_feedback);\n            if (feedback.warning == null) {\n                feedback.warning = '';\n            }\n        } else {\n            feedback = {\n                warning: '',\n                suggestions: [extra_feedback]\n            };\n        }\n        return feedback;\n    },\n    get_match_feedback: function get_match_feedback(match, is_sole_match) {\n        switch (match.pattern) {\n            case 'dictionary':\n                return this.get_dictionary_match_feedback(match, is_sole_match);\n\n            case 'spatial':\n                var layout = match.graph.toUpperCase();\n                var warning = match.turns === 1 ? _enzoic_strings2.default.suggestions.rowsOfKeys : _enzoic_strings2.default.suggestions.shortKeyboardPatterns;\n                return {\n                    warning: warning,\n                    suggestions: [_enzoic_strings2.default.suggestions.longerKeyboardPattern]\n                };\n\n            case 'repeat':\n                warning = match.base_token.length === 1 ? _enzoic_strings2.default.suggestions.shortRepeats : _enzoic_strings2.default.suggestions.longRepeats;\n                return {\n                    warning: warning,\n                    suggestions: [_enzoic_strings2.default.suggestions.avoidRepeatedWords]\n                };\n\n            case 'sequence':\n                return {\n                    warning: _enzoic_strings2.default.suggestions.avoidSequences,\n                    suggestions: [_enzoic_strings2.default.suggestions.avoidSequences2]\n                };\n\n            case 'regex':\n                if (match.regex_name === 'recent_year') {\n                    return {\n                        warning: _enzoic_strings2.default.suggestions.recentYears,\n                        suggestions: [_enzoic_strings2.default.suggestions.avoidRecentYears, _enzoic_strings2.default.suggestions.avoidAssociatedYears]\n                    };\n                }\n                break;\n\n            case 'date':\n                return {\n                    warning: _enzoic_strings2.default.suggestions.datesAreEasy,\n                    suggestions: [_enzoic_strings2.default.suggestions.avoidAssociatedDates]\n                };\n        }\n    },\n    get_dictionary_match_feedback: function get_dictionary_match_feedback(match, is_sole_match) {\n        var warning = function () {\n            if (match.dictionary_name === 'passwords') {\n                if (is_sole_match && !match.l33t && !match.reversed) {\n                    if (match.rank <= 10) {\n                        return _enzoic_strings2.default.suggestions.topTenPassword;\n                    } else if (match.rank <= 100) {\n                        return _enzoic_strings2.default.suggestions.top100Password;\n                    } else {\n                        return _enzoic_strings2.default.suggestions.veryCommonPassword;\n                    }\n                } else if (match.guesses_log10 <= 4) {\n                    return _enzoic_strings2.default.suggestions.similarToCommon;\n                }\n            } else if (match.dictionary_name === 'english_wikipedia') {\n                if (is_sole_match) {\n                    return _enzoic_strings2.default.suggestions.wordByItself;\n                }\n            } else if (['surnames', 'male_names', 'female_names'].includes(match.dictionary_name)) {\n                if (is_sole_match) {\n                    return _enzoic_strings2.default.suggestions.namesByThemselves;\n                } else {\n                    return _enzoic_strings2.default.suggestions.commonNamesAndSurnames;\n                }\n            } else {\n                return '';\n            }\n        }();\n\n        var suggestions = [];\n        var word = match.token;\n        if (word.match(scoring.START_UPPER)) {\n            suggestions.push(_enzoic_strings2.default.suggestions.capitalization);\n        } else if (word.match(scoring.ALL_UPPER) && word.toLowerCase() !== word) {\n            suggestions.push(_enzoic_strings2.default.suggestions.allUpperCase);\n        }\n\n        if (match.reversed && match.token.length >= 4) {\n            suggestions.push(_enzoic_strings2.default.suggestions.reversedWords);\n        }\n        if (match.l33t) {\n            suggestions.push(_enzoic_strings2.default.suggestions.predictableSubs);\n        }\n\n        var result = {\n            warning: warning,\n            suggestions: suggestions\n        };\n        return result;\n    }\n};\n\nmodule.exports = feedback;"
        },
        {
          "id": 17,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
          "name": "./node_modules/prop-types/index.js",
          "index": 14,
          "index2": 19,
          "size": 956,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "prop-types",
              "loc": "19:17-38"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n    Symbol.for &&\n    Symbol.for('react.element')) ||\n    0xeac7;\n\n  var isValidElement = function(object) {\n    return typeof object === 'object' &&\n      object !== null &&\n      object.$$typeof === REACT_ELEMENT_TYPE;\n  };\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n"
        },
        {
          "id": 18,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "name": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "index": 16,
          "index2": 17,
          "size": 20237,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
          "issuerId": 17,
          "issuerName": "./node_modules/prop-types/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 17,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
              "module": "./node_modules/prop-types/index.js",
              "moduleName": "./node_modules/prop-types/index.js",
              "type": "cjs require",
              "userRequest": "./factoryWithTypeCheckers",
              "loc": "23:19-55"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message) {\n    this.message = message;\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues);\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (propValue.hasOwnProperty(key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n          return null;\n        }\n      }\n\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          continue;\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from\n      // props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n"
        },
        {
          "id": 19,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/object-assign/index.js",
          "name": "./node_modules/object-assign/index.js",
          "index": 17,
          "index2": 14,
          "size": 2108,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "issuerId": 18,
          "issuerName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 18,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
              "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "type": "cjs require",
              "userRequest": "object-assign",
              "loc": "10:13-37"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 3,
          "source": "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n"
        },
        {
          "id": 20,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/checkPropTypes.js",
          "name": "./node_modules/prop-types/checkPropTypes.js",
          "index": 19,
          "index2": 16,
          "size": 3534,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "issuerId": 18,
          "issuerName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 18,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
              "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
              "type": "cjs require",
              "userRequest": "./checkPropTypes",
              "loc": "13:21-48"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 3,
          "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (typeSpecs.hasOwnProperty(typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          )\n\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = checkPropTypes;\n"
        },
        {
          "id": 21,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithThrowingShims.js",
          "name": "./node_modules/prop-types/factoryWithThrowingShims.js",
          "index": 20,
          "index2": 18,
          "size": 1469,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
          "issuerId": 17,
          "issuerName": "./node_modules/prop-types/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 17,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
              "module": "./node_modules/prop-types/index.js",
              "moduleName": "./node_modules/prop-types/index.js",
              "type": "cjs require",
              "userRequest": "./factoryWithThrowingShims",
              "loc": "27:19-56"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 2,
          "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim\n  };\n\n  ReactPropTypes.checkPropTypes = emptyFunction;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n"
        },
        {
          "id": 22,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha1.js",
          "name": "./src/hashes/sha1.js",
          "index": 21,
          "index2": 21,
          "size": 5232,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "./hashes/sha1",
              "loc": "27:11-35"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n/*  SHA-1 implementation in JavaScript                  (c) Chris Veness 2002-2014 / MIT Licence  */\n/*                                                                                                */\n/*  - see http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html                              */\n/*        http://csrc.nist.gov/groups/ST/toolkit/examples.html                                    */\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n/**\n * SHA-1 hash function reference implementation.\n *\n * @namespace\n */\nvar Enzoic = {};\nEnzoic.Sha1 = {};\n\n/**\n * Generates SHA-1 hash of string.\n *\n * @param   {string} msg - (Unicode) string to be hashed.\n * @returns {string} Hash of msg as hex character string.\n */\nEnzoic.Sha1.hash = function (msg) {\n    // convert string to UTF-8, as SHA only deals with byte-streams\n    msg = msg.utf8Encode();\n\n    // constants [§4.2.1]\n    var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n\n    // PREPROCESSING\n\n    msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1]\n\n    // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1]\n    var l = msg.length / 4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length\n    var N = Math.ceil(l / 16); // number of 16-integer-blocks required to hold 'l' ints\n    var M = new Array(N);\n\n    for (var i = 0; i < N; i++) {\n        M[i] = new Array(16);\n        for (var j = 0; j < 16; j++) {\n            // encode 4 chars per integer, big-endian encoding\n            M[i][j] = msg.charCodeAt(i * 64 + j * 4) << 24 | msg.charCodeAt(i * 64 + j * 4 + 1) << 16 | msg.charCodeAt(i * 64 + j * 4 + 2) << 8 | msg.charCodeAt(i * 64 + j * 4 + 3);\n        } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0\n    }\n    // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1]\n    // note: most significant word would be (len-1)*8 >>> 32, but since JS converts\n    // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators\n    M[N - 1][14] = (msg.length - 1) * 8 / Math.pow(2, 32);M[N - 1][14] = Math.floor(M[N - 1][14]);\n    M[N - 1][15] = (msg.length - 1) * 8 & 0xffffffff;\n\n    // set initial hash value [§5.3.1]\n    var H0 = 0x67452301;\n    var H1 = 0xefcdab89;\n    var H2 = 0x98badcfe;\n    var H3 = 0x10325476;\n    var H4 = 0xc3d2e1f0;\n\n    // HASH COMPUTATION [§6.1.2]\n\n    var W = new Array(80);var a, b, c, d, e;\n    for (var i = 0; i < N; i++) {\n\n        // 1 - prepare message schedule 'W'\n        for (var t = 0; t < 16; t++) {\n            W[t] = M[i][t];\n        }for (var t = 16; t < 80; t++) {\n            W[t] = _utils2.default.ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n        } // 2 - initialise five working variables a, b, c, d, e with previous hash value\n        a = H0;b = H1;c = H2;d = H3;e = H4;\n\n        // 3 - main loop\n        for (var t = 0; t < 80; t++) {\n            var s = Math.floor(t / 20); // seq for blocks of 'f' functions and 'K' constants\n            var T = _utils2.default.ROTL(a, 5) + Enzoic.Sha1.f(s, b, c, d) + e + K[s] + W[t] & 0xffffffff;\n            e = d;\n            d = c;\n            c = _utils2.default.ROTL(b, 30);\n            b = a;\n            a = T;\n        }\n\n        // 4 - compute the new intermediate hash value (note 'addition modulo 2^32')\n        H0 = H0 + a & 0xffffffff;\n        H1 = H1 + b & 0xffffffff;\n        H2 = H2 + c & 0xffffffff;\n        H3 = H3 + d & 0xffffffff;\n        H4 = H4 + e & 0xffffffff;\n    }\n\n    return _utils2.default.toHexStr(H0) + _utils2.default.toHexStr(H1) + _utils2.default.toHexStr(H2) + _utils2.default.toHexStr(H3) + _utils2.default.toHexStr(H4);\n};\n\n/**\n * Function 'f' [§4.1.1].\n * @private\n */\nEnzoic.Sha1.f = function (s, x, y, z) {\n    switch (s) {\n        case 0:\n            return x & y ^ ~x & z; // Ch()\n        case 1:\n            return x ^ y ^ z; // Parity()\n        case 2:\n            return x & y ^ x & z ^ y & z; // Maj()\n        case 3:\n            return x ^ y ^ z; // Parity()\n    }\n};\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n/** Extend String object with method to encode multi-byte string to utf8\n *  - monsur.hossa.in/2012/07/20/utf-8-in-javascript.html */\nif (typeof String.prototype.utf8Encode == 'undefined') {\n    String.prototype.utf8Encode = function () {\n        return unescape(encodeURIComponent(this));\n    };\n}\n\n/** Extend String object with method to decode utf8 string to multi-byte */\nif (typeof String.prototype.utf8Decode == 'undefined') {\n    String.prototype.utf8Decode = function () {\n        try {\n            return decodeURIComponent(escape(this));\n        } catch (e) {\n            return this; // invalid UTF-8? return as-is\n        }\n    };\n}\n\nexports.default = Enzoic.Sha1;"
        },
        {
          "id": 23,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha256.js",
          "name": "./src/hashes/sha256.js",
          "index": 23,
          "index2": 22,
          "size": 5906,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "./hashes/sha256",
              "loc": "31:12-38"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n/*  SHA-256 implementation in JavaScript                (c) Chris Veness 2002-2014 / MIT Licence  */\n/*                                                                                                */\n/*  - see http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html                              */\n/*        http://csrc.nist.gov/groups/ST/toolkit/examples.html                                    */\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n/**\n * SHA-256 hash function reference implementation.\n *\n * @namespace\n */\nvar Enzoic = {};\nEnzoic.Sha256 = {};\n\n/**\n * Generates SHA-256 hash of string.\n *\n * @param   {string} msg - String to be hashed\n * @returns {string} Hash of msg as hex character string\n */\nEnzoic.Sha256.hash = function (msg) {\n    // convert string to UTF-8, as SHA only deals with byte-streams\n    msg = msg.utf8Encode();\n\n    // constants [§4.2.2]\n    var K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n    // initial hash value [§5.3.1]\n    var H = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n\n    // PREPROCESSING\n\n    msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1]\n\n    // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1]\n    var l = msg.length / 4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length\n    var N = Math.ceil(l / 16); // number of 16-integer-blocks required to hold 'l' ints\n    var M = new Array(N);\n\n    for (var i = 0; i < N; i++) {\n        M[i] = new Array(16);\n        for (var j = 0; j < 16; j++) {\n            // encode 4 chars per integer, big-endian encoding\n            M[i][j] = msg.charCodeAt(i * 64 + j * 4) << 24 | msg.charCodeAt(i * 64 + j * 4 + 1) << 16 | msg.charCodeAt(i * 64 + j * 4 + 2) << 8 | msg.charCodeAt(i * 64 + j * 4 + 3);\n        } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0\n    }\n    // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1]\n    // note: most significant word would be (len-1)*8 >>> 32, but since JS converts\n    // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators\n    M[N - 1][14] = (msg.length - 1) * 8 / Math.pow(2, 32);M[N - 1][14] = Math.floor(M[N - 1][14]);\n    M[N - 1][15] = (msg.length - 1) * 8 & 0xffffffff;\n\n    // HASH COMPUTATION [§6.1.2]\n\n    var W = new Array(64);var a, b, c, d, e, f, g, h;\n    for (var i = 0; i < N; i++) {\n\n        // 1 - prepare message schedule 'W'\n        for (var t = 0; t < 16; t++) {\n            W[t] = M[i][t];\n        }for (var t = 16; t < 64; t++) {\n            W[t] = Enzoic.Sha256.σ1(W[t - 2]) + W[t - 7] + Enzoic.Sha256.σ0(W[t - 15]) + W[t - 16] & 0xffffffff;\n        } // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value\n        a = H[0];b = H[1];c = H[2];d = H[3];e = H[4];f = H[5];g = H[6];h = H[7];\n\n        // 3 - main loop (note 'addition modulo 2^32')\n        for (var t = 0; t < 64; t++) {\n            var T1 = h + Enzoic.Sha256.Σ1(e) + Enzoic.Sha256.Ch(e, f, g) + K[t] + W[t];\n            var T2 = Enzoic.Sha256.Σ0(a) + Enzoic.Sha256.Maj(a, b, c);\n            h = g;\n            g = f;\n            f = e;\n            e = d + T1 & 0xffffffff;\n            d = c;\n            c = b;\n            b = a;\n            a = T1 + T2 & 0xffffffff;\n        }\n        // 4 - compute the new intermediate hash value (note 'addition modulo 2^32')\n        H[0] = H[0] + a & 0xffffffff;\n        H[1] = H[1] + b & 0xffffffff;\n        H[2] = H[2] + c & 0xffffffff;\n        H[3] = H[3] + d & 0xffffffff;\n        H[4] = H[4] + e & 0xffffffff;\n        H[5] = H[5] + f & 0xffffffff;\n        H[6] = H[6] + g & 0xffffffff;\n        H[7] = H[7] + h & 0xffffffff;\n    }\n\n    return _utils2.default.toHexStr(H[0]) + _utils2.default.toHexStr(H[1]) + _utils2.default.toHexStr(H[2]) + _utils2.default.toHexStr(H[3]) + _utils2.default.toHexStr(H[4]) + _utils2.default.toHexStr(H[5]) + _utils2.default.toHexStr(H[6]) + _utils2.default.toHexStr(H[7]);\n};\n\n/**\n * Logical functions [§4.1.2].\n * @private\n */\nEnzoic.Sha256.Σ0 = function (x) {\n    return _utils2.default.ROTR(2, x) ^ _utils2.default.ROTR(13, x) ^ _utils2.default.ROTR(22, x);\n};\nEnzoic.Sha256.Σ1 = function (x) {\n    return _utils2.default.ROTR(6, x) ^ _utils2.default.ROTR(11, x) ^ _utils2.default.ROTR(25, x);\n};\nEnzoic.Sha256.σ0 = function (x) {\n    return _utils2.default.ROTR(7, x) ^ _utils2.default.ROTR(18, x) ^ x >>> 3;\n};\nEnzoic.Sha256.σ1 = function (x) {\n    return _utils2.default.ROTR(17, x) ^ _utils2.default.ROTR(19, x) ^ x >>> 10;\n};\nEnzoic.Sha256.Ch = function (x, y, z) {\n    return x & y ^ ~x & z;\n};\nEnzoic.Sha256.Maj = function (x, y, z) {\n    return x & y ^ x & z ^ y & z;\n};\n\nexports.default = Enzoic.Sha256;"
        },
        {
          "id": 24,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/md5.js",
          "name": "./src/hashes/md5.js",
          "index": 24,
          "index2": 23,
          "size": 8578,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "./hashes/md5",
              "loc": "35:10-33"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (string) {\n\n    function RotateLeft(lValue, iShiftBits) {\n        return lValue << iShiftBits | lValue >>> 32 - iShiftBits;\n    }\n\n    function AddUnsigned(lX, lY) {\n        var lX4, lY4, lX8, lY8, lResult;\n        lX8 = lX & 0x80000000;\n        lY8 = lY & 0x80000000;\n        lX4 = lX & 0x40000000;\n        lY4 = lY & 0x40000000;\n        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);\n        if (lX4 & lY4) {\n            return lResult ^ 0x80000000 ^ lX8 ^ lY8;\n        }\n        if (lX4 | lY4) {\n            if (lResult & 0x40000000) {\n                return lResult ^ 0xC0000000 ^ lX8 ^ lY8;\n            } else {\n                return lResult ^ 0x40000000 ^ lX8 ^ lY8;\n            }\n        } else {\n            return lResult ^ lX8 ^ lY8;\n        }\n    }\n\n    function F(x, y, z) {\n        return x & y | ~x & z;\n    }\n    function G(x, y, z) {\n        return x & z | y & ~z;\n    }\n    function H(x, y, z) {\n        return x ^ y ^ z;\n    }\n    function I(x, y, z) {\n        return y ^ (x | ~z);\n    }\n\n    function FF(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function GG(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function HH(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function II(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function ConvertToWordArray(string) {\n        var lWordCount;\n        var lMessageLength = string.length;\n        var lNumberOfWords_temp1 = lMessageLength + 8;\n        var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - lNumberOfWords_temp1 % 64) / 64;\n        var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\n        var lWordArray = Array(lNumberOfWords - 1);\n        var lBytePosition = 0;\n        var lByteCount = 0;\n        while (lByteCount < lMessageLength) {\n            lWordCount = (lByteCount - lByteCount % 4) / 4;\n            lBytePosition = lByteCount % 4 * 8;\n            lWordArray[lWordCount] = lWordArray[lWordCount] | string.charCodeAt(lByteCount) << lBytePosition;\n            lByteCount++;\n        }\n        lWordCount = (lByteCount - lByteCount % 4) / 4;\n        lBytePosition = lByteCount % 4 * 8;\n        lWordArray[lWordCount] = lWordArray[lWordCount] | 0x80 << lBytePosition;\n        lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\n        lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\n        return lWordArray;\n    };\n\n    function WordToHex(lValue) {\n        var WordToHexValue = \"\",\n            WordToHexValue_temp = \"\",\n            lByte,\n            lCount;\n        for (lCount = 0; lCount <= 3; lCount++) {\n            lByte = lValue >>> lCount * 8 & 255;\n            WordToHexValue_temp = \"0\" + lByte.toString(16);\n            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);\n        }\n        return WordToHexValue;\n    };\n\n    function Utf8Encode(string) {\n        string = string.replace(/\\r\\n/g, \"\\n\");\n        var utftext = \"\";\n\n        for (var n = 0; n < string.length; n++) {\n\n            var c = string.charCodeAt(n);\n\n            if (c < 128) {\n                utftext += String.fromCharCode(c);\n            } else if (c > 127 && c < 2048) {\n                utftext += String.fromCharCode(c >> 6 | 192);\n                utftext += String.fromCharCode(c & 63 | 128);\n            } else {\n                utftext += String.fromCharCode(c >> 12 | 224);\n                utftext += String.fromCharCode(c >> 6 & 63 | 128);\n                utftext += String.fromCharCode(c & 63 | 128);\n            }\n        }\n\n        return utftext;\n    };\n\n    var x = Array();\n    var k, AA, BB, CC, DD, a, b, c, d;\n    var S11 = 7,\n        S12 = 12,\n        S13 = 17,\n        S14 = 22;\n    var S21 = 5,\n        S22 = 9,\n        S23 = 14,\n        S24 = 20;\n    var S31 = 4,\n        S32 = 11,\n        S33 = 16,\n        S34 = 23;\n    var S41 = 6,\n        S42 = 10,\n        S43 = 15,\n        S44 = 21;\n\n    string = Utf8Encode(string);\n\n    x = ConvertToWordArray(string);\n\n    a = 0x67452301;b = 0xEFCDAB89;c = 0x98BADCFE;d = 0x10325476;\n\n    for (k = 0; k < x.length; k += 16) {\n        AA = a;BB = b;CC = c;DD = d;\n        a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);\n        d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);\n        c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);\n        b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);\n        a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);\n        d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);\n        c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);\n        b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);\n        a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);\n        d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);\n        c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);\n        b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);\n        a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);\n        d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);\n        c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);\n        b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);\n        a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);\n        d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);\n        c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);\n        b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);\n        a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);\n        d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);\n        c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);\n        b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);\n        a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);\n        d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);\n        c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);\n        b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);\n        a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);\n        d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);\n        c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);\n        b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);\n        a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);\n        d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);\n        c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);\n        b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);\n        a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);\n        d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);\n        c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);\n        b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);\n        a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);\n        d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);\n        c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);\n        b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);\n        a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);\n        d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);\n        c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);\n        b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);\n        a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);\n        d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);\n        c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);\n        b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);\n        a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);\n        d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);\n        c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);\n        b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);\n        a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);\n        d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);\n        c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);\n        b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);\n        a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);\n        d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);\n        c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);\n        b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);\n        a = AddUnsigned(a, AA);\n        b = AddUnsigned(b, BB);\n        c = AddUnsigned(c, CC);\n        d = AddUnsigned(d, DD);\n    }\n\n    var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);\n\n    return temp.toLowerCase();\n};\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n;"
        },
        {
          "id": 25,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/url-loader/dist/cjs.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/assets/warning.png",
          "name": "./assets/warning.png",
          "index": 25,
          "index2": 24,
          "size": 1481,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "../assets/warning.png",
              "loc": "39:15-47"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjdBNEU0MDQ5NUY5MTFFOEI2RDNDRkMwNDcwQTA4QzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjdBNEU0MDU5NUY5MTFFOEI2RDNDRkMwNDcwQTA4QzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozMDlEMzFGRjk1RjMxMUU4QjZEM0NGQzA0NzBBMDhDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozMDlEMzIwMDk1RjMxMUU4QjZEM0NGQzA0NzBBMDhDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtiZo3oAAAClSURBVHjaYvz//z8DDlAOpTuxyoI0YsFp/xEgDZsabJoEgfguksa7UDEUdUxYHJEGxEpIfCWoGF6nKgHxOySbYDa/g8rhdOpMJCcqQTEMzMSl0eU/KkDX+B+qBkPjGSyK0A07g64x7T8mOIPFMHj0wIL/HRYFxlCMDkBqBVmgKUQQS7Qo4UhRILXljKAgx6MIF7gH0ugCZISSqHE1I55EjhcABBgAzUOWp0MSPh0AAAAASUVORK5CYII=\""
        },
        {
          "id": 26,
          "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/url-loader/dist/cjs.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/assets/info.png",
          "name": "./assets/info.png",
          "index": 26,
          "index2": 25,
          "size": 1497,
          "cacheable": true,
          "built": true,
          "optional": false,
          "prefetched": false,
          "chunks": [
            0
          ],
          "assets": [],
          "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "issuerId": 6,
          "issuerName": "./src/index.js",
          "failed": false,
          "errors": 0,
          "warnings": 0,
          "reasons": [
            {
              "moduleId": 6,
              "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
              "module": "./src/index.js",
              "moduleName": "./src/index.js",
              "type": "cjs require",
              "userRequest": "../assets/info.png",
              "loc": "43:12-41"
            }
          ],
          "usedExports": true,
          "providedExports": null,
          "optimizationBailout": [],
          "depth": 1,
          "source": "module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEQxNjcyRDM5NUZGMTFFOEI2RDNDRkMwNDcwQTA4QzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEQxNjcyRDQ5NUZGMTFFOEI2RDNDRkMwNDcwQTA4QzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4RDE2NzJEMTk1RkYxMUU4QjZEM0NGQzA0NzBBMDhDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4RDE2NzJEMjk1RkYxMUU4QjZEM0NGQzA0NzBBMDhDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoZK8UkAAACwSURBVHjaYmTAAv7//58GpFyA2Bgq9B6I9wDxLEZGxnsMuABQowsQn/mPG7wD4pn4NL/7TxxYha7ZGIdmkNhdgoYAObtxKDKGyq/CIe/CBCKgAUYOKGdBCmlsAOQyUAwo4ZA3ZsIjOQuITYDYFYhxRZ0gEx7bQS4TxBvvQMCEx3RjAt4DJzCQAWdxSJ5FkluNRw3OaJwJxEpQbIwrGgklJJJSI/lJmZLMxEhpdgYIMAB96KVkdZcc3gAAAABJRU5ErkJggg==\""
        }
      ],
      "filteredModules": 0,
      "origins": [
        {
          "moduleId": 6,
          "module": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "moduleName": "./src/index.js",
          "loc": "",
          "name": "main",
          "reasons": []
        }
      ]
    }
  ],
  "modules": [
    {
      "id": 0,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/scoring.js",
      "name": "./src/zxcvbn/scoring.js",
      "index": 10,
      "index2": 7,
      "size": 25316,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
      "issuerId": 12,
      "issuerName": "./src/zxcvbn/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 12,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "module": "./src/zxcvbn/index.js",
          "moduleName": "./src/zxcvbn/index.js",
          "type": "cjs require",
          "userRequest": "./scoring",
          "loc": "13:14-34"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
          "module": "./src/zxcvbn/matching.js",
          "moduleName": "./src/zxcvbn/matching.js",
          "type": "cjs require",
          "userRequest": "./scoring",
          "loc": "7:14-34"
        },
        {
          "moduleId": 16,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/feedback.js",
          "module": "./src/zxcvbn/feedback.js",
          "moduleName": "./src/zxcvbn/feedback.js",
          "type": "cjs require",
          "userRequest": "./scoring",
          "loc": "17:14-34"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "'use strict';\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS202: Simplify dynamic range loops\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar k = void 0,\n    v = void 0;\nvar adjacency_graphs = require('./adjacency_graphs');\n\n// on qwerty, 'g' has degree 6, being adjacent to 'ftyhbv'. '\\' has degree 1.\n// this calculates the average over all keys.\nvar calc_average_degree = function calc_average_degree(graph) {\n  var average = 0;\n  for (var key in graph) {\n    var neighbors = graph[key];\n    average += Array.from(neighbors).filter(function (n) {\n      return n;\n    }).length;\n  }\n  average /= function () {\n    var result = [];\n    for (k in graph) {\n      v = graph[k];\n      result.push(k);\n    }\n    return result;\n  }().length;\n  return average;\n};\n\nvar BRUTEFORCE_CARDINALITY = 10;\nvar MIN_GUESSES_BEFORE_GROWING_SEQUENCE = 10000;\nvar MIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;\nvar MIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;\n\nvar scoring = {\n  nCk: function nCk(n, k) {\n    // http://blog.plover.com/math/choose.html\n    if (k > n) {\n      return 0;\n    }\n    if (k === 0) {\n      return 1;\n    }\n    var r = 1;\n    for (var d = 1, end = k, asc = 1 <= end; asc ? d <= end : d >= end; asc ? d++ : d--) {\n      r *= n;\n      r /= d;\n      n -= 1;\n    }\n    return r;\n  },\n  log10: function log10(n) {\n    return Math.log(n) / Math.log(10);\n  },\n  // IE doesn't support Math.log10 :(\n  log2: function log2(n) {\n    return Math.log(n) / Math.log(2);\n  },\n  factorial: function factorial(n) {\n    // unoptimized, called only on small n\n    if (n < 2) {\n      return 1;\n    }\n    var f = 1;\n    for (var i = 2, end = n, asc = 2 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n      f *= i;\n    }\n    return f;\n  },\n\n\n  // ------------------------------------------------------------------------------\n  // search --- most guessable match sequence -------------------------------------\n  // ------------------------------------------------------------------------------\n  //\n  // takes a sequence of overlapping matches, returns the non-overlapping sequence with\n  // minimum guesses. the following is a O(l_max * (n + m)) dynamic programming algorithm\n  // for a length-n password with m candidate matches. l_max is the maximum optimal\n  // sequence length spanning each prefix of the password. In practice it rarely exceeds 5 and the\n  // search terminates rapidly.\n  //\n  // the optimal \"minimum guesses\" sequence is here defined to be the sequence that\n  // minimizes the following function:\n  //\n  //    g = l! * Product(m.guesses for m in sequence) + D^(l - 1)\n  //\n  // where l is the length of the sequence.\n  //\n  // the factorial term is the number of ways to order l patterns.\n  //\n  // the D^(l-1) term is another length penalty, roughly capturing the idea that an\n  // attacker will try lower-length sequences first before trying length-l sequences.\n  //\n  // for example, consider a sequence that is date-repeat-dictionary.\n  //  - an attacker would need to try other date-repeat-dictionary combinations,\n  //    hence the product term.\n  //  - an attacker would need to try repeat-date-dictionary, dictionary-repeat-date,\n  //    ..., hence the factorial term.\n  //  - an attacker would also likely try length-1 (dictionary) and length-2 (dictionary-date)\n  //    sequences before length-3. assuming at minimum D guesses per pattern type,\n  //    D^(l-1) approximates Sum(D^i for i in [1..l-1]\n  //\n  // ------------------------------------------------------------------------------\n\n  most_guessable_match_sequence: function most_guessable_match_sequence(password, matches, _exclude_additive) {\n    var _this = this;\n\n    var asc4 = void 0,\n        end4 = void 0;\n    var guesses = void 0;\n    var _ = void 0;\n    if (_exclude_additive == null) {\n      _exclude_additive = false;\n    }\n    var n = password.length;\n\n    // partition matches into sublists according to ending index j\n    var matches_by_j = function () {\n      var asc = void 0,\n          end = void 0;\n      var result = [];\n      for (_ = 0, end = n, asc = 0 <= end; asc ? _ < end : _ > end; asc ? _++ : _--) {\n        result.push([]);\n      }\n      return result;\n    }();\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n      for (var _iterator = Array.from(matches)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n        var m = _step.value;\n\n        matches_by_j[m.j].push(m);\n      }\n      // small detail: for deterministic output, sort each sublist by i.\n    } catch (err) {\n      _didIteratorError = true;\n      _iteratorError = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion && _iterator.return) {\n          _iterator.return();\n        }\n      } finally {\n        if (_didIteratorError) {\n          throw _iteratorError;\n        }\n      }\n    }\n\n    var _iteratorNormalCompletion2 = true;\n    var _didIteratorError2 = false;\n    var _iteratorError2 = undefined;\n\n    try {\n      for (var _iterator2 = Array.from(matches_by_j)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n        var lst = _step2.value;\n\n        lst.sort(function (m1, m2) {\n          return m1.i - m2.i;\n        });\n      }\n    } catch (err) {\n      _didIteratorError2 = true;\n      _iteratorError2 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion2 && _iterator2.return) {\n          _iterator2.return();\n        }\n      } finally {\n        if (_didIteratorError2) {\n          throw _iteratorError2;\n        }\n      }\n    }\n\n    var optimal = {\n      // optimal.m[k][l] holds final match in the best length-l match sequence covering the\n      // password prefix up to k, inclusive.\n      // if there is no length-l sequence that scores better (fewer guesses) than\n      // a shorter match sequence spanning the same prefix, optimal.m[k][l] is undefined.\n      m: function () {\n        var asc1 = void 0,\n            end1 = void 0;\n        var result1 = [];\n        for (_ = 0, end1 = n, asc1 = 0 <= end1; asc1 ? _ < end1 : _ > end1; asc1 ? _++ : _--) {\n          result1.push({});\n        }\n        return result1;\n      }(),\n\n      // same structure as optimal.m -- holds the product term Prod(m.guesses for m in sequence).\n      // optimal.pi allows for fast (non-looping) updates to the minimization function.\n      pi: function () {\n        var asc2 = void 0,\n            end2 = void 0;\n        var result2 = [];\n        for (_ = 0, end2 = n, asc2 = 0 <= end2; asc2 ? _ < end2 : _ > end2; asc2 ? _++ : _--) {\n          result2.push({});\n        }\n        return result2;\n      }(),\n\n      // same structure as optimal.m -- holds the overall metric.\n      g: function () {\n        var asc3 = void 0,\n            end3 = void 0;\n        var result3 = [];\n        for (_ = 0, end3 = n, asc3 = 0 <= end3; asc3 ? _ < end3 : _ > end3; asc3 ? _++ : _--) {\n          result3.push({});\n        }\n        return result3;\n      }()\n    };\n\n    // helper: considers whether a length-l sequence ending at match m is better (fewer guesses)\n    // than previously encountered sequences, updating state if so.\n    var update = function update(m, l) {\n      k = m.j;\n      var pi = _this.estimate_guesses(m, password);\n      if (l > 1) {\n        // we're considering a length-l sequence ending with match m:\n        // obtain the product term in the minimization function by multiplying m's guesses\n        // by the product of the length-(l-1) sequence ending just before m, at m.i - 1.\n        pi *= optimal.pi[m.i - 1][l - 1];\n      }\n      // calculate the minimization func\n      var g = _this.factorial(l) * pi;\n      if (!_exclude_additive) {\n        g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);\n      }\n      // update state if new best.\n      // first see if any competing sequences covering this prefix, with l or fewer matches,\n      // fare better than this sequence. if so, skip it and return.\n      for (var competing_l in optimal.g[k]) {\n        var competing_g = optimal.g[k][competing_l];\n        if (competing_l > l) {\n          continue;\n        }\n        if (competing_g <= g) {\n          return;\n        }\n      }\n      // this sequence might be part of the final optimal sequence.\n      optimal.g[k][l] = g;\n      optimal.m[k][l] = m;\n      return optimal.pi[k][l] = pi;\n    };\n\n    // helper: evaluate bruteforce matches ending at k.\n    var bruteforce_update = function bruteforce_update(k) {\n      // see if a single bruteforce match spanning the k-prefix is optimal.\n      m = make_bruteforce_match(0, k);\n      update(m, 1);\n      return function () {\n        var result4 = [];\n        for (var i = 1, end4 = k, asc4 = 1 <= end4; asc4 ? i <= end4 : i >= end4; asc4 ? i++ : i--) {\n          // generate k bruteforce matches, spanning from (i=1, j=k) up to (i=k, j=k).\n          // see if adding these new matches to any of the sequences in optimal[i-1]\n          // leads to new bests.\n          m = make_bruteforce_match(i, k);\n          result4.push(function () {\n            var result5 = [];\n            var object = optimal.m[i - 1];\n            for (var l in object) {\n              var last_m = object[l];\n              l = parseInt(l);\n              // corner: an optimal sequence will never have two adjacent bruteforce matches.\n              // it is strictly better to have a single bruteforce match spanning the same region:\n              // same contribution to the guess product with a lower length.\n              // --> safe to skip those cases.\n              if (last_m.pattern === 'bruteforce') {\n                continue;\n              }\n              // try adding m to this length-l sequence.\n              result5.push(update(m, l + 1));\n            }\n            return result5;\n          }());\n        }\n        return result4;\n      }();\n    };\n\n    // helper: make bruteforce match objects spanning i to j, inclusive.\n    var make_bruteforce_match = function make_bruteforce_match(i, j) {\n      return {\n        pattern: 'bruteforce',\n        token: password.slice(i, +j + 1 || undefined),\n        i: i,\n        j: j\n      };\n    };\n\n    // helper: step backwards through optimal.m starting at the end,\n    // constructing the final optimal match sequence.\n    var unwind = function unwind(n) {\n      var optimal_match_sequence = [];\n      k = n - 1;\n      // find the final best sequence length and score\n      var l = undefined;\n      var g = Infinity;\n      for (var candidate_l in optimal.g[k]) {\n        var candidate_g = optimal.g[k][candidate_l];\n        if (candidate_g < g) {\n          l = candidate_l;\n          g = candidate_g;\n        }\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\n    for (k = 0, end4 = n, asc4 = 0 <= end4; asc4 ? k < end4 : k > end4; asc4 ? k++ : k--) {\n      var _iteratorNormalCompletion3 = true;\n      var _didIteratorError3 = false;\n      var _iteratorError3 = undefined;\n\n      try {\n        for (var _iterator3 = Array.from(matches_by_j[k])[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n          m = _step3.value;\n\n          if (m.i > 0) {\n            for (var 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      } catch (err) {\n        _didIteratorError3 = true;\n        _iteratorError3 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion3 && _iterator3.return) {\n            _iterator3.return();\n          }\n        } finally {\n          if (_didIteratorError3) {\n            throw _iteratorError3;\n          }\n        }\n      }\n\n      bruteforce_update(k);\n    }\n    var optimal_match_sequence = unwind(n);\n    var optimal_l = optimal_match_sequence.length;\n\n    // corner: empty password\n    if (password.length === 0) {\n      guesses = 1;\n    } else {\n      guesses = optimal.g[n - 1][optimal_l];\n    }\n\n    // final result object\n    return {\n      password: password,\n      guesses: guesses,\n      guesses_log10: this.log10(guesses),\n      sequence: optimal_match_sequence\n    };\n  },\n\n\n  // ------------------------------------------------------------------------------\n  // guess estimation -- one function per match pattern ---------------------------\n  // ------------------------------------------------------------------------------\n\n  estimate_guesses: function estimate_guesses(match, password) {\n    if (match.guesses != null) {\n      return match.guesses;\n    } // a match's guess estimate doesn't change. cache it.\n    var 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    var 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    var 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 bruteforce_guesses(match) {\n    var guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);\n    if (guesses === Number.POSITIVE_INFINITY) {\n      guesses = Number.MAX_VALUE;\n    }\n    // small detail: make bruteforce matches at minimum one guess bigger than smallest allowed\n    // submatch guesses, such that non-bruteforce submatches over the same [i..j] take precedence.\n    var 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 repeat_guesses(match) {\n    return match.base_guesses * match.repeat_count;\n  },\n  sequence_guesses: function sequence_guesses(match) {\n    var base_guesses = void 0;\n    var first_chr = match.token.charAt(0);\n    // lower guesses for obvious starting points\n    if (['a', 'A', 'z', 'Z', '0', '1', '9'].includes(first_chr)) {\n      base_guesses = 4;\n    } else {\n      if (first_chr.match(/\\d/)) {\n        base_guesses = 10; // digits\n      } else {\n        // could give a higher base for uppercase,\n        // assigning 26 to both upper and lower sequences is more conservative.\n        base_guesses = 26;\n      }\n    }\n    if (!match.ascending) {\n      // need to try a descending sequence in addition to every ascending sequence ->\n      // 2x guesses\n      base_guesses *= 2;\n    }\n    return base_guesses * match.token.length;\n  },\n\n\n  MIN_YEAR_SPACE: 20,\n  REFERENCE_YEAR: new Date().getFullYear(),\n\n  regex_guesses: function regex_guesses(match) {\n    var 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          // conservative estimate of year space: num years from REFERENCE_YEAR.\n          // if year is close to REFERENCE_YEAR, estimate a year space of MIN_YEAR_SPACE.\n          var 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 date_guesses(match) {\n    // base guesses: (year distance from REFERENCE_YEAR) * num_days * num_years\n    var year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);\n    var guesses = year_space * 365;\n    // add factor of 4 for separator selection (one of ~4 choices)\n    if (match.separator) {\n      guesses *= 4;\n    }\n    return guesses;\n  },\n\n\n  KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),\n  // slightly different for keypad/mac keypad, but close enough\n  KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),\n\n  KEYBOARD_STARTING_POSITIONS: function () {\n    var result = [];\n    for (k in adjacency_graphs.qwerty) {\n      v = adjacency_graphs.qwerty[k];\n      result.push(k);\n    }\n    return result;\n  }().length,\n  KEYPAD_STARTING_POSITIONS: function () {\n    var result1 = [];\n    for (k in adjacency_graphs.keypad) {\n      v = adjacency_graphs.keypad[k];\n      result1.push(k);\n    }\n    return result1;\n  }().length,\n\n  spatial_guesses: function spatial_guesses(match) {\n    var d = void 0,\n        i = void 0,\n        s = void 0;\n    var asc = void 0,\n        end = void 0;\n    if (['qwerty', 'dvorak'].includes(match.graph)) {\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    var guesses = 0;\n    var L = match.token.length;\n    var t = match.turns;\n    // estimate the number of possible patterns w/ length L or less with t turns or less.\n    for (i = 2, end = L, asc = 2 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n      var possible_turns = Math.min(t, i - 1);\n      for (var j = 1, end1 = possible_turns, asc1 = 1 <= end1; asc1 ? j <= end1 : j >= end1; asc1 ? j++ : j--) {\n        guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);\n      }\n    }\n    // add extra guesses for shifted keys. (% instead of 5, A instead of a.)\n    // math is similar to extra guesses of l33t substitutions in dictionary matches.\n    if (match.shifted_count) {\n      var S = match.shifted_count;\n      var U = match.token.length - match.shifted_count; // unshifted count\n      if (S === 0 || U === 0) {\n        guesses *= 2;\n      } else {\n        var asc2 = void 0,\n            end2 = void 0;\n        var shifted_variations = 0;\n        for (i = 1, end2 = Math.min(S, U), asc2 = 1 <= end2; asc2 ? i <= end2 : i >= end2; asc2 ? i++ : i--) {\n          shifted_variations += this.nCk(S + U, i);\n        }\n        guesses *= shifted_variations;\n      }\n    }\n    return guesses;\n  },\n  dictionary_guesses: function dictionary_guesses(match) {\n    match.base_guesses = match.rank; // keep these as properties for display purposes\n    match.uppercase_variations = this.uppercase_variations(match);\n    match.l33t_variations = this.l33t_variations(match);\n    var reversed_variations = match.reversed && 2 || 1;\n    return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;\n  },\n\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\n  uppercase_variations: function uppercase_variations(match) {\n    var chr = void 0;\n    var word = match.token;\n    if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {\n      return 1;\n    }\n    // a capitalized word is the most common capitalization scheme,\n    // so it only doubles the search space (uncapitalized + capitalized).\n    // allcaps and end-capitalized are common enough too, underestimate as 2x factor to be safe.\n    var _arr = [this.START_UPPER, this.END_UPPER, this.ALL_UPPER];\n    for (var _i = 0; _i < _arr.length; _i++) {\n      var regex = _arr[_i];\n      if (word.match(regex)) {\n        return 2;\n      }\n    }\n    // otherwise calculate the number of ways to capitalize U+L uppercase+lowercase letters\n    // with U uppercase letters or less. or, if there's more uppercase than lower (for eg. PASSwORD),\n    // the number of ways to lowercase U+L letters with L lowercase letters or less.\n    var U = function () {\n      var result2 = [];\n      var _iteratorNormalCompletion4 = true;\n      var _didIteratorError4 = false;\n      var _iteratorError4 = undefined;\n\n      try {\n        for (var _iterator4 = Array.from(word.split(''))[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n          chr = _step4.value;\n          if (chr.match(/[A-Z]/)) {\n            result2.push(chr);\n          }\n        }\n      } catch (err) {\n        _didIteratorError4 = true;\n        _iteratorError4 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion4 && _iterator4.return) {\n            _iterator4.return();\n          }\n        } finally {\n          if (_didIteratorError4) {\n            throw _iteratorError4;\n          }\n        }\n      }\n\n      return result2;\n    }().length;\n    var L = function () {\n      var result3 = [];\n      var _iteratorNormalCompletion5 = true;\n      var _didIteratorError5 = false;\n      var _iteratorError5 = undefined;\n\n      try {\n        for (var _iterator5 = Array.from(word.split(''))[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n          chr = _step5.value;\n          if (chr.match(/[a-z]/)) {\n            result3.push(chr);\n          }\n        }\n      } catch (err) {\n        _didIteratorError5 = true;\n        _iteratorError5 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion5 && _iterator5.return) {\n            _iterator5.return();\n          }\n        } finally {\n          if (_didIteratorError5) {\n            throw _iteratorError5;\n          }\n        }\n      }\n\n      return result3;\n    }().length;\n    var variations = 0;\n    for (var i = 1, end = Math.min(U, L), asc = 1 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n      variations += this.nCk(U + L, i);\n    }\n    return variations;\n  },\n  l33t_variations: function l33t_variations(match) {\n    var chr = void 0;\n    if (!match.l33t) {\n      return 1;\n    }\n    var variations = 1;\n    for (var subbed in match.sub) {\n      // lower-case match.token before calculating: capitalization shouldn't affect l33t calc.\n      var unsubbed = match.sub[subbed];\n      var chrs = match.token.toLowerCase().split('');\n      var S = function () {\n        var result2 = [];\n        var _iteratorNormalCompletion6 = true;\n        var _didIteratorError6 = false;\n        var _iteratorError6 = undefined;\n\n        try {\n          for (var _iterator6 = Array.from(chrs)[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n            chr = _step6.value;\n            if (chr === subbed) {\n              result2.push(chr);\n            }\n          }\n        } catch (err) {\n          _didIteratorError6 = true;\n          _iteratorError6 = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion6 && _iterator6.return) {\n              _iterator6.return();\n            }\n          } finally {\n            if (_didIteratorError6) {\n              throw _iteratorError6;\n            }\n          }\n        }\n\n        return result2;\n      }().length; // num of subbed chars\n      var U = function () {\n        var result3 = [];\n        var _iteratorNormalCompletion7 = true;\n        var _didIteratorError7 = false;\n        var _iteratorError7 = undefined;\n\n        try {\n          for (var _iterator7 = Array.from(chrs)[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n            chr = _step7.value;\n            if (chr === unsubbed) {\n              result3.push(chr);\n            }\n          }\n        } catch (err) {\n          _didIteratorError7 = true;\n          _iteratorError7 = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion7 && _iterator7.return) {\n              _iterator7.return();\n            }\n          } finally {\n            if (_didIteratorError7) {\n              throw _iteratorError7;\n            }\n          }\n        }\n\n        return result3;\n      }().length; // num of unsubbed chars\n      if (S === 0 || U === 0) {\n        // for this sub, password is either fully subbed (444) or fully unsubbed (aaa)\n        // treat that as doubling the space (attacker needs to try fully subbed chars in addition to\n        // unsubbed.)\n        variations *= 2;\n      } else {\n        // this case is similar to capitalization:\n        // with aa44a, U = 3, S = 2, attacker needs to try unsubbed + one sub + two subs\n        var p = Math.min(U, S);\n        var possibilities = 0;\n        for (var i = 1, end = p, asc = 1 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n          possibilities += this.nCk(U + S, i);\n        }\n        variations *= possibilities;\n      }\n    }\n    return variations;\n  }\n};\n\n// utilities --------------------------------------------------------------------\n\nmodule.exports = scoring;"
    },
    {
      "id": 1,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/process/browser.js",
      "name": "./node_modules/process/browser.js",
      "index": 15,
      "index2": 13,
      "size": 5418,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
      "issuerId": 17,
      "issuerName": "./node_modules/prop-types/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 17,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
          "module": "./node_modules/prop-types/index.js",
          "moduleName": "./node_modules/prop-types/index.js",
          "type": "cjs require",
          "userRequest": "process",
          "loc": "1:0-34"
        },
        {
          "moduleId": 18,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "type": "cjs require",
          "userRequest": "process",
          "loc": "1:0-34"
        },
        {
          "moduleId": 20,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/checkPropTypes.js",
          "module": "./node_modules/prop-types/checkPropTypes.js",
          "moduleName": "./node_modules/prop-types/checkPropTypes.js",
          "type": "cjs require",
          "userRequest": "process",
          "loc": "1:0-34"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n"
    },
    {
      "id": 2,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/lib/ReactPropTypesSecret.js",
      "name": "./node_modules/prop-types/lib/ReactPropTypesSecret.js",
      "index": 18,
      "index2": 15,
      "size": 314,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
      "issuerId": 18,
      "issuerName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 18,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "type": "cjs require",
          "userRequest": "./lib/ReactPropTypesSecret",
          "loc": "12:27-64"
        },
        {
          "moduleId": 20,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/checkPropTypes.js",
          "module": "./node_modules/prop-types/checkPropTypes.js",
          "moduleName": "./node_modules/prop-types/checkPropTypes.js",
          "type": "cjs require",
          "userRequest": "./lib/ReactPropTypesSecret",
          "loc": "13:29-66"
        },
        {
          "moduleId": 21,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithThrowingShims.js",
          "module": "./node_modules/prop-types/factoryWithThrowingShims.js",
          "moduleName": "./node_modules/prop-types/factoryWithThrowingShims.js",
          "type": "cjs require",
          "userRequest": "./lib/ReactPropTypesSecret",
          "loc": "10:27-64"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 3,
      "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n"
    },
    {
      "id": 3,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/utils.js",
      "name": "./src/hashes/utils.js",
      "index": 22,
      "index2": 20,
      "size": 898,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha1.js",
      "issuerId": 22,
      "issuerName": "./src/hashes/sha1.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 22,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha1.js",
          "module": "./src/hashes/sha1.js",
          "moduleName": "./src/hashes/sha1.js",
          "type": "cjs require",
          "userRequest": "./utils",
          "loc": "7:13-31"
        },
        {
          "moduleId": 23,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha256.js",
          "module": "./src/hashes/sha256.js",
          "moduleName": "./src/hashes/sha256.js",
          "type": "cjs require",
          "userRequest": "./utils",
          "loc": "7:13-31"
        },
        {
          "moduleId": 24,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/md5.js",
          "module": "./src/hashes/md5.js",
          "moduleName": "./src/hashes/md5.js",
          "type": "cjs require",
          "userRequest": "./utils",
          "loc": "228:13-31"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = {\n    /**\n     * Rotates right (circular right shift) value x by n positions [§3.2.4].\n     * @private\n     */\n    ROTR: function ROTR(n, x) {\n        return x >>> n | x << 32 - n;\n    },\n\n    /**\n     * Rotates left (circular left shift) value x by n positions [§3.2.5].\n     * @private\n     */\n    ROTL: function ROTL(x, n) {\n        return x << n | x >>> 32 - n;\n    },\n\n    /**\n     * Hexadecimal representation of a number.\n     * @private\n     */\n    toHexStr: function toHexStr(n) {\n        // note can't use toString(16) as it is implementation-dependant,\n        // and in IE returns signed numbers when used on full words\n        var s = \"\",\n            v;\n        for (var i = 7; i >= 0; i--) {\n            v = n >>> i * 4 & 0xf;s += v.toString(16);\n        }\n        return s;\n    }\n\n};"
    },
    {
      "id": 4,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/adjacency_graphs.js",
      "name": "./src/zxcvbn/adjacency_graphs.js",
      "index": 9,
      "index2": 6,
      "size": 9849,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
      "issuerId": 13,
      "issuerName": "./src/zxcvbn/matching.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 0,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/scoring.js",
          "module": "./src/zxcvbn/scoring.js",
          "moduleName": "./src/zxcvbn/scoring.js",
          "type": "cjs require",
          "userRequest": "./adjacency_graphs",
          "loc": "14:23-52"
        },
        {
          "moduleId": 13,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
          "module": "./src/zxcvbn/matching.js",
          "moduleName": "./src/zxcvbn/matching.js",
          "type": "cjs require",
          "userRequest": "./adjacency_graphs",
          "loc": "6:23-52"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 3,
      "source": "\"use strict\";\n\n// generated by scripts/build_keyboard_adjacency_graphs.py\nvar adjacency_graphs = {\n  qwerty: { \"!\": [\"`~\", null, null, \"2@\", \"qQ\", null], \"\\\"\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"], \"#\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"], \"$\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"], \"%\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"], \"&\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"], \"'\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"], \"(\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"], \")\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"], \"*\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"], \"+\": [\"-_\", null, null, null, \"]}\", \"[{\"], \",\": [\"mM\", \"kK\", \"lL\", \".>\", null, null], \"-\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"], \".\": [\",<\", \"lL\", \";:\", \"/?\", null, null], \"/\": [\".>\", \";:\", \"'\\\"\", null, null, null], \"0\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"], \"1\": [\"`~\", null, null, \"2@\", \"qQ\", null], \"2\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"], \"3\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"], \"4\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"], \"5\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"], \"6\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"], \"7\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"], \"8\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"], \"9\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"], \":\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"], \";\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"], \"<\": [\"mM\", \"kK\", \"lL\", \".>\", null, null], \"=\": [\"-_\", null, null, null, \"]}\", \"[{\"], \">\": [\",<\", \"lL\", \";:\", \"/?\", null, null], \"?\": [\".>\", \";:\", \"'\\\"\", null, null, null], \"@\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"], \"A\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null], \"B\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null], \"C\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null], \"D\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"], \"E\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"], \"F\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"], \"G\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"], \"H\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"], \"I\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"], \"J\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"], \"K\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"], \"L\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"], \"M\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null], \"N\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null], \"O\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"], \"P\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"], \"Q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null], \"R\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"], \"S\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"], \"T\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"], \"U\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"], \"V\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null], \"W\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"], \"X\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null], \"Y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"], \"Z\": [null, \"aA\", \"sS\", \"xX\", null, null], \"[\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"], \"\\\\\": [\"]}\", null, null, null, null, null], \"]\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"], \"^\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"], \"_\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"], \"`\": [null, null, null, \"1!\", null, null], \"a\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null], \"b\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null], \"c\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null], \"d\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"], \"e\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"], \"f\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"], \"g\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"], \"h\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"], \"i\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"], \"j\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"], \"k\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"], \"l\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"], \"m\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null], \"n\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null], \"o\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"], \"p\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"], \"q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null], \"r\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"], \"s\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"], \"t\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"], \"u\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"], \"v\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null], \"w\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"], \"x\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null], \"y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"], \"z\": [null, \"aA\", \"sS\", \"xX\", null, null], \"{\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"], \"|\": [\"]}\", null, null, null, null, null], \"}\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"], \"~\": [null, null, null, \"1!\", null, null] },\n  dvorak: { \"!\": [\"`~\", null, null, \"2@\", \"'\\\"\", null], \"\\\"\": [null, \"1!\", \"2@\", \",<\", \"aA\", null], \"#\": [\"2@\", null, null, \"4$\", \".>\", \",<\"], \"$\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"], \"%\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"], \"&\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"], \"'\": [null, \"1!\", \"2@\", \",<\", \"aA\", null], \"(\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"], \")\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"], \"*\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"], \"+\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"], \",\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"], \"-\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"], \".\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"], \"/\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"], \"0\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"], \"1\": [\"`~\", null, null, \"2@\", \"'\\\"\", null], \"2\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"], \"3\": [\"2@\", null, null, \"4$\", \".>\", \",<\"], \"4\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"], \"5\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"], \"6\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"], \"7\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"], \"8\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"], \"9\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"], \":\": [null, \"aA\", \"oO\", \"qQ\", null, null], \";\": [null, \"aA\", \"oO\", \"qQ\", null, null], \"<\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"], \"=\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"], \">\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"], \"?\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"], \"@\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"], \"A\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null], \"B\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null], \"C\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"], \"D\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"], \"E\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"], \"F\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"], \"G\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"], \"H\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"], \"I\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"], \"J\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null], \"K\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null], \"L\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"], \"M\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null], \"N\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"], \"O\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"], \"P\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"], \"Q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null], \"R\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"], \"S\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"], \"T\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"], \"U\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"], \"V\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null], \"W\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null], \"X\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null], \"Y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"], \"Z\": [\"vV\", \"sS\", \"-_\", null, null, null], \"[\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"], \"\\\\\": [\"=+\", null, null, null, null, null], \"]\": [\"[{\", null, null, null, \"=+\", \"/?\"], \"^\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"], \"_\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"], \"`\": [null, null, null, \"1!\", null, null], \"a\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null], \"b\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null], \"c\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"], \"d\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"], \"e\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"], \"f\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"], \"g\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"], \"h\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"], \"i\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"], \"j\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null], \"k\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null], \"l\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"], \"m\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null], \"n\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"], \"o\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"], \"p\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"], \"q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null], \"r\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"], \"s\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"], \"t\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"], \"u\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"], \"v\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null], \"w\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null], \"x\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null], \"y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"], \"z\": [\"vV\", \"sS\", \"-_\", null, null, null], \"{\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"], \"|\": [\"=+\", null, null, null, null, null], \"}\": [\"[{\", null, null, null, \"=+\", \"/?\"], \"~\": [null, null, null, \"1!\", null, null] },\n  keypad: { \"*\": [\"/\", null, null, null, \"-\", \"+\", \"9\", \"8\"], \"+\": [\"9\", \"*\", \"-\", null, null, null, null, \"6\"], \"-\": [\"*\", null, null, null, null, null, \"+\", \"9\"], \".\": [\"0\", \"2\", \"3\", null, null, null, null, null], \"/\": [null, null, null, null, \"*\", \"9\", \"8\", \"7\"], \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null], \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null], \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null], \"3\": [\"2\", \"5\", \"6\", null, null, null, \".\", \"0\"], \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null], \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"], \"6\": [\"5\", \"8\", \"9\", \"+\", null, null, \"3\", \"2\"], \"7\": [null, null, null, \"/\", \"8\", \"5\", \"4\", null], \"8\": [\"7\", null, \"/\", \"*\", \"9\", \"6\", \"5\", \"4\"], \"9\": [\"8\", \"/\", \"*\", \"-\", \"+\", null, \"6\", \"5\"] },\n  mac_keypad: { \"*\": [\"/\", null, null, null, null, null, \"-\", \"9\"], \"+\": [\"6\", \"9\", \"-\", null, null, null, null, \"3\"], \"-\": [\"9\", \"/\", \"*\", null, null, null, \"+\", \"6\"], \".\": [\"0\", \"2\", \"3\", null, null, null, null, null], \"/\": [\"=\", null, null, null, \"*\", \"-\", \"9\", \"8\"], \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null], \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null], \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null], \"3\": [\"2\", \"5\", \"6\", \"+\", null, null, \".\", \"0\"], \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null], \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"], \"6\": [\"5\", \"8\", \"9\", \"-\", \"+\", null, \"3\", \"2\"], \"7\": [null, null, null, \"=\", \"8\", \"5\", \"4\", null], \"8\": [\"7\", null, \"=\", \"/\", \"9\", \"6\", \"5\", \"4\"], \"9\": [\"8\", \"=\", \"/\", \"*\", \"-\", \"+\", \"6\", \"5\"], \"=\": [null, null, null, null, \"/\", \"9\", \"8\", \"7\"] }\n};\n\nmodule.exports = adjacency_graphs;"
    },
    {
      "id": 5,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/strings/enzoic_strings.js",
      "name": "./src/strings/enzoic_strings.js",
      "index": 13,
      "index2": 10,
      "size": 2911,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "./strings/enzoic_strings",
          "loc": "23:22-57"
        },
        {
          "moduleId": 16,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/feedback.js",
          "module": "./src/zxcvbn/feedback.js",
          "moduleName": "./src/zxcvbn/feedback.js",
          "type": "cjs require",
          "userRequest": "../strings/enzoic_strings",
          "loc": "3:22-58"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = {\n    \"strengthRatings\": [\"Hacked\", \"Very Weak\", \"Weak\", \"Medium\", \"Strong\", \"Very Strong\"],\n    \"enterAPassword\": \"Choose a password\",\n    \"passwordStrength\": \"Password Strength\",\n    \"poweredBy\": \"powered by\",\n    \"breachedPasswordMessage\": \"This password is known to hackers and <b><u>should not be used</u></b>. It was exposed publicly in one or more of the data breaches in recent years (LinkedIn, MySpace, Yahoo, etc.)<br/><br/>We <b><u>strongly</u></b> recommend you choose a different password and discontinue usage of this one.\",\n    \"hackedPasswordMessage\": \"This password is known to hackers and <b><u>should not be used</u></b>. It is found in common password cracking dictionaries.<br/><br/>We <b><u>strongly</u></b> recommend you choose a different password and discontinue usage of this one.\",\n    \"suggestion\": \"Suggestions\",\n    \"suggestions\": {\n        \"defaultFeedback\": \"Use a few words, avoid common phrases\",\n        \"defaultFeedback2\": \"No need for symbols, digits, or uppercase letters\",\n        \"addWord\": \"Add another word or two. Uncommon words are better.\",\n        \"rowsOfKeys\": \"Straight rows of keys are easy to guess\",\n        \"shortKeyboardPatterns\": \"Short keyboard patterns are easy to guess\",\n        \"longerKeyboardPattern\": \"Use a longer keyboard pattern with more turns\",\n        \"shortRepeats\": \"Repeats like \\\"aaa\\\" are easy to guess\",\n        \"longRepeats\": \"Repeats like \\\"abcabcabc\\\" are only slightly harder to guess than \\\"abc\\\"\",\n        \"avoidRepeatedWords\": \"Avoid repeated words and characters\",\n        \"avoidSequences\": \"Sequences like abc or 6543 are easy to guess\",\n        \"avoidSequences2\": \"Avoid sequences\",\n        \"recentYears\": \"Recent years are easy to guess\",\n        \"avoidRecentYears\": \"Avoid recent years\",\n        \"avoidAssociatedYears\": \"Avoid years that are associated with you\",\n        \"datesAreEasy\": \"Dates are often easy to guess\",\n        \"avoidAssociatedDates\": \"Avoid dates and years that are associated with you\",\n        \"similarToCommon\": \"This is similar to a commonly used password\",\n        \"topTenPassword\": \"This is a top-10 common password\",\n        \"top100Password\": \"This is a top-100 common password\",\n        \"veryCommonPassword\": \"This is a very common password\",\n        \"wordByItself\": \"A word by itself is easy to guess\",\n        \"namesByThemselves\": \"Names and surnames by themselves are easy to guess\",\n        \"commonNamesAndSurnames\": \"Common names and surnames are easy to guess\",\n        \"capitalization\": \"Capitalization doesn't help very much\",\n        \"allUpperCase\": \"All-uppercase is almost as easy to guess as all-lowercase\",\n        \"reversedWords\": \"Reversed words aren't much harder to guess\",\n        \"predictableSubs\": \"Predictable substitutions like '@' instead of 'a' don't help very much\"\n    }\n};"
    },
    {
      "id": 6,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "name": "./src/index.js",
      "index": 0,
      "index2": 26,
      "size": 17525,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": null,
      "issuerId": null,
      "issuerName": null,
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 0,
      "source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nrequire('./style.css');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _zxcvbn = require('./zxcvbn');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _enzoic_strings = require('./strings/enzoic_strings');\n\nvar _enzoic_strings2 = _interopRequireDefault(_enzoic_strings);\n\nvar _sha = require('./hashes/sha1');\n\nvar _sha2 = _interopRequireDefault(_sha);\n\nvar _sha3 = require('./hashes/sha256');\n\nvar _sha4 = _interopRequireDefault(_sha3);\n\nvar _md = require('./hashes/md5');\n\nvar _md2 = _interopRequireDefault(_md);\n\nvar _warning = require('../assets/warning.png');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _info = require('../assets/info.png');\n\nvar _info2 = _interopRequireDefault(_info);\n\nvar _reactTooltip = require('react-tooltip');\n\nvar _reactTooltip2 = _interopRequireDefault(_reactTooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Enzoic = function (_Component) {\n    _inherits(Enzoic, _Component);\n\n    function Enzoic(props) {\n        _classCallCheck(this, Enzoic);\n\n        var _this = _possibleConstructorReturn(this, (Enzoic.__proto__ || Object.getPrototypeOf(Enzoic)).call(this, props));\n\n        _this.state = {\n            score: 1,\n            zxcvbnScore: 1,\n            zxcvbnResult: null,\n            isValid: false,\n            password: '',\n            hackedPassword: false,\n            breachedPassword: false,\n            loading: false\n        };\n\n\n        _this.clear = _this.clear.bind(_this);\n        _this.handleChange = _this.handleChange.bind(_this);\n        _this.checkPasswordWhenReady = _this.checkPasswordWhenReady.bind(_this);\n        _this.checkPassword = _this.checkPassword.bind(_this);\n        _this.checkPasswordAgainstEnzoic = _this.checkPasswordAgainstEnzoic.bind(_this);\n        _this.isTooShort = _this.isTooShort.bind(_this);\n\n        _this.apiURL = 'https://api.enzoic.com';\n        _this.rootDomain = Enzoic.getRootDomain(window.location.hostname);\n        return _this;\n    }\n\n    _createClass(Enzoic, [{\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n            var defaultValue = this.props.defaultValue;\n\n\n            if (defaultValue.length > 0) {\n                this.setState({ password: defaultValue }, this.handleChange.bind(this, { target: { value: defaultValue } }));\n            }\n        }\n    }, {\n        key: 'clear',\n        value: function clear() {\n            var _this2 = this;\n\n            var changeCallback = this.props.changeCallback;\n\n\n            this.setState({\n                score: 1,\n                zxcvbnScore: 1,\n                isValid: false,\n                password: '',\n                loading: false\n            }, function () {\n                if (changeCallback !== null) {\n                    changeCallback(_this2.state);\n                }\n            });\n        }\n    }, {\n        key: 'handleChange',\n        value: function handleChange(event) {\n            var _this3 = this;\n\n            var _props = this.props,\n                changeCallback = _props.changeCallback,\n                minScore = _props.minScore;\n\n            var password = event.target.value;\n\n            this.setState({\n                password: password\n            });\n\n            if (this.isTooShort(password) === false) {\n                this.checkPasswordWhenReady(password);\n            } else {\n                // if password is too, short set a score of 1\n                var score = 1;\n\n                this.setState({\n                    isValid: score >= minScore,\n                    score: score,\n                    zxcvbnScore: 1,\n                    zxcvbnResult: null,\n                    loading: false\n                }, function () {\n                    if (changeCallback !== null) {\n                        changeCallback(_this3.state, null);\n                    }\n                });\n            }\n        }\n    }, {\n        key: 'checkPasswordWhenReady',\n        value: function checkPasswordWhenReady(passwordToCheck) {\n            // wait for zxcvbn to be loaded\n            if ((0, _zxcvbn.isZxcvbnLoaded)() === true) {\n                this.checkPassword(passwordToCheck);\n            } else {\n                setTimeout(this.checkPasswordWhenReady.bind(this, passwordToCheck), 500);\n\n                this.setState({\n                    loading: true\n                });\n            }\n        }\n    }, {\n        key: 'checkPassword',\n        value: function checkPassword(passwordToCheck) {\n            if (this.checkTimer) {\n                clearTimeout(this.checkTimer);\n            }\n            this.checkTimer = setTimeout(this.checkPasswordAgainstEnzoic.bind(this, passwordToCheck), 500);\n\n            var zxcvbnResult = (0, _zxcvbn.zxcvbn)(passwordToCheck, this.props.userInputs);\n            var zxcvbnScore = zxcvbnResult.score + 1;\n\n            // store zxcvbn results and set state to loading while Enzoic check is processing\n            this.setState({\n                isValid: this.state.score >= this.props.minScore,\n                score: this.state.score,\n                zxcvbnScore: zxcvbnScore,\n                zxcvbnResult: zxcvbnResult,\n                loading: true\n            });\n        }\n    }, {\n        key: 'checkPasswordAgainstEnzoic',\n        value: function checkPasswordAgainstEnzoic(passwordToCheck) {\n            var _this4 = this;\n\n            // if we already had an outstanding request in progress, cancel\n            if (this.ppCurrentRequest) {\n                this.ppCurrentRequest.abort();\n                this.ppCurrentRequest = undefined;\n            }\n\n            if (passwordToCheck) {\n                var sha2hash = _sha4.default.hash(passwordToCheck);\n                var sha1hash = _sha2.default.hash(passwordToCheck);\n                var md5hash = (0, _md2.default)(passwordToCheck);\n                var sha2partial = sha2hash.substr(0, 10);\n                var sha1partial = sha1hash.substr(0, 10);\n                var md5partial = md5hash.substr(0, 10);\n\n                this.ppCurrentRequest = new XMLHttpRequest();\n                this.ppCurrentRequest.onreadystatechange = function () {\n                    if (_this4.ppCurrentRequest && _this4.ppCurrentRequest.readyState === 4) {\n                        var found = false;\n\n                        if (_this4.ppCurrentRequest.status === 200) {\n                            try {\n                                // loop through and see if we have a match\n                                var result = JSON.parse(_this4.ppCurrentRequest.response);\n                                if (result.candidates) {\n                                    for (var i = 0; i < result.candidates.length; i++) {\n                                        if (result.candidates[i].md5 === md5hash || result.candidates[i].sha1 === sha1hash || result.candidates[i].sha256 === sha2hash) {\n                                            _this4.setState({\n                                                score: 0,\n                                                isValid: false,\n                                                loading: false\n                                            }, function () {\n                                                if (_this4.props.changeCallback !== null) {\n                                                    _this4.props.changeCallback(_this4.state, _this4.state.zxcvbnResult);\n                                                }\n                                            });\n                                            found = true;\n                                            break;\n                                        }\n                                    }\n                                }\n                            } catch (err) {\n                                console.error('Unexpected response from PP API: ' + err);\n                            }\n                        }\n\n                        if (found === false) {\n                            _this4.setState({\n                                loading: false,\n                                score: _this4.state.zxcvbnScore,\n                                isValid: _this4.state.zxcvbnScore >= _this4.props.minScore\n                            }, function () {\n                                if (_this4.props.changeCallback !== null) {\n                                    _this4.props.changeCallback(_this4.state, _this4.state.zxcvbnResult);\n                                }\n                            });\n                        }\n                        _this4.ppCurrentRequest = undefined;\n                    }\n                };\n\n                this.ppCurrentRequest.open('GET', this.apiURL + '/passwords?partial_sha2=' + sha2partial + '&partial_sha1=' + sha1partial + '&partial_md5=' + md5partial, true);\n                this.ppCurrentRequest.setRequestHeader('Orgin', this.rootDomain);\n                this.ppCurrentRequest.timeout = 1500;\n                this.ppCurrentRequest.send();\n            } else {\n                this.setState({ loading: false });\n            }\n        }\n    }, {\n        key: 'isTooShort',\n        value: function isTooShort(password) {\n            return password.length < this.props.minLength;\n        }\n    }, {\n        key: 'render',\n        value: function render() {\n            var _state = this.state,\n                score = _state.score,\n                password = _state.password,\n                isValid = _state.isValid,\n                loading = _state.loading;\n            var _props2 = this.props,\n                scoreWords = _props2.scoreWords,\n                inputProps = _props2.inputProps,\n                className = _props2.className,\n                style = _props2.style,\n                tooShortWord = _props2.tooShortWord;\n\n\n            var inputClasses = ['Enzoic-input'];\n            var wrapperClasses = ['Enzoic', className ? className : '', password.length > 0 && loading === false ? 'is-strength-' + score : '', loading ? 'loading' : ''];\n\n            var strengthDesc = loading === true ? _react2.default.createElement('div', { className: 'Enzoic-spinner' }) : //(<img src={loader} style={{display: 'inline-block'}}/>)\n            this.isTooShort(password) ? tooShortWord : scoreWords[score];\n\n            var tooltip = Enzoic.getScoreTooltip(score, this.state.zxcvbnResult);\n\n            if (isValid === true) {\n                inputClasses.push('is-password-valid');\n            } else if (password.length > 0) {\n                inputClasses.push('is-password-invalid');\n            }\n\n            if (inputProps && inputProps.className) {\n                inputClasses.push(inputProps.className);\n            }\n\n            return _react2.default.createElement(\n                'div',\n                { className: wrapperClasses.join(' '), style: style },\n                _react2.default.createElement('input', _extends({\n                    type: 'password'\n                }, inputProps, {\n                    className: inputClasses.join(' '),\n                    onChange: this.handleChange,\n                    value: password\n                })),\n                _react2.default.createElement('div', { className: 'Enzoic-strength-bar' }),\n                _react2.default.createElement(\n                    'span',\n                    { 'data-tip': tooltip, 'data-html': true, 'data-border': true,\n                        className: 'Enzoic-strength-desc' },\n                    strengthDesc\n                ),\n                _react2.default.createElement(_reactTooltip2.default, null)\n            );\n        }\n    }], [{\n        key: 'getRootDomain',\n        value: function getRootDomain(pageHost) {\n            var domain = pageHost;\n            if (pageHost.indexOf('.') > 0) {\n                var tldn = domain.substring(domain.lastIndexOf('.') + 1);\n\n                if (isNaN(tldn)) {\n                    // check for IP address\n                    var temp = domain.substring(0, domain.lastIndexOf('.'));\n                    if (temp.indexOf('.')) {\n                        temp = temp.substring(temp.lastIndexOf('.') + 1);\n                    }\n\n                    domain = temp + '.' + tldn;\n                }\n            }\n\n            // strip off port, if present\n            if (domain.indexOf(':') > 0) {\n                domain = domain.substring(0, domain.indexOf(':'));\n            }\n\n            return domain;\n        }\n    }, {\n        key: 'getMessageFromZXCVBNResult',\n        value: function getMessageFromZXCVBNResult(zxcvbnresult) {\n            var message = '';\n\n            if (zxcvbnresult && zxcvbnresult.feedback) {\n                message = '<br/>';\n                if (zxcvbnresult.feedback.warning) {\n                    message = '<br/>' + zxcvbnresult.feedback.warning + '<br/><br/>';\n                }\n\n                if (zxcvbnresult.feedback.suggestions.length > 0) {\n                    message += _enzoic_strings2.default.suggestion + \":<ul>\";\n                    for (var i = 0; i < zxcvbnresult.feedback.suggestions.length; i++) {\n                        message += \"<li>\" + zxcvbnresult.feedback.suggestions[i] + \"</li>\";\n                    }\n                    message += \"</ul>\";\n                }\n            }\n\n            return message;\n        }\n    }, {\n        key: 'getScoreTooltip',\n        value: function getScoreTooltip(score, zxcvbnresult) {\n            if (score === 0) {\n                return _enzoic_strings2.default.breachedPasswordMessage;\n            } else if (score < 4) {\n                return Enzoic.getMessageFromZXCVBNResult(zxcvbnresult);\n            }\n            return '';\n        }\n    }]);\n\n    return Enzoic;\n}(_react.Component);\n\nEnzoic.propTypes = {\n    changeCallback: _propTypes2.default.func,\n    className: _propTypes2.default.string,\n    defaultValue: _propTypes2.default.string,\n    inputProps: _propTypes2.default.object,\n    minLength: _propTypes2.default.number,\n    minScore: _propTypes2.default.number,\n    scoreWords: _propTypes2.default.array,\n    style: _propTypes2.default.object,\n    tooShortWord: _propTypes2.default.string,\n    userInputs: _propTypes2.default.array\n};\nEnzoic.defaultProps = {\n    changeCallback: null,\n    className: '',\n    defaultValue: '',\n    minLength: 8,\n    minScore: 4,\n    scoreWords: [_react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _warning2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[0],\n        ' ',\n        _react2.default.createElement('img', {\n            src: _warning2.default, style: { display: 'inline-block' } })\n    ), _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _info2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[1]\n    ), _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _info2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[2]\n    ), _react2.default.createElement(\n        'span',\n        null,\n        _react2.default.createElement('img', { src: _info2.default, style: { display: 'inline-block' } }),\n        ' ',\n        _enzoic_strings2.default.strengthRatings[3]\n    ), _enzoic_strings2.default.strengthRatings[4], _enzoic_strings2.default.strengthRatings[5]],\n    tooShortWord: 'Too Short',\n    userInputs: [],\n    requireSymbol: false,\n    requireUppercase: false,\n    requireNumber: false\n};\nexports.default = Enzoic;"
    },
    {
      "id": 7,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
      "name": "./src/style.css",
      "index": 1,
      "index2": 3,
      "size": 899,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "./style.css",
          "loc": "11:0-22"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/index.js!./style.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!../node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!../node_modules/css-loader/index.js!./style.css\", function() {\n\t\t\tvar newContent = require(\"!!../node_modules/css-loader/index.js!./style.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}"
    },
    {
      "id": 8,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
      "name": "./node_modules/css-loader!./src/style.css",
      "index": 2,
      "index2": 1,
      "size": 3873,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
      "issuerId": 7,
      "issuerName": "./src/style.css",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 7,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "module": "./src/style.css",
          "moduleName": "./src/style.css",
          "type": "cjs require",
          "userRequest": "!!../node_modules/css-loader/index.js!./style.css",
          "loc": "4:14-74"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".Enzoic {\\n    border: 1px solid #c6c6c6;\\n    box-sizing: border-box;\\n    color: #090809;\\n    font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n    font-size: 18px;\\n    line-height: 1;\\n    position: relative;\\n}\\n\\n.Enzoic-input {\\n    border: none;\\n    box-sizing: border-box;\\n    font-size: 18px;\\n    padding: 14px 0 12px 14px;\\n    width: calc(85% - 28px);\\n}\\n\\n.Enzoic-input:not(:focus).is-password-invalid {\\n    color: #D1462F;\\n}\\n\\n.Enzoic-input:focus {\\n    outline: none;\\n}\\n\\n.Enzoic-strength-desc {\\n    color: transparent;\\n    position: absolute;\\n    top: 50%;\\n    right: 0;\\n    transform: translateY(-50%);\\n    text-align: right;\\n    transition: color 250ms ease-in-out;\\n    max-width: 130px;\\n    padding: 1px 4px !important;\\n    margin: 0 6px 0 0;\\n    display: inline;\\n    background: transparent;\\n    font: bold normal normal 11px/20px Helvetica Neue, Helvetica, \\\"MS Sans Serif\\\" !important;\\n    border-radius: 10px !important;\\n    cursor: pointer;\\n}\\n\\n.Enzoic-strength-desc img {\\n    vertical-align: middle;\\n    position: relative;\\n    top: -1px;\\n}\\n\\n.Enzoic-strength-desc-old {\\n    color: transparent;\\n    font-style: italic;\\n    padding: 14px 12px;\\n    position: absolute;\\n    top: 50%;\\n    right: 0;\\n    transform: translateY(-50%);\\n    text-align: right;\\n    transition: color 250ms ease-in-out;\\n    width: 15%;\\n}\\n\\n.Enzoic.is-strength-0 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #ff0000;\\n}\\n\\n.Enzoic.is-strength-1 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #ff0000;\\n    /*color: #D1462F;*/\\n}\\n\\n.Enzoic.is-strength-2 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #ff0000;\\n    /*color: #D1462F;*/\\n}\\n\\n.Enzoic.is-strength-3 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #57B8FF;\\n    /*color: #57B8FF;*/\\n}\\n\\n.Enzoic.is-strength-4 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #2FBF71;\\n    /*color: #2FBF71;*/\\n}\\n\\n.Enzoic.is-strength-5 .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: #2FBF71;\\n    /*color: #2FBF71;*/\\n}\\n\\n.Enzoic.loading .Enzoic-strength-desc {\\n    color: #FFFFFF;\\n    background-color: transparent;\\n    /*color: #2FBF71;*/\\n}\\n\\n.Enzoic-strength-bar {\\n    box-sizing: border-box;\\n    height: 2px;\\n    position: relative;\\n    top: 1px;\\n    right: 1px;\\n    transition: width 300ms ease-out;\\n    width: 0;\\n}\\n\\n.Enzoic.is-strength-0 .Enzoic-strength-bar {\\n    background: #ff0000;\\n    width: 20%;\\n}\\n\\n.Enzoic.is-strength-1 .Enzoic-strength-bar {\\n    background: #D1462F;\\n    width: 20%;\\n}\\n\\n.Enzoic.is-strength-2 .Enzoic-strength-bar {\\n    background: #D1462F;\\n    width: 40%;\\n}\\n\\n.Enzoic.is-strength-3 .Enzoic-strength-bar {\\n    background: #57B8FF;\\n    width: 60%;\\n}\\n\\n.Enzoic.is-strength-4 .Enzoic-strength-bar {\\n    background: #2FBF71;\\n    width: 80%;\\n}\\n\\n.Enzoic.is-strength-5 .Enzoic-strength-bar {\\n    background: #2FBF71;\\n    width: calc(100% + 2px);\\n}\\n\\n.Enzoic-spinner {\\n    width: 40px;\\n    height: 40px;\\n    margin: 100px auto;\\n    background-color: #333;\\n\\n    border-radius: 100%;\\n    -webkit-animation: Enzoic-sk-scaleout 1.0s infinite ease-in-out;\\n    animation: Enzoic-sk-scaleout 1.0s infinite ease-in-out;\\n}\\n\\n@-webkit-keyframes Enzoic-sk-scaleout {\\n    0% { -webkit-transform: scale(0) }\\n    100% {\\n        -webkit-transform: scale(1.0);\\n        opacity: 0;\\n    }\\n}\\n\\n@keyframes Enzoic-sk-scaleout {\\n    0% {\\n        -webkit-transform: scale(0);\\n        transform: scale(0);\\n    } 100% {\\n          -webkit-transform: scale(1.0);\\n          transform: scale(1.0);\\n          opacity: 0;\\n      }\\n}\\n\", \"\"]);\n\n// exports\n"
    },
    {
      "id": 9,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/lib/css-base.js",
      "name": "./node_modules/css-loader/lib/css-base.js",
      "index": 3,
      "index2": 0,
      "size": 1506,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
      "issuerId": 8,
      "issuerName": "./node_modules/css-loader!./src/style.css",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 8,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "module": "./node_modules/css-loader!./src/style.css",
          "moduleName": "./node_modules/css-loader!./src/style.css",
          "type": "cjs require",
          "userRequest": "../node_modules/css-loader/lib/css-base.js",
          "loc": "1:27-80"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 3,
      "source": "/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t//  when a module is imported multiple times with different media queries.\r\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n"
    },
    {
      "id": 10,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/addStyles.js",
      "name": "./node_modules/style-loader/addStyles.js",
      "index": 4,
      "index2": 2,
      "size": 6906,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
      "issuerId": 7,
      "issuerName": "./src/style.css",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 7,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/style-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/css-loader/index.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/style.css",
          "module": "./src/style.css",
          "moduleName": "./src/style.css",
          "type": "cjs require",
          "userRequest": "!../node_modules/style-loader/addStyles.js",
          "loc": "7:13-66"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction createLinkElement(options) {\n\tvar linkElement = document.createElement(\"link\");\n\tlinkElement.rel = \"stylesheet\";\n\tinsertStyleElement(options, linkElement);\n\treturn linkElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else if(obj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\") {\n\t\tstyleElement = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t\tif(styleElement.href)\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t};\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyleElement.setAttribute(\"media\", media)\n\t}\n\n\tif(styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink(linkElement, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\tif(sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = linkElement.href;\n\n\tlinkElement.href = URL.createObjectURL(blob);\n\n\tif(oldSrc)\n\t\tURL.revokeObjectURL(oldSrc);\n}\n"
    },
    {
      "id": 11,
      "identifier": "external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"React\",\"root\":\"React\"}",
      "name": "external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"React\",\"root\":\"React\"}",
      "index": 5,
      "index2": 4,
      "size": 42,
      "cacheable": false,
      "built": false,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "react",
          "loc": "13:13-29"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1
    },
    {
      "id": 12,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
      "name": "./src/zxcvbn/index.js",
      "index": 6,
      "index2": 12,
      "size": 2641,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "./zxcvbn",
          "loc": "17:14-33"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar matching = require('./matching');\nvar scoring = require('./scoring');\nvar time_estimates = require('./time_estimates');\nvar feedback = require('./feedback');\n\nvar time = function time() {\n    return new Date().getTime();\n};\n\nvar isZxcvbnLoaded = function isZxcvbnLoaded() {\n    return matching.dictionariesLoaded;\n};\n\nvar zxcvbn = function zxcvbn(password, user_inputs) {\n    if (user_inputs == null) {\n        user_inputs = [];\n    }\n    var start = time();\n    // reset the user inputs matcher on a per-request basis to keep things stateless\n    var sanitized_inputs = [];\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n        for (var _iterator = Array.from(user_inputs)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n            var arg = _step.value;\n\n            if ([\"string\", \"number\", \"boolean\"].includes(typeof arg === 'undefined' ? 'undefined' : _typeof(arg))) {\n                sanitized_inputs.push(arg.toString().toLowerCase());\n            }\n        }\n    } catch (err) {\n        _didIteratorError = true;\n        _iteratorError = err;\n    } finally {\n        try {\n            if (!_iteratorNormalCompletion && _iterator.return) {\n                _iterator.return();\n            }\n        } finally {\n            if (_didIteratorError) {\n                throw _iteratorError;\n            }\n        }\n    }\n\n    matching.set_user_input_dictionary(sanitized_inputs);\n    var matches = matching.omnimatch(password);\n    var result = scoring.most_guessable_match_sequence(password, matches);\n    result.calc_time = time() - start;\n    var attack_times = time_estimates.estimate_attack_times(result.guesses);\n    for (var prop in attack_times) {\n        var val = attack_times[prop];\n        result[prop] = val;\n    }\n    result.feedback = feedback.get_feedback(result.score, result.sequence);\n    return result;\n};\n\nmodule.exports = { zxcvbn: zxcvbn, isZxcvbnLoaded: isZxcvbnLoaded };"
    },
    {
      "id": 13,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
      "name": "./src/zxcvbn/matching.js",
      "index": 7,
      "index2": 8,
      "size": 49623,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
      "issuerId": 12,
      "issuerName": "./src/zxcvbn/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 12,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "module": "./src/zxcvbn/index.js",
          "moduleName": "./src/zxcvbn/index.js",
          "type": "cjs require",
          "userRequest": "./matching",
          "loc": "12:15-36"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "'use strict';\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar frequency_lists = require('./frequency_lists');\nvar adjacency_graphs = require('./adjacency_graphs');\nvar scoring = require('./scoring');\n\nvar loadFrequencyLists = function loadFrequencyLists(callback) {\n    var request = new XMLHttpRequest();\n    request.onreadystatechange = function () {\n        if (request.readyState === 4) {\n            if (request.status === 200) {\n                var response = request.response;\n                if (response) {\n                    var result = JSON.parse(response);\n\n                    for (var _name in result) {\n                        result[_name] = result[_name].split(\",\");\n                    }\n                    callback(result);\n                } else {\n                    console.log('Unable to load dictionaries for Enzoic');\n                    callback(null);\n                }\n            } else {\n                console.log('Unable to load dictionaries for Enzoic');\n                callback(null);\n            }\n        }\n    };\n\n    request.open('GET', 'https://cdn.enzoic.com/js/zxcvbn_frequency_lists_en.json', true);\n    request.send();\n};\n\nvar build_ranked_dict = function build_ranked_dict(ordered_list) {\n    var result = {};\n    for (var i = 0; i < ordered_list.length; i++) {\n        result[ordered_list[i]] = i + 1;\n    }\n    return result;\n};\n\nvar RANKED_DICTIONARIES = {};\n\nloadFrequencyLists(function (frequencyLists) {\n    if (frequencyLists) {\n        for (var name in frequencyLists) {\n            var lst = frequencyLists[name];\n            RANKED_DICTIONARIES[name] = build_ranked_dict(lst);\n        }\n        matching.dictionariesLoaded = true;\n    }\n});\n\nvar GRAPHS = {\n    qwerty: adjacency_graphs.qwerty,\n    dvorak: adjacency_graphs.dvorak,\n    keypad: adjacency_graphs.keypad,\n    mac_keypad: adjacency_graphs.mac_keypad\n};\n\nvar L33T_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\nvar REGEXEN = { recent_year: /19\\d\\d|200\\d|201\\d/g };\n\nvar DATE_MAX_YEAR = 2050;\nvar DATE_MIN_YEAR = 1000;\nvar DATE_SPLITS = {\n    4: [// for length-4 strings, eg 1191 or 9111, two ways to split:\n    [1, 2], // 1 1 91 (2nd split starts at index 1, 3rd at index 2)\n    [2, 3] // 91 1 1\n    ],\n    5: [[1, 3], // 1 11 91\n    [2, 3] // 11 1 91\n    ],\n    6: [[1, 2], // 1 1 1991\n    [2, 4], // 11 11 91\n    [4, 5] // 1991 1 1\n    ],\n    7: [[1, 3], // 1 11 1991\n    [2, 3], // 11 1 1991\n    [4, 5], // 1991 1 11\n    [4, 6] // 1991 11 1\n    ],\n    8: [[2, 4], // 11 11 1991\n    [4, 6] // 1991 11 11\n    ]\n};\n\nvar matching = {\n    dictionariesLoaded: false,\n\n    empty: function empty(obj) {\n        return function () {\n            var result = [];\n            for (var k in obj) {\n                result.push(k);\n            }\n            return result;\n        }().length === 0;\n    },\n    extend: function extend(lst, lst2) {\n        return lst.push.apply(lst, lst2);\n    },\n    translate: function translate(string, chr_map) {\n        return Array.from(string.split('')).map(function (chr) {\n            return chr_map[chr] || chr;\n        }).join('');\n    },\n    mod: function mod(n, m) {\n        return (n % m + m) % m;\n    },\n    // mod impl that works for negative numbers\n    sorted: function sorted(matches) {\n        // sort on i primary, j secondary\n        return matches.sort(function (m1, m2) {\n            return m1.i - m2.i || m1.j - m2.j;\n        });\n    },\n\n\n    // ------------------------------------------------------------------------------\n    // omnimatch -- combine everything ----------------------------------------------\n    // ------------------------------------------------------------------------------\n\n    omnimatch: function omnimatch(password) {\n        var matches = [];\n        var 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        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n\n        try {\n            for (var _iterator = Array.from(matchers)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n                var matcher = _step.value;\n\n                this.extend(matches, matcher.call(this, password));\n            }\n        } catch (err) {\n            _didIteratorError = true;\n            _iteratorError = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion && _iterator.return) {\n                    _iterator.return();\n                }\n            } finally {\n                if (_didIteratorError) {\n                    throw _iteratorError;\n                }\n            }\n        }\n\n        return this.sorted(matches);\n    },\n\n\n    //-------------------------------------------------------------------------------\n    // dictionary match (common passwords, english, last names, etc) ----------------\n    //-------------------------------------------------------------------------------\n\n    dictionary_match: function dictionary_match(password, _ranked_dictionaries) {\n        // _ranked_dictionaries variable is for unit testing purposes\n        if (_ranked_dictionaries == null) {\n            _ranked_dictionaries = RANKED_DICTIONARIES;\n        }\n        var matches = [];\n        var len = password.length;\n        var password_lower = password.toLowerCase();\n        for (var dictionary_name in _ranked_dictionaries) {\n            var ranked_dict = _ranked_dictionaries[dictionary_name];\n            for (var i = 0, end = len, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n                for (var j = i, end1 = len, asc1 = i <= end1; asc1 ? j < end1 : j > end1; asc1 ? j++ : j--) {\n                    if (password_lower.slice(i, +j + 1 || undefined) in ranked_dict) {\n                        var word = password_lower.slice(i, +j + 1 || undefined);\n                        var rank = ranked_dict[word];\n                        matches.push({\n                            pattern: 'dictionary',\n                            i: i,\n                            j: j,\n                            token: password.slice(i, +j + 1 || undefined),\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 reverse_dictionary_match(password, _ranked_dictionaries) {\n        if (_ranked_dictionaries == null) {\n            _ranked_dictionaries = RANKED_DICTIONARIES;\n        }\n        var reversed_password = password.split('').reverse().join('');\n        var matches = this.dictionary_match(reversed_password, _ranked_dictionaries);\n        var _iteratorNormalCompletion2 = true;\n        var _didIteratorError2 = false;\n        var _iteratorError2 = undefined;\n\n        try {\n            for (var _iterator2 = Array.from(matches)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n                var match = _step2.value;\n\n                match.token = match.token.split('').reverse().join(''); // reverse back\n                match.reversed = true;\n                // map coordinates back to original string\n\n                var _Array$from = Array.from([password.length - 1 - match.j, password.length - 1 - match.i]);\n\n                var _Array$from2 = _slicedToArray(_Array$from, 2);\n\n                match.i = _Array$from2[0];\n                match.j = _Array$from2[1];\n            }\n        } catch (err) {\n            _didIteratorError2 = true;\n            _iteratorError2 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion2 && _iterator2.return) {\n                    _iterator2.return();\n                }\n            } finally {\n                if (_didIteratorError2) {\n                    throw _iteratorError2;\n                }\n            }\n        }\n\n        return this.sorted(matches);\n    },\n    set_user_input_dictionary: function set_user_input_dictionary(ordered_list) {\n        return RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict(ordered_list.slice());\n    },\n\n\n    //-------------------------------------------------------------------------------\n    // dictionary match with common l33t substitutions ------------------------------\n    //-------------------------------------------------------------------------------\n\n    // makes a pruned copy of l33t_table that only includes password's possible substitutions\n    relevant_l33t_subtable: function relevant_l33t_subtable(password, table) {\n        var password_chars = {};\n        var _iteratorNormalCompletion3 = true;\n        var _didIteratorError3 = false;\n        var _iteratorError3 = undefined;\n\n        try {\n            for (var _iterator3 = Array.from(password.split(''))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n                var chr = _step3.value;\n\n                password_chars[chr] = true;\n            }\n        } catch (err) {\n            _didIteratorError3 = true;\n            _iteratorError3 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion3 && _iterator3.return) {\n                    _iterator3.return();\n                }\n            } finally {\n                if (_didIteratorError3) {\n                    throw _iteratorError3;\n                }\n            }\n        }\n\n        var subtable = {};\n        for (var letter in table) {\n            var subs = table[letter];\n            var relevant_subs = Array.from(subs).filter(function (sub) {\n                return sub in password_chars;\n            });\n            if (relevant_subs.length > 0) {\n                subtable[letter] = relevant_subs;\n            }\n        }\n        return subtable;\n    },\n\n\n    // returns the list of possible 1337 replacement dictionaries for a given password\n    enumerate_l33t_subs: function enumerate_l33t_subs(table) {\n        var k = void 0;\n        var keys = function () {\n            var result = [];\n            for (k in table) {\n                result.push(k);\n            }\n            return result;\n        }();\n        var subs = [[]];\n\n        var dedup = function dedup(subs) {\n            var v = void 0,\n                k = void 0;\n            var deduped = [];\n            var members = {};\n            var _iteratorNormalCompletion4 = true;\n            var _didIteratorError4 = false;\n            var _iteratorError4 = undefined;\n\n            try {\n                for (var _iterator4 = Array.from(subs)[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n                    var sub = _step4.value;\n\n                    var assoc = function () {\n                        var result1 = [];\n                        for (v = 0; v < sub.length; v++) {\n                            k = sub[v];\n                            result1.push([k, v]);\n                        }\n                        return result1;\n                    }();\n                    assoc.sort();\n                    var label = function () {\n                        var result2 = [];\n                        for (v = 0; v < assoc.length; v++) {\n                            k = assoc[v];\n                            result2.push(k + ',' + v);\n                        }\n                        return result2;\n                    }().join('-');\n                    if (!(label in members)) {\n                        members[label] = true;\n                        deduped.push(sub);\n                    }\n                }\n            } catch (err) {\n                _didIteratorError4 = true;\n                _iteratorError4 = err;\n            } finally {\n                try {\n                    if (!_iteratorNormalCompletion4 && _iterator4.return) {\n                        _iterator4.return();\n                    }\n                } finally {\n                    if (_didIteratorError4) {\n                        throw _iteratorError4;\n                    }\n                }\n            }\n\n            return deduped;\n        };\n\n        var helper = function helper(keys) {\n            if (!keys.length) {\n                return;\n            }\n            var first_key = keys[0];\n            var rest_keys = keys.slice(1);\n            var next_subs = [];\n            var _iteratorNormalCompletion5 = true;\n            var _didIteratorError5 = false;\n            var _iteratorError5 = undefined;\n\n            try {\n                for (var _iterator5 = Array.from(table[first_key])[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n                    var l33t_chr = _step5.value;\n                    var _iteratorNormalCompletion6 = true;\n                    var _didIteratorError6 = false;\n                    var _iteratorError6 = undefined;\n\n                    try {\n                        for (var _iterator6 = Array.from(subs)[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n                            var sub = _step6.value;\n\n                            var dup_l33t_index = -1;\n                            for (var i = 0, end = sub.length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n                                if (sub[i][0] === l33t_chr) {\n                                    dup_l33t_index = i;\n                                    break;\n                                }\n                            }\n                            if (dup_l33t_index === -1) {\n                                var sub_extension = sub.concat([[l33t_chr, first_key]]);\n                                next_subs.push(sub_extension);\n                            } else {\n                                var 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                    } catch (err) {\n                        _didIteratorError6 = true;\n                        _iteratorError6 = err;\n                    } finally {\n                        try {\n                            if (!_iteratorNormalCompletion6 && _iterator6.return) {\n                                _iterator6.return();\n                            }\n                        } finally {\n                            if (_didIteratorError6) {\n                                throw _iteratorError6;\n                            }\n                        }\n                    }\n                }\n            } catch (err) {\n                _didIteratorError5 = true;\n                _iteratorError5 = err;\n            } finally {\n                try {\n                    if (!_iteratorNormalCompletion5 && _iterator5.return) {\n                        _iterator5.return();\n                    }\n                } finally {\n                    if (_didIteratorError5) {\n                        throw _iteratorError5;\n                    }\n                }\n            }\n\n            subs = dedup(next_subs);\n            return helper(rest_keys);\n        };\n\n        helper(keys);\n        var sub_dicts = []; // convert from assoc lists to dicts\n        var _iteratorNormalCompletion7 = true;\n        var _didIteratorError7 = false;\n        var _iteratorError7 = undefined;\n\n        try {\n            for (var _iterator7 = Array.from(subs)[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n                var sub = _step7.value;\n\n                var sub_dict = {};\n                var _iteratorNormalCompletion8 = true;\n                var _didIteratorError8 = false;\n                var _iteratorError8 = undefined;\n\n                try {\n                    for (var _iterator8 = Array.from(sub)[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n                        var _step8$value = _slicedToArray(_step8.value, 2),\n                            l33t_chr = _step8$value[0],\n                            chr = _step8$value[1];\n\n                        sub_dict[l33t_chr] = chr;\n                    }\n                } catch (err) {\n                    _didIteratorError8 = true;\n                    _iteratorError8 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion8 && _iterator8.return) {\n                            _iterator8.return();\n                        }\n                    } finally {\n                        if (_didIteratorError8) {\n                            throw _iteratorError8;\n                        }\n                    }\n                }\n\n                sub_dicts.push(sub_dict);\n            }\n        } catch (err) {\n            _didIteratorError7 = true;\n            _iteratorError7 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion7 && _iterator7.return) {\n                    _iterator7.return();\n                }\n            } finally {\n                if (_didIteratorError7) {\n                    throw _iteratorError7;\n                }\n            }\n        }\n\n        return sub_dicts;\n    },\n    l33t_match: function l33t_match(password, _ranked_dictionaries, _l33t_table) {\n        var token = void 0;\n        if (_ranked_dictionaries == null) {\n            _ranked_dictionaries = RANKED_DICTIONARIES;\n        }\n        if (_l33t_table == null) {\n            _l33t_table = L33T_TABLE;\n        }\n        var matches = [];\n        var _iteratorNormalCompletion9 = true;\n        var _didIteratorError9 = false;\n        var _iteratorError9 = undefined;\n\n        try {\n            for (var _iterator9 = Array.from(this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table)))[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n                var sub = _step9.value;\n\n                if (this.empty(sub)) {\n                    break;\n                } // corner case: password has no relevant subs.\n                var subbed_password = this.translate(password, sub);\n                var _iteratorNormalCompletion10 = true;\n                var _didIteratorError10 = false;\n                var _iteratorError10 = undefined;\n\n                try {\n                    for (var _iterator10 = Array.from(this.dictionary_match(subbed_password, _ranked_dictionaries))[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n                        var match = _step10.value;\n\n                        token = password.slice(match.i, +match.j + 1 || undefined);\n                        if (token.toLowerCase() === match.matched_word) {\n                            continue; // only return the matches that contain an actual substitution\n                        }\n                        var match_sub = {}; // subset of mappings in sub that are in use for this match\n                        for (var subbed_chr in sub) {\n                            var 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 result = [];\n                            for (var k in match_sub) {\n                                var v = match_sub[k];\n                                result.push(k + ' -> ' + v);\n                            }\n                            return result;\n                        }().join(', ');\n                        matches.push(match);\n                    }\n                } catch (err) {\n                    _didIteratorError10 = true;\n                    _iteratorError10 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion10 && _iterator10.return) {\n                            _iterator10.return();\n                        }\n                    } finally {\n                        if (_didIteratorError10) {\n                            throw _iteratorError10;\n                        }\n                    }\n                }\n            }\n        } catch (err) {\n            _didIteratorError9 = true;\n            _iteratorError9 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion9 && _iterator9.return) {\n                    _iterator9.return();\n                }\n            } finally {\n                if (_didIteratorError9) {\n                    throw _iteratorError9;\n                }\n            }\n        }\n\n        return this.sorted(matches.filter(function (match) {\n            return (\n                // filter single-character l33t matches to reduce noise.\n                // otherwise '1' matches 'i', '4' matches 'a', both very common English words\n                // with low dictionary rank.\n                match.token.length > 1\n            );\n        }));\n    },\n\n\n    // ------------------------------------------------------------------------------\n    // spatial match (qwerty/dvorak/keypad) -----------------------------------------\n    // ------------------------------------------------------------------------------\n\n    spatial_match: function spatial_match(password, _graphs) {\n        if (_graphs == null) {\n            _graphs = GRAPHS;\n        }\n        var matches = [];\n        for (var graph_name in _graphs) {\n            var graph = _graphs[graph_name];\n            this.extend(matches, this.spatial_match_helper(password, graph, graph_name));\n        }\n        return this.sorted(matches);\n    },\n\n\n    SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,\n    spatial_match_helper: function spatial_match_helper(password, graph, graph_name) {\n        var matches = [];\n        var i = 0;\n        while (i < password.length - 1) {\n            var shifted_count;\n            var j = i + 1;\n            var last_direction = null;\n            var turns = 0;\n            if (['qwerty', 'dvorak'].includes(graph_name) && this.SHIFTED_RX.exec(password.charAt(i))) {\n                // initial character is shifted\n                shifted_count = 1;\n            } else {\n                shifted_count = 0;\n            }\n            while (true) {\n                var prev_char = password.charAt(j - 1);\n                var found = false;\n                var found_direction = -1;\n                var cur_direction = -1;\n                var adjacents = graph[prev_char] || [];\n                // consider growing pattern by one character if j hasn't gone over the edge.\n                if (j < password.length) {\n                    var cur_char = password.charAt(j);\n                    var _iteratorNormalCompletion11 = true;\n                    var _didIteratorError11 = false;\n                    var _iteratorError11 = undefined;\n\n                    try {\n                        for (var _iterator11 = Array.from(adjacents)[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {\n                            var adj = _step11.value;\n\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                                    // index 1 in the adjacency means the key is shifted,\n                                    // 0 means unshifted: A vs a, % vs 5, etc.\n                                    // for example, 'q' is adjacent to the entry '2@'.\n                                    // @ is shifted w/ index 1, 2 is unshifted.\n                                    shifted_count += 1;\n                                }\n                                if (last_direction !== found_direction) {\n                                    // adding a turn is correct even in the initial case when last_direction is null:\n                                    // every spatial pattern starts with a turn.\n                                    turns += 1;\n                                    last_direction = found_direction;\n                                }\n                                break;\n                            }\n                        }\n                    } catch (err) {\n                        _didIteratorError11 = true;\n                        _iteratorError11 = err;\n                    } finally {\n                        try {\n                            if (!_iteratorNormalCompletion11 && _iterator11.return) {\n                                _iterator11.return();\n                            }\n                        } finally {\n                            if (_didIteratorError11) {\n                                throw _iteratorError11;\n                            }\n                        }\n                    }\n                }\n                // if the current pattern continued, extend j and try to grow again\n                if (found) {\n                    j += 1;\n                    // otherwise push the pattern discovered so far, if any...\n                } else {\n                    if (j - i > 2) {\n                        // don't consider length 1 or 2 chains.\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                    // ...and then start a new search for the rest of the password.\n                    i = j;\n                    break;\n                }\n            }\n        }\n        return matches;\n    },\n\n\n    //-------------------------------------------------------------------------------\n    // repeats (aaa, abcabcabc) and sequences (abcdef) ------------------------------\n    //-------------------------------------------------------------------------------\n\n    repeat_match: function repeat_match(password) {\n        var matches = [];\n        var greedy = /(.+)\\1+/g;\n        var lazy = /(.+?)\\1+/g;\n        var lazy_anchored = /^(.+?)\\1+$/;\n        var lastIndex = 0;\n        while (lastIndex < password.length) {\n            var base_token, match;\n            greedy.lastIndex = lazy.lastIndex = lastIndex;\n            var greedy_match = greedy.exec(password);\n            var lazy_match = lazy.exec(password);\n            if (greedy_match == null) {\n                break;\n            }\n            if (greedy_match[0].length > lazy_match[0].length) {\n                // greedy beats lazy for 'aabaab'\n                //   greedy: [aabaab, aab]\n                //   lazy:   [aa,     a]\n                match = greedy_match;\n                // greedy's repeated string might itself be repeated, eg.\n                // aabaab in aabaabaabaab.\n                // run an anchored lazy match on greedy's repeated string\n                // to find the shortest repeated string\n                base_token = lazy_anchored.exec(match[0])[1];\n            } else {\n                // lazy beats greedy for 'aaaaa'\n                //   greedy: [aaaa,  aa]\n                //   lazy:   [aaaaa, a]\n                match = lazy_match;\n                base_token = match[1];\n            }\n\n            var _Array$from3 = Array.from([match.index, match.index + match[0].length - 1]),\n                _Array$from4 = _slicedToArray(_Array$from3, 2),\n                i = _Array$from4[0],\n                j = _Array$from4[1];\n            // recursively match and score the base string\n\n\n            var base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));\n            var base_matches = base_analysis.sequence;\n            var 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\n\n    MAX_DELTA: 5,\n    sequence_match: function sequence_match(password) {\n        var _this = this;\n\n        // Identifies sequences by looking for repeated differences in unicode codepoint.\n        // this allows skipping, such as 9753, and also matches some extended unicode sequences\n        // such as Greek and Cyrillic alphabets.\n        //\n        // for example, consider the input 'abcdb975zy'\n        //\n        // password: a   b   c   d   b    9   7   5   z   y\n        // index:    0   1   2   3   4    5   6   7   8   9\n        // delta:      1   1   1  -2  -41  -2  -2  69   1\n        //\n        // expected result:\n        // [(i, j, delta), ...] = [(0, 3, 1), (5, 7, -2), (8, 9, 1)]\n\n        if (password.length === 1) {\n            return [];\n        }\n\n        var update = function update(i, j, delta) {\n            if (j - i > 1 || Math.abs(delta) === 1) {\n                var middle = void 0;\n                if (0 < (middle = Math.abs(delta)) && middle <= _this.MAX_DELTA) {\n                    var sequence_name = void 0,\n                        sequence_space = void 0;\n                    var token = password.slice(i, +j + 1 || undefined);\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                        // conservatively stick with roman alphabet size.\n                        // (this could be improved)\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 || undefined),\n                        sequence_name: sequence_name,\n                        sequence_space: sequence_space,\n                        ascending: delta > 0\n                    });\n                }\n            }\n        };\n\n        var result = [];\n        var i = 0;\n        var last_delta = null;\n\n        for (var k = 1, end = password.length, asc = 1 <= end; asc ? k < end : k > end; asc ? k++ : k--) {\n            var 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            var 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\n\n    //-------------------------------------------------------------------------------\n    // regex matching ---------------------------------------------------------------\n    //-------------------------------------------------------------------------------\n\n    regex_match: function regex_match(password, _regexen) {\n        if (_regexen == null) {\n            _regexen = REGEXEN;\n        }\n        var matches = [];\n        for (name in _regexen) {\n            var rx_match;\n            var regex = _regexen[name];\n            regex.lastIndex = 0; // keeps regex_match stateless\n            while (rx_match = regex.exec(password)) {\n                var 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\n\n    //-------------------------------------------------------------------------------\n    // date matching ----------------------------------------------------------------\n    //-------------------------------------------------------------------------------\n\n    date_match: function date_match(password) {\n        // a \"date\" is recognized as:\n        //   any 3-tuple that starts or ends with a 2- or 4-digit year,\n        //   with 2 or 0 separator chars (1.1.91 or 1191),\n        //   maybe zero-padded (01-01-91 vs 1-1-91),\n        //   a month between 1 and 12,\n        //   a day between 1 and 31.\n        //\n        // note: this isn't true date parsing in that \"feb 31st\" is allowed,\n        // this doesn't check for leap years, etc.\n        //\n        // recipe:\n        // start with regex to find maybe-dates, then attempt to map the integers\n        // onto month-day-year to filter the maybe-dates into dates.\n        // finally, remove matches that are substrings of other matches to reduce noise.\n        //\n        // note: instead of using a lazy or greedy regex to find many dates over the full string,\n        // this uses a ^...$ regex against every substring of the password -- less performant but leads\n        // to every possible date match.\n        var dmy = void 0,\n            i = void 0,\n            j = void 0,\n            token = void 0;\n        var asc = void 0,\n            end = void 0;\n        var asc2 = void 0,\n            end2 = void 0;\n        var matches = [];\n        var maybe_date_no_separator = /^\\d{4,8}$/;\n        var maybe_date_with_separator = new RegExp('^(\\\\d{1,4})([\\\\s/\\\\\\\\_.-])(\\\\d{1,2})\\\\2(\\\\d{1,4})$');\n\n        // dates without separators are between length 4 '1191' and 8 '11111991'\n        for (i = 0, end = password.length - 4, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n            var asc1, end1, start;\n            for (start = i + 3, j = start, end1 = i + 7, asc1 = start <= end1; asc1 ? j <= end1 : j >= end1; asc1 ? j++ : j--) {\n                if (j >= password.length) {\n                    break;\n                }\n                token = password.slice(i, +j + 1 || undefined);\n                if (!maybe_date_no_separator.exec(token)) {\n                    continue;\n                }\n                var candidates = [];\n                var _iteratorNormalCompletion12 = true;\n                var _didIteratorError12 = false;\n                var _iteratorError12 = undefined;\n\n                try {\n                    for (var _iterator12 = Array.from(DATE_SPLITS[token.length])[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {\n                        var _step12$value = _slicedToArray(_step12.value, 2),\n                            k = _step12$value[0],\n                            l = _step12$value[1];\n\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                } catch (err) {\n                    _didIteratorError12 = true;\n                    _iteratorError12 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion12 && _iterator12.return) {\n                            _iterator12.return();\n                        }\n                    } finally {\n                        if (_didIteratorError12) {\n                            throw _iteratorError12;\n                        }\n                    }\n                }\n\n                if (!(candidates.length > 0)) {\n                    continue;\n                }\n                // at this point: different possible dmy mappings for the same i,j substring.\n                // match the candidate date that likely takes the fewest guesses: a year closest to 2000.\n                // (scoring.REFERENCE_YEAR).\n                //\n                // ie, considering '111504', prefer 11-15-04 to 1-1-1504\n                // (interpreting '04' as 2004)\n                var best_candidate = candidates[0];\n                var metric = function metric(candidate) {\n                    return Math.abs(candidate.year - scoring.REFERENCE_YEAR);\n                };\n                var min_distance = metric(candidates[0]);\n                var _iteratorNormalCompletion13 = true;\n                var _didIteratorError13 = false;\n                var _iteratorError13 = undefined;\n\n                try {\n                    for (var _iterator13 = Array.from(candidates.slice(1))[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {\n                        var candidate = _step13.value;\n\n                        var distance = metric(candidate);\n                        if (distance < min_distance) {\n                            var _Array$from5 = Array.from([candidate, distance]);\n\n                            var _Array$from6 = _slicedToArray(_Array$from5, 2);\n\n                            best_candidate = _Array$from6[0];\n                            min_distance = _Array$from6[1];\n                        }\n                    }\n                } catch (err) {\n                    _didIteratorError13 = true;\n                    _iteratorError13 = err;\n                } finally {\n                    try {\n                        if (!_iteratorNormalCompletion13 && _iterator13.return) {\n                            _iterator13.return();\n                        }\n                    } finally {\n                        if (_didIteratorError13) {\n                            throw _iteratorError13;\n                        }\n                    }\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\n        // dates with separators are between length 6 '1/1/91' and 10 '11/11/1991'\n        for (i = 0, end2 = password.length - 6, asc2 = 0 <= end2; asc2 ? i <= end2 : i >= end2; asc2 ? i++ : i--) {\n            var asc3, end3, start1;\n            for (start1 = i + 5, j = start1, end3 = i + 9, asc3 = start1 <= end3; asc3 ? j <= end3 : j >= end3; asc3 ? j++ : j--) {\n                if (j >= password.length) {\n                    break;\n                }\n                token = password.slice(i, +j + 1 || undefined);\n                var 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\n        // matches now contains all valid date strings in a way that is tricky to capture\n        // with regexes only. while thorough, it will contain some unintuitive noise:\n        //\n        // '2015_06_04', in addition to matching 2015_06_04, will also contain\n        // 5(!) other date matches: 15_06_04, 5_06_04, ..., even 2015 (matched as 5/1/2020)\n        //\n        // to reduce noise, remove date matches that are strict substrings of others\n        return this.sorted(matches.filter(function (match) {\n            var is_submatch = false;\n            var _iteratorNormalCompletion14 = true;\n            var _didIteratorError14 = false;\n            var _iteratorError14 = undefined;\n\n            try {\n                for (var _iterator14 = Array.from(matches)[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {\n                    var other_match = _step14.value;\n\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            } catch (err) {\n                _didIteratorError14 = true;\n                _iteratorError14 = err;\n            } finally {\n                try {\n                    if (!_iteratorNormalCompletion14 && _iterator14.return) {\n                        _iterator14.return();\n                    }\n                } finally {\n                    if (_didIteratorError14) {\n                        throw _iteratorError14;\n                    }\n                }\n            }\n\n            return !is_submatch;\n        }));\n    },\n    map_ints_to_dmy: function map_ints_to_dmy(ints) {\n        // given a 3-tuple, discard if:\n        //   middle int is over 31 (for all dmy formats, years are never allowed in the middle)\n        //   middle int is zero\n        //   any int is over the max allowable year\n        //   any int is over two digits but under the min allowable year\n        //   2 ints are over 31, the max allowable day\n        //   2 ints are zero\n        //   all ints are over 12, the max allowable month\n        var dm = void 0;\n        if (ints[1] > 31 || ints[1] <= 0) {\n            return;\n        }\n        var over_12 = 0;\n        var over_31 = 0;\n        var under_1 = 0;\n        var _iteratorNormalCompletion15 = true;\n        var _didIteratorError15 = false;\n        var _iteratorError15 = undefined;\n\n        try {\n            for (var _iterator15 = Array.from(ints)[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {\n                var int = _step15.value;\n\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        } catch (err) {\n            _didIteratorError15 = true;\n            _iteratorError15 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion15 && _iterator15.return) {\n                    _iterator15.return();\n                }\n            } finally {\n                if (_didIteratorError15) {\n                    throw _iteratorError15;\n                }\n            }\n        }\n\n        if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {\n            return;\n        }\n\n        // first look for a four digit year: yyyy + daymonth or daymonth + yyyy\n        var possible_year_splits = [[ints[2], ints.slice(0, 2)], // year last\n        [ints[0], ints.slice(1, 3)] // year first\n        ];\n        var _iteratorNormalCompletion16 = true;\n        var _didIteratorError16 = false;\n        var _iteratorError16 = undefined;\n\n        try {\n            for (var _iterator16 = Array.from(possible_year_splits)[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) {\n                var _step16$value = _slicedToArray(_step16.value, 2),\n                    y = _step16$value[0],\n                    rest = _step16$value[1];\n\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                        // for a candidate that includes a four-digit year,\n                        // when the remaining ints don't match to a day and month,\n                        // it is not a date.\n                        return;\n                    }\n                }\n            }\n\n            // given no four-digit year, two digit years are the most flexible int to match, so\n            // try to parse a day-month out of ints[0..1] or ints[1..0]\n        } catch (err) {\n            _didIteratorError16 = true;\n            _iteratorError16 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion16 && _iterator16.return) {\n                    _iterator16.return();\n                }\n            } finally {\n                if (_didIteratorError16) {\n                    throw _iteratorError16;\n                }\n            }\n        }\n\n        var _iteratorNormalCompletion17 = true;\n        var _didIteratorError17 = false;\n        var _iteratorError17 = undefined;\n\n        try {\n            for (var _iterator17 = Array.from(possible_year_splits)[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) {\n                var _step17$value = _slicedToArray(_step17.value, 2);\n\n                y = _step17$value[0];\n                rest = _step17$value[1];\n\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        } catch (err) {\n            _didIteratorError17 = true;\n            _iteratorError17 = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion17 && _iterator17.return) {\n                    _iterator17.return();\n                }\n            } finally {\n                if (_didIteratorError17) {\n                    throw _iteratorError17;\n                }\n            }\n        }\n    },\n    map_ints_to_dm: function map_ints_to_dm(ints) {\n        var _arr = [ints, ints.slice().reverse()];\n\n        for (var _i = 0; _i < _arr.length; _i++) {\n            var _arr$_i = _slicedToArray(_arr[_i], 2),\n                d = _arr$_i[0],\n                m = _arr$_i[1];\n\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 two_to_four_digit_year(year) {\n        if (year > 99) {\n            return year;\n        } else if (year > 50) {\n            // 87 -> 1987\n            return year + 1900;\n        } else {\n            // 15 -> 2015\n            return year + 2000;\n        }\n    }\n};\n\nmodule.exports = matching;"
    },
    {
      "id": 14,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/frequency_lists.js",
      "name": "./src/zxcvbn/frequency_lists.js",
      "index": 8,
      "index2": 5,
      "size": 233,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
      "issuerId": 13,
      "issuerName": "./src/zxcvbn/matching.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 13,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/matching.js",
          "module": "./src/zxcvbn/matching.js",
          "moduleName": "./src/zxcvbn/matching.js",
          "type": "cjs require",
          "userRequest": "./frequency_lists",
          "loc": "5:22-50"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 3,
      "source": "\"use strict\";\n\n// generated by build_frequency_lists.py\nvar frequency_lists = {\n  passwords: [],\n  english_wikipedia: [],\n  female_names: [],\n  surnames: [],\n  us_tv_and_film: [],\n  male_names: []\n};\nmodule.exports = frequency_lists;"
    },
    {
      "id": 15,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/time_estimates.js",
      "name": "./src/zxcvbn/time_estimates.js",
      "index": 11,
      "index2": 9,
      "size": 3952,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
      "issuerId": 12,
      "issuerName": "./src/zxcvbn/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 12,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "module": "./src/zxcvbn/index.js",
          "moduleName": "./src/zxcvbn/index.js",
          "type": "cjs require",
          "userRequest": "./time_estimates",
          "loc": "14:21-48"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "'use strict';\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar time_estimates = {\n  estimate_attack_times: function estimate_attack_times(guesses) {\n    var crack_times_seconds = {\n      online_throttling_100_per_hour: guesses / (100 / 3600),\n      online_no_throttling_10_per_second: guesses / 10,\n      offline_slow_hashing_1e4_per_second: guesses / 1e4,\n      offline_fast_hashing_1e10_per_second: guesses / 1e10\n    };\n\n    var crack_times_display = {};\n    for (var scenario in crack_times_seconds) {\n      var seconds = crack_times_seconds[scenario];\n      crack_times_display[scenario] = this.display_time(seconds);\n    }\n\n    return {\n      crack_times_seconds: crack_times_seconds,\n      crack_times_display: crack_times_display,\n      score: this.guesses_to_score(guesses)\n    };\n  },\n  guesses_to_score: function guesses_to_score(guesses) {\n    var DELTA = 5;\n    if (guesses < 1e3 + DELTA) {\n      // risky password: \"too guessable\"\n      return 0;\n    } else if (guesses < 1e6 + DELTA) {\n      // modest protection from throttled online attacks: \"very guessable\"\n      return 1;\n    } else if (guesses < 1e8 + DELTA) {\n      // modest protection from unthrottled online attacks: \"somewhat guessable\"\n      return 2;\n    } else if (guesses < 1e10 + DELTA) {\n      // modest protection from offline attacks: \"safely unguessable\"\n      // assuming a salted, slow hash function like bcrypt, scrypt, PBKDF2, argon, etc\n      return 3;\n    } else {\n      // strong protection from offline attacks under same scenario: \"very unguessable\"\n      return 4;\n    }\n  },\n  display_time: function display_time(seconds) {\n    var minute = 60;\n    var hour = minute * 60;\n    var day = hour * 24;\n    var month = day * 31;\n    var year = month * 12;\n    var century = year * 100;\n\n    var _Array$from = Array.from(function () {\n      var base = void 0;\n      if (seconds < 1) {\n        return [null, 'less than a second'];\n      } else if (seconds < minute) {\n        base = Math.round(seconds);\n        return [base, base + ' second'];\n      } else if (seconds < hour) {\n        base = Math.round(seconds / minute);\n        return [base, base + ' minute'];\n      } else if (seconds < day) {\n        base = Math.round(seconds / hour);\n        return [base, base + ' hour'];\n      } else if (seconds < month) {\n        base = Math.round(seconds / day);\n        return [base, base + ' day'];\n      } else if (seconds < year) {\n        base = Math.round(seconds / month);\n        return [base, base + ' month'];\n      } else if (seconds < century) {\n        base = Math.round(seconds / year);\n        return [base, base + ' year'];\n      } else {\n        return [null, 'centuries'];\n      }\n    }()),\n        _Array$from2 = _slicedToArray(_Array$from, 2),\n        display_num = _Array$from2[0],\n        display_str = _Array$from2[1];\n\n    if (display_num != null && display_num !== 1) {\n      display_str += 's';\n    }\n    return display_str;\n  }\n};\n\nmodule.exports = time_estimates;"
    },
    {
      "id": 16,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/feedback.js",
      "name": "./src/zxcvbn/feedback.js",
      "index": 12,
      "index2": 11,
      "size": 6915,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
      "issuerId": 12,
      "issuerName": "./src/zxcvbn/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 12,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/zxcvbn/index.js",
          "module": "./src/zxcvbn/index.js",
          "moduleName": "./src/zxcvbn/index.js",
          "type": "cjs require",
          "userRequest": "./feedback",
          "loc": "15:15-36"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "'use strict';\n\nvar _enzoic_strings = require('../strings/enzoic_strings');\n\nvar _enzoic_strings2 = _interopRequireDefault(_enzoic_strings);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nvar scoring = require('./scoring');\n\n\nvar feedback = {\n    default_feedback: {\n        warning: '',\n        suggestions: [_enzoic_strings2.default.suggestions.defaultFeedback, _enzoic_strings2.default.suggestions.defaultFeedback2]\n    },\n\n    get_feedback: function get_feedback(score, sequence) {\n        // starting feedback\n        if (sequence.length === 0) {\n            return this.default_feedback;\n        }\n\n        // no feedback if score is good or great.\n        if (score > 2) {\n            return {\n                warning: '',\n                suggestions: []\n            };\n        }\n\n        // tie feedback to the longest match for longer sequences\n        var longest_match = sequence[0];\n        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n\n        try {\n            for (var _iterator = Array.from(sequence.slice(1))[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n                var match = _step.value;\n\n                if (match.token.length > longest_match.token.length) {\n                    longest_match = match;\n                }\n            }\n        } catch (err) {\n            _didIteratorError = true;\n            _iteratorError = err;\n        } finally {\n            try {\n                if (!_iteratorNormalCompletion && _iterator.return) {\n                    _iterator.return();\n                }\n            } finally {\n                if (_didIteratorError) {\n                    throw _iteratorError;\n                }\n            }\n        }\n\n        feedback = this.get_match_feedback(longest_match, sequence.length === 1);\n        var extra_feedback = _enzoic_strings2.default.suggestions.addWord;\n        if (feedback != null) {\n            feedback.suggestions.unshift(extra_feedback);\n            if (feedback.warning == null) {\n                feedback.warning = '';\n            }\n        } else {\n            feedback = {\n                warning: '',\n                suggestions: [extra_feedback]\n            };\n        }\n        return feedback;\n    },\n    get_match_feedback: function get_match_feedback(match, is_sole_match) {\n        switch (match.pattern) {\n            case 'dictionary':\n                return this.get_dictionary_match_feedback(match, is_sole_match);\n\n            case 'spatial':\n                var layout = match.graph.toUpperCase();\n                var warning = match.turns === 1 ? _enzoic_strings2.default.suggestions.rowsOfKeys : _enzoic_strings2.default.suggestions.shortKeyboardPatterns;\n                return {\n                    warning: warning,\n                    suggestions: [_enzoic_strings2.default.suggestions.longerKeyboardPattern]\n                };\n\n            case 'repeat':\n                warning = match.base_token.length === 1 ? _enzoic_strings2.default.suggestions.shortRepeats : _enzoic_strings2.default.suggestions.longRepeats;\n                return {\n                    warning: warning,\n                    suggestions: [_enzoic_strings2.default.suggestions.avoidRepeatedWords]\n                };\n\n            case 'sequence':\n                return {\n                    warning: _enzoic_strings2.default.suggestions.avoidSequences,\n                    suggestions: [_enzoic_strings2.default.suggestions.avoidSequences2]\n                };\n\n            case 'regex':\n                if (match.regex_name === 'recent_year') {\n                    return {\n                        warning: _enzoic_strings2.default.suggestions.recentYears,\n                        suggestions: [_enzoic_strings2.default.suggestions.avoidRecentYears, _enzoic_strings2.default.suggestions.avoidAssociatedYears]\n                    };\n                }\n                break;\n\n            case 'date':\n                return {\n                    warning: _enzoic_strings2.default.suggestions.datesAreEasy,\n                    suggestions: [_enzoic_strings2.default.suggestions.avoidAssociatedDates]\n                };\n        }\n    },\n    get_dictionary_match_feedback: function get_dictionary_match_feedback(match, is_sole_match) {\n        var warning = function () {\n            if (match.dictionary_name === 'passwords') {\n                if (is_sole_match && !match.l33t && !match.reversed) {\n                    if (match.rank <= 10) {\n                        return _enzoic_strings2.default.suggestions.topTenPassword;\n                    } else if (match.rank <= 100) {\n                        return _enzoic_strings2.default.suggestions.top100Password;\n                    } else {\n                        return _enzoic_strings2.default.suggestions.veryCommonPassword;\n                    }\n                } else if (match.guesses_log10 <= 4) {\n                    return _enzoic_strings2.default.suggestions.similarToCommon;\n                }\n            } else if (match.dictionary_name === 'english_wikipedia') {\n                if (is_sole_match) {\n                    return _enzoic_strings2.default.suggestions.wordByItself;\n                }\n            } else if (['surnames', 'male_names', 'female_names'].includes(match.dictionary_name)) {\n                if (is_sole_match) {\n                    return _enzoic_strings2.default.suggestions.namesByThemselves;\n                } else {\n                    return _enzoic_strings2.default.suggestions.commonNamesAndSurnames;\n                }\n            } else {\n                return '';\n            }\n        }();\n\n        var suggestions = [];\n        var word = match.token;\n        if (word.match(scoring.START_UPPER)) {\n            suggestions.push(_enzoic_strings2.default.suggestions.capitalization);\n        } else if (word.match(scoring.ALL_UPPER) && word.toLowerCase() !== word) {\n            suggestions.push(_enzoic_strings2.default.suggestions.allUpperCase);\n        }\n\n        if (match.reversed && match.token.length >= 4) {\n            suggestions.push(_enzoic_strings2.default.suggestions.reversedWords);\n        }\n        if (match.l33t) {\n            suggestions.push(_enzoic_strings2.default.suggestions.predictableSubs);\n        }\n\n        var result = {\n            warning: warning,\n            suggestions: suggestions\n        };\n        return result;\n    }\n};\n\nmodule.exports = feedback;"
    },
    {
      "id": 17,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
      "name": "./node_modules/prop-types/index.js",
      "index": 14,
      "index2": 19,
      "size": 956,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "prop-types",
          "loc": "19:17-38"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n    Symbol.for &&\n    Symbol.for('react.element')) ||\n    0xeac7;\n\n  var isValidElement = function(object) {\n    return typeof object === 'object' &&\n      object !== null &&\n      object.$$typeof === REACT_ELEMENT_TYPE;\n  };\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n"
    },
    {
      "id": 18,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
      "name": "./node_modules/prop-types/factoryWithTypeCheckers.js",
      "index": 16,
      "index2": 17,
      "size": 20237,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
      "issuerId": 17,
      "issuerName": "./node_modules/prop-types/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 17,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
          "module": "./node_modules/prop-types/index.js",
          "moduleName": "./node_modules/prop-types/index.js",
          "type": "cjs require",
          "userRequest": "./factoryWithTypeCheckers",
          "loc": "23:19-55"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message) {\n    this.message = message;\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues);\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (propValue.hasOwnProperty(key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n          return null;\n        }\n      }\n\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          continue;\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from\n      // props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n"
    },
    {
      "id": 19,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/object-assign/index.js",
      "name": "./node_modules/object-assign/index.js",
      "index": 17,
      "index2": 14,
      "size": 2108,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
      "issuerId": 18,
      "issuerName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 18,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "type": "cjs require",
          "userRequest": "object-assign",
          "loc": "10:13-37"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 3,
      "source": "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n"
    },
    {
      "id": 20,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/checkPropTypes.js",
      "name": "./node_modules/prop-types/checkPropTypes.js",
      "index": 19,
      "index2": 16,
      "size": 3534,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
      "issuerId": 18,
      "issuerName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 18,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithTypeCheckers.js",
          "module": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "moduleName": "./node_modules/prop-types/factoryWithTypeCheckers.js",
          "type": "cjs require",
          "userRequest": "./checkPropTypes",
          "loc": "13:21-48"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 3,
      "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (typeSpecs.hasOwnProperty(typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          )\n\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = checkPropTypes;\n"
    },
    {
      "id": 21,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/factoryWithThrowingShims.js",
      "name": "./node_modules/prop-types/factoryWithThrowingShims.js",
      "index": 20,
      "index2": 18,
      "size": 1469,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
      "issuerId": 17,
      "issuerName": "./node_modules/prop-types/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 17,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/prop-types/index.js",
          "module": "./node_modules/prop-types/index.js",
          "moduleName": "./node_modules/prop-types/index.js",
          "type": "cjs require",
          "userRequest": "./factoryWithThrowingShims",
          "loc": "27:19-56"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 2,
      "source": "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim\n  };\n\n  ReactPropTypes.checkPropTypes = emptyFunction;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n"
    },
    {
      "id": 22,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha1.js",
      "name": "./src/hashes/sha1.js",
      "index": 21,
      "index2": 21,
      "size": 5232,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "./hashes/sha1",
          "loc": "27:11-35"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n/*  SHA-1 implementation in JavaScript                  (c) Chris Veness 2002-2014 / MIT Licence  */\n/*                                                                                                */\n/*  - see http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html                              */\n/*        http://csrc.nist.gov/groups/ST/toolkit/examples.html                                    */\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n/**\n * SHA-1 hash function reference implementation.\n *\n * @namespace\n */\nvar Enzoic = {};\nEnzoic.Sha1 = {};\n\n/**\n * Generates SHA-1 hash of string.\n *\n * @param   {string} msg - (Unicode) string to be hashed.\n * @returns {string} Hash of msg as hex character string.\n */\nEnzoic.Sha1.hash = function (msg) {\n    // convert string to UTF-8, as SHA only deals with byte-streams\n    msg = msg.utf8Encode();\n\n    // constants [§4.2.1]\n    var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n\n    // PREPROCESSING\n\n    msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1]\n\n    // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1]\n    var l = msg.length / 4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length\n    var N = Math.ceil(l / 16); // number of 16-integer-blocks required to hold 'l' ints\n    var M = new Array(N);\n\n    for (var i = 0; i < N; i++) {\n        M[i] = new Array(16);\n        for (var j = 0; j < 16; j++) {\n            // encode 4 chars per integer, big-endian encoding\n            M[i][j] = msg.charCodeAt(i * 64 + j * 4) << 24 | msg.charCodeAt(i * 64 + j * 4 + 1) << 16 | msg.charCodeAt(i * 64 + j * 4 + 2) << 8 | msg.charCodeAt(i * 64 + j * 4 + 3);\n        } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0\n    }\n    // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1]\n    // note: most significant word would be (len-1)*8 >>> 32, but since JS converts\n    // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators\n    M[N - 1][14] = (msg.length - 1) * 8 / Math.pow(2, 32);M[N - 1][14] = Math.floor(M[N - 1][14]);\n    M[N - 1][15] = (msg.length - 1) * 8 & 0xffffffff;\n\n    // set initial hash value [§5.3.1]\n    var H0 = 0x67452301;\n    var H1 = 0xefcdab89;\n    var H2 = 0x98badcfe;\n    var H3 = 0x10325476;\n    var H4 = 0xc3d2e1f0;\n\n    // HASH COMPUTATION [§6.1.2]\n\n    var W = new Array(80);var a, b, c, d, e;\n    for (var i = 0; i < N; i++) {\n\n        // 1 - prepare message schedule 'W'\n        for (var t = 0; t < 16; t++) {\n            W[t] = M[i][t];\n        }for (var t = 16; t < 80; t++) {\n            W[t] = _utils2.default.ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n        } // 2 - initialise five working variables a, b, c, d, e with previous hash value\n        a = H0;b = H1;c = H2;d = H3;e = H4;\n\n        // 3 - main loop\n        for (var t = 0; t < 80; t++) {\n            var s = Math.floor(t / 20); // seq for blocks of 'f' functions and 'K' constants\n            var T = _utils2.default.ROTL(a, 5) + Enzoic.Sha1.f(s, b, c, d) + e + K[s] + W[t] & 0xffffffff;\n            e = d;\n            d = c;\n            c = _utils2.default.ROTL(b, 30);\n            b = a;\n            a = T;\n        }\n\n        // 4 - compute the new intermediate hash value (note 'addition modulo 2^32')\n        H0 = H0 + a & 0xffffffff;\n        H1 = H1 + b & 0xffffffff;\n        H2 = H2 + c & 0xffffffff;\n        H3 = H3 + d & 0xffffffff;\n        H4 = H4 + e & 0xffffffff;\n    }\n\n    return _utils2.default.toHexStr(H0) + _utils2.default.toHexStr(H1) + _utils2.default.toHexStr(H2) + _utils2.default.toHexStr(H3) + _utils2.default.toHexStr(H4);\n};\n\n/**\n * Function 'f' [§4.1.1].\n * @private\n */\nEnzoic.Sha1.f = function (s, x, y, z) {\n    switch (s) {\n        case 0:\n            return x & y ^ ~x & z; // Ch()\n        case 1:\n            return x ^ y ^ z; // Parity()\n        case 2:\n            return x & y ^ x & z ^ y & z; // Maj()\n        case 3:\n            return x ^ y ^ z; // Parity()\n    }\n};\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n/** Extend String object with method to encode multi-byte string to utf8\n *  - monsur.hossa.in/2012/07/20/utf-8-in-javascript.html */\nif (typeof String.prototype.utf8Encode == 'undefined') {\n    String.prototype.utf8Encode = function () {\n        return unescape(encodeURIComponent(this));\n    };\n}\n\n/** Extend String object with method to decode utf8 string to multi-byte */\nif (typeof String.prototype.utf8Decode == 'undefined') {\n    String.prototype.utf8Decode = function () {\n        try {\n            return decodeURIComponent(escape(this));\n        } catch (e) {\n            return this; // invalid UTF-8? return as-is\n        }\n    };\n}\n\nexports.default = Enzoic.Sha1;"
    },
    {
      "id": 23,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/sha256.js",
      "name": "./src/hashes/sha256.js",
      "index": 23,
      "index2": 22,
      "size": 5906,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "./hashes/sha256",
          "loc": "31:12-38"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n/*  SHA-256 implementation in JavaScript                (c) Chris Veness 2002-2014 / MIT Licence  */\n/*                                                                                                */\n/*  - see http://csrc.nist.gov/groups/ST/toolkit/secure_hashing.html                              */\n/*        http://csrc.nist.gov/groups/ST/toolkit/examples.html                                    */\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n/**\n * SHA-256 hash function reference implementation.\n *\n * @namespace\n */\nvar Enzoic = {};\nEnzoic.Sha256 = {};\n\n/**\n * Generates SHA-256 hash of string.\n *\n * @param   {string} msg - String to be hashed\n * @returns {string} Hash of msg as hex character string\n */\nEnzoic.Sha256.hash = function (msg) {\n    // convert string to UTF-8, as SHA only deals with byte-streams\n    msg = msg.utf8Encode();\n\n    // constants [§4.2.2]\n    var K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n    // initial hash value [§5.3.1]\n    var H = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n\n    // PREPROCESSING\n\n    msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1]\n\n    // convert string msg into 512-bit/16-integer blocks arrays of ints [§5.2.1]\n    var l = msg.length / 4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length\n    var N = Math.ceil(l / 16); // number of 16-integer-blocks required to hold 'l' ints\n    var M = new Array(N);\n\n    for (var i = 0; i < N; i++) {\n        M[i] = new Array(16);\n        for (var j = 0; j < 16; j++) {\n            // encode 4 chars per integer, big-endian encoding\n            M[i][j] = msg.charCodeAt(i * 64 + j * 4) << 24 | msg.charCodeAt(i * 64 + j * 4 + 1) << 16 | msg.charCodeAt(i * 64 + j * 4 + 2) << 8 | msg.charCodeAt(i * 64 + j * 4 + 3);\n        } // note running off the end of msg is ok 'cos bitwise ops on NaN return 0\n    }\n    // add length (in bits) into final pair of 32-bit integers (big-endian) [§5.1.1]\n    // note: most significant word would be (len-1)*8 >>> 32, but since JS converts\n    // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators\n    M[N - 1][14] = (msg.length - 1) * 8 / Math.pow(2, 32);M[N - 1][14] = Math.floor(M[N - 1][14]);\n    M[N - 1][15] = (msg.length - 1) * 8 & 0xffffffff;\n\n    // HASH COMPUTATION [§6.1.2]\n\n    var W = new Array(64);var a, b, c, d, e, f, g, h;\n    for (var i = 0; i < N; i++) {\n\n        // 1 - prepare message schedule 'W'\n        for (var t = 0; t < 16; t++) {\n            W[t] = M[i][t];\n        }for (var t = 16; t < 64; t++) {\n            W[t] = Enzoic.Sha256.σ1(W[t - 2]) + W[t - 7] + Enzoic.Sha256.σ0(W[t - 15]) + W[t - 16] & 0xffffffff;\n        } // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value\n        a = H[0];b = H[1];c = H[2];d = H[3];e = H[4];f = H[5];g = H[6];h = H[7];\n\n        // 3 - main loop (note 'addition modulo 2^32')\n        for (var t = 0; t < 64; t++) {\n            var T1 = h + Enzoic.Sha256.Σ1(e) + Enzoic.Sha256.Ch(e, f, g) + K[t] + W[t];\n            var T2 = Enzoic.Sha256.Σ0(a) + Enzoic.Sha256.Maj(a, b, c);\n            h = g;\n            g = f;\n            f = e;\n            e = d + T1 & 0xffffffff;\n            d = c;\n            c = b;\n            b = a;\n            a = T1 + T2 & 0xffffffff;\n        }\n        // 4 - compute the new intermediate hash value (note 'addition modulo 2^32')\n        H[0] = H[0] + a & 0xffffffff;\n        H[1] = H[1] + b & 0xffffffff;\n        H[2] = H[2] + c & 0xffffffff;\n        H[3] = H[3] + d & 0xffffffff;\n        H[4] = H[4] + e & 0xffffffff;\n        H[5] = H[5] + f & 0xffffffff;\n        H[6] = H[6] + g & 0xffffffff;\n        H[7] = H[7] + h & 0xffffffff;\n    }\n\n    return _utils2.default.toHexStr(H[0]) + _utils2.default.toHexStr(H[1]) + _utils2.default.toHexStr(H[2]) + _utils2.default.toHexStr(H[3]) + _utils2.default.toHexStr(H[4]) + _utils2.default.toHexStr(H[5]) + _utils2.default.toHexStr(H[6]) + _utils2.default.toHexStr(H[7]);\n};\n\n/**\n * Logical functions [§4.1.2].\n * @private\n */\nEnzoic.Sha256.Σ0 = function (x) {\n    return _utils2.default.ROTR(2, x) ^ _utils2.default.ROTR(13, x) ^ _utils2.default.ROTR(22, x);\n};\nEnzoic.Sha256.Σ1 = function (x) {\n    return _utils2.default.ROTR(6, x) ^ _utils2.default.ROTR(11, x) ^ _utils2.default.ROTR(25, x);\n};\nEnzoic.Sha256.σ0 = function (x) {\n    return _utils2.default.ROTR(7, x) ^ _utils2.default.ROTR(18, x) ^ x >>> 3;\n};\nEnzoic.Sha256.σ1 = function (x) {\n    return _utils2.default.ROTR(17, x) ^ _utils2.default.ROTR(19, x) ^ x >>> 10;\n};\nEnzoic.Sha256.Ch = function (x, y, z) {\n    return x & y ^ ~x & z;\n};\nEnzoic.Sha256.Maj = function (x, y, z) {\n    return x & y ^ x & z ^ y & z;\n};\n\nexports.default = Enzoic.Sha256;"
    },
    {
      "id": 24,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/hashes/md5.js",
      "name": "./src/hashes/md5.js",
      "index": 24,
      "index2": 23,
      "size": 8578,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "./hashes/md5",
          "loc": "35:10-33"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (string) {\n\n    function RotateLeft(lValue, iShiftBits) {\n        return lValue << iShiftBits | lValue >>> 32 - iShiftBits;\n    }\n\n    function AddUnsigned(lX, lY) {\n        var lX4, lY4, lX8, lY8, lResult;\n        lX8 = lX & 0x80000000;\n        lY8 = lY & 0x80000000;\n        lX4 = lX & 0x40000000;\n        lY4 = lY & 0x40000000;\n        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);\n        if (lX4 & lY4) {\n            return lResult ^ 0x80000000 ^ lX8 ^ lY8;\n        }\n        if (lX4 | lY4) {\n            if (lResult & 0x40000000) {\n                return lResult ^ 0xC0000000 ^ lX8 ^ lY8;\n            } else {\n                return lResult ^ 0x40000000 ^ lX8 ^ lY8;\n            }\n        } else {\n            return lResult ^ lX8 ^ lY8;\n        }\n    }\n\n    function F(x, y, z) {\n        return x & y | ~x & z;\n    }\n    function G(x, y, z) {\n        return x & z | y & ~z;\n    }\n    function H(x, y, z) {\n        return x ^ y ^ z;\n    }\n    function I(x, y, z) {\n        return y ^ (x | ~z);\n    }\n\n    function FF(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function GG(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function HH(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function II(a, b, c, d, x, s, ac) {\n        a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));\n        return AddUnsigned(RotateLeft(a, s), b);\n    };\n\n    function ConvertToWordArray(string) {\n        var lWordCount;\n        var lMessageLength = string.length;\n        var lNumberOfWords_temp1 = lMessageLength + 8;\n        var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - lNumberOfWords_temp1 % 64) / 64;\n        var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\n        var lWordArray = Array(lNumberOfWords - 1);\n        var lBytePosition = 0;\n        var lByteCount = 0;\n        while (lByteCount < lMessageLength) {\n            lWordCount = (lByteCount - lByteCount % 4) / 4;\n            lBytePosition = lByteCount % 4 * 8;\n            lWordArray[lWordCount] = lWordArray[lWordCount] | string.charCodeAt(lByteCount) << lBytePosition;\n            lByteCount++;\n        }\n        lWordCount = (lByteCount - lByteCount % 4) / 4;\n        lBytePosition = lByteCount % 4 * 8;\n        lWordArray[lWordCount] = lWordArray[lWordCount] | 0x80 << lBytePosition;\n        lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\n        lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\n        return lWordArray;\n    };\n\n    function WordToHex(lValue) {\n        var WordToHexValue = \"\",\n            WordToHexValue_temp = \"\",\n            lByte,\n            lCount;\n        for (lCount = 0; lCount <= 3; lCount++) {\n            lByte = lValue >>> lCount * 8 & 255;\n            WordToHexValue_temp = \"0\" + lByte.toString(16);\n            WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);\n        }\n        return WordToHexValue;\n    };\n\n    function Utf8Encode(string) {\n        string = string.replace(/\\r\\n/g, \"\\n\");\n        var utftext = \"\";\n\n        for (var n = 0; n < string.length; n++) {\n\n            var c = string.charCodeAt(n);\n\n            if (c < 128) {\n                utftext += String.fromCharCode(c);\n            } else if (c > 127 && c < 2048) {\n                utftext += String.fromCharCode(c >> 6 | 192);\n                utftext += String.fromCharCode(c & 63 | 128);\n            } else {\n                utftext += String.fromCharCode(c >> 12 | 224);\n                utftext += String.fromCharCode(c >> 6 & 63 | 128);\n                utftext += String.fromCharCode(c & 63 | 128);\n            }\n        }\n\n        return utftext;\n    };\n\n    var x = Array();\n    var k, AA, BB, CC, DD, a, b, c, d;\n    var S11 = 7,\n        S12 = 12,\n        S13 = 17,\n        S14 = 22;\n    var S21 = 5,\n        S22 = 9,\n        S23 = 14,\n        S24 = 20;\n    var S31 = 4,\n        S32 = 11,\n        S33 = 16,\n        S34 = 23;\n    var S41 = 6,\n        S42 = 10,\n        S43 = 15,\n        S44 = 21;\n\n    string = Utf8Encode(string);\n\n    x = ConvertToWordArray(string);\n\n    a = 0x67452301;b = 0xEFCDAB89;c = 0x98BADCFE;d = 0x10325476;\n\n    for (k = 0; k < x.length; k += 16) {\n        AA = a;BB = b;CC = c;DD = d;\n        a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);\n        d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);\n        c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);\n        b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);\n        a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);\n        d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);\n        c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);\n        b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);\n        a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);\n        d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);\n        c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);\n        b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);\n        a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);\n        d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);\n        c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);\n        b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);\n        a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);\n        d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);\n        c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);\n        b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);\n        a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);\n        d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);\n        c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);\n        b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);\n        a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);\n        d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);\n        c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);\n        b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);\n        a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);\n        d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);\n        c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);\n        b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);\n        a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);\n        d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);\n        c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);\n        b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);\n        a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);\n        d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);\n        c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);\n        b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);\n        a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);\n        d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);\n        c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);\n        b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);\n        a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);\n        d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);\n        c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);\n        b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);\n        a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);\n        d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);\n        c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);\n        b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);\n        a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);\n        d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);\n        c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);\n        b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);\n        a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);\n        d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);\n        c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);\n        b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);\n        a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);\n        d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);\n        c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);\n        b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);\n        a = AddUnsigned(a, AA);\n        b = AddUnsigned(b, BB);\n        c = AddUnsigned(c, CC);\n        d = AddUnsigned(d, DD);\n    }\n\n    var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);\n\n    return temp.toLowerCase();\n};\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n;"
    },
    {
      "id": 25,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/url-loader/dist/cjs.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/assets/warning.png",
      "name": "./assets/warning.png",
      "index": 25,
      "index2": 24,
      "size": 1481,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "../assets/warning.png",
          "loc": "39:15-47"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjdBNEU0MDQ5NUY5MTFFOEI2RDNDRkMwNDcwQTA4QzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjdBNEU0MDU5NUY5MTFFOEI2RDNDRkMwNDcwQTA4QzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozMDlEMzFGRjk1RjMxMUU4QjZEM0NGQzA0NzBBMDhDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozMDlEMzIwMDk1RjMxMUU4QjZEM0NGQzA0NzBBMDhDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtiZo3oAAAClSURBVHjaYvz//z8DDlAOpTuxyoI0YsFp/xEgDZsabJoEgfguksa7UDEUdUxYHJEGxEpIfCWoGF6nKgHxOySbYDa/g8rhdOpMJCcqQTEMzMSl0eU/KkDX+B+qBkPjGSyK0A07g64x7T8mOIPFMHj0wIL/HRYFxlCMDkBqBVmgKUQQS7Qo4UhRILXljKAgx6MIF7gH0ugCZISSqHE1I55EjhcABBgAzUOWp0MSPh0AAAAASUVORK5CYII=\""
    },
    {
      "id": 26,
      "identifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/url-loader/dist/cjs.js!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/assets/info.png",
      "name": "./assets/info.png",
      "index": 26,
      "index2": 25,
      "size": 1497,
      "cacheable": true,
      "built": true,
      "optional": false,
      "prefetched": false,
      "chunks": [
        0
      ],
      "assets": [],
      "issuer": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
      "issuerId": 6,
      "issuerName": "./src/index.js",
      "failed": false,
      "errors": 0,
      "warnings": 0,
      "reasons": [
        {
          "moduleId": 6,
          "moduleIdentifier": "/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/node_modules/babel-loader/lib/index.js??ref--0!/Users/mike/dev/enzoic/enzoic_react_password_strength_meter/src/index.js",
          "module": "./src/index.js",
          "moduleName": "./src/index.js",
          "type": "cjs require",
          "userRequest": "../assets/info.png",
          "loc": "43:12-41"
        }
      ],
      "usedExports": true,
      "providedExports": null,
      "optimizationBailout": [],
      "depth": 1,
      "source": "module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEQxNjcyRDM5NUZGMTFFOEI2RDNDRkMwNDcwQTA4QzYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEQxNjcyRDQ5NUZGMTFFOEI2RDNDRkMwNDcwQTA4QzYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4RDE2NzJEMTk1RkYxMUU4QjZEM0NGQzA0NzBBMDhDNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4RDE2NzJEMjk1RkYxMUU4QjZEM0NGQzA0NzBBMDhDNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoZK8UkAAACwSURBVHjaYmTAAv7//58GpFyA2Bgq9B6I9wDxLEZGxnsMuABQowsQn/mPG7wD4pn4NL/7TxxYha7ZGIdmkNhdgoYAObtxKDKGyq/CIe/CBCKgAUYOKGdBCmlsAOQyUAwo4ZA3ZsIjOQuITYDYFYhxRZ0gEx7bQS4TxBvvQMCEx3RjAt4DJzCQAWdxSJ5FkluNRw3OaJwJxEpQbIwrGgklJJJSI/lJmZLMxEhpdgYIMAB96KVkdZcc3gAAAABJRU5ErkJggg==\""
    }
  ],
  "filteredModules": 0,
  "children": []
}
