{"version":3,"sources":["jsdelivr-header.js","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/webpack/universalModuleDefinition","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/node_modules/qrcode-generator/qrcode.js","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/tools/merge.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/tools/downloadURI.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/tools/toDataUrl.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/errorCorrectionPercents.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/figures/dot/QRDot.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/dotTypes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/figures/cornerSquare/QRCornerSquare.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/cornerSquareTypes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/figures/cornerDot/QRCornerDot.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/cornerDotTypes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/shapeTypes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/core/QRSVG.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/tools/calculateImageSize.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/gradientTypes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/drawTypes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/qrTypes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/core/QROptions.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/errorCorrectionLevels.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/tools/sanitizeOptions.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/index.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/core/QRCodeStyling.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/tools/getMode.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/src/constants/modes.ts","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/webpack/bootstrap","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/webpack/startup","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/webpack/runtime/compat get default export","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/webpack/runtime/define property getters","/npm/qr-code-styling@1.6.0/lib/webpack:/QRCodeStyling/webpack/runtime/hasOwnProperty shorthand"],"names":[],"mappings":"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","file":"/npm/qr-code-styling@1.6.0/lib/qr-code-styling.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/qr-code-styling@1.6.0/lib/qr-code-styling.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"QRCodeStyling\"] = factory();\n\telse\n\t\troot[\"QRCodeStyling\"] = factory();\n})(self, function() {\nreturn ","//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n//  http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n//  http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\nvar qrcode = function() {\n\n  //---------------------------------------------------------------------\n  // qrcode\n  //---------------------------------------------------------------------\n\n  /**\n   * qrcode\n   * @param typeNumber 1 to 40\n   * @param errorCorrectionLevel 'L','M','Q','H'\n   */\n  var qrcode = function(typeNumber, errorCorrectionLevel) {\n\n    var PAD0 = 0xEC;\n    var PAD1 = 0x11;\n\n    var _typeNumber = typeNumber;\n    var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n    var _modules = null;\n    var _moduleCount = 0;\n    var _dataCache = null;\n    var _dataList = [];\n\n    var _this = {};\n\n    var makeImpl = function(test, maskPattern) {\n\n      _moduleCount = _typeNumber * 4 + 17;\n      _modules = function(moduleCount) {\n        var modules = new Array(moduleCount);\n        for (var row = 0; row < moduleCount; row += 1) {\n          modules[row] = new Array(moduleCount);\n          for (var col = 0; col < moduleCount; col += 1) {\n            modules[row][col] = null;\n          }\n        }\n        return modules;\n      }(_moduleCount);\n\n      setupPositionProbePattern(0, 0);\n      setupPositionProbePattern(_moduleCount - 7, 0);\n      setupPositionProbePattern(0, _moduleCount - 7);\n      setupPositionAdjustPattern();\n      setupTimingPattern();\n      setupTypeInfo(test, maskPattern);\n\n      if (_typeNumber >= 7) {\n        setupTypeNumber(test);\n      }\n\n      if (_dataCache == null) {\n        _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n      }\n\n      mapData(_dataCache, maskPattern);\n    };\n\n    var setupPositionProbePattern = function(row, col) {\n\n      for (var r = -1; r <= 7; r += 1) {\n\n        if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n        for (var c = -1; c <= 7; c += 1) {\n\n          if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n          if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n              || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n              || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n            _modules[row + r][col + c] = true;\n          } else {\n            _modules[row + r][col + c] = false;\n          }\n        }\n      }\n    };\n\n    var getBestMaskPattern = function() {\n\n      var minLostPoint = 0;\n      var pattern = 0;\n\n      for (var i = 0; i < 8; i += 1) {\n\n        makeImpl(true, i);\n\n        var lostPoint = QRUtil.getLostPoint(_this);\n\n        if (i == 0 || minLostPoint > lostPoint) {\n          minLostPoint = lostPoint;\n          pattern = i;\n        }\n      }\n\n      return pattern;\n    };\n\n    var setupTimingPattern = function() {\n\n      for (var r = 8; r < _moduleCount - 8; r += 1) {\n        if (_modules[r][6] != null) {\n          continue;\n        }\n        _modules[r][6] = (r % 2 == 0);\n      }\n\n      for (var c = 8; c < _moduleCount - 8; c += 1) {\n        if (_modules[6][c] != null) {\n          continue;\n        }\n        _modules[6][c] = (c % 2 == 0);\n      }\n    };\n\n    var setupPositionAdjustPattern = function() {\n\n      var pos = QRUtil.getPatternPosition(_typeNumber);\n\n      for (var i = 0; i < pos.length; i += 1) {\n\n        for (var j = 0; j < pos.length; j += 1) {\n\n          var row = pos[i];\n          var col = pos[j];\n\n          if (_modules[row][col] != null) {\n            continue;\n          }\n\n          for (var r = -2; r <= 2; r += 1) {\n\n            for (var c = -2; c <= 2; c += 1) {\n\n              if (r == -2 || r == 2 || c == -2 || c == 2\n                  || (r == 0 && c == 0) ) {\n                _modules[row + r][col + c] = true;\n              } else {\n                _modules[row + r][col + c] = false;\n              }\n            }\n          }\n        }\n      }\n    };\n\n    var setupTypeNumber = function(test) {\n\n      var bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n      }\n\n      for (var i = 0; i < 18; i += 1) {\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n        _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n      }\n    };\n\n    var setupTypeInfo = function(test, maskPattern) {\n\n      var data = (_errorCorrectionLevel << 3) | maskPattern;\n      var bits = QRUtil.getBCHTypeInfo(data);\n\n      // vertical\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 6) {\n          _modules[i][8] = mod;\n        } else if (i < 8) {\n          _modules[i + 1][8] = mod;\n        } else {\n          _modules[_moduleCount - 15 + i][8] = mod;\n        }\n      }\n\n      // horizontal\n      for (var i = 0; i < 15; i += 1) {\n\n        var mod = (!test && ( (bits >> i) & 1) == 1);\n\n        if (i < 8) {\n          _modules[8][_moduleCount - i - 1] = mod;\n        } else if (i < 9) {\n          _modules[8][15 - i - 1 + 1] = mod;\n        } else {\n          _modules[8][15 - i - 1] = mod;\n        }\n      }\n\n      // fixed module\n      _modules[_moduleCount - 8][8] = (!test);\n    };\n\n    var mapData = function(data, maskPattern) {\n\n      var inc = -1;\n      var row = _moduleCount - 1;\n      var bitIndex = 7;\n      var byteIndex = 0;\n      var maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n      for (var col = _moduleCount - 1; col > 0; col -= 2) {\n\n        if (col == 6) col -= 1;\n\n        while (true) {\n\n          for (var c = 0; c < 2; c += 1) {\n\n            if (_modules[row][col - c] == null) {\n\n              var dark = false;\n\n              if (byteIndex < data.length) {\n                dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n              }\n\n              var mask = maskFunc(row, col - c);\n\n              if (mask) {\n                dark = !dark;\n              }\n\n              _modules[row][col - c] = dark;\n              bitIndex -= 1;\n\n              if (bitIndex == -1) {\n                byteIndex += 1;\n                bitIndex = 7;\n              }\n            }\n          }\n\n          row += inc;\n\n          if (row < 0 || _moduleCount <= row) {\n            row -= inc;\n            inc = -inc;\n            break;\n          }\n        }\n      }\n    };\n\n    var createBytes = function(buffer, rsBlocks) {\n\n      var offset = 0;\n\n      var maxDcCount = 0;\n      var maxEcCount = 0;\n\n      var dcdata = new Array(rsBlocks.length);\n      var ecdata = new Array(rsBlocks.length);\n\n      for (var r = 0; r < rsBlocks.length; r += 1) {\n\n        var dcCount = rsBlocks[r].dataCount;\n        var ecCount = rsBlocks[r].totalCount - dcCount;\n\n        maxDcCount = Math.max(maxDcCount, dcCount);\n        maxEcCount = Math.max(maxEcCount, ecCount);\n\n        dcdata[r] = new Array(dcCount);\n\n        for (var i = 0; i < dcdata[r].length; i += 1) {\n          dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n        }\n        offset += dcCount;\n\n        var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n        var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n        var modPoly = rawPoly.mod(rsPoly);\n        ecdata[r] = new Array(rsPoly.getLength() - 1);\n        for (var i = 0; i < ecdata[r].length; i += 1) {\n          var modIndex = i + modPoly.getLength() - ecdata[r].length;\n          ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n        }\n      }\n\n      var totalCodeCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalCodeCount += rsBlocks[i].totalCount;\n      }\n\n      var data = new Array(totalCodeCount);\n      var index = 0;\n\n      for (var i = 0; i < maxDcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < dcdata[r].length) {\n            data[index] = dcdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      for (var i = 0; i < maxEcCount; i += 1) {\n        for (var r = 0; r < rsBlocks.length; r += 1) {\n          if (i < ecdata[r].length) {\n            data[index] = ecdata[r][i];\n            index += 1;\n          }\n        }\n      }\n\n      return data;\n    };\n\n    var createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n      var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n      var buffer = qrBitBuffer();\n\n      for (var i = 0; i < dataList.length; i += 1) {\n        var data = dataList[i];\n        buffer.put(data.getMode(), 4);\n        buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n        data.write(buffer);\n      }\n\n      // calc num max data.\n      var totalDataCount = 0;\n      for (var i = 0; i < rsBlocks.length; i += 1) {\n        totalDataCount += rsBlocks[i].dataCount;\n      }\n\n      if (buffer.getLengthInBits() > totalDataCount * 8) {\n        throw 'code length overflow. ('\n          + buffer.getLengthInBits()\n          + '>'\n          + totalDataCount * 8\n          + ')';\n      }\n\n      // end code\n      if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n        buffer.put(0, 4);\n      }\n\n      // padding\n      while (buffer.getLengthInBits() % 8 != 0) {\n        buffer.putBit(false);\n      }\n\n      // padding\n      while (true) {\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD0, 8);\n\n        if (buffer.getLengthInBits() >= totalDataCount * 8) {\n          break;\n        }\n        buffer.put(PAD1, 8);\n      }\n\n      return createBytes(buffer, rsBlocks);\n    };\n\n    _this.addData = function(data, mode) {\n\n      mode = mode || 'Byte';\n\n      var newData = null;\n\n      switch(mode) {\n      case 'Numeric' :\n        newData = qrNumber(data);\n        break;\n      case 'Alphanumeric' :\n        newData = qrAlphaNum(data);\n        break;\n      case 'Byte' :\n        newData = qr8BitByte(data);\n        break;\n      case 'Kanji' :\n        newData = qrKanji(data);\n        break;\n      default :\n        throw 'mode:' + mode;\n      }\n\n      _dataList.push(newData);\n      _dataCache = null;\n    };\n\n    _this.isDark = function(row, col) {\n      if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n        throw row + ',' + col;\n      }\n      return _modules[row][col];\n    };\n\n    _this.getModuleCount = function() {\n      return _moduleCount;\n    };\n\n    _this.make = function() {\n      if (_typeNumber < 1) {\n        var typeNumber = 1;\n\n        for (; typeNumber < 40; typeNumber++) {\n          var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n          var buffer = qrBitBuffer();\n\n          for (var i = 0; i < _dataList.length; i++) {\n            var data = _dataList[i];\n            buffer.put(data.getMode(), 4);\n            buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n            data.write(buffer);\n          }\n\n          var totalDataCount = 0;\n          for (var i = 0; i < rsBlocks.length; i++) {\n            totalDataCount += rsBlocks[i].dataCount;\n          }\n\n          if (buffer.getLengthInBits() <= totalDataCount * 8) {\n            break;\n          }\n        }\n\n        _typeNumber = typeNumber;\n      }\n\n      makeImpl(false, getBestMaskPattern() );\n    };\n\n    _this.createTableTag = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var qrHtml = '';\n\n      qrHtml += '<table style=\"';\n      qrHtml += ' border-width: 0px; border-style: none;';\n      qrHtml += ' border-collapse: collapse;';\n      qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n      qrHtml += '\">';\n      qrHtml += '<tbody>';\n\n      for (var r = 0; r < _this.getModuleCount(); r += 1) {\n\n        qrHtml += '<tr>';\n\n        for (var c = 0; c < _this.getModuleCount(); c += 1) {\n          qrHtml += '<td style=\"';\n          qrHtml += ' border-width: 0px; border-style: none;';\n          qrHtml += ' border-collapse: collapse;';\n          qrHtml += ' padding: 0px; margin: 0px;';\n          qrHtml += ' width: ' + cellSize + 'px;';\n          qrHtml += ' height: ' + cellSize + 'px;';\n          qrHtml += ' background-color: ';\n          qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n          qrHtml += ';';\n          qrHtml += '\"/>';\n        }\n\n        qrHtml += '</tr>';\n      }\n\n      qrHtml += '</tbody>';\n      qrHtml += '</table>';\n\n      return qrHtml;\n    };\n\n    _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n      var opts = {};\n      if (typeof arguments[0] == 'object') {\n        // Called by options.\n        opts = arguments[0];\n        // overwrite cellSize and margin.\n        cellSize = opts.cellSize;\n        margin = opts.margin;\n        alt = opts.alt;\n        title = opts.title;\n      }\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      // Compose alt property surrogate\n      alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n      alt.text = alt.text || null;\n      alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n      // Compose title property surrogate\n      title = (typeof title === 'string') ? {text: title} : title || {};\n      title.text = title.text || null;\n      title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var c, mc, r, mr, qrSvg='', rect;\n\n      rect = 'l' + cellSize + ',0 0,' + cellSize +\n        ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n      qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n      qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n      qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n      qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n      qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n          escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n      qrSvg += '>';\n      qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n          escapeXml(title.text) + '</title>' : '';\n      qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n          escapeXml(alt.text) + '</description>' : '';\n      qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n      qrSvg += '<path d=\"';\n\n      for (r = 0; r < _this.getModuleCount(); r += 1) {\n        mr = r * cellSize + margin;\n        for (c = 0; c < _this.getModuleCount(); c += 1) {\n          if (_this.isDark(r, c) ) {\n            mc = c*cellSize+margin;\n            qrSvg += 'M' + mc + ',' + mr + rect;\n          }\n        }\n      }\n\n      qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n      qrSvg += '</svg>';\n\n      return qrSvg;\n    };\n\n    _this.createDataURL = function(cellSize, margin) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      return createDataURL(size, size, function(x, y) {\n        if (min <= x && x < max && min <= y && y < max) {\n          var c = Math.floor( (x - min) / cellSize);\n          var r = Math.floor( (y - min) / cellSize);\n          return _this.isDark(r, c)? 0 : 1;\n        } else {\n          return 1;\n        }\n      } );\n    };\n\n    _this.createImgTag = function(cellSize, margin, alt) {\n\n      cellSize = cellSize || 2;\n      margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n\n      var img = '';\n      img += '<img';\n      img += '\\u0020src=\"';\n      img += _this.createDataURL(cellSize, margin);\n      img += '\"';\n      img += '\\u0020width=\"';\n      img += size;\n      img += '\"';\n      img += '\\u0020height=\"';\n      img += size;\n      img += '\"';\n      if (alt) {\n        img += '\\u0020alt=\"';\n        img += escapeXml(alt);\n        img += '\"';\n      }\n      img += '/>';\n\n      return img;\n    };\n\n    var escapeXml = function(s) {\n      var escaped = '';\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charAt(i);\n        switch(c) {\n        case '<': escaped += '&lt;'; break;\n        case '>': escaped += '&gt;'; break;\n        case '&': escaped += '&amp;'; break;\n        case '\"': escaped += '&quot;'; break;\n        default : escaped += c; break;\n        }\n      }\n      return escaped;\n    };\n\n    var _createHalfASCII = function(margin) {\n      var cellSize = 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r1, r2, p;\n\n      var blocks = {\n        '██': '█',\n        '█ ': '▀',\n        ' █': '▄',\n        '  ': ' '\n      };\n\n      var blocksLastLineNoMargin = {\n        '██': '▀',\n        '█ ': '▀',\n        ' █': ' ',\n        '  ': ' '\n      };\n\n      var ascii = '';\n      for (y = 0; y < size; y += 2) {\n        r1 = Math.floor((y - min) / cellSize);\n        r2 = Math.floor((y + 1 - min) / cellSize);\n        for (x = 0; x < size; x += 1) {\n          p = '█';\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n            p = ' ';\n          }\n\n          if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n            p += ' ';\n          }\n          else {\n            p += '█';\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n        }\n\n        ascii += '\\n';\n      }\n\n      if (size % 2 && margin > 0) {\n        return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.createASCII = function(cellSize, margin) {\n      cellSize = cellSize || 1;\n\n      if (cellSize < 2) {\n        return _createHalfASCII(margin);\n      }\n\n      cellSize -= 1;\n      margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n      var size = _this.getModuleCount() * cellSize + margin * 2;\n      var min = margin;\n      var max = size - margin;\n\n      var y, x, r, p;\n\n      var white = Array(cellSize+1).join('██');\n      var black = Array(cellSize+1).join('  ');\n\n      var ascii = '';\n      var line = '';\n      for (y = 0; y < size; y += 1) {\n        r = Math.floor( (y - min) / cellSize);\n        line = '';\n        for (x = 0; x < size; x += 1) {\n          p = 1;\n\n          if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n            p = 0;\n          }\n\n          // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n          line += p ? white : black;\n        }\n\n        for (r = 0; r < cellSize; r += 1) {\n          ascii += line + '\\n';\n        }\n      }\n\n      return ascii.substring(0, ascii.length-1);\n    };\n\n    _this.renderTo2dContext = function(context, cellSize) {\n      cellSize = cellSize || 2;\n      var length = _this.getModuleCount();\n      for (var row = 0; row < length; row++) {\n        for (var col = 0; col < length; col++) {\n          context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n          context.fillRect(row * cellSize, col * cellSize, cellSize, cellSize);\n        }\n      }\n    }\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrcode.stringToBytes\n  //---------------------------------------------------------------------\n\n  qrcode.stringToBytesFuncs = {\n    'default' : function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        bytes.push(c & 0xff);\n      }\n      return bytes;\n    }\n  };\n\n  qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];\n\n  //---------------------------------------------------------------------\n  // qrcode.createStringToBytes\n  //---------------------------------------------------------------------\n\n  /**\n   * @param unicodeData base64 string of byte array.\n   * [16bit Unicode],[16bit Bytes], ...\n   * @param numChars\n   */\n  qrcode.createStringToBytes = function(unicodeData, numChars) {\n\n    // create conversion map.\n\n    var unicodeMap = function() {\n\n      var bin = base64DecodeInputStream(unicodeData);\n      var read = function() {\n        var b = bin.read();\n        if (b == -1) throw 'eof';\n        return b;\n      };\n\n      var count = 0;\n      var unicodeMap = {};\n      while (true) {\n        var b0 = bin.read();\n        if (b0 == -1) break;\n        var b1 = read();\n        var b2 = read();\n        var b3 = read();\n        var k = String.fromCharCode( (b0 << 8) | b1);\n        var v = (b2 << 8) | b3;\n        unicodeMap[k] = v;\n        count += 1;\n      }\n      if (count != numChars) {\n        throw count + ' != ' + numChars;\n      }\n\n      return unicodeMap;\n    }();\n\n    var unknownChar = '?'.charCodeAt(0);\n\n    return function(s) {\n      var bytes = [];\n      for (var i = 0; i < s.length; i += 1) {\n        var c = s.charCodeAt(i);\n        if (c < 128) {\n          bytes.push(c);\n        } else {\n          var b = unicodeMap[s.charAt(i)];\n          if (typeof b == 'number') {\n            if ( (b & 0xff) == b) {\n              // 1byte\n              bytes.push(b);\n            } else {\n              // 2bytes\n              bytes.push(b >>> 8);\n              bytes.push(b & 0xff);\n            }\n          } else {\n            bytes.push(unknownChar);\n          }\n        }\n      }\n      return bytes;\n    };\n  };\n\n  //---------------------------------------------------------------------\n  // QRMode\n  //---------------------------------------------------------------------\n\n  var QRMode = {\n    MODE_NUMBER :    1 << 0,\n    MODE_ALPHA_NUM : 1 << 1,\n    MODE_8BIT_BYTE : 1 << 2,\n    MODE_KANJI :     1 << 3\n  };\n\n  //---------------------------------------------------------------------\n  // QRErrorCorrectionLevel\n  //---------------------------------------------------------------------\n\n  var QRErrorCorrectionLevel = {\n    L : 1,\n    M : 0,\n    Q : 3,\n    H : 2\n  };\n\n  //---------------------------------------------------------------------\n  // QRMaskPattern\n  //---------------------------------------------------------------------\n\n  var QRMaskPattern = {\n    PATTERN000 : 0,\n    PATTERN001 : 1,\n    PATTERN010 : 2,\n    PATTERN011 : 3,\n    PATTERN100 : 4,\n    PATTERN101 : 5,\n    PATTERN110 : 6,\n    PATTERN111 : 7\n  };\n\n  //---------------------------------------------------------------------\n  // QRUtil\n  //---------------------------------------------------------------------\n\n  var QRUtil = function() {\n\n    var PATTERN_POSITION_TABLE = [\n      [],\n      [6, 18],\n      [6, 22],\n      [6, 26],\n      [6, 30],\n      [6, 34],\n      [6, 22, 38],\n      [6, 24, 42],\n      [6, 26, 46],\n      [6, 28, 50],\n      [6, 30, 54],\n      [6, 32, 58],\n      [6, 34, 62],\n      [6, 26, 46, 66],\n      [6, 26, 48, 70],\n      [6, 26, 50, 74],\n      [6, 30, 54, 78],\n      [6, 30, 56, 82],\n      [6, 30, 58, 86],\n      [6, 34, 62, 90],\n      [6, 28, 50, 72, 94],\n      [6, 26, 50, 74, 98],\n      [6, 30, 54, 78, 102],\n      [6, 28, 54, 80, 106],\n      [6, 32, 58, 84, 110],\n      [6, 30, 58, 86, 114],\n      [6, 34, 62, 90, 118],\n      [6, 26, 50, 74, 98, 122],\n      [6, 30, 54, 78, 102, 126],\n      [6, 26, 52, 78, 104, 130],\n      [6, 30, 56, 82, 108, 134],\n      [6, 34, 60, 86, 112, 138],\n      [6, 30, 58, 86, 114, 142],\n      [6, 34, 62, 90, 118, 146],\n      [6, 30, 54, 78, 102, 126, 150],\n      [6, 24, 50, 76, 102, 128, 154],\n      [6, 28, 54, 80, 106, 132, 158],\n      [6, 32, 58, 84, 110, 136, 162],\n      [6, 26, 54, 82, 110, 138, 166],\n      [6, 30, 58, 86, 114, 142, 170]\n    ];\n    var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n    var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n    var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n    var _this = {};\n\n    var getBCHDigit = function(data) {\n      var digit = 0;\n      while (data != 0) {\n        digit += 1;\n        data >>>= 1;\n      }\n      return digit;\n    };\n\n    _this.getBCHTypeInfo = function(data) {\n      var d = data << 10;\n      while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n        d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n      }\n      return ( (data << 10) | d) ^ G15_MASK;\n    };\n\n    _this.getBCHTypeNumber = function(data) {\n      var d = data << 12;\n      while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n        d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n      }\n      return (data << 12) | d;\n    };\n\n    _this.getPatternPosition = function(typeNumber) {\n      return PATTERN_POSITION_TABLE[typeNumber - 1];\n    };\n\n    _this.getMaskFunction = function(maskPattern) {\n\n      switch (maskPattern) {\n\n      case QRMaskPattern.PATTERN000 :\n        return function(i, j) { return (i + j) % 2 == 0; };\n      case QRMaskPattern.PATTERN001 :\n        return function(i, j) { return i % 2 == 0; };\n      case QRMaskPattern.PATTERN010 :\n        return function(i, j) { return j % 3 == 0; };\n      case QRMaskPattern.PATTERN011 :\n        return function(i, j) { return (i + j) % 3 == 0; };\n      case QRMaskPattern.PATTERN100 :\n        return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n      case QRMaskPattern.PATTERN101 :\n        return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n      case QRMaskPattern.PATTERN110 :\n        return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n      case QRMaskPattern.PATTERN111 :\n        return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n      default :\n        throw 'bad maskPattern:' + maskPattern;\n      }\n    };\n\n    _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n      var a = qrPolynomial([1], 0);\n      for (var i = 0; i < errorCorrectLength; i += 1) {\n        a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n      }\n      return a;\n    };\n\n    _this.getLengthInBits = function(mode, type) {\n\n      if (1 <= type && type < 10) {\n\n        // 1 - 9\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 10;\n        case QRMode.MODE_ALPHA_NUM : return 9;\n        case QRMode.MODE_8BIT_BYTE : return 8;\n        case QRMode.MODE_KANJI     : return 8;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 27) {\n\n        // 10 - 26\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 12;\n        case QRMode.MODE_ALPHA_NUM : return 11;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 10;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else if (type < 41) {\n\n        // 27 - 40\n\n        switch(mode) {\n        case QRMode.MODE_NUMBER    : return 14;\n        case QRMode.MODE_ALPHA_NUM : return 13;\n        case QRMode.MODE_8BIT_BYTE : return 16;\n        case QRMode.MODE_KANJI     : return 12;\n        default :\n          throw 'mode:' + mode;\n        }\n\n      } else {\n        throw 'type:' + type;\n      }\n    };\n\n    _this.getLostPoint = function(qrcode) {\n\n      var moduleCount = qrcode.getModuleCount();\n\n      var lostPoint = 0;\n\n      // LEVEL1\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount; col += 1) {\n\n          var sameCount = 0;\n          var dark = qrcode.isDark(row, col);\n\n          for (var r = -1; r <= 1; r += 1) {\n\n            if (row + r < 0 || moduleCount <= row + r) {\n              continue;\n            }\n\n            for (var c = -1; c <= 1; c += 1) {\n\n              if (col + c < 0 || moduleCount <= col + c) {\n                continue;\n              }\n\n              if (r == 0 && c == 0) {\n                continue;\n              }\n\n              if (dark == qrcode.isDark(row + r, col + c) ) {\n                sameCount += 1;\n              }\n            }\n          }\n\n          if (sameCount > 5) {\n            lostPoint += (3 + sameCount - 5);\n          }\n        }\n      };\n\n      // LEVEL2\n\n      for (var row = 0; row < moduleCount - 1; row += 1) {\n        for (var col = 0; col < moduleCount - 1; col += 1) {\n          var count = 0;\n          if (qrcode.isDark(row, col) ) count += 1;\n          if (qrcode.isDark(row + 1, col) ) count += 1;\n          if (qrcode.isDark(row, col + 1) ) count += 1;\n          if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n          if (count == 0 || count == 4) {\n            lostPoint += 3;\n          }\n        }\n      }\n\n      // LEVEL3\n\n      for (var row = 0; row < moduleCount; row += 1) {\n        for (var col = 0; col < moduleCount - 6; col += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row, col + 1)\n              &&  qrcode.isDark(row, col + 2)\n              &&  qrcode.isDark(row, col + 3)\n              &&  qrcode.isDark(row, col + 4)\n              && !qrcode.isDark(row, col + 5)\n              &&  qrcode.isDark(row, col + 6) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount - 6; row += 1) {\n          if (qrcode.isDark(row, col)\n              && !qrcode.isDark(row + 1, col)\n              &&  qrcode.isDark(row + 2, col)\n              &&  qrcode.isDark(row + 3, col)\n              &&  qrcode.isDark(row + 4, col)\n              && !qrcode.isDark(row + 5, col)\n              &&  qrcode.isDark(row + 6, col) ) {\n            lostPoint += 40;\n          }\n        }\n      }\n\n      // LEVEL4\n\n      var darkCount = 0;\n\n      for (var col = 0; col < moduleCount; col += 1) {\n        for (var row = 0; row < moduleCount; row += 1) {\n          if (qrcode.isDark(row, col) ) {\n            darkCount += 1;\n          }\n        }\n      }\n\n      var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n      lostPoint += ratio * 10;\n\n      return lostPoint;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // QRMath\n  //---------------------------------------------------------------------\n\n  var QRMath = function() {\n\n    var EXP_TABLE = new Array(256);\n    var LOG_TABLE = new Array(256);\n\n    // initialize tables\n    for (var i = 0; i < 8; i += 1) {\n      EXP_TABLE[i] = 1 << i;\n    }\n    for (var i = 8; i < 256; i += 1) {\n      EXP_TABLE[i] = EXP_TABLE[i - 4]\n        ^ EXP_TABLE[i - 5]\n        ^ EXP_TABLE[i - 6]\n        ^ EXP_TABLE[i - 8];\n    }\n    for (var i = 0; i < 255; i += 1) {\n      LOG_TABLE[EXP_TABLE[i] ] = i;\n    }\n\n    var _this = {};\n\n    _this.glog = function(n) {\n\n      if (n < 1) {\n        throw 'glog(' + n + ')';\n      }\n\n      return LOG_TABLE[n];\n    };\n\n    _this.gexp = function(n) {\n\n      while (n < 0) {\n        n += 255;\n      }\n\n      while (n >= 256) {\n        n -= 255;\n      }\n\n      return EXP_TABLE[n];\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrPolynomial\n  //---------------------------------------------------------------------\n\n  function qrPolynomial(num, shift) {\n\n    if (typeof num.length == 'undefined') {\n      throw num.length + '/' + shift;\n    }\n\n    var _num = function() {\n      var offset = 0;\n      while (offset < num.length && num[offset] == 0) {\n        offset += 1;\n      }\n      var _num = new Array(num.length - offset + shift);\n      for (var i = 0; i < num.length - offset; i += 1) {\n        _num[i] = num[i + offset];\n      }\n      return _num;\n    }();\n\n    var _this = {};\n\n    _this.getAt = function(index) {\n      return _num[index];\n    };\n\n    _this.getLength = function() {\n      return _num.length;\n    };\n\n    _this.multiply = function(e) {\n\n      var num = new Array(_this.getLength() + e.getLength() - 1);\n\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        for (var j = 0; j < e.getLength(); j += 1) {\n          num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n        }\n      }\n\n      return qrPolynomial(num, 0);\n    };\n\n    _this.mod = function(e) {\n\n      if (_this.getLength() - e.getLength() < 0) {\n        return _this;\n      }\n\n      var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n      var num = new Array(_this.getLength() );\n      for (var i = 0; i < _this.getLength(); i += 1) {\n        num[i] = _this.getAt(i);\n      }\n\n      for (var i = 0; i < e.getLength(); i += 1) {\n        num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n      }\n\n      // recursive call\n      return qrPolynomial(num, 0).mod(e);\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // QRRSBlock\n  //---------------------------------------------------------------------\n\n  var QRRSBlock = function() {\n\n    var RS_BLOCK_TABLE = [\n\n      // L\n      // M\n      // Q\n      // H\n\n      // 1\n      [1, 26, 19],\n      [1, 26, 16],\n      [1, 26, 13],\n      [1, 26, 9],\n\n      // 2\n      [1, 44, 34],\n      [1, 44, 28],\n      [1, 44, 22],\n      [1, 44, 16],\n\n      // 3\n      [1, 70, 55],\n      [1, 70, 44],\n      [2, 35, 17],\n      [2, 35, 13],\n\n      // 4\n      [1, 100, 80],\n      [2, 50, 32],\n      [2, 50, 24],\n      [4, 25, 9],\n\n      // 5\n      [1, 134, 108],\n      [2, 67, 43],\n      [2, 33, 15, 2, 34, 16],\n      [2, 33, 11, 2, 34, 12],\n\n      // 6\n      [2, 86, 68],\n      [4, 43, 27],\n      [4, 43, 19],\n      [4, 43, 15],\n\n      // 7\n      [2, 98, 78],\n      [4, 49, 31],\n      [2, 32, 14, 4, 33, 15],\n      [4, 39, 13, 1, 40, 14],\n\n      // 8\n      [2, 121, 97],\n      [2, 60, 38, 2, 61, 39],\n      [4, 40, 18, 2, 41, 19],\n      [4, 40, 14, 2, 41, 15],\n\n      // 9\n      [2, 146, 116],\n      [3, 58, 36, 2, 59, 37],\n      [4, 36, 16, 4, 37, 17],\n      [4, 36, 12, 4, 37, 13],\n\n      // 10\n      [2, 86, 68, 2, 87, 69],\n      [4, 69, 43, 1, 70, 44],\n      [6, 43, 19, 2, 44, 20],\n      [6, 43, 15, 2, 44, 16],\n\n      // 11\n      [4, 101, 81],\n      [1, 80, 50, 4, 81, 51],\n      [4, 50, 22, 4, 51, 23],\n      [3, 36, 12, 8, 37, 13],\n\n      // 12\n      [2, 116, 92, 2, 117, 93],\n      [6, 58, 36, 2, 59, 37],\n      [4, 46, 20, 6, 47, 21],\n      [7, 42, 14, 4, 43, 15],\n\n      // 13\n      [4, 133, 107],\n      [8, 59, 37, 1, 60, 38],\n      [8, 44, 20, 4, 45, 21],\n      [12, 33, 11, 4, 34, 12],\n\n      // 14\n      [3, 145, 115, 1, 146, 116],\n      [4, 64, 40, 5, 65, 41],\n      [11, 36, 16, 5, 37, 17],\n      [11, 36, 12, 5, 37, 13],\n\n      // 15\n      [5, 109, 87, 1, 110, 88],\n      [5, 65, 41, 5, 66, 42],\n      [5, 54, 24, 7, 55, 25],\n      [11, 36, 12, 7, 37, 13],\n\n      // 16\n      [5, 122, 98, 1, 123, 99],\n      [7, 73, 45, 3, 74, 46],\n      [15, 43, 19, 2, 44, 20],\n      [3, 45, 15, 13, 46, 16],\n\n      // 17\n      [1, 135, 107, 5, 136, 108],\n      [10, 74, 46, 1, 75, 47],\n      [1, 50, 22, 15, 51, 23],\n      [2, 42, 14, 17, 43, 15],\n\n      // 18\n      [5, 150, 120, 1, 151, 121],\n      [9, 69, 43, 4, 70, 44],\n      [17, 50, 22, 1, 51, 23],\n      [2, 42, 14, 19, 43, 15],\n\n      // 19\n      [3, 141, 113, 4, 142, 114],\n      [3, 70, 44, 11, 71, 45],\n      [17, 47, 21, 4, 48, 22],\n      [9, 39, 13, 16, 40, 14],\n\n      // 20\n      [3, 135, 107, 5, 136, 108],\n      [3, 67, 41, 13, 68, 42],\n      [15, 54, 24, 5, 55, 25],\n      [15, 43, 15, 10, 44, 16],\n\n      // 21\n      [4, 144, 116, 4, 145, 117],\n      [17, 68, 42],\n      [17, 50, 22, 6, 51, 23],\n      [19, 46, 16, 6, 47, 17],\n\n      // 22\n      [2, 139, 111, 7, 140, 112],\n      [17, 74, 46],\n      [7, 54, 24, 16, 55, 25],\n      [34, 37, 13],\n\n      // 23\n      [4, 151, 121, 5, 152, 122],\n      [4, 75, 47, 14, 76, 48],\n      [11, 54, 24, 14, 55, 25],\n      [16, 45, 15, 14, 46, 16],\n\n      // 24\n      [6, 147, 117, 4, 148, 118],\n      [6, 73, 45, 14, 74, 46],\n      [11, 54, 24, 16, 55, 25],\n      [30, 46, 16, 2, 47, 17],\n\n      // 25\n      [8, 132, 106, 4, 133, 107],\n      [8, 75, 47, 13, 76, 48],\n      [7, 54, 24, 22, 55, 25],\n      [22, 45, 15, 13, 46, 16],\n\n      // 26\n      [10, 142, 114, 2, 143, 115],\n      [19, 74, 46, 4, 75, 47],\n      [28, 50, 22, 6, 51, 23],\n      [33, 46, 16, 4, 47, 17],\n\n      // 27\n      [8, 152, 122, 4, 153, 123],\n      [22, 73, 45, 3, 74, 46],\n      [8, 53, 23, 26, 54, 24],\n      [12, 45, 15, 28, 46, 16],\n\n      // 28\n      [3, 147, 117, 10, 148, 118],\n      [3, 73, 45, 23, 74, 46],\n      [4, 54, 24, 31, 55, 25],\n      [11, 45, 15, 31, 46, 16],\n\n      // 29\n      [7, 146, 116, 7, 147, 117],\n      [21, 73, 45, 7, 74, 46],\n      [1, 53, 23, 37, 54, 24],\n      [19, 45, 15, 26, 46, 16],\n\n      // 30\n      [5, 145, 115, 10, 146, 116],\n      [19, 75, 47, 10, 76, 48],\n      [15, 54, 24, 25, 55, 25],\n      [23, 45, 15, 25, 46, 16],\n\n      // 31\n      [13, 145, 115, 3, 146, 116],\n      [2, 74, 46, 29, 75, 47],\n      [42, 54, 24, 1, 55, 25],\n      [23, 45, 15, 28, 46, 16],\n\n      // 32\n      [17, 145, 115],\n      [10, 74, 46, 23, 75, 47],\n      [10, 54, 24, 35, 55, 25],\n      [19, 45, 15, 35, 46, 16],\n\n      // 33\n      [17, 145, 115, 1, 146, 116],\n      [14, 74, 46, 21, 75, 47],\n      [29, 54, 24, 19, 55, 25],\n      [11, 45, 15, 46, 46, 16],\n\n      // 34\n      [13, 145, 115, 6, 146, 116],\n      [14, 74, 46, 23, 75, 47],\n      [44, 54, 24, 7, 55, 25],\n      [59, 46, 16, 1, 47, 17],\n\n      // 35\n      [12, 151, 121, 7, 152, 122],\n      [12, 75, 47, 26, 76, 48],\n      [39, 54, 24, 14, 55, 25],\n      [22, 45, 15, 41, 46, 16],\n\n      // 36\n      [6, 151, 121, 14, 152, 122],\n      [6, 75, 47, 34, 76, 48],\n      [46, 54, 24, 10, 55, 25],\n      [2, 45, 15, 64, 46, 16],\n\n      // 37\n      [17, 152, 122, 4, 153, 123],\n      [29, 74, 46, 14, 75, 47],\n      [49, 54, 24, 10, 55, 25],\n      [24, 45, 15, 46, 46, 16],\n\n      // 38\n      [4, 152, 122, 18, 153, 123],\n      [13, 74, 46, 32, 75, 47],\n      [48, 54, 24, 14, 55, 25],\n      [42, 45, 15, 32, 46, 16],\n\n      // 39\n      [20, 147, 117, 4, 148, 118],\n      [40, 75, 47, 7, 76, 48],\n      [43, 54, 24, 22, 55, 25],\n      [10, 45, 15, 67, 46, 16],\n\n      // 40\n      [19, 148, 118, 6, 149, 119],\n      [18, 75, 47, 31, 76, 48],\n      [34, 54, 24, 34, 55, 25],\n      [20, 45, 15, 61, 46, 16]\n    ];\n\n    var qrRSBlock = function(totalCount, dataCount) {\n      var _this = {};\n      _this.totalCount = totalCount;\n      _this.dataCount = dataCount;\n      return _this;\n    };\n\n    var _this = {};\n\n    var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n      switch(errorCorrectionLevel) {\n      case QRErrorCorrectionLevel.L :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n      case QRErrorCorrectionLevel.M :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n      case QRErrorCorrectionLevel.Q :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n      case QRErrorCorrectionLevel.H :\n        return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n      default :\n        return undefined;\n      }\n    };\n\n    _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n      var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n      if (typeof rsBlock == 'undefined') {\n        throw 'bad rs block @ typeNumber:' + typeNumber +\n            '/errorCorrectionLevel:' + errorCorrectionLevel;\n      }\n\n      var length = rsBlock.length / 3;\n\n      var list = [];\n\n      for (var i = 0; i < length; i += 1) {\n\n        var count = rsBlock[i * 3 + 0];\n        var totalCount = rsBlock[i * 3 + 1];\n        var dataCount = rsBlock[i * 3 + 2];\n\n        for (var j = 0; j < count; j += 1) {\n          list.push(qrRSBlock(totalCount, dataCount) );\n        }\n      }\n\n      return list;\n    };\n\n    return _this;\n  }();\n\n  //---------------------------------------------------------------------\n  // qrBitBuffer\n  //---------------------------------------------------------------------\n\n  var qrBitBuffer = function() {\n\n    var _buffer = [];\n    var _length = 0;\n\n    var _this = {};\n\n    _this.getBuffer = function() {\n      return _buffer;\n    };\n\n    _this.getAt = function(index) {\n      var bufIndex = Math.floor(index / 8);\n      return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n    };\n\n    _this.put = function(num, length) {\n      for (var i = 0; i < length; i += 1) {\n        _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n      }\n    };\n\n    _this.getLengthInBits = function() {\n      return _length;\n    };\n\n    _this.putBit = function(bit) {\n\n      var bufIndex = Math.floor(_length / 8);\n      if (_buffer.length <= bufIndex) {\n        _buffer.push(0);\n      }\n\n      if (bit) {\n        _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n      }\n\n      _length += 1;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrNumber\n  //---------------------------------------------------------------------\n\n  var qrNumber = function(data) {\n\n    var _mode = QRMode.MODE_NUMBER;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _data;\n\n      var i = 0;\n\n      while (i + 2 < data.length) {\n        buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n        i += 3;\n      }\n\n      if (i < data.length) {\n        if (data.length - i == 1) {\n          buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n        } else if (data.length - i == 2) {\n          buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n        }\n      }\n    };\n\n    var strToNum = function(s) {\n      var num = 0;\n      for (var i = 0; i < s.length; i += 1) {\n        num = num * 10 + chatToNum(s.charAt(i) );\n      }\n      return num;\n    };\n\n    var chatToNum = function(c) {\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      }\n      throw 'illegal char :' + c;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrAlphaNum\n  //---------------------------------------------------------------------\n\n  var qrAlphaNum = function(data) {\n\n    var _mode = QRMode.MODE_ALPHA_NUM;\n    var _data = data;\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _data.length;\n    };\n\n    _this.write = function(buffer) {\n\n      var s = _data;\n\n      var i = 0;\n\n      while (i + 1 < s.length) {\n        buffer.put(\n          getCode(s.charAt(i) ) * 45 +\n          getCode(s.charAt(i + 1) ), 11);\n        i += 2;\n      }\n\n      if (i < s.length) {\n        buffer.put(getCode(s.charAt(i) ), 6);\n      }\n    };\n\n    var getCode = function(c) {\n\n      if ('0' <= c && c <= '9') {\n        return c.charCodeAt(0) - '0'.charCodeAt(0);\n      } else if ('A' <= c && c <= 'Z') {\n        return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n      } else {\n        switch (c) {\n        case ' ' : return 36;\n        case '$' : return 37;\n        case '%' : return 38;\n        case '*' : return 39;\n        case '+' : return 40;\n        case '-' : return 41;\n        case '.' : return 42;\n        case '/' : return 43;\n        case ':' : return 44;\n        default :\n          throw 'illegal char :' + c;\n        }\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qr8BitByte\n  //---------------------------------------------------------------------\n\n  var qr8BitByte = function(data) {\n\n    var _mode = QRMode.MODE_8BIT_BYTE;\n    var _data = data;\n    var _bytes = qrcode.stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return _bytes.length;\n    };\n\n    _this.write = function(buffer) {\n      for (var i = 0; i < _bytes.length; i += 1) {\n        buffer.put(_bytes[i], 8);\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // qrKanji\n  //---------------------------------------------------------------------\n\n  var qrKanji = function(data) {\n\n    var _mode = QRMode.MODE_KANJI;\n    var _data = data;\n\n    var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];\n    if (!stringToBytes) {\n      throw 'sjis not supported.';\n    }\n    !function(c, code) {\n      // self test for sjis support.\n      var test = stringToBytes(c);\n      if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n        throw 'sjis not supported.';\n      }\n    }('\\u53cb', 0x9746);\n\n    var _bytes = stringToBytes(data);\n\n    var _this = {};\n\n    _this.getMode = function() {\n      return _mode;\n    };\n\n    _this.getLength = function(buffer) {\n      return ~~(_bytes.length / 2);\n    };\n\n    _this.write = function(buffer) {\n\n      var data = _bytes;\n\n      var i = 0;\n\n      while (i + 1 < data.length) {\n\n        var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n        if (0x8140 <= c && c <= 0x9FFC) {\n          c -= 0x8140;\n        } else if (0xE040 <= c && c <= 0xEBBF) {\n          c -= 0xC140;\n        } else {\n          throw 'illegal char at ' + (i + 1) + '/' + c;\n        }\n\n        c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n        buffer.put(c, 13);\n\n        i += 2;\n      }\n\n      if (i < data.length) {\n        throw 'illegal char at ' + (i + 1);\n      }\n    };\n\n    return _this;\n  };\n\n  //=====================================================================\n  // GIF Support etc.\n  //\n\n  //---------------------------------------------------------------------\n  // byteArrayOutputStream\n  //---------------------------------------------------------------------\n\n  var byteArrayOutputStream = function() {\n\n    var _bytes = [];\n\n    var _this = {};\n\n    _this.writeByte = function(b) {\n      _bytes.push(b & 0xff);\n    };\n\n    _this.writeShort = function(i) {\n      _this.writeByte(i);\n      _this.writeByte(i >>> 8);\n    };\n\n    _this.writeBytes = function(b, off, len) {\n      off = off || 0;\n      len = len || b.length;\n      for (var i = 0; i < len; i += 1) {\n        _this.writeByte(b[i + off]);\n      }\n    };\n\n    _this.writeString = function(s) {\n      for (var i = 0; i < s.length; i += 1) {\n        _this.writeByte(s.charCodeAt(i) );\n      }\n    };\n\n    _this.toByteArray = function() {\n      return _bytes;\n    };\n\n    _this.toString = function() {\n      var s = '';\n      s += '[';\n      for (var i = 0; i < _bytes.length; i += 1) {\n        if (i > 0) {\n          s += ',';\n        }\n        s += _bytes[i];\n      }\n      s += ']';\n      return s;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64EncodeOutputStream\n  //---------------------------------------------------------------------\n\n  var base64EncodeOutputStream = function() {\n\n    var _buffer = 0;\n    var _buflen = 0;\n    var _length = 0;\n    var _base64 = '';\n\n    var _this = {};\n\n    var writeEncoded = function(b) {\n      _base64 += String.fromCharCode(encode(b & 0x3f) );\n    };\n\n    var encode = function(n) {\n      if (n < 0) {\n        // error.\n      } else if (n < 26) {\n        return 0x41 + n;\n      } else if (n < 52) {\n        return 0x61 + (n - 26);\n      } else if (n < 62) {\n        return 0x30 + (n - 52);\n      } else if (n == 62) {\n        return 0x2b;\n      } else if (n == 63) {\n        return 0x2f;\n      }\n      throw 'n:' + n;\n    };\n\n    _this.writeByte = function(n) {\n\n      _buffer = (_buffer << 8) | (n & 0xff);\n      _buflen += 8;\n      _length += 1;\n\n      while (_buflen >= 6) {\n        writeEncoded(_buffer >>> (_buflen - 6) );\n        _buflen -= 6;\n      }\n    };\n\n    _this.flush = function() {\n\n      if (_buflen > 0) {\n        writeEncoded(_buffer << (6 - _buflen) );\n        _buffer = 0;\n        _buflen = 0;\n      }\n\n      if (_length % 3 != 0) {\n        // padding\n        var padlen = 3 - _length % 3;\n        for (var i = 0; i < padlen; i += 1) {\n          _base64 += '=';\n        }\n      }\n    };\n\n    _this.toString = function() {\n      return _base64;\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // base64DecodeInputStream\n  //---------------------------------------------------------------------\n\n  var base64DecodeInputStream = function(str) {\n\n    var _str = str;\n    var _pos = 0;\n    var _buffer = 0;\n    var _buflen = 0;\n\n    var _this = {};\n\n    _this.read = function() {\n\n      while (_buflen < 8) {\n\n        if (_pos >= _str.length) {\n          if (_buflen == 0) {\n            return -1;\n          }\n          throw 'unexpected end of file./' + _buflen;\n        }\n\n        var c = _str.charAt(_pos);\n        _pos += 1;\n\n        if (c == '=') {\n          _buflen = 0;\n          return -1;\n        } else if (c.match(/^\\s$/) ) {\n          // ignore if whitespace.\n          continue;\n        }\n\n        _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n        _buflen += 6;\n      }\n\n      var n = (_buffer >>> (_buflen - 8) ) & 0xff;\n      _buflen -= 8;\n      return n;\n    };\n\n    var decode = function(c) {\n      if (0x41 <= c && c <= 0x5a) {\n        return c - 0x41;\n      } else if (0x61 <= c && c <= 0x7a) {\n        return c - 0x61 + 26;\n      } else if (0x30 <= c && c <= 0x39) {\n        return c - 0x30 + 52;\n      } else if (c == 0x2b) {\n        return 62;\n      } else if (c == 0x2f) {\n        return 63;\n      } else {\n        throw 'c:' + c;\n      }\n    };\n\n    return _this;\n  };\n\n  //---------------------------------------------------------------------\n  // gifImage (B/W)\n  //---------------------------------------------------------------------\n\n  var gifImage = function(width, height) {\n\n    var _width = width;\n    var _height = height;\n    var _data = new Array(width * height);\n\n    var _this = {};\n\n    _this.setPixel = function(x, y, pixel) {\n      _data[y * _width + x] = pixel;\n    };\n\n    _this.write = function(out) {\n\n      //---------------------------------\n      // GIF Signature\n\n      out.writeString('GIF87a');\n\n      //---------------------------------\n      // Screen Descriptor\n\n      out.writeShort(_width);\n      out.writeShort(_height);\n\n      out.writeByte(0x80); // 2bit\n      out.writeByte(0);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Global Color Map\n\n      // black\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n      out.writeByte(0x00);\n\n      // white\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n      out.writeByte(0xff);\n\n      //---------------------------------\n      // Image Descriptor\n\n      out.writeString(',');\n      out.writeShort(0);\n      out.writeShort(0);\n      out.writeShort(_width);\n      out.writeShort(_height);\n      out.writeByte(0);\n\n      //---------------------------------\n      // Local Color Map\n\n      //---------------------------------\n      // Raster Data\n\n      var lzwMinCodeSize = 2;\n      var raster = getLZWRaster(lzwMinCodeSize);\n\n      out.writeByte(lzwMinCodeSize);\n\n      var offset = 0;\n\n      while (raster.length - offset > 255) {\n        out.writeByte(255);\n        out.writeBytes(raster, offset, 255);\n        offset += 255;\n      }\n\n      out.writeByte(raster.length - offset);\n      out.writeBytes(raster, offset, raster.length - offset);\n      out.writeByte(0x00);\n\n      //---------------------------------\n      // GIF Terminator\n      out.writeString(';');\n    };\n\n    var bitOutputStream = function(out) {\n\n      var _out = out;\n      var _bitLength = 0;\n      var _bitBuffer = 0;\n\n      var _this = {};\n\n      _this.write = function(data, length) {\n\n        if ( (data >>> length) != 0) {\n          throw 'length over';\n        }\n\n        while (_bitLength + length >= 8) {\n          _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n          length -= (8 - _bitLength);\n          data >>>= (8 - _bitLength);\n          _bitBuffer = 0;\n          _bitLength = 0;\n        }\n\n        _bitBuffer = (data << _bitLength) | _bitBuffer;\n        _bitLength = _bitLength + length;\n      };\n\n      _this.flush = function() {\n        if (_bitLength > 0) {\n          _out.writeByte(_bitBuffer);\n        }\n      };\n\n      return _this;\n    };\n\n    var getLZWRaster = function(lzwMinCodeSize) {\n\n      var clearCode = 1 << lzwMinCodeSize;\n      var endCode = (1 << lzwMinCodeSize) + 1;\n      var bitLength = lzwMinCodeSize + 1;\n\n      // Setup LZWTable\n      var table = lzwTable();\n\n      for (var i = 0; i < clearCode; i += 1) {\n        table.add(String.fromCharCode(i) );\n      }\n      table.add(String.fromCharCode(clearCode) );\n      table.add(String.fromCharCode(endCode) );\n\n      var byteOut = byteArrayOutputStream();\n      var bitOut = bitOutputStream(byteOut);\n\n      // clear code\n      bitOut.write(clearCode, bitLength);\n\n      var dataIndex = 0;\n\n      var s = String.fromCharCode(_data[dataIndex]);\n      dataIndex += 1;\n\n      while (dataIndex < _data.length) {\n\n        var c = String.fromCharCode(_data[dataIndex]);\n        dataIndex += 1;\n\n        if (table.contains(s + c) ) {\n\n          s = s + c;\n\n        } else {\n\n          bitOut.write(table.indexOf(s), bitLength);\n\n          if (table.size() < 0xfff) {\n\n            if (table.size() == (1 << bitLength) ) {\n              bitLength += 1;\n            }\n\n            table.add(s + c);\n          }\n\n          s = c;\n        }\n      }\n\n      bitOut.write(table.indexOf(s), bitLength);\n\n      // end code\n      bitOut.write(endCode, bitLength);\n\n      bitOut.flush();\n\n      return byteOut.toByteArray();\n    };\n\n    var lzwTable = function() {\n\n      var _map = {};\n      var _size = 0;\n\n      var _this = {};\n\n      _this.add = function(key) {\n        if (_this.contains(key) ) {\n          throw 'dup key:' + key;\n        }\n        _map[key] = _size;\n        _size += 1;\n      };\n\n      _this.size = function() {\n        return _size;\n      };\n\n      _this.indexOf = function(key) {\n        return _map[key];\n      };\n\n      _this.contains = function(key) {\n        return typeof _map[key] != 'undefined';\n      };\n\n      return _this;\n    };\n\n    return _this;\n  };\n\n  var createDataURL = function(width, height, getPixel) {\n    var gif = gifImage(width, height);\n    for (var y = 0; y < height; y += 1) {\n      for (var x = 0; x < width; x += 1) {\n        gif.setPixel(x, y, getPixel(x, y) );\n      }\n    }\n\n    var b = byteArrayOutputStream();\n    gif.write(b);\n\n    var base64 = base64EncodeOutputStream();\n    var bytes = b.toByteArray();\n    for (var i = 0; i < bytes.length; i += 1) {\n      base64.writeByte(bytes[i]);\n    }\n    base64.flush();\n\n    return 'data:image/gif;base64,' + base64;\n  };\n\n  //---------------------------------------------------------------------\n  // returns qrcode function.\n\n  return qrcode;\n}();\n\n// multibyte support\n!function() {\n\n  qrcode.stringToBytesFuncs['UTF-8'] = function(s) {\n    // http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\n    function toUTF8Array(str) {\n      var utf8 = [];\n      for (var i=0; i < str.length; i++) {\n        var charcode = str.charCodeAt(i);\n        if (charcode < 0x80) utf8.push(charcode);\n        else if (charcode < 0x800) {\n          utf8.push(0xc0 | (charcode >> 6),\n              0x80 | (charcode & 0x3f));\n        }\n        else if (charcode < 0xd800 || charcode >= 0xe000) {\n          utf8.push(0xe0 | (charcode >> 12),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n        // surrogate pair\n        else {\n          i++;\n          // UTF-16 encodes 0x10000-0x10FFFF by\n          // subtracting 0x10000 and splitting the\n          // 20 bits of 0x0-0xFFFFF into two halves\n          charcode = 0x10000 + (((charcode & 0x3ff)<<10)\n            | (str.charCodeAt(i) & 0x3ff));\n          utf8.push(0xf0 | (charcode >>18),\n              0x80 | ((charcode>>12) & 0x3f),\n              0x80 | ((charcode>>6) & 0x3f),\n              0x80 | (charcode & 0x3f));\n        }\n      }\n      return utf8;\n    }\n    return toUTF8Array(s);\n  };\n\n}();\n\n(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n      define([], factory);\n  } else if (typeof exports === 'object') {\n      module.exports = factory();\n  }\n}(function () {\n    return qrcode;\n}));\n","import { UnknownObject } from \"../types\";\n\nconst isObject = (obj: Record<string, unknown>): boolean => !!obj && typeof obj === \"object\" && !Array.isArray(obj);\n\nexport default function mergeDeep(target: UnknownObject, ...sources: UnknownObject[]): UnknownObject {\n  if (!sources.length) return target;\n  const source = sources.shift();\n  if (source === undefined || !isObject(target) || !isObject(source)) return target;\n  target = { ...target };\n  Object.keys(source).forEach((key: string): void => {\n    const targetValue = target[key];\n    const sourceValue = source[key];\n\n    if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n      target[key] = sourceValue;\n    } else if (isObject(targetValue) && isObject(sourceValue)) {\n      target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n    } else {\n      target[key] = sourceValue;\n    }\n  });\n\n  return mergeDeep(target, ...sources);\n}\n","export default function downloadURI(uri: string, name: string): void {\n  const link = document.createElement(\"a\");\n  link.download = name;\n  link.href = uri;\n  document.body.appendChild(link);\n  link.click();\n  document.body.removeChild(link);\n}\n","export default async function toDataURL(url: string): Promise<string> {\n  return new Promise((resolve) => {\n    const xhr = new XMLHttpRequest();\n    xhr.onload = function () {\n      const reader = new FileReader();\n      reader.onloadend = function () {\n        resolve(reader.result as string);\n      };\n      reader.readAsDataURL(xhr.response);\n    };\n    xhr.open(\"GET\", url);\n    xhr.responseType = \"blob\";\n    xhr.send();\n  });\n}\n","interface ErrorCorrectionPercents {\n  [key: string]: number;\n}\n\nexport default {\n  L: 0.07,\n  M: 0.15,\n  Q: 0.25,\n  H: 0.3\n} as ErrorCorrectionPercents;\n","import dotTypes from \"../../constants/dotTypes\";\nimport { DotType, GetNeighbor, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs, Window } from \"../../types\";\n\nexport default class QRDot {\n  _element?: SVGElement;\n  _svg: SVGElement;\n  _type: DotType;\n  _window: Window;\n\n  constructor({ svg, type, window }: { svg: SVGElement; type: DotType; window: Window }) {\n    this._svg = svg;\n    this._type = type;\n    this._window = window;\n  }\n\n  draw(x: number, y: number, size: number, getNeighbor: GetNeighbor): void {\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case dotTypes.dots:\n        drawFunction = this._drawDot;\n        break;\n      case dotTypes.classy:\n        drawFunction = this._drawClassy;\n        break;\n      case dotTypes.classyRounded:\n        drawFunction = this._drawClassyRounded;\n        break;\n      case dotTypes.rounded:\n        drawFunction = this._drawRounded;\n        break;\n      case dotTypes.extraRounded:\n        drawFunction = this._drawExtraRounded;\n        break;\n      case dotTypes.square:\n      default:\n        drawFunction = this._drawSquare;\n    }\n\n    drawFunction.call(this, { x, y, size, getNeighbor });\n  }\n\n  _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    draw();\n    this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n  }\n\n  _basicDot(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n        this._element.setAttribute(\"cx\", String(x + size / 2));\n        this._element.setAttribute(\"cy\", String(y + size / 2));\n        this._element.setAttribute(\"r\", String(size / 2));\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n        this._element.setAttribute(\"x\", String(x));\n        this._element.setAttribute(\"y\", String(y));\n        this._element.setAttribute(\"width\", String(size));\n        this._element.setAttribute(\"height\", String(size));\n      }\n    });\n  }\n\n  //if rotation === 0 - right side is rounded\n  _basicSideRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to top left position\n            `v ${size}` + //draw line to left bottom corner\n            `h ${size / 2}` + //draw line to left bottom corner + half of size right\n            `a ${size / 2} ${size / 2}, 0, 0, 0, 0 ${-size}` // draw rounded corner\n        );\n      }\n    });\n  }\n\n  //if rotation === 0 - top right corner is rounded\n  _basicCornerRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to top left position\n            `v ${size}` + //draw line to left bottom corner\n            `h ${size}` + //draw line to right bottom corner\n            `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n            `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded corner\n        );\n      }\n    });\n  }\n\n  //if rotation === 0 - top right corner is rounded\n  _basicCornerExtraRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to top left position\n            `v ${size}` + //draw line to left bottom corner\n            `h ${size}` + //draw line to right bottom corner\n            `a ${size} ${size}, 0, 0, 0, ${-size} ${-size}` // draw rounded top right corner\n        );\n      }\n    });\n  }\n\n  //if rotation === 0 - left bottom and right top corners are rounded\n  _basicCornersRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` + //go to left top position\n            `v ${size / 2}` + //draw line to left top corner + half of size bottom\n            `a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` + // draw rounded left bottom corner\n            `h ${size / 2}` + //draw line to right bottom corner\n            `v ${-size / 2}` + //draw line to right bottom corner + half of size top\n            `a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}` // draw rounded right top corner\n        );\n      }\n    });\n  }\n\n  _drawDot({ x, y, size }: DrawArgs): void {\n    this._basicDot({ x, y, size, rotation: 0 });\n  }\n\n  _drawSquare({ x, y, size }: DrawArgs): void {\n    this._basicSquare({ x, y, size, rotation: 0 });\n  }\n\n  _drawRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicDot({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n      this._basicSquare({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount === 2) {\n      let rotation = 0;\n\n      if (leftNeighbor && topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (topNeighbor && rightNeighbor) {\n        rotation = Math.PI;\n      } else if (rightNeighbor && bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicCornerRounded({ x, y, size, rotation });\n      return;\n    }\n\n    if (neighborsCount === 1) {\n      let rotation = 0;\n\n      if (topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (rightNeighbor) {\n        rotation = Math.PI;\n      } else if (bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicSideRounded({ x, y, size, rotation });\n      return;\n    }\n  }\n\n  _drawExtraRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicDot({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount > 2 || (leftNeighbor && rightNeighbor) || (topNeighbor && bottomNeighbor)) {\n      this._basicSquare({ x, y, size, rotation: 0 });\n      return;\n    }\n\n    if (neighborsCount === 2) {\n      let rotation = 0;\n\n      if (leftNeighbor && topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (topNeighbor && rightNeighbor) {\n        rotation = Math.PI;\n      } else if (rightNeighbor && bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicCornerExtraRounded({ x, y, size, rotation });\n      return;\n    }\n\n    if (neighborsCount === 1) {\n      let rotation = 0;\n\n      if (topNeighbor) {\n        rotation = Math.PI / 2;\n      } else if (rightNeighbor) {\n        rotation = Math.PI;\n      } else if (bottomNeighbor) {\n        rotation = -Math.PI / 2;\n      }\n\n      this._basicSideRounded({ x, y, size, rotation });\n      return;\n    }\n  }\n\n  _drawClassy({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    if (!leftNeighbor && !topNeighbor) {\n      this._basicCornerRounded({ x, y, size, rotation: -Math.PI / 2 });\n      return;\n    }\n\n    if (!rightNeighbor && !bottomNeighbor) {\n      this._basicCornerRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    this._basicSquare({ x, y, size, rotation: 0 });\n  }\n\n  _drawClassyRounded({ x, y, size, getNeighbor }: DrawArgs): void {\n    const leftNeighbor = getNeighbor ? +getNeighbor(-1, 0) : 0;\n    const rightNeighbor = getNeighbor ? +getNeighbor(1, 0) : 0;\n    const topNeighbor = getNeighbor ? +getNeighbor(0, -1) : 0;\n    const bottomNeighbor = getNeighbor ? +getNeighbor(0, 1) : 0;\n\n    const neighborsCount = leftNeighbor + rightNeighbor + topNeighbor + bottomNeighbor;\n\n    if (neighborsCount === 0) {\n      this._basicCornersRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    if (!leftNeighbor && !topNeighbor) {\n      this._basicCornerExtraRounded({ x, y, size, rotation: -Math.PI / 2 });\n      return;\n    }\n\n    if (!rightNeighbor && !bottomNeighbor) {\n      this._basicCornerExtraRounded({ x, y, size, rotation: Math.PI / 2 });\n      return;\n    }\n\n    this._basicSquare({ x, y, size, rotation: 0 });\n  }\n}\n","import { DotTypes } from \"../types\";\n\nexport default {\n  dots: \"dots\",\n  rounded: \"rounded\",\n  classy: \"classy\",\n  classyRounded: \"classy-rounded\",\n  square: \"square\",\n  extraRounded: \"extra-rounded\"\n} as DotTypes;\n","import cornerSquareTypes from \"../../constants/cornerSquareTypes\";\nimport { CornerSquareType, DrawArgs, BasicFigureDrawArgs, RotateFigureArgs, Window } from \"../../types\";\n\nexport default class QRCornerSquare {\n  _element?: SVGElement;\n  _svg: SVGElement;\n  _type: CornerSquareType;\n  _window: Window;\n\n  constructor({ svg, type, window }: { svg: SVGElement; type: CornerSquareType; window: Window }) {\n    this._svg = svg;\n    this._type = type;\n    this._window = window;\n  }\n\n  draw(x: number, y: number, size: number, rotation: number): void {\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case cornerSquareTypes.square:\n        drawFunction = this._drawSquare;\n        break;\n      case cornerSquareTypes.extraRounded:\n        drawFunction = this._drawExtraRounded;\n        break;\n      case cornerSquareTypes.dot:\n      default:\n        drawFunction = this._drawDot;\n    }\n\n    drawFunction.call(this, { x, y, size, rotation });\n  }\n\n  _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    draw();\n    this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n  }\n\n  _basicDot(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\"clip-rule\", \"evenodd\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x + size / 2} ${y}` + // M cx, y //  Move to top of ring\n            `a ${size / 2} ${size / 2} 0 1 0 0.1 0` + // a outerRadius, outerRadius, 0, 1, 0, 1, 0 // Draw outer arc, but don't close it\n            `z` + // Z // Close the outer shape\n            `m 0 ${dotSize}` + // m -1 outerRadius-innerRadius // Move to top point of inner radius\n            `a ${size / 2 - dotSize} ${size / 2 - dotSize} 0 1 1 -0.1 0` + // a innerRadius, innerRadius, 0, 1, 1, -1, 0 // Draw inner arc, but don't close it\n            `Z` // Z // Close the inner ring. Actually will still work without, but inner ring will have one unit missing in stroke\n        );\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\"clip-rule\", \"evenodd\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y}` +\n            `v ${size}` +\n            `h ${size}` +\n            `v ${-size}` +\n            `z` +\n            `M ${x + dotSize} ${y + dotSize}` +\n            `h ${size - 2 * dotSize}` +\n            `v ${size - 2 * dotSize}` +\n            `h ${-size + 2 * dotSize}` +\n            `z`\n        );\n      }\n    });\n  }\n\n  _basicExtraRounded(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n    const dotSize = size / 7;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        this._element.setAttribute(\"clip-rule\", \"evenodd\");\n        this._element.setAttribute(\n          \"d\",\n          `M ${x} ${y + 2.5 * dotSize}` +\n            `v ${2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${dotSize * 2.5}` +\n            `h ${2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${dotSize * 2.5} ${-dotSize * 2.5}` +\n            `v ${-2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${-dotSize * 2.5}` +\n            `h ${-2 * dotSize}` +\n            `a ${2.5 * dotSize} ${2.5 * dotSize}, 0, 0, 0, ${-dotSize * 2.5} ${dotSize * 2.5}` +\n            `M ${x + 2.5 * dotSize} ${y + dotSize}` +\n            `h ${2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${dotSize * 1.5}` +\n            `v ${2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${dotSize * 1.5}` +\n            `h ${-2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${-dotSize * 1.5} ${-dotSize * 1.5}` +\n            `v ${-2 * dotSize}` +\n            `a ${1.5 * dotSize} ${1.5 * dotSize}, 0, 0, 1, ${dotSize * 1.5} ${-dotSize * 1.5}`\n        );\n      }\n    });\n  }\n\n  _drawDot({ x, y, size, rotation }: DrawArgs): void {\n    this._basicDot({ x, y, size, rotation });\n  }\n\n  _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n    this._basicSquare({ x, y, size, rotation });\n  }\n\n  _drawExtraRounded({ x, y, size, rotation }: DrawArgs): void {\n    this._basicExtraRounded({ x, y, size, rotation });\n  }\n}\n","import { CornerSquareTypes } from \"../types\";\n\nexport default {\n  dot: \"dot\",\n  square: \"square\",\n  extraRounded: \"extra-rounded\"\n} as CornerSquareTypes;\n","import cornerDotTypes from \"../../constants/cornerDotTypes\";\nimport { CornerDotType, RotateFigureArgs, BasicFigureDrawArgs, DrawArgs, Window } from \"../../types\";\n\nexport default class QRCornerDot {\n  _element?: SVGElement;\n  _svg: SVGElement;\n  _type: CornerDotType;\n  _window: Window;\n\n  constructor({ svg, type, window }: { svg: SVGElement; type: CornerDotType; window: Window }) {\n    this._svg = svg;\n    this._type = type;\n    this._window = window;\n  }\n\n  draw(x: number, y: number, size: number, rotation: number): void {\n    const type = this._type;\n    let drawFunction;\n\n    switch (type) {\n      case cornerDotTypes.square:\n        drawFunction = this._drawSquare;\n        break;\n      case cornerDotTypes.dot:\n      default:\n        drawFunction = this._drawDot;\n    }\n\n    drawFunction.call(this, { x, y, size, rotation });\n  }\n\n  _rotateFigure({ x, y, size, rotation = 0, draw }: RotateFigureArgs): void {\n    const cx = x + size / 2;\n    const cy = y + size / 2;\n\n    draw();\n    this._element?.setAttribute(\"transform\", `rotate(${(180 * rotation) / Math.PI},${cx},${cy})`);\n  }\n\n  _basicDot(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n        this._element.setAttribute(\"cx\", String(x + size / 2));\n        this._element.setAttribute(\"cy\", String(y + size / 2));\n        this._element.setAttribute(\"r\", String(size / 2));\n      }\n    });\n  }\n\n  _basicSquare(args: BasicFigureDrawArgs): void {\n    const { size, x, y } = args;\n\n    this._rotateFigure({\n      ...args,\n      draw: () => {\n        this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n        this._element.setAttribute(\"x\", String(x));\n        this._element.setAttribute(\"y\", String(y));\n        this._element.setAttribute(\"width\", String(size));\n        this._element.setAttribute(\"height\", String(size));\n      }\n    });\n  }\n\n  _drawDot({ x, y, size, rotation }: DrawArgs): void {\n    this._basicDot({ x, y, size, rotation });\n  }\n\n  _drawSquare({ x, y, size, rotation }: DrawArgs): void {\n    this._basicSquare({ x, y, size, rotation });\n  }\n}\n","import { CornerDotTypes } from \"../types\";\n\nexport default {\n  dot: \"dot\",\n  square: \"square\"\n} as CornerDotTypes;\n","import { ShapeTypes } from \"../types\";\n\nexport default {\n  square: \"square\",\n  circle: \"circle\"\n} as ShapeTypes;\n","import calculateImageSize from \"../tools/calculateImageSize\";\nimport toDataUrl from \"../tools/toDataUrl\";\nimport errorCorrectionPercents from \"../constants/errorCorrectionPercents\";\nimport QRDot from \"../figures/dot/QRDot\";\nimport QRCornerSquare from \"../figures/cornerSquare/QRCornerSquare\";\nimport QRCornerDot from \"../figures/cornerDot/QRCornerDot\";\nimport { RequiredOptions } from \"./QROptions\";\nimport gradientTypes from \"../constants/gradientTypes\";\nimport shapeTypes from \"../constants/shapeTypes\";\nimport { QRCode, FilterFunction, Gradient, Window, Canvas } from \"../types\";\n\nconst squareMask = [\n  [1, 1, 1, 1, 1, 1, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 0, 0, 0, 0, 0, 1],\n  [1, 1, 1, 1, 1, 1, 1]\n];\n\nconst dotMask = [\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 1, 1, 1, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0],\n  [0, 0, 0, 0, 0, 0, 0]\n];\n\nexport default class QRSVG {\n  _canvas?: Canvas;\n  _window: Window;\n  _element: SVGElement;\n  _defs: SVGElement;\n  _backgroundClipPath?: SVGElement;\n  _dotsClipPath?: SVGElement;\n  _cornersSquareClipPath?: SVGElement;\n  _cornersDotClipPath?: SVGElement;\n  _options: RequiredOptions;\n  _qr?: QRCode;\n  _image?: HTMLImageElement;\n  _imageUri?: string;\n\n  //TODO don't pass all options to this class\n  constructor(options: RequiredOptions, window: Window) {\n    this._window = window;\n    this._element = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n    this._element.setAttribute(\"width\", String(options.width));\n    this._element.setAttribute(\"height\", String(options.height));\n    this._defs = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n    this._element.appendChild(this._defs);\n\n    if (options.imageOptions.saveAsBlob) {\n      if (options.nodeCanvas?.createCanvas) {\n        this._canvas = options.nodeCanvas.createCanvas(options.width, options.height);\n      } else {\n        this._canvas = document.createElement(\"canvas\");\n      }\n      this._canvas.width = options.width;\n      this._canvas.height = options.height;\n    }\n    this._imageUri = options.image;\n\n    this._options = options;\n  }\n\n  get width(): number {\n    return this._options.width;\n  }\n\n  get height(): number {\n    return this._options.height;\n  }\n\n  getElement(): SVGElement {\n    return this._element;\n  }\n\n  async drawQR(qr: QRCode): Promise<void> {\n    const count = qr.getModuleCount();\n    const minSize = Math.min(this._options.width, this._options.height) - this._options.margin * 2;\n    const realQRSize = this._options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize;\n    const dotSize = Math.floor(realQRSize / count);\n    let drawImageSize = {\n      hideXDots: 0,\n      hideYDots: 0,\n      width: 0,\n      height: 0\n    };\n\n    this._qr = qr;\n\n    if (this._options.image) {\n      //We need it to get image size\n      await this.loadImage();\n      if (!this._image) return;\n      this.imageToBlob();\n      const { imageOptions, qrOptions } = this._options;\n      const coverLevel = imageOptions.imageSize * errorCorrectionPercents[qrOptions.errorCorrectionLevel];\n      const maxHiddenDots = Math.floor(coverLevel * count * count);\n\n      drawImageSize = calculateImageSize({\n        originalWidth: this._image.width,\n        originalHeight: this._image.height,\n        maxHiddenDots,\n        maxHiddenAxisDots: count - 14,\n        dotSize\n      });\n    }\n\n    this.drawBackground();\n    this.drawDots((i: number, j: number): boolean => {\n      if (this._options.imageOptions.hideBackgroundDots) {\n        if (\n          i >= (count - drawImageSize.hideXDots) / 2 &&\n          i < (count + drawImageSize.hideXDots) / 2 &&\n          j >= (count - drawImageSize.hideYDots) / 2 &&\n          j < (count + drawImageSize.hideYDots) / 2\n        ) {\n          return false;\n        }\n      }\n\n      if (squareMask[i]?.[j] || squareMask[i - count + 7]?.[j] || squareMask[i]?.[j - count + 7]) {\n        return false;\n      }\n\n      if (dotMask[i]?.[j] || dotMask[i - count + 7]?.[j] || dotMask[i]?.[j - count + 7]) {\n        return false;\n      }\n\n      return true;\n    });\n    this.drawCorners();\n\n    if (this._options.image) {\n      await this.drawImage({ width: drawImageSize.width, height: drawImageSize.height, count, dotSize });\n    }\n  }\n\n  drawBackground(): void {\n    const element = this._element;\n    const options = this._options;\n\n    if (element) {\n      const gradientOptions = options.backgroundOptions?.gradient;\n      const color = options.backgroundOptions?.color;\n\n      if (gradientOptions || color) {\n        this._createColor({\n          options: gradientOptions,\n          color: color,\n          additionalRotation: 0,\n          x: 0,\n          y: 0,\n          height: options.height,\n          width: options.width,\n          name: \"background-color\"\n        });\n      }\n\n      if (options.backgroundOptions?.round) {\n        const size = Math.min(options.width, options.height);\n        const element = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n        this._backgroundClipPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n        this._backgroundClipPath.setAttribute(\"id\", \"clip-path-background-color\");\n        this._defs.appendChild(this._backgroundClipPath);\n\n        element.setAttribute(\"x\", String((options.width - size) / 2));\n        element.setAttribute(\"y\", String((options.height - size) / 2));\n        element.setAttribute(\"width\", String(size));\n        element.setAttribute(\"height\", String(size));\n        element.setAttribute(\"rx\", String((size / 2) * options.backgroundOptions.round));\n\n        this._backgroundClipPath.appendChild(element);\n      }\n    }\n  }\n\n  drawDots(filter?: FilterFunction): void {\n    if (!this._qr) {\n      throw \"QR code is not defined\";\n    }\n\n    const options = this._options;\n    const count = this._qr.getModuleCount();\n\n    if (count > options.width || count > options.height) {\n      throw \"The canvas is too small.\";\n    }\n\n    const minSize = Math.min(options.width, options.height) - options.margin * 2;\n    const realQRSize = options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize;\n    const dotSize = Math.floor(realQRSize / count);\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n    const dot = new QRDot({\n      svg: this._element,\n      type: options.dotsOptions.type,\n      window: this._window\n    });\n\n    this._dotsClipPath = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n    this._dotsClipPath.setAttribute(\"id\", \"clip-path-dot-color\");\n    this._defs.appendChild(this._dotsClipPath);\n\n    this._createColor({\n      options: options.dotsOptions?.gradient,\n      color: options.dotsOptions.color,\n      additionalRotation: 0,\n      x: 0,\n      y: 0,\n      height: options.height,\n      width: options.width,\n      name: \"dot-color\"\n    });\n\n    for (let i = 0; i < count; i++) {\n      for (let j = 0; j < count; j++) {\n        if (filter && !filter(i, j)) {\n          continue;\n        }\n        if (!this._qr?.isDark(i, j)) {\n          continue;\n        }\n\n        dot.draw(\n          xBeginning + i * dotSize,\n          yBeginning + j * dotSize,\n          dotSize,\n          (xOffset: number, yOffset: number): boolean => {\n            if (i + xOffset < 0 || j + yOffset < 0 || i + xOffset >= count || j + yOffset >= count) return false;\n            if (filter && !filter(i + xOffset, j + yOffset)) return false;\n            return !!this._qr && this._qr.isDark(i + xOffset, j + yOffset);\n          }\n        );\n\n        if (dot._element && this._dotsClipPath) {\n          this._dotsClipPath.appendChild(dot._element);\n        }\n      }\n    }\n\n    if (options.shape === shapeTypes.circle) {\n      const additionalDots = Math.floor((minSize / dotSize - count) / 2);\n      const fakeCount = count + additionalDots * 2;\n      const xFakeBeginning = xBeginning - additionalDots * dotSize;\n      const yFakeBeginning = yBeginning - additionalDots * dotSize;\n      const fakeMatrix: number[][] = [];\n      const center = Math.floor(fakeCount / 2);\n\n      for (let i = 0; i < fakeCount; i++) {\n        fakeMatrix[i] = [];\n        for (let j = 0; j < fakeCount; j++) {\n          if (\n            i >= additionalDots - 1 &&\n            i <= fakeCount - additionalDots &&\n            j >= additionalDots - 1 &&\n            j <= fakeCount - additionalDots\n          ) {\n            fakeMatrix[i][j] = 0;\n            continue;\n          }\n\n          if (Math.sqrt((i - center) * (i - center) + (j - center) * (j - center)) > center) {\n            fakeMatrix[i][j] = 0;\n            continue;\n          }\n\n          //Get random dots from QR code to show it outside of QR code\n          fakeMatrix[i][j] = this._qr.isDark(\n            j - 2 * additionalDots < 0 ? j : j >= count ? j - 2 * additionalDots : j - additionalDots,\n            i - 2 * additionalDots < 0 ? i : i >= count ? i - 2 * additionalDots : i - additionalDots\n          )\n            ? 1\n            : 0;\n        }\n      }\n\n      for (let i = 0; i < fakeCount; i++) {\n        for (let j = 0; j < fakeCount; j++) {\n          if (!fakeMatrix[i][j]) continue;\n\n          dot.draw(\n            xFakeBeginning + i * dotSize,\n            yFakeBeginning + j * dotSize,\n            dotSize,\n            (xOffset: number, yOffset: number): boolean => {\n              return !!fakeMatrix[i + xOffset]?.[j + yOffset];\n            }\n          );\n          if (dot._element && this._dotsClipPath) {\n            this._dotsClipPath.appendChild(dot._element);\n          }\n        }\n      }\n    }\n  }\n\n  drawCorners(): void {\n    if (!this._qr) {\n      throw \"QR code is not defined\";\n    }\n\n    const element = this._element;\n    const options = this._options;\n\n    if (!element) {\n      throw \"Element code is not defined\";\n    }\n\n    const count = this._qr.getModuleCount();\n    const minSize = Math.min(options.width, options.height) - options.margin * 2;\n    const realQRSize = options.shape === shapeTypes.circle ? minSize / Math.sqrt(2) : minSize;\n    const dotSize = Math.floor(realQRSize / count);\n    const cornersSquareSize = dotSize * 7;\n    const cornersDotSize = dotSize * 3;\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n\n    [\n      [0, 0, 0],\n      [1, 0, Math.PI / 2],\n      [0, 1, -Math.PI / 2]\n    ].forEach(([column, row, rotation]) => {\n      const x = xBeginning + column * dotSize * (count - 7);\n      const y = yBeginning + row * dotSize * (count - 7);\n      let cornersSquareClipPath = this._dotsClipPath;\n      let cornersDotClipPath = this._dotsClipPath;\n\n      if (options.cornersSquareOptions?.gradient || options.cornersSquareOptions?.color) {\n        cornersSquareClipPath = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n        cornersSquareClipPath.setAttribute(\"id\", `clip-path-corners-square-color-${column}-${row}`);\n        this._defs.appendChild(cornersSquareClipPath);\n        this._cornersSquareClipPath = this._cornersDotClipPath = cornersDotClipPath = cornersSquareClipPath;\n\n        this._createColor({\n          options: options.cornersSquareOptions?.gradient,\n          color: options.cornersSquareOptions?.color,\n          additionalRotation: rotation,\n          x,\n          y,\n          height: cornersSquareSize,\n          width: cornersSquareSize,\n          name: `corners-square-color-${column}-${row}`\n        });\n      }\n\n      if (options.cornersSquareOptions?.type) {\n        const cornersSquare = new QRCornerSquare({\n          svg: this._element,\n          type: options.cornersSquareOptions.type,\n          window: this._window\n        });\n\n        cornersSquare.draw(x, y, cornersSquareSize, rotation);\n\n        if (cornersSquare._element && cornersSquareClipPath) {\n          cornersSquareClipPath.appendChild(cornersSquare._element);\n        }\n      } else {\n        const dot = new QRDot({\n          svg: this._element,\n          type: options.dotsOptions.type,\n          window: this._window\n        });\n\n        for (let i = 0; i < squareMask.length; i++) {\n          for (let j = 0; j < squareMask[i].length; j++) {\n            if (!squareMask[i]?.[j]) {\n              continue;\n            }\n\n            dot.draw(\n              x + i * dotSize,\n              y + j * dotSize,\n              dotSize,\n              (xOffset: number, yOffset: number): boolean => !!squareMask[i + xOffset]?.[j + yOffset]\n            );\n\n            if (dot._element && cornersSquareClipPath) {\n              cornersSquareClipPath.appendChild(dot._element);\n            }\n          }\n        }\n      }\n\n      if (options.cornersDotOptions?.gradient || options.cornersDotOptions?.color) {\n        cornersDotClipPath = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n        cornersDotClipPath.setAttribute(\"id\", `clip-path-corners-dot-color-${column}-${row}`);\n        this._defs.appendChild(cornersDotClipPath);\n        this._cornersDotClipPath = cornersDotClipPath;\n\n        this._createColor({\n          options: options.cornersDotOptions?.gradient,\n          color: options.cornersDotOptions?.color,\n          additionalRotation: rotation,\n          x: x + dotSize * 2,\n          y: y + dotSize * 2,\n          height: cornersDotSize,\n          width: cornersDotSize,\n          name: `corners-dot-color-${column}-${row}`\n        });\n      }\n\n      if (options.cornersDotOptions?.type) {\n        const cornersDot = new QRCornerDot({\n          svg: this._element,\n          type: options.cornersDotOptions.type,\n          window: this._window\n        });\n\n        cornersDot.draw(x + dotSize * 2, y + dotSize * 2, cornersDotSize, rotation);\n\n        if (cornersDot._element && cornersDotClipPath) {\n          cornersDotClipPath.appendChild(cornersDot._element);\n        }\n      } else {\n        const dot = new QRDot({\n          svg: this._element,\n          type: options.dotsOptions.type,\n          window: this._window\n        });\n\n        for (let i = 0; i < dotMask.length; i++) {\n          for (let j = 0; j < dotMask[i].length; j++) {\n            if (!dotMask[i]?.[j]) {\n              continue;\n            }\n\n            dot.draw(\n              x + i * dotSize,\n              y + j * dotSize,\n              dotSize,\n              (xOffset: number, yOffset: number): boolean => !!dotMask[i + xOffset]?.[j + yOffset]\n            );\n\n            if (dot._element && cornersDotClipPath) {\n              cornersDotClipPath.appendChild(dot._element);\n            }\n          }\n        }\n      }\n    });\n  }\n\n  imageToBlob(): void {\n    if (!this._image) return;\n    // fix blurry svg\n    if (/(\\.svg$)|(^data:image\\/svg)/.test(this._options.image ?? \"\")) {\n      this._image.width = this._options.width;\n      this._image.height = this._options.height;\n    }\n    if (this._options.imageOptions.saveAsBlob && this._canvas) {\n      const ctx = this._canvas.getContext(\"2d\");\n      if (ctx) {\n        ctx.drawImage(this._image, 0, 0, this._canvas.width, this._canvas.height);\n        this._imageUri = this._canvas.toDataURL(\"image/png\");\n      }\n    }\n  }\n\n  loadImage(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const options = this._options;\n\n      if (!options.image) {\n        return reject(\"Image is not defined\");\n      }\n\n      if (options.nodeCanvas?.loadImage) {\n        options.nodeCanvas\n          .loadImage(options.image)\n          .then((image: HTMLImageElement) => {\n            // fix blurry svg\n            if (/(\\.svg$)|(^data:image\\/svg)/.test(options.image ?? \"\")) {\n              image.width = this._options.width;\n              image.height = this._options.height;\n            }\n            this._image = image;\n            resolve();\n          })\n          .catch(reject);\n      } else {\n        const image = new this._window.Image();\n\n        if (typeof options.imageOptions.crossOrigin === \"string\") {\n          image.crossOrigin = options.imageOptions.crossOrigin;\n        }\n\n        this._image = image;\n        image.onload = (): void => {\n          resolve();\n        };\n        image.src = options.image;\n      }\n    });\n  }\n\n  async drawImage({\n    width,\n    height,\n    count,\n    dotSize\n  }: {\n    width: number;\n    height: number;\n    count: number;\n    dotSize: number;\n  }): Promise<void> {\n    const options = this._options;\n    const xBeginning = Math.floor((options.width - count * dotSize) / 2);\n    const yBeginning = Math.floor((options.height - count * dotSize) / 2);\n    const dx = xBeginning + options.imageOptions.margin + (count * dotSize - width) / 2;\n    const dy = yBeginning + options.imageOptions.margin + (count * dotSize - height) / 2;\n    const dw = width - options.imageOptions.margin * 2;\n    const dh = height - options.imageOptions.margin * 2;\n\n    const image = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n    image.setAttribute(\"href\", this._imageUri || \"\");\n    image.setAttribute(\"x\", String(dx));\n    image.setAttribute(\"y\", String(dy));\n    image.setAttribute(\"width\", `${dw}px`);\n    image.setAttribute(\"height\", `${dh}px`);\n\n    const imageUrl = await toDataUrl(options.image || \"\");\n\n    image.setAttribute(\"href\", imageUrl || \"\");\n\n    this._element.appendChild(image);\n  }\n\n  _createColor({\n    options,\n    color,\n    additionalRotation,\n    x,\n    y,\n    height,\n    width,\n    name\n  }: {\n    options?: Gradient;\n    color?: string;\n    additionalRotation: number;\n    x: number;\n    y: number;\n    height: number;\n    width: number;\n    name: string;\n  }): void {\n    const size = width > height ? width : height;\n    const rect = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n    rect.setAttribute(\"x\", String(x));\n    rect.setAttribute(\"y\", String(y));\n    rect.setAttribute(\"height\", String(height));\n    rect.setAttribute(\"width\", String(width));\n    rect.setAttribute(\"clip-path\", `url('#clip-path-${name}')`);\n\n    if (options) {\n      let gradient: SVGElement;\n      if (options.type === gradientTypes.radial) {\n        gradient = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"radialGradient\");\n        gradient.setAttribute(\"id\", name);\n        gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n        gradient.setAttribute(\"fx\", String(x + width / 2));\n        gradient.setAttribute(\"fy\", String(y + height / 2));\n        gradient.setAttribute(\"cx\", String(x + width / 2));\n        gradient.setAttribute(\"cy\", String(y + height / 2));\n        gradient.setAttribute(\"r\", String(size / 2));\n      } else {\n        const rotation = ((options.rotation || 0) + additionalRotation) % (2 * Math.PI);\n        const positiveRotation = (rotation + 2 * Math.PI) % (2 * Math.PI);\n        let x0 = x + width / 2;\n        let y0 = y + height / 2;\n        let x1 = x + width / 2;\n        let y1 = y + height / 2;\n\n        if (\n          (positiveRotation >= 0 && positiveRotation <= 0.25 * Math.PI) ||\n          (positiveRotation > 1.75 * Math.PI && positiveRotation <= 2 * Math.PI)\n        ) {\n          x0 = x0 - width / 2;\n          y0 = y0 - (height / 2) * Math.tan(rotation);\n          x1 = x1 + width / 2;\n          y1 = y1 + (height / 2) * Math.tan(rotation);\n        } else if (positiveRotation > 0.25 * Math.PI && positiveRotation <= 0.75 * Math.PI) {\n          y0 = y0 - height / 2;\n          x0 = x0 - width / 2 / Math.tan(rotation);\n          y1 = y1 + height / 2;\n          x1 = x1 + width / 2 / Math.tan(rotation);\n        } else if (positiveRotation > 0.75 * Math.PI && positiveRotation <= 1.25 * Math.PI) {\n          x0 = x0 + width / 2;\n          y0 = y0 + (height / 2) * Math.tan(rotation);\n          x1 = x1 - width / 2;\n          y1 = y1 - (height / 2) * Math.tan(rotation);\n        } else if (positiveRotation > 1.25 * Math.PI && positiveRotation <= 1.75 * Math.PI) {\n          y0 = y0 + height / 2;\n          x0 = x0 + width / 2 / Math.tan(rotation);\n          y1 = y1 - height / 2;\n          x1 = x1 - width / 2 / Math.tan(rotation);\n        }\n\n        gradient = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"linearGradient\");\n        gradient.setAttribute(\"id\", name);\n        gradient.setAttribute(\"gradientUnits\", \"userSpaceOnUse\");\n        gradient.setAttribute(\"x1\", String(Math.round(x0)));\n        gradient.setAttribute(\"y1\", String(Math.round(y0)));\n        gradient.setAttribute(\"x2\", String(Math.round(x1)));\n        gradient.setAttribute(\"y2\", String(Math.round(y1)));\n      }\n\n      options.colorStops.forEach(({ offset, color }: { offset: number; color: string }) => {\n        const stop = this._window.document.createElementNS(\"http://www.w3.org/2000/svg\", \"stop\");\n        stop.setAttribute(\"offset\", `${100 * offset}%`);\n        stop.setAttribute(\"stop-color\", color);\n        gradient.appendChild(stop);\n      });\n\n      rect.setAttribute(\"fill\", `url('#${name}')`);\n      this._defs.appendChild(gradient);\n    } else if (color) {\n      rect.setAttribute(\"fill\", color);\n    }\n\n    this._element.appendChild(rect);\n  }\n}\n","interface ImageSizeOptions {\n  originalHeight: number;\n  originalWidth: number;\n  maxHiddenDots: number;\n  maxHiddenAxisDots?: number;\n  dotSize: number;\n}\n\ninterface ImageSizeResult {\n  height: number;\n  width: number;\n  hideYDots: number;\n  hideXDots: number;\n}\n\nexport default function calculateImageSize({\n  originalHeight,\n  originalWidth,\n  maxHiddenDots,\n  maxHiddenAxisDots,\n  dotSize\n}: ImageSizeOptions): ImageSizeResult {\n  const hideDots = { x: 0, y: 0 };\n  const imageSize = { x: 0, y: 0 };\n\n  if (originalHeight <= 0 || originalWidth <= 0 || maxHiddenDots <= 0 || dotSize <= 0) {\n    return {\n      height: 0,\n      width: 0,\n      hideYDots: 0,\n      hideXDots: 0\n    };\n  }\n\n  const k = originalHeight / originalWidth;\n\n  //Getting the maximum possible axis hidden dots\n  hideDots.x = Math.floor(Math.sqrt(maxHiddenDots / k));\n  //The count of hidden dot's can't be less than 1\n  if (hideDots.x <= 0) hideDots.x = 1;\n  //Check the limit of the maximum allowed axis hidden dots\n  if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.x) hideDots.x = maxHiddenAxisDots;\n  //The count of dots should be odd\n  if (hideDots.x % 2 === 0) hideDots.x--;\n  imageSize.x = hideDots.x * dotSize;\n  //Calculate opposite axis hidden dots based on axis value.\n  //The value will be odd.\n  //We use ceil to prevent dots covering by the image.\n  hideDots.y = 1 + 2 * Math.ceil((hideDots.x * k - 1) / 2);\n  imageSize.y = Math.round(imageSize.x * k);\n  //If the result dots count is bigger than max - then decrease size and calculate again\n  if (hideDots.y * hideDots.x > maxHiddenDots || (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y)) {\n    if (maxHiddenAxisDots && maxHiddenAxisDots < hideDots.y) {\n      hideDots.y = maxHiddenAxisDots;\n      if (hideDots.y % 2 === 0) hideDots.x--;\n    } else {\n      hideDots.y -= 2;\n    }\n    imageSize.y = hideDots.y * dotSize;\n    hideDots.x = 1 + 2 * Math.ceil((hideDots.y / k - 1) / 2);\n    imageSize.x = Math.round(imageSize.y / k);\n  }\n\n  return {\n    height: imageSize.y,\n    width: imageSize.x,\n    hideYDots: hideDots.y,\n    hideXDots: hideDots.x\n  };\n}\n","import { GradientTypes } from \"../types\";\n\nexport default {\n  radial: \"radial\",\n  linear: \"linear\"\n} as GradientTypes;\n","import { DrawTypes } from \"../types\";\n\nexport default {\n  canvas: \"canvas\",\n  svg: \"svg\"\n} as DrawTypes;\n","import { TypeNumber } from \"../types\";\n\ninterface TypesMap {\n  [key: number]: TypeNumber;\n}\n\nconst qrTypes: TypesMap = {};\n\nfor (let type = 0; type <= 40; type++) {\n  qrTypes[type] = type as TypeNumber;\n}\n\n// 0 types is autodetect\n\n// types = {\n//     0: 0,\n//     1: 1,\n//     ...\n//     40: 40\n// }\n\nexport default qrTypes;\n","import qrTypes from \"../constants/qrTypes\";\nimport drawTypes from \"../constants/drawTypes\";\nimport shapeTypes from \"../constants/shapeTypes\";\nimport errorCorrectionLevels from \"../constants/errorCorrectionLevels\";\nimport { ShapeType, DotType, Options, TypeNumber, ErrorCorrectionLevel, Mode, DrawType, Gradient } from \"../types\";\n\nexport interface RequiredOptions extends Options {\n  type: DrawType;\n  shape: ShapeType;\n  width: number;\n  height: number;\n  margin: number;\n  data: string;\n  qrOptions: {\n    typeNumber: TypeNumber;\n    mode?: Mode;\n    errorCorrectionLevel: ErrorCorrectionLevel;\n  };\n  imageOptions: {\n    saveAsBlob: boolean;\n    hideBackgroundDots: boolean;\n    imageSize: number;\n    crossOrigin?: string;\n    margin: number;\n  };\n  dotsOptions: {\n    type: DotType;\n    color: string;\n    gradient?: Gradient;\n  };\n  backgroundOptions: {\n    round: number;\n    color: string;\n    gradient?: Gradient;\n  };\n}\n\nconst defaultOptions: RequiredOptions = {\n  type: drawTypes.canvas,\n  shape: shapeTypes.square,\n  width: 300,\n  height: 300,\n  data: \"\",\n  margin: 0,\n  qrOptions: {\n    typeNumber: qrTypes[0],\n    mode: undefined,\n    errorCorrectionLevel: errorCorrectionLevels.Q\n  },\n  imageOptions: {\n    saveAsBlob: false,\n    hideBackgroundDots: true,\n    imageSize: 0.4,\n    crossOrigin: undefined,\n    margin: 0\n  },\n  dotsOptions: {\n    type: \"square\",\n    color: \"#000\"\n  },\n  backgroundOptions: {\n    round: 0,\n    color: \"#fff\"\n  }\n};\n\nexport default defaultOptions;\n","import { ErrorCorrectionLevel } from \"../types\";\n\ninterface ErrorCorrectionLevels {\n  [key: string]: ErrorCorrectionLevel;\n}\n\nexport default {\n  L: \"L\",\n  M: \"M\",\n  Q: \"Q\",\n  H: \"H\"\n} as ErrorCorrectionLevels;\n","import { RequiredOptions } from \"../core/QROptions\";\nimport { Gradient } from \"../types\";\n\nfunction sanitizeGradient(gradient: Gradient): Gradient {\n  const newGradient = { ...gradient };\n\n  if (!newGradient.colorStops || !newGradient.colorStops.length) {\n    throw \"Field 'colorStops' is required in gradient\";\n  }\n\n  if (newGradient.rotation) {\n    newGradient.rotation = Number(newGradient.rotation);\n  } else {\n    newGradient.rotation = 0;\n  }\n\n  newGradient.colorStops = newGradient.colorStops.map((colorStop: { offset: number; color: string }) => ({\n    ...colorStop,\n    offset: Number(colorStop.offset)\n  }));\n\n  return newGradient;\n}\n\nexport default function sanitizeOptions(options: RequiredOptions): RequiredOptions {\n  const newOptions = { ...options };\n\n  newOptions.width = Number(newOptions.width);\n  newOptions.height = Number(newOptions.height);\n  newOptions.margin = Number(newOptions.margin);\n  newOptions.imageOptions = {\n    ...newOptions.imageOptions,\n    hideBackgroundDots: Boolean(newOptions.imageOptions.hideBackgroundDots),\n    imageSize: Number(newOptions.imageOptions.imageSize),\n    margin: Number(newOptions.imageOptions.margin)\n  };\n\n  if (newOptions.margin > Math.min(newOptions.width, newOptions.height)) {\n    newOptions.margin = Math.min(newOptions.width, newOptions.height);\n  }\n\n  newOptions.dotsOptions = {\n    ...newOptions.dotsOptions\n  };\n  if (newOptions.dotsOptions.gradient) {\n    newOptions.dotsOptions.gradient = sanitizeGradient(newOptions.dotsOptions.gradient);\n  }\n\n  if (newOptions.cornersSquareOptions) {\n    newOptions.cornersSquareOptions = {\n      ...newOptions.cornersSquareOptions\n    };\n    if (newOptions.cornersSquareOptions.gradient) {\n      newOptions.cornersSquareOptions.gradient = sanitizeGradient(newOptions.cornersSquareOptions.gradient);\n    }\n  }\n\n  if (newOptions.cornersDotOptions) {\n    newOptions.cornersDotOptions = {\n      ...newOptions.cornersDotOptions\n    };\n    if (newOptions.cornersDotOptions.gradient) {\n      newOptions.cornersDotOptions.gradient = sanitizeGradient(newOptions.cornersDotOptions.gradient);\n    }\n  }\n\n  if (newOptions.backgroundOptions) {\n    newOptions.backgroundOptions = {\n      ...newOptions.backgroundOptions\n    };\n    if (newOptions.backgroundOptions.gradient) {\n      newOptions.backgroundOptions.gradient = sanitizeGradient(newOptions.backgroundOptions.gradient);\n    }\n  }\n\n  return newOptions;\n}\n","import QRCodeStyling from \"./core/QRCodeStyling\";\nimport dotTypes from \"./constants/dotTypes\";\nimport cornerDotTypes from \"./constants/cornerDotTypes\";\nimport cornerSquareTypes from \"./constants/cornerSquareTypes\";\nimport errorCorrectionLevels from \"./constants/errorCorrectionLevels\";\nimport errorCorrectionPercents from \"./constants/errorCorrectionPercents\";\nimport modes from \"./constants/modes\";\nimport qrTypes from \"./constants/qrTypes\";\nimport drawTypes from \"./constants/drawTypes\";\nimport shapeTypes from \"./constants/shapeTypes\";\nimport gradientTypes from \"./constants/gradientTypes\";\n\nexport * from \"./types\";\n\nexport {\n  dotTypes,\n  cornerDotTypes,\n  cornerSquareTypes,\n  errorCorrectionLevels,\n  errorCorrectionPercents,\n  modes,\n  qrTypes,\n  drawTypes,\n  shapeTypes,\n  gradientTypes\n};\n\nexport default QRCodeStyling;\n","import getMode from \"../tools/getMode\";\nimport mergeDeep from \"../tools/merge\";\nimport downloadURI from \"../tools/downloadURI\";\nimport QRSVG from \"./QRSVG\";\nimport drawTypes from \"../constants/drawTypes\";\n\nimport defaultOptions, { RequiredOptions } from \"./QROptions\";\nimport sanitizeOptions from \"../tools/sanitizeOptions\";\nimport { FileExtension, QRCode, Options, DownloadOptions, ExtensionFunction, Window, Canvas } from \"../types\";\nimport qrcode from \"qrcode-generator\";\n\ndeclare const window: Window;\n\nexport default class QRCodeStyling {\n  _options: RequiredOptions;\n  _window: Window;\n  _container?: HTMLElement;\n  _canvas?: Canvas;\n  _svg?: SVGElement;\n  _qr?: QRCode;\n  _extension?: ExtensionFunction;\n  _canvasDrawingPromise?: Promise<void>;\n  _svgDrawingPromise?: Promise<void>;\n\n  constructor(options?: Partial<Options>) {\n    if (options?.jsdom) {\n      this._window = new options.jsdom(\"\", { resources: \"usable\" }).window;\n    } else {\n      this._window = window;\n    }\n    this._options = options ? sanitizeOptions(mergeDeep(defaultOptions, options) as RequiredOptions) : defaultOptions;\n    this.update();\n  }\n\n  static _clearContainer(container?: HTMLElement): void {\n    if (container) {\n      container.innerHTML = \"\";\n    }\n  }\n\n  _setupSvg(): void {\n    if (!this._qr) {\n      return;\n    }\n    const qrSVG = new QRSVG(this._options, this._window);\n\n    this._svg = qrSVG.getElement();\n    this._svgDrawingPromise = qrSVG.drawQR(this._qr).then(() => {\n      if (!this._svg) return;\n      this._extension?.(qrSVG.getElement(), this._options);\n    });\n  }\n\n  _setupCanvas(): void {\n    if (!this._qr) {\n      return;\n    }\n\n    if (this._options.nodeCanvas?.createCanvas) {\n      this._canvas = this._options.nodeCanvas.createCanvas(this._options.width, this._options.height);\n    } else {\n      this._canvas = document.createElement(\"canvas\");\n    }\n    this._canvas.width = this._options.width;\n    this._canvas.height = this._options.height;\n\n    this._setupSvg();\n    this._canvasDrawingPromise = this._svgDrawingPromise?.then(() => {\n      if (!this._svg) return;\n\n      const svg = this._svg;\n      const xml = new this._window.XMLSerializer().serializeToString(svg);\n      const svg64 = btoa(xml);\n      const image64 = \"data:image/svg+xml;base64,\" + svg64;\n\n      if (this._options.nodeCanvas?.loadImage) {\n        return this._options.nodeCanvas.loadImage(image64).then((image: HTMLImageElement) => {\n          // fix blurry svg\n          image.width = this._options.width;\n          image.height = this._options.height;\n          this._canvas?.getContext(\"2d\")?.drawImage(image, 0, 0);\n        });\n      } else {\n        const image = new this._window.Image();\n\n        return new Promise((resolve) => {\n          image.onload = (): void => {\n            this._canvas?.getContext(\"2d\")?.drawImage(image, 0, 0);\n            resolve();\n          };\n\n          image.src = image64;\n        });\n      }\n    });\n  }\n\n  async _getElement(extension: FileExtension = \"png\"): Promise<SVGElement | Canvas | undefined> {\n    if (!this._qr) throw \"QR code is empty\";\n\n    if (extension.toLowerCase() === \"svg\") {\n      if (!this._svg || !this._svgDrawingPromise) {\n        this._setupSvg();\n      }\n      await this._svgDrawingPromise;\n      return this._svg;\n    } else {\n      if (!this._canvas || !this._canvasDrawingPromise) {\n        this._setupCanvas();\n      }\n      await this._canvasDrawingPromise;\n      return this._canvas;\n    }\n  }\n\n  update(options?: Partial<Options>): void {\n    QRCodeStyling._clearContainer(this._container);\n    this._options = options ? sanitizeOptions(mergeDeep(this._options, options) as RequiredOptions) : this._options;\n\n    if (!this._options.data) {\n      return;\n    }\n\n    this._qr = qrcode(this._options.qrOptions.typeNumber, this._options.qrOptions.errorCorrectionLevel);\n    this._qr.addData(this._options.data, this._options.qrOptions.mode || getMode(this._options.data));\n    this._qr.make();\n\n    if (this._options.type === drawTypes.canvas) {\n      this._setupCanvas();\n    } else {\n      this._setupSvg();\n    }\n\n    this.append(this._container);\n  }\n\n  append(container?: HTMLElement): void {\n    if (!container) {\n      return;\n    }\n\n    if (typeof container.appendChild !== \"function\") {\n      throw \"Container should be a single DOM node\";\n    }\n\n    if (this._options.type === drawTypes.canvas) {\n      if (this._canvas) {\n        container.appendChild(this._canvas);\n      }\n    } else {\n      if (this._svg) {\n        container.appendChild(this._svg);\n      }\n    }\n\n    this._container = container;\n  }\n\n  applyExtension(extension: ExtensionFunction): void {\n    if (!extension) {\n      throw \"Extension function should be defined.\";\n    }\n\n    this._extension = extension;\n    this.update();\n  }\n\n  deleteExtension(): void {\n    this._extension = undefined;\n    this.update();\n  }\n\n  async getRawData(extension: FileExtension = \"png\"): Promise<Blob | Buffer | null> {\n    if (!this._qr) throw \"QR code is empty\";\n    const element = await this._getElement(extension);\n\n    if (!element) {\n      return null;\n    }\n\n    if (extension.toLowerCase() === \"svg\") {\n      const serializer = new this._window.XMLSerializer();\n      const source = serializer.serializeToString(element);\n      const svgString = `<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n${source}`;\n      if (typeof Blob !== \"undefined\" && !this._options.jsdom) {\n        return new Blob([svgString], { type: \"image/svg+xml\" });\n      } else {\n        return Buffer.from(svgString);\n      }\n    } else {\n      return new Promise((resolve) => {\n        const canvas = element as Canvas;\n        if (canvas.toBuffer) {\n          resolve(canvas.toBuffer(`image/${extension}`));\n        } else {\n          canvas.toBlob(resolve, `image/${extension}`, 1);\n        }\n      });\n    }\n  }\n\n  async download(downloadOptions?: Partial<DownloadOptions> | string): Promise<void> {\n    if (!this._qr) throw \"QR code is empty\";\n    if (typeof Blob === \"undefined\") throw \"Cannot download in Node.js, call getRawData instead.\";\n    let extension = \"png\" as FileExtension;\n    let name = \"qr\";\n\n    //TODO remove deprecated code in the v2\n    if (typeof downloadOptions === \"string\") {\n      extension = downloadOptions as FileExtension;\n      console.warn(\n        \"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\"\n      );\n    } else if (typeof downloadOptions === \"object\" && downloadOptions !== null) {\n      if (downloadOptions.name) {\n        name = downloadOptions.name;\n      }\n      if (downloadOptions.extension) {\n        extension = downloadOptions.extension;\n      }\n    }\n\n    const element = await this._getElement(extension);\n\n    if (!element) {\n      return;\n    }\n\n    if (extension.toLowerCase() === \"svg\") {\n      const serializer = new XMLSerializer();\n      let source = serializer.serializeToString(element);\n\n      source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source;\n      const url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n      downloadURI(url, `${name}.svg`);\n    } else {\n      const url = (element as HTMLCanvasElement).toDataURL(`image/${extension}`);\n      downloadURI(url, `${name}.${extension}`);\n    }\n  }\n}\n","import modes from \"../constants/modes\";\nimport { Mode } from \"../types\";\n\nexport default function getMode(data: string): Mode {\n  switch (true) {\n    case /^[0-9]*$/.test(data):\n      return modes.numeric;\n    case /^[0-9A-Z $%*+\\-./:]*$/.test(data):\n      return modes.alphanumeric;\n    default:\n      return modes.byte;\n  }\n}\n","import { Mode } from \"../types\";\n\ninterface Modes {\n  [key: string]: Mode;\n}\n\nexport default {\n  numeric: \"Numeric\",\n  alphanumeric: \"Alphanumeric\",\n  byte: \"Byte\",\n  kanji: \"Kanji\"\n} as Modes;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(44);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"]}