Linux vps-4302913.novaexata.com.br 3.10.0-1160.119.1.el7.tuxcare.els19.x86_64 #1 SMP Mon Mar 31 17:29:00 UTC 2025 x86_64
Apache
: 162.214.88.42 | : 216.73.216.99
166 Domain
7.3.33
wwnova
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
wwnova /
public_html /
aciport.com.br /
2022 /
js /
[ HOME SHELL ]
Name
Size
Permission
Action
bootbox5.1
[ DIR ]
drwxr-xr-x
chosen
[ DIR ]
drwxr-xr-x
counterup
[ DIR ]
drwxr-xr-x
easing
[ DIR ]
drwxr-xr-x
jquery
[ DIR ]
drwxr-xr-x
lightbox
[ DIR ]
drwxr-xr-x
owlcarousel
[ DIR ]
drwxr-xr-x
popper
[ DIR ]
drwxr-xr-x
typed
[ DIR ]
drwxr-xr-x
funcoesDev.js
4.07
KB
-rw-r--r--
jquery.mask.js
18.77
KB
-rw-r--r--
main.js
3.51
KB
-rw-r--r--
procurarLojas.js
1.42
KB
-rw-r--r--
qrcode.js
499.92
KB
-rw-r--r--
rasgadinha.js
1.79
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : qrcode.js
/** ZXing **/ !(function (t, e) { "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e( ((t = "undefined" != typeof globalThis ? globalThis : t || self).ZXing = {}) ); })(this, function (t) { "use strict"; var e = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (t, e) { t.__proto__ = e; }) || function (t, e) { for (var r in e) e.hasOwnProperty(r) && (t[r] = e[r]); }; var r, n = (function (t) { function r(e) { var r, n, i, s = this.constructor, o = t.call(this, e) || this; return ( Object.defineProperty(o, "name", { value: s.name, enumerable: !1 }), (r = o), (n = s.prototype), (i = Object.setPrototypeOf) ? i(r, n) : (r.__proto__ = n), (function (t, e) { void 0 === e && (e = t.constructor); var r = Error.captureStackTrace; r && r(t, e); })(o), o ); } return ( (function (t, r) { function n() { this.constructor = t; } e(t, r), (t.prototype = null === r ? Object.create(r) : ((n.prototype = r.prototype), new n())); })(r, t), r ); })(Error); class i extends n { constructor(t) { super(t), (this.message = t); } getKind() { return this.constructor.kind; } } i.kind = "Exception"; class s extends i {} s.kind = "ArgumentException"; class o extends i {} o.kind = "IllegalArgumentException"; class a { constructor(t) { if (((this.binarizer = t), null === t)) throw new o("Binarizer must be non-null."); } getWidth() { return this.binarizer.getWidth(); } getHeight() { return this.binarizer.getHeight(); } getBlackRow(t, e) { return this.binarizer.getBlackRow(t, e); } getBlackMatrix() { return ( (null !== this.matrix && void 0 !== this.matrix) || (this.matrix = this.binarizer.getBlackMatrix()), this.matrix ); } isCropSupported() { return this.binarizer.getLuminanceSource().isCropSupported(); } crop(t, e, r, n) { const i = this.binarizer.getLuminanceSource().crop(t, e, r, n); return new a(this.binarizer.createBinarizer(i)); } isRotateSupported() { return this.binarizer.getLuminanceSource().isRotateSupported(); } rotateCounterClockwise() { const t = this.binarizer.getLuminanceSource().rotateCounterClockwise(); return new a(this.binarizer.createBinarizer(t)); } rotateCounterClockwise45() { const t = this.binarizer.getLuminanceSource().rotateCounterClockwise45(); return new a(this.binarizer.createBinarizer(t)); } toString() { try { return this.getBlackMatrix().toString(); } catch (t) { return ""; } } } class l extends i { static getChecksumInstance() { return new l(); } } l.kind = "ChecksumException"; class h { constructor(t) { this.source = t; } getLuminanceSource() { return this.source; } getWidth() { return this.source.getWidth(); } getHeight() { return this.source.getHeight(); } } class c { static arraycopy(t, e, r, n, i) { for (; i--; ) r[n++] = t[e++]; } static currentTimeMillis() { return Date.now(); } } class u extends i {} u.kind = "IndexOutOfBoundsException"; class d extends u { constructor(t, e) { super(e), (this.index = t), (this.message = e); } } d.kind = "ArrayIndexOutOfBoundsException"; class g { static fill(t, e) { for (let r = 0, n = t.length; r < n; r++) t[r] = e; } static fillWithin(t, e, r, n) { g.rangeCheck(t.length, e, r); for (let i = e; i < r; i++) t[i] = n; } static rangeCheck(t, e, r) { if (e > r) throw new o("fromIndex(" + e + ") > toIndex(" + r + ")"); if (e < 0) throw new d(e); if (r > t) throw new d(r); } static asList(...t) { return t; } static create(t, e, r) { return Array.from({ length: t }).map((t) => Array.from({ length: e }).fill(r) ); } static createInt32Array(t, e, r) { return Array.from({ length: t }).map((t) => Int32Array.from({ length: e }).fill(r) ); } static equals(t, e) { if (!t) return !1; if (!e) return !1; if (!t.length) return !1; if (!e.length) return !1; if (t.length !== e.length) return !1; for (let r = 0, n = t.length; r < n; r++) if (t[r] !== e[r]) return !1; return !0; } static hashCode(t) { if (null === t) return 0; let e = 1; for (const r of t) e = 31 * e + r; return e; } static fillUint8Array(t, e) { for (let r = 0; r !== t.length; r++) t[r] = e; } static copyOf(t, e) { return t.slice(0, e); } static copyOfUint8Array(t, e) { if (t.length <= e) { const r = new Uint8Array(e); return r.set(t), r; } return t.slice(0, e); } static copyOfRange(t, e, r) { const n = r - e, i = new Int32Array(n); return c.arraycopy(t, e, i, 0, n), i; } static binarySearch(t, e, r) { void 0 === r && (r = g.numberComparator); let n = 0, i = t.length - 1; for (; n <= i; ) { const s = (i + n) >> 1, o = r(e, t[s]); if (o > 0) n = s + 1; else { if (!(o < 0)) return s; i = s - 1; } } return -n - 1; } static numberComparator(t, e) { return t - e; } } class f { static numberOfTrailingZeros(t) { let e; if (0 === t) return 32; let r = 31; return ( 0 !== (e = t << 16) && ((r -= 16), (t = e)), 0 !== (e = t << 8) && ((r -= 8), (t = e)), 0 !== (e = t << 4) && ((r -= 4), (t = e)), 0 !== (e = t << 2) && ((r -= 2), (t = e)), r - ((t << 1) >>> 31) ); } static numberOfLeadingZeros(t) { if (0 === t) return 32; let e = 1; return ( t >>> 16 == 0 && ((e += 16), (t <<= 16)), t >>> 24 == 0 && ((e += 8), (t <<= 8)), t >>> 28 == 0 && ((e += 4), (t <<= 4)), t >>> 30 == 0 && ((e += 2), (t <<= 2)), (e -= t >>> 31) ); } static toHexString(t) { return t.toString(16); } static toBinaryString(t) { return String(parseInt(String(t), 2)); } static bitCount(t) { return ( (t = ((t = (858993459 & (t -= (t >>> 1) & 1431655765)) + ((t >>> 2) & 858993459)) + (t >>> 4)) & 252645135), (t += t >>> 8), 63 & (t += t >>> 16) ); } static truncDivision(t, e) { return Math.trunc(t / e); } static parseInt(t, e) { return parseInt(t, e); } } (f.MIN_VALUE_32_BITS = -2147483648), (f.MAX_VALUE = Number.MAX_SAFE_INTEGER); class w { constructor(t, e) { void 0 === t ? ((this.size = 0), (this.bits = new Int32Array(1))) : ((this.size = t), (this.bits = null == e ? w.makeArray(t) : e)); } getSize() { return this.size; } getSizeInBytes() { return Math.floor((this.size + 7) / 8); } ensureCapacity(t) { if (t > 32 * this.bits.length) { const e = w.makeArray(t); c.arraycopy(this.bits, 0, e, 0, this.bits.length), (this.bits = e); } } get(t) { return 0 != (this.bits[Math.floor(t / 32)] & (1 << (31 & t))); } set(t) { this.bits[Math.floor(t / 32)] |= 1 << (31 & t); } flip(t) { this.bits[Math.floor(t / 32)] ^= 1 << (31 & t); } getNextSet(t) { const e = this.size; if (t >= e) return e; const r = this.bits; let n = Math.floor(t / 32), i = r[n]; i &= ~((1 << (31 & t)) - 1); const s = r.length; for (; 0 === i; ) { if (++n === s) return e; i = r[n]; } const o = 32 * n + f.numberOfTrailingZeros(i); return o > e ? e : o; } getNextUnset(t) { const e = this.size; if (t >= e) return e; const r = this.bits; let n = Math.floor(t / 32), i = ~r[n]; i &= ~((1 << (31 & t)) - 1); const s = r.length; for (; 0 === i; ) { if (++n === s) return e; i = ~r[n]; } const o = 32 * n + f.numberOfTrailingZeros(i); return o > e ? e : o; } setBulk(t, e) { this.bits[Math.floor(t / 32)] = e; } setRange(t, e) { if (e < t || t < 0 || e > this.size) throw new o(); if (e === t) return; e--; const r = Math.floor(t / 32), n = Math.floor(e / 32), i = this.bits; for (let s = r; s <= n; s++) { const o = (2 << (s < n ? 31 : 31 & e)) - (1 << (s > r ? 0 : 31 & t)); i[s] |= o; } } clear() { const t = this.bits.length, e = this.bits; for (let r = 0; r < t; r++) e[r] = 0; } isRange(t, e, r) { if (e < t || t < 0 || e > this.size) throw new o(); if (e === t) return !0; e--; const n = Math.floor(t / 32), i = Math.floor(e / 32), s = this.bits; for (let o = n; o <= i; o++) { const a = ((2 << (o < i ? 31 : 31 & e)) - (1 << (o > n ? 0 : 31 & t))) & 4294967295; if ((s[o] & a) !== (r ? a : 0)) return !1; } return !0; } appendBit(t) { this.ensureCapacity(this.size + 1), t && (this.bits[Math.floor(this.size / 32)] |= 1 << (31 & this.size)), this.size++; } appendBits(t, e) { if (e < 0 || e > 32) throw new o("Num bits must be between 0 and 32"); this.ensureCapacity(this.size + e); for (let r = e; r > 0; r--) this.appendBit(1 == ((t >> (r - 1)) & 1)); } appendBitArray(t) { const e = t.size; this.ensureCapacity(this.size + e); for (let r = 0; r < e; r++) this.appendBit(t.get(r)); } xor(t) { if (this.size !== t.size) throw new o("Sizes don't match"); const e = this.bits; for (let r = 0, n = e.length; r < n; r++) e[r] ^= t.bits[r]; } toBytes(t, e, r, n) { for (let i = 0; i < n; i++) { let n = 0; for (let e = 0; e < 8; e++) this.get(t) && (n |= 1 << (7 - e)), t++; e[r + i] = n; } } getBitArray() { return this.bits; } reverse() { const t = new Int32Array(this.bits.length), e = Math.floor((this.size - 1) / 32), r = e + 1, n = this.bits; for (let i = 0; i < r; i++) { let r = n[i]; (r = (((r = (((r = (((r = (((r = ((r >> 1) & 1431655765) | ((1431655765 & r) << 1)) >> 2) & 858993459) | ((858993459 & r) << 2)) >> 4) & 252645135) | ((252645135 & r) << 4)) >> 8) & 16711935) | ((16711935 & r) << 8)) >> 16) & 65535) | ((65535 & r) << 16)), (t[e - i] = r); } if (this.size !== 32 * r) { const e = 32 * r - this.size; let n = t[0] >>> e; for (let i = 1; i < r; i++) { const r = t[i]; (n |= r << (32 - e)), (t[i - 1] = n), (n = r >>> e); } t[r - 1] = n; } this.bits = t; } static makeArray(t) { return new Int32Array(Math.floor((t + 31) / 32)); } equals(t) { if (!(t instanceof w)) return !1; const e = t; return this.size === e.size && g.equals(this.bits, e.bits); } hashCode() { return 31 * this.size + g.hashCode(this.bits); } toString() { let t = ""; for (let e = 0, r = this.size; e < r; e++) 0 == (7 & e) && (t += " "), (t += this.get(e) ? "X" : "."); return t; } clone() { return new w(this.size, this.bits.slice()); } } !(function (t) { (t[(t.OTHER = 0)] = "OTHER"), (t[(t.PURE_BARCODE = 1)] = "PURE_BARCODE"), (t[(t.POSSIBLE_FORMATS = 2)] = "POSSIBLE_FORMATS"), (t[(t.TRY_HARDER = 3)] = "TRY_HARDER"), (t[(t.CHARACTER_SET = 4)] = "CHARACTER_SET"), (t[(t.ALLOWED_LENGTHS = 5)] = "ALLOWED_LENGTHS"), (t[(t.ASSUME_CODE_39_CHECK_DIGIT = 6)] = "ASSUME_CODE_39_CHECK_DIGIT"), (t[(t.ASSUME_GS1 = 7)] = "ASSUME_GS1"), (t[(t.RETURN_CODABAR_START_END = 8)] = "RETURN_CODABAR_START_END"), (t[(t.NEED_RESULT_POINT_CALLBACK = 9)] = "NEED_RESULT_POINT_CALLBACK"), (t[(t.ALLOWED_EAN_EXTENSIONS = 10)] = "ALLOWED_EAN_EXTENSIONS"); })(r || (r = {})); var A, C = r; class E extends i { static getFormatInstance() { return new E(); } } (E.kind = "FormatException"), (function (t) { (t[(t.Cp437 = 0)] = "Cp437"), (t[(t.ISO8859_1 = 1)] = "ISO8859_1"), (t[(t.ISO8859_2 = 2)] = "ISO8859_2"), (t[(t.ISO8859_3 = 3)] = "ISO8859_3"), (t[(t.ISO8859_4 = 4)] = "ISO8859_4"), (t[(t.ISO8859_5 = 5)] = "ISO8859_5"), (t[(t.ISO8859_6 = 6)] = "ISO8859_6"), (t[(t.ISO8859_7 = 7)] = "ISO8859_7"), (t[(t.ISO8859_8 = 8)] = "ISO8859_8"), (t[(t.ISO8859_9 = 9)] = "ISO8859_9"), (t[(t.ISO8859_10 = 10)] = "ISO8859_10"), (t[(t.ISO8859_11 = 11)] = "ISO8859_11"), (t[(t.ISO8859_13 = 12)] = "ISO8859_13"), (t[(t.ISO8859_14 = 13)] = "ISO8859_14"), (t[(t.ISO8859_15 = 14)] = "ISO8859_15"), (t[(t.ISO8859_16 = 15)] = "ISO8859_16"), (t[(t.SJIS = 16)] = "SJIS"), (t[(t.Cp1250 = 17)] = "Cp1250"), (t[(t.Cp1251 = 18)] = "Cp1251"), (t[(t.Cp1252 = 19)] = "Cp1252"), (t[(t.Cp1256 = 20)] = "Cp1256"), (t[(t.UnicodeBigUnmarked = 21)] = "UnicodeBigUnmarked"), (t[(t.UTF8 = 22)] = "UTF8"), (t[(t.ASCII = 23)] = "ASCII"), (t[(t.Big5 = 24)] = "Big5"), (t[(t.GB18030 = 25)] = "GB18030"), (t[(t.EUC_KR = 26)] = "EUC_KR"); })(A || (A = {})); class m { constructor(t, e, r, ...n) { (this.valueIdentifier = t), (this.name = r), (this.values = "number" == typeof e ? Int32Array.from([e]) : e), (this.otherEncodingNames = n), m.VALUE_IDENTIFIER_TO_ECI.set(t, this), m.NAME_TO_ECI.set(r, this); const i = this.values; for (let t = 0, e = i.length; t !== e; t++) { const e = i[t]; m.VALUES_TO_ECI.set(e, this); } for (const t of n) m.NAME_TO_ECI.set(t, this); } getValueIdentifier() { return this.valueIdentifier; } getName() { return this.name; } getValue() { return this.values[0]; } static getCharacterSetECIByValue(t) { if (t < 0 || t >= 900) throw new E("incorect value"); const e = m.VALUES_TO_ECI.get(t); if (void 0 === e) throw new E("incorect value"); return e; } static getCharacterSetECIByName(t) { const e = m.NAME_TO_ECI.get(t); if (void 0 === e) throw new E("incorect value"); return e; } equals(t) { if (!(t instanceof m)) return !1; const e = t; return this.getName() === e.getName(); } } (m.VALUE_IDENTIFIER_TO_ECI = new Map()), (m.VALUES_TO_ECI = new Map()), (m.NAME_TO_ECI = new Map()), (m.Cp437 = new m(A.Cp437, Int32Array.from([0, 2]), "Cp437")), (m.ISO8859_1 = new m( A.ISO8859_1, Int32Array.from([1, 3]), "ISO-8859-1", "ISO88591", "ISO8859_1" )), (m.ISO8859_2 = new m( A.ISO8859_2, 4, "ISO-8859-2", "ISO88592", "ISO8859_2" )), (m.ISO8859_3 = new m( A.ISO8859_3, 5, "ISO-8859-3", "ISO88593", "ISO8859_3" )), (m.ISO8859_4 = new m( A.ISO8859_4, 6, "ISO-8859-4", "ISO88594", "ISO8859_4" )), (m.ISO8859_5 = new m( A.ISO8859_5, 7, "ISO-8859-5", "ISO88595", "ISO8859_5" )), (m.ISO8859_6 = new m( A.ISO8859_6, 8, "ISO-8859-6", "ISO88596", "ISO8859_6" )), (m.ISO8859_7 = new m( A.ISO8859_7, 9, "ISO-8859-7", "ISO88597", "ISO8859_7" )), (m.ISO8859_8 = new m( A.ISO8859_8, 10, "ISO-8859-8", "ISO88598", "ISO8859_8" )), (m.ISO8859_9 = new m( A.ISO8859_9, 11, "ISO-8859-9", "ISO88599", "ISO8859_9" )), (m.ISO8859_10 = new m( A.ISO8859_10, 12, "ISO-8859-10", "ISO885910", "ISO8859_10" )), (m.ISO8859_11 = new m( A.ISO8859_11, 13, "ISO-8859-11", "ISO885911", "ISO8859_11" )), (m.ISO8859_13 = new m( A.ISO8859_13, 15, "ISO-8859-13", "ISO885913", "ISO8859_13" )), (m.ISO8859_14 = new m( A.ISO8859_14, 16, "ISO-8859-14", "ISO885914", "ISO8859_14" )), (m.ISO8859_15 = new m( A.ISO8859_15, 17, "ISO-8859-15", "ISO885915", "ISO8859_15" )), (m.ISO8859_16 = new m( A.ISO8859_16, 18, "ISO-8859-16", "ISO885916", "ISO8859_16" )), (m.SJIS = new m(A.SJIS, 20, "SJIS", "Shift_JIS")), (m.Cp1250 = new m(A.Cp1250, 21, "Cp1250", "windows-1250")), (m.Cp1251 = new m(A.Cp1251, 22, "Cp1251", "windows-1251")), (m.Cp1252 = new m(A.Cp1252, 23, "Cp1252", "windows-1252")), (m.Cp1256 = new m(A.Cp1256, 24, "Cp1256", "windows-1256")), (m.UnicodeBigUnmarked = new m( A.UnicodeBigUnmarked, 25, "UnicodeBigUnmarked", "UTF-16BE", "UnicodeBig" )), (m.UTF8 = new m(A.UTF8, 26, "UTF8", "UTF-8")), (m.ASCII = new m(A.ASCII, Int32Array.from([27, 170]), "ASCII", "US-ASCII")), (m.Big5 = new m(A.Big5, 28, "Big5")), (m.GB18030 = new m(A.GB18030, 29, "GB18030", "GB2312", "EUC_CN", "GBK")), (m.EUC_KR = new m(A.EUC_KR, 30, "EUC_KR", "EUC-KR")); class _ extends i {} _.kind = "UnsupportedOperationException"; class I { static decode(t, e) { const r = this.encodingName(e); return this.customDecoder ? this.customDecoder(t, r) : "undefined" == typeof TextDecoder || this.shouldDecodeOnFallback(r) ? this.decodeFallback(t, r) : new TextDecoder(r).decode(t); } static shouldDecodeOnFallback(t) { return !I.isBrowser() && "ISO-8859-1" === t; } static encode(t, e) { const r = this.encodingName(e); return this.customEncoder ? this.customEncoder(t, r) : "undefined" == typeof TextEncoder ? this.encodeFallback(t) : new TextEncoder().encode(t); } static isBrowser() { return ( "undefined" != typeof window && "[object Window]" === {}.toString.call(window) ); } static encodingName(t) { return "string" == typeof t ? t : t.getName(); } static encodingCharacterSet(t) { return t instanceof m ? t : m.getCharacterSetECIByName(t); } static decodeFallback(t, e) { const r = this.encodingCharacterSet(e); if (I.isDecodeFallbackSupported(r)) { let e = ""; for (let r = 0, n = t.length; r < n; r++) { let n = t[r].toString(16); n.length < 2 && (n = "0" + n), (e += "%" + n); } return decodeURIComponent(e); } if (r.equals(m.UnicodeBigUnmarked)) return String.fromCharCode.apply(null, new Uint16Array(t.buffer)); throw new _( `Encoding ${this.encodingName(e)} not supported by fallback.` ); } static isDecodeFallbackSupported(t) { return t.equals(m.UTF8) || t.equals(m.ISO8859_1) || t.equals(m.ASCII); } static encodeFallback(t) { const e = btoa(unescape(encodeURIComponent(t))).split(""), r = []; for (let t = 0; t < e.length; t++) r.push(e[t].charCodeAt(0)); return new Uint8Array(r); } } class S { static castAsNonUtf8Char(t, e = null) { const r = e ? e.getName() : this.ISO88591; return I.decode(new Uint8Array([t]), r); } static guessEncoding(t, e) { if (null != e && void 0 !== e.get(C.CHARACTER_SET)) return e.get(C.CHARACTER_SET).toString(); const r = t.length; let n = !0, i = !0, s = !0, o = 0, a = 0, l = 0, h = 0, c = 0, u = 0, d = 0, g = 0, f = 0, w = 0, A = 0; const E = t.length > 3 && 239 === t[0] && 187 === t[1] && 191 === t[2]; for (let e = 0; e < r && (n || i || s); e++) { const r = 255 & t[e]; s && (o > 0 ? 0 == (128 & r) ? (s = !1) : o-- : 0 != (128 & r) && (0 == (64 & r) ? (s = !1) : (o++, 0 == (32 & r) ? a++ : (o++, 0 == (16 & r) ? l++ : (o++, 0 == (8 & r) ? h++ : (s = !1)))))), n && (r > 127 && r < 160 ? (n = !1) : r > 159 && (r < 192 || 215 === r || 247 === r) && A++), i && (c > 0 ? r < 64 || 127 === r || r > 252 ? (i = !1) : c-- : 128 === r || 160 === r || r > 239 ? (i = !1) : r > 160 && r < 224 ? (u++, (g = 0), ++d > f && (f = d)) : r > 127 ? (c++, (d = 0), ++g > w && (w = g)) : ((d = 0), (g = 0))); } return ( s && o > 0 && (s = !1), i && c > 0 && (i = !1), s && (E || a + l + h > 0) ? S.UTF8 : i && (S.ASSUME_SHIFT_JIS || f >= 3 || w >= 3) ? S.SHIFT_JIS : n && i ? (2 === f && 2 === u) || 10 * A >= r ? S.SHIFT_JIS : S.ISO88591 : n ? S.ISO88591 : i ? S.SHIFT_JIS : s ? S.UTF8 : S.PLATFORM_DEFAULT_ENCODING ); } static format(t, ...e) { let r = -1; return t.replace( /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g, function (t, n, i, s, o, a) { if ("%%" === t) return "%"; if (void 0 === e[++r]) return; t = s ? parseInt(s.substr(1)) : void 0; let l, h = o ? parseInt(o.substr(1)) : void 0; switch (a) { case "s": l = e[r]; break; case "c": l = e[r][0]; break; case "f": l = parseFloat(e[r]).toFixed(t); break; case "p": l = parseFloat(e[r]).toPrecision(t); break; case "e": l = parseFloat(e[r]).toExponential(t); break; case "x": l = parseInt(e[r]).toString(h || 16); break; case "d": l = parseFloat(parseInt(e[r], h || 10).toPrecision(t)).toFixed(0); } l = "object" == typeof l ? JSON.stringify(l) : (+l).toString(h); let c = parseInt(i), u = i && i[0] + "" == "0" ? "0" : " "; for (; l.length < c; ) l = void 0 !== n ? l + u : u + l; return l; } ); } static getBytes(t, e) { return I.encode(t, e); } static getCharCode(t, e = 0) { return t.charCodeAt(e); } static getCharAt(t) { return String.fromCharCode(t); } } (S.SHIFT_JIS = m.SJIS.getName()), (S.GB2312 = "GB2312"), (S.ISO88591 = m.ISO8859_1.getName()), (S.EUC_JP = "EUC_JP"), (S.UTF8 = m.UTF8.getName()), (S.PLATFORM_DEFAULT_ENCODING = S.UTF8), (S.ASSUME_SHIFT_JIS = !1); class p { constructor(t = "") { this.value = t; } enableDecoding(t) { return (this.encoding = t), this; } append(t) { return ( "string" == typeof t ? (this.value += t.toString()) : this.encoding ? (this.value += S.castAsNonUtf8Char(t, this.encoding)) : (this.value += String.fromCharCode(t)), this ); } appendChars(t, e, r) { for (let n = e; e < e + r; n++) this.append(t[n]); return this; } length() { return this.value.length; } charAt(t) { return this.value.charAt(t); } deleteCharAt(t) { this.value = this.value.substr(0, t) + this.value.substring(t + 1); } setCharAt(t, e) { this.value = this.value.substr(0, t) + e + this.value.substr(t + 1); } substring(t, e) { return this.value.substring(t, e); } setLengthToZero() { this.value = ""; } toString() { return this.value; } insert(t, e) { this.value = this.value.substr(0, t) + e + this.value.substr(t + e.length); } } class T { constructor(t, e, r, n) { if ( ((this.width = t), (this.height = e), (this.rowSize = r), (this.bits = n), null == e && (e = t), (this.height = e), t < 1 || e < 1) ) throw new o("Both dimensions must be greater than 0"); null == r && (r = Math.floor((t + 31) / 32)), (this.rowSize = r), null == n && (this.bits = new Int32Array(this.rowSize * this.height)); } static parseFromBooleanArray(t) { const e = t.length, r = t[0].length, n = new T(r, e); for (let i = 0; i < e; i++) { const e = t[i]; for (let t = 0; t < r; t++) e[t] && n.set(t, i); } return n; } static parseFromString(t, e, r) { if (null === t) throw new o("stringRepresentation cannot be null"); const n = new Array(t.length); let i = 0, s = 0, a = -1, l = 0, h = 0; for (; h < t.length; ) if ("\n" === t.charAt(h) || "\r" === t.charAt(h)) { if (i > s) { if (-1 === a) a = i - s; else if (i - s !== a) throw new o("row lengths do not match"); (s = i), l++; } h++; } else if (t.substring(h, h + e.length) === e) (h += e.length), (n[i] = !0), i++; else { if (t.substring(h, h + r.length) !== r) throw new o("illegal character encountered: " + t.substring(h)); (h += r.length), (n[i] = !1), i++; } if (i > s) { if (-1 === a) a = i - s; else if (i - s !== a) throw new o("row lengths do not match"); l++; } const c = new T(a, l); for (let t = 0; t < i; t++) n[t] && c.set(Math.floor(t % a), Math.floor(t / a)); return c; } get(t, e) { const r = e * this.rowSize + Math.floor(t / 32); return 0 != ((this.bits[r] >>> (31 & t)) & 1); } set(t, e) { const r = e * this.rowSize + Math.floor(t / 32); this.bits[r] |= (1 << (31 & t)) & 4294967295; } unset(t, e) { const r = e * this.rowSize + Math.floor(t / 32); this.bits[r] &= ~((1 << (31 & t)) & 4294967295); } flip(t, e) { const r = e * this.rowSize + Math.floor(t / 32); this.bits[r] ^= (1 << (31 & t)) & 4294967295; } xor(t) { if ( this.width !== t.getWidth() || this.height !== t.getHeight() || this.rowSize !== t.getRowSize() ) throw new o("input matrix dimensions do not match"); const e = new w(Math.floor(this.width / 32) + 1), r = this.rowSize, n = this.bits; for (let i = 0, s = this.height; i < s; i++) { const s = i * r, o = t.getRow(i, e).getBitArray(); for (let t = 0; t < r; t++) n[s + t] ^= o[t]; } } clear() { const t = this.bits, e = t.length; for (let r = 0; r < e; r++) t[r] = 0; } setRegion(t, e, r, n) { if (e < 0 || t < 0) throw new o("Left and top must be nonnegative"); if (n < 1 || r < 1) throw new o("Height and width must be at least 1"); const i = t + r, s = e + n; if (s > this.height || i > this.width) throw new o("The region must fit inside the matrix"); const a = this.rowSize, l = this.bits; for (let r = e; r < s; r++) { const e = r * a; for (let r = t; r < i; r++) l[e + Math.floor(r / 32)] |= (1 << (31 & r)) & 4294967295; } } getRow(t, e) { null == e || e.getSize() < this.width ? (e = new w(this.width)) : e.clear(); const r = this.rowSize, n = this.bits, i = t * r; for (let t = 0; t < r; t++) e.setBulk(32 * t, n[i + t]); return e; } setRow(t, e) { c.arraycopy( e.getBitArray(), 0, this.bits, t * this.rowSize, this.rowSize ); } rotate180() { const t = this.getWidth(), e = this.getHeight(); let r = new w(t), n = new w(t); for (let t = 0, i = Math.floor((e + 1) / 2); t < i; t++) (r = this.getRow(t, r)), (n = this.getRow(e - 1 - t, n)), r.reverse(), n.reverse(), this.setRow(t, n), this.setRow(e - 1 - t, r); } getEnclosingRectangle() { const t = this.width, e = this.height, r = this.rowSize, n = this.bits; let i = t, s = e, o = -1, a = -1; for (let t = 0; t < e; t++) for (let e = 0; e < r; e++) { const l = n[t * r + e]; if (0 !== l) { if ((t < s && (s = t), t > a && (a = t), 32 * e < i)) { let t = 0; for (; 0 == ((l << (31 - t)) & 4294967295); ) t++; 32 * e + t < i && (i = 32 * e + t); } if (32 * e + 31 > o) { let t = 31; for (; l >>> t == 0; ) t--; 32 * e + t > o && (o = 32 * e + t); } } } return o < i || a < s ? null : Int32Array.from([i, s, o - i + 1, a - s + 1]); } getTopLeftOnBit() { const t = this.rowSize, e = this.bits; let r = 0; for (; r < e.length && 0 === e[r]; ) r++; if (r === e.length) return null; const n = r / t; let i = (r % t) * 32; const s = e[r]; let o = 0; for (; 0 == ((s << (31 - o)) & 4294967295); ) o++; return (i += o), Int32Array.from([i, n]); } getBottomRightOnBit() { const t = this.rowSize, e = this.bits; let r = e.length - 1; for (; r >= 0 && 0 === e[r]; ) r--; if (r < 0) return null; const n = Math.floor(r / t); let i = 32 * Math.floor(r % t); const s = e[r]; let o = 31; for (; s >>> o == 0; ) o--; return (i += o), Int32Array.from([i, n]); } getWidth() { return this.width; } getHeight() { return this.height; } getRowSize() { return this.rowSize; } equals(t) { if (!(t instanceof T)) return !1; const e = t; return ( this.width === e.width && this.height === e.height && this.rowSize === e.rowSize && g.equals(this.bits, e.bits) ); } hashCode() { let t = this.width; return (t = 31 * (t = 31 * (t = 31 * (t = 31 * t + this.width) + this.height) + this.rowSize) + g.hashCode(this.bits)); } toString(t = "X ", e = " ", r = "\n") { return this.buildToString(t, e, r); } buildToString(t, e, r) { let n = new p(); for (let i = 0, s = this.height; i < s; i++) { for (let r = 0, s = this.width; r < s; r++) n.append(this.get(r, i) ? t : e); n.append(r); } return n.toString(); } clone() { return new T(this.width, this.height, this.rowSize, this.bits.slice()); } } class R extends i { static getNotFoundInstance() { return new R(); } } R.kind = "NotFoundException"; class N extends h { constructor(t) { super(t), (this.luminances = N.EMPTY), (this.buckets = new Int32Array(N.LUMINANCE_BUCKETS)); } getBlackRow(t, e) { const r = this.getLuminanceSource(), n = r.getWidth(); null == e || e.getSize() < n ? (e = new w(n)) : e.clear(), this.initArrays(n); const i = r.getRow(t, this.luminances), s = this.buckets; for (let t = 0; t < n; t++) s[(255 & i[t]) >> N.LUMINANCE_SHIFT]++; const o = N.estimateBlackPoint(s); if (n < 3) for (let t = 0; t < n; t++) (255 & i[t]) < o && e.set(t); else { let t = 255 & i[0], r = 255 & i[1]; for (let s = 1; s < n - 1; s++) { const n = 255 & i[s + 1]; (4 * r - t - n) / 2 < o && e.set(s), (t = r), (r = n); } } return e; } getBlackMatrix() { const t = this.getLuminanceSource(), e = t.getWidth(), r = t.getHeight(), n = new T(e, r); this.initArrays(e); const i = this.buckets; for (let n = 1; n < 5; n++) { const s = Math.floor((r * n) / 5), o = t.getRow(s, this.luminances), a = Math.floor((4 * e) / 5); for (let t = Math.floor(e / 5); t < a; t++) { i[(255 & o[t]) >> N.LUMINANCE_SHIFT]++; } } const s = N.estimateBlackPoint(i), o = t.getMatrix(); for (let t = 0; t < r; t++) { const r = t * e; for (let i = 0; i < e; i++) { (255 & o[r + i]) < s && n.set(i, t); } } return n; } createBinarizer(t) { return new N(t); } initArrays(t) { this.luminances.length < t && (this.luminances = new Uint8ClampedArray(t)); const e = this.buckets; for (let t = 0; t < N.LUMINANCE_BUCKETS; t++) e[t] = 0; } static estimateBlackPoint(t) { const e = t.length; let r = 0, n = 0, i = 0; for (let s = 0; s < e; s++) t[s] > i && ((n = s), (i = t[s])), t[s] > r && (r = t[s]); let s = 0, o = 0; for (let r = 0; r < e; r++) { const e = r - n, i = t[r] * e * e; i > o && ((s = r), (o = i)); } if (n > s) { const t = n; (n = s), (s = t); } if (s - n <= e / 16) throw new R(); let a = s - 1, l = -1; for (let e = s - 1; e > n; e--) { const i = e - n, o = i * i * (s - e) * (r - t[e]); o > l && ((a = e), (l = o)); } return a << N.LUMINANCE_SHIFT; } } (N.LUMINANCE_BITS = 5), (N.LUMINANCE_SHIFT = 8 - N.LUMINANCE_BITS), (N.LUMINANCE_BUCKETS = 1 << N.LUMINANCE_BITS), (N.EMPTY = Uint8ClampedArray.from([0])); class D extends N { constructor(t) { super(t), (this.matrix = null); } getBlackMatrix() { if (null !== this.matrix) return this.matrix; const t = this.getLuminanceSource(), e = t.getWidth(), r = t.getHeight(); if (e >= D.MINIMUM_DIMENSION && r >= D.MINIMUM_DIMENSION) { const n = t.getMatrix(); let i = e >> D.BLOCK_SIZE_POWER; 0 != (e & D.BLOCK_SIZE_MASK) && i++; let s = r >> D.BLOCK_SIZE_POWER; 0 != (r & D.BLOCK_SIZE_MASK) && s++; const o = D.calculateBlackPoints(n, i, s, e, r), a = new T(e, r); D.calculateThresholdForBlock(n, i, s, e, r, o, a), (this.matrix = a); } else this.matrix = super.getBlackMatrix(); return this.matrix; } createBinarizer(t) { return new D(t); } static calculateThresholdForBlock(t, e, r, n, i, s, o) { const a = i - D.BLOCK_SIZE, l = n - D.BLOCK_SIZE; for (let i = 0; i < r; i++) { let h = i << D.BLOCK_SIZE_POWER; h > a && (h = a); const c = D.cap(i, 2, r - 3); for (let r = 0; r < e; r++) { let i = r << D.BLOCK_SIZE_POWER; i > l && (i = l); const a = D.cap(r, 2, e - 3); let u = 0; for (let t = -2; t <= 2; t++) { const e = s[c + t]; u += e[a - 2] + e[a - 1] + e[a] + e[a + 1] + e[a + 2]; } const d = u / 25; D.thresholdBlock(t, i, h, d, n, o); } } } static cap(t, e, r) { return t < e ? e : t > r ? r : t; } static thresholdBlock(t, e, r, n, i, s) { for (let o = 0, a = r * i + e; o < D.BLOCK_SIZE; o++, a += i) for (let i = 0; i < D.BLOCK_SIZE; i++) (255 & t[a + i]) <= n && s.set(e + i, r + o); } static calculateBlackPoints(t, e, r, n, i) { const s = i - D.BLOCK_SIZE, o = n - D.BLOCK_SIZE, a = new Array(r); for (let i = 0; i < r; i++) { a[i] = new Int32Array(e); let r = i << D.BLOCK_SIZE_POWER; r > s && (r = s); for (let s = 0; s < e; s++) { let e = s << D.BLOCK_SIZE_POWER; e > o && (e = o); let l = 0, h = 255, c = 0; for (let i = 0, s = r * n + e; i < D.BLOCK_SIZE; i++, s += n) { for (let e = 0; e < D.BLOCK_SIZE; e++) { const r = 255 & t[s + e]; (l += r), r < h && (h = r), r > c && (c = r); } if (c - h > D.MIN_DYNAMIC_RANGE) for (i++, s += n; i < D.BLOCK_SIZE; i++, s += n) for (let e = 0; e < D.BLOCK_SIZE; e++) l += 255 & t[s + e]; } let u = l >> (2 * D.BLOCK_SIZE_POWER); if (c - h <= D.MIN_DYNAMIC_RANGE && ((u = h / 2), i > 0 && s > 0)) { const t = (a[i - 1][s] + 2 * a[i][s - 1] + a[i - 1][s - 1]) / 4; h < t && (u = t); } a[i][s] = u; } } return a; } } (D.BLOCK_SIZE_POWER = 3), (D.BLOCK_SIZE = 1 << D.BLOCK_SIZE_POWER), (D.BLOCK_SIZE_MASK = D.BLOCK_SIZE - 1), (D.MINIMUM_DIMENSION = 5 * D.BLOCK_SIZE), (D.MIN_DYNAMIC_RANGE = 24); class y { constructor(t, e) { (this.width = t), (this.height = e); } getWidth() { return this.width; } getHeight() { return this.height; } isCropSupported() { return !1; } crop(t, e, r, n) { throw new _("This luminance source does not support cropping."); } isRotateSupported() { return !1; } rotateCounterClockwise() { throw new _( "This luminance source does not support rotation by 90 degrees." ); } rotateCounterClockwise45() { throw new _( "This luminance source does not support rotation by 45 degrees." ); } toString() { const t = new Uint8ClampedArray(this.width); let e = new p(); for (let r = 0; r < this.height; r++) { const n = this.getRow(r, t); for (let t = 0; t < this.width; t++) { const r = 255 & n[t]; let i; (i = r < 64 ? "#" : r < 128 ? "+" : r < 192 ? "." : " "), e.append(i); } e.append("\n"); } return e.toString(); } } class O extends y { constructor(t) { super(t.getWidth(), t.getHeight()), (this.delegate = t); } getRow(t, e) { const r = this.delegate.getRow(t, e), n = this.getWidth(); for (let t = 0; t < n; t++) r[t] = 255 - (255 & r[t]); return r; } getMatrix() { const t = this.delegate.getMatrix(), e = this.getWidth() * this.getHeight(), r = new Uint8ClampedArray(e); for (let n = 0; n < e; n++) r[n] = 255 - (255 & t[n]); return r; } isCropSupported() { return this.delegate.isCropSupported(); } crop(t, e, r, n) { return new O(this.delegate.crop(t, e, r, n)); } isRotateSupported() { return this.delegate.isRotateSupported(); } invert() { return this.delegate; } rotateCounterClockwise() { return new O(this.delegate.rotateCounterClockwise()); } rotateCounterClockwise45() { return new O(this.delegate.rotateCounterClockwise45()); } } class M extends y { constructor(t) { super(t.width, t.height), (this.canvas = t), (this.tempCanvasElement = null), (this.buffer = M.makeBufferFromCanvasImageData(t)); } static makeBufferFromCanvasImageData(t) { const e = t.getContext("2d").getImageData(0, 0, t.width, t.height); return M.toGrayscaleBuffer(e.data, t.width, t.height); } static toGrayscaleBuffer(t, e, r) { const n = new Uint8ClampedArray(e * r); for (let e = 0, r = 0, i = t.length; e < i; e += 4, r++) { let i; if (0 === t[e + 3]) i = 255; else { i = (306 * t[e] + 601 * t[e + 1] + 117 * t[e + 2] + 512) >> 10; } n[r] = i; } return n; } getRow(t, e) { if (t < 0 || t >= this.getHeight()) throw new o("Requested row is outside the image: " + t); const r = this.getWidth(), n = t * r; return ( null === e ? (e = this.buffer.slice(n, n + r)) : (e.length < r && (e = new Uint8ClampedArray(r)), e.set(this.buffer.slice(n, n + r))), e ); } getMatrix() { return this.buffer; } isCropSupported() { return !0; } crop(t, e, r, n) { return super.crop(t, e, r, n), this; } isRotateSupported() { return !0; } rotateCounterClockwise() { return this.rotate(-90), this; } rotateCounterClockwise45() { return this.rotate(-45), this; } getTempCanvasElement() { if (null === this.tempCanvasElement) { const t = this.canvas.ownerDocument.createElement("canvas"); (t.width = this.canvas.width), (t.height = this.canvas.height), (this.tempCanvasElement = t); } return this.tempCanvasElement; } rotate(t) { const e = this.getTempCanvasElement(), r = e.getContext("2d"), n = t * M.DEGREE_TO_RADIANS, i = this.canvas.width, s = this.canvas.height, o = Math.ceil(Math.abs(Math.cos(n)) * i + Math.abs(Math.sin(n)) * s), a = Math.ceil(Math.abs(Math.sin(n)) * i + Math.abs(Math.cos(n)) * s); return ( (e.width = o), (e.height = a), r.translate(o / 2, a / 2), r.rotate(n), r.drawImage(this.canvas, i / -2, s / -2), (this.buffer = M.makeBufferFromCanvasImageData(e)), this ); } invert() { return new O(this); } } M.DEGREE_TO_RADIANS = Math.PI / 180; class b { constructor(t, e, r) { (this.deviceId = t), (this.label = e), (this.kind = "videoinput"), (this.groupId = r || void 0); } toJSON() { return { kind: this.kind, groupId: this.groupId, deviceId: this.deviceId, label: this.label, }; } } var B, P = (globalThis || global || self || window ? (globalThis || global || self || window || void 0).__awaiter : void 0) || function (t, e, r, n) { return new (r || (r = Promise))(function (i, s) { function o(t) { try { l(n.next(t)); } catch (t) { s(t); } } function a(t) { try { l(n.throw(t)); } catch (t) { s(t); } } function l(t) { var e; t.done ? i(t.value) : ((e = t.value), e instanceof r ? e : new r(function (t) { t(e); })).then(o, a); } l((n = n.apply(t, e || [])).next()); }); }; class L { constructor(t, e = 500, r) { (this.reader = t), (this.timeBetweenScansMillis = e), (this._hints = r), (this._stopContinuousDecode = !1), (this._stopAsyncDecode = !1), (this._timeBetweenDecodingAttempts = 0); } get hasNavigator() { return "undefined" != typeof navigator; } get isMediaDevicesSuported() { return this.hasNavigator && !!navigator.mediaDevices; } get canEnumerateDevices() { return !( !this.isMediaDevicesSuported || !navigator.mediaDevices.enumerateDevices ); } get timeBetweenDecodingAttempts() { return this._timeBetweenDecodingAttempts; } set timeBetweenDecodingAttempts(t) { this._timeBetweenDecodingAttempts = t < 0 ? 0 : t; } set hints(t) { this._hints = t || null; } get hints() { return this._hints; } listVideoInputDevices() { return P(this, void 0, void 0, function* () { if (!this.hasNavigator) throw new Error("Can't enumerate devices, navigator is not present."); if (!this.canEnumerateDevices) throw new Error("Can't enumerate devices, method not supported."); const t = yield navigator.mediaDevices.enumerateDevices(), e = []; for (const r of t) { const t = "video" === r.kind ? "videoinput" : r.kind; if ("videoinput" !== t) continue; const n = { deviceId: r.deviceId || r.id, label: r.label || `Video device ${e.length + 1}`, kind: t, groupId: r.groupId, }; e.push(n); } return e; }); } getVideoInputDevices() { return P(this, void 0, void 0, function* () { return (yield this.listVideoInputDevices()).map( (t) => new b(t.deviceId, t.label) ); }); } findDeviceById(t) { return P(this, void 0, void 0, function* () { const e = yield this.listVideoInputDevices(); return e ? e.find((e) => e.deviceId === t) : null; }); } decodeFromInputVideoDevice(t, e) { return P(this, void 0, void 0, function* () { return yield this.decodeOnceFromVideoDevice(t, e); }); } decodeOnceFromVideoDevice(t, e) { return P(this, void 0, void 0, function* () { let r; this.reset(); const n = { video: (r = t ? { deviceId: { exact: t } } : { facingMode: "environment" }), }; return yield this.decodeOnceFromConstraints(n, e); }); } decodeOnceFromConstraints(t, e) { return P(this, void 0, void 0, function* () { const r = yield navigator.mediaDevices.getUserMedia(t); return yield this.decodeOnceFromStream(r, e); }); } decodeOnceFromStream(t, e) { return P(this, void 0, void 0, function* () { this.reset(); const r = yield this.attachStreamToVideo(t, e); return yield this.decodeOnce(r); }); } decodeFromInputVideoDeviceContinuously(t, e, r) { return P(this, void 0, void 0, function* () { return yield this.decodeFromVideoDevice(t, e, r); }); } decodeFromVideoDevice(t, e, r) { return P(this, void 0, void 0, function* () { let n; const i = { video: (n = t ? { deviceId: { exact: t } } : { facingMode: "environment" }), }; return yield this.decodeFromConstraints(i, e, r); }); } decodeFromConstraints(t, e, r) { return P(this, void 0, void 0, function* () { const n = yield navigator.mediaDevices.getUserMedia(t); return yield this.decodeFromStream(n, e, r); }); } decodeFromStream(t, e, r) { return P(this, void 0, void 0, function* () { this.reset(); const n = yield this.attachStreamToVideo(t, e); return yield this.decodeContinuously(n, r); }); } stopAsyncDecode() { this._stopAsyncDecode = !0; } stopContinuousDecode() { this._stopContinuousDecode = !0; } attachStreamToVideo(t, e) { return P(this, void 0, void 0, function* () { const r = this.prepareVideoElement(e); return ( this.addVideoSource(r, t), (this.videoElement = r), (this.stream = t), yield this.playVideoOnLoadAsync(r), r ); }); } playVideoOnLoadAsync(t) { return new Promise((e, r) => this.playVideoOnLoad(t, () => e())); } playVideoOnLoad(t, e) { (this.videoEndedListener = () => this.stopStreams()), (this.videoCanPlayListener = () => this.tryPlayVideo(t)), t.addEventListener("ended", this.videoEndedListener), t.addEventListener("canplay", this.videoCanPlayListener), t.addEventListener("playing", e), this.tryPlayVideo(t); } isVideoPlaying(t) { return t.currentTime > 0 && !t.paused && !t.ended && t.readyState > 2; } tryPlayVideo(t) { return P(this, void 0, void 0, function* () { if (this.isVideoPlaying(t)) console.warn("Trying to play video that is already playing."); else try { yield t.play(); } catch (t) { console.warn("It was not possible to play the video."); } }); } getMediaElement(t, e) { const r = document.getElementById(t); if (!r) throw new s(`element with id '${t}' not found`); if (r.nodeName.toLowerCase() !== e.toLowerCase()) throw new s(`element with id '${t}' must be an ${e} element`); return r; } decodeFromImage(t, e) { if (!t && !e) throw new s( "either imageElement with a src set or an url must be provided" ); return e && !t ? this.decodeFromImageUrl(e) : this.decodeFromImageElement(t); } decodeFromVideo(t, e) { if (!t && !e) throw new s( "Either an element with a src set or an URL must be provided" ); return e && !t ? this.decodeFromVideoUrl(e) : this.decodeFromVideoElement(t); } decodeFromVideoContinuously(t, e, r) { if (void 0 === t && void 0 === e) throw new s( "Either an element with a src set or an URL must be provided" ); return e && !t ? this.decodeFromVideoUrlContinuously(e, r) : this.decodeFromVideoElementContinuously(t, r); } decodeFromImageElement(t) { if (!t) throw new s("An image element must be provided."); this.reset(); const e = this.prepareImageElement(t); let r; return ( (this.imageElement = e), (r = this.isImageLoaded(e) ? this.decodeOnce(e, !1, !0) : this._decodeOnLoadImage(e)) ); } decodeFromVideoElement(t) { const e = this._decodeFromVideoElementSetup(t); return this._decodeOnLoadVideo(e); } decodeFromVideoElementContinuously(t, e) { const r = this._decodeFromVideoElementSetup(t); return this._decodeOnLoadVideoContinuously(r, e); } _decodeFromVideoElementSetup(t) { if (!t) throw new s("A video element must be provided."); this.reset(); const e = this.prepareVideoElement(t); return (this.videoElement = e), e; } decodeFromImageUrl(t) { if (!t) throw new s("An URL must be provided."); this.reset(); const e = this.prepareImageElement(); this.imageElement = e; const r = this._decodeOnLoadImage(e); return (e.src = t), r; } decodeFromVideoUrl(t) { if (!t) throw new s("An URL must be provided."); this.reset(); const e = this.prepareVideoElement(), r = this.decodeFromVideoElement(e); return (e.src = t), r; } decodeFromVideoUrlContinuously(t, e) { if (!t) throw new s("An URL must be provided."); this.reset(); const r = this.prepareVideoElement(), n = this.decodeFromVideoElementContinuously(r, e); return (r.src = t), n; } _decodeOnLoadImage(t) { return new Promise((e, r) => { (this.imageLoadedListener = () => this.decodeOnce(t, !1, !0).then(e, r)), t.addEventListener("load", this.imageLoadedListener); }); } _decodeOnLoadVideo(t) { return P(this, void 0, void 0, function* () { return yield this.playVideoOnLoadAsync(t), yield this.decodeOnce(t); }); } _decodeOnLoadVideoContinuously(t, e) { return P(this, void 0, void 0, function* () { yield this.playVideoOnLoadAsync(t), this.decodeContinuously(t, e); }); } isImageLoaded(t) { return !!t.complete && 0 !== t.naturalWidth; } prepareImageElement(t) { let e; return ( void 0 === t && (((e = document.createElement("img")).width = 200), (e.height = 200)), "string" == typeof t && (e = this.getMediaElement(t, "img")), t instanceof HTMLImageElement && (e = t), e ); } prepareVideoElement(t) { let e; return ( t || "undefined" == typeof document || (((e = document.createElement("video")).width = 200), (e.height = 200)), "string" == typeof t && (e = this.getMediaElement(t, "video")), t instanceof HTMLVideoElement && (e = t), e.setAttribute("autoplay", "true"), e.setAttribute("muted", "true"), e.setAttribute("playsinline", "true"), e ); } decodeOnce(t, e = !0, r = !0) { this._stopAsyncDecode = !1; const n = (i, s) => { if (this._stopAsyncDecode) return ( s( new R("Video stream has ended before any code could be detected.") ), void (this._stopAsyncDecode = void 0) ); try { i(this.decode(t)); } catch (t) { const o = (t instanceof l || t instanceof E) && r; if ((e && t instanceof R) || o) return setTimeout(n, this._timeBetweenDecodingAttempts, i, s); s(t); } }; return new Promise((t, e) => n(t, e)); } decodeContinuously(t, e) { this._stopContinuousDecode = !1; const r = () => { if (this._stopContinuousDecode) this._stopContinuousDecode = void 0; else try { const n = this.decode(t); e(n, null), setTimeout(r, this.timeBetweenScansMillis); } catch (t) { e(null, t); const n = t instanceof R; (t instanceof l || t instanceof E || n) && setTimeout(r, this._timeBetweenDecodingAttempts); } }; r(); } decode(t) { const e = this.createBinaryBitmap(t); return this.decodeBitmap(e); } createBinaryBitmap(t) { const e = this.getCaptureCanvasContext(t); this.drawImageOnCanvas(e, t); const r = this.getCaptureCanvas(t), n = new M(r), i = new D(n); return new a(i); } getCaptureCanvasContext(t) { if (!this.captureCanvasContext) { const e = this.getCaptureCanvas(t).getContext("2d"); this.captureCanvasContext = e; } return this.captureCanvasContext; } getCaptureCanvas(t) { if (!this.captureCanvas) { const e = this.createCaptureCanvas(t); this.captureCanvas = e; } return this.captureCanvas; } drawImageOnCanvas(t, e) { t.drawImage(e, 0, 0); } decodeBitmap(t) { return this.reader.decode(t, this._hints); } createCaptureCanvas(t) { if ("undefined" == typeof document) return this._destroyCaptureCanvas(), null; const e = document.createElement("canvas"); let r, n; return ( void 0 !== t && (t instanceof HTMLVideoElement ? ((r = t.videoWidth), (n = t.videoHeight)) : t instanceof HTMLImageElement && ((r = t.naturalWidth || t.width), (n = t.naturalHeight || t.height))), (e.style.width = r + "px"), (e.style.height = n + "px"), (e.width = r), (e.height = n), e ); } stopStreams() { this.stream && (this.stream.getVideoTracks().forEach((t) => t.stop()), (this.stream = void 0)), !1 === this._stopAsyncDecode && this.stopAsyncDecode(), !1 === this._stopContinuousDecode && this.stopContinuousDecode(); } reset() { this.stopStreams(), this._destroyVideoElement(), this._destroyImageElement(), this._destroyCaptureCanvas(); } _destroyVideoElement() { this.videoElement && (void 0 !== this.videoEndedListener && this.videoElement.removeEventListener( "ended", this.videoEndedListener ), void 0 !== this.videoPlayingEventListener && this.videoElement.removeEventListener( "playing", this.videoPlayingEventListener ), void 0 !== this.videoCanPlayListener && this.videoElement.removeEventListener( "loadedmetadata", this.videoCanPlayListener ), this.cleanVideoSource(this.videoElement), (this.videoElement = void 0)); } _destroyImageElement() { this.imageElement && (void 0 !== this.imageLoadedListener && this.imageElement.removeEventListener( "load", this.imageLoadedListener ), (this.imageElement.src = void 0), this.imageElement.removeAttribute("src"), (this.imageElement = void 0)); } _destroyCaptureCanvas() { (this.captureCanvasContext = void 0), (this.captureCanvas = void 0); } addVideoSource(t, e) { try { t.srcObject = e; } catch (r) { t.src = URL.createObjectURL(e); } } cleanVideoSource(t) { try { t.srcObject = null; } catch (e) { t.src = ""; } this.videoElement.removeAttribute("src"); } } class F { constructor( t, e, r = null == e ? 0 : 8 * e.length, n, i, s = c.currentTimeMillis() ) { (this.text = t), (this.rawBytes = e), (this.numBits = r), (this.resultPoints = n), (this.format = i), (this.timestamp = s), (this.text = t), (this.rawBytes = e), (this.numBits = null == r ? (null == e ? 0 : 8 * e.length) : r), (this.resultPoints = n), (this.format = i), (this.resultMetadata = null), (this.timestamp = null == s ? c.currentTimeMillis() : s); } getText() { return this.text; } getRawBytes() { return this.rawBytes; } getNumBits() { return this.numBits; } getResultPoints() { return this.resultPoints; } getBarcodeFormat() { return this.format; } getResultMetadata() { return this.resultMetadata; } putMetadata(t, e) { null === this.resultMetadata && (this.resultMetadata = new Map()), this.resultMetadata.set(t, e); } putAllMetadata(t) { null !== t && (null === this.resultMetadata ? (this.resultMetadata = t) : (this.resultMetadata = new Map(t))); } addResultPoints(t) { const e = this.resultPoints; if (null === e) this.resultPoints = t; else if (null !== t && t.length > 0) { const r = new Array(e.length + t.length); c.arraycopy(e, 0, r, 0, e.length), c.arraycopy(t, 0, r, e.length, t.length), (this.resultPoints = r); } } getTimestamp() { return this.timestamp; } toString() { return this.text; } } !(function (t) { (t[(t.AZTEC = 0)] = "AZTEC"), (t[(t.CODABAR = 1)] = "CODABAR"), (t[(t.CODE_39 = 2)] = "CODE_39"), (t[(t.CODE_93 = 3)] = "CODE_93"), (t[(t.CODE_128 = 4)] = "CODE_128"), (t[(t.DATA_MATRIX = 5)] = "DATA_MATRIX"), (t[(t.EAN_8 = 6)] = "EAN_8"), (t[(t.EAN_13 = 7)] = "EAN_13"), (t[(t.ITF = 8)] = "ITF"), (t[(t.MAXICODE = 9)] = "MAXICODE"), (t[(t.PDF_417 = 10)] = "PDF_417"), (t[(t.QR_CODE = 11)] = "QR_CODE"), (t[(t.RSS_14 = 12)] = "RSS_14"), (t[(t.RSS_EXPANDED = 13)] = "RSS_EXPANDED"), (t[(t.UPC_A = 14)] = "UPC_A"), (t[(t.UPC_E = 15)] = "UPC_E"), (t[(t.UPC_EAN_EXTENSION = 16)] = "UPC_EAN_EXTENSION"); })(B || (B = {})); var v, k = B; !(function (t) { (t[(t.OTHER = 0)] = "OTHER"), (t[(t.ORIENTATION = 1)] = "ORIENTATION"), (t[(t.BYTE_SEGMENTS = 2)] = "BYTE_SEGMENTS"), (t[(t.ERROR_CORRECTION_LEVEL = 3)] = "ERROR_CORRECTION_LEVEL"), (t[(t.ISSUE_NUMBER = 4)] = "ISSUE_NUMBER"), (t[(t.SUGGESTED_PRICE = 5)] = "SUGGESTED_PRICE"), (t[(t.POSSIBLE_COUNTRY = 6)] = "POSSIBLE_COUNTRY"), (t[(t.UPC_EAN_EXTENSION = 7)] = "UPC_EAN_EXTENSION"), (t[(t.PDF417_EXTRA_METADATA = 8)] = "PDF417_EXTRA_METADATA"), (t[(t.STRUCTURED_APPEND_SEQUENCE = 9)] = "STRUCTURED_APPEND_SEQUENCE"), (t[(t.STRUCTURED_APPEND_PARITY = 10)] = "STRUCTURED_APPEND_PARITY"); })(v || (v = {})); var x, V, U, H, G, X, W = v; class z { constructor(t, e, r, n, i = -1, s = -1) { (this.rawBytes = t), (this.text = e), (this.byteSegments = r), (this.ecLevel = n), (this.structuredAppendSequenceNumber = i), (this.structuredAppendParity = s), (this.numBits = null == t ? 0 : 8 * t.length); } getRawBytes() { return this.rawBytes; } getNumBits() { return this.numBits; } setNumBits(t) { this.numBits = t; } getText() { return this.text; } getByteSegments() { return this.byteSegments; } getECLevel() { return this.ecLevel; } getErrorsCorrected() { return this.errorsCorrected; } setErrorsCorrected(t) { this.errorsCorrected = t; } getErasures() { return this.erasures; } setErasures(t) { this.erasures = t; } getOther() { return this.other; } setOther(t) { this.other = t; } hasStructuredAppend() { return ( this.structuredAppendParity >= 0 && this.structuredAppendSequenceNumber >= 0 ); } getStructuredAppendParity() { return this.structuredAppendParity; } getStructuredAppendSequenceNumber() { return this.structuredAppendSequenceNumber; } } class Y { exp(t) { return this.expTable[t]; } log(t) { if (0 === t) throw new o(); return this.logTable[t]; } static addOrSubtract(t, e) { return t ^ e; } } class Z { constructor(t, e) { if (0 === e.length) throw new o(); this.field = t; const r = e.length; if (r > 1 && 0 === e[0]) { let t = 1; for (; t < r && 0 === e[t]; ) t++; t === r ? (this.coefficients = Int32Array.from([0])) : ((this.coefficients = new Int32Array(r - t)), c.arraycopy(e, t, this.coefficients, 0, this.coefficients.length)); } else this.coefficients = e; } getCoefficients() { return this.coefficients; } getDegree() { return this.coefficients.length - 1; } isZero() { return 0 === this.coefficients[0]; } getCoefficient(t) { return this.coefficients[this.coefficients.length - 1 - t]; } evaluateAt(t) { if (0 === t) return this.getCoefficient(0); const e = this.coefficients; let r; if (1 === t) { r = 0; for (let t = 0, n = e.length; t !== n; t++) { const n = e[t]; r = Y.addOrSubtract(r, n); } return r; } r = e[0]; const n = e.length, i = this.field; for (let s = 1; s < n; s++) r = Y.addOrSubtract(i.multiply(t, r), e[s]); return r; } addOrSubtract(t) { if (!this.field.equals(t.field)) throw new o("GenericGFPolys do not have same GenericGF field"); if (this.isZero()) return t; if (t.isZero()) return this; let e = this.coefficients, r = t.coefficients; if (e.length > r.length) { const t = e; (e = r), (r = t); } let n = new Int32Array(r.length); const i = r.length - e.length; c.arraycopy(r, 0, n, 0, i); for (let t = i; t < r.length; t++) n[t] = Y.addOrSubtract(e[t - i], r[t]); return new Z(this.field, n); } multiply(t) { if (!this.field.equals(t.field)) throw new o("GenericGFPolys do not have same GenericGF field"); if (this.isZero() || t.isZero()) return this.field.getZero(); const e = this.coefficients, r = e.length, n = t.coefficients, i = n.length, s = new Int32Array(r + i - 1), a = this.field; for (let t = 0; t < r; t++) { const r = e[t]; for (let e = 0; e < i; e++) s[t + e] = Y.addOrSubtract(s[t + e], a.multiply(r, n[e])); } return new Z(a, s); } multiplyScalar(t) { if (0 === t) return this.field.getZero(); if (1 === t) return this; const e = this.coefficients.length, r = this.field, n = new Int32Array(e), i = this.coefficients; for (let s = 0; s < e; s++) n[s] = r.multiply(i[s], t); return new Z(r, n); } multiplyByMonomial(t, e) { if (t < 0) throw new o(); if (0 === e) return this.field.getZero(); const r = this.coefficients, n = r.length, i = new Int32Array(n + t), s = this.field; for (let t = 0; t < n; t++) i[t] = s.multiply(r[t], e); return new Z(s, i); } divide(t) { if (!this.field.equals(t.field)) throw new o("GenericGFPolys do not have same GenericGF field"); if (t.isZero()) throw new o("Divide by 0"); const e = this.field; let r = e.getZero(), n = this; const i = t.getCoefficient(t.getDegree()), s = e.inverse(i); for (; n.getDegree() >= t.getDegree() && !n.isZero(); ) { const i = n.getDegree() - t.getDegree(), o = e.multiply(n.getCoefficient(n.getDegree()), s), a = t.multiplyByMonomial(i, o), l = e.buildMonomial(i, o); (r = r.addOrSubtract(l)), (n = n.addOrSubtract(a)); } return [r, n]; } toString() { let t = ""; for (let e = this.getDegree(); e >= 0; e--) { let r = this.getCoefficient(e); if (0 !== r) { if ( (r < 0 ? ((t += " - "), (r = -r)) : t.length > 0 && (t += " + "), 0 === e || 1 !== r) ) { const e = this.field.log(r); 0 === e ? (t += "1") : 1 === e ? (t += "a") : ((t += "a^"), (t += e)); } 0 !== e && (1 === e ? (t += "x") : ((t += "x^"), (t += e))); } } return t; } } class K extends i {} K.kind = "ArithmeticException"; class q extends Y { constructor(t, e, r) { super(), (this.primitive = t), (this.size = e), (this.generatorBase = r); const n = new Int32Array(e); let i = 1; for (let r = 0; r < e; r++) (n[r] = i), (i *= 2) >= e && ((i ^= t), (i &= e - 1)); this.expTable = n; const s = new Int32Array(e); for (let t = 0; t < e - 1; t++) s[n[t]] = t; (this.logTable = s), (this.zero = new Z(this, Int32Array.from([0]))), (this.one = new Z(this, Int32Array.from([1]))); } getZero() { return this.zero; } getOne() { return this.one; } buildMonomial(t, e) { if (t < 0) throw new o(); if (0 === e) return this.zero; const r = new Int32Array(t + 1); return (r[0] = e), new Z(this, r); } inverse(t) { if (0 === t) throw new K(); return this.expTable[this.size - this.logTable[t] - 1]; } multiply(t, e) { return 0 === t || 0 === e ? 0 : this.expTable[ (this.logTable[t] + this.logTable[e]) % (this.size - 1) ]; } getSize() { return this.size; } getGeneratorBase() { return this.generatorBase; } toString() { return "GF(0x" + f.toHexString(this.primitive) + "," + this.size + ")"; } equals(t) { return t === this; } } (q.AZTEC_DATA_12 = new q(4201, 4096, 1)), (q.AZTEC_DATA_10 = new q(1033, 1024, 1)), (q.AZTEC_DATA_6 = new q(67, 64, 1)), (q.AZTEC_PARAM = new q(19, 16, 1)), (q.QR_CODE_FIELD_256 = new q(285, 256, 0)), (q.DATA_MATRIX_FIELD_256 = new q(301, 256, 1)), (q.AZTEC_DATA_8 = q.DATA_MATRIX_FIELD_256), (q.MAXICODE_FIELD_64 = q.AZTEC_DATA_6); class Q extends i {} Q.kind = "ReedSolomonException"; class j extends i {} j.kind = "IllegalStateException"; class J { constructor(t) { this.field = t; } decode(t, e) { const r = this.field, n = new Z(r, t), i = new Int32Array(e); let s = !0; for (let t = 0; t < e; t++) { const e = n.evaluateAt(r.exp(t + r.getGeneratorBase())); (i[i.length - 1 - t] = e), 0 !== e && (s = !1); } if (s) return; const o = new Z(r, i), a = this.runEuclideanAlgorithm(r.buildMonomial(e, 1), o, e), l = a[0], h = a[1], c = this.findErrorLocations(l), u = this.findErrorMagnitudes(h, c); for (let e = 0; e < c.length; e++) { const n = t.length - 1 - r.log(c[e]); if (n < 0) throw new Q("Bad error location"); t[n] = q.addOrSubtract(t[n], u[e]); } } runEuclideanAlgorithm(t, e, r) { if (t.getDegree() < e.getDegree()) { const r = t; (t = e), (e = r); } const n = this.field; let i = t, s = e, o = n.getZero(), a = n.getOne(); for (; s.getDegree() >= ((r / 2) | 0); ) { let t = i, e = o; if (((o = a), (i = s).isZero())) throw new Q("r_{i-1} was zero"); s = t; let r = n.getZero(); const l = i.getCoefficient(i.getDegree()), h = n.inverse(l); for (; s.getDegree() >= i.getDegree() && !s.isZero(); ) { const t = s.getDegree() - i.getDegree(), e = n.multiply(s.getCoefficient(s.getDegree()), h); (r = r.addOrSubtract(n.buildMonomial(t, e))), (s = s.addOrSubtract(i.multiplyByMonomial(t, e))); } if ( ((a = r.multiply(o).addOrSubtract(e)), s.getDegree() >= i.getDegree()) ) throw new j("Division algorithm failed to reduce polynomial?"); } const l = a.getCoefficient(0); if (0 === l) throw new Q("sigmaTilde(0) was zero"); const h = n.inverse(l); return [a.multiplyScalar(h), s.multiplyScalar(h)]; } findErrorLocations(t) { const e = t.getDegree(); if (1 === e) return Int32Array.from([t.getCoefficient(1)]); const r = new Int32Array(e); let n = 0; const i = this.field; for (let s = 1; s < i.getSize() && n < e; s++) 0 === t.evaluateAt(s) && ((r[n] = i.inverse(s)), n++); if (n !== e) throw new Q("Error locator degree does not match number of roots"); return r; } findErrorMagnitudes(t, e) { const r = e.length, n = new Int32Array(r), i = this.field; for (let s = 0; s < r; s++) { const o = i.inverse(e[s]); let a = 1; for (let t = 0; t < r; t++) if (s !== t) { const r = i.multiply(e[t], o), n = 0 == (1 & r) ? 1 | r : -2 & r; a = i.multiply(a, n); } (n[s] = i.multiply(t.evaluateAt(o), i.inverse(a))), 0 !== i.getGeneratorBase() && (n[s] = i.multiply(n[s], o)); } return n; } } !(function (t) { (t[(t.UPPER = 0)] = "UPPER"), (t[(t.LOWER = 1)] = "LOWER"), (t[(t.MIXED = 2)] = "MIXED"), (t[(t.DIGIT = 3)] = "DIGIT"), (t[(t.PUNCT = 4)] = "PUNCT"), (t[(t.BINARY = 5)] = "BINARY"); })(x || (x = {})); class $ { decode(t) { this.ddata = t; let e = t.getBits(), r = this.extractBits(e), n = this.correctBits(r), i = $.convertBoolArrayToByteArray(n), s = $.getEncodedData(n), o = new z(i, s, null, null); return o.setNumBits(n.length), o; } static highLevelDecode(t) { return this.getEncodedData(t); } static getEncodedData(t) { let e = t.length, r = x.UPPER, n = x.UPPER, i = "", s = 0; for (; s < e; ) if (n === x.BINARY) { if (e - s < 5) break; let o = $.readCode(t, s, 5); if (((s += 5), 0 === o)) { if (e - s < 11) break; (o = $.readCode(t, s, 11) + 31), (s += 11); } for (let r = 0; r < o; r++) { if (e - s < 8) { s = e; break; } const r = $.readCode(t, s, 8); (i += S.castAsNonUtf8Char(r)), (s += 8); } n = r; } else { let o = n === x.DIGIT ? 4 : 5; if (e - s < o) break; let a = $.readCode(t, s, o); s += o; let l = $.getCharacter(n, a); l.startsWith("CTRL_") ? ((r = n), (n = $.getTable(l.charAt(5))), "L" === l.charAt(6) && (r = n)) : ((i += l), (n = r)); } return i; } static getTable(t) { switch (t) { case "L": return x.LOWER; case "P": return x.PUNCT; case "M": return x.MIXED; case "D": return x.DIGIT; case "B": return x.BINARY; case "U": default: return x.UPPER; } } static getCharacter(t, e) { switch (t) { case x.UPPER: return $.UPPER_TABLE[e]; case x.LOWER: return $.LOWER_TABLE[e]; case x.MIXED: return $.MIXED_TABLE[e]; case x.PUNCT: return $.PUNCT_TABLE[e]; case x.DIGIT: return $.DIGIT_TABLE[e]; default: throw new j("Bad table"); } } correctBits(t) { let e, r; this.ddata.getNbLayers() <= 2 ? ((r = 6), (e = q.AZTEC_DATA_6)) : this.ddata.getNbLayers() <= 8 ? ((r = 8), (e = q.AZTEC_DATA_8)) : this.ddata.getNbLayers() <= 22 ? ((r = 10), (e = q.AZTEC_DATA_10)) : ((r = 12), (e = q.AZTEC_DATA_12)); let n = this.ddata.getNbDatablocks(), i = t.length / r; if (i < n) throw new E(); let s = t.length % r, o = new Int32Array(i); for (let e = 0; e < i; e++, s += r) o[e] = $.readCode(t, s, r); try { new J(e).decode(o, i - n); } catch (t) { throw new E(t); } let a = (1 << r) - 1, l = 0; for (let t = 0; t < n; t++) { let e = o[t]; if (0 === e || e === a) throw new E(); (1 !== e && e !== a - 1) || l++; } let h = new Array(n * r - l), c = 0; for (let t = 0; t < n; t++) { let e = o[t]; if (1 === e || e === a - 1) h.fill(e > 1, c, c + r - 1), (c += r - 1); else for (let t = r - 1; t >= 0; --t) h[c++] = 0 != (e & (1 << t)); } return h; } extractBits(t) { let e = this.ddata.isCompact(), r = this.ddata.getNbLayers(), n = (e ? 11 : 14) + 4 * r, i = new Int32Array(n), s = new Array(this.totalBitsInLayer(r, e)); if (e) for (let t = 0; t < i.length; t++) i[t] = t; else { let t = n + 1 + 2 * f.truncDivision(f.truncDivision(n, 2) - 1, 15), e = n / 2, r = f.truncDivision(t, 2); for (let t = 0; t < e; t++) { let n = t + f.truncDivision(t, 15); (i[e - t - 1] = r - n - 1), (i[e + t] = r + n + 1); } } for (let o = 0, a = 0; o < r; o++) { let l = 4 * (r - o) + (e ? 9 : 12), h = 2 * o, c = n - 1 - h; for (let e = 0; e < l; e++) { let r = 2 * e; for (let n = 0; n < 2; n++) (s[a + r + n] = t.get(i[h + n], i[h + e])), (s[a + 2 * l + r + n] = t.get(i[h + e], i[c - n])), (s[a + 4 * l + r + n] = t.get(i[c - n], i[c - e])), (s[a + 6 * l + r + n] = t.get(i[c - e], i[h + n])); } a += 8 * l; } return s; } static readCode(t, e, r) { let n = 0; for (let i = e; i < e + r; i++) (n <<= 1), t[i] && (n |= 1); return n; } static readByte(t, e) { let r = t.length - e; return r >= 8 ? $.readCode(t, e, 8) : $.readCode(t, e, r) << (8 - r); } static convertBoolArrayToByteArray(t) { let e = new Uint8Array((t.length + 7) / 8); for (let r = 0; r < e.length; r++) e[r] = $.readByte(t, 8 * r); return e; } totalBitsInLayer(t, e) { return ((e ? 88 : 112) + 16 * t) * t; } } ($.UPPER_TABLE = [ "CTRL_PS", " ", "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", "CTRL_LL", "CTRL_ML", "CTRL_DL", "CTRL_BS", ]), ($.LOWER_TABLE = [ "CTRL_PS", " ", "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", "CTRL_US", "CTRL_ML", "CTRL_DL", "CTRL_BS", ]), ($.MIXED_TABLE = [ "CTRL_PS", " ", "\\1", "\\2", "\\3", "\\4", "\\5", "\\6", "\\7", "\b", "\t", "\n", "\\13", "\f", "\r", "\\33", "\\34", "\\35", "\\36", "\\37", "@", "\\", "^", "_", "`", "|", "~", "\\177", "CTRL_LL", "CTRL_UL", "CTRL_PL", "CTRL_BS", ]), ($.PUNCT_TABLE = [ "", "\r", "\r\n", ". ", ", ", ": ", "!", '"', "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "[", "]", "{", "}", "CTRL_UL", ]), ($.DIGIT_TABLE = [ "CTRL_PS", " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ",", ".", "CTRL_UL", "CTRL_US", ]); class tt { constructor() {} static round(t) { return NaN === t ? 0 : t <= Number.MIN_SAFE_INTEGER ? Number.MIN_SAFE_INTEGER : t >= Number.MAX_SAFE_INTEGER ? Number.MAX_SAFE_INTEGER : (t + (t < 0 ? -0.5 : 0.5)) | 0; } static distance(t, e, r, n) { const i = t - r, s = e - n; return Math.sqrt(i * i + s * s); } static sum(t) { let e = 0; for (let r = 0, n = t.length; r !== n; r++) { e += t[r]; } return e; } } class et { static floatToIntBits(t) { return t; } } et.MAX_VALUE = Number.MAX_SAFE_INTEGER; class rt { constructor(t, e) { (this.x = t), (this.y = e); } getX() { return this.x; } getY() { return this.y; } equals(t) { if (t instanceof rt) { const e = t; return this.x === e.x && this.y === e.y; } return !1; } hashCode() { return 31 * et.floatToIntBits(this.x) + et.floatToIntBits(this.y); } toString() { return "(" + this.x + "," + this.y + ")"; } static orderBestPatterns(t) { const e = this.distance(t[0], t[1]), r = this.distance(t[1], t[2]), n = this.distance(t[0], t[2]); let i, s, o; if ( (r >= e && r >= n ? ((s = t[0]), (i = t[1]), (o = t[2])) : n >= r && n >= e ? ((s = t[1]), (i = t[0]), (o = t[2])) : ((s = t[2]), (i = t[0]), (o = t[1])), this.crossProductZ(i, s, o) < 0) ) { const t = i; (i = o), (o = t); } (t[0] = i), (t[1] = s), (t[2] = o); } static distance(t, e) { return tt.distance(t.x, t.y, e.x, e.y); } static crossProductZ(t, e, r) { const n = e.x, i = e.y; return (r.x - n) * (t.y - i) - (r.y - i) * (t.x - n); } } class nt { constructor(t, e) { (this.bits = t), (this.points = e); } getBits() { return this.bits; } getPoints() { return this.points; } } class it extends nt { constructor(t, e, r, n, i) { super(t, e), (this.compact = r), (this.nbDatablocks = n), (this.nbLayers = i); } getNbLayers() { return this.nbLayers; } getNbDatablocks() { return this.nbDatablocks; } isCompact() { return this.compact; } } class st { constructor(t, e, r, n) { (this.image = t), (this.height = t.getHeight()), (this.width = t.getWidth()), null == e && (e = st.INIT_SIZE), null == r && (r = (t.getWidth() / 2) | 0), null == n && (n = (t.getHeight() / 2) | 0); const i = (e / 2) | 0; if ( ((this.leftInit = r - i), (this.rightInit = r + i), (this.upInit = n - i), (this.downInit = n + i), this.upInit < 0 || this.leftInit < 0 || this.downInit >= this.height || this.rightInit >= this.width) ) throw new R(); } detect() { let t = this.leftInit, e = this.rightInit, r = this.upInit, n = this.downInit, i = !1, s = !0, o = !1, a = !1, l = !1, h = !1, c = !1; const u = this.width, d = this.height; for (; s; ) { s = !1; let g = !0; for (; (g || !a) && e < u; ) (g = this.containsBlackPoint(r, n, e, !1)) ? (e++, (s = !0), (a = !0)) : a || e++; if (e >= u) { i = !0; break; } let f = !0; for (; (f || !l) && n < d; ) (f = this.containsBlackPoint(t, e, n, !0)) ? (n++, (s = !0), (l = !0)) : l || n++; if (n >= d) { i = !0; break; } let w = !0; for (; (w || !h) && t >= 0; ) (w = this.containsBlackPoint(r, n, t, !1)) ? (t--, (s = !0), (h = !0)) : h || t--; if (t < 0) { i = !0; break; } let A = !0; for (; (A || !c) && r >= 0; ) (A = this.containsBlackPoint(t, e, r, !0)) ? (r--, (s = !0), (c = !0)) : c || r--; if (r < 0) { i = !0; break; } s && (o = !0); } if (!i && o) { const i = e - t; let s = null; for (let e = 1; null === s && e < i; e++) s = this.getBlackPointOnSegment(t, n - e, t + e, n); if (null == s) throw new R(); let o = null; for (let e = 1; null === o && e < i; e++) o = this.getBlackPointOnSegment(t, r + e, t + e, r); if (null == o) throw new R(); let a = null; for (let t = 1; null === a && t < i; t++) a = this.getBlackPointOnSegment(e, r + t, e - t, r); if (null == a) throw new R(); let l = null; for (let t = 1; null === l && t < i; t++) l = this.getBlackPointOnSegment(e, n - t, e - t, n); if (null == l) throw new R(); return this.centerEdges(l, s, a, o); } throw new R(); } getBlackPointOnSegment(t, e, r, n) { const i = tt.round(tt.distance(t, e, r, n)), s = (r - t) / i, o = (n - e) / i, a = this.image; for (let r = 0; r < i; r++) { const n = tt.round(t + r * s), i = tt.round(e + r * o); if (a.get(n, i)) return new rt(n, i); } return null; } centerEdges(t, e, r, n) { const i = t.getX(), s = t.getY(), o = e.getX(), a = e.getY(), l = r.getX(), h = r.getY(), c = n.getX(), u = n.getY(), d = st.CORR; return i < this.width / 2 ? [ new rt(c - d, u + d), new rt(o + d, a + d), new rt(l - d, h - d), new rt(i + d, s - d), ] : [ new rt(c + d, u + d), new rt(o + d, a - d), new rt(l - d, h + d), new rt(i - d, s - d), ]; } containsBlackPoint(t, e, r, n) { const i = this.image; if (n) { for (let n = t; n <= e; n++) if (i.get(n, r)) return !0; } else for (let n = t; n <= e; n++) if (i.get(r, n)) return !0; return !1; } } (st.INIT_SIZE = 10), (st.CORR = 1); class ot { static checkAndNudgePoints(t, e) { const r = t.getWidth(), n = t.getHeight(); let i = !0; for (let t = 0; t < e.length && i; t += 2) { const s = Math.floor(e[t]), o = Math.floor(e[t + 1]); if (s < -1 || s > r || o < -1 || o > n) throw new R(); (i = !1), -1 === s ? ((e[t] = 0), (i = !0)) : s === r && ((e[t] = r - 1), (i = !0)), -1 === o ? ((e[t + 1] = 0), (i = !0)) : o === n && ((e[t + 1] = n - 1), (i = !0)); } i = !0; for (let t = e.length - 2; t >= 0 && i; t -= 2) { const s = Math.floor(e[t]), o = Math.floor(e[t + 1]); if (s < -1 || s > r || o < -1 || o > n) throw new R(); (i = !1), -1 === s ? ((e[t] = 0), (i = !0)) : s === r && ((e[t] = r - 1), (i = !0)), -1 === o ? ((e[t + 1] = 0), (i = !0)) : o === n && ((e[t + 1] = n - 1), (i = !0)); } } } class at { constructor(t, e, r, n, i, s, o, a, l) { (this.a11 = t), (this.a21 = e), (this.a31 = r), (this.a12 = n), (this.a22 = i), (this.a32 = s), (this.a13 = o), (this.a23 = a), (this.a33 = l); } static quadrilateralToQuadrilateral( t, e, r, n, i, s, o, a, l, h, c, u, d, g, f, w ) { const A = at.quadrilateralToSquare(t, e, r, n, i, s, o, a); return at.squareToQuadrilateral(l, h, c, u, d, g, f, w).times(A); } transformPoints(t) { const e = t.length, r = this.a11, n = this.a12, i = this.a13, s = this.a21, o = this.a22, a = this.a23, l = this.a31, h = this.a32, c = this.a33; for (let u = 0; u < e; u += 2) { const e = t[u], d = t[u + 1], g = i * e + a * d + c; (t[u] = (r * e + s * d + l) / g), (t[u + 1] = (n * e + o * d + h) / g); } } transformPointsWithValues(t, e) { const r = this.a11, n = this.a12, i = this.a13, s = this.a21, o = this.a22, a = this.a23, l = this.a31, h = this.a32, c = this.a33, u = t.length; for (let d = 0; d < u; d++) { const u = t[d], g = e[d], f = i * u + a * g + c; (t[d] = (r * u + s * g + l) / f), (e[d] = (n * u + o * g + h) / f); } } static squareToQuadrilateral(t, e, r, n, i, s, o, a) { const l = t - r + i - o, h = e - n + s - a; if (0 === l && 0 === h) return new at(r - t, i - r, t, n - e, s - n, e, 0, 0, 1); { const c = r - i, u = o - i, d = n - s, g = a - s, f = c * g - u * d, w = (l * g - u * h) / f, A = (c * h - l * d) / f; return new at( r - t + w * r, o - t + A * o, t, n - e + w * n, a - e + A * a, e, w, A, 1 ); } } static quadrilateralToSquare(t, e, r, n, i, s, o, a) { return at.squareToQuadrilateral(t, e, r, n, i, s, o, a).buildAdjoint(); } buildAdjoint() { return new at( 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 ); } times(t) { return new at( this.a11 * t.a11 + this.a21 * t.a12 + this.a31 * t.a13, this.a11 * t.a21 + this.a21 * t.a22 + this.a31 * t.a23, this.a11 * t.a31 + this.a21 * t.a32 + this.a31 * t.a33, this.a12 * t.a11 + this.a22 * t.a12 + this.a32 * t.a13, this.a12 * t.a21 + this.a22 * t.a22 + this.a32 * t.a23, this.a12 * t.a31 + this.a22 * t.a32 + this.a32 * t.a33, this.a13 * t.a11 + this.a23 * t.a12 + this.a33 * t.a13, this.a13 * t.a21 + this.a23 * t.a22 + this.a33 * t.a23, this.a13 * t.a31 + this.a23 * t.a32 + this.a33 * t.a33 ); } } class lt extends ot { sampleGrid(t, e, r, n, i, s, o, a, l, h, c, u, d, g, f, w, A, C, E) { const m = at.quadrilateralToQuadrilateral( n, i, s, o, a, l, h, c, u, d, g, f, w, A, C, E ); return this.sampleGridWithTransform(t, e, r, m); } sampleGridWithTransform(t, e, r, n) { if (e <= 0 || r <= 0) throw new R(); const i = new T(e, r), s = new Float32Array(2 * e); for (let e = 0; e < r; e++) { const r = s.length, o = e + 0.5; for (let t = 0; t < r; t += 2) (s[t] = t / 2 + 0.5), (s[t + 1] = o); n.transformPoints(s), ot.checkAndNudgePoints(t, s); try { for (let n = 0; n < r; n += 2) t.get(Math.floor(s[n]), Math.floor(s[n + 1])) && i.set(n / 2, e); } catch (t) { throw new R(); } } return i; } } class ht { static setGridSampler(t) { ht.gridSampler = t; } static getInstance() { return ht.gridSampler; } } ht.gridSampler = new lt(); class ct { constructor(t, e) { (this.x = t), (this.y = e); } toResultPoint() { return new rt(this.getX(), this.getY()); } getX() { return this.x; } getY() { return this.y; } } class ut { constructor(t) { (this.EXPECTED_CORNER_BITS = new Int32Array([3808, 476, 2107, 1799])), (this.image = t); } detect() { return this.detectMirror(!1); } detectMirror(t) { let e = this.getMatrixCenter(), r = this.getBullsEyeCorners(e); if (t) { let t = r[0]; (r[0] = r[2]), (r[2] = t); } this.extractParameters(r); let n = this.sampleGrid( this.image, r[this.shift % 4], r[(this.shift + 1) % 4], r[(this.shift + 2) % 4], r[(this.shift + 3) % 4] ), i = this.getMatrixCornerPoints(r); return new it(n, i, this.compact, this.nbDataBlocks, this.nbLayers); } extractParameters(t) { if ( !( this.isValidPoint(t[0]) && this.isValidPoint(t[1]) && this.isValidPoint(t[2]) && this.isValidPoint(t[3]) ) ) throw new R(); let e = 2 * this.nbCenterLayers, r = new Int32Array([ this.sampleLine(t[0], t[1], e), this.sampleLine(t[1], t[2], e), this.sampleLine(t[2], t[3], e), this.sampleLine(t[3], t[0], e), ]); this.shift = this.getRotation(r, e); let n = 0; for (let t = 0; t < 4; t++) { let e = r[(this.shift + t) % 4]; this.compact ? ((n <<= 7), (n += (e >> 1) & 127)) : ((n <<= 10), (n += ((e >> 2) & 992) + ((e >> 1) & 31))); } let i = this.getCorrectedParameterData(n, this.compact); this.compact ? ((this.nbLayers = 1 + (i >> 6)), (this.nbDataBlocks = 1 + (63 & i))) : ((this.nbLayers = 1 + (i >> 11)), (this.nbDataBlocks = 1 + (2047 & i))); } getRotation(t, e) { let r = 0; t.forEach((t, n, i) => { r = (r << 3) + (((t >> (e - 2)) << 1) + (1 & t)); }), (r = ((1 & r) << 11) + (r >> 1)); for (let t = 0; t < 4; t++) if (f.bitCount(r ^ this.EXPECTED_CORNER_BITS[t]) <= 2) return t; throw new R(); } getCorrectedParameterData(t, e) { let r, n; e ? ((r = 7), (n = 2)) : ((r = 10), (n = 4)); let i = r - n, s = new Int32Array(r); for (let e = r - 1; e >= 0; --e) (s[e] = 15 & t), (t >>= 4); try { new J(q.AZTEC_PARAM).decode(s, i); } catch (t) { throw new R(); } let o = 0; for (let t = 0; t < n; t++) o = (o << 4) + s[t]; return o; } getBullsEyeCorners(t) { let e = t, r = t, n = t, i = t, s = !0; for ( this.nbCenterLayers = 1; this.nbCenterLayers < 9; this.nbCenterLayers++ ) { let t = this.getFirstDifferent(e, s, 1, -1), o = this.getFirstDifferent(r, s, 1, 1), a = this.getFirstDifferent(n, s, -1, 1), l = this.getFirstDifferent(i, s, -1, -1); if (this.nbCenterLayers > 2) { let r = (this.distancePoint(l, t) * this.nbCenterLayers) / (this.distancePoint(i, e) * (this.nbCenterLayers + 2)); if (r < 0.75 || r > 1.25 || !this.isWhiteOrBlackRectangle(t, o, a, l)) break; } (e = t), (r = o), (n = a), (i = l), (s = !s); } if (5 !== this.nbCenterLayers && 7 !== this.nbCenterLayers) throw new R(); this.compact = 5 === this.nbCenterLayers; let o = new rt(e.getX() + 0.5, e.getY() - 0.5), a = new rt(r.getX() + 0.5, r.getY() + 0.5), l = new rt(n.getX() - 0.5, n.getY() + 0.5), h = new rt(i.getX() - 0.5, i.getY() - 0.5); return this.expandSquare( [o, a, l, h], 2 * this.nbCenterLayers - 3, 2 * this.nbCenterLayers ); } getMatrixCenter() { let t, e, r, n; try { let i = new st(this.image).detect(); (t = i[0]), (e = i[1]), (r = i[2]), (n = i[3]); } catch (i) { let s = this.image.getWidth() / 2, o = this.image.getHeight() / 2; (t = this.getFirstDifferent( new ct(s + 7, o - 7), !1, 1, -1 ).toResultPoint()), (e = this.getFirstDifferent( new ct(s + 7, o + 7), !1, 1, 1 ).toResultPoint()), (r = this.getFirstDifferent( new ct(s - 7, o + 7), !1, -1, 1 ).toResultPoint()), (n = this.getFirstDifferent( new ct(s - 7, o - 7), !1, -1, -1 ).toResultPoint()); } let i = tt.round((t.getX() + n.getX() + e.getX() + r.getX()) / 4), s = tt.round((t.getY() + n.getY() + e.getY() + r.getY()) / 4); try { let o = new st(this.image, 15, i, s).detect(); (t = o[0]), (e = o[1]), (r = o[2]), (n = o[3]); } catch (o) { (t = this.getFirstDifferent( new ct(i + 7, s - 7), !1, 1, -1 ).toResultPoint()), (e = this.getFirstDifferent( new ct(i + 7, s + 7), !1, 1, 1 ).toResultPoint()), (r = this.getFirstDifferent( new ct(i - 7, s + 7), !1, -1, 1 ).toResultPoint()), (n = this.getFirstDifferent( new ct(i - 7, s - 7), !1, -1, -1 ).toResultPoint()); } return ( (i = tt.round((t.getX() + n.getX() + e.getX() + r.getX()) / 4)), (s = tt.round((t.getY() + n.getY() + e.getY() + r.getY()) / 4)), new ct(i, s) ); } getMatrixCornerPoints(t) { return this.expandSquare(t, 2 * this.nbCenterLayers, this.getDimension()); } sampleGrid(t, e, r, n, i) { let s = ht.getInstance(), o = this.getDimension(), a = o / 2 - this.nbCenterLayers, l = o / 2 + this.nbCenterLayers; return s.sampleGrid( t, o, o, a, a, l, a, l, l, a, l, e.getX(), e.getY(), r.getX(), r.getY(), n.getX(), n.getY(), i.getX(), i.getY() ); } sampleLine(t, e, r) { let n = 0, i = this.distanceResultPoint(t, e), s = i / r, o = t.getX(), a = t.getY(), l = (s * (e.getX() - t.getX())) / i, h = (s * (e.getY() - t.getY())) / i; for (let t = 0; t < r; t++) this.image.get(tt.round(o + t * l), tt.round(a + t * h)) && (n |= 1 << (r - t - 1)); return n; } isWhiteOrBlackRectangle(t, e, r, n) { (t = new ct(t.getX() - 3, t.getY() + 3)), (e = new ct(e.getX() - 3, e.getY() - 3)), (r = new ct(r.getX() + 3, r.getY() - 3)), (n = new ct(n.getX() + 3, n.getY() + 3)); let i = this.getColor(n, t); if (0 === i) return !1; let s = this.getColor(t, e); return ( s === i && (s = this.getColor(e, r)) === i && (s = this.getColor(r, n)) === i ); } getColor(t, e) { let r = this.distancePoint(t, e), n = (e.getX() - t.getX()) / r, i = (e.getY() - t.getY()) / r, s = 0, o = t.getX(), a = t.getY(), l = this.image.get(t.getX(), t.getY()), h = Math.ceil(r); for (let t = 0; t < h; t++) (o += n), (a += i), this.image.get(tt.round(o), tt.round(a)) !== l && s++; let c = s / r; return c > 0.1 && c < 0.9 ? 0 : c <= 0.1 === l ? 1 : -1; } getFirstDifferent(t, e, r, n) { let i = t.getX() + r, s = t.getY() + n; for (; this.isValid(i, s) && this.image.get(i, s) === e; ) (i += r), (s += n); for (i -= r, s -= n; this.isValid(i, s) && this.image.get(i, s) === e; ) i += r; for (i -= r; this.isValid(i, s) && this.image.get(i, s) === e; ) s += n; return new ct(i, (s -= n)); } expandSquare(t, e, r) { let n = r / (2 * e), i = t[0].getX() - t[2].getX(), s = t[0].getY() - t[2].getY(), o = (t[0].getX() + t[2].getX()) / 2, a = (t[0].getY() + t[2].getY()) / 2, l = new rt(o + n * i, a + n * s), h = new rt(o - n * i, a - n * s); return ( (i = t[1].getX() - t[3].getX()), (s = t[1].getY() - t[3].getY()), (o = (t[1].getX() + t[3].getX()) / 2), (a = (t[1].getY() + t[3].getY()) / 2), [l, new rt(o + n * i, a + n * s), h, new rt(o - n * i, a - n * s)] ); } isValid(t, e) { return ( t >= 0 && t < this.image.getWidth() && e > 0 && e < this.image.getHeight() ); } isValidPoint(t) { let e = tt.round(t.getX()), r = tt.round(t.getY()); return this.isValid(e, r); } distancePoint(t, e) { return tt.distance(t.getX(), t.getY(), e.getX(), e.getY()); } distanceResultPoint(t, e) { return tt.distance(t.getX(), t.getY(), e.getX(), e.getY()); } getDimension() { return this.compact ? 4 * this.nbLayers + 11 : this.nbLayers <= 4 ? 4 * this.nbLayers + 15 : 4 * this.nbLayers + 2 * (f.truncDivision(this.nbLayers - 4, 8) + 1) + 15; } } class dt { decode(t, e = null) { let r = null, n = new ut(t.getBlackMatrix()), i = null, s = null; try { let t = n.detectMirror(!1); (i = t.getPoints()), this.reportFoundResultPoints(e, i), (s = new $().decode(t)); } catch (t) { r = t; } if (null == s) try { let t = n.detectMirror(!0); (i = t.getPoints()), this.reportFoundResultPoints(e, i), (s = new $().decode(t)); } catch (t) { if (null != r) throw r; throw t; } let o = new F( s.getText(), s.getRawBytes(), s.getNumBits(), i, k.AZTEC, c.currentTimeMillis() ), a = s.getByteSegments(); null != a && o.putMetadata(W.BYTE_SEGMENTS, a); let l = s.getECLevel(); return null != l && o.putMetadata(W.ERROR_CORRECTION_LEVEL, l), o; } reportFoundResultPoints(t, e) { if (null != t) { let r = t.get(C.NEED_RESULT_POINT_CALLBACK); null != r && e.forEach((t, e, n) => { r.foundPossibleResultPoint(t); }); } } reset() {} } class gt { decode(t, e) { try { return this.doDecode(t, e); } catch (r) { if (e && !0 === e.get(C.TRY_HARDER) && t.isRotateSupported()) { const r = t.rotateCounterClockwise(), n = this.doDecode(r, e), i = n.getResultMetadata(); let s = 270; null !== i && !0 === i.get(W.ORIENTATION) && (s += i.get(W.ORIENTATION) % 360), n.putMetadata(W.ORIENTATION, s); const o = n.getResultPoints(); if (null !== o) { const t = r.getHeight(); for (let e = 0; e < o.length; e++) o[e] = new rt(t - o[e].getY() - 1, o[e].getX()); } return n; } throw new R(); } } reset() {} doDecode(t, e) { const r = t.getWidth(), n = t.getHeight(); let i = new w(r); const s = e && !0 === e.get(C.TRY_HARDER), o = Math.max(1, n >> (s ? 8 : 5)); let a; a = s ? n : 15; const l = Math.trunc(n / 2); for (let s = 0; s < a; s++) { const a = Math.trunc((s + 1) / 2), h = l + o * (0 == (1 & s) ? a : -a); if (h < 0 || h >= n) break; try { i = t.getBlackRow(h, i); } catch (t) { continue; } for (let t = 0; t < 2; t++) { if ( 1 === t && (i.reverse(), e && !0 === e.get(C.NEED_RESULT_POINT_CALLBACK)) ) { const t = new Map(); e.forEach((e, r) => t.set(r, e)), t.delete(C.NEED_RESULT_POINT_CALLBACK), (e = t); } try { const n = this.decodeRow(h, i, e); if (1 === t) { n.putMetadata(W.ORIENTATION, 180); const t = n.getResultPoints(); null !== t && ((t[0] = new rt(r - t[0].getX() - 1, t[0].getY())), (t[1] = new rt(r - t[1].getX() - 1, t[1].getY()))); } return n; } catch (t) {} } } throw new R(); } static recordPattern(t, e, r) { const n = r.length; for (let t = 0; t < n; t++) r[t] = 0; const i = t.getSize(); if (e >= i) throw new R(); let s = !t.get(e), o = 0, a = e; for (; a < i; ) { if (t.get(a) !== s) r[o]++; else { if (++o === n) break; (r[o] = 1), (s = !s); } a++; } if (o !== n && (o !== n - 1 || a !== i)) throw new R(); } static recordPatternInReverse(t, e, r) { let n = r.length, i = t.get(e); for (; e > 0 && n >= 0; ) t.get(--e) !== i && (n--, (i = !i)); if (n >= 0) throw new R(); gt.recordPattern(t, e + 1, r); } static patternMatchVariance(t, e, r) { const n = t.length; let i = 0, s = 0; for (let r = 0; r < n; r++) (i += t[r]), (s += e[r]); if (i < s) return Number.POSITIVE_INFINITY; const o = i / s; r *= o; let a = 0; for (let i = 0; i < n; i++) { const n = t[i], s = e[i] * o, l = n > s ? n - s : s - n; if (l > r) return Number.POSITIVE_INFINITY; a += l; } return a / i; } } class ft extends gt { static findStartPattern(t) { const e = t.getSize(), r = t.getNextSet(0); let n = 0, i = Int32Array.from([0, 0, 0, 0, 0, 0]), s = r, o = !1; for (let a = r; a < e; a++) if (t.get(a) !== o) i[n]++; else { if (5 === n) { let e = ft.MAX_AVG_VARIANCE, r = -1; for (let t = ft.CODE_START_A; t <= ft.CODE_START_C; t++) { const n = gt.patternMatchVariance( i, ft.CODE_PATTERNS[t], ft.MAX_INDIVIDUAL_VARIANCE ); n < e && ((e = n), (r = t)); } if (r >= 0 && t.isRange(Math.max(0, s - (a - s) / 2), s, !1)) return Int32Array.from([s, a, r]); (s += i[0] + i[1]), ((i = i.slice(2, i.length - 1))[n - 1] = 0), (i[n] = 0), n--; } else n++; (i[n] = 1), (o = !o); } throw new R(); } static decodeCode(t, e, r) { gt.recordPattern(t, r, e); let n = ft.MAX_AVG_VARIANCE, i = -1; for (let t = 0; t < ft.CODE_PATTERNS.length; t++) { const r = ft.CODE_PATTERNS[t], s = this.patternMatchVariance(e, r, ft.MAX_INDIVIDUAL_VARIANCE); s < n && ((n = s), (i = t)); } if (i >= 0) return i; throw new R(); } decodeRow(t, e, r) { const n = r && !0 === r.get(C.ASSUME_GS1), i = ft.findStartPattern(e), s = i[2]; let o = 0; const a = new Uint8Array(20); let h; switch (((a[o++] = s), s)) { case ft.CODE_START_A: h = ft.CODE_CODE_A; break; case ft.CODE_START_B: h = ft.CODE_CODE_B; break; case ft.CODE_START_C: h = ft.CODE_CODE_C; break; default: throw new E(); } let c = !1, u = !1, d = "", g = i[0], f = i[1]; const w = Int32Array.from([0, 0, 0, 0, 0, 0]); let A = 0, m = 0, _ = s, I = 0, S = !0, p = !1, T = !1; for (; !c; ) { const t = u; switch ( ((u = !1), (A = m), (m = ft.decodeCode(e, w, f)), (a[o++] = m), m !== ft.CODE_STOP && (S = !0), m !== ft.CODE_STOP && (_ += ++I * m), (g = f), (f += w.reduce((t, e) => t + e, 0)), m) ) { case ft.CODE_START_A: case ft.CODE_START_B: case ft.CODE_START_C: throw new E(); } switch (h) { case ft.CODE_CODE_A: if (m < 64) (d += T === p ? String.fromCharCode(" ".charCodeAt(0) + m) : String.fromCharCode(" ".charCodeAt(0) + m + 128)), (T = !1); else if (m < 96) (d += T === p ? String.fromCharCode(m - 64) : String.fromCharCode(m + 64)), (T = !1); else switch ((m !== ft.CODE_STOP && (S = !1), m)) { case ft.CODE_FNC_1: n && (0 === d.length ? (d += "]C1") : (d += String.fromCharCode(29))); break; case ft.CODE_FNC_2: case ft.CODE_FNC_3: break; case ft.CODE_FNC_4_A: !p && T ? ((p = !0), (T = !1)) : p && T ? ((p = !1), (T = !1)) : (T = !0); break; case ft.CODE_SHIFT: (u = !0), (h = ft.CODE_CODE_B); break; case ft.CODE_CODE_B: h = ft.CODE_CODE_B; break; case ft.CODE_CODE_C: h = ft.CODE_CODE_C; break; case ft.CODE_STOP: c = !0; } break; case ft.CODE_CODE_B: if (m < 96) (d += T === p ? String.fromCharCode(" ".charCodeAt(0) + m) : String.fromCharCode(" ".charCodeAt(0) + m + 128)), (T = !1); else switch ((m !== ft.CODE_STOP && (S = !1), m)) { case ft.CODE_FNC_1: n && (0 === d.length ? (d += "]C1") : (d += String.fromCharCode(29))); break; case ft.CODE_FNC_2: case ft.CODE_FNC_3: break; case ft.CODE_FNC_4_B: !p && T ? ((p = !0), (T = !1)) : p && T ? ((p = !1), (T = !1)) : (T = !0); break; case ft.CODE_SHIFT: (u = !0), (h = ft.CODE_CODE_A); break; case ft.CODE_CODE_A: h = ft.CODE_CODE_A; break; case ft.CODE_CODE_C: h = ft.CODE_CODE_C; break; case ft.CODE_STOP: c = !0; } break; case ft.CODE_CODE_C: if (m < 100) m < 10 && (d += "0"), (d += m); else switch ((m !== ft.CODE_STOP && (S = !1), m)) { case ft.CODE_FNC_1: n && (0 === d.length ? (d += "]C1") : (d += String.fromCharCode(29))); break; case ft.CODE_CODE_A: h = ft.CODE_CODE_A; break; case ft.CODE_CODE_B: h = ft.CODE_CODE_B; break; case ft.CODE_STOP: c = !0; } } t && (h = h === ft.CODE_CODE_A ? ft.CODE_CODE_B : ft.CODE_CODE_A); } const N = f - g; if ( ((f = e.getNextUnset(f)), !e.isRange(f, Math.min(e.getSize(), f + (f - g) / 2), !1)) ) throw new R(); if ((_ -= I * A) % 103 !== A) throw new l(); const D = d.length; if (0 === D) throw new R(); D > 0 && S && (d = h === ft.CODE_CODE_C ? d.substring(0, D - 2) : d.substring(0, D - 1)); const y = (i[1] + i[0]) / 2, O = g + N / 2, M = a.length, b = new Uint8Array(M); for (let t = 0; t < M; t++) b[t] = a[t]; const B = [new rt(y, t), new rt(O, t)]; return new F(d, b, 0, B, k.CODE_128, new Date().getTime()); } } (ft.CODE_PATTERNS = [ Int32Array.from([2, 1, 2, 2, 2, 2]), Int32Array.from([2, 2, 2, 1, 2, 2]), Int32Array.from([2, 2, 2, 2, 2, 1]), Int32Array.from([1, 2, 1, 2, 2, 3]), Int32Array.from([1, 2, 1, 3, 2, 2]), Int32Array.from([1, 3, 1, 2, 2, 2]), Int32Array.from([1, 2, 2, 2, 1, 3]), Int32Array.from([1, 2, 2, 3, 1, 2]), Int32Array.from([1, 3, 2, 2, 1, 2]), Int32Array.from([2, 2, 1, 2, 1, 3]), Int32Array.from([2, 2, 1, 3, 1, 2]), Int32Array.from([2, 3, 1, 2, 1, 2]), Int32Array.from([1, 1, 2, 2, 3, 2]), Int32Array.from([1, 2, 2, 1, 3, 2]), Int32Array.from([1, 2, 2, 2, 3, 1]), Int32Array.from([1, 1, 3, 2, 2, 2]), Int32Array.from([1, 2, 3, 1, 2, 2]), Int32Array.from([1, 2, 3, 2, 2, 1]), Int32Array.from([2, 2, 3, 2, 1, 1]), Int32Array.from([2, 2, 1, 1, 3, 2]), Int32Array.from([2, 2, 1, 2, 3, 1]), Int32Array.from([2, 1, 3, 2, 1, 2]), Int32Array.from([2, 2, 3, 1, 1, 2]), Int32Array.from([3, 1, 2, 1, 3, 1]), Int32Array.from([3, 1, 1, 2, 2, 2]), Int32Array.from([3, 2, 1, 1, 2, 2]), Int32Array.from([3, 2, 1, 2, 2, 1]), Int32Array.from([3, 1, 2, 2, 1, 2]), Int32Array.from([3, 2, 2, 1, 1, 2]), Int32Array.from([3, 2, 2, 2, 1, 1]), Int32Array.from([2, 1, 2, 1, 2, 3]), Int32Array.from([2, 1, 2, 3, 2, 1]), Int32Array.from([2, 3, 2, 1, 2, 1]), Int32Array.from([1, 1, 1, 3, 2, 3]), Int32Array.from([1, 3, 1, 1, 2, 3]), Int32Array.from([1, 3, 1, 3, 2, 1]), Int32Array.from([1, 1, 2, 3, 1, 3]), Int32Array.from([1, 3, 2, 1, 1, 3]), Int32Array.from([1, 3, 2, 3, 1, 1]), Int32Array.from([2, 1, 1, 3, 1, 3]), Int32Array.from([2, 3, 1, 1, 1, 3]), Int32Array.from([2, 3, 1, 3, 1, 1]), Int32Array.from([1, 1, 2, 1, 3, 3]), Int32Array.from([1, 1, 2, 3, 3, 1]), Int32Array.from([1, 3, 2, 1, 3, 1]), Int32Array.from([1, 1, 3, 1, 2, 3]), Int32Array.from([1, 1, 3, 3, 2, 1]), Int32Array.from([1, 3, 3, 1, 2, 1]), Int32Array.from([3, 1, 3, 1, 2, 1]), Int32Array.from([2, 1, 1, 3, 3, 1]), Int32Array.from([2, 3, 1, 1, 3, 1]), Int32Array.from([2, 1, 3, 1, 1, 3]), Int32Array.from([2, 1, 3, 3, 1, 1]), Int32Array.from([2, 1, 3, 1, 3, 1]), Int32Array.from([3, 1, 1, 1, 2, 3]), Int32Array.from([3, 1, 1, 3, 2, 1]), Int32Array.from([3, 3, 1, 1, 2, 1]), Int32Array.from([3, 1, 2, 1, 1, 3]), Int32Array.from([3, 1, 2, 3, 1, 1]), Int32Array.from([3, 3, 2, 1, 1, 1]), Int32Array.from([3, 1, 4, 1, 1, 1]), Int32Array.from([2, 2, 1, 4, 1, 1]), Int32Array.from([4, 3, 1, 1, 1, 1]), Int32Array.from([1, 1, 1, 2, 2, 4]), Int32Array.from([1, 1, 1, 4, 2, 2]), Int32Array.from([1, 2, 1, 1, 2, 4]), Int32Array.from([1, 2, 1, 4, 2, 1]), Int32Array.from([1, 4, 1, 1, 2, 2]), Int32Array.from([1, 4, 1, 2, 2, 1]), Int32Array.from([1, 1, 2, 2, 1, 4]), Int32Array.from([1, 1, 2, 4, 1, 2]), Int32Array.from([1, 2, 2, 1, 1, 4]), Int32Array.from([1, 2, 2, 4, 1, 1]), Int32Array.from([1, 4, 2, 1, 1, 2]), Int32Array.from([1, 4, 2, 2, 1, 1]), Int32Array.from([2, 4, 1, 2, 1, 1]), Int32Array.from([2, 2, 1, 1, 1, 4]), Int32Array.from([4, 1, 3, 1, 1, 1]), Int32Array.from([2, 4, 1, 1, 1, 2]), Int32Array.from([1, 3, 4, 1, 1, 1]), Int32Array.from([1, 1, 1, 2, 4, 2]), Int32Array.from([1, 2, 1, 1, 4, 2]), Int32Array.from([1, 2, 1, 2, 4, 1]), Int32Array.from([1, 1, 4, 2, 1, 2]), Int32Array.from([1, 2, 4, 1, 1, 2]), Int32Array.from([1, 2, 4, 2, 1, 1]), Int32Array.from([4, 1, 1, 2, 1, 2]), Int32Array.from([4, 2, 1, 1, 1, 2]), Int32Array.from([4, 2, 1, 2, 1, 1]), Int32Array.from([2, 1, 2, 1, 4, 1]), Int32Array.from([2, 1, 4, 1, 2, 1]), Int32Array.from([4, 1, 2, 1, 2, 1]), Int32Array.from([1, 1, 1, 1, 4, 3]), Int32Array.from([1, 1, 1, 3, 4, 1]), Int32Array.from([1, 3, 1, 1, 4, 1]), Int32Array.from([1, 1, 4, 1, 1, 3]), Int32Array.from([1, 1, 4, 3, 1, 1]), Int32Array.from([4, 1, 1, 1, 1, 3]), Int32Array.from([4, 1, 1, 3, 1, 1]), Int32Array.from([1, 1, 3, 1, 4, 1]), Int32Array.from([1, 1, 4, 1, 3, 1]), Int32Array.from([3, 1, 1, 1, 4, 1]), Int32Array.from([4, 1, 1, 1, 3, 1]), Int32Array.from([2, 1, 1, 4, 1, 2]), Int32Array.from([2, 1, 1, 2, 1, 4]), Int32Array.from([2, 1, 1, 2, 3, 2]), Int32Array.from([2, 3, 3, 1, 1, 1, 2]), ]), (ft.MAX_AVG_VARIANCE = 0.25), (ft.MAX_INDIVIDUAL_VARIANCE = 0.7), (ft.CODE_SHIFT = 98), (ft.CODE_CODE_C = 99), (ft.CODE_CODE_B = 100), (ft.CODE_CODE_A = 101), (ft.CODE_FNC_1 = 102), (ft.CODE_FNC_2 = 97), (ft.CODE_FNC_3 = 96), (ft.CODE_FNC_4_A = 101), (ft.CODE_FNC_4_B = 100), (ft.CODE_START_A = 103), (ft.CODE_START_B = 104), (ft.CODE_START_C = 105), (ft.CODE_STOP = 106); class wt extends gt { constructor(t = !1, e = !1) { super(), (this.usingCheckDigit = t), (this.extendedMode = e), (this.decodeRowResult = ""), (this.counters = new Int32Array(9)); } decodeRow(t, e, r) { let n = this.counters; n.fill(0), (this.decodeRowResult = ""); let i, s, o = wt.findAsteriskPattern(e, n), a = e.getNextSet(o[1]), h = e.getSize(); do { wt.recordPattern(e, a, n); let t = wt.toNarrowWidePattern(n); if (t < 0) throw new R(); (i = wt.patternToChar(t)), (this.decodeRowResult += i), (s = a); for (let t of n) a += t; a = e.getNextSet(a); } while ("*" !== i); this.decodeRowResult = this.decodeRowResult.substring( 0, this.decodeRowResult.length - 1 ); let c, u = 0; for (let t of n) u += t; if (a !== h && 2 * (a - s - u) < u) throw new R(); if (this.usingCheckDigit) { let t = this.decodeRowResult.length - 1, e = 0; for (let r = 0; r < t; r++) e += wt.ALPHABET_STRING.indexOf(this.decodeRowResult.charAt(r)); if ( this.decodeRowResult.charAt(t) !== wt.ALPHABET_STRING.charAt(e % 43) ) throw new l(); this.decodeRowResult = this.decodeRowResult.substring(0, t); } if (0 === this.decodeRowResult.length) throw new R(); c = this.extendedMode ? wt.decodeExtended(this.decodeRowResult) : this.decodeRowResult; let d = (o[1] + o[0]) / 2, g = s + u / 2; return new F( c, null, 0, [new rt(d, t), new rt(g, t)], k.CODE_39, new Date().getTime() ); } static findAsteriskPattern(t, e) { let r = t.getSize(), n = t.getNextSet(0), i = 0, s = n, o = !1, a = e.length; for (let l = n; l < r; l++) if (t.get(l) !== o) e[i]++; else { if (i === a - 1) { if ( this.toNarrowWidePattern(e) === wt.ASTERISK_ENCODING && t.isRange(Math.max(0, s - Math.floor((l - s) / 2)), s, !1) ) return [s, l]; (s += e[0] + e[1]), e.copyWithin(0, 2, 2 + i - 1), (e[i - 1] = 0), (e[i] = 0), i--; } else i++; (e[i] = 1), (o = !o); } throw new R(); } static toNarrowWidePattern(t) { let e, r = t.length, n = 0; do { let i = 2147483647; for (let e of t) e < i && e > n && (i = e); (n = i), (e = 0); let s = 0, o = 0; for (let i = 0; i < r; i++) { let a = t[i]; a > n && ((o |= 1 << (r - 1 - i)), e++, (s += a)); } if (3 === e) { for (let i = 0; i < r && e > 0; i++) { let r = t[i]; if (r > n && (e--, 2 * r >= s)) return -1; } return o; } } while (e > 3); return -1; } static patternToChar(t) { for (let e = 0; e < wt.CHARACTER_ENCODINGS.length; e++) if (wt.CHARACTER_ENCODINGS[e] === t) return wt.ALPHABET_STRING.charAt(e); if (t === wt.ASTERISK_ENCODING) return "*"; throw new R(); } static decodeExtended(t) { let e = t.length, r = ""; for (let n = 0; n < e; n++) { let e = t.charAt(n); if ("+" === e || "$" === e || "%" === e || "/" === e) { let i = t.charAt(n + 1), s = "\0"; switch (e) { case "+": if (!(i >= "A" && i <= "Z")) throw new E(); s = String.fromCharCode(i.charCodeAt(0) + 32); break; case "$": if (!(i >= "A" && i <= "Z")) throw new E(); s = String.fromCharCode(i.charCodeAt(0) - 64); break; case "%": if (i >= "A" && i <= "E") s = String.fromCharCode(i.charCodeAt(0) - 38); else if (i >= "F" && i <= "J") s = String.fromCharCode(i.charCodeAt(0) - 11); else if (i >= "K" && i <= "O") s = String.fromCharCode(i.charCodeAt(0) + 16); else if (i >= "P" && i <= "T") s = String.fromCharCode(i.charCodeAt(0) + 43); else if ("U" === i) s = "\0"; else if ("V" === i) s = "@"; else if ("W" === i) s = "`"; else { if ("X" !== i && "Y" !== i && "Z" !== i) throw new E(); s = ""; } break; case "/": if (i >= "A" && i <= "O") s = String.fromCharCode(i.charCodeAt(0) - 32); else { if ("Z" !== i) throw new E(); s = ":"; } } (r += s), n++; } else r += e; } return r; } } (wt.ALPHABET_STRING = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"), (wt.CHARACTER_ENCODINGS = [ 52, 289, 97, 352, 49, 304, 112, 37, 292, 100, 265, 73, 328, 25, 280, 88, 13, 268, 76, 28, 259, 67, 322, 19, 274, 82, 7, 262, 70, 22, 385, 193, 448, 145, 400, 208, 133, 388, 196, 168, 162, 138, 42, ]), (wt.ASTERISK_ENCODING = 148); class At extends gt { constructor() { super(...arguments), (this.narrowLineWidth = -1); } decodeRow(t, e, r) { let n = this.decodeStart(e), i = this.decodeEnd(e), s = new p(); At.decodeMiddle(e, n[1], i[0], s); let o = s.toString(), a = null; null != r && (a = r.get(C.ALLOWED_LENGTHS)), null == a && (a = At.DEFAULT_ALLOWED_LENGTHS); let l = o.length, h = !1, c = 0; for (let t of a) { if (l === t) { h = !0; break; } t > c && (c = t); } if ((!h && l > c && (h = !0), !h)) throw new E(); const u = [new rt(n[1], t), new rt(i[0], t)]; return new F(o, null, 0, u, k.ITF, new Date().getTime()); } static decodeMiddle(t, e, r, n) { let i = new Int32Array(10), s = new Int32Array(5), o = new Int32Array(5); for (i.fill(0), s.fill(0), o.fill(0); e < r; ) { gt.recordPattern(t, e, i); for (let t = 0; t < 5; t++) { let e = 2 * t; (s[t] = i[e]), (o[t] = i[e + 1]); } let r = At.decodeDigit(s); n.append(r.toString()), (r = this.decodeDigit(o)), n.append(r.toString()), i.forEach(function (t) { e += t; }); } } decodeStart(t) { let e = At.skipWhiteSpace(t), r = At.findGuardPattern(t, e, At.START_PATTERN); return ( (this.narrowLineWidth = (r[1] - r[0]) / 4), this.validateQuietZone(t, r[0]), r ); } validateQuietZone(t, e) { let r = 10 * this.narrowLineWidth; r = r < e ? r : e; for (let n = e - 1; r > 0 && n >= 0 && !t.get(n); n--) r--; if (0 !== r) throw new R(); } static skipWhiteSpace(t) { const e = t.getSize(), r = t.getNextSet(0); if (r === e) throw new R(); return r; } decodeEnd(t) { t.reverse(); try { let e, r = At.skipWhiteSpace(t); try { e = At.findGuardPattern(t, r, At.END_PATTERN_REVERSED[0]); } catch (n) { n instanceof R && (e = At.findGuardPattern(t, r, At.END_PATTERN_REVERSED[1])); } this.validateQuietZone(t, e[0]); let n = e[0]; return (e[0] = t.getSize() - e[1]), (e[1] = t.getSize() - n), e; } finally { t.reverse(); } } static findGuardPattern(t, e, r) { let n = r.length, i = new Int32Array(n), s = t.getSize(), o = !1, a = 0, l = e; i.fill(0); for (let h = e; h < s; h++) if (t.get(h) !== o) i[a]++; else { if (a === n - 1) { if ( gt.patternMatchVariance(i, r, At.MAX_INDIVIDUAL_VARIANCE) < At.MAX_AVG_VARIANCE ) return [l, h]; (l += i[0] + i[1]), c.arraycopy(i, 2, i, 0, a - 1), (i[a - 1] = 0), (i[a] = 0), a--; } else a++; (i[a] = 1), (o = !o); } throw new R(); } static decodeDigit(t) { let e = At.MAX_AVG_VARIANCE, r = -1, n = At.PATTERNS.length; for (let i = 0; i < n; i++) { let n = At.PATTERNS[i], s = gt.patternMatchVariance(t, n, At.MAX_INDIVIDUAL_VARIANCE); s < e ? ((e = s), (r = i)) : s === e && (r = -1); } if (r >= 0) return r % 10; throw new R(); } } (At.PATTERNS = [ Int32Array.from([1, 1, 2, 2, 1]), Int32Array.from([2, 1, 1, 1, 2]), Int32Array.from([1, 2, 1, 1, 2]), Int32Array.from([2, 2, 1, 1, 1]), Int32Array.from([1, 1, 2, 1, 2]), Int32Array.from([2, 1, 2, 1, 1]), Int32Array.from([1, 2, 2, 1, 1]), Int32Array.from([1, 1, 1, 2, 2]), Int32Array.from([2, 1, 1, 2, 1]), Int32Array.from([1, 2, 1, 2, 1]), Int32Array.from([1, 1, 3, 3, 1]), Int32Array.from([3, 1, 1, 1, 3]), Int32Array.from([1, 3, 1, 1, 3]), Int32Array.from([3, 3, 1, 1, 1]), Int32Array.from([1, 1, 3, 1, 3]), Int32Array.from([3, 1, 3, 1, 1]), Int32Array.from([1, 3, 3, 1, 1]), Int32Array.from([1, 1, 1, 3, 3]), Int32Array.from([3, 1, 1, 3, 1]), Int32Array.from([1, 3, 1, 3, 1]), ]), (At.MAX_AVG_VARIANCE = 0.38), (At.MAX_INDIVIDUAL_VARIANCE = 0.5), (At.DEFAULT_ALLOWED_LENGTHS = [6, 8, 10, 12, 14]), (At.START_PATTERN = Int32Array.from([1, 1, 1, 1])), (At.END_PATTERN_REVERSED = [ Int32Array.from([1, 1, 2]), Int32Array.from([1, 1, 3]), ]); class Ct extends gt { constructor() { super(...arguments), (this.decodeRowStringBuffer = ""); } static findStartGuardPattern(t) { let e, r = !1, n = 0, i = Int32Array.from([0, 0, 0]); for (; !r; ) { i = Int32Array.from([0, 0, 0]); let s = (e = Ct.findGuardPattern( t, n, !1, this.START_END_PATTERN, i ))[0], o = s - ((n = e[1]) - s); o >= 0 && (r = t.isRange(o, s, !1)); } return e; } static checkChecksum(t) { return Ct.checkStandardUPCEANChecksum(t); } static checkStandardUPCEANChecksum(t) { let e = t.length; if (0 === e) return !1; let r = parseInt(t.charAt(e - 1), 10); return Ct.getStandardUPCEANChecksum(t.substring(0, e - 1)) === r; } static getStandardUPCEANChecksum(t) { let e = t.length, r = 0; for (let n = e - 1; n >= 0; n -= 2) { let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0); if (e < 0 || e > 9) throw new E(); r += e; } r *= 3; for (let n = e - 2; n >= 0; n -= 2) { let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0); if (e < 0 || e > 9) throw new E(); r += e; } return (1e3 - r) % 10; } static decodeEnd(t, e) { return Ct.findGuardPattern( t, e, !1, Ct.START_END_PATTERN, new Int32Array(Ct.START_END_PATTERN.length).fill(0) ); } static findGuardPatternWithoutCounters(t, e, r, n) { return this.findGuardPattern(t, e, r, n, new Int32Array(n.length)); } static findGuardPattern(t, e, r, n, i) { let s = t.getSize(), o = 0, a = (e = r ? t.getNextUnset(e) : t.getNextSet(e)), l = n.length, h = r; for (let r = e; r < s; r++) if (t.get(r) !== h) i[o]++; else { if (o === l - 1) { if ( gt.patternMatchVariance(i, n, Ct.MAX_INDIVIDUAL_VARIANCE) < Ct.MAX_AVG_VARIANCE ) return Int32Array.from([a, r]); a += i[0] + i[1]; let t = i.slice(2, i.length - 1); for (let e = 0; e < o - 1; e++) i[e] = t[e]; (i[o - 1] = 0), (i[o] = 0), o--; } else o++; (i[o] = 1), (h = !h); } throw new R(); } static decodeDigit(t, e, r, n) { this.recordPattern(t, r, e); let i = this.MAX_AVG_VARIANCE, s = -1, o = n.length; for (let t = 0; t < o; t++) { let r = n[t], o = gt.patternMatchVariance(e, r, Ct.MAX_INDIVIDUAL_VARIANCE); o < i && ((i = o), (s = t)); } if (s >= 0) return s; throw new R(); } } (Ct.MAX_AVG_VARIANCE = 0.48), (Ct.MAX_INDIVIDUAL_VARIANCE = 0.7), (Ct.START_END_PATTERN = Int32Array.from([1, 1, 1])), (Ct.MIDDLE_PATTERN = Int32Array.from([1, 1, 1, 1, 1])), (Ct.END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1])), (Ct.L_PATTERNS = [ Int32Array.from([3, 2, 1, 1]), Int32Array.from([2, 2, 2, 1]), Int32Array.from([2, 1, 2, 2]), Int32Array.from([1, 4, 1, 1]), Int32Array.from([1, 1, 3, 2]), Int32Array.from([1, 2, 3, 1]), Int32Array.from([1, 1, 1, 4]), Int32Array.from([1, 3, 1, 2]), Int32Array.from([1, 2, 1, 3]), Int32Array.from([3, 1, 1, 2]), ]); class Et { constructor() { (this.CHECK_DIGIT_ENCODINGS = [24, 20, 18, 17, 12, 6, 3, 10, 9, 5]), (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])), (this.decodeRowStringBuffer = ""); } decodeRow(t, e, r) { let n = this.decodeRowStringBuffer, i = this.decodeMiddle(e, r, n), s = n.toString(), o = Et.parseExtensionString(s), a = [new rt((r[0] + r[1]) / 2, t), new rt(i, t)], l = new F(s, null, 0, a, k.UPC_EAN_EXTENSION, new Date().getTime()); return null != o && l.putAllMetadata(o), l; } decodeMiddle(t, e, r) { let n = this.decodeMiddleCounters; (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0); let i = t.getSize(), s = e[1], o = 0; for (let e = 0; e < 5 && s < i; e++) { let i = Ct.decodeDigit(t, n, s, Ct.L_AND_G_PATTERNS); r += String.fromCharCode("0".charCodeAt(0) + (i % 10)); for (let t of n) s += t; i >= 10 && (o |= 1 << (4 - e)), 4 !== e && ((s = t.getNextSet(s)), (s = t.getNextUnset(s))); } if (5 !== r.length) throw new R(); let a = this.determineCheckDigit(o); if (Et.extensionChecksum(r.toString()) !== a) throw new R(); return s; } static extensionChecksum(t) { let e = t.length, r = 0; for (let n = e - 2; n >= 0; n -= 2) r += t.charAt(n).charCodeAt(0) - "0".charCodeAt(0); r *= 3; for (let n = e - 1; n >= 0; n -= 2) r += t.charAt(n).charCodeAt(0) - "0".charCodeAt(0); return (r *= 3) % 10; } determineCheckDigit(t) { for (let e = 0; e < 10; e++) if (t === this.CHECK_DIGIT_ENCODINGS[e]) return e; throw new R(); } static parseExtensionString(t) { if (5 !== t.length) return null; let e = Et.parseExtension5String(t); return null == e ? null : new Map([[W.SUGGESTED_PRICE, e]]); } static parseExtension5String(t) { let e; switch (t.charAt(0)) { case "0": e = "£"; break; case "5": e = "$"; break; case "9": switch (t) { case "90000": return null; case "99991": return "0.00"; case "99990": return "Used"; } e = ""; break; default: e = ""; } let r = parseInt(t.substring(1)), n = r % 100; return e + (r / 100).toString() + "." + (n < 10 ? "0" + n : n.toString()); } } class mt { constructor() { (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])), (this.decodeRowStringBuffer = ""); } decodeRow(t, e, r) { let n = this.decodeRowStringBuffer, i = this.decodeMiddle(e, r, n), s = n.toString(), o = mt.parseExtensionString(s), a = [new rt((r[0] + r[1]) / 2, t), new rt(i, t)], l = new F(s, null, 0, a, k.UPC_EAN_EXTENSION, new Date().getTime()); return null != o && l.putAllMetadata(o), l; } decodeMiddle(t, e, r) { let n = this.decodeMiddleCounters; (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0); let i = t.getSize(), s = e[1], o = 0; for (let e = 0; e < 2 && s < i; e++) { let i = Ct.decodeDigit(t, n, s, Ct.L_AND_G_PATTERNS); r += String.fromCharCode("0".charCodeAt(0) + (i % 10)); for (let t of n) s += t; i >= 10 && (o |= 1 << (1 - e)), 1 !== e && ((s = t.getNextSet(s)), (s = t.getNextUnset(s))); } if (2 !== r.length) throw new R(); if (parseInt(r.toString()) % 4 !== o) throw new R(); return s; } static parseExtensionString(t) { return 2 !== t.length ? null : new Map([[W.ISSUE_NUMBER, parseInt(t)]]); } } class _t { static decodeRow(t, e, r) { let n = Ct.findGuardPattern( e, r, !1, this.EXTENSION_START_PATTERN, new Int32Array(this.EXTENSION_START_PATTERN.length).fill(0) ); try { return new Et().decodeRow(t, e, n); } catch (r) { return new mt().decodeRow(t, e, n); } } } _t.EXTENSION_START_PATTERN = Int32Array.from([1, 1, 2]); class It extends Ct { constructor() { super(), (this.decodeRowStringBuffer = ""), (It.L_AND_G_PATTERNS = It.L_PATTERNS.map((t) => Int32Array.from(t))); for (let t = 10; t < 20; t++) { let e = It.L_PATTERNS[t - 10], r = new Int32Array(e.length); for (let t = 0; t < e.length; t++) r[t] = e[e.length - t - 1]; It.L_AND_G_PATTERNS[t] = r; } } decodeRow(t, e, r) { let n = It.findStartGuardPattern(e), i = null == r ? null : r.get(C.NEED_RESULT_POINT_CALLBACK); if (null != i) { const e = new rt((n[0] + n[1]) / 2, t); i.foundPossibleResultPoint(e); } let s = this.decodeMiddle(e, n, this.decodeRowStringBuffer), o = s.rowOffset, a = s.resultString; if (null != i) { const e = new rt(o, t); i.foundPossibleResultPoint(e); } let h = It.decodeEnd(e, o); if (null != i) { const e = new rt((h[0] + h[1]) / 2, t); i.foundPossibleResultPoint(e); } let c = h[1], u = c + (c - h[0]); if (u >= e.getSize() || !e.isRange(c, u, !1)) throw new R(); let d = a.toString(); if (d.length < 8) throw new E(); if (!It.checkChecksum(d)) throw new l(); let g = (n[1] + n[0]) / 2, f = (h[1] + h[0]) / 2, w = this.getBarcodeFormat(), A = [new rt(g, t), new rt(f, t)], m = new F(d, null, 0, A, w, new Date().getTime()), _ = 0; try { let r = _t.decodeRow(t, e, h[1]); m.putMetadata(W.UPC_EAN_EXTENSION, r.getText()), m.putAllMetadata(r.getResultMetadata()), m.addResultPoints(r.getResultPoints()), (_ = r.getText().length); } catch (t) {} let I = null == r ? null : r.get(C.ALLOWED_EAN_EXTENSIONS); if (null != I) { let t = !1; for (let e in I) if (_.toString() === e) { t = !0; break; } if (!t) throw new R(); } return w === k.EAN_13 || k.UPC_A, m; } static checkChecksum(t) { return It.checkStandardUPCEANChecksum(t); } static checkStandardUPCEANChecksum(t) { let e = t.length; if (0 === e) return !1; let r = parseInt(t.charAt(e - 1), 10); return It.getStandardUPCEANChecksum(t.substring(0, e - 1)) === r; } static getStandardUPCEANChecksum(t) { let e = t.length, r = 0; for (let n = e - 1; n >= 0; n -= 2) { let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0); if (e < 0 || e > 9) throw new E(); r += e; } r *= 3; for (let n = e - 2; n >= 0; n -= 2) { let e = t.charAt(n).charCodeAt(0) - "0".charCodeAt(0); if (e < 0 || e > 9) throw new E(); r += e; } return (1e3 - r) % 10; } static decodeEnd(t, e) { return It.findGuardPattern( t, e, !1, It.START_END_PATTERN, new Int32Array(It.START_END_PATTERN.length).fill(0) ); } } class St extends It { constructor() { super(), (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])); } decodeMiddle(t, e, r) { let n = this.decodeMiddleCounters; (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0); let i = t.getSize(), s = e[1], o = 0; for (let e = 0; e < 6 && s < i; e++) { let i = It.decodeDigit(t, n, s, It.L_AND_G_PATTERNS); r += String.fromCharCode("0".charCodeAt(0) + (i % 10)); for (let t of n) s += t; i >= 10 && (o |= 1 << (5 - e)); } (r = St.determineFirstDigit(r, o)), (s = It.findGuardPattern( t, s, !0, It.MIDDLE_PATTERN, new Int32Array(It.MIDDLE_PATTERN.length).fill(0) )[1]); for (let e = 0; e < 6 && s < i; e++) { let e = It.decodeDigit(t, n, s, It.L_PATTERNS); r += String.fromCharCode("0".charCodeAt(0) + e); for (let t of n) s += t; } return { rowOffset: s, resultString: r }; } getBarcodeFormat() { return k.EAN_13; } static determineFirstDigit(t, e) { for (let r = 0; r < 10; r++) if (e === this.FIRST_DIGIT_ENCODINGS[r]) return (t = String.fromCharCode("0".charCodeAt(0) + r) + t); throw new R(); } } St.FIRST_DIGIT_ENCODINGS = [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]; class pt extends It { constructor() { super(), (this.decodeMiddleCounters = Int32Array.from([0, 0, 0, 0])); } decodeMiddle(t, e, r) { const n = this.decodeMiddleCounters; (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0); let i = t.getSize(), s = e[1]; for (let e = 0; e < 4 && s < i; e++) { let e = It.decodeDigit(t, n, s, It.L_PATTERNS); r += String.fromCharCode("0".charCodeAt(0) + e); for (let t of n) s += t; } s = It.findGuardPattern( t, s, !0, It.MIDDLE_PATTERN, new Int32Array(It.MIDDLE_PATTERN.length).fill(0) )[1]; for (let e = 0; e < 4 && s < i; e++) { let e = It.decodeDigit(t, n, s, It.L_PATTERNS); r += String.fromCharCode("0".charCodeAt(0) + e); for (let t of n) s += t; } return { rowOffset: s, resultString: r }; } getBarcodeFormat() { return k.EAN_8; } } class Tt extends It { constructor() { super(...arguments), (this.ean13Reader = new St()); } getBarcodeFormat() { return k.UPC_A; } decode(t, e) { return this.maybeReturnResult(this.ean13Reader.decode(t)); } decodeRow(t, e, r) { return this.maybeReturnResult(this.ean13Reader.decodeRow(t, e, r)); } decodeMiddle(t, e, r) { return this.ean13Reader.decodeMiddle(t, e, r); } maybeReturnResult(t) { let e = t.getText(); if ("0" === e.charAt(0)) { let r = new F(e.substring(1), null, null, t.getResultPoints(), k.UPC_A); return ( null != t.getResultMetadata() && r.putAllMetadata(t.getResultMetadata()), r ); } throw new R(); } reset() { this.ean13Reader.reset(); } } class Rt extends It { constructor() { super(), (this.decodeMiddleCounters = new Int32Array(4)); } decodeMiddle(t, e, r) { const n = this.decodeMiddleCounters.map((t) => t); (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0); const i = t.getSize(); let s = e[1], o = 0; for (let e = 0; e < 6 && s < i; e++) { const i = Rt.decodeDigit(t, n, s, Rt.L_AND_G_PATTERNS); r += String.fromCharCode("0".charCodeAt(0) + (i % 10)); for (let t of n) s += t; i >= 10 && (o |= 1 << (5 - e)); } return Rt.determineNumSysAndCheckDigit(new p(r), o), s; } decodeEnd(t, e) { return Rt.findGuardPatternWithoutCounters( t, e, !0, Rt.MIDDLE_END_PATTERN ); } checkChecksum(t) { return It.checkChecksum(Rt.convertUPCEtoUPCA(t)); } static determineNumSysAndCheckDigit(t, e) { for (let r = 0; r <= 1; r++) for (let n = 0; n < 10; n++) if (e === this.NUMSYS_AND_CHECK_DIGIT_PATTERNS[r][n]) return t.insert(0, "0" + r), void t.append("0" + n); throw R.getNotFoundInstance(); } getBarcodeFormat() { return k.UPC_E; } static convertUPCEtoUPCA(t) { const e = t .slice(1, 7) .split("") .map((t) => t.charCodeAt(0)), r = new p(); r.append(t.charAt(0)); let n = e[5]; switch (n) { case 0: case 1: case 2: r.appendChars(e, 0, 2), r.append(n), r.append("0000"), r.appendChars(e, 2, 3); break; case 3: r.appendChars(e, 0, 3), r.append("00000"), r.appendChars(e, 3, 2); break; case 4: r.appendChars(e, 0, 4), r.append("00000"), r.append(e[4]); break; default: r.appendChars(e, 0, 5), r.append("0000"), r.append(n); } return t.length >= 8 && r.append(t.charAt(7)), r.toString(); } } (Rt.MIDDLE_END_PATTERN = Int32Array.from([1, 1, 1, 1, 1, 1])), (Rt.NUMSYS_AND_CHECK_DIGIT_PATTERNS = [ Int32Array.from([56, 52, 50, 49, 44, 38, 35, 42, 41, 37]), Int32Array.from([7, 11, 13, 14, 19, 25, 28, 21, 22, 1]), ]); class Nt extends gt { constructor(t) { super(); let e = null == t ? null : t.get(C.POSSIBLE_FORMATS), r = []; null != e && (e.indexOf(k.EAN_13) > -1 ? r.push(new St()) : e.indexOf(k.UPC_A) > -1 && r.push(new Tt()), e.indexOf(k.EAN_8) > -1 && r.push(new pt()), e.indexOf(k.UPC_E) > -1 && r.push(new Rt())), 0 === r.length && (r.push(new St()), r.push(new pt()), r.push(new Rt())), (this.readers = r); } decodeRow(t, e, r) { for (let n of this.readers) try { const i = n.decodeRow(t, e, r), s = i.getBarcodeFormat() === k.EAN_13 && "0" === i.getText().charAt(0), o = null == r ? null : r.get(C.POSSIBLE_FORMATS), a = null == o || o.includes(k.UPC_A); if (s && a) { const t = i.getRawBytes(), e = new F( i.getText().substring(1), t, t.length, i.getResultPoints(), k.UPC_A ); return e.putAllMetadata(i.getResultMetadata()), e; } return i; } catch (t) {} throw new R(); } reset() { for (let t of this.readers) t.reset(); } } class Dt extends gt { constructor() { super(), (this.decodeFinderCounters = new Int32Array(4)), (this.dataCharacterCounters = new Int32Array(8)), (this.oddRoundingErrors = new Array(4)), (this.evenRoundingErrors = new Array(4)), (this.oddCounts = new Array(this.dataCharacterCounters.length / 2)), (this.evenCounts = new Array(this.dataCharacterCounters.length / 2)); } getDecodeFinderCounters() { return this.decodeFinderCounters; } getDataCharacterCounters() { return this.dataCharacterCounters; } getOddRoundingErrors() { return this.oddRoundingErrors; } getEvenRoundingErrors() { return this.evenRoundingErrors; } getOddCounts() { return this.oddCounts; } getEvenCounts() { return this.evenCounts; } parseFinderValue(t, e) { for (let r = 0; r < e.length; r++) if ( gt.patternMatchVariance(t, e[r], Dt.MAX_INDIVIDUAL_VARIANCE) < Dt.MAX_AVG_VARIANCE ) return r; throw new R(); } static count(t) { return tt.sum(new Int32Array(t)); } static increment(t, e) { let r = 0, n = e[0]; for (let i = 1; i < t.length; i++) e[i] > n && ((n = e[i]), (r = i)); t[r]++; } static decrement(t, e) { let r = 0, n = e[0]; for (let i = 1; i < t.length; i++) e[i] < n && ((n = e[i]), (r = i)); t[r]--; } static isFinderPattern(t) { let e = t[0] + t[1], r = e / (e + t[2] + t[3]); if ( r >= Dt.MIN_FINDER_PATTERN_RATIO && r <= Dt.MAX_FINDER_PATTERN_RATIO ) { let e = Number.MAX_SAFE_INTEGER, r = Number.MIN_SAFE_INTEGER; for (let n of t) n > r && (r = n), n < e && (e = n); return r < 10 * e; } return !1; } } (Dt.MAX_AVG_VARIANCE = 0.2), (Dt.MAX_INDIVIDUAL_VARIANCE = 0.45), (Dt.MIN_FINDER_PATTERN_RATIO = 9.5 / 12), (Dt.MAX_FINDER_PATTERN_RATIO = 12.5 / 14); class yt { constructor(t, e) { (this.value = t), (this.checksumPortion = e); } getValue() { return this.value; } getChecksumPortion() { return this.checksumPortion; } toString() { return this.value + "(" + this.checksumPortion + ")"; } equals(t) { if (!(t instanceof yt)) return !1; const e = t; return ( this.value === e.value && this.checksumPortion === e.checksumPortion ); } hashCode() { return this.value ^ this.checksumPortion; } } class Ot { constructor(t, e, r, n, i) { (this.value = t), (this.startEnd = e), (this.value = t), (this.startEnd = e), (this.resultPoints = new Array()), this.resultPoints.push(new rt(r, i)), this.resultPoints.push(new rt(n, i)); } getValue() { return this.value; } getStartEnd() { return this.startEnd; } getResultPoints() { return this.resultPoints; } equals(t) { if (!(t instanceof Ot)) return !1; const e = t; return this.value === e.value; } hashCode() { return this.value; } } class Mt { constructor() {} static getRSSvalue(t, e, r) { let n = 0; for (let e of t) n += e; let i = 0, s = 0, o = t.length; for (let a = 0; a < o - 1; a++) { let l; for (l = 1, s |= 1 << a; l < t[a]; l++, s &= ~(1 << a)) { let t = Mt.combins(n - l - 1, o - a - 2); if ( (r && 0 === s && n - l - (o - a - 1) >= o - a - 1 && (t -= Mt.combins(n - l - (o - a), o - a - 2)), o - a - 1 > 1) ) { let r = 0; for (let t = n - l - (o - a - 2); t > e; t--) r += Mt.combins(n - l - t - 1, o - a - 3); t -= r * (o - 1 - a); } else n - l > e && t--; i += t; } n -= l; } return i; } static combins(t, e) { let r, n; t - e > e ? ((n = e), (r = t - e)) : ((n = t - e), (r = e)); let i = 1, s = 1; for (let e = t; e > r; e--) (i *= e), s <= n && ((i /= s), s++); for (; s <= n; ) (i /= s), s++; return i; } } class bt { static buildBitArray(t) { let e = 2 * t.length - 1; null == t[t.length - 1].getRightChar() && (e -= 1); let r = new w(12 * e), n = 0, i = t[0].getRightChar().getValue(); for (let t = 11; t >= 0; --t) 0 != (i & (1 << t)) && r.set(n), n++; for (let e = 1; e < t.length; ++e) { let i = t[e], s = i.getLeftChar().getValue(); for (let t = 11; t >= 0; --t) 0 != (s & (1 << t)) && r.set(n), n++; if (null != i.getRightChar()) { let t = i.getRightChar().getValue(); for (let e = 11; e >= 0; --e) 0 != (t & (1 << e)) && r.set(n), n++; } } return r; } } class Bt { constructor(t, e) { e ? (this.decodedInformation = null) : ((this.finished = t), (this.decodedInformation = e)); } getDecodedInformation() { return this.decodedInformation; } isFinished() { return this.finished; } } class Pt { constructor(t) { this.newPosition = t; } getNewPosition() { return this.newPosition; } } class Lt extends Pt { constructor(t, e) { super(t), (this.value = e); } getValue() { return this.value; } isFNC1() { return this.value === Lt.FNC1; } } Lt.FNC1 = "$"; class Ft extends Pt { constructor(t, e, r) { super(t), r ? ((this.remaining = !0), (this.remainingValue = this.remainingValue)) : ((this.remaining = !1), (this.remainingValue = 0)), (this.newString = e); } getNewString() { return this.newString; } isRemaining() { return this.remaining; } getRemainingValue() { return this.remainingValue; } } class vt extends Pt { constructor(t, e, r) { if ((super(t), e < 0 || e > 10 || r < 0 || r > 10)) throw new E(); (this.firstDigit = e), (this.secondDigit = r); } getFirstDigit() { return this.firstDigit; } getSecondDigit() { return this.secondDigit; } getValue() { return 10 * this.firstDigit + this.secondDigit; } isFirstDigitFNC1() { return this.firstDigit === vt.FNC1; } isSecondDigitFNC1() { return this.secondDigit === vt.FNC1; } isAnyFNC1() { return this.firstDigit === vt.FNC1 || this.secondDigit === vt.FNC1; } } vt.FNC1 = 10; class kt { constructor() {} static parseFieldsInGeneralPurpose(t) { if (!t) return null; if (t.length < 2) throw new R(); let e = t.substring(0, 2); for (let r of kt.TWO_DIGIT_DATA_LENGTH) if (r[0] === e) return r[1] === kt.VARIABLE_LENGTH ? kt.processVariableAI(2, r[2], t) : kt.processFixedAI(2, r[1], t); if (t.length < 3) throw new R(); let r = t.substring(0, 3); for (let e of kt.THREE_DIGIT_DATA_LENGTH) if (e[0] === r) return e[1] === kt.VARIABLE_LENGTH ? kt.processVariableAI(3, e[2], t) : kt.processFixedAI(3, e[1], t); for (let e of kt.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH) if (e[0] === r) return e[1] === kt.VARIABLE_LENGTH ? kt.processVariableAI(4, e[2], t) : kt.processFixedAI(4, e[1], t); if (t.length < 4) throw new R(); let n = t.substring(0, 4); for (let e of kt.FOUR_DIGIT_DATA_LENGTH) if (e[0] === n) return e[1] === kt.VARIABLE_LENGTH ? kt.processVariableAI(4, e[2], t) : kt.processFixedAI(4, e[1], t); throw new R(); } static processFixedAI(t, e, r) { if (r.length < t) throw new R(); let n = r.substring(0, t); if (r.length < t + e) throw new R(); let i = r.substring(t, t + e), s = r.substring(t + e), o = "(" + n + ")" + i, a = kt.parseFieldsInGeneralPurpose(s); return null == a ? o : o + a; } static processVariableAI(t, e, r) { let n, i = r.substring(0, t); n = r.length < t + e ? r.length : t + e; let s = r.substring(t, n), o = r.substring(n), a = "(" + i + ")" + s, l = kt.parseFieldsInGeneralPurpose(o); return null == l ? a : a + l; } } (kt.VARIABLE_LENGTH = []), (kt.TWO_DIGIT_DATA_LENGTH = [ ["00", 18], ["01", 14], ["02", 14], ["10", kt.VARIABLE_LENGTH, 20], ["11", 6], ["12", 6], ["13", 6], ["15", 6], ["17", 6], ["20", 2], ["21", kt.VARIABLE_LENGTH, 20], ["22", kt.VARIABLE_LENGTH, 29], ["30", kt.VARIABLE_LENGTH, 8], ["37", kt.VARIABLE_LENGTH, 8], ["90", kt.VARIABLE_LENGTH, 30], ["91", kt.VARIABLE_LENGTH, 30], ["92", kt.VARIABLE_LENGTH, 30], ["93", kt.VARIABLE_LENGTH, 30], ["94", kt.VARIABLE_LENGTH, 30], ["95", kt.VARIABLE_LENGTH, 30], ["96", kt.VARIABLE_LENGTH, 30], ["97", kt.VARIABLE_LENGTH, 3], ["98", kt.VARIABLE_LENGTH, 30], ["99", kt.VARIABLE_LENGTH, 30], ]), (kt.THREE_DIGIT_DATA_LENGTH = [ ["240", kt.VARIABLE_LENGTH, 30], ["241", kt.VARIABLE_LENGTH, 30], ["242", kt.VARIABLE_LENGTH, 6], ["250", kt.VARIABLE_LENGTH, 30], ["251", kt.VARIABLE_LENGTH, 30], ["253", kt.VARIABLE_LENGTH, 17], ["254", kt.VARIABLE_LENGTH, 20], ["400", kt.VARIABLE_LENGTH, 30], ["401", kt.VARIABLE_LENGTH, 30], ["402", 17], ["403", kt.VARIABLE_LENGTH, 30], ["410", 13], ["411", 13], ["412", 13], ["413", 13], ["414", 13], ["420", kt.VARIABLE_LENGTH, 20], ["421", kt.VARIABLE_LENGTH, 15], ["422", 3], ["423", kt.VARIABLE_LENGTH, 15], ["424", 3], ["425", 3], ["426", 3], ]), (kt.THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH = [ ["310", 6], ["311", 6], ["312", 6], ["313", 6], ["314", 6], ["315", 6], ["316", 6], ["320", 6], ["321", 6], ["322", 6], ["323", 6], ["324", 6], ["325", 6], ["326", 6], ["327", 6], ["328", 6], ["329", 6], ["330", 6], ["331", 6], ["332", 6], ["333", 6], ["334", 6], ["335", 6], ["336", 6], ["340", 6], ["341", 6], ["342", 6], ["343", 6], ["344", 6], ["345", 6], ["346", 6], ["347", 6], ["348", 6], ["349", 6], ["350", 6], ["351", 6], ["352", 6], ["353", 6], ["354", 6], ["355", 6], ["356", 6], ["357", 6], ["360", 6], ["361", 6], ["362", 6], ["363", 6], ["364", 6], ["365", 6], ["366", 6], ["367", 6], ["368", 6], ["369", 6], ["390", kt.VARIABLE_LENGTH, 15], ["391", kt.VARIABLE_LENGTH, 18], ["392", kt.VARIABLE_LENGTH, 15], ["393", kt.VARIABLE_LENGTH, 18], ["703", kt.VARIABLE_LENGTH, 30], ]), (kt.FOUR_DIGIT_DATA_LENGTH = [ ["7001", 13], ["7002", kt.VARIABLE_LENGTH, 30], ["7003", 10], ["8001", 14], ["8002", kt.VARIABLE_LENGTH, 20], ["8003", kt.VARIABLE_LENGTH, 30], ["8004", kt.VARIABLE_LENGTH, 30], ["8005", 6], ["8006", 18], ["8007", kt.VARIABLE_LENGTH, 30], ["8008", kt.VARIABLE_LENGTH, 12], ["8018", 18], ["8020", kt.VARIABLE_LENGTH, 25], ["8100", 6], ["8101", 10], ["8102", 2], ["8110", kt.VARIABLE_LENGTH, 70], ["8200", kt.VARIABLE_LENGTH, 70], ]); class xt { constructor(t) { (this.buffer = new p()), (this.information = t); } decodeAllCodes(t, e) { let r = e, n = null; for (;;) { let e = this.decodeGeneralPurposeField(r, n), i = kt.parseFieldsInGeneralPurpose(e.getNewString()); if ( (null != i && t.append(i), (n = e.isRemaining() ? "" + e.getRemainingValue() : null), r === e.getNewPosition()) ) break; r = e.getNewPosition(); } return t.toString(); } isStillNumeric(t) { if (t + 7 > this.information.getSize()) return t + 4 <= this.information.getSize(); for (let e = t; e < t + 3; ++e) if (this.information.get(e)) return !0; return this.information.get(t + 3); } decodeNumeric(t) { if (t + 7 > this.information.getSize()) { let e = this.extractNumericValueFromBitArray(t, 4); return new vt( this.information.getSize(), 0 === e ? vt.FNC1 : e - 1, vt.FNC1 ); } let e = this.extractNumericValueFromBitArray(t, 7); return new vt(t + 7, (e - 8) / 11, (e - 8) % 11); } extractNumericValueFromBitArray(t, e) { return xt.extractNumericValueFromBitArray(this.information, t, e); } static extractNumericValueFromBitArray(t, e, r) { let n = 0; for (let i = 0; i < r; ++i) t.get(e + i) && (n |= 1 << (r - i - 1)); return n; } decodeGeneralPurposeField(t, e) { this.buffer.setLengthToZero(), null != e && this.buffer.append(e), this.current.setPosition(t); let r = this.parseBlocks(); return null != r && r.isRemaining() ? new Ft( this.current.getPosition(), this.buffer.toString(), r.getRemainingValue() ) : new Ft(this.current.getPosition(), this.buffer.toString()); } parseBlocks() { let t, e; do { let r = this.current.getPosition(); if ( ((t = this.current.isAlpha() ? (e = this.parseAlphaBlock()).isFinished() : this.current.isIsoIec646() ? (e = this.parseIsoIec646Block()).isFinished() : (e = this.parseNumericBlock()).isFinished()), !(r !== this.current.getPosition()) && !t) ) break; } while (!t); return e.getDecodedInformation(); } parseNumericBlock() { for (; this.isStillNumeric(this.current.getPosition()); ) { let t = this.decodeNumeric(this.current.getPosition()); if ( (this.current.setPosition(t.getNewPosition()), t.isFirstDigitFNC1()) ) { let e; return ( (e = t.isSecondDigitFNC1() ? new Ft(this.current.getPosition(), this.buffer.toString()) : new Ft( this.current.getPosition(), this.buffer.toString(), t.getSecondDigit() )), new Bt(!0, e) ); } if ((this.buffer.append(t.getFirstDigit()), t.isSecondDigitFNC1())) { let t = new Ft(this.current.getPosition(), this.buffer.toString()); return new Bt(!0, t); } this.buffer.append(t.getSecondDigit()); } return ( this.isNumericToAlphaNumericLatch(this.current.getPosition()) && (this.current.setAlpha(), this.current.incrementPosition(4)), new Bt(!1) ); } parseIsoIec646Block() { for (; this.isStillIsoIec646(this.current.getPosition()); ) { let t = this.decodeIsoIec646(this.current.getPosition()); if ((this.current.setPosition(t.getNewPosition()), t.isFNC1())) { let t = new Ft(this.current.getPosition(), this.buffer.toString()); return new Bt(!0, t); } this.buffer.append(t.getValue()); } return ( this.isAlphaOr646ToNumericLatch(this.current.getPosition()) ? (this.current.incrementPosition(3), this.current.setNumeric()) : this.isAlphaTo646ToAlphaLatch(this.current.getPosition()) && (this.current.getPosition() + 5 < this.information.getSize() ? this.current.incrementPosition(5) : this.current.setPosition(this.information.getSize()), this.current.setAlpha()), new Bt(!1) ); } parseAlphaBlock() { for (; this.isStillAlpha(this.current.getPosition()); ) { let t = this.decodeAlphanumeric(this.current.getPosition()); if ((this.current.setPosition(t.getNewPosition()), t.isFNC1())) { let t = new Ft(this.current.getPosition(), this.buffer.toString()); return new Bt(!0, t); } this.buffer.append(t.getValue()); } return ( this.isAlphaOr646ToNumericLatch(this.current.getPosition()) ? (this.current.incrementPosition(3), this.current.setNumeric()) : this.isAlphaTo646ToAlphaLatch(this.current.getPosition()) && (this.current.getPosition() + 5 < this.information.getSize() ? this.current.incrementPosition(5) : this.current.setPosition(this.information.getSize()), this.current.setIsoIec646()), new Bt(!1) ); } isStillIsoIec646(t) { if (t + 5 > this.information.getSize()) return !1; let e = this.extractNumericValueFromBitArray(t, 5); if (e >= 5 && e < 16) return !0; if (t + 7 > this.information.getSize()) return !1; let r = this.extractNumericValueFromBitArray(t, 7); if (r >= 64 && r < 116) return !0; if (t + 8 > this.information.getSize()) return !1; let n = this.extractNumericValueFromBitArray(t, 8); return n >= 232 && n < 253; } decodeIsoIec646(t) { let e = this.extractNumericValueFromBitArray(t, 5); if (15 === e) return new Lt(t + 5, Lt.FNC1); if (e >= 5 && e < 15) return new Lt(t + 5, "0" + (e - 5)); let r, n = this.extractNumericValueFromBitArray(t, 7); if (n >= 64 && n < 90) return new Lt(t + 7, "" + (n + 1)); if (n >= 90 && n < 116) return new Lt(t + 7, "" + (n + 7)); switch (this.extractNumericValueFromBitArray(t, 8)) { case 232: r = "!"; break; case 233: r = '"'; break; case 234: r = "%"; break; case 235: r = "&"; break; case 236: r = "'"; break; case 237: r = "("; break; case 238: r = ")"; break; case 239: r = "*"; break; case 240: r = "+"; break; case 241: r = ","; break; case 242: r = "-"; break; case 243: r = "."; break; case 244: r = "/"; break; case 245: r = ":"; break; case 246: r = ";"; break; case 247: r = "<"; break; case 248: r = "="; break; case 249: r = ">"; break; case 250: r = "?"; break; case 251: r = "_"; break; case 252: r = " "; break; default: throw new E(); } return new Lt(t + 8, r); } isStillAlpha(t) { if (t + 5 > this.information.getSize()) return !1; let e = this.extractNumericValueFromBitArray(t, 5); if (e >= 5 && e < 16) return !0; if (t + 6 > this.information.getSize()) return !1; let r = this.extractNumericValueFromBitArray(t, 6); return r >= 16 && r < 63; } decodeAlphanumeric(t) { let e = this.extractNumericValueFromBitArray(t, 5); if (15 === e) return new Lt(t + 5, Lt.FNC1); if (e >= 5 && e < 15) return new Lt(t + 5, "0" + (e - 5)); let r, n = this.extractNumericValueFromBitArray(t, 6); if (n >= 32 && n < 58) return new Lt(t + 6, "" + (n + 33)); switch (n) { case 58: r = "*"; break; case 59: r = ","; break; case 60: r = "-"; break; case 61: r = "."; break; case 62: r = "/"; break; default: throw new j("Decoding invalid alphanumeric value: " + n); } return new Lt(t + 6, r); } isAlphaTo646ToAlphaLatch(t) { if (t + 1 > this.information.getSize()) return !1; for (let e = 0; e < 5 && e + t < this.information.getSize(); ++e) if (2 === e) { if (!this.information.get(t + 2)) return !1; } else if (this.information.get(t + e)) return !1; return !0; } isAlphaOr646ToNumericLatch(t) { if (t + 3 > this.information.getSize()) return !1; for (let e = t; e < t + 3; ++e) if (this.information.get(e)) return !1; return !0; } isNumericToAlphaNumericLatch(t) { if (t + 1 > this.information.getSize()) return !1; for (let e = 0; e < 4 && e + t < this.information.getSize(); ++e) if (this.information.get(t + e)) return !1; return !0; } } class Vt { constructor(t) { (this.information = t), (this.generalDecoder = new xt(t)); } getInformation() { return this.information; } getGeneralDecoder() { return this.generalDecoder; } } class Ut extends Vt { constructor(t) { super(t); } encodeCompressedGtin(t, e) { t.append("(01)"); let r = t.length(); t.append("9"), this.encodeCompressedGtinWithoutAI(t, e, r); } encodeCompressedGtinWithoutAI(t, e, r) { for (let r = 0; r < 4; ++r) { let n = this.getGeneralDecoder().extractNumericValueFromBitArray( e + 10 * r, 10 ); n / 100 == 0 && t.append("0"), n / 10 == 0 && t.append("0"), t.append(n); } Ut.appendCheckDigit(t, r); } static appendCheckDigit(t, e) { let r = 0; for (let n = 0; n < 13; n++) { let i = t.charAt(n + e).charCodeAt(0) - "0".charCodeAt(0); r += 0 == (1 & n) ? 3 * i : i; } 10 === (r = 10 - (r % 10)) && (r = 0), t.append(r); } } Ut.GTIN_SIZE = 40; class Ht extends Ut { constructor(t) { super(t); } parseInformation() { let t = new p(); t.append("(01)"); let e = t.length(), r = this.getGeneralDecoder().extractNumericValueFromBitArray( Ht.HEADER_SIZE, 4 ); return ( t.append(r), this.encodeCompressedGtinWithoutAI(t, Ht.HEADER_SIZE + 4, e), this.getGeneralDecoder().decodeAllCodes(t, Ht.HEADER_SIZE + 44) ); } } Ht.HEADER_SIZE = 4; class Gt extends Vt { constructor(t) { super(t); } parseInformation() { let t = new p(); return this.getGeneralDecoder().decodeAllCodes(t, Gt.HEADER_SIZE); } } Gt.HEADER_SIZE = 5; class Xt extends Ut { constructor(t) { super(t); } encodeCompressedWeight(t, e, r) { let n = this.getGeneralDecoder().extractNumericValueFromBitArray(e, r); this.addWeightCode(t, n); let i = this.checkWeight(n), s = 1e5; for (let e = 0; e < 5; ++e) i / s == 0 && t.append("0"), (s /= 10); t.append(i); } } class Wt extends Xt { constructor(t) { super(t); } parseInformation() { if ( this.getInformation().getSize() != Wt.HEADER_SIZE + Xt.GTIN_SIZE + Wt.WEIGHT_SIZE ) throw new R(); let t = new p(); return ( this.encodeCompressedGtin(t, Wt.HEADER_SIZE), this.encodeCompressedWeight( t, Wt.HEADER_SIZE + Xt.GTIN_SIZE, Wt.WEIGHT_SIZE ), t.toString() ); } } (Wt.HEADER_SIZE = 5), (Wt.WEIGHT_SIZE = 15); class zt extends Wt { constructor(t) { super(t); } addWeightCode(t, e) { t.append("(3103)"); } checkWeight(t) { return t; } } class Yt extends Wt { constructor(t) { super(t); } addWeightCode(t, e) { e < 1e4 ? t.append("(3202)") : t.append("(3203)"); } checkWeight(t) { return t < 1e4 ? t : t - 1e4; } } class Zt extends Ut { constructor(t) { super(t); } parseInformation() { if (this.getInformation().getSize() < Zt.HEADER_SIZE + Ut.GTIN_SIZE) throw new R(); let t = new p(); this.encodeCompressedGtin(t, Zt.HEADER_SIZE); let e = this.getGeneralDecoder().extractNumericValueFromBitArray( Zt.HEADER_SIZE + Ut.GTIN_SIZE, Zt.LAST_DIGIT_SIZE ); t.append("(392"), t.append(e), t.append(")"); let r = this.getGeneralDecoder().decodeGeneralPurposeField( Zt.HEADER_SIZE + Ut.GTIN_SIZE + Zt.LAST_DIGIT_SIZE, null ); return t.append(r.getNewString()), t.toString(); } } (Zt.HEADER_SIZE = 8), (Zt.LAST_DIGIT_SIZE = 2); class Kt extends Ut { constructor(t) { super(t); } parseInformation() { if (this.getInformation().getSize() < Kt.HEADER_SIZE + Ut.GTIN_SIZE) throw new R(); let t = new p(); this.encodeCompressedGtin(t, Kt.HEADER_SIZE); let e = this.getGeneralDecoder().extractNumericValueFromBitArray( Kt.HEADER_SIZE + Ut.GTIN_SIZE, Kt.LAST_DIGIT_SIZE ); t.append("(393"), t.append(e), t.append(")"); let r = this.getGeneralDecoder().extractNumericValueFromBitArray( Kt.HEADER_SIZE + Ut.GTIN_SIZE + Kt.LAST_DIGIT_SIZE, Kt.FIRST_THREE_DIGITS_SIZE ); r / 100 == 0 && t.append("0"), r / 10 == 0 && t.append("0"), t.append(r); let n = this.getGeneralDecoder().decodeGeneralPurposeField( Kt.HEADER_SIZE + Ut.GTIN_SIZE + Kt.LAST_DIGIT_SIZE + Kt.FIRST_THREE_DIGITS_SIZE, null ); return t.append(n.getNewString()), t.toString(); } } (Kt.HEADER_SIZE = 8), (Kt.LAST_DIGIT_SIZE = 2), (Kt.FIRST_THREE_DIGITS_SIZE = 10); class qt extends Xt { constructor(t, e, r) { super(t), (this.dateCode = r), (this.firstAIdigits = e); } parseInformation() { if ( this.getInformation().getSize() != qt.HEADER_SIZE + qt.GTIN_SIZE + qt.WEIGHT_SIZE + qt.DATE_SIZE ) throw new R(); let t = new p(); return ( this.encodeCompressedGtin(t, qt.HEADER_SIZE), this.encodeCompressedWeight( t, qt.HEADER_SIZE + qt.GTIN_SIZE, qt.WEIGHT_SIZE ), this.encodeCompressedDate( t, qt.HEADER_SIZE + qt.GTIN_SIZE + qt.WEIGHT_SIZE ), t.toString() ); } encodeCompressedDate(t, e) { let r = this.getGeneralDecoder().extractNumericValueFromBitArray( e, qt.DATE_SIZE ); if (38400 == r) return; t.append("("), t.append(this.dateCode), t.append(")"); let n = r % 32, i = ((r /= 32) % 12) + 1, s = (r /= 12); s / 10 == 0 && t.append("0"), t.append(s), i / 10 == 0 && t.append("0"), t.append(i), n / 10 == 0 && t.append("0"), t.append(n); } addWeightCode(t, e) { t.append("("), t.append(this.firstAIdigits), t.append(e / 1e5), t.append(")"); } checkWeight(t) { return t % 1e5; } } (qt.HEADER_SIZE = 8), (qt.WEIGHT_SIZE = 20), (qt.DATE_SIZE = 16); class Qt { constructor(t, e, r, n) { (this.leftchar = t), (this.rightchar = e), (this.finderpattern = r), (this.maybeLast = n); } mayBeLast() { return this.maybeLast; } getLeftChar() { return this.leftchar; } getRightChar() { return this.rightchar; } getFinderPattern() { return this.finderpattern; } mustBeLast() { return null == this.rightchar; } toString() { return ( "[ " + this.leftchar + ", " + this.rightchar + " : " + (null == this.finderpattern ? "null" : this.finderpattern.getValue()) + " ]" ); } static equals(t, e) { return ( t instanceof Qt && Qt.equalsOrNull(t.leftchar, e.leftchar) && Qt.equalsOrNull(t.rightchar, e.rightchar) && Qt.equalsOrNull(t.finderpattern, e.finderpattern) ); } static equalsOrNull(t, e) { return null === t ? null === e : Qt.equals(t, e); } hashCode() { return ( this.leftchar.getValue() ^ this.rightchar.getValue() ^ this.finderpattern.getValue() ); } } class jt { constructor(t, e, r) { (this.pairs = t), (this.rowNumber = e), (this.wasReversed = r); } getPairs() { return this.pairs; } getRowNumber() { return this.rowNumber; } isReversed() { return this.wasReversed; } isEquivalent(t) { return this.checkEqualitity(this, t); } toString() { return "{ " + this.pairs + " }"; } equals(t, e) { return ( t instanceof jt && this.checkEqualitity(t, e) && t.wasReversed === e.wasReversed ); } checkEqualitity(t, e) { if (!t || !e) return; let r; return ( t.forEach((t, n) => { e.forEach((e) => { t.getLeftChar().getValue() === e.getLeftChar().getValue() && t.getRightChar().getValue() === e.getRightChar().getValue() && t.getFinderPatter().getValue() === e.getFinderPatter().getValue() && (r = !0); }); }), r ); } } class Jt extends Dt { constructor(t) { super(...arguments), (this.pairs = new Array(Jt.MAX_PAIRS)), (this.rows = new Array()), (this.startEnd = [2]), (this.verbose = !0 === t); } decodeRow(t, e, r) { (this.pairs.length = 0), (this.startFromEven = !1); try { return Jt.constructResult(this.decodeRow2pairs(t, e)); } catch (t) { this.verbose && console.log(t); } return ( (this.pairs.length = 0), (this.startFromEven = !0), Jt.constructResult(this.decodeRow2pairs(t, e)) ); } reset() { (this.pairs.length = 0), (this.rows.length = 0); } decodeRow2pairs(t, e) { let r, n = !1; for (; !n; ) try { this.pairs.push(this.retrieveNextPair(e, this.pairs, t)); } catch (t) { if (t instanceof R) { if (!this.pairs.length) throw new R(); n = !0; } } if (this.checkChecksum()) return this.pairs; if (((r = !!this.rows.length), this.storeRow(t, !1), r)) { let t = this.checkRowsBoolean(!1); if (null != t) return t; if (null != (t = this.checkRowsBoolean(!0))) return t; } throw new R(); } checkRowsBoolean(t) { if (this.rows.length > 25) return (this.rows.length = 0), null; (this.pairs.length = 0), t && (this.rows = this.rows.reverse()); let e = null; try { e = this.checkRows(new Array(), 0); } catch (t) { this.verbose && console.log(t); } return t && (this.rows = this.rows.reverse()), e; } checkRows(t, e) { for (let r = e; r < this.rows.length; r++) { let e = this.rows[r]; this.pairs.length = 0; for (let e of t) this.pairs.push(e.getPairs()); if ((this.pairs.push(e.getPairs()), !Jt.isValidSequence(this.pairs))) continue; if (this.checkChecksum()) return this.pairs; let n = new Array(t); n.push(e); try { return this.checkRows(n, r + 1); } catch (t) { this.verbose && console.log(t); } } throw new R(); } static isValidSequence(t) { for (let e of Jt.FINDER_PATTERN_SEQUENCES) { if (t.length > e.length) continue; let r = !0; for (let n = 0; n < t.length; n++) if (t[n].getFinderPattern().getValue() != e[n]) { r = !1; break; } if (r) return !0; } return !1; } storeRow(t, e) { let r = 0, n = !1, i = !1; for (; r < this.rows.length; ) { let e = this.rows[r]; if (e.getRowNumber() > t) { i = e.isEquivalent(this.pairs); break; } (n = e.isEquivalent(this.pairs)), r++; } i || n || Jt.isPartialRow(this.pairs, this.rows) || (this.rows.push(r, new jt(this.pairs, t, e)), this.removePartialRows(this.pairs, this.rows)); } removePartialRows(t, e) { for (let r of e) if (r.getPairs().length !== t.length) for (let e of r.getPairs()) for (let r of t) if (Qt.equals(e, r)) break; } static isPartialRow(t, e) { for (let r of e) { let e = !0; for (let n of t) { let t = !1; for (let e of r.getPairs()) if (n.equals(e)) { t = !0; break; } if (!t) { e = !1; break; } } if (e) return !0; } return !1; } getRows() { return this.rows; } static constructResult(t) { let e = (function (t) { try { if (t.get(1)) return new Ht(t); if (!t.get(2)) return new Gt(t); switch (xt.extractNumericValueFromBitArray(t, 1, 4)) { case 4: return new zt(t); case 5: return new Yt(t); } switch (xt.extractNumericValueFromBitArray(t, 1, 5)) { case 12: return new Zt(t); case 13: return new Kt(t); } switch (xt.extractNumericValueFromBitArray(t, 1, 7)) { case 56: return new qt(t, "310", "11"); case 57: return new qt(t, "320", "11"); case 58: return new qt(t, "310", "13"); case 59: return new qt(t, "320", "13"); case 60: return new qt(t, "310", "15"); case 61: return new qt(t, "320", "15"); case 62: return new qt(t, "310", "17"); case 63: return new qt(t, "320", "17"); } } catch (e) { throw (console.log(e), new j("unknown decoder: " + t)); } })(bt.buildBitArray(t)).parseInformation(), r = t[0].getFinderPattern().getResultPoints(), n = t[t.length - 1].getFinderPattern().getResultPoints(), i = [r[0], r[1], n[0], n[1]]; return new F(e, null, null, i, k.RSS_EXPANDED, null); } checkChecksum() { let t = this.pairs.get(0), e = t.getLeftChar(), r = t.getRightChar(); if (null == r) return !1; let n = r.getChecksumPortion(), i = 2; for (let t = 1; t < this.pairs.size(); ++t) { let e = this.pairs.get(t); (n += e.getLeftChar().getChecksumPortion()), i++; let r = e.getRightChar(); null != r && ((n += r.getChecksumPortion()), i++); } return 211 * (i - 4) + (n %= 211) == e.getValue(); } static getNextSecondBar(t, e) { let r; return ( t.get(e) ? ((r = t.getNextUnset(e)), (r = t.getNextSet(r))) : ((r = t.getNextSet(e)), (r = t.getNextUnset(r))), r ); } retrieveNextPair(t, e, r) { let n, i = e.length % 2 == 0; this.startFromEven && (i = !i); let s = !0, o = -1; do { this.findNextPair(t, e, o), null == (n = this.parseFoundFinderPattern(t, r, i)) ? (o = Jt.getNextSecondBar(t, this.startEnd[0])) : (s = !1); } while (s); let a, l = this.decodeDataCharacter(t, n, i, !0); if (!this.isEmptyPair(e) && e[e.length - 1].mustBeLast()) throw new R(); try { a = this.decodeDataCharacter(t, n, i, !1); } catch (t) { (a = null), this.verbose && console.log(t); } return new Qt(l, a, n, !0); } isEmptyPair(t) { return 0 === t.length; } findNextPair(t, e, r) { let n = this.getDecodeFinderCounters(); (n[0] = 0), (n[1] = 0), (n[2] = 0), (n[3] = 0); let i, s = t.getSize(); if (r >= 0) i = r; else if (this.isEmptyPair(e)) i = 0; else { i = e[e.length - 1].getFinderPattern().getStartEnd()[1]; } let o = e.length % 2 != 0; this.startFromEven && (o = !o); let a = !1; for (; i < s && (a = !t.get(i)); ) i++; let l = 0, h = i; for (let e = i; e < s; e++) if (t.get(e) != a) n[l]++; else { if (3 == l) { if ((o && Jt.reverseCounters(n), Jt.isFinderPattern(n))) return (this.startEnd[0] = h), void (this.startEnd[1] = e); o && Jt.reverseCounters(n), (h += n[0] + n[1]), (n[0] = n[2]), (n[1] = n[3]), (n[2] = 0), (n[3] = 0), l--; } else l++; (n[l] = 1), (a = !a); } throw new R(); } static reverseCounters(t) { let e = t.length; for (let r = 0; r < e / 2; ++r) { let n = t[r]; (t[r] = t[e - r - 1]), (t[e - r - 1] = n); } } parseFoundFinderPattern(t, e, r) { let n, i, s; if (r) { let e = this.startEnd[0] - 1; for (; e >= 0 && !t.get(e); ) e--; e++, (n = this.startEnd[0] - e), (i = e), (s = this.startEnd[1]); } else (i = this.startEnd[0]), (n = (s = t.getNextUnset(this.startEnd[1] + 1)) - this.startEnd[1]); let o, a = this.getDecodeFinderCounters(); c.arraycopy(a, 0, a, 1, a.length - 1), (a[0] = n); try { o = this.parseFinderValue(a, Jt.FINDER_PATTERNS); } catch (t) { return null; } return new Ot(o, [i, s], i, s, e); } decodeDataCharacter(t, e, r, n) { let i = this.getDataCharacterCounters(); for (let t = 0; t < i.length; t++) i[t] = 0; if (n) Jt.recordPatternInReverse(t, e.getStartEnd()[0], i); else { Jt.recordPattern(t, e.getStartEnd()[1], i); for (let t = 0, e = i.length - 1; t < e; t++, e--) { let r = i[t]; (i[t] = i[e]), (i[e] = r); } } let s = tt.sum(new Int32Array(i)) / 17, o = (e.getStartEnd()[1] - e.getStartEnd()[0]) / 15; if (Math.abs(s - o) / o > 0.3) throw new R(); let a = this.getOddCounts(), l = this.getEvenCounts(), h = this.getOddRoundingErrors(), c = this.getEvenRoundingErrors(); for (let t = 0; t < i.length; t++) { let e = (1 * i[t]) / s, r = e + 0.5; if (r < 1) { if (e < 0.3) throw new R(); r = 1; } else if (r > 8) { if (e > 8.7) throw new R(); r = 8; } let n = t / 2; 0 == (1 & t) ? ((a[n] = r), (h[n] = e - r)) : ((l[n] = r), (c[n] = e - r)); } this.adjustOddEvenCounts(17); let u = 4 * e.getValue() + (r ? 0 : 2) + (n ? 0 : 1) - 1, d = 0, g = 0; for (let t = a.length - 1; t >= 0; t--) { if (Jt.isNotA1left(e, r, n)) { let e = Jt.WEIGHTS[u][2 * t]; g += a[t] * e; } d += a[t]; } let f = 0; for (let t = l.length - 1; t >= 0; t--) if (Jt.isNotA1left(e, r, n)) { let e = Jt.WEIGHTS[u][2 * t + 1]; f += l[t] * e; } let w = g + f; if (0 != (1 & d) || d > 13 || d < 4) throw new R(); let A = (13 - d) / 2, C = Jt.SYMBOL_WIDEST[A], E = 9 - C, m = Mt.getRSSvalue(a, C, !0), _ = Mt.getRSSvalue(l, E, !1), I = Jt.EVEN_TOTAL_SUBSET[A], S = Jt.GSUM[A]; return new yt(m * I + _ + S, w); } static isNotA1left(t, e, r) { return !(0 == t.getValue() && e && r); } adjustOddEvenCounts(t) { let e = tt.sum(new Int32Array(this.getOddCounts())), r = tt.sum(new Int32Array(this.getEvenCounts())), n = !1, i = !1; e > 13 ? (i = !0) : e < 4 && (n = !0); let s = !1, o = !1; r > 13 ? (o = !0) : r < 4 && (s = !0); let a = e + r - t, l = 1 == (1 & e), h = 0 == (1 & r); if (1 == a) if (l) { if (h) throw new R(); i = !0; } else { if (!h) throw new R(); o = !0; } else if (-1 == a) if (l) { if (h) throw new R(); n = !0; } else { if (!h) throw new R(); s = !0; } else { if (0 != a) throw new R(); if (l) { if (!h) throw new R(); e < r ? ((n = !0), (o = !0)) : ((i = !0), (s = !0)); } else if (h) throw new R(); } if (n) { if (i) throw new R(); Jt.increment(this.getOddCounts(), this.getOddRoundingErrors()); } if ( (i && Jt.decrement(this.getOddCounts(), this.getOddRoundingErrors()), s) ) { if (o) throw new R(); Jt.increment(this.getEvenCounts(), this.getOddRoundingErrors()); } o && Jt.decrement(this.getEvenCounts(), this.getEvenRoundingErrors()); } } (Jt.SYMBOL_WIDEST = [7, 5, 4, 3, 1]), (Jt.EVEN_TOTAL_SUBSET = [4, 20, 52, 104, 204]), (Jt.GSUM = [0, 348, 1388, 2948, 3988]), (Jt.FINDER_PATTERNS = [ Int32Array.from([1, 8, 4, 1]), Int32Array.from([3, 6, 4, 1]), Int32Array.from([3, 4, 6, 1]), Int32Array.from([3, 2, 8, 1]), Int32Array.from([2, 6, 5, 1]), Int32Array.from([2, 2, 9, 1]), ]), (Jt.WEIGHTS = [ [1, 3, 9, 27, 81, 32, 96, 77], [20, 60, 180, 118, 143, 7, 21, 63], [189, 145, 13, 39, 117, 140, 209, 205], [193, 157, 49, 147, 19, 57, 171, 91], [62, 186, 136, 197, 169, 85, 44, 132], [185, 133, 188, 142, 4, 12, 36, 108], [113, 128, 173, 97, 80, 29, 87, 50], [150, 28, 84, 41, 123, 158, 52, 156], [46, 138, 203, 187, 139, 206, 196, 166], [76, 17, 51, 153, 37, 111, 122, 155], [43, 129, 176, 106, 107, 110, 119, 146], [16, 48, 144, 10, 30, 90, 59, 177], [109, 116, 137, 200, 178, 112, 125, 164], [70, 210, 208, 202, 184, 130, 179, 115], [134, 191, 151, 31, 93, 68, 204, 190], [148, 22, 66, 198, 172, 94, 71, 2], [6, 18, 54, 162, 64, 192, 154, 40], [120, 149, 25, 75, 14, 42, 126, 167], [79, 26, 78, 23, 69, 207, 199, 175], [103, 98, 83, 38, 114, 131, 182, 124], [161, 61, 183, 127, 170, 88, 53, 159], [55, 165, 73, 8, 24, 72, 5, 15], [45, 135, 194, 160, 58, 174, 100, 89], ]), (Jt.FINDER_PAT_A = 0), (Jt.FINDER_PAT_B = 1), (Jt.FINDER_PAT_C = 2), (Jt.FINDER_PAT_D = 3), (Jt.FINDER_PAT_E = 4), (Jt.FINDER_PAT_F = 5), (Jt.FINDER_PATTERN_SEQUENCES = [ [Jt.FINDER_PAT_A, Jt.FINDER_PAT_A], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B], [Jt.FINDER_PAT_A, Jt.FINDER_PAT_C, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D], [ Jt.FINDER_PAT_A, Jt.FINDER_PAT_E, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D, Jt.FINDER_PAT_C, ], [ Jt.FINDER_PAT_A, Jt.FINDER_PAT_E, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D, Jt.FINDER_PAT_D, Jt.FINDER_PAT_F, ], [ Jt.FINDER_PAT_A, Jt.FINDER_PAT_E, Jt.FINDER_PAT_B, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_F, Jt.FINDER_PAT_F, ], [ Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_D, ], [ Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_E, ], [ Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_F, Jt.FINDER_PAT_F, ], [ Jt.FINDER_PAT_A, Jt.FINDER_PAT_A, Jt.FINDER_PAT_B, Jt.FINDER_PAT_B, Jt.FINDER_PAT_C, Jt.FINDER_PAT_D, Jt.FINDER_PAT_D, Jt.FINDER_PAT_E, Jt.FINDER_PAT_E, Jt.FINDER_PAT_F, Jt.FINDER_PAT_F, ], ]), (Jt.MAX_PAIRS = 11); class $t extends yt { constructor(t, e, r) { super(t, e), (this.count = 0), (this.finderPattern = r); } getFinderPattern() { return this.finderPattern; } getCount() { return this.count; } incrementCount() { this.count++; } } class te extends Dt { constructor() { super(...arguments), (this.possibleLeftPairs = []), (this.possibleRightPairs = []); } decodeRow(t, e, r) { const n = this.decodePair(e, !1, t, r); te.addOrTally(this.possibleLeftPairs, n), e.reverse(); let i = this.decodePair(e, !0, t, r); te.addOrTally(this.possibleRightPairs, i), e.reverse(); for (let t of this.possibleLeftPairs) if (t.getCount() > 1) for (let e of this.possibleRightPairs) if (e.getCount() > 1 && te.checkChecksum(t, e)) return te.constructResult(t, e); throw new R(); } static addOrTally(t, e) { if (null == e) return; let r = !1; for (let n of t) if (n.getValue() === e.getValue()) { n.incrementCount(), (r = !0); break; } r || t.push(e); } reset() { (this.possibleLeftPairs.length = 0), (this.possibleRightPairs.length = 0); } static constructResult(t, e) { let r = 4537077 * t.getValue() + e.getValue(), n = new String(r).toString(), i = new p(); for (let t = 13 - n.length; t > 0; t--) i.append("0"); i.append(n); let s = 0; for (let t = 0; t < 13; t++) { let e = i.charAt(t).charCodeAt(0) - "0".charCodeAt(0); s += 0 == (1 & t) ? 3 * e : e; } 10 === (s = 10 - (s % 10)) && (s = 0), i.append(s.toString()); let o = t.getFinderPattern().getResultPoints(), a = e.getFinderPattern().getResultPoints(); return new F( i.toString(), null, 0, [o[0], o[1], a[0], a[1]], k.RSS_14, new Date().getTime() ); } static checkChecksum(t, e) { let r = (t.getChecksumPortion() + 16 * e.getChecksumPortion()) % 79, n = 9 * t.getFinderPattern().getValue() + e.getFinderPattern().getValue(); return n > 72 && n--, n > 8 && n--, r === n; } decodePair(t, e, r, n) { try { let i = this.findFinderPattern(t, e), s = this.parseFoundFinderPattern(t, r, e, i), o = null == n ? null : n.get(C.NEED_RESULT_POINT_CALLBACK); if (null != o) { let n = (i[0] + i[1]) / 2; e && (n = t.getSize() - 1 - n), o.foundPossibleResultPoint(new rt(n, r)); } let a = this.decodeDataCharacter(t, s, !0), l = this.decodeDataCharacter(t, s, !1); return new $t( 1597 * a.getValue() + l.getValue(), a.getChecksumPortion() + 4 * l.getChecksumPortion(), s ); } catch (t) { return null; } } decodeDataCharacter(t, e, r) { let n = this.getDataCharacterCounters(); for (let t = 0; t < n.length; t++) n[t] = 0; if (r) gt.recordPatternInReverse(t, e.getStartEnd()[0], n); else { gt.recordPattern(t, e.getStartEnd()[1] + 1, n); for (let t = 0, e = n.length - 1; t < e; t++, e--) { let r = n[t]; (n[t] = n[e]), (n[e] = r); } } let i = r ? 16 : 15, s = tt.sum(new Int32Array(n)) / i, o = this.getOddCounts(), a = this.getEvenCounts(), l = this.getOddRoundingErrors(), h = this.getEvenRoundingErrors(); for (let t = 0; t < n.length; t++) { let e = n[t] / s, r = Math.floor(e + 0.5); r < 1 ? (r = 1) : r > 8 && (r = 8); let i = Math.floor(t / 2); 0 == (1 & t) ? ((o[i] = r), (l[i] = e - r)) : ((a[i] = r), (h[i] = e - r)); } this.adjustOddEvenCounts(r, i); let c = 0, u = 0; for (let t = o.length - 1; t >= 0; t--) (u *= 9), (u += o[t]), (c += o[t]); let d = 0, g = 0; for (let t = a.length - 1; t >= 0; t--) (d *= 9), (d += a[t]), (g += a[t]); let f = u + 3 * d; if (r) { if (0 != (1 & c) || c > 12 || c < 4) throw new R(); let t = (12 - c) / 2, e = te.OUTSIDE_ODD_WIDEST[t], r = 9 - e, n = Mt.getRSSvalue(o, e, !1), i = Mt.getRSSvalue(a, r, !0), s = te.OUTSIDE_EVEN_TOTAL_SUBSET[t], l = te.OUTSIDE_GSUM[t]; return new yt(n * s + i + l, f); } { if (0 != (1 & g) || g > 10 || g < 4) throw new R(); let t = (10 - g) / 2, e = te.INSIDE_ODD_WIDEST[t], r = 9 - e, n = Mt.getRSSvalue(o, e, !0), i = Mt.getRSSvalue(a, r, !1), s = te.INSIDE_ODD_TOTAL_SUBSET[t], l = te.INSIDE_GSUM[t]; return new yt(i * s + n + l, f); } } findFinderPattern(t, e) { let r = this.getDecodeFinderCounters(); (r[0] = 0), (r[1] = 0), (r[2] = 0), (r[3] = 0); let n = t.getSize(), i = !1, s = 0; for (; s < n && e !== (i = !t.get(s)); ) s++; let o = 0, a = s; for (let e = s; e < n; e++) if (t.get(e) !== i) r[o]++; else { if (3 === o) { if (Dt.isFinderPattern(r)) return [a, e]; (a += r[0] + r[1]), (r[0] = r[2]), (r[1] = r[3]), (r[2] = 0), (r[3] = 0), o--; } else o++; (r[o] = 1), (i = !i); } throw new R(); } parseFoundFinderPattern(t, e, r, n) { let i = t.get(n[0]), s = n[0] - 1; for (; s >= 0 && i !== t.get(s); ) s--; s++; const o = n[0] - s, a = this.getDecodeFinderCounters(), l = new Int32Array(a.length); c.arraycopy(a, 0, l, 1, a.length - 1), (l[0] = o); const h = this.parseFinderValue(l, te.FINDER_PATTERNS); let u = s, d = n[1]; return ( r && ((u = t.getSize() - 1 - u), (d = t.getSize() - 1 - d)), new Ot(h, [s, n[1]], u, d, e) ); } adjustOddEvenCounts(t, e) { let r = tt.sum(new Int32Array(this.getOddCounts())), n = tt.sum(new Int32Array(this.getEvenCounts())), i = !1, s = !1, o = !1, a = !1; t ? (r > 12 ? (s = !0) : r < 4 && (i = !0), n > 12 ? (a = !0) : n < 4 && (o = !0)) : (r > 11 ? (s = !0) : r < 5 && (i = !0), n > 10 ? (a = !0) : n < 4 && (o = !0)); let l = r + n - e, h = (1 & r) == (t ? 1 : 0), c = 1 == (1 & n); if (1 === l) if (h) { if (c) throw new R(); s = !0; } else { if (!c) throw new R(); a = !0; } else if (-1 === l) if (h) { if (c) throw new R(); i = !0; } else { if (!c) throw new R(); o = !0; } else { if (0 !== l) throw new R(); if (h) { if (!c) throw new R(); r < n ? ((i = !0), (a = !0)) : ((s = !0), (o = !0)); } else if (c) throw new R(); } if (i) { if (s) throw new R(); Dt.increment(this.getOddCounts(), this.getOddRoundingErrors()); } if ( (s && Dt.decrement(this.getOddCounts(), this.getOddRoundingErrors()), o) ) { if (a) throw new R(); Dt.increment(this.getEvenCounts(), this.getOddRoundingErrors()); } a && Dt.decrement(this.getEvenCounts(), this.getEvenRoundingErrors()); } } (te.OUTSIDE_EVEN_TOTAL_SUBSET = [1, 10, 34, 70, 126]), (te.INSIDE_ODD_TOTAL_SUBSET = [4, 20, 48, 81]), (te.OUTSIDE_GSUM = [0, 161, 961, 2015, 2715]), (te.INSIDE_GSUM = [0, 336, 1036, 1516]), (te.OUTSIDE_ODD_WIDEST = [8, 6, 4, 3, 1]), (te.INSIDE_ODD_WIDEST = [2, 4, 6, 8]), (te.FINDER_PATTERNS = [ Int32Array.from([3, 8, 2, 1]), Int32Array.from([3, 5, 5, 1]), Int32Array.from([3, 3, 7, 1]), Int32Array.from([3, 1, 9, 1]), Int32Array.from([2, 7, 4, 1]), Int32Array.from([2, 5, 6, 1]), Int32Array.from([2, 3, 8, 1]), Int32Array.from([1, 5, 7, 1]), Int32Array.from([1, 3, 9, 1]), ]); class ee extends gt { constructor(t, e) { super(), (this.readers = []), (this.verbose = !0 === e); const r = t ? t.get(C.POSSIBLE_FORMATS) : null, n = t && void 0 !== t.get(C.ASSUME_CODE_39_CHECK_DIGIT); r && ((r.includes(k.EAN_13) || r.includes(k.UPC_A) || r.includes(k.EAN_8) || r.includes(k.UPC_E)) && this.readers.push(new Nt(t)), r.includes(k.CODE_39) && this.readers.push(new wt(n)), r.includes(k.CODE_128) && this.readers.push(new ft()), r.includes(k.ITF) && this.readers.push(new At()), r.includes(k.RSS_14) && this.readers.push(new te()), r.includes(k.RSS_EXPANDED) && this.readers.push(new Jt(this.verbose))), 0 === this.readers.length && (this.readers.push(new Nt(t)), this.readers.push(new wt()), this.readers.push(new Nt(t)), this.readers.push(new ft()), this.readers.push(new At()), this.readers.push(new te()), this.readers.push(new Jt(this.verbose))); } decodeRow(t, e, r) { for (let n = 0; n < this.readers.length; n++) try { return this.readers[n].decodeRow(t, e, r); } catch (t) {} throw new R(); } reset() { this.readers.forEach((t) => t.reset()); } } class re { constructor(t, e, r) { (this.ecCodewords = t), (this.ecBlocks = [e]), r && this.ecBlocks.push(r); } getECCodewords() { return this.ecCodewords; } getECBlocks() { return this.ecBlocks; } } class ne { constructor(t, e) { (this.count = t), (this.dataCodewords = e); } getCount() { return this.count; } getDataCodewords() { return this.dataCodewords; } } class ie { constructor(t, e, r, n, i, s) { (this.versionNumber = t), (this.symbolSizeRows = e), (this.symbolSizeColumns = r), (this.dataRegionSizeRows = n), (this.dataRegionSizeColumns = i), (this.ecBlocks = s); let o = 0; const a = s.getECCodewords(), l = s.getECBlocks(); for (let t of l) o += t.getCount() * (t.getDataCodewords() + a); this.totalCodewords = o; } getVersionNumber() { return this.versionNumber; } getSymbolSizeRows() { return this.symbolSizeRows; } getSymbolSizeColumns() { return this.symbolSizeColumns; } getDataRegionSizeRows() { return this.dataRegionSizeRows; } getDataRegionSizeColumns() { return this.dataRegionSizeColumns; } getTotalCodewords() { return this.totalCodewords; } getECBlocks() { return this.ecBlocks; } static getVersionForDimensions(t, e) { if (0 != (1 & t) || 0 != (1 & e)) throw new E(); for (let r of ie.VERSIONS) if (r.symbolSizeRows === t && r.symbolSizeColumns === e) return r; throw new E(); } toString() { return "" + this.versionNumber; } static buildVersions() { return [ new ie(1, 10, 10, 8, 8, new re(5, new ne(1, 3))), new ie(2, 12, 12, 10, 10, new re(7, new ne(1, 5))), new ie(3, 14, 14, 12, 12, new re(10, new ne(1, 8))), new ie(4, 16, 16, 14, 14, new re(12, new ne(1, 12))), new ie(5, 18, 18, 16, 16, new re(14, new ne(1, 18))), new ie(6, 20, 20, 18, 18, new re(18, new ne(1, 22))), new ie(7, 22, 22, 20, 20, new re(20, new ne(1, 30))), new ie(8, 24, 24, 22, 22, new re(24, new ne(1, 36))), new ie(9, 26, 26, 24, 24, new re(28, new ne(1, 44))), new ie(10, 32, 32, 14, 14, new re(36, new ne(1, 62))), new ie(11, 36, 36, 16, 16, new re(42, new ne(1, 86))), new ie(12, 40, 40, 18, 18, new re(48, new ne(1, 114))), new ie(13, 44, 44, 20, 20, new re(56, new ne(1, 144))), new ie(14, 48, 48, 22, 22, new re(68, new ne(1, 174))), new ie(15, 52, 52, 24, 24, new re(42, new ne(2, 102))), new ie(16, 64, 64, 14, 14, new re(56, new ne(2, 140))), new ie(17, 72, 72, 16, 16, new re(36, new ne(4, 92))), new ie(18, 80, 80, 18, 18, new re(48, new ne(4, 114))), new ie(19, 88, 88, 20, 20, new re(56, new ne(4, 144))), new ie(20, 96, 96, 22, 22, new re(68, new ne(4, 174))), new ie(21, 104, 104, 24, 24, new re(56, new ne(6, 136))), new ie(22, 120, 120, 18, 18, new re(68, new ne(6, 175))), new ie(23, 132, 132, 20, 20, new re(62, new ne(8, 163))), new ie( 24, 144, 144, 22, 22, new re(62, new ne(8, 156), new ne(2, 155)) ), new ie(25, 8, 18, 6, 16, new re(7, new ne(1, 5))), new ie(26, 8, 32, 6, 14, new re(11, new ne(1, 10))), new ie(27, 12, 26, 10, 24, new re(14, new ne(1, 16))), new ie(28, 12, 36, 10, 16, new re(18, new ne(1, 22))), new ie(29, 16, 36, 14, 16, new re(24, new ne(1, 32))), new ie(30, 16, 48, 14, 22, new re(28, new ne(1, 49))), ]; } } ie.VERSIONS = ie.buildVersions(); class se { constructor(t) { const e = t.getHeight(); if (e < 8 || e > 144 || 0 != (1 & e)) throw new E(); (this.version = se.readVersion(t)), (this.mappingBitMatrix = this.extractDataRegion(t)), (this.readMappingMatrix = new T( this.mappingBitMatrix.getWidth(), this.mappingBitMatrix.getHeight() )); } getVersion() { return this.version; } static readVersion(t) { const e = t.getHeight(), r = t.getWidth(); return ie.getVersionForDimensions(e, r); } readCodewords() { const t = new Int8Array(this.version.getTotalCodewords()); let e = 0, r = 4, n = 0; const i = this.mappingBitMatrix.getHeight(), s = this.mappingBitMatrix.getWidth(); let o = !1, a = !1, l = !1, h = !1; do { if (r !== i || 0 !== n || o) if (r !== i - 2 || 0 !== n || 0 == (3 & s) || a) if (r !== i + 4 || 2 !== n || 0 != (7 & s) || l) if (r !== i - 2 || 0 !== n || 4 != (7 & s) || h) { do { r < i && n >= 0 && !this.readMappingMatrix.get(n, r) && (t[e++] = 255 & this.readUtah(r, n, i, s)), (r -= 2), (n += 2); } while (r >= 0 && n < s); (r += 1), (n += 3); do { r >= 0 && n < s && !this.readMappingMatrix.get(n, r) && (t[e++] = 255 & this.readUtah(r, n, i, s)), (r += 2), (n -= 2); } while (r < i && n >= 0); (r += 3), (n += 1); } else (t[e++] = 255 & this.readCorner4(i, s)), (r -= 2), (n += 2), (h = !0); else (t[e++] = 255 & this.readCorner3(i, s)), (r -= 2), (n += 2), (l = !0); else (t[e++] = 255 & this.readCorner2(i, s)), (r -= 2), (n += 2), (a = !0); else (t[e++] = 255 & this.readCorner1(i, s)), (r -= 2), (n += 2), (o = !0); } while (r < i || n < s); if (e !== this.version.getTotalCodewords()) throw new E(); return t; } readModule(t, e, r, n) { return ( t < 0 && ((t += r), (e += 4 - ((r + 4) & 7))), e < 0 && ((e += n), (t += 4 - ((n + 4) & 7))), this.readMappingMatrix.set(e, t), this.mappingBitMatrix.get(e, t) ); } readUtah(t, e, r, n) { let i = 0; return ( this.readModule(t - 2, e - 2, r, n) && (i |= 1), (i <<= 1), this.readModule(t - 2, e - 1, r, n) && (i |= 1), (i <<= 1), this.readModule(t - 1, e - 2, r, n) && (i |= 1), (i <<= 1), this.readModule(t - 1, e - 1, r, n) && (i |= 1), (i <<= 1), this.readModule(t - 1, e, r, n) && (i |= 1), (i <<= 1), this.readModule(t, e - 2, r, n) && (i |= 1), (i <<= 1), this.readModule(t, e - 1, r, n) && (i |= 1), (i <<= 1), this.readModule(t, e, r, n) && (i |= 1), i ); } readCorner1(t, e) { let r = 0; return ( this.readModule(t - 1, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(t - 1, 1, t, e) && (r |= 1), (r <<= 1), this.readModule(t - 1, 2, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 2, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(1, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(2, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(3, e - 1, t, e) && (r |= 1), r ); } readCorner2(t, e) { let r = 0; return ( this.readModule(t - 3, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(t - 2, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(t - 1, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 4, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 3, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 2, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(1, e - 1, t, e) && (r |= 1), r ); } readCorner3(t, e) { let r = 0; return ( this.readModule(t - 1, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(t - 1, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 3, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 2, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(1, e - 3, t, e) && (r |= 1), (r <<= 1), this.readModule(1, e - 2, t, e) && (r |= 1), (r <<= 1), this.readModule(1, e - 1, t, e) && (r |= 1), r ); } readCorner4(t, e) { let r = 0; return ( this.readModule(t - 3, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(t - 2, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(t - 1, 0, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 2, t, e) && (r |= 1), (r <<= 1), this.readModule(0, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(1, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(2, e - 1, t, e) && (r |= 1), (r <<= 1), this.readModule(3, e - 1, t, e) && (r |= 1), r ); } extractDataRegion(t) { const e = this.version.getSymbolSizeRows(), r = this.version.getSymbolSizeColumns(); if (t.getHeight() !== e) throw new o("Dimension of bitMatrix must match the version size"); const n = this.version.getDataRegionSizeRows(), i = this.version.getDataRegionSizeColumns(), s = (e / n) | 0, a = (r / i) | 0, l = new T(a * i, s * n); for (let e = 0; e < s; ++e) { const r = e * n; for (let s = 0; s < a; ++s) { const o = s * i; for (let a = 0; a < n; ++a) { const h = e * (n + 2) + 1 + a, c = r + a; for (let e = 0; e < i; ++e) { const r = s * (i + 2) + 1 + e; if (t.get(r, h)) { const t = o + e; l.set(t, c); } } } } } return l; } } class oe { constructor(t, e) { (this.numDataCodewords = t), (this.codewords = e); } static getDataBlocks(t, e) { const r = e.getECBlocks(); let n = 0; const i = r.getECBlocks(); for (let t of i) n += t.getCount(); const s = new Array(n); let a = 0; for (let t of i) for (let e = 0; e < t.getCount(); e++) { const e = t.getDataCodewords(), n = r.getECCodewords() + e; s[a++] = new oe(e, new Uint8Array(n)); } const l = s[0].codewords.length - r.getECCodewords(), h = l - 1; let c = 0; for (let e = 0; e < h; e++) for (let r = 0; r < a; r++) s[r].codewords[e] = t[c++]; const u = 24 === e.getVersionNumber(), d = u ? 8 : a; for (let e = 0; e < d; e++) s[e].codewords[l - 1] = t[c++]; const g = s[0].codewords.length; for (let e = l; e < g; e++) for (let r = 0; r < a; r++) { const n = u ? (r + 8) % a : r, i = u && n > 7 ? e - 1 : e; s[n].codewords[i] = t[c++]; } if (c !== t.length) throw new o(); return s; } getNumDataCodewords() { return this.numDataCodewords; } getCodewords() { return this.codewords; } } class ae { constructor(t) { (this.bytes = t), (this.byteOffset = 0), (this.bitOffset = 0); } getBitOffset() { return this.bitOffset; } getByteOffset() { return this.byteOffset; } readBits(t) { if (t < 1 || t > 32 || t > this.available()) throw new o("" + t); let e = 0, r = this.bitOffset, n = this.byteOffset; const i = this.bytes; if (r > 0) { const s = 8 - r, o = t < s ? t : s, a = s - o, l = (255 >> (8 - o)) << a; (e = (i[n] & l) >> a), (t -= o), 8 === (r += o) && ((r = 0), n++); } if (t > 0) { for (; t >= 8; ) (e = (e << 8) | (255 & i[n])), n++, (t -= 8); if (t > 0) { const s = 8 - t, o = (255 >> s) << s; (e = (e << t) | ((i[n] & o) >> s)), (r += t); } } return (this.bitOffset = r), (this.byteOffset = n), e; } available() { return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset; } } !(function (t) { (t[(t.PAD_ENCODE = 0)] = "PAD_ENCODE"), (t[(t.ASCII_ENCODE = 1)] = "ASCII_ENCODE"), (t[(t.C40_ENCODE = 2)] = "C40_ENCODE"), (t[(t.TEXT_ENCODE = 3)] = "TEXT_ENCODE"), (t[(t.ANSIX12_ENCODE = 4)] = "ANSIX12_ENCODE"), (t[(t.EDIFACT_ENCODE = 5)] = "EDIFACT_ENCODE"), (t[(t.BASE256_ENCODE = 6)] = "BASE256_ENCODE"); })(V || (V = {})); class le { static decode(t) { const e = new ae(t), r = new p(), n = new p(), i = new Array(); let s = V.ASCII_ENCODE; do { if (s === V.ASCII_ENCODE) s = this.decodeAsciiSegment(e, r, n); else { switch (s) { case V.C40_ENCODE: this.decodeC40Segment(e, r); break; case V.TEXT_ENCODE: this.decodeTextSegment(e, r); break; case V.ANSIX12_ENCODE: this.decodeAnsiX12Segment(e, r); break; case V.EDIFACT_ENCODE: this.decodeEdifactSegment(e, r); break; case V.BASE256_ENCODE: this.decodeBase256Segment(e, r, i); break; default: throw new E(); } s = V.ASCII_ENCODE; } } while (s !== V.PAD_ENCODE && e.available() > 0); return ( n.length() > 0 && r.append(n.toString()), new z(t, r.toString(), 0 === i.length ? null : i, null) ); } static decodeAsciiSegment(t, e, r) { let n = !1; do { let i = t.readBits(8); if (0 === i) throw new E(); if (i <= 128) return ( n && (i += 128), e.append(String.fromCharCode(i - 1)), V.ASCII_ENCODE ); if (129 === i) return V.PAD_ENCODE; if (i <= 229) { const t = i - 130; t < 10 && e.append("0"), e.append("" + t); } else switch (i) { case 230: return V.C40_ENCODE; case 231: return V.BASE256_ENCODE; case 232: e.append(String.fromCharCode(29)); break; case 233: case 234: break; case 235: n = !0; break; case 236: e.append("[)>05"), r.insert(0, ""); break; case 237: e.append("[)>06"), r.insert(0, ""); break; case 238: return V.ANSIX12_ENCODE; case 239: return V.TEXT_ENCODE; case 240: return V.EDIFACT_ENCODE; case 241: break; default: if (254 !== i || 0 !== t.available()) throw new E(); } } while (t.available() > 0); return V.ASCII_ENCODE; } static decodeC40Segment(t, e) { let r = !1; const n = []; let i = 0; do { if (8 === t.available()) return; const s = t.readBits(8); if (254 === s) return; this.parseTwoBytes(s, t.readBits(8), n); for (let t = 0; t < 3; t++) { const s = n[t]; switch (i) { case 0: if (s < 3) i = s + 1; else { if (!(s < this.C40_BASIC_SET_CHARS.length)) throw new E(); { const t = this.C40_BASIC_SET_CHARS[s]; r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), (r = !1)) : e.append(t); } } break; case 1: r ? (e.append(String.fromCharCode(s + 128)), (r = !1)) : e.append(String.fromCharCode(s)), (i = 0); break; case 2: if (s < this.C40_SHIFT2_SET_CHARS.length) { const t = this.C40_SHIFT2_SET_CHARS[s]; r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), (r = !1)) : e.append(t); } else switch (s) { case 27: e.append(String.fromCharCode(29)); break; case 30: r = !0; break; default: throw new E(); } i = 0; break; case 3: r ? (e.append(String.fromCharCode(s + 224)), (r = !1)) : e.append(String.fromCharCode(s + 96)), (i = 0); break; default: throw new E(); } } } while (t.available() > 0); } static decodeTextSegment(t, e) { let r = !1, n = [], i = 0; do { if (8 === t.available()) return; const s = t.readBits(8); if (254 === s) return; this.parseTwoBytes(s, t.readBits(8), n); for (let t = 0; t < 3; t++) { const s = n[t]; switch (i) { case 0: if (s < 3) i = s + 1; else { if (!(s < this.TEXT_BASIC_SET_CHARS.length)) throw new E(); { const t = this.TEXT_BASIC_SET_CHARS[s]; r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), (r = !1)) : e.append(t); } } break; case 1: r ? (e.append(String.fromCharCode(s + 128)), (r = !1)) : e.append(String.fromCharCode(s)), (i = 0); break; case 2: if (s < this.TEXT_SHIFT2_SET_CHARS.length) { const t = this.TEXT_SHIFT2_SET_CHARS[s]; r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), (r = !1)) : e.append(t); } else switch (s) { case 27: e.append(String.fromCharCode(29)); break; case 30: r = !0; break; default: throw new E(); } i = 0; break; case 3: if (!(s < this.TEXT_SHIFT3_SET_CHARS.length)) throw new E(); { const t = this.TEXT_SHIFT3_SET_CHARS[s]; r ? (e.append(String.fromCharCode(t.charCodeAt(0) + 128)), (r = !1)) : e.append(t), (i = 0); } break; default: throw new E(); } } } while (t.available() > 0); } static decodeAnsiX12Segment(t, e) { const r = []; do { if (8 === t.available()) return; const n = t.readBits(8); if (254 === n) return; this.parseTwoBytes(n, t.readBits(8), r); for (let t = 0; t < 3; t++) { const n = r[t]; switch (n) { case 0: e.append("\r"); break; case 1: e.append("*"); break; case 2: e.append(">"); break; case 3: e.append(" "); break; default: if (n < 14) e.append(String.fromCharCode(n + 44)); else { if (!(n < 40)) throw new E(); e.append(String.fromCharCode(n + 51)); } } } } while (t.available() > 0); } static parseTwoBytes(t, e, r) { let n = (t << 8) + e - 1, i = Math.floor(n / 1600); (r[0] = i), (n -= 1600 * i), (i = Math.floor(n / 40)), (r[1] = i), (r[2] = n - 40 * i); } static decodeEdifactSegment(t, e) { do { if (t.available() <= 16) return; for (let r = 0; r < 4; r++) { let r = t.readBits(6); if (31 === r) { const e = 8 - t.getBitOffset(); return void (8 !== e && t.readBits(e)); } 0 == (32 & r) && (r |= 64), e.append(String.fromCharCode(r)); } } while (t.available() > 0); } static decodeBase256Segment(t, e, r) { let n = 1 + t.getByteOffset(); const i = this.unrandomize255State(t.readBits(8), n++); let s; if ( (s = 0 === i ? (t.available() / 8) | 0 : i < 250 ? i : 250 * (i - 249) + this.unrandomize255State(t.readBits(8), n++)) < 0 ) throw new E(); const o = new Uint8Array(s); for (let e = 0; e < s; e++) { if (t.available() < 8) throw new E(); o[e] = this.unrandomize255State(t.readBits(8), n++); } r.push(o); try { e.append(I.decode(o, S.ISO88591)); } catch (t) { throw new j( "Platform does not support required encoding: " + t.message ); } } static unrandomize255State(t, e) { const r = t - (((149 * e) % 255) + 1); return r >= 0 ? r : r + 256; } } (le.C40_BASIC_SET_CHARS = [ "*", "*", "*", " ", "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", ]), (le.C40_SHIFT2_SET_CHARS = [ "!", '"', "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "@", "[", "\\", "]", "^", "_", ]), (le.TEXT_BASIC_SET_CHARS = [ "*", "*", "*", " ", "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", ]), (le.TEXT_SHIFT2_SET_CHARS = le.C40_SHIFT2_SET_CHARS), (le.TEXT_SHIFT3_SET_CHARS = [ "`", "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", "{", "|", "}", "~", String.fromCharCode(127), ]); class he { constructor() { this.rsDecoder = new J(q.DATA_MATRIX_FIELD_256); } decode(t) { const e = new se(t), r = e.getVersion(), n = e.readCodewords(), i = oe.getDataBlocks(n, r); let s = 0; for (let t of i) s += t.getNumDataCodewords(); const o = new Uint8Array(s), a = i.length; for (let t = 0; t < a; t++) { const e = i[t], r = e.getCodewords(), n = e.getNumDataCodewords(); this.correctErrors(r, n); for (let e = 0; e < n; e++) o[e * a + t] = r[e]; } return le.decode(o); } correctErrors(t, e) { const r = new Int32Array(t); try { this.rsDecoder.decode(r, t.length - e); } catch (t) { throw new l(); } for (let n = 0; n < e; n++) t[n] = r[n]; } } class ce { constructor(t) { (this.image = t), (this.rectangleDetector = new st(this.image)); } detect() { const t = this.rectangleDetector.detect(); let e = this.detectSolid1(t); if ((((e = this.detectSolid2(e))[3] = this.correctTopRight(e)), !e[3])) throw new R(); const r = (e = this.shiftToModuleCenter(e))[0], n = e[1], i = e[2], s = e[3]; let o = this.transitionsBetween(r, s) + 1, a = this.transitionsBetween(i, s) + 1; 1 == (1 & o) && (o += 1), 1 == (1 & a) && (a += 1), 4 * o < 7 * a && 4 * a < 7 * o && (o = a = Math.max(o, a)); let l = ce.sampleGrid(this.image, r, n, i, s, o, a); return new nt(l, [r, n, i, s]); } static shiftPoint(t, e, r) { let n = (e.getX() - t.getX()) / (r + 1), i = (e.getY() - t.getY()) / (r + 1); return new rt(t.getX() + n, t.getY() + i); } static moveAway(t, e, r) { let n = t.getX(), i = t.getY(); return ( n < e ? (n -= 1) : (n += 1), i < r ? (i -= 1) : (i += 1), new rt(n, i) ); } detectSolid1(t) { let e = t[0], r = t[1], n = t[3], i = t[2], s = this.transitionsBetween(e, r), o = this.transitionsBetween(r, n), a = this.transitionsBetween(n, i), l = this.transitionsBetween(i, e), h = s, c = [i, e, r, n]; return ( h > o && ((h = o), (c[0] = e), (c[1] = r), (c[2] = n), (c[3] = i)), h > a && ((h = a), (c[0] = r), (c[1] = n), (c[2] = i), (c[3] = e)), h > l && ((c[0] = n), (c[1] = i), (c[2] = e), (c[3] = r)), c ); } detectSolid2(t) { let e = t[0], r = t[1], n = t[2], i = t[3], s = this.transitionsBetween(e, i), o = ce.shiftPoint(r, n, 4 * (s + 1)), a = ce.shiftPoint(n, r, 4 * (s + 1)); return ( this.transitionsBetween(o, e) < this.transitionsBetween(a, i) ? ((t[0] = e), (t[1] = r), (t[2] = n), (t[3] = i)) : ((t[0] = r), (t[1] = n), (t[2] = i), (t[3] = e)), t ); } correctTopRight(t) { let e = t[0], r = t[1], n = t[2], i = t[3], s = this.transitionsBetween(e, i), o = this.transitionsBetween(r, i), a = ce.shiftPoint(e, r, 4 * (o + 1)), l = ce.shiftPoint(n, r, 4 * (s + 1)); (s = this.transitionsBetween(a, i)), (o = this.transitionsBetween(l, i)); let h = new rt( i.getX() + (n.getX() - r.getX()) / (s + 1), i.getY() + (n.getY() - r.getY()) / (s + 1) ), c = new rt( i.getX() + (e.getX() - r.getX()) / (o + 1), i.getY() + (e.getY() - r.getY()) / (o + 1) ); return this.isValid(h) ? this.isValid(c) ? this.transitionsBetween(a, h) + this.transitionsBetween(l, h) > this.transitionsBetween(a, c) + this.transitionsBetween(l, c) ? h : c : h : this.isValid(c) ? c : null; } shiftToModuleCenter(t) { let e = t[0], r = t[1], n = t[2], i = t[3], s = this.transitionsBetween(e, i) + 1, o = this.transitionsBetween(n, i) + 1, a = ce.shiftPoint(e, r, 4 * o), l = ce.shiftPoint(n, r, 4 * s); 1 == (1 & (s = this.transitionsBetween(a, i) + 1)) && (s += 1), 1 == (1 & (o = this.transitionsBetween(l, i) + 1)) && (o += 1); let h, c, u = (e.getX() + r.getX() + n.getX() + i.getX()) / 4, d = (e.getY() + r.getY() + n.getY() + i.getY()) / 4; return ( (e = ce.moveAway(e, u, d)), (r = ce.moveAway(r, u, d)), (n = ce.moveAway(n, u, d)), (i = ce.moveAway(i, u, d)), (a = ce.shiftPoint(e, r, 4 * o)), (a = ce.shiftPoint(a, i, 4 * s)), (h = ce.shiftPoint(r, e, 4 * o)), (h = ce.shiftPoint(h, n, 4 * s)), (l = ce.shiftPoint(n, i, 4 * o)), (l = ce.shiftPoint(l, r, 4 * s)), (c = ce.shiftPoint(i, n, 4 * o)), [a, h, l, (c = ce.shiftPoint(c, e, 4 * s))] ); } isValid(t) { return ( t.getX() >= 0 && t.getX() < this.image.getWidth() && t.getY() > 0 && t.getY() < this.image.getHeight() ); } static sampleGrid(t, e, r, n, i, s, o) { return ht .getInstance() .sampleGrid( t, s, o, 0.5, 0.5, s - 0.5, 0.5, s - 0.5, o - 0.5, 0.5, o - 0.5, e.getX(), e.getY(), i.getX(), i.getY(), n.getX(), n.getY(), r.getX(), r.getY() ); } transitionsBetween(t, e) { let r = Math.trunc(t.getX()), n = Math.trunc(t.getY()), i = Math.trunc(e.getX()), s = Math.trunc(e.getY()), o = Math.abs(s - n) > Math.abs(i - r); if (o) { let t = r; (r = n), (n = t), (t = i), (i = s), (s = t); } let a = Math.abs(i - r), l = Math.abs(s - n), h = -a / 2, c = n < s ? 1 : -1, u = r < i ? 1 : -1, d = 0, g = this.image.get(o ? n : r, o ? r : n); for (let t = r, e = n; t !== i; t += u) { let r = this.image.get(o ? e : t, o ? t : e); if ((r !== g && (d++, (g = r)), (h += l) > 0)) { if (e === s) break; (e += c), (h -= a); } } return d; } } class ue { constructor() { this.decoder = new he(); } decode(t, e = null) { let r, n; if (null != e && e.has(C.PURE_BARCODE)) { const e = ue.extractPureBits(t.getBlackMatrix()); (r = this.decoder.decode(e)), (n = ue.NO_POINTS); } else { const e = new ce(t.getBlackMatrix()).detect(); (r = this.decoder.decode(e.getBits())), (n = e.getPoints()); } const i = r.getRawBytes(), s = new F( r.getText(), i, 8 * i.length, n, k.DATA_MATRIX, c.currentTimeMillis() ), o = r.getByteSegments(); null != o && s.putMetadata(W.BYTE_SEGMENTS, o); const a = r.getECLevel(); return null != a && s.putMetadata(W.ERROR_CORRECTION_LEVEL, a), s; } reset() {} static extractPureBits(t) { const e = t.getTopLeftOnBit(), r = t.getBottomRightOnBit(); if (null == e || null == r) throw new R(); const n = this.moduleSize(e, t); let i = e[1]; const s = r[1]; let o = e[0]; const a = (r[0] - o + 1) / n, l = (s - i + 1) / n; if (a <= 0 || l <= 0) throw new R(); const h = n / 2; (i += h), (o += h); const c = new T(a, l); for (let e = 0; e < l; e++) { const r = i + e * n; for (let i = 0; i < a; i++) t.get(o + i * n, r) && c.set(i, e); } return c; } static moduleSize(t, e) { const r = e.getWidth(); let n = t[0]; const i = t[1]; for (; n < r && e.get(n, i); ) n++; if (n === r) throw new R(); const s = n - t[0]; if (0 === s) throw new R(); return s; } } ue.NO_POINTS = []; !(function (t) { (t[(t.L = 0)] = "L"), (t[(t.M = 1)] = "M"), (t[(t.Q = 2)] = "Q"), (t[(t.H = 3)] = "H"); })(U || (U = {})); class de { constructor(t, e, r) { (this.value = t), (this.stringValue = e), (this.bits = r), de.FOR_BITS.set(r, this), de.FOR_VALUE.set(t, this); } getValue() { return this.value; } getBits() { return this.bits; } static fromString(t) { switch (t) { case "L": return de.L; case "M": return de.M; case "Q": return de.Q; case "H": return de.H; default: throw new s(t + "not available"); } } toString() { return this.stringValue; } equals(t) { if (!(t instanceof de)) return !1; const e = t; return this.value === e.value; } static forBits(t) { if (t < 0 || t >= de.FOR_BITS.size) throw new o(); return de.FOR_BITS.get(t); } } (de.FOR_BITS = new Map()), (de.FOR_VALUE = new Map()), (de.L = new de(U.L, "L", 1)), (de.M = new de(U.M, "M", 0)), (de.Q = new de(U.Q, "Q", 3)), (de.H = new de(U.H, "H", 2)); class ge { constructor(t) { (this.errorCorrectionLevel = de.forBits((t >> 3) & 3)), (this.dataMask = 7 & t); } static numBitsDiffering(t, e) { return f.bitCount(t ^ e); } static decodeFormatInformation(t, e) { const r = ge.doDecodeFormatInformation(t, e); return null !== r ? r : ge.doDecodeFormatInformation( t ^ ge.FORMAT_INFO_MASK_QR, e ^ ge.FORMAT_INFO_MASK_QR ); } static doDecodeFormatInformation(t, e) { let r = Number.MAX_SAFE_INTEGER, n = 0; for (const i of ge.FORMAT_INFO_DECODE_LOOKUP) { const s = i[0]; if (s === t || s === e) return new ge(i[1]); let o = ge.numBitsDiffering(t, s); o < r && ((n = i[1]), (r = o)), t !== e && (o = ge.numBitsDiffering(e, s)) < r && ((n = i[1]), (r = o)); } return r <= 3 ? new ge(n) : null; } getErrorCorrectionLevel() { return this.errorCorrectionLevel; } getDataMask() { return this.dataMask; } hashCode() { return (this.errorCorrectionLevel.getBits() << 3) | this.dataMask; } equals(t) { if (!(t instanceof ge)) return !1; const e = t; return ( this.errorCorrectionLevel === e.errorCorrectionLevel && this.dataMask === e.dataMask ); } } (ge.FORMAT_INFO_MASK_QR = 21522), (ge.FORMAT_INFO_DECODE_LOOKUP = [ Int32Array.from([21522, 0]), Int32Array.from([20773, 1]), Int32Array.from([24188, 2]), Int32Array.from([23371, 3]), Int32Array.from([17913, 4]), Int32Array.from([16590, 5]), Int32Array.from([20375, 6]), Int32Array.from([19104, 7]), Int32Array.from([30660, 8]), Int32Array.from([29427, 9]), Int32Array.from([32170, 10]), Int32Array.from([30877, 11]), Int32Array.from([26159, 12]), Int32Array.from([25368, 13]), Int32Array.from([27713, 14]), Int32Array.from([26998, 15]), Int32Array.from([5769, 16]), Int32Array.from([5054, 17]), Int32Array.from([7399, 18]), Int32Array.from([6608, 19]), Int32Array.from([1890, 20]), Int32Array.from([597, 21]), Int32Array.from([3340, 22]), Int32Array.from([2107, 23]), Int32Array.from([13663, 24]), Int32Array.from([12392, 25]), Int32Array.from([16177, 26]), Int32Array.from([14854, 27]), Int32Array.from([9396, 28]), Int32Array.from([8579, 29]), Int32Array.from([11994, 30]), Int32Array.from([11245, 31]), ]); class fe { constructor(t, ...e) { (this.ecCodewordsPerBlock = t), (this.ecBlocks = e); } getECCodewordsPerBlock() { return this.ecCodewordsPerBlock; } getNumBlocks() { let t = 0; const e = this.ecBlocks; for (const r of e) t += r.getCount(); return t; } getTotalECCodewords() { return this.ecCodewordsPerBlock * this.getNumBlocks(); } getECBlocks() { return this.ecBlocks; } } class we { constructor(t, e) { (this.count = t), (this.dataCodewords = e); } getCount() { return this.count; } getDataCodewords() { return this.dataCodewords; } } class Ae { constructor(t, e, ...r) { (this.versionNumber = t), (this.alignmentPatternCenters = e), (this.ecBlocks = r); let n = 0; const i = r[0].getECCodewordsPerBlock(), s = r[0].getECBlocks(); for (const t of s) n += t.getCount() * (t.getDataCodewords() + i); this.totalCodewords = n; } getVersionNumber() { return this.versionNumber; } getAlignmentPatternCenters() { return this.alignmentPatternCenters; } getTotalCodewords() { return this.totalCodewords; } getDimensionForVersion() { return 17 + 4 * this.versionNumber; } getECBlocksForLevel(t) { return this.ecBlocks[t.getValue()]; } static getProvisionalVersionForDimension(t) { if (t % 4 != 1) throw new E(); try { return this.getVersionForNumber((t - 17) / 4); } catch (t) { throw new E(); } } static getVersionForNumber(t) { if (t < 1 || t > 40) throw new o(); return Ae.VERSIONS[t - 1]; } static decodeVersionInformation(t) { let e = Number.MAX_SAFE_INTEGER, r = 0; for (let n = 0; n < Ae.VERSION_DECODE_INFO.length; n++) { const i = Ae.VERSION_DECODE_INFO[n]; if (i === t) return Ae.getVersionForNumber(n + 7); const s = ge.numBitsDiffering(t, i); s < e && ((r = n + 7), (e = s)); } return e <= 3 ? Ae.getVersionForNumber(r) : null; } buildFunctionPattern() { const t = this.getDimensionForVersion(), e = new T(t); e.setRegion(0, 0, 9, 9), e.setRegion(t - 8, 0, 8, 9), e.setRegion(0, t - 8, 9, 8); const r = this.alignmentPatternCenters.length; for (let t = 0; t < r; t++) { const n = this.alignmentPatternCenters[t] - 2; for (let i = 0; i < r; i++) (0 === t && (0 === i || i === r - 1)) || (t === r - 1 && 0 === i) || e.setRegion(this.alignmentPatternCenters[i] - 2, n, 5, 5); } return ( e.setRegion(6, 9, 1, t - 17), e.setRegion(9, 6, t - 17, 1), this.versionNumber > 6 && (e.setRegion(t - 11, 0, 3, 6), e.setRegion(0, t - 11, 6, 3)), e ); } toString() { return "" + this.versionNumber; } } (Ae.VERSION_DECODE_INFO = Int32Array.from([ 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, ])), (Ae.VERSIONS = [ new Ae( 1, new Int32Array(0), new fe(7, new we(1, 19)), new fe(10, new we(1, 16)), new fe(13, new we(1, 13)), new fe(17, new we(1, 9)) ), new Ae( 2, Int32Array.from([6, 18]), new fe(10, new we(1, 34)), new fe(16, new we(1, 28)), new fe(22, new we(1, 22)), new fe(28, new we(1, 16)) ), new Ae( 3, Int32Array.from([6, 22]), new fe(15, new we(1, 55)), new fe(26, new we(1, 44)), new fe(18, new we(2, 17)), new fe(22, new we(2, 13)) ), new Ae( 4, Int32Array.from([6, 26]), new fe(20, new we(1, 80)), new fe(18, new we(2, 32)), new fe(26, new we(2, 24)), new fe(16, new we(4, 9)) ), new Ae( 5, Int32Array.from([6, 30]), new fe(26, new we(1, 108)), new fe(24, new we(2, 43)), new fe(18, new we(2, 15), new we(2, 16)), new fe(22, new we(2, 11), new we(2, 12)) ), new Ae( 6, Int32Array.from([6, 34]), new fe(18, new we(2, 68)), new fe(16, new we(4, 27)), new fe(24, new we(4, 19)), new fe(28, new we(4, 15)) ), new Ae( 7, Int32Array.from([6, 22, 38]), new fe(20, new we(2, 78)), new fe(18, new we(4, 31)), new fe(18, new we(2, 14), new we(4, 15)), new fe(26, new we(4, 13), new we(1, 14)) ), new Ae( 8, Int32Array.from([6, 24, 42]), new fe(24, new we(2, 97)), new fe(22, new we(2, 38), new we(2, 39)), new fe(22, new we(4, 18), new we(2, 19)), new fe(26, new we(4, 14), new we(2, 15)) ), new Ae( 9, Int32Array.from([6, 26, 46]), new fe(30, new we(2, 116)), new fe(22, new we(3, 36), new we(2, 37)), new fe(20, new we(4, 16), new we(4, 17)), new fe(24, new we(4, 12), new we(4, 13)) ), new Ae( 10, Int32Array.from([6, 28, 50]), new fe(18, new we(2, 68), new we(2, 69)), new fe(26, new we(4, 43), new we(1, 44)), new fe(24, new we(6, 19), new we(2, 20)), new fe(28, new we(6, 15), new we(2, 16)) ), new Ae( 11, Int32Array.from([6, 30, 54]), new fe(20, new we(4, 81)), new fe(30, new we(1, 50), new we(4, 51)), new fe(28, new we(4, 22), new we(4, 23)), new fe(24, new we(3, 12), new we(8, 13)) ), new Ae( 12, Int32Array.from([6, 32, 58]), new fe(24, new we(2, 92), new we(2, 93)), new fe(22, new we(6, 36), new we(2, 37)), new fe(26, new we(4, 20), new we(6, 21)), new fe(28, new we(7, 14), new we(4, 15)) ), new Ae( 13, Int32Array.from([6, 34, 62]), new fe(26, new we(4, 107)), new fe(22, new we(8, 37), new we(1, 38)), new fe(24, new we(8, 20), new we(4, 21)), new fe(22, new we(12, 11), new we(4, 12)) ), new Ae( 14, Int32Array.from([6, 26, 46, 66]), new fe(30, new we(3, 115), new we(1, 116)), new fe(24, new we(4, 40), new we(5, 41)), new fe(20, new we(11, 16), new we(5, 17)), new fe(24, new we(11, 12), new we(5, 13)) ), new Ae( 15, Int32Array.from([6, 26, 48, 70]), new fe(22, new we(5, 87), new we(1, 88)), new fe(24, new we(5, 41), new we(5, 42)), new fe(30, new we(5, 24), new we(7, 25)), new fe(24, new we(11, 12), new we(7, 13)) ), new Ae( 16, Int32Array.from([6, 26, 50, 74]), new fe(24, new we(5, 98), new we(1, 99)), new fe(28, new we(7, 45), new we(3, 46)), new fe(24, new we(15, 19), new we(2, 20)), new fe(30, new we(3, 15), new we(13, 16)) ), new Ae( 17, Int32Array.from([6, 30, 54, 78]), new fe(28, new we(1, 107), new we(5, 108)), new fe(28, new we(10, 46), new we(1, 47)), new fe(28, new we(1, 22), new we(15, 23)), new fe(28, new we(2, 14), new we(17, 15)) ), new Ae( 18, Int32Array.from([6, 30, 56, 82]), new fe(30, new we(5, 120), new we(1, 121)), new fe(26, new we(9, 43), new we(4, 44)), new fe(28, new we(17, 22), new we(1, 23)), new fe(28, new we(2, 14), new we(19, 15)) ), new Ae( 19, Int32Array.from([6, 30, 58, 86]), new fe(28, new we(3, 113), new we(4, 114)), new fe(26, new we(3, 44), new we(11, 45)), new fe(26, new we(17, 21), new we(4, 22)), new fe(26, new we(9, 13), new we(16, 14)) ), new Ae( 20, Int32Array.from([6, 34, 62, 90]), new fe(28, new we(3, 107), new we(5, 108)), new fe(26, new we(3, 41), new we(13, 42)), new fe(30, new we(15, 24), new we(5, 25)), new fe(28, new we(15, 15), new we(10, 16)) ), new Ae( 21, Int32Array.from([6, 28, 50, 72, 94]), new fe(28, new we(4, 116), new we(4, 117)), new fe(26, new we(17, 42)), new fe(28, new we(17, 22), new we(6, 23)), new fe(30, new we(19, 16), new we(6, 17)) ), new Ae( 22, Int32Array.from([6, 26, 50, 74, 98]), new fe(28, new we(2, 111), new we(7, 112)), new fe(28, new we(17, 46)), new fe(30, new we(7, 24), new we(16, 25)), new fe(24, new we(34, 13)) ), new Ae( 23, Int32Array.from([6, 30, 54, 78, 102]), new fe(30, new we(4, 121), new we(5, 122)), new fe(28, new we(4, 47), new we(14, 48)), new fe(30, new we(11, 24), new we(14, 25)), new fe(30, new we(16, 15), new we(14, 16)) ), new Ae( 24, Int32Array.from([6, 28, 54, 80, 106]), new fe(30, new we(6, 117), new we(4, 118)), new fe(28, new we(6, 45), new we(14, 46)), new fe(30, new we(11, 24), new we(16, 25)), new fe(30, new we(30, 16), new we(2, 17)) ), new Ae( 25, Int32Array.from([6, 32, 58, 84, 110]), new fe(26, new we(8, 106), new we(4, 107)), new fe(28, new we(8, 47), new we(13, 48)), new fe(30, new we(7, 24), new we(22, 25)), new fe(30, new we(22, 15), new we(13, 16)) ), new Ae( 26, Int32Array.from([6, 30, 58, 86, 114]), new fe(28, new we(10, 114), new we(2, 115)), new fe(28, new we(19, 46), new we(4, 47)), new fe(28, new we(28, 22), new we(6, 23)), new fe(30, new we(33, 16), new we(4, 17)) ), new Ae( 27, Int32Array.from([6, 34, 62, 90, 118]), new fe(30, new we(8, 122), new we(4, 123)), new fe(28, new we(22, 45), new we(3, 46)), new fe(30, new we(8, 23), new we(26, 24)), new fe(30, new we(12, 15), new we(28, 16)) ), new Ae( 28, Int32Array.from([6, 26, 50, 74, 98, 122]), new fe(30, new we(3, 117), new we(10, 118)), new fe(28, new we(3, 45), new we(23, 46)), new fe(30, new we(4, 24), new we(31, 25)), new fe(30, new we(11, 15), new we(31, 16)) ), new Ae( 29, Int32Array.from([6, 30, 54, 78, 102, 126]), new fe(30, new we(7, 116), new we(7, 117)), new fe(28, new we(21, 45), new we(7, 46)), new fe(30, new we(1, 23), new we(37, 24)), new fe(30, new we(19, 15), new we(26, 16)) ), new Ae( 30, Int32Array.from([6, 26, 52, 78, 104, 130]), new fe(30, new we(5, 115), new we(10, 116)), new fe(28, new we(19, 47), new we(10, 48)), new fe(30, new we(15, 24), new we(25, 25)), new fe(30, new we(23, 15), new we(25, 16)) ), new Ae( 31, Int32Array.from([6, 30, 56, 82, 108, 134]), new fe(30, new we(13, 115), new we(3, 116)), new fe(28, new we(2, 46), new we(29, 47)), new fe(30, new we(42, 24), new we(1, 25)), new fe(30, new we(23, 15), new we(28, 16)) ), new Ae( 32, Int32Array.from([6, 34, 60, 86, 112, 138]), new fe(30, new we(17, 115)), new fe(28, new we(10, 46), new we(23, 47)), new fe(30, new we(10, 24), new we(35, 25)), new fe(30, new we(19, 15), new we(35, 16)) ), new Ae( 33, Int32Array.from([6, 30, 58, 86, 114, 142]), new fe(30, new we(17, 115), new we(1, 116)), new fe(28, new we(14, 46), new we(21, 47)), new fe(30, new we(29, 24), new we(19, 25)), new fe(30, new we(11, 15), new we(46, 16)) ), new Ae( 34, Int32Array.from([6, 34, 62, 90, 118, 146]), new fe(30, new we(13, 115), new we(6, 116)), new fe(28, new we(14, 46), new we(23, 47)), new fe(30, new we(44, 24), new we(7, 25)), new fe(30, new we(59, 16), new we(1, 17)) ), new Ae( 35, Int32Array.from([6, 30, 54, 78, 102, 126, 150]), new fe(30, new we(12, 121), new we(7, 122)), new fe(28, new we(12, 47), new we(26, 48)), new fe(30, new we(39, 24), new we(14, 25)), new fe(30, new we(22, 15), new we(41, 16)) ), new Ae( 36, Int32Array.from([6, 24, 50, 76, 102, 128, 154]), new fe(30, new we(6, 121), new we(14, 122)), new fe(28, new we(6, 47), new we(34, 48)), new fe(30, new we(46, 24), new we(10, 25)), new fe(30, new we(2, 15), new we(64, 16)) ), new Ae( 37, Int32Array.from([6, 28, 54, 80, 106, 132, 158]), new fe(30, new we(17, 122), new we(4, 123)), new fe(28, new we(29, 46), new we(14, 47)), new fe(30, new we(49, 24), new we(10, 25)), new fe(30, new we(24, 15), new we(46, 16)) ), new Ae( 38, Int32Array.from([6, 32, 58, 84, 110, 136, 162]), new fe(30, new we(4, 122), new we(18, 123)), new fe(28, new we(13, 46), new we(32, 47)), new fe(30, new we(48, 24), new we(14, 25)), new fe(30, new we(42, 15), new we(32, 16)) ), new Ae( 39, Int32Array.from([6, 26, 54, 82, 110, 138, 166]), new fe(30, new we(20, 117), new we(4, 118)), new fe(28, new we(40, 47), new we(7, 48)), new fe(30, new we(43, 24), new we(22, 25)), new fe(30, new we(10, 15), new we(67, 16)) ), new Ae( 40, Int32Array.from([6, 30, 58, 86, 114, 142, 170]), new fe(30, new we(19, 118), new we(6, 119)), new fe(28, new we(18, 47), new we(31, 48)), new fe(30, new we(34, 24), new we(34, 25)), new fe(30, new we(20, 15), new we(61, 16)) ), ]), (function (t) { (t[(t.DATA_MASK_000 = 0)] = "DATA_MASK_000"), (t[(t.DATA_MASK_001 = 1)] = "DATA_MASK_001"), (t[(t.DATA_MASK_010 = 2)] = "DATA_MASK_010"), (t[(t.DATA_MASK_011 = 3)] = "DATA_MASK_011"), (t[(t.DATA_MASK_100 = 4)] = "DATA_MASK_100"), (t[(t.DATA_MASK_101 = 5)] = "DATA_MASK_101"), (t[(t.DATA_MASK_110 = 6)] = "DATA_MASK_110"), (t[(t.DATA_MASK_111 = 7)] = "DATA_MASK_111"); })(H || (H = {})); class Ce { constructor(t, e) { (this.value = t), (this.isMasked = e); } unmaskBitMatrix(t, e) { for (let r = 0; r < e; r++) for (let n = 0; n < e; n++) this.isMasked(r, n) && t.flip(n, r); } } Ce.values = new Map([ [H.DATA_MASK_000, new Ce(H.DATA_MASK_000, (t, e) => 0 == ((t + e) & 1))], [H.DATA_MASK_001, new Ce(H.DATA_MASK_001, (t, e) => 0 == (1 & t))], [H.DATA_MASK_010, new Ce(H.DATA_MASK_010, (t, e) => e % 3 == 0)], [H.DATA_MASK_011, new Ce(H.DATA_MASK_011, (t, e) => (t + e) % 3 == 0)], [ H.DATA_MASK_100, new Ce( H.DATA_MASK_100, (t, e) => 0 == ((Math.floor(t / 2) + Math.floor(e / 3)) & 1) ), ], [H.DATA_MASK_101, new Ce(H.DATA_MASK_101, (t, e) => (t * e) % 6 == 0)], [H.DATA_MASK_110, new Ce(H.DATA_MASK_110, (t, e) => (t * e) % 6 < 3)], [ H.DATA_MASK_111, new Ce(H.DATA_MASK_111, (t, e) => 0 == ((t + e + ((t * e) % 3)) & 1)), ], ]); class Ee { constructor(t) { const e = t.getHeight(); if (e < 21 || 1 != (3 & e)) throw new E(); this.bitMatrix = t; } readFormatInformation() { if (null !== this.parsedFormatInfo && void 0 !== this.parsedFormatInfo) return this.parsedFormatInfo; let t = 0; for (let e = 0; e < 6; e++) t = this.copyBit(e, 8, t); (t = this.copyBit(7, 8, t)), (t = this.copyBit(8, 8, t)), (t = this.copyBit(8, 7, t)); for (let e = 5; e >= 0; e--) t = this.copyBit(8, e, t); const e = this.bitMatrix.getHeight(); let r = 0; const n = e - 7; for (let t = e - 1; t >= n; t--) r = this.copyBit(8, t, r); for (let t = e - 8; t < e; t++) r = this.copyBit(t, 8, r); if ( ((this.parsedFormatInfo = ge.decodeFormatInformation(t, r)), null !== this.parsedFormatInfo) ) return this.parsedFormatInfo; throw new E(); } readVersion() { if (null !== this.parsedVersion && void 0 !== this.parsedVersion) return this.parsedVersion; const t = this.bitMatrix.getHeight(), e = Math.floor((t - 17) / 4); if (e <= 6) return Ae.getVersionForNumber(e); let r = 0; const n = t - 11; for (let e = 5; e >= 0; e--) for (let i = t - 9; i >= n; i--) r = this.copyBit(i, e, r); let i = Ae.decodeVersionInformation(r); if (null !== i && i.getDimensionForVersion() === t) return (this.parsedVersion = i), i; r = 0; for (let e = 5; e >= 0; e--) for (let i = t - 9; i >= n; i--) r = this.copyBit(e, i, r); if ( null !== (i = Ae.decodeVersionInformation(r)) && i.getDimensionForVersion() === t ) return (this.parsedVersion = i), i; throw new E(); } copyBit(t, e, r) { return ( this.isMirror ? this.bitMatrix.get(e, t) : this.bitMatrix.get(t, e) ) ? (r << 1) | 1 : r << 1; } readCodewords() { const t = this.readFormatInformation(), e = this.readVersion(), r = Ce.values.get(t.getDataMask()), n = this.bitMatrix.getHeight(); r.unmaskBitMatrix(this.bitMatrix, n); const i = e.buildFunctionPattern(); let s = !0; const o = new Uint8Array(e.getTotalCodewords()); let a = 0, l = 0, h = 0; for (let t = n - 1; t > 0; t -= 2) { 6 === t && t--; for (let e = 0; e < n; e++) { const r = s ? n - 1 - e : e; for (let e = 0; e < 2; e++) i.get(t - e, r) || (h++, (l <<= 1), this.bitMatrix.get(t - e, r) && (l |= 1), 8 === h && ((o[a++] = l), (h = 0), (l = 0))); } s = !s; } if (a !== e.getTotalCodewords()) throw new E(); return o; } remask() { if (null === this.parsedFormatInfo) return; const t = Ce.values[this.parsedFormatInfo.getDataMask()], e = this.bitMatrix.getHeight(); t.unmaskBitMatrix(this.bitMatrix, e); } setMirror(t) { (this.parsedVersion = null), (this.parsedFormatInfo = null), (this.isMirror = t); } mirror() { const t = this.bitMatrix; for (let e = 0, r = t.getWidth(); e < r; e++) for (let r = e + 1, n = t.getHeight(); r < n; r++) t.get(e, r) !== t.get(r, e) && (t.flip(r, e), t.flip(e, r)); } } class me { constructor(t, e) { (this.numDataCodewords = t), (this.codewords = e); } static getDataBlocks(t, e, r) { if (t.length !== e.getTotalCodewords()) throw new o(); const n = e.getECBlocksForLevel(r); let i = 0; const s = n.getECBlocks(); for (const t of s) i += t.getCount(); const a = new Array(i); let l = 0; for (const t of s) for (let e = 0; e < t.getCount(); e++) { const e = t.getDataCodewords(), r = n.getECCodewordsPerBlock() + e; a[l++] = new me(e, new Uint8Array(r)); } const h = a[0].codewords.length; let c = a.length - 1; for (; c >= 0; ) { if (a[c].codewords.length === h) break; c--; } c++; const u = h - n.getECCodewordsPerBlock(); let d = 0; for (let e = 0; e < u; e++) for (let r = 0; r < l; r++) a[r].codewords[e] = t[d++]; for (let e = c; e < l; e++) a[e].codewords[u] = t[d++]; const g = a[0].codewords.length; for (let e = u; e < g; e++) for (let r = 0; r < l; r++) { const n = r < c ? e : e + 1; a[r].codewords[n] = t[d++]; } return a; } getNumDataCodewords() { return this.numDataCodewords; } getCodewords() { return this.codewords; } } !(function (t) { (t[(t.TERMINATOR = 0)] = "TERMINATOR"), (t[(t.NUMERIC = 1)] = "NUMERIC"), (t[(t.ALPHANUMERIC = 2)] = "ALPHANUMERIC"), (t[(t.STRUCTURED_APPEND = 3)] = "STRUCTURED_APPEND"), (t[(t.BYTE = 4)] = "BYTE"), (t[(t.ECI = 5)] = "ECI"), (t[(t.KANJI = 6)] = "KANJI"), (t[(t.FNC1_FIRST_POSITION = 7)] = "FNC1_FIRST_POSITION"), (t[(t.FNC1_SECOND_POSITION = 8)] = "FNC1_SECOND_POSITION"), (t[(t.HANZI = 9)] = "HANZI"); })(G || (G = {})); class _e { constructor(t, e, r, n) { (this.value = t), (this.stringValue = e), (this.characterCountBitsForVersions = r), (this.bits = n), _e.FOR_BITS.set(n, this), _e.FOR_VALUE.set(t, this); } static forBits(t) { const e = _e.FOR_BITS.get(t); if (void 0 === e) throw new o(); return e; } getCharacterCountBits(t) { const e = t.getVersionNumber(); let r; return ( (r = e <= 9 ? 0 : e <= 26 ? 1 : 2), this.characterCountBitsForVersions[r] ); } getValue() { return this.value; } getBits() { return this.bits; } equals(t) { if (!(t instanceof _e)) return !1; const e = t; return this.value === e.value; } toString() { return this.stringValue; } } (_e.FOR_BITS = new Map()), (_e.FOR_VALUE = new Map()), (_e.TERMINATOR = new _e( G.TERMINATOR, "TERMINATOR", Int32Array.from([0, 0, 0]), 0 )), (_e.NUMERIC = new _e( G.NUMERIC, "NUMERIC", Int32Array.from([10, 12, 14]), 1 )), (_e.ALPHANUMERIC = new _e( G.ALPHANUMERIC, "ALPHANUMERIC", Int32Array.from([9, 11, 13]), 2 )), (_e.STRUCTURED_APPEND = new _e( G.STRUCTURED_APPEND, "STRUCTURED_APPEND", Int32Array.from([0, 0, 0]), 3 )), (_e.BYTE = new _e(G.BYTE, "BYTE", Int32Array.from([8, 16, 16]), 4)), (_e.ECI = new _e(G.ECI, "ECI", Int32Array.from([0, 0, 0]), 7)), (_e.KANJI = new _e(G.KANJI, "KANJI", Int32Array.from([8, 10, 12]), 8)), (_e.FNC1_FIRST_POSITION = new _e( G.FNC1_FIRST_POSITION, "FNC1_FIRST_POSITION", Int32Array.from([0, 0, 0]), 5 )), (_e.FNC1_SECOND_POSITION = new _e( G.FNC1_SECOND_POSITION, "FNC1_SECOND_POSITION", Int32Array.from([0, 0, 0]), 9 )), (_e.HANZI = new _e(G.HANZI, "HANZI", Int32Array.from([8, 10, 12]), 13)); class Ie { static decode(t, e, r, n) { const i = new ae(t); let s = new p(); const o = new Array(); let a = -1, l = -1; try { let t, r = null, h = !1; do { if (i.available() < 4) t = _e.TERMINATOR; else { const e = i.readBits(4); t = _e.forBits(e); } switch (t) { case _e.TERMINATOR: break; case _e.FNC1_FIRST_POSITION: case _e.FNC1_SECOND_POSITION: h = !0; break; case _e.STRUCTURED_APPEND: if (i.available() < 16) throw new E(); (a = i.readBits(8)), (l = i.readBits(8)); break; case _e.ECI: const c = Ie.parseECIValue(i); if (null === (r = m.getCharacterSetECIByValue(c))) throw new E(); break; case _e.HANZI: const u = i.readBits(4), d = i.readBits(t.getCharacterCountBits(e)); u === Ie.GB2312_SUBSET && Ie.decodeHanziSegment(i, s, d); break; default: const g = i.readBits(t.getCharacterCountBits(e)); switch (t) { case _e.NUMERIC: Ie.decodeNumericSegment(i, s, g); break; case _e.ALPHANUMERIC: Ie.decodeAlphanumericSegment(i, s, g, h); break; case _e.BYTE: Ie.decodeByteSegment(i, s, g, r, o, n); break; case _e.KANJI: Ie.decodeKanjiSegment(i, s, g); break; default: throw new E(); } } } while (t !== _e.TERMINATOR); } catch (t) { throw new E(); } return new z( t, s.toString(), 0 === o.length ? null : o, null === r ? null : r.toString(), a, l ); } static decodeHanziSegment(t, e, r) { if (13 * r > t.available()) throw new E(); const n = new Uint8Array(2 * r); let i = 0; for (; r > 0; ) { const e = t.readBits(13); let s = (((e / 96) << 8) & 4294967295) | e % 96; (s += s < 959 ? 41377 : 42657), (n[i] = (s >> 8) & 255), (n[i + 1] = 255 & s), (i += 2), r--; } try { e.append(I.decode(n, S.GB2312)); } catch (t) { throw new E(t); } } static decodeKanjiSegment(t, e, r) { if (13 * r > t.available()) throw new E(); const n = new Uint8Array(2 * r); let i = 0; for (; r > 0; ) { const e = t.readBits(13); let s = (((e / 192) << 8) & 4294967295) | e % 192; (s += s < 7936 ? 33088 : 49472), (n[i] = s >> 8), (n[i + 1] = s), (i += 2), r--; } try { e.append(I.decode(n, S.SHIFT_JIS)); } catch (t) { throw new E(t); } } static decodeByteSegment(t, e, r, n, i, s) { if (8 * r > t.available()) throw new E(); const o = new Uint8Array(r); for (let e = 0; e < r; e++) o[e] = t.readBits(8); let a; a = null === n ? S.guessEncoding(o, s) : n.getName(); try { e.append(I.decode(o, a)); } catch (t) { throw new E(t); } i.push(o); } static toAlphaNumericChar(t) { if (t >= Ie.ALPHANUMERIC_CHARS.length) throw new E(); return Ie.ALPHANUMERIC_CHARS[t]; } static decodeAlphanumericSegment(t, e, r, n) { const i = e.length(); for (; r > 1; ) { if (t.available() < 11) throw new E(); const n = t.readBits(11); e.append(Ie.toAlphaNumericChar(Math.floor(n / 45))), e.append(Ie.toAlphaNumericChar(n % 45)), (r -= 2); } if (1 === r) { if (t.available() < 6) throw new E(); e.append(Ie.toAlphaNumericChar(t.readBits(6))); } if (n) for (let t = i; t < e.length(); t++) "%" === e.charAt(t) && (t < e.length() - 1 && "%" === e.charAt(t + 1) ? e.deleteCharAt(t + 1) : e.setCharAt(t, String.fromCharCode(29))); } static decodeNumericSegment(t, e, r) { for (; r >= 3; ) { if (t.available() < 10) throw new E(); const n = t.readBits(10); if (n >= 1e3) throw new E(); e.append(Ie.toAlphaNumericChar(Math.floor(n / 100))), e.append(Ie.toAlphaNumericChar(Math.floor(n / 10) % 10)), e.append(Ie.toAlphaNumericChar(n % 10)), (r -= 3); } if (2 === r) { if (t.available() < 7) throw new E(); const r = t.readBits(7); if (r >= 100) throw new E(); e.append(Ie.toAlphaNumericChar(Math.floor(r / 10))), e.append(Ie.toAlphaNumericChar(r % 10)); } else if (1 === r) { if (t.available() < 4) throw new E(); const r = t.readBits(4); if (r >= 10) throw new E(); e.append(Ie.toAlphaNumericChar(r)); } } static parseECIValue(t) { const e = t.readBits(8); if (0 == (128 & e)) return 127 & e; if (128 == (192 & e)) { return (((63 & e) << 8) & 4294967295) | t.readBits(8); } if (192 == (224 & e)) { return (((31 & e) << 16) & 4294967295) | t.readBits(16); } throw new E(); } } (Ie.ALPHANUMERIC_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"), (Ie.GB2312_SUBSET = 1); class Se { constructor(t) { this.mirrored = t; } isMirrored() { return this.mirrored; } applyMirroredCorrection(t) { if (!this.mirrored || null === t || t.length < 3) return; const e = t[0]; (t[0] = t[2]), (t[2] = e); } } class pe { constructor() { this.rsDecoder = new J(q.QR_CODE_FIELD_256); } decodeBooleanArray(t, e) { return this.decodeBitMatrix(T.parseFromBooleanArray(t), e); } decodeBitMatrix(t, e) { const r = new Ee(t); let n = null; try { return this.decodeBitMatrixParser(r, e); } catch (t) { n = t; } try { r.remask(), r.setMirror(!0), r.readVersion(), r.readFormatInformation(), r.mirror(); const t = this.decodeBitMatrixParser(r, e); return t.setOther(new Se(!0)), t; } catch (t) { if (null !== n) throw n; throw t; } } decodeBitMatrixParser(t, e) { const r = t.readVersion(), n = t.readFormatInformation().getErrorCorrectionLevel(), i = t.readCodewords(), s = me.getDataBlocks(i, r, n); let o = 0; for (const t of s) o += t.getNumDataCodewords(); const a = new Uint8Array(o); let l = 0; for (const t of s) { const e = t.getCodewords(), r = t.getNumDataCodewords(); this.correctErrors(e, r); for (let t = 0; t < r; t++) a[l++] = e[t]; } return Ie.decode(a, r, n, e); } correctErrors(t, e) { const r = new Int32Array(t); try { this.rsDecoder.decode(r, t.length - e); } catch (t) { throw new l(); } for (let n = 0; n < e; n++) t[n] = r[n]; } } class Te extends rt { constructor(t, e, r) { super(t, e), (this.estimatedModuleSize = r); } aboutEquals(t, e, r) { if (Math.abs(e - this.getY()) <= t && Math.abs(r - this.getX()) <= t) { const e = Math.abs(t - this.estimatedModuleSize); return e <= 1 || e <= this.estimatedModuleSize; } return !1; } combineEstimate(t, e, r) { const n = (this.getX() + e) / 2, i = (this.getY() + t) / 2, s = (this.estimatedModuleSize + r) / 2; return new Te(n, i, s); } } class Re { constructor(t, e, r, n, i, s, o) { (this.image = t), (this.startX = e), (this.startY = r), (this.width = n), (this.height = i), (this.moduleSize = s), (this.resultPointCallback = o), (this.possibleCenters = []), (this.crossCheckStateCount = new Int32Array(3)); } find() { const t = this.startX, e = this.height, r = t + this.width, n = this.startY + e / 2, i = new Int32Array(3), s = this.image; for (let o = 0; o < e; o++) { const e = n + (0 == (1 & o) ? Math.floor((o + 1) / 2) : -Math.floor((o + 1) / 2)); (i[0] = 0), (i[1] = 0), (i[2] = 0); let a = t; for (; a < r && !s.get(a, e); ) a++; let l = 0; for (; a < r; ) { if (s.get(a, e)) if (1 === l) i[1]++; else if (2 === l) { if (this.foundPatternCross(i)) { const t = this.handlePossibleCenter(i, e, a); if (null !== t) return t; } (i[0] = i[2]), (i[1] = 1), (i[2] = 0), (l = 1); } else i[++l]++; else 1 === l && l++, i[l]++; a++; } if (this.foundPatternCross(i)) { const t = this.handlePossibleCenter(i, e, r); if (null !== t) return t; } } if (0 !== this.possibleCenters.length) return this.possibleCenters[0]; throw new R(); } static centerFromEnd(t, e) { return e - t[2] - t[1] / 2; } foundPatternCross(t) { const e = this.moduleSize, r = e / 2; for (let n = 0; n < 3; n++) if (Math.abs(e - t[n]) >= r) return !1; return !0; } crossCheckVertical(t, e, r, n) { const i = this.image, s = i.getHeight(), o = this.crossCheckStateCount; (o[0] = 0), (o[1] = 0), (o[2] = 0); let a = t; for (; a >= 0 && i.get(e, a) && o[1] <= r; ) o[1]++, a--; if (a < 0 || o[1] > r) return NaN; for (; a >= 0 && !i.get(e, a) && o[0] <= r; ) o[0]++, a--; if (o[0] > r) return NaN; for (a = t + 1; a < s && i.get(e, a) && o[1] <= r; ) o[1]++, a++; if (a === s || o[1] > r) return NaN; for (; a < s && !i.get(e, a) && o[2] <= r; ) o[2]++, a++; if (o[2] > r) return NaN; const l = o[0] + o[1] + o[2]; return 5 * Math.abs(l - n) >= 2 * n ? NaN : this.foundPatternCross(o) ? Re.centerFromEnd(o, a) : NaN; } handlePossibleCenter(t, e, r) { const n = t[0] + t[1] + t[2], i = Re.centerFromEnd(t, r), s = this.crossCheckVertical(e, i, 2 * t[1], n); if (!isNaN(s)) { const e = (t[0] + t[1] + t[2]) / 3; for (const t of this.possibleCenters) if (t.aboutEquals(e, s, i)) return t.combineEstimate(s, i, e); const r = new Te(i, s, e); this.possibleCenters.push(r), null !== this.resultPointCallback && void 0 !== this.resultPointCallback && this.resultPointCallback.foundPossibleResultPoint(r); } return null; } } class Ne extends rt { constructor(t, e, r, n) { super(t, e), (this.estimatedModuleSize = r), (this.count = n), void 0 === n && (this.count = 1); } getEstimatedModuleSize() { return this.estimatedModuleSize; } getCount() { return this.count; } aboutEquals(t, e, r) { if (Math.abs(e - this.getY()) <= t && Math.abs(r - this.getX()) <= t) { const e = Math.abs(t - this.estimatedModuleSize); return e <= 1 || e <= this.estimatedModuleSize; } return !1; } combineEstimate(t, e, r) { const n = this.count + 1, i = (this.count * this.getX() + e) / n, s = (this.count * this.getY() + t) / n, o = (this.count * this.estimatedModuleSize + r) / n; return new Ne(i, s, o, n); } } class De { constructor(t) { (this.bottomLeft = t[0]), (this.topLeft = t[1]), (this.topRight = t[2]); } getBottomLeft() { return this.bottomLeft; } getTopLeft() { return this.topLeft; } getTopRight() { return this.topRight; } } class ye { constructor(t, e) { (this.image = t), (this.resultPointCallback = e), (this.possibleCenters = []), (this.crossCheckStateCount = new Int32Array(5)), (this.resultPointCallback = e); } getImage() { return this.image; } getPossibleCenters() { return this.possibleCenters; } find(t) { const e = null != t && void 0 !== t.get(C.TRY_HARDER), r = null != t && void 0 !== t.get(C.PURE_BARCODE), n = this.image, i = n.getHeight(), s = n.getWidth(); let o = Math.floor((3 * i) / (4 * ye.MAX_MODULES)); (o < ye.MIN_SKIP || e) && (o = ye.MIN_SKIP); let a = !1; const l = new Int32Array(5); for (let t = o - 1; t < i && !a; t += o) { (l[0] = 0), (l[1] = 0), (l[2] = 0), (l[3] = 0), (l[4] = 0); let e = 0; for (let i = 0; i < s; i++) if (n.get(i, t)) 1 == (1 & e) && e++, l[e]++; else if (0 == (1 & e)) if (4 === e) if (ye.foundPatternCross(l)) { if (!0 !== this.handlePossibleCenter(l, t, i, r)) { (l[0] = l[2]), (l[1] = l[3]), (l[2] = l[4]), (l[3] = 1), (l[4] = 0), (e = 3); continue; } if (((o = 2), !0 === this.hasSkipped)) a = this.haveMultiplyConfirmedCenters(); else { const e = this.findRowSkip(); e > l[2] && ((t += e - l[2] - o), (i = s - 1)); } (e = 0), (l[0] = 0), (l[1] = 0), (l[2] = 0), (l[3] = 0), (l[4] = 0); } else (l[0] = l[2]), (l[1] = l[3]), (l[2] = l[4]), (l[3] = 1), (l[4] = 0), (e = 3); else l[++e]++; else l[e]++; if (ye.foundPatternCross(l)) { !0 === this.handlePossibleCenter(l, t, s, r) && ((o = l[0]), this.hasSkipped && (a = this.haveMultiplyConfirmedCenters())); } } const h = this.selectBestPatterns(); return rt.orderBestPatterns(h), new De(h); } static centerFromEnd(t, e) { return e - t[4] - t[3] - t[2] / 2; } static foundPatternCross(t) { let e = 0; for (let r = 0; r < 5; r++) { const n = t[r]; if (0 === n) return !1; e += n; } if (e < 7) return !1; const r = e / 7, n = r / 2; return ( Math.abs(r - t[0]) < n && Math.abs(r - t[1]) < n && Math.abs(3 * r - t[2]) < 3 * n && Math.abs(r - t[3]) < n && Math.abs(r - t[4]) < n ); } getCrossCheckStateCount() { const t = this.crossCheckStateCount; return (t[0] = 0), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 0), t; } crossCheckDiagonal(t, e, r, n) { const i = this.getCrossCheckStateCount(); let s = 0; const o = this.image; for (; t >= s && e >= s && o.get(e - s, t - s); ) i[2]++, s++; if (t < s || e < s) return !1; for (; t >= s && e >= s && !o.get(e - s, t - s) && i[1] <= r; ) i[1]++, s++; if (t < s || e < s || i[1] > r) return !1; for (; t >= s && e >= s && o.get(e - s, t - s) && i[0] <= r; ) i[0]++, s++; if (i[0] > r) return !1; const a = o.getHeight(), l = o.getWidth(); for (s = 1; t + s < a && e + s < l && o.get(e + s, t + s); ) i[2]++, s++; if (t + s >= a || e + s >= l) return !1; for (; t + s < a && e + s < l && !o.get(e + s, t + s) && i[3] < r; ) i[3]++, s++; if (t + s >= a || e + s >= l || i[3] >= r) return !1; for (; t + s < a && e + s < l && o.get(e + s, t + s) && i[4] < r; ) i[4]++, s++; if (i[4] >= r) return !1; const h = i[0] + i[1] + i[2] + i[3] + i[4]; return Math.abs(h - n) < 2 * n && ye.foundPatternCross(i); } crossCheckVertical(t, e, r, n) { const i = this.image, s = i.getHeight(), o = this.getCrossCheckStateCount(); let a = t; for (; a >= 0 && i.get(e, a); ) o[2]++, a--; if (a < 0) return NaN; for (; a >= 0 && !i.get(e, a) && o[1] <= r; ) o[1]++, a--; if (a < 0 || o[1] > r) return NaN; for (; a >= 0 && i.get(e, a) && o[0] <= r; ) o[0]++, a--; if (o[0] > r) return NaN; for (a = t + 1; a < s && i.get(e, a); ) o[2]++, a++; if (a === s) return NaN; for (; a < s && !i.get(e, a) && o[3] < r; ) o[3]++, a++; if (a === s || o[3] >= r) return NaN; for (; a < s && i.get(e, a) && o[4] < r; ) o[4]++, a++; if (o[4] >= r) return NaN; const l = o[0] + o[1] + o[2] + o[3] + o[4]; return 5 * Math.abs(l - n) >= 2 * n ? NaN : ye.foundPatternCross(o) ? ye.centerFromEnd(o, a) : NaN; } crossCheckHorizontal(t, e, r, n) { const i = this.image, s = i.getWidth(), o = this.getCrossCheckStateCount(); let a = t; for (; a >= 0 && i.get(a, e); ) o[2]++, a--; if (a < 0) return NaN; for (; a >= 0 && !i.get(a, e) && o[1] <= r; ) o[1]++, a--; if (a < 0 || o[1] > r) return NaN; for (; a >= 0 && i.get(a, e) && o[0] <= r; ) o[0]++, a--; if (o[0] > r) return NaN; for (a = t + 1; a < s && i.get(a, e); ) o[2]++, a++; if (a === s) return NaN; for (; a < s && !i.get(a, e) && o[3] < r; ) o[3]++, a++; if (a === s || o[3] >= r) return NaN; for (; a < s && i.get(a, e) && o[4] < r; ) o[4]++, a++; if (o[4] >= r) return NaN; const l = o[0] + o[1] + o[2] + o[3] + o[4]; return 5 * Math.abs(l - n) >= n ? NaN : ye.foundPatternCross(o) ? ye.centerFromEnd(o, a) : NaN; } handlePossibleCenter(t, e, r, n) { const i = t[0] + t[1] + t[2] + t[3] + t[4]; let s = ye.centerFromEnd(t, r), o = this.crossCheckVertical(e, Math.floor(s), t[2], i); if ( !isNaN(o) && ((s = this.crossCheckHorizontal(Math.floor(s), Math.floor(o), t[2], i)), !isNaN(s) && (!n || this.crossCheckDiagonal(Math.floor(o), Math.floor(s), t[2], i))) ) { const t = i / 7; let e = !1; const r = this.possibleCenters; for (let n = 0, i = r.length; n < i; n++) { const i = r[n]; if (i.aboutEquals(t, o, s)) { (r[n] = i.combineEstimate(o, s, t)), (e = !0); break; } } if (!e) { const e = new Ne(s, o, t); r.push(e), null !== this.resultPointCallback && void 0 !== this.resultPointCallback && this.resultPointCallback.foundPossibleResultPoint(e); } return !0; } return !1; } findRowSkip() { if (this.possibleCenters.length <= 1) return 0; let t = null; for (const e of this.possibleCenters) if (e.getCount() >= ye.CENTER_QUORUM) { if (null != t) return ( (this.hasSkipped = !0), Math.floor( (Math.abs(t.getX() - e.getX()) - Math.abs(t.getY() - e.getY())) / 2 ) ); t = e; } return 0; } haveMultiplyConfirmedCenters() { let t = 0, e = 0; const r = this.possibleCenters.length; for (const r of this.possibleCenters) r.getCount() >= ye.CENTER_QUORUM && (t++, (e += r.getEstimatedModuleSize())); if (t < 3) return !1; const n = e / r; let i = 0; for (const t of this.possibleCenters) i += Math.abs(t.getEstimatedModuleSize() - n); return i <= 0.05 * e; } selectBestPatterns() { const t = this.possibleCenters.length; if (t < 3) throw new R(); const e = this.possibleCenters; let r; if (t > 3) { let n = 0, i = 0; for (const t of this.possibleCenters) { const e = t.getEstimatedModuleSize(); (n += e), (i += e * e); } r = n / t; let s = Math.sqrt(i / t - r * r); e.sort((t, e) => { const n = Math.abs(e.getEstimatedModuleSize() - r), i = Math.abs(t.getEstimatedModuleSize() - r); return n < i ? -1 : n > i ? 1 : 0; }); const o = Math.max(0.2 * r, s); for (let t = 0; t < e.length && e.length > 3; t++) { const n = e[t]; Math.abs(n.getEstimatedModuleSize() - r) > o && (e.splice(t, 1), t--); } } if (e.length > 3) { let t = 0; for (const r of e) t += r.getEstimatedModuleSize(); (r = t / e.length), e.sort((t, e) => { if (e.getCount() === t.getCount()) { const n = Math.abs(e.getEstimatedModuleSize() - r), i = Math.abs(t.getEstimatedModuleSize() - r); return n < i ? 1 : n > i ? -1 : 0; } return e.getCount() - t.getCount(); }), e.splice(3); } return [e[0], e[1], e[2]]; } } (ye.CENTER_QUORUM = 2), (ye.MIN_SKIP = 3), (ye.MAX_MODULES = 57); class Oe { constructor(t) { this.image = t; } getImage() { return this.image; } getResultPointCallback() { return this.resultPointCallback; } detect(t) { this.resultPointCallback = null == t ? null : t.get(C.NEED_RESULT_POINT_CALLBACK); const e = new ye(this.image, this.resultPointCallback).find(t); return this.processFinderPatternInfo(e); } processFinderPatternInfo(t) { const e = t.getTopLeft(), r = t.getTopRight(), n = t.getBottomLeft(), i = this.calculateModuleSize(e, r, n); if (i < 1) throw new R("No pattern found in proccess finder."); const s = Oe.computeDimension(e, r, n, i), o = Ae.getProvisionalVersionForDimension(s), a = o.getDimensionForVersion() - 7; let l = null; if (o.getAlignmentPatternCenters().length > 0) { const t = r.getX() - e.getX() + n.getX(), s = r.getY() - e.getY() + n.getY(), o = 1 - 3 / a, h = Math.floor(e.getX() + o * (t - e.getX())), c = Math.floor(e.getY() + o * (s - e.getY())); for (let t = 4; t <= 16; t <<= 1) try { l = this.findAlignmentInRegion(i, h, c, t); break; } catch (t) { if (!(t instanceof R)) throw t; } } const h = Oe.createTransform(e, r, n, l, s), c = Oe.sampleGrid(this.image, h, s); let u; return new nt(c, (u = null === l ? [n, e, r] : [n, e, r, l])); } static createTransform(t, e, r, n, i) { const s = i - 3.5; let o, a, l, h; return ( null !== n ? ((o = n.getX()), (a = n.getY()), (h = l = s - 3)) : ((o = e.getX() - t.getX() + r.getX()), (a = e.getY() - t.getY() + r.getY()), (l = s), (h = s)), at.quadrilateralToQuadrilateral( 3.5, 3.5, s, 3.5, l, h, 3.5, s, t.getX(), t.getY(), e.getX(), e.getY(), o, a, r.getX(), r.getY() ) ); } static sampleGrid(t, e, r) { return ht.getInstance().sampleGridWithTransform(t, r, r, e); } static computeDimension(t, e, r, n) { const i = tt.round(rt.distance(t, e) / n), s = tt.round(rt.distance(t, r) / n); let o = Math.floor((i + s) / 2) + 7; switch (3 & o) { case 0: o++; break; case 2: o--; break; case 3: throw new R("Dimensions could be not found."); } return o; } calculateModuleSize(t, e, r) { return ( (this.calculateModuleSizeOneWay(t, e) + this.calculateModuleSizeOneWay(t, r)) / 2 ); } calculateModuleSizeOneWay(t, e) { const r = this.sizeOfBlackWhiteBlackRunBothWays( Math.floor(t.getX()), Math.floor(t.getY()), Math.floor(e.getX()), Math.floor(e.getY()) ), n = this.sizeOfBlackWhiteBlackRunBothWays( Math.floor(e.getX()), Math.floor(e.getY()), Math.floor(t.getX()), Math.floor(t.getY()) ); return isNaN(r) ? n / 7 : isNaN(n) ? r / 7 : (r + n) / 14; } sizeOfBlackWhiteBlackRunBothWays(t, e, r, n) { let i = this.sizeOfBlackWhiteBlackRun(t, e, r, n), s = 1, o = t - (r - t); o < 0 ? ((s = t / (t - o)), (o = 0)) : o >= this.image.getWidth() && ((s = (this.image.getWidth() - 1 - t) / (o - t)), (o = this.image.getWidth() - 1)); let a = Math.floor(e - (n - e) * s); return ( (s = 1), a < 0 ? ((s = e / (e - a)), (a = 0)) : a >= this.image.getHeight() && ((s = (this.image.getHeight() - 1 - e) / (a - e)), (a = this.image.getHeight() - 1)), (o = Math.floor(t + (o - t) * s)), (i += this.sizeOfBlackWhiteBlackRun(t, e, o, a)) - 1 ); } sizeOfBlackWhiteBlackRun(t, e, r, n) { const i = Math.abs(n - e) > Math.abs(r - t); if (i) { let i = t; (t = e), (e = i), (i = r), (r = n), (n = i); } const s = Math.abs(r - t), o = Math.abs(n - e); let a = -s / 2; const l = t < r ? 1 : -1, h = e < n ? 1 : -1; let c = 0; const u = r + l; for (let r = t, d = e; r !== u; r += l) { const l = i ? d : r, u = i ? r : d; if ((1 === c) === this.image.get(l, u)) { if (2 === c) return tt.distance(r, d, t, e); c++; } if ((a += o) > 0) { if (d === n) break; (d += h), (a -= s); } } return 2 === c ? tt.distance(r + l, n, t, e) : NaN; } findAlignmentInRegion(t, e, r, n) { const i = Math.floor(n * t), s = Math.max(0, e - i), o = Math.min(this.image.getWidth() - 1, e + i); if (o - s < 3 * t) throw new R("Alignment top exceeds estimated module size."); const a = Math.max(0, r - i), l = Math.min(this.image.getHeight() - 1, r + i); if (l - a < 3 * t) throw new R("Alignment bottom exceeds estimated module size."); return new Re( this.image, s, a, o - s, l - a, t, this.resultPointCallback ).find(); } } class Me { constructor() { this.decoder = new pe(); } getDecoder() { return this.decoder; } decode(t, e) { let r, n; if (null != e && void 0 !== e.get(C.PURE_BARCODE)) { const i = Me.extractPureBits(t.getBlackMatrix()); (r = this.decoder.decodeBitMatrix(i, e)), (n = Me.NO_POINTS); } else { const i = new Oe(t.getBlackMatrix()).detect(e); (r = this.decoder.decodeBitMatrix(i.getBits(), e)), (n = i.getPoints()); } r.getOther() instanceof Se && r.getOther().applyMirroredCorrection(n); const i = new F( r.getText(), r.getRawBytes(), void 0, n, k.QR_CODE, void 0 ), s = r.getByteSegments(); null !== s && i.putMetadata(W.BYTE_SEGMENTS, s); const o = r.getECLevel(); return ( null !== o && i.putMetadata(W.ERROR_CORRECTION_LEVEL, o), r.hasStructuredAppend() && (i.putMetadata( W.STRUCTURED_APPEND_SEQUENCE, r.getStructuredAppendSequenceNumber() ), i.putMetadata( W.STRUCTURED_APPEND_PARITY, r.getStructuredAppendParity() )), i ); } reset() {} static extractPureBits(t) { const e = t.getTopLeftOnBit(), r = t.getBottomRightOnBit(); if (null === e || null === r) throw new R(); const n = this.moduleSize(e, t); let i = e[1], s = r[1], o = e[0], a = r[0]; if (o >= a || i >= s) throw new R(); if (s - i != a - o && (a = o + (s - i)) >= t.getWidth()) throw new R(); const l = Math.round((a - o + 1) / n), h = Math.round((s - i + 1) / n); if (l <= 0 || h <= 0) throw new R(); if (h !== l) throw new R(); const c = Math.floor(n / 2); i += c; const u = (o += c) + Math.floor((l - 1) * n) - a; if (u > 0) { if (u > c) throw new R(); o -= u; } const d = i + Math.floor((h - 1) * n) - s; if (d > 0) { if (d > c) throw new R(); i -= d; } const g = new T(l, h); for (let e = 0; e < h; e++) { const r = i + Math.floor(e * n); for (let i = 0; i < l; i++) t.get(o + Math.floor(i * n), r) && g.set(i, e); } return g; } static moduleSize(t, e) { const r = e.getHeight(), n = e.getWidth(); let i = t[0], s = t[1], o = !0, a = 0; for (; i < n && s < r; ) { if (o !== e.get(i, s)) { if (5 == ++a) break; o = !o; } i++, s++; } if (i === n || s === r) throw new R(); return (i - t[0]) / 7; } } Me.NO_POINTS = new Array(); class be { PDF417Common() {} static getBitCountSum(t) { return tt.sum(t); } static toIntArray(t) { if (null == t || !t.length) return be.EMPTY_INT_ARRAY; const e = new Int32Array(t.length); let r = 0; for (const n of t) e[r++] = n; return e; } static getCodeword(t) { const e = g.binarySearch(be.SYMBOL_TABLE, 262143 & t); return e < 0 ? -1 : (be.CODEWORD_TABLE[e] - 1) % be.NUMBER_OF_CODEWORDS; } } (be.NUMBER_OF_CODEWORDS = 929), (be.MAX_CODEWORDS_IN_BARCODE = be.NUMBER_OF_CODEWORDS - 1), (be.MIN_ROWS_IN_BARCODE = 3), (be.MAX_ROWS_IN_BARCODE = 90), (be.MODULES_IN_CODEWORD = 17), (be.MODULES_IN_STOP_PATTERN = 18), (be.BARS_IN_MODULE = 8), (be.EMPTY_INT_ARRAY = new Int32Array([])), (be.SYMBOL_TABLE = Int32Array.from([ 66142, 66170, 66206, 66236, 66290, 66292, 66350, 66382, 66396, 66454, 66470, 66476, 66594, 66600, 66614, 66626, 66628, 66632, 66640, 66654, 66662, 66668, 66682, 66690, 66718, 66720, 66748, 66758, 66776, 66798, 66802, 66804, 66820, 66824, 66832, 66846, 66848, 66876, 66880, 66936, 66950, 66956, 66968, 66992, 67006, 67022, 67036, 67042, 67044, 67048, 67062, 67118, 67150, 67164, 67214, 67228, 67256, 67294, 67322, 67350, 67366, 67372, 67398, 67404, 67416, 67438, 67474, 67476, 67490, 67492, 67496, 67510, 67618, 67624, 67650, 67656, 67664, 67678, 67686, 67692, 67706, 67714, 67716, 67728, 67742, 67744, 67772, 67782, 67788, 67800, 67822, 67826, 67828, 67842, 67848, 67870, 67872, 67900, 67904, 67960, 67974, 67992, 68016, 68030, 68046, 68060, 68066, 68068, 68072, 68086, 68104, 68112, 68126, 68128, 68156, 68160, 68216, 68336, 68358, 68364, 68376, 68400, 68414, 68448, 68476, 68494, 68508, 68536, 68546, 68548, 68552, 68560, 68574, 68582, 68588, 68654, 68686, 68700, 68706, 68708, 68712, 68726, 68750, 68764, 68792, 68802, 68804, 68808, 68816, 68830, 68838, 68844, 68858, 68878, 68892, 68920, 68976, 68990, 68994, 68996, 69e3, 69008, 69022, 69024, 69052, 69062, 69068, 69080, 69102, 69106, 69108, 69142, 69158, 69164, 69190, 69208, 69230, 69254, 69260, 69272, 69296, 69310, 69326, 69340, 69386, 69394, 69396, 69410, 69416, 69430, 69442, 69444, 69448, 69456, 69470, 69478, 69484, 69554, 69556, 69666, 69672, 69698, 69704, 69712, 69726, 69754, 69762, 69764, 69776, 69790, 69792, 69820, 69830, 69836, 69848, 69870, 69874, 69876, 69890, 69918, 69920, 69948, 69952, 70008, 70022, 70040, 70064, 70078, 70094, 70108, 70114, 70116, 70120, 70134, 70152, 70174, 70176, 70264, 70384, 70412, 70448, 70462, 70496, 70524, 70542, 70556, 70584, 70594, 70600, 70608, 70622, 70630, 70636, 70664, 70672, 70686, 70688, 70716, 70720, 70776, 70896, 71136, 71180, 71192, 71216, 71230, 71264, 71292, 71360, 71416, 71452, 71480, 71536, 71550, 71554, 71556, 71560, 71568, 71582, 71584, 71612, 71622, 71628, 71640, 71662, 71726, 71732, 71758, 71772, 71778, 71780, 71784, 71798, 71822, 71836, 71864, 71874, 71880, 71888, 71902, 71910, 71916, 71930, 71950, 71964, 71992, 72048, 72062, 72066, 72068, 72080, 72094, 72096, 72124, 72134, 72140, 72152, 72174, 72178, 72180, 72206, 72220, 72248, 72304, 72318, 72416, 72444, 72456, 72464, 72478, 72480, 72508, 72512, 72568, 72588, 72600, 72624, 72638, 72654, 72668, 72674, 72676, 72680, 72694, 72726, 72742, 72748, 72774, 72780, 72792, 72814, 72838, 72856, 72880, 72894, 72910, 72924, 72930, 72932, 72936, 72950, 72966, 72972, 72984, 73008, 73022, 73056, 73084, 73102, 73116, 73144, 73156, 73160, 73168, 73182, 73190, 73196, 73210, 73226, 73234, 73236, 73250, 73252, 73256, 73270, 73282, 73284, 73296, 73310, 73318, 73324, 73346, 73348, 73352, 73360, 73374, 73376, 73404, 73414, 73420, 73432, 73454, 73498, 73518, 73522, 73524, 73550, 73564, 73570, 73572, 73576, 73590, 73800, 73822, 73858, 73860, 73872, 73886, 73888, 73916, 73944, 73970, 73972, 73992, 74014, 74016, 74044, 74048, 74104, 74118, 74136, 74160, 74174, 74210, 74212, 74216, 74230, 74244, 74256, 74270, 74272, 74360, 74480, 74502, 74508, 74544, 74558, 74592, 74620, 74638, 74652, 74680, 74690, 74696, 74704, 74726, 74732, 74782, 74784, 74812, 74992, 75232, 75288, 75326, 75360, 75388, 75456, 75512, 75576, 75632, 75646, 75650, 75652, 75664, 75678, 75680, 75708, 75718, 75724, 75736, 75758, 75808, 75836, 75840, 75896, 76016, 76256, 76736, 76824, 76848, 76862, 76896, 76924, 76992, 77048, 77296, 77340, 77368, 77424, 77438, 77536, 77564, 77572, 77576, 77584, 77600, 77628, 77632, 77688, 77702, 77708, 77720, 77744, 77758, 77774, 77788, 77870, 77902, 77916, 77922, 77928, 77966, 77980, 78008, 78018, 78024, 78032, 78046, 78060, 78074, 78094, 78136, 78192, 78206, 78210, 78212, 78224, 78238, 78240, 78268, 78278, 78284, 78296, 78322, 78324, 78350, 78364, 78448, 78462, 78560, 78588, 78600, 78622, 78624, 78652, 78656, 78712, 78726, 78744, 78768, 78782, 78798, 78812, 78818, 78820, 78824, 78838, 78862, 78876, 78904, 78960, 78974, 79072, 79100, 79296, 79352, 79368, 79376, 79390, 79392, 79420, 79424, 79480, 79600, 79628, 79640, 79664, 79678, 79712, 79740, 79772, 79800, 79810, 79812, 79816, 79824, 79838, 79846, 79852, 79894, 79910, 79916, 79942, 79948, 79960, 79982, 79988, 80006, 80024, 80048, 80062, 80078, 80092, 80098, 80100, 80104, 80134, 80140, 80176, 80190, 80224, 80252, 80270, 80284, 80312, 80328, 80336, 80350, 80358, 80364, 80378, 80390, 80396, 80408, 80432, 80446, 80480, 80508, 80576, 80632, 80654, 80668, 80696, 80752, 80766, 80776, 80784, 80798, 80800, 80828, 80844, 80856, 80878, 80882, 80884, 80914, 80916, 80930, 80932, 80936, 80950, 80962, 80968, 80976, 80990, 80998, 81004, 81026, 81028, 81040, 81054, 81056, 81084, 81094, 81100, 81112, 81134, 81154, 81156, 81160, 81168, 81182, 81184, 81212, 81216, 81272, 81286, 81292, 81304, 81328, 81342, 81358, 81372, 81380, 81384, 81398, 81434, 81454, 81458, 81460, 81486, 81500, 81506, 81508, 81512, 81526, 81550, 81564, 81592, 81602, 81604, 81608, 81616, 81630, 81638, 81644, 81702, 81708, 81722, 81734, 81740, 81752, 81774, 81778, 81780, 82050, 82078, 82080, 82108, 82180, 82184, 82192, 82206, 82208, 82236, 82240, 82296, 82316, 82328, 82352, 82366, 82402, 82404, 82408, 82440, 82448, 82462, 82464, 82492, 82496, 82552, 82672, 82694, 82700, 82712, 82736, 82750, 82784, 82812, 82830, 82882, 82884, 82888, 82896, 82918, 82924, 82952, 82960, 82974, 82976, 83004, 83008, 83064, 83184, 83424, 83468, 83480, 83504, 83518, 83552, 83580, 83648, 83704, 83740, 83768, 83824, 83838, 83842, 83844, 83848, 83856, 83872, 83900, 83910, 83916, 83928, 83950, 83984, 84e3, 84028, 84032, 84088, 84208, 84448, 84928, 85040, 85054, 85088, 85116, 85184, 85240, 85488, 85560, 85616, 85630, 85728, 85756, 85764, 85768, 85776, 85790, 85792, 85820, 85824, 85880, 85894, 85900, 85912, 85936, 85966, 85980, 86048, 86080, 86136, 86256, 86496, 86976, 88160, 88188, 88256, 88312, 88560, 89056, 89200, 89214, 89312, 89340, 89536, 89592, 89608, 89616, 89632, 89664, 89720, 89840, 89868, 89880, 89904, 89952, 89980, 89998, 90012, 90040, 90190, 90204, 90254, 90268, 90296, 90306, 90308, 90312, 90334, 90382, 90396, 90424, 90480, 90494, 90500, 90504, 90512, 90526, 90528, 90556, 90566, 90572, 90584, 90610, 90612, 90638, 90652, 90680, 90736, 90750, 90848, 90876, 90884, 90888, 90896, 90910, 90912, 90940, 90944, 91e3, 91014, 91020, 91032, 91056, 91070, 91086, 91100, 91106, 91108, 91112, 91126, 91150, 91164, 91192, 91248, 91262, 91360, 91388, 91584, 91640, 91664, 91678, 91680, 91708, 91712, 91768, 91888, 91928, 91952, 91966, 92e3, 92028, 92046, 92060, 92088, 92098, 92100, 92104, 92112, 92126, 92134, 92140, 92188, 92216, 92272, 92384, 92412, 92608, 92664, 93168, 93200, 93214, 93216, 93244, 93248, 93304, 93424, 93664, 93720, 93744, 93758, 93792, 93820, 93888, 93944, 93980, 94008, 94064, 94078, 94084, 94088, 94096, 94110, 94112, 94140, 94150, 94156, 94168, 94246, 94252, 94278, 94284, 94296, 94318, 94342, 94348, 94360, 94384, 94398, 94414, 94428, 94440, 94470, 94476, 94488, 94512, 94526, 94560, 94588, 94606, 94620, 94648, 94658, 94660, 94664, 94672, 94686, 94694, 94700, 94714, 94726, 94732, 94744, 94768, 94782, 94816, 94844, 94912, 94968, 94990, 95004, 95032, 95088, 95102, 95112, 95120, 95134, 95136, 95164, 95180, 95192, 95214, 95218, 95220, 95244, 95256, 95280, 95294, 95328, 95356, 95424, 95480, 95728, 95758, 95772, 95800, 95856, 95870, 95968, 95996, 96008, 96016, 96030, 96032, 96060, 96064, 96120, 96152, 96176, 96190, 96220, 96226, 96228, 96232, 96290, 96292, 96296, 96310, 96322, 96324, 96328, 96336, 96350, 96358, 96364, 96386, 96388, 96392, 96400, 96414, 96416, 96444, 96454, 96460, 96472, 96494, 96498, 96500, 96514, 96516, 96520, 96528, 96542, 96544, 96572, 96576, 96632, 96646, 96652, 96664, 96688, 96702, 96718, 96732, 96738, 96740, 96744, 96758, 96772, 96776, 96784, 96798, 96800, 96828, 96832, 96888, 97008, 97030, 97036, 97048, 97072, 97086, 97120, 97148, 97166, 97180, 97208, 97220, 97224, 97232, 97246, 97254, 97260, 97326, 97330, 97332, 97358, 97372, 97378, 97380, 97384, 97398, 97422, 97436, 97464, 97474, 97476, 97480, 97488, 97502, 97510, 97516, 97550, 97564, 97592, 97648, 97666, 97668, 97672, 97680, 97694, 97696, 97724, 97734, 97740, 97752, 97774, 97830, 97836, 97850, 97862, 97868, 97880, 97902, 97906, 97908, 97926, 97932, 97944, 97968, 97998, 98012, 98018, 98020, 98024, 98038, 98618, 98674, 98676, 98838, 98854, 98874, 98892, 98904, 98926, 98930, 98932, 98968, 99006, 99042, 99044, 99048, 99062, 99166, 99194, 99246, 99286, 99350, 99366, 99372, 99386, 99398, 99416, 99438, 99442, 99444, 99462, 99504, 99518, 99534, 99548, 99554, 99556, 99560, 99574, 99590, 99596, 99608, 99632, 99646, 99680, 99708, 99726, 99740, 99768, 99778, 99780, 99784, 99792, 99806, 99814, 99820, 99834, 99858, 99860, 99874, 99880, 99894, 99906, 99920, 99934, 99962, 99970, 99972, 99976, 99984, 99998, 1e5, 100028, 100038, 100044, 100056, 100078, 100082, 100084, 100142, 100174, 100188, 100246, 100262, 100268, 100306, 100308, 100390, 100396, 100410, 100422, 100428, 100440, 100462, 100466, 100468, 100486, 100504, 100528, 100542, 100558, 100572, 100578, 100580, 100584, 100598, 100620, 100656, 100670, 100704, 100732, 100750, 100792, 100802, 100808, 100816, 100830, 100838, 100844, 100858, 100888, 100912, 100926, 100960, 100988, 101056, 101112, 101148, 101176, 101232, 101246, 101250, 101252, 101256, 101264, 101278, 101280, 101308, 101318, 101324, 101336, 101358, 101362, 101364, 101410, 101412, 101416, 101430, 101442, 101448, 101456, 101470, 101478, 101498, 101506, 101508, 101520, 101534, 101536, 101564, 101580, 101618, 101620, 101636, 101640, 101648, 101662, 101664, 101692, 101696, 101752, 101766, 101784, 101838, 101858, 101860, 101864, 101934, 101938, 101940, 101966, 101980, 101986, 101988, 101992, 102030, 102044, 102072, 102082, 102084, 102088, 102096, 102138, 102166, 102182, 102188, 102214, 102220, 102232, 102254, 102282, 102290, 102292, 102306, 102308, 102312, 102326, 102444, 102458, 102470, 102476, 102488, 102514, 102516, 102534, 102552, 102576, 102590, 102606, 102620, 102626, 102632, 102646, 102662, 102668, 102704, 102718, 102752, 102780, 102798, 102812, 102840, 102850, 102856, 102864, 102878, 102886, 102892, 102906, 102936, 102974, 103008, 103036, 103104, 103160, 103224, 103280, 103294, 103298, 103300, 103312, 103326, 103328, 103356, 103366, 103372, 103384, 103406, 103410, 103412, 103472, 103486, 103520, 103548, 103616, 103672, 103920, 103992, 104048, 104062, 104160, 104188, 104194, 104196, 104200, 104208, 104224, 104252, 104256, 104312, 104326, 104332, 104344, 104368, 104382, 104398, 104412, 104418, 104420, 104424, 104482, 104484, 104514, 104520, 104528, 104542, 104550, 104570, 104578, 104580, 104592, 104606, 104608, 104636, 104652, 104690, 104692, 104706, 104712, 104734, 104736, 104764, 104768, 104824, 104838, 104856, 104910, 104930, 104932, 104936, 104968, 104976, 104990, 104992, 105020, 105024, 105080, 105200, 105240, 105278, 105312, 105372, 105410, 105412, 105416, 105424, 105446, 105518, 105524, 105550, 105564, 105570, 105572, 105576, 105614, 105628, 105656, 105666, 105672, 105680, 105702, 105722, 105742, 105756, 105784, 105840, 105854, 105858, 105860, 105864, 105872, 105888, 105932, 105970, 105972, 106006, 106022, 106028, 106054, 106060, 106072, 106100, 106118, 106124, 106136, 106160, 106174, 106190, 106210, 106212, 106216, 106250, 106258, 106260, 106274, 106276, 106280, 106306, 106308, 106312, 106320, 106334, 106348, 106394, 106414, 106418, 106420, 106566, 106572, 106610, 106612, 106630, 106636, 106648, 106672, 106686, 106722, 106724, 106728, 106742, 106758, 106764, 106776, 106800, 106814, 106848, 106876, 106894, 106908, 106936, 106946, 106948, 106952, 106960, 106974, 106982, 106988, 107032, 107056, 107070, 107104, 107132, 107200, 107256, 107292, 107320, 107376, 107390, 107394, 107396, 107400, 107408, 107422, 107424, 107452, 107462, 107468, 107480, 107502, 107506, 107508, 107544, 107568, 107582, 107616, 107644, 107712, 107768, 108016, 108060, 108088, 108144, 108158, 108256, 108284, 108290, 108292, 108296, 108304, 108318, 108320, 108348, 108352, 108408, 108422, 108428, 108440, 108464, 108478, 108494, 108508, 108514, 108516, 108520, 108592, 108640, 108668, 108736, 108792, 109040, 109536, 109680, 109694, 109792, 109820, 110016, 110072, 110084, 110088, 110096, 110112, 110140, 110144, 110200, 110320, 110342, 110348, 110360, 110384, 110398, 110432, 110460, 110478, 110492, 110520, 110532, 110536, 110544, 110558, 110658, 110686, 110714, 110722, 110724, 110728, 110736, 110750, 110752, 110780, 110796, 110834, 110836, 110850, 110852, 110856, 110864, 110878, 110880, 110908, 110912, 110968, 110982, 111e3, 111054, 111074, 111076, 111080, 111108, 111112, 111120, 111134, 111136, 111164, 111168, 111224, 111344, 111372, 111422, 111456, 111516, 111554, 111556, 111560, 111568, 111590, 111632, 111646, 111648, 111676, 111680, 111736, 111856, 112096, 112152, 112224, 112252, 112320, 112440, 112514, 112516, 112520, 112528, 112542, 112544, 112588, 112686, 112718, 112732, 112782, 112796, 112824, 112834, 112836, 112840, 112848, 112870, 112890, 112910, 112924, 112952, 113008, 113022, 113026, 113028, 113032, 113040, 113054, 113056, 113100, 113138, 113140, 113166, 113180, 113208, 113264, 113278, 113376, 113404, 113416, 113424, 113440, 113468, 113472, 113560, 113614, 113634, 113636, 113640, 113686, 113702, 113708, 113734, 113740, 113752, 113778, 113780, 113798, 113804, 113816, 113840, 113854, 113870, 113890, 113892, 113896, 113926, 113932, 113944, 113968, 113982, 114016, 114044, 114076, 114114, 114116, 114120, 114128, 114150, 114170, 114194, 114196, 114210, 114212, 114216, 114242, 114244, 114248, 114256, 114270, 114278, 114306, 114308, 114312, 114320, 114334, 114336, 114364, 114380, 114420, 114458, 114478, 114482, 114484, 114510, 114524, 114530, 114532, 114536, 114842, 114866, 114868, 114970, 114994, 114996, 115042, 115044, 115048, 115062, 115130, 115226, 115250, 115252, 115278, 115292, 115298, 115300, 115304, 115318, 115342, 115394, 115396, 115400, 115408, 115422, 115430, 115436, 115450, 115478, 115494, 115514, 115526, 115532, 115570, 115572, 115738, 115758, 115762, 115764, 115790, 115804, 115810, 115812, 115816, 115830, 115854, 115868, 115896, 115906, 115912, 115920, 115934, 115942, 115948, 115962, 115996, 116024, 116080, 116094, 116098, 116100, 116104, 116112, 116126, 116128, 116156, 116166, 116172, 116184, 116206, 116210, 116212, 116246, 116262, 116268, 116282, 116294, 116300, 116312, 116334, 116338, 116340, 116358, 116364, 116376, 116400, 116414, 116430, 116444, 116450, 116452, 116456, 116498, 116500, 116514, 116520, 116534, 116546, 116548, 116552, 116560, 116574, 116582, 116588, 116602, 116654, 116694, 116714, 116762, 116782, 116786, 116788, 116814, 116828, 116834, 116836, 116840, 116854, 116878, 116892, 116920, 116930, 116936, 116944, 116958, 116966, 116972, 116986, 117006, 117048, 117104, 117118, 117122, 117124, 117136, 117150, 117152, 117180, 117190, 117196, 117208, 117230, 117234, 117236, 117304, 117360, 117374, 117472, 117500, 117506, 117508, 117512, 117520, 117536, 117564, 117568, 117624, 117638, 117644, 117656, 117680, 117694, 117710, 117724, 117730, 117732, 117736, 117750, 117782, 117798, 117804, 117818, 117830, 117848, 117874, 117876, 117894, 117936, 117950, 117966, 117986, 117988, 117992, 118022, 118028, 118040, 118064, 118078, 118112, 118140, 118172, 118210, 118212, 118216, 118224, 118238, 118246, 118266, 118306, 118312, 118338, 118352, 118366, 118374, 118394, 118402, 118404, 118408, 118416, 118430, 118432, 118460, 118476, 118514, 118516, 118574, 118578, 118580, 118606, 118620, 118626, 118628, 118632, 118678, 118694, 118700, 118730, 118738, 118740, 118830, 118834, 118836, 118862, 118876, 118882, 118884, 118888, 118902, 118926, 118940, 118968, 118978, 118980, 118984, 118992, 119006, 119014, 119020, 119034, 119068, 119096, 119152, 119166, 119170, 119172, 119176, 119184, 119198, 119200, 119228, 119238, 119244, 119256, 119278, 119282, 119284, 119324, 119352, 119408, 119422, 119520, 119548, 119554, 119556, 119560, 119568, 119582, 119584, 119612, 119616, 119672, 119686, 119692, 119704, 119728, 119742, 119758, 119772, 119778, 119780, 119784, 119798, 119920, 119934, 120032, 120060, 120256, 120312, 120324, 120328, 120336, 120352, 120384, 120440, 120560, 120582, 120588, 120600, 120624, 120638, 120672, 120700, 120718, 120732, 120760, 120770, 120772, 120776, 120784, 120798, 120806, 120812, 120870, 120876, 120890, 120902, 120908, 120920, 120946, 120948, 120966, 120972, 120984, 121008, 121022, 121038, 121058, 121060, 121064, 121078, 121100, 121112, 121136, 121150, 121184, 121212, 121244, 121282, 121284, 121288, 121296, 121318, 121338, 121356, 121368, 121392, 121406, 121440, 121468, 121536, 121592, 121656, 121730, 121732, 121736, 121744, 121758, 121760, 121804, 121842, 121844, 121890, 121922, 121924, 121928, 121936, 121950, 121958, 121978, 121986, 121988, 121992, 122e3, 122014, 122016, 122044, 122060, 122098, 122100, 122116, 122120, 122128, 122142, 122144, 122172, 122176, 122232, 122246, 122264, 122318, 122338, 122340, 122344, 122414, 122418, 122420, 122446, 122460, 122466, 122468, 122472, 122510, 122524, 122552, 122562, 122564, 122568, 122576, 122598, 122618, 122646, 122662, 122668, 122694, 122700, 122712, 122738, 122740, 122762, 122770, 122772, 122786, 122788, 122792, 123018, 123026, 123028, 123042, 123044, 123048, 123062, 123098, 123146, 123154, 123156, 123170, 123172, 123176, 123190, 123202, 123204, 123208, 123216, 123238, 123244, 123258, 123290, 123314, 123316, 123402, 123410, 123412, 123426, 123428, 123432, 123446, 123458, 123464, 123472, 123486, 123494, 123500, 123514, 123522, 123524, 123528, 123536, 123552, 123580, 123590, 123596, 123608, 123630, 123634, 123636, 123674, 123698, 123700, 123740, 123746, 123748, 123752, 123834, 123914, 123922, 123924, 123938, 123944, 123958, 123970, 123976, 123984, 123998, 124006, 124012, 124026, 124034, 124036, 124048, 124062, 124064, 124092, 124102, 124108, 124120, 124142, 124146, 124148, 124162, 124164, 124168, 124176, 124190, 124192, 124220, 124224, 124280, 124294, 124300, 124312, 124336, 124350, 124366, 124380, 124386, 124388, 124392, 124406, 124442, 124462, 124466, 124468, 124494, 124508, 124514, 124520, 124558, 124572, 124600, 124610, 124612, 124616, 124624, 124646, 124666, 124694, 124710, 124716, 124730, 124742, 124748, 124760, 124786, 124788, 124818, 124820, 124834, 124836, 124840, 124854, 124946, 124948, 124962, 124964, 124968, 124982, 124994, 124996, 125e3, 125008, 125022, 125030, 125036, 125050, 125058, 125060, 125064, 125072, 125086, 125088, 125116, 125126, 125132, 125144, 125166, 125170, 125172, 125186, 125188, 125192, 125200, 125216, 125244, 125248, 125304, 125318, 125324, 125336, 125360, 125374, 125390, 125404, 125410, 125412, 125416, 125430, 125444, 125448, 125456, 125472, 125504, 125560, 125680, 125702, 125708, 125720, 125744, 125758, 125792, 125820, 125838, 125852, 125880, 125890, 125892, 125896, 125904, 125918, 125926, 125932, 125978, 125998, 126002, 126004, 126030, 126044, 126050, 126052, 126056, 126094, 126108, 126136, 126146, 126148, 126152, 126160, 126182, 126202, 126222, 126236, 126264, 126320, 126334, 126338, 126340, 126344, 126352, 126366, 126368, 126412, 126450, 126452, 126486, 126502, 126508, 126522, 126534, 126540, 126552, 126574, 126578, 126580, 126598, 126604, 126616, 126640, 126654, 126670, 126684, 126690, 126692, 126696, 126738, 126754, 126756, 126760, 126774, 126786, 126788, 126792, 126800, 126814, 126822, 126828, 126842, 126894, 126898, 126900, 126934, 127126, 127142, 127148, 127162, 127178, 127186, 127188, 127254, 127270, 127276, 127290, 127302, 127308, 127320, 127342, 127346, 127348, 127370, 127378, 127380, 127394, 127396, 127400, 127450, 127510, 127526, 127532, 127546, 127558, 127576, 127598, 127602, 127604, 127622, 127628, 127640, 127664, 127678, 127694, 127708, 127714, 127716, 127720, 127734, 127754, 127762, 127764, 127778, 127784, 127810, 127812, 127816, 127824, 127838, 127846, 127866, 127898, 127918, 127922, 127924, 128022, 128038, 128044, 128058, 128070, 128076, 128088, 128110, 128114, 128116, 128134, 128140, 128152, 128176, 128190, 128206, 128220, 128226, 128228, 128232, 128246, 128262, 128268, 128280, 128304, 128318, 128352, 128380, 128398, 128412, 128440, 128450, 128452, 128456, 128464, 128478, 128486, 128492, 128506, 128522, 128530, 128532, 128546, 128548, 128552, 128566, 128578, 128580, 128584, 128592, 128606, 128614, 128634, 128642, 128644, 128648, 128656, 128670, 128672, 128700, 128716, 128754, 128756, 128794, 128814, 128818, 128820, 128846, 128860, 128866, 128868, 128872, 128886, 128918, 128934, 128940, 128954, 128978, 128980, 129178, 129198, 129202, 129204, 129238, 129258, 129306, 129326, 129330, 129332, 129358, 129372, 129378, 129380, 129384, 129398, 129430, 129446, 129452, 129466, 129482, 129490, 129492, 129562, 129582, 129586, 129588, 129614, 129628, 129634, 129636, 129640, 129654, 129678, 129692, 129720, 129730, 129732, 129736, 129744, 129758, 129766, 129772, 129814, 129830, 129836, 129850, 129862, 129868, 129880, 129902, 129906, 129908, 129930, 129938, 129940, 129954, 129956, 129960, 129974, 130010, ])), (be.CODEWORD_TABLE = Int32Array.from([ 2627, 1819, 2622, 2621, 1813, 1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865, 861, 859, 2511, 873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844, 1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815, 814, 813, 812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626, 2625, 2623, 2628, 1820, 2752, 2739, 2737, 2728, 2727, 2725, 2730, 2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413, 754, 752, 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703, 1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651, 646, 643, 2345, 654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594, 2319, 2317, 611, 610, 608, 606, 2324, 603, 2323, 615, 614, 612, 1617, 1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898, 909, 2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490, 2489, 2487, 2485, 1748, 836, 834, 832, 830, 2494, 827, 2492, 843, 841, 839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633, 2631, 2629, 1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753, 2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591, 588, 576, 569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539, 548, 1572, 1570, 481, 2245, 466, 2242, 462, 2239, 492, 485, 482, 2249, 496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425, 419, 2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476, 1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155, 2152, 378, 377, 375, 2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416, 1414, 385, 1411, 384, 1423, 1422, 1420, 1424, 2461, 802, 2441, 2439, 790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756, 753, 1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370, 702, 699, 696, 704, 1690, 1687, 2337, 2336, 2334, 2332, 1624, 2329, 1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655, 653, 1653, 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576, 2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900, 910, 2503, 2502, 2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513, 876, 874, 1782, 2720, 2713, 2711, 2697, 2694, 2691, 2702, 2672, 2670, 2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822, 2654, 2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751, 2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142, 332, 2140, 345, 1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132, 1354, 1352, 1349, 1356, 262, 257, 2101, 253, 2096, 2093, 274, 273, 267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318, 2052, 202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224, 221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266, 1264, 1261, 1268, 155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006, 159, 2003, 2e3, 172, 171, 169, 2012, 166, 2010, 1186, 1184, 1182, 1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313, 2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580, 1591, 2272, 2267, 2264, 1547, 538, 536, 529, 2278, 525, 2275, 547, 544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247, 470, 2244, 465, 2241, 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530, 1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414, 412, 2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431, 429, 1473, 1471, 1469, 1466, 434, 1477, 1475, 2478, 2472, 2470, 2459, 2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789, 785, 2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741, 2415, 758, 755, 1721, 2358, 2357, 2355, 2353, 1661, 2350, 1660, 2347, 1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701, 698, 705, 1691, 1689, 2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588, 2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573, 2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514, 1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539, 906, 903, 911, 2721, 1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826, 1824, 2673, 2671, 2669, 2666, 1829, 2679, 2677, 1858, 1857, 2772, 1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133, 131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132, 1130, 112, 110, 1974, 107, 1973, 104, 1971, 1969, 122, 121, 119, 117, 1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83, 1953, 81, 1952, 78, 1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85, 1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100, 1090, 1089, 1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56, 1925, 53, 1922, 1919, 66, 64, 1931, 61, 1929, 1042, 1040, 1038, 71, 1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869, 1867, 1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886, 22, 1883, 982, 980, 977, 974, 32, 30, 991, 989, 987, 984, 34, 995, 994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139, 2138, 2136, 2134, 1359, 343, 341, 338, 2143, 335, 2141, 348, 347, 346, 1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308, 305, 2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355, 1353, 1351, 1357, 2092, 2091, 2089, 2087, 1276, 2084, 1274, 2081, 1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266, 2106, 281, 279, 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039, 2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205, 2051, 201, 2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223, 2069, 1259, 1257, 1254, 232, 1251, 230, 1267, 1265, 1263, 2316, 2315, 2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590, 2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577, 574, 571, 2298, 582, 581, 1592, 2263, 2262, 2260, 2258, 1545, 2255, 1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528, 2277, 546, 543, 549, 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485, 2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480, 477, 2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532, 2477, 2476, 2474, 2479, 2469, 2468, 2466, 2464, 1730, 2473, 2471, 2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805, 804, 2428, 2427, 2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436, 2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388, 2386, 2384, 1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703, 2392, 1701, 2412, 2410, 2407, 751, 748, 744, 2416, 759, 757, 1807, 2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799, 2594, 2592, 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789, 2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569, 2578, 1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834, 1832, 1830, 1839, 1837, 2700, 2698, 2695, 2704, 1817, 1811, 1810, 897, 862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738, 1743, 2624, 1818, 2726, 2776, 782, 740, 737, 1715, 686, 679, 695, 1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648, 602, 600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606, 613, 1615, 1613, 2328, 926, 924, 892, 886, 899, 857, 850, 2505, 1778, 824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759, 2649, 2632, 2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531, 527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486, 483, 1524, 1521, 1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454, 428, 1468, 1465, 2210, 366, 363, 2158, 360, 2156, 357, 2153, 376, 373, 370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412, 1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716, 676, 674, 668, 2363, 665, 2360, 685, 1684, 1681, 626, 624, 622, 2335, 620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925, 2530, 2527, 894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779, 2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759, 2757, 2744, 2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296, 2126, 315, 312, 1347, 1342, 1350, 261, 258, 250, 2097, 246, 2094, 271, 268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195, 2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222, 1256, 1253, 1249, 1262, 2080, 2079, 154, 1997, 150, 1995, 147, 1992, 1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170, 1164, 167, 1185, 1183, 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022, 587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268, 508, 2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471, 489, 1526, 1523, 1520, 397, 395, 2185, 392, 2183, 389, 2180, 2177, 410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433, 2430, 779, 776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356, 2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688, 1685, 1683, 2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784, 2532, 895, 893, 890, 2718, 2709, 2707, 2689, 2687, 2684, 2663, 2662, 2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138, 134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105, 1972, 101, 1970, 120, 118, 115, 1109, 1108, 1106, 1104, 123, 1113, 1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076, 1074, 1072, 98, 1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45, 1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920, 1031, 1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69, 1046, 1044, 1944, 1943, 1941, 11, 9, 1868, 7, 1865, 1862, 1859, 20, 1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983, 981, 978, 975, 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351, 2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339, 1372, 1370, 294, 293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346, 1344, 245, 244, 242, 2090, 239, 2088, 236, 2085, 2082, 260, 2099, 249, 270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033, 2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227, 1237, 1255, 2310, 2302, 2300, 2286, 2284, 2281, 565, 563, 561, 558, 575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270, 511, 533, 1569, 1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459, 456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467, 2465, 2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780, 778, 775, 2387, 2385, 2382, 2379, 1695, 2375, 1693, 2396, 735, 733, 730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581, 2579, 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929, 2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688, 2686, 1815, 1809, 1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676, 1674, 633, 629, 1638, 1636, 1633, 1641, 598, 1605, 1604, 1602, 1600, 605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584, 524, 1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400, 1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361, 358, 2154, 1401, 1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172, 772, 726, 723, 1712, 672, 669, 666, 682, 1678, 1675, 625, 623, 621, 618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849, 848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334, 1367, 1365, 301, 297, 1340, 1338, 1335, 1343, 255, 251, 247, 1296, 1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230, 1224, 214, 1220, 210, 1242, 1239, 1235, 1250, 2077, 2075, 151, 148, 1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157, 1173, 1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560, 557, 1585, 516, 509, 1562, 1559, 458, 447, 2227, 472, 1516, 1513, 1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449, 1446, 420, 1460, 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663, 661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919, 2519, 2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137, 1136, 130, 127, 1125, 1124, 1122, 1127, 109, 106, 102, 1103, 1102, 1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065, 1063, 90, 1060, 87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40, 1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008, 51, 1029, 1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4, 1863, 1, 1860, 956, 954, 952, 949, 946, 17, 14, 969, 967, 964, 961, 27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903, 350, 349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118, 304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086, 233, 2083, 254, 1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031, 177, 2027, 199, 1233, 1231, 1229, 1226, 217, 1223, 1241, 2078, 2076, 584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257, 499, 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212, 460, 454, 475, 1517, 1515, 1512, 2447, 798, 797, 2422, 2419, 770, 768, 766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582, 2580, 2548, 2546, 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680, 1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670, 1668, 1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326, 1772, 1753, 1751, 1581, 1554, 1552, 1504, 1501, 1498, 1509, 1442, 1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359, 1399, 1397, 1394, 1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630, 1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281, 1278, 248, 1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221, 1236, 2073, 2071, 1151, 1150, 1148, 1146, 152, 1143, 149, 1140, 145, 1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582, 510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441, 1439, 1436, 1450, 2207, 765, 716, 713, 1709, 662, 660, 657, 1673, 1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118, 1123, 1097, 1096, 1094, 1092, 103, 1101, 1099, 1979, 1059, 1058, 1056, 1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007, 1006, 1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022, 1936, 1935, 1933, 1938, 942, 940, 938, 935, 932, 5, 2, 955, 953, 950, 947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899, 1897, 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238, 234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185, 181, 178, 2028, 1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551, 1583, 505, 503, 500, 513, 1557, 1555, 444, 442, 439, 436, 2213, 455, 451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706, 2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325, 1769, 1749, 1747, 1499, 1438, 1435, 2204, 1390, 1388, 1385, 1395, 2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282, 1279, 2109, 1214, 1207, 1222, 2068, 2065, 1149, 1147, 1144, 1141, 146, 1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487, 1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119, 1095, 1093, 1978, 1057, 1055, 1052, 1062, 1962, 1960, 1005, 1003, 1e3, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933, 6, 930, 3, 951, 948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35, 1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275, 1272, 1269, 235, 1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067, 1580, 501, 1551, 1548, 440, 437, 1497, 1494, 1490, 1503, 761, 709, 707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208, 2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426, 2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954, 1001, 998, 1924, 1921, 1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882, 1323, 1273, 1270, 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576, 1543, 1540, 1484, 1481, 1478, 1491, 1700, ])); class Be { constructor(t, e) { (this.bits = t), (this.points = e); } getBits() { return this.bits; } getPoints() { return this.points; } } class Pe { static detectMultiple(t, e, r) { let n = t.getBlackMatrix(), i = Pe.detect(r, n); return ( i.length || ((n = n.clone()).rotate180(), (i = Pe.detect(r, n))), new Be(n, i) ); } static detect(t, e) { const r = new Array(); let n = 0, i = 0, s = !1; for (; n < e.getHeight(); ) { const o = Pe.findVertices(e, n, i); if (null != o[0] || null != o[3]) { if (((s = !0), r.push(o), !t)) break; null != o[2] ? ((i = Math.trunc(o[2].getX())), (n = Math.trunc(o[2].getY()))) : ((i = Math.trunc(o[4].getX())), (n = Math.trunc(o[4].getY()))); } else { if (!s) break; (s = !1), (i = 0); for (const t of r) null != t[1] && (n = Math.trunc(Math.max(n, t[1].getY()))), null != t[3] && (n = Math.max(n, Math.trunc(t[3].getY()))); n += Pe.ROW_STEP; } } return r; } static findVertices(t, e, r) { const n = t.getHeight(), i = t.getWidth(), s = new Array(8); return ( Pe.copyToResult( s, Pe.findRowsWithPattern(t, n, i, e, r, Pe.START_PATTERN), Pe.INDEXES_START_PATTERN ), null != s[4] && ((r = Math.trunc(s[4].getX())), (e = Math.trunc(s[4].getY()))), Pe.copyToResult( s, Pe.findRowsWithPattern(t, n, i, e, r, Pe.STOP_PATTERN), Pe.INDEXES_STOP_PATTERN ), s ); } static copyToResult(t, e, r) { for (let n = 0; n < r.length; n++) t[r[n]] = e[n]; } static findRowsWithPattern(t, e, r, n, i, s) { const o = new Array(4); let a = !1; const l = new Int32Array(s.length); for (; n < e; n += Pe.ROW_STEP) { let e = Pe.findGuardPattern(t, i, n, r, !1, s, l); if (null != e) { for (; n > 0; ) { const o = Pe.findGuardPattern(t, i, --n, r, !1, s, l); if (null == o) { n++; break; } e = o; } (o[0] = new rt(e[0], n)), (o[1] = new rt(e[1], n)), (a = !0); break; } } let h = n + 1; if (a) { let n = 0, i = Int32Array.from([ Math.trunc(o[0].getX()), Math.trunc(o[1].getX()), ]); for (; h < e; h++) { const e = Pe.findGuardPattern(t, i[0], h, r, !1, s, l); if ( null != e && Math.abs(i[0] - e[0]) < Pe.MAX_PATTERN_DRIFT && Math.abs(i[1] - e[1]) < Pe.MAX_PATTERN_DRIFT ) (i = e), (n = 0); else { if (n > Pe.SKIPPED_ROW_COUNT_MAX) break; n++; } } (h -= n + 1), (o[2] = new rt(i[0], h)), (o[3] = new rt(i[1], h)); } return h - n < Pe.BARCODE_MIN_HEIGHT && g.fill(o, null), o; } static findGuardPattern(t, e, r, n, i, s, o) { g.fillWithin(o, 0, o.length, 0); let a = e, l = 0; for (; t.get(a, r) && a > 0 && l++ < Pe.MAX_PIXEL_DRIFT; ) a--; let h = a, u = 0, d = s.length; for (let e = i; h < n; h++) { if (t.get(h, r) !== e) o[u]++; else { if (u === d - 1) { if ( Pe.patternMatchVariance(o, s, Pe.MAX_INDIVIDUAL_VARIANCE) < Pe.MAX_AVG_VARIANCE ) return new Int32Array([a, h]); (a += o[0] + o[1]), c.arraycopy(o, 2, o, 0, u - 1), (o[u - 1] = 0), (o[u] = 0), u--; } else u++; (o[u] = 1), (e = !e); } } return u === d - 1 && Pe.patternMatchVariance(o, s, Pe.MAX_INDIVIDUAL_VARIANCE) < Pe.MAX_AVG_VARIANCE ? new Int32Array([a, h - 1]) : null; } static patternMatchVariance(t, e, r) { let n = t.length, i = 0, s = 0; for (let r = 0; r < n; r++) (i += t[r]), (s += e[r]); if (i < s) return 1 / 0; let o = i / s; r *= o; let a = 0; for (let i = 0; i < n; i++) { let n = t[i], s = e[i] * o, l = n > s ? n - s : s - n; if (l > r) return 1 / 0; a += l; } return a / i; } } (Pe.INDEXES_START_PATTERN = Int32Array.from([0, 4, 1, 5])), (Pe.INDEXES_STOP_PATTERN = Int32Array.from([6, 2, 7, 3])), (Pe.MAX_AVG_VARIANCE = 0.42), (Pe.MAX_INDIVIDUAL_VARIANCE = 0.8), (Pe.START_PATTERN = Int32Array.from([8, 1, 1, 1, 1, 1, 1, 3])), (Pe.STOP_PATTERN = Int32Array.from([7, 1, 1, 3, 1, 1, 1, 2, 1])), (Pe.MAX_PIXEL_DRIFT = 3), (Pe.MAX_PATTERN_DRIFT = 5), (Pe.SKIPPED_ROW_COUNT_MAX = 25), (Pe.ROW_STEP = 5), (Pe.BARCODE_MIN_HEIGHT = 10); class Le { constructor(t, e) { if (0 === e.length) throw new o(); this.field = t; let r = e.length; if (r > 1 && 0 === e[0]) { let t = 1; for (; t < r && 0 === e[t]; ) t++; t === r ? (this.coefficients = new Int32Array([0])) : ((this.coefficients = new Int32Array(r - t)), c.arraycopy(e, t, this.coefficients, 0, this.coefficients.length)); } else this.coefficients = e; } getCoefficients() { return this.coefficients; } getDegree() { return this.coefficients.length - 1; } isZero() { return 0 === this.coefficients[0]; } getCoefficient(t) { return this.coefficients[this.coefficients.length - 1 - t]; } evaluateAt(t) { if (0 === t) return this.getCoefficient(0); if (1 === t) { let t = 0; for (let e of this.coefficients) t = this.field.add(t, e); return t; } let e = this.coefficients[0], r = this.coefficients.length; for (let n = 1; n < r; n++) e = this.field.add(this.field.multiply(t, e), this.coefficients[n]); return e; } add(t) { if (!this.field.equals(t.field)) throw new o("ModulusPolys do not have same ModulusGF field"); if (this.isZero()) return t; if (t.isZero()) return this; let e = this.coefficients, r = t.coefficients; if (e.length > r.length) { let t = e; (e = r), (r = t); } let n = new Int32Array(r.length), i = r.length - e.length; c.arraycopy(r, 0, n, 0, i); for (let t = i; t < r.length; t++) n[t] = this.field.add(e[t - i], r[t]); return new Le(this.field, n); } subtract(t) { if (!this.field.equals(t.field)) throw new o("ModulusPolys do not have same ModulusGF field"); return t.isZero() ? this : this.add(t.negative()); } multiply(t) { return t instanceof Le ? this.multiplyOther(t) : this.multiplyScalar(t); } multiplyOther(t) { if (!this.field.equals(t.field)) throw new o("ModulusPolys do not have same ModulusGF field"); if (this.isZero() || t.isZero()) return new Le(this.field, new Int32Array([0])); let e = this.coefficients, r = e.length, n = t.coefficients, i = n.length, s = new Int32Array(r + i - 1); for (let t = 0; t < r; t++) { let r = e[t]; for (let e = 0; e < i; e++) s[t + e] = this.field.add(s[t + e], this.field.multiply(r, n[e])); } return new Le(this.field, s); } negative() { let t = this.coefficients.length, e = new Int32Array(t); for (let r = 0; r < t; r++) e[r] = this.field.subtract(0, this.coefficients[r]); return new Le(this.field, e); } multiplyScalar(t) { if (0 === t) return new Le(this.field, new Int32Array([0])); if (1 === t) return this; let e = this.coefficients.length, r = new Int32Array(e); for (let n = 0; n < e; n++) r[n] = this.field.multiply(this.coefficients[n], t); return new Le(this.field, r); } multiplyByMonomial(t, e) { if (t < 0) throw new o(); if (0 === e) return new Le(this.field, new Int32Array([0])); let r = this.coefficients.length, n = new Int32Array(r + t); for (let t = 0; t < r; t++) n[t] = this.field.multiply(this.coefficients[t], e); return new Le(this.field, n); } toString() { let t = new p(); for (let e = this.getDegree(); e >= 0; e--) { let r = this.getCoefficient(e); 0 !== r && (r < 0 ? (t.append(" - "), (r = -r)) : t.length() > 0 && t.append(" + "), (0 !== e && 1 === r) || t.append(r), 0 !== e && (1 === e ? t.append("x") : (t.append("x^"), t.append(e)))); } return t.toString(); } } class Fe { add(t, e) { return (t + e) % this.modulus; } subtract(t, e) { return (this.modulus + t - e) % this.modulus; } exp(t) { return this.expTable[t]; } log(t) { if (0 === t) throw new o(); return this.logTable[t]; } inverse(t) { if (0 === t) throw new K(); return this.expTable[this.modulus - this.logTable[t] - 1]; } multiply(t, e) { return 0 === t || 0 === e ? 0 : this.expTable[ (this.logTable[t] + this.logTable[e]) % (this.modulus - 1) ]; } getSize() { return this.modulus; } equals(t) { return t === this; } } class ve extends Fe { constructor(t, e) { super(), (this.modulus = t), (this.expTable = new Int32Array(t)), (this.logTable = new Int32Array(t)); let r = 1; for (let n = 0; n < t; n++) (this.expTable[n] = r), (r = (r * e) % t); for (let e = 0; e < t - 1; e++) this.logTable[this.expTable[e]] = e; (this.zero = new Le(this, new Int32Array([0]))), (this.one = new Le(this, new Int32Array([1]))); } getZero() { return this.zero; } getOne() { return this.one; } buildMonomial(t, e) { if (t < 0) throw new o(); if (0 === e) return this.zero; let r = new Int32Array(t + 1); return (r[0] = e), new Le(this, r); } } ve.PDF417_GF = new ve(be.NUMBER_OF_CODEWORDS, 3); class ke { constructor() { this.field = ve.PDF417_GF; } decode(t, e, r) { let n = new Le(this.field, t), i = new Int32Array(e), s = !1; for (let t = e; t > 0; t--) { let r = n.evaluateAt(this.field.exp(t)); (i[e - t] = r), 0 !== r && (s = !0); } if (!s) return 0; let o = this.field.getOne(); if (null != r) for (const e of r) { let r = this.field.exp(t.length - 1 - e), n = new Le( this.field, new Int32Array([this.field.subtract(0, r), 1]) ); o = o.multiply(n); } let a = new Le(this.field, i), h = this.runEuclideanAlgorithm(this.field.buildMonomial(e, 1), a, e), c = h[0], u = h[1], d = this.findErrorLocations(c), g = this.findErrorMagnitudes(u, c, d); for (let e = 0; e < d.length; e++) { let r = t.length - 1 - this.field.log(d[e]); if (r < 0) throw l.getChecksumInstance(); t[r] = this.field.subtract(t[r], g[e]); } return d.length; } runEuclideanAlgorithm(t, e, r) { if (t.getDegree() < e.getDegree()) { let r = t; (t = e), (e = r); } let n = t, i = e, s = this.field.getZero(), o = this.field.getOne(); for (; i.getDegree() >= Math.round(r / 2); ) { let t = n, e = s; if (((s = o), (n = i).isZero())) throw l.getChecksumInstance(); i = t; let r = this.field.getZero(), a = n.getCoefficient(n.getDegree()), h = this.field.inverse(a); for (; i.getDegree() >= n.getDegree() && !i.isZero(); ) { let t = i.getDegree() - n.getDegree(), e = this.field.multiply(i.getCoefficient(i.getDegree()), h); (r = r.add(this.field.buildMonomial(t, e))), (i = i.subtract(n.multiplyByMonomial(t, e))); } o = r.multiply(s).subtract(e).negative(); } let a = o.getCoefficient(0); if (0 === a) throw l.getChecksumInstance(); let h = this.field.inverse(a); return [o.multiply(h), i.multiply(h)]; } findErrorLocations(t) { let e = t.getDegree(), r = new Int32Array(e), n = 0; for (let i = 1; i < this.field.getSize() && n < e; i++) 0 === t.evaluateAt(i) && ((r[n] = this.field.inverse(i)), n++); if (n !== e) throw l.getChecksumInstance(); return r; } findErrorMagnitudes(t, e, r) { let n = e.getDegree(), i = new Int32Array(n); for (let t = 1; t <= n; t++) i[n - t] = this.field.multiply(t, e.getCoefficient(t)); let s = new Le(this.field, i), o = r.length, a = new Int32Array(o); for (let e = 0; e < o; e++) { let n = this.field.inverse(r[e]), i = this.field.subtract(0, t.evaluateAt(n)), o = this.field.inverse(s.evaluateAt(n)); a[e] = this.field.multiply(i, o); } return a; } } class xe { constructor(t, e, r, n, i) { t instanceof xe ? this.constructor_2(t) : this.constructor_1(t, e, r, n, i); } constructor_1(t, e, r, n, i) { const s = null == e || null == r, o = null == n || null == i; if (s && o) throw new R(); s ? ((e = new rt(0, n.getY())), (r = new rt(0, i.getY()))) : o && ((n = new rt(t.getWidth() - 1, e.getY())), (i = new rt(t.getWidth() - 1, r.getY()))), (this.image = t), (this.topLeft = e), (this.bottomLeft = r), (this.topRight = n), (this.bottomRight = i), (this.minX = Math.trunc(Math.min(e.getX(), r.getX()))), (this.maxX = Math.trunc(Math.max(n.getX(), i.getX()))), (this.minY = Math.trunc(Math.min(e.getY(), n.getY()))), (this.maxY = Math.trunc(Math.max(r.getY(), i.getY()))); } constructor_2(t) { (this.image = t.image), (this.topLeft = t.getTopLeft()), (this.bottomLeft = t.getBottomLeft()), (this.topRight = t.getTopRight()), (this.bottomRight = t.getBottomRight()), (this.minX = t.getMinX()), (this.maxX = t.getMaxX()), (this.minY = t.getMinY()), (this.maxY = t.getMaxY()); } static merge(t, e) { return null == t ? e : null == e ? t : new xe(t.image, t.topLeft, t.bottomLeft, e.topRight, e.bottomRight); } addMissingRows(t, e, r) { let n = this.topLeft, i = this.bottomLeft, s = this.topRight, o = this.bottomRight; if (t > 0) { let e = r ? this.topLeft : this.topRight, i = Math.trunc(e.getY() - t); i < 0 && (i = 0); let o = new rt(e.getX(), i); r ? (n = o) : (s = o); } if (e > 0) { let t = r ? this.bottomLeft : this.bottomRight, n = Math.trunc(t.getY() + e); n >= this.image.getHeight() && (n = this.image.getHeight() - 1); let s = new rt(t.getX(), n); r ? (i = s) : (o = s); } return new xe(this.image, n, i, s, o); } getMinX() { return this.minX; } getMaxX() { return this.maxX; } getMinY() { return this.minY; } getMaxY() { return this.maxY; } getTopLeft() { return this.topLeft; } getTopRight() { return this.topRight; } getBottomLeft() { return this.bottomLeft; } getBottomRight() { return this.bottomRight; } } class Ve { constructor(t, e, r, n) { (this.columnCount = t), (this.errorCorrectionLevel = n), (this.rowCountUpperPart = e), (this.rowCountLowerPart = r), (this.rowCount = e + r); } getColumnCount() { return this.columnCount; } getErrorCorrectionLevel() { return this.errorCorrectionLevel; } getRowCount() { return this.rowCount; } getRowCountUpperPart() { return this.rowCountUpperPart; } getRowCountLowerPart() { return this.rowCountLowerPart; } } class Ue { constructor() { this.buffer = ""; } static form(t, e) { let r = -1; return t.replace( /%(-)?(0?[0-9]+)?([.][0-9]+)?([#][0-9]+)?([scfpexd%])/g, function (t, n, i, s, o, a) { if ("%%" === t) return "%"; if (void 0 === e[++r]) return; t = s ? parseInt(s.substr(1)) : void 0; let l, h = o ? parseInt(o.substr(1)) : void 0; switch (a) { case "s": l = e[r]; break; case "c": l = e[r][0]; break; case "f": l = parseFloat(e[r]).toFixed(t); break; case "p": l = parseFloat(e[r]).toPrecision(t); break; case "e": l = parseFloat(e[r]).toExponential(t); break; case "x": l = parseInt(e[r]).toString(h || 16); break; case "d": l = parseFloat(parseInt(e[r], h || 10).toPrecision(t)).toFixed(0); } l = "object" == typeof l ? JSON.stringify(l) : (+l).toString(h); let c = parseInt(i), u = i && i[0] + "" == "0" ? "0" : " "; for (; l.length < c; ) l = void 0 !== n ? l + u : u + l; return l; } ); } format(t, ...e) { this.buffer += Ue.form(t, e); } toString() { return this.buffer; } } class He { constructor(t) { (this.boundingBox = new xe(t)), (this.codewords = new Array(t.getMaxY() - t.getMinY() + 1)); } getCodewordNearby(t) { let e = this.getCodeword(t); if (null != e) return e; for (let r = 1; r < He.MAX_NEARBY_DISTANCE; r++) { let n = this.imageRowToCodewordIndex(t) - r; if (n >= 0 && null != (e = this.codewords[n])) return e; if ( (n = this.imageRowToCodewordIndex(t) + r) < this.codewords.length && null != (e = this.codewords[n]) ) return e; } return null; } imageRowToCodewordIndex(t) { return t - this.boundingBox.getMinY(); } setCodeword(t, e) { this.codewords[this.imageRowToCodewordIndex(t)] = e; } getCodeword(t) { return this.codewords[this.imageRowToCodewordIndex(t)]; } getBoundingBox() { return this.boundingBox; } getCodewords() { return this.codewords; } toString() { const t = new Ue(); let e = 0; for (const r of this.codewords) null != r ? t.format("%3d: %3d|%3d%n", e++, r.getRowNumber(), r.getValue()) : t.format("%3d: | %n", e++); return t.toString(); } } He.MAX_NEARBY_DISTANCE = 5; class Ge { constructor() { this.values = new Map(); } setValue(t) { t = Math.trunc(t); let e = this.values.get(t); null == e && (e = 0), e++, this.values.set(t, e); } getValue() { let t = -1, e = new Array(); for (const [r, n] of this.values.entries()) { const i = { getKey: () => r, getValue: () => n }; i.getValue() > t ? ((t = i.getValue()), (e = []).push(i.getKey())) : i.getValue() === t && e.push(i.getKey()); } return be.toIntArray(e); } getConfidence(t) { return this.values.get(t); } } class Xe extends He { constructor(t, e) { super(t), (this._isLeft = e); } setRowNumbers() { for (let t of this.getCodewords()) null != t && t.setRowNumberAsRowIndicatorColumn(); } adjustCompleteIndicatorColumnRowNumbers(t) { let e = this.getCodewords(); this.setRowNumbers(), this.removeIncorrectCodewords(e, t); let r = this.getBoundingBox(), n = this._isLeft ? r.getTopLeft() : r.getTopRight(), i = this._isLeft ? r.getBottomLeft() : r.getBottomRight(), s = this.imageRowToCodewordIndex(Math.trunc(n.getY())), o = this.imageRowToCodewordIndex(Math.trunc(i.getY())), a = -1, l = 1, h = 0; for (let r = s; r < o; r++) { if (null == e[r]) continue; let n = e[r], i = n.getRowNumber() - a; if (0 === i) h++; else if (1 === i) (l = Math.max(l, h)), (h = 1), (a = n.getRowNumber()); else if (i < 0 || n.getRowNumber() >= t.getRowCount() || i > r) e[r] = null; else { let t, s = (t = l > 2 ? (l - 2) * i : i) >= r; for (let n = 1; n <= t && !s; n++) s = null != e[r - n]; s ? (e[r] = null) : ((a = n.getRowNumber()), (h = 1)); } } } getRowHeights() { let t = this.getBarcodeMetadata(); if (null == t) return null; this.adjustIncompleteIndicatorColumnRowNumbers(t); let e = new Int32Array(t.getRowCount()); for (let t of this.getCodewords()) if (null != t) { let r = t.getRowNumber(); if (r >= e.length) continue; e[r]++; } return e; } adjustIncompleteIndicatorColumnRowNumbers(t) { let e = this.getBoundingBox(), r = this._isLeft ? e.getTopLeft() : e.getTopRight(), n = this._isLeft ? e.getBottomLeft() : e.getBottomRight(), i = this.imageRowToCodewordIndex(Math.trunc(r.getY())), s = this.imageRowToCodewordIndex(Math.trunc(n.getY())), o = this.getCodewords(), a = -1; for (let e = i; e < s; e++) { if (null == o[e]) continue; let r = o[e]; r.setRowNumberAsRowIndicatorColumn(); let n = r.getRowNumber() - a; 0 === n || (1 === n ? (a = r.getRowNumber()) : r.getRowNumber() >= t.getRowCount() ? (o[e] = null) : (a = r.getRowNumber())); } } getBarcodeMetadata() { let t = this.getCodewords(), e = new Ge(), r = new Ge(), n = new Ge(), i = new Ge(); for (let s of t) { if (null == s) continue; s.setRowNumberAsRowIndicatorColumn(); let t = s.getValue() % 30, o = s.getRowNumber(); switch ((this._isLeft || (o += 2), o % 3)) { case 0: r.setValue(3 * t + 1); break; case 1: i.setValue(t / 3), n.setValue(t % 3); break; case 2: e.setValue(t + 1); } } if ( 0 === e.getValue().length || 0 === r.getValue().length || 0 === n.getValue().length || 0 === i.getValue().length || e.getValue()[0] < 1 || r.getValue()[0] + n.getValue()[0] < be.MIN_ROWS_IN_BARCODE || r.getValue()[0] + n.getValue()[0] > be.MAX_ROWS_IN_BARCODE ) return null; let s = new Ve( e.getValue()[0], r.getValue()[0], n.getValue()[0], i.getValue()[0] ); return this.removeIncorrectCodewords(t, s), s; } removeIncorrectCodewords(t, e) { for (let r = 0; r < t.length; r++) { let n = t[r]; if (null == t[r]) continue; let i = n.getValue() % 30, s = n.getRowNumber(); if (s > e.getRowCount()) t[r] = null; else switch ((this._isLeft || (s += 2), s % 3)) { case 0: 3 * i + 1 !== e.getRowCountUpperPart() && (t[r] = null); break; case 1: (Math.trunc(i / 3) === e.getErrorCorrectionLevel() && i % 3 === e.getRowCountLowerPart()) || (t[r] = null); break; case 2: i + 1 !== e.getColumnCount() && (t[r] = null); } } } isLeft() { return this._isLeft; } toString() { return "IsLeft: " + this._isLeft + "\n" + super.toString(); } } class We { constructor(t, e) { (this.ADJUST_ROW_NUMBER_SKIP = 2), (this.barcodeMetadata = t), (this.barcodeColumnCount = t.getColumnCount()), (this.boundingBox = e), (this.detectionResultColumns = new Array(this.barcodeColumnCount + 2)); } getDetectionResultColumns() { this.adjustIndicatorColumnRowNumbers(this.detectionResultColumns[0]), this.adjustIndicatorColumnRowNumbers( this.detectionResultColumns[this.barcodeColumnCount + 1] ); let t, e = be.MAX_CODEWORDS_IN_BARCODE; do { (t = e), (e = this.adjustRowNumbersAndGetCount()); } while (e > 0 && e < t); return this.detectionResultColumns; } adjustIndicatorColumnRowNumbers(t) { null != t && t.adjustCompleteIndicatorColumnRowNumbers(this.barcodeMetadata); } adjustRowNumbersAndGetCount() { let t = this.adjustRowNumbersByRow(); if (0 === t) return 0; for (let t = 1; t < this.barcodeColumnCount + 1; t++) { let e = this.detectionResultColumns[t].getCodewords(); for (let r = 0; r < e.length; r++) null != e[r] && (e[r].hasValidRowNumber() || this.adjustRowNumbers(t, r, e)); } return t; } adjustRowNumbersByRow() { return ( this.adjustRowNumbersFromBothRI(), this.adjustRowNumbersFromLRI() + this.adjustRowNumbersFromRRI() ); } adjustRowNumbersFromBothRI() { if ( null == this.detectionResultColumns[0] || null == this.detectionResultColumns[this.barcodeColumnCount + 1] ) return; let t = this.detectionResultColumns[0].getCodewords(), e = this.detectionResultColumns[ this.barcodeColumnCount + 1 ].getCodewords(); for (let r = 0; r < t.length; r++) if ( null != t[r] && null != e[r] && t[r].getRowNumber() === e[r].getRowNumber() ) for (let e = 1; e <= this.barcodeColumnCount; e++) { let n = this.detectionResultColumns[e].getCodewords()[r]; null != n && (n.setRowNumber(t[r].getRowNumber()), n.hasValidRowNumber() || (this.detectionResultColumns[e].getCodewords()[r] = null)); } } adjustRowNumbersFromRRI() { if (null == this.detectionResultColumns[this.barcodeColumnCount + 1]) return 0; let t = 0, e = this.detectionResultColumns[ this.barcodeColumnCount + 1 ].getCodewords(); for (let r = 0; r < e.length; r++) { if (null == e[r]) continue; let n = e[r].getRowNumber(), i = 0; for ( let e = this.barcodeColumnCount + 1; e > 0 && i < this.ADJUST_ROW_NUMBER_SKIP; e-- ) { let s = this.detectionResultColumns[e].getCodewords()[r]; null != s && ((i = We.adjustRowNumberIfValid(n, i, s)), s.hasValidRowNumber() || t++); } } return t; } adjustRowNumbersFromLRI() { if (null == this.detectionResultColumns[0]) return 0; let t = 0, e = this.detectionResultColumns[0].getCodewords(); for (let r = 0; r < e.length; r++) { if (null == e[r]) continue; let n = e[r].getRowNumber(), i = 0; for ( let e = 1; e < this.barcodeColumnCount + 1 && i < this.ADJUST_ROW_NUMBER_SKIP; e++ ) { let s = this.detectionResultColumns[e].getCodewords()[r]; null != s && ((i = We.adjustRowNumberIfValid(n, i, s)), s.hasValidRowNumber() || t++); } } return t; } static adjustRowNumberIfValid(t, e, r) { return null == r ? e : (r.hasValidRowNumber() || (r.isValidRowNumber(t) ? (r.setRowNumber(t), (e = 0)) : ++e), e); } adjustRowNumbers(t, e, r) { let n = r[e], i = this.detectionResultColumns[t - 1].getCodewords(), s = i; null != this.detectionResultColumns[t + 1] && (s = this.detectionResultColumns[t + 1].getCodewords()); let o = new Array(14); (o[2] = i[e]), (o[3] = s[e]), e > 0 && ((o[0] = r[e - 1]), (o[4] = i[e - 1]), (o[5] = s[e - 1])), e > 1 && ((o[8] = r[e - 2]), (o[10] = i[e - 2]), (o[11] = s[e - 2])), e < r.length - 1 && ((o[1] = r[e + 1]), (o[6] = i[e + 1]), (o[7] = s[e + 1])), e < r.length - 2 && ((o[9] = r[e + 2]), (o[12] = i[e + 2]), (o[13] = s[e + 2])); for (let t of o) if (We.adjustRowNumber(n, t)) return; } static adjustRowNumber(t, e) { return ( null != e && !(!e.hasValidRowNumber() || e.getBucket() !== t.getBucket()) && (t.setRowNumber(e.getRowNumber()), !0) ); } getBarcodeColumnCount() { return this.barcodeColumnCount; } getBarcodeRowCount() { return this.barcodeMetadata.getRowCount(); } getBarcodeECLevel() { return this.barcodeMetadata.getErrorCorrectionLevel(); } setBoundingBox(t) { this.boundingBox = t; } getBoundingBox() { return this.boundingBox; } setDetectionResultColumn(t, e) { this.detectionResultColumns[t] = e; } getDetectionResultColumn(t) { return this.detectionResultColumns[t]; } toString() { let t = this.detectionResultColumns[0]; null == t && (t = this.detectionResultColumns[this.barcodeColumnCount + 1]); let e = new Ue(); for (let r = 0; r < t.getCodewords().length; r++) { e.format("CW %3d:", r); for (let t = 0; t < this.barcodeColumnCount + 2; t++) { if (null == this.detectionResultColumns[t]) { e.format(" | "); continue; } let n = this.detectionResultColumns[t].getCodewords()[r]; null != n ? e.format(" %3d|%3d", n.getRowNumber(), n.getValue()) : e.format(" | "); } e.format("%n"); } return e.toString(); } } class ze { constructor(t, e, r, n) { (this.rowNumber = ze.BARCODE_ROW_UNKNOWN), (this.startX = Math.trunc(t)), (this.endX = Math.trunc(e)), (this.bucket = Math.trunc(r)), (this.value = Math.trunc(n)); } hasValidRowNumber() { return this.isValidRowNumber(this.rowNumber); } isValidRowNumber(t) { return t !== ze.BARCODE_ROW_UNKNOWN && this.bucket === (t % 3) * 3; } setRowNumberAsRowIndicatorColumn() { this.rowNumber = Math.trunc( 3 * Math.trunc(this.value / 30) + Math.trunc(this.bucket / 3) ); } getWidth() { return this.endX - this.startX; } getStartX() { return this.startX; } getEndX() { return this.endX; } getBucket() { return this.bucket; } getValue() { return this.value; } getRowNumber() { return this.rowNumber; } setRowNumber(t) { this.rowNumber = t; } toString() { return this.rowNumber + "|" + this.value; } } ze.BARCODE_ROW_UNKNOWN = -1; class Ye { static initialize() { for (let t = 0; t < be.SYMBOL_TABLE.length; t++) { let e = be.SYMBOL_TABLE[t], r = 1 & e; for (let n = 0; n < be.BARS_IN_MODULE; n++) { let i = 0; for (; (1 & e) === r; ) (i += 1), (e >>= 1); (r = 1 & e), Ye.RATIOS_TABLE[t] || (Ye.RATIOS_TABLE[t] = new Array(be.BARS_IN_MODULE)), (Ye.RATIOS_TABLE[t][be.BARS_IN_MODULE - n - 1] = Math.fround( i / be.MODULES_IN_CODEWORD )); } } this.bSymbolTableReady = !0; } static getDecodedValue(t) { let e = Ye.getDecodedCodewordValue(Ye.sampleBitCounts(t)); return -1 !== e ? e : Ye.getClosestDecodedValue(t); } static sampleBitCounts(t) { let e = tt.sum(t), r = new Int32Array(be.BARS_IN_MODULE), n = 0, i = 0; for (let s = 0; s < be.MODULES_IN_CODEWORD; s++) { let o = e / (2 * be.MODULES_IN_CODEWORD) + (s * e) / be.MODULES_IN_CODEWORD; i + t[n] <= o && ((i += t[n]), n++), r[n]++; } return r; } static getDecodedCodewordValue(t) { let e = Ye.getBitValue(t); return -1 === be.getCodeword(e) ? -1 : e; } static getBitValue(t) { let e = 0; for (let r = 0; r < t.length; r++) for (let n = 0; n < t[r]; n++) e = (e << 1) | (r % 2 == 0 ? 1 : 0); return Math.trunc(e); } static getClosestDecodedValue(t) { let e = tt.sum(t), r = new Array(be.BARS_IN_MODULE); if (e > 1) for (let n = 0; n < r.length; n++) r[n] = Math.fround(t[n] / e); let n = et.MAX_VALUE, i = -1; this.bSymbolTableReady || Ye.initialize(); for (let t = 0; t < Ye.RATIOS_TABLE.length; t++) { let e = 0, s = Ye.RATIOS_TABLE[t]; for (let t = 0; t < be.BARS_IN_MODULE; t++) { let i = Math.fround(s[t] - r[t]); if ((e += Math.fround(i * i)) >= n) break; } e < n && ((n = e), (i = be.SYMBOL_TABLE[t])); } return i; } } (Ye.bSymbolTableReady = !1), (Ye.RATIOS_TABLE = new Array(be.SYMBOL_TABLE.length).map( (t) => new Array(be.BARS_IN_MODULE) )); class Ze { constructor() { (this.segmentCount = -1), (this.fileSize = -1), (this.timestamp = -1), (this.checksum = -1); } getSegmentIndex() { return this.segmentIndex; } setSegmentIndex(t) { this.segmentIndex = t; } getFileId() { return this.fileId; } setFileId(t) { this.fileId = t; } getOptionalData() { return this.optionalData; } setOptionalData(t) { this.optionalData = t; } isLastSegment() { return this.lastSegment; } setLastSegment(t) { this.lastSegment = t; } getSegmentCount() { return this.segmentCount; } setSegmentCount(t) { this.segmentCount = t; } getSender() { return this.sender || null; } setSender(t) { this.sender = t; } getAddressee() { return this.addressee || null; } setAddressee(t) { this.addressee = t; } getFileName() { return this.fileName; } setFileName(t) { this.fileName = t; } getFileSize() { return this.fileSize; } setFileSize(t) { this.fileSize = t; } getChecksum() { return this.checksum; } setChecksum(t) { this.checksum = t; } getTimestamp() { return this.timestamp; } setTimestamp(t) { this.timestamp = t; } } class Ke { static parseLong(t, e) { return parseInt(t, e); } } class qe extends i {} qe.kind = "NullPointerException"; class Qe { writeBytes(t) { this.writeBytesOffset(t, 0, t.length); } writeBytesOffset(t, e, r) { if (null == t) throw new qe(); if (e < 0 || e > t.length || r < 0 || e + r > t.length || e + r < 0) throw new u(); if (0 !== r) for (let n = 0; n < r; n++) this.write(t[e + n]); } flush() {} close() {} } class je extends i {} class Je extends Qe { constructor(t = 32) { if ((super(), (this.count = 0), t < 0)) throw new o("Negative initial size: " + t); this.buf = new Uint8Array(t); } ensureCapacity(t) { t - this.buf.length > 0 && this.grow(t); } grow(t) { let e = this.buf.length << 1; if ((e - t < 0 && (e = t), e < 0)) { if (t < 0) throw new je(); e = f.MAX_VALUE; } this.buf = g.copyOfUint8Array(this.buf, e); } write(t) { this.ensureCapacity(this.count + 1), (this.buf[this.count] = t), (this.count += 1); } writeBytesOffset(t, e, r) { if (e < 0 || e > t.length || r < 0 || e + r - t.length > 0) throw new u(); this.ensureCapacity(this.count + r), c.arraycopy(t, e, this.buf, this.count, r), (this.count += r); } writeTo(t) { t.writeBytesOffset(this.buf, 0, this.count); } reset() { this.count = 0; } toByteArray() { return g.copyOfUint8Array(this.buf, this.count); } size() { return this.count; } toString(t) { return t ? "string" == typeof t ? this.toString_string(t) : this.toString_number(t) : this.toString_void(); } toString_void() { return new String(this.buf).toString(); } toString_string(t) { return new String(this.buf).toString(); } toString_number(t) { return new String(this.buf).toString(); } close() {} } function $e() { if ("undefined" != typeof window) return window.BigInt || null; if ("undefined" != typeof global) return global.BigInt || null; if ("undefined" != typeof self) return self.BigInt || null; throw new Error("Can't search globals for BigInt!"); } let tr; function er(t) { if ((void 0 === tr && (tr = $e()), null === tr)) throw new Error("BigInt is not supported!"); return tr(t); } !(function (t) { (t[(t.ALPHA = 0)] = "ALPHA"), (t[(t.LOWER = 1)] = "LOWER"), (t[(t.MIXED = 2)] = "MIXED"), (t[(t.PUNCT = 3)] = "PUNCT"), (t[(t.ALPHA_SHIFT = 4)] = "ALPHA_SHIFT"), (t[(t.PUNCT_SHIFT = 5)] = "PUNCT_SHIFT"); })(X || (X = {})); class rr { static decode(t, e) { let r = new p(""), n = m.ISO8859_1; r.enableDecoding(n); let i = 1, s = t[i++], o = new Ze(); for (; i < t[0]; ) { switch (s) { case rr.TEXT_COMPACTION_MODE_LATCH: i = rr.textCompaction(t, i, r); break; case rr.BYTE_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH_6: i = rr.byteCompaction(s, t, n, i, r); break; case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE: r.append(t[i++]); break; case rr.NUMERIC_COMPACTION_MODE_LATCH: i = rr.numericCompaction(t, i, r); break; case rr.ECI_CHARSET: m.getCharacterSetECIByValue(t[i++]); break; case rr.ECI_GENERAL_PURPOSE: i += 2; break; case rr.ECI_USER_DEFINED: i++; break; case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK: i = rr.decodeMacroBlock(t, i, o); break; case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD: case rr.MACRO_PDF417_TERMINATOR: throw new E(); default: i--, (i = rr.textCompaction(t, i, r)); } if (!(i < t.length)) throw E.getFormatInstance(); s = t[i++]; } if (0 === r.length()) throw E.getFormatInstance(); let a = new z(null, r.toString(), null, e); return a.setOther(o), a; } static decodeMacroBlock(t, e, r) { if (e + rr.NUMBER_OF_SEQUENCE_CODEWORDS > t[0]) throw E.getFormatInstance(); let n = new Int32Array(rr.NUMBER_OF_SEQUENCE_CODEWORDS); for (let r = 0; r < rr.NUMBER_OF_SEQUENCE_CODEWORDS; r++, e++) n[r] = t[e]; r.setSegmentIndex( f.parseInt(rr.decodeBase900toBase10(n, rr.NUMBER_OF_SEQUENCE_CODEWORDS)) ); let i = new p(); (e = rr.textCompaction(t, e, i)), r.setFileId(i.toString()); let s = -1; for ( t[e] === rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD && (s = e + 1); e < t[0]; ) switch (t[e]) { case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD: switch (t[++e]) { case rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME: let n = new p(); (e = rr.textCompaction(t, e + 1, n)), r.setFileName(n.toString()); break; case rr.MACRO_PDF417_OPTIONAL_FIELD_SENDER: let i = new p(); (e = rr.textCompaction(t, e + 1, i)), r.setSender(i.toString()); break; case rr.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE: let s = new p(); (e = rr.textCompaction(t, e + 1, s)), r.setAddressee(s.toString()); break; case rr.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT: let o = new p(); (e = rr.numericCompaction(t, e + 1, o)), r.setSegmentCount(f.parseInt(o.toString())); break; case rr.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP: let a = new p(); (e = rr.numericCompaction(t, e + 1, a)), r.setTimestamp(Ke.parseLong(a.toString())); break; case rr.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM: let l = new p(); (e = rr.numericCompaction(t, e + 1, l)), r.setChecksum(f.parseInt(l.toString())); break; case rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE: let h = new p(); (e = rr.numericCompaction(t, e + 1, h)), r.setFileSize(Ke.parseLong(h.toString())); break; default: throw E.getFormatInstance(); } break; case rr.MACRO_PDF417_TERMINATOR: e++, r.setLastSegment(!0); break; default: throw E.getFormatInstance(); } if (-1 !== s) { let n = e - s; r.isLastSegment() && n--, r.setOptionalData(g.copyOfRange(t, s, s + n)); } return e; } static textCompaction(t, e, r) { let n = new Int32Array(2 * (t[0] - e)), i = new Int32Array(2 * (t[0] - e)), s = 0, o = !1; for (; e < t[0] && !o; ) { let r = t[e++]; if (r < rr.TEXT_COMPACTION_MODE_LATCH) (n[s] = r / 30), (n[s + 1] = r % 30), (s += 2); else switch (r) { case rr.TEXT_COMPACTION_MODE_LATCH: n[s++] = rr.TEXT_COMPACTION_MODE_LATCH; break; case rr.BYTE_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH_6: case rr.NUMERIC_COMPACTION_MODE_LATCH: case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK: case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD: case rr.MACRO_PDF417_TERMINATOR: e--, (o = !0); break; case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE: (n[s] = rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE), (r = t[e++]), (i[s] = r), s++; } } return rr.decodeTextCompaction(n, i, s, r), e; } static decodeTextCompaction(t, e, r, n) { let i = X.ALPHA, s = X.ALPHA, o = 0; for (; o < r; ) { let r = t[o], a = ""; switch (i) { case X.ALPHA: if (r < 26) a = String.fromCharCode(65 + r); else switch (r) { case 26: a = " "; break; case rr.LL: i = X.LOWER; break; case rr.ML: i = X.MIXED; break; case rr.PS: (s = i), (i = X.PUNCT_SHIFT); break; case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE: n.append(e[o]); break; case rr.TEXT_COMPACTION_MODE_LATCH: i = X.ALPHA; } break; case X.LOWER: if (r < 26) a = String.fromCharCode(97 + r); else switch (r) { case 26: a = " "; break; case rr.AS: (s = i), (i = X.ALPHA_SHIFT); break; case rr.ML: i = X.MIXED; break; case rr.PS: (s = i), (i = X.PUNCT_SHIFT); break; case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE: n.append(e[o]); break; case rr.TEXT_COMPACTION_MODE_LATCH: i = X.ALPHA; } break; case X.MIXED: if (r < rr.PL) a = rr.MIXED_CHARS[r]; else switch (r) { case rr.PL: i = X.PUNCT; break; case 26: a = " "; break; case rr.LL: i = X.LOWER; break; case rr.AL: i = X.ALPHA; break; case rr.PS: (s = i), (i = X.PUNCT_SHIFT); break; case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE: n.append(e[o]); break; case rr.TEXT_COMPACTION_MODE_LATCH: i = X.ALPHA; } break; case X.PUNCT: if (r < rr.PAL) a = rr.PUNCT_CHARS[r]; else switch (r) { case rr.PAL: i = X.ALPHA; break; case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE: n.append(e[o]); break; case rr.TEXT_COMPACTION_MODE_LATCH: i = X.ALPHA; } break; case X.ALPHA_SHIFT: if (((i = s), r < 26)) a = String.fromCharCode(65 + r); else switch (r) { case 26: a = " "; break; case rr.TEXT_COMPACTION_MODE_LATCH: i = X.ALPHA; } break; case X.PUNCT_SHIFT: if (((i = s), r < rr.PAL)) a = rr.PUNCT_CHARS[r]; else switch (r) { case rr.PAL: i = X.ALPHA; break; case rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE: n.append(e[o]); break; case rr.TEXT_COMPACTION_MODE_LATCH: i = X.ALPHA; } } "" !== a && n.append(a), o++; } } static byteCompaction(t, e, r, n, i) { let s = new Je(), o = 0, a = 0, l = !1; switch (t) { case rr.BYTE_COMPACTION_MODE_LATCH: let r = new Int32Array(6), i = e[n++]; for (; n < e[0] && !l; ) switch (((r[o++] = i), (a = 900 * a + i), (i = e[n++]))) { case rr.TEXT_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH: case rr.NUMERIC_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH_6: case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK: case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD: case rr.MACRO_PDF417_TERMINATOR: n--, (l = !0); break; default: if (o % 5 == 0 && o > 0) { for (let t = 0; t < 6; ++t) s.write(Number(er(a) >> er(8 * (5 - t)))); (a = 0), (o = 0); } } n === e[0] && i < rr.TEXT_COMPACTION_MODE_LATCH && (r[o++] = i); for (let t = 0; t < o; t++) s.write(r[t]); break; case rr.BYTE_COMPACTION_MODE_LATCH_6: for (; n < e[0] && !l; ) { let t = e[n++]; if (t < rr.TEXT_COMPACTION_MODE_LATCH) o++, (a = 900 * a + t); else switch (t) { case rr.TEXT_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH: case rr.NUMERIC_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH_6: case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK: case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD: case rr.MACRO_PDF417_TERMINATOR: n--, (l = !0); } if (o % 5 == 0 && o > 0) { for (let t = 0; t < 6; ++t) s.write(Number(er(a) >> er(8 * (5 - t)))); (a = 0), (o = 0); } } } return i.append(I.decode(s.toByteArray(), r)), n; } static numericCompaction(t, e, r) { let n = 0, i = !1, s = new Int32Array(rr.MAX_NUMERIC_CODEWORDS); for (; e < t[0] && !i; ) { let o = t[e++]; if ((e === t[0] && (i = !0), o < rr.TEXT_COMPACTION_MODE_LATCH)) (s[n] = o), n++; else switch (o) { case rr.TEXT_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH: case rr.BYTE_COMPACTION_MODE_LATCH_6: case rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK: case rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD: case rr.MACRO_PDF417_TERMINATOR: e--, (i = !0); } (n % rr.MAX_NUMERIC_CODEWORDS == 0 || o === rr.NUMERIC_COMPACTION_MODE_LATCH || i) && n > 0 && (r.append(rr.decodeBase900toBase10(s, n)), (n = 0)); } return e; } static decodeBase900toBase10(t, e) { let r = er(0); for (let n = 0; n < e; n++) r += rr.EXP900[e - n - 1] * er(t[n]); let n = r.toString(); if ("1" !== n.charAt(0)) throw new E(); return n.substring(1); } } (rr.TEXT_COMPACTION_MODE_LATCH = 900), (rr.BYTE_COMPACTION_MODE_LATCH = 901), (rr.NUMERIC_COMPACTION_MODE_LATCH = 902), (rr.BYTE_COMPACTION_MODE_LATCH_6 = 924), (rr.ECI_USER_DEFINED = 925), (rr.ECI_GENERAL_PURPOSE = 926), (rr.ECI_CHARSET = 927), (rr.BEGIN_MACRO_PDF417_CONTROL_BLOCK = 928), (rr.BEGIN_MACRO_PDF417_OPTIONAL_FIELD = 923), (rr.MACRO_PDF417_TERMINATOR = 922), (rr.MODE_SHIFT_TO_BYTE_COMPACTION_MODE = 913), (rr.MAX_NUMERIC_CODEWORDS = 15), (rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_NAME = 0), (rr.MACRO_PDF417_OPTIONAL_FIELD_SEGMENT_COUNT = 1), (rr.MACRO_PDF417_OPTIONAL_FIELD_TIME_STAMP = 2), (rr.MACRO_PDF417_OPTIONAL_FIELD_SENDER = 3), (rr.MACRO_PDF417_OPTIONAL_FIELD_ADDRESSEE = 4), (rr.MACRO_PDF417_OPTIONAL_FIELD_FILE_SIZE = 5), (rr.MACRO_PDF417_OPTIONAL_FIELD_CHECKSUM = 6), (rr.PL = 25), (rr.LL = 27), (rr.AS = 27), (rr.ML = 28), (rr.AL = 28), (rr.PS = 29), (rr.PAL = 29), (rr.PUNCT_CHARS = ";<>@[\\]_`~!\r\t,:\n-.$/\"|*()?{}'"), (rr.MIXED_CHARS = "0123456789&\r\t,:#-.$/+%*=^"), (rr.EXP900 = $e() ? (function () { let t = []; t[0] = er(1); let e = er(900); t[1] = e; for (let r = 2; r < 16; r++) t[r] = t[r - 1] * e; return t; })() : []), (rr.NUMBER_OF_SEQUENCE_CODEWORDS = 2); class nr { constructor() {} static decode(t, e, r, n, i, s, o) { let a, l = new xe(t, e, r, n, i), h = null, c = null; for (let r = !0; ; r = !1) { if ( (null != e && (h = nr.getRowIndicatorColumn(t, l, e, !0, s, o)), null != n && (c = nr.getRowIndicatorColumn(t, l, n, !1, s, o)), null == (a = nr.merge(h, c))) ) throw R.getNotFoundInstance(); let i = a.getBoundingBox(); if ( !r || null == i || !(i.getMinY() < l.getMinY() || i.getMaxY() > l.getMaxY()) ) break; l = i; } a.setBoundingBox(l); let u = a.getBarcodeColumnCount() + 1; a.setDetectionResultColumn(0, h), a.setDetectionResultColumn(u, c); let d = null != h; for (let e = 1; e <= u; e++) { let r, n = d ? e : u - e; if (void 0 !== a.getDetectionResultColumn(n)) continue; (r = 0 === n || n === u ? new Xe(l, 0 === n) : new He(l)), a.setDetectionResultColumn(n, r); let i = -1, h = i; for (let e = l.getMinY(); e <= l.getMaxY(); e++) { if ((i = nr.getStartColumn(a, n, e, d)) < 0 || i > l.getMaxX()) { if (-1 === h) continue; i = h; } let c = nr.detectCodeword(t, l.getMinX(), l.getMaxX(), d, i, e, s, o); null != c && (r.setCodeword(e, c), (h = i), (s = Math.min(s, c.getWidth())), (o = Math.max(o, c.getWidth()))); } } return nr.createDecoderResult(a); } static merge(t, e) { if (null == t && null == e) return null; let r = nr.getBarcodeMetadata(t, e); if (null == r) return null; let n = xe.merge(nr.adjustBoundingBox(t), nr.adjustBoundingBox(e)); return new We(r, n); } static adjustBoundingBox(t) { if (null == t) return null; let e = t.getRowHeights(); if (null == e) return null; let r = nr.getMax(e), n = 0; for (let t of e) if (((n += r - t), t > 0)) break; let i = t.getCodewords(); for (let t = 0; n > 0 && null == i[t]; t++) n--; let s = 0; for (let t = e.length - 1; t >= 0 && ((s += r - e[t]), !(e[t] > 0)); t--); for (let t = i.length - 1; s > 0 && null == i[t]; t--) s--; return t.getBoundingBox().addMissingRows(n, s, t.isLeft()); } static getMax(t) { let e = -1; for (let r of t) e = Math.max(e, r); return e; } static getBarcodeMetadata(t, e) { let r, n; return null == t || null == (r = t.getBarcodeMetadata()) ? null == e ? null : e.getBarcodeMetadata() : null == e || null == (n = e.getBarcodeMetadata()) ? r : r.getColumnCount() !== n.getColumnCount() && r.getErrorCorrectionLevel() !== n.getErrorCorrectionLevel() && r.getRowCount() !== n.getRowCount() ? null : r; } static getRowIndicatorColumn(t, e, r, n, i, s) { let o = new Xe(e, n); for (let a = 0; a < 2; a++) { let l = 0 === a ? 1 : -1, h = Math.trunc(Math.trunc(r.getX())); for ( let a = Math.trunc(Math.trunc(r.getY())); a <= e.getMaxY() && a >= e.getMinY(); a += l ) { let e = nr.detectCodeword(t, 0, t.getWidth(), n, h, a, i, s); null != e && (o.setCodeword(a, e), (h = n ? e.getStartX() : e.getEndX())); } } return o; } static adjustCodewordCount(t, e) { let r = e[0][1], n = r.getValue(), i = t.getBarcodeColumnCount() * t.getBarcodeRowCount() - nr.getNumberOfECCodeWords(t.getBarcodeECLevel()); if (0 === n.length) { if (i < 1 || i > be.MAX_CODEWORDS_IN_BARCODE) throw R.getNotFoundInstance(); r.setValue(i); } else n[0] !== i && r.setValue(i); } static createDecoderResult(t) { let e = nr.createBarcodeMatrix(t); nr.adjustCodewordCount(t, e); let r = new Array(), n = new Int32Array(t.getBarcodeRowCount() * t.getBarcodeColumnCount()), i = [], s = new Array(); for (let o = 0; o < t.getBarcodeRowCount(); o++) for (let a = 0; a < t.getBarcodeColumnCount(); a++) { let l = e[o][a + 1].getValue(), h = o * t.getBarcodeColumnCount() + a; 0 === l.length ? r.push(h) : 1 === l.length ? (n[h] = l[0]) : (s.push(h), i.push(l)); } let o = new Array(i.length); for (let t = 0; t < o.length; t++) o[t] = i[t]; return nr.createDecoderResultFromAmbiguousValues( t.getBarcodeECLevel(), n, be.toIntArray(r), be.toIntArray(s), o ); } static createDecoderResultFromAmbiguousValues(t, e, r, n, i) { let s = new Int32Array(n.length), o = 100; for (; o-- > 0; ) { for (let t = 0; t < s.length; t++) e[n[t]] = i[t][s[t]]; try { return nr.decodeCodewords(e, t, r); } catch (t) { if (!(t instanceof l)) throw t; } if (0 === s.length) throw l.getChecksumInstance(); for (let t = 0; t < s.length; t++) { if (s[t] < i[t].length - 1) { s[t]++; break; } if (((s[t] = 0), t === s.length - 1)) throw l.getChecksumInstance(); } } throw l.getChecksumInstance(); } static createBarcodeMatrix(t) { let e = Array.from( { length: t.getBarcodeRowCount() }, () => new Array(t.getBarcodeColumnCount() + 2) ); for (let t = 0; t < e.length; t++) for (let r = 0; r < e[t].length; r++) e[t][r] = new Ge(); let r = 0; for (let n of t.getDetectionResultColumns()) { if (null != n) for (let t of n.getCodewords()) if (null != t) { let n = t.getRowNumber(); if (n >= 0) { if (n >= e.length) continue; e[n][r].setValue(t.getValue()); } } r++; } return e; } static isValidBarcodeColumn(t, e) { return e >= 0 && e <= t.getBarcodeColumnCount() + 1; } static getStartColumn(t, e, r, n) { let i = n ? 1 : -1, s = null; if ( (nr.isValidBarcodeColumn(t, e - i) && (s = t.getDetectionResultColumn(e - i).getCodeword(r)), null != s) ) return n ? s.getEndX() : s.getStartX(); if (null != (s = t.getDetectionResultColumn(e).getCodewordNearby(r))) return n ? s.getStartX() : s.getEndX(); if ( (nr.isValidBarcodeColumn(t, e - i) && (s = t.getDetectionResultColumn(e - i).getCodewordNearby(r)), null != s) ) return n ? s.getEndX() : s.getStartX(); let o = 0; for (; nr.isValidBarcodeColumn(t, e - i); ) { e -= i; for (let r of t.getDetectionResultColumn(e).getCodewords()) if (null != r) return ( (n ? r.getEndX() : r.getStartX()) + i * o * (r.getEndX() - r.getStartX()) ); o++; } return n ? t.getBoundingBox().getMinX() : t.getBoundingBox().getMaxX(); } static detectCodeword(t, e, r, n, i, s, o, a) { i = nr.adjustCodewordStartColumn(t, e, r, n, i, s); let l, h = nr.getModuleBitCount(t, e, r, n, i, s); if (null == h) return null; let c = tt.sum(h); if (n) l = i + c; else { for (let t = 0; t < h.length / 2; t++) { let e = h[t]; (h[t] = h[h.length - 1 - t]), (h[h.length - 1 - t] = e); } i = (l = i) - c; } if (!nr.checkCodewordSkew(c, o, a)) return null; let u = Ye.getDecodedValue(h), d = be.getCodeword(u); return -1 === d ? null : new ze(i, l, nr.getCodewordBucketNumber(u), d); } static getModuleBitCount(t, e, r, n, i, s) { let o = i, a = new Int32Array(8), l = 0, h = n ? 1 : -1, c = n; for (; (n ? o < r : o >= e) && l < a.length; ) t.get(o, s) === c ? (a[l]++, (o += h)) : (l++, (c = !c)); return l === a.length || (o === (n ? r : e) && l === a.length - 1) ? a : null; } static getNumberOfECCodeWords(t) { return 2 << t; } static adjustCodewordStartColumn(t, e, r, n, i, s) { let o = i, a = n ? -1 : 1; for (let l = 0; l < 2; l++) { for (; (n ? o >= e : o < r) && n === t.get(o, s); ) { if (Math.abs(i - o) > nr.CODEWORD_SKEW_SIZE) return i; o += a; } (a = -a), (n = !n); } return o; } static checkCodewordSkew(t, e, r) { return e - nr.CODEWORD_SKEW_SIZE <= t && t <= r + nr.CODEWORD_SKEW_SIZE; } static decodeCodewords(t, e, r) { if (0 === t.length) throw E.getFormatInstance(); let n = 1 << (e + 1), i = nr.correctErrors(t, r, n); nr.verifyCodewordCount(t, n); let s = rr.decode(t, "" + e); return s.setErrorsCorrected(i), s.setErasures(r.length), s; } static correctErrors(t, e, r) { if ( (null != e && e.length > r / 2 + nr.MAX_ERRORS) || r < 0 || r > nr.MAX_EC_CODEWORDS ) throw l.getChecksumInstance(); return nr.errorCorrection.decode(t, r, e); } static verifyCodewordCount(t, e) { if (t.length < 4) throw E.getFormatInstance(); let r = t[0]; if (r > t.length) throw E.getFormatInstance(); if (0 === r) { if (!(e < t.length)) throw E.getFormatInstance(); t[0] = t.length - e; } } static getBitCountForCodeword(t) { let e = new Int32Array(8), r = 0, n = e.length - 1; for (; !((1 & t) !== r && ((r = 1 & t), --n < 0)); ) e[n]++, (t >>= 1); return e; } static getCodewordBucketNumber(t) { return t instanceof Int32Array ? this.getCodewordBucketNumber_Int32Array(t) : this.getCodewordBucketNumber_number(t); } static getCodewordBucketNumber_number(t) { return nr.getCodewordBucketNumber(nr.getBitCountForCodeword(t)); } static getCodewordBucketNumber_Int32Array(t) { return (t[0] - t[2] + t[4] - t[6] + 9) % 9; } static toString(t) { let e = new Ue(); for (let r = 0; r < t.length; r++) { e.format("Row %2d: ", r); for (let n = 0; n < t[r].length; n++) { let i = t[r][n]; 0 === i.getValue().length ? e.format(" ", null) : e.format( "%4d(%2d)", i.getValue()[0], i.getConfidence(i.getValue()[0]) ); } e.format("%n"); } return e.toString(); } } (nr.CODEWORD_SKEW_SIZE = 2), (nr.MAX_ERRORS = 3), (nr.MAX_EC_CODEWORDS = 512), (nr.errorCorrection = new ke()); class ir { decode(t, e = null) { let r = ir.decode(t, e, !1); if (null == r || 0 === r.length || null == r[0]) throw R.getNotFoundInstance(); return r[0]; } decodeMultiple(t, e = null) { try { return ir.decode(t, e, !0); } catch (t) { if (t instanceof E || t instanceof l) throw R.getNotFoundInstance(); throw t; } } static decode(t, e, r) { const n = new Array(), i = Pe.detectMultiple(t, e, r); for (const t of i.getPoints()) { const e = nr.decode( i.getBits(), t[4], t[5], t[6], t[7], ir.getMinCodewordWidth(t), ir.getMaxCodewordWidth(t) ), r = new F(e.getText(), e.getRawBytes(), void 0, t, k.PDF_417); r.putMetadata(W.ERROR_CORRECTION_LEVEL, e.getECLevel()); const s = e.getOther(); null != s && r.putMetadata(W.PDF417_EXTRA_METADATA, s), n.push(r); } return n.map((t) => t); } static getMaxWidth(t, e) { return null == t || null == e ? 0 : Math.trunc(Math.abs(t.getX() - e.getX())); } static getMinWidth(t, e) { return null == t || null == e ? f.MAX_VALUE : Math.trunc(Math.abs(t.getX() - e.getX())); } static getMaxCodewordWidth(t) { return Math.floor( Math.max( Math.max( ir.getMaxWidth(t[0], t[4]), (ir.getMaxWidth(t[6], t[2]) * be.MODULES_IN_CODEWORD) / be.MODULES_IN_STOP_PATTERN ), Math.max( ir.getMaxWidth(t[1], t[5]), (ir.getMaxWidth(t[7], t[3]) * be.MODULES_IN_CODEWORD) / be.MODULES_IN_STOP_PATTERN ) ) ); } static getMinCodewordWidth(t) { return Math.floor( Math.min( Math.min( ir.getMinWidth(t[0], t[4]), (ir.getMinWidth(t[6], t[2]) * be.MODULES_IN_CODEWORD) / be.MODULES_IN_STOP_PATTERN ), Math.min( ir.getMinWidth(t[1], t[5]), (ir.getMinWidth(t[7], t[3]) * be.MODULES_IN_CODEWORD) / be.MODULES_IN_STOP_PATTERN ) ) ); } reset() {} } class sr extends i {} sr.kind = "ReaderException"; class or { constructor(t, e) { (this.verbose = !0 === t), e && this.setHints(e); } decode(t, e) { return e && this.setHints(e), this.decodeInternal(t); } decodeWithState(t) { return ( (null !== this.readers && void 0 !== this.readers) || this.setHints(null), this.decodeInternal(t) ); } setHints(t) { this.hints = t; const e = null != t && void 0 !== t.get(C.TRY_HARDER), r = null == t ? null : t.get(C.POSSIBLE_FORMATS), n = new Array(); if (null != r) { const i = r.some( (t) => t === k.UPC_A || t === k.UPC_E || t === k.EAN_13 || t === k.EAN_8 || t === k.CODABAR || t === k.CODE_39 || t === k.CODE_93 || t === k.CODE_128 || t === k.ITF || t === k.RSS_14 || t === k.RSS_EXPANDED ); i && !e && n.push(new ee(t, this.verbose)), r.includes(k.QR_CODE) && n.push(new Me()), r.includes(k.DATA_MATRIX) && n.push(new ue()), r.includes(k.AZTEC) && n.push(new dt()), r.includes(k.PDF_417) && n.push(new ir()), i && e && n.push(new ee(t, this.verbose)); } 0 === n.length && (e || n.push(new ee(t, this.verbose)), n.push(new Me()), n.push(new ue()), n.push(new dt()), n.push(new ir()), e && n.push(new ee(t, this.verbose))), (this.readers = n); } reset() { if (null !== this.readers) for (const t of this.readers) t.reset(); } decodeInternal(t) { if (null === this.readers) throw new sr("No readers where selected, nothing can be read."); for (const e of this.readers) try { return e.decode(t, this.hints); } catch (t) { if (t instanceof sr) continue; } throw new R("No MultiFormat Readers were able to detect the code."); } } var ar; !(function (t) { (t[(t.ERROR_CORRECTION = 0)] = "ERROR_CORRECTION"), (t[(t.CHARACTER_SET = 1)] = "CHARACTER_SET"), (t[(t.DATA_MATRIX_SHAPE = 2)] = "DATA_MATRIX_SHAPE"), (t[(t.MIN_SIZE = 3)] = "MIN_SIZE"), (t[(t.MAX_SIZE = 4)] = "MAX_SIZE"), (t[(t.MARGIN = 5)] = "MARGIN"), (t[(t.PDF417_COMPACT = 6)] = "PDF417_COMPACT"), (t[(t.PDF417_COMPACTION = 7)] = "PDF417_COMPACTION"), (t[(t.PDF417_DIMENSIONS = 8)] = "PDF417_DIMENSIONS"), (t[(t.AZTEC_LAYERS = 9)] = "AZTEC_LAYERS"), (t[(t.QR_VERSION = 10)] = "QR_VERSION"); })(ar || (ar = {})); var lr = ar; class hr { constructor(t) { (this.field = t), (this.cachedGenerators = []), this.cachedGenerators.push(new Z(t, Int32Array.from([1]))); } buildGenerator(t) { const e = this.cachedGenerators; if (t >= e.length) { let r = e[e.length - 1]; const n = this.field; for (let i = e.length; i <= t; i++) { const t = r.multiply( new Z(n, Int32Array.from([1, n.exp(i - 1 + n.getGeneratorBase())])) ); e.push(t), (r = t); } } return e[t]; } encode(t, e) { if (0 === e) throw new o("No error correction bytes"); const r = t.length - e; if (r <= 0) throw new o("No data bytes provided"); const n = this.buildGenerator(e), i = new Int32Array(r); c.arraycopy(t, 0, i, 0, r); let s = new Z(this.field, i); const a = (s = s.multiplyByMonomial(e, 1)).divide(n)[1].getCoefficients(), l = e - a.length; for (let e = 0; e < l; e++) t[r + e] = 0; c.arraycopy(a, 0, t, r + l, a.length); } } class cr { constructor() {} static applyMaskPenaltyRule1(t) { return ( cr.applyMaskPenaltyRule1Internal(t, !0) + cr.applyMaskPenaltyRule1Internal(t, !1) ); } static applyMaskPenaltyRule2(t) { let e = 0; const r = t.getArray(), n = t.getWidth(), i = t.getHeight(); for (let t = 0; t < i - 1; t++) { const i = r[t]; for (let s = 0; s < n - 1; s++) { const n = i[s]; n === i[s + 1] && n === r[t + 1][s] && n === r[t + 1][s + 1] && e++; } } return cr.N2 * e; } static applyMaskPenaltyRule3(t) { let e = 0; const r = t.getArray(), n = t.getWidth(), i = t.getHeight(); for (let t = 0; t < i; t++) for (let s = 0; s < n; s++) { const o = r[t]; s + 6 < n && 1 === o[s] && 0 === o[s + 1] && 1 === o[s + 2] && 1 === o[s + 3] && 1 === o[s + 4] && 0 === o[s + 5] && 1 === o[s + 6] && (cr.isWhiteHorizontal(o, s - 4, s) || cr.isWhiteHorizontal(o, s + 7, s + 11)) && e++, t + 6 < i && 1 === r[t][s] && 0 === r[t + 1][s] && 1 === r[t + 2][s] && 1 === r[t + 3][s] && 1 === r[t + 4][s] && 0 === r[t + 5][s] && 1 === r[t + 6][s] && (cr.isWhiteVertical(r, s, t - 4, t) || cr.isWhiteVertical(r, s, t + 7, t + 11)) && e++; } return e * cr.N3; } static isWhiteHorizontal(t, e, r) { (e = Math.max(e, 0)), (r = Math.min(r, t.length)); for (let n = e; n < r; n++) if (1 === t[n]) return !1; return !0; } static isWhiteVertical(t, e, r, n) { (r = Math.max(r, 0)), (n = Math.min(n, t.length)); for (let i = r; i < n; i++) if (1 === t[i][e]) return !1; return !0; } static applyMaskPenaltyRule4(t) { let e = 0; const r = t.getArray(), n = t.getWidth(), i = t.getHeight(); for (let t = 0; t < i; t++) { const i = r[t]; for (let t = 0; t < n; t++) 1 === i[t] && e++; } const s = t.getHeight() * t.getWidth(); return Math.floor((10 * Math.abs(2 * e - s)) / s) * cr.N4; } static getDataMaskBit(t, e, r) { let n, i; switch (t) { case 0: n = (r + e) & 1; break; case 1: n = 1 & r; break; case 2: n = e % 3; break; case 3: n = (r + e) % 3; break; case 4: n = (Math.floor(r / 2) + Math.floor(e / 3)) & 1; break; case 5: n = (1 & (i = r * e)) + (i % 3); break; case 6: n = ((1 & (i = r * e)) + (i % 3)) & 1; break; case 7: n = (((i = r * e) % 3) + ((r + e) & 1)) & 1; break; default: throw new o("Invalid mask pattern: " + t); } return 0 === n; } static applyMaskPenaltyRule1Internal(t, e) { let r = 0; const n = e ? t.getHeight() : t.getWidth(), i = e ? t.getWidth() : t.getHeight(), s = t.getArray(); for (let t = 0; t < n; t++) { let n = 0, o = -1; for (let a = 0; a < i; a++) { const i = e ? s[t][a] : s[a][t]; i === o ? n++ : (n >= 5 && (r += cr.N1 + (n - 5)), (n = 1), (o = i)); } n >= 5 && (r += cr.N1 + (n - 5)); } return r; } } (cr.N1 = 3), (cr.N2 = 3), (cr.N3 = 40), (cr.N4 = 10); class ur { constructor(t, e) { (this.width = t), (this.height = e); const r = new Array(e); for (let n = 0; n !== e; n++) r[n] = new Uint8Array(t); this.bytes = r; } getHeight() { return this.height; } getWidth() { return this.width; } get(t, e) { return this.bytes[e][t]; } getArray() { return this.bytes; } setNumber(t, e, r) { this.bytes[e][t] = r; } setBoolean(t, e, r) { this.bytes[e][t] = r ? 1 : 0; } clear(t) { for (const e of this.bytes) g.fill(e, t); } equals(t) { if (!(t instanceof ur)) return !1; const e = t; if (this.width !== e.width) return !1; if (this.height !== e.height) return !1; for (let t = 0, r = this.height; t < r; ++t) { const r = this.bytes[t], n = e.bytes[t]; for (let t = 0, e = this.width; t < e; ++t) if (r[t] !== n[t]) return !1; } return !0; } toString() { const t = new p(); for (let e = 0, r = this.height; e < r; ++e) { const r = this.bytes[e]; for (let e = 0, n = this.width; e < n; ++e) switch (r[e]) { case 0: t.append(" 0"); break; case 1: t.append(" 1"); break; default: t.append(" "); } t.append("\n"); } return t.toString(); } } class dr { constructor() { this.maskPattern = -1; } getMode() { return this.mode; } getECLevel() { return this.ecLevel; } getVersion() { return this.version; } getMaskPattern() { return this.maskPattern; } getMatrix() { return this.matrix; } toString() { const t = new p(); return ( t.append("<<\n"), t.append(" mode: "), t.append(this.mode ? this.mode.toString() : "null"), t.append("\n ecLevel: "), t.append(this.ecLevel ? this.ecLevel.toString() : "null"), t.append("\n version: "), t.append(this.version ? this.version.toString() : "null"), t.append("\n maskPattern: "), t.append(this.maskPattern.toString()), this.matrix ? (t.append("\n matrix:\n"), t.append(this.matrix.toString())) : t.append("\n matrix: null\n"), t.append(">>\n"), t.toString() ); } setMode(t) { this.mode = t; } setECLevel(t) { this.ecLevel = t; } setVersion(t) { this.version = t; } setMaskPattern(t) { this.maskPattern = t; } setMatrix(t) { this.matrix = t; } static isValidMaskPattern(t) { return t >= 0 && t < dr.NUM_MASK_PATTERNS; } } dr.NUM_MASK_PATTERNS = 8; class gr extends i {} gr.kind = "WriterException"; class fr { constructor() {} static clearMatrix(t) { t.clear(255); } static buildMatrix(t, e, r, n, i) { fr.clearMatrix(i), fr.embedBasicPatterns(r, i), fr.embedTypeInfo(e, n, i), fr.maybeEmbedVersionInfo(r, i), fr.embedDataBits(t, n, i); } static embedBasicPatterns(t, e) { fr.embedPositionDetectionPatternsAndSeparators(e), fr.embedDarkDotAtLeftBottomCorner(e), fr.maybeEmbedPositionAdjustmentPatterns(t, e), fr.embedTimingPatterns(e); } static embedTypeInfo(t, e, r) { const n = new w(); fr.makeTypeInfoBits(t, e, n); for (let t = 0, e = n.getSize(); t < e; ++t) { const e = n.get(n.getSize() - 1 - t), i = fr.TYPE_INFO_COORDINATES[t], s = i[0], o = i[1]; if ((r.setBoolean(s, o, e), t < 8)) { const n = r.getWidth() - t - 1, i = 8; r.setBoolean(n, i, e); } else { const n = 8, i = r.getHeight() - 7 + (t - 8); r.setBoolean(n, i, e); } } } static maybeEmbedVersionInfo(t, e) { if (t.getVersionNumber() < 7) return; const r = new w(); fr.makeVersionInfoBits(t, r); let n = 17; for (let t = 0; t < 6; ++t) for (let i = 0; i < 3; ++i) { const s = r.get(n); n--, e.setBoolean(t, e.getHeight() - 11 + i, s), e.setBoolean(e.getHeight() - 11 + i, t, s); } } static embedDataBits(t, e, r) { let n = 0, i = -1, s = r.getWidth() - 1, o = r.getHeight() - 1; for (; s > 0; ) { for (6 === s && (s -= 1); o >= 0 && o < r.getHeight(); ) { for (let i = 0; i < 2; ++i) { const a = s - i; if (!fr.isEmpty(r.get(a, o))) continue; let l; n < t.getSize() ? ((l = t.get(n)), ++n) : (l = !1), 255 !== e && cr.getDataMaskBit(e, a, o) && (l = !l), r.setBoolean(a, o, l); } o += i; } (o += i = -i), (s -= 2); } if (n !== t.getSize()) throw new gr("Not all bits consumed: " + n + "/" + t.getSize()); } static findMSBSet(t) { return 32 - f.numberOfLeadingZeros(t); } static calculateBCHCode(t, e) { if (0 === e) throw new o("0 polynomial"); const r = fr.findMSBSet(e); for (t <<= r - 1; fr.findMSBSet(t) >= r; ) t ^= e << (fr.findMSBSet(t) - r); return t; } static makeTypeInfoBits(t, e, r) { if (!dr.isValidMaskPattern(e)) throw new gr("Invalid mask pattern"); const n = (t.getBits() << 3) | e; r.appendBits(n, 5); const i = fr.calculateBCHCode(n, fr.TYPE_INFO_POLY); r.appendBits(i, 10); const s = new w(); if ( (s.appendBits(fr.TYPE_INFO_MASK_PATTERN, 15), r.xor(s), 15 !== r.getSize()) ) throw new gr("should not happen but we got: " + r.getSize()); } static makeVersionInfoBits(t, e) { e.appendBits(t.getVersionNumber(), 6); const r = fr.calculateBCHCode(t.getVersionNumber(), fr.VERSION_INFO_POLY); if ((e.appendBits(r, 12), 18 !== e.getSize())) throw new gr("should not happen but we got: " + e.getSize()); } static isEmpty(t) { return 255 === t; } static embedTimingPatterns(t) { for (let e = 8; e < t.getWidth() - 8; ++e) { const r = (e + 1) % 2; fr.isEmpty(t.get(e, 6)) && t.setNumber(e, 6, r), fr.isEmpty(t.get(6, e)) && t.setNumber(6, e, r); } } static embedDarkDotAtLeftBottomCorner(t) { if (0 === t.get(8, t.getHeight() - 8)) throw new gr(); t.setNumber(8, t.getHeight() - 8, 1); } static embedHorizontalSeparationPattern(t, e, r) { for (let n = 0; n < 8; ++n) { if (!fr.isEmpty(r.get(t + n, e))) throw new gr(); r.setNumber(t + n, e, 0); } } static embedVerticalSeparationPattern(t, e, r) { for (let n = 0; n < 7; ++n) { if (!fr.isEmpty(r.get(t, e + n))) throw new gr(); r.setNumber(t, e + n, 0); } } static embedPositionAdjustmentPattern(t, e, r) { for (let n = 0; n < 5; ++n) { const i = fr.POSITION_ADJUSTMENT_PATTERN[n]; for (let s = 0; s < 5; ++s) r.setNumber(t + s, e + n, i[s]); } } static embedPositionDetectionPattern(t, e, r) { for (let n = 0; n < 7; ++n) { const i = fr.POSITION_DETECTION_PATTERN[n]; for (let s = 0; s < 7; ++s) r.setNumber(t + s, e + n, i[s]); } } static embedPositionDetectionPatternsAndSeparators(t) { const e = fr.POSITION_DETECTION_PATTERN[0].length; fr.embedPositionDetectionPattern(0, 0, t), fr.embedPositionDetectionPattern(t.getWidth() - e, 0, t), fr.embedPositionDetectionPattern(0, t.getWidth() - e, t); fr.embedHorizontalSeparationPattern(0, 7, t), fr.embedHorizontalSeparationPattern(t.getWidth() - 8, 7, t), fr.embedHorizontalSeparationPattern(0, t.getWidth() - 8, t); fr.embedVerticalSeparationPattern(7, 0, t), fr.embedVerticalSeparationPattern(t.getHeight() - 7 - 1, 0, t), fr.embedVerticalSeparationPattern(7, t.getHeight() - 7, t); } static maybeEmbedPositionAdjustmentPatterns(t, e) { if (t.getVersionNumber() < 2) return; const r = t.getVersionNumber() - 1, n = fr.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[r]; for (let t = 0, r = n.length; t !== r; t++) { const i = n[t]; if (i >= 0) for (let t = 0; t !== r; t++) { const r = n[t]; r >= 0 && fr.isEmpty(e.get(r, i)) && fr.embedPositionAdjustmentPattern(r - 2, i - 2, e); } } } } (fr.POSITION_DETECTION_PATTERN = Array.from([ Int32Array.from([1, 1, 1, 1, 1, 1, 1]), Int32Array.from([1, 0, 0, 0, 0, 0, 1]), Int32Array.from([1, 0, 1, 1, 1, 0, 1]), Int32Array.from([1, 0, 1, 1, 1, 0, 1]), Int32Array.from([1, 0, 1, 1, 1, 0, 1]), Int32Array.from([1, 0, 0, 0, 0, 0, 1]), Int32Array.from([1, 1, 1, 1, 1, 1, 1]), ])), (fr.POSITION_ADJUSTMENT_PATTERN = Array.from([ Int32Array.from([1, 1, 1, 1, 1]), Int32Array.from([1, 0, 0, 0, 1]), Int32Array.from([1, 0, 1, 0, 1]), Int32Array.from([1, 0, 0, 0, 1]), Int32Array.from([1, 1, 1, 1, 1]), ])), (fr.POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE = Array.from([ Int32Array.from([-1, -1, -1, -1, -1, -1, -1]), Int32Array.from([6, 18, -1, -1, -1, -1, -1]), Int32Array.from([6, 22, -1, -1, -1, -1, -1]), Int32Array.from([6, 26, -1, -1, -1, -1, -1]), Int32Array.from([6, 30, -1, -1, -1, -1, -1]), Int32Array.from([6, 34, -1, -1, -1, -1, -1]), Int32Array.from([6, 22, 38, -1, -1, -1, -1]), Int32Array.from([6, 24, 42, -1, -1, -1, -1]), Int32Array.from([6, 26, 46, -1, -1, -1, -1]), Int32Array.from([6, 28, 50, -1, -1, -1, -1]), Int32Array.from([6, 30, 54, -1, -1, -1, -1]), Int32Array.from([6, 32, 58, -1, -1, -1, -1]), Int32Array.from([6, 34, 62, -1, -1, -1, -1]), Int32Array.from([6, 26, 46, 66, -1, -1, -1]), Int32Array.from([6, 26, 48, 70, -1, -1, -1]), Int32Array.from([6, 26, 50, 74, -1, -1, -1]), Int32Array.from([6, 30, 54, 78, -1, -1, -1]), Int32Array.from([6, 30, 56, 82, -1, -1, -1]), Int32Array.from([6, 30, 58, 86, -1, -1, -1]), Int32Array.from([6, 34, 62, 90, -1, -1, -1]), Int32Array.from([6, 28, 50, 72, 94, -1, -1]), Int32Array.from([6, 26, 50, 74, 98, -1, -1]), Int32Array.from([6, 30, 54, 78, 102, -1, -1]), Int32Array.from([6, 28, 54, 80, 106, -1, -1]), Int32Array.from([6, 32, 58, 84, 110, -1, -1]), Int32Array.from([6, 30, 58, 86, 114, -1, -1]), Int32Array.from([6, 34, 62, 90, 118, -1, -1]), Int32Array.from([6, 26, 50, 74, 98, 122, -1]), Int32Array.from([6, 30, 54, 78, 102, 126, -1]), Int32Array.from([6, 26, 52, 78, 104, 130, -1]), Int32Array.from([6, 30, 56, 82, 108, 134, -1]), Int32Array.from([6, 34, 60, 86, 112, 138, -1]), Int32Array.from([6, 30, 58, 86, 114, 142, -1]), Int32Array.from([6, 34, 62, 90, 118, 146, -1]), Int32Array.from([6, 30, 54, 78, 102, 126, 150]), Int32Array.from([6, 24, 50, 76, 102, 128, 154]), Int32Array.from([6, 28, 54, 80, 106, 132, 158]), Int32Array.from([6, 32, 58, 84, 110, 136, 162]), Int32Array.from([6, 26, 54, 82, 110, 138, 166]), Int32Array.from([6, 30, 58, 86, 114, 142, 170]), ])), (fr.TYPE_INFO_COORDINATES = Array.from([ Int32Array.from([8, 0]), Int32Array.from([8, 1]), Int32Array.from([8, 2]), Int32Array.from([8, 3]), Int32Array.from([8, 4]), Int32Array.from([8, 5]), Int32Array.from([8, 7]), Int32Array.from([8, 8]), Int32Array.from([7, 8]), Int32Array.from([5, 8]), Int32Array.from([4, 8]), Int32Array.from([3, 8]), Int32Array.from([2, 8]), Int32Array.from([1, 8]), Int32Array.from([0, 8]), ])), (fr.VERSION_INFO_POLY = 7973), (fr.TYPE_INFO_POLY = 1335), (fr.TYPE_INFO_MASK_PATTERN = 21522); class wr { constructor(t, e) { (this.dataBytes = t), (this.errorCorrectionBytes = e); } getDataBytes() { return this.dataBytes; } getErrorCorrectionBytes() { return this.errorCorrectionBytes; } } class Ar { constructor() {} static calculateMaskPenalty(t) { return ( cr.applyMaskPenaltyRule1(t) + cr.applyMaskPenaltyRule2(t) + cr.applyMaskPenaltyRule3(t) + cr.applyMaskPenaltyRule4(t) ); } static encode(t, e, r = null) { let n = Ar.DEFAULT_BYTE_MODE_ENCODING; const i = null !== r && void 0 !== r.get(lr.CHARACTER_SET); i && (n = r.get(lr.CHARACTER_SET).toString()); const s = this.chooseMode(t, n), o = new w(); if (s === _e.BYTE && (i || Ar.DEFAULT_BYTE_MODE_ENCODING !== n)) { const t = m.getCharacterSetECIByName(n); void 0 !== t && this.appendECI(t, o); } this.appendModeInfo(s, o); const a = new w(); let l; if ( (this.appendBytes(t, s, a, n), null !== r && void 0 !== r.get(lr.QR_VERSION)) ) { const t = Number.parseInt(r.get(lr.QR_VERSION).toString(), 10); l = Ae.getVersionForNumber(t); const n = this.calculateBitsNeeded(s, o, a, l); if (!this.willFit(n, l, e)) throw new gr("Data too big for requested version"); } else l = this.recommendVersion(e, s, o, a); const h = new w(); h.appendBitArray(o); const c = s === _e.BYTE ? a.getSizeInBytes() : t.length; this.appendLengthInfo(c, l, s, h), h.appendBitArray(a); const u = l.getECBlocksForLevel(e), d = l.getTotalCodewords() - u.getTotalECCodewords(); this.terminateBits(d, h); const g = this.interleaveWithECBytes( h, l.getTotalCodewords(), d, u.getNumBlocks() ), f = new dr(); f.setECLevel(e), f.setMode(s), f.setVersion(l); const A = l.getDimensionForVersion(), C = new ur(A, A), E = this.chooseMaskPattern(g, e, l, C); return ( f.setMaskPattern(E), fr.buildMatrix(g, e, l, E, C), f.setMatrix(C), f ); } static recommendVersion(t, e, r, n) { const i = this.calculateBitsNeeded(e, r, n, Ae.getVersionForNumber(1)), s = this.chooseVersion(i, t), o = this.calculateBitsNeeded(e, r, n, s); return this.chooseVersion(o, t); } static calculateBitsNeeded(t, e, r, n) { return e.getSize() + t.getCharacterCountBits(n) + r.getSize(); } static getAlphanumericCode(t) { return t < Ar.ALPHANUMERIC_TABLE.length ? Ar.ALPHANUMERIC_TABLE[t] : -1; } static chooseMode(t, e = null) { if (m.SJIS.getName() === e && this.isOnlyDoubleByteKanji(t)) return _e.KANJI; let r = !1, n = !1; for (let e = 0, i = t.length; e < i; ++e) { const i = t.charAt(e); if (Ar.isDigit(i)) r = !0; else { if (-1 === this.getAlphanumericCode(i.charCodeAt(0))) return _e.BYTE; n = !0; } } return n ? _e.ALPHANUMERIC : r ? _e.NUMERIC : _e.BYTE; } static isOnlyDoubleByteKanji(t) { let e; try { e = I.encode(t, m.SJIS); } catch (t) { return !1; } const r = e.length; if (r % 2 != 0) return !1; for (let t = 0; t < r; t += 2) { const r = 255 & e[t]; if ((r < 129 || r > 159) && (r < 224 || r > 235)) return !1; } return !0; } static chooseMaskPattern(t, e, r, n) { let i = Number.MAX_SAFE_INTEGER, s = -1; for (let o = 0; o < dr.NUM_MASK_PATTERNS; o++) { fr.buildMatrix(t, e, r, o, n); let a = this.calculateMaskPenalty(n); a < i && ((i = a), (s = o)); } return s; } static chooseVersion(t, e) { for (let r = 1; r <= 40; r++) { const n = Ae.getVersionForNumber(r); if (Ar.willFit(t, n, e)) return n; } throw new gr("Data too big"); } static willFit(t, e, r) { return ( e.getTotalCodewords() - e.getECBlocksForLevel(r).getTotalECCodewords() >= (t + 7) / 8 ); } static terminateBits(t, e) { const r = 8 * t; if (e.getSize() > r) throw new gr( "data bits cannot fit in the QR Code" + e.getSize() + " > " + r ); for (let t = 0; t < 4 && e.getSize() < r; ++t) e.appendBit(!1); const n = 7 & e.getSize(); if (n > 0) for (let t = n; t < 8; t++) e.appendBit(!1); const i = t - e.getSizeInBytes(); for (let t = 0; t < i; ++t) e.appendBits(0 == (1 & t) ? 236 : 17, 8); if (e.getSize() !== r) throw new gr("Bits size does not equal capacity"); } static getNumDataBytesAndNumECBytesForBlockID(t, e, r, n, i, s) { if (n >= r) throw new gr("Block ID too large"); const o = t % r, a = r - o, l = Math.floor(t / r), h = l + 1, c = Math.floor(e / r), u = c + 1, d = l - c, g = h - u; if (d !== g) throw new gr("EC bytes mismatch"); if (r !== a + o) throw new gr("RS blocks mismatch"); if (t !== (c + d) * a + (u + g) * o) throw new gr("Total bytes mismatch"); n < a ? ((i[0] = c), (s[0] = d)) : ((i[0] = u), (s[0] = g)); } static interleaveWithECBytes(t, e, r, n) { if (t.getSizeInBytes() !== r) throw new gr("Number of bits and data bytes does not match"); let i = 0, s = 0, o = 0; const a = new Array(); for (let l = 0; l < n; ++l) { const h = new Int32Array(1), c = new Int32Array(1); Ar.getNumDataBytesAndNumECBytesForBlockID(e, r, n, l, h, c); const u = h[0], d = new Uint8Array(u); t.toBytes(8 * i, d, 0, u); const g = Ar.generateECBytes(d, c[0]); a.push(new wr(d, g)), (s = Math.max(s, u)), (o = Math.max(o, g.length)), (i += h[0]); } if (r !== i) throw new gr("Data bytes does not match offset"); const l = new w(); for (let t = 0; t < s; ++t) for (const e of a) { const r = e.getDataBytes(); t < r.length && l.appendBits(r[t], 8); } for (let t = 0; t < o; ++t) for (const e of a) { const r = e.getErrorCorrectionBytes(); t < r.length && l.appendBits(r[t], 8); } if (e !== l.getSizeInBytes()) throw new gr( "Interleaving error: " + e + " and " + l.getSizeInBytes() + " differ." ); return l; } static generateECBytes(t, e) { const r = t.length, n = new Int32Array(r + e); for (let e = 0; e < r; e++) n[e] = 255 & t[e]; new hr(q.QR_CODE_FIELD_256).encode(n, e); const i = new Uint8Array(e); for (let t = 0; t < e; t++) i[t] = n[r + t]; return i; } static appendModeInfo(t, e) { e.appendBits(t.getBits(), 4); } static appendLengthInfo(t, e, r, n) { const i = r.getCharacterCountBits(e); if (t >= 1 << i) throw new gr(t + " is bigger than " + ((1 << i) - 1)); n.appendBits(t, i); } static appendBytes(t, e, r, n) { switch (e) { case _e.NUMERIC: Ar.appendNumericBytes(t, r); break; case _e.ALPHANUMERIC: Ar.appendAlphanumericBytes(t, r); break; case _e.BYTE: Ar.append8BitBytes(t, r, n); break; case _e.KANJI: Ar.appendKanjiBytes(t, r); break; default: throw new gr("Invalid mode: " + e); } } static getDigit(t) { return t.charCodeAt(0) - 48; } static isDigit(t) { const e = Ar.getDigit(t); return e >= 0 && e <= 9; } static appendNumericBytes(t, e) { const r = t.length; let n = 0; for (; n < r; ) { const i = Ar.getDigit(t.charAt(n)); if (n + 2 < r) { const r = Ar.getDigit(t.charAt(n + 1)), s = Ar.getDigit(t.charAt(n + 2)); e.appendBits(100 * i + 10 * r + s, 10), (n += 3); } else if (n + 1 < r) { const r = Ar.getDigit(t.charAt(n + 1)); e.appendBits(10 * i + r, 7), (n += 2); } else e.appendBits(i, 4), n++; } } static appendAlphanumericBytes(t, e) { const r = t.length; let n = 0; for (; n < r; ) { const i = Ar.getAlphanumericCode(t.charCodeAt(n)); if (-1 === i) throw new gr(); if (n + 1 < r) { const r = Ar.getAlphanumericCode(t.charCodeAt(n + 1)); if (-1 === r) throw new gr(); e.appendBits(45 * i + r, 11), (n += 2); } else e.appendBits(i, 6), n++; } } static append8BitBytes(t, e, r) { let n; try { n = I.encode(t, r); } catch (t) { throw new gr(t); } for (let t = 0, r = n.length; t !== r; t++) { const r = n[t]; e.appendBits(r, 8); } } static appendKanjiBytes(t, e) { let r; try { r = I.encode(t, m.SJIS); } catch (t) { throw new gr(t); } const n = r.length; for (let t = 0; t < n; t += 2) { const n = (((255 & r[t]) << 8) & 4294967295) | (255 & r[t + 1]); let i = -1; if ( (n >= 33088 && n <= 40956 ? (i = n - 33088) : n >= 57408 && n <= 60351 && (i = n - 49472), -1 === i) ) throw new gr("Invalid byte sequence"); const s = 192 * (i >> 8) + (255 & i); e.appendBits(s, 13); } } static appendECI(t, e) { e.appendBits(_e.ECI.getBits(), 4), e.appendBits(t.getValue(), 8); } } (Ar.ALPHANUMERIC_TABLE = Int32Array.from([ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, ])), (Ar.DEFAULT_BYTE_MODE_ENCODING = m.UTF8.getName()); class Cr { write(t, e, r, n = null) { if (0 === t.length) throw new o("Achou conteúdo vazio"); if (e < 0 || r < 0) throw new o("Dimensões de tela muito pequenas: " + e + "x" + r); let i = de.L, s = Cr.QUIET_ZONE_SIZE; null !== n && (void 0 !== n.get(lr.ERROR_CORRECTION) && (i = de.fromString(n.get(lr.ERROR_CORRECTION).toString())), void 0 !== n.get(lr.MARGIN) && (s = Number.parseInt(n.get(lr.MARGIN).toString(), 10))); const a = Ar.encode(t, i, n); return this.renderResult(a, e, r, s); } writeToDom(t, e, r, n, i = null) { "string" == typeof t && (t = document.querySelector(t)); const s = this.write(e, r, n, i); t && t.appendChild(s); } renderResult(t, e, r, n) { const i = t.getMatrix(); if (null === i) throw new j(); const s = i.getWidth(), o = i.getHeight(), a = s + 2 * n, l = o + 2 * n, h = Math.max(e, a), c = Math.max(r, l), u = Math.min(Math.floor(h / a), Math.floor(c / l)), d = Math.floor((h - s * u) / 2), g = Math.floor((c - o * u) / 2), f = this.createSVGElement(h, c); for (let t = 0, e = g; t < o; t++, e += u) for (let r = 0, n = d; r < s; r++, n += u) if (1 === i.get(r, t)) { const t = this.createSvgRectElement(n, e, u, u); f.appendChild(t); } return f; } createSVGElement(t, e) { const r = document.createElementNS(Cr.SVG_NS, "svg"); return ( r.setAttributeNS(null, "height", t.toString()), r.setAttributeNS(null, "width", e.toString()), r ); } createSvgRectElement(t, e, r, n) { const i = document.createElementNS(Cr.SVG_NS, "rect"); return ( i.setAttributeNS(null, "x", t.toString()), i.setAttributeNS(null, "y", e.toString()), i.setAttributeNS(null, "height", r.toString()), i.setAttributeNS(null, "width", n.toString()), i.setAttributeNS(null, "fill", "#000000"), i ); } } (Cr.QUIET_ZONE_SIZE = 4), (Cr.SVG_NS = "http://www.w3.org/2000/svg"); class Er { encode(t, e, r, n, i) { if (0 === t.length) throw new o("Achou conteúdo vazio."); if (e !== k.QR_CODE) throw new o("Só suporte QR_CODE, mas escaneou " + e); if (r < 0 || n < 0) throw new o(`Dimensões de tela muito pequenas: ${r}x${n}`); let s = de.L, a = Er.QUIET_ZONE_SIZE; null !== i && (void 0 !== i.get(lr.ERROR_CORRECTION) && (s = de.fromString(i.get(lr.ERROR_CORRECTION).toString())), void 0 !== i.get(lr.MARGIN) && (a = Number.parseInt(i.get(lr.MARGIN).toString(), 10))); const l = Ar.encode(t, s, i); return Er.renderResult(l, r, n, a); } static renderResult(t, e, r, n) { const i = t.getMatrix(); if (null === i) throw new j(); const s = i.getWidth(), o = i.getHeight(), a = s + 2 * n, l = o + 2 * n, h = Math.max(e, a), c = Math.max(r, l), u = Math.min(Math.floor(h / a), Math.floor(c / l)), d = Math.floor((h - s * u) / 2), g = Math.floor((c - o * u) / 2), f = new T(h, c); for (let t = 0, e = g; t < o; t++, e += u) for (let r = 0, n = d; r < s; r++, n += u) 1 === i.get(r, t) && f.setRegion(n, e, u, u); return f; } } Er.QUIET_ZONE_SIZE = 4; class mr extends y { constructor(t, e, r, n, i, s, a, l) { if ( (super(s, a), (this.yuvData = t), (this.dataWidth = e), (this.dataHeight = r), (this.left = n), (this.top = i), n + s > e || i + a > r) ) throw new o("Retângulo cortado não encaixa nos dados de imagem."); l && this.reverseHorizontal(s, a); } getRow(t, e) { if (t < 0 || t >= this.getHeight()) throw new o("Linha está fora da imagem: " + t); const r = this.getWidth(); (null == e || e.length < r) && (e = new Uint8ClampedArray(r)); const n = (t + this.top) * this.dataWidth + this.left; return c.arraycopy(this.yuvData, n, e, 0, r), e; } getMatrix() { const t = this.getWidth(), e = this.getHeight(); if (t === this.dataWidth && e === this.dataHeight) return this.yuvData; const r = t * e, n = new Uint8ClampedArray(r); let i = this.top * this.dataWidth + this.left; if (t === this.dataWidth) return c.arraycopy(this.yuvData, i, n, 0, r), n; for (let r = 0; r < e; r++) { const e = r * t; c.arraycopy(this.yuvData, i, n, e, t), (i += this.dataWidth); } return n; } isCropSupported() { return !0; } crop(t, e, r, n) { return new mr( this.yuvData, this.dataWidth, this.dataHeight, this.left + t, this.top + e, r, n, !1 ); } renderThumbnail() { const t = this.getWidth() / mr.THUMBNAIL_SCALE_FACTOR, e = this.getHeight() / mr.THUMBNAIL_SCALE_FACTOR, r = new Int32Array(t * e), n = this.yuvData; let i = this.top * this.dataWidth + this.left; for (let s = 0; s < e; s++) { const e = s * t; for (let s = 0; s < t; s++) { const t = 255 & n[i + s * mr.THUMBNAIL_SCALE_FACTOR]; r[e + s] = 4278190080 | (65793 * t); } i += this.dataWidth * mr.THUMBNAIL_SCALE_FACTOR; } return r; } getThumbnailWidth() { return this.getWidth() / mr.THUMBNAIL_SCALE_FACTOR; } getThumbnailHeight() { return this.getHeight() / mr.THUMBNAIL_SCALE_FACTOR; } reverseHorizontal(t, e) { const r = this.yuvData; for ( let n = 0, i = this.top * this.dataWidth + this.left; n < e; n++, i += this.dataWidth ) { const e = i + t / 2; for (let n = i, s = i + t - 1; n < e; n++, s--) { const t = r[n]; (r[n] = r[s]), (r[s] = t); } } } invert() { return new O(this); } } mr.THUMBNAIL_SCALE_FACTOR = 2; class _r extends y { constructor(t, e, r, n, i, s, a) { if ( (super(e, r), (this.dataWidth = n), (this.dataHeight = i), (this.left = s), (this.top = a), 4 === t.BYTES_PER_ELEMENT) ) { const n = e * r, i = new Uint8ClampedArray(n); for (let e = 0; e < n; e++) { const r = t[e], n = (r >> 16) & 255, s = (r >> 7) & 510, o = 255 & r; i[e] = ((n + s + o) / 4) & 255; } this.luminances = i; } else this.luminances = t; if ( (void 0 === n && (this.dataWidth = e), void 0 === i && (this.dataHeight = r), void 0 === s && (this.left = 0), void 0 === a && (this.top = 0), this.left + e > this.dataWidth || this.top + r > this.dataHeight) ) throw new o("Crop rectangle does not fit within image data."); } getRow(t, e) { if (t < 0 || t >= this.getHeight()) throw new o("Requested row is outside the image: " + t); const r = this.getWidth(); (null == e || e.length < r) && (e = new Uint8ClampedArray(r)); const n = (t + this.top) * this.dataWidth + this.left; return c.arraycopy(this.luminances, n, e, 0, r), e; } getMatrix() { const t = this.getWidth(), e = this.getHeight(); if (t === this.dataWidth && e === this.dataHeight) return this.luminances; const r = t * e, n = new Uint8ClampedArray(r); let i = this.top * this.dataWidth + this.left; if (t === this.dataWidth) return c.arraycopy(this.luminances, i, n, 0, r), n; for (let r = 0; r < e; r++) { const e = r * t; c.arraycopy(this.luminances, i, n, e, t), (i += this.dataWidth); } return n; } isCropSupported() { return !0; } crop(t, e, r, n) { return new _r( this.luminances, r, n, this.dataWidth, this.dataHeight, this.left + t, this.top + e ); } invert() { return new O(this); } } class Ir extends m { static forName(t) { return this.getCharacterSetECIByName(t); } } class Sr {} Sr.ISO_8859_1 = m.ISO8859_1; class pr { isCompact() { return this.compact; } setCompact(t) { this.compact = t; } getSize() { return this.size; } setSize(t) { this.size = t; } getLayers() { return this.layers; } setLayers(t) { this.layers = t; } getCodeWords() { return this.codeWords; } setCodeWords(t) { this.codeWords = t; } getMatrix() { return this.matrix; } setMatrix(t) { this.matrix = t; } } class Tr { static singletonList(t) { return [t]; } static min(t, e) { return t.sort(e)[0]; } } class Rr { constructor(t) { this.previous = t; } getPrevious() { return this.previous; } } class Nr extends Rr { constructor(t, e, r) { super(t), (this.value = e), (this.bitCount = r); } appendTo(t, e) { t.appendBits(this.value, this.bitCount); } add(t, e) { return new Nr(this, t, e); } addBinaryShift(t, e) { return ( console.warn( "addBinaryShift on SimpleToken, this simply returns a copy of this token" ), new Nr(this, t, e) ); } toString() { let t = this.value & ((1 << this.bitCount) - 1); return ( (t |= 1 << this.bitCount), "<" + f.toBinaryString(t | (1 << this.bitCount)).substring(1) + ">" ); } } class Dr extends Nr { constructor(t, e, r) { super(t, 0, 0), (this.binaryShiftStart = e), (this.binaryShiftByteCount = r); } appendTo(t, e) { for (let r = 0; r < this.binaryShiftByteCount; r++) (0 === r || (31 === r && this.binaryShiftByteCount <= 62)) && (t.appendBits(31, 5), this.binaryShiftByteCount > 62 ? t.appendBits(this.binaryShiftByteCount - 31, 16) : 0 === r ? t.appendBits(Math.min(this.binaryShiftByteCount, 31), 5) : t.appendBits(this.binaryShiftByteCount - 31, 5)), t.appendBits(e[this.binaryShiftStart + r], 8); } addBinaryShift(t, e) { return new Dr(this, t, e); } toString() { return ( "<" + this.binaryShiftStart + "::" + (this.binaryShiftStart + this.binaryShiftByteCount - 1) + ">" ); } } function yr(t, e, r) { return new Nr(t, e, r); } const Or = ["UPPER", "LOWER", "DIGIT", "MIXED", "PUNCT"], Mr = 0, br = 1, Br = 2, Pr = 3, Lr = 4, Fr = new Nr(null, 0, 0), vr = [ Int32Array.from([0, 327708, 327710, 327709, 656318]), Int32Array.from([590318, 0, 327710, 327709, 656318]), Int32Array.from([262158, 590300, 0, 590301, 932798]), Int32Array.from([327709, 327708, 656318, 0, 327710]), Int32Array.from([327711, 656380, 656382, 656381, 0]), ]; const kr = (function (t) { for (let e of t) g.fill(e, -1); return ( (t[Mr][Lr] = 0), (t[br][Lr] = 0), (t[br][Mr] = 28), (t[Pr][Lr] = 0), (t[Br][Lr] = 0), (t[Br][Mr] = 15), t ); })(g.createInt32Array(6, 6)); class xr { constructor(t, e, r, n) { (this.token = t), (this.mode = e), (this.binaryShiftByteCount = r), (this.bitCount = n); } getMode() { return this.mode; } getToken() { return this.token; } getBinaryShiftByteCount() { return this.binaryShiftByteCount; } getBitCount() { return this.bitCount; } latchAndAppend(t, e) { let r = this.bitCount, n = this.token; if (t !== this.mode) { let e = vr[this.mode][t]; (n = yr(n, 65535 & e, e >> 16)), (r += e >> 16); } let i = t === Br ? 4 : 5; return (n = yr(n, e, i)), new xr(n, t, 0, r + i); } shiftAndAppend(t, e) { let r = this.token, n = this.mode === Br ? 4 : 5; return ( (r = yr(r, kr[this.mode][t], n)), (r = yr(r, e, 5)), new xr(r, this.mode, 0, this.bitCount + n + 5) ); } addBinaryShiftChar(t) { let e = this.token, r = this.mode, n = this.bitCount; if (this.mode === Lr || this.mode === Br) { let t = vr[r][Mr]; (e = yr(e, 65535 & t, t >> 16)), (n += t >> 16), (r = Mr); } let i = 0 === this.binaryShiftByteCount || 31 === this.binaryShiftByteCount ? 18 : 62 === this.binaryShiftByteCount ? 9 : 8, s = new xr(e, r, this.binaryShiftByteCount + 1, n + i); return ( 2078 === s.binaryShiftByteCount && (s = s.endBinaryShift(t + 1)), s ); } endBinaryShift(t) { if (0 === this.binaryShiftByteCount) return this; let e = this.token; return ( (e = (function (t, e, r) { return new Dr(t, e, r); })(e, t - this.binaryShiftByteCount, this.binaryShiftByteCount)), new xr(e, this.mode, 0, this.bitCount) ); } isBetterThanOrEqualTo(t) { let e = this.bitCount + (vr[this.mode][t.mode] >> 16); return ( this.binaryShiftByteCount < t.binaryShiftByteCount ? (e += xr.calculateBinaryShiftCost(t) - xr.calculateBinaryShiftCost(this)) : this.binaryShiftByteCount > t.binaryShiftByteCount && t.binaryShiftByteCount > 0 && (e += 10), e <= t.bitCount ); } toBitArray(t) { let e = []; for ( let r = this.endBinaryShift(t.length).token; null !== r; r = r.getPrevious() ) e.unshift(r); let r = new w(); for (const n of e) n.appendTo(r, t); return r; } toString() { return S.format( "%s bits=%d bytes=%d", Or[this.mode], this.bitCount, this.binaryShiftByteCount ); } static calculateBinaryShiftCost(t) { return t.binaryShiftByteCount > 62 ? 21 : t.binaryShiftByteCount > 31 ? 20 : t.binaryShiftByteCount > 0 ? 10 : 0; } } xr.INITIAL_STATE = new xr(Fr, Mr, 0, 0); const Vr = (function (t) { const e = S.getCharCode(" "), r = S.getCharCode("."), n = S.getCharCode(","); t[Mr][e] = 1; const i = S.getCharCode("Z"), s = S.getCharCode("A"); for (let e = s; e <= i; e++) t[Mr][e] = e - s + 2; t[br][e] = 1; const o = S.getCharCode("z"), a = S.getCharCode("a"); for (let e = a; e <= o; e++) t[br][e] = e - a + 2; t[Br][e] = 1; const l = S.getCharCode("9"), h = S.getCharCode("0"); for (let e = h; e <= l; e++) t[Br][e] = e - h + 2; (t[Br][n] = 12), (t[Br][r] = 13); const c = [ "\0", " ", "", "", "", "", "", "", "", "\b", "\t", "\n", "\v", "\f", "\r", "", "", "", "", "", "@", "\\", "^", "_", "`", "|", "~", "", ]; for (let e = 0; e < c.length; e++) t[Pr][S.getCharCode(c[e])] = e; const u = [ "\0", "\r", "\0", "\0", "\0", "\0", "!", "'", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "[", "]", "{", "}", ]; for (let e = 0; e < u.length; e++) S.getCharCode(u[e]) > 0 && (t[Lr][S.getCharCode(u[e])] = e); return t; })(g.createInt32Array(5, 256)); class Ur { constructor(t) { this.text = t; } encode() { const t = S.getCharCode(" "), e = S.getCharCode("\n"); let r = Tr.singletonList(xr.INITIAL_STATE); for (let n = 0; n < this.text.length; n++) { let i, s = n + 1 < this.text.length ? this.text[n + 1] : 0; switch (this.text[n]) { case S.getCharCode("\r"): i = s === e ? 2 : 0; break; case S.getCharCode("."): i = s === t ? 3 : 0; break; case S.getCharCode(","): i = s === t ? 4 : 0; break; case S.getCharCode(":"): i = s === t ? 5 : 0; break; default: i = 0; } i > 0 ? ((r = Ur.updateStateListForPair(r, n, i)), n++) : (r = this.updateStateListForChar(r, n)); } return Tr.min(r, (t, e) => t.getBitCount() - e.getBitCount()).toBitArray( this.text ); } updateStateListForChar(t, e) { const r = []; for (let n of t) this.updateStateForChar(n, e, r); return Ur.simplifyStates(r); } updateStateForChar(t, e, r) { let n = 255 & this.text[e], i = Vr[t.getMode()][n] > 0, s = null; for (let o = 0; o <= Lr; o++) { let a = Vr[o][n]; if (a > 0) { if ( (null == s && (s = t.endBinaryShift(e)), !i || o === t.getMode() || o === Br) ) { const t = s.latchAndAppend(o, a); r.push(t); } if (!i && kr[t.getMode()][o] >= 0) { const t = s.shiftAndAppend(o, a); r.push(t); } } } if (t.getBinaryShiftByteCount() > 0 || 0 === Vr[t.getMode()][n]) { let n = t.addBinaryShiftChar(e); r.push(n); } } static updateStateListForPair(t, e, r) { const n = []; for (let i of t) this.updateStateForPair(i, e, r, n); return this.simplifyStates(n); } static updateStateForPair(t, e, r, n) { let i = t.endBinaryShift(e); if ( (n.push(i.latchAndAppend(Lr, r)), t.getMode() !== Lr && n.push(i.shiftAndAppend(Lr, r)), 3 === r || 4 === r) ) { let t = i.latchAndAppend(Br, 16 - r).latchAndAppend(Br, 1); n.push(t); } if (t.getBinaryShiftByteCount() > 0) { let r = t.addBinaryShiftChar(e).addBinaryShiftChar(e + 1); n.push(r); } } static simplifyStates(t) { let e = []; for (const r of t) { let t = !0; for (const n of e) { if (n.isBetterThanOrEqualTo(r)) { t = !1; break; } r.isBetterThanOrEqualTo(n) && (e = e.filter((t) => t !== n)); } t && e.push(r); } return e; } } class Hr { constructor() {} static encodeBytes(t) { return Hr.encode(t, Hr.DEFAULT_EC_PERCENT, Hr.DEFAULT_AZTEC_LAYERS); } static encode(t, e, r) { let n, i, s, a, l, h = new Ur(t).encode(), c = f.truncDivision(h.getSize() * e, 100) + 11, u = h.getSize() + c; if (r !== Hr.DEFAULT_AZTEC_LAYERS) { if ( ((n = r < 0), (i = Math.abs(r)) > (n ? Hr.MAX_NB_BITS_COMPACT : Hr.MAX_NB_BITS)) ) throw new o(S.format("Illegal value %s for layers", r)); let t = (s = Hr.totalBitsInLayer(i, n)) - (s % (a = Hr.WORD_SIZE[i])); if ((l = Hr.stuffBits(h, a)).getSize() + c > t) throw new o("Data to large for user specified layer"); if (n && l.getSize() > 64 * a) throw new o("Data to large for user specified layer"); } else { (a = 0), (l = null); for (let t = 0; ; t++) { if (t > Hr.MAX_NB_BITS) throw new o("Data too large for an Aztec code"); if ( ((i = (n = t <= 3) ? t + 1 : t), u > (s = Hr.totalBitsInLayer(i, n))) ) continue; (null != l && a === Hr.WORD_SIZE[i]) || ((a = Hr.WORD_SIZE[i]), (l = Hr.stuffBits(h, a))); let e = s - (s % a); if (!(n && l.getSize() > 64 * a) && l.getSize() + c <= e) break; } } let d, g = Hr.generateCheckWords(l, s, a), w = l.getSize() / a, A = Hr.generateModeMessage(n, i, w), C = (n ? 11 : 14) + 4 * i, E = new Int32Array(C); if (n) { d = C; for (let t = 0; t < E.length; t++) E[t] = t; } else { d = C + 1 + 2 * f.truncDivision(f.truncDivision(C, 2) - 1, 15); let t = f.truncDivision(C, 2), e = f.truncDivision(d, 2); for (let r = 0; r < t; r++) { let n = r + f.truncDivision(r, 15); (E[t - r - 1] = e - n - 1), (E[t + r] = e + n + 1); } } let m = new T(d); for (let t = 0, e = 0; t < i; t++) { let r = 4 * (i - t) + (n ? 9 : 12); for (let n = 0; n < r; n++) { let i = 2 * n; for (let s = 0; s < 2; s++) g.get(e + i + s) && m.set(E[2 * t + s], E[2 * t + n]), g.get(e + 2 * r + i + s) && m.set(E[2 * t + n], E[C - 1 - 2 * t - s]), g.get(e + 4 * r + i + s) && m.set(E[C - 1 - 2 * t - s], E[C - 1 - 2 * t - n]), g.get(e + 6 * r + i + s) && m.set(E[C - 1 - 2 * t - n], E[2 * t + s]); } e += 8 * r; } if ((Hr.drawModeMessage(m, n, d, A), n)) Hr.drawBullsEye(m, f.truncDivision(d, 2), 5); else { Hr.drawBullsEye(m, f.truncDivision(d, 2), 7); for (let t = 0, e = 0; t < f.truncDivision(C, 2) - 1; t += 15, e += 16) for (let t = 1 & f.truncDivision(d, 2); t < d; t += 2) m.set(f.truncDivision(d, 2) - e, t), m.set(f.truncDivision(d, 2) + e, t), m.set(t, f.truncDivision(d, 2) - e), m.set(t, f.truncDivision(d, 2) + e); } let _ = new pr(); return ( _.setCompact(n), _.setSize(d), _.setLayers(i), _.setCodeWords(w), _.setMatrix(m), _ ); } static drawBullsEye(t, e, r) { for (let n = 0; n < r; n += 2) for (let r = e - n; r <= e + n; r++) t.set(r, e - n), t.set(r, e + n), t.set(e - n, r), t.set(e + n, r); t.set(e - r, e - r), t.set(e - r + 1, e - r), t.set(e - r, e - r + 1), t.set(e + r, e - r), t.set(e + r, e - r + 1), t.set(e + r, e + r - 1); } static generateModeMessage(t, e, r) { let n = new w(); return ( t ? (n.appendBits(e - 1, 2), n.appendBits(r - 1, 6), (n = Hr.generateCheckWords(n, 28, 4))) : (n.appendBits(e - 1, 5), n.appendBits(r - 1, 11), (n = Hr.generateCheckWords(n, 40, 4))), n ); } static drawModeMessage(t, e, r, n) { let i = f.truncDivision(r, 2); if (e) for (let e = 0; e < 7; e++) { let r = i - 3 + e; n.get(e) && t.set(r, i - 5), n.get(e + 7) && t.set(i + 5, r), n.get(20 - e) && t.set(r, i + 5), n.get(27 - e) && t.set(i - 5, r); } else for (let e = 0; e < 10; e++) { let r = i - 5 + e + f.truncDivision(e, 5); n.get(e) && t.set(r, i - 7), n.get(e + 10) && t.set(i + 7, r), n.get(29 - e) && t.set(r, i + 7), n.get(39 - e) && t.set(i - 7, r); } } static generateCheckWords(t, e, r) { let n = t.getSize() / r, i = new hr(Hr.getGF(r)), s = f.truncDivision(e, r), o = Hr.bitsToWords(t, r, s); i.encode(o, s - n); let a = e % r, l = new w(); l.appendBits(0, a); for (const t of Array.from(o)) l.appendBits(t, r); return l; } static bitsToWords(t, e, r) { let n, i, s = new Int32Array(r); for (n = 0, i = t.getSize() / e; n < i; n++) { let r = 0; for (let i = 0; i < e; i++) r |= t.get(n * e + i) ? 1 << (e - i - 1) : 0; s[n] = r; } return s; } static getGF(t) { switch (t) { case 4: return q.AZTEC_PARAM; case 6: return q.AZTEC_DATA_6; case 8: return q.AZTEC_DATA_8; case 10: return q.AZTEC_DATA_10; case 12: return q.AZTEC_DATA_12; default: throw new o("Unsupported word size " + t); } } static stuffBits(t, e) { let r = new w(), n = t.getSize(), i = (1 << e) - 2; for (let s = 0; s < n; s += e) { let o = 0; for (let r = 0; r < e; r++) (s + r >= n || t.get(s + r)) && (o |= 1 << (e - 1 - r)); (o & i) === i ? (r.appendBits(o & i, e), s--) : 0 == (o & i) ? (r.appendBits(1 | o, e), s--) : r.appendBits(o, e); } return r; } static totalBitsInLayer(t, e) { return ((e ? 88 : 112) + 16 * t) * t; } } (Hr.DEFAULT_EC_PERCENT = 33), (Hr.DEFAULT_AZTEC_LAYERS = 0), (Hr.MAX_NB_BITS = 32), (Hr.MAX_NB_BITS_COMPACT = 4), (Hr.WORD_SIZE = Int32Array.from([ 4, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, ])); class Gr { encode(t, e, r, n) { return this.encodeWithHints(t, e, r, n, null); } encodeWithHints(t, e, r, n, i) { let s = Sr.ISO_8859_1, o = Hr.DEFAULT_EC_PERCENT, a = Hr.DEFAULT_AZTEC_LAYERS; return ( null != i && (i.has(lr.CHARACTER_SET) && (s = Ir.forName(i.get(lr.CHARACTER_SET).toString())), i.has(lr.ERROR_CORRECTION) && (o = f.parseInt(i.get(lr.ERROR_CORRECTION).toString())), i.has(lr.AZTEC_LAYERS) && (a = f.parseInt(i.get(lr.AZTEC_LAYERS).toString()))), Gr.encodeLayers(t, e, r, n, s, o, a) ); } static encodeLayers(t, e, r, n, i, s, a) { if (e !== k.AZTEC) throw new o("Can only encode AZTEC, but got " + e); let l = Hr.encode(S.getBytes(t, i), s, a); return Gr.renderResult(l, r, n); } static renderResult(t, e, r) { let n = t.getMatrix(); if (null == n) throw new j(); let i = n.getWidth(), s = n.getHeight(), o = Math.max(e, i), a = Math.max(r, s), l = Math.min(o / i, a / s), h = (o - i * l) / 2, c = (a - s * l) / 2, u = new T(o, a); for (let t = 0, e = c; t < s; t++, e += l) for (let r = 0, s = h; r < i; r++, s += l) n.get(r, t) && u.setRegion(s, e, l, l); return u; } } (t.ArgumentException = s), (t.ArithmeticException = K), (t.AztecCode = pr), (t.AztecCodeReader = dt), (t.AztecCodeWriter = Gr), (t.AztecDecoder = $), (t.AztecDetector = ut), (t.AztecDetectorResult = it), (t.AztecEncoder = Hr), (t.AztecHighLevelEncoder = Ur), (t.AztecPoint = ct), (t.BarcodeFormat = k), (t.Binarizer = h), (t.BinaryBitmap = a), (t.BitArray = w), (t.BitMatrix = T), (t.BitSource = ae), (t.BrowserAztecCodeReader = class extends L { constructor(t = 500) { super(new dt(), t); } }), (t.BrowserBarcodeReader = class extends L { constructor(t = 500, e) { super(new ee(e), t, e); } }), (t.BrowserCodeReader = L), (t.BrowserDatamatrixCodeReader = class extends L { constructor(t = 500) { super(new ue(), t); } }), (t.BrowserMultiFormatReader = class extends L { constructor(t = null, e = 500) { const r = new or(); r.setHints(t), super(r, e); } decodeBitmap(t) { return this.reader.decodeWithState(t); } }), (t.BrowserPDF417Reader = class extends L { constructor(t = 500) { super(new ir(), t); } }), (t.BrowserQRCodeReader = class extends L { constructor(t = 500) { super(new Me(), t); } }), (t.BrowserQRCodeSvgWriter = Cr), (t.CharacterSetECI = m), (t.ChecksumException = l), (t.Code128Reader = ft), (t.Code39Reader = wt), (t.DataMatrixDecodedBitStreamParser = le), (t.DataMatrixReader = ue), (t.DecodeHintType = C), (t.DecoderResult = z), (t.DefaultGridSampler = lt), (t.DetectorResult = nt), (t.EAN13Reader = St), (t.EncodeHintType = lr), (t.Exception = i), (t.FormatException = E), (t.GenericGF = q), (t.GenericGFPoly = Z), (t.GlobalHistogramBinarizer = N), (t.GridSampler = ot), (t.GridSamplerInstance = ht), (t.HTMLCanvasElementLuminanceSource = M), (t.HybridBinarizer = D), (t.ITFReader = At), (t.IllegalArgumentException = o), (t.IllegalStateException = j), (t.InvertedLuminanceSource = O), (t.LuminanceSource = y), (t.MathUtils = tt), (t.MultiFormatOneDReader = ee), (t.MultiFormatReader = or), (t.MultiFormatWriter = class { encode(t, e, r, n, i) { let s; switch (e) { case k.QR_CODE: s = new Er(); break; default: throw new o("Sem suporte para o formato " + e); } return s.encode(t, e, r, n, i); } }), (t.NotFoundException = R), (t.OneDReader = gt), (t.PDF417DecodedBitStreamParser = rr), (t.PDF417DecoderErrorCorrection = ke), (t.PDF417Reader = ir), (t.PDF417ResultMetadata = Ze), (t.PerspectiveTransform = at), (t.PlanarYUVLuminanceSource = mr), (t.QRCodeByteMatrix = ur), (t.QRCodeDataMask = Ce), (t.QRCodeDecodedBitStreamParser = Ie), (t.QRCodeDecoderErrorCorrectionLevel = de), (t.QRCodeDecoderFormatInformation = ge), (t.QRCodeEncoder = Ar), (t.QRCodeEncoderQRCode = dr), (t.QRCodeMaskUtil = cr), (t.QRCodeMatrixUtil = fr), (t.QRCodeMode = _e), (t.QRCodeReader = Me), (t.QRCodeVersion = Ae), (t.QRCodeWriter = Er), (t.RGBLuminanceSource = _r), (t.RSS14Reader = te), (t.RSSExpandedReader = Jt), (t.ReaderException = sr), (t.ReedSolomonDecoder = J), (t.ReedSolomonEncoder = hr), (t.ReedSolomonException = Q), (t.Result = F), (t.ResultMetadataType = W), (t.ResultPoint = rt), (t.StringUtils = S), (t.UnsupportedOperationException = _), (t.VideoInputDevice = b), (t.WhiteRectangleDetector = st), (t.WriterException = gr), (t.ZXingArrays = g), (t.ZXingCharset = Ir), (t.ZXingInteger = f), (t.ZXingStandardCharsets = Sr), (t.ZXingStringBuilder = p), (t.ZXingStringEncoding = I), (t.ZXingSystem = c), Object.defineProperty(t, "__esModule", { value: !0 }); }); /** Html5Qrcode **/ var _; (() => { "use strict"; var e, t = { d: (e, n) => { for (var r in n) t.o(n, r) && !t.o(e, r) && Object.defineProperty(e, r, { enumerable: !0, get: n[r] }); }, o: (e, t) => Object.prototype.hasOwnProperty.call(e, t), r: (e) => { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }); }, }, n = {}; t.r(n), t.d(n, { Html5Qrcode: () => b, Html5QrcodeScanner: () => A, Html5QrcodeSupportedFormats: () => e, }), (function (e) { (e[(e.QR_CODE = 0)] = "QR_CODE"), (e[(e.AZTEC = 1)] = "AZTEC"), (e[(e.CODABAR = 2)] = "CODABAR"), (e[(e.CODE_39 = 3)] = "CODE_39"), (e[(e.CODE_93 = 4)] = "CODE_93"), (e[(e.CODE_128 = 5)] = "CODE_128"), (e[(e.DATA_MATRIX = 6)] = "DATA_MATRIX"), (e[(e.MAXICODE = 7)] = "MAXICODE"), (e[(e.ITF = 8)] = "ITF"), (e[(e.EAN_13 = 9)] = "EAN_13"), (e[(e.EAN_8 = 10)] = "EAN_8"), (e[(e.PDF_417 = 11)] = "PDF_417"), (e[(e.RSS_14 = 12)] = "RSS_14"), (e[(e.RSS_EXPANDED = 13)] = "RSS_EXPANDED"), (e[(e.UPC_A = 14)] = "UPC_A"), (e[(e.UPC_E = 15)] = "UPC_E"), (e[(e.UPC_EAN_EXTENSION = 16)] = "UPC_EAN_EXTENSION"); })(e || (e = {})); var r, i, o = new Map([ [e.QR_CODE, "QR_CODE"], [e.AZTEC, "AZTEC"], [e.CODABAR, "CODABAR"], [e.CODE_39, "CODE_39"], [e.CODE_93, "CODE_93"], [e.CODE_128, "CODE_128"], [e.DATA_MATRIX, "DATA_MATRIX"], [e.MAXICODE, "MAXICODE"], [e.ITF, "ITF"], [e.EAN_13, "EAN_13"], [e.EAN_8, "EAN_8"], [e.PDF_417, "PDF_417"], [e.RSS_14, "RSS_14"], [e.RSS_EXPANDED, "RSS_EXPANDED"], [e.UPC_A, "UPC_A"], [e.UPC_E, "UPC_E"], [e.UPC_EAN_EXTENSION, "UPC_EAN_EXTENSION"], ]); function a(t) { return Object.values(e).includes(t); } !(function (e) { (e[(e.UNKNOWN = 0)] = "UNKNOWN"), (e[(e.URL = 1)] = "URL"); })(r || (r = {})), (function (e) { (e[(e.SCAN_TYPE_CAMERA = 0)] = "SCAN_TYPE_CAMERA"), (e[(e.SCAN_TYPE_FILE = 1)] = "SCAN_TYPE_FILE"); })(i || (i = {})); var s, c = (function () { function e() {} return ( (e.ASSET_FILE_SCAN = "https://raw.githubusercontent.com/mebjas/html5-qrcode/master/assets/file-scan.gif"), (e.ASSET_CAMERA_SCAN = "https://raw.githubusercontent.com/mebjas/html5-qrcode/master/assets/camera-scan.gif"), (e.GITHUB_PROJECT_URL = ""), (e.SCAN_DEFAULT_FPS = 2), (e.DEFAULT_DISABLE_FLIP = !1), e ); })(), d = (function () { function e(e, t) { (this.format = e), (this.formatName = t); } return ( (e.prototype.toString = function () { return this.formatName; }), (e.create = function (t) { if (!o.has(t)) throw t + " not in html5QrcodeSupportedFormatsTextMap"; return new e(t, o.get(t)); }), e ); })(), l = (function () { function e() {} return ( (e.createFromText = function (e) { return { decodedText: e, result: { text: e } }; }), (e.createFromQrcodeResult = function (e) { return { decodedText: e.text, result: e }; }), e ); })(); !(function (e) { (e[(e.UNKWOWN_ERROR = 0)] = "UNKWOWN_ERROR"), (e[(e.IMPLEMENTATION_ERROR = 1)] = "IMPLEMENTATION_ERROR"), (e[(e.NO_CODE_FOUND_ERROR = 2)] = "NO_CODE_FOUND_ERROR"); })(s || (s = {})); var h, u, p = (function () { function e() {} return ( (e.createFrom = function (e) { return { errorMessage: e, type: s.UNKWOWN_ERROR }; }), e ); })(), g = (function () { function e(e) { this.verbose = e; } return ( (e.prototype.log = function (e) { this.verbose && console.log(e); }), (e.prototype.warn = function (e) { this.verbose && console.warn(e); }), (e.prototype.logError = function (e, t) { (this.verbose || !0 === t) && console.error(e); }), (e.prototype.logErrors = function (e) { if (0 == e.length) throw "Logger#logError called without arguments"; this.verbose && console.error(e); }), e ); })(), S = (function () { function e() {} return ( (e.codeParseError = function (e) { return "Por favor, contacte o suporte. Erro = " + e; }), (e.errorGettingUserMedia = function (e) { return "Por favor, contacte o suporte. error = " + e; }), (e.onlyDeviceSupportedError = function () { return "Este dispositivo não suporta leitura de QR Code. Digite o código."; }), (e.cameraStreamingNotSupported = function () { return "Câmera utilizada não tem suporte pelo navegador."; }), (e.unableToQuerySupportedDevices = function () { return "Erro desconhecido. Por favor, contacte o suporte"; }), (e.insecureContextCameraQueryError = function () { return "Só é possível acessar a câmera em ambientes de internet seguros."; }), e ); })(), m = (function () { function e() {} return ( (e.scanningStatus = function () { return "Escaneando"; }), (e.idleStatus = function () { return "Sem uso"; }), (e.errorStatus = function () { return "Erro"; }), (e.permissionStatus = function () { return "Permissão"; }), (e.noCameraFoundErrorStatus = function () { return "Sem câmeras"; }), (e.lastMatch = function (e) { return "Último código: " + e; }), (e.codeScannerTitle = function () { return "QR Code"; }), (e.cameraPermissionTitle = function () { return "Acessar câmera"; }), (e.cameraPermissionRequesting = function () { return "Pedindo acesso à câmera..."; }), (e.scanButtonStopScanningText = function () { return "Parar"; }), (e.scanButtonStartScanningText = function () { return "Escanear"; }), (e.textIfCameraScanSelected = function () { return "Escanear usando Imagem"; }), (e.textIfFileScanSelected = function () { return "Escanear usando Imagem"; }), e ); })(), f = (function () { function e() {} return ( (e.isMediaStreamConstraintsValid = function (e, t) { if ("object" != typeof e) { var n = typeof e; return ( t.logError( "videoConstraints deveria ser um tipo de objeto, o objeto passado é do tipo " + n + ".", !0 ), !1 ); } for ( var r = new Set([ "autoGainControl", "channelCount", "echoCancellation", "latency", "noiseSuppression", "sampleRate", "sampleSize", "volume", ]), i = 0, o = Object.keys(e); i < o.length; i++ ) { var a = o[i]; if (r.has(a)) return ( t.logError(a + " is not supported videoConstaints.", !0), !1 ); } return !0; }), e ); })(), E = (function () { function t(t, n, r) { if ( ((this.formatMap = new Map([ [e.QR_CODE, ZXing.BarcodeFormat.QR_CODE], [e.AZTEC, ZXing.BarcodeFormat.AZTEC], [e.CODABAR, ZXing.BarcodeFormat.CODABAR], [e.CODE_39, ZXing.BarcodeFormat.CODE_39], [e.CODE_93, ZXing.BarcodeFormat.CODE_93], [e.CODE_128, ZXing.BarcodeFormat.CODE_128], [e.DATA_MATRIX, ZXing.BarcodeFormat.DATA_MATRIX], [e.MAXICODE, ZXing.BarcodeFormat.MAXICODE], [e.ITF, ZXing.BarcodeFormat.ITF], [e.EAN_13, ZXing.BarcodeFormat.EAN_13], [e.EAN_8, ZXing.BarcodeFormat.EAN_8], [e.PDF_417, ZXing.BarcodeFormat.PDF_417], [e.RSS_14, ZXing.BarcodeFormat.RSS_14], [e.RSS_EXPANDED, ZXing.BarcodeFormat.RSS_EXPANDED], [e.UPC_A, ZXing.BarcodeFormat.UPC_A], [e.UPC_E, ZXing.BarcodeFormat.UPC_E], [e.UPC_EAN_EXTENSION, ZXing.BarcodeFormat.UPC_EAN_EXTENSION], ])), (this.reverseFormatMap = this.createReverseFormatMap()), !ZXing) ) throw "Use html5qrcode.min.js without edit, ZXing not found."; (this.verbose = n), (this.logger = r); var i = this.createZXingFormats(t), o = new Map(); o.set(ZXing.DecodeHintType.POSSIBLE_FORMATS, i), (this.hints = o); } return ( (t.prototype.decode = function (e) { var t = new ZXing.MultiFormatReader(this.verbose, this.hints), n = new ZXing.HTMLCanvasElementLuminanceSource(e), r = new ZXing.BinaryBitmap(new ZXing.HybridBinarizer(n)), i = t.decode(r); return { text: i.text, format: d.create(this.toHtml5QrcodeSupportedFormats(i.format)), }; }), (t.prototype.createReverseFormatMap = function () { var e = new Map(); return ( this.formatMap.forEach(function (t, n, r) { e.set(t, n); }), e ); }), (t.prototype.toHtml5QrcodeSupportedFormats = function (e) { if (!this.reverseFormatMap.has(e)) throw "reverseFormatMap doesn't have " + e; return this.reverseFormatMap.get(e); }), (t.prototype.createZXingFormats = function (e) { for (var t = [], n = 0, r = e; n < r.length; n++) { var i = r[n]; this.formatMap.has(i) ? t.push(this.formatMap.get(i)) : this.logger.logError( i + " is not supported byZXingHtml5QrcodeShim" ); } return t; }), t ); })(), y = (function () { function e(e, t, n) { (this.EXECUTIONS_TO_REPORT_PERFORMANCE = 100), (this.executions = 0), (this.executionResults = []), (this.verbose = t), (this.zxingDecorderDelegate = new E(e, t, n)); } return ( (e.prototype.decode = function (e) { var t = performance.now(); try { return this.zxingDecorderDelegate.decode(e); } catch (e) { throw e; } finally { if (this.verbose) { var n = performance.now() - t; this.executionResults.push(n), this.executions++, this.possiblyFlushPerformanceReport(); } } }), (e.prototype.possiblyFlushPerformanceReport = function () { if (!(this.executions < this.EXECUTIONS_TO_REPORT_PERFORMANCE)) { for (var e = 0, t = 0, n = this.executionResults; t < n.length; t++) e += n[t]; var r = e / this.executionResults.length; console.log( r + " ms for " + this.executionResults.length + " last runs." ), (this.executions = 0), (this.executionResults = []); } }), e ); })(), v = ((h = function (e, t) { return (h = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (e, t) { e.__proto__ = t; }) || function (e, t) { for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); })(e, t); }), function (e, t) { function n() { this.constructor = e; } h(e, t), (e.prototype = null === t ? Object.create(t) : ((n.prototype = t.prototype), new n())); }), C = (function (e) { function t() { return (null !== e && e.apply(this, arguments)) || this; } return ( v(t, e), (t.DEFAULT_WIDTH = 300), (t.DEFAULT_WIDTH_OFFSET = 2), (t.FILE_SCAN_MIN_HEIGHT = 300), (t.MIN_QR_BOX_SIZE = 50), (t.SHADED_LEFT = 1), (t.SHADED_RIGHT = 2), (t.SHADED_TOP = 3), (t.SHADED_BOTTOM = 4), (t.SHADED_REGION_CLASSNAME = "qr-shaded-region"), (t.VERBOSE = !1), (t.BORDER_SHADER_DEFAULT_COLOR = "#ffffff"), (t.BORDER_SHADER_MATCH_COLOR = "rgb(90, 193, 56)"), t ); })(c), T = (function () { function e(e, t) { (this.logger = t), (this.fps = C.SCAN_DEFAULT_FPS), e ? (e.fps && (this.fps = e.fps), (this.disableFlip = !0 === e.disableFlip), (this.qrbox = e.qrbox), (this.aspectRatio = e.aspectRatio), (this.videoConstraints = e.videoConstraints)) : (this.disableFlip = C.DEFAULT_DISABLE_FLIP); } return ( (e.prototype.isMediaStreamConstraintsValid = function () { return this.videoConstraints ? f.isMediaStreamConstraintsValid( this.videoConstraints, this.logger ) : (this.logger.logError("Empty videoConstraints", !0), !1); }), (e.prototype.isShadedBoxEnabled = function () { return void 0 !== this.qrbox; }), (e.create = function (t, n) { return new e(t, n); }), e ); })(), b = (function () { function t(e, t) { if (!document.getElementById(e)) throw "HTML Element with id=" + e + " not found"; (this.elementId = e), (this.verbose = !1), "boolean" == typeof t ? (this.verbose = !0 === t) : t && (this.verbose = !0 === t.verbose), (this.logger = new g(this.verbose)), (this.qrcode = new y( this.getSupportedFormats(t), this.verbose, this.logger )), this.foreverScanTimeout, this.localMediaStream, (this.shouldScan = !0), (this.isScanning = !1); } return ( (t.prototype.start = function (e, t, n, r) { if (!e) throw "cameraIdOrConfig is required"; if (!n || "function" != typeof n) throw "qrCodeSuccessCallback is required and should be a function."; r || (r = this.verbose ? this.logger.log : function () {}); var i = T.create(t, this.logger); this.clearElement(); var o = !1; i.videoConstraints && (i.isMediaStreamConstraintsValid() ? (o = !0) : this.logger.logError( "'videoConstraints' is not valid 'MediaStreamConstraints, it will be ignored.'", !0 )); var a = o, s = i.isShadedBoxEnabled(), c = document.getElementById(this.elementId), d = c.clientWidth ? c.clientWidth : C.DEFAULT_WIDTH; if ( ((c.style.position = "relative"), (this.shouldScan = !0), (this.element = c), s) ) { var l = i.qrbox; if (l < C.MIN_QR_BOX_SIZE) throw ( "minimum size of 'config.qrbox' is " + C.MIN_QR_BOX_SIZE + "px." ); if (l > d) throw "'config.qrbox' should not be greater than the width of the HTML element."; } var h = this; return new Promise(function (t, o) { var s = a ? i.videoConstraints : h.createVideoConstraints(e); if (s) if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) navigator.mediaDevices .getUserMedia({ audio: !1, video: s }) .then(function (e) { h.onMediaStreamReceived(e, i, a, d, n, r) .then(function (e) { (h.isScanning = !0), t(null); }) .catch(o); }) .catch(function (e) { o(S.errorGettingUserMedia(e)); }); else if (navigator.getUserMedia) { if ("string" != typeof e) throw S.onlyDeviceSupportedError(); var c = { video: s }; navigator.getUserMedia( c, function (e) { h.onMediaStreamReceived(e, i, a, d, n, r) .then(function (e) { (h.isScanning = !0), t(null); }) .catch(function (e) { o(S.errorGettingUserMedia(e)); }); }, function (e) { o(S.errorGettingUserMedia(e)); } ); } else o(S.cameraStreamingNotSupported()); else o("videoConstraints should be defined"); }); }), (t.prototype.stop = function () { var e = this; return ( (this.shouldScan = !1), this.foreverScanTimeout && clearTimeout(this.foreverScanTimeout), new Promise(function (t, n) { var r = function () { (e.localMediaStream = void 0), e.element && (e.element.removeChild(e.videoElement), e.element.removeChild(e.canvasElement)), (function () { if (e.element) for ( ; e.element.getElementsByClassName( C.SHADED_REGION_CLASSNAME ).length; ) { var t = e.element.getElementsByClassName( C.SHADED_REGION_CLASSNAME )[0]; e.element.removeChild(t); } })(), (e.isScanning = !1), e.qrRegion && (e.qrRegion = void 0), e.context && (e.context = void 0), t(); }; e.localMediaStream || r(); var i = e.localMediaStream.getVideoTracks().length, o = 0; e.localMediaStream.getVideoTracks().forEach(function (t) { e.localMediaStream.removeTrack(t), t.stop(), ++o >= i && r(); }); }) ); }), (t.prototype.scanFile = function (e, t) { return this.scanFileV2(e, t).then(function (e) { return e.decodedText; }); }), (t.prototype.scanFileV2 = function (e, t) { var n = this; if (!(e && e instanceof File)) throw "imageFile argument is mandatory and should be instance of File. Use 'event.target.files[0]'."; if ((void 0 === t && (t = !0), this.isScanning)) throw "Close ongoing scan before scanning a file."; return new Promise(function (r, i) { n.possiblyCloseLastScanImageFile(), n.clearElement(), (n.lastScanImageFile = URL.createObjectURL(e)); var o = new Image(); (o.onload = function () { var e = o.width, a = o.height, s = document.getElementById(n.elementId), c = s.clientWidth ? s.clientWidth : C.DEFAULT_WIDTH, d = Math.max( s.clientHeight ? s.clientHeight : a, C.FILE_SCAN_MIN_HEIGHT ), h = n.computeCanvasDrawConfig(e, a, c, d); if (t) { var u = n.createCanvasElement(c, d, "qr-canvas-visible"); (u.style.display = "inline-block"), s.appendChild(u); var p = u.getContext("2d"); if (!p) throw "Unable to get 2d context from canvas"; (p.canvas.width = c), (p.canvas.height = d), p.drawImage(o, 0, 0, e, a, h.x, h.y, h.width, h.height); } var g = n.createCanvasElement(h.width, h.height); s.appendChild(g); var S = g.getContext("2d"); if (!S) throw "Unable to get 2d context from canvas"; (S.canvas.width = h.width), (S.canvas.height = h.height), S.drawImage(o, 0, 0, e, a, 0, 0, h.width, h.height); try { var m = n.qrcode.decode(g); r(l.createFromQrcodeResult(m)); } catch (e) { i("QR code parse error, error = " + e); } }), (o.onerror = i), (o.onabort = i), (o.onstalled = i), (o.onsuspend = i), (o.src = URL.createObjectURL(e)); }); }), (t.prototype.clear = function () { this.clearElement(); }), (t.getCameras = function () { if (navigator.mediaDevices) return t.getCamerasFromMediaDevices(); var e = MediaStreamTrack; if (MediaStreamTrack && e.getSources) return t.getCamerasFrmoMediaStreamTrack(); var n = S.unableToQuerySupportedDevices(); return ( (function () { if ("https:" === location.protocol) return !0; var e = location.host.split(":")[0]; return "127.0.0.1" === e || "localhost" === e; })() || (n = S.insecureContextCameraQueryError()), Promise.reject(n) ); }), (t.prototype.getRunningTrackCapabilities = function () { if (null == this.localMediaStream) throw "Scanning is not in running state, call this API only when QR code scanning using camera is in running state."; if (0 === this.localMediaStream.getVideoTracks().length) throw "No video tracks found"; return this.localMediaStream.getVideoTracks()[0].getCapabilities(); }), (t.prototype.applyVideoConstraints = function (e) { var t = this; if (!e) throw "videoConstaints is required argument."; if (!f.isMediaStreamConstraintsValid(e, this.logger)) throw "invalid videoConstaints passed, check logs for more details"; if (null == this.localMediaStream) throw "Scanning is not in running state, call this API only when QR code scanning using camera is in running state."; if (0 == this.localMediaStream.getVideoTracks().length) throw "No video tracks found"; return new Promise(function (n, r) { "aspectRatio" in e ? r("Chaning 'aspectRatio' in run-time is not yet supported.") : t.localMediaStream .getVideoTracks()[0] .applyConstraints(e) .then(function (e) { n(e); }) .catch(function (e) { r(e); }); }); }), (t.getCamerasFromMediaDevices = function () { return new Promise(function (e, t) { navigator.mediaDevices .getUserMedia({ audio: !1, video: !0 }) .then(function (n) { navigator.mediaDevices .enumerateDevices() .then(function (t) { for (var r = [], i = 0, o = t; i < o.length; i++) { var a = o[i]; "videoinput" === a.kind && r.push({ id: a.deviceId, label: a.label }); } !(function (e) { for ( var t = 0, n = e.getVideoTracks(); t < n.length; t++ ) { var r = n[t]; (r.enabled = !1), r.stop(), e.removeTrack(r); } })(n), e(r); }) .catch(function (e) { t(e.name + " : " + e.message); }); }) .catch(function (e) { t(e.name + " : " + e.message); }); }); }), (t.getCamerasFrmoMediaStreamTrack = function () { return new Promise(function (e, t) { MediaStreamTrack.getSources(function (t) { for (var n = [], r = 0, i = t; r < i.length; r++) { var o = i[r]; "video" === o.kind && n.push({ id: o.id, label: o.label }); } e(n); }); }); }), (t.prototype.getSupportedFormats = function (t) { var n = [ e.QR_CODE, e.AZTEC, e.CODABAR, e.CODE_39, e.CODE_93, e.CODE_128, e.DATA_MATRIX, e.MAXICODE, e.ITF, e.EAN_13, e.EAN_8, e.PDF_417, e.RSS_14, e.RSS_EXPANDED, e.UPC_A, e.UPC_E, e.UPC_EAN_EXTENSION, ]; if (!t || "boolean" == typeof t) return n; if (!t.formatsToSupport) return n; if (!Array.isArray(t.formatsToSupport)) throw "configOrVerbosityFlag.formatsToSupport should be undefined or an array."; if (0 === t.formatsToSupport.length) throw "Atleast 1 formatsToSupport is needed."; for (var r = [], i = 0, o = t.formatsToSupport; i < o.length; i++) { var s = o[i]; a(s) ? r.push(s) : this.logger.warn( "Invalid format: " + s + " passed in config, ignoring." ); } if (0 === r.length) throw "None of formatsToSupport match supported values."; return r; }), (t.prototype.setupUi = function (e, t, n) { var r = n.qrbox; r > t && this.logger.warn( "[Html5Qrcode] config.qrboxsize is greater than video height. Shading will be ignored" ); var i = n.isShadedBoxEnabled() && r <= t, o = { x: 0, y: 0, width: e, height: t }, a = i ? this.getShadedRegionBounds(e, t, r) : o, s = this.createCanvasElement(a.width, a.height), c = s.getContext("2d"); (c.canvas.width = a.width), (c.canvas.height = a.height), this.element.append(s), i && this.possiblyInsertShadingElement(this.element, e, t, r), (this.qrRegion = a), (this.context = c), (this.canvasElement = s); }), (t.prototype.scanContext = function (e, t) { try { var n = this.qrcode.decode(this.canvasElement); return ( e(n.text, l.createFromQrcodeResult(n)), this.possiblyUpdateShaders(!0), !0 ); } catch (e) { this.possiblyUpdateShaders(!1); var r = S.codeParseError(e); return t(r, p.createFrom(r)), !1; } }), (t.prototype.foreverScan = function (e, t, n) { var r = this; if (this.shouldScan) { if (this.localMediaStream) { var i = this.videoElement, o = i.videoWidth / i.clientWidth, a = i.videoHeight / i.clientHeight; if (!this.qrRegion) throw "qrRegion undefined when localMediaStream is ready."; var s = this.qrRegion.width * o, c = this.qrRegion.height * a, d = this.qrRegion.x * o, l = this.qrRegion.y * a; this.context.drawImage( i, d, l, s, c, 0, 0, this.qrRegion.width, this.qrRegion.height ), this.scanContext(t, n) || !0 === e.disableFlip || (this.context.translate(this.context.canvas.width, 0), this.context.scale(-1, 1), this.scanContext(t, n)); } this.foreverScanTimeout = setTimeout(function () { r.foreverScan(e, t, n); }, this.getTimeoutFps(e.fps)); } }), (t.prototype.onMediaStreamReceived = function (e, t, n, r, i, o) { var a = this, s = this; return new Promise(function (c, d) { var l = function () { var n = a.createVideoElement(r); s.element.append(n), (n.onabort = d), (n.onerror = d), (n.onplaying = function () { var e = n.clientWidth, r = n.clientHeight; s.setupUi(e, r, t), s.foreverScan(t, i, o), c(null); }), (n.srcObject = e), n.play(), (s.videoElement = n); }; if (((s.localMediaStream = e), n || !t.aspectRatio)) l(); else { var h = { aspectRatio: t.aspectRatio }; e.getVideoTracks()[0] .applyConstraints(h) .then(function (e) { return l(); }) .catch(function (e) { s.logger.logErrors([ "[Html5Qrcode] Constriants could not be satisfied, ignoring constraints", e, ]), l(); }); } }); }), (t.prototype.createVideoConstraints = function (e) { if ("string" == typeof e) return { deviceId: { exact: e } }; if ("object" == typeof e) { var t = "facingMode", n = { user: !0, environment: !0 }, r = "exact", i = function (e) { if (e in n) return !0; throw "config has invalid 'facingMode' value = '" + e + "'"; }, o = Object.keys(e); if (1 !== o.length) throw ( "'cameraIdOrConfig' object should have exactly 1 key, if passed as an object, found " + o.length + " keys" ); var a = Object.keys(e)[0]; if (a !== t && "deviceId" !== a) throw "Only 'facingMode' and 'deviceId' are supported for 'cameraIdOrConfig'"; if (a !== t) { var s = e.deviceId; if ("string" == typeof s) return { deviceId: s }; if ("object" == typeof s) { if (r in s) return { deviceId: { exact: s.exact } }; throw "'deviceId' should be string or object with exact as key."; } throw "Invalid type of 'deviceId' = " + typeof s; } var c = e.facingMode; if ("string" == typeof c) { if (i(c)) return { facingMode: c }; } else { if ("object" != typeof c) throw "Invalid type of 'facingMode' = " + typeof c; if (!(r in c)) throw "'facingMode' should be string or object with exact as key."; if (i(c.exact)) return { facingMode: { exact: c.exact } }; } } throw "Invalid type of 'cameraIdOrConfig' = " + typeof e; }), (t.prototype.computeCanvasDrawConfig = function (e, t, n, r) { if (e <= n && t <= r) return { x: (n - e) / 2, y: (r - t) / 2, width: e, height: t }; var i = e, o = t; return ( e > n && ((t *= n / e), (e = n)), t > r && ((e *= r / t), (t = r)), this.logger.log( "Image downsampled from " + i + "X" + o + " to " + e + "X" + t + "." ), this.computeCanvasDrawConfig(e, t, n, r) ); }), (t.prototype.clearElement = function () { if (this.isScanning) throw "Cannot clear while scan is ongoing, close it first."; var e = document.getElementById(this.elementId); e && (e.innerHTML = ""); }), (t.prototype.createVideoElement = function (e) { var t = document.createElement("video"); return ( (t.style.width = e + "px"), (t.muted = !0), t.setAttribute("muted", "true"), (t.playsInline = !0), t ); }), (t.prototype.possiblyUpdateShaders = function (e) { this.qrMatch !== e && (this.hasBorderShaders && this.borderShaders && this.borderShaders.length && this.borderShaders.forEach(function (t) { t.style.backgroundColor = e ? C.BORDER_SHADER_MATCH_COLOR : C.BORDER_SHADER_DEFAULT_COLOR; }), (this.qrMatch = e)); }), (t.prototype.possiblyCloseLastScanImageFile = function () { this.lastScanImageFile && (URL.revokeObjectURL(this.lastScanImageFile), (this.lastScanImageFile = void 0)); }), (t.prototype.createCanvasElement = function (e, t, n) { var r = e, i = t, o = document.createElement("canvas"); return ( (o.style.width = r + "px"), (o.style.height = i + "px"), (o.style.display = "none"), (o.id = null == n ? "qr-canvas" : n), o ); }), (t.prototype.getShadedRegionBounds = function (e, t, n) { if (n > e || n > t) throw "'config.qrbox' should not be greater than the width and height of the HTML element."; return { x: (e - n) / 2, y: (t - n) / 2, width: n, height: n }; }), (t.prototype.possiblyInsertShadingElement = function (e, t, n, r) { if (!(t - r < 1 || n - r < 1)) { var i = document.createElement("div"); if ( ((i.style.position = "absolute"), (i.style.borderLeft = (t - r) / 2 + "px solid #0000007a"), (i.style.borderRight = (t - r) / 2 + "px solid #0000007a"), (i.style.borderTop = (n - r) / 2 + "px solid #0000007a"), (i.style.borderBottom = (n - r) / 2 + "px solid #0000007a"), (i.style.boxSizing = "border-box"), (i.style.top = "0px"), (i.style.bottom = "0px"), (i.style.left = "0px"), (i.style.right = "0px"), (i.id = "" + C.SHADED_REGION_CLASSNAME), t - r < 11 || n - r < 11) ) this.hasBorderShaders = !1; else { var o = 40; this.insertShaderBorders(i, o, 5, -5, 0, !0), this.insertShaderBorders(i, o, 5, -5, 0, !1), this.insertShaderBorders(i, o, 5, r + 5, 0, !0), this.insertShaderBorders(i, o, 5, r + 5, 0, !1), this.insertShaderBorders(i, 5, 45, -5, -5, !0), this.insertShaderBorders(i, 5, 45, r + 5 - o, -5, !0), this.insertShaderBorders(i, 5, 45, -5, -5, !1), this.insertShaderBorders(i, 5, 45, r + 5 - o, -5, !1), (this.hasBorderShaders = !0); } e.append(i); } }), (t.prototype.insertShaderBorders = function (e, t, n, r, i, o) { var a = document.createElement("div"); (a.style.position = "absolute"), (a.style.backgroundColor = C.BORDER_SHADER_DEFAULT_COLOR), (a.style.width = t + "px"), (a.style.height = n + "px"), (a.style.top = r + "px"), o ? (a.style.left = i + "px") : (a.style.right = i + "px"), this.borderShaders || (this.borderShaders = []), this.borderShaders.push(a), e.appendChild(a); }), (t.prototype.getTimeoutFps = function (e) { return 1e3 / e; }), t ); })(); !(function (e) { (e[(e.STATUS_DEFAULT = 0)] = "STATUS_DEFAULT"), (e[(e.STATUS_SUCCESS = 1)] = "STATUS_SUCCESS"), (e[(e.STATUS_WARNING = 2)] = "STATUS_WARNING"); })(u || (u = {})); var A = (function () { function e(e, t, n) { if ( ((this.elementId = e), (this.config = this.createConfig(t)), (this.verbose = !0 === n), !document.getElementById(e)) ) throw "HTML Element with id=" + e + " not found"; (this.currentScanType = i.SCAN_TYPE_CAMERA), (this.sectionSwapAllowed = !0), (this.logger = new g(this.verbose)); } return ( (e.prototype.render = function (e, t) { var n = this; (this.lastMatchFound = void 0), (this.qrCodeSuccessCallback = function (t, r) { if (e) e(t, r); else { if (n.lastMatchFound === t) return; (n.lastMatchFound = t), n.setHeaderMessage(m.lastMatch(t), u.STATUS_SUCCESS); } }), (this.qrCodeErrorCallback = function (e, r) { n.setStatus(m.scanningStatus()), t && t(e, r); }); var r, i, o = document.getElementById(this.elementId); if (!o) throw "HTML Element with id=" + this.elementId + " not found"; (o.innerHTML = ""), this.createBasicLayout(o), (this.html5Qrcode = new b( this.getScanRegionId(), ((r = this.config), (i = this.verbose), { formatsToSupport: r.formatsToSupport, verbose: i }) )); }), (e.prototype.clear = function () { var e = this; return this.html5Qrcode ? new Promise(function (t, n) { e.html5Qrcode ? e.html5Qrcode.isScanning && e.html5Qrcode .stop() .then(function (n) { var r; e.html5Qrcode ? (e.html5Qrcode.clear(), (r = document.getElementById(e.elementId)) && ((r.innerHTML = ""), e.resetBasicLayout(r)), t()) : t(); }) .catch(function (t) { e.verbose && e.logger.logError("Unable to stop qrcode scanner", t), n(t); }) : t(); }) : Promise.resolve(); }), (e.prototype.createConfig = function (e) { return e ? (e.fps || (e.fps = c.SCAN_DEFAULT_FPS), e) : { fps: c.SCAN_DEFAULT_FPS }; }), (e.prototype.createBasicLayout = function (e) { (e.style.position = "relative"), (e.style.padding = "0px"), (e.style.border = "1px solid silver"), this.createHeader(e); var t = document.createElement("div"), n = this.getScanRegionId(); (t.id = n), (t.style.width = "100%"), (t.style.minHeight = "100px"), (t.style.textAlign = "center"), e.appendChild(t), this.insertCameraScanImageToScanRegion(); var r = document.createElement("div"), i = this.getDashboardId(); (r.id = i), (r.style.width = "100%"), e.appendChild(r), this.setupInitialDashboard(r); }), (e.prototype.resetBasicLayout = function (e) { e.style.border = "none"; }), (e.prototype.setupInitialDashboard = function (e) { this.createSection(e), this.createSectionControlPanel(), this.createSectionSwap(); }), (e.prototype.createHeader = function (e) { var t = document.createElement("div"); (t.style.textAlign = "left"), (t.style.margin = "0px"), (t.style.padding = "5px"), (t.style.fontSize = "20px"), (t.style.borderBottom = "1px solid rgba(192, 192, 192, 0.18)"), e.appendChild(t); var n = document.createElement("span"), r = document.createElement("a"); (r.innerHTML = m.codeScannerTitle()), (r.href = c.GITHUB_PROJECT_URL), n.appendChild(r), t.appendChild(n); var i = document.createElement("span"); (i.id = this.getStatusSpanId()), (i.style.float = "right"), (i.style.padding = "5px 7px"), (i.style.fontSize = "14px"), (i.style.background = "#dedede6b"), (i.style.border = "1px solid #00000000"), (i.style.color = "rgb(17, 17, 17)"), t.appendChild(i), this.setStatus(m.idleStatus()); var o = document.createElement("div"); (o.id = this.getHeaderMessageContainerId()), (o.style.display = "none"), (o.style.fontSize = "14px"), (o.style.padding = "2px 10px"), (o.style.marginTop = "4px"), (o.style.borderTop = "1px solid #f6f6f6"), t.appendChild(o); }), (e.prototype.createSection = function (e) { var t = document.createElement("div"); (t.id = this.getDashboardSectionId()), (t.style.width = "100%"), (t.style.padding = "10px"), (t.style.textAlign = "left"), e.appendChild(t); }), (e.prototype.createSectionControlPanel = function () { var e = document.getElementById(this.getDashboardSectionId()), t = document.createElement("div"); e.appendChild(t); var n = document.createElement("div"); (n.id = this.getDashboardSectionCameraScanRegionId()), (n.style.display = this.currentScanType === i.SCAN_TYPE_CAMERA ? "block" : "none"), t.appendChild(n); var r = document.createElement("div"); r.style.textAlign = "center"; var o = document.createElement("button"); o.innerHTML = m.cameraPermissionTitle(); var a = this; o.addEventListener("click", function () { (o.disabled = !0), a.setStatus(m.permissionStatus()), a.setHeaderMessage(m.cameraPermissionRequesting()), b .getCameras() .then(function (e) { a.setStatus(m.idleStatus()), a.resetHeaderMessage(), e && 0 !== e.length ? (n.removeChild(r), a.renderCameraSelection(e)) : a.setStatus( m.noCameraFoundErrorStatus(), u.STATUS_WARNING ); }) .catch(function (e) { (o.disabled = !1), a.setStatus(m.idleStatus()), a.setHeaderMessage(e, u.STATUS_WARNING); }); }), r.appendChild(o), n.appendChild(r); var s = document.createElement("div"); (s.id = this.getDashboardSectionFileScanRegionId()), (s.style.textAlign = "center"), (s.style.display = this.currentScanType == i.SCAN_TYPE_CAMERA ? "none" : "block"), t.appendChild(s); var c = document.createElement("input"); (c.id = this.getFileScanInputId()), (c.accept = "image/*"), (c.type = "file"), (c.style.width = "200px"), (c.disabled = this.currentScanType === i.SCAN_TYPE_CAMERA); var d = document.createElement("span"); (d.innerHTML = " Selecionar Imagem"), s.appendChild(c), s.appendChild(d), c.addEventListener("change", function (e) { if (!a.html5Qrcode) throw "html5Qrcode não definido"; if ( null != e && null != e.target && a.currentScanType === i.SCAN_TYPE_FILE && 0 !== e.target.files.length ) { var t = e.target.files[0]; a.html5Qrcode .scanFileV2(t, !0) .then(function (e) { a.resetHeaderMessage(), a.qrCodeSuccessCallback(e.decodedText, e); }) .catch(function (e) { a.setStatus(m.errorStatus(), u.STATUS_WARNING), a.setHeaderMessage(e, u.STATUS_WARNING), a.qrCodeErrorCallback(e, p.createFrom(e)); }); } }); }), (e.prototype.renderCameraSelection = function (e) { var t = this, n = document.getElementById( this.getDashboardSectionCameraScanRegionId() ); n.style.textAlign = "center"; var r = document.createElement("span"); (r.innerHTML = "Select Camera (" + e.length + ") "), (r.style.marginRight = "10px"); var i = document.createElement("select"); i.id = this.getCameraSelectionId(); for (var o = 0, a = e; o < a.length; o++) { var s = a[o], c = s.id, d = null == s.label ? c : s.label, l = document.createElement("option"); (l.value = c), (l.innerHTML = d), i.appendChild(l); } r.appendChild(i), n.appendChild(r); var h = document.createElement("span"), p = document.createElement("button"); (p.innerHTML = m.scanButtonStartScanningText()), h.appendChild(p); var g = document.createElement("button"); (g.innerHTML = m.scanButtonStopScanningText()), (g.style.display = "none"), (g.disabled = !0), h.appendChild(g), n.appendChild(h), p.addEventListener("click", function (e) { (i.disabled = !0), (p.disabled = !0), t.showHideScanTypeSwapLink(!1); var n, r = i.value; t.html5Qrcode .start( r, ((n = t.config), { fps: n.fps, qrbox: n.qrbox, aspectRatio: n.aspectRatio, disableFlip: n.disableFlip, videoConstraints: n.videoConstraints, }), t.qrCodeSuccessCallback, t.qrCodeErrorCallback ) .then(function (e) { (g.disabled = !1), (g.style.display = "inline-block"), (p.style.display = "none"), t.setStatus(m.scanningStatus()); }) .catch(function (e) { t.showHideScanTypeSwapLink(!0), (i.disabled = !1), (p.disabled = !1), t.setStatus(m.idleStatus()), t.setHeaderMessage(e, u.STATUS_WARNING); }); }), g.addEventListener("click", function (e) { if (!t.html5Qrcode) throw "html5Qrcode not defined"; (g.disabled = !0), t.html5Qrcode .stop() .then(function (e) { t.showHideScanTypeSwapLink(!0), (i.disabled = !1), (p.disabled = !1), (g.style.display = "none"), (p.style.display = "inline-block"), t.setStatus(m.idleStatus()), t.insertCameraScanImageToScanRegion(); }) .catch(function (e) { (g.disabled = !1), t.setStatus(m.errorStatus(), u.STATUS_WARNING), t.setHeaderMessage(e, u.STATUS_WARNING); }); }); }), (e.prototype.createSectionSwap = function () { var e = this, t = m.textIfCameraScanSelected(), n = m.textIfFileScanSelected(), r = document.getElementById(this.getDashboardSectionId()), o = document.createElement("div"); o.style.textAlign = "center"; var a = document.createElement("a"); (a.style.textDecoration = "underline"), (a.id = this.getDashboardSectionSwapLinkId()), (a.innerHTML = this.currentScanType == i.SCAN_TYPE_CAMERA ? t : n), (a.href = "#scan-using-file"), a.addEventListener("click", function () { e.sectionSwapAllowed ? (e.setStatus(m.idleStatus()), e.resetHeaderMessage(), (e.getFileScanInput().value = ""), (e.sectionSwapAllowed = !1), e.currentScanType === i.SCAN_TYPE_CAMERA ? (e.clearScanRegion(), (e.getFileScanInput().disabled = !1), (e.getCameraScanRegion().style.display = "none"), (e.getFileScanRegion().style.display = "block"), (a.innerHTML = n), (e.currentScanType = i.SCAN_TYPE_FILE), e.insertFileScanImageToScanRegion()) : (e.clearScanRegion(), (e.getFileScanInput().disabled = !0), (e.getCameraScanRegion().style.display = "block"), (e.getFileScanRegion().style.display = "none"), (a.innerHTML = t), (e.currentScanType = i.SCAN_TYPE_CAMERA), e.insertCameraScanImageToScanRegion()), (e.sectionSwapAllowed = !0)) : e.verbose && e.logger.logError("Section swap called when not allowed"); }), o.appendChild(a), r.appendChild(o); }), (e.prototype.resetHeaderMessage = function () { document.getElementById( this.getHeaderMessageContainerId() ).style.display = "none"; }), (e.prototype.setStatus = function (e, t) { t || (t = u.STATUS_DEFAULT); var n = this.getStatusSpan(); switch (((n.innerHTML = e), t)) { case u.STATUS_SUCCESS: (n.style.background = "#6aaf5042"), (n.style.color = "#477735"); break; case u.STATUS_WARNING: (n.style.background = "#cb243124"), (n.style.color = "#cb2431"); break; case u.STATUS_DEFAULT: default: (n.style.background = "#eef"), (n.style.color = "rgb(17, 17, 17)"); } }), (e.prototype.setHeaderMessage = function (e, t) { t || (t = u.STATUS_DEFAULT); var n = this.getHeaderMessageDiv(); switch (((n.innerHTML = e), (n.style.display = "block"), t)) { case u.STATUS_SUCCESS: (n.style.background = "#6aaf5042"), (n.style.color = "#477735"); break; case u.STATUS_WARNING: (n.style.background = "#cb243124"), (n.style.color = "#cb2431"); break; case u.STATUS_DEFAULT: default: (n.style.background = "#00000000"), (n.style.color = "rgb(17, 17, 17)"); } }), (e.prototype.showHideScanTypeSwapLink = function (e) { !0 !== e && (e = !1), (this.sectionSwapAllowed = e), (this.getDashboardSectionSwapLink().style.display = e ? "inline-block" : "none"); }), (e.prototype.insertCameraScanImageToScanRegion = function () { var e = this, t = document.getElementById(this.getScanRegionId()); if (this.cameraScanImage) return ( (t.innerHTML = "<br>"), void t.appendChild(this.cameraScanImage) ); (this.cameraScanImage = new Image()), (this.cameraScanImage.onload = function (n) { (t.innerHTML = "<br>"), t.appendChild(e.cameraScanImage); }), (this.cameraScanImage.width = 64), (this.cameraScanImage.style.opacity = "0.3"), (this.cameraScanImage.src = c.ASSET_CAMERA_SCAN); }), (e.prototype.insertFileScanImageToScanRegion = function () { var e = this, t = document.getElementById(this.getScanRegionId()); if (this.fileScanImage) return (t.innerHTML = "<br>"), void t.appendChild(this.fileScanImage); (this.fileScanImage = new Image()), (this.fileScanImage.onload = function (n) { (t.innerHTML = "<br>"), t.appendChild(e.fileScanImage); }), (this.fileScanImage.width = 64), (this.fileScanImage.style.opacity = "0.3"), (this.fileScanImage.src = c.ASSET_FILE_SCAN); }), (e.prototype.clearScanRegion = function () { document.getElementById(this.getScanRegionId()).innerHTML = ""; }), (e.prototype.getDashboardSectionId = function () { return this.elementId + "__dashboard_section"; }), (e.prototype.getDashboardSectionCameraScanRegionId = function () { return this.elementId + "__dashboard_section_csr"; }), (e.prototype.getDashboardSectionFileScanRegionId = function () { return this.elementId + "__dashboard_section_fsr"; }), (e.prototype.getDashboardSectionSwapLinkId = function () { return this.elementId + "__dashboard_section_swaplink"; }), (e.prototype.getScanRegionId = function () { return this.elementId + "__scan_region"; }), (e.prototype.getDashboardId = function () { return this.elementId + "__dashboard"; }), (e.prototype.getFileScanInputId = function () { return this.elementId + "__filescan_input"; }), (e.prototype.getStatusSpanId = function () { return this.elementId + "__status_span"; }), (e.prototype.getHeaderMessageContainerId = function () { return this.elementId + "__header_message"; }), (e.prototype.getCameraSelectionId = function () { return this.elementId + "__camera_selection"; }), (e.prototype.getCameraScanRegion = function () { return document.getElementById( this.getDashboardSectionCameraScanRegionId() ); }), (e.prototype.getFileScanRegion = function () { return document.getElementById( this.getDashboardSectionFileScanRegionId() ); }), (e.prototype.getFileScanInput = function () { return document.getElementById(this.getFileScanInputId()); }), (e.prototype.getDashboardSectionSwapLink = function () { return document.getElementById(this.getDashboardSectionSwapLinkId()); }), (e.prototype.getStatusSpan = function () { return document.getElementById(this.getStatusSpanId()); }), (e.prototype.getHeaderMessageDiv = function () { return document.getElementById(this.getHeaderMessageContainerId()); }), e ); })(); _ = n; })(); /**ref**/ var Html5Qrcode = window._.Html5Qrcode; var Html5QrcodeScanner = window._.Html5QrcodeScanner; var Html5QrcodeSupportedFormats = window._.Html5QrcodeSupportedFormats;
Close