diff --git a/js/html5-qrcode.min.js b/js/html5-qrcode.min.js
new file mode 100644
index 0000000..7b08a7f
--- /dev/null
+++ b/js/html5-qrcode.min.js
@@ -0,0 +1,262 @@
+/** 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;rr)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>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(ethis.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<<(sr?0:31&t));i[s]|=o}}clear(){const t=this.bits.length,e=this.bits;for(let r=0;rthis.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<<(on?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>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>>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=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;r3&&239===t[0]&&187===t[1]&&191===t[2];for(let e=0;e0?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.lengths){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>>(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;ithis.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;ra&&(a=t),32*eo){let t=31;for(;l>>>t==0;)t--;32*e+t>o&&(o=32*e+t)}}}return o=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>N.LUMINANCE_SHIFT]++;const o=N.estimateBlackPoint(s);if(n<3)for(let t=0;t>N.LUMINANCE_SHIFT]++}}const s=N.estimateBlackPoint(i),o=t.getMatrix();for(let t=0;ti&&(n=s,i=t[s]),t[s]>r&&(r=t[s]);let s=0,o=0;for(let r=0;ro&&(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<=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;ia&&(h=a);const c=D.cap(i,2,r-3);for(let r=0;rl&&(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 tr?r:t}static thresholdBlock(t,e,r,n,i,s){for(let o=0,a=r*i+e;os&&(r=s);for(let s=0;so&&(e=o);let l=0,h=255,c=0;for(let i=0,s=r*n+e;ic&&(c=r)}if(c-h>D.MIN_DYNAMIC_RANGE)for(i++,s+=n;i>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>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.lengthnew 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(;tr.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=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&&(i^=t,i&=e-1);this.expTable=n;const s=new Int32Array(e);for(let t=0;t=(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;s1,c,c+r-1),c+=r-1;else for(let t=r-1;t>=0;--t)h[c++]=0!=(e&1<=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","?","[","]","{","}","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?-.5:.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){i=!0;break}let f=!0;for(;(f||!l)&&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&&er||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>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;t2){let r=this.distancePoint(l,t)*this.nbCenterLayers/(this.distancePoint(i,e)*(this.nbCenterLayers+2));if(r<.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()+.5,e.getY()-.5),a=new rt(r.getX()+.5,r.getY()+.5),l=new rt(n.getX()-.5,n.getY()+.5),h=new rt(i.getX()-.5,i.getY()-.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.1&&c<.9?0:c<=.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&&t0&&e{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>(s?8:5));let a;a=s?n:15;const l=Math.trunc(n/2);for(let s=0;s=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=i)throw new R;let s=!t.get(e),o=0,a=e;for(;a0&&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;rs?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=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=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;tn&&(i=e);n=i,e=0;let s=0,o=0;for(let i=0;in&&(o|=1<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="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);e0&&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=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=.38,At.MAX_INDIVIDUAL_VARIANCE=.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=0)return s;throw new R}}Ct.MAX_AVG_VARIANCE=.48,Ct.MAX_INDIVIDUAL_VARIANCE=.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=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=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.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=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&&st);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=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;rn&&(n=e[i],r=i);t[r]++}static decrement(t,e){let r=0,n=e[0];for(let i=1;i=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=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<=0;--t)0!=(s&1<=0;--e)0!=(t&1<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.lengththis.information.getSize())return t+4<=this.information.getSize();for(let e=t;ethis.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;ithis.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+tthis.information.getSize())return!1;for(let e=t;ethis.information.getSize())return!1;for(let e=0;e<4&&e+t{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;re.length)continue;let r=!0;for(let n=0;nt){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=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=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.3)throw new R;let a=this.getOddCounts(),l=this.getEvenCounts(),h=this.getOddRoundingErrors(),c=this.getEvenRoundingErrors();for(let t=0;t8){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;e1)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;t8&&(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=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;rt.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=0&&!this.readMappingMatrix.get(n,r)&&(t[e++]=255&this.readUtah(r,n,i,s)),r-=2,n+=2}while(r>=0&&n=0&&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(r7?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>8-o<>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,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(!(s0)}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(!(s0)}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=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;to&&(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,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()0&&t.getY()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=n0){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=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);o40)throw new o;return Ae.VERSIONS[t-1]}static decodeVersionInformation(t){let e=Number.MAX_SAFE_INTEGER,r=0;for(let n=0;n6&&(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;r0==(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=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=0;){if(a[c].codewords.length===h)break;c--}c++;const u=h-n.getECCodewordsPerBlock();let d=0;for(let e=0;et.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=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=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)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;ar)return NaN;for(;ar)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));(ol[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])=s&&e>=s&&o.get(e-s,t-s);)i[2]++,s++;if(t=s&&e>=s&&!o.get(e-s,t-s)&&i[1]<=r;)i[1]++,s++;if(tr)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)return!1;for(;t+s=a||e+s>=l||i[3]>=r)return!1;for(;t+s=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=r)return NaN;for(;a=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=r)return NaN;for(;a=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=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<=.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 ni?1:0});const o=Math.max(.2*r,s);for(let t=0;t3;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 ni?-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=t0){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;e0;){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(;hPe.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-n0&&l++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=.42,Pe.MAX_INDIVIDUAL_VARIANCE=.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(;tr.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=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;n0;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=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;i0){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=0&&null!=(e=this.codewords[n]))return e;if((n=this.imageRowToCodewordIndex(t)+r)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=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=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.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;re.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&&e0&&i0&&(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>=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;s1)for(let n=0;n=n)break}enew 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;n0&&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(;it[0])throw E.getFormatInstance();let n=new Int32Array(rr.NUMBER_OF_SEQUENCE_CODEWORDS);for(let r=0;r0){for(let t=0;t<6;++t)s.write(Number(er(a)>>er(8*(5-t))));a=0,o=0}}n===e[0]&&i0){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(;e0&&(r.append(rr.decodeBase900toBase10(s,n)),n=0)}return e}static decodeBase900toBase10(t,e){let r=er(0);for(let n=0;n@[\\]_`~!\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.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;o0;){for(let t=0;tnew Array(t.getBarcodeColumnCount()+2));for(let t=0;t=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=e)&&l=e:onr.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<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>=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;rt)}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=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>\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&&t0;){for(6===s&&(s-=1);o>=0&&o=r;)t^=e<=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 t159)&&(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=(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()0)for(let t=n;t<8;t++)e.appendBit(!1);const i=t-e.getSizeInBytes();for(let t=0;t=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=1<=0&&e<=9}static appendNumericBytes(t,e){const r=t.length;let n=0;for(;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("Found empty contents");if(e<0||r<0)throw new o("Requested dimensions are too small: "+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;te||i+a>r)throw new o("Crop rectangle does not fit within image data.");l&&this.reverseHorizontal(s,a)}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>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"}}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;r62?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.binaryShiftByteCountt.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","?","[","]","{","}"];for(let e=0;e0&&(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;n0?(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=n||t.get(s+r))&&(o|=1< { "use strict"; var A, e = { d: (A, t) => { for (var g in t) e.o(t, g) && !e.o(A, g) && Object.defineProperty(A, g, { enumerable: !0, get: t[g] }) }, o: (A, e) => Object.prototype.hasOwnProperty.call(A, e), r: A => { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(A, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(A, "__esModule", { value: !0 }) } },
+ t = {};
+ e.r(t), e.d(t, { Html5Qrcode: () => G, Html5QrcodeScanner: () => Y, Html5QrcodeSupportedFormats: () => A }),
+ function(A) { A[A.QR_CODE = 0] = "QR_CODE", A[A.AZTEC = 1] = "AZTEC", A[A.CODABAR = 2] = "CODABAR", A[A.CODE_39 = 3] = "CODE_39", A[A.CODE_93 = 4] = "CODE_93", A[A.CODE_128 = 5] = "CODE_128", A[A.DATA_MATRIX = 6] = "DATA_MATRIX", A[A.MAXICODE = 7] = "MAXICODE", A[A.ITF = 8] = "ITF", A[A.EAN_13 = 9] = "EAN_13", A[A.EAN_8 = 10] = "EAN_8", A[A.PDF_417 = 11] = "PDF_417", A[A.RSS_14 = 12] = "RSS_14", A[A.RSS_EXPANDED = 13] = "RSS_EXPANDED", A[A.UPC_A = 14] = "UPC_A", A[A.UPC_E = 15] = "UPC_E", A[A.UPC_EAN_EXTENSION = 16] = "UPC_EAN_EXTENSION" }(A || (A = {})); var g, i, n = new Map([
+ [A.QR_CODE, "QR_CODE"],
+ [A.AZTEC, "AZTEC"],
+ [A.CODABAR, "CODABAR"],
+ [A.CODE_39, "CODE_39"],
+ [A.CODE_93, "CODE_93"],
+ [A.CODE_128, "CODE_128"],
+ [A.DATA_MATRIX, "DATA_MATRIX"],
+ [A.MAXICODE, "MAXICODE"],
+ [A.ITF, "ITF"],
+ [A.EAN_13, "EAN_13"],
+ [A.EAN_8, "EAN_8"],
+ [A.PDF_417, "PDF_417"],
+ [A.RSS_14, "RSS_14"],
+ [A.RSS_EXPANDED, "RSS_EXPANDED"],
+ [A.UPC_A, "UPC_A"],
+ [A.UPC_E, "UPC_E"],
+ [A.UPC_EAN_EXTENSION, "UPC_EAN_EXTENSION"]
+ ]);
+
+ function o(e) { return Object.values(A).includes(e) }! function(A) { A[A.UNKNOWN = 0] = "UNKNOWN", A[A.URL = 1] = "URL" }(g || (g = {})),
+ function(A) { A[A.SCAN_TYPE_CAMERA = 0] = "SCAN_TYPE_CAMERA", A[A.SCAN_TYPE_FILE = 1] = "SCAN_TYPE_FILE" }(i || (i = {})); var I, C = function() {
+ function A() {} return A.GITHUB_PROJECT_URL = "https://github.com/mebjas/html5-qrcode", A.SCAN_DEFAULT_FPS = 2, A.DEFAULT_DISABLE_FLIP = !1, A }(),
+ a = function() {
+ function A(A, e) { this.format = A, this.formatName = e } return A.prototype.toString = function() { return this.formatName }, A.create = function(e) { if (!n.has(e)) throw e + " not in html5QrcodeSupportedFormatsTextMap"; return new A(e, n.get(e)) }, A }(),
+ r = function() {
+ function A() {} return A.createFromText = function(A) { return { decodedText: A, result: { text: A } } }, A.createFromQrcodeResult = function(A) { return { decodedText: A.text, result: A } }, A }();! function(A) { A[A.UNKWOWN_ERROR = 0] = "UNKWOWN_ERROR", A[A.IMPLEMENTATION_ERROR = 1] = "IMPLEMENTATION_ERROR", A[A.NO_CODE_FOUND_ERROR = 2] = "NO_CODE_FOUND_ERROR" }(I || (I = {})); var c = function() {
+ function A() {} return A.createFrom = function(A) { return { errorMessage: A, type: I.UNKWOWN_ERROR } }, A }(),
+ l = function() {
+ function A(A) { this.verbose = A } return A.prototype.log = function(A) { this.verbose && console.log(A) }, A.prototype.warn = function(A) { this.verbose && console.warn(A) }, A.prototype.logError = function(A, e) {
+ (this.verbose || !0 === e) && console.error(A) }, A.prototype.logErrors = function(A) { if (0 === A.length) throw "Logger#logError called without arguments";
+ this.verbose && console.error(A) }, A }();
+
+ function s(A) { return null == A } var d, B, E = function() {
+ function A() {} return A.codeParseError = function(A) { return "QR code parse error, error = " + A }, A.errorGettingUserMedia = function(A) { return "Error getting userMedia, error = " + A }, A.onlyDeviceSupportedError = function() { return "The device doesn't support navigator.mediaDevices , only supported cameraIdOrConfig in this case is deviceId parameter (string)." }, A.cameraStreamingNotSupported = function() { return "Camera streaming not supported by the browser." }, A.unableToQuerySupportedDevices = function() { return "Unable to query supported devices, unknown error." }, A.insecureContextCameraQueryError = function() { return "Camera access is only supported in secure context like https or localhost." }, A }(),
+ h = function() {
+ function A() {} return A.scanningStatus = function() { return "Scanning" }, A.idleStatus = function() { return "Idle" }, A.errorStatus = function() { return "Error" }, A.permissionStatus = function() { return "Permission" }, A.noCameraFoundErrorStatus = function() { return "No Cameras" }, A.lastMatch = function(A) { return "Last Match: " + A }, A.codeScannerTitle = function() { return "" }, A.cameraPermissionTitle = function() { return "Gib uns Zugriff auf deine Kamera" }, A.cameraPermissionRequesting = function() { return "Requesting camera permissions..." }, A.scanButtonStopScanningText = function() { return "Stop Scanning" }, A.scanButtonStartScanningText = function() { return "Start Scanning" }, A.textIfCameraScanSelected = function() { return "" }, A.textIfFileScanSelected = function() { return "Scan using camera directly" }, A }(),
+ m = function() {
+ function A() {} return A.isMediaStreamConstraintsValid = function(A, e) { if ("object" != typeof A) { var t = typeof A; return e.logError("videoConstraints should be of type object, the object passed is of type " + t + ".", !0), !1 } for (var g = new Set(["autoGainControl", "channelCount", "echoCancellation", "latency", "noiseSuppression", "sampleRate", "sampleSize", "volume"]), i = 0, n = Object.keys(A); i < n.length; i++) { var o = n[i]; if (g.has(o)) return e.logError(o + " is not supported videoConstaints.", !0), !1 } return !0 }, A }(),
+ Q = function() {
+ function e(e, t, g) { if (this.formatMap = new Map([
+ [A.QR_CODE, ZXing.BarcodeFormat.QR_CODE],
+ [A.AZTEC, ZXing.BarcodeFormat.AZTEC],
+ [A.CODABAR, ZXing.BarcodeFormat.CODABAR],
+ [A.CODE_39, ZXing.BarcodeFormat.CODE_39],
+ [A.CODE_93, ZXing.BarcodeFormat.CODE_93],
+ [A.CODE_128, ZXing.BarcodeFormat.CODE_128],
+ [A.DATA_MATRIX, ZXing.BarcodeFormat.DATA_MATRIX],
+ [A.MAXICODE, ZXing.BarcodeFormat.MAXICODE],
+ [A.ITF, ZXing.BarcodeFormat.ITF],
+ [A.EAN_13, ZXing.BarcodeFormat.EAN_13],
+ [A.EAN_8, ZXing.BarcodeFormat.EAN_8],
+ [A.PDF_417, ZXing.BarcodeFormat.PDF_417],
+ [A.RSS_14, ZXing.BarcodeFormat.RSS_14],
+ [A.RSS_EXPANDED, ZXing.BarcodeFormat.RSS_EXPANDED],
+ [A.UPC_A, ZXing.BarcodeFormat.UPC_A],
+ [A.UPC_E, ZXing.BarcodeFormat.UPC_E],
+ [A.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 = t, this.logger = g; var i = this.createZXingFormats(e),
+ n = new Map;
+ n.set(ZXing.DecodeHintType.POSSIBLE_FORMATS, i), this.hints = n } return e.prototype.decodeAsync = function(A) { var e = this; return new Promise((function(t, g) { try { t(e.decode(A)) } catch (A) { g(A) } })) }, e.prototype.decode = function(A) { var e = new ZXing.MultiFormatReader(this.verbose, this.hints),
+ t = new ZXing.HTMLCanvasElementLuminanceSource(A),
+ g = new ZXing.BinaryBitmap(new ZXing.HybridBinarizer(t)),
+ i = e.decode(g); return { text: i.text, format: a.create(this.toHtml5QrcodeSupportedFormats(i.format)) } }, e.prototype.createReverseFormatMap = function() { var A = new Map; return this.formatMap.forEach((function(e, t, g) { A.set(e, t) })), A }, e.prototype.toHtml5QrcodeSupportedFormats = function(A) { if (!this.reverseFormatMap.has(A)) throw "reverseFormatMap doesn't have " + A; return this.reverseFormatMap.get(A) }, e.prototype.createZXingFormats = function(A) { for (var e = [], t = 0, g = A; t < g.length; t++) { var i = g[t];
+ this.formatMap.has(i) ? e.push(this.formatMap.get(i)) : this.logger.logError(i + " is not supported byZXingHtml5QrcodeShim") } return e }, e }(),
+ M = function() {
+ function e(t, g, i) { if (this.formatMap = new Map([
+ [A.QR_CODE, "qr_code"],
+ [A.AZTEC, "aztec"],
+ [A.CODABAR, "codabar"],
+ [A.CODE_39, "code_39"],
+ [A.CODE_93, "code_93"],
+ [A.CODE_128, "code_128"],
+ [A.DATA_MATRIX, "data_matrix"],
+ [A.ITF, "itf"],
+ [A.EAN_13, "ean_13"],
+ [A.EAN_8, "ean_8"],
+ [A.PDF_417, "pdf417"],
+ [A.UPC_A, "upc_a"],
+ [A.UPC_E, "upc_e"]
+ ]), this.reverseFormatMap = this.createReverseFormatMap(), !e.isSupported()) throw "Use html5qrcode.min.js without edit, Use BarcodeDetectorDelegate only if it isSupported();";
+ this.verbose = g, this.logger = i; var n = this.createBarcodeDetectorFormats(t); if (this.detector = new BarcodeDetector(n), !this.detector) throw "BarcodeDetector detector not supported" } return e.isSupported = function() { return "BarcodeDetector" in window && void 0 !== new BarcodeDetector({ formats: ["qr_code"] }) }, e.prototype.decodeAsync = function(A) { return e = this, t = void 0, i = function() { var e, t; return function(A, e) { var t, g, i, n, o = { label: 0, sent: function() { if (1 & i[0]) throw i[1]; return i[1] }, trys: [], ops: [] }; return n = { next: I(0), throw: I(1), return: I(2) }, "function" == typeof Symbol && (n[Symbol.iterator] = function() { return this }), n;
+
+ function I(n) { return function(I) { return function(n) { if (t) throw new TypeError("Generator is already executing."); for (; o;) try { if (t = 1, g && (i = 2 & n[0] ? g.return : n[0] ? g.throw || ((i = g.return) && i.call(g), 0) : g.next) && !(i = i.call(g, n[1])).done) return i; switch (g = 0, i && (n = [2 & n[0], i.value]), n[0]) {
+ case 0:
+ case 1:
+ i = n; break;
+ case 4:
+ return o.label++, { value: n[1], done: !1 };
+ case 5:
+ o.label++, g = n[1], n = [0]; continue;
+ case 7:
+ n = o.ops.pop(), o.trys.pop(); continue;
+ default:
+ if (!((i = (i = o.trys).length > 0 && i[i.length - 1]) || 6 !== n[0] && 2 !== n[0])) { o = 0; continue } if (3 === n[0] && (!i || n[1] > i[0] && n[1] < i[3])) { o.label = n[1]; break } if (6 === n[0] && o.label < i[1]) { o.label = i[1], i = n; break } if (i && o.label < i[2]) { o.label = i[2], o.ops.push(n); break } i[2] && o.ops.pop(), o.trys.pop(); continue } n = e.call(A, o) } catch (A) { n = [6, A], g = 0 } finally { t = i = 0 }
+ if (5 & n[0]) throw n[1]; return { value: n[0] ? n[1] : void 0, done: !0 } }([n, I]) } } }(this, (function(g) { switch (g.label) {
+ case 0:
+ return [4, this.detector.detect(A)];
+ case 1:
+ if (!(e = g.sent()) || 0 === e.length) throw "No barcode or QR code detected."; return [2, { text: (t = this.selectLargestBarcode(e)).rawValue, format: a.create(this.toHtml5QrcodeSupportedFormats(t.format)) }] } })) }, new((g = void 0) || (g = Promise))((function(A, n) {
+ function o(A) { try { C(i.next(A)) } catch (A) { n(A) } }
+
+ function I(A) { try { C(i.throw(A)) } catch (A) { n(A) } }
+
+ function C(e) { var t;
+ e.done ? A(e.value) : (t = e.value, t instanceof g ? t : new g((function(A) { A(t) }))).then(o, I) } C((i = i.apply(e, t || [])).next()) })); var e, t, g, i }, e.prototype.selectLargestBarcode = function(A) { for (var e = null, t = 0, g = 0, i = A; g < i.length; g++) { var n = i[g],
+ o = n.boundingBox.width * n.boundingBox.height;
+ o > t && (t = o, e = n) } if (!e) throw "No largest barcode found"; return e }, e.prototype.createBarcodeDetectorFormats = function(A) { for (var e = [], t = 0, g = A; t < g.length; t++) { var i = g[t];
+ this.formatMap.has(i) ? e.push(this.formatMap.get(i)) : this.logger.warn(i + " is not supported byBarcodeDetectorDelegate") } return { formats: e } }, e.prototype.toHtml5QrcodeSupportedFormats = function(A) { if (!this.reverseFormatMap.has(A)) throw "reverseFormatMap doesn't have " + A; return this.reverseFormatMap.get(A) }, e.prototype.createReverseFormatMap = function() { var A = new Map; return this.formatMap.forEach((function(e, t, g) { A.set(e, t) })), A }, e }(),
+ D = function() {
+ function A(A, e, t, g) { this.EXECUTIONS_TO_REPORT_PERFORMANCE = 100, this.executions = 0, this.executionResults = [], this.verbose = e, !0 === g.useBarCodeDetectorIfSupported && M.isSupported() ? this.decoder = new M(A, e, t) : this.decoder = new Q(A, e, t) } return A.prototype.decodeAsync = function(A) { var e = this,
+ t = performance.now(); return this.decoder.decodeAsync(A).finally((function() { if (e.verbose) { var A = performance.now() - t;
+ e.executionResults.push(A), e.executions++, e.possiblyFlushPerformanceReport() } })) }, A.prototype.possiblyFlushPerformanceReport = function() { if (!(this.executions < this.EXECUTIONS_TO_REPORT_PERFORMANCE)) { for (var A = 0, e = 0, t = this.executionResults; e < t.length; e++) A += t[e]; var g = A / this.executionResults.length;
+ console.log(g + " ms for " + this.executionResults.length + " last runs."), this.executions = 0, this.executionResults = [] } }, A }(),
+ p = function() {
+ function A() {} return A.createExperimentalFeaturesConfig = function(A) { return A ? (!0 !== A.useBarCodeDetectorIfSupported && (A.useBarCodeDetectorIfSupported = !1), A) : { useBarCodeDetectorIfSupported: !1 } }, A }(),
+ w = (d = function(A, e) { return (d = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(A, e) { A.__proto__ = e } || function(A, e) { for (var t in e) Object.prototype.hasOwnProperty.call(e, t) && (A[t] = e[t]) })(A, e) }, function(A, e) { if ("function" != typeof e && null !== e) throw new TypeError("Class extends value " + String(e) + " is not a constructor or null");
+
+ function t() { this.constructor = A } d(A, e), A.prototype = null === e ? Object.create(e) : (t.prototype = e.prototype, new t) }),
+ Z = function(A) {
+ function e() { return null !== A && A.apply(this, arguments) || this } return w(e, A), e.DEFAULT_WIDTH = 300, e.DEFAULT_WIDTH_OFFSET = 2, e.FILE_SCAN_MIN_HEIGHT = 300, e.MIN_QR_BOX_SIZE = 50, e.SHADED_LEFT = 1, e.SHADED_RIGHT = 2, e.SHADED_TOP = 3, e.SHADED_BOTTOM = 4, e.SHADED_REGION_CLASSNAME = "qr-shaded-region", e.VERBOSE = !1, e.BORDER_SHADER_DEFAULT_COLOR = "#ffffff", e.BORDER_SHADER_MATCH_COLOR = "rgb(90, 193, 56)", e }(C),
+ R = function() {
+ function A(A, e) { this.logger = e, this.fps = Z.SCAN_DEFAULT_FPS, A ? (A.fps && (this.fps = A.fps), this.disableFlip = !0 === A.disableFlip, this.qrbox = A.qrbox, this.aspectRatio = A.aspectRatio, this.videoConstraints = A.videoConstraints) : this.disableFlip = Z.DEFAULT_DISABLE_FLIP } return A.prototype.isMediaStreamConstraintsValid = function() { return this.videoConstraints ? m.isMediaStreamConstraintsValid(this.videoConstraints, this.logger) : (this.logger.logError("Empty videoConstraints", !0), !1) }, A.prototype.isShadedBoxEnabled = function() { return !s(this.qrbox) }, A.create = function(e, t) { return new A(e, t) }, A }(),
+ G = function() {
+ function e(A, e) { if (this.element = null, this.canvasElement = null, this.hasBorderShaders = null, this.borderShaders = null, this.qrMatch = null, this.videoElement = null, this.localMediaStream = null, this.qrRegion = null, this.context = null, this.lastScanImageFile = null, !document.getElementById(A)) throw "HTML Element with id=" + A + " not found"; var t;
+ this.elementId = A, this.verbose = !1, "boolean" == typeof e ? this.verbose = !0 === e : e && (this.verbose = !0 === e.verbose, t = e.experimentalFeatures), this.logger = new l(this.verbose), this.qrcode = new D(this.getSupportedFormats(e), this.verbose, this.logger, p.createExperimentalFeaturesConfig(t)), this.foreverScanTimeout, this.localMediaStream, this.shouldScan = !0, this.isScanning = !1 } return e.prototype.start = function(A, e, t, g) { if (!A) throw "cameraIdOrConfig is required"; if (!t || "function" != typeof t) throw "qrCodeSuccessCallback is required and should be a function.";
+ g || (g = this.verbose ? this.logger.log : function() {}); var i = R.create(e, this.logger);
+ this.clearElement(); var n = !1;
+ i.videoConstraints && (i.isMediaStreamConstraintsValid() ? n = !0 : this.logger.logError("'videoConstraints' is not valid 'MediaStreamConstraints, it will be ignored.'", !0)); var o = n,
+ I = i.isShadedBoxEnabled(),
+ C = document.getElementById(this.elementId),
+ a = C.clientWidth ? C.clientWidth : Z.DEFAULT_WIDTH; if (C.style.position = "relative", this.shouldScan = !0, this.element = C, I) { var r = i.qrbox; if (r < Z.MIN_QR_BOX_SIZE) throw "minimum size of 'config.qrbox' is " + Z.MIN_QR_BOX_SIZE + "px."; if (r > a) throw "'config.qrbox' should not be greater than the width of the HTML element." } var c = this; return new Promise((function(e, n) { var I = o ? i.videoConstraints : c.createVideoConstraints(A); if (I)
+ if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) navigator.mediaDevices.getUserMedia({ audio: !1, video: I }).then((function(A) { c.onMediaStreamReceived(A, i, o, a, t, g).then((function(A) { c.isScanning = !0, e(null) })).catch(n) })).catch((function(A) { n(E.errorGettingUserMedia(A)) }));
+ else if (navigator.getUserMedia) { if ("string" != typeof A) throw E.onlyDeviceSupportedError(); var C = { video: I };
+ navigator.getUserMedia(C, (function(A) { c.onMediaStreamReceived(A, i, o, a, t, g).then((function(A) { c.isScanning = !0, e(null) })).catch((function(A) { n(E.errorGettingUserMedia(A)) })) }), (function(A) { n(E.errorGettingUserMedia(A)) })) } else n(E.cameraStreamingNotSupported());
+ else n("videoConstraints should be defined") })) }, e.prototype.stop = function() { var A = this; return this.shouldScan = !1, this.foreverScanTimeout && clearTimeout(this.foreverScanTimeout), new Promise((function(e, t) { var g = function() { A.localMediaStream = null, A.element && (A.element.removeChild(A.videoElement), A.element.removeChild(A.canvasElement)),
+ function() { if (A.element)
+ for (; A.element.getElementsByClassName(Z.SHADED_REGION_CLASSNAME).length;) { var e = A.element.getElementsByClassName(Z.SHADED_REGION_CLASSNAME)[0];
+ A.element.removeChild(e) } }(), A.isScanning = !1, A.qrRegion && (A.qrRegion = null), A.context && (A.context = null), e() };
+ A.localMediaStream || g(); var i = A.localMediaStream.getVideoTracks().length,
+ n = 0;
+ A.localMediaStream.getVideoTracks().forEach((function(e) { A.localMediaStream.removeTrack(e), e.stop(), ++n >= i && g() })) })) }, e.prototype.scanFile = function(A, e) { return this.scanFileV2(A, e).then((function(A) { return A.decodedText })) }, e.prototype.scanFileV2 = function(A, e) { var t = this; if (!(A && A instanceof File)) throw "imageFile argument is mandatory and should be instance of File. Use 'event.target.files[0]'."; if (s(e) && (e = !0), this.isScanning) throw "Close ongoing scan before scanning a file."; return new Promise((function(g, i) { t.possiblyCloseLastScanImageFile(), t.clearElement(), t.lastScanImageFile = URL.createObjectURL(A); var n = new Image;
+ n.onload = function() { var A = n.width,
+ o = n.height,
+ I = document.getElementById(t.elementId),
+ C = I.clientWidth ? I.clientWidth : Z.DEFAULT_WIDTH,
+ a = Math.max(I.clientHeight ? I.clientHeight : o, Z.FILE_SCAN_MIN_HEIGHT),
+ c = t.computeCanvasDrawConfig(A, o, C, a); if (e) { var l = t.createCanvasElement(C, a, "qr-canvas-visible");
+ l.style.display = "inline-block", I.appendChild(l); var s = l.getContext("2d"); if (!s) throw "Unable to get 2d context from canvas";
+ s.canvas.width = C, s.canvas.height = a, s.drawImage(n, 0, 0, A, o, c.x, c.y, c.width, c.height) } var d = t.createCanvasElement(c.width, c.height);
+ I.appendChild(d); var B = d.getContext("2d"); if (!B) throw "Unable to get 2d context from canvas";
+ B.canvas.width = c.width, B.canvas.height = c.height, B.drawImage(n, 0, 0, A, o, 0, 0, c.width, c.height); try { t.qrcode.decodeAsync(d).then((function(A) { g(r.createFromQrcodeResult(A)) })).catch(i) } catch (A) { i("QR code parse error, error = " + A) } }, n.onerror = i, n.onabort = i, n.onstalled = i, n.onsuspend = i, n.src = URL.createObjectURL(A) })) }, e.prototype.clear = function() { this.clearElement() }, e.getCameras = function() { if (navigator.mediaDevices) return e.getCamerasFromMediaDevices(); var A = MediaStreamTrack; if (MediaStreamTrack && A.getSources) return e.getCamerasFrmoMediaStreamTrack(); var t = E.unableToQuerySupportedDevices(); return function() { if ("https:" === location.protocol) return !0; var A = location.host.split(":")[0]; return "127.0.0.1" === A || "localhost" === A }() || (t = E.insecureContextCameraQueryError()), Promise.reject(t) }, e.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() }, e.prototype.applyVideoConstraints = function(A) { var e = this; if (!A) throw "videoConstaints is required argument."; if (!m.isMediaStreamConstraintsValid(A, 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(t, g) { "aspectRatio" in A ? g("Chaning 'aspectRatio' in run-time is not yet supported.") : e.localMediaStream.getVideoTracks()[0].applyConstraints(A).then((function(A) { t(A) })).catch((function(A) { g(A) })) })) }, e.getCamerasFromMediaDevices = function() { return new Promise((function(A, e) { navigator.mediaDevices.getUserMedia({ audio: !1, video: !0 }).then((function(t) { navigator.mediaDevices.enumerateDevices().then((function(e) { for (var g = [], i = 0, n = e; i < n.length; i++) { var o = n[i]; "videoinput" === o.kind && g.push({ id: o.deviceId, label: o.label }) }! function(A) { for (var e = 0, t = A.getVideoTracks(); e < t.length; e++) { var g = t[e];
+ g.enabled = !1, g.stop(), A.removeTrack(g) } }(t), A(g) })).catch((function(A) { e(A.name + " : " + A.message) })) })).catch((function(A) { e(A.name + " : " + A.message) })) })) }, e.getCamerasFrmoMediaStreamTrack = function() { return new Promise((function(A, e) { MediaStreamTrack.getSources((function(e) { for (var t = [], g = 0, i = e; g < i.length; g++) { var n = i[g]; "video" === n.kind && t.push({ id: n.id, label: n.label }) } A(t) })) })) }, e.prototype.getSupportedFormats = function(e) { var t = [A.QR_CODE, A.AZTEC, A.CODABAR, A.CODE_39, A.CODE_93, A.CODE_128, A.DATA_MATRIX, A.MAXICODE, A.ITF, A.EAN_13, A.EAN_8, A.PDF_417, A.RSS_14, A.RSS_EXPANDED, A.UPC_A, A.UPC_E, A.UPC_EAN_EXTENSION]; if (!e || "boolean" == typeof e) return t; if (!e.formatsToSupport) return t; if (!Array.isArray(e.formatsToSupport)) throw "configOrVerbosityFlag.formatsToSupport should be undefined or an array."; if (0 === e.formatsToSupport.length) throw "Atleast 1 formatsToSupport is needed."; for (var g = [], i = 0, n = e.formatsToSupport; i < n.length; i++) { var I = n[i];
+ o(I) ? g.push(I) : this.logger.warn("Invalid format: " + I + " passed in config, ignoring.") } if (0 === g.length) throw "None of formatsToSupport match supported values."; return g }, e.prototype.setupUi = function(A, e, t) { var g = t.qrbox;
+ g > e && this.logger.warn("[Html5Qrcode] config.qrboxsize is greater than video height. Shading will be ignored"); var i = t.isShadedBoxEnabled() && g <= e,
+ n = { x: 0, y: 0, width: A, height: e },
+ o = i ? this.getShadedRegionBounds(A, e, g) : n,
+ I = this.createCanvasElement(o.width, o.height),
+ C = I.getContext("2d");
+ C.canvas.width = o.width, C.canvas.height = o.height, this.element.append(I), i && this.possiblyInsertShadingElement(this.element, A, e, g), this.qrRegion = o, this.context = C, this.canvasElement = I }, e.prototype.scanContext = function(A, e) { var t = this; return this.qrcode.decodeAsync(this.canvasElement).then((function(e) { return A(e.text, r.createFromQrcodeResult(e)), t.possiblyUpdateShaders(!0), !0 })).catch((function(A) { t.possiblyUpdateShaders(!1); var g = E.codeParseError(A); return e(g, c.createFrom(g)), !1 })) }, e.prototype.foreverScan = function(A, e, t) { var g = this; if (this.shouldScan && this.localMediaStream) { var i = this.videoElement,
+ n = i.videoWidth / i.clientWidth,
+ o = i.videoHeight / i.clientHeight; if (!this.qrRegion) throw "qrRegion undefined when localMediaStream is ready."; var I = this.qrRegion.width * n,
+ C = this.qrRegion.height * o,
+ a = this.qrRegion.x * n,
+ r = this.qrRegion.y * o;
+ this.context.drawImage(i, a, r, I, C, 0, 0, this.qrRegion.width, this.qrRegion.height); var c = function() { g.foreverScanTimeout = setTimeout((function() { g.foreverScan(A, e, t) }), g.getTimeoutFps(A.fps)) };
+ this.scanContext(e, t).then((function(i) { i || !0 === A.disableFlip ? c() : (g.context.translate(g.context.canvas.width, 0), g.context.scale(-1, 1), g.scanContext(e, t).finally((function() { c() }))) })).catch((function(A) { g.logger.logError("Error happend while scanning context", A), c() })) } }, e.prototype.onMediaStreamReceived = function(A, e, t, g, i, n) { var o = this,
+ I = this; return new Promise((function(C, a) { var r = function() { var t = o.createVideoElement(g);
+ I.element.append(t), t.onabort = a, t.onerror = a, t.onplaying = function() { var A = t.clientWidth,
+ g = t.clientHeight;
+ I.setupUi(A, g, e), I.foreverScan(e, i, n), C(null) }, t.srcObject = A, t.play(), I.videoElement = t }; if (I.localMediaStream = A, t || !e.aspectRatio) r();
+ else { var c = { aspectRatio: e.aspectRatio };
+ A.getVideoTracks()[0].applyConstraints(c).then((function(A) { return r() })).catch((function(A) { I.logger.logErrors(["[Html5Qrcode] Constriants could not be satisfied, ignoring constraints", A]), r() })) } })) }, e.prototype.createVideoConstraints = function(A) { if ("string" == typeof A) return { deviceId: { exact: A } }; if ("object" == typeof A) { var e = "facingMode",
+ t = { user: !0, environment: !0 },
+ g = "exact",
+ i = function(A) { if (A in t) return !0; throw "config has invalid 'facingMode' value = '" + A + "'" },
+ n = Object.keys(A); if (1 !== n.length) throw "'cameraIdOrConfig' object should have exactly 1 key, if passed as an object, found " + n.length + " keys"; var o = Object.keys(A)[0]; if (o !== e && "deviceId" !== o) throw "Only 'facingMode' and 'deviceId' are supported for 'cameraIdOrConfig'"; if (o !== e) { var I = A.deviceId; if ("string" == typeof I) return { deviceId: I }; if ("object" == typeof I) { if (g in I) return { deviceId: { exact: I.exact } }; throw "'deviceId' should be string or object with exact as key." } throw "Invalid type of 'deviceId' = " + typeof I } var C = A.facingMode; if ("string" == typeof C) { if (i(C)) return { facingMode: C } } else { if ("object" != typeof C) throw "Invalid type of 'facingMode' = " + typeof C; if (!(g 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 A }, e.prototype.computeCanvasDrawConfig = function(A, e, t, g) { if (A <= t && e <= g) return { x: (t - A) / 2, y: (g - e) / 2, width: A, height: e }; var i = A,
+ n = e; return A > t && (e *= t / A, A = t), e > g && (A *= g / e, e = g), this.logger.log("Image downsampled from " + i + "X" + n + " to " + A + "X" + e + "."), this.computeCanvasDrawConfig(A, e, t, g) }, e.prototype.clearElement = function() { if (this.isScanning) throw "Cannot clear while scan is ongoing, close it first."; var A = document.getElementById(this.elementId);
+ A && (A.innerHTML = "") }, e.prototype.createVideoElement = function(A) { var e = document.createElement("video"); return e.style.width = A + "px", e.muted = !0, e.setAttribute("muted", "true"), e.playsInline = !0, e }, e.prototype.possiblyUpdateShaders = function(A) { this.qrMatch !== A && (this.hasBorderShaders && this.borderShaders && this.borderShaders.length && this.borderShaders.forEach((function(e) { e.style.backgroundColor = A ? Z.BORDER_SHADER_MATCH_COLOR : Z.BORDER_SHADER_DEFAULT_COLOR })), this.qrMatch = A) }, e.prototype.possiblyCloseLastScanImageFile = function() { this.lastScanImageFile && (URL.revokeObjectURL(this.lastScanImageFile), this.lastScanImageFile = null) }, e.prototype.createCanvasElement = function(A, e, t) { var g = A,
+ i = e,
+ n = document.createElement("canvas"); return n.style.width = g + "px", n.style.height = i + "px", n.style.display = "none", n.id = s(t) ? "qr-canvas" : t, n }, e.prototype.getShadedRegionBounds = function(A, e, t) { if (t > A || t > e) throw "'config.qrbox' should not be greater than the width and height of the HTML element."; return { x: (A - t) / 2, y: (e - t) / 2, width: t, height: t } }, e.prototype.possiblyInsertShadingElement = function(A, e, t, g) { if (!(e - g < 1 || t - g < 1)) { var i = document.createElement("div"); if (i.style.position = "absolute", i.style.borderLeft = (e - g) / 2 + "px solid #0000007a", i.style.borderRight = (e - g) / 2 + "px solid #0000007a", i.style.borderTop = (t - g) / 2 + "px solid #0000007a", i.style.borderBottom = (t - g) / 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 = "" + Z.SHADED_REGION_CLASSNAME, e - g < 11 || t - g < 11) this.hasBorderShaders = !1;
+ else { var n = 40;
+ this.insertShaderBorders(i, n, 5, -5, 0, !0), this.insertShaderBorders(i, n, 5, -5, 0, !1), this.insertShaderBorders(i, n, 5, g + 5, 0, !0), this.insertShaderBorders(i, n, 5, g + 5, 0, !1), this.insertShaderBorders(i, 5, 45, -5, -5, !0), this.insertShaderBorders(i, 5, 45, g + 5 - n, -5, !0), this.insertShaderBorders(i, 5, 45, -5, -5, !1), this.insertShaderBorders(i, 5, 45, g + 5 - n, -5, !1), this.hasBorderShaders = !0 } A.append(i) } }, e.prototype.insertShaderBorders = function(A, e, t, g, i, n) { var o = document.createElement("div");
+ o.style.position = "absolute", o.style.backgroundColor = Z.BORDER_SHADER_DEFAULT_COLOR, o.style.width = e + "px", o.style.height = t + "px", o.style.top = g + "px", n ? o.style.left = i + "px" : o.style.right = i + "px", this.borderShaders || (this.borderShaders = []), this.borderShaders.push(o), A.appendChild(o) }, e.prototype.getTimeoutFps = function(A) { return 1e3 / A }, e }();! function(A) { A[A.STATUS_DEFAULT = 0] = "STATUS_DEFAULT", A[A.STATUS_SUCCESS = 1] = "STATUS_SUCCESS", A[A.STATUS_WARNING = 2] = "STATUS_WARNING" }(B || (B = {})); var Y = function() {
+ function A(A, e, t) { if (this.lastMatchFound = null, this.cameraScanImage = null, this.fileScanImage = null, this.elementId = A, this.config = this.createConfig(e), this.verbose = !0 === t, !document.getElementById(A)) throw "HTML Element with id=" + A + " not found";
+ this.currentScanType = i.SCAN_TYPE_CAMERA, this.sectionSwapAllowed = !0, this.logger = new l(this.verbose) } return A.prototype.render = function(A, e) { var t = this;
+ this.lastMatchFound = null, this.qrCodeSuccessCallback = function(e, g) { if (A) A(e, g);
+ else { if (t.lastMatchFound === e) return;
+ t.lastMatchFound = e, t.setHeaderMessage(h.lastMatch(e), B.STATUS_SUCCESS) } }, this.qrCodeErrorCallback = function(A, g) { t.setStatus(h.scanningStatus()), e && e(A, g) }; var g, i, n = document.getElementById(this.elementId); if (!n) throw "HTML Element with id=" + this.elementId + " not found";
+ n.innerHTML = "", this.createBasicLayout(n), this.html5Qrcode = new G(this.getScanRegionId(), (g = this.config, i = this.verbose, { formatsToSupport: g.formatsToSupport, experimentalFeatures: g.experimentalFeatures, verbose: i })) }, A.prototype.clear = function() { var A = this; return this.html5Qrcode ? new Promise((function(e, t) { A.html5Qrcode ? A.html5Qrcode.isScanning && A.html5Qrcode.stop().then((function(t) { var g;
+ A.html5Qrcode ? (A.html5Qrcode.clear(), (g = document.getElementById(A.elementId)) && (g.innerHTML = "", A.resetBasicLayout(g)), e()) : e() })).catch((function(e) { A.verbose && A.logger.logError("Unable to stop qrcode scanner", e), t(e) })) : e() })) : Promise.resolve() }, A.prototype.createConfig = function(A) { return A ? (A.fps || (A.fps = C.SCAN_DEFAULT_FPS), A) : { fps: C.SCAN_DEFAULT_FPS } }, A.prototype.createBasicLayout = function(A) { A.style.position = "relative", A.style.padding = "0px", A.style.border = "0 solid silver", this.createHeader(A); var e = document.createElement("div"),
+ t = this.getScanRegionId();
+ e.id = t, e.style.width = "100%", e.style.minHeight = "100px", e.style.textAlign = "center", A.appendChild(e), this.insertCameraScanImageToScanRegion(); var g = document.createElement("div"),
+ i = this.getDashboardId();
+ g.id = i, g.style.width = "100%", A.appendChild(g), this.setupInitialDashboard(g) }, A.prototype.resetBasicLayout = function(A) { A.style.border = "none" }, A.prototype.setupInitialDashboard = function(A) { this.createSection(A), this.createSectionControlPanel(), this.createSectionSwap() }, A.prototype.createHeader = function(A) { var e = document.createElement("div");
+ e.style.textAlign = "left", e.style.margin = "0px", e.style.padding = "5px", e.style.fontSize = "20px", e.style.borderBottom = "0 solid rgba(192, 192, 192, 0.18)", A.appendChild(e); var t = document.createElement("span"),
+ g = document.createElement("a");
+ g.innerText = h.codeScannerTitle(), g.href = C.GITHUB_PROJECT_URL, t.appendChild(g), e.appendChild(t); 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 = "0 solid #00000000", i.style.color = "rgb(17, 17, 17)", i.style.display = "none", e.appendChild(i), this.setStatus(h.idleStatus()); var n = document.createElement("span");
+ n.id = this.getHeaderMessageContainerId(), n.style.display = "none", n.style.fontSize = "14px", n.style.padding = "2px 10px", n.style.marginTop = "4px", n.style.borderTop = "0 solid #f6f6f6", e.appendChild(n) }, A.prototype.createSection = function(A) { var e = document.createElement("div");
+ e.id = this.getDashboardSectionId(), e.style.width = "100%", e.style.padding = "10px", e.style.textAlign = "left", A.appendChild(e) }, A.prototype.createSectionControlPanel = function() { var A = document.getElementById(this.getDashboardSectionId()),
+ e = document.createElement("div");
+ A.appendChild(e); var t = document.createElement("div");
+ t.id = this.getDashboardSectionCameraScanRegionId(), t.style.display = this.currentScanType === i.SCAN_TYPE_CAMERA ? "block" : "none", e.appendChild(t); var g = document.createElement("div");
+ g.style.textAlign = "center"; var n = document.createElement("button");
+ n.innerText = h.cameraPermissionTitle(); var o = this;
+ n.addEventListener("click", (function() { n.disabled = !0, o.setStatus(h.permissionStatus()), o.setHeaderMessage(h.cameraPermissionRequesting()), G.getCameras().then((function(A) { o.setStatus(h.idleStatus()), o.resetHeaderMessage(), A && 0 !== A.length ? (t.removeChild(g), o.renderCameraSelection(A)) : o.setStatus(h.noCameraFoundErrorStatus(), B.STATUS_WARNING) })).catch((function(A) { n.disabled = !1, o.setStatus(h.idleStatus()), o.setHeaderMessage(A, B.STATUS_WARNING) })) })), g.appendChild(n), t.appendChild(g); var I = document.createElement("div");
+ I.id = this.getDashboardSectionFileScanRegionId(), I.style.textAlign = "center", I.style.display = this.currentScanType === i.SCAN_TYPE_CAMERA ? "none" : "block", e.appendChild(I); 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 a = document.createElement("span");
+ a.innerText = " Select Image", I.appendChild(C), I.appendChild(a), C.addEventListener("change", (function(A) { if (!o.html5Qrcode) throw "html5Qrcode not defined"; if (null != A && null != A.target && o.currentScanType === i.SCAN_TYPE_FILE && 0 !== A.target.files.length) { var e = A.target.files[0];
+ o.html5Qrcode.scanFileV2(e, !0).then((function(A) { o.resetHeaderMessage(), o.qrCodeSuccessCallback(A.decodedText, A) })).catch((function(A) { o.setStatus(h.errorStatus(), B.STATUS_WARNING), o.setHeaderMessage(A, B.STATUS_WARNING), o.qrCodeErrorCallback(A, c.createFrom(A)) })) } })) }, A.prototype.renderCameraSelection = function(A) { var e = this,
+ t = document.getElementById(this.getDashboardSectionCameraScanRegionId());
+ t.style.textAlign = "center"; var g = document.createElement("span");
+ g.innerText = "Select Camera (" + A.length + ") ", g.style.marginRight = "10px"; var i = document.createElement("select");
+ i.id = this.getCameraSelectionId(); for (var n = 0, o = A; n < o.length; n++) { var I = o[n],
+ C = I.id,
+ a = null == I.label ? C : I.label,
+ r = document.createElement("option");
+ r.value = C, r.innerText = a, i.appendChild(r) } g.appendChild(i), t.appendChild(g); var c = document.createElement("span"),
+ l = document.createElement("button");
+ l.innerText = h.scanButtonStartScanningText(), c.appendChild(l); var s = document.createElement("button");
+ s.innerText = h.scanButtonStopScanningText(), s.style.display = "none", s.disabled = !0, c.appendChild(s), t.appendChild(c), l.addEventListener("click", (function(A) { i.disabled = !0, l.disabled = !0, e.showHideScanTypeSwapLink(!1); var t, g = i.value;
+ e.html5Qrcode.start(g, (t = e.config, { fps: t.fps, qrbox: t.qrbox, aspectRatio: t.aspectRatio, disableFlip: t.disableFlip, videoConstraints: t.videoConstraints }), e.qrCodeSuccessCallback, e.qrCodeErrorCallback).then((function(A) { s.disabled = !1, s.style.display = "inline-block", l.style.display = "none", e.setStatus(h.scanningStatus()) })).catch((function(A) { e.showHideScanTypeSwapLink(!0), i.disabled = !1, l.disabled = !1, e.setStatus(h.idleStatus()), e.setHeaderMessage(A, B.STATUS_WARNING) })) })), s.addEventListener("click", (function(A) { if (!e.html5Qrcode) throw "html5Qrcode not defined";
+ s.disabled = !0, e.html5Qrcode.stop().then((function(A) { e.showHideScanTypeSwapLink(!0), i.disabled = !1, l.disabled = !1, s.style.display = "none", l.style.display = "inline-block", e.setStatus(h.idleStatus()), e.insertCameraScanImageToScanRegion() })).catch((function(A) { s.disabled = !1, e.setStatus(h.errorStatus(), B.STATUS_WARNING), e.setHeaderMessage(A, B.STATUS_WARNING) })) })) }, A.prototype.createSectionSwap = function() { var A = this,
+ e = h.textIfCameraScanSelected(),
+ t = h.textIfFileScanSelected(),
+ g = document.getElementById(this.getDashboardSectionId()),
+ n = document.createElement("div");
+ n.style.textAlign = "center"; var o = document.createElement("a");
+ o.style.textDecoration = "underline", o.id = this.getDashboardSectionSwapLinkId(), o.innerText = this.currentScanType === i.SCAN_TYPE_CAMERA ? e : t, o.href = "#scan-using-file", o.addEventListener("click", (function() { A.sectionSwapAllowed ? (A.setStatus(h.idleStatus()), A.resetHeaderMessage(), A.getFileScanInput().value = "", A.sectionSwapAllowed = !1, A.currentScanType === i.SCAN_TYPE_CAMERA ? (A.clearScanRegion(), A.getFileScanInput().disabled = !1, A.getCameraScanRegion().style.display = "none", A.getFileScanRegion().style.display = "block", o.innerText = t, A.currentScanType = i.SCAN_TYPE_FILE, A.insertFileScanImageToScanRegion()) : (A.clearScanRegion(), A.getFileScanInput().disabled = !0, A.getCameraScanRegion().style.display = "block", A.getFileScanRegion().style.display = "none", o.innerText = e, A.currentScanType = i.SCAN_TYPE_CAMERA, A.insertCameraScanImageToScanRegion()), A.sectionSwapAllowed = !0) : A.verbose && A.logger.logError("Section swap called when not allowed") })), n.appendChild(o), g.appendChild(n) }, A.prototype.resetHeaderMessage = function() { document.getElementById(this.getHeaderMessageContainerId()).style.display = "none" }, A.prototype.setStatus = function(A, e) { e || (e = B.STATUS_DEFAULT); var t = this.getStatusSpan(); switch (t.innerText = A, e) {
+ case B.STATUS_SUCCESS:
+ t.style.background = "#6aaf5042", t.style.color = "#477735"; break;
+ case B.STATUS_WARNING:
+ t.style.background = "#cb243124", t.style.color = "#cb2431"; break;
+ case B.STATUS_DEFAULT:
+ default:
+ t.style.background = "#eef", t.style.color = "rgb(17, 17, 17)" } }, A.prototype.setHeaderMessage = function(A, e) { e || (e = B.STATUS_DEFAULT); var t = this.getHeaderMessageDiv(); switch (t.innerText = A, t.style.display = "block", e) {
+ case B.STATUS_SUCCESS:
+ t.style.background = "#6aaf5042", t.style.color = "#477735"; break;
+ case B.STATUS_WARNING:
+ t.style.background = "#cb243124", t.style.color = "#cb2431"; break;
+ case B.STATUS_DEFAULT:
+ default:
+ t.style.background = "#00000000", t.style.color = "rgb(17, 17, 17)" } }, A.prototype.showHideScanTypeSwapLink = function(A) {!0 !== A && (A = !1), this.sectionSwapAllowed = A, this.getDashboardSectionSwapLink().style.display = A ? "inline-block" : "none" }, A.prototype.insertCameraScanImageToScanRegion = function() { var A = this,
+ e = document.getElementById(this.getScanRegionId()); if (this.cameraScanImage) return e.innerHTML = "
", void e.appendChild(this.cameraScanImage);
+ this.cameraScanImage = new Image, this.cameraScanImage.onload = function(t) { e.innerHTML = "
", e.appendChild(A.cameraScanImage) }, this.cameraScanImage.width = 128, this.cameraScanImage.style.opacity = "0.3", this.cameraScanImage.src = "data:image/gif;base64,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L25zLmFkb2JlLmNvbS94bXAvMS4wL0R5bmFtaWNNZWRpYS8iCiAgICB4bWxuczpzdERpbT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL0RpbWVuc2lvbnMjIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFkNzgwZGNmLWVkZTctZWU0My04N2E0LTdlMTg3YThlYTI3NSIKICAgeG1wTU06RG9jdW1lbnRJRD0iZDMxNDk3ZmItM2Y1Zi0yMzkwLTFlZDEtYjU3NDAwMDAwMDVmIgogICB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NTdiYmYyOTgtY2M5Ny02MzRlLWE4MjAtODFiMjAxY2RmZjllIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTEyLTA1VDA5OjEzOjIyKzA1OjAwIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wNVQwOToxMzoyMiswNTowMCIKICAgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBBZnRlciBFZmZlY3RzIENDIDIwMTggKFdpbmRvd3MpIgogICB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0xMi0wNVQwOToxMjo1MCswNTowMCIKICAgZGM6Zm9ybWF0PSLQkNC90LjQvNC40YDQvtCy0LDQvdC90YvQuSBHSUYiCiAgIGJvZHltb3Zpbjpwcm9qZWN0X2lkPSJvZWU3ZTRyM2gwaGtjZTdiODgzMyIKICAgeG1wRE06dmlkZW9GcmFtZVJhdGU9IjI1LjAwMDAwMCIKICAgeG1wRE06dmlkZW9GaWVsZE9yZGVyPSJQcm9ncmVzc2l2ZSIKICAgeG1wRE06dmlkZW9QaXhlbEFzcGVjdFJhdGlvPSIxLzEiCiAgIHhtcERNOnN0YXJ0VGltZVNjYWxlPSIyNSIKICAgeG1wRE06c3RhcnRUaW1lU2FtcGxlU2l6ZT0iMSI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSI5YWE0NzI4ZC1iYWU1LTAyMDEtMjM4MC0zZTlhMDAwMDAwOGMiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDVUMDk6MTM6MjIrMDU6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphYTA2OGRlZi1hY2NhLTM5NDgtODM1Yi02MWQ1MmU2NWI3NDIiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMDgtMzBUMDE6Mzg6MTErMDM6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEFmdGVyIEVmZmVjdHMgQ0MgMjAxOCAoV2luZG93cykiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZThjY2QxNzEtNWFkZC01MzRmLWIyZjgtODc0NzNhOGMxYWJmIgogICAgICBzdEV2dDp3aGVuPSIyMDE5LTA4LTMwVDAxOjM4OjMxKzAzOjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBZnRlciBFZmZlY3RzIENDIDIwMTggKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvY29udGVudCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ZmVmYzVhNC00YWY3LTVhNGYtYjJiYS1hMWRkYTM1YWRkMTQiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMDgtMzBUMDI6MDY6MjcrMDM6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEFmdGVyIEVmZmVjdHMgQ0MgMjAxOCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9jb250ZW50Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249ImRlcml2ZWQiCiAgICAgIHN0RXZ0OnBhcmFtZXRlcnM9InNhdmVkIHRvIG5ldyBsb2NhdGlvbiIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpmYjg3ZmQwYS00Njc2LTQ2NDMtOWZlYS03Mjk2NzllYmVhY2YiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMDgtMzBUMDI6MDY6NTYrMDM6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEFmdGVyIEVmZmVjdHMgQ0MgMjAxOCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MTBmZDdiYzMtNDllMy1hNzRjLWI0Y2UtNzI5NjYxM2NjMmYwIgogICAgICBzdEV2dDp3aGVuPSIyMDE5LTA4LTMwVDAyOjA3OjA3KzAzOjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBZnRlciBFZmZlY3RzIENDIDIwMTggKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvY29udGVudCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMWZlOTE3MC1lYTQ1LTcyNDItOGVmNy1mMzQyNTU0ZWEwN2UiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMDgtMzBUMDI6MDc6MDcrMDM6MDAiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIEFmdGVyIEVmZmVjdHMgQ0MgMjAxOCAoV2luZG93cykiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZjJjN2ViNzEtMGJhZC03OTRiLWI4ZTAtMWVhZTkzOTM3Njk2IgogICAgICBzdEV2dDp3aGVuPSIyMDE5LTA4LTMwVDAyOjI2OjIzKzAzOjAwIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBBZnRlciBFZmZlY3RzIENDIDIwMTggKFdpbmRvd3MpIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvY29udGVudCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5ZDFlN2UzNi1kZWVjLWJmNDYtOGE0Mi1kODE4YzBlMjc5YjIiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMTM6NDk6MDIrMDU6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9jb250ZW50Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjA1Y2RkNWI3LTM0MGMtOGM0ZC1hMWUyLTlkYWJlMjg0OTA0MyIKICAgICAgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wNFQxMzo0OTowMiswNTowMCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozYmY3YjIzNi1kNTI3LTA0NGUtYTlkMS00MjUzY2FlZGM0N2MiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMTM6NDk6MjMrMDU6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9jb250ZW50Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxYTc1YTU2LTMyZGMtYmU0OS1hZWFkLWFjMmQ5YjNkZjJiMiIKICAgICAgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wNFQxMzo0OToyMyswNTowMCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4OTJiYmEyYy1iMjljLWNjNDgtOTI1My0wOGE0ODYwZTY5ZDAiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDVUMDk6MDE6MzArMDU6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9jb250ZW50Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmYwZTI3MTZlLWU5ZTAtYWE0ZS05ZjcwLTQxNTdjNmNlMGZlYSIKICAgICAgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wNVQwOToxMzoxMSswNTowMCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iL2NvbnRlbnQiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Y2I2NjE4ZDItOTcwMC01NTRjLWI5ZTktNmEzYWUxM2Q5NGYyIgogICAgICBzdEV2dDp3aGVuPSIyMDE5LTEyLTA1VDA5OjEzOjExKzA1OjAwIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjlkZWU2YWY2LWQ1ZWYtMzg0My04MjY5LTQyMGY1ODFlMjdlZiIKICAgICAgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wNVQwOToxMzoyMiswNTowMCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoxZDc4MGRjZi1lZGU3LWVlNDMtODdhNC03ZTE4N2E4ZWEyNzUiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDVUMDk6MTM6MjIrMDU6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9tZXRhZGF0YSIvPgogICAgPC9yZGY6U2VxPgogICA8L3htcE1NOkhpc3Rvcnk+CiAgIDx4bXBNTTpEZXJpdmVkRnJvbQogICAgc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MzNkMjZhMi1iN2I4LTA3NGItODhkNy1iOGE1OGM5ZmQwYzUiCiAgICBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjczM2QyNmEyLWI3YjgtMDc0Yi04OGQ3LWI4YTU4YzlmZDBjNSIKICAgIHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDphYTA2OGRlZi1hY2NhLTM5NDgtODM1Yi02MWQ1MmU2NWI3NDIiLz4KICAgPHhtcE1NOkluZ3JlZGllbnRzPgogICAgPHJkZjpCYWc+CiAgICAgPHJkZjpsaQogICAgICBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRkOTdmOTNlLWIwZjEtZjU0NC1iZmMxLWFmZThhMzEyNjkzZCIKICAgICAgc3RSZWY6ZnJvbVBhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICBzdFJlZjp0b1BhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICBzdFJlZjptYXNrTWFya2Vycz0iTm9uZSIvPgogICAgPC9yZGY6QmFnPgogICA8L3htcE1NOkluZ3JlZGllbnRzPgogICA8eG1wTU06UGFudHJ5PgogICAgPHJkZjpCYWc+CiAgICAgPHJkZjpsaT4KICAgICAgPHJkZjpEZXNjcmlwdGlvbgogICAgICAgZGM6Zm9ybWF0PSJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWZ0ZXJlZmZlY3RzLmNvbXAiCiAgICAgICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjRkOTdmOTNlLWIwZjEtZjU0NC1iZmMxLWFmZThhMzEyNjkzZCI+CiAgICAgIDxkYzp0aXRsZT4KICAgICAgIDxyZGY6QWx0PgogICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+cG9ydHJhaXQtbW9kZS1zY2FubmluZzwvcmRmOmxpPgogICAgICAgPC9yZGY6QWx0PgogICAgICA8L2RjOnRpdGxlPgogICAgICA8eG1wTU06SW5ncmVkaWVudHM+CiAgICAgICA8cmRmOkJhZz4KICAgICAgICA8cmRmOmxpCiAgICAgICAgIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjBlNWU0MmUtM2U1NS0zYTQ1LTlkZDYtZjY1YzFlNzAxMDRhIgogICAgICAgICBzdFJlZjpmcm9tUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOnRvUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOm1hc2tNYXJrZXJzPSJOb25lIi8+CiAgICAgICAgPHJkZjpsaQogICAgICAgICBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmFjZDllMjg3LWZjMzEtMWQ0Ni1hNzdmLTQ1NjQ1ZmFhNWUwYyIKICAgICAgICAgc3RSZWY6ZnJvbVBhcnQ9InRpbWU6MGQyODU3NjgwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICAgICBzdFJlZjp0b1BhcnQ9InRpbWU6MTA1ODQwMDAwMDBmMjU0MDE2MDAwMDAwZDI4NTc2ODAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOm1hc2tNYXJrZXJzPSJOb25lIi8+CiAgICAgICAgPHJkZjpsaQogICAgICAgICBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmQwMDE4YzVkLWU2MDEtZWM0NS1hZWQ5LTdhZTNjZTViNmIzZCIKICAgICAgICAgc3RSZWY6ZnJvbVBhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICAgICBzdFJlZjp0b1BhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICAgICBzdFJlZjptYXNrTWFya2Vycz0iTm9uZSIvPgogICAgICAgIDxyZGY6bGkKICAgICAgICAgc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplODdiN2UyOC02NTQ5LTM5NGEtODNjOS05ZjdkOTUyNDJjNmUiCiAgICAgICAgIHN0UmVmOmZyb21QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgICAgc3RSZWY6dG9QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgICAgc3RSZWY6bWFza01hcmtlcnM9Ik5vbmUiLz4KICAgICAgICA8cmRmOmxpCiAgICAgICAgIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZThlY2VkNGMtNWVjZi0xNTQ1LWI3ZGYtNmViNmMwNjQxNGZiIgogICAgICAgICBzdFJlZjpmcm9tUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOnRvUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOm1hc2tNYXJrZXJzPSJOb25lIi8+CiAgICAgICA8L3JkZjpCYWc+CiAgICAgIDwveG1wTU06SW5ncmVkaWVudHM+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgIDwvcmRmOmxpPgogICAgIDxyZGY6bGk+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24KICAgICAgIGRjOmZvcm1hdD0iYXBwbGljYXRpb24vdm5kLmFkb2JlLmFmdGVyZWZmZWN0cy5sYXllciIKICAgICAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjBlNWU0MmUtM2U1NS0zYTQ1LTlkZDYtZjY1YzFlNzAxMDRhIj4KICAgICAgPGRjOnRpdGxlPgogICAgICAgPHJkZjpBbHQ+CiAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5wYXBlcjwvcmRmOmxpPgogICAgICAgPC9yZGY6QWx0PgogICAgICA8L2RjOnRpdGxlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICA8L3JkZjpsaT4KICAgICA8cmRmOmxpPgogICAgICA8cmRmOkRlc2NyaXB0aW9uCiAgICAgICBkYzpmb3JtYXQ9ImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5hZnRlcmVmZmVjdHMubGF5ZXIiCiAgICAgICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmFjZDllMjg3LWZjMzEtMWQ0Ni1hNzdmLTQ1NjQ1ZmFhNWUwYyI+CiAgICAgIDxkYzp0aXRsZT4KICAgICAgIDxyZGY6QWx0PgogICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+bGluZS1zY2FubmluZzwvcmRmOmxpPgogICAgICAgPC9yZGY6QWx0PgogICAgICA8L2RjOnRpdGxlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICA8L3JkZjpsaT4KICAgICA8cmRmOmxpPgogICAgICA8cmRmOkRlc2NyaXB0aW9uCiAgICAgICBkYzpmb3JtYXQ9ImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5hZnRlcmVmZmVjdHMubGF5ZXIiCiAgICAgICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmQwMDE4YzVkLWU2MDEtZWM0NS1hZWQ5LTdhZTNjZTViNmIzZCI+CiAgICAgIDxkYzp0aXRsZT4KICAgICAgIDxyZGY6QWx0PgogICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+bWFzazwvcmRmOmxpPgogICAgICAgPC9yZGY6QWx0PgogICAgICA8L2RjOnRpdGxlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICA8L3JkZjpsaT4KICAgICA8cmRmOmxpPgogICAgICA8cmRmOkRlc2NyaXB0aW9uCiAgICAgICBkYzpmb3JtYXQ9ImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5hZnRlcmVmZmVjdHMubGF5ZXIiCiAgICAgICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmU4N2I3ZTI4LTY1NDktMzk0YS04M2M5LTlmN2Q5NTI0MmM2ZSI+CiAgICAgIDxkYzp0aXRsZT4KICAgICAgIDxyZGY6QWx0PgogICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+ZnJhbWU8L3JkZjpsaT4KICAgICAgIDwvcmRmOkFsdD4KICAgICAgPC9kYzp0aXRsZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgPC9yZGY6bGk+CiAgICAgPHJkZjpsaT4KICAgICAgPHJkZjpEZXNjcmlwdGlvbgogICAgICAgZGM6Zm9ybWF0PSJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWZ0ZXJlZmZlY3RzLmxheWVyIgogICAgICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplOGVjZWQ0Yy01ZWNmLTE1NDUtYjdkZi02ZWI2YzA2NDE0ZmIiPgogICAgICA8ZGM6dGl0bGU+CiAgICAgICA8cmRmOkFsdD4KICAgICAgICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPkJhY2tncm91bmQ8L3JkZjpsaT4KICAgICAgIDwvcmRmOkFsdD4KICAgICAgPC9kYzp0aXRsZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgPC9yZGY6bGk+CiAgICA8L3JkZjpCYWc+CiAgIDwveG1wTU06UGFudHJ5PgogICA8eG1wRE06dmlkZW9GcmFtZVNpemUKICAgIHN0RGltOnc9IjUwIgogICAgc3REaW06aD0iNTAiCiAgICBzdERpbTp1bml0PSJwaXhlbCIvPgogICA8eG1wRE06ZHVyYXRpb24KICAgIHhtcERNOnZhbHVlPSIyOSIKICAgIHhtcERNOnNjYWxlPSIxLzI1Ii8+CiAgIDx4bXBETTpzdGFydFRpbWVjb2RlCiAgICB4bXBETTp0aW1lRm9ybWF0PSIyNVRpbWVjb2RlIgogICAgeG1wRE06dGltZVZhbHVlPSIwMDowMDowMDowMCIvPgogICA8eG1wRE06YWx0VGltZWNvZGUKICAgIHhtcERNOnRpbWVWYWx1ZT0iMDA6MDA6MDA6MDAiCiAgICB4bXBETTp0aW1lRm9ybWF0PSIyNVRpbWVjb2RlIi8+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAOw==" }, A.prototype.insertFileScanImageToScanRegion = function() { var A = this,
+ e = document.getElementById(this.getScanRegionId()); if (this.fileScanImage) return e.innerHTML = "
", void e.appendChild(this.fileScanImage);
+ this.fileScanImage = new Image, this.fileScanImage.onload = function(t) { e.innerHTML = "
", e.appendChild(A.fileScanImage) }, this.fileScanImage.width = 128, this.fileScanImage.style.opacity = "0.3", this.fileScanImage.src = "data:image/gif;base64,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MS8iCiAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICB4bWxuczpib2R5bW92aW49ImJvZHltb3ZpbiIKICAgIHhtbG5zOnhtcERNPSJodHRwOi8vbnMuYWRvYmUuY29tL3htcC8xLjAvRHluYW1pY01lZGlhLyIKICAgIHhtbG5zOnN0RGltPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvRGltZW5zaW9ucyMiCiAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ZjZmYzc4ODQtZWYxMy1iNTRkLTk0ZGMtMDI5OTYxYWE2ZDBkIgogICB4bXBNTTpEb2N1bWVudElEPSI2MzU4ZTE5Yi1mOTQxLTA3MzMtNTEzNy03YTg0MDAwMDAwNTEiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozZTk2YzgxNS1jNGVlLTQzNDUtYjMzZi0yYjFiN2NlMWE5NzciCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMTItMDRUMTE6Mjk6MDcrMDM6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTEyLTA0VDExOjI5OjA3KzAzOjAwIgogICB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0xMi0wNFQxMToyODozNiswMzowMCIKICAgZGM6Zm9ybWF0PSLQkNC90LjQvNC40YDQvtCy0LDQvdC90YvQuSBHSUYiCiAgIGJvZHltb3Zpbjpwcm9qZWN0X2lkPSI5ZHhpaGxxMXQzbjN1N2hjdXZjOCIKICAgeG1wRE06dmlkZW9GcmFtZVJhdGU9IjI0LjAwMDAwMCIKICAgeG1wRE06dmlkZW9GaWVsZE9yZGVyPSJQcm9ncmVzc2l2ZSIKICAgeG1wRE06dmlkZW9QaXhlbEFzcGVjdFJhdGlvPSIxLzEiCiAgIHhtcERNOnN0YXJ0VGltZVNjYWxlPSIyNCIKICAgeG1wRE06c3RhcnRUaW1lU2FtcGxlU2l6ZT0iMSI+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJmZDVkNzVlYi1iN2RlLWZjYjUtYzRlZC04OTJjMDAwMDAwN2UiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMTE6Mjk6MDcrMDM6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ZGVkNDY0NC00OThmLTFkNGUtOTUyNy0xYTFmM2ViMjY3MzUiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMDg6Mjc6MTArMDM6MDAiLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Mzk4NDEzNTEtNzFjZi0zNzQ3LTkyMGQtMzE2MDkwYjhkMTIxIgogICAgICBzdEV2dDp3aGVuPSIyMDE5LTEyLTA0VDA4OjQyOjM1KzAzOjAwIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvY29udGVudCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MzQ2MzVmNy02YWQwLTYyNGUtOWUzNi01NjRkZWY3YzZkNTIiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMDk6MDQ6NDcrMDM6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9jb250ZW50Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249ImRlcml2ZWQiCiAgICAgIHN0RXZ0OnBhcmFtZXRlcnM9InNhdmVkIHRvIG5ldyBsb2NhdGlvbiIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0YjMwMTM3MS0yZjM0LWIzNDEtOGMxYy0xZjZmNjhlMmY0YTkiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMDk6MDQ6NDcrMDM6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YTEwOGYwZjQtZDNiMC1lMzQzLWJkMGQtMDMxMWEzMGFkZGNjIgogICAgICBzdEV2dDp3aGVuPSIyMDE5LTEyLTA0VDA5OjE0OjExKzAzOjAwIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvY29udGVudCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo3YmQyOGRiYi1jMzI5LTA3NDEtOTk0YS1mMGJkZDIwZmU3MmEiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMDk6MTk6MzgrMDM6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9jb250ZW50Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjJhOTkzY2E2LWU0YzctZjk0Mi05OWMyLTJiZTI2YWJmYjRjMCIKICAgICAgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wNFQxMToyNzo0OSswMzowMCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjYjI2ZjkyNS1jYmY2LWExNDktYTYwNi00YTIxYTIwN2VlY2IiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMTE6Mjg6NTYrMDM6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii9jb250ZW50Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk5ZWE2MmRhLTQyMDctNjA0Ni1hYmVkLTBjMmEzOWQ0NDgyZSIKICAgICAgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wNFQxMToyODo1NiswMzowMCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMTg5MTkxMy1mYTQwLTYxNDktYjdmZS03YzI1YjIzNTg5YzEiCiAgICAgIHN0RXZ0OndoZW49IjIwMTktMTItMDRUMTE6Mjk6MDcrMDM6MDAiCiAgICAgIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiCiAgICAgIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZjZmYzc4ODQtZWYxMy1iNTRkLTk0ZGMtMDI5OTYxYWE2ZDBkIgogICAgICBzdEV2dDp3aGVuPSIyMDE5LTEyLTA0VDExOjI5OjA3KzAzOjAwIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvbWV0YWRhdGEiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogICA8eG1wTU06RGVyaXZlZEZyb20KICAgIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZTc2ZGE2ZWMtMmUzYy0zMTRkLTkyZjEtNThkNzJjNTJhMzMyIgogICAgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDplNzZkYTZlYy0yZTNjLTMxNGQtOTJmMS01OGQ3MmM1MmEzMzIiCiAgICBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NGRlZDQ2NDQtNDk4Zi0xZDRlLTk1MjctMWExZjNlYjI2NzM1Ii8+CiAgIDx4bXBNTTpJbmdyZWRpZW50cz4KICAgIDxyZGY6QmFnPgogICAgIDxyZGY6bGkKICAgICAgc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpiZWMzNTdhOS05MGJmLWFjNDAtYjk2OS00NDIwMjNiMzI0YjEiCiAgICAgIHN0UmVmOmZyb21QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgc3RSZWY6dG9QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgc3RSZWY6bWFza01hcmtlcnM9Ik5vbmUiLz4KICAgIDwvcmRmOkJhZz4KICAgPC94bXBNTTpJbmdyZWRpZW50cz4KICAgPHhtcE1NOlBhbnRyeT4KICAgIDxyZGY6QmFnPgogICAgIDxyZGY6bGk+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24KICAgICAgIGRjOmZvcm1hdD0iYXBwbGljYXRpb24vdm5kLmFkb2JlLmFmdGVyZWZmZWN0cy5sYXllciIKICAgICAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzhhNWE2MmItYzAzYy03YzQxLWIzMGQtMTk0OTFkOTJhZmFlIj4KICAgICAgPGRjOnRpdGxlPgogICAgICAgPHJkZjpBbHQ+CiAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5CYWNrZ3JvdW5kPC9yZGY6bGk+CiAgICAgICA8L3JkZjpBbHQ+CiAgICAgIDwvZGM6dGl0bGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgIDwvcmRmOmxpPgogICAgIDxyZGY6bGk+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24KICAgICAgIGRjOmZvcm1hdD0iYXBwbGljYXRpb24vdm5kLmFkb2JlLmFmdGVyZWZmZWN0cy5sYXllciIKICAgICAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYxOGExZTUtMzY4Yy0wYjQ5LWJkNDctNzI0NmFkOTU3MmZjIj4KICAgICAgPGRjOnRpdGxlPgogICAgICAgPHJkZjpBbHQ+CiAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5tYXNrMzwvcmRmOmxpPgogICAgICAgPC9yZGY6QWx0PgogICAgICA8L2RjOnRpdGxlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICA8L3JkZjpsaT4KICAgICA8cmRmOmxpPgogICAgICA8cmRmOkRlc2NyaXB0aW9uCiAgICAgICBkYzpmb3JtYXQ9ImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5hZnRlcmVmZmVjdHMubGF5ZXIiCiAgICAgICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk0YjA5MTY2LTVmZWQtNzA0OS04YzQ4LWExODQwNjY3MjJlZiI+CiAgICAgIDxkYzp0aXRsZT4KICAgICAgIDxyZGY6QWx0PgogICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+cGhvdG8yPC9yZGY6bGk+CiAgICAgICA8L3JkZjpBbHQ+CiAgICAgIDwvZGM6dGl0bGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgIDwvcmRmOmxpPgogICAgIDxyZGY6bGk+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24KICAgICAgIGRjOmZvcm1hdD0iYXBwbGljYXRpb24vdm5kLmFkb2JlLmFmdGVyZWZmZWN0cy5sYXllciIKICAgICAgIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6YWQ2ZWFiMmYtMWMxNS1jZjQ0LTg5YzgtNWJlZWVmMjUwOTA4Ij4KICAgICAgPGRjOnRpdGxlPgogICAgICAgPHJkZjpBbHQ+CiAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5waG90bzE8L3JkZjpsaT4KICAgICAgIDwvcmRmOkFsdD4KICAgICAgPC9kYzp0aXRsZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgPC9yZGY6bGk+CiAgICAgPHJkZjpsaT4KICAgICAgPHJkZjpEZXNjcmlwdGlvbgogICAgICAgZGM6Zm9ybWF0PSJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWZ0ZXJlZmZlY3RzLmNvbXAiCiAgICAgICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmJlYzM1N2E5LTkwYmYtYWM0MC1iOTY5LTQ0MjAyM2IzMjRiMSI+CiAgICAgIDxkYzp0aXRsZT4KICAgICAgIDxyZGY6QWx0PgogICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+cGhvdG8tZ2FsbGVyeSAyPC9yZGY6bGk+CiAgICAgICA8L3JkZjpBbHQ+CiAgICAgIDwvZGM6dGl0bGU+CiAgICAgIDx4bXBNTTpJbmdyZWRpZW50cz4KICAgICAgIDxyZGY6QmFnPgogICAgICAgIDxyZGY6bGkKICAgICAgICAgc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3OGE1YTYyYi1jMDNjLTdjNDEtYjMwZC0xOTQ5MWQ5MmFmYWUiCiAgICAgICAgIHN0UmVmOmZyb21QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgICAgc3RSZWY6dG9QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgICAgc3RSZWY6bWFza01hcmtlcnM9Ik5vbmUiLz4KICAgICAgICA8cmRmOmxpCiAgICAgICAgIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ODYxOGExZTUtMzY4Yy0wYjQ5LWJkNDctNzI0NmFkOTU3MmZjIgogICAgICAgICBzdFJlZjpmcm9tUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOnRvUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOm1hc2tNYXJrZXJzPSJOb25lIi8+CiAgICAgICAgPHJkZjpsaQogICAgICAgICBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk0YjA5MTY2LTVmZWQtNzA0OS04YzQ4LWExODQwNjY3MjJlZiIKICAgICAgICAgc3RSZWY6ZnJvbVBhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICAgICBzdFJlZjp0b1BhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICAgICBzdFJlZjptYXNrTWFya2Vycz0iTm9uZSIvPgogICAgICAgIDxyZGY6bGkKICAgICAgICAgc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphZDZlYWIyZi0xYzE1LWNmNDQtODljOC01YmVlZWYyNTA5MDgiCiAgICAgICAgIHN0UmVmOmZyb21QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgICAgc3RSZWY6dG9QYXJ0PSJ0aW1lOjBkMjk2MzUyMDAwMDAwZjI1NDAxNjAwMDAwMCIKICAgICAgICAgc3RSZWY6bWFza01hcmtlcnM9Ik5vbmUiLz4KICAgICAgICA8cmRmOmxpCiAgICAgICAgIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YzkwOWFiOGMtY2IxZC01ZDQxLWJkNDgtMzU2MDQ4NmZkNmE2IgogICAgICAgICBzdFJlZjpmcm9tUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOnRvUGFydD0idGltZTowZDI5NjM1MjAwMDAwMGYyNTQwMTYwMDAwMDAiCiAgICAgICAgIHN0UmVmOm1hc2tNYXJrZXJzPSJOb25lIi8+CiAgICAgICAgPHJkZjpsaQogICAgICAgICBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmYxY2I0ODQ2LTNmNDItZDk0ZS05MmI4LTVjOTQyNjk4N2JkMyIKICAgICAgICAgc3RSZWY6ZnJvbVBhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICAgICBzdFJlZjp0b1BhcnQ9InRpbWU6MGQyOTYzNTIwMDAwMDBmMjU0MDE2MDAwMDAwIgogICAgICAgICBzdFJlZjptYXNrTWFya2Vycz0iTm9uZSIvPgogICAgICAgPC9yZGY6QmFnPgogICAgICA8L3htcE1NOkluZ3JlZGllbnRzPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICA8L3JkZjpsaT4KICAgICA8cmRmOmxpPgogICAgICA8cmRmOkRlc2NyaXB0aW9uCiAgICAgICBkYzpmb3JtYXQ9ImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5hZnRlcmVmZmVjdHMubGF5ZXIiCiAgICAgICB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmM5MDlhYjhjLWNiMWQtNWQ0MS1iZDQ4LTM1NjA0ODZmZDZhNiI+CiAgICAgIDxkYzp0aXRsZT4KICAgICAgIDxyZGY6QWx0PgogICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+bWFzazE8L3JkZjpsaT4KICAgICAgIDwvcmRmOkFsdD4KICAgICAgPC9kYzp0aXRsZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgPC9yZGY6bGk+CiAgICAgPHJkZjpsaT4KICAgICAgPHJkZjpEZXNjcmlwdGlvbgogICAgICAgZGM6Zm9ybWF0PSJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWZ0ZXJlZmZlY3RzLmxheWVyIgogICAgICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpmMWNiNDg0Ni0zZjQyLWQ5NGUtOTJiOC01Yzk0MjY5ODdiZDMiPgogICAgICA8ZGM6dGl0bGU+CiAgICAgICA8cmRmOkFsdD4KICAgICAgICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPnBob3RvMzwvcmRmOmxpPgogICAgICAgPC9yZGY6QWx0PgogICAgICA8L2RjOnRpdGxlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICA8L3JkZjpsaT4KICAgIDwvcmRmOkJhZz4KICAgPC94bXBNTTpQYW50cnk+CiAgIDx4bXBETTp2aWRlb0ZyYW1lU2l6ZQogICAgc3REaW06dz0iNTAiCiAgICBzdERpbTpoPSI1MCIKICAgIHN0RGltOnVuaXQ9InBpeGVsIi8+CiAgIDx4bXBETTpkdXJhdGlvbgogICAgeG1wRE06dmFsdWU9IjI4IgogICAgeG1wRE06c2NhbGU9IjEvMjQiLz4KICAgPHhtcERNOnN0YXJ0VGltZWNvZGUKICAgIHhtcERNOnRpbWVGb3JtYXQ9IjI0VGltZWNvZGUiCiAgICB4bXBETTp0aW1lVmFsdWU9IjAwOjAwOjAwOjAwIi8+CiAgIDx4bXBETTphbHRUaW1lY29kZQogICAgeG1wRE06dGltZVZhbHVlPSIwMDowMDowMDowMCIKICAgIHhtcERNOnRpbWVGb3JtYXQ9IjI0VGltZWNvZGUiLz4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAA7" }, A.prototype.clearScanRegion = function() { document.getElementById(this.getScanRegionId()).innerHTML = "" }, A.prototype.getDashboardSectionId = function() { return this.elementId + "__dashboard_section" }, A.prototype.getDashboardSectionCameraScanRegionId = function() { return this.elementId + "__dashboard_section_csr" }, A.prototype.getDashboardSectionFileScanRegionId = function() { return this.elementId + "__dashboard_section_fsr" }, A.prototype.getDashboardSectionSwapLinkId = function() { return this.elementId + "__dashboard_section_swaplink" }, A.prototype.getScanRegionId = function() { return this.elementId + "__scan_region" }, A.prototype.getDashboardId = function() { return this.elementId + "__dashboard" }, A.prototype.getFileScanInputId = function() { return this.elementId + "__filescan_input" }, A.prototype.getStatusSpanId = function() { return this.elementId + "__status_span" }, A.prototype.getHeaderMessageContainerId = function() { return this.elementId + "__header_message" }, A.prototype.getCameraSelectionId = function() { return this.elementId + "__camera_selection" }, A.prototype.getCameraScanRegion = function() { return document.getElementById(this.getDashboardSectionCameraScanRegionId()) }, A.prototype.getFileScanRegion = function() { return document.getElementById(this.getDashboardSectionFileScanRegionId()) }, A.prototype.getFileScanInput = function() { return document.getElementById(this.getFileScanInputId()) }, A.prototype.getDashboardSectionSwapLink = function() { return document.getElementById(this.getDashboardSectionSwapLinkId()) }, A.prototype.getStatusSpan = function() { return document.getElementById(this.getStatusSpanId()) }, A.prototype.getHeaderMessageDiv = function() { return document.getElementById(this.getHeaderMessageContainerId()) }, A }();
+ _ = t })();
+/**ref**/
+;
+var Html5Qrcode = window._.Html5Qrcode;;
+var Html5QrcodeScanner = window._.Html5QrcodeScanner;;
+var Html5QrcodeSupportedFormats = window._.Html5QrcodeSupportedFormats;
\ No newline at end of file