diff --git a/demo/index.html b/demo/index.html index f5d777f..9b871a5 100644 --- a/demo/index.html +++ b/demo/index.html @@ -16,7 +16,7 @@
- + diff --git a/dist/qr-decode.es.js b/dist/qr-decode.es.js index 9603896..8a70b00 100644 --- a/dist/qr-decode.es.js +++ b/dist/qr-decode.es.js @@ -1,5 +1,5 @@ /*! - * qr-decode v0.0.4 + * qr-decode v0.0.5 * (c) cnwhy * Released under the ISC License. */ @@ -2432,6 +2432,130 @@ function decode(imageDate, debugfn) { }; return process(imageDate.data, base); } + +// ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集) +var ECI_CHARSET = { + 3: 'iso-8859-1', + 20: 'shift_jis', + 25: 'utf-16be', + 26: 'utf-8', + 27: 'us-ascii' +}; + +// UTF-8 字节数组转字符串 +var decodeUTF8 = function decodeUTF8(bytes) { + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder('utf-8').decode(new Uint8Array(bytes)); + } + var str = ""; + var i = 0; + while (i < bytes.length) { + var code = bytes[i++] & 0xFF; + if (code < 0x80) { + str += String.fromCharCode(code); + } else if (code < 0xE0) { + str += String.fromCharCode((code & 0x1F) << 6 | bytes[i++] & 0x3F); + } else if (code < 0xF0) { + str += String.fromCharCode((code & 0x0F) << 12 | (bytes[i++] & 0x3F) << 6 | bytes[i++] & 0x3F); + } else { + var cp = (code & 0x07) << 18 | (bytes[i++] & 0x3F) << 12 | (bytes[i++] & 0x3F) << 6 | bytes[i++] & 0x3F; + cp -= 0x10000; + str += String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00); + } + } + return str; +}; + +// UTF-16 字节数组转字符串(isLE=false 时先把 BE 转成 LE 统一处理) +var decodeUTF16 = function decodeUTF16(bytes, isLE) { + if (!isLE) { + // UTF-16BE -> 交换字节序 + for (var i = 0; i + 1 < bytes.length; i += 2) { + var t = bytes[i]; + bytes[i] = bytes[i + 1]; + bytes[i + 1] = t; + } + } + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder('utf-16le').decode(new Uint8Array(bytes)); + } + // 兜底:手写 UTF-16LE 解码(含代理对) + var str = ""; + for (var i = 0; i + 1 < bytes.length; i += 2) { + var code = bytes[i] | bytes[i + 1] << 8; + if (code >= 0xD800 && code <= 0xDBFF && i + 3 < bytes.length) { + var low = bytes[i + 2] | bytes[i + 3] << 8; + if (low >= 0xDC00 && low <= 0xDFFF) { + str += String.fromCharCode(code, low); + i += 2; + continue; + } + } + str += String.fromCharCode(code); + } + return str; +}; + +// 8bit 字节段解码:按 ECI 声明 -> BOM -> 启发式检测 -> UTF-8 的顺序判断编码方式 +var bytesToString = function bytesToString(bytes, eci) { + var len = bytes.length; + if (len == 0) { + return ""; + } + + // 1. 优先按 ECI 声明的字符集解码 + if (eci && ECI_CHARSET[eci]) { + var charset = ECI_CHARSET[eci]; + if (charset == 'utf-16be') { + return decodeUTF16(bytes, false); + } + if (charset == 'utf-8') { + return decodeUTF8(bytes); + } + if (typeof TextDecoder !== 'undefined') { + try { + return new TextDecoder(charset).decode(new Uint8Array(bytes)); + } catch (e) { + // 环境不支持该字符集时继续走下面的检测 + } + } + } + + // 2. BOM 检测 + if (len >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) { + return decodeUTF16(bytes.slice(2), true); // UTF-16LE + } + if (len >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) { + return decodeUTF16(bytes.slice(2), false); // UTF-16BE + } + if (len >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) { + return decodeUTF8(bytes.slice(3)); // UTF-8 with BOM + } + + // 3. 无 BOM 时启发式检测 UTF-16(偶数长度且奇/偶位存在成片 0x00 字节) + if (len >= 4 && len % 2 == 0) { + var evenZeros = 0; + var oddZeros = 0; + for (var i = 0; i < len; i += 2) { + if (bytes[i] == 0) { + evenZeros++; + } + if (bytes[i + 1] == 0) { + oddZeros++; + } + } + var half = len / 2; + if (oddZeros > half * 0.7) { + return decodeUTF16(bytes, true); // 奇数位大量 0x00 -> UTF-16LE + } + if (evenZeros > half * 0.7) { + return decodeUTF16(bytes, false); // 偶数位大量 0x00 -> UTF-16BE + } + } + + // 4. 兜底默认 UTF-8 + return decodeUTF8(bytes); +}; var process = function process(data, base) { // var start = new Date().getTime(); // var image = grayScaleToBitmap(grayscale(),base); @@ -2453,11 +2577,44 @@ var process = function process(data, base) { // 解析QR矩阵 var reader = Decoder_1.decode(qRCodeMatrix.bits); - // console.log(reader); - var data = reader.DataByte; + + // 先读取编码方式(mode indicator),按编码方式将数据直接转成字符串 + var MODE_NUMBER = 1; + var MODE_ROMAN_AND_NUMBER = 2; + var MODE_8BIT_BYTE = 4; + var MODE_ECI = 7; + var MODE_KANJI = 8; var str = ""; - for (var i = 0; i < data.length; i++) { - for (var j = 0; j < data[i].length; j++) str += String.fromCharCode(data[i][j]); + var eci = 0; // ECI 声明的字符集编号,作用于后续字节段 + while (true) { + var mode = reader.NextMode(); + if (mode == 0) break; + if (mode == MODE_ECI) { + eci = reader.parseECIValue(); + continue; + } + var dataLength = reader.getDataLength(mode); + if (dataLength < 1) throw "Invalid data length: " + dataLength; + switch (mode) { + case MODE_NUMBER: + // 数字模式 + str += reader.getFigureString(dataLength); + break; + case MODE_ROMAN_AND_NUMBER: + // 字母数字模式 + str += reader.getRomanAndFigureString(dataLength); + break; + case MODE_8BIT_BYTE: + // 8bit 字节模式,先判断编码方式(ECI/BOM/启发式)再解码 + str += bytesToString(reader.get8bitByteArray(dataLength), eci); + break; + case MODE_KANJI: + // 汉字(日文)模式 + str += reader.getKanjiString(dataLength); + break; + default: + throw "Invalid mode: " + mode; + } } // var end = new Date().getTime(); diff --git a/dist/qr-decode.umd.js b/dist/qr-decode.umd.js index 981378d..7d597b0 100644 --- a/dist/qr-decode.umd.js +++ b/dist/qr-decode.umd.js @@ -1,5 +1,5 @@ /*! - * qr-decode v0.0.4 + * qr-decode v0.0.5 * (c) cnwhy * Released under the ISC License. */ @@ -2438,6 +2438,130 @@ }; return process(imageDate.data, base); } + + // ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集) + var ECI_CHARSET = { + 3: 'iso-8859-1', + 20: 'shift_jis', + 25: 'utf-16be', + 26: 'utf-8', + 27: 'us-ascii' + }; + + // UTF-8 字节数组转字符串 + var decodeUTF8 = function decodeUTF8(bytes) { + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder('utf-8').decode(new Uint8Array(bytes)); + } + var str = ""; + var i = 0; + while (i < bytes.length) { + var code = bytes[i++] & 0xFF; + if (code < 0x80) { + str += String.fromCharCode(code); + } else if (code < 0xE0) { + str += String.fromCharCode((code & 0x1F) << 6 | bytes[i++] & 0x3F); + } else if (code < 0xF0) { + str += String.fromCharCode((code & 0x0F) << 12 | (bytes[i++] & 0x3F) << 6 | bytes[i++] & 0x3F); + } else { + var cp = (code & 0x07) << 18 | (bytes[i++] & 0x3F) << 12 | (bytes[i++] & 0x3F) << 6 | bytes[i++] & 0x3F; + cp -= 0x10000; + str += String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00); + } + } + return str; + }; + + // UTF-16 字节数组转字符串(isLE=false 时先把 BE 转成 LE 统一处理) + var decodeUTF16 = function decodeUTF16(bytes, isLE) { + if (!isLE) { + // UTF-16BE -> 交换字节序 + for (var i = 0; i + 1 < bytes.length; i += 2) { + var t = bytes[i]; + bytes[i] = bytes[i + 1]; + bytes[i + 1] = t; + } + } + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder('utf-16le').decode(new Uint8Array(bytes)); + } + // 兜底:手写 UTF-16LE 解码(含代理对) + var str = ""; + for (var i = 0; i + 1 < bytes.length; i += 2) { + var code = bytes[i] | bytes[i + 1] << 8; + if (code >= 0xD800 && code <= 0xDBFF && i + 3 < bytes.length) { + var low = bytes[i + 2] | bytes[i + 3] << 8; + if (low >= 0xDC00 && low <= 0xDFFF) { + str += String.fromCharCode(code, low); + i += 2; + continue; + } + } + str += String.fromCharCode(code); + } + return str; + }; + + // 8bit 字节段解码:按 ECI 声明 -> BOM -> 启发式检测 -> UTF-8 的顺序判断编码方式 + var bytesToString = function bytesToString(bytes, eci) { + var len = bytes.length; + if (len == 0) { + return ""; + } + + // 1. 优先按 ECI 声明的字符集解码 + if (eci && ECI_CHARSET[eci]) { + var charset = ECI_CHARSET[eci]; + if (charset == 'utf-16be') { + return decodeUTF16(bytes, false); + } + if (charset == 'utf-8') { + return decodeUTF8(bytes); + } + if (typeof TextDecoder !== 'undefined') { + try { + return new TextDecoder(charset).decode(new Uint8Array(bytes)); + } catch (e) { + // 环境不支持该字符集时继续走下面的检测 + } + } + } + + // 2. BOM 检测 + if (len >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) { + return decodeUTF16(bytes.slice(2), true); // UTF-16LE + } + if (len >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) { + return decodeUTF16(bytes.slice(2), false); // UTF-16BE + } + if (len >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) { + return decodeUTF8(bytes.slice(3)); // UTF-8 with BOM + } + + // 3. 无 BOM 时启发式检测 UTF-16(偶数长度且奇/偶位存在成片 0x00 字节) + if (len >= 4 && len % 2 == 0) { + var evenZeros = 0; + var oddZeros = 0; + for (var i = 0; i < len; i += 2) { + if (bytes[i] == 0) { + evenZeros++; + } + if (bytes[i + 1] == 0) { + oddZeros++; + } + } + var half = len / 2; + if (oddZeros > half * 0.7) { + return decodeUTF16(bytes, true); // 奇数位大量 0x00 -> UTF-16LE + } + if (evenZeros > half * 0.7) { + return decodeUTF16(bytes, false); // 偶数位大量 0x00 -> UTF-16BE + } + } + + // 4. 兜底默认 UTF-8 + return decodeUTF8(bytes); + }; var process = function process(data, base) { // var start = new Date().getTime(); // var image = grayScaleToBitmap(grayscale(),base); @@ -2459,11 +2583,44 @@ // 解析QR矩阵 var reader = Decoder_1.decode(qRCodeMatrix.bits); - // console.log(reader); - var data = reader.DataByte; + + // 先读取编码方式(mode indicator),按编码方式将数据直接转成字符串 + var MODE_NUMBER = 1; + var MODE_ROMAN_AND_NUMBER = 2; + var MODE_8BIT_BYTE = 4; + var MODE_ECI = 7; + var MODE_KANJI = 8; var str = ""; - for (var i = 0; i < data.length; i++) { - for (var j = 0; j < data[i].length; j++) str += String.fromCharCode(data[i][j]); + var eci = 0; // ECI 声明的字符集编号,作用于后续字节段 + while (true) { + var mode = reader.NextMode(); + if (mode == 0) break; + if (mode == MODE_ECI) { + eci = reader.parseECIValue(); + continue; + } + var dataLength = reader.getDataLength(mode); + if (dataLength < 1) throw "Invalid data length: " + dataLength; + switch (mode) { + case MODE_NUMBER: + // 数字模式 + str += reader.getFigureString(dataLength); + break; + case MODE_ROMAN_AND_NUMBER: + // 字母数字模式 + str += reader.getRomanAndFigureString(dataLength); + break; + case MODE_8BIT_BYTE: + // 8bit 字节模式,先判断编码方式(ECI/BOM/启发式)再解码 + str += bytesToString(reader.get8bitByteArray(dataLength), eci); + break; + case MODE_KANJI: + // 汉字(日文)模式 + str += reader.getKanjiString(dataLength); + break; + default: + throw "Invalid mode: " + mode; + } } // var end = new Date().getTime(); diff --git a/dist/qr-decode.umd.min.js b/dist/qr-decode.umd.min.js index 3e846e1..11467ed 100644 --- a/dist/qr-decode.umd.min.js +++ b/dist/qr-decode.umd.min.js @@ -1,7 +1,7 @@ /*! - * qr-decode v0.0.4 + * qr-decode v0.0.5 * (c) cnwhy * Released under the ISC License. */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).qrDecode=t()}(this,(function(){"use strict";function e(e,t,n){this.x=e,this.y=t,this.count=1,this.estimatedModuleSize=n,this.__defineGetter__("EstimatedModuleSize",(function(){return this.estimatedModuleSize})),this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("X",(function(){return Math.floor(this.x)})),this.__defineGetter__("Y",(function(){return Math.floor(this.y)})),this.incrementCount=function(){this.count++},this.aboutEquals=function(e,t,n){if(Math.abs(t-this.y)<=e&&Math.abs(n-this.x)<=e){var i=Math.abs(e-this.estimatedModuleSize);return i<=1||i/this.estimatedModuleSize<=1}return!1}}var t=function(t,n,i,r,s,o,a,h){this.image=t,this.possibleCenters=new Array,this.startX=i,this.startY=r,this.width=s,this.height=o,this.moduleSize=a,this.crossCheckStateCount=new Array(0,0,0),this.resultPointCallback=h,this.centerFromEnd=function(e,t){return t-e[2]-e[1]/2},this.foundPatternCross=function(e){for(var t=this.moduleSize,n=t/2,i=0;i<3;i++)if(Math.abs(t-e[i])>=n)return!1;return!0},this.crossCheckVertical=function(e,t,i,r){var s=this.image,o=n.height,a=this.crossCheckStateCount;a[0]=0,a[1]=0,a[2]=0;for(var h=e;h>=0&&s[t+h*n.width]&&a[1]<=i;)a[1]++,h--;if(h<0||a[1]>i)return NaN;for(;h>=0&&!s[t+h*n.width]&&a[0]<=i;)a[0]++,h--;if(a[0]>i)return NaN;for(h=e+1;hi)return NaN;for(;hi)return NaN;var w=a[0]+a[1]+a[2];return 5*Math.abs(w-r)>=2*r?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(t,n,i){var r=t[0]+t[1]+t[2],s=this.centerFromEnd(t,i),o=this.crossCheckVertical(n,Math.floor(s),2*t[1],r);if(!isNaN(o)){for(var a=(t[0]+t[1]+t[2])/3,h=this.possibleCenters.length,w=0;w>1),h=new Array(0,0,0),w=0;w>1:-(w+1>>1));h[0]=0,h[1]=0,h[2]=0;for(var u=e;u=0&&s[n+h*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[n+h*e.width]&&a[1]<=i;)a[1]++,h--;if(h<0||a[1]>i)return NaN;for(;h>=0&&s[n+h*e.width]&&a[0]<=i;)a[0]++,h--;if(a[0]>i)return NaN;for(h=t+1;h=i)return NaN;for(;h=i)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-r)>=2*r?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.crossCheckHorizontal=function(t,n,i,r){for(var s=this.image,o=e.width,a=this.CrossCheckStateCount,h=t;h>=0&&s[h+n*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[h+n*e.width]&&a[1]<=i;)a[1]++,h--;if(h<0||a[1]>i)return NaN;for(;h>=0&&s[h+n*e.width]&&a[0]<=i;)a[0]++,h--;if(a[0]>i)return NaN;for(h=t+1;h=i)return NaN;for(;h=i)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-r)>=r?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(e,t,i){var r=e[0]+e[1]+e[2]+e[3]+e[4],s=this.centerFromEnd(e,i),o=this.crossCheckVertical(t,Math.floor(s),e[2],r);if(!isNaN(o)&&(s=this.crossCheckHorizontal(Math.floor(s),Math.floor(o),e[2],r),!isNaN(s))){for(var a=r/7,h=!1,w=this.possibleCenters.length,f=0;f3){for(var t=0,n=0,i=0;i=0;i--){var h=this.possibleCenters[i];Math.abs(h.EstimatedModuleSize-s)>a&&this.possibleCenters.splice(i,1)}}return this.possibleCenters.length>3&&this.possibleCenters.sort((function(e,t){return e.count>t.count?-1:e.count=2){if(null!=t)return this.hasSkipped=!0,Math.floor((Math.abs(t.X-i.X)-Math.abs(t.Y-i.Y))/2);t=i}}return 0},this.haveMultiplyConfirmedCenters=function(){for(var e=0,t=0,n=this.possibleCenters.length,i=0;i=2&&(e++,t+=r.EstimatedModuleSize)}if(e<3)return!1;var s=t/n,o=0;for(i=0;ia[2]&&(h+=u-a[2]-s,f=r-1)}else{do{f++}while(f=s&&o>=a?(i=e[0],n=e[1],r=e[2]):a>=o&&a>=s?(i=e[1],n=e[0],r=e[2]):(i=e[2],n=e[0],r=e[1]),function(e,t,n){var i=t.x,r=t.y;return(n.x-i)*(e.y-r)-(n.y-r)*(e.x-i)}(n,i,r)<0){var h=n;n=r,r=h}e[0]=n,e[1]=i,e[2]=r}(l),new i(l)}},s=function(e,t){return e>=0?e>>t:(e>>t)+(2<<~t)};function o(e,t,n){this.ordinal_Renamed_Field=e,this.bits=t,this.name=n,this.__defineGetter__("Bits",(function(){return this.bits})),this.__defineGetter__("Name",(function(){return this.name})),this.ordinal=function(){return this.ordinal_Renamed_Field}}var a=new o(0,1,"L"),h=new o(1,0,"M"),w=new o(2,3,"Q"),f=new o(3,2,"H"),u=new Array(h,a,f,w),l=s,d=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),c=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);function v(e){this.errorCorrectionLevel=function(e){if(e<0||e>=u.length)throw"ArgumentException";return u[e]}(e>>3&3),this.dataMask=7&e,this.__defineGetter__("ErrorCorrectionLevel",(function(){return this.errorCorrectionLevel})),this.__defineGetter__("DataMask",(function(){return this.dataMask})),this.GetHashCode=function(){return this.errorCorrectionLevel.ordinal()<<3|this.dataMask},this.Equals=function(e){var t=e;return this.errorCorrectionLevel==t.errorCorrectionLevel&&this.dataMask==t.dataMask}}v.numBitsDiffering=function(e,t){return c[15&(e^=t)]+c[15&l(e,4)]+c[15&l(e,8)]+c[15&l(e,12)]+c[15&l(e,16)]+c[15&l(e,20)]+c[15&l(e,24)]+c[15&l(e,28)]},v.decodeFormatInformation=function(e){var t=v.doDecodeFormatInformation(e);return null!=t?t:v.doDecodeFormatInformation(21522^e)},v.doDecodeFormatInformation=function(e){for(var t=4294967295,n=0,i=0;i>5;0!=(31&e)&&n++,this.rowSize=n,this.bits=new Array(n*t);for(var i=0;i>5);return 0!=(1&m(this.bits[n],31&e))},this.set_Renamed=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]|=1<<(31&e)},this.flip=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,t=0;tthis.height||r>this.width)throw"The region must fit inside the matrix";for(var o=t;o>5)]|=1<<(31&h)}};function y(e,t){this.count=e,this.dataCodewords=t,this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("DataCodewords",(function(){return this.dataCodewords}))}function C(e,t,n){this.ecCodewordsPerBlock=e,this.ecBlocks=n?new Array(t,n):new Array(t),this.__defineGetter__("ECCodewordsPerBlock",(function(){return this.ecCodewordsPerBlock})),this.__defineGetter__("TotalECCodewords",(function(){return this.ecCodewordsPerBlock*this.NumBlocks})),this.__defineGetter__("NumBlocks",(function(){for(var e=0,t=0;t6&&(t.setRegion(e-11,0,3,6),t.setRegion(0,e-11,6,3)),t},this.getECBlocksForLevel=function(e){return this.ecBlocks[e.ordinal()]}}_.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_.VERSIONS=new Array(new _(1,new Array,new C(7,new y(1,19)),new C(10,new y(1,16)),new C(13,new y(1,13)),new C(17,new y(1,9))),new _(2,new Array(6,18),new C(10,new y(1,34)),new C(16,new y(1,28)),new C(22,new y(1,22)),new C(28,new y(1,16))),new _(3,new Array(6,22),new C(15,new y(1,55)),new C(26,new y(1,44)),new C(18,new y(2,17)),new C(22,new y(2,13))),new _(4,new Array(6,26),new C(20,new y(1,80)),new C(18,new y(2,32)),new C(26,new y(2,24)),new C(16,new y(4,9))),new _(5,new Array(6,30),new C(26,new y(1,108)),new C(24,new y(2,43)),new C(18,new y(2,15),new y(2,16)),new C(22,new y(2,11),new y(2,12))),new _(6,new Array(6,34),new C(18,new y(2,68)),new C(16,new y(4,27)),new C(24,new y(4,19)),new C(28,new y(4,15))),new _(7,new Array(6,22,38),new C(20,new y(2,78)),new C(18,new y(4,31)),new C(18,new y(2,14),new y(4,15)),new C(26,new y(4,13),new y(1,14))),new _(8,new Array(6,24,42),new C(24,new y(2,97)),new C(22,new y(2,38),new y(2,39)),new C(22,new y(4,18),new y(2,19)),new C(26,new y(4,14),new y(2,15))),new _(9,new Array(6,26,46),new C(30,new y(2,116)),new C(22,new y(3,36),new y(2,37)),new C(20,new y(4,16),new y(4,17)),new C(24,new y(4,12),new y(4,13))),new _(10,new Array(6,28,50),new C(18,new y(2,68),new y(2,69)),new C(26,new y(4,43),new y(1,44)),new C(24,new y(6,19),new y(2,20)),new C(28,new y(6,15),new y(2,16))),new _(11,new Array(6,30,54),new C(20,new y(4,81)),new C(30,new y(1,50),new y(4,51)),new C(28,new y(4,22),new y(4,23)),new C(24,new y(3,12),new y(8,13))),new _(12,new Array(6,32,58),new C(24,new y(2,92),new y(2,93)),new C(22,new y(6,36),new y(2,37)),new C(26,new y(4,20),new y(6,21)),new C(28,new y(7,14),new y(4,15))),new _(13,new Array(6,34,62),new C(26,new y(4,107)),new C(22,new y(8,37),new y(1,38)),new C(24,new y(8,20),new y(4,21)),new C(22,new y(12,11),new y(4,12))),new _(14,new Array(6,26,46,66),new C(30,new y(3,115),new y(1,116)),new C(24,new y(4,40),new y(5,41)),new C(20,new y(11,16),new y(5,17)),new C(24,new y(11,12),new y(5,13))),new _(15,new Array(6,26,48,70),new C(22,new y(5,87),new y(1,88)),new C(24,new y(5,41),new y(5,42)),new C(30,new y(5,24),new y(7,25)),new C(24,new y(11,12),new y(7,13))),new _(16,new Array(6,26,50,74),new C(24,new y(5,98),new y(1,99)),new C(28,new y(7,45),new y(3,46)),new C(24,new y(15,19),new y(2,20)),new C(30,new y(3,15),new y(13,16))),new _(17,new Array(6,30,54,78),new C(28,new y(1,107),new y(5,108)),new C(28,new y(10,46),new y(1,47)),new C(28,new y(1,22),new y(15,23)),new C(28,new y(2,14),new y(17,15))),new _(18,new Array(6,30,56,82),new C(30,new y(5,120),new y(1,121)),new C(26,new y(9,43),new y(4,44)),new C(28,new y(17,22),new y(1,23)),new C(28,new y(2,14),new y(19,15))),new _(19,new Array(6,30,58,86),new C(28,new y(3,113),new y(4,114)),new C(26,new y(3,44),new y(11,45)),new C(26,new y(17,21),new y(4,22)),new C(26,new y(9,13),new y(16,14))),new _(20,new Array(6,34,62,90),new C(28,new y(3,107),new y(5,108)),new C(26,new y(3,41),new y(13,42)),new C(30,new y(15,24),new y(5,25)),new C(28,new y(15,15),new y(10,16))),new _(21,new Array(6,28,50,72,94),new C(28,new y(4,116),new y(4,117)),new C(26,new y(17,42)),new C(28,new y(17,22),new y(6,23)),new C(30,new y(19,16),new y(6,17))),new _(22,new Array(6,26,50,74,98),new C(28,new y(2,111),new y(7,112)),new C(28,new y(17,46)),new C(30,new y(7,24),new y(16,25)),new C(24,new y(34,13))),new _(23,new Array(6,30,54,74,102),new C(30,new y(4,121),new y(5,122)),new C(28,new y(4,47),new y(14,48)),new C(30,new y(11,24),new y(14,25)),new C(30,new y(16,15),new y(14,16))),new _(24,new Array(6,28,54,80,106),new C(30,new y(6,117),new y(4,118)),new C(28,new y(6,45),new y(14,46)),new C(30,new y(11,24),new y(16,25)),new C(30,new y(30,16),new y(2,17))),new _(25,new Array(6,32,58,84,110),new C(26,new y(8,106),new y(4,107)),new C(28,new y(8,47),new y(13,48)),new C(30,new y(7,24),new y(22,25)),new C(30,new y(22,15),new y(13,16))),new _(26,new Array(6,30,58,86,114),new C(28,new y(10,114),new y(2,115)),new C(28,new y(19,46),new y(4,47)),new C(28,new y(28,22),new y(6,23)),new C(30,new y(33,16),new y(4,17))),new _(27,new Array(6,34,62,90,118),new C(30,new y(8,122),new y(4,123)),new C(28,new y(22,45),new y(3,46)),new C(30,new y(8,23),new y(26,24)),new C(30,new y(12,15),new y(28,16))),new _(28,new Array(6,26,50,74,98,122),new C(30,new y(3,117),new y(10,118)),new C(28,new y(3,45),new y(23,46)),new C(30,new y(4,24),new y(31,25)),new C(30,new y(11,15),new y(31,16))),new _(29,new Array(6,30,54,78,102,126),new C(30,new y(7,116),new y(7,117)),new C(28,new y(21,45),new y(7,46)),new C(30,new y(1,23),new y(37,24)),new C(30,new y(19,15),new y(26,16))),new _(30,new Array(6,26,52,78,104,130),new C(30,new y(5,115),new y(10,116)),new C(28,new y(19,47),new y(10,48)),new C(30,new y(15,24),new y(25,25)),new C(30,new y(23,15),new y(25,16))),new _(31,new Array(6,30,56,82,108,134),new C(30,new y(13,115),new y(3,116)),new C(28,new y(2,46),new y(29,47)),new C(30,new y(42,24),new y(1,25)),new C(30,new y(23,15),new y(28,16))),new _(32,new Array(6,34,60,86,112,138),new C(30,new y(17,115)),new C(28,new y(10,46),new y(23,47)),new C(30,new y(10,24),new y(35,25)),new C(30,new y(19,15),new y(35,16))),new _(33,new Array(6,30,58,86,114,142),new C(30,new y(17,115),new y(1,116)),new C(28,new y(14,46),new y(21,47)),new C(30,new y(29,24),new y(19,25)),new C(30,new y(11,15),new y(46,16))),new _(34,new Array(6,34,62,90,118,146),new C(30,new y(13,115),new y(6,116)),new C(28,new y(14,46),new y(23,47)),new C(30,new y(44,24),new y(7,25)),new C(30,new y(59,16),new y(1,17))),new _(35,new Array(6,30,54,78,102,126,150),new C(30,new y(12,121),new y(7,122)),new C(28,new y(12,47),new y(26,48)),new C(30,new y(39,24),new y(14,25)),new C(30,new y(22,15),new y(41,16))),new _(36,new Array(6,24,50,76,102,128,154),new C(30,new y(6,121),new y(14,122)),new C(28,new y(6,47),new y(34,48)),new C(30,new y(46,24),new y(10,25)),new C(30,new y(2,15),new y(64,16))),new _(37,new Array(6,28,54,80,106,132,158),new C(30,new y(17,122),new y(4,123)),new C(28,new y(29,46),new y(14,47)),new C(30,new y(49,24),new y(10,25)),new C(30,new y(24,15),new y(46,16))),new _(38,new Array(6,32,58,84,110,136,162),new C(30,new y(4,122),new y(18,123)),new C(28,new y(13,46),new y(32,47)),new C(30,new y(48,24),new y(14,25)),new C(30,new y(42,15),new y(32,16))),new _(39,new Array(6,26,54,82,110,138,166),new C(30,new y(20,117),new y(4,118)),new C(28,new y(40,47),new y(7,48)),new C(30,new y(43,24),new y(22,25)),new C(30,new y(10,15),new y(67,16))),new _(40,new Array(6,30,58,86,114,142,170),new C(30,new y(19,118),new y(6,119)),new C(28,new y(18,47),new y(31,48)),new C(30,new y(34,24),new y(34,25)),new C(30,new y(20,15),new y(61,16)))),_.getVersionForNumber=function(e){if(e<1||e>40)throw"ArgumentException";return _.VERSIONS[e-1]},_.getProvisionalVersionForDimension=function(e){if(e%4!=1)throw"Error getProvisionalVersionForDimension";try{return _.getVersionForNumber(e-17>>2)}catch(e){throw"Error getVersionForNumber"}},_.decodeVersionInformation=function(e){for(var t=4294967295,n=0,i=0;i<_.VERSION_DECODE_INFO.length;i++){var r=_.VERSION_DECODE_INFO[i];if(r==e)return this.getVersionForNumber(i+7);var s=g.numBitsDiffering(e,r);si||h<-1||h>r)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==i&&(t[o]=i-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==r&&(t[o+1]=r-1,s=!0)}s=!0;for(o=t.length-2;o>=0&&s;o-=2){a=Math.floor(t[o]),h=Math.floor(t[o+1]);if(a<-1||a>i||h<-1||h>r)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==i&&(t[o]=i-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==r&&(t[o+1]=r-1,s=!0)}},sampleGrid3:function(e,t,n,i){for(var r=new b(n),s=new Array(n<<1),o=0;o>1),s[w+1]=h;i.transformPoints1(s),p.checkAndNudgePoints(e,s,t);try{for(w=0;w>1,o)}}catch(e){throw"Error.checkAndNudgePoints"}}return r}},M=p;function k(e,t,n,i,r,s,o,a,h){this.a11=e,this.a12=i,this.a13=o,this.a21=t,this.a22=r,this.a23=a,this.a31=n,this.a32=s,this.a33=h,this.transformPoints1=function(e){for(var t=e.length,n=this.a11,i=this.a12,r=this.a13,s=this.a21,o=this.a22,a=this.a23,h=this.a31,w=this.a32,f=this.a33,u=0;uMath.abs(i-e);if(s){var o=e;e=t,t=o,o=i,i=r,r=o}for(var a=Math.abs(i-e),h=Math.abs(r-t),w=-a>>1,f=t0){if(c==r)break;c+=f,w-=a}}var y=i-e,C=r-t;return Math.sqrt(y*y+C*C)},this.sizeOfBlackWhiteBlackRunBothWays=function(e,t,i,r){var s=this.sizeOfBlackWhiteBlackRun(e,t,i,r),o=1,a=e-(i-e);a<0?(o=e/(e-a),a=0):a>=n.width&&(o=(n.width-1-e)/(a-e),a=n.width-1);var h=Math.floor(t-(r-t)*o);return o=1,h<0?(o=t/(t-h),h=0):h>=n.height&&(o=(n.height-1-t)/(h-t),h=n.height-1),a=Math.floor(e+(a-e)*o),(s+=this.sizeOfBlackWhiteBlackRun(e,t,a,h))-1},this.calculateModuleSizeOneWay=function(e,t){var n=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(e.X),Math.floor(e.Y),Math.floor(t.X),Math.floor(t.Y)),i=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(t.X),Math.floor(t.Y),Math.floor(e.X),Math.floor(e.Y));return isNaN(n)?i/7:isNaN(i)?n/7:(n+i)/14},this.calculateModuleSize=function(e,t,n){return(this.calculateModuleSizeOneWay(e,t)+this.calculateModuleSizeOneWay(e,n))/2},this.distance=function(e,t){var n=e.X-t.X,i=e.Y-t.Y;return Math.sqrt(n*n+i*i)},this.computeDimension=function(e,t,n,i){var r=7+(Math.round(this.distance(e,t)/i)+Math.round(this.distance(e,n)/i)>>1);switch(3&r){case 0:r++;break;case 2:r--;break;case 3:throw"Error"}return r},this.findAlignmentInRegion=function(e,i,r,s){var o=Math.floor(s*e),a=Math.max(0,i-o),h=Math.min(n.width-1,i+o);if(h-a<3*e)throw"Error";var w=Math.max(0,r-o),f=Math.min(n.height-1,r+o);return new t(this.image,n,a,w,h-a,f-w,e,this.resultPointCallback).find()},this.createTransform=function(e,t,n,i,r){var s,o,a,h,w=r-3.5;return null!=i?(s=i.X,o=i.Y,a=h=w-3):(s=t.X-e.X+n.X,o=t.Y-e.Y+n.Y,a=h=w),P.quadrilateralToQuadrilateral(3.5,3.5,w,3.5,a,h,3.5,w,e.X,e.Y,t.X,t.Y,s,o,n.X,n.Y)},this.sampleGrid=function(e,t,i){return M.sampleGrid3(e,n,i,t)},this.processFinderPatternInfo=function(e){var t=e.TopLeft,n=e.TopRight,i=e.BottomLeft,r=this.calculateModuleSize(t,n,i);if(r<1)throw"Error";var s=this.computeDimension(t,n,i,r),o=A.getProvisionalVersionForDimension(s),a=o.DimensionForVersion-7,h=null;if(o.AlignmentPatternCenters.length>0)for(var w=n.X-t.X+i.X,f=n.Y-t.Y+i.Y,u=1-3/a,l=Math.floor(t.X+u*(w-t.X)),d=Math.floor(t.Y+u*(f-t.Y)),c=4;c<=16;c<<=1){h=this.findAlignmentInRegion(r,l,d,c);break}var v=this.createTransform(t,n,i,h,s);return new N(this.sampleGrid(this.image,v,s),null==h?new Array(i,t,n):new Array(i,t,n,h))},this.detect=function(){var e=new r(n).findFinderPattern(this.image);return this.processFinderPatternInfo(e)}},E=function(e,t){return e^t};var S=function e(t,n){if(null==n||0==n.length)throw"System.ArgumentException";this.field=t;var i=n.length;if(i>1&&0==n[0]){for(var r=1;rr.length){var s=i;i=r,r=s}for(var o=new Array(r.length),a=r.length-i.length,h=0;h=e.Degree&&!n.Zero;){var s=n.Degree-e.Degree,o=this.field.multiply(n.getCoefficient(n.Degree),r),a=e.multiplyByMonomial(s,o),h=this.field.buildMonomial(s,o);t=t.addOrSubtract(h),n=n.addOrSubtract(a)}return new Array(t,n)}};function D(e){this.expTable=new Array(256),this.logTable=new Array(256);for(var t=1,n=0;n<256;n++)this.expTable[n]=t,(t<<=1)>=256&&(t^=e);for(n=0;n<255;n++)this.logTable[this.expTable[n]]=n;var i=new Array(1);i[0]=0,this.zero=new S(this,new Array(i));var r=new Array(1);r[0]=1,this.one=new S(this,new Array(r)),this.__defineGetter__("Zero",(function(){return this.zero})),this.__defineGetter__("One",(function(){return this.one})),this.buildMonomial=function(e,t){if(e<0)throw"System.ArgumentException";if(0==t)return this.zero;for(var n=new Array(e+1),i=0;i7)throw"System.ArgumentException";return R.DATA_MASKS[e]},R.DATA_MASKS=new Array(new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n=0;n--)e=this.copyBit(8,n,e);if(this.parsedFormatInfo=g.decodeFormatInformation(e),null!=this.parsedFormatInfo)return this.parsedFormatInfo;var i=this.bitMatrix.Dimension;e=0;var r=i-8;for(t=i-1;t>=r;t--)e=this.copyBit(t,8,e);for(n=i-7;n>2;if(t<=6)return A.getVersionForNumber(t);for(var n=0,i=e-11,r=5;r>=0;r--)for(var s=e-9;s>=i;s--)n=this.copyBit(s,r,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;n=0;for(s=5;s>=0;s--)for(r=e-9;r>=i;r--)n=this.copyBit(s,r,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;throw"Error readVersion"},this.readCodewords=function(){var e=this.readFormatInformation(),t=this.readVersion(),n=G.forReference(e.DataMask),i=this.bitMatrix.Dimension;n.unmaskBitMatrix(this.bitMatrix,i);for(var r=t.buildFunctionPattern(),s=!0,o=new Array(t.TotalCodewords),a=0,h=0,w=0,f=i-1;f>0;f-=2){6==f&&f--;for(var u=0;u=0;){if(a[c].codewords.length==d)break;c--}c++;var v=d-i.ECCodewordsPerBlock,g=0;for(o=0;o=10&&t<=26?this.dataLengthMode=1:t>=27&&t<=40&&(this.dataLengthMode=2),this.getNextBits=function(e){var t=0;if(e>this.bitPointer-e+1,this.bitPointer-=e,t}if(e>8-(e-(this.bitPointer+1)),this.bitPointer=this.bitPointer-e%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}if(e>8-(e-(this.bitPointer+1+8))),this.bitPointer=this.bitPointer-(e-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(e){for(var t=0;e>>t!=1;)t++;return this.getNextBits(T[this.dataLengthMode][t])},this.getRomanAndFigureString=function(e){var t=e,n=0,i="",r=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do{if(t>1){var s=(n=this.getNextBits(11))%45;i+=r[Math.floor(n/45)],i+=r[s],t-=2}else 1==t&&(i+=r[n=this.getNextBits(6)],t-=1)}while(t>0);return i},this.getFigureString=function(e){var t=e,n=0,i="";do{t>=3?((n=this.getNextBits(10))<100&&(i+="0"),n<10&&(i+="0"),t-=3):2==t?((n=this.getNextBits(7))<10&&(i+="0"),t-=2):1==t&&(n=this.getNextBits(4),t-=1),i+=n}while(t>0);return i},this.get8bitByteArray=function(e){var t=e,n=0,i=new Array;do{n=this.getNextBits(8),i.push(n),t--}while(t>0);return i},this.getKanjiString=function(e){var t=e,n=0,i="";do{var r=((n=this.getNextBits(13))/192<<8)+n%192,s=0;s=r+33088<=40956?r+33088:r+49472,i+=String.fromCharCode(s),t--}while(t>0);return i},this.parseECIValue=function(){var e=0,t=this.getNextBits(8);(0==(128&t)&&(e=127&t),128==(192&t))&&(e=(63&t)<<8|this.getNextBits(8));192==(224&t)&&(e=(31&t)<<16|this.getNextBits(8));return e},this.__defineGetter__("DataByte",(function(){for(var e=new Array;;){var t=this.NextMode();if(0==t){if(e.length>0)break;throw"Empty data block"}if(1!=t&&2!=t&&4!=t&&8!=t&&7!=t)throw"Invalid mode: "+t+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")";if(7==t)var n=this.parseECIValue();else{var i=this.getDataLength(t);if(i<1)throw"Invalid data length: "+i;switch(t){case 1:for(var r=this.getFigureString(i),s=new Array(r.length),o=0;o=Math.floor(n/2);){var f=r,u=o,l=h;if(o=a,h=w,(r=s).Zero)throw"r_{i-1} was zero";s=f;for(var d=this.field.Zero,c=r.getCoefficient(r.Degree),v=this.field.inverse(c);s.Degree>=r.Degree&&!s.Zero;){var g=s.Degree-r.Degree,m=this.field.multiply(s.getCoefficient(s.Degree),v);d=d.addOrSubtract(this.field.buildMonomial(g,m)),s=s.addOrSubtract(r.multiplyByMonomial(g,m))}a=d.multiply1(o).addOrSubtract(u),w=d.multiply1(h).addOrSubtract(l)}var b=w.getCoefficient(0);if(0==b)throw"ReedSolomonException sigmaTilde(0) was zero";var y=this.field.inverse(b),C=w.multiply2(y),_=s.multiply2(y);return new Array(C,_)},this.findErrorLocations=function(e){var t=e.Degree;if(1==t)return new Array(e.getCoefficient(1));for(var n=new Array(t),i=0,r=1;r<256&&i=n)return!1;return!0},this.crossCheckVertical=function(e,t,r,i){var s=this.image,o=n.height,a=this.crossCheckStateCount;a[0]=0,a[1]=0,a[2]=0;for(var h=e;h>=0&&s[t+h*n.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&!s[t+h*n.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=e+1;hr)return NaN;for(;hr)return NaN;var w=a[0]+a[1]+a[2];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(t,n,r){var i=t[0]+t[1]+t[2],s=this.centerFromEnd(t,r),o=this.crossCheckVertical(n,Math.floor(s),2*t[1],i);if(!isNaN(o)){for(var a=(t[0]+t[1]+t[2])/3,h=this.possibleCenters.length,w=0;w>1),h=new Array(0,0,0),w=0;w>1:-(w+1>>1));h[0]=0,h[1]=0,h[2]=0;for(var u=e;u=0&&s[n+h*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[n+h*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[n+h*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h=r)return NaN;for(;h=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=2*i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.crossCheckHorizontal=function(t,n,r,i){for(var s=this.image,o=e.width,a=this.CrossCheckStateCount,h=t;h>=0&&s[h+n*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[h+n*e.width]&&a[1]<=r;)a[1]++,h--;if(h<0||a[1]>r)return NaN;for(;h>=0&&s[h+n*e.width]&&a[0]<=r;)a[0]++,h--;if(a[0]>r)return NaN;for(h=t+1;h=r)return NaN;for(;h=r)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-i)>=i?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(e,t,r){var i=e[0]+e[1]+e[2]+e[3]+e[4],s=this.centerFromEnd(e,r),o=this.crossCheckVertical(t,Math.floor(s),e[2],i);if(!isNaN(o)&&(s=this.crossCheckHorizontal(Math.floor(s),Math.floor(o),e[2],i),!isNaN(s))){for(var a=i/7,h=!1,w=this.possibleCenters.length,f=0;f3){for(var t=0,n=0,r=0;r=0;r--){var h=this.possibleCenters[r];Math.abs(h.EstimatedModuleSize-s)>a&&this.possibleCenters.splice(r,1)}}return this.possibleCenters.length>3&&this.possibleCenters.sort((function(e,t){return e.count>t.count?-1:e.count=2){if(null!=t)return this.hasSkipped=!0,Math.floor((Math.abs(t.X-r.X)-Math.abs(t.Y-r.Y))/2);t=r}}return 0},this.haveMultiplyConfirmedCenters=function(){for(var e=0,t=0,n=this.possibleCenters.length,r=0;r=2&&(e++,t+=i.EstimatedModuleSize)}if(e<3)return!1;var s=t/n,o=0;for(r=0;ra[2]&&(h+=u-a[2]-s,f=i-1)}else{do{f++}while(f=s&&o>=a?(r=e[0],n=e[1],i=e[2]):a>=o&&a>=s?(r=e[1],n=e[0],i=e[2]):(r=e[2],n=e[0],i=e[1]),function(e,t,n){var r=t.x,i=t.y;return(n.x-r)*(e.y-i)-(n.y-i)*(e.x-r)}(n,r,i)<0){var h=n;n=i,i=h}e[0]=n,e[1]=r,e[2]=i}(l),new r(l)}},s=function(e,t){return e>=0?e>>t:(e>>t)+(2<<~t)};function o(e,t,n){this.ordinal_Renamed_Field=e,this.bits=t,this.name=n,this.__defineGetter__("Bits",(function(){return this.bits})),this.__defineGetter__("Name",(function(){return this.name})),this.ordinal=function(){return this.ordinal_Renamed_Field}}var a=new o(0,1,"L"),h=new o(1,0,"M"),w=new o(2,3,"Q"),f=new o(3,2,"H"),u=new Array(h,a,f,w),l=s,d=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),c=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);function g(e){this.errorCorrectionLevel=function(e){if(e<0||e>=u.length)throw"ArgumentException";return u[e]}(e>>3&3),this.dataMask=7&e,this.__defineGetter__("ErrorCorrectionLevel",(function(){return this.errorCorrectionLevel})),this.__defineGetter__("DataMask",(function(){return this.dataMask})),this.GetHashCode=function(){return this.errorCorrectionLevel.ordinal()<<3|this.dataMask},this.Equals=function(e){var t=e;return this.errorCorrectionLevel==t.errorCorrectionLevel&&this.dataMask==t.dataMask}}g.numBitsDiffering=function(e,t){return c[15&(e^=t)]+c[15&l(e,4)]+c[15&l(e,8)]+c[15&l(e,12)]+c[15&l(e,16)]+c[15&l(e,20)]+c[15&l(e,24)]+c[15&l(e,28)]},g.decodeFormatInformation=function(e){var t=g.doDecodeFormatInformation(e);return null!=t?t:g.doDecodeFormatInformation(21522^e)},g.doDecodeFormatInformation=function(e){for(var t=4294967295,n=0,r=0;r>5;0!=(31&e)&&n++,this.rowSize=n,this.bits=new Array(n*t);for(var r=0;r>5);return 0!=(1&m(this.bits[n],31&e))},this.set_Renamed=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]|=1<<(31&e)},this.flip=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,t=0;tthis.height||i>this.width)throw"The region must fit inside the matrix";for(var o=t;o>5)]|=1<<(31&h)}};function y(e,t){this.count=e,this.dataCodewords=t,this.__defineGetter__("Count",(function(){return this.count})),this.__defineGetter__("DataCodewords",(function(){return this.dataCodewords}))}function C(e,t,n){this.ecCodewordsPerBlock=e,this.ecBlocks=n?new Array(t,n):new Array(t),this.__defineGetter__("ECCodewordsPerBlock",(function(){return this.ecCodewordsPerBlock})),this.__defineGetter__("TotalECCodewords",(function(){return this.ecCodewordsPerBlock*this.NumBlocks})),this.__defineGetter__("NumBlocks",(function(){for(var e=0,t=0;t6&&(t.setRegion(e-11,0,3,6),t.setRegion(0,e-11,6,3)),t},this.getECBlocksForLevel=function(e){return this.ecBlocks[e.ordinal()]}}_.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),_.VERSIONS=new Array(new _(1,new Array,new C(7,new y(1,19)),new C(10,new y(1,16)),new C(13,new y(1,13)),new C(17,new y(1,9))),new _(2,new Array(6,18),new C(10,new y(1,34)),new C(16,new y(1,28)),new C(22,new y(1,22)),new C(28,new y(1,16))),new _(3,new Array(6,22),new C(15,new y(1,55)),new C(26,new y(1,44)),new C(18,new y(2,17)),new C(22,new y(2,13))),new _(4,new Array(6,26),new C(20,new y(1,80)),new C(18,new y(2,32)),new C(26,new y(2,24)),new C(16,new y(4,9))),new _(5,new Array(6,30),new C(26,new y(1,108)),new C(24,new y(2,43)),new C(18,new y(2,15),new y(2,16)),new C(22,new y(2,11),new y(2,12))),new _(6,new Array(6,34),new C(18,new y(2,68)),new C(16,new y(4,27)),new C(24,new y(4,19)),new C(28,new y(4,15))),new _(7,new Array(6,22,38),new C(20,new y(2,78)),new C(18,new y(4,31)),new C(18,new y(2,14),new y(4,15)),new C(26,new y(4,13),new y(1,14))),new _(8,new Array(6,24,42),new C(24,new y(2,97)),new C(22,new y(2,38),new y(2,39)),new C(22,new y(4,18),new y(2,19)),new C(26,new y(4,14),new y(2,15))),new _(9,new Array(6,26,46),new C(30,new y(2,116)),new C(22,new y(3,36),new y(2,37)),new C(20,new y(4,16),new y(4,17)),new C(24,new y(4,12),new y(4,13))),new _(10,new Array(6,28,50),new C(18,new y(2,68),new y(2,69)),new C(26,new y(4,43),new y(1,44)),new C(24,new y(6,19),new y(2,20)),new C(28,new y(6,15),new y(2,16))),new _(11,new Array(6,30,54),new C(20,new y(4,81)),new C(30,new y(1,50),new y(4,51)),new C(28,new y(4,22),new y(4,23)),new C(24,new y(3,12),new y(8,13))),new _(12,new Array(6,32,58),new C(24,new y(2,92),new y(2,93)),new C(22,new y(6,36),new y(2,37)),new C(26,new y(4,20),new y(6,21)),new C(28,new y(7,14),new y(4,15))),new _(13,new Array(6,34,62),new C(26,new y(4,107)),new C(22,new y(8,37),new y(1,38)),new C(24,new y(8,20),new y(4,21)),new C(22,new y(12,11),new y(4,12))),new _(14,new Array(6,26,46,66),new C(30,new y(3,115),new y(1,116)),new C(24,new y(4,40),new y(5,41)),new C(20,new y(11,16),new y(5,17)),new C(24,new y(11,12),new y(5,13))),new _(15,new Array(6,26,48,70),new C(22,new y(5,87),new y(1,88)),new C(24,new y(5,41),new y(5,42)),new C(30,new y(5,24),new y(7,25)),new C(24,new y(11,12),new y(7,13))),new _(16,new Array(6,26,50,74),new C(24,new y(5,98),new y(1,99)),new C(28,new y(7,45),new y(3,46)),new C(24,new y(15,19),new y(2,20)),new C(30,new y(3,15),new y(13,16))),new _(17,new Array(6,30,54,78),new C(28,new y(1,107),new y(5,108)),new C(28,new y(10,46),new y(1,47)),new C(28,new y(1,22),new y(15,23)),new C(28,new y(2,14),new y(17,15))),new _(18,new Array(6,30,56,82),new C(30,new y(5,120),new y(1,121)),new C(26,new y(9,43),new y(4,44)),new C(28,new y(17,22),new y(1,23)),new C(28,new y(2,14),new y(19,15))),new _(19,new Array(6,30,58,86),new C(28,new y(3,113),new y(4,114)),new C(26,new y(3,44),new y(11,45)),new C(26,new y(17,21),new y(4,22)),new C(26,new y(9,13),new y(16,14))),new _(20,new Array(6,34,62,90),new C(28,new y(3,107),new y(5,108)),new C(26,new y(3,41),new y(13,42)),new C(30,new y(15,24),new y(5,25)),new C(28,new y(15,15),new y(10,16))),new _(21,new Array(6,28,50,72,94),new C(28,new y(4,116),new y(4,117)),new C(26,new y(17,42)),new C(28,new y(17,22),new y(6,23)),new C(30,new y(19,16),new y(6,17))),new _(22,new Array(6,26,50,74,98),new C(28,new y(2,111),new y(7,112)),new C(28,new y(17,46)),new C(30,new y(7,24),new y(16,25)),new C(24,new y(34,13))),new _(23,new Array(6,30,54,74,102),new C(30,new y(4,121),new y(5,122)),new C(28,new y(4,47),new y(14,48)),new C(30,new y(11,24),new y(14,25)),new C(30,new y(16,15),new y(14,16))),new _(24,new Array(6,28,54,80,106),new C(30,new y(6,117),new y(4,118)),new C(28,new y(6,45),new y(14,46)),new C(30,new y(11,24),new y(16,25)),new C(30,new y(30,16),new y(2,17))),new _(25,new Array(6,32,58,84,110),new C(26,new y(8,106),new y(4,107)),new C(28,new y(8,47),new y(13,48)),new C(30,new y(7,24),new y(22,25)),new C(30,new y(22,15),new y(13,16))),new _(26,new Array(6,30,58,86,114),new C(28,new y(10,114),new y(2,115)),new C(28,new y(19,46),new y(4,47)),new C(28,new y(28,22),new y(6,23)),new C(30,new y(33,16),new y(4,17))),new _(27,new Array(6,34,62,90,118),new C(30,new y(8,122),new y(4,123)),new C(28,new y(22,45),new y(3,46)),new C(30,new y(8,23),new y(26,24)),new C(30,new y(12,15),new y(28,16))),new _(28,new Array(6,26,50,74,98,122),new C(30,new y(3,117),new y(10,118)),new C(28,new y(3,45),new y(23,46)),new C(30,new y(4,24),new y(31,25)),new C(30,new y(11,15),new y(31,16))),new _(29,new Array(6,30,54,78,102,126),new C(30,new y(7,116),new y(7,117)),new C(28,new y(21,45),new y(7,46)),new C(30,new y(1,23),new y(37,24)),new C(30,new y(19,15),new y(26,16))),new _(30,new Array(6,26,52,78,104,130),new C(30,new y(5,115),new y(10,116)),new C(28,new y(19,47),new y(10,48)),new C(30,new y(15,24),new y(25,25)),new C(30,new y(23,15),new y(25,16))),new _(31,new Array(6,30,56,82,108,134),new C(30,new y(13,115),new y(3,116)),new C(28,new y(2,46),new y(29,47)),new C(30,new y(42,24),new y(1,25)),new C(30,new y(23,15),new y(28,16))),new _(32,new Array(6,34,60,86,112,138),new C(30,new y(17,115)),new C(28,new y(10,46),new y(23,47)),new C(30,new y(10,24),new y(35,25)),new C(30,new y(19,15),new y(35,16))),new _(33,new Array(6,30,58,86,114,142),new C(30,new y(17,115),new y(1,116)),new C(28,new y(14,46),new y(21,47)),new C(30,new y(29,24),new y(19,25)),new C(30,new y(11,15),new y(46,16))),new _(34,new Array(6,34,62,90,118,146),new C(30,new y(13,115),new y(6,116)),new C(28,new y(14,46),new y(23,47)),new C(30,new y(44,24),new y(7,25)),new C(30,new y(59,16),new y(1,17))),new _(35,new Array(6,30,54,78,102,126,150),new C(30,new y(12,121),new y(7,122)),new C(28,new y(12,47),new y(26,48)),new C(30,new y(39,24),new y(14,25)),new C(30,new y(22,15),new y(41,16))),new _(36,new Array(6,24,50,76,102,128,154),new C(30,new y(6,121),new y(14,122)),new C(28,new y(6,47),new y(34,48)),new C(30,new y(46,24),new y(10,25)),new C(30,new y(2,15),new y(64,16))),new _(37,new Array(6,28,54,80,106,132,158),new C(30,new y(17,122),new y(4,123)),new C(28,new y(29,46),new y(14,47)),new C(30,new y(49,24),new y(10,25)),new C(30,new y(24,15),new y(46,16))),new _(38,new Array(6,32,58,84,110,136,162),new C(30,new y(4,122),new y(18,123)),new C(28,new y(13,46),new y(32,47)),new C(30,new y(48,24),new y(14,25)),new C(30,new y(42,15),new y(32,16))),new _(39,new Array(6,26,54,82,110,138,166),new C(30,new y(20,117),new y(4,118)),new C(28,new y(40,47),new y(7,48)),new C(30,new y(43,24),new y(22,25)),new C(30,new y(10,15),new y(67,16))),new _(40,new Array(6,30,58,86,114,142,170),new C(30,new y(19,118),new y(6,119)),new C(28,new y(18,47),new y(31,48)),new C(30,new y(34,24),new y(34,25)),new C(30,new y(20,15),new y(61,16)))),_.getVersionForNumber=function(e){if(e<1||e>40)throw"ArgumentException";return _.VERSIONS[e-1]},_.getProvisionalVersionForDimension=function(e){if(e%4!=1)throw"Error getProvisionalVersionForDimension";try{return _.getVersionForNumber(e-17>>2)}catch(e){throw"Error getVersionForNumber"}},_.decodeVersionInformation=function(e){for(var t=4294967295,n=0,r=0;r<_.VERSION_DECODE_INFO.length;r++){var i=_.VERSION_DECODE_INFO[r];if(i==e)return this.getVersionForNumber(r+7);var s=v.numBitsDiffering(e,i);sr||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}s=!0;for(o=t.length-2;o>=0&&s;o-=2){a=Math.floor(t[o]),h=Math.floor(t[o+1]);if(a<-1||a>r||h<-1||h>i)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==r&&(t[o]=r-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==i&&(t[o+1]=i-1,s=!0)}},sampleGrid3:function(e,t,n,r){for(var i=new b(n),s=new Array(n<<1),o=0;o>1),s[w+1]=h;r.transformPoints1(s),p.checkAndNudgePoints(e,s,t);try{for(w=0;w>1,o)}}catch(e){throw"Error.checkAndNudgePoints"}}return i}},M=p;function k(e,t,n,r,i,s,o,a,h){this.a11=e,this.a12=r,this.a13=o,this.a21=t,this.a22=i,this.a23=a,this.a31=n,this.a32=s,this.a33=h,this.transformPoints1=function(e){for(var t=e.length,n=this.a11,r=this.a12,i=this.a13,s=this.a21,o=this.a22,a=this.a23,h=this.a31,w=this.a32,f=this.a33,u=0;uMath.abs(r-e);if(s){var o=e;e=t,t=o,o=r,r=i,i=o}for(var a=Math.abs(r-e),h=Math.abs(i-t),w=-a>>1,f=t0){if(c==i)break;c+=f,w-=a}}var y=r-e,C=i-t;return Math.sqrt(y*y+C*C)},this.sizeOfBlackWhiteBlackRunBothWays=function(e,t,r,i){var s=this.sizeOfBlackWhiteBlackRun(e,t,r,i),o=1,a=e-(r-e);a<0?(o=e/(e-a),a=0):a>=n.width&&(o=(n.width-1-e)/(a-e),a=n.width-1);var h=Math.floor(t-(i-t)*o);return o=1,h<0?(o=t/(t-h),h=0):h>=n.height&&(o=(n.height-1-t)/(h-t),h=n.height-1),a=Math.floor(e+(a-e)*o),(s+=this.sizeOfBlackWhiteBlackRun(e,t,a,h))-1},this.calculateModuleSizeOneWay=function(e,t){var n=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(e.X),Math.floor(e.Y),Math.floor(t.X),Math.floor(t.Y)),r=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(t.X),Math.floor(t.Y),Math.floor(e.X),Math.floor(e.Y));return isNaN(n)?r/7:isNaN(r)?n/7:(n+r)/14},this.calculateModuleSize=function(e,t,n){return(this.calculateModuleSizeOneWay(e,t)+this.calculateModuleSizeOneWay(e,n))/2},this.distance=function(e,t){var n=e.X-t.X,r=e.Y-t.Y;return Math.sqrt(n*n+r*r)},this.computeDimension=function(e,t,n,r){var i=7+(Math.round(this.distance(e,t)/r)+Math.round(this.distance(e,n)/r)>>1);switch(3&i){case 0:i++;break;case 2:i--;break;case 3:throw"Error"}return i},this.findAlignmentInRegion=function(e,r,i,s){var o=Math.floor(s*e),a=Math.max(0,r-o),h=Math.min(n.width-1,r+o);if(h-a<3*e)throw"Error";var w=Math.max(0,i-o),f=Math.min(n.height-1,i+o);return new t(this.image,n,a,w,h-a,f-w,e,this.resultPointCallback).find()},this.createTransform=function(e,t,n,r,i){var s,o,a,h,w=i-3.5;return null!=r?(s=r.X,o=r.Y,a=h=w-3):(s=t.X-e.X+n.X,o=t.Y-e.Y+n.Y,a=h=w),P.quadrilateralToQuadrilateral(3.5,3.5,w,3.5,a,h,3.5,w,e.X,e.Y,t.X,t.Y,s,o,n.X,n.Y)},this.sampleGrid=function(e,t,r){return M.sampleGrid3(e,n,r,t)},this.processFinderPatternInfo=function(e){var t=e.TopLeft,n=e.TopRight,r=e.BottomLeft,i=this.calculateModuleSize(t,n,r);if(i<1)throw"Error";var s=this.computeDimension(t,n,r,i),o=A.getProvisionalVersionForDimension(s),a=o.DimensionForVersion-7,h=null;if(o.AlignmentPatternCenters.length>0)for(var w=n.X-t.X+r.X,f=n.Y-t.Y+r.Y,u=1-3/a,l=Math.floor(t.X+u*(w-t.X)),d=Math.floor(t.Y+u*(f-t.Y)),c=4;c<=16;c<<=1){h=this.findAlignmentInRegion(i,l,d,c);break}var g=this.createTransform(t,n,r,h,s);return new N(this.sampleGrid(this.image,g,s),null==h?new Array(r,t,n):new Array(r,t,n,h))},this.detect=function(){var e=new i(n).findFinderPattern(this.image);return this.processFinderPatternInfo(e)}},B=function(e,t){return e^t};var E=function e(t,n){if(null==n||0==n.length)throw"System.ArgumentException";this.field=t;var r=n.length;if(r>1&&0==n[0]){for(var i=1;ii.length){var s=r;r=i,i=s}for(var o=new Array(i.length),a=i.length-r.length,h=0;h=e.Degree&&!n.Zero;){var s=n.Degree-e.Degree,o=this.field.multiply(n.getCoefficient(n.Degree),i),a=e.multiplyByMonomial(s,o),h=this.field.buildMonomial(s,o);t=t.addOrSubtract(h),n=n.addOrSubtract(a)}return new Array(t,n)}};function D(e){this.expTable=new Array(256),this.logTable=new Array(256);for(var t=1,n=0;n<256;n++)this.expTable[n]=t,(t<<=1)>=256&&(t^=e);for(n=0;n<255;n++)this.logTable[this.expTable[n]]=n;var r=new Array(1);r[0]=0,this.zero=new E(this,new Array(r));var i=new Array(1);i[0]=1,this.one=new E(this,new Array(i)),this.__defineGetter__("Zero",(function(){return this.zero})),this.__defineGetter__("One",(function(){return this.one})),this.buildMonomial=function(e,t){if(e<0)throw"System.ArgumentException";if(0==t)return this.zero;for(var n=new Array(e+1),r=0;r7)throw"System.ArgumentException";return I.DATA_MASKS[e]},I.DATA_MASKS=new Array(new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n=0;n--)e=this.copyBit(8,n,e);if(this.parsedFormatInfo=v.decodeFormatInformation(e),null!=this.parsedFormatInfo)return this.parsedFormatInfo;var r=this.bitMatrix.Dimension;e=0;var i=r-8;for(t=r-1;t>=i;t--)e=this.copyBit(t,8,e);for(n=r-7;n>2;if(t<=6)return A.getVersionForNumber(t);for(var n=0,r=e-11,i=5;i>=0;i--)for(var s=e-9;s>=r;s--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;n=0;for(s=5;s>=0;s--)for(i=e-9;i>=r;i--)n=this.copyBit(s,i,n);if(this.parsedVersion=A.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;throw"Error readVersion"},this.readCodewords=function(){var e=this.readFormatInformation(),t=this.readVersion(),n=R.forReference(e.DataMask),r=this.bitMatrix.Dimension;n.unmaskBitMatrix(this.bitMatrix,r);for(var i=t.buildFunctionPattern(),s=!0,o=new Array(t.TotalCodewords),a=0,h=0,w=0,f=r-1;f>0;f-=2){6==f&&f--;for(var u=0;u=0;){if(a[c].codewords.length==d)break;c--}c++;var g=d-r.ECCodewordsPerBlock,v=0;for(o=0;o=10&&t<=26?this.dataLengthMode=1:t>=27&&t<=40&&(this.dataLengthMode=2),this.getNextBits=function(e){var t=0;if(e>this.bitPointer-e+1,this.bitPointer-=e,t}if(e>8-(e-(this.bitPointer+1)),this.bitPointer=this.bitPointer-e%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}if(e>8-(e-(this.bitPointer+1+8))),this.bitPointer=this.bitPointer-(e-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(e){for(var t=0;e>>t!=1;)t++;return this.getNextBits(z[this.dataLengthMode][t])},this.getRomanAndFigureString=function(e){var t=e,n=0,r="",i=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do{if(t>1){var s=(n=this.getNextBits(11))%45;r+=i[Math.floor(n/45)],r+=i[s],t-=2}else 1==t&&(r+=i[n=this.getNextBits(6)],t-=1)}while(t>0);return r},this.getFigureString=function(e){var t=e,n=0,r="";do{t>=3?((n=this.getNextBits(10))<100&&(r+="0"),n<10&&(r+="0"),t-=3):2==t?((n=this.getNextBits(7))<10&&(r+="0"),t-=2):1==t&&(n=this.getNextBits(4),t-=1),r+=n}while(t>0);return r},this.get8bitByteArray=function(e){var t=e,n=0,r=new Array;do{n=this.getNextBits(8),r.push(n),t--}while(t>0);return r},this.getKanjiString=function(e){var t=e,n=0,r="";do{var i=((n=this.getNextBits(13))/192<<8)+n%192,s=0;s=i+33088<=40956?i+33088:i+49472,r+=String.fromCharCode(s),t--}while(t>0);return r},this.parseECIValue=function(){var e=0,t=this.getNextBits(8);(0==(128&t)&&(e=127&t),128==(192&t))&&(e=(63&t)<<8|this.getNextBits(8));192==(224&t)&&(e=(31&t)<<16|this.getNextBits(8));return e},this.__defineGetter__("DataByte",(function(){for(var e=new Array;;){var t=this.NextMode();if(0==t){if(e.length>0)break;throw"Empty data block"}if(1!=t&&2!=t&&4!=t&&8!=t&&7!=t)throw"Invalid mode: "+t+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")";if(7==t)var n=this.parseECIValue();else{var r=this.getDataLength(t);if(r<1)throw"Invalid data length: "+r;switch(t){case 1:for(var i=this.getFigureString(r),s=new Array(i.length),o=0;o=Math.floor(n/2);){var f=i,u=o,l=h;if(o=a,h=w,(i=s).Zero)throw"r_{i-1} was zero";s=f;for(var d=this.field.Zero,c=i.getCoefficient(i.Degree),g=this.field.inverse(c);s.Degree>=i.Degree&&!s.Zero;){var v=s.Degree-i.Degree,m=this.field.multiply(s.getCoefficient(s.Degree),g);d=d.addOrSubtract(this.field.buildMonomial(v,m)),s=s.addOrSubtract(i.multiplyByMonomial(v,m))}a=d.multiply1(o).addOrSubtract(u),w=d.multiply1(h).addOrSubtract(l)}var b=w.getCoefficient(0);if(0==b)throw"ReedSolomonException sigmaTilde(0) was zero";var y=this.field.inverse(b),C=w.multiply2(y),_=s.multiply2(y);return new Array(C,_)},this.findErrorLocations=function(e){var t=e.Degree;if(1==t)return new Array(e.getCoefficient(1));for(var n=new Array(t),r=0,i=1;i<256&&r>10),56320+(1023&i))}}return t},Z=function(e,t){if(!t)for(var n=0;n+1=55296&&s<=56319&&n+3=56320&&o<=57343){i+=String.fromCharCode(s,o),n+=2;continue}}i+=String.fromCharCode(s)}return i},W=function(e,t){var n=e.length;if(0==n)return"";if(t&&Y[t]){var r=Y[t];if("utf-16be"==r)return Z(e,!1);if("utf-8"==r)return q(e);if("undefined"!=typeof TextDecoder)try{return new TextDecoder(r).decode(new Uint8Array(e))}catch(e){}}if(n>=2&&255==e[0]&&254==e[1])return Z(e.slice(2),!0);if(n>=2&&254==e[0]&&255==e[1])return Z(e.slice(2),!1);if(n>=3&&239==e[0]&&187==e[1]&&191==e[2])return q(e.slice(3));if(n>=4&&n%2==0){for(var i=0,s=0,o=0;o.7*a)return Z(e,!0);if(i>.7*a)return Z(e,!1)}return q(e)},H=function(e,t){var n=function(e,t,n){for(var r=new Array(t.width*t.height),i=function(e,t){return function(n,r){if(t.width= maxVariance) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.crossCheckStateCount;\r\n\t\tstateCount[0] = 0;\r\n\t\tstateCount[1] = 0;\r\n\t\tstateCount[2] = 0;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[2] <= maxCount) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[2] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j);\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), 2 * stateCount[1], stateCountTotal);\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\tvar estimatedModuleSize = (stateCount[0] + stateCount[1] + stateCount[2]) / 3.0;\r\n\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\treturn new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Hadn't found this before; save it\r\n\t\t\tvar point = new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\tthis.possibleCenters.push(point);\r\n\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tthis.find = function () {\r\n\t\tvar startX = this.startX;\r\n\t\tvar height = this.height;\r\n\t\tvar maxJ = startX + width;\r\n\t\tvar middleI = startY + (height >> 1);\r\n\t\t// We are looking for black/white/black modules in 1:1:1 ratio;\r\n\t\t// this tracks the number of black/white/black modules seen so far\r\n\t\tvar stateCount = new Array(0, 0, 0);\r\n\t\tfor (var iGen = 0; iGen < height; iGen++) {\r\n\t\t\t// Search from middle outwards\r\n\t\t\tvar i = middleI + ((iGen & 0x01) == 0 ? ((iGen + 1) >> 1) : - ((iGen + 1) >> 1));\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tvar j = startX;\r\n\t\t\t// Burn off leading white pixels before anything else; if we start in the middle of\r\n\t\t\t// a white run, it doesn't make sense to count its length, since we don't know if the\r\n\t\t\t// white run continued to the left of the start point\r\n\t\t\twhile (j < maxJ && !image[j + base.width * i]) {\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tvar currentState = 0;\r\n\t\t\twhile (j < maxJ) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tif (currentState == 2) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\t\t\t\t\treturn confirmed;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\tstateCount[1] = 1;\r\n\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\tcurrentState = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\treturn confirmed;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Hmm, nothing we saw was observed and confirmed twice. If we had\r\n\t\t// any guess at all, return it.\r\n\t\tif (!(this.possibleCenters.length == 0)) {\r\n\t\t\treturn this.possibleCenters[0];\r\n\t\t}\r\n\r\n\t\tthrow \"Couldn't find enough alignment patterns\";\r\n\t}\r\n\r\n}\r\n\r\nmodule.exports = AlignmentPatternFinder;","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\nvar MIN_SKIP = 3;\r\nvar MAX_MODULES = 57;\r\nvar INTEGER_MATH_SHIFT = 8;\r\nvar CENTER_QUORUM = 2;\r\n\r\nvar orderBestPatterns = function (patterns) {\r\n\r\n\tfunction distance(pattern1, pattern2) {\r\n\t\tvar xDiff = pattern1.X - pattern2.X;\r\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\r\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\r\n\t}\r\n\r\n\t/// Returns the z component of the cross product between vectors BC and BA.\r\n\tfunction crossProductZ(pointA, pointB, pointC) {\r\n\t\tvar bX = pointB.x;\r\n\t\tvar bY = pointB.y;\r\n\t\treturn ((pointC.x - bX) * (pointA.y - bY)) - ((pointC.y - bY) * (pointA.x - bX));\r\n\t}\r\n\r\n\r\n\t// Find distances between pattern centers\r\n\tvar zeroOneDistance = distance(patterns[0], patterns[1]);\r\n\tvar oneTwoDistance = distance(patterns[1], patterns[2]);\r\n\tvar zeroTwoDistance = distance(patterns[0], patterns[2]);\r\n\r\n\tvar pointA, pointB, pointC;\r\n\t// Assume one closest to other two is B; A and C will just be guesses at first\r\n\tif (oneTwoDistance >= zeroOneDistance && oneTwoDistance >= zeroTwoDistance) {\r\n\t\tpointB = patterns[0];\r\n\t\tpointA = patterns[1];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse if (zeroTwoDistance >= oneTwoDistance && zeroTwoDistance >= zeroOneDistance) {\r\n\t\tpointB = patterns[1];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse {\r\n\t\tpointB = patterns[2];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[1];\r\n\t}\r\n\r\n\t// Use cross product to figure out whether A and C are correct or flipped.\r\n\t// This asks whether BC x BA has a positive z component, which is the arrangement\r\n\t// we want for A, B, C. If it's negative, then we've got it flipped around and\r\n\t// should swap A and C.\r\n\tif (crossProductZ(pointA, pointB, pointC) < 0.0) {\r\n\t\tvar temp = pointA;\r\n\t\tpointA = pointC;\r\n\t\tpointC = temp;\r\n\t}\r\n\r\n\tpatterns[0] = pointA;\r\n\tpatterns[1] = pointB;\r\n\tpatterns[2] = pointC;\r\n}\r\n\r\n\r\nfunction FinderPattern(posX, posY, estimatedModuleSize) {\r\n\tthis.x = posX;\r\n\tthis.y = posY;\r\n\tthis.count = 1;\r\n\tthis.estimatedModuleSize = estimatedModuleSize;\r\n\r\n\tthis.__defineGetter__(\"EstimatedModuleSize\", function () {\r\n\t\treturn this.estimatedModuleSize;\r\n\t});\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"X\", function () {\r\n\t\treturn this.x;\r\n\t});\r\n\tthis.__defineGetter__(\"Y\", function () {\r\n\t\treturn this.y;\r\n\t});\r\n\tthis.incrementCount = function () {\r\n\t\tthis.count++;\r\n\t}\r\n\tthis.aboutEquals = function (moduleSize, i, j) {\r\n\t\tif (Math.abs(i - this.y) <= moduleSize && Math.abs(j - this.x) <= moduleSize) {\r\n\t\t\tvar moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\r\n\t\t\treturn moduleSizeDiff <= 1.0 || moduleSizeDiff / this.estimatedModuleSize <= 1.0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\nfunction FinderPatternInfo(patternCenters) {\r\n\tthis.bottomLeft = patternCenters[0];\r\n\tthis.topLeft = patternCenters[1];\r\n\tthis.topRight = patternCenters[2];\r\n\tthis.__defineGetter__(\"BottomLeft\", function () {\r\n\t\treturn this.bottomLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopLeft\", function () {\r\n\t\treturn this.topLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopRight\", function () {\r\n\t\treturn this.topRight;\r\n\t});\r\n}\r\n\r\nfunction FinderPatternFinder(base) {\r\n\tthis.image = null;\r\n\tthis.possibleCenters = [];\r\n\tthis.hasSkipped = false;\r\n\tthis.crossCheckStateCount = new Array(0, 0, 0, 0, 0);\r\n\tthis.resultPointCallback = null;\r\n\r\n\tthis.__defineGetter__(\"CrossCheckStateCount\", function () {\r\n\t\tthis.crossCheckStateCount[0] = 0;\r\n\t\tthis.crossCheckStateCount[1] = 0;\r\n\t\tthis.crossCheckStateCount[2] = 0;\r\n\t\tthis.crossCheckStateCount[3] = 0;\r\n\t\tthis.crossCheckStateCount[4] = 0;\r\n\t\treturn this.crossCheckStateCount;\r\n\t});\r\n\r\n\tthis.foundPatternCross = function (stateCount) {\r\n\t\tvar totalModuleSize = 0;\r\n\t\tfor (var i = 0; i < 5; i++) {\r\n\t\t\tvar count = stateCount[i];\r\n\t\t\tif (count == 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\ttotalModuleSize += count;\r\n\t\t}\r\n\t\tif (totalModuleSize < 7) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tvar moduleSize = Math.floor((totalModuleSize << INTEGER_MATH_SHIFT) / 7);\r\n\t\tvar maxVariance = Math.floor(moduleSize / 2);\r\n\t\t// Allow less than 50% variance from 1-1-3-1-1 proportions\r\n\t\treturn Math.abs(moduleSize - (stateCount[0] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[1] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(3 * moduleSize - (stateCount[2] << INTEGER_MATH_SHIFT)) < 3 * maxVariance && Math.abs(moduleSize - (stateCount[3] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[4] << INTEGER_MATH_SHIFT)) < maxVariance;\r\n\t}\r\n\tthis.centerFromEnd = function (stateCount, end) {\r\n\t\treturn (end - stateCount[4] - stateCount[3]) - stateCount[2] / 2.0;\r\n\t}\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (i < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is more than 40% different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\tthis.crossCheckHorizontal = function (startJ, centerI, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxJ = base.width;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\tvar j = startJ;\r\n\t\twhile (j >= 0 && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && !image[j + centerI * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && image[j + centerI * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tj = startJ + 1;\r\n\t\twhile (j < maxJ && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && !image[j + centerI * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && image[j + centerI * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is significantly different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, j) : NaN;\r\n\t}\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j); //float\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), stateCount[2], stateCountTotal); //float\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\t// Re-cross check\r\n\t\t\tcenterJ = this.crossCheckHorizontal(Math.floor(centerJ), Math.floor(centerI), stateCount[2], stateCountTotal);\r\n\t\t\tif (!isNaN(centerJ)) {\r\n\t\t\t\tvar estimatedModuleSize = stateCountTotal / 7.0;\r\n\t\t\t\tvar found = false;\r\n\t\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\t\tcenter.incrementCount();\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!found) {\r\n\t\t\t\t\tvar point = new FinderPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t\tthis.possibleCenters.push(point);\r\n\t\t\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.selectBestPatterns = function () {\r\n\r\n\t\tvar startSize = this.possibleCenters.length;\r\n\t\tif (startSize < 3) {\r\n\t\t\t// Couldn't find enough finder patterns\r\n\t\t\tthrow \"Couldn't find enough finder patterns (found \" + startSize + \")\"\r\n\t\t}\r\n\r\n\t\t// Filter outlier possibilities whose module size is too different\r\n\t\tif (startSize > 3) {\r\n\t\t\t// But we can only afford to do so if we have at least 4 possibilities to choose from\r\n\t\t\tvar totalModuleSize = 0.0;\r\n\t\t\tvar square = 0.0;\r\n\t\t\tfor (var i = 0; i < startSize; i++) {\r\n\t\t\t\t//totalModuleSize += this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\tvar centerValue = this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\ttotalModuleSize += centerValue;\r\n\t\t\t\tsquare += (centerValue * centerValue);\r\n\t\t\t}\r\n\t\t\tvar average = totalModuleSize / startSize;\r\n\t\t\tthis.possibleCenters.sort(function (center1, center2) {\r\n\t\t\t\tvar dA = Math.abs(center2.EstimatedModuleSize - average);\r\n\t\t\t\tvar dB = Math.abs(center1.EstimatedModuleSize - average);\r\n\t\t\t\tif (dA < dB) {\r\n\t\t\t\t\treturn (-1);\r\n\t\t\t\t} else if (dA == dB) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar stdDev = Math.sqrt(square / startSize - average * average);\r\n\t\t\tvar limit = Math.max(0.2 * average, stdDev);\r\n\t\t\t//for (var i = 0; i < this.possibleCenters.length && this.possibleCenters.length > 3; i++)\r\n\t\t\tfor (var i = this.possibleCenters.length - 1; i >= 0; i--) {\r\n\t\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\t\t//if (Math.abs(pattern.EstimatedModuleSize - average) > 0.2 * average)\r\n\t\t\t\tif (Math.abs(pattern.EstimatedModuleSize - average) > limit) {\r\n\t\t\t\t\t//this.possibleCenters.remove(i);\r\n\t\t\t\t\tthis.possibleCenters.splice(i, 1);\r\n\t\t\t\t\t//i--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.possibleCenters.length > 3) {\r\n\t\t\t// Throw away all but those first size candidate points we found.\r\n\t\t\tthis.possibleCenters.sort(function (a, b) {\r\n\t\t\t\tif (a.count > b.count) { return -1; }\r\n\t\t\t\tif (a.count < b.count) { return 1; }\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn new Array(this.possibleCenters[0], this.possibleCenters[1], this.possibleCenters[2]);\r\n\t}\r\n\r\n\tthis.findRowSkip = function () {\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tif (max <= 1) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tvar firstConfirmedCenter = null;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar center = this.possibleCenters[i];\r\n\t\t\tif (center.Count >= CENTER_QUORUM) {\r\n\t\t\t\tif (firstConfirmedCenter == null) {\r\n\t\t\t\t\tfirstConfirmedCenter = center;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// We have two confirmed centers\r\n\t\t\t\t\t// How far down can we skip before resuming looking for the next\r\n\t\t\t\t\t// pattern? In the worst case, only the difference between the\r\n\t\t\t\t\t// difference in the x / y coordinates of the two centers.\r\n\t\t\t\t\t// This is the case where you find top left last.\r\n\t\t\t\t\tthis.hasSkipped = true;\r\n\t\t\t\t\treturn Math.floor((Math.abs(firstConfirmedCenter.X - center.X) - Math.abs(firstConfirmedCenter.Y - center.Y)) / 2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tthis.haveMultiplyConfirmedCenters = function () {\r\n\t\tvar confirmedCount = 0;\r\n\t\tvar totalModuleSize = 0.0;\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\tif (pattern.Count >= CENTER_QUORUM) {\r\n\t\t\t\tconfirmedCount++;\r\n\t\t\t\ttotalModuleSize += pattern.EstimatedModuleSize;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (confirmedCount < 3) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t// OK, we have at least 3 confirmed centers, but, it's possible that one is a \"false positive\"\r\n\t\t// and that we need to keep looking. We detect this by asking if the estimated module sizes\r\n\t\t// vary too much. We arbitrarily say that when the total deviation from average exceeds\r\n\t\t// 5% of the total module size estimates, it's too much.\r\n\t\tvar average = totalModuleSize / max;\r\n\t\tvar totalDeviation = 0.0;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tpattern = this.possibleCenters[i];\r\n\t\t\ttotalDeviation += Math.abs(pattern.EstimatedModuleSize - average);\r\n\t\t}\r\n\t\treturn totalDeviation <= 0.05 * totalModuleSize;\r\n\t}\r\n\r\n\tthis.findFinderPattern = function (image) {\r\n\t\tvar tryHarder = false;\r\n\t\tthis.image = image;\r\n\t\tvar maxI = base.height;\r\n\t\tvar maxJ = base.width;\r\n\t\tvar iSkip = Math.floor((3 * maxI) / (4 * MAX_MODULES));\r\n\t\tif (iSkip < MIN_SKIP || tryHarder) {\r\n\t\t\tiSkip = MIN_SKIP;\r\n\t\t}\r\n\r\n\t\tvar done = false;\r\n\t\tvar stateCount = new Array(5);\r\n\t\tfor (var i = iSkip - 1; i < maxI && !done; i += iSkip) {\r\n\t\t\t// Get a row of black/white values\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tstateCount[3] = 0;\r\n\t\t\tstateCount[4] = 0;\r\n\t\t\tvar currentState = 0;\r\n\t\t\tfor (var j = 0; j < maxJ; j++) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif ((currentState & 1) == 1) {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif ((currentState & 1) == 0) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tif (currentState == 4) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed) {\r\n\t\t\t\t\t\t\t\t\t// Start examining every other line. Checking each line turned out to be too\r\n\t\t\t\t\t\t\t\t\t// expensive and didn't improve performance.\r\n\t\t\t\t\t\t\t\t\tiSkip = 2;\r\n\t\t\t\t\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\tvar rowSkip = this.findRowSkip();\r\n\t\t\t\t\t\t\t\t\t\tif (rowSkip > stateCount[2]) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip rows between row of lower confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// and top of presumed third confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// but back up a bit to get a full chance of detecting\r\n\t\t\t\t\t\t\t\t\t\t\t// it, entire width of center of finder pattern\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip by rowSkip, but back off by stateCount[2] (size of last center\r\n\t\t\t\t\t\t\t\t\t\t\t// of pattern we saw) to be conservative, and also back off by iSkip which\r\n\t\t\t\t\t\t\t\t\t\t\t// is about to be re-added\r\n\t\t\t\t\t\t\t\t\t\t\ti += rowSkip - stateCount[2] - iSkip;\r\n\t\t\t\t\t\t\t\t\t\t\tj = maxJ - 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t// Advance to next black pixel\r\n\t\t\t\t\t\t\t\t\tdo {\r\n\t\t\t\t\t\t\t\t\t\tj++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\twhile (j < maxJ && !image[j + i * base.width]);\r\n\t\t\t\t\t\t\t\t\tj--; // back up to that last white pixel\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Clear state to start looking again\r\n\t\t\t\t\t\t\t\tcurrentState = 0;\r\n\t\t\t\t\t\t\t\tstateCount[0] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[1] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[3] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// No, shift counts back by two\r\n\t\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\t\tstateCount[1] = stateCount[3];\r\n\t\t\t\t\t\t\t\tstateCount[2] = stateCount[4];\r\n\t\t\t\t\t\t\t\tstateCount[3] = 1;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t\tcurrentState = 3;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed) {\r\n\t\t\t\t\tiSkip = stateCount[0];\r\n\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t// Found a third one\r\n\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar patternInfo = this.selectBestPatterns();\r\n\t\torderBestPatterns(patternInfo);\r\n\r\n\t\treturn new FinderPatternInfo(patternInfo);\r\n\t};\r\n}\r\n\r\nmodule.exports = FinderPatternFinder;","exports.URShift = function URShift(number, bits) {\n if (number >= 0)\n return number >> bits;\n else\n return (number >> bits) + (2 << ~bits);\n}\n","function ErrorCorrectionLevel(ordinal, bits, name) {\r\n\tthis.ordinal_Renamed_Field = ordinal;\r\n\tthis.bits = bits;\r\n\tthis.name = name;\r\n\tthis.__defineGetter__(\"Bits\", function () {\r\n\t\treturn this.bits;\r\n\t});\r\n\tthis.__defineGetter__(\"Name\", function () {\r\n\t\treturn this.name;\r\n\t});\r\n\tthis.ordinal = function () {\r\n\t\treturn this.ordinal_Renamed_Field;\r\n\t}\r\n}\r\n\r\nvar L = new ErrorCorrectionLevel(0, 0x01, \"L\");\r\nvar M = new ErrorCorrectionLevel(1, 0x00, \"M\");\r\nvar Q = new ErrorCorrectionLevel(2, 0x03, \"Q\");\r\nvar H = new ErrorCorrectionLevel(3, 0x02, \"H\");\r\nvar FOR_BITS = new Array(M, L, H, Q);\r\n\r\nmodule.exports = function (bits) {\r\n\tif (bits < 0 || bits >= FOR_BITS.length) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn FOR_BITS[bits];\r\n}","var utils = require('../utils')\r\nvar getErrorCorrectionLevel = require('./ErrorLevel')\r\nvar URShift = utils.URShift;\r\n\r\nvar FORMAT_INFO_MASK_QR = 0x5412;\r\nvar FORMAT_INFO_DECODE_LOOKUP = new Array(new Array(0x5412, 0x00), new Array(0x5125, 0x01), new Array(0x5E7C, 0x02), new Array(0x5B4B, 0x03), new Array(0x45F9, 0x04), new Array(0x40CE, 0x05), new Array(0x4F97, 0x06), new Array(0x4AA0, 0x07), new Array(0x77C4, 0x08), new Array(0x72F3, 0x09), new Array(0x7DAA, 0x0A), new Array(0x789D, 0x0B), new Array(0x662F, 0x0C), new Array(0x6318, 0x0D), new Array(0x6C41, 0x0E), new Array(0x6976, 0x0F), new Array(0x1689, 0x10), new Array(0x13BE, 0x11), new Array(0x1CE7, 0x12), new Array(0x19D0, 0x13), new Array(0x0762, 0x14), new Array(0x0255, 0x15), new Array(0x0D0C, 0x16), new Array(0x083B, 0x17), new Array(0x355F, 0x18), new Array(0x3068, 0x19), new Array(0x3F31, 0x1A), new Array(0x3A06, 0x1B), new Array(0x24B4, 0x1C), new Array(0x2183, 0x1D), new Array(0x2EDA, 0x1E), new Array(0x2BED, 0x1F));\r\nvar BITS_SET_IN_HALF_BYTE = new Array(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4);\r\n\r\n\r\nfunction FormatInformation(formatInfo) {\r\n\tthis.errorCorrectionLevel = getErrorCorrectionLevel((formatInfo >> 3) & 0x03);\r\n\tthis.dataMask = (formatInfo & 0x07);\r\n\r\n\tthis.__defineGetter__(\"ErrorCorrectionLevel\", function () {\r\n\t\treturn this.errorCorrectionLevel;\r\n\t});\r\n\tthis.__defineGetter__(\"DataMask\", function () {\r\n\t\treturn this.dataMask;\r\n\t});\r\n\tthis.GetHashCode = function () {\r\n\t\treturn (this.errorCorrectionLevel.ordinal() << 3) | this.dataMask;\r\n\t}\r\n\tthis.Equals = function (o) {\r\n\t\tvar other = o;\r\n\t\treturn this.errorCorrectionLevel == other.errorCorrectionLevel && this.dataMask == other.dataMask;\r\n\t}\r\n}\r\n\r\nFormatInformation.numBitsDiffering = function (a, b) {\r\n\ta ^= b; // a now has a 1 bit exactly where its bit differs with b's\r\n\t// Count bits set quickly with a series of lookups:\r\n\treturn BITS_SET_IN_HALF_BYTE[a & 0x0F] + BITS_SET_IN_HALF_BYTE[(URShift(a, 4) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 8) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 12) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 16) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 20) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 24) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 28) & 0x0F)];\r\n}\r\n\r\nFormatInformation.decodeFormatInformation = function (maskedFormatInfo) {\r\n\tvar formatInfo = FormatInformation.doDecodeFormatInformation(maskedFormatInfo);\r\n\tif (formatInfo != null) {\r\n\t\treturn formatInfo;\r\n\t}\r\n\t// Should return null, but, some QR codes apparently\r\n\t// do not mask this info. Try again by actually masking the pattern\r\n\t// first\r\n\treturn FormatInformation.doDecodeFormatInformation(maskedFormatInfo ^ FORMAT_INFO_MASK_QR);\r\n}\r\n\r\nFormatInformation.doDecodeFormatInformation = function (maskedFormatInfo) {\r\n\t// Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestFormatInfo = 0;\r\n\tfor (var i = 0; i < FORMAT_INFO_DECODE_LOOKUP.length; i++) {\r\n\t\tvar decodeInfo = FORMAT_INFO_DECODE_LOOKUP[i];\r\n\t\tvar targetInfo = decodeInfo[0];\r\n\t\tif (targetInfo == maskedFormatInfo) {\r\n\t\t\t// Found an exact match\r\n\t\t\treturn new FormatInformation(decodeInfo[1]);\r\n\t\t}\r\n\t\tvar bitsDifference = this.numBitsDiffering(maskedFormatInfo, targetInfo);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestFormatInfo = decodeInfo[1];\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits\r\n\t// differing means we found a match\r\n\tif (bestDifference <= 3) {\r\n\t\treturn new FormatInformation(bestFormatInfo);\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nmodule.exports = FormatInformation;\r\n","var utils = require('../utils');\r\nvar URShift = utils.URShift;\r\n\r\nfunction BitMatrix(width, height) {\r\n\tif (!height)\r\n\t\theight = width;\r\n\tif (width < 1 || height < 1) {\r\n\t\tthrow \"Both dimensions must be greater than 0\";\r\n\t}\r\n\tthis.width = width;\r\n\tthis.height = height;\r\n\tvar rowSize = width >> 5;\r\n\tif ((width & 0x1f) != 0) {\r\n\t\trowSize++;\r\n\t}\r\n\tthis.rowSize = rowSize;\r\n\tthis.bits = new Array(rowSize * height);\r\n\tfor (var i = 0; i < this.bits.length; i++)\r\n\t\tthis.bits[i] = 0;\r\n\r\n\tthis.__defineGetter__(\"Width\", function () {\r\n\t\treturn this.width;\r\n\t});\r\n\tthis.__defineGetter__(\"Height\", function () {\r\n\t\treturn this.height;\r\n\t});\r\n\tthis.__defineGetter__(\"Dimension\", function () {\r\n\t\tif (this.width != this.height) {\r\n\t\t\tthrow \"Can't call getDimension() on a non-square matrix\";\r\n\t\t}\r\n\t\treturn this.width;\r\n\t});\r\n\r\n\tthis.get_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\treturn ((URShift(this.bits[offset], (x & 0x1f))) & 1) != 0;\r\n\t}\r\n\tthis.set_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] |= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.flip = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] ^= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.clear = function () {\r\n\t\tvar max = this.bits.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tthis.bits[i] = 0;\r\n\t\t}\r\n\t}\r\n\tthis.setRegion = function (left, top, width, height) {\r\n\t\tif (top < 0 || left < 0) {\r\n\t\t\tthrow \"Left and top must be nonnegative\";\r\n\t\t}\r\n\t\tif (height < 1 || width < 1) {\r\n\t\t\tthrow \"Height and width must be at least 1\";\r\n\t\t}\r\n\t\tvar right = left + width;\r\n\t\tvar bottom = top + height;\r\n\t\tif (bottom > this.height || right > this.width) {\r\n\t\t\tthrow \"The region must fit inside the matrix\";\r\n\t\t}\r\n\t\tfor (var y = top; y < bottom; y++) {\r\n\t\t\tvar offset = y * this.rowSize;\r\n\t\t\tfor (var x = left; x < right; x++) {\r\n\t\t\t\tthis.bits[offset + (x >> 5)] |= 1 << (x & 0x1f);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmodule.exports = BitMatrix;","var FormatInformation = require('./FormatInformation')\r\nvar BitMatrix = require('./BitMatix')\r\n\r\nfunction ECB(count, dataCodewords) {\r\n\tthis.count = count;\r\n\tthis.dataCodewords = dataCodewords;\r\n\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"DataCodewords\", function () {\r\n\t\treturn this.dataCodewords;\r\n\t});\r\n}\r\n\r\nfunction ECBlocks(ecCodewordsPerBlock, ecBlocks1, ecBlocks2) {\r\n\tthis.ecCodewordsPerBlock = ecCodewordsPerBlock;\r\n\tif (ecBlocks2)\r\n\t\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2);\r\n\telse\r\n\t\tthis.ecBlocks = new Array(ecBlocks1);\r\n\r\n\tthis.__defineGetter__(\"ECCodewordsPerBlock\", function () {\r\n\t\treturn this.ecCodewordsPerBlock;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"TotalECCodewords\", function () {\r\n\t\treturn this.ecCodewordsPerBlock * this.NumBlocks;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"NumBlocks\", function () {\r\n\t\tvar total = 0;\r\n\t\tfor (var i = 0; i < this.ecBlocks.length; i++) {\r\n\t\t\ttotal += this.ecBlocks[i].length;\r\n\t\t}\r\n\t\treturn total;\r\n\t});\r\n\r\n\tthis.getECBlocks = function () {\r\n\t\treturn this.ecBlocks;\r\n\t}\r\n}\r\n\r\nfunction Version(versionNumber, alignmentPatternCenters, ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4) {\r\n\tthis.versionNumber = versionNumber;\r\n\tthis.alignmentPatternCenters = alignmentPatternCenters;\r\n\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4);\r\n\r\n\tvar total = 0;\r\n\tvar ecCodewords = ecBlocks1.ECCodewordsPerBlock;\r\n\tvar ecbArray = ecBlocks1.getECBlocks();\r\n\tfor (var i = 0; i < ecbArray.length; i++) {\r\n\t\tvar ecBlock = ecbArray[i];\r\n\t\ttotal += ecBlock.Count * (ecBlock.DataCodewords + ecCodewords);\r\n\t}\r\n\tthis.totalCodewords = total;\r\n\r\n\tthis.__defineGetter__(\"VersionNumber\", function () {\r\n\t\treturn this.versionNumber;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"AlignmentPatternCenters\", function () {\r\n\t\treturn this.alignmentPatternCenters;\r\n\t});\r\n\tthis.__defineGetter__(\"TotalCodewords\", function () {\r\n\t\treturn this.totalCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"DimensionForVersion\", function () {\r\n\t\treturn 17 + 4 * this.versionNumber;\r\n\t});\r\n\r\n\tthis.buildFunctionPattern = function () {\r\n\t\tvar dimension = this.DimensionForVersion;\r\n\t\tvar bitMatrix = new BitMatrix(dimension);\r\n\r\n\t\t// Top left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, 0, 9, 9);\r\n\t\t// Top right finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(dimension - 8, 0, 8, 9);\r\n\t\t// Bottom left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, dimension - 8, 9, 8);\r\n\r\n\t\t// Alignment patterns\r\n\t\tvar max = this.alignmentPatternCenters.length;\r\n\t\tfor (var x = 0; x < max; x++) {\r\n\t\t\tvar i = this.alignmentPatternCenters[x] - 2;\r\n\t\t\tfor (var y = 0; y < max; y++) {\r\n\t\t\t\tif ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) {\r\n\t\t\t\t\t// No alignment patterns near the three finder paterns\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tbitMatrix.setRegion(this.alignmentPatternCenters[y] - 2, i, 5, 5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Vertical timing pattern\r\n\t\tbitMatrix.setRegion(6, 9, 1, dimension - 17);\r\n\t\t// Horizontal timing pattern\r\n\t\tbitMatrix.setRegion(9, 6, dimension - 17, 1);\r\n\r\n\t\tif (this.versionNumber > 6) {\r\n\t\t\t// Version info, top right\r\n\t\t\tbitMatrix.setRegion(dimension - 11, 0, 3, 6);\r\n\t\t\t// Version info, bottom left\r\n\t\t\tbitMatrix.setRegion(0, dimension - 11, 6, 3);\r\n\t\t}\r\n\r\n\t\treturn bitMatrix;\r\n\t}\r\n\tthis.getECBlocksForLevel = function (ecLevel) {\r\n\t\treturn this.ecBlocks[ecLevel.ordinal()];\r\n\t}\r\n}\r\n\r\nVersion.VERSION_DECODE_INFO = new Array(0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69);\r\n\r\nVersion.VERSIONS = buildVersions();\r\n\r\nVersion.getVersionForNumber = function (versionNumber) {\r\n\tif (versionNumber < 1 || versionNumber > 40) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn Version.VERSIONS[versionNumber - 1];\r\n}\r\n\r\nVersion.getProvisionalVersionForDimension = function (dimension) {\r\n\tif (dimension % 4 != 1) {\r\n\t\tthrow \"Error getProvisionalVersionForDimension\";\r\n\t}\r\n\ttry {\r\n\t\treturn Version.getVersionForNumber((dimension - 17) >> 2);\r\n\t}\r\n\tcatch (iae) {\r\n\t\tthrow \"Error getVersionForNumber\";\r\n\t}\r\n}\r\n\r\nVersion.decodeVersionInformation = function (versionBits) {\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestVersion = 0;\r\n\tfor (var i = 0; i < Version.VERSION_DECODE_INFO.length; i++) {\r\n\t\tvar targetVersion = Version.VERSION_DECODE_INFO[i];\r\n\t\t// Do the version info bits match exactly? done.\r\n\t\tif (targetVersion == versionBits) {\r\n\t\t\treturn this.getVersionForNumber(i + 7);\r\n\t\t}\r\n\t\t// Otherwise see if this is the closest to a real version info bit string\r\n\t\t// we have seen so far\r\n\t\tvar bitsDifference = FormatInformation.numBitsDiffering(versionBits, targetVersion);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestVersion = i + 7;\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// We can tolerate up to 3 bits of error since no two version info codewords will\r\n\t// differ in less than 4 bits.\r\n\tif (bestDifference <= 3) {\r\n\t\treturn this.getVersionForNumber(bestVersion);\r\n\t}\r\n\t// If we didn't find a close enough match, fail\r\n\treturn null;\r\n}\r\n\r\nfunction buildVersions() {\r\n\treturn new Array(new Version(1, new Array(), new ECBlocks(7, new ECB(1, 19)), new ECBlocks(10, new ECB(1, 16)), new ECBlocks(13, new ECB(1, 13)), new ECBlocks(17, new ECB(1, 9))),\r\n\t\tnew Version(2, new Array(6, 18), new ECBlocks(10, new ECB(1, 34)), new ECBlocks(16, new ECB(1, 28)), new ECBlocks(22, new ECB(1, 22)), new ECBlocks(28, new ECB(1, 16))),\r\n\t\tnew Version(3, new Array(6, 22), new ECBlocks(15, new ECB(1, 55)), new ECBlocks(26, new ECB(1, 44)), new ECBlocks(18, new ECB(2, 17)), new ECBlocks(22, new ECB(2, 13))),\r\n\t\tnew Version(4, new Array(6, 26), new ECBlocks(20, new ECB(1, 80)), new ECBlocks(18, new ECB(2, 32)), new ECBlocks(26, new ECB(2, 24)), new ECBlocks(16, new ECB(4, 9))),\r\n\t\tnew Version(5, new Array(6, 30), new ECBlocks(26, new ECB(1, 108)), new ECBlocks(24, new ECB(2, 43)), new ECBlocks(18, new ECB(2, 15), new ECB(2, 16)), new ECBlocks(22, new ECB(2, 11), new ECB(2, 12))),\r\n\t\tnew Version(6, new Array(6, 34), new ECBlocks(18, new ECB(2, 68)), new ECBlocks(16, new ECB(4, 27)), new ECBlocks(24, new ECB(4, 19)), new ECBlocks(28, new ECB(4, 15))),\r\n\t\tnew Version(7, new Array(6, 22, 38), new ECBlocks(20, new ECB(2, 78)), new ECBlocks(18, new ECB(4, 31)), new ECBlocks(18, new ECB(2, 14), new ECB(4, 15)), new ECBlocks(26, new ECB(4, 13), new ECB(1, 14))),\r\n\t\tnew Version(8, new Array(6, 24, 42), new ECBlocks(24, new ECB(2, 97)), new ECBlocks(22, new ECB(2, 38), new ECB(2, 39)), new ECBlocks(22, new ECB(4, 18), new ECB(2, 19)), new ECBlocks(26, new ECB(4, 14), new ECB(2, 15))),\r\n\t\tnew Version(9, new Array(6, 26, 46), new ECBlocks(30, new ECB(2, 116)), new ECBlocks(22, new ECB(3, 36), new ECB(2, 37)), new ECBlocks(20, new ECB(4, 16), new ECB(4, 17)), new ECBlocks(24, new ECB(4, 12), new ECB(4, 13))),\r\n\t\tnew Version(10, new Array(6, 28, 50), new ECBlocks(18, new ECB(2, 68), new ECB(2, 69)), new ECBlocks(26, new ECB(4, 43), new ECB(1, 44)), new ECBlocks(24, new ECB(6, 19), new ECB(2, 20)), new ECBlocks(28, new ECB(6, 15), new ECB(2, 16))),\r\n\t\tnew Version(11, new Array(6, 30, 54), new ECBlocks(20, new ECB(4, 81)), new ECBlocks(30, new ECB(1, 50), new ECB(4, 51)), new ECBlocks(28, new ECB(4, 22), new ECB(4, 23)), new ECBlocks(24, new ECB(3, 12), new ECB(8, 13))),\r\n\t\tnew Version(12, new Array(6, 32, 58), new ECBlocks(24, new ECB(2, 92), new ECB(2, 93)), new ECBlocks(22, new ECB(6, 36), new ECB(2, 37)), new ECBlocks(26, new ECB(4, 20), new ECB(6, 21)), new ECBlocks(28, new ECB(7, 14), new ECB(4, 15))),\r\n\t\tnew Version(13, new Array(6, 34, 62), new ECBlocks(26, new ECB(4, 107)), new ECBlocks(22, new ECB(8, 37), new ECB(1, 38)), new ECBlocks(24, new ECB(8, 20), new ECB(4, 21)), new ECBlocks(22, new ECB(12, 11), new ECB(4, 12))),\r\n\t\tnew Version(14, new Array(6, 26, 46, 66), new ECBlocks(30, new ECB(3, 115), new ECB(1, 116)), new ECBlocks(24, new ECB(4, 40), new ECB(5, 41)), new ECBlocks(20, new ECB(11, 16), new ECB(5, 17)), new ECBlocks(24, new ECB(11, 12), new ECB(5, 13))),\r\n\t\tnew Version(15, new Array(6, 26, 48, 70), new ECBlocks(22, new ECB(5, 87), new ECB(1, 88)), new ECBlocks(24, new ECB(5, 41), new ECB(5, 42)), new ECBlocks(30, new ECB(5, 24), new ECB(7, 25)), new ECBlocks(24, new ECB(11, 12), new ECB(7, 13))),\r\n\t\tnew Version(16, new Array(6, 26, 50, 74), new ECBlocks(24, new ECB(5, 98), new ECB(1, 99)), new ECBlocks(28, new ECB(7, 45), new ECB(3, 46)), new ECBlocks(24, new ECB(15, 19), new ECB(2, 20)), new ECBlocks(30, new ECB(3, 15), new ECB(13, 16))),\r\n\t\tnew Version(17, new Array(6, 30, 54, 78), new ECBlocks(28, new ECB(1, 107), new ECB(5, 108)), new ECBlocks(28, new ECB(10, 46), new ECB(1, 47)), new ECBlocks(28, new ECB(1, 22), new ECB(15, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(17, 15))),\r\n\t\tnew Version(18, new Array(6, 30, 56, 82), new ECBlocks(30, new ECB(5, 120), new ECB(1, 121)), new ECBlocks(26, new ECB(9, 43), new ECB(4, 44)), new ECBlocks(28, new ECB(17, 22), new ECB(1, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(19, 15))),\r\n\t\tnew Version(19, new Array(6, 30, 58, 86), new ECBlocks(28, new ECB(3, 113), new ECB(4, 114)), new ECBlocks(26, new ECB(3, 44), new ECB(11, 45)), new ECBlocks(26, new ECB(17, 21), new ECB(4, 22)), new ECBlocks(26, new ECB(9, 13), new ECB(16, 14))),\r\n\t\tnew Version(20, new Array(6, 34, 62, 90), new ECBlocks(28, new ECB(3, 107), new ECB(5, 108)), new ECBlocks(26, new ECB(3, 41), new ECB(13, 42)), new ECBlocks(30, new ECB(15, 24), new ECB(5, 25)), new ECBlocks(28, new ECB(15, 15), new ECB(10, 16))),\r\n\t\tnew Version(21, new Array(6, 28, 50, 72, 94), new ECBlocks(28, new ECB(4, 116), new ECB(4, 117)), new ECBlocks(26, new ECB(17, 42)), new ECBlocks(28, new ECB(17, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(19, 16), new ECB(6, 17))),\r\n\t\tnew Version(22, new Array(6, 26, 50, 74, 98), new ECBlocks(28, new ECB(2, 111), new ECB(7, 112)), new ECBlocks(28, new ECB(17, 46)), new ECBlocks(30, new ECB(7, 24), new ECB(16, 25)), new ECBlocks(24, new ECB(34, 13))),\r\n\t\tnew Version(23, new Array(6, 30, 54, 74, 102), new ECBlocks(30, new ECB(4, 121), new ECB(5, 122)), new ECBlocks(28, new ECB(4, 47), new ECB(14, 48)), new ECBlocks(30, new ECB(11, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(16, 15), new ECB(14, 16))),\r\n\t\tnew Version(24, new Array(6, 28, 54, 80, 106), new ECBlocks(30, new ECB(6, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(6, 45), new ECB(14, 46)), new ECBlocks(30, new ECB(11, 24), new ECB(16, 25)), new ECBlocks(30, new ECB(30, 16), new ECB(2, 17))),\r\n\t\tnew Version(25, new Array(6, 32, 58, 84, 110), new ECBlocks(26, new ECB(8, 106), new ECB(4, 107)), new ECBlocks(28, new ECB(8, 47), new ECB(13, 48)), new ECBlocks(30, new ECB(7, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(13, 16))),\r\n\t\tnew Version(26, new Array(6, 30, 58, 86, 114), new ECBlocks(28, new ECB(10, 114), new ECB(2, 115)), new ECBlocks(28, new ECB(19, 46), new ECB(4, 47)), new ECBlocks(28, new ECB(28, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(33, 16), new ECB(4, 17))),\r\n\t\tnew Version(27, new Array(6, 34, 62, 90, 118), new ECBlocks(30, new ECB(8, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(22, 45), new ECB(3, 46)), new ECBlocks(30, new ECB(8, 23), new ECB(26, 24)), new ECBlocks(30, new ECB(12, 15), new ECB(28, 16))),\r\n\t\tnew Version(28, new Array(6, 26, 50, 74, 98, 122), new ECBlocks(30, new ECB(3, 117), new ECB(10, 118)), new ECBlocks(28, new ECB(3, 45), new ECB(23, 46)), new ECBlocks(30, new ECB(4, 24), new ECB(31, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(31, 16))),\r\n\t\tnew Version(29, new Array(6, 30, 54, 78, 102, 126), new ECBlocks(30, new ECB(7, 116), new ECB(7, 117)), new ECBlocks(28, new ECB(21, 45), new ECB(7, 46)), new ECBlocks(30, new ECB(1, 23), new ECB(37, 24)), new ECBlocks(30, new ECB(19, 15), new ECB(26, 16))),\r\n\t\tnew Version(30, new Array(6, 26, 52, 78, 104, 130), new ECBlocks(30, new ECB(5, 115), new ECB(10, 116)), new ECBlocks(28, new ECB(19, 47), new ECB(10, 48)), new ECBlocks(30, new ECB(15, 24), new ECB(25, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(25, 16))),\r\n\t\tnew Version(31, new Array(6, 30, 56, 82, 108, 134), new ECBlocks(30, new ECB(13, 115), new ECB(3, 116)), new ECBlocks(28, new ECB(2, 46), new ECB(29, 47)), new ECBlocks(30, new ECB(42, 24), new ECB(1, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(28, 16))),\r\n\t\tnew Version(32, new Array(6, 34, 60, 86, 112, 138), new ECBlocks(30, new ECB(17, 115)), new ECBlocks(28, new ECB(10, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(10, 24), new ECB(35, 25)), new ECBlocks(30, new ECB(19, 15), new ECB(35, 16))),\r\n\t\tnew Version(33, new Array(6, 30, 58, 86, 114, 142), new ECBlocks(30, new ECB(17, 115), new ECB(1, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(21, 47)), new ECBlocks(30, new ECB(29, 24), new ECB(19, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(46, 16))),\r\n\t\tnew Version(34, new Array(6, 34, 62, 90, 118, 146), new ECBlocks(30, new ECB(13, 115), new ECB(6, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(44, 24), new ECB(7, 25)), new ECBlocks(30, new ECB(59, 16), new ECB(1, 17))),\r\n\t\tnew Version(35, new Array(6, 30, 54, 78, 102, 126, 150), new ECBlocks(30, new ECB(12, 121), new ECB(7, 122)), new ECBlocks(28, new ECB(12, 47), new ECB(26, 48)), new ECBlocks(30, new ECB(39, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(41, 16))),\r\n\t\tnew Version(36, new Array(6, 24, 50, 76, 102, 128, 154), new ECBlocks(30, new ECB(6, 121), new ECB(14, 122)), new ECBlocks(28, new ECB(6, 47), new ECB(34, 48)), new ECBlocks(30, new ECB(46, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(2, 15), new ECB(64, 16))),\r\n\t\tnew Version(37, new Array(6, 28, 54, 80, 106, 132, 158), new ECBlocks(30, new ECB(17, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(29, 46), new ECB(14, 47)), new ECBlocks(30, new ECB(49, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(24, 15), new ECB(46, 16))),\r\n\t\tnew Version(38, new Array(6, 32, 58, 84, 110, 136, 162), new ECBlocks(30, new ECB(4, 122), new ECB(18, 123)), new ECBlocks(28, new ECB(13, 46), new ECB(32, 47)), new ECBlocks(30, new ECB(48, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(42, 15), new ECB(32, 16))),\r\n\t\tnew Version(39, new Array(6, 26, 54, 82, 110, 138, 166), new ECBlocks(30, new ECB(20, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(40, 47), new ECB(7, 48)), new ECBlocks(30, new ECB(43, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(10, 15), new ECB(67, 16))),\r\n\t\tnew Version(40, new Array(6, 30, 58, 86, 114, 142, 170), new ECBlocks(30, new ECB(19, 118), new ECB(6, 119)), new ECBlocks(28, new ECB(18, 47), new ECB(31, 48)), new ECBlocks(30, new ECB(34, 24), new ECB(34, 25)), new ECBlocks(30, new ECB(20, 15), new ECB(61, 16))));\r\n}\r\n\r\nmodule.exports = Version;","// var PerspectiveTransform = require('./PerspectiveTransform')\nvar BitMatrix = require('./BitMatix')\n\nvar GridSampler = {};\n\nGridSampler.checkAndNudgePoints = function (image, points, base) {\n\tvar width = base.width;\n\tvar height = base.height;\n\t// Check and nudge points from start until we see some that are OK:\n\tvar nudged = true;\n\tfor (var offset = 0; offset < points.length && nudged; offset += 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n\t// Check and nudge points from end:\n\tnudged = true;\n\tfor (var offset = points.length - 2; offset >= 0 && nudged; offset -= 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n}\n\nGridSampler.sampleGrid3 = function (image, base, dimension, transform) {\n\tvar bits = new BitMatrix(dimension);\n\tvar points = new Array(dimension << 1);\n\tfor (var y = 0; y < dimension; y++) {\n\t\tvar max = points.length;\n\t\tvar iValue = y + 0.5;\n\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\tpoints[x] = (x >> 1) + 0.5;\n\t\t\tpoints[x + 1] = iValue;\n\t\t}\n\t\ttransform.transformPoints1(points);\n\t\t// Quick check to see if points transformed to something inside the image;\n\t\t// sufficient to check the endpoints\n\t\tGridSampler.checkAndNudgePoints(image, points, base);\n\t\ttry {\n\t\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\t\t//var xpoint = (Math.floor( points[x]) * 4) + (Math.floor( points[x + 1]) * base.width * 4);\n\t\t\t\tvar bit = image[Math.floor(points[x]) + base.width * Math.floor(points[x + 1])];\n\t\t\t\t//qrcode.imagedata.data[xpoint] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+1] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+2] = 0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+3] = 255;\n\t\t\t\t//bits[x >> 1][ y]=bit;\n\t\t\t\tif (bit)\n\t\t\t\t\tbits.set_Renamed(x >> 1, y);\n\t\t\t}\n\t\t}\n\t\tcatch (aioobe) {\n\t\t\t// This feels wrong, but, sometimes if the finder patterns are misidentified, the resulting\n\t\t\t// transform gets \"twisted\" such that it maps a straight line of points to a set of points\n\t\t\t// whose endpoints are in bounds, but others are not. There is probably some mathematical\n\t\t\t// way to detect this about the transformation that I don't know yet.\n\t\t\t// This results in an ugly runtime exception despite our clever checks above -- can't have\n\t\t\t// that. We could check each point's coordinates but that feels duplicative. We settle for\n\t\t\t// catching and wrapping ArrayIndexOutOfBoundsException.\n\t\t\tthrow \"Error.checkAndNudgePoints\";\n\t\t}\n\t}\n\treturn bits;\n}\n\n// GridSampler.sampleGridx = function (image, base, dimension, p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY) {\n// \tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);\n\n// \treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n// }\n\nmodule.exports = GridSampler;","function PerspectiveTransform(a11, a21, a31, a12, a22, a32, a13, a23, a33) {\n\tthis.a11 = a11;\n\tthis.a12 = a12;\n\tthis.a13 = a13;\n\tthis.a21 = a21;\n\tthis.a22 = a22;\n\tthis.a23 = a23;\n\tthis.a31 = a31;\n\tthis.a32 = a32;\n\tthis.a33 = a33;\n\tthis.transformPoints1 = function (points) {\n\t\tvar max = points.length;\n\t\tvar a11 = this.a11;\n\t\tvar a12 = this.a12;\n\t\tvar a13 = this.a13;\n\t\tvar a21 = this.a21;\n\t\tvar a22 = this.a22;\n\t\tvar a23 = this.a23;\n\t\tvar a31 = this.a31;\n\t\tvar a32 = this.a32;\n\t\tvar a33 = this.a33;\n\t\tfor (var i = 0; i < max; i += 2) {\n\t\t\tvar x = points[i];\n\t\t\tvar y = points[i + 1];\n\t\t\tvar denominator = a13 * x + a23 * y + a33;\n\t\t\tpoints[i] = (a11 * x + a21 * y + a31) / denominator;\n\t\t\tpoints[i + 1] = (a12 * x + a22 * y + a32) / denominator;\n\t\t}\n\t}\n\tthis.transformPoints2 = function (xValues, yValues) {\n\t\tvar n = xValues.length;\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tvar x = xValues[i];\n\t\t\tvar y = yValues[i];\n\t\t\tvar denominator = this.a13 * x + this.a23 * y + this.a33;\n\t\t\txValues[i] = (this.a11 * x + this.a21 * y + this.a31) / denominator;\n\t\t\tyValues[i] = (this.a12 * x + this.a22 * y + this.a32) / denominator;\n\t\t}\n\t}\n\n\tthis.buildAdjoint = function () {\n\t\t// Adjoint is the transpose of the cofactor matrix:\n\t\treturn new PerspectiveTransform(this.a22 * this.a33 - this.a23 * this.a32, this.a23 * this.a31 - this.a21 * this.a33, this.a21 * this.a32 - this.a22 * this.a31, this.a13 * this.a32 - this.a12 * this.a33, this.a11 * this.a33 - this.a13 * this.a31, this.a12 * this.a31 - this.a11 * this.a32, this.a12 * this.a23 - this.a13 * this.a22, this.a13 * this.a21 - this.a11 * this.a23, this.a11 * this.a22 - this.a12 * this.a21);\n\t}\n\tthis.times = function (other) {\n\t\treturn new PerspectiveTransform(this.a11 * other.a11 + this.a21 * other.a12 + this.a31 * other.a13, this.a11 * other.a21 + this.a21 * other.a22 + this.a31 * other.a23, this.a11 * other.a31 + this.a21 * other.a32 + this.a31 * other.a33, this.a12 * other.a11 + this.a22 * other.a12 + this.a32 * other.a13, this.a12 * other.a21 + this.a22 * other.a22 + this.a32 * other.a23, this.a12 * other.a31 + this.a22 * other.a32 + this.a32 * other.a33, this.a13 * other.a11 + this.a23 * other.a12 + this.a33 * other.a13, this.a13 * other.a21 + this.a23 * other.a22 + this.a33 * other.a23, this.a13 * other.a31 + this.a23 * other.a32 + this.a33 * other.a33);\n\t}\n\n}\n\nPerspectiveTransform.quadrilateralToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3, x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p) {\n\n\tvar qToS = this.quadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3);\n\tvar sToQ = this.squareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p);\n\treturn sToQ.times(qToS);\n}\n\nPerspectiveTransform.squareToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\tvar dy2 = y3 - y2;\n\tvar dy3 = y0 - y1 + y2 - y3;\n\tif (dy2 == 0.0 && dy3 == 0.0) {\n\t\treturn new PerspectiveTransform(x1 - x0, x2 - x1, x0, y1 - y0, y2 - y1, y0, 0.0, 0.0, 1.0);\n\t}\n\telse {\n\t\tvar dx1 = x1 - x2;\n\t\tvar dx2 = x3 - x2;\n\t\tvar dx3 = x0 - x1 + x2 - x3;\n\t\tvar dy1 = y1 - y2;\n\t\tvar denominator = dx1 * dy2 - dx2 * dy1;\n\t\tvar a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n\t\tvar a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n\t\treturn new PerspectiveTransform(x1 - x0 + a13 * x1, x3 - x0 + a23 * x3, x0, y1 - y0 + a13 * y1, y3 - y0 + a23 * y3, y0, a13, a23, 1.0);\n\t}\n}\n\nPerspectiveTransform.quadrilateralToSquare = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\t// Here, the adjoint serves as the inverse:\n\treturn this.squareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3).buildAdjoint();\n}\n\nmodule.exports = PerspectiveTransform;","var AlignmentPatternFinder = require('./Alignment')\nvar FinderPatternFinder = require('./Findpat')\nvar Version = require('./Version')\nvar GridSampler = require('./GridSampler')\nvar PerspectiveTransform = require('./PerspectiveTransform')\n\nfunction DetectorResult(bits, points) {\n\tthis.bits = bits;\n\tthis.points = points;\n}\n\n\nfunction Detector(imageArray,base) {\n\tthis.image = imageArray;\n\tthis.resultPointCallback = null;\n\n\tthis.sizeOfBlackWhiteBlackRun = function (fromX, fromY, toX, toY) {\n\t\t// Mild variant of Bresenham's algorithm;\n\t\t// see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\n\t\tvar steep = Math.abs(toY - fromY) > Math.abs(toX - fromX);\n\t\tif (steep) {\n\t\t\tvar temp = fromX;\n\t\t\tfromX = fromY;\n\t\t\tfromY = temp;\n\t\t\ttemp = toX;\n\t\t\ttoX = toY;\n\t\t\ttoY = temp;\n\t\t}\n\n\t\tvar dx = Math.abs(toX - fromX);\n\t\tvar dy = Math.abs(toY - fromY);\n\t\tvar error = - dx >> 1;\n\t\tvar ystep = fromY < toY ? 1 : - 1;\n\t\tvar xstep = fromX < toX ? 1 : - 1;\n\t\tvar state = 0; // In black pixels, looking for white, first or second time\n\t\tfor (var x = fromX, y = fromY; x != toX; x += xstep) {\n\n\t\t\tvar realX = steep ? y : x;\n\t\t\tvar realY = steep ? x : y;\n\t\t\tif (state == 1) {\n\t\t\t\t// In white pixels, looking for black\n\t\t\t\tif (this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (state == 3) {\n\t\t\t\t// Found black, white, black, and stumbled back onto white; done\n\t\t\t\tvar diffX = x - fromX;\n\t\t\t\tvar diffY = y - fromY;\n\t\t\t\treturn Math.sqrt((diffX * diffX + diffY * diffY));\n\t\t\t}\n\t\t\terror += dy;\n\t\t\tif (error > 0) {\n\t\t\t\tif (y == toY) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ty += ystep;\n\t\t\t\terror -= dx;\n\t\t\t}\n\t\t}\n\t\tvar diffX2 = toX - fromX;\n\t\tvar diffY2 = toY - fromY;\n\t\treturn Math.sqrt((diffX2 * diffX2 + diffY2 * diffY2));\n\t}\n\n\n\tthis.sizeOfBlackWhiteBlackRunBothWays = function (fromX, fromY, toX, toY) {\n\n\t\tvar result = this.sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY);\n\n\t\t// Now count other way -- don't run off image though of course\n\t\tvar scale = 1.0;\n\t\tvar otherToX = fromX - (toX - fromX);\n\t\tif (otherToX < 0) {\n\t\t\tscale = fromX / (fromX - otherToX);\n\t\t\totherToX = 0;\n\t\t}\n\t\telse if (otherToX >= base.width) {\n\t\t\tscale = (base.width - 1 - fromX) / (otherToX - fromX);\n\t\t\totherToX = base.width - 1;\n\t\t}\n\t\tvar otherToY = Math.floor(fromY - (toY - fromY) * scale);\n\n\t\tscale = 1.0;\n\t\tif (otherToY < 0) {\n\t\t\tscale = fromY / (fromY - otherToY);\n\t\t\totherToY = 0;\n\t\t}\n\t\telse if (otherToY >= base.height) {\n\t\t\tscale = (base.height - 1 - fromY) / (otherToY - fromY);\n\t\t\totherToY = base.height - 1;\n\t\t}\n\t\totherToX = Math.floor(fromX + (otherToX - fromX) * scale);\n\n\t\tresult += this.sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);\n\t\treturn result - 1.0; // -1 because we counted the middle pixel twice\n\t}\n\n\n\n\tthis.calculateModuleSizeOneWay = function (pattern, otherPattern) {\n\t\tvar moduleSizeEst1 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(pattern.X), Math.floor(pattern.Y), Math.floor(otherPattern.X), Math.floor(otherPattern.Y));\n\t\tvar moduleSizeEst2 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(otherPattern.X), Math.floor(otherPattern.Y), Math.floor(pattern.X), Math.floor(pattern.Y));\n\t\tif (isNaN(moduleSizeEst1)) {\n\t\t\treturn moduleSizeEst2 / 7.0;\n\t\t}\n\t\tif (isNaN(moduleSizeEst2)) {\n\t\t\treturn moduleSizeEst1 / 7.0;\n\t\t}\n\t\t// Average them, and divide by 7 since we've counted the width of 3 black modules,\n\t\t// and 1 white and 1 black module on either side. Ergo, divide sum by 14.\n\t\treturn (moduleSizeEst1 + moduleSizeEst2) / 14.0;\n\t}\n\n\n\tthis.calculateModuleSize = function (topLeft, topRight, bottomLeft) {\n\t\t// Take the average\n\t\treturn (this.calculateModuleSizeOneWay(topLeft, topRight) + this.calculateModuleSizeOneWay(topLeft, bottomLeft)) / 2.0;\n\t}\n\n\tthis.distance = function (pattern1, pattern2) {\n\t\tvar xDiff = pattern1.X - pattern2.X;\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\n\t}\n\tthis.computeDimension = function (topLeft, topRight, bottomLeft, moduleSize) {\n\n\t\tvar tltrCentersDimension = Math.round(this.distance(topLeft, topRight) / moduleSize);\n\t\tvar tlblCentersDimension = Math.round(this.distance(topLeft, bottomLeft) / moduleSize);\n\t\tvar dimension = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7;\n\t\tswitch (dimension & 0x03) {\n\n\t\t\t// mod 4\n\t\t\tcase 0:\n\t\t\t\tdimension++;\n\t\t\t\tbreak;\n\t\t\t// 1? do nothing\n\n\t\t\tcase 2:\n\t\t\t\tdimension--;\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthrow \"Error\";\n\t\t}\n\t\treturn dimension;\n\t}\n\n\tthis.findAlignmentInRegion = function (overallEstModuleSize, estAlignmentX, estAlignmentY, allowanceFactor) {\n\t\t// Look for an alignment pattern (3 modules in size) around where it\n\t\t// should be\n\t\tvar allowance = Math.floor(allowanceFactor * overallEstModuleSize);\n\t\tvar alignmentAreaLeftX = Math.max(0, estAlignmentX - allowance);\n\t\tvar alignmentAreaRightX = Math.min(base.width - 1, estAlignmentX + allowance);\n\t\tif (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) {\n\t\t\tthrow \"Error\";\n\t\t}\n\n\t\tvar alignmentAreaTopY = Math.max(0, estAlignmentY - allowance);\n\t\tvar alignmentAreaBottomY = Math.min(base.height - 1, estAlignmentY + allowance);\n\n\t\tvar alignmentFinder = new AlignmentPatternFinder(this.image, base, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, this.resultPointCallback);\n\t\treturn alignmentFinder.find();\n\t}\n\n\tthis.createTransform = function (topLeft, topRight, bottomLeft, alignmentPattern, dimension) {\n\t\tvar dimMinusThree = dimension - 3.5;\n\t\tvar bottomRightX;\n\t\tvar bottomRightY;\n\t\tvar sourceBottomRightX;\n\t\tvar sourceBottomRightY;\n\t\tif (alignmentPattern != null) {\n\t\t\tbottomRightX = alignmentPattern.X;\n\t\t\tbottomRightY = alignmentPattern.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0;\n\t\t}\n\t\telse {\n\t\t\t// Don't have an alignment pattern, just make up the bottom-right point\n\t\t\tbottomRightX = (topRight.X - topLeft.X) + bottomLeft.X;\n\t\t\tbottomRightY = (topRight.Y - topLeft.Y) + bottomLeft.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree;\n\t\t}\n\n\t\tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(3.5, 3.5, dimMinusThree, 3.5, sourceBottomRightX, sourceBottomRightY, 3.5, dimMinusThree, topLeft.X, topLeft.Y, topRight.X, topRight.Y, bottomRightX, bottomRightY, bottomLeft.X, bottomLeft.Y);\n\n\t\treturn transform;\n\t}\n\n\tthis.sampleGrid = function (image, transform, dimension) {\n\n\t\treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n\t}\n\n\tthis.processFinderPatternInfo = function (info) {\n\n\t\tvar topLeft = info.TopLeft;\n\t\tvar topRight = info.TopRight;\n\t\tvar bottomLeft = info.BottomLeft;\n\n\t\tvar moduleSize = this.calculateModuleSize(topLeft, topRight, bottomLeft);\n\t\tif (moduleSize < 1.0) {\n\t\t\tthrow \"Error\";\n\t\t}\n\t\tvar dimension = this.computeDimension(topLeft, topRight, bottomLeft, moduleSize);\n\t\tvar provisionalVersion = Version.getProvisionalVersionForDimension(dimension);\n\t\tvar modulesBetweenFPCenters = provisionalVersion.DimensionForVersion - 7;\n\n\t\tvar alignmentPattern = null;\n\t\t// Anything above version 1 has an alignment pattern\n\t\tif (provisionalVersion.AlignmentPatternCenters.length > 0) {\n\n\t\t\t// Guess where a \"bottom right\" finder pattern would have been\n\t\t\tvar bottomRightX = topRight.X - topLeft.X + bottomLeft.X;\n\t\t\tvar bottomRightY = topRight.Y - topLeft.Y + bottomLeft.Y;\n\n\t\t\t// Estimate that alignment pattern is closer by 3 modules\n\t\t\t// from \"bottom right\" to known top left location\n\t\t\tvar correctionToTopLeft = 1.0 - 3.0 / modulesBetweenFPCenters;\n\t\t\tvar estAlignmentX = Math.floor(topLeft.X + correctionToTopLeft * (bottomRightX - topLeft.X));\n\t\t\tvar estAlignmentY = Math.floor(topLeft.Y + correctionToTopLeft * (bottomRightY - topLeft.Y));\n\n\t\t\t// Kind of arbitrary -- expand search radius before giving up\n\t\t\tfor (var i = 4; i <= 16; i <<= 1) {\n\t\t\t\t//try\n\t\t\t\t//{\n\t\t\t\talignmentPattern = this.findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, i);\n\t\t\t\tbreak;\n\t\t\t\t//}\n\t\t\t\t//catch (re)\n\t\t\t\t//{\n\t\t\t\t// try next round\n\t\t\t\t//}\n\t\t\t}\n\t\t\t// If we didn't find alignment pattern... well try anyway without it\n\t\t}\n\n\t\tvar transform = this.createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension);\n\n\t\tvar bits = this.sampleGrid(this.image, transform, dimension);\n\n\t\tvar points;\n\t\tif (alignmentPattern == null) {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight);\n\t\t}else {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight, alignmentPattern);\n\t\t}\n\t\treturn new DetectorResult(bits, points);\n\t}\n\n\n\n\tthis.detect = function () {\n\t\tvar info = new FinderPatternFinder(base).findFinderPattern(this.image);\n\n\t\treturn this.processFinderPatternInfo(info);\n\t}\n}\n\nmodule.exports = Detector;\n","var addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nfunction GF256Poly(field, coefficients) {\r\n\tif (coefficients == null || coefficients.length == 0) {\r\n\t\tthrow \"System.ArgumentException\";\r\n\t}\r\n\tthis.field = field;\r\n\tvar coefficientsLength = coefficients.length;\r\n\tif (coefficientsLength > 1 && coefficients[0] == 0) {\r\n\t\t// Leading term must be non-zero for anything except the constant polynomial \"0\"\r\n\t\tvar firstNonZero = 1;\r\n\t\twhile (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) {\r\n\t\t\tfirstNonZero++;\r\n\t\t}\r\n\t\tif (firstNonZero == coefficientsLength) {\r\n\t\t\tthis.coefficients = field.Zero.coefficients;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.coefficients = new Array(coefficientsLength - firstNonZero);\r\n\t\t\tfor (var i = 0; i < this.coefficients.length; i++)this.coefficients[i] = 0;\r\n\t\t\t//Array.Copy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);\r\n\t\t\tfor (var ci = 0; ci < this.coefficients.length; ci++)this.coefficients[ci] = coefficients[firstNonZero + ci];\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tthis.coefficients = coefficients;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.coefficients[0] == 0;\r\n\t});\r\n\tthis.__defineGetter__(\"Degree\", function () {\r\n\t\treturn this.coefficients.length - 1;\r\n\t});\r\n\tthis.__defineGetter__(\"Coefficients\", function () {\r\n\t\treturn this.coefficients;\r\n\t});\r\n\r\n\tthis.getCoefficient = function (degree) {\r\n\t\treturn this.coefficients[this.coefficients.length - 1 - degree];\r\n\t}\r\n\r\n\tthis.evaluateAt = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\t// Just return the x^0 coefficient\r\n\t\t\treturn this.getCoefficient(0);\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tif (a == 1) {\r\n\t\t\t// Just the sum of the coefficients\r\n\t\t\tvar result = 0;\r\n\t\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\t\tresult = addOrSubtract(result, this.coefficients[i]);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\tvar result2 = this.coefficients[0];\r\n\t\tfor (var i = 1; i < size; i++) {\r\n\t\t\tresult2 = addOrSubtract(this.field.multiply(a, result2), this.coefficients[i]);\r\n\t\t}\r\n\t\treturn result2;\r\n\t}\r\n\r\n\tthis.addOrSubtract = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero) {\r\n\t\t\treturn other;\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar smallerCoefficients = this.coefficients;\r\n\t\tvar largerCoefficients = other.coefficients;\r\n\t\tif (smallerCoefficients.length > largerCoefficients.length) {\r\n\t\t\tvar temp = smallerCoefficients;\r\n\t\t\tsmallerCoefficients = largerCoefficients;\r\n\t\t\tlargerCoefficients = temp;\r\n\t\t}\r\n\t\tvar sumDiff = new Array(largerCoefficients.length);\r\n\t\tvar lengthDiff = largerCoefficients.length - smallerCoefficients.length;\r\n\t\t// Copy high-order terms only found in higher-degree polynomial's coefficients\r\n\t\t//Array.Copy(largerCoefficients, 0, sumDiff, 0, lengthDiff);\r\n\t\tfor (var ci = 0; ci < lengthDiff; ci++)sumDiff[ci] = largerCoefficients[ci];\r\n\r\n\t\tfor (var i = lengthDiff; i < largerCoefficients.length; i++) {\r\n\t\t\tsumDiff[i] = addOrSubtract(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\r\n\t\t}\r\n\r\n\t\treturn new GF256Poly(field, sumDiff);\r\n\t}\r\n\tthis.multiply1 = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero || other.Zero) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar aCoefficients = this.coefficients;\r\n\t\tvar aLength = aCoefficients.length;\r\n\t\tvar bCoefficients = other.coefficients;\r\n\t\tvar bLength = bCoefficients.length;\r\n\t\tvar product = new Array(aLength + bLength - 1);\r\n\t\tfor (var i = 0; i < aLength; i++) {\r\n\t\t\tvar aCoeff = aCoefficients[i];\r\n\t\t\tfor (var j = 0; j < bLength; j++) {\r\n\t\t\t\tproduct[i + j] = addOrSubtract(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiply2 = function (scalar) {\r\n\t\tif (scalar == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tif (scalar == 1) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size);\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], scalar);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiplyByMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size + degree);\r\n\t\tfor (var i = 0; i < product.length; i++)product[i] = 0;\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], coefficient);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.divide = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\tthrow \"Divide by 0\";\r\n\t\t}\r\n\r\n\t\tvar quotient = this.field.Zero;\r\n\t\tvar remainder = this;\r\n\r\n\t\tvar denominatorLeadingTerm = other.getCoefficient(other.Degree);\r\n\t\tvar inverseDenominatorLeadingTerm = this.field.inverse(denominatorLeadingTerm);\r\n\r\n\t\twhile (remainder.Degree >= other.Degree && !remainder.Zero) {\r\n\t\t\tvar degreeDifference = remainder.Degree - other.Degree;\r\n\t\t\tvar scale = this.field.multiply(remainder.getCoefficient(remainder.Degree), inverseDenominatorLeadingTerm);\r\n\t\t\tvar term = other.multiplyByMonomial(degreeDifference, scale);\r\n\t\t\tvar iterationQuotient = this.field.buildMonomial(degreeDifference, scale);\r\n\t\t\tquotient = quotient.addOrSubtract(iterationQuotient);\r\n\t\t\tremainder = remainder.addOrSubtract(term);\r\n\t\t}\r\n\r\n\t\treturn new Array(quotient, remainder);\r\n\t}\r\n}\r\n\r\nmodule.exports = GF256Poly;","var GF256Poly = require('./GF256Poly')\r\n\r\nfunction GF256(primitive) {\r\n\tthis.expTable = new Array(256);\r\n\tthis.logTable = new Array(256);\r\n\tvar x = 1;\r\n\tfor (var i = 0; i < 256; i++) {\r\n\t\tthis.expTable[i] = x;\r\n\t\tx <<= 1; // x = x * 2; we're assuming the generator alpha is 2\r\n\t\tif (x >= 0x100) {\r\n\t\t\tx ^= primitive;\r\n\t\t}\r\n\t}\r\n\tfor (var i = 0; i < 255; i++) {\r\n\t\tthis.logTable[this.expTable[i]] = i;\r\n\t}\r\n\t// logTable[0] == 0 but this should never be used\r\n\tvar at0 = new Array(1); at0[0] = 0;\r\n\tthis.zero = new GF256Poly(this, new Array(at0));\r\n\tvar at1 = new Array(1); at1[0] = 1;\r\n\tthis.one = new GF256Poly(this, new Array(at1));\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.zero;\r\n\t});\r\n\tthis.__defineGetter__(\"One\", function () {\r\n\t\treturn this.one;\r\n\t});\r\n\tthis.buildMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.zero;\r\n\t\t}\r\n\t\tvar coefficients = new Array(degree + 1);\r\n\t\tfor (var i = 0; i < coefficients.length; i++)coefficients[i] = 0;\r\n\t\tcoefficients[0] = coefficient;\r\n\t\treturn new GF256Poly(this, coefficients);\r\n\t}\r\n\tthis.exp = function (a) {\r\n\t\treturn this.expTable[a];\r\n\t}\r\n\tthis.log = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\treturn this.logTable[a];\r\n\t}\r\n\tthis.inverse = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArithmeticException\";\r\n\t\t}\r\n\t\treturn this.expTable[255 - this.logTable[a]];\r\n\t}\r\n\tthis.multiply = function (a, b) {\r\n\t\tif (a == 0 || b == 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (a == 1) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\t\tif (b == 1) {\r\n\t\t\treturn a;\r\n\t\t}\r\n\t\treturn this.expTable[(this.logTable[a] + this.logTable[b]) % 255];\r\n\t}\r\n}\r\n\r\nGF256.QR_CODE_FIELD = new GF256(0x011D);\r\nGF256.DATA_MATRIX_FIELD = new GF256(0x012D);\r\n\r\nGF256.addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nmodule.exports = GF256;","\nvar utils = require('../utils');\nvar URShift = utils.URShift;\n\nvar DataMask = {};\n\nDataMask.forReference = function (reference) {\n\tif (reference < 0 || reference > 7) {\n\t\tthrow \"System.ArgumentException\";\n\t}\n\treturn DataMask.DATA_MASKS[reference];\n}\n\nfunction DataMask000() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((i + j) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask001() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i & 0x01) == 0;\n\t}\n}\n\nfunction DataMask010() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn j % 3 == 0;\n\t}\n}\n\nfunction DataMask011() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i + j) % 3 == 0;\n\t}\n}\n\nfunction DataMask100() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (((URShift(i, 1)) + (j / 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask101() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (temp & 0x01) + (temp % 3) == 0;\n\t}\n}\n\nfunction DataMask110() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (((temp & 0x01) + (temp % 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask111() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((((i + j) & 0x01) + ((i * j) % 3)) & 0x01) == 0;\n\t}\n}\n\nDataMask.DATA_MASKS = new Array(new DataMask000(), new DataMask001(), new DataMask010(), new DataMask011(), new DataMask100(), new DataMask101(), new DataMask110(), new DataMask111());\n\nmodule.exports = DataMask;","var DataMask = require('./DataMask')\r\nvar FormatInformation = require('./FormatInformation')\r\nvar Version = require('./Version')\r\n\r\nmodule.exports = function BitMatrixParser(bitMatrix) {\r\n\tvar dimension = bitMatrix.Dimension;\r\n\tif (dimension < 21 || (dimension & 0x03) != 1) {\r\n\t\tthrow \"Error BitMatrixParser\";\r\n\t}\r\n\tthis.bitMatrix = bitMatrix;\r\n\tthis.parsedVersion = null;\r\n\tthis.parsedFormatInfo = null;\r\n\r\n\tthis.copyBit = function (i, j, versionBits) {\r\n\t\treturn this.bitMatrix.get_Renamed(i, j) ? (versionBits << 1) | 0x1 : versionBits << 1;\r\n\t}\r\n\r\n\tthis.readFormatInformation = function () {\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Read top-left format info bits\r\n\t\tvar formatInfoBits = 0;\r\n\t\tfor (var i = 0; i < 6; i++) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tformatInfoBits = this.copyBit(7, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 7, formatInfoBits);\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try the top-right/bottom-left pattern\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tformatInfoBits = 0;\r\n\t\tvar iMin = dimension - 8;\r\n\t\tfor (var i = dimension - 1; i >= iMin; i--) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\tfor (var j = dimension - 7; j < dimension; j++) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\t\tthrow \"Error readFormatInformation\";\r\n\t}\r\n\tthis.readVersion = function () {\r\n\r\n\t\tif (this.parsedVersion != null) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\r\n\t\tvar provisionalVersion = (dimension - 17) >> 2;\r\n\t\tif (provisionalVersion <= 6) {\r\n\t\t\treturn Version.getVersionForNumber(provisionalVersion);\r\n\t\t}\r\n\r\n\t\t// Read top-right version info: 3 wide by 6 tall\r\n\t\tvar versionBits = 0;\r\n\t\tvar ijMin = dimension - 11;\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tfor (var i = dimension - 9; i >= ijMin; i--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try bottom left: 6 wide by 3 tall\r\n\t\tversionBits = 0;\r\n\t\tfor (var i = 5; i >= 0; i--) {\r\n\t\t\tfor (var j = dimension - 9; j >= ijMin; j--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\t\tthrow \"Error readVersion\";\r\n\t}\r\n\tthis.readCodewords = function () {\r\n\r\n\t\tvar formatInfo = this.readFormatInformation();\r\n\t\tvar version = this.readVersion();\r\n\r\n\t\t// Get the data mask for the format used in this QR Code. This will exclude\r\n\t\t// some bits from reading as we wind through the bit matrix.\r\n\t\tvar dataMask = DataMask.forReference(formatInfo.DataMask);\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tdataMask.unmaskBitMatrix(this.bitMatrix, dimension);\r\n\r\n\t\tvar functionPattern = version.buildFunctionPattern();\r\n\r\n\t\tvar readingUp = true;\r\n\t\tvar result = new Array(version.TotalCodewords);\r\n\t\tvar resultOffset = 0;\r\n\t\tvar currentByte = 0;\r\n\t\tvar bitsRead = 0;\r\n\t\t// Read columns in pairs, from right to left\r\n\t\tfor (var j = dimension - 1; j > 0; j -= 2) {\r\n\t\t\tif (j == 6) {\r\n\t\t\t\t// Skip whole column with vertical alignment pattern;\r\n\t\t\t\t// saves time and makes the other code proceed more cleanly\r\n\t\t\t\tj--;\r\n\t\t\t}\r\n\t\t\t// Read alternatingly from bottom to top then top to bottom\r\n\t\t\tfor (var count = 0; count < dimension; count++) {\r\n\t\t\t\tvar i = readingUp ? dimension - 1 - count : count;\r\n\t\t\t\tfor (var col = 0; col < 2; col++) {\r\n\t\t\t\t\t// Ignore bits covered by the function pattern\r\n\t\t\t\t\tif (!functionPattern.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t// Read a bit\r\n\t\t\t\t\t\tbitsRead++;\r\n\t\t\t\t\t\tcurrentByte <<= 1;\r\n\t\t\t\t\t\tif (this.bitMatrix.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t\tcurrentByte |= 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// If we've made a whole byte, save it off\r\n\t\t\t\t\t\tif (bitsRead == 8) {\r\n\t\t\t\t\t\t\tresult[resultOffset++] = currentByte;\r\n\t\t\t\t\t\t\tbitsRead = 0;\r\n\t\t\t\t\t\t\tcurrentByte = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treadingUp ^= true; // readingUp = !readingUp; // switch directions\r\n\t\t}\r\n\t\tif (resultOffset != version.TotalCodewords) {\r\n\t\t\tthrow \"Error readCodewords\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\n/*\r\n*\r\n* Copyright 2007 ZXing authors\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n*/\r\n\r\n\r\nfunction DataBlock(numDataCodewords, codewords) {\r\n\tthis.numDataCodewords = numDataCodewords;\r\n\tthis.codewords = codewords;\r\n\r\n\tthis.__defineGetter__(\"NumDataCodewords\", function () {\r\n\t\treturn this.numDataCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"Codewords\", function () {\r\n\t\treturn this.codewords;\r\n\t});\r\n}\r\n\r\nDataBlock.getDataBlocks = function (rawCodewords, version, ecLevel) {\r\n\r\n\tif (rawCodewords.length != version.TotalCodewords) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\r\n\t// Figure out the number and size of data blocks used by this version and\r\n\t// error correction level\r\n\tvar ecBlocks = version.getECBlocksForLevel(ecLevel);\r\n\r\n\t// First count the total number of data blocks\r\n\tvar totalBlocks = 0;\r\n\tvar ecBlockArray = ecBlocks.getECBlocks();\r\n\tfor (var i = 0; i < ecBlockArray.length; i++) {\r\n\t\ttotalBlocks += ecBlockArray[i].Count;\r\n\t}\r\n\r\n\t// Now establish DataBlocks of the appropriate size and number of data codewords\r\n\tvar result = new Array(totalBlocks);\r\n\tvar numResultBlocks = 0;\r\n\tfor (var j = 0; j < ecBlockArray.length; j++) {\r\n\t\tvar ecBlock = ecBlockArray[j];\r\n\t\tfor (var i = 0; i < ecBlock.Count; i++) {\r\n\t\t\tvar numDataCodewords = ecBlock.DataCodewords;\r\n\t\t\tvar numBlockCodewords = ecBlocks.ECCodewordsPerBlock + numDataCodewords;\r\n\t\t\tresult[numResultBlocks++] = new DataBlock(numDataCodewords, new Array(numBlockCodewords));\r\n\t\t}\r\n\t}\r\n\r\n\t// All blocks have the same amount of data, except that the last n\r\n\t// (where n may be 0) have 1 more byte. Figure out where these start.\r\n\tvar shorterBlocksTotalCodewords = result[0].codewords.length;\r\n\tvar longerBlocksStartAt = result.length - 1;\r\n\twhile (longerBlocksStartAt >= 0) {\r\n\t\tvar numCodewords = result[longerBlocksStartAt].codewords.length;\r\n\t\tif (numCodewords == shorterBlocksTotalCodewords) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tlongerBlocksStartAt--;\r\n\t}\r\n\tlongerBlocksStartAt++;\r\n\r\n\tvar shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks.ECCodewordsPerBlock;\r\n\t// The last elements of result may be 1 element longer;\r\n\t// first fill out as many elements as all of them have\r\n\tvar rawCodewordsOffset = 0;\r\n\tfor (var i = 0; i < shorterBlocksNumDataCodewords; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tresult[j].codewords[i] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\t// Fill out the last data block in the longer ones\r\n\tfor (var j = longerBlocksStartAt; j < numResultBlocks; j++) {\r\n\t\tresult[j].codewords[shorterBlocksNumDataCodewords] = rawCodewords[rawCodewordsOffset++];\r\n\t}\r\n\t// Now add in error correction blocks\r\n\tvar max = result[0].codewords.length;\r\n\tfor (var i = shorterBlocksNumDataCodewords; i < max; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tvar iOffset = j < longerBlocksStartAt ? i : i + 1;\r\n\t\t\tresult[j].codewords[iOffset] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nmodule.exports = DataBlock;","var sizeOfDataLengthInfo = [\r\n\t[10, 9, 8, 8], \r\n\t[12, 11, 16, 10], \r\n\t[14, 13, 16, 12]\r\n];\r\n\r\nfunction QRCodeDataBlockReader(blocks, version, numErrorCorrectionCode) {\r\n\tthis.blockPointer = 0;\r\n\tthis.bitPointer = 7;\r\n\tthis.dataLength = 0;\r\n\tthis.blocks = blocks;\r\n\tthis.numErrorCorrectionCode = numErrorCorrectionCode;\r\n\tif (version <= 9)\r\n\t\tthis.dataLengthMode = 0;\r\n\telse if (version >= 10 && version <= 26)\r\n\t\tthis.dataLengthMode = 1;\r\n\telse if (version >= 27 && version <= 40)\r\n\t\tthis.dataLengthMode = 2;\r\n\r\n\tthis.getNextBits = function (numBits) {\r\n\t\tvar bits = 0;\r\n\t\tif (numBits < this.bitPointer + 1) {\r\n\t\t\t// next word fits into current data block\r\n\t\t\tvar mask = 0;\r\n\t\t\tfor (var i = 0; i < numBits; i++) {\r\n\t\t\t\tmask += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask <<= (this.bitPointer - numBits + 1);\r\n\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask) >> (this.bitPointer - numBits + 1);\r\n\t\t\tthis.bitPointer -= numBits;\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 8) {\r\n\t\t\t// next word crosses 2 data blocks\r\n\t\t\tvar mask1 = 0;\r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\t\t\tbits += ((this.blocks[this.blockPointer]) >> (8 - (numBits - (this.bitPointer + 1))));\r\n\r\n\t\t\tthis.bitPointer = this.bitPointer - numBits % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 16) {\r\n\t\t\t// next word crosses 3 data blocks\r\n\t\t\tvar mask1 = 0; // mask of first block\r\n\t\t\tvar mask3 = 0; // mask of 3rd block\r\n\t\t\t//bitPointer + 1 : number of bits of the 1st block\r\n\t\t\t//8 : number of the 2nd block (note that use already 8bits because next word uses 3 data blocks)\r\n\t\t\t//numBits - (bitPointer + 1 + 8) : number of bits of the 3rd block \r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tvar bitsFirstBlock = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tvar bitsSecondBlock = this.blocks[this.blockPointer] << (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tfor (var i = 0; i < numBits - (this.bitPointer + 1 + 8); i++) {\r\n\t\t\t\tmask3 += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask3 <<= 8 - (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tvar bitsThirdBlock = (this.blocks[this.blockPointer] & mask3) >> (8 - (numBits - (this.bitPointer + 1 + 8)));\r\n\r\n\t\t\tbits = bitsFirstBlock + bitsSecondBlock + bitsThirdBlock;\r\n\t\t\tthis.bitPointer = this.bitPointer - (numBits - 8) % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\tthis.NextMode = function () {\r\n\t\tif ((this.blockPointer > this.blocks.length - this.numErrorCorrectionCode - 2))\r\n\t\t\treturn 0;\r\n\t\telse\r\n\t\t\treturn this.getNextBits(4);\r\n\t}\r\n\tthis.getDataLength = function (modeIndicator) {\r\n\t\tvar index = 0;\r\n\t\twhile (true) {\r\n\t\t\tif ((modeIndicator >> index) == 1)\r\n\t\t\t\tbreak;\r\n\t\t\tindex++;\r\n\t\t}\r\n\r\n\t\treturn this.getNextBits(sizeOfDataLengthInfo[this.dataLengthMode][index]);\r\n\t}\r\n\tthis.getRomanAndFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tvar tableRomanAndFigure = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '$', '%', '*', '+', '-', '.', '/', ':');\r\n\t\tdo {\r\n\t\t\tif (length > 1) {\r\n\t\t\t\tintData = this.getNextBits(11);\r\n\t\t\t\tvar firstLetter = Math.floor(intData / 45);\r\n\t\t\t\tvar secondLetter = intData % 45;\r\n\t\t\t\tstrData += tableRomanAndFigure[firstLetter];\r\n\t\t\t\tstrData += tableRomanAndFigure[secondLetter];\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(6);\r\n\t\t\t\tstrData += tableRomanAndFigure[intData];\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.getFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tdo {\r\n\t\t\tif (length >= 3) {\r\n\t\t\t\tintData = this.getNextBits(10);\r\n\t\t\t\tif (intData < 100)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 3;\r\n\t\t\t}\r\n\t\t\telse if (length == 2) {\r\n\t\t\t\tintData = this.getNextBits(7);\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(4);\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t\tstrData += intData;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.get8bitByteArray = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar output = new Array();\r\n\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(8);\r\n\t\t\toutput.push(intData);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\t\treturn output;\r\n\t}\r\n\tthis.getKanjiString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar unicodeString = \"\";\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(13);\r\n\t\t\tvar lowerByte = intData % 0xC0;\r\n\t\t\tvar higherByte = intData / 0xC0;\r\n\r\n\t\t\tvar tempWord = (higherByte << 8) + lowerByte;\r\n\t\t\tvar shiftjisWord = 0;\r\n\t\t\tif (tempWord + 0x8140 <= 0x9FFC) {\r\n\t\t\t\t// between 8140 - 9FFC on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0x8140;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// between E040 - EBBF on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0xC140;\r\n\t\t\t}\r\n\r\n\t\t\t//var tempByte = new Array(0,0);\r\n\t\t\t//tempByte[0] = (sbyte) (shiftjisWord >> 8);\r\n\t\t\t//tempByte[1] = (sbyte) (shiftjisWord & 0xFF);\r\n\t\t\t//unicodeString += new String(SystemUtils.ToCharArray(SystemUtils.ToByteArray(tempByte)));\r\n\t\t\tunicodeString += String.fromCharCode(shiftjisWord);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\r\n\t\treturn unicodeString;\r\n\t}\r\n\r\n\tthis.parseECIValue = function () {\r\n\t\tvar intData = 0;\r\n\t\tvar firstByte = this.getNextBits(8);\r\n\t\tif ((firstByte & 0x80) == 0) {\r\n\t\t\tintData = firstByte & 0x7F;\r\n\t\t}\r\n\t\tif ((firstByte & 0xC0) == 0x80) {\r\n\t\t\t// two bytes\r\n\t\t\tvar secondByte = this.getNextBits(8);\r\n\t\t\tintData = ((firstByte & 0x3F) << 8) | secondByte;\r\n\t\t}\r\n\t\tif ((firstByte & 0xE0) == 0xC0) {\r\n\t\t\t// three bytes\r\n\t\t\tvar secondThirdBytes = this.getNextBits(8);;\r\n\t\t\tintData = ((firstByte & 0x1F) << 16) | secondThirdBytes;\r\n\t\t}\r\n\t\treturn intData;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"DataByte\", function () {\r\n\t\tvar output = new Array();\r\n\t\tvar MODE_NUMBER = 1;\r\n\t\tvar MODE_ROMAN_AND_NUMBER = 2;\r\n\t\tvar MODE_8BIT_BYTE = 4;\r\n\t\tvar MODE_ECI = 7;\r\n\t\tvar MODE_KANJI = 8;\r\n\t\tdo {\r\n\t\t\tvar mode = this.NextMode();\r\n\t\t\t//canvas.println(\"mode: \" + mode);\r\n\t\t\tif (mode == 0) {\r\n\t\t\t\tif (output.length > 0)\r\n\t\t\t\t\tbreak;\r\n\t\t\t\telse\r\n\t\t\t\t\tthrow \"Empty data block\";\r\n\t\t\t}\r\n\t\t\tif (mode != MODE_NUMBER && mode != MODE_ROMAN_AND_NUMBER && mode != MODE_8BIT_BYTE && mode != MODE_KANJI && mode != MODE_ECI) {\r\n\t\t\t\tthrow \"Invalid mode: \" + mode + \" in (block:\" + this.blockPointer + \" bit:\" + this.bitPointer + \")\";\r\n\t\t\t}\r\n\r\n\t\t\tif (mode == MODE_ECI) {\r\n\t\t\t\tvar temp_sbyteArray3 = this.parseECIValue();\r\n\t\t\t\t//output.push(temp_sbyteArray3);\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tvar dataLength = this.getDataLength(mode);\r\n\t\t\t\tif (dataLength < 1)\r\n\t\t\t\t\tthrow \"Invalid data length: \" + dataLength;\r\n\t\t\t\tswitch (mode) {\r\n\r\n\t\t\t\t\tcase MODE_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_ROMAN_AND_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getRomanAndFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_8BIT_BYTE:\r\n\t\t\t\t\t\tvar temp_sbyteArray3 = this.get8bitByteArray(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_sbyteArray3);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_KANJI:\r\n\t\t\t\t\t\tvar temp_str = this.getKanjiString(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_str);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (true);\r\n\t\treturn output;\r\n\t});\r\n}\r\n\r\nmodule.exports = QRCodeDataBlockReader;\r\n","var GF256 = require('./GF256')\r\nvar BitMatrixParser = require('./BitMatrixParser')\r\nvar DataBlock = require('./DataBlock')\r\nvar QRCodeDataBlockReader = require('./QRCodeDataBlockReader')\r\nvar ReedSolomonDecoder = require('./ReedSolomonDecoder')\r\n\r\nvar Decoder = {};\r\nDecoder.rsDecoder = new ReedSolomonDecoder(GF256.QR_CODE_FIELD);\r\n\r\nDecoder.correctErrors = function (codewordBytes, numDataCodewords) {\r\n\tvar numCodewords = codewordBytes.length;\r\n\t// First read into an array of ints\r\n\tvar codewordsInts = new Array(numCodewords);\r\n\tfor (var i = 0; i < numCodewords; i++) {\r\n\t\tcodewordsInts[i] = codewordBytes[i] & 0xFF;\r\n\t}\r\n\tvar numECCodewords = codewordBytes.length - numDataCodewords;\r\n\ttry {\r\n\t\tDecoder.rsDecoder.decode(codewordsInts, numECCodewords);\r\n\t\t//var corrector = new ReedSolomon(codewordsInts, numECCodewords);\r\n\t\t//corrector.correct();\r\n\t}\r\n\tcatch (rse) {\r\n\t\tthrow rse;\r\n\t}\r\n\t// Copy back into array of bytes -- only need to worry about the bytes that were data\r\n\t// We don't care about errors in the error-correction codewords\r\n\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\tcodewordBytes[i] = codewordsInts[i];\r\n\t}\r\n}\r\n\r\nDecoder.decode = function (bits) {\r\n\tvar parser = new BitMatrixParser(bits);\r\n\tvar version = parser.readVersion(); //版本信息\r\n\tvar ecLevel = parser.readFormatInformation().ErrorCorrectionLevel; //格式信息\r\n\r\n\t// Read codewords\r\n\tvar codewords = parser.readCodewords();\r\n\r\n\t// Separate into data blocks\r\n\tvar dataBlocks = DataBlock.getDataBlocks(codewords, version, ecLevel);\r\n\r\n\t// Count total number of data bytes\r\n\tvar totalBytes = 0;\r\n\tfor (var i = 0; i < dataBlocks.length; i++) {\r\n\t\ttotalBytes += dataBlocks[i].NumDataCodewords;\r\n\t}\r\n\tvar resultBytes = new Array(totalBytes);\r\n\tvar resultOffset = 0;\r\n\r\n\t// Error-correct and copy data blocks together into a stream of bytes\r\n\tfor (var j = 0; j < dataBlocks.length; j++) {\r\n\t\tvar dataBlock = dataBlocks[j];\r\n\t\tvar codewordBytes = dataBlock.Codewords;\r\n\t\tvar numDataCodewords = dataBlock.NumDataCodewords;\r\n\t\tDecoder.correctErrors(codewordBytes, numDataCodewords);\r\n\t\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\t\tresultBytes[resultOffset++] = codewordBytes[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// Decode the contents of that stream of bytes\r\n\tvar reader = new QRCodeDataBlockReader(resultBytes, version.VersionNumber, ecLevel.Bits);\r\n\treturn reader;\r\n\t//return DecodedBitStreamParser.decode(resultBytes, version, ecLevel);\r\n}\r\n\r\nmodule.exports = Decoder;","var GF256 = require('./GF256')\r\nvar GF256Poly = require('./GF256Poly')\r\n\r\nmodule.exports = function ReedSolomonDecoder(field) {\r\n\tthis.field = field;\r\n\tthis.decode = function (received, twoS) {\r\n\t\tvar poly = new GF256Poly(this.field, received);\r\n\t\tvar syndromeCoefficients = new Array(twoS);\r\n\t\tfor (var i = 0; i < syndromeCoefficients.length; i++)syndromeCoefficients[i] = 0;\r\n\t\tvar dataMatrix = false;//this.field.Equals(GF256.DATA_MATRIX_FIELD);\r\n\t\tvar noError = true;\r\n\t\tfor (var i = 0; i < twoS; i++) {\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tvar evalu = poly.evaluateAt(this.field.exp(dataMatrix ? i + 1 : i));\r\n\t\t\tsyndromeCoefficients[syndromeCoefficients.length - 1 - i] = evalu;\r\n\t\t\tif (evalu != 0) {\r\n\t\t\t\tnoError = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (noError) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar syndrome = new GF256Poly(this.field, syndromeCoefficients);\r\n\t\tvar sigmaOmega = this.runEuclideanAlgorithm(this.field.buildMonomial(twoS, 1), syndrome, twoS);\r\n\t\tvar sigma = sigmaOmega[0];\r\n\t\tvar omega = sigmaOmega[1];\r\n\t\tvar errorLocations = this.findErrorLocations(sigma);\r\n\t\tvar errorMagnitudes = this.findErrorMagnitudes(omega, errorLocations, dataMatrix);\r\n\t\tfor (var i = 0; i < errorLocations.length; i++) {\r\n\t\t\tvar position = received.length - 1 - this.field.log(errorLocations[i]);\r\n\t\t\tif (position < 0) {\r\n\t\t\t\tthrow \"ReedSolomonException Bad error location\";\r\n\t\t\t}\r\n\t\t\treceived[position] = GF256.addOrSubtract(received[position], errorMagnitudes[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.runEuclideanAlgorithm = function (a, b, R) {\r\n\t\t// Assume a's degree is >= b's\r\n\t\tif (a.Degree < b.Degree) {\r\n\t\t\tvar temp = a;\r\n\t\t\ta = b;\r\n\t\t\tb = temp;\r\n\t\t}\r\n\r\n\t\tvar rLast = a;\r\n\t\tvar r = b;\r\n\t\tvar sLast = this.field.One;\r\n\t\tvar s = this.field.Zero;\r\n\t\tvar tLast = this.field.Zero;\r\n\t\tvar t = this.field.One;\r\n\r\n\t\t// Run Euclidean algorithm until r's degree is less than R/2\r\n\t\twhile (r.Degree >= Math.floor(R / 2)) {\r\n\t\t\tvar rLastLast = rLast;\r\n\t\t\tvar sLastLast = sLast;\r\n\t\t\tvar tLastLast = tLast;\r\n\t\t\trLast = r;\r\n\t\t\tsLast = s;\r\n\t\t\ttLast = t;\r\n\r\n\t\t\t// Divide rLastLast by rLast, with quotient in q and remainder in r\r\n\t\t\tif (rLast.Zero) {\r\n\t\t\t\t// Oops, Euclidean algorithm already terminated?\r\n\t\t\t\tthrow \"r_{i-1} was zero\";\r\n\t\t\t}\r\n\t\t\tr = rLastLast;\r\n\t\t\tvar q = this.field.Zero;\r\n\t\t\tvar denominatorLeadingTerm = rLast.getCoefficient(rLast.Degree);\r\n\t\t\tvar dltInverse = this.field.inverse(denominatorLeadingTerm);\r\n\t\t\twhile (r.Degree >= rLast.Degree && !r.Zero) {\r\n\t\t\t\tvar degreeDiff = r.Degree - rLast.Degree;\r\n\t\t\t\tvar scale = this.field.multiply(r.getCoefficient(r.Degree), dltInverse);\r\n\t\t\t\tq = q.addOrSubtract(this.field.buildMonomial(degreeDiff, scale));\r\n\t\t\t\tr = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\r\n\t\t\t\t//r.EXE();\r\n\t\t\t}\r\n\r\n\t\t\ts = q.multiply1(sLast).addOrSubtract(sLastLast);\r\n\t\t\tt = q.multiply1(tLast).addOrSubtract(tLastLast);\r\n\t\t}\r\n\r\n\t\tvar sigmaTildeAtZero = t.getCoefficient(0);\r\n\t\tif (sigmaTildeAtZero == 0) {\r\n\t\t\tthrow \"ReedSolomonException sigmaTilde(0) was zero\";\r\n\t\t}\r\n\r\n\t\tvar inverse = this.field.inverse(sigmaTildeAtZero);\r\n\t\tvar sigma = t.multiply2(inverse);\r\n\t\tvar omega = r.multiply2(inverse);\r\n\t\treturn new Array(sigma, omega);\r\n\t}\r\n\tthis.findErrorLocations = function (errorLocator) {\r\n\t\t// This is a direct application of Chien's search\r\n\t\tvar numErrors = errorLocator.Degree;\r\n\t\tif (numErrors == 1) {\r\n\t\t\t// shortcut\r\n\t\t\treturn new Array(errorLocator.getCoefficient(1));\r\n\t\t}\r\n\t\tvar result = new Array(numErrors);\r\n\t\tvar e = 0;\r\n\t\tfor (var i = 1; i < 256 && e < numErrors; i++) {\r\n\t\t\tif (errorLocator.evaluateAt(i) == 0) {\r\n\t\t\t\tresult[e] = this.field.inverse(i);\r\n\t\t\t\te++;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (e != numErrors) {\r\n\t\t\tthrow \"Error locator degree does not match number of roots\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\tthis.findErrorMagnitudes = function (errorEvaluator, errorLocations, dataMatrix) {\r\n\t\t// This is directly applying Forney's Formula\r\n\t\tvar s = errorLocations.length;\r\n\t\tvar result = new Array(s);\r\n\t\tfor (var i = 0; i < s; i++) {\r\n\t\t\tvar xiInverse = this.field.inverse(errorLocations[i]);\r\n\t\t\tvar denominator = 1;\r\n\t\t\tfor (var j = 0; j < s; j++) {\r\n\t\t\t\tif (i != j) {\r\n\t\t\t\t\tdenominator = this.field.multiply(denominator, GF256.addOrSubtract(1, this.field.multiply(errorLocations[j], xiInverse)));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresult[i] = this.field.multiply(errorEvaluator.evaluateAt(xiInverse), this.field.inverse(denominator));\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tif (dataMatrix) {\r\n\t\t\t\tresult[i] = this.field.multiply(result[i], xiInverse);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","var Detector = require('./lib/Detector');\nvar Decoder = require('./lib/Decoder');\nvar debug = false;\n\n\n/**\n * 返回获取指定位置的灰度的函数\n * @param {ImageData} data \n * @param {Object} base 一个有width,height信息\n */\nvar Pixel = function (data,base) {\n\treturn function(x,y){\n\t\tif (base.width < x || base.height < y) {\n\t\t\tthrow \"point error\";\n\t\t}\n\t\tvar point = (x * 4) + (y * base.width * 4)\n\t\treturn (data[point] * 33.33 + data[point + 1] * 33.33 + data[point + 2] * 33.33) / 100;\n\t}\n}\n\nvar binarize = function(data,base,th){\n\tvar ret = new Array(base.width * base.height);\n\tvar getPixel = Pixel(data,base); //\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray <= th ? true : false;\n }\n }\n return ret;\n}\n\nvar grayscale = function(data,base) {\n var buff = new ArrayBuffer(base.width * base.height);\n var ret = new Uint8Array(buff);\n //var ret = new Array(base.width*base.height);\n\tvar getPixel = Pixel(data,base);\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray;\n }\n }\n return ret;\n}\n\nvar getMiddleBrightnessPerArea = function (image,base) {\n var numSqrtArea = 4;\n //obtain middle brightness((min + max) / 2) per area\n var areaWidth = Math.floor(base.width / numSqrtArea);\n var areaHeight = Math.floor(base.height / numSqrtArea);\n var minmax = new Array(numSqrtArea);\n for (var i = 0; i < numSqrtArea; i++) {\n minmax[i] = new Array(numSqrtArea);\n for (var i2 = 0; i2 < numSqrtArea; i2++) {\n minmax[i][i2] = new Array(0, 0);\n }\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n minmax[ax][ay][0] = 0xFF;\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n var target = image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width];\n if (target < minmax[ax][ay][0])\n minmax[ax][ay][0] = target;\n if (target > minmax[ax][ay][1])\n minmax[ax][ay][1] = target;\n }\n }\n //minmax[ax][ay][0] = (minmax[ax][ay][0] + minmax[ax][ay][1]) / 2;\n }\n }\n var middle = new Array(numSqrtArea);\n for (var i3 = 0; i3 < numSqrtArea; i3++) {\n middle[i3] = new Array(numSqrtArea);\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n middle[ax][ay] = Math.floor((minmax[ax][ay][0] + minmax[ax][ay][1]) / 2);\n //Console.out.print(middle[ax][ay] + \",\");\n }\n //Console.out.println(\"\");\n }\n //Console.out.println(\"\");\n\n return middle;\n}\n\nvar grayScaleToBitmap = function (image,base) {\n var middle = getMiddleBrightnessPerArea(image,base);\n var sqrtNumArea = middle.length;\n var areaWidth = Math.floor(base.width / sqrtNumArea);\n var areaHeight = Math.floor(base.height / sqrtNumArea);\n\n var buff = new ArrayBuffer(base.width * base.height);\n var bitmap = new Uint8Array(buff);\n\n //var bitmap = new Array(base.height*base.width);\n\n for (var ay = 0; ay < sqrtNumArea; ay++) {\n for (var ax = 0; ax < sqrtNumArea; ax++) {\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n bitmap[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] = (image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] < middle[ax][ay]) ? true : false;\n }\n }\n }\n }\n return bitmap;\n}\n\nfunction decode(imageDate,debugfn){\n\tvar base = {\n\t\twidth: imageDate.width,\n\t\theight: imageDate.height,\n\t\tdebugfn: debugfn\n\t}\n\treturn process(imageDate.data,base)\n}\n\nvar process = function (data,base) {\n // var start = new Date().getTime();\n // var image = grayScaleToBitmap(grayscale(),base);\n // var image = binarize(128);\n\tvar image = binarize(data,base,153); //转为位图;\n\t\n\tdebug && base.debugfn && base.debugfn(image,base.width);\n\n\t// 位图转为QR矩阵\n var detector = new Detector(image,base);\n var qRCodeMatrix = detector.detect();\n\n if (debug, base.debugfn) {\n\t\tvar _imgdata = [];\n for (var y = 0; y < qRCodeMatrix.bits.Height; y++) {\n for (var x = 0; x < qRCodeMatrix.bits.Width; x++) {\n\t\t\t\t_imgdata.push(qRCodeMatrix.bits.get_Renamed(x, y) ? true : 0)\n }\n\t\t}\n\t\tdebugfn(_imgdata,qRCodeMatrix.bits.Width);\n }\n\n\t// 解析QR矩阵\n var reader = Decoder.decode(qRCodeMatrix.bits);\n // console.log(reader);\n var data = reader.DataByte;\n var str = \"\";\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++)\n str += String.fromCharCode(data[i][j]);\n }\n\n // var end = new Date().getTime();\n // var time = end - start;\n // console.log(\"Time:\" + time + \" Code: \"+str);\n return str;\n}\n\nmodule.exports = decode;","\nvar qrDecode = require('./src/QRDecode');\nvar decodeByDom = function (dom) {\n\tvar canvas = document.createElement(\"canvas\")\n\tvar ctx = canvas.getContext('2d')\n\tvar isVideo = dom.tagName == 'VIDEO'\n\tcanvas.width = isVideo ? dom.videoWidth : dom.width;\n\tcanvas.height = isVideo ? dom.videoHeight : dom.height;\n\tctx.drawImage(dom, 0, 0, canvas.width, canvas.height);\n\tvar data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\treturn qrDecode(data)\n}\n\nvar decodeByUrl = (src, cb) => {\n\tvar img = new Image();\n\timg.crossOrigin=\"anonymous\";\n\timg.src = src;\n\timg.onload = function () {\n\t\ttry {\n\t\t\tcb(null, decodeByDom(img));\n\t\t} catch (e) {\n\t\t\tcb(e);\n\t\t}\n\t}\n\timg.onerror = cb;\n}\n\nqrDecode.decodeByDom = decodeByDom;\nqrDecode.decodeByUrl = decodeByUrl;\nmodule.exports = qrDecode;"],"names":["AlignmentPattern","posX","posY","estimatedModuleSize","this","x","y","count","__defineGetter__","Math","floor","incrementCount","aboutEquals","moduleSize","i","j","abs","moduleSizeDiff","module","image","base","startX","startY","width","height","resultPointCallback","possibleCenters","Array","crossCheckStateCount","centerFromEnd","stateCount","end","foundPatternCross","maxVariance","crossCheckVertical","startI","centerJ","maxCount","originalStateCountTotal","maxI","NaN","stateCountTotal","handlePossibleCenter","centerI","isNaN","max","length","index","point","push","foundPossibleResultPoint","find","maxJ","middleI","iGen","currentState","confirmed","FinderPattern","FinderPatternInfo","patternCenters","bottomLeft","topLeft","topRight","hasSkipped","totalModuleSize","CrossCheckStateCount","crossCheckHorizontal","startJ","found","center","selectBestPatterns","startSize","square","centerValue","EstimatedModuleSize","average","sort","center1","center2","dA","dB","stdDev","sqrt","limit","pattern","splice","a","b","findRowSkip","firstConfirmedCenter","Count","X","Y","haveMultiplyConfirmedCenters","confirmedCount","totalDeviation","findFinderPattern","iSkip","done","rowSkip","patternInfo","patterns","distance","pattern1","pattern2","xDiff","yDiff","pointA","pointB","pointC","zeroOneDistance","oneTwoDistance","zeroTwoDistance","bX","bY","crossProductZ","temp","orderBestPatterns","number","bits","ErrorCorrectionLevel","ordinal","name","ordinal_Renamed_Field","L","M","Q","H","FOR_BITS","URShift","utils","FORMAT_INFO_DECODE_LOOKUP","BITS_SET_IN_HALF_BYTE","FormatInformation","formatInfo","errorCorrectionLevel","getErrorCorrectionLevel","dataMask","GetHashCode","Equals","o","other","numBitsDiffering","decodeFormatInformation","maskedFormatInfo","doDecodeFormatInformation","bestDifference","bestFormatInfo","decodeInfo","targetInfo","bitsDifference","rowSize","get_Renamed","offset","set_Renamed","flip","clear","setRegion","left","top","right","bottom","ECB","dataCodewords","ECBlocks","ecCodewordsPerBlock","ecBlocks1","ecBlocks2","ecBlocks","NumBlocks","total","getECBlocks","Version","versionNumber","alignmentPatternCenters","ecBlocks3","ecBlocks4","ecCodewords","ECCodewordsPerBlock","ecbArray","ecBlock","DataCodewords","totalCodewords","buildFunctionPattern","dimension","DimensionForVersion","bitMatrix","BitMatrix","getECBlocksForLevel","ecLevel","VERSION_DECODE_INFO","VERSIONS","getVersionForNumber","getProvisionalVersionForDimension","iae","decodeVersionInformation","versionBits","bestVersion","targetVersion","GridSampler","points","nudged","transform","iValue","transformPoints1","checkAndNudgePoints","aioobe","PerspectiveTransform","a11","a21","a31","a12","a22","a32","a13","a23","a33","denominator","transformPoints2","xValues","yValues","n","buildAdjoint","times","quadrilateralToQuadrilateral","x0","y0","x1","y1","x2","y2","x3","y3","x0p","y0p","x1p","y1p","x2p","y2p","x3p","y3p","qToS","quadrilateralToSquare","squareToQuadrilateral","dy2","dy3","dx1","dx2","dx3","dy1","DetectorResult","imageArray","sizeOfBlackWhiteBlackRun","fromX","fromY","toX","toY","steep","dx","dy","error","ystep","xstep","state","realX","realY","diffX","diffY","diffX2","diffY2","sizeOfBlackWhiteBlackRunBothWays","result","scale","otherToX","otherToY","calculateModuleSizeOneWay","otherPattern","moduleSizeEst1","moduleSizeEst2","calculateModuleSize","computeDimension","round","findAlignmentInRegion","overallEstModuleSize","estAlignmentX","estAlignmentY","allowanceFactor","allowance","alignmentAreaLeftX","alignmentAreaRightX","min","alignmentAreaTopY","alignmentAreaBottomY","AlignmentPatternFinder","createTransform","alignmentPattern","bottomRightX","bottomRightY","sourceBottomRightX","sourceBottomRightY","dimMinusThree","sampleGrid","sampleGrid3","processFinderPatternInfo","info","TopLeft","TopRight","BottomLeft","provisionalVersion","modulesBetweenFPCenters","AlignmentPatternCenters","correctionToTopLeft","detect","FinderPatternFinder","addOrSubtract","GF256Poly","field","coefficients","coefficientsLength","firstNonZero","Zero","ci","getCoefficient","degree","evaluateAt","size","result2","multiply","smallerCoefficients","largerCoefficients","sumDiff","lengthDiff","multiply1","aCoefficients","aLength","bCoefficients","bLength","product","aCoeff","multiply2","scalar","multiplyByMonomial","coefficient","divide","quotient","remainder","denominatorLeadingTerm","Degree","inverseDenominatorLeadingTerm","inverse","degreeDifference","term","iterationQuotient","buildMonomial","GF256","primitive","expTable","logTable","at0","zero","at1","one","exp","log","QR_CODE_FIELD","DATA_MATRIX_FIELD","DataMask","forReference","reference","DATA_MASKS","unmaskBitMatrix","isMasked","Dimension","parsedVersion","parsedFormatInfo","copyBit","readFormatInformation","formatInfoBits","iMin","readVersion","ijMin","readCodewords","version","functionPattern","readingUp","TotalCodewords","resultOffset","currentByte","bitsRead","col","DataBlock","numDataCodewords","codewords","getDataBlocks","rawCodewords","totalBlocks","ecBlockArray","numResultBlocks","numBlockCodewords","shorterBlocksTotalCodewords","longerBlocksStartAt","shorterBlocksNumDataCodewords","rawCodewordsOffset","iOffset","sizeOfDataLengthInfo","blocks","numErrorCorrectionCode","blockPointer","bitPointer","dataLength","dataLengthMode","getNextBits","numBits","mask","mask1","mask3","bitsFirstBlock","bitsSecondBlock","NextMode","getDataLength","modeIndicator","getRomanAndFigureString","intData","strData","tableRomanAndFigure","secondLetter","getFigureString","get8bitByteArray","output","getKanjiString","unicodeString","tempWord","shiftjisWord","String","fromCharCode","parseECIValue","firstByte","mode","temp_sbyteArray3","temp_str","ta","charCodeAt","Decoder","rsDecoder","decode","received","twoS","poly","syndromeCoefficients","noError","evalu","syndrome","sigmaOmega","runEuclideanAlgorithm","sigma","omega","errorLocations","findErrorLocations","errorMagnitudes","findErrorMagnitudes","position","R","rLast","r","sLast","One","s","tLast","t","rLastLast","sLastLast","tLastLast","q","dltInverse","degreeDiff","sigmaTildeAtZero","errorLocator","numErrors","e","errorEvaluator","dataMatrix","xiInverse","correctErrors","codewordBytes","numCodewords","codewordsInts","numECCodewords","rse","parser","BitMatrixParser","dataBlocks","totalBytes","NumDataCodewords","resultBytes","dataBlock","Codewords","QRCodeDataBlockReader","VersionNumber","Bits","process","data","th","ret","getPixel","Pixel","gray","binarize","qRCodeMatrix","Detector","debugfn","_imgdata","Height","Width","DataByte","str","imageDate","decodeByDom","dom","canvas","document","createElement","ctx","getContext","isVideo","tagName","videoWidth","videoHeight","drawImage","getImageData","qrDecode","decodeByUrl","src","cb","img","Image","crossOrigin","onload","onerror"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"qr-decode.umd.min.js","sources":["../src/lib/Alignment.js","../src/lib/Findpat.js","../src/utils.js","../src/lib/ErrorLevel.js","../src/lib/FormatInformation.js","../src/lib/BitMatix.js","../src/lib/Version.js","../src/lib/GridSampler.js","../src/lib/PerspectiveTransform.js","../src/lib/Detector.js","../src/lib/GF256Poly.js","../src/lib/GF256.js","../src/lib/DataMask.js","../src/lib/BitMatrixParser.js","../src/lib/DataBlock.js","../src/lib/QRCodeDataBlockReader.js","../src/lib/Decoder.js","../src/lib/ReedSolomonDecoder.js","../src/QRDecode.js","../browser.js"],"sourcesContent":["function AlignmentPattern(posX, posY, estimatedModuleSize) {\r\n\tthis.x = posX;\r\n\tthis.y = posY;\r\n\tthis.count = 1;\r\n\tthis.estimatedModuleSize = estimatedModuleSize;\r\n\r\n\tthis.__defineGetter__(\"EstimatedModuleSize\", function () {\r\n\t\treturn this.estimatedModuleSize;\r\n\t});\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"X\", function () {\r\n\t\treturn Math.floor(this.x);\r\n\t});\r\n\tthis.__defineGetter__(\"Y\", function () {\r\n\t\treturn Math.floor(this.y);\r\n\t});\r\n\tthis.incrementCount = function () {\r\n\t\tthis.count++;\r\n\t}\r\n\tthis.aboutEquals = function (moduleSize, i, j) {\r\n\t\tif (Math.abs(i - this.y) <= moduleSize && Math.abs(j - this.x) <= moduleSize) {\r\n\t\t\tvar moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\r\n\t\t\treturn moduleSizeDiff <= 1.0 || moduleSizeDiff / this.estimatedModuleSize <= 1.0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\nfunction AlignmentPatternFinder(image, base, startX, startY, width, height, moduleSize, resultPointCallback) {\r\n\tthis.image = image;\r\n\tthis.possibleCenters = new Array();\r\n\tthis.startX = startX;\r\n\tthis.startY = startY;\r\n\tthis.width = width;\r\n\tthis.height = height;\r\n\tthis.moduleSize = moduleSize;\r\n\tthis.crossCheckStateCount = new Array(0, 0, 0);\r\n\tthis.resultPointCallback = resultPointCallback;\r\n\r\n\tthis.centerFromEnd = function (stateCount, end) {\r\n\t\treturn (end - stateCount[2]) - stateCount[1] / 2.0;\r\n\t}\r\n\tthis.foundPatternCross = function (stateCount) {\r\n\t\tvar moduleSize = this.moduleSize;\r\n\t\tvar maxVariance = moduleSize / 2.0;\r\n\t\tfor (var i = 0; i < 3; i++) {\r\n\t\t\tif (Math.abs(moduleSize - stateCount[i]) >= maxVariance) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.crossCheckStateCount;\r\n\t\tstateCount[0] = 0;\r\n\t\tstateCount[1] = 0;\r\n\t\tstateCount[2] = 0;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[2] <= maxCount) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[2] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j);\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), 2 * stateCount[1], stateCountTotal);\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\tvar estimatedModuleSize = (stateCount[0] + stateCount[1] + stateCount[2]) / 3.0;\r\n\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\treturn new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Hadn't found this before; save it\r\n\t\t\tvar point = new AlignmentPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\tthis.possibleCenters.push(point);\r\n\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tthis.find = function () {\r\n\t\tvar startX = this.startX;\r\n\t\tvar height = this.height;\r\n\t\tvar maxJ = startX + width;\r\n\t\tvar middleI = startY + (height >> 1);\r\n\t\t// We are looking for black/white/black modules in 1:1:1 ratio;\r\n\t\t// this tracks the number of black/white/black modules seen so far\r\n\t\tvar stateCount = new Array(0, 0, 0);\r\n\t\tfor (var iGen = 0; iGen < height; iGen++) {\r\n\t\t\t// Search from middle outwards\r\n\t\t\tvar i = middleI + ((iGen & 0x01) == 0 ? ((iGen + 1) >> 1) : - ((iGen + 1) >> 1));\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tvar j = startX;\r\n\t\t\t// Burn off leading white pixels before anything else; if we start in the middle of\r\n\t\t\t// a white run, it doesn't make sense to count its length, since we don't know if the\r\n\t\t\t// white run continued to the left of the start point\r\n\t\t\twhile (j < maxJ && !image[j + base.width * i]) {\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tvar currentState = 0;\r\n\t\t\twhile (j < maxJ) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tif (currentState == 2) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\t\t\t\t\treturn confirmed;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\tstateCount[1] = 1;\r\n\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\tcurrentState = 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif (currentState == 1) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\tj++;\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed != null) {\r\n\t\t\t\t\treturn confirmed;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Hmm, nothing we saw was observed and confirmed twice. If we had\r\n\t\t// any guess at all, return it.\r\n\t\tif (!(this.possibleCenters.length == 0)) {\r\n\t\t\treturn this.possibleCenters[0];\r\n\t\t}\r\n\r\n\t\tthrow \"Couldn't find enough alignment patterns\";\r\n\t}\r\n\r\n}\r\n\r\nmodule.exports = AlignmentPatternFinder;","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\nvar MIN_SKIP = 3;\r\nvar MAX_MODULES = 57;\r\nvar INTEGER_MATH_SHIFT = 8;\r\nvar CENTER_QUORUM = 2;\r\n\r\nvar orderBestPatterns = function (patterns) {\r\n\r\n\tfunction distance(pattern1, pattern2) {\r\n\t\tvar xDiff = pattern1.X - pattern2.X;\r\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\r\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\r\n\t}\r\n\r\n\t/// Returns the z component of the cross product between vectors BC and BA.\r\n\tfunction crossProductZ(pointA, pointB, pointC) {\r\n\t\tvar bX = pointB.x;\r\n\t\tvar bY = pointB.y;\r\n\t\treturn ((pointC.x - bX) * (pointA.y - bY)) - ((pointC.y - bY) * (pointA.x - bX));\r\n\t}\r\n\r\n\r\n\t// Find distances between pattern centers\r\n\tvar zeroOneDistance = distance(patterns[0], patterns[1]);\r\n\tvar oneTwoDistance = distance(patterns[1], patterns[2]);\r\n\tvar zeroTwoDistance = distance(patterns[0], patterns[2]);\r\n\r\n\tvar pointA, pointB, pointC;\r\n\t// Assume one closest to other two is B; A and C will just be guesses at first\r\n\tif (oneTwoDistance >= zeroOneDistance && oneTwoDistance >= zeroTwoDistance) {\r\n\t\tpointB = patterns[0];\r\n\t\tpointA = patterns[1];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse if (zeroTwoDistance >= oneTwoDistance && zeroTwoDistance >= zeroOneDistance) {\r\n\t\tpointB = patterns[1];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[2];\r\n\t}\r\n\telse {\r\n\t\tpointB = patterns[2];\r\n\t\tpointA = patterns[0];\r\n\t\tpointC = patterns[1];\r\n\t}\r\n\r\n\t// Use cross product to figure out whether A and C are correct or flipped.\r\n\t// This asks whether BC x BA has a positive z component, which is the arrangement\r\n\t// we want for A, B, C. If it's negative, then we've got it flipped around and\r\n\t// should swap A and C.\r\n\tif (crossProductZ(pointA, pointB, pointC) < 0.0) {\r\n\t\tvar temp = pointA;\r\n\t\tpointA = pointC;\r\n\t\tpointC = temp;\r\n\t}\r\n\r\n\tpatterns[0] = pointA;\r\n\tpatterns[1] = pointB;\r\n\tpatterns[2] = pointC;\r\n}\r\n\r\n\r\nfunction FinderPattern(posX, posY, estimatedModuleSize) {\r\n\tthis.x = posX;\r\n\tthis.y = posY;\r\n\tthis.count = 1;\r\n\tthis.estimatedModuleSize = estimatedModuleSize;\r\n\r\n\tthis.__defineGetter__(\"EstimatedModuleSize\", function () {\r\n\t\treturn this.estimatedModuleSize;\r\n\t});\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"X\", function () {\r\n\t\treturn this.x;\r\n\t});\r\n\tthis.__defineGetter__(\"Y\", function () {\r\n\t\treturn this.y;\r\n\t});\r\n\tthis.incrementCount = function () {\r\n\t\tthis.count++;\r\n\t}\r\n\tthis.aboutEquals = function (moduleSize, i, j) {\r\n\t\tif (Math.abs(i - this.y) <= moduleSize && Math.abs(j - this.x) <= moduleSize) {\r\n\t\t\tvar moduleSizeDiff = Math.abs(moduleSize - this.estimatedModuleSize);\r\n\t\t\treturn moduleSizeDiff <= 1.0 || moduleSizeDiff / this.estimatedModuleSize <= 1.0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\nfunction FinderPatternInfo(patternCenters) {\r\n\tthis.bottomLeft = patternCenters[0];\r\n\tthis.topLeft = patternCenters[1];\r\n\tthis.topRight = patternCenters[2];\r\n\tthis.__defineGetter__(\"BottomLeft\", function () {\r\n\t\treturn this.bottomLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopLeft\", function () {\r\n\t\treturn this.topLeft;\r\n\t});\r\n\tthis.__defineGetter__(\"TopRight\", function () {\r\n\t\treturn this.topRight;\r\n\t});\r\n}\r\n\r\nfunction FinderPatternFinder(base) {\r\n\tthis.image = null;\r\n\tthis.possibleCenters = [];\r\n\tthis.hasSkipped = false;\r\n\tthis.crossCheckStateCount = new Array(0, 0, 0, 0, 0);\r\n\tthis.resultPointCallback = null;\r\n\r\n\tthis.__defineGetter__(\"CrossCheckStateCount\", function () {\r\n\t\tthis.crossCheckStateCount[0] = 0;\r\n\t\tthis.crossCheckStateCount[1] = 0;\r\n\t\tthis.crossCheckStateCount[2] = 0;\r\n\t\tthis.crossCheckStateCount[3] = 0;\r\n\t\tthis.crossCheckStateCount[4] = 0;\r\n\t\treturn this.crossCheckStateCount;\r\n\t});\r\n\r\n\tthis.foundPatternCross = function (stateCount) {\r\n\t\tvar totalModuleSize = 0;\r\n\t\tfor (var i = 0; i < 5; i++) {\r\n\t\t\tvar count = stateCount[i];\r\n\t\t\tif (count == 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\ttotalModuleSize += count;\r\n\t\t}\r\n\t\tif (totalModuleSize < 7) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tvar moduleSize = Math.floor((totalModuleSize << INTEGER_MATH_SHIFT) / 7);\r\n\t\tvar maxVariance = Math.floor(moduleSize / 2);\r\n\t\t// Allow less than 50% variance from 1-1-3-1-1 proportions\r\n\t\treturn Math.abs(moduleSize - (stateCount[0] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[1] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(3 * moduleSize - (stateCount[2] << INTEGER_MATH_SHIFT)) < 3 * maxVariance && Math.abs(moduleSize - (stateCount[3] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[4] << INTEGER_MATH_SHIFT)) < maxVariance;\r\n\t}\r\n\tthis.centerFromEnd = function (stateCount, end) {\r\n\t\treturn (end - stateCount[4] - stateCount[3]) - stateCount[2] / 2.0;\r\n\t}\r\n\tthis.crossCheckVertical = function (startI, centerJ, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxI = base.height;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\t// Start counting up from center\r\n\t\tvar i = startI;\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (i < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && !image[centerJ + i * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\t// If already too many modules in this state or ran off the edge:\r\n\t\tif (i < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i >= 0 && image[centerJ + i * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\ti--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// Now also count down from center\r\n\t\ti = startI + 1;\r\n\t\twhile (i < maxI && image[centerJ + i * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && !image[centerJ + i * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (i == maxI || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (i < maxI && image[centerJ + i * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is more than 40% different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, i) : NaN;\r\n\t}\r\n\tthis.crossCheckHorizontal = function (startJ, centerI, maxCount, originalStateCountTotal) {\r\n\t\tvar image = this.image;\r\n\r\n\t\tvar maxJ = base.width;\r\n\t\tvar stateCount = this.CrossCheckStateCount;\r\n\r\n\t\tvar j = startJ;\r\n\t\twhile (j >= 0 && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && !image[j + centerI * base.width] && stateCount[1] <= maxCount) {\r\n\t\t\tstateCount[1]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (j < 0 || stateCount[1] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j >= 0 && image[j + centerI * base.width] && stateCount[0] <= maxCount) {\r\n\t\t\tstateCount[0]++;\r\n\t\t\tj--;\r\n\t\t}\r\n\t\tif (stateCount[0] > maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\tj = startJ + 1;\r\n\t\twhile (j < maxJ && image[j + centerI * base.width]) {\r\n\t\t\tstateCount[2]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && !image[j + centerI * base.width] && stateCount[3] < maxCount) {\r\n\t\t\tstateCount[3]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (j == maxJ || stateCount[3] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\t\twhile (j < maxJ && image[j + centerI * base.width] && stateCount[4] < maxCount) {\r\n\t\t\tstateCount[4]++;\r\n\t\t\tj++;\r\n\t\t}\r\n\t\tif (stateCount[4] >= maxCount) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\t// If we found a finder-pattern-like section, but its size is significantly different than\r\n\t\t// the original, assume it's a false positive\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tif (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) {\r\n\t\t\treturn NaN;\r\n\t\t}\r\n\r\n\t\treturn this.foundPatternCross(stateCount) ? this.centerFromEnd(stateCount, j) : NaN;\r\n\t}\r\n\tthis.handlePossibleCenter = function (stateCount, i, j) {\r\n\t\tvar stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4];\r\n\t\tvar centerJ = this.centerFromEnd(stateCount, j); //float\r\n\t\tvar centerI = this.crossCheckVertical(i, Math.floor(centerJ), stateCount[2], stateCountTotal); //float\r\n\t\tif (!isNaN(centerI)) {\r\n\t\t\t// Re-cross check\r\n\t\t\tcenterJ = this.crossCheckHorizontal(Math.floor(centerJ), Math.floor(centerI), stateCount[2], stateCountTotal);\r\n\t\t\tif (!isNaN(centerJ)) {\r\n\t\t\t\tvar estimatedModuleSize = stateCountTotal / 7.0;\r\n\t\t\t\tvar found = false;\r\n\t\t\t\tvar max = this.possibleCenters.length;\r\n\t\t\t\tfor (var index = 0; index < max; index++) {\r\n\t\t\t\t\tvar center = this.possibleCenters[index];\r\n\t\t\t\t\t// Look for about the same center and module size:\r\n\t\t\t\t\tif (center.aboutEquals(estimatedModuleSize, centerI, centerJ)) {\r\n\t\t\t\t\t\tcenter.incrementCount();\r\n\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!found) {\r\n\t\t\t\t\tvar point = new FinderPattern(centerJ, centerI, estimatedModuleSize);\r\n\t\t\t\t\tthis.possibleCenters.push(point);\r\n\t\t\t\t\tif (this.resultPointCallback != null) {\r\n\t\t\t\t\t\tthis.resultPointCallback.foundPossibleResultPoint(point);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tthis.selectBestPatterns = function () {\r\n\r\n\t\tvar startSize = this.possibleCenters.length;\r\n\t\tif (startSize < 3) {\r\n\t\t\t// Couldn't find enough finder patterns\r\n\t\t\tthrow \"Couldn't find enough finder patterns (found \" + startSize + \")\"\r\n\t\t}\r\n\r\n\t\t// Filter outlier possibilities whose module size is too different\r\n\t\tif (startSize > 3) {\r\n\t\t\t// But we can only afford to do so if we have at least 4 possibilities to choose from\r\n\t\t\tvar totalModuleSize = 0.0;\r\n\t\t\tvar square = 0.0;\r\n\t\t\tfor (var i = 0; i < startSize; i++) {\r\n\t\t\t\t//totalModuleSize += this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\tvar centerValue = this.possibleCenters[i].EstimatedModuleSize;\r\n\t\t\t\ttotalModuleSize += centerValue;\r\n\t\t\t\tsquare += (centerValue * centerValue);\r\n\t\t\t}\r\n\t\t\tvar average = totalModuleSize / startSize;\r\n\t\t\tthis.possibleCenters.sort(function (center1, center2) {\r\n\t\t\t\tvar dA = Math.abs(center2.EstimatedModuleSize - average);\r\n\t\t\t\tvar dB = Math.abs(center1.EstimatedModuleSize - average);\r\n\t\t\t\tif (dA < dB) {\r\n\t\t\t\t\treturn (-1);\r\n\t\t\t\t} else if (dA == dB) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar stdDev = Math.sqrt(square / startSize - average * average);\r\n\t\t\tvar limit = Math.max(0.2 * average, stdDev);\r\n\t\t\t//for (var i = 0; i < this.possibleCenters.length && this.possibleCenters.length > 3; i++)\r\n\t\t\tfor (var i = this.possibleCenters.length - 1; i >= 0; i--) {\r\n\t\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\t\t//if (Math.abs(pattern.EstimatedModuleSize - average) > 0.2 * average)\r\n\t\t\t\tif (Math.abs(pattern.EstimatedModuleSize - average) > limit) {\r\n\t\t\t\t\t//this.possibleCenters.remove(i);\r\n\t\t\t\t\tthis.possibleCenters.splice(i, 1);\r\n\t\t\t\t\t//i--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.possibleCenters.length > 3) {\r\n\t\t\t// Throw away all but those first size candidate points we found.\r\n\t\t\tthis.possibleCenters.sort(function (a, b) {\r\n\t\t\t\tif (a.count > b.count) { return -1; }\r\n\t\t\t\tif (a.count < b.count) { return 1; }\r\n\t\t\t\treturn 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn new Array(this.possibleCenters[0], this.possibleCenters[1], this.possibleCenters[2]);\r\n\t}\r\n\r\n\tthis.findRowSkip = function () {\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tif (max <= 1) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tvar firstConfirmedCenter = null;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar center = this.possibleCenters[i];\r\n\t\t\tif (center.Count >= CENTER_QUORUM) {\r\n\t\t\t\tif (firstConfirmedCenter == null) {\r\n\t\t\t\t\tfirstConfirmedCenter = center;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// We have two confirmed centers\r\n\t\t\t\t\t// How far down can we skip before resuming looking for the next\r\n\t\t\t\t\t// pattern? In the worst case, only the difference between the\r\n\t\t\t\t\t// difference in the x / y coordinates of the two centers.\r\n\t\t\t\t\t// This is the case where you find top left last.\r\n\t\t\t\t\tthis.hasSkipped = true;\r\n\t\t\t\t\treturn Math.floor((Math.abs(firstConfirmedCenter.X - center.X) - Math.abs(firstConfirmedCenter.Y - center.Y)) / 2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tthis.haveMultiplyConfirmedCenters = function () {\r\n\t\tvar confirmedCount = 0;\r\n\t\tvar totalModuleSize = 0.0;\r\n\t\tvar max = this.possibleCenters.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tvar pattern = this.possibleCenters[i];\r\n\t\t\tif (pattern.Count >= CENTER_QUORUM) {\r\n\t\t\t\tconfirmedCount++;\r\n\t\t\t\ttotalModuleSize += pattern.EstimatedModuleSize;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (confirmedCount < 3) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t// OK, we have at least 3 confirmed centers, but, it's possible that one is a \"false positive\"\r\n\t\t// and that we need to keep looking. We detect this by asking if the estimated module sizes\r\n\t\t// vary too much. We arbitrarily say that when the total deviation from average exceeds\r\n\t\t// 5% of the total module size estimates, it's too much.\r\n\t\tvar average = totalModuleSize / max;\r\n\t\tvar totalDeviation = 0.0;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tpattern = this.possibleCenters[i];\r\n\t\t\ttotalDeviation += Math.abs(pattern.EstimatedModuleSize - average);\r\n\t\t}\r\n\t\treturn totalDeviation <= 0.05 * totalModuleSize;\r\n\t}\r\n\r\n\tthis.findFinderPattern = function (image) {\r\n\t\tvar tryHarder = false;\r\n\t\tthis.image = image;\r\n\t\tvar maxI = base.height;\r\n\t\tvar maxJ = base.width;\r\n\t\tvar iSkip = Math.floor((3 * maxI) / (4 * MAX_MODULES));\r\n\t\tif (iSkip < MIN_SKIP || tryHarder) {\r\n\t\t\tiSkip = MIN_SKIP;\r\n\t\t}\r\n\r\n\t\tvar done = false;\r\n\t\tvar stateCount = new Array(5);\r\n\t\tfor (var i = iSkip - 1; i < maxI && !done; i += iSkip) {\r\n\t\t\t// Get a row of black/white values\r\n\t\t\tstateCount[0] = 0;\r\n\t\t\tstateCount[1] = 0;\r\n\t\t\tstateCount[2] = 0;\r\n\t\t\tstateCount[3] = 0;\r\n\t\t\tstateCount[4] = 0;\r\n\t\t\tvar currentState = 0;\r\n\t\t\tfor (var j = 0; j < maxJ; j++) {\r\n\t\t\t\tif (image[j + i * base.width]) {\r\n\t\t\t\t\t// Black pixel\r\n\t\t\t\t\tif ((currentState & 1) == 1) {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tcurrentState++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// White pixel\r\n\t\t\t\t\tif ((currentState & 1) == 0) {\r\n\t\t\t\t\t\t// Counting black pixels\r\n\t\t\t\t\t\tif (currentState == 4) {\r\n\t\t\t\t\t\t\t// A winner?\r\n\t\t\t\t\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\t\t\t\t\t// Yes\r\n\t\t\t\t\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, j);\r\n\t\t\t\t\t\t\t\tif (confirmed) {\r\n\t\t\t\t\t\t\t\t\t// Start examining every other line. Checking each line turned out to be too\r\n\t\t\t\t\t\t\t\t\t// expensive and didn't improve performance.\r\n\t\t\t\t\t\t\t\t\tiSkip = 2;\r\n\t\t\t\t\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t\tvar rowSkip = this.findRowSkip();\r\n\t\t\t\t\t\t\t\t\t\tif (rowSkip > stateCount[2]) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip rows between row of lower confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// and top of presumed third confirmed center\r\n\t\t\t\t\t\t\t\t\t\t\t// but back up a bit to get a full chance of detecting\r\n\t\t\t\t\t\t\t\t\t\t\t// it, entire width of center of finder pattern\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Skip by rowSkip, but back off by stateCount[2] (size of last center\r\n\t\t\t\t\t\t\t\t\t\t\t// of pattern we saw) to be conservative, and also back off by iSkip which\r\n\t\t\t\t\t\t\t\t\t\t\t// is about to be re-added\r\n\t\t\t\t\t\t\t\t\t\t\ti += rowSkip - stateCount[2] - iSkip;\r\n\t\t\t\t\t\t\t\t\t\t\tj = maxJ - 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\t// Advance to next black pixel\r\n\t\t\t\t\t\t\t\t\tdo {\r\n\t\t\t\t\t\t\t\t\t\tj++;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\twhile (j < maxJ && !image[j + i * base.width]);\r\n\t\t\t\t\t\t\t\t\tj--; // back up to that last white pixel\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Clear state to start looking again\r\n\t\t\t\t\t\t\t\tcurrentState = 0;\r\n\t\t\t\t\t\t\t\tstateCount[0] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[1] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[2] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[3] = 0;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t// No, shift counts back by two\r\n\t\t\t\t\t\t\t\tstateCount[0] = stateCount[2];\r\n\t\t\t\t\t\t\t\tstateCount[1] = stateCount[3];\r\n\t\t\t\t\t\t\t\tstateCount[2] = stateCount[4];\r\n\t\t\t\t\t\t\t\tstateCount[3] = 1;\r\n\t\t\t\t\t\t\t\tstateCount[4] = 0;\r\n\t\t\t\t\t\t\t\tcurrentState = 3;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tstateCount[++currentState]++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Counting white pixels\r\n\t\t\t\t\t\tstateCount[currentState]++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.foundPatternCross(stateCount)) {\r\n\t\t\t\tvar confirmed = this.handlePossibleCenter(stateCount, i, maxJ);\r\n\t\t\t\tif (confirmed) {\r\n\t\t\t\t\tiSkip = stateCount[0];\r\n\t\t\t\t\tif (this.hasSkipped) {\r\n\t\t\t\t\t\t// Found a third one\r\n\t\t\t\t\t\tdone = this.haveMultiplyConfirmedCenters();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar patternInfo = this.selectBestPatterns();\r\n\t\torderBestPatterns(patternInfo);\r\n\r\n\t\treturn new FinderPatternInfo(patternInfo);\r\n\t};\r\n}\r\n\r\nmodule.exports = FinderPatternFinder;","exports.URShift = function URShift(number, bits) {\n if (number >= 0)\n return number >> bits;\n else\n return (number >> bits) + (2 << ~bits);\n}\n","function ErrorCorrectionLevel(ordinal, bits, name) {\r\n\tthis.ordinal_Renamed_Field = ordinal;\r\n\tthis.bits = bits;\r\n\tthis.name = name;\r\n\tthis.__defineGetter__(\"Bits\", function () {\r\n\t\treturn this.bits;\r\n\t});\r\n\tthis.__defineGetter__(\"Name\", function () {\r\n\t\treturn this.name;\r\n\t});\r\n\tthis.ordinal = function () {\r\n\t\treturn this.ordinal_Renamed_Field;\r\n\t}\r\n}\r\n\r\nvar L = new ErrorCorrectionLevel(0, 0x01, \"L\");\r\nvar M = new ErrorCorrectionLevel(1, 0x00, \"M\");\r\nvar Q = new ErrorCorrectionLevel(2, 0x03, \"Q\");\r\nvar H = new ErrorCorrectionLevel(3, 0x02, \"H\");\r\nvar FOR_BITS = new Array(M, L, H, Q);\r\n\r\nmodule.exports = function (bits) {\r\n\tif (bits < 0 || bits >= FOR_BITS.length) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn FOR_BITS[bits];\r\n}","var utils = require('../utils')\r\nvar getErrorCorrectionLevel = require('./ErrorLevel')\r\nvar URShift = utils.URShift;\r\n\r\nvar FORMAT_INFO_MASK_QR = 0x5412;\r\nvar FORMAT_INFO_DECODE_LOOKUP = new Array(new Array(0x5412, 0x00), new Array(0x5125, 0x01), new Array(0x5E7C, 0x02), new Array(0x5B4B, 0x03), new Array(0x45F9, 0x04), new Array(0x40CE, 0x05), new Array(0x4F97, 0x06), new Array(0x4AA0, 0x07), new Array(0x77C4, 0x08), new Array(0x72F3, 0x09), new Array(0x7DAA, 0x0A), new Array(0x789D, 0x0B), new Array(0x662F, 0x0C), new Array(0x6318, 0x0D), new Array(0x6C41, 0x0E), new Array(0x6976, 0x0F), new Array(0x1689, 0x10), new Array(0x13BE, 0x11), new Array(0x1CE7, 0x12), new Array(0x19D0, 0x13), new Array(0x0762, 0x14), new Array(0x0255, 0x15), new Array(0x0D0C, 0x16), new Array(0x083B, 0x17), new Array(0x355F, 0x18), new Array(0x3068, 0x19), new Array(0x3F31, 0x1A), new Array(0x3A06, 0x1B), new Array(0x24B4, 0x1C), new Array(0x2183, 0x1D), new Array(0x2EDA, 0x1E), new Array(0x2BED, 0x1F));\r\nvar BITS_SET_IN_HALF_BYTE = new Array(0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4);\r\n\r\n\r\nfunction FormatInformation(formatInfo) {\r\n\tthis.errorCorrectionLevel = getErrorCorrectionLevel((formatInfo >> 3) & 0x03);\r\n\tthis.dataMask = (formatInfo & 0x07);\r\n\r\n\tthis.__defineGetter__(\"ErrorCorrectionLevel\", function () {\r\n\t\treturn this.errorCorrectionLevel;\r\n\t});\r\n\tthis.__defineGetter__(\"DataMask\", function () {\r\n\t\treturn this.dataMask;\r\n\t});\r\n\tthis.GetHashCode = function () {\r\n\t\treturn (this.errorCorrectionLevel.ordinal() << 3) | this.dataMask;\r\n\t}\r\n\tthis.Equals = function (o) {\r\n\t\tvar other = o;\r\n\t\treturn this.errorCorrectionLevel == other.errorCorrectionLevel && this.dataMask == other.dataMask;\r\n\t}\r\n}\r\n\r\nFormatInformation.numBitsDiffering = function (a, b) {\r\n\ta ^= b; // a now has a 1 bit exactly where its bit differs with b's\r\n\t// Count bits set quickly with a series of lookups:\r\n\treturn BITS_SET_IN_HALF_BYTE[a & 0x0F] + BITS_SET_IN_HALF_BYTE[(URShift(a, 4) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 8) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 12) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 16) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 20) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 24) & 0x0F)] + BITS_SET_IN_HALF_BYTE[(URShift(a, 28) & 0x0F)];\r\n}\r\n\r\nFormatInformation.decodeFormatInformation = function (maskedFormatInfo) {\r\n\tvar formatInfo = FormatInformation.doDecodeFormatInformation(maskedFormatInfo);\r\n\tif (formatInfo != null) {\r\n\t\treturn formatInfo;\r\n\t}\r\n\t// Should return null, but, some QR codes apparently\r\n\t// do not mask this info. Try again by actually masking the pattern\r\n\t// first\r\n\treturn FormatInformation.doDecodeFormatInformation(maskedFormatInfo ^ FORMAT_INFO_MASK_QR);\r\n}\r\n\r\nFormatInformation.doDecodeFormatInformation = function (maskedFormatInfo) {\r\n\t// Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestFormatInfo = 0;\r\n\tfor (var i = 0; i < FORMAT_INFO_DECODE_LOOKUP.length; i++) {\r\n\t\tvar decodeInfo = FORMAT_INFO_DECODE_LOOKUP[i];\r\n\t\tvar targetInfo = decodeInfo[0];\r\n\t\tif (targetInfo == maskedFormatInfo) {\r\n\t\t\t// Found an exact match\r\n\t\t\treturn new FormatInformation(decodeInfo[1]);\r\n\t\t}\r\n\t\tvar bitsDifference = this.numBitsDiffering(maskedFormatInfo, targetInfo);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestFormatInfo = decodeInfo[1];\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits\r\n\t// differing means we found a match\r\n\tif (bestDifference <= 3) {\r\n\t\treturn new FormatInformation(bestFormatInfo);\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nmodule.exports = FormatInformation;\r\n","var utils = require('../utils');\r\nvar URShift = utils.URShift;\r\n\r\nfunction BitMatrix(width, height) {\r\n\tif (!height)\r\n\t\theight = width;\r\n\tif (width < 1 || height < 1) {\r\n\t\tthrow \"Both dimensions must be greater than 0\";\r\n\t}\r\n\tthis.width = width;\r\n\tthis.height = height;\r\n\tvar rowSize = width >> 5;\r\n\tif ((width & 0x1f) != 0) {\r\n\t\trowSize++;\r\n\t}\r\n\tthis.rowSize = rowSize;\r\n\tthis.bits = new Array(rowSize * height);\r\n\tfor (var i = 0; i < this.bits.length; i++)\r\n\t\tthis.bits[i] = 0;\r\n\r\n\tthis.__defineGetter__(\"Width\", function () {\r\n\t\treturn this.width;\r\n\t});\r\n\tthis.__defineGetter__(\"Height\", function () {\r\n\t\treturn this.height;\r\n\t});\r\n\tthis.__defineGetter__(\"Dimension\", function () {\r\n\t\tif (this.width != this.height) {\r\n\t\t\tthrow \"Can't call getDimension() on a non-square matrix\";\r\n\t\t}\r\n\t\treturn this.width;\r\n\t});\r\n\r\n\tthis.get_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\treturn ((URShift(this.bits[offset], (x & 0x1f))) & 1) != 0;\r\n\t}\r\n\tthis.set_Renamed = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] |= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.flip = function (x, y) {\r\n\t\tvar offset = y * this.rowSize + (x >> 5);\r\n\t\tthis.bits[offset] ^= 1 << (x & 0x1f);\r\n\t}\r\n\tthis.clear = function () {\r\n\t\tvar max = this.bits.length;\r\n\t\tfor (var i = 0; i < max; i++) {\r\n\t\t\tthis.bits[i] = 0;\r\n\t\t}\r\n\t}\r\n\tthis.setRegion = function (left, top, width, height) {\r\n\t\tif (top < 0 || left < 0) {\r\n\t\t\tthrow \"Left and top must be nonnegative\";\r\n\t\t}\r\n\t\tif (height < 1 || width < 1) {\r\n\t\t\tthrow \"Height and width must be at least 1\";\r\n\t\t}\r\n\t\tvar right = left + width;\r\n\t\tvar bottom = top + height;\r\n\t\tif (bottom > this.height || right > this.width) {\r\n\t\t\tthrow \"The region must fit inside the matrix\";\r\n\t\t}\r\n\t\tfor (var y = top; y < bottom; y++) {\r\n\t\t\tvar offset = y * this.rowSize;\r\n\t\t\tfor (var x = left; x < right; x++) {\r\n\t\t\t\tthis.bits[offset + (x >> 5)] |= 1 << (x & 0x1f);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmodule.exports = BitMatrix;","var FormatInformation = require('./FormatInformation')\r\nvar BitMatrix = require('./BitMatix')\r\n\r\nfunction ECB(count, dataCodewords) {\r\n\tthis.count = count;\r\n\tthis.dataCodewords = dataCodewords;\r\n\r\n\tthis.__defineGetter__(\"Count\", function () {\r\n\t\treturn this.count;\r\n\t});\r\n\tthis.__defineGetter__(\"DataCodewords\", function () {\r\n\t\treturn this.dataCodewords;\r\n\t});\r\n}\r\n\r\nfunction ECBlocks(ecCodewordsPerBlock, ecBlocks1, ecBlocks2) {\r\n\tthis.ecCodewordsPerBlock = ecCodewordsPerBlock;\r\n\tif (ecBlocks2)\r\n\t\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2);\r\n\telse\r\n\t\tthis.ecBlocks = new Array(ecBlocks1);\r\n\r\n\tthis.__defineGetter__(\"ECCodewordsPerBlock\", function () {\r\n\t\treturn this.ecCodewordsPerBlock;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"TotalECCodewords\", function () {\r\n\t\treturn this.ecCodewordsPerBlock * this.NumBlocks;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"NumBlocks\", function () {\r\n\t\tvar total = 0;\r\n\t\tfor (var i = 0; i < this.ecBlocks.length; i++) {\r\n\t\t\ttotal += this.ecBlocks[i].length;\r\n\t\t}\r\n\t\treturn total;\r\n\t});\r\n\r\n\tthis.getECBlocks = function () {\r\n\t\treturn this.ecBlocks;\r\n\t}\r\n}\r\n\r\nfunction Version(versionNumber, alignmentPatternCenters, ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4) {\r\n\tthis.versionNumber = versionNumber;\r\n\tthis.alignmentPatternCenters = alignmentPatternCenters;\r\n\tthis.ecBlocks = new Array(ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4);\r\n\r\n\tvar total = 0;\r\n\tvar ecCodewords = ecBlocks1.ECCodewordsPerBlock;\r\n\tvar ecbArray = ecBlocks1.getECBlocks();\r\n\tfor (var i = 0; i < ecbArray.length; i++) {\r\n\t\tvar ecBlock = ecbArray[i];\r\n\t\ttotal += ecBlock.Count * (ecBlock.DataCodewords + ecCodewords);\r\n\t}\r\n\tthis.totalCodewords = total;\r\n\r\n\tthis.__defineGetter__(\"VersionNumber\", function () {\r\n\t\treturn this.versionNumber;\r\n\t});\r\n\r\n\tthis.__defineGetter__(\"AlignmentPatternCenters\", function () {\r\n\t\treturn this.alignmentPatternCenters;\r\n\t});\r\n\tthis.__defineGetter__(\"TotalCodewords\", function () {\r\n\t\treturn this.totalCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"DimensionForVersion\", function () {\r\n\t\treturn 17 + 4 * this.versionNumber;\r\n\t});\r\n\r\n\tthis.buildFunctionPattern = function () {\r\n\t\tvar dimension = this.DimensionForVersion;\r\n\t\tvar bitMatrix = new BitMatrix(dimension);\r\n\r\n\t\t// Top left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, 0, 9, 9);\r\n\t\t// Top right finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(dimension - 8, 0, 8, 9);\r\n\t\t// Bottom left finder pattern + separator + format\r\n\t\tbitMatrix.setRegion(0, dimension - 8, 9, 8);\r\n\r\n\t\t// Alignment patterns\r\n\t\tvar max = this.alignmentPatternCenters.length;\r\n\t\tfor (var x = 0; x < max; x++) {\r\n\t\t\tvar i = this.alignmentPatternCenters[x] - 2;\r\n\t\t\tfor (var y = 0; y < max; y++) {\r\n\t\t\t\tif ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) {\r\n\t\t\t\t\t// No alignment patterns near the three finder paterns\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tbitMatrix.setRegion(this.alignmentPatternCenters[y] - 2, i, 5, 5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Vertical timing pattern\r\n\t\tbitMatrix.setRegion(6, 9, 1, dimension - 17);\r\n\t\t// Horizontal timing pattern\r\n\t\tbitMatrix.setRegion(9, 6, dimension - 17, 1);\r\n\r\n\t\tif (this.versionNumber > 6) {\r\n\t\t\t// Version info, top right\r\n\t\t\tbitMatrix.setRegion(dimension - 11, 0, 3, 6);\r\n\t\t\t// Version info, bottom left\r\n\t\t\tbitMatrix.setRegion(0, dimension - 11, 6, 3);\r\n\t\t}\r\n\r\n\t\treturn bitMatrix;\r\n\t}\r\n\tthis.getECBlocksForLevel = function (ecLevel) {\r\n\t\treturn this.ecBlocks[ecLevel.ordinal()];\r\n\t}\r\n}\r\n\r\nVersion.VERSION_DECODE_INFO = new Array(0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69);\r\n\r\nVersion.VERSIONS = buildVersions();\r\n\r\nVersion.getVersionForNumber = function (versionNumber) {\r\n\tif (versionNumber < 1 || versionNumber > 40) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\treturn Version.VERSIONS[versionNumber - 1];\r\n}\r\n\r\nVersion.getProvisionalVersionForDimension = function (dimension) {\r\n\tif (dimension % 4 != 1) {\r\n\t\tthrow \"Error getProvisionalVersionForDimension\";\r\n\t}\r\n\ttry {\r\n\t\treturn Version.getVersionForNumber((dimension - 17) >> 2);\r\n\t}\r\n\tcatch (iae) {\r\n\t\tthrow \"Error getVersionForNumber\";\r\n\t}\r\n}\r\n\r\nVersion.decodeVersionInformation = function (versionBits) {\r\n\tvar bestDifference = 0xffffffff;\r\n\tvar bestVersion = 0;\r\n\tfor (var i = 0; i < Version.VERSION_DECODE_INFO.length; i++) {\r\n\t\tvar targetVersion = Version.VERSION_DECODE_INFO[i];\r\n\t\t// Do the version info bits match exactly? done.\r\n\t\tif (targetVersion == versionBits) {\r\n\t\t\treturn this.getVersionForNumber(i + 7);\r\n\t\t}\r\n\t\t// Otherwise see if this is the closest to a real version info bit string\r\n\t\t// we have seen so far\r\n\t\tvar bitsDifference = FormatInformation.numBitsDiffering(versionBits, targetVersion);\r\n\t\tif (bitsDifference < bestDifference) {\r\n\t\t\tbestVersion = i + 7;\r\n\t\t\tbestDifference = bitsDifference;\r\n\t\t}\r\n\t}\r\n\t// We can tolerate up to 3 bits of error since no two version info codewords will\r\n\t// differ in less than 4 bits.\r\n\tif (bestDifference <= 3) {\r\n\t\treturn this.getVersionForNumber(bestVersion);\r\n\t}\r\n\t// If we didn't find a close enough match, fail\r\n\treturn null;\r\n}\r\n\r\nfunction buildVersions() {\r\n\treturn new Array(new Version(1, new Array(), new ECBlocks(7, new ECB(1, 19)), new ECBlocks(10, new ECB(1, 16)), new ECBlocks(13, new ECB(1, 13)), new ECBlocks(17, new ECB(1, 9))),\r\n\t\tnew Version(2, new Array(6, 18), new ECBlocks(10, new ECB(1, 34)), new ECBlocks(16, new ECB(1, 28)), new ECBlocks(22, new ECB(1, 22)), new ECBlocks(28, new ECB(1, 16))),\r\n\t\tnew Version(3, new Array(6, 22), new ECBlocks(15, new ECB(1, 55)), new ECBlocks(26, new ECB(1, 44)), new ECBlocks(18, new ECB(2, 17)), new ECBlocks(22, new ECB(2, 13))),\r\n\t\tnew Version(4, new Array(6, 26), new ECBlocks(20, new ECB(1, 80)), new ECBlocks(18, new ECB(2, 32)), new ECBlocks(26, new ECB(2, 24)), new ECBlocks(16, new ECB(4, 9))),\r\n\t\tnew Version(5, new Array(6, 30), new ECBlocks(26, new ECB(1, 108)), new ECBlocks(24, new ECB(2, 43)), new ECBlocks(18, new ECB(2, 15), new ECB(2, 16)), new ECBlocks(22, new ECB(2, 11), new ECB(2, 12))),\r\n\t\tnew Version(6, new Array(6, 34), new ECBlocks(18, new ECB(2, 68)), new ECBlocks(16, new ECB(4, 27)), new ECBlocks(24, new ECB(4, 19)), new ECBlocks(28, new ECB(4, 15))),\r\n\t\tnew Version(7, new Array(6, 22, 38), new ECBlocks(20, new ECB(2, 78)), new ECBlocks(18, new ECB(4, 31)), new ECBlocks(18, new ECB(2, 14), new ECB(4, 15)), new ECBlocks(26, new ECB(4, 13), new ECB(1, 14))),\r\n\t\tnew Version(8, new Array(6, 24, 42), new ECBlocks(24, new ECB(2, 97)), new ECBlocks(22, new ECB(2, 38), new ECB(2, 39)), new ECBlocks(22, new ECB(4, 18), new ECB(2, 19)), new ECBlocks(26, new ECB(4, 14), new ECB(2, 15))),\r\n\t\tnew Version(9, new Array(6, 26, 46), new ECBlocks(30, new ECB(2, 116)), new ECBlocks(22, new ECB(3, 36), new ECB(2, 37)), new ECBlocks(20, new ECB(4, 16), new ECB(4, 17)), new ECBlocks(24, new ECB(4, 12), new ECB(4, 13))),\r\n\t\tnew Version(10, new Array(6, 28, 50), new ECBlocks(18, new ECB(2, 68), new ECB(2, 69)), new ECBlocks(26, new ECB(4, 43), new ECB(1, 44)), new ECBlocks(24, new ECB(6, 19), new ECB(2, 20)), new ECBlocks(28, new ECB(6, 15), new ECB(2, 16))),\r\n\t\tnew Version(11, new Array(6, 30, 54), new ECBlocks(20, new ECB(4, 81)), new ECBlocks(30, new ECB(1, 50), new ECB(4, 51)), new ECBlocks(28, new ECB(4, 22), new ECB(4, 23)), new ECBlocks(24, new ECB(3, 12), new ECB(8, 13))),\r\n\t\tnew Version(12, new Array(6, 32, 58), new ECBlocks(24, new ECB(2, 92), new ECB(2, 93)), new ECBlocks(22, new ECB(6, 36), new ECB(2, 37)), new ECBlocks(26, new ECB(4, 20), new ECB(6, 21)), new ECBlocks(28, new ECB(7, 14), new ECB(4, 15))),\r\n\t\tnew Version(13, new Array(6, 34, 62), new ECBlocks(26, new ECB(4, 107)), new ECBlocks(22, new ECB(8, 37), new ECB(1, 38)), new ECBlocks(24, new ECB(8, 20), new ECB(4, 21)), new ECBlocks(22, new ECB(12, 11), new ECB(4, 12))),\r\n\t\tnew Version(14, new Array(6, 26, 46, 66), new ECBlocks(30, new ECB(3, 115), new ECB(1, 116)), new ECBlocks(24, new ECB(4, 40), new ECB(5, 41)), new ECBlocks(20, new ECB(11, 16), new ECB(5, 17)), new ECBlocks(24, new ECB(11, 12), new ECB(5, 13))),\r\n\t\tnew Version(15, new Array(6, 26, 48, 70), new ECBlocks(22, new ECB(5, 87), new ECB(1, 88)), new ECBlocks(24, new ECB(5, 41), new ECB(5, 42)), new ECBlocks(30, new ECB(5, 24), new ECB(7, 25)), new ECBlocks(24, new ECB(11, 12), new ECB(7, 13))),\r\n\t\tnew Version(16, new Array(6, 26, 50, 74), new ECBlocks(24, new ECB(5, 98), new ECB(1, 99)), new ECBlocks(28, new ECB(7, 45), new ECB(3, 46)), new ECBlocks(24, new ECB(15, 19), new ECB(2, 20)), new ECBlocks(30, new ECB(3, 15), new ECB(13, 16))),\r\n\t\tnew Version(17, new Array(6, 30, 54, 78), new ECBlocks(28, new ECB(1, 107), new ECB(5, 108)), new ECBlocks(28, new ECB(10, 46), new ECB(1, 47)), new ECBlocks(28, new ECB(1, 22), new ECB(15, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(17, 15))),\r\n\t\tnew Version(18, new Array(6, 30, 56, 82), new ECBlocks(30, new ECB(5, 120), new ECB(1, 121)), new ECBlocks(26, new ECB(9, 43), new ECB(4, 44)), new ECBlocks(28, new ECB(17, 22), new ECB(1, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(19, 15))),\r\n\t\tnew Version(19, new Array(6, 30, 58, 86), new ECBlocks(28, new ECB(3, 113), new ECB(4, 114)), new ECBlocks(26, new ECB(3, 44), new ECB(11, 45)), new ECBlocks(26, new ECB(17, 21), new ECB(4, 22)), new ECBlocks(26, new ECB(9, 13), new ECB(16, 14))),\r\n\t\tnew Version(20, new Array(6, 34, 62, 90), new ECBlocks(28, new ECB(3, 107), new ECB(5, 108)), new ECBlocks(26, new ECB(3, 41), new ECB(13, 42)), new ECBlocks(30, new ECB(15, 24), new ECB(5, 25)), new ECBlocks(28, new ECB(15, 15), new ECB(10, 16))),\r\n\t\tnew Version(21, new Array(6, 28, 50, 72, 94), new ECBlocks(28, new ECB(4, 116), new ECB(4, 117)), new ECBlocks(26, new ECB(17, 42)), new ECBlocks(28, new ECB(17, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(19, 16), new ECB(6, 17))),\r\n\t\tnew Version(22, new Array(6, 26, 50, 74, 98), new ECBlocks(28, new ECB(2, 111), new ECB(7, 112)), new ECBlocks(28, new ECB(17, 46)), new ECBlocks(30, new ECB(7, 24), new ECB(16, 25)), new ECBlocks(24, new ECB(34, 13))),\r\n\t\tnew Version(23, new Array(6, 30, 54, 74, 102), new ECBlocks(30, new ECB(4, 121), new ECB(5, 122)), new ECBlocks(28, new ECB(4, 47), new ECB(14, 48)), new ECBlocks(30, new ECB(11, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(16, 15), new ECB(14, 16))),\r\n\t\tnew Version(24, new Array(6, 28, 54, 80, 106), new ECBlocks(30, new ECB(6, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(6, 45), new ECB(14, 46)), new ECBlocks(30, new ECB(11, 24), new ECB(16, 25)), new ECBlocks(30, new ECB(30, 16), new ECB(2, 17))),\r\n\t\tnew Version(25, new Array(6, 32, 58, 84, 110), new ECBlocks(26, new ECB(8, 106), new ECB(4, 107)), new ECBlocks(28, new ECB(8, 47), new ECB(13, 48)), new ECBlocks(30, new ECB(7, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(13, 16))),\r\n\t\tnew Version(26, new Array(6, 30, 58, 86, 114), new ECBlocks(28, new ECB(10, 114), new ECB(2, 115)), new ECBlocks(28, new ECB(19, 46), new ECB(4, 47)), new ECBlocks(28, new ECB(28, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(33, 16), new ECB(4, 17))),\r\n\t\tnew Version(27, new Array(6, 34, 62, 90, 118), new ECBlocks(30, new ECB(8, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(22, 45), new ECB(3, 46)), new ECBlocks(30, new ECB(8, 23), new ECB(26, 24)), new ECBlocks(30, new ECB(12, 15), new ECB(28, 16))),\r\n\t\tnew Version(28, new Array(6, 26, 50, 74, 98, 122), new ECBlocks(30, new ECB(3, 117), new ECB(10, 118)), new ECBlocks(28, new ECB(3, 45), new ECB(23, 46)), new ECBlocks(30, new ECB(4, 24), new ECB(31, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(31, 16))),\r\n\t\tnew Version(29, new Array(6, 30, 54, 78, 102, 126), new ECBlocks(30, new ECB(7, 116), new ECB(7, 117)), new ECBlocks(28, new ECB(21, 45), new ECB(7, 46)), new ECBlocks(30, new ECB(1, 23), new ECB(37, 24)), new ECBlocks(30, new ECB(19, 15), new ECB(26, 16))),\r\n\t\tnew Version(30, new Array(6, 26, 52, 78, 104, 130), new ECBlocks(30, new ECB(5, 115), new ECB(10, 116)), new ECBlocks(28, new ECB(19, 47), new ECB(10, 48)), new ECBlocks(30, new ECB(15, 24), new ECB(25, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(25, 16))),\r\n\t\tnew Version(31, new Array(6, 30, 56, 82, 108, 134), new ECBlocks(30, new ECB(13, 115), new ECB(3, 116)), new ECBlocks(28, new ECB(2, 46), new ECB(29, 47)), new ECBlocks(30, new ECB(42, 24), new ECB(1, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(28, 16))),\r\n\t\tnew Version(32, new Array(6, 34, 60, 86, 112, 138), new ECBlocks(30, new ECB(17, 115)), new ECBlocks(28, new ECB(10, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(10, 24), new ECB(35, 25)), new ECBlocks(30, new ECB(19, 15), new ECB(35, 16))),\r\n\t\tnew Version(33, new Array(6, 30, 58, 86, 114, 142), new ECBlocks(30, new ECB(17, 115), new ECB(1, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(21, 47)), new ECBlocks(30, new ECB(29, 24), new ECB(19, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(46, 16))),\r\n\t\tnew Version(34, new Array(6, 34, 62, 90, 118, 146), new ECBlocks(30, new ECB(13, 115), new ECB(6, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(44, 24), new ECB(7, 25)), new ECBlocks(30, new ECB(59, 16), new ECB(1, 17))),\r\n\t\tnew Version(35, new Array(6, 30, 54, 78, 102, 126, 150), new ECBlocks(30, new ECB(12, 121), new ECB(7, 122)), new ECBlocks(28, new ECB(12, 47), new ECB(26, 48)), new ECBlocks(30, new ECB(39, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(41, 16))),\r\n\t\tnew Version(36, new Array(6, 24, 50, 76, 102, 128, 154), new ECBlocks(30, new ECB(6, 121), new ECB(14, 122)), new ECBlocks(28, new ECB(6, 47), new ECB(34, 48)), new ECBlocks(30, new ECB(46, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(2, 15), new ECB(64, 16))),\r\n\t\tnew Version(37, new Array(6, 28, 54, 80, 106, 132, 158), new ECBlocks(30, new ECB(17, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(29, 46), new ECB(14, 47)), new ECBlocks(30, new ECB(49, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(24, 15), new ECB(46, 16))),\r\n\t\tnew Version(38, new Array(6, 32, 58, 84, 110, 136, 162), new ECBlocks(30, new ECB(4, 122), new ECB(18, 123)), new ECBlocks(28, new ECB(13, 46), new ECB(32, 47)), new ECBlocks(30, new ECB(48, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(42, 15), new ECB(32, 16))),\r\n\t\tnew Version(39, new Array(6, 26, 54, 82, 110, 138, 166), new ECBlocks(30, new ECB(20, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(40, 47), new ECB(7, 48)), new ECBlocks(30, new ECB(43, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(10, 15), new ECB(67, 16))),\r\n\t\tnew Version(40, new Array(6, 30, 58, 86, 114, 142, 170), new ECBlocks(30, new ECB(19, 118), new ECB(6, 119)), new ECBlocks(28, new ECB(18, 47), new ECB(31, 48)), new ECBlocks(30, new ECB(34, 24), new ECB(34, 25)), new ECBlocks(30, new ECB(20, 15), new ECB(61, 16))));\r\n}\r\n\r\nmodule.exports = Version;","// var PerspectiveTransform = require('./PerspectiveTransform')\nvar BitMatrix = require('./BitMatix')\n\nvar GridSampler = {};\n\nGridSampler.checkAndNudgePoints = function (image, points, base) {\n\tvar width = base.width;\n\tvar height = base.height;\n\t// Check and nudge points from start until we see some that are OK:\n\tvar nudged = true;\n\tfor (var offset = 0; offset < points.length && nudged; offset += 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n\t// Check and nudge points from end:\n\tnudged = true;\n\tfor (var offset = points.length - 2; offset >= 0 && nudged; offset -= 2) {\n\t\tvar x = Math.floor(points[offset]);\n\t\tvar y = Math.floor(points[offset + 1]);\n\t\tif (x < - 1 || x > width || y < - 1 || y > height) {\n\t\t\tthrow \"Error.checkAndNudgePoints \";\n\t\t}\n\t\tnudged = false;\n\t\tif (x == - 1) {\n\t\t\tpoints[offset] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (x == width) {\n\t\t\tpoints[offset] = width - 1;\n\t\t\tnudged = true;\n\t\t}\n\t\tif (y == - 1) {\n\t\t\tpoints[offset + 1] = 0.0;\n\t\t\tnudged = true;\n\t\t}\n\t\telse if (y == height) {\n\t\t\tpoints[offset + 1] = height - 1;\n\t\t\tnudged = true;\n\t\t}\n\t}\n}\n\nGridSampler.sampleGrid3 = function (image, base, dimension, transform) {\n\tvar bits = new BitMatrix(dimension);\n\tvar points = new Array(dimension << 1);\n\tfor (var y = 0; y < dimension; y++) {\n\t\tvar max = points.length;\n\t\tvar iValue = y + 0.5;\n\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\tpoints[x] = (x >> 1) + 0.5;\n\t\t\tpoints[x + 1] = iValue;\n\t\t}\n\t\ttransform.transformPoints1(points);\n\t\t// Quick check to see if points transformed to something inside the image;\n\t\t// sufficient to check the endpoints\n\t\tGridSampler.checkAndNudgePoints(image, points, base);\n\t\ttry {\n\t\t\tfor (var x = 0; x < max; x += 2) {\n\t\t\t\t//var xpoint = (Math.floor( points[x]) * 4) + (Math.floor( points[x + 1]) * base.width * 4);\n\t\t\t\tvar bit = image[Math.floor(points[x]) + base.width * Math.floor(points[x + 1])];\n\t\t\t\t//qrcode.imagedata.data[xpoint] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+1] = bit?255:0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+2] = 0;\n\t\t\t\t//qrcode.imagedata.data[xpoint+3] = 255;\n\t\t\t\t//bits[x >> 1][ y]=bit;\n\t\t\t\tif (bit)\n\t\t\t\t\tbits.set_Renamed(x >> 1, y);\n\t\t\t}\n\t\t}\n\t\tcatch (aioobe) {\n\t\t\t// This feels wrong, but, sometimes if the finder patterns are misidentified, the resulting\n\t\t\t// transform gets \"twisted\" such that it maps a straight line of points to a set of points\n\t\t\t// whose endpoints are in bounds, but others are not. There is probably some mathematical\n\t\t\t// way to detect this about the transformation that I don't know yet.\n\t\t\t// This results in an ugly runtime exception despite our clever checks above -- can't have\n\t\t\t// that. We could check each point's coordinates but that feels duplicative. We settle for\n\t\t\t// catching and wrapping ArrayIndexOutOfBoundsException.\n\t\t\tthrow \"Error.checkAndNudgePoints\";\n\t\t}\n\t}\n\treturn bits;\n}\n\n// GridSampler.sampleGridx = function (image, base, dimension, p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY) {\n// \tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);\n\n// \treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n// }\n\nmodule.exports = GridSampler;","function PerspectiveTransform(a11, a21, a31, a12, a22, a32, a13, a23, a33) {\n\tthis.a11 = a11;\n\tthis.a12 = a12;\n\tthis.a13 = a13;\n\tthis.a21 = a21;\n\tthis.a22 = a22;\n\tthis.a23 = a23;\n\tthis.a31 = a31;\n\tthis.a32 = a32;\n\tthis.a33 = a33;\n\tthis.transformPoints1 = function (points) {\n\t\tvar max = points.length;\n\t\tvar a11 = this.a11;\n\t\tvar a12 = this.a12;\n\t\tvar a13 = this.a13;\n\t\tvar a21 = this.a21;\n\t\tvar a22 = this.a22;\n\t\tvar a23 = this.a23;\n\t\tvar a31 = this.a31;\n\t\tvar a32 = this.a32;\n\t\tvar a33 = this.a33;\n\t\tfor (var i = 0; i < max; i += 2) {\n\t\t\tvar x = points[i];\n\t\t\tvar y = points[i + 1];\n\t\t\tvar denominator = a13 * x + a23 * y + a33;\n\t\t\tpoints[i] = (a11 * x + a21 * y + a31) / denominator;\n\t\t\tpoints[i + 1] = (a12 * x + a22 * y + a32) / denominator;\n\t\t}\n\t}\n\tthis.transformPoints2 = function (xValues, yValues) {\n\t\tvar n = xValues.length;\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tvar x = xValues[i];\n\t\t\tvar y = yValues[i];\n\t\t\tvar denominator = this.a13 * x + this.a23 * y + this.a33;\n\t\t\txValues[i] = (this.a11 * x + this.a21 * y + this.a31) / denominator;\n\t\t\tyValues[i] = (this.a12 * x + this.a22 * y + this.a32) / denominator;\n\t\t}\n\t}\n\n\tthis.buildAdjoint = function () {\n\t\t// Adjoint is the transpose of the cofactor matrix:\n\t\treturn new PerspectiveTransform(this.a22 * this.a33 - this.a23 * this.a32, this.a23 * this.a31 - this.a21 * this.a33, this.a21 * this.a32 - this.a22 * this.a31, this.a13 * this.a32 - this.a12 * this.a33, this.a11 * this.a33 - this.a13 * this.a31, this.a12 * this.a31 - this.a11 * this.a32, this.a12 * this.a23 - this.a13 * this.a22, this.a13 * this.a21 - this.a11 * this.a23, this.a11 * this.a22 - this.a12 * this.a21);\n\t}\n\tthis.times = function (other) {\n\t\treturn new PerspectiveTransform(this.a11 * other.a11 + this.a21 * other.a12 + this.a31 * other.a13, this.a11 * other.a21 + this.a21 * other.a22 + this.a31 * other.a23, this.a11 * other.a31 + this.a21 * other.a32 + this.a31 * other.a33, this.a12 * other.a11 + this.a22 * other.a12 + this.a32 * other.a13, this.a12 * other.a21 + this.a22 * other.a22 + this.a32 * other.a23, this.a12 * other.a31 + this.a22 * other.a32 + this.a32 * other.a33, this.a13 * other.a11 + this.a23 * other.a12 + this.a33 * other.a13, this.a13 * other.a21 + this.a23 * other.a22 + this.a33 * other.a23, this.a13 * other.a31 + this.a23 * other.a32 + this.a33 * other.a33);\n\t}\n\n}\n\nPerspectiveTransform.quadrilateralToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3, x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p) {\n\n\tvar qToS = this.quadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3);\n\tvar sToQ = this.squareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p);\n\treturn sToQ.times(qToS);\n}\n\nPerspectiveTransform.squareToQuadrilateral = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\tvar dy2 = y3 - y2;\n\tvar dy3 = y0 - y1 + y2 - y3;\n\tif (dy2 == 0.0 && dy3 == 0.0) {\n\t\treturn new PerspectiveTransform(x1 - x0, x2 - x1, x0, y1 - y0, y2 - y1, y0, 0.0, 0.0, 1.0);\n\t}\n\telse {\n\t\tvar dx1 = x1 - x2;\n\t\tvar dx2 = x3 - x2;\n\t\tvar dx3 = x0 - x1 + x2 - x3;\n\t\tvar dy1 = y1 - y2;\n\t\tvar denominator = dx1 * dy2 - dx2 * dy1;\n\t\tvar a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n\t\tvar a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n\t\treturn new PerspectiveTransform(x1 - x0 + a13 * x1, x3 - x0 + a23 * x3, x0, y1 - y0 + a13 * y1, y3 - y0 + a23 * y3, y0, a13, a23, 1.0);\n\t}\n}\n\nPerspectiveTransform.quadrilateralToSquare = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n\t// Here, the adjoint serves as the inverse:\n\treturn this.squareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3).buildAdjoint();\n}\n\nmodule.exports = PerspectiveTransform;","var AlignmentPatternFinder = require('./Alignment')\nvar FinderPatternFinder = require('./Findpat')\nvar Version = require('./Version')\nvar GridSampler = require('./GridSampler')\nvar PerspectiveTransform = require('./PerspectiveTransform')\n\nfunction DetectorResult(bits, points) {\n\tthis.bits = bits;\n\tthis.points = points;\n}\n\n\nfunction Detector(imageArray,base) {\n\tthis.image = imageArray;\n\tthis.resultPointCallback = null;\n\n\tthis.sizeOfBlackWhiteBlackRun = function (fromX, fromY, toX, toY) {\n\t\t// Mild variant of Bresenham's algorithm;\n\t\t// see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\n\t\tvar steep = Math.abs(toY - fromY) > Math.abs(toX - fromX);\n\t\tif (steep) {\n\t\t\tvar temp = fromX;\n\t\t\tfromX = fromY;\n\t\t\tfromY = temp;\n\t\t\ttemp = toX;\n\t\t\ttoX = toY;\n\t\t\ttoY = temp;\n\t\t}\n\n\t\tvar dx = Math.abs(toX - fromX);\n\t\tvar dy = Math.abs(toY - fromY);\n\t\tvar error = - dx >> 1;\n\t\tvar ystep = fromY < toY ? 1 : - 1;\n\t\tvar xstep = fromX < toX ? 1 : - 1;\n\t\tvar state = 0; // In black pixels, looking for white, first or second time\n\t\tfor (var x = fromX, y = fromY; x != toX; x += xstep) {\n\n\t\t\tvar realX = steep ? y : x;\n\t\t\tvar realY = steep ? x : y;\n\t\t\tif (state == 1) {\n\t\t\t\t// In white pixels, looking for black\n\t\t\t\tif (this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!this.image[realX + realY * base.width]) {\n\t\t\t\t\tstate++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (state == 3) {\n\t\t\t\t// Found black, white, black, and stumbled back onto white; done\n\t\t\t\tvar diffX = x - fromX;\n\t\t\t\tvar diffY = y - fromY;\n\t\t\t\treturn Math.sqrt((diffX * diffX + diffY * diffY));\n\t\t\t}\n\t\t\terror += dy;\n\t\t\tif (error > 0) {\n\t\t\t\tif (y == toY) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ty += ystep;\n\t\t\t\terror -= dx;\n\t\t\t}\n\t\t}\n\t\tvar diffX2 = toX - fromX;\n\t\tvar diffY2 = toY - fromY;\n\t\treturn Math.sqrt((diffX2 * diffX2 + diffY2 * diffY2));\n\t}\n\n\n\tthis.sizeOfBlackWhiteBlackRunBothWays = function (fromX, fromY, toX, toY) {\n\n\t\tvar result = this.sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY);\n\n\t\t// Now count other way -- don't run off image though of course\n\t\tvar scale = 1.0;\n\t\tvar otherToX = fromX - (toX - fromX);\n\t\tif (otherToX < 0) {\n\t\t\tscale = fromX / (fromX - otherToX);\n\t\t\totherToX = 0;\n\t\t}\n\t\telse if (otherToX >= base.width) {\n\t\t\tscale = (base.width - 1 - fromX) / (otherToX - fromX);\n\t\t\totherToX = base.width - 1;\n\t\t}\n\t\tvar otherToY = Math.floor(fromY - (toY - fromY) * scale);\n\n\t\tscale = 1.0;\n\t\tif (otherToY < 0) {\n\t\t\tscale = fromY / (fromY - otherToY);\n\t\t\totherToY = 0;\n\t\t}\n\t\telse if (otherToY >= base.height) {\n\t\t\tscale = (base.height - 1 - fromY) / (otherToY - fromY);\n\t\t\totherToY = base.height - 1;\n\t\t}\n\t\totherToX = Math.floor(fromX + (otherToX - fromX) * scale);\n\n\t\tresult += this.sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY);\n\t\treturn result - 1.0; // -1 because we counted the middle pixel twice\n\t}\n\n\n\n\tthis.calculateModuleSizeOneWay = function (pattern, otherPattern) {\n\t\tvar moduleSizeEst1 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(pattern.X), Math.floor(pattern.Y), Math.floor(otherPattern.X), Math.floor(otherPattern.Y));\n\t\tvar moduleSizeEst2 = this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(otherPattern.X), Math.floor(otherPattern.Y), Math.floor(pattern.X), Math.floor(pattern.Y));\n\t\tif (isNaN(moduleSizeEst1)) {\n\t\t\treturn moduleSizeEst2 / 7.0;\n\t\t}\n\t\tif (isNaN(moduleSizeEst2)) {\n\t\t\treturn moduleSizeEst1 / 7.0;\n\t\t}\n\t\t// Average them, and divide by 7 since we've counted the width of 3 black modules,\n\t\t// and 1 white and 1 black module on either side. Ergo, divide sum by 14.\n\t\treturn (moduleSizeEst1 + moduleSizeEst2) / 14.0;\n\t}\n\n\n\tthis.calculateModuleSize = function (topLeft, topRight, bottomLeft) {\n\t\t// Take the average\n\t\treturn (this.calculateModuleSizeOneWay(topLeft, topRight) + this.calculateModuleSizeOneWay(topLeft, bottomLeft)) / 2.0;\n\t}\n\n\tthis.distance = function (pattern1, pattern2) {\n\t\tvar xDiff = pattern1.X - pattern2.X;\n\t\tvar yDiff = pattern1.Y - pattern2.Y;\n\t\treturn Math.sqrt((xDiff * xDiff + yDiff * yDiff));\n\t}\n\tthis.computeDimension = function (topLeft, topRight, bottomLeft, moduleSize) {\n\n\t\tvar tltrCentersDimension = Math.round(this.distance(topLeft, topRight) / moduleSize);\n\t\tvar tlblCentersDimension = Math.round(this.distance(topLeft, bottomLeft) / moduleSize);\n\t\tvar dimension = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7;\n\t\tswitch (dimension & 0x03) {\n\n\t\t\t// mod 4\n\t\t\tcase 0:\n\t\t\t\tdimension++;\n\t\t\t\tbreak;\n\t\t\t// 1? do nothing\n\n\t\t\tcase 2:\n\t\t\t\tdimension--;\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\tthrow \"Error\";\n\t\t}\n\t\treturn dimension;\n\t}\n\n\tthis.findAlignmentInRegion = function (overallEstModuleSize, estAlignmentX, estAlignmentY, allowanceFactor) {\n\t\t// Look for an alignment pattern (3 modules in size) around where it\n\t\t// should be\n\t\tvar allowance = Math.floor(allowanceFactor * overallEstModuleSize);\n\t\tvar alignmentAreaLeftX = Math.max(0, estAlignmentX - allowance);\n\t\tvar alignmentAreaRightX = Math.min(base.width - 1, estAlignmentX + allowance);\n\t\tif (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) {\n\t\t\tthrow \"Error\";\n\t\t}\n\n\t\tvar alignmentAreaTopY = Math.max(0, estAlignmentY - allowance);\n\t\tvar alignmentAreaBottomY = Math.min(base.height - 1, estAlignmentY + allowance);\n\n\t\tvar alignmentFinder = new AlignmentPatternFinder(this.image, base, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, this.resultPointCallback);\n\t\treturn alignmentFinder.find();\n\t}\n\n\tthis.createTransform = function (topLeft, topRight, bottomLeft, alignmentPattern, dimension) {\n\t\tvar dimMinusThree = dimension - 3.5;\n\t\tvar bottomRightX;\n\t\tvar bottomRightY;\n\t\tvar sourceBottomRightX;\n\t\tvar sourceBottomRightY;\n\t\tif (alignmentPattern != null) {\n\t\t\tbottomRightX = alignmentPattern.X;\n\t\t\tbottomRightY = alignmentPattern.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0;\n\t\t}\n\t\telse {\n\t\t\t// Don't have an alignment pattern, just make up the bottom-right point\n\t\t\tbottomRightX = (topRight.X - topLeft.X) + bottomLeft.X;\n\t\t\tbottomRightY = (topRight.Y - topLeft.Y) + bottomLeft.Y;\n\t\t\tsourceBottomRightX = sourceBottomRightY = dimMinusThree;\n\t\t}\n\n\t\tvar transform = PerspectiveTransform.quadrilateralToQuadrilateral(3.5, 3.5, dimMinusThree, 3.5, sourceBottomRightX, sourceBottomRightY, 3.5, dimMinusThree, topLeft.X, topLeft.Y, topRight.X, topRight.Y, bottomRightX, bottomRightY, bottomLeft.X, bottomLeft.Y);\n\n\t\treturn transform;\n\t}\n\n\tthis.sampleGrid = function (image, transform, dimension) {\n\n\t\treturn GridSampler.sampleGrid3(image, base, dimension, transform);\n\t}\n\n\tthis.processFinderPatternInfo = function (info) {\n\n\t\tvar topLeft = info.TopLeft;\n\t\tvar topRight = info.TopRight;\n\t\tvar bottomLeft = info.BottomLeft;\n\n\t\tvar moduleSize = this.calculateModuleSize(topLeft, topRight, bottomLeft);\n\t\tif (moduleSize < 1.0) {\n\t\t\tthrow \"Error\";\n\t\t}\n\t\tvar dimension = this.computeDimension(topLeft, topRight, bottomLeft, moduleSize);\n\t\tvar provisionalVersion = Version.getProvisionalVersionForDimension(dimension);\n\t\tvar modulesBetweenFPCenters = provisionalVersion.DimensionForVersion - 7;\n\n\t\tvar alignmentPattern = null;\n\t\t// Anything above version 1 has an alignment pattern\n\t\tif (provisionalVersion.AlignmentPatternCenters.length > 0) {\n\n\t\t\t// Guess where a \"bottom right\" finder pattern would have been\n\t\t\tvar bottomRightX = topRight.X - topLeft.X + bottomLeft.X;\n\t\t\tvar bottomRightY = topRight.Y - topLeft.Y + bottomLeft.Y;\n\n\t\t\t// Estimate that alignment pattern is closer by 3 modules\n\t\t\t// from \"bottom right\" to known top left location\n\t\t\tvar correctionToTopLeft = 1.0 - 3.0 / modulesBetweenFPCenters;\n\t\t\tvar estAlignmentX = Math.floor(topLeft.X + correctionToTopLeft * (bottomRightX - topLeft.X));\n\t\t\tvar estAlignmentY = Math.floor(topLeft.Y + correctionToTopLeft * (bottomRightY - topLeft.Y));\n\n\t\t\t// Kind of arbitrary -- expand search radius before giving up\n\t\t\tfor (var i = 4; i <= 16; i <<= 1) {\n\t\t\t\t//try\n\t\t\t\t//{\n\t\t\t\talignmentPattern = this.findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, i);\n\t\t\t\tbreak;\n\t\t\t\t//}\n\t\t\t\t//catch (re)\n\t\t\t\t//{\n\t\t\t\t// try next round\n\t\t\t\t//}\n\t\t\t}\n\t\t\t// If we didn't find alignment pattern... well try anyway without it\n\t\t}\n\n\t\tvar transform = this.createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension);\n\n\t\tvar bits = this.sampleGrid(this.image, transform, dimension);\n\n\t\tvar points;\n\t\tif (alignmentPattern == null) {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight);\n\t\t}else {\n\t\t\tpoints = new Array(bottomLeft, topLeft, topRight, alignmentPattern);\n\t\t}\n\t\treturn new DetectorResult(bits, points);\n\t}\n\n\n\n\tthis.detect = function () {\n\t\tvar info = new FinderPatternFinder(base).findFinderPattern(this.image);\n\n\t\treturn this.processFinderPatternInfo(info);\n\t}\n}\n\nmodule.exports = Detector;\n","var addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nfunction GF256Poly(field, coefficients) {\r\n\tif (coefficients == null || coefficients.length == 0) {\r\n\t\tthrow \"System.ArgumentException\";\r\n\t}\r\n\tthis.field = field;\r\n\tvar coefficientsLength = coefficients.length;\r\n\tif (coefficientsLength > 1 && coefficients[0] == 0) {\r\n\t\t// Leading term must be non-zero for anything except the constant polynomial \"0\"\r\n\t\tvar firstNonZero = 1;\r\n\t\twhile (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) {\r\n\t\t\tfirstNonZero++;\r\n\t\t}\r\n\t\tif (firstNonZero == coefficientsLength) {\r\n\t\t\tthis.coefficients = field.Zero.coefficients;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.coefficients = new Array(coefficientsLength - firstNonZero);\r\n\t\t\tfor (var i = 0; i < this.coefficients.length; i++)this.coefficients[i] = 0;\r\n\t\t\t//Array.Copy(coefficients, firstNonZero, this.coefficients, 0, this.coefficients.length);\r\n\t\t\tfor (var ci = 0; ci < this.coefficients.length; ci++)this.coefficients[ci] = coefficients[firstNonZero + ci];\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tthis.coefficients = coefficients;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.coefficients[0] == 0;\r\n\t});\r\n\tthis.__defineGetter__(\"Degree\", function () {\r\n\t\treturn this.coefficients.length - 1;\r\n\t});\r\n\tthis.__defineGetter__(\"Coefficients\", function () {\r\n\t\treturn this.coefficients;\r\n\t});\r\n\r\n\tthis.getCoefficient = function (degree) {\r\n\t\treturn this.coefficients[this.coefficients.length - 1 - degree];\r\n\t}\r\n\r\n\tthis.evaluateAt = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\t// Just return the x^0 coefficient\r\n\t\t\treturn this.getCoefficient(0);\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tif (a == 1) {\r\n\t\t\t// Just the sum of the coefficients\r\n\t\t\tvar result = 0;\r\n\t\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\t\tresult = addOrSubtract(result, this.coefficients[i]);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\tvar result2 = this.coefficients[0];\r\n\t\tfor (var i = 1; i < size; i++) {\r\n\t\t\tresult2 = addOrSubtract(this.field.multiply(a, result2), this.coefficients[i]);\r\n\t\t}\r\n\t\treturn result2;\r\n\t}\r\n\r\n\tthis.addOrSubtract = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero) {\r\n\t\t\treturn other;\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar smallerCoefficients = this.coefficients;\r\n\t\tvar largerCoefficients = other.coefficients;\r\n\t\tif (smallerCoefficients.length > largerCoefficients.length) {\r\n\t\t\tvar temp = smallerCoefficients;\r\n\t\t\tsmallerCoefficients = largerCoefficients;\r\n\t\t\tlargerCoefficients = temp;\r\n\t\t}\r\n\t\tvar sumDiff = new Array(largerCoefficients.length);\r\n\t\tvar lengthDiff = largerCoefficients.length - smallerCoefficients.length;\r\n\t\t// Copy high-order terms only found in higher-degree polynomial's coefficients\r\n\t\t//Array.Copy(largerCoefficients, 0, sumDiff, 0, lengthDiff);\r\n\t\tfor (var ci = 0; ci < lengthDiff; ci++)sumDiff[ci] = largerCoefficients[ci];\r\n\r\n\t\tfor (var i = lengthDiff; i < largerCoefficients.length; i++) {\r\n\t\t\tsumDiff[i] = addOrSubtract(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\r\n\t\t}\r\n\r\n\t\treturn new GF256Poly(field, sumDiff);\r\n\t}\r\n\tthis.multiply1 = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (this.Zero || other.Zero) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar aCoefficients = this.coefficients;\r\n\t\tvar aLength = aCoefficients.length;\r\n\t\tvar bCoefficients = other.coefficients;\r\n\t\tvar bLength = bCoefficients.length;\r\n\t\tvar product = new Array(aLength + bLength - 1);\r\n\t\tfor (var i = 0; i < aLength; i++) {\r\n\t\t\tvar aCoeff = aCoefficients[i];\r\n\t\t\tfor (var j = 0; j < bLength; j++) {\r\n\t\t\t\tproduct[i + j] = addOrSubtract(product[i + j], this.field.multiply(aCoeff, bCoefficients[j]));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiply2 = function (scalar) {\r\n\t\tif (scalar == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tif (scalar == 1) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size);\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], scalar);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.multiplyByMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.field.Zero;\r\n\t\t}\r\n\t\tvar size = this.coefficients.length;\r\n\t\tvar product = new Array(size + degree);\r\n\t\tfor (var i = 0; i < product.length; i++)product[i] = 0;\r\n\t\tfor (var i = 0; i < size; i++) {\r\n\t\t\tproduct[i] = this.field.multiply(this.coefficients[i], coefficient);\r\n\t\t}\r\n\t\treturn new GF256Poly(this.field, product);\r\n\t}\r\n\tthis.divide = function (other) {\r\n\t\tif (this.field != other.field) {\r\n\t\t\tthrow \"GF256Polys do not have same GF256 field\";\r\n\t\t}\r\n\t\tif (other.Zero) {\r\n\t\t\tthrow \"Divide by 0\";\r\n\t\t}\r\n\r\n\t\tvar quotient = this.field.Zero;\r\n\t\tvar remainder = this;\r\n\r\n\t\tvar denominatorLeadingTerm = other.getCoefficient(other.Degree);\r\n\t\tvar inverseDenominatorLeadingTerm = this.field.inverse(denominatorLeadingTerm);\r\n\r\n\t\twhile (remainder.Degree >= other.Degree && !remainder.Zero) {\r\n\t\t\tvar degreeDifference = remainder.Degree - other.Degree;\r\n\t\t\tvar scale = this.field.multiply(remainder.getCoefficient(remainder.Degree), inverseDenominatorLeadingTerm);\r\n\t\t\tvar term = other.multiplyByMonomial(degreeDifference, scale);\r\n\t\t\tvar iterationQuotient = this.field.buildMonomial(degreeDifference, scale);\r\n\t\t\tquotient = quotient.addOrSubtract(iterationQuotient);\r\n\t\t\tremainder = remainder.addOrSubtract(term);\r\n\t\t}\r\n\r\n\t\treturn new Array(quotient, remainder);\r\n\t}\r\n}\r\n\r\nmodule.exports = GF256Poly;","var GF256Poly = require('./GF256Poly')\r\n\r\nfunction GF256(primitive) {\r\n\tthis.expTable = new Array(256);\r\n\tthis.logTable = new Array(256);\r\n\tvar x = 1;\r\n\tfor (var i = 0; i < 256; i++) {\r\n\t\tthis.expTable[i] = x;\r\n\t\tx <<= 1; // x = x * 2; we're assuming the generator alpha is 2\r\n\t\tif (x >= 0x100) {\r\n\t\t\tx ^= primitive;\r\n\t\t}\r\n\t}\r\n\tfor (var i = 0; i < 255; i++) {\r\n\t\tthis.logTable[this.expTable[i]] = i;\r\n\t}\r\n\t// logTable[0] == 0 but this should never be used\r\n\tvar at0 = new Array(1); at0[0] = 0;\r\n\tthis.zero = new GF256Poly(this, new Array(at0));\r\n\tvar at1 = new Array(1); at1[0] = 1;\r\n\tthis.one = new GF256Poly(this, new Array(at1));\r\n\r\n\tthis.__defineGetter__(\"Zero\", function () {\r\n\t\treturn this.zero;\r\n\t});\r\n\tthis.__defineGetter__(\"One\", function () {\r\n\t\treturn this.one;\r\n\t});\r\n\tthis.buildMonomial = function (degree, coefficient) {\r\n\t\tif (degree < 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\tif (coefficient == 0) {\r\n\t\t\treturn this.zero;\r\n\t\t}\r\n\t\tvar coefficients = new Array(degree + 1);\r\n\t\tfor (var i = 0; i < coefficients.length; i++)coefficients[i] = 0;\r\n\t\tcoefficients[0] = coefficient;\r\n\t\treturn new GF256Poly(this, coefficients);\r\n\t}\r\n\tthis.exp = function (a) {\r\n\t\treturn this.expTable[a];\r\n\t}\r\n\tthis.log = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArgumentException\";\r\n\t\t}\r\n\t\treturn this.logTable[a];\r\n\t}\r\n\tthis.inverse = function (a) {\r\n\t\tif (a == 0) {\r\n\t\t\tthrow \"System.ArithmeticException\";\r\n\t\t}\r\n\t\treturn this.expTable[255 - this.logTable[a]];\r\n\t}\r\n\tthis.multiply = function (a, b) {\r\n\t\tif (a == 0 || b == 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (a == 1) {\r\n\t\t\treturn b;\r\n\t\t}\r\n\t\tif (b == 1) {\r\n\t\t\treturn a;\r\n\t\t}\r\n\t\treturn this.expTable[(this.logTable[a] + this.logTable[b]) % 255];\r\n\t}\r\n}\r\n\r\nGF256.QR_CODE_FIELD = new GF256(0x011D);\r\nGF256.DATA_MATRIX_FIELD = new GF256(0x012D);\r\n\r\nGF256.addOrSubtract = function (a, b) {\r\n\treturn a ^ b;\r\n}\r\n\r\nmodule.exports = GF256;","\nvar utils = require('../utils');\nvar URShift = utils.URShift;\n\nvar DataMask = {};\n\nDataMask.forReference = function (reference) {\n\tif (reference < 0 || reference > 7) {\n\t\tthrow \"System.ArgumentException\";\n\t}\n\treturn DataMask.DATA_MASKS[reference];\n}\n\nfunction DataMask000() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((i + j) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask001() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i & 0x01) == 0;\n\t}\n}\n\nfunction DataMask010() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn j % 3 == 0;\n\t}\n}\n\nfunction DataMask011() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (i + j) % 3 == 0;\n\t}\n}\n\nfunction DataMask100() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn (((URShift(i, 1)) + (j / 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask101() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (temp & 0x01) + (temp % 3) == 0;\n\t}\n}\n\nfunction DataMask110() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\tvar temp = i * j;\n\t\treturn (((temp & 0x01) + (temp % 3)) & 0x01) == 0;\n\t}\n}\n\nfunction DataMask111() {\n\tthis.unmaskBitMatrix = function (bits, dimension) {\n\t\tfor (var i = 0; i < dimension; i++) {\n\t\t\tfor (var j = 0; j < dimension; j++) {\n\t\t\t\tif (this.isMasked(i, j)) {\n\t\t\t\t\tbits.flip(j, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tthis.isMasked = function (i, j) {\n\t\treturn ((((i + j) & 0x01) + ((i * j) % 3)) & 0x01) == 0;\n\t}\n}\n\nDataMask.DATA_MASKS = new Array(new DataMask000(), new DataMask001(), new DataMask010(), new DataMask011(), new DataMask100(), new DataMask101(), new DataMask110(), new DataMask111());\n\nmodule.exports = DataMask;","var DataMask = require('./DataMask')\r\nvar FormatInformation = require('./FormatInformation')\r\nvar Version = require('./Version')\r\n\r\nmodule.exports = function BitMatrixParser(bitMatrix) {\r\n\tvar dimension = bitMatrix.Dimension;\r\n\tif (dimension < 21 || (dimension & 0x03) != 1) {\r\n\t\tthrow \"Error BitMatrixParser\";\r\n\t}\r\n\tthis.bitMatrix = bitMatrix;\r\n\tthis.parsedVersion = null;\r\n\tthis.parsedFormatInfo = null;\r\n\r\n\tthis.copyBit = function (i, j, versionBits) {\r\n\t\treturn this.bitMatrix.get_Renamed(i, j) ? (versionBits << 1) | 0x1 : versionBits << 1;\r\n\t}\r\n\r\n\tthis.readFormatInformation = function () {\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Read top-left format info bits\r\n\t\tvar formatInfoBits = 0;\r\n\t\tfor (var i = 0; i < 6; i++) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tformatInfoBits = this.copyBit(7, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 8, formatInfoBits);\r\n\t\tformatInfoBits = this.copyBit(8, 7, formatInfoBits);\r\n\t\t// .. and skip a bit in the timing pattern ...\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try the top-right/bottom-left pattern\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tformatInfoBits = 0;\r\n\t\tvar iMin = dimension - 8;\r\n\t\tfor (var i = dimension - 1; i >= iMin; i--) {\r\n\t\t\tformatInfoBits = this.copyBit(i, 8, formatInfoBits);\r\n\t\t}\r\n\t\tfor (var j = dimension - 7; j < dimension; j++) {\r\n\t\t\tformatInfoBits = this.copyBit(8, j, formatInfoBits);\r\n\t\t}\r\n\r\n\t\tthis.parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits);\r\n\t\tif (this.parsedFormatInfo != null) {\r\n\t\t\treturn this.parsedFormatInfo;\r\n\t\t}\r\n\t\tthrow \"Error readFormatInformation\";\r\n\t}\r\n\tthis.readVersion = function () {\r\n\r\n\t\tif (this.parsedVersion != null) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\r\n\t\tvar provisionalVersion = (dimension - 17) >> 2;\r\n\t\tif (provisionalVersion <= 6) {\r\n\t\t\treturn Version.getVersionForNumber(provisionalVersion);\r\n\t\t}\r\n\r\n\t\t// Read top-right version info: 3 wide by 6 tall\r\n\t\tvar versionBits = 0;\r\n\t\tvar ijMin = dimension - 11;\r\n\t\tfor (var j = 5; j >= 0; j--) {\r\n\t\t\tfor (var i = dimension - 9; i >= ijMin; i--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\r\n\t\t// Hmm, failed. Try bottom left: 6 wide by 3 tall\r\n\t\tversionBits = 0;\r\n\t\tfor (var i = 5; i >= 0; i--) {\r\n\t\t\tfor (var j = dimension - 9; j >= ijMin; j--) {\r\n\t\t\t\tversionBits = this.copyBit(i, j, versionBits);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.parsedVersion = Version.decodeVersionInformation(versionBits);\r\n\t\tif (this.parsedVersion != null && this.parsedVersion.DimensionForVersion == dimension) {\r\n\t\t\treturn this.parsedVersion;\r\n\t\t}\r\n\t\tthrow \"Error readVersion\";\r\n\t}\r\n\tthis.readCodewords = function () {\r\n\r\n\t\tvar formatInfo = this.readFormatInformation();\r\n\t\tvar version = this.readVersion();\r\n\r\n\t\t// Get the data mask for the format used in this QR Code. This will exclude\r\n\t\t// some bits from reading as we wind through the bit matrix.\r\n\t\tvar dataMask = DataMask.forReference(formatInfo.DataMask);\r\n\t\tvar dimension = this.bitMatrix.Dimension;\r\n\t\tdataMask.unmaskBitMatrix(this.bitMatrix, dimension);\r\n\r\n\t\tvar functionPattern = version.buildFunctionPattern();\r\n\r\n\t\tvar readingUp = true;\r\n\t\tvar result = new Array(version.TotalCodewords);\r\n\t\tvar resultOffset = 0;\r\n\t\tvar currentByte = 0;\r\n\t\tvar bitsRead = 0;\r\n\t\t// Read columns in pairs, from right to left\r\n\t\tfor (var j = dimension - 1; j > 0; j -= 2) {\r\n\t\t\tif (j == 6) {\r\n\t\t\t\t// Skip whole column with vertical alignment pattern;\r\n\t\t\t\t// saves time and makes the other code proceed more cleanly\r\n\t\t\t\tj--;\r\n\t\t\t}\r\n\t\t\t// Read alternatingly from bottom to top then top to bottom\r\n\t\t\tfor (var count = 0; count < dimension; count++) {\r\n\t\t\t\tvar i = readingUp ? dimension - 1 - count : count;\r\n\t\t\t\tfor (var col = 0; col < 2; col++) {\r\n\t\t\t\t\t// Ignore bits covered by the function pattern\r\n\t\t\t\t\tif (!functionPattern.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t// Read a bit\r\n\t\t\t\t\t\tbitsRead++;\r\n\t\t\t\t\t\tcurrentByte <<= 1;\r\n\t\t\t\t\t\tif (this.bitMatrix.get_Renamed(j - col, i)) {\r\n\t\t\t\t\t\t\tcurrentByte |= 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// If we've made a whole byte, save it off\r\n\t\t\t\t\t\tif (bitsRead == 8) {\r\n\t\t\t\t\t\t\tresult[resultOffset++] = currentByte;\r\n\t\t\t\t\t\t\tbitsRead = 0;\r\n\t\t\t\t\t\t\tcurrentByte = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treadingUp ^= true; // readingUp = !readingUp; // switch directions\r\n\t\t}\r\n\t\tif (resultOffset != version.TotalCodewords) {\r\n\t\t\tthrow \"Error readCodewords\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","/*\r\n Ported to JavaScript by Lazar Laszlo 2011 \r\n \r\n lazarsoft@gmail.com, www.lazarsoft.info\r\n \r\n*/\r\n\r\n/*\r\n*\r\n* Copyright 2007 ZXing authors\r\n*\r\n* Licensed under the Apache License, Version 2.0 (the \"License\");\r\n* you may not use this file except in compliance with the License.\r\n* You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing, software\r\n* distributed under the License is distributed on an \"AS IS\" BASIS,\r\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n* See the License for the specific language governing permissions and\r\n* limitations under the License.\r\n*/\r\n\r\n\r\nfunction DataBlock(numDataCodewords, codewords) {\r\n\tthis.numDataCodewords = numDataCodewords;\r\n\tthis.codewords = codewords;\r\n\r\n\tthis.__defineGetter__(\"NumDataCodewords\", function () {\r\n\t\treturn this.numDataCodewords;\r\n\t});\r\n\tthis.__defineGetter__(\"Codewords\", function () {\r\n\t\treturn this.codewords;\r\n\t});\r\n}\r\n\r\nDataBlock.getDataBlocks = function (rawCodewords, version, ecLevel) {\r\n\r\n\tif (rawCodewords.length != version.TotalCodewords) {\r\n\t\tthrow \"ArgumentException\";\r\n\t}\r\n\r\n\t// Figure out the number and size of data blocks used by this version and\r\n\t// error correction level\r\n\tvar ecBlocks = version.getECBlocksForLevel(ecLevel);\r\n\r\n\t// First count the total number of data blocks\r\n\tvar totalBlocks = 0;\r\n\tvar ecBlockArray = ecBlocks.getECBlocks();\r\n\tfor (var i = 0; i < ecBlockArray.length; i++) {\r\n\t\ttotalBlocks += ecBlockArray[i].Count;\r\n\t}\r\n\r\n\t// Now establish DataBlocks of the appropriate size and number of data codewords\r\n\tvar result = new Array(totalBlocks);\r\n\tvar numResultBlocks = 0;\r\n\tfor (var j = 0; j < ecBlockArray.length; j++) {\r\n\t\tvar ecBlock = ecBlockArray[j];\r\n\t\tfor (var i = 0; i < ecBlock.Count; i++) {\r\n\t\t\tvar numDataCodewords = ecBlock.DataCodewords;\r\n\t\t\tvar numBlockCodewords = ecBlocks.ECCodewordsPerBlock + numDataCodewords;\r\n\t\t\tresult[numResultBlocks++] = new DataBlock(numDataCodewords, new Array(numBlockCodewords));\r\n\t\t}\r\n\t}\r\n\r\n\t// All blocks have the same amount of data, except that the last n\r\n\t// (where n may be 0) have 1 more byte. Figure out where these start.\r\n\tvar shorterBlocksTotalCodewords = result[0].codewords.length;\r\n\tvar longerBlocksStartAt = result.length - 1;\r\n\twhile (longerBlocksStartAt >= 0) {\r\n\t\tvar numCodewords = result[longerBlocksStartAt].codewords.length;\r\n\t\tif (numCodewords == shorterBlocksTotalCodewords) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tlongerBlocksStartAt--;\r\n\t}\r\n\tlongerBlocksStartAt++;\r\n\r\n\tvar shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks.ECCodewordsPerBlock;\r\n\t// The last elements of result may be 1 element longer;\r\n\t// first fill out as many elements as all of them have\r\n\tvar rawCodewordsOffset = 0;\r\n\tfor (var i = 0; i < shorterBlocksNumDataCodewords; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tresult[j].codewords[i] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\t// Fill out the last data block in the longer ones\r\n\tfor (var j = longerBlocksStartAt; j < numResultBlocks; j++) {\r\n\t\tresult[j].codewords[shorterBlocksNumDataCodewords] = rawCodewords[rawCodewordsOffset++];\r\n\t}\r\n\t// Now add in error correction blocks\r\n\tvar max = result[0].codewords.length;\r\n\tfor (var i = shorterBlocksNumDataCodewords; i < max; i++) {\r\n\t\tfor (var j = 0; j < numResultBlocks; j++) {\r\n\t\t\tvar iOffset = j < longerBlocksStartAt ? i : i + 1;\r\n\t\t\tresult[j].codewords[iOffset] = rawCodewords[rawCodewordsOffset++];\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n\r\nmodule.exports = DataBlock;","var sizeOfDataLengthInfo = [\r\n\t[10, 9, 8, 8], \r\n\t[12, 11, 16, 10], \r\n\t[14, 13, 16, 12]\r\n];\r\n\r\nfunction QRCodeDataBlockReader(blocks, version, numErrorCorrectionCode) {\r\n\tthis.blockPointer = 0;\r\n\tthis.bitPointer = 7;\r\n\tthis.dataLength = 0;\r\n\tthis.blocks = blocks;\r\n\tthis.numErrorCorrectionCode = numErrorCorrectionCode;\r\n\tif (version <= 9)\r\n\t\tthis.dataLengthMode = 0;\r\n\telse if (version >= 10 && version <= 26)\r\n\t\tthis.dataLengthMode = 1;\r\n\telse if (version >= 27 && version <= 40)\r\n\t\tthis.dataLengthMode = 2;\r\n\r\n\tthis.getNextBits = function (numBits) {\r\n\t\tvar bits = 0;\r\n\t\tif (numBits < this.bitPointer + 1) {\r\n\t\t\t// next word fits into current data block\r\n\t\t\tvar mask = 0;\r\n\t\t\tfor (var i = 0; i < numBits; i++) {\r\n\t\t\t\tmask += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask <<= (this.bitPointer - numBits + 1);\r\n\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask) >> (this.bitPointer - numBits + 1);\r\n\t\t\tthis.bitPointer -= numBits;\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 8) {\r\n\t\t\t// next word crosses 2 data blocks\r\n\t\t\tvar mask1 = 0;\r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tbits = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\t\t\tbits += ((this.blocks[this.blockPointer]) >> (8 - (numBits - (this.bitPointer + 1))));\r\n\r\n\t\t\tthis.bitPointer = this.bitPointer - numBits % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse if (numBits < this.bitPointer + 1 + 16) {\r\n\t\t\t// next word crosses 3 data blocks\r\n\t\t\tvar mask1 = 0; // mask of first block\r\n\t\t\tvar mask3 = 0; // mask of 3rd block\r\n\t\t\t//bitPointer + 1 : number of bits of the 1st block\r\n\t\t\t//8 : number of the 2nd block (note that use already 8bits because next word uses 3 data blocks)\r\n\t\t\t//numBits - (bitPointer + 1 + 8) : number of bits of the 3rd block \r\n\t\t\tfor (var i = 0; i < this.bitPointer + 1; i++) {\r\n\t\t\t\tmask1 += (1 << i);\r\n\t\t\t}\r\n\t\t\tvar bitsFirstBlock = (this.blocks[this.blockPointer] & mask1) << (numBits - (this.bitPointer + 1));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tvar bitsSecondBlock = this.blocks[this.blockPointer] << (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tthis.blockPointer++;\r\n\r\n\t\t\tfor (var i = 0; i < numBits - (this.bitPointer + 1 + 8); i++) {\r\n\t\t\t\tmask3 += (1 << i);\r\n\t\t\t}\r\n\t\t\tmask3 <<= 8 - (numBits - (this.bitPointer + 1 + 8));\r\n\t\t\tvar bitsThirdBlock = (this.blocks[this.blockPointer] & mask3) >> (8 - (numBits - (this.bitPointer + 1 + 8)));\r\n\r\n\t\t\tbits = bitsFirstBlock + bitsSecondBlock + bitsThirdBlock;\r\n\t\t\tthis.bitPointer = this.bitPointer - (numBits - 8) % 8;\r\n\t\t\tif (this.bitPointer < 0) {\r\n\t\t\t\tthis.bitPointer = 8 + this.bitPointer;\r\n\t\t\t}\r\n\t\t\treturn bits;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\tthis.NextMode = function () {\r\n\t\tif ((this.blockPointer > this.blocks.length - this.numErrorCorrectionCode - 2))\r\n\t\t\treturn 0;\r\n\t\telse\r\n\t\t\treturn this.getNextBits(4);\r\n\t}\r\n\tthis.getDataLength = function (modeIndicator) {\r\n\t\tvar index = 0;\r\n\t\twhile (true) {\r\n\t\t\tif ((modeIndicator >> index) == 1)\r\n\t\t\t\tbreak;\r\n\t\t\tindex++;\r\n\t\t}\r\n\r\n\t\treturn this.getNextBits(sizeOfDataLengthInfo[this.dataLengthMode][index]);\r\n\t}\r\n\tthis.getRomanAndFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tvar tableRomanAndFigure = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '$', '%', '*', '+', '-', '.', '/', ':');\r\n\t\tdo {\r\n\t\t\tif (length > 1) {\r\n\t\t\t\tintData = this.getNextBits(11);\r\n\t\t\t\tvar firstLetter = Math.floor(intData / 45);\r\n\t\t\t\tvar secondLetter = intData % 45;\r\n\t\t\t\tstrData += tableRomanAndFigure[firstLetter];\r\n\t\t\t\tstrData += tableRomanAndFigure[secondLetter];\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(6);\r\n\t\t\t\tstrData += tableRomanAndFigure[intData];\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.getFigureString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar strData = \"\";\r\n\t\tdo {\r\n\t\t\tif (length >= 3) {\r\n\t\t\t\tintData = this.getNextBits(10);\r\n\t\t\t\tif (intData < 100)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 3;\r\n\t\t\t}\r\n\t\t\telse if (length == 2) {\r\n\t\t\t\tintData = this.getNextBits(7);\r\n\t\t\t\tif (intData < 10)\r\n\t\t\t\t\tstrData += \"0\";\r\n\t\t\t\tlength -= 2;\r\n\t\t\t}\r\n\t\t\telse if (length == 1) {\r\n\t\t\t\tintData = this.getNextBits(4);\r\n\t\t\t\tlength -= 1;\r\n\t\t\t}\r\n\t\t\tstrData += intData;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\t\treturn strData;\r\n\t}\r\n\tthis.get8bitByteArray = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar output = new Array();\r\n\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(8);\r\n\t\t\toutput.push(intData);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\t\treturn output;\r\n\t}\r\n\tthis.getKanjiString = function (dataLength) {\r\n\t\tvar length = dataLength;\r\n\t\tvar intData = 0;\r\n\t\tvar unicodeString = \"\";\r\n\t\tdo {\r\n\t\t\tintData = this.getNextBits(13);\r\n\t\t\tvar lowerByte = intData % 0xC0;\r\n\t\t\tvar higherByte = intData / 0xC0;\r\n\r\n\t\t\tvar tempWord = (higherByte << 8) + lowerByte;\r\n\t\t\tvar shiftjisWord = 0;\r\n\t\t\tif (tempWord + 0x8140 <= 0x9FFC) {\r\n\t\t\t\t// between 8140 - 9FFC on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0x8140;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// between E040 - EBBF on Shift_JIS character set\r\n\t\t\t\tshiftjisWord = tempWord + 0xC140;\r\n\t\t\t}\r\n\r\n\t\t\t//var tempByte = new Array(0,0);\r\n\t\t\t//tempByte[0] = (sbyte) (shiftjisWord >> 8);\r\n\t\t\t//tempByte[1] = (sbyte) (shiftjisWord & 0xFF);\r\n\t\t\t//unicodeString += new String(SystemUtils.ToCharArray(SystemUtils.ToByteArray(tempByte)));\r\n\t\t\tunicodeString += String.fromCharCode(shiftjisWord);\r\n\t\t\tlength--;\r\n\t\t}\r\n\t\twhile (length > 0);\r\n\r\n\r\n\t\treturn unicodeString;\r\n\t}\r\n\r\n\tthis.parseECIValue = function () {\r\n\t\tvar intData = 0;\r\n\t\tvar firstByte = this.getNextBits(8);\r\n\t\tif ((firstByte & 0x80) == 0) {\r\n\t\t\tintData = firstByte & 0x7F;\r\n\t\t}\r\n\t\tif ((firstByte & 0xC0) == 0x80) {\r\n\t\t\t// two bytes\r\n\t\t\tvar secondByte = this.getNextBits(8);\r\n\t\t\tintData = ((firstByte & 0x3F) << 8) | secondByte;\r\n\t\t}\r\n\t\tif ((firstByte & 0xE0) == 0xC0) {\r\n\t\t\t// three bytes\r\n\t\t\tvar secondThirdBytes = this.getNextBits(8);;\r\n\t\t\tintData = ((firstByte & 0x1F) << 16) | secondThirdBytes;\r\n\t\t}\r\n\t\treturn intData;\r\n\t}\r\n\r\n\tthis.__defineGetter__(\"DataByte\", function () {\r\n\t\tvar output = new Array();\r\n\t\tvar MODE_NUMBER = 1;\r\n\t\tvar MODE_ROMAN_AND_NUMBER = 2;\r\n\t\tvar MODE_8BIT_BYTE = 4;\r\n\t\tvar MODE_ECI = 7;\r\n\t\tvar MODE_KANJI = 8;\r\n\t\tdo {\r\n\t\t\tvar mode = this.NextMode();\r\n\t\t\t//canvas.println(\"mode: \" + mode);\r\n\t\t\tif (mode == 0) {\r\n\t\t\t\tif (output.length > 0)\r\n\t\t\t\t\tbreak;\r\n\t\t\t\telse\r\n\t\t\t\t\tthrow \"Empty data block\";\r\n\t\t\t}\r\n\t\t\tif (mode != MODE_NUMBER && mode != MODE_ROMAN_AND_NUMBER && mode != MODE_8BIT_BYTE && mode != MODE_KANJI && mode != MODE_ECI) {\r\n\t\t\t\tthrow \"Invalid mode: \" + mode + \" in (block:\" + this.blockPointer + \" bit:\" + this.bitPointer + \")\";\r\n\t\t\t}\r\n\r\n\t\t\tif (mode == MODE_ECI) {\r\n\t\t\t\tvar temp_sbyteArray3 = this.parseECIValue();\r\n\t\t\t\t//output.push(temp_sbyteArray3);\r\n\t\t\t}\r\n\t\t\telse {\r\n\r\n\t\t\t\tvar dataLength = this.getDataLength(mode);\r\n\t\t\t\tif (dataLength < 1)\r\n\t\t\t\t\tthrow \"Invalid data length: \" + dataLength;\r\n\t\t\t\tswitch (mode) {\r\n\r\n\t\t\t\t\tcase MODE_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_ROMAN_AND_NUMBER:\r\n\t\t\t\t\t\tvar temp_str = this.getRomanAndFigureString(dataLength);\r\n\t\t\t\t\t\tvar ta = new Array(temp_str.length);\r\n\t\t\t\t\t\tfor (var j = 0; j < temp_str.length; j++)\r\n\t\t\t\t\t\t\tta[j] = temp_str.charCodeAt(j);\r\n\t\t\t\t\t\toutput.push(ta);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_8BIT_BYTE:\r\n\t\t\t\t\t\tvar temp_sbyteArray3 = this.get8bitByteArray(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_sbyteArray3);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase MODE_KANJI:\r\n\t\t\t\t\t\tvar temp_str = this.getKanjiString(dataLength);\r\n\t\t\t\t\t\toutput.push(temp_str);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile (true);\r\n\t\treturn output;\r\n\t});\r\n}\r\n\r\nmodule.exports = QRCodeDataBlockReader;\r\n","var GF256 = require('./GF256')\r\nvar BitMatrixParser = require('./BitMatrixParser')\r\nvar DataBlock = require('./DataBlock')\r\nvar QRCodeDataBlockReader = require('./QRCodeDataBlockReader')\r\nvar ReedSolomonDecoder = require('./ReedSolomonDecoder')\r\n\r\nvar Decoder = {};\r\nDecoder.rsDecoder = new ReedSolomonDecoder(GF256.QR_CODE_FIELD);\r\n\r\nDecoder.correctErrors = function (codewordBytes, numDataCodewords) {\r\n\tvar numCodewords = codewordBytes.length;\r\n\t// First read into an array of ints\r\n\tvar codewordsInts = new Array(numCodewords);\r\n\tfor (var i = 0; i < numCodewords; i++) {\r\n\t\tcodewordsInts[i] = codewordBytes[i] & 0xFF;\r\n\t}\r\n\tvar numECCodewords = codewordBytes.length - numDataCodewords;\r\n\ttry {\r\n\t\tDecoder.rsDecoder.decode(codewordsInts, numECCodewords);\r\n\t\t//var corrector = new ReedSolomon(codewordsInts, numECCodewords);\r\n\t\t//corrector.correct();\r\n\t}\r\n\tcatch (rse) {\r\n\t\tthrow rse;\r\n\t}\r\n\t// Copy back into array of bytes -- only need to worry about the bytes that were data\r\n\t// We don't care about errors in the error-correction codewords\r\n\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\tcodewordBytes[i] = codewordsInts[i];\r\n\t}\r\n}\r\n\r\nDecoder.decode = function (bits) {\r\n\tvar parser = new BitMatrixParser(bits);\r\n\tvar version = parser.readVersion(); //版本信息\r\n\tvar ecLevel = parser.readFormatInformation().ErrorCorrectionLevel; //格式信息\r\n\r\n\t// Read codewords\r\n\tvar codewords = parser.readCodewords();\r\n\r\n\t// Separate into data blocks\r\n\tvar dataBlocks = DataBlock.getDataBlocks(codewords, version, ecLevel);\r\n\r\n\t// Count total number of data bytes\r\n\tvar totalBytes = 0;\r\n\tfor (var i = 0; i < dataBlocks.length; i++) {\r\n\t\ttotalBytes += dataBlocks[i].NumDataCodewords;\r\n\t}\r\n\tvar resultBytes = new Array(totalBytes);\r\n\tvar resultOffset = 0;\r\n\r\n\t// Error-correct and copy data blocks together into a stream of bytes\r\n\tfor (var j = 0; j < dataBlocks.length; j++) {\r\n\t\tvar dataBlock = dataBlocks[j];\r\n\t\tvar codewordBytes = dataBlock.Codewords;\r\n\t\tvar numDataCodewords = dataBlock.NumDataCodewords;\r\n\t\tDecoder.correctErrors(codewordBytes, numDataCodewords);\r\n\t\tfor (var i = 0; i < numDataCodewords; i++) {\r\n\t\t\tresultBytes[resultOffset++] = codewordBytes[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// Decode the contents of that stream of bytes\r\n\tvar reader = new QRCodeDataBlockReader(resultBytes, version.VersionNumber, ecLevel.Bits);\r\n\treturn reader;\r\n\t//return DecodedBitStreamParser.decode(resultBytes, version, ecLevel);\r\n}\r\n\r\nmodule.exports = Decoder;","var GF256 = require('./GF256')\r\nvar GF256Poly = require('./GF256Poly')\r\n\r\nmodule.exports = function ReedSolomonDecoder(field) {\r\n\tthis.field = field;\r\n\tthis.decode = function (received, twoS) {\r\n\t\tvar poly = new GF256Poly(this.field, received);\r\n\t\tvar syndromeCoefficients = new Array(twoS);\r\n\t\tfor (var i = 0; i < syndromeCoefficients.length; i++)syndromeCoefficients[i] = 0;\r\n\t\tvar dataMatrix = false;//this.field.Equals(GF256.DATA_MATRIX_FIELD);\r\n\t\tvar noError = true;\r\n\t\tfor (var i = 0; i < twoS; i++) {\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tvar evalu = poly.evaluateAt(this.field.exp(dataMatrix ? i + 1 : i));\r\n\t\t\tsyndromeCoefficients[syndromeCoefficients.length - 1 - i] = evalu;\r\n\t\t\tif (evalu != 0) {\r\n\t\t\t\tnoError = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (noError) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar syndrome = new GF256Poly(this.field, syndromeCoefficients);\r\n\t\tvar sigmaOmega = this.runEuclideanAlgorithm(this.field.buildMonomial(twoS, 1), syndrome, twoS);\r\n\t\tvar sigma = sigmaOmega[0];\r\n\t\tvar omega = sigmaOmega[1];\r\n\t\tvar errorLocations = this.findErrorLocations(sigma);\r\n\t\tvar errorMagnitudes = this.findErrorMagnitudes(omega, errorLocations, dataMatrix);\r\n\t\tfor (var i = 0; i < errorLocations.length; i++) {\r\n\t\t\tvar position = received.length - 1 - this.field.log(errorLocations[i]);\r\n\t\t\tif (position < 0) {\r\n\t\t\t\tthrow \"ReedSolomonException Bad error location\";\r\n\t\t\t}\r\n\t\t\treceived[position] = GF256.addOrSubtract(received[position], errorMagnitudes[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tthis.runEuclideanAlgorithm = function (a, b, R) {\r\n\t\t// Assume a's degree is >= b's\r\n\t\tif (a.Degree < b.Degree) {\r\n\t\t\tvar temp = a;\r\n\t\t\ta = b;\r\n\t\t\tb = temp;\r\n\t\t}\r\n\r\n\t\tvar rLast = a;\r\n\t\tvar r = b;\r\n\t\tvar sLast = this.field.One;\r\n\t\tvar s = this.field.Zero;\r\n\t\tvar tLast = this.field.Zero;\r\n\t\tvar t = this.field.One;\r\n\r\n\t\t// Run Euclidean algorithm until r's degree is less than R/2\r\n\t\twhile (r.Degree >= Math.floor(R / 2)) {\r\n\t\t\tvar rLastLast = rLast;\r\n\t\t\tvar sLastLast = sLast;\r\n\t\t\tvar tLastLast = tLast;\r\n\t\t\trLast = r;\r\n\t\t\tsLast = s;\r\n\t\t\ttLast = t;\r\n\r\n\t\t\t// Divide rLastLast by rLast, with quotient in q and remainder in r\r\n\t\t\tif (rLast.Zero) {\r\n\t\t\t\t// Oops, Euclidean algorithm already terminated?\r\n\t\t\t\tthrow \"r_{i-1} was zero\";\r\n\t\t\t}\r\n\t\t\tr = rLastLast;\r\n\t\t\tvar q = this.field.Zero;\r\n\t\t\tvar denominatorLeadingTerm = rLast.getCoefficient(rLast.Degree);\r\n\t\t\tvar dltInverse = this.field.inverse(denominatorLeadingTerm);\r\n\t\t\twhile (r.Degree >= rLast.Degree && !r.Zero) {\r\n\t\t\t\tvar degreeDiff = r.Degree - rLast.Degree;\r\n\t\t\t\tvar scale = this.field.multiply(r.getCoefficient(r.Degree), dltInverse);\r\n\t\t\t\tq = q.addOrSubtract(this.field.buildMonomial(degreeDiff, scale));\r\n\t\t\t\tr = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\r\n\t\t\t\t//r.EXE();\r\n\t\t\t}\r\n\r\n\t\t\ts = q.multiply1(sLast).addOrSubtract(sLastLast);\r\n\t\t\tt = q.multiply1(tLast).addOrSubtract(tLastLast);\r\n\t\t}\r\n\r\n\t\tvar sigmaTildeAtZero = t.getCoefficient(0);\r\n\t\tif (sigmaTildeAtZero == 0) {\r\n\t\t\tthrow \"ReedSolomonException sigmaTilde(0) was zero\";\r\n\t\t}\r\n\r\n\t\tvar inverse = this.field.inverse(sigmaTildeAtZero);\r\n\t\tvar sigma = t.multiply2(inverse);\r\n\t\tvar omega = r.multiply2(inverse);\r\n\t\treturn new Array(sigma, omega);\r\n\t}\r\n\tthis.findErrorLocations = function (errorLocator) {\r\n\t\t// This is a direct application of Chien's search\r\n\t\tvar numErrors = errorLocator.Degree;\r\n\t\tif (numErrors == 1) {\r\n\t\t\t// shortcut\r\n\t\t\treturn new Array(errorLocator.getCoefficient(1));\r\n\t\t}\r\n\t\tvar result = new Array(numErrors);\r\n\t\tvar e = 0;\r\n\t\tfor (var i = 1; i < 256 && e < numErrors; i++) {\r\n\t\t\tif (errorLocator.evaluateAt(i) == 0) {\r\n\t\t\t\tresult[e] = this.field.inverse(i);\r\n\t\t\t\te++;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (e != numErrors) {\r\n\t\t\tthrow \"Error locator degree does not match number of roots\";\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\tthis.findErrorMagnitudes = function (errorEvaluator, errorLocations, dataMatrix) {\r\n\t\t// This is directly applying Forney's Formula\r\n\t\tvar s = errorLocations.length;\r\n\t\tvar result = new Array(s);\r\n\t\tfor (var i = 0; i < s; i++) {\r\n\t\t\tvar xiInverse = this.field.inverse(errorLocations[i]);\r\n\t\t\tvar denominator = 1;\r\n\t\t\tfor (var j = 0; j < s; j++) {\r\n\t\t\t\tif (i != j) {\r\n\t\t\t\t\tdenominator = this.field.multiply(denominator, GF256.addOrSubtract(1, this.field.multiply(errorLocations[j], xiInverse)));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresult[i] = this.field.multiply(errorEvaluator.evaluateAt(xiInverse), this.field.inverse(denominator));\r\n\t\t\t// Thanks to sanfordsquires for this fix:\r\n\t\t\tif (dataMatrix) {\r\n\t\t\t\tresult[i] = this.field.multiply(result[i], xiInverse);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n}","var Detector = require('./lib/Detector');\nvar Decoder = require('./lib/Decoder');\nvar debug = false;\n\n\n/**\n * 返回获取指定位置的灰度的函数\n * @param {ImageData} data \n * @param {Object} base 一个有width,height信息\n */\nvar Pixel = function (data,base) {\n\treturn function(x,y){\n\t\tif (base.width < x || base.height < y) {\n\t\t\tthrow \"point error\";\n\t\t}\n\t\tvar point = (x * 4) + (y * base.width * 4)\n\t\treturn (data[point] * 33.33 + data[point + 1] * 33.33 + data[point + 2] * 33.33) / 100;\n\t}\n}\n\nvar binarize = function(data,base,th){\n\tvar ret = new Array(base.width * base.height);\n\tvar getPixel = Pixel(data,base); //\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray <= th ? true : false;\n }\n }\n return ret;\n}\n\nvar grayscale = function(data,base) {\n var buff = new ArrayBuffer(base.width * base.height);\n var ret = new Uint8Array(buff);\n //var ret = new Array(base.width*base.height);\n\tvar getPixel = Pixel(data,base);\n for (var y = 0; y < base.height; y++) {\n for (var x = 0; x < base.width; x++) {\n var gray = getPixel(x, y);\n ret[x + y * base.width] = gray;\n }\n }\n return ret;\n}\n\nvar getMiddleBrightnessPerArea = function (image,base) {\n var numSqrtArea = 4;\n //obtain middle brightness((min + max) / 2) per area\n var areaWidth = Math.floor(base.width / numSqrtArea);\n var areaHeight = Math.floor(base.height / numSqrtArea);\n var minmax = new Array(numSqrtArea);\n for (var i = 0; i < numSqrtArea; i++) {\n minmax[i] = new Array(numSqrtArea);\n for (var i2 = 0; i2 < numSqrtArea; i2++) {\n minmax[i][i2] = new Array(0, 0);\n }\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n minmax[ax][ay][0] = 0xFF;\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n var target = image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width];\n if (target < minmax[ax][ay][0])\n minmax[ax][ay][0] = target;\n if (target > minmax[ax][ay][1])\n minmax[ax][ay][1] = target;\n }\n }\n //minmax[ax][ay][0] = (minmax[ax][ay][0] + minmax[ax][ay][1]) / 2;\n }\n }\n var middle = new Array(numSqrtArea);\n for (var i3 = 0; i3 < numSqrtArea; i3++) {\n middle[i3] = new Array(numSqrtArea);\n }\n for (var ay = 0; ay < numSqrtArea; ay++) {\n for (var ax = 0; ax < numSqrtArea; ax++) {\n middle[ax][ay] = Math.floor((minmax[ax][ay][0] + minmax[ax][ay][1]) / 2);\n //Console.out.print(middle[ax][ay] + \",\");\n }\n //Console.out.println(\"\");\n }\n //Console.out.println(\"\");\n\n return middle;\n}\n\nvar grayScaleToBitmap = function (image,base) {\n var middle = getMiddleBrightnessPerArea(image,base);\n var sqrtNumArea = middle.length;\n var areaWidth = Math.floor(base.width / sqrtNumArea);\n var areaHeight = Math.floor(base.height / sqrtNumArea);\n\n var buff = new ArrayBuffer(base.width * base.height);\n var bitmap = new Uint8Array(buff);\n\n //var bitmap = new Array(base.height*base.width);\n\n for (var ay = 0; ay < sqrtNumArea; ay++) {\n for (var ax = 0; ax < sqrtNumArea; ax++) {\n for (var dy = 0; dy < areaHeight; dy++) {\n for (var dx = 0; dx < areaWidth; dx++) {\n bitmap[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] = (image[areaWidth * ax + dx + (areaHeight * ay + dy) * base.width] < middle[ax][ay]) ? true : false;\n }\n }\n }\n }\n return bitmap;\n}\n\nfunction decode(imageDate,debugfn){\n\tvar base = {\n\t\twidth: imageDate.width,\n\t\theight: imageDate.height,\n\t\tdebugfn: debugfn\n\t}\n\treturn process(imageDate.data,base)\n}\n\n// ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集)\nvar ECI_CHARSET = {\n\t3: 'iso-8859-1',\n\t20: 'shift_jis',\n\t25: 'utf-16be',\n\t26: 'utf-8',\n\t27: 'us-ascii'\n};\n\n// UTF-8 字节数组转字符串\nvar decodeUTF8 = function (bytes) {\n\tif (typeof TextDecoder !== 'undefined') {\n\t\treturn new TextDecoder('utf-8').decode(new Uint8Array(bytes));\n\t}\n\tvar str = \"\";\n\tvar i = 0;\n\twhile (i < bytes.length) {\n\t\tvar code = bytes[i++] & 0xFF;\n\t\tif (code < 0x80) {\n\t\t\tstr += String.fromCharCode(code);\n\t\t}\n\t\telse if (code < 0xE0) {\n\t\t\tstr += String.fromCharCode(((code & 0x1F) << 6) | (bytes[i++] & 0x3F));\n\t\t}\n\t\telse if (code < 0xF0) {\n\t\t\tstr += String.fromCharCode(((code & 0x0F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F));\n\t\t}\n\t\telse {\n\t\t\tvar cp = ((code & 0x07) << 18) | ((bytes[i++] & 0x3F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F);\n\t\t\tcp -= 0x10000;\n\t\t\tstr += String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);\n\t\t}\n\t}\n\treturn str;\n}\n\n// UTF-16 字节数组转字符串(isLE=false 时先把 BE 转成 LE 统一处理)\nvar decodeUTF16 = function (bytes, isLE) {\n\tif (!isLE) {\n\t\t// UTF-16BE -> 交换字节序\n\t\tfor (var i = 0; i + 1 < bytes.length; i += 2) {\n\t\t\tvar t = bytes[i];\n\t\t\tbytes[i] = bytes[i + 1];\n\t\t\tbytes[i + 1] = t;\n\t\t}\n\t}\n\tif (typeof TextDecoder !== 'undefined') {\n\t\treturn new TextDecoder('utf-16le').decode(new Uint8Array(bytes));\n\t}\n\t// 兜底:手写 UTF-16LE 解码(含代理对)\n\tvar str = \"\";\n\tfor (var i = 0; i + 1 < bytes.length; i += 2) {\n\t\tvar code = bytes[i] | (bytes[i + 1] << 8);\n\t\tif (code >= 0xD800 && code <= 0xDBFF && i + 3 < bytes.length) {\n\t\t\tvar low = bytes[i + 2] | (bytes[i + 3] << 8);\n\t\t\tif (low >= 0xDC00 && low <= 0xDFFF) {\n\t\t\t\tstr += String.fromCharCode(code, low);\n\t\t\t\ti += 2;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tstr += String.fromCharCode(code);\n\t}\n\treturn str;\n}\n\n// 8bit 字节段解码:按 ECI 声明 -> BOM -> 启发式检测 -> UTF-8 的顺序判断编码方式\nvar bytesToString = function (bytes, eci) {\n\tvar len = bytes.length;\n\tif (len == 0) {\n\t\treturn \"\";\n\t}\n\n\t// 1. 优先按 ECI 声明的字符集解码\n\tif (eci && ECI_CHARSET[eci]) {\n\t\tvar charset = ECI_CHARSET[eci];\n\t\tif (charset == 'utf-16be') {\n\t\t\treturn decodeUTF16(bytes, false);\n\t\t}\n\t\tif (charset == 'utf-8') {\n\t\t\treturn decodeUTF8(bytes);\n\t\t}\n\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\ttry {\n\t\t\t\treturn new TextDecoder(charset).decode(new Uint8Array(bytes));\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\t// 环境不支持该字符集时继续走下面的检测\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. BOM 检测\n\tif (len >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) {\n\t\treturn decodeUTF16(bytes.slice(2), true); // UTF-16LE\n\t}\n\tif (len >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) {\n\t\treturn decodeUTF16(bytes.slice(2), false); // UTF-16BE\n\t}\n\tif (len >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) {\n\t\treturn decodeUTF8(bytes.slice(3)); // UTF-8 with BOM\n\t}\n\n\t// 3. 无 BOM 时启发式检测 UTF-16(偶数长度且奇/偶位存在成片 0x00 字节)\n\tif (len >= 4 && len % 2 == 0) {\n\t\tvar evenZeros = 0;\n\t\tvar oddZeros = 0;\n\t\tfor (var i = 0; i < len; i += 2) {\n\t\t\tif (bytes[i] == 0) {\n\t\t\t\tevenZeros++;\n\t\t\t}\n\t\t\tif (bytes[i + 1] == 0) {\n\t\t\t\toddZeros++;\n\t\t\t}\n\t\t}\n\t\tvar half = len / 2;\n\t\tif (oddZeros > half * 0.7) {\n\t\t\treturn decodeUTF16(bytes, true); // 奇数位大量 0x00 -> UTF-16LE\n\t\t}\n\t\tif (evenZeros > half * 0.7) {\n\t\t\treturn decodeUTF16(bytes, false); // 偶数位大量 0x00 -> UTF-16BE\n\t\t}\n\t}\n\n\t// 4. 兜底默认 UTF-8\n\treturn decodeUTF8(bytes);\n}\n\nvar process = function (data,base) {\n // var start = new Date().getTime();\n // var image = grayScaleToBitmap(grayscale(),base);\n // var image = binarize(128);\n\tvar image = binarize(data,base,153); //转为位图;\n\t\n\tdebug && base.debugfn && base.debugfn(image,base.width);\n\n\t// 位图转为QR矩阵\n var detector = new Detector(image,base);\n var qRCodeMatrix = detector.detect();\n\n if (debug, base.debugfn) {\n\t\tvar _imgdata = [];\n for (var y = 0; y < qRCodeMatrix.bits.Height; y++) {\n for (var x = 0; x < qRCodeMatrix.bits.Width; x++) {\n\t\t\t\t_imgdata.push(qRCodeMatrix.bits.get_Renamed(x, y) ? true : 0)\n }\n\t\t}\n\t\tdebugfn(_imgdata,qRCodeMatrix.bits.Width);\n }\n\n\t// 解析QR矩阵\n var reader = Decoder.decode(qRCodeMatrix.bits);\n\n // 先读取编码方式(mode indicator),按编码方式将数据直接转成字符串\n var MODE_NUMBER = 1;\n var MODE_ROMAN_AND_NUMBER = 2;\n var MODE_8BIT_BYTE = 4;\n var MODE_ECI = 7;\n var MODE_KANJI = 8;\n\n var str = \"\";\n var eci = 0; // ECI 声明的字符集编号,作用于后续字节段\n while (true) {\n var mode = reader.NextMode();\n if (mode == 0)\n break;\n if (mode == MODE_ECI) {\n eci = reader.parseECIValue();\n continue;\n }\n var dataLength = reader.getDataLength(mode);\n if (dataLength < 1)\n throw \"Invalid data length: \" + dataLength;\n switch (mode) {\n case MODE_NUMBER: // 数字模式\n str += reader.getFigureString(dataLength);\n break;\n case MODE_ROMAN_AND_NUMBER: // 字母数字模式\n str += reader.getRomanAndFigureString(dataLength);\n break;\n case MODE_8BIT_BYTE: // 8bit 字节模式,先判断编码方式(ECI/BOM/启发式)再解码\n str += bytesToString(reader.get8bitByteArray(dataLength), eci);\n break;\n case MODE_KANJI: // 汉字(日文)模式\n str += reader.getKanjiString(dataLength);\n break;\n default:\n throw \"Invalid mode: \" + mode;\n }\n }\n\n // var end = new Date().getTime();\n // var time = end - start;\n // console.log(\"Time:\" + time + \" Code: \"+str);\n return str;\n}\n\nmodule.exports = decode;","\nvar qrDecode = require('./src/QRDecode');\nvar decodeByDom = function (dom) {\n\tvar canvas = document.createElement(\"canvas\")\n\tvar ctx = canvas.getContext('2d')\n\tvar isVideo = dom.tagName == 'VIDEO'\n\tcanvas.width = isVideo ? dom.videoWidth : dom.width;\n\tcanvas.height = isVideo ? dom.videoHeight : dom.height;\n\tctx.drawImage(dom, 0, 0, canvas.width, canvas.height);\n\tvar data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\treturn qrDecode(data)\n}\n\nvar decodeByUrl = (src, cb) => {\n\tvar img = new Image();\n\timg.crossOrigin=\"anonymous\";\n\timg.src = src;\n\timg.onload = function () {\n\t\ttry {\n\t\t\tcb(null, decodeByDom(img));\n\t\t} catch (e) {\n\t\t\tcb(e);\n\t\t}\n\t}\n\timg.onerror = cb;\n}\n\nqrDecode.decodeByDom = decodeByDom;\nqrDecode.decodeByUrl = decodeByUrl;\nmodule.exports = qrDecode;"],"names":["AlignmentPattern","posX","posY","estimatedModuleSize","this","x","y","count","__defineGetter__","Math","floor","incrementCount","aboutEquals","moduleSize","i","j","abs","moduleSizeDiff","module","image","base","startX","startY","width","height","resultPointCallback","possibleCenters","Array","crossCheckStateCount","centerFromEnd","stateCount","end","foundPatternCross","maxVariance","crossCheckVertical","startI","centerJ","maxCount","originalStateCountTotal","maxI","NaN","stateCountTotal","handlePossibleCenter","centerI","isNaN","max","length","index","point","push","foundPossibleResultPoint","find","maxJ","middleI","iGen","currentState","confirmed","FinderPattern","FinderPatternInfo","patternCenters","bottomLeft","topLeft","topRight","hasSkipped","totalModuleSize","CrossCheckStateCount","crossCheckHorizontal","startJ","found","center","selectBestPatterns","startSize","square","centerValue","EstimatedModuleSize","average","sort","center1","center2","dA","dB","stdDev","sqrt","limit","pattern","splice","a","b","findRowSkip","firstConfirmedCenter","Count","X","Y","haveMultiplyConfirmedCenters","confirmedCount","totalDeviation","findFinderPattern","iSkip","done","rowSkip","patternInfo","patterns","distance","pattern1","pattern2","xDiff","yDiff","pointA","pointB","pointC","zeroOneDistance","oneTwoDistance","zeroTwoDistance","bX","bY","crossProductZ","temp","orderBestPatterns","number","bits","ErrorCorrectionLevel","ordinal","name","ordinal_Renamed_Field","L","M","Q","H","FOR_BITS","URShift","utils","FORMAT_INFO_DECODE_LOOKUP","BITS_SET_IN_HALF_BYTE","FormatInformation","formatInfo","errorCorrectionLevel","getErrorCorrectionLevel","dataMask","GetHashCode","Equals","o","other","numBitsDiffering","decodeFormatInformation","maskedFormatInfo","doDecodeFormatInformation","bestDifference","bestFormatInfo","decodeInfo","targetInfo","bitsDifference","rowSize","get_Renamed","offset","set_Renamed","flip","clear","setRegion","left","top","right","bottom","ECB","dataCodewords","ECBlocks","ecCodewordsPerBlock","ecBlocks1","ecBlocks2","ecBlocks","NumBlocks","total","getECBlocks","Version","versionNumber","alignmentPatternCenters","ecBlocks3","ecBlocks4","ecCodewords","ECCodewordsPerBlock","ecbArray","ecBlock","DataCodewords","totalCodewords","buildFunctionPattern","dimension","DimensionForVersion","bitMatrix","BitMatrix","getECBlocksForLevel","ecLevel","VERSION_DECODE_INFO","VERSIONS","getVersionForNumber","getProvisionalVersionForDimension","iae","decodeVersionInformation","versionBits","bestVersion","targetVersion","GridSampler","points","nudged","transform","iValue","transformPoints1","checkAndNudgePoints","aioobe","PerspectiveTransform","a11","a21","a31","a12","a22","a32","a13","a23","a33","denominator","transformPoints2","xValues","yValues","n","buildAdjoint","times","quadrilateralToQuadrilateral","x0","y0","x1","y1","x2","y2","x3","y3","x0p","y0p","x1p","y1p","x2p","y2p","x3p","y3p","qToS","quadrilateralToSquare","squareToQuadrilateral","dy2","dy3","dx1","dx2","dx3","dy1","DetectorResult","imageArray","sizeOfBlackWhiteBlackRun","fromX","fromY","toX","toY","steep","dx","dy","error","ystep","xstep","state","realX","realY","diffX","diffY","diffX2","diffY2","sizeOfBlackWhiteBlackRunBothWays","result","scale","otherToX","otherToY","calculateModuleSizeOneWay","otherPattern","moduleSizeEst1","moduleSizeEst2","calculateModuleSize","computeDimension","round","findAlignmentInRegion","overallEstModuleSize","estAlignmentX","estAlignmentY","allowanceFactor","allowance","alignmentAreaLeftX","alignmentAreaRightX","min","alignmentAreaTopY","alignmentAreaBottomY","AlignmentPatternFinder","createTransform","alignmentPattern","bottomRightX","bottomRightY","sourceBottomRightX","sourceBottomRightY","dimMinusThree","sampleGrid","sampleGrid3","processFinderPatternInfo","info","TopLeft","TopRight","BottomLeft","provisionalVersion","modulesBetweenFPCenters","AlignmentPatternCenters","correctionToTopLeft","detect","FinderPatternFinder","addOrSubtract","GF256Poly","field","coefficients","coefficientsLength","firstNonZero","Zero","ci","getCoefficient","degree","evaluateAt","size","result2","multiply","smallerCoefficients","largerCoefficients","sumDiff","lengthDiff","multiply1","aCoefficients","aLength","bCoefficients","bLength","product","aCoeff","multiply2","scalar","multiplyByMonomial","coefficient","divide","quotient","remainder","denominatorLeadingTerm","Degree","inverseDenominatorLeadingTerm","inverse","degreeDifference","term","iterationQuotient","buildMonomial","GF256","primitive","expTable","logTable","at0","zero","at1","one","exp","log","QR_CODE_FIELD","DATA_MATRIX_FIELD","DataMask","forReference","reference","DATA_MASKS","unmaskBitMatrix","isMasked","Dimension","parsedVersion","parsedFormatInfo","copyBit","readFormatInformation","formatInfoBits","iMin","readVersion","ijMin","readCodewords","version","functionPattern","readingUp","TotalCodewords","resultOffset","currentByte","bitsRead","col","DataBlock","numDataCodewords","codewords","getDataBlocks","rawCodewords","totalBlocks","ecBlockArray","numResultBlocks","numBlockCodewords","shorterBlocksTotalCodewords","longerBlocksStartAt","shorterBlocksNumDataCodewords","rawCodewordsOffset","iOffset","sizeOfDataLengthInfo","blocks","numErrorCorrectionCode","blockPointer","bitPointer","dataLength","dataLengthMode","getNextBits","numBits","mask","mask1","mask3","bitsFirstBlock","bitsSecondBlock","NextMode","getDataLength","modeIndicator","getRomanAndFigureString","intData","strData","tableRomanAndFigure","secondLetter","getFigureString","get8bitByteArray","output","getKanjiString","unicodeString","tempWord","shiftjisWord","String","fromCharCode","parseECIValue","firstByte","mode","temp_sbyteArray3","temp_str","ta","charCodeAt","Decoder","rsDecoder","decode","received","twoS","poly","syndromeCoefficients","noError","evalu","syndrome","sigmaOmega","runEuclideanAlgorithm","sigma","omega","errorLocations","findErrorLocations","errorMagnitudes","findErrorMagnitudes","position","R","rLast","r","sLast","One","s","tLast","t","rLastLast","sLastLast","tLastLast","q","dltInverse","degreeDiff","sigmaTildeAtZero","errorLocator","numErrors","e","errorEvaluator","dataMatrix","xiInverse","correctErrors","codewordBytes","numCodewords","codewordsInts","numECCodewords","rse","parser","BitMatrixParser","dataBlocks","totalBytes","NumDataCodewords","resultBytes","dataBlock","Codewords","QRCodeDataBlockReader","VersionNumber","Bits","ECI_CHARSET","3","20","25","26","27","decodeUTF8","bytes","TextDecoder","Uint8Array","str","code","cp","decodeUTF16","isLE","low","bytesToString","eci","len","charset","slice","evenZeros","oddZeros","half","process","data","th","ret","getPixel","Pixel","gray","binarize","qRCodeMatrix","Detector","debugfn","_imgdata","Height","Width","reader","imageDate","decodeByDom","dom","canvas","document","createElement","ctx","getContext","isVideo","tagName","videoWidth","videoHeight","drawImage","getImageData","qrDecode","decodeByUrl","src","cb","img","Image","crossOrigin","onload","onerror"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5ea7744 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12420 @@ +{ + "name": "qr-decode", + "version": "0.0.4", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "qr-decode", + "version": "0.0.4", + "license": "ISC", + "dependencies": { + "bmp-js": "^0.1.0", + "image-type": "^3.0.0", + "pako": "^1.0.6" + }, + "devDependencies": { + "bili": "^5.0.5", + "parcel": "^1.9.7" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz", + "integrity": "sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", + "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", + "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", + "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", + "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", + "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", + "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.29.7.tgz", + "integrity": "sha512-ajMX6QPcyomotqwpzhkYGxcK2i/us0rs1Qo9QvUpa+Fca0FTmqrzKrctoIYLMxcOhGZldGT/BAVkRGTWBiR8gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", + "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", + "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", + "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", + "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/template": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", + "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", + "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", + "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", + "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", + "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.29.7.tgz", + "integrity": "sha512-wRHeUjUjCZnMHmiO5bRgjFLcoEh7JyTdByOW11ahhwNa4V0bmeGEaIvt51yq0zQp2yWIpqfxXXPyUP6GFJZHOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-flow": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", + "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", + "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", + "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", + "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", + "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", + "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", + "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", + "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", + "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", + "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz", + "integrity": "sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", + "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", + "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", + "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", + "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", + "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz", + "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-syntax-typescript": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", + "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", + "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", + "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", + "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.29.7", + "@babel/plugin-syntax-import-attributes": "^7.29.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.29.7", + "@babel/plugin-transform-async-generator-functions": "^7.29.7", + "@babel/plugin-transform-async-to-generator": "^7.29.7", + "@babel/plugin-transform-block-scoped-functions": "^7.29.7", + "@babel/plugin-transform-block-scoping": "^7.29.7", + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-classes": "^7.29.7", + "@babel/plugin-transform-computed-properties": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-dotall-regex": "^7.29.7", + "@babel/plugin-transform-duplicate-keys": "^7.29.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-explicit-resource-management": "^7.29.7", + "@babel/plugin-transform-exponentiation-operator": "^7.29.7", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-for-of": "^7.29.7", + "@babel/plugin-transform-function-name": "^7.29.7", + "@babel/plugin-transform-json-strings": "^7.29.7", + "@babel/plugin-transform-literals": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-member-expression-literals": "^7.29.7", + "@babel/plugin-transform-modules-amd": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.7", + "@babel/plugin-transform-modules-umd": "^7.29.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-new-target": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/plugin-transform-object-rest-spread": "^7.29.7", + "@babel/plugin-transform-object-super": "^7.29.7", + "@babel/plugin-transform-optional-catch-binding": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7", + "@babel/plugin-transform-private-property-in-object": "^7.29.7", + "@babel/plugin-transform-property-literals": "^7.29.7", + "@babel/plugin-transform-regenerator": "^7.29.7", + "@babel/plugin-transform-regexp-modifiers": "^7.29.7", + "@babel/plugin-transform-reserved-words": "^7.29.7", + "@babel/plugin-transform-shorthand-properties": "^7.29.7", + "@babel/plugin-transform-spread": "^7.29.7", + "@babel/plugin-transform-sticky-regex": "^7.29.7", + "@babel/plugin-transform-template-literals": "^7.29.7", + "@babel/plugin-transform-typeof-symbol": "^7.29.7", + "@babel/plugin-transform-unicode-escapes": "^7.29.7", + "@babel/plugin-transform-unicode-property-regex": "^7.29.7", + "@babel/plugin-transform-unicode-regex": "^7.29.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz", + "integrity": "sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-typescript": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" + } + }, + "node_modules/@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-buble": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-buble/-/plugin-buble-0.21.3.tgz", + "integrity": "sha512-Iv8cCuFPnMdqV4pcyU+OrfjOfagPArRQ1PyQjx5KgHk3dARedI+8PNTLSMpJts0lQJr8yF2pAU4GxpxCBJ9HYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.0.8", + "@types/buble": "^0.19.2", + "buble": "^0.20.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-13.0.2.tgz", + "integrity": "sha512-9JXf2k8xqvMYfqmhgtB6eCgMN9fbxwF1XDF3mGKJc6pkAmt0jnsqurxQ0tC1akQKNSXCm7c3unQxa3zuxtZ7mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.3.4" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz", + "integrity": "sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deep-freeze": "^0.0.1", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@types/buble": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@types/buble/-/buble-0.19.2.tgz", + "integrity": "sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.25.0" + } + }, + "node_modules/@types/buble/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "26.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz", + "integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "node_modules/@types/q": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-to-html": { + "version": "0.6.15", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz", + "integrity": "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^2.0.0" + }, + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-equal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.2.tgz", + "integrity": "sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-array-method-boxes-properly": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.5.tgz", + "integrity": "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/assert": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-async-to-promises": { + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz", + "integrity": "sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha512-/AcxC8CZ6YzmKNfiH3+XLjJDbhED3qxSrd4uFNvJ91pcsPuwMNXxfjwHxhiYOidhpis0BiBu/gupOdv2EYyglg==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.10.tgz", + "integrity": "sha512-35JEvJ5/KKlbCHjMCsONI2w6HE88STjVdHk+C7d8LtcFxUjZR1KeLP9izofn2qs0KUxX5r4z73bwH/rd+JHacw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bili": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/bili/-/bili-5.0.5.tgz", + "integrity": "sha512-LLqoGrlU3/rAF8mqy4MUqtZcrp1rtThD+9l/3IG/Pl6105gpJFzR2nvvJPMFgWyMy8Tlo3d2MxlICgvuUycc6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.10.2", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.1", + "@babel/plugin-transform-react-jsx": "^7.10.1", + "@babel/preset-env": "^7.10.2", + "@babel/preset-typescript": "^7.10.1", + "@rollup/plugin-babel": "^5.0.3", + "@rollup/plugin-buble": "^0.21.3", + "@rollup/plugin-commonjs": "^13.0.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^8.0.1", + "@rollup/plugin-replace": "^2.3.3", + "babel-plugin-transform-async-to-promises": "^0.8.15", + "cac": "^6.5.10", + "chalk": "^4.1.0", + "joycon": "^2.2.5", + "ora": "^4.0.4", + "rollup": "^2.16.1", + "rollup-plugin-hashbang": "^2.2.2", + "rollup-plugin-postcss": "^3.1.2", + "rollup-plugin-terser": "^6.1.0", + "v8-compile-cache": "^2.1.1" + }, + "bin": { + "bili": "dist/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/bili/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bili/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/bili/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/bili/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bili/node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bili/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/bili/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/bili/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bili/node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bili/node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bili/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bili/node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/bili/node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bili/node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/bili/node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bili/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/bili/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bili/node_modules/ora": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", + "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bili/node_modules/ora/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bili/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bili/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bili/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.5.tgz", + "integrity": "sha512-Vq886eXykuP5E6HcKSSStP3bJgrE6In5WKxVUvJ8XGpWWYs2xZHWqUwzCtGgEtBcxyd57KBFDPFoUfNzdaHCNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + }, + "bin": { + "brfs": "bin/cmd.js" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.6.tgz", + "integrity": "sha512-sd+Q65fjlWCYWtZKXiKfrUc8d+4jtp/8f0W2NkwzLtoW4bI6UDnWusLWIurHnmurW0XShIRxpwiOX4EoPtXUAg==", + "dev": true, + "license": "ISC", + "dependencies": { + "bn.js": "^5.2.3", + "browserify-rsa": "^4.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.6.1", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.9", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buble": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/buble/-/buble-0.20.0.tgz", + "integrity": "sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^6.4.1", + "acorn-dynamic-import": "^4.0.0", + "acorn-jsx": "^5.2.0", + "chalk": "^2.4.2", + "magic-string": "^0.25.7", + "minimist": "^1.2.5", + "regexpu-core": "4.5.4" + }, + "bin": { + "buble": "bin/buble" + } + }, + "node_modules/buble/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buble/node_modules/acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "deprecated": "This is probably built in to whatever tool you're using. If you still need it... idk", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0" + } + }, + "node_modules/buble/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/buble/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/buble/node_modules/regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/buble/node_modules/regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/buble/node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true, + "license": "MIT" + }, + "node_modules/buble/node_modules/regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/buble/node_modules/unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/buble/node_modules/unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/buble/node_modules/unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/buble/node_modules/unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001806", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/cipher-base": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.8.tgz", + "integrity": "sha512-SceYGWXvdqlWa/OnQ5FQuV+NxvNmMRhMw/w9AHkH71hTzveND4BTYgvp16g+oITK47qbOl/3D0bl0iygehWAWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "license": "ISC", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.5.tgz", + "integrity": "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha512-XWOBwgy5nwBn76aA+6ybUGL/3JBnCtBX9Ay9/OWIpzKYWlVHMazvJ+WtHumfi+xxdPF440cWK7JCYtt8xDifew==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha512-VbGX1LQgQbf9l3cZ3qbUuC3hGqIEOGQFHAEHQ/Diaeo0yLgpgK5Rb8J+OcamIfQ9PbAU/fzBjVtQX3AhJHUvZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-modules-loader-core/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "0.3.x" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deasync": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.31.tgz", + "integrity": "sha512-/6/cXqkw4LPqBVK6H0Y3L4zT7yI3pxykxPXErQ2tDCw0LJyThWL5VpBCpUOWX0vPq2OnF1pzcXvlNnvCiOQJuA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + }, + "engines": { + "node": ">=0.11.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==", + "dev": true, + "license": "public domain" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.5.tgz", + "integrity": "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.6.0" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.399", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.399.tgz", + "integrity": "sha512-lEcqhErbHjXRvd41rnWLpzbyU/IXfIYo7QwaFWmxGeLiLyY2TBCdHnWY88vB+p3ubnihRypDm66panXl7TylLA==", + "dev": true, + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.5.tgz", + "integrity": "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract-get/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "is-callable": "^1.2.7", + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.8.tgz", + "integrity": "sha512-SceYGWXvdqlWa/OnQ5FQuV+NxvNmMRhMw/w9AHkH71hTzveND4BTYgvp16g+oITK47qbOl/3D0bl0iygehWAWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/falafel": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", + "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "isarray": "^2.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/falafel/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-type": { + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz", + "integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT" + }, + "node_modules/filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", + "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.1.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", + "dev": true, + "license": "BSD" + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha512-mB6rwkw1Z7z4z2RkFFTd/+q6Ug1gnCgjKAervAKgBeNI1mSr8E5EUWoYzFNOZsLHFArLfpk+O8X8qXC7uvuawQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", + "dev": true, + "license": "MIT" + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^1.0.1" + } + }, + "node_modules/html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha512-uVteDXUCs08M7QJx0eY6ue7qQztwIfknap81vAtNob2sdEPKa8PjPinx0vxbs2JONPamovZjMvKZWNW44/PBKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/htmlnano": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.9.tgz", + "integrity": "sha512-jWTtP3dCd7R8x/tt9DK3pvpcQd7HDMcRPUqPxr/i9989q2k5RHIhmlRDFeyQ/LSd8IKrteG8Ce5g0Ig4eGIipg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano": "^4.1.11", + "posthtml": "^0.15.1", + "purgecss": "^2.3.0", + "relateurl": "^0.2.7", + "srcset": "^3.0.0", + "svgo": "^1.3.2", + "terser": "^5.6.1", + "timsort": "^0.3.0", + "uncss": "^0.17.3" + } + }, + "node_modules/htmlnano/node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/htmlnano/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/htmlnano/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/htmlnano/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/htmlnano/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/htmlnano/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlnano/node_modules/posthtml": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.15.2.tgz", + "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "posthtml-parser": "^0.7.2", + "posthtml-render": "^1.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/htmlnano/node_modules/posthtml-parser": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.7.2.tgz", + "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlnano/node_modules/terser": { + "version": "5.49.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.0.tgz", + "integrity": "sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true, + "license": "ISC" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/image-type": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/image-type/-/image-type-3.1.0.tgz", + "integrity": "sha512-edYRXKQ3WD2yHXFGUbwoJVn5v7j1A6Z505uZUYIfzCwOOhPGLYSc3VOucF9fqbsaUbgb37DdjOU+WV4uo7ZooQ==", + "license": "MIT", + "dependencies": { + "file-type": "^10.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-from": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-from/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "dev": true, + "license": "MIT" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.2.tgz", + "integrity": "sha512-AIbwAcazqP3R65dGvqk1V+a+vE5Fg1yu/ZKMOiBWSUIXXiwQkYmXQcVa2O0nh0tSDKDFKxG2mY7dB1Sr4hEP1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.4.tgz", + "integrity": "sha512-bv5z95W0dDtLfKwDfkTNxaRxmISBD3eQBKJeVxv2AQ7MjuUnDNG7cIQqvFtMOUYhsILWHhMayWdoGqNqYYYjww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.2", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha512-eoGsQVAAyvLFRKnbt4jo7Il56agsH5I04pDymPoxRp/tnna5yiIpdNzvKPOy5G1Ff0zY/jfN2hClb7ju+sOrdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "html-tags": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/joycon": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-2.2.5.tgz", + "integrity": "sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.1.tgz", + "integrity": "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.6.tgz", + "integrity": "sha512-XTrf1gv7kXoVf1hbC3PAyAiPgR8Wz1blcrYIjEsUmr08BLksT41R8KbjmS9408C2ERx7v1JDLD/BkpLEttjfKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", + "deprecated": "This package is deprecated. Use structuredClone instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "vlq": "^0.2.2" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.5.tgz", + "integrity": "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/nan": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.28.0.tgz", + "integrity": "sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": "*" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.51", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", + "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/nwsapi": { + "version": "2.2.24", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.24.tgz", + "integrity": "sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==", + "dev": true, + "license": "MIT" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.8.tgz", + "integrity": "sha512-SceYGWXvdqlWa/OnQ5FQuV+NxvNmMRhMw/w9AHkH71hTzveND4BTYgvp16g+oITK47qbOl/3D0bl0iygehWAWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.9.tgz", + "integrity": "sha512-mt8YM6XwsTTovI+kdZdHSxoyF2DI59up034orlC9NfweclcWOt7CVascNNLp6U+bjFVCVCIh9PwS76tDM/rH8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.reduce": "^1.0.8", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "gopd": "^1.2.0", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", + "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parcel": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-1.12.4.tgz", + "integrity": "sha512-qfc74e2/R4pCoU6L/ZZnK9k3iDS6ir4uHea0e9th9w52eehcAGf2ido/iABq9PBXdsIOe4NSY3oUm7Khe7+S3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + }, + "bin": { + "parcel": "bin/cli.js" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", + "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "pbkdf2": "^3.1.5", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pbkdf2": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.6.tgz", + "integrity": "sha512-BT6eelPB1EyGHo8pC0o9Bl6k6SYVhKO1jEbd3lcTrtr7XHdjP8BW1YpfCV3G9Kwkxgattk+S5q2/RvuttCsS1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ripemd160": "^2.0.3", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.12", + "to-buffer": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true, + "license": "MIT" + }, + "node_modules/physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true, + "license": "MIT" + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss-load-config/node_modules/import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-from": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-load-config/node_modules/import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-2.0.0.tgz", + "integrity": "sha512-eqp+Bva+U2cwQO7dECJ8/V+X+uH1HduNeITB0CPPFAu6d/8LKQ32/j+p9rQ2YL1QytVcrNU0X+fBqgGmQIA1Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-modules-loader-core": "^1.1.0", + "generic-names": "^2.0.1", + "lodash.camelcase": "^4.3.0", + "postcss": "^7.0.1", + "string-hash": "^1.1.1" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha512-zF9+UIEvtpeqMGxhpeT9XaIevQSrBBCz9fi7SwfkmjVacsSj8DY5eFVgn+wY8I9vvdDDwK5xC8Myq4UkoLFIkA==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", + "dev": true, + "license": "ISC", + "dependencies": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", + "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "license": "MIT", + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true, + "license": "ISC" + }, + "node_modules/posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^3.9.2" + } + }, + "node_modules/posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/promise.series": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", + "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/psl/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.5", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.5.tgz", + "integrity": "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "bin": { + "purgecss": "bin/purgecss" + } + }, + "node_modules/purgecss/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/purgecss/node_modules/postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + }, + "node_modules/purgecss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.5.tgz", + "integrity": "sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + }, + "bin": { + "quote-stream": "bin/cmd.js" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "license": "ISC" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "license": "ISC", + "dependencies": { + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dev": true, + "license": "ISC", + "dependencies": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true, + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ripemd160/node_modules/hash-base": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rollup": { + "version": "2.80.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz", + "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-hashbang": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-hashbang/-/rollup-plugin-hashbang-2.2.2.tgz", + "integrity": "sha512-Yxw9ogeK3KncG1e4CvK0I0IKVBNeJP+DTZS3bExGTfGjw0WP1C7xxbY7LtRd8IKx4fFf53hz7XR1XG7UV6xqCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.22.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/rollup-plugin-postcss": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-3.1.8.tgz", + "integrity": "sha512-JHnGfW8quNc6ePxEkZ05HEZ1YiRxDgY9RKEetMfsrwxR2kh/d90OVScTc6b1c2Q17Cs/5TRYL+1uddG21lQe3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "concat-with-sourcemaps": "^1.1.0", + "cssnano": "^4.1.10", + "import-cwd": "^3.0.0", + "p-queue": "^6.3.0", + "pify": "^5.0.0", + "postcss": "^7.0.27", + "postcss-load-config": "^2.1.0", + "postcss-modules": "^2.0.0", + "promise.series": "^0.2.0", + "resolve": "^1.16.1", + "rollup-pluginutils": "^2.8.2", + "safe-identifier": "^0.4.1", + "style-inject": "^0.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/rollup-plugin-postcss/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/rollup-plugin-postcss/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/rollup-plugin-postcss/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/rollup-plugin-postcss/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup-plugin-postcss/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-postcss/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz", + "integrity": "sha512-4fB3M9nuoWxrwm39habpd4hvrbrde2W2GG4zEGPQg1YITNkM3Tqur5jSuXlWNzbv/2aMLJ+dZJaySc3GCD8oDw==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "jest-worker": "^26.0.0", + "serialize-javascript": "^3.0.0", + "terser": "^4.7.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1" + } + }, + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-identifier": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz", + "integrity": "sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==", + "dev": true, + "license": "ISC" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "license": "ISC" + }, + "node_modules/saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serialize-to-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.2.tgz", + "integrity": "sha512-owllqNuDDEimQat7EPG0tH7JjO090xKNzUtYz6X+Sk2BXDnOCilDdNLwjWeFywG9xkJul1ULvtUQa9O4pUaY0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.8.tgz", + "integrity": "sha512-SceYGWXvdqlWa/OnQ5FQuV+NxvNmMRhMw/w9AHkH71hTzveND4BTYgvp16g+oITK47qbOl/3D0bl0iygehWAWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true, + "license": "MIT" + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/srcset": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.1.tgz", + "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true, + "license": "MIT" + }, + "node_modules/static-eval": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", + "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "escodegen": "^2.1.0" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.8.tgz", + "integrity": "sha512-SceYGWXvdqlWa/OnQ5FQuV+NxvNmMRhMw/w9AHkH71hTzveND4BTYgvp16g+oITK47qbOl/3D0bl0iygehWAWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + } + }, + "node_modules/static-module/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/style-inject": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", + "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "bin": { + "terser": "bin/uglifyjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-buffer/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "bin": { + "uncss": "bin/uncss" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/uncss/node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/uncss/node_modules/postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true, + "license": "MIT" + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true, + "license": "MIT" + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", + "dev": true, + "license": "MIT" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true, + "license": "MIT" + }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/url/node_modules/qs": { + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.7.tgz", + "integrity": "sha512-Yp1RXz/2h2qC/Gy7d5mqQcpuCWbXiO6FgYw/jTbSvytZF9wD7fh7od+6WzWR/y9EAnXcJjQZpPkYVmj3T2bj+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/package.json b/package.json index 53689fd..b8bcd52 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "qr-decode", - "version": "0.0.4", + "version": "0.0.5", "description": "QRCode parser/decode", "main": "src/QRDecode.js", "files": [ diff --git a/src/QRDecode.js b/src/QRDecode.js index a9ea913..312d9e2 100644 --- a/src/QRDecode.js +++ b/src/QRDecode.js @@ -119,6 +119,134 @@ function decode(imageDate,debugfn){ return process(imageDate.data,base) } +// ECI 声明中常见的字符集(QR 规范:ECI 编号 -> 字符集) +var ECI_CHARSET = { + 3: 'iso-8859-1', + 20: 'shift_jis', + 25: 'utf-16be', + 26: 'utf-8', + 27: 'us-ascii' +}; + +// UTF-8 字节数组转字符串 +var decodeUTF8 = function (bytes) { + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder('utf-8').decode(new Uint8Array(bytes)); + } + var str = ""; + var i = 0; + while (i < bytes.length) { + var code = bytes[i++] & 0xFF; + if (code < 0x80) { + str += String.fromCharCode(code); + } + else if (code < 0xE0) { + str += String.fromCharCode(((code & 0x1F) << 6) | (bytes[i++] & 0x3F)); + } + else if (code < 0xF0) { + str += String.fromCharCode(((code & 0x0F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F)); + } + else { + var cp = ((code & 0x07) << 18) | ((bytes[i++] & 0x3F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F); + cp -= 0x10000; + str += String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00); + } + } + return str; +} + +// UTF-16 字节数组转字符串(isLE=false 时先把 BE 转成 LE 统一处理) +var decodeUTF16 = function (bytes, isLE) { + if (!isLE) { + // UTF-16BE -> 交换字节序 + for (var i = 0; i + 1 < bytes.length; i += 2) { + var t = bytes[i]; + bytes[i] = bytes[i + 1]; + bytes[i + 1] = t; + } + } + if (typeof TextDecoder !== 'undefined') { + return new TextDecoder('utf-16le').decode(new Uint8Array(bytes)); + } + // 兜底:手写 UTF-16LE 解码(含代理对) + var str = ""; + for (var i = 0; i + 1 < bytes.length; i += 2) { + var code = bytes[i] | (bytes[i + 1] << 8); + if (code >= 0xD800 && code <= 0xDBFF && i + 3 < bytes.length) { + var low = bytes[i + 2] | (bytes[i + 3] << 8); + if (low >= 0xDC00 && low <= 0xDFFF) { + str += String.fromCharCode(code, low); + i += 2; + continue; + } + } + str += String.fromCharCode(code); + } + return str; +} + +// 8bit 字节段解码:按 ECI 声明 -> BOM -> 启发式检测 -> UTF-8 的顺序判断编码方式 +var bytesToString = function (bytes, eci) { + var len = bytes.length; + if (len == 0) { + return ""; + } + + // 1. 优先按 ECI 声明的字符集解码 + if (eci && ECI_CHARSET[eci]) { + var charset = ECI_CHARSET[eci]; + if (charset == 'utf-16be') { + return decodeUTF16(bytes, false); + } + if (charset == 'utf-8') { + return decodeUTF8(bytes); + } + if (typeof TextDecoder !== 'undefined') { + try { + return new TextDecoder(charset).decode(new Uint8Array(bytes)); + } + catch (e) { + // 环境不支持该字符集时继续走下面的检测 + } + } + } + + // 2. BOM 检测 + if (len >= 2 && bytes[0] == 0xFF && bytes[1] == 0xFE) { + return decodeUTF16(bytes.slice(2), true); // UTF-16LE + } + if (len >= 2 && bytes[0] == 0xFE && bytes[1] == 0xFF) { + return decodeUTF16(bytes.slice(2), false); // UTF-16BE + } + if (len >= 3 && bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) { + return decodeUTF8(bytes.slice(3)); // UTF-8 with BOM + } + + // 3. 无 BOM 时启发式检测 UTF-16(偶数长度且奇/偶位存在成片 0x00 字节) + if (len >= 4 && len % 2 == 0) { + var evenZeros = 0; + var oddZeros = 0; + for (var i = 0; i < len; i += 2) { + if (bytes[i] == 0) { + evenZeros++; + } + if (bytes[i + 1] == 0) { + oddZeros++; + } + } + var half = len / 2; + if (oddZeros > half * 0.7) { + return decodeUTF16(bytes, true); // 奇数位大量 0x00 -> UTF-16LE + } + if (evenZeros > half * 0.7) { + return decodeUTF16(bytes, false); // 偶数位大量 0x00 -> UTF-16BE + } + } + + // 4. 兜底默认 UTF-8 + return decodeUTF8(bytes); +} + var process = function (data,base) { // var start = new Date().getTime(); // var image = grayScaleToBitmap(grayscale(),base); @@ -143,12 +271,43 @@ var process = function (data,base) { // 解析QR矩阵 var reader = Decoder.decode(qRCodeMatrix.bits); - // console.log(reader); - var data = reader.DataByte; + + // 先读取编码方式(mode indicator),按编码方式将数据直接转成字符串 + var MODE_NUMBER = 1; + var MODE_ROMAN_AND_NUMBER = 2; + var MODE_8BIT_BYTE = 4; + var MODE_ECI = 7; + var MODE_KANJI = 8; + var str = ""; - for (var i = 0; i < data.length; i++) { - for (var j = 0; j < data[i].length; j++) - str += String.fromCharCode(data[i][j]); + var eci = 0; // ECI 声明的字符集编号,作用于后续字节段 + while (true) { + var mode = reader.NextMode(); + if (mode == 0) + break; + if (mode == MODE_ECI) { + eci = reader.parseECIValue(); + continue; + } + var dataLength = reader.getDataLength(mode); + if (dataLength < 1) + throw "Invalid data length: " + dataLength; + switch (mode) { + case MODE_NUMBER: // 数字模式 + str += reader.getFigureString(dataLength); + break; + case MODE_ROMAN_AND_NUMBER: // 字母数字模式 + str += reader.getRomanAndFigureString(dataLength); + break; + case MODE_8BIT_BYTE: // 8bit 字节模式,先判断编码方式(ECI/BOM/启发式)再解码 + str += bytesToString(reader.get8bitByteArray(dataLength), eci); + break; + case MODE_KANJI: // 汉字(日文)模式 + str += reader.getKanjiString(dataLength); + break; + default: + throw "Invalid mode: " + mode; + } } // var end = new Date().getTime();