From 5bf9add3813806b617e7537e01b30507cbd2869f Mon Sep 17 00:00:00 2001 From: Christoph Oberhofer Date: Sun, 26 Apr 2015 21:34:31 +0200 Subject: [PATCH] Added EAN-8 Reader --- dist/quagga.js | 138 ++++++++++++++++++++++-------- dist/quagga.min.js | 8 +- example/file_input.html | 4 +- example/file_input.js | 2 +- example/live_w_locator.html | 6 +- example/live_w_locator.js | 2 +- src/barcode_decoder.js | 20 ++++- src/ean_8_reader.js | 45 ++++++++++ src/ean_reader.js | 73 +++++++++------- test/fixtures/ean-8/image-001.jpg | Bin 0 -> 48751 bytes test/fixtures/ean-8/image-002.jpg | Bin 0 -> 51670 bytes test/fixtures/ean-8/image-003.jpg | Bin 0 -> 64995 bytes 12 files changed, 221 insertions(+), 77 deletions(-) create mode 100644 src/ean_8_reader.js create mode 100644 test/fixtures/ean-8/image-001.jpg create mode 100644 test/fixtures/ean-8/image-002.jpg create mode 100644 test/fixtures/ean-8/image-003.jpg diff --git a/dist/quagga.js b/dist/quagga.js index 0967364..e5c9870 100644 --- a/dist/quagga.js +++ b/dist/quagga.js @@ -1273,13 +1273,50 @@ define( return null; }; + EANReader.prototype._decodePayload = function(code, result, decodedCodes) { + var i, + self = this, + codeFrequency = 0x0; + + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end); + if (code.code >= self.CODE_G_START) { + code.code = code.code - self.CODE_G_START; + codeFrequency |= 1 << (5 - i); + } else { + codeFrequency |= 0 << (5 - i); + } + result.push(code.code); + decodedCodes.push(code); + } + + for ( i = 0; i < self.CODE_FREQUENCY.length; i++) { + if (codeFrequency === self.CODE_FREQUENCY[i]) { + result.unshift(i); + break; + } + } + + code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); + if (code === null) { + return null; + } + decodedCodes.push(code); + + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end, self.CODE_G_START); + decodedCodes.push(code); + result.push(code.code); + } + + return code; + }; + EANReader.prototype._decode = function() { var startInfo, self = this, code = null, result = [], - i, - codeFrequency = 0x0, decodedCodes = []; try { @@ -1290,37 +1327,7 @@ define( end : startInfo.end }; decodedCodes.push(code); - for ( i = 0; i < 6; i++) { - code = self._decodeCode(code.end); - if (code.code >= self.CODE_G_START) { - code.code = code.code - self.CODE_G_START; - codeFrequency |= 1 << (5 - i); - } else { - codeFrequency |= 0 << (5 - i); - } - result.push(code.code); - decodedCodes.push(code); - } - - for ( i = 0; i < self.CODE_FREQUENCY.length; i++) { - if (codeFrequency === self.CODE_FREQUENCY[i]) { - result.unshift(i); - break; - } - } - - code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); - if (code === null) { - return null; - } - decodedCodes.push(code); - - for ( i = 0; i < 6; i++) { - code = self._decodeCode(code.end, self.CODE_G_START); - decodedCodes.push(code); - result.push(code.code); - } - + code = self._decodePayload(code, result, decodedCodes); code = self._findEnd(code.end); if (code === null){ return null; @@ -7063,12 +7070,75 @@ define( /* jshint undef: true, unused: true, browser:true, devel: true */ /* global define */ -define('barcode_decoder',["bresenham", "image_debug", 'code_128_reader', 'ean_reader', 'code_39_reader', 'codabar_reader', 'upc_reader'], function(Bresenham, ImageDebug, Code128Reader, EANReader, Code39Reader, CodabarReader, UPCReader) { +define( + 'ean_8_reader',[ + "./ean_reader" + ], + function(EANReader) { + + + function EAN8Reader() { + EANReader.call(this); + } + + EAN8Reader.prototype = Object.create(EANReader.prototype); + EAN8Reader.prototype.constructor = EAN8Reader; + + EAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) { + var i, + self = this; + + for ( i = 0; i < 4; i++) { + code = self._decodeCode(code.end); + result.push(code.code); + decodedCodes.push(code); + } + + code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); + if (code === null) { + return null; + } + decodedCodes.push(code); + + for ( i = 0; i < 4; i++) { + code = self._decodeCode(code.end, self.CODE_G_START); + decodedCodes.push(code); + result.push(code.code); + } + + return code; + }; + + return (EAN8Reader); + } +); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('barcode_decoder',[ + "bresenham", + "image_debug", + 'code_128_reader', + 'ean_reader', + 'code_39_reader', + 'codabar_reader', + 'upc_reader', + 'ean_8_reader' +], function( + Bresenham, + ImageDebug, + Code128Reader, + EANReader, + Code39Reader, + CodabarReader, + UPCReader, + EAN8Reader) { var readers = { code_128_reader: Code128Reader, ean_reader: EANReader, + ean_8_reader: EAN8Reader, code_39_reader: Code39Reader, codabar_reader: CodabarReader, upc_reader: UPCReader diff --git a/dist/quagga.min.js b/dist/quagga.min.js index 114446c..825cc1f 100644 --- a/dist/quagga.min.js +++ b/dist/quagga.min.js @@ -1,9 +1,9 @@ -/*! quagga 2015-04-25 */ +/*! quagga 2015-04-26 */ !function(a,b){var c=b.toString();"undefined"!=typeof module?module.exports=b(c):a.Quagga=b(c)}(this,function(a){/** * @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. * Available via the MIT or new BSD license. * see: http://github.com/jrburke/almond for details */ -var b,c,d;!function(a){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(n=n.slice(0,n.length-1),a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(b,c){return function(){return n.apply(a,v.call(arguments,0).concat([b,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(b){if(e(r,b)){var c=r[b];delete r[b],t[b]=!0,m.apply(a,c)}if(!e(q,b)&&!e(t,b))throw new Error("No "+b);return q[b]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(b,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||b,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n1)for(c=0;cd?(j.start=c-g,j.end=c,j.counter=e,j):null;i++,e[i]=1,h=!h}}else for(e.push(0),c=g;ca?0:a,d=a;b>d;d++)if(this._row[d]!==c)return!1;return!0},a.DIRECTION={FORWARD:1,REVERSE:-1},a.Exception={StartNotFoundException:"Start-Info was not found!",CodeNotFoundException:"Code could not be found!",PatternNotFoundException:"Pattern could not be found!"},a}),d("code_128_reader",["./barcode_reader"],function(a){function b(){a.call(this)}var c={CODE_SHIFT:{value:98},CODE_C:{value:99},CODE_B:{value:100},CODE_A:{value:101},START_CODE_A:{value:103},START_CODE_B:{value:104},START_CODE_C:{value:105},STOP_CODE:{value:106},MODULO:{value:11},CODE_PATTERN:{value:[[2,1,2,2,2,2],[2,2,2,1,2,2],[2,2,2,2,2,1],[1,2,1,2,2,3],[1,2,1,3,2,2],[1,3,1,2,2,2],[1,2,2,2,1,3],[1,2,2,3,1,2],[1,3,2,2,1,2],[2,2,1,2,1,3],[2,2,1,3,1,2],[2,3,1,2,1,2],[1,1,2,2,3,2],[1,2,2,1,3,2],[1,2,2,2,3,1],[1,1,3,2,2,2],[1,2,3,1,2,2],[1,2,3,2,2,1],[2,2,3,2,1,1],[2,2,1,1,3,2],[2,2,1,2,3,1],[2,1,3,2,1,2],[2,2,3,1,1,2],[3,1,2,1,3,1],[3,1,1,2,2,2],[3,2,1,1,2,2],[3,2,1,2,2,1],[3,1,2,2,1,2],[3,2,2,1,1,2],[3,2,2,2,1,1],[2,1,2,1,2,3],[2,1,2,3,2,1],[2,3,2,1,2,1],[1,1,1,3,2,3],[1,3,1,1,2,3],[1,3,1,3,2,1],[1,1,2,3,1,3],[1,3,2,1,1,3],[1,3,2,3,1,1],[2,1,1,3,1,3],[2,3,1,1,1,3],[2,3,1,3,1,1],[1,1,2,1,3,3],[1,1,2,3,3,1],[1,3,2,1,3,1],[1,1,3,1,2,3],[1,1,3,3,2,1],[1,3,3,1,2,1],[3,1,3,1,2,1],[2,1,1,3,3,1],[2,3,1,1,3,1],[2,1,3,1,1,3],[2,1,3,3,1,1],[2,1,3,1,3,1],[3,1,1,1,2,3],[3,1,1,3,2,1],[3,3,1,1,2,1],[3,1,2,1,1,3],[3,1,2,3,1,1],[3,3,2,1,1,1],[3,1,4,1,1,1],[2,2,1,4,1,1],[4,3,1,1,1,1],[1,1,1,2,2,4],[1,1,1,4,2,2],[1,2,1,1,2,4],[1,2,1,4,2,1],[1,4,1,1,2,2],[1,4,1,2,2,1],[1,1,2,2,1,4],[1,1,2,4,1,2],[1,2,2,1,1,4],[1,2,2,4,1,1],[1,4,2,1,1,2],[1,4,2,2,1,1],[2,4,1,2,1,1],[2,2,1,1,1,4],[4,1,3,1,1,1],[2,4,1,1,1,2],[1,3,4,1,1,1],[1,1,1,2,4,2],[1,2,1,1,4,2],[1,2,1,2,4,1],[1,1,4,2,1,2],[1,2,4,1,1,2],[1,2,4,2,1,1],[4,1,1,2,1,2],[4,2,1,1,1,2],[4,2,1,2,1,1],[2,1,2,1,4,1],[2,1,4,1,2,1],[4,1,2,1,2,1],[1,1,1,1,4,3],[1,1,1,3,4,1],[1,3,1,1,4,1],[1,1,4,1,1,3],[1,1,4,3,1,1],[4,1,1,1,1,3],[4,1,1,3,1,1],[1,1,3,1,4,1],[1,1,4,1,3,1],[3,1,1,1,4,1],[4,1,1,1,3,1],[2,1,1,4,1,2],[2,1,1,2,1,4],[2,1,1,2,3,2],[2,3,3,1,1,1,2]]}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decodeCode=function(a){var b,c,d,e,f=[0,0,0,0,0,0],g=this,h=a,i=!g._row[h],j=0,k={error:Number.MAX_VALUE,code:-1,start:a,end:a};for(b=h;bb)return k.error=b,k.start=a-d,k.end=a,k;for(c=0;5>c;c++)f[c]=f[c+2];f[5]=0,f[6]=0,j--}else j++;f[j]=1,i=!i}return null},b.prototype._findStart=function(){var a,b,c,d,e,f,g=[0,0,0,0,0,0],h=this,i=h._nextSet(h._row),j=!1,k=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(a=i;ad;d++)g[d]=g[d+2];g[4]=0,g[5]=0,k--}else k++;g[k]=1,j=!j}return null},b.prototype._decode=function(){var a,b,c,d=this,e=d._findStart(),f=null,g=!1,h=[],i=0,j=0,k=[],l=[],m=!1;if(null===e)return null;switch(f={code:e.code,start:e.start,end:e.end},l.push(f),j=f.code,f.code){case d.START_CODE_A:a=d.CODE_A;break;case d.START_CODE_B:a=d.CODE_B;break;case d.START_CODE_C:a=d.CODE_C;break;default:return null}for(;!g;){if(b=m,m=!1,f=d._decodeCode(f.end),null!==f)switch(f.code!==d.STOP_CODE&&(k.push(f.code),i++,j+=i*f.code),l.push(f),a){case d.CODE_A:if(f.code<64)h.push(String.fromCharCode(32+f.code));else if(f.code<96)h.push(String.fromCharCode(f.code-64));else switch(f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_B;break;case d.CODE_B:a=d.CODE_B;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_B:if(f.code<96)h.push(String.fromCharCode(32+f.code));else switch(f.code!=d.STOP_CODE&&(c=!1),f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_A;break;case d.CODE_A:a=d.CODE_A;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_C:switch(f.code<100&&h.push(f.code<10?"0"+f.code:f.code),f.code){case d.CODE_A:a=d.CODE_A;break;case d.CODE_B:a=d.CODE_B;break;case d.STOP_CODE:g=!0}}else g=!0;b&&(a=a==d.CODE_A?d.CODE_B:d.CODE_A)}return null===f?null:(f.end=d._nextUnset(d._row,f.end),f.end===d._row.length?null:(j-=i*k[k.length-1],j%103!=k[k.length-1]?null:(h.splice(h.length-1,1),{code:h.join(""),start:e.start,end:f.end,codeset:a,startInfo:e,decodedCodes:l,endInfo:f})))},b}),d("ean_reader",["./barcode_reader"],function(a){function b(){a.call(this)}var c={CODE_L_START:{value:0},MODULO:{value:7},CODE_G_START:{value:10},START_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},STOP_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},MIDDLE_PATTERN:{value:[.2*7,.2*7,.2*7,.2*7,.2*7]},CODE_PATTERN:{value:[[3,2,1,1],[2,2,2,1],[2,1,2,2],[1,4,1,1],[1,1,3,2],[1,2,3,1],[1,1,1,4],[1,3,1,2],[1,2,1,3],[3,1,1,2],[1,1,2,3],[1,2,2,2],[2,2,1,2],[1,1,4,1],[2,3,1,1],[1,3,2,1],[4,1,1,1],[2,1,3,1],[3,1,2,1],[2,1,1,3]]},CODE_FREQUENCY:{value:[0,11,13,14,19,25,28,21,22,26]}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decodeCode=function(b,c){var d,e,f,g,h=[0,0,0,0],i=this,j=b,k=!i._row[j],l=0,m={error:Number.MAX_VALUE,code:-1,start:b,end:b};for(c||(c=i.CODE_PATTERN.length),d=j;de;e++)f=i._matchPattern(g,i.CODE_PATTERN[e]),fh)return o.error=h,o.start=g-j,o.end=g,o;if(!e)throw a.PatternNotFoundException;for(i=0;i=0&&c._matchRange(a,b.start,0))return b;d=b.end,b=null}},b.prototype._findEnd=function(a){var b,c=this,d=c._findPattern(c.STOP_PATTERN,a);return b=d.end+(d.end-d.start),bb;b++)d=c._decodeCode(d.end),d.code>=c.CODE_G_START?(d.code=d.code-c.CODE_G_START,f|=1<<5-b):f|=0<<5-b,e.push(d.code),g.push(d);for(b=0;bb;b++)d=c._decodeCode(d.end,c.CODE_G_START),g.push(d),e.push(d.code);if(d=c._findEnd(d.end),null===d)return null;if(g.push(d),!c._checksum(e))return null}catch(h){return null}return{code:e.join(""),start:a.start,end:d.end,codeset:"",startInfo:a,decodedCodes:g}},b.prototype._checksum=function(a){var b,c=0;for(b=a.length-2;b>=0;b-=2)c+=a[b];for(c*=3,b=a.length-1;b>=0;b-=2)c+=a[b];return c%10===0},b}),d("image_loader",[],function(){function a(a,b){a.onload=function(){b.loaded(this)}}var b={};return b.load=function(b,c,d,e,f){var g,h,i,j=new Array(e),k=new Array(j.length);if(f===!1)j[0]=b;else for(g=0;g0)for(d=0;d0)for(c=0;c1?e.size:f/g*e.size:f},d.getHeight=function(){return e.size?f/g>1?g/f*e.size:e.size:g},d.getRealWidth=function(){return f},d.getRealHeight=function(){return g},d.setInputStream=function(a){e=a,a.sequence===!1?(n=a.src,l=1):(n=a.src,l=a.length),b()},d.ended=function(){return o},d.setAttribute=function(){},d.getConfig=function(){return e},d.pause=function(){i=!0},d.play=function(){i=!1},d.setCurrentTime=function(a){h=a},d.addEventListener=function(a,b){-1!==p.indexOf(a)&&(q[a]||(q[a]=[]),q[a].push(b))},d.getFrame=function(){var a;return j?(i||(a=k[h],l-1>h?h++:setTimeout(function(){o=!0,c("ended",[])},0)),a):null},d},b}),glMatrixArrayType=Float32Array,"undefined"!=typeof window&&(window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}(),navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL),d("typedefs",function(a){return function(){var b;return b||a.typedefs}}(this)),d("subImage",["typedefs"],function(){function a(a,b,c){c||(c={data:null,size:b}),this.data=c.data,this.originalSize=c.size,this.I=c,this.from=a,this.size=b}return a.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,g=0;gb?!0:!1},getPoints:function(){return f},getCenter:function(){return g}}},createPoint:function(a,b,c){return{rad:a[c],point:a,id:b}}};return a});var e={};e.create=function(a){var b;return a?(b=new glMatrixArrayType(3),b[0]=a[0],b[1]=a[1],b[2]=a[2]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0]:3),b},e.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b},e.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c[2]=a[2]+b[2],c):(a[0]+=b[0],a[1]+=b[1],a[2]+=b[2],a)},e.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a)},e.negate=function(a,b){return b||(b=a),b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b},e.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a)},e.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=Math.sqrt(c*c+d*d+e*e);return f?1==f?(b[0]=c,b[1]=d,b[2]=e,b):(f=1/f,b[0]=c*f,b[1]=d*f,b[2]=e*f,b):(b[0]=0,b[1]=0,b[2]=0,b)},e.cross=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=b[0],h=b[1],i=b[2];return c[0]=e*i-f*h,c[1]=f*g-d*i,c[2]=d*h-e*g,c},e.length=function(a){var b=a[0],c=a[1],d=a[2];return Math.sqrt(b*b+c*c+d*d)},e.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]},e.direction=function(a,b,c){c||(c=a);var d=a[0]-b[0],e=a[1]-b[1],f=a[2]-b[2],g=Math.sqrt(d*d+e*e+f*f);return g?(g=1/g,c[0]=d*g,c[1]=e*g,c[2]=f*g,c):(c[0]=0,c[1]=0,c[2]=0,c)},e.lerp=function(a,b,c,d){return d||(d=a),d[0]=a[0]+c*(b[0]-a[0]),d[1]=a[1]+c*(b[1]-a[1]),d[2]=a[2]+c*(b[2]-a[2]),d},e.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var f={};f.create=function(a){var b;return a?(b=new glMatrixArrayType(9),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0]:9),b},f.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},f.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},f.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[5];return a[1]=a[3],a[2]=a[6],a[3]=c,a[5]=a[7],a[6]=d,a[7]=e,a}return b[0]=a[0],b[1]=a[3],b[2]=a[6],b[3]=a[1],b[4]=a[4],b[5]=a[7],b[6]=a[2],b[7]=a[5],b[8]=a[8],b},f.toMat4=function(a,b){return b||(b=g.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=0,b[4]=a[3],b[5]=a[4],b[6]=a[5],b[7]=0,b[8]=a[6],b[9]=a[7],b[10]=a[8],b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},f.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+"]"};var g={};g.create=function(a){var b;return a?(b=new glMatrixArrayType(16),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]:16),b},g.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15],b},g.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},g.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[3],f=a[6],g=a[7],h=a[11];return a[1]=a[4],a[2]=a[8],a[3]=a[12],a[4]=c,a[6]=a[9],a[7]=a[13],a[8]=d,a[9]=f,a[11]=a[14],a[12]=e,a[13]=g,a[14]=h,a}return b[0]=a[0],b[1]=a[4],b[2]=a[8],b[3]=a[12],b[4]=a[1],b[5]=a[5],b[6]=a[9],b[7]=a[13],b[8]=a[2],b[9]=a[6],b[10]=a[10],b[11]=a[14],b[12]=a[3],b[13]=a[7],b[14]=a[11],b[15]=a[15],b},g.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11],n=a[12],o=a[13],p=a[14],q=a[15];return n*k*h*e-j*o*h*e-n*g*l*e+f*o*l*e+j*g*p*e-f*k*p*e-n*k*d*i+j*o*d*i+n*c*l*i-b*o*l*i-j*c*p*i+b*k*p*i+n*g*d*m-f*o*d*m-n*c*h*m+b*o*h*m+f*c*p*m-b*g*p*m-j*g*d*q+f*k*d*q+j*c*h*q-b*k*h*q-f*c*l*q+b*g*l*q},g.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=a[9],m=a[10],n=a[11],o=a[12],p=a[13],q=a[14],r=a[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=1/(s*D-t*C+u*B+v*A-w*z+x*y);return b[0]=(h*D-i*C+j*B)*E,b[1]=(-d*D+e*C-f*B)*E,b[2]=(p*x-q*w+r*v)*E,b[3]=(-l*x+m*w-n*v)*E,b[4]=(-g*D+i*A-j*z)*E,b[5]=(c*D-e*A+f*z)*E,b[6]=(-o*x+q*u-r*t)*E,b[7]=(k*x-m*u+n*t)*E,b[8]=(g*C-h*A+j*y)*E,b[9]=(-c*C+d*A-f*y)*E,b[10]=(o*w-p*u+r*s)*E,b[11]=(-k*w+l*u-n*s)*E,b[12]=(-g*B+h*z-i*y)*E,b[13]=(c*B-d*z+e*y)*E,b[14]=(-o*v+p*t-q*s)*E,b[15]=(k*v-l*t+m*s)*E,b},g.toRotationMat=function(a,b){return b||(b=g.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},g.toMat3=function(a,b){return b||(b=f.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[4],b[4]=a[5],b[5]=a[6],b[6]=a[8],b[7]=a[9],b[8]=a[10],b},g.toInverseMat3=function(a,b){var c=a[0],d=a[1],e=a[2],g=a[4],h=a[5],i=a[6],j=a[8],k=a[9],l=a[10],m=l*h-i*k,n=-l*g+i*j,o=k*g-h*j,p=c*m+d*n+e*o;if(!p)return null;var q=1/p;return b||(b=f.create()),b[0]=m*q,b[1]=(-l*d+e*k)*q,b[2]=(i*d-e*h)*q,b[3]=n*q,b[4]=(l*c-e*j)*q,b[5]=(-i*c+e*g)*q,b[6]=o*q,b[7]=(-k*c+d*j)*q,b[8]=(h*c-d*g)*q,b},g.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=a[9],n=a[10],o=a[11],p=a[12],q=a[13],r=a[14],s=a[15],t=b[0],u=b[1],v=b[2],w=b[3],x=b[4],y=b[5],z=b[6],A=b[7],B=b[8],C=b[9],D=b[10],E=b[11],F=b[12],G=b[13],H=b[14],I=b[15];return c[0]=t*d+u*h+v*l+w*p,c[1]=t*e+u*i+v*m+w*q,c[2]=t*f+u*j+v*n+w*r,c[3]=t*g+u*k+v*o+w*s,c[4]=x*d+y*h+z*l+A*p,c[5]=x*e+y*i+z*m+A*q,c[6]=x*f+y*j+z*n+A*r,c[7]=x*g+y*k+z*o+A*s,c[8]=B*d+C*h+D*l+E*p,c[9]=B*e+C*i+D*m+E*q,c[10]=B*f+C*j+D*n+E*r,c[11]=B*g+C*k+D*o+E*s,c[12]=F*d+G*h+H*l+I*p,c[13]=F*e+G*i+H*m+I*q,c[14]=F*f+G*j+H*n+I*r,c[15]=F*g+G*k+H*o+I*s,c},g.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12],c[1]=a[1]*d+a[5]*e+a[9]*f+a[13],c[2]=a[2]*d+a[6]*e+a[10]*f+a[14],c},g.multiplyVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12]*g,c[1]=a[1]*d+a[5]*e+a[9]*f+a[13]*g,c[2]=a[2]*d+a[6]*e+a[10]*f+a[14]*g,c[3]=a[3]*d+a[7]*e+a[11]*f+a[15]*g,c},g.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2];if(!c||a==c)return a[12]=a[0]*d+a[4]*e+a[8]*f+a[12],a[13]=a[1]*d+a[5]*e+a[9]*f+a[13],a[14]=a[2]*d+a[6]*e+a[10]*f+a[14],a[15]=a[3]*d+a[7]*e+a[11]*f+a[15],a;var g=a[0],h=a[1],i=a[2],j=a[3],k=a[4],l=a[5],m=a[6],n=a[7],o=a[8],p=a[9],q=a[10],r=a[11];return c[0]=g,c[1]=h,c[2]=i,c[3]=j,c[4]=k,c[5]=l,c[6]=m,c[7]=n,c[8]=o,c[9]=p,c[10]=q,c[11]=r,c[12]=g*d+k*e+o*f+a[12],c[13]=h*d+l*e+p*f+a[13],c[14]=i*d+m*e+q*f+a[14],c[15]=j*d+n*e+r*f+a[15],c},g.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2];return c&&a!=c?(c[0]=a[0]*d,c[1]=a[1]*d,c[2]=a[2]*d,c[3]=a[3]*d,c[4]=a[4]*e,c[5]=a[5]*e,c[6]=a[6]*e,c[7]=a[7]*e,c[8]=a[8]*f,c[9]=a[9]*f,c[10]=a[10]*f,c[11]=a[11]*f,c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15],c):(a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=f,a[9]*=f,a[10]*=f,a[11]*=f,a)},g.rotate=function(a,b,c,d){var e=c[0],f=c[1],g=c[2],h=Math.sqrt(e*e+f*f+g*g);if(!h)return null;1!=h&&(h=1/h,e*=h,f*=h,g*=h);var i=Math.sin(b),j=Math.cos(b),k=1-j,l=a[0],m=a[1],n=a[2],o=a[3],p=a[4],q=a[5],r=a[6],s=a[7],t=a[8],u=a[9],v=a[10],w=a[11],x=e*e*k+j,y=f*e*k+g*i,z=g*e*k-f*i,A=e*f*k-g*i,B=f*f*k+j,C=g*f*k+e*i,D=e*g*k+f*i,E=f*g*k-e*i,F=g*g*k+j;return d?a!=d&&(d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]):d=a,d[0]=l*x+p*y+t*z,d[1]=m*x+q*y+u*z,d[2]=n*x+r*y+v*z,d[3]=o*x+s*y+w*z,d[4]=l*A+p*B+t*C,d[5]=m*A+q*B+u*C,d[6]=n*A+r*B+v*C,d[7]=o*A+s*B+w*C,d[8]=l*D+p*E+t*F,d[9]=m*D+q*E+u*F,d[10]=n*D+r*E+v*F,d[11]=o*D+s*E+w*F,d},g.rotateX=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[4]=f*e+j*d,c[5]=g*e+k*d,c[6]=h*e+l*d,c[7]=i*e+m*d,c[8]=f*-d+j*e,c[9]=g*-d+k*e,c[10]=h*-d+l*e,c[11]=i*-d+m*e,c},g.rotateY=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[4]=a[4],c[5]=a[5],c[6]=a[6],c[7]=a[7],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*-d,c[1]=g*e+k*-d,c[2]=h*e+l*-d,c[3]=i*e+m*-d,c[8]=f*d+j*e,c[9]=g*d+k*e,c[10]=h*d+l*e,c[11]=i*d+m*e,c},g.rotateZ=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[4],k=a[5],l=a[6],m=a[7];return c?a!=c&&(c[8]=a[8],c[9]=a[9],c[10]=a[10],c[11]=a[11],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*d,c[1]=g*e+k*d,c[2]=h*e+l*d,c[3]=i*e+m*d,c[4]=f*-d+j*e,c[5]=g*-d+k*e,c[6]=h*-d+l*e,c[7]=i*-d+m*e,c},g.frustum=function(a,b,c,d,e,f,h){h||(h=g.create());var i=b-a,j=d-c,k=f-e;return h[0]=2*e/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2*e/j,h[6]=0,h[7]=0,h[8]=(b+a)/i,h[9]=(d+c)/j,h[10]=-(f+e)/k,h[11]=-1,h[12]=0,h[13]=0,h[14]=-(f*e*2)/k,h[15]=0,h},g.perspective=function(a,b,c,d,e){var f=c*Math.tan(a*Math.PI/360),h=f*b;return g.frustum(-h,h,-f,f,c,d,e)},g.ortho=function(a,b,c,d,e,f,h){h||(h=g.create());var i=b-a,j=d-c,k=f-e;return h[0]=2/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2/j,h[6]=0,h[7]=0,h[8]=0,h[9]=0,h[10]=-2/k,h[11]=0,h[12]=-(a+b)/i,h[13]=-(d+c)/j,h[14]=-(f+e)/k,h[15]=1,h},g.lookAt=function(a,b,c,d){d||(d=g.create());var e=a[0],f=a[1],h=a[2],i=c[0],j=c[1],k=c[2],l=b[0],m=b[1],n=b[2];if(e==l&&f==m&&h==n)return g.identity(d);var o,p,q,r,s,t,u,v,w,x;return o=e-b[0],p=f-b[1],q=h-b[2],x=1/Math.sqrt(o*o+p*p+q*q),o*=x,p*=x,q*=x,r=j*q-k*p,s=k*o-i*q,t=i*p-j*o,x=Math.sqrt(r*r+s*s+t*t),x?(x=1/x,r*=x,s*=x,t*=x):(r=0,s=0,t=0),u=p*t-q*s,v=q*r-o*t,w=o*s-p*r,x=Math.sqrt(u*u+v*v+w*w),x?(x=1/x,u*=x,v*=x,w*=x):(u=0,v=0,w=0),d[0]=r,d[1]=u,d[2]=o,d[3]=0,d[4]=s,d[5]=v,d[6]=p,d[7]=0,d[8]=t,d[9]=w,d[10]=q,d[11]=0,d[12]=-(r*e+s*f+t*h),d[13]=-(u*e+v*f+w*h),d[14]=-(o*e+p*f+q*h),d[15]=1,d},g.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+",\n "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+",\n "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+",\n "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"},quat4={},quat4.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},quat4.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},quat4.calculateW=function(a,b){var c=a[0],d=a[1],e=a[2];return b&&a!=b?(b[0]=c,b[1]=d,b[2]=e,b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),b):(a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),a)},quat4.inverse=function(a,b){return b&&a!=b?(b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b[3]=a[3],b):(a[0]*=-1,a[1]*=-1,a[2]*=-1,a)},quat4.length=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return Math.sqrt(b*b+c*c+d*d+e*e)},quat4.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=Math.sqrt(c*c+d*d+e*e+f*f);return 0==g?(b[0]=0,b[1]=0,b[2]=0,b[3]=0,b):(g=1/g,b[0]=c*g,b[1]=d*g,b[2]=e*g,b[3]=f*g,b)},quat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=b[0],i=b[1],j=b[2],k=b[3];return c[0]=d*k+g*h+e*j-f*i,c[1]=e*k+g*i+f*h-d*j,c[2]=f*k+g*j+d*i-e*h,c[3]=g*k-d*h-e*i-f*j,c},quat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=a[0],h=a[1],i=a[2],j=a[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return c[0]=k*j+n*-g+l*-i-m*-h,c[1]=l*j+n*-h+m*-g-k*-i,c[2]=m*j+n*-i+k*-h-l*-g,c},quat4.toMat3=function(a,b){b||(b=f.create());var c=a[0],d=a[1],e=a[2],g=a[3],h=c+c,i=d+d,j=e+e,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=e*j,q=g*h,r=g*i,s=g*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=l+s,b[4]=1-(k+p),b[5]=o-q,b[6]=m-r,b[7]=o+q,b[8]=1-(k+n),b},quat4.toMat4=function(a,b){b||(b=g.create());var c=a[0],d=a[1],e=a[2],f=a[3],h=c+c,i=d+d,j=e+e,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=e*j,q=f*h,r=f*i,s=f*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=0,b[4]=l+s,b[5]=1-(k+p),b[6]=o-q,b[7]=0,b[8]=m-r,b[9]=o+q,b[10]=1-(k+n),b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},quat4.slerp=function(a,b,c,d){d||(d=a);var e=a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];if(Math.abs(e)>=1)return d!=a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]),d;var f=Math.acos(e),g=Math.sqrt(1-e*e);if(Math.abs(g)<.001)return d[0]=.5*a[0]+.5*b[0],d[1]=.5*a[1]+.5*b[1],d[2]=.5*a[2]+.5*b[2],d[3]=.5*a[3]+.5*b[3],d;var h=Math.sin((1-c)*f)/g,i=Math.sin(c*f)/g;return d[0]=a[0]*h+b[0]*i,d[1]=a[1]*h+b[1]*i,d[2]=a[2]*h+b[2]*i,d[3]=a[3]*h+b[3]*i,d},quat4.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"},d("glMatrix",["typedefs"],function(a){return function(){var b;return b||a.glMatrix}}(this)),g.xVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g,c[1]=a[4]*d+a[5]*e+a[6]*f+a[7]*g,c[2]=a[8]*d+a[9]*e+a[10]*f+a[11]*g,c[3]=a[12]*d+a[13]*e+a[14]*f+a[15]*g,c},f.scale=function(a,b,c){return c&&a!=c?(c=f.create(),c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c[6]=a[6]*b,c[7]=a[7]*b,c[8]=a[8]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a[6]*=b,a[7]*=b,a[8]*=b,a)},f.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=1/(c*g*k+d*h*i+e*f*j-e*g*i-d*f*k-c*h*j);return b[0]=(g*k-h*j)*l,b[1]=(e*j-d*k)*l,b[2]=(d*h-e*g)*l,b[3]=(h*i-f*k)*l,b[4]=(c*k-e*i)*l,b[5]=(e*f-c*h)*l,b[6]=(f*j-g*i)*l,b[7]=(d*i-c*j)*l,b[8]=(c*g-d*f)*l,b},f.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=b[0],n=b[1],o=b[2],p=b[3],q=b[4],r=b[5],s=b[6],t=b[7],u=b[8];return c[0]=d*m+e*p+f*s,c[1]=d*n+e*q+f*t,c[2]=d*o+e*r+f*u,c[3]=g*m+h*p+i*s,c[4]=g*n+h*q+i*t,c[5]=g*o+h*r+i*u,c[6]=j*m+k*p+l*s,c[7]=j*n+k*q+l*t,c[8]=j*o+k*r+l*u,c},f.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c};var h={};h.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},h.project=function(a,b){return b||(b=a),b[0]=a[0]/a[3],b[1]=a[1]/a[3],b[2]=a[2]/a[3],b},h.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[4]*=b,a)},h.xMat4=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3];return c[0]=b[0]*d+b[4]*e+b[8]*f+b[12]*g,c[1]=b[1]*d+b[5]*e+b[9]*f+b[13]*g,c[2]=b[2]*d+b[6]*e+b[10]*f+b[14]*g,c[3]=b[3]*d+b[7]*e+b[11]*f+b[15]*g,c};var i={};i.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},i.xVec2=function(a,b,c){c||(c=b);var d=b[0],e=b[1];return c[0]=a[0]*d+a[1]*e,c[1]=a[2]*d+a[3]*e,c},i.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a)},i.determinant=function(a){return a[0]*a[3]-a[1]*a[2]},i.inverse=function(a){var b=1/i.determinant(a),c=a[3]*b,d=-a[1]*b,e=-a[2]*b,f=a[0];return a[0]=c,a[1]=d,a[2]=e,a[3]=f,a};var j={};j.create=function(a){var b;return a?(b=new glMatrixArrayType(2),b[0]=a[0],b[1]=a[1]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0]:2),b},j.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c):(a[0]-=b[0],a[1]-=b[1],a) -},j.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c):(a[0]+=b[0],a[1]+=b[1],a)},j.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c):(a[0]*=b,a[1]*=b,a)},j.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=Math.sqrt(c*c+d*d);return e?1==e?(b[0]=c,b[1]=d,b):(e=1/e,b[0]=c*e,b[1]=d*e,b):(b[0]=0,b[1]=0,b)},j.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},j.multiply=function(a,b,c){return c||(c=a),c[0]=a[0]*b[0],c[1]=a[1]*b[1],c},j.unproject=function(a){return e.create([a[0],a[1],1])},j.length=function(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])},j.perspectiveProject=function(a){var b=j.create(a);return j.scale(b,1/a[2])},e.project=function(a){return j.scale(j.create(a),1/a[2])};var k={};k.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a)},k.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c[3]=a[3]-b[3],c[4]=a[4]-b[4],c[5]=a[5]-b[5],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a[3]-=b[3],a[4]-=b[4],a[5]-=b[5],a)},k.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]+a[4]*b[4]+a[5]*b[5]};var l={};return l.xVec6=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g+a[4]*h+a[5]*i,c[1]=a[6]*d+a[7]*e+a[8]*f+a[9]*g+a[10]*h+a[11]*i,c[2]=a[12]*d+a[13]*e+a[14]*f+a[15]*g+a[16]*h+a[17]*i,c[3]=a[18]*d+a[19]*e+a[20]*f+a[21]*g+a[22]*h+a[23]*i,c[4]=a[24]*d+a[25]*e+a[26]*f+a[27]*g+a[28]*h+a[29]*i,c[5]=a[30]*d+a[31]*e+a[32]*f+a[33]*g+a[34]*h+a[35]*i,c},f.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c},d("glMatrixAddon",["glMatrix"],function(a){return function(){var b;return b||a.glMatrixAddon}}(this)),d("array_helper",[],function(){return{init:function(a,b){for(var c=a.length;c--;)a[c]=b},shuffle:function(a){var b,c,d=a.length-1;for(d;d>=0;d--)b=Math.floor(Math.random()*d),c=a[d],a[d]=a[b],a[b]=c;return a},toPointList:function(a){var b,c,d=[],e=[];for(b=0;b=b&&e.push(a[d]);return e},maxIndex:function(a){var b,c=0;for(b=0;ba[c]&&(c=b);return c},max:function(a){var b,c=0;for(b=0;bc&&(c=a[b]);return c},sum:function(a){for(var b=a.length,c=0;b--;)c+=a[b];return c}}}),d("cv_utils",["cluster","glMatrixAddon","array_helper"],function(a,b,c){var d={};return d.imageRef=function(a,b){var c={x:a,y:b,toVec2:function(){return j.create([this.x,this.y])},toVec3:function(){return e.create([this.x,this.y,1])},round:function(){return this.x=Math.floor(this.x>0?this.x+.5:this.x-.5),this.y=Math.floor(this.y>0?this.y+.5:this.y-.5),this}};return c},d.computeIntegralImage2=function(a,b){var c,d,e=a.data,f=a.size.x,g=a.size.y,h=b.data,i=0,j=0,k=0,l=0,m=0;for(k=f,i=0,d=1;g>d;d++)i+=e[j],h[k]+=i,j+=f,k+=f;for(j=0,k=1,i=0,c=1;f>c;c++)i+=e[j],h[k]+=i,j++,k++;for(d=1;g>d;d++)for(j=d*f+1,k=(d-1)*f+1,l=d*f,m=(d-1)*f,c=1;f>c;c++)h[j]+=e[j]+h[k]+h[l]-h[m],j++,k++,l++,m++},d.computeIntegralImage=function(a,b){for(var c=a.data,d=a.size.x,e=a.size.y,f=b.data,g=0,h=0;d>h;h++)g+=c[h],f[h]=g;for(var i=1;e>i;i++){g=0;for(var j=0;d>j;j++)g+=c[i*d+j],f[i*d+j]=g+f[(i-1)*d+j]}},d.thresholdImage=function(a,b,c){c||(c=a);for(var d=a.data,e=d.length,f=c.data;e--;)f[e]=d[e]b;b++)e[b]=0;for(;d--;)e[c[d]]++;return e},d.otsuThreshold=function(a,b){function e(a,b){var c,d=0;for(c=a;b>=c;c++)d+=h[c];return d}function f(a,b){var c,d=0;for(c=a;b>=c;c++)d+=c*h[c];return d}function g(){var b,g,i,j,k,l,m,n=[0];for(h=d.computeHistogram(a),j=1;255>j;j++)b=e(0,j),g=e(j+1,255),i=b*g,0===i&&(i=1),k=f(0,j)*g,l=f(j+1,255)*b,m=k-l,n[j]=m*m/i;return c.maxIndex(n)}var h,i;return i=g(),d.thresholdImage(a,i,b),i},d.computeBinaryImage=function(a,b,c){d.computeIntegralImage(a,b),c||(c=a);var e,f,g,h,i,j,k,l=a.data,m=c.data,n=a.size.x,o=a.size.y,p=b.data,q=0,r=3,s=(2*r+1)*(2*r+1);for(e=0;r>=e;e++)for(f=0;n>f;f++)m[e*n+f]=0,m[(o-1-e)*n+f]=0;for(e=r;o-r>e;e++)for(f=0;r>=f;f++)m[e*n+f]=0,m[e*n+(n-1-f)]=0;for(e=r+1;o-r-1>e;e++)for(f=r+1;n-r>f;f++)g=p[(e-r-1)*n+(f-r-1)],h=p[(e-r-1)*n+(f+r)],i=p[(e+r)*n+(f-r-1)],j=p[(e+r)*n+(f+r)],q=j-i-h+g,k=q/s,m[e*n+f]=l[e*n+f]>k+5?0:1},d.cluster=function(b,c,d){function e(a){var b=!1;for(g=0;gb.x-j&&a.xb.y-k&&a.yd;d++){for(h=Math.floor(Math.random()*a.length),f=[],i=h,f.push(a[i]);null!==(i=c(i,!0));)f.push(a[i]);if(h>0)for(i=h;null!==(i=c(i,!1));)f.push(a[i]);f.length>g.length&&(g=f)}return g}},d.DILATE=1,d.ERODE=2,d.dilate=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=e>0?1:0},d.erode=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=5===e?1:0},d.subtract=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]-f[d]},d.bitwiseOr=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]||f[d]},d.countNonZero=function(a){for(var b=a.data.length,c=a.data,d=0;b--;)d+=c[b];return d},d.topGeneric=function(a,b,c){var d,e,f,g,h=0,i=0,j=[];for(d=0;b>d;d++)j[d]={score:0,item:null};for(d=0;di)for(f=j[h],f.score=e,f.item=a[d],i=Number.MAX_VALUE,g=0;b>g;g++)j[g].scoref;){for(d=0;h>d;d++)c[i]=Math.floor((.299*a[4*e+0]+.587*a[4*e+1]+.114*a[4*e+2]+(.299*a[4*(e+1)+0]+.587*a[4*(e+1)+1]+.114*a[4*(e+1)+2])+(.299*a[4*f+0]+.587*a[4*f+1]+.114*a[4*f+2])+(.299*a[4*(f+1)+0]+.587*a[4*(f+1)+1]+.114*a[4*(f+1)+2]))/4),i++,e+=2,f+=2;e+=j,f+=j}},d.computeGray=function(a,b){var c=a.length/4,d=0;for(d=0;c>d;d++)b[d]=Math.floor(.299*a[4*d+0]+.587*a[4*d+1]+.114*a[4*d+2])},d.loadImageArray=function(a,b,c){c||(c=document.createElement("canvas"));var e=new Image;e.callback=b,e.onload=function(){c.width=this.width,c.height=this.height;var a=c.getContext("2d");a.drawImage(this,0,0);var b=new Uint8Array(this.width*this.height);a.drawImage(this,0,0);var e=a.getImageData(0,0,this.width,this.height).data;d.computeGray(e,b),this.callback(b,{x:this.width,y:this.height},this)},e.src=a},d.halfSample=function(a,b){for(var c=a.data,d=a.size.x,e=b.data,f=0,g=d,h=c.length,i=d/2,j=0;h>g;){for(var k=0;i>k;k++)e[j]=Math.floor((c[f]+c[f+1]+c[g]+c[g+1])/4),j++,f+=2,g+=2;f+=d,g+=d}},d.hsv2rgb=function(a,b){var c=a[0],d=a[1],e=a[2],f=e*d,g=f*(1-Math.abs(c/60%2-1)),h=e-f,i=0,j=0,k=0;return b=b||[0,0,0],60>c?(i=f,j=g):120>c?(i=g,j=f):180>c?(j=f,k=g):240>c?(j=g,k=f):300>c?(i=g,k=f):360>c&&(i=f,k=g),b[0]=255*(i+h)|0,b[1]=255*(j+h)|0,b[2]=255*(k+h)|0,b},d._computeDivisors=function(a){var b,c=[],d=[];for(b=1;bb[d]?d++:c++;return e},d.calculatePatchSize=function(a,b){for(var c=this._computeDivisors(b.x),d=this._computeDivisors(b.y),e=Math.max(b.x,b.y),f=this._computeIntersection(c,d),g={"x-small":60,small:32,medium:20,large:15,"x-large":10},h=g[a]||g.medium,i=0,j=f[Math.floor(f.length/2)],k=e/h;i0&&(j=Math.abs(f[i]-k)>Math.abs(f[i-1]-k)?f[i-1]:f[i]),{x:j,y:j}},d}),d("image_wrapper",["subImage","cv_utils","array_helper"],function(a,b,c){function d(a,b,d,e){b?this.data=b:d?(this.data=new d(a.x*a.y),d===Array&&e&&c.init(this.data,0)):(this.data=new Uint8Array(a.x*a.y),Uint8Array===Array&&e&&c.init(this.data,0)),this.size=a}return d.prototype.inImageWithBorder=function(a,b){return a.x>=b&&a.y>=b&&a.x=0&&u>=0&&n-1>v&&o-1>w){for(g=s,h=0;m>h;++h,j.add(g,y))for(k=0;l>k;++k,j.add(g,p))b.set(k,h,x(a,g[0],g[1]));return 0}var z=n-1,A=o-1,B=0;for(g=s,h=0;m>h;++h,j.add(g,y))for(k=0;l>k;++k,j.add(g,p))0<=g[0]&&0<=g[1]&&g[0]c;c++)for(d=0;e>d;d++)a.data[d*f+c]=this.data[(b.y+d)*this.size.x+b.x+c]},d.prototype.copyTo=function(a){for(var b=this.data.length,c=this.data,d=a.data;b--;)d[b]=c[b]},d.prototype.get=function(a,b){return this.data[b*this.size.x+a]},d.prototype.getSafe=function(a,b){var c;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},c=0;ca;a++)d[a]=d[(c-1)*b+a]=0;for(a=1;c-1>a;a++)d[a*b]=d[a*b+(b-1)]=0},d.prototype.invert=function(){for(var a=this.data,b=a.length;b--;)a[b]=a[b]?0:1},d.prototype.convolve=function(a){var b,c,d,e,f=a.length/2|0,g=0;for(c=0;c=e;e++)for(d=-f;f>=d;d++)g+=a[e+f][d+f]*this.getSafe(b+d,c+e);this.data[c*this.size.x+b]=g}},d.prototype.moments=function(a){var b,c,d,e,f,g,h,i,k,l,m,n,o=this.data,p=this.size.y,q=this.size.x,r=[],s=[],t=Math.PI,u=t/4;if(0>=a)return s;for(f=0;a>f;f++)r[f]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(c=0;p>c;c++)for(e=c*c,b=0;q>b;b++)d=o[c*q+b],d>0&&(g=r[d-1],g.m00+=1,g.m01+=c,g.m10+=b,g.m11+=b*c,g.m02+=e,g.m20+=b*b);for(f=0;a>f;f++)g=r[f],isNaN(g.m00)||0===g.m00||(l=g.m10/g.m00,m=g.m01/g.m00,h=g.m11/g.m00-l*m,i=g.m02/g.m00-m*m,k=g.m20/g.m00-l*l,n=(i-k)/(2*h),n=.5*Math.atan(n)+(h>=0?u:-u)+t,g.theta=(180*n/t+90)%180-90,g.theta<0&&(g.theta+=180),g.rad=n>t?n-t:n,g.vec=j.create([Math.cos(n),Math.sin(n)]),s.push(g));return s},d.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,i=0;ic||c>360)&&(c=360);for(var e=[0,1,1],f=[0,0,0],g=[255,255,255],h=[0,0,0],i=[],j=a.getContext("2d"),k=j.getImageData(d.x,d.y,this.size.x,this.size.y),l=k.data,m=this.data.length;m--;)e[0]=this.data[m]*c,i=e[0]<=0?g:e[0]>=360?h:b.hsv2rgb(e,f),l[4*m+0]=i[0],l[4*m+1]=i[1],l[4*m+2]=i[2],l[4*m+3]=255;j.putImageData(k,d.x,d.y)},d}),d("tracer",[],function(){var a={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(a,b){function c(a,b,c,d){var e,k,l;for(e=0;7>e;e++){if(k=a.cy+i[a.dir][0],l=a.cx+i[a.dir][1],f=k*j+l,g[f]===b&&(0===h[f]||h[f]===c))return h[f]=c,a.cy=k,a.cx=l,!0;0===h[f]&&(h[f]=d),a.dir=(a.dir+1)%8}return!1}function d(a,b,c){return{dir:c,x:a,y:b,next:null,prev:null}}function e(a,b,e,f,g){var h,i,j,k=null,l={cx:b,cy:a,dir:0};if(c(l,f,e,g)){k=d(b,a,l.dir),h=k,j=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i;do l.dir=(l.dir+6)%8,c(l,f,e,g),j!=l.dir?(h.dir=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i):(h.dir=j,h.x=l.cx,h.y=l.cy),j=l.dir;while(l.cx!=b||l.cy!=a);k.prev=h.prev,h.prev.next=k}return k}var f,g=a.data,h=b.data,i=this.searchDirections,j=a.size.x;return{trace:function(a,b,d,e){return c(a,b,d,e)},contourTracing:function(a,b,c,d,f){return e(a,b,c,d,f)}}}};return a}),d("rasterizer",["tracer"],function(a){var b={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(c,d){var e=c.data,f=d.data,g=c.size.x,h=c.size.y,i=a.create(c,d);return{rasterize:function(a){var c,d,j,k,l,m,n,o,p,q,r,s,t=[],u=0;for(s=0;400>s;s++)t[s]=0;for(t[0]=e[0],p=null,m=1;h-1>m;m++)for(k=0,d=t[0],l=1;g-1>l;l++)if(r=m*g+l,0===f[r])if(c=e[r],c!==d){if(0===k)j=u+1,t[j]=c,d=c,n=i.contourTracing(m,l,j,c,b.DIR.OUTSIDE_EDGE),null!==n&&(u++,k=j,o=b.createContour2D(),o.dir=b.CONTOUR_DIR.CW_DIR,o.index=k,o.firstVertex=n,o.nextpeer=p,o.insideContours=null,null!==p&&(p.prevpeer=o),p=o);else if(n=i.contourTracing(m,l,b.DIR.INSIDE_EDGE,c,k),null!==n){for(o=b.createContour2D(),o.firstVertex=n,o.insideContours=null,o.dir=0===a?b.CONTOUR_DIR.CCW_DIR:b.CONTOUR_DIR.CW_DIR,o.index=a,q=p;null!==q&&q.index!==k;)q=q.nextpeer;null!==q&&(o.nextpeer=q.insideContours,null!==q.insideContours&&(q.insideContours.prevpeer=o),q.insideContours=o)}}else f[r]=k;else f[r]===b.DIR.OUTSIDE_EDGE||f[r]===b.DIR.INSIDE_EDGE?(k=0,d=f[r]===b.DIR.INSIDE_EDGE?e[r]:t[0]):(k=f[r],d=t[k]);for(q=p;null!==q;)q.index=a,q=q.nextpeer;return{cc:p,count:u}},debug:{drawContour:function(a,c){var d,e,f,g=a.getContext("2d"),h=c;for(g.strokeStyle="red",g.fillStyle="red",g.lineWidth=1,d=null!==h?h.insideContours:null;null!==h;){switch(null!==d?(e=d,d=d.nextpeer):(e=h,h=h.nextpeer,d=null!==h?h.insideContours:null),e.dir){case b.CONTOUR_DIR.CW_DIR:g.strokeStyle="red";break;case b.CONTOUR_DIR.CCW_DIR:g.strokeStyle="blue";break;case b.CONTOUR_DIR.UNKNOWN_DIR:g.strokeStyle="green"}f=e.firstVertex,g.beginPath(),g.moveTo(f.x,f.y);do f=f.next,g.lineTo(f.x,f.y);while(f!==e.firstVertex);g.stroke()}}}}}};return b}),d("skeletonizer",[],function(){function a(stdlib, foreign, buffer) {"use asm";var images=new stdlib.Uint8Array(buffer),size=foreign.size|0,imul=stdlib.Math.imul;function erode(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for ( v=1; (v|0)<((size - 1)|0); v=(v+1)|0) {offset=(offset+size)|0;for ( u=1; (u|0)<((size - 1)|0); u=(u+1)|0) {yStart1=(offset - size)|0;yStart2=(offset+size)|0;xStart1=(u - 1)|0;xStart2=(u+1)|0;sum=((images[(inImagePtr+yStart1+xStart1)|0]|0)+(images[(inImagePtr+yStart1+xStart2)|0]|0)+(images[(inImagePtr+offset+u)|0]|0)+(images[(inImagePtr+yStart2+xStart1)|0]|0)+(images[(inImagePtr+yStart2+xStart2)|0]|0))|0;if ((sum|0) == (5|0)) {images[(outImagePtr+offset+u)|0]=1;} else {images[(outImagePtr+offset+u)|0]=0;}}}return;}function subtract(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(outImagePtr+length)|0]=((images[(aImagePtr+length)|0]|0) - (images[(bImagePtr+length)|0]|0))|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(outImagePtr+length)|0]=((images[(aImagePtr+length)|0]|0)|(images[(bImagePtr+length)|0]|0))|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;sum=((sum|0)+(images[(imagePtr+length)|0]|0))|0;}return (sum|0);}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(imagePtr+length)|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for ( v=1; (v|0)<((size - 1)|0); v=(v+1)|0) {offset=(offset+size)|0;for ( u=1; (u|0)<((size - 1)|0); u=(u+1)|0) {yStart1=(offset - size)|0;yStart2=(offset+size)|0;xStart1=(u - 1)|0;xStart2=(u+1)|0;sum=((images[(inImagePtr+yStart1+xStart1)|0]|0)+(images[(inImagePtr+yStart1+xStart2)|0]|0)+(images[(inImagePtr+offset+u)|0]|0)+(images[(inImagePtr+yStart2+xStart1)|0]|0)+(images[(inImagePtr+yStart2+xStart2)|0]|0))|0;if ((sum|0)>(0|0)) {images[(outImagePtr+offset+u)|0]=1;} else {images[(outImagePtr+offset+u)|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(dstImagePtr+length)|0]=(images[(srcImagePtr+length)|0]|0);}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for ( x=0; (x|0)<((size - 1)|0); x=(x+1)|0) {images[(imagePtr+x)|0]=0;images[(imagePtr+y)|0]=0;y=((y+size) - 1)|0;images[(imagePtr+y)|0]=0;y=(y+1)|0;}for ( x=0; (x|0)<(size|0); x=(x+1)|0) {images[(imagePtr+y)|0]=0;y=(y+1)|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=(erodedImagePtr+erodedImagePtr)|0;skelImagePtr=(tempImagePtr+erodedImagePtr)|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=((sum|0) == 0|0);} while(!done);}return {skeletonize : skeletonize};} -return a}),d("image_debug",[],function(){return{drawRect:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=1,c.beginPath(),c.strokeRect(a.x,a.y,b.x,b.y)},drawPath:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=d.lineWidth,c.beginPath(),c.moveTo(a[0][b.x],a[0][b.y]);for(var e=1;eb&&(b+=180),b=(180-b)*Math.PI/180,f=i.create([Math.cos(b),-Math.sin(b),Math.sin(b),Math.cos(b)]),c=0;cd;d++)i.xVec2(f,e.box[d]);u.boxFromPatches.showTransformed&&g.drawPath(e.box,{x:0,y:1},G.ctx.binary,{color:"#99ff00",lineWidth:2})}for(c=0;cd;d++)e.box[d][0]n&&(n=e.box[d][0]),e.box[d][1]o&&(o=e.box[d][1]);for(h=[[l,m],[n,m],[n,o],[l,o]],u.boxFromPatches.showTransformedBox&&g.drawPath(h,{x:0,y:1},G.ctx.binary,{color:"#ff0000",lineWidth:2}),k=u.halfSample?2:1,f=i.inverse(f),d=0;4>d;d++)i.xVec2(f,h[d]);for(u.boxFromPatches.showBB&&g.drawPath(h,{x:0,y:1},G.ctx.binary,{color:"#ff0000",lineWidth:2}),d=0;4>d;d++)j.scale(h[d],k);return h}function m(){b.otsuThreshold(v,C),C.zeroBorder(),u.showCanvas&&C.show(G.dom.binary,255)}function n(){var a,b,d,e,h,i,j,k,l=[];for(a=0;ab;b++)d.push(0);for(c=A.data.length;c--;)A.data[c]>0&&d[A.data[c]-1]++;return d=d.map(function(a,b){return{val:a,label:b+1}}),d.sort(function(a,b){return b.val-a.val}),e=d.filter(function(a){return a.val>=5})}function p(a,c){var d,e,f,h,i,j=[],k=[],m=[0,1,1],n=[0,0,0];for(d=0;d=2){for(e=0;e6&&k.push(a[e]);if(k.length>=2){for(i=k.length,g=q(k),f=0,e=0;e1&&g.length>=k.length/4*3&&g.length>a.length/4&&(f/=g.length,h={index:b[1]*H.x+b[0],pos:{x:c,y:d},box:[j.create([c,d]),j.create([c+x.size.x,d]),j.create([c+x.size.x,d+x.size.y]),j.create([c,d+x.size.y])],moments:g,rad:f,vec:j.create([Math.cos(f),Math.sin(f)])},l.push(h))}}return l}function t(a){function c(){var a;for(a=0;al&&e(h))):A.data[h]=Number.MAX_VALUE}var h,i,k=0,l=.95,m=0,n=[0,1,1],o=[0,0,0];for(f.init(z.data,0),f.init(A.data,0),f.init(B.data,null),h=0;h0&&A.data[h]<=k&&(i=B.data[h],n[0]=A.data[h]/(k+1)*360,b.hsv2rgb(n,o),g.drawRect(i.pos,x.size,G.ctx.binary,{color:"rgb("+o.join(",")+")",lineWidth:2}));return k}var u,v,w,x,y,z,A,B,C,D,E,F,G={ctx:{binary:null},dom:{binary:null}},H={x:0,y:0},I=this;return{init:function(a,b){u=b,E=a,h(),k()},locate:function(){var a,c=[],d=[];if(u.halfSample&&b.halfSample(E,v),m(),a=n(),a.lengthe?null:(c=o(e),0===c.length?null:d=p(c,e))}}}),d("bresenham",[],function(){var a={},b={DIR:{UP:1,DOWN:-1}};return a.getBarcodeLine=function(a,b,c){function d(a,b){l=s[b*t+a],u+=l,v=v>l?l:v,w=l>w?l:w,r.push(l)}var e,f,g,h,i,j,k,l,m=0|b.x,n=0|b.y,o=0|c.x,p=0|c.y,q=Math.abs(p-n)>Math.abs(o-m),r=[],s=a.data,t=a.size.x,u=0,v=255,w=0;for(q&&(j=m,m=n,n=j,j=o,o=p,p=j),m>o&&(j=m,m=o,o=j,j=n,n=p,p=j),e=o-m,f=Math.abs(p-n),g=e/2|0,i=n,h=p>n?1:-1,k=m;o>k;k++)q?d(i,k):d(k,i),g-=f,0>g&&(i+=h,g+=e);return{line:r,min:v,max:w}},a.toBinaryLine=function(a){var c,d,e,f,g,h=a.min,i=a.max,j=a.line,k=h+(i-h)/2,l=[],m=(i-h)/12,n=-m;for(d=j[0]>k?b.DIR.UP:b.DIR.DOWN,l.push({pos:0,val:j[0]}),f=0;fc&&j[f+1]<1.5*k?b.DIR.DOWN:c>m&&j[f+1]>.5*k?b.DIR.UP:d,d!==e&&(l.push({pos:f,val:j[f]}),d=e);for(l.push({pos:j.length,val:j[j.length-1]}),g=l[0].pos;gk?0:1;for(f=1;fl[f].val?l[f].val+(l[f+1].val-l[f].val)/2|0:l[f+1].val+(l[f].val-l[f+1].val)/2|0,g=l[f].pos;gm?0:1;return{line:j,threshold:m}},a.debug={printFrequency:function(a,b){var c,d=b.getContext("2d");for(b.width=a.length,b.height=256,d.beginPath(),d.strokeStyle="blue",c=0;cd;d++)if(e._row[d]^h)c[i]++;else{if(i++,i===f)break;c[i]=1,h=!h}return c},c.prototype._decode=function(){var a,c,d,e,f=this,g=[0,0,0,0,0,0,0,0,0],h=[],i=f._findStart();if(!i)return null;e=f._nextSet(f._row,i.end);do{if(g=f._toCounters(e,g),d=f._toPattern(g),0>d)return null;if(a=f._patternToChar(d),0>a)return null;h.push(a),c=e,e+=b.sum(g),e=f._nextSet(f._row,e)}while("*"!==a);return h.pop(),{code:h.join(""),start:i.start,end:e,startInfo:i,decodedCodes:h}},c.prototype._patternToChar=function(a){var b,c=this;for(b=0;bb&&(d=a[c]);return d},c.prototype._toPattern=function(a){for(var b,c,d=a.length,e=0,f=d,g=0,h=this;f>3;){for(e=h._findNextWidth(a,e),f=0,b=0,c=0;d>c;c++)a[c]>e&&(b|=1<c&&f>0;c++)if(a[c]>e&&(f--,2*a[c]>=g))return-1;return b}}return-1},c.prototype._findStart=function(){var a,b,c,d=this,e=d._nextSet(d._row),f=e,g=[0,0,0,0,0,0,0,0,0],h=0,i=!1;for(a=e;ab;b++)g[b]=g[b+2];g[7]=0,g[8]=0,h--}else h++;g[h]=1,i=!i}return null},c}),d("codabar_reader",["./barcode_reader"],function(a){function b(){a.call(this),this._counters=[]}var c={ALPHABETH_STRING:{value:"0123456789-$:/.+ABCD"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,45,36,58,47,46,43,65,66,67,68]},CHARACTER_ENCODINGS:{value:[3,6,9,96,18,66,33,36,48,72,12,24,69,81,84,21,26,41,11,14]},START_END:{value:[26,41,11,14]},MIN_ENCODED_CHARS:{value:4},MAX_ACCEPTABLE:{value:2},PADDING:{value:1.5}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decode=function(){var a,b,c,d,e,f=this,g=[];if(f._fillCounters(),a=f._findStart(),!a)return null;d=a.startCounter;do{if(c=f._toPattern(d),0>c)return null;if(b=f._patternToChar(c),0>b)return null;if(g.push(b),d+=8,g.length>1&&f._isStartEnd(c))break}while(df._counters.length?f._counters.length:d,e=a.start+f._sumCounters(a.startCounter,d-8),{code:g.join(""),start:a.start,end:e,startInfo:a,decodedCodes:g}):null},b.prototype._verifyWhitespace=function(a,b){return(0>=a-1||this._counters[a-1]>=this._calculatePatternLength(a)/2)&&(b+8>=this._counters.length||this._counters[b+7]>=this._calculatePatternLength(b)/2)?!0:!1},b.prototype._calculatePatternLength=function(a){var b,c=0;for(b=a;a+7>b;b++)c+=this._counters[b];return c},b.prototype._thresholdResultPattern=function(a,b){var c,d,e,f,g,h=this,i={space:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}},bar:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}}},j=b;for(e=0;e=0;f--)c=2===(1&f)?i.bar:i.space,d=1===(1&g)?c.wide:c.narrow,d.size+=h._counters[j+f],d.counts++,g>>=1;j+=8}return["space","bar"].forEach(function(a){var b=i[a];b.wide.min=Math.floor((b.narrow.size/b.narrow.counts+b.wide.size/b.wide.counts)/2),b.narrow.max=Math.ceil(b.wide.min),b.wide.max=Math.ceil((b.wide.size*h.MAX_ACCEPTABLE+h.PADDING)/b.wide.counts)}),i},b.prototype._charToPattern=function(a){var b,c=this,d=a.charCodeAt(0);for(b=0;b=0;d--){if(e=0===(1&d)?j.bar:j.space,f=1===(1&h)?e.wide:e.narrow,g=i._counters[k+d],gf.max)return!1;h>>=1}k+=8}return!0},b.prototype._fillCounters=function(){var a,b=this,c=0,d=!0,e=b._nextUnset(b._row);for(b._counters.length=0,b._counters[c]=0,a=e;ac;c+=2)d=this._counters[c],d>f&&(f=d),e>d&&(e=d);return(e+f)/2|0},b.prototype._toPattern=function(a){var b,c,d,e,f=7,g=a+f,h=1<this._counters.length)return-1;for(b=this._computeAlternatingThreshold(a,g),c=this._computeAlternatingThreshold(a+1,g),d=0;f>d;d++)e=0===(1&d)?b:c,this._counters[a+d]>e&&(i|=h),h>>=1;return i},b.prototype._isStartEnd=function(a){var b;for(b=0;bc;c++)d+=this._counters[c];return d},b.prototype._findStart=function(){var a,b,c,d=this,e=d._nextUnset(d._row);for(a=1;a1&&!d.inImageWithBorder(a[0],0)||!d.inImageWithBorder(a[1],0);)c-=Math.floor(c/2),e(-c);return 1>=c?null:a}function j(a){return[{x:(a[1][0]-a[0][0])/2+a[0][0],y:(a[1][1]-a[0][1])/2+a[0][1]},{x:(a[3][0]-a[2][0])/2+a[2][0],y:(a[3][1]-a[2][1])/2+a[2][1]}]}function k(e){var f,g=null,h=a.getBarcodeLine(d,e[0],e[1]);for(c.showFrequency&&(b.drawPath(e,{x:"x",y:"y"},o.ctx.overlay,{color:"red",lineWidth:3}),a.debug.printFrequency(h.line,o.dom.frequency)),a.toBinaryLine(h),c.showPattern&&a.debug.printPattern(h.line,o.dom.pattern),f=0;fd&&null===i;d++)e=g/h*d*(d%2===0?-1:1),f={y:e*j,x:e*l},b[0].y+=f.x,b[0].x-=f.y,b[1].y+=f.x,b[1].x-=f.y,i=k(b);return i}function m(a){return Math.sqrt(Math.pow(Math.abs(a[1].y-a[0].y),2)+Math.pow(Math.abs(a[1].x-a[0].x),2))}function n(a){var d,e,f,g,h=o.ctx.overlay;return c.drawBoundingBox&&h&&b.drawPath(a,{x:0,y:1},h,{color:"blue",lineWidth:2}),d=j(a),g=m(d),e=Math.atan2(d[1].y-d[0].y,d[1].x-d[0].x),d=i(d,e,Math.floor(.07*g)),null===d?null:(f=k(d),null===f&&(f=l(a,d,e)),null===f?null:(f&&c.drawScanline&&h&&b.drawPath(d,{x:"x",y:"y"},h,{color:"red",lineWidth:3}),{codeResult:f.codeResult,line:d,angle:e,pattern:f.barcodeLine.line,threshold:f.barcodeLine.threshold}))}var o={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},p=[],q=null;return e(),f(),g(),{decodeFromBoundingBox:function(a){return n(a)},decodeFromBoundingBoxes:function(a){var b,c;for(b=0;b1?(k.x=i.size,k.y=j.y/j.x*i.size):(k.y=i.size,k.x=j.x/j.y*i.size)),d=j.x,e=k.x,f=j.y,g=k.y,p=c?c:document.createElement("canvas"),p.width=k.x,p.height=k.y,q=p.getContext("2d"),r=new Uint8Array(k.x*k.y),h.attachData=function(a){r=a},h.getData=function(){return r},h.grab=function(){var c,h=i.halfSample,j=b.getFrame();return j?(q.drawImage(j,l,m,d,f,n,o,e,g),c=q.getImageData(0,0,k.x,k.y).data,h?a.grayAndHalfSampleFromCanvasData(c,k,r):a.computeGray(c,r),!0):!1},h.getSize=function(){return k},h},b}),d("html_utils",[],function(){function a(a){var b=document.createElement("div");for(b.innerHTML=a;b.firstChild;)return b.firstChild}function b(a,c){for(var d in c)try{a[d]=c[d].constructor==Object?b(a[d],c[d]):c[d]}catch(e){a[d]=c[d]}return a}return{createNode:function(b){return a(b)},mergeObjects:function(a,c){return b(a,c)}}}),d("config",[],function(){var a={inputStream:{name:"Live",type:"LiveStream",constraints:{width:640,height:480,facing:"environment"}},tracking:!1,debug:!1,controls:!1,locate:!0,numOfWorkers:4,visual:{show:!0},decoder:{drawBoundingBox:!1,showFrequency:!1,drawScanline:!1,showPattern:!1,readers:["code_128_reader"]},locator:{halfSample:!0,patchSize:"medium",showCanvas:!1,showPatches:!1,showFoundPatches:!1,showSkeleton:!1,showLabels:!1,showPatchLabels:!1,showRemainingPatchLabels:!1,boxFromPatches:{showTransformed:!1,showTransformedBox:!1,showBB:!1}}};return a}),d("events",[],function(){var a=function(){function a(a){return e[a]||(e[a]={subscribers:[]}),e[a]}function b(){e={}}function c(a,b){a.async?setTimeout(function(){a.callback(b)},4):a.callback(b)}function d(b,c,d){var e;if("function"==typeof c)e={callback:c,async:d};else if(e=c,!e.callback)throw"Callback was not specified on options";a(b).subscribers.push(e)}var e={};return{subscribe:function(a,b,c){return d(a,b,c)},publish:function(b,d){var e=a(b),f=e.subscribers;e.subscribers=f.filter(function(a){return c(a,d),!a.once})},once:function(a,b,c){d(a,{callback:b,async:c,once:!0})},unsubscribe:function(c,d){var e;c?(e=a(c),e.subscribers=e&&d?e.subscribers.filter(function(a){return a.callback!==d}):[]):b()}}}();return a}),d("camera_access",["html_utils"],function(a){function b(a,b,c){navigator.getUserMedia(a,function(a){f=a;var c=window.URL&&window.URL.createObjectURL(a)||a;b.apply(null,[c])},c)}function c(a,c,d){b(a,function(a){c.src=a,c.addEventListener("loadeddata",function(){function a(){b>0?c.videoWidth>0&&c.videoHeight>0?(console.log(c.videoWidth+"px x "+c.videoHeight+"px"),d()):window.setTimeout(a,500):d("Unable to play video stream. Is webcam working?"),b--}var b=10;a()},!1),c.play()},function(a){console.log(a)})}function d(b,c){var d={audio:!1,video:!0},e=a.mergeObjects({width:640,height:480,facing:"environment"},b);return"undefined"==typeof MediaStreamTrack.getSources?(d.video={mediaSource:"camera",width:{min:e.width,max:e.width},height:{min:e.height,max:e.height},require:["width","height"]},c(d)):void MediaStreamTrack.getSources(function(a){for(var b,f=0;f!=a.length;++f){var g=a[f];"video"==g.kind&&g.facing==e.facing&&(b=g.id)}return d.video={mandatory:{minWidth:e.width,minHeight:e.height},optional:[{sourceId:b}]},c(d)})}function e(a,b,e){d(b,function(b){c(b,a,e)})}var f;return{request:function(a,b,c){e(a,b,c)},release:function(){var a=f&&f.getVideoTracks();a.length&&a[0].stop(),f=null}}}),d("quagga",["code_128_reader","ean_reader","input_stream","image_wrapper","barcode_locator","barcode_decoder","frame_grabber","html_utils","config","events","camera_access","image_debug","cv_utils"],function(b,c,d,e,f,g,h,i,k,l,m,n,o){function p(a){w(a),L=g.create(k.decoder,J)}function q(){for(var a=[{node:document.querySelector("div[data-controls]"),prop:k.controls},{node:M.dom.overlay,prop:k.visual.show}],b=0;b0?B(function(){console.log("Workers created"),u(a)}):(p(),u(a))}function u(a){G.play(),a()}function v(){var a=document.querySelector("#interactive.viewport");if(M.dom.image=document.querySelector("canvas.imgBuffer"),M.dom.image||(M.dom.image=document.createElement("canvas"),M.dom.image.className="imgBuffer",a&&"ImageStream"==k.inputStream.type&&a.appendChild(M.dom.image)),M.ctx.image=M.dom.image.getContext("2d"),M.dom.image.width=G.getWidth(),M.dom.image.height=G.getHeight(),M.dom.overlay=document.querySelector("canvas.drawingBuffer"),!M.dom.overlay){M.dom.overlay=document.createElement("canvas"),M.dom.overlay.className="drawingBuffer",a&&a.appendChild(M.dom.overlay);var b=document.createElement("br");b.setAttribute("clear","all"),a&&a.appendChild(b)}M.ctx.overlay=M.dom.overlay.getContext("2d"),M.dom.overlay.width=G.getWidth(),M.dom.overlay.height=G.getHeight()}function w(a){J=a?a:new e({x:G.getWidth(),y:G.getHeight()}),console.log(J.size),K=[j.create([20,J.size.y/2-100]),j.create([20,J.size.y/2+100]),j.create([J.size.x-20,J.size.y/2+100]),j.create([J.size.x-20,J.size.y/2-100])],f.init(J,k.locator)}function x(){return k.locate?f.locate():[K]}function y(){var a,b;b=x(),b?(a=L.decodeFromBoundingBoxes(b),a=a||{},a.boxes=b,l.publish("processed",a),a&&a.codeResult&&l.publish("detected",a)):l.publish("processed")}function z(){var a;if(O){if(N.length>0){if(a=N.filter(function(a){return!a.busy})[0],!a)return;H.attachData(a.imageData)}else H.attachData(J.data);H.grab()&&(a?(a.busy=!0,a.worker.postMessage({cmd:"process",imageData:a.imageData},[a.imageData.buffer])):y())}else y()}function A(){I=!1,function a(){I||(z(),O&&"LiveStream"==k.inputStream.type&&window.requestAnimFrame(a))}()}function B(a){function b(b){N.push(b),N.length>=k.numOfWorkers&&a()}var c;for(N=[],c=0;c0&&N.forEach(function(b){b.worker.postMessage({cmd:"setReaders",readers:a})})}var G,H,I,J,K,L,M={ctx:{image:null,overlay:null},dom:{image:null,overlay:null}},N=[],O=!0;return{init:function(a,b,c){return k=i.mergeObjects(k,a),c?(O=!1,p(c),b()):void r(b)},start:function(){A()},stop:function(){I=!0,"LiveStream"===k.inputStream.type&&m.release()},pause:function(){I=!0},onDetected:function(a){l.subscribe("detected",a)},onProcessed:function(a){l.subscribe("processed",a)},setReaders:function(a){F(a)},canvas:M,decodeSingle:function(a,b){a=i.mergeObjects({inputStream:{type:"ImageStream",sequence:!1,size:800,src:a.src},numOfWorkers:1,locator:{halfSample:!1}},a),this.init(a,function(){l.once("detected",function(a){I=!0,b.call(null,a)},!0),A()})},Reader:{EANReader:c,Code128Reader:b},ImageWrapper:e,ImageDebug:n}}),c("quagga")}); \ No newline at end of file +var b,c,d;!function(a){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(n=n.slice(0,n.length-1),a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(b,c){return function(){return n.apply(a,v.call(arguments,0).concat([b,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(b){if(e(r,b)){var c=r[b];delete r[b],t[b]=!0,m.apply(a,c)}if(!e(q,b)&&!e(t,b))throw new Error("No "+b);return q[b]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(b,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||b,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n1)for(c=0;cd?(j.start=c-g,j.end=c,j.counter=e,j):null;i++,e[i]=1,h=!h}}else for(e.push(0),c=g;ca?0:a,d=a;b>d;d++)if(this._row[d]!==c)return!1;return!0},a.DIRECTION={FORWARD:1,REVERSE:-1},a.Exception={StartNotFoundException:"Start-Info was not found!",CodeNotFoundException:"Code could not be found!",PatternNotFoundException:"Pattern could not be found!"},a}),d("code_128_reader",["./barcode_reader"],function(a){function b(){a.call(this)}var c={CODE_SHIFT:{value:98},CODE_C:{value:99},CODE_B:{value:100},CODE_A:{value:101},START_CODE_A:{value:103},START_CODE_B:{value:104},START_CODE_C:{value:105},STOP_CODE:{value:106},MODULO:{value:11},CODE_PATTERN:{value:[[2,1,2,2,2,2],[2,2,2,1,2,2],[2,2,2,2,2,1],[1,2,1,2,2,3],[1,2,1,3,2,2],[1,3,1,2,2,2],[1,2,2,2,1,3],[1,2,2,3,1,2],[1,3,2,2,1,2],[2,2,1,2,1,3],[2,2,1,3,1,2],[2,3,1,2,1,2],[1,1,2,2,3,2],[1,2,2,1,3,2],[1,2,2,2,3,1],[1,1,3,2,2,2],[1,2,3,1,2,2],[1,2,3,2,2,1],[2,2,3,2,1,1],[2,2,1,1,3,2],[2,2,1,2,3,1],[2,1,3,2,1,2],[2,2,3,1,1,2],[3,1,2,1,3,1],[3,1,1,2,2,2],[3,2,1,1,2,2],[3,2,1,2,2,1],[3,1,2,2,1,2],[3,2,2,1,1,2],[3,2,2,2,1,1],[2,1,2,1,2,3],[2,1,2,3,2,1],[2,3,2,1,2,1],[1,1,1,3,2,3],[1,3,1,1,2,3],[1,3,1,3,2,1],[1,1,2,3,1,3],[1,3,2,1,1,3],[1,3,2,3,1,1],[2,1,1,3,1,3],[2,3,1,1,1,3],[2,3,1,3,1,1],[1,1,2,1,3,3],[1,1,2,3,3,1],[1,3,2,1,3,1],[1,1,3,1,2,3],[1,1,3,3,2,1],[1,3,3,1,2,1],[3,1,3,1,2,1],[2,1,1,3,3,1],[2,3,1,1,3,1],[2,1,3,1,1,3],[2,1,3,3,1,1],[2,1,3,1,3,1],[3,1,1,1,2,3],[3,1,1,3,2,1],[3,3,1,1,2,1],[3,1,2,1,1,3],[3,1,2,3,1,1],[3,3,2,1,1,1],[3,1,4,1,1,1],[2,2,1,4,1,1],[4,3,1,1,1,1],[1,1,1,2,2,4],[1,1,1,4,2,2],[1,2,1,1,2,4],[1,2,1,4,2,1],[1,4,1,1,2,2],[1,4,1,2,2,1],[1,1,2,2,1,4],[1,1,2,4,1,2],[1,2,2,1,1,4],[1,2,2,4,1,1],[1,4,2,1,1,2],[1,4,2,2,1,1],[2,4,1,2,1,1],[2,2,1,1,1,4],[4,1,3,1,1,1],[2,4,1,1,1,2],[1,3,4,1,1,1],[1,1,1,2,4,2],[1,2,1,1,4,2],[1,2,1,2,4,1],[1,1,4,2,1,2],[1,2,4,1,1,2],[1,2,4,2,1,1],[4,1,1,2,1,2],[4,2,1,1,1,2],[4,2,1,2,1,1],[2,1,2,1,4,1],[2,1,4,1,2,1],[4,1,2,1,2,1],[1,1,1,1,4,3],[1,1,1,3,4,1],[1,3,1,1,4,1],[1,1,4,1,1,3],[1,1,4,3,1,1],[4,1,1,1,1,3],[4,1,1,3,1,1],[1,1,3,1,4,1],[1,1,4,1,3,1],[3,1,1,1,4,1],[4,1,1,1,3,1],[2,1,1,4,1,2],[2,1,1,2,1,4],[2,1,1,2,3,2],[2,3,3,1,1,1,2]]}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decodeCode=function(a){var b,c,d,e,f=[0,0,0,0,0,0],g=this,h=a,i=!g._row[h],j=0,k={error:Number.MAX_VALUE,code:-1,start:a,end:a};for(b=h;bb)return k.error=b,k.start=a-d,k.end=a,k;for(c=0;5>c;c++)f[c]=f[c+2];f[5]=0,f[6]=0,j--}else j++;f[j]=1,i=!i}return null},b.prototype._findStart=function(){var a,b,c,d,e,f,g=[0,0,0,0,0,0],h=this,i=h._nextSet(h._row),j=!1,k=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(a=i;ad;d++)g[d]=g[d+2];g[4]=0,g[5]=0,k--}else k++;g[k]=1,j=!j}return null},b.prototype._decode=function(){var a,b,c,d=this,e=d._findStart(),f=null,g=!1,h=[],i=0,j=0,k=[],l=[],m=!1;if(null===e)return null;switch(f={code:e.code,start:e.start,end:e.end},l.push(f),j=f.code,f.code){case d.START_CODE_A:a=d.CODE_A;break;case d.START_CODE_B:a=d.CODE_B;break;case d.START_CODE_C:a=d.CODE_C;break;default:return null}for(;!g;){if(b=m,m=!1,f=d._decodeCode(f.end),null!==f)switch(f.code!==d.STOP_CODE&&(k.push(f.code),i++,j+=i*f.code),l.push(f),a){case d.CODE_A:if(f.code<64)h.push(String.fromCharCode(32+f.code));else if(f.code<96)h.push(String.fromCharCode(f.code-64));else switch(f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_B;break;case d.CODE_B:a=d.CODE_B;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_B:if(f.code<96)h.push(String.fromCharCode(32+f.code));else switch(f.code!=d.STOP_CODE&&(c=!1),f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_A;break;case d.CODE_A:a=d.CODE_A;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_C:switch(f.code<100&&h.push(f.code<10?"0"+f.code:f.code),f.code){case d.CODE_A:a=d.CODE_A;break;case d.CODE_B:a=d.CODE_B;break;case d.STOP_CODE:g=!0}}else g=!0;b&&(a=a==d.CODE_A?d.CODE_B:d.CODE_A)}return null===f?null:(f.end=d._nextUnset(d._row,f.end),f.end===d._row.length?null:(j-=i*k[k.length-1],j%103!=k[k.length-1]?null:(h.splice(h.length-1,1),{code:h.join(""),start:e.start,end:f.end,codeset:a,startInfo:e,decodedCodes:l,endInfo:f})))},b}),d("ean_reader",["./barcode_reader"],function(a){function b(){a.call(this)}var c={CODE_L_START:{value:0},MODULO:{value:7},CODE_G_START:{value:10},START_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},STOP_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},MIDDLE_PATTERN:{value:[.2*7,.2*7,.2*7,.2*7,.2*7]},CODE_PATTERN:{value:[[3,2,1,1],[2,2,2,1],[2,1,2,2],[1,4,1,1],[1,1,3,2],[1,2,3,1],[1,1,1,4],[1,3,1,2],[1,2,1,3],[3,1,1,2],[1,1,2,3],[1,2,2,2],[2,2,1,2],[1,1,4,1],[2,3,1,1],[1,3,2,1],[4,1,1,1],[2,1,3,1],[3,1,2,1],[2,1,1,3]]},CODE_FREQUENCY:{value:[0,11,13,14,19,25,28,21,22,26]}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decodeCode=function(b,c){var d,e,f,g,h=[0,0,0,0],i=this,j=b,k=!i._row[j],l=0,m={error:Number.MAX_VALUE,code:-1,start:b,end:b};for(c||(c=i.CODE_PATTERN.length),d=j;de;e++)f=i._matchPattern(g,i.CODE_PATTERN[e]),fh)return o.error=h,o.start=g-j,o.end=g,o;if(!e)throw a.PatternNotFoundException;for(i=0;i=0&&c._matchRange(a,b.start,0))return b;d=b.end,b=null}},b.prototype._findEnd=function(a){var b,c=this,d=c._findPattern(c.STOP_PATTERN,a);return b=d.end+(d.end-d.start),bd;d++)a=e._decodeCode(a.end),a.code>=e.CODE_G_START?(a.code=a.code-e.CODE_G_START,f|=1<<5-d):f|=0<<5-d,b.push(a.code),c.push(a);for(d=0;dd;d++)a=e._decodeCode(a.end,e.CODE_G_START),c.push(a),b.push(a.code);return a},b.prototype._decode=function(){var a,b=this,c=null,d=[],e=[];try{if(a=b._findStart(),c={code:a.code,start:a.start,end:a.end},e.push(c),c=b._decodePayload(c,d,e),c=b._findEnd(c.end),null===c)return null;if(e.push(c),!b._checksum(d))return null}catch(f){return null}return{code:d.join(""),start:a.start,end:c.end,codeset:"",startInfo:a,decodedCodes:e}},b.prototype._checksum=function(a){var b,c=0;for(b=a.length-2;b>=0;b-=2)c+=a[b];for(c*=3,b=a.length-1;b>=0;b-=2)c+=a[b];return c%10===0},b}),d("image_loader",[],function(){function a(a,b){a.onload=function(){b.loaded(this)}}var b={};return b.load=function(b,c,d,e,f){var g,h,i,j=new Array(e),k=new Array(j.length);if(f===!1)j[0]=b;else for(g=0;g0)for(d=0;d0)for(c=0;c1?e.size:f/g*e.size:f},d.getHeight=function(){return e.size?f/g>1?g/f*e.size:e.size:g},d.getRealWidth=function(){return f},d.getRealHeight=function(){return g},d.setInputStream=function(a){e=a,a.sequence===!1?(n=a.src,l=1):(n=a.src,l=a.length),b()},d.ended=function(){return o},d.setAttribute=function(){},d.getConfig=function(){return e},d.pause=function(){i=!0},d.play=function(){i=!1},d.setCurrentTime=function(a){h=a},d.addEventListener=function(a,b){-1!==p.indexOf(a)&&(q[a]||(q[a]=[]),q[a].push(b))},d.getFrame=function(){var a;return j?(i||(a=k[h],l-1>h?h++:setTimeout(function(){o=!0,c("ended",[])},0)),a):null},d},b}),glMatrixArrayType=Float32Array,"undefined"!=typeof window&&(window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}(),navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL),d("typedefs",function(a){return function(){var b;return b||a.typedefs}}(this)),d("subImage",["typedefs"],function(){function a(a,b,c){c||(c={data:null,size:b}),this.data=c.data,this.originalSize=c.size,this.I=c,this.from=a,this.size=b}return a.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,g=0;gb?!0:!1},getPoints:function(){return f},getCenter:function(){return g}}},createPoint:function(a,b,c){return{rad:a[c],point:a,id:b}}};return a});var e={};e.create=function(a){var b;return a?(b=new glMatrixArrayType(3),b[0]=a[0],b[1]=a[1],b[2]=a[2]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0]:3),b},e.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b},e.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c[2]=a[2]+b[2],c):(a[0]+=b[0],a[1]+=b[1],a[2]+=b[2],a)},e.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a)},e.negate=function(a,b){return b||(b=a),b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b},e.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a)},e.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=Math.sqrt(c*c+d*d+e*e);return f?1==f?(b[0]=c,b[1]=d,b[2]=e,b):(f=1/f,b[0]=c*f,b[1]=d*f,b[2]=e*f,b):(b[0]=0,b[1]=0,b[2]=0,b)},e.cross=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=b[0],h=b[1],i=b[2];return c[0]=e*i-f*h,c[1]=f*g-d*i,c[2]=d*h-e*g,c},e.length=function(a){var b=a[0],c=a[1],d=a[2];return Math.sqrt(b*b+c*c+d*d)},e.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]},e.direction=function(a,b,c){c||(c=a);var d=a[0]-b[0],e=a[1]-b[1],f=a[2]-b[2],g=Math.sqrt(d*d+e*e+f*f);return g?(g=1/g,c[0]=d*g,c[1]=e*g,c[2]=f*g,c):(c[0]=0,c[1]=0,c[2]=0,c)},e.lerp=function(a,b,c,d){return d||(d=a),d[0]=a[0]+c*(b[0]-a[0]),d[1]=a[1]+c*(b[1]-a[1]),d[2]=a[2]+c*(b[2]-a[2]),d},e.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var f={};f.create=function(a){var b;return a?(b=new glMatrixArrayType(9),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0]:9),b},f.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},f.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},f.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[5];return a[1]=a[3],a[2]=a[6],a[3]=c,a[5]=a[7],a[6]=d,a[7]=e,a}return b[0]=a[0],b[1]=a[3],b[2]=a[6],b[3]=a[1],b[4]=a[4],b[5]=a[7],b[6]=a[2],b[7]=a[5],b[8]=a[8],b},f.toMat4=function(a,b){return b||(b=g.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=0,b[4]=a[3],b[5]=a[4],b[6]=a[5],b[7]=0,b[8]=a[6],b[9]=a[7],b[10]=a[8],b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},f.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+"]"};var g={};g.create=function(a){var b;return a?(b=new glMatrixArrayType(16),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]:16),b},g.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15],b},g.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},g.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[3],f=a[6],g=a[7],h=a[11];return a[1]=a[4],a[2]=a[8],a[3]=a[12],a[4]=c,a[6]=a[9],a[7]=a[13],a[8]=d,a[9]=f,a[11]=a[14],a[12]=e,a[13]=g,a[14]=h,a}return b[0]=a[0],b[1]=a[4],b[2]=a[8],b[3]=a[12],b[4]=a[1],b[5]=a[5],b[6]=a[9],b[7]=a[13],b[8]=a[2],b[9]=a[6],b[10]=a[10],b[11]=a[14],b[12]=a[3],b[13]=a[7],b[14]=a[11],b[15]=a[15],b},g.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11],n=a[12],o=a[13],p=a[14],q=a[15];return n*k*h*e-j*o*h*e-n*g*l*e+f*o*l*e+j*g*p*e-f*k*p*e-n*k*d*i+j*o*d*i+n*c*l*i-b*o*l*i-j*c*p*i+b*k*p*i+n*g*d*m-f*o*d*m-n*c*h*m+b*o*h*m+f*c*p*m-b*g*p*m-j*g*d*q+f*k*d*q+j*c*h*q-b*k*h*q-f*c*l*q+b*g*l*q},g.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=a[9],m=a[10],n=a[11],o=a[12],p=a[13],q=a[14],r=a[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=1/(s*D-t*C+u*B+v*A-w*z+x*y);return b[0]=(h*D-i*C+j*B)*E,b[1]=(-d*D+e*C-f*B)*E,b[2]=(p*x-q*w+r*v)*E,b[3]=(-l*x+m*w-n*v)*E,b[4]=(-g*D+i*A-j*z)*E,b[5]=(c*D-e*A+f*z)*E,b[6]=(-o*x+q*u-r*t)*E,b[7]=(k*x-m*u+n*t)*E,b[8]=(g*C-h*A+j*y)*E,b[9]=(-c*C+d*A-f*y)*E,b[10]=(o*w-p*u+r*s)*E,b[11]=(-k*w+l*u-n*s)*E,b[12]=(-g*B+h*z-i*y)*E,b[13]=(c*B-d*z+e*y)*E,b[14]=(-o*v+p*t-q*s)*E,b[15]=(k*v-l*t+m*s)*E,b},g.toRotationMat=function(a,b){return b||(b=g.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},g.toMat3=function(a,b){return b||(b=f.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[4],b[4]=a[5],b[5]=a[6],b[6]=a[8],b[7]=a[9],b[8]=a[10],b},g.toInverseMat3=function(a,b){var c=a[0],d=a[1],e=a[2],g=a[4],h=a[5],i=a[6],j=a[8],k=a[9],l=a[10],m=l*h-i*k,n=-l*g+i*j,o=k*g-h*j,p=c*m+d*n+e*o;if(!p)return null;var q=1/p;return b||(b=f.create()),b[0]=m*q,b[1]=(-l*d+e*k)*q,b[2]=(i*d-e*h)*q,b[3]=n*q,b[4]=(l*c-e*j)*q,b[5]=(-i*c+e*g)*q,b[6]=o*q,b[7]=(-k*c+d*j)*q,b[8]=(h*c-d*g)*q,b},g.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=a[9],n=a[10],o=a[11],p=a[12],q=a[13],r=a[14],s=a[15],t=b[0],u=b[1],v=b[2],w=b[3],x=b[4],y=b[5],z=b[6],A=b[7],B=b[8],C=b[9],D=b[10],E=b[11],F=b[12],G=b[13],H=b[14],I=b[15];return c[0]=t*d+u*h+v*l+w*p,c[1]=t*e+u*i+v*m+w*q,c[2]=t*f+u*j+v*n+w*r,c[3]=t*g+u*k+v*o+w*s,c[4]=x*d+y*h+z*l+A*p,c[5]=x*e+y*i+z*m+A*q,c[6]=x*f+y*j+z*n+A*r,c[7]=x*g+y*k+z*o+A*s,c[8]=B*d+C*h+D*l+E*p,c[9]=B*e+C*i+D*m+E*q,c[10]=B*f+C*j+D*n+E*r,c[11]=B*g+C*k+D*o+E*s,c[12]=F*d+G*h+H*l+I*p,c[13]=F*e+G*i+H*m+I*q,c[14]=F*f+G*j+H*n+I*r,c[15]=F*g+G*k+H*o+I*s,c},g.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12],c[1]=a[1]*d+a[5]*e+a[9]*f+a[13],c[2]=a[2]*d+a[6]*e+a[10]*f+a[14],c},g.multiplyVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12]*g,c[1]=a[1]*d+a[5]*e+a[9]*f+a[13]*g,c[2]=a[2]*d+a[6]*e+a[10]*f+a[14]*g,c[3]=a[3]*d+a[7]*e+a[11]*f+a[15]*g,c},g.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2];if(!c||a==c)return a[12]=a[0]*d+a[4]*e+a[8]*f+a[12],a[13]=a[1]*d+a[5]*e+a[9]*f+a[13],a[14]=a[2]*d+a[6]*e+a[10]*f+a[14],a[15]=a[3]*d+a[7]*e+a[11]*f+a[15],a;var g=a[0],h=a[1],i=a[2],j=a[3],k=a[4],l=a[5],m=a[6],n=a[7],o=a[8],p=a[9],q=a[10],r=a[11];return c[0]=g,c[1]=h,c[2]=i,c[3]=j,c[4]=k,c[5]=l,c[6]=m,c[7]=n,c[8]=o,c[9]=p,c[10]=q,c[11]=r,c[12]=g*d+k*e+o*f+a[12],c[13]=h*d+l*e+p*f+a[13],c[14]=i*d+m*e+q*f+a[14],c[15]=j*d+n*e+r*f+a[15],c},g.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2];return c&&a!=c?(c[0]=a[0]*d,c[1]=a[1]*d,c[2]=a[2]*d,c[3]=a[3]*d,c[4]=a[4]*e,c[5]=a[5]*e,c[6]=a[6]*e,c[7]=a[7]*e,c[8]=a[8]*f,c[9]=a[9]*f,c[10]=a[10]*f,c[11]=a[11]*f,c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15],c):(a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=f,a[9]*=f,a[10]*=f,a[11]*=f,a)},g.rotate=function(a,b,c,d){var e=c[0],f=c[1],g=c[2],h=Math.sqrt(e*e+f*f+g*g);if(!h)return null;1!=h&&(h=1/h,e*=h,f*=h,g*=h);var i=Math.sin(b),j=Math.cos(b),k=1-j,l=a[0],m=a[1],n=a[2],o=a[3],p=a[4],q=a[5],r=a[6],s=a[7],t=a[8],u=a[9],v=a[10],w=a[11],x=e*e*k+j,y=f*e*k+g*i,z=g*e*k-f*i,A=e*f*k-g*i,B=f*f*k+j,C=g*f*k+e*i,D=e*g*k+f*i,E=f*g*k-e*i,F=g*g*k+j;return d?a!=d&&(d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]):d=a,d[0]=l*x+p*y+t*z,d[1]=m*x+q*y+u*z,d[2]=n*x+r*y+v*z,d[3]=o*x+s*y+w*z,d[4]=l*A+p*B+t*C,d[5]=m*A+q*B+u*C,d[6]=n*A+r*B+v*C,d[7]=o*A+s*B+w*C,d[8]=l*D+p*E+t*F,d[9]=m*D+q*E+u*F,d[10]=n*D+r*E+v*F,d[11]=o*D+s*E+w*F,d},g.rotateX=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[4]=f*e+j*d,c[5]=g*e+k*d,c[6]=h*e+l*d,c[7]=i*e+m*d,c[8]=f*-d+j*e,c[9]=g*-d+k*e,c[10]=h*-d+l*e,c[11]=i*-d+m*e,c},g.rotateY=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[4]=a[4],c[5]=a[5],c[6]=a[6],c[7]=a[7],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*-d,c[1]=g*e+k*-d,c[2]=h*e+l*-d,c[3]=i*e+m*-d,c[8]=f*d+j*e,c[9]=g*d+k*e,c[10]=h*d+l*e,c[11]=i*d+m*e,c},g.rotateZ=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[4],k=a[5],l=a[6],m=a[7];return c?a!=c&&(c[8]=a[8],c[9]=a[9],c[10]=a[10],c[11]=a[11],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*d,c[1]=g*e+k*d,c[2]=h*e+l*d,c[3]=i*e+m*d,c[4]=f*-d+j*e,c[5]=g*-d+k*e,c[6]=h*-d+l*e,c[7]=i*-d+m*e,c},g.frustum=function(a,b,c,d,e,f,h){h||(h=g.create());var i=b-a,j=d-c,k=f-e;return h[0]=2*e/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2*e/j,h[6]=0,h[7]=0,h[8]=(b+a)/i,h[9]=(d+c)/j,h[10]=-(f+e)/k,h[11]=-1,h[12]=0,h[13]=0,h[14]=-(f*e*2)/k,h[15]=0,h},g.perspective=function(a,b,c,d,e){var f=c*Math.tan(a*Math.PI/360),h=f*b;return g.frustum(-h,h,-f,f,c,d,e)},g.ortho=function(a,b,c,d,e,f,h){h||(h=g.create());var i=b-a,j=d-c,k=f-e;return h[0]=2/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2/j,h[6]=0,h[7]=0,h[8]=0,h[9]=0,h[10]=-2/k,h[11]=0,h[12]=-(a+b)/i,h[13]=-(d+c)/j,h[14]=-(f+e)/k,h[15]=1,h},g.lookAt=function(a,b,c,d){d||(d=g.create());var e=a[0],f=a[1],h=a[2],i=c[0],j=c[1],k=c[2],l=b[0],m=b[1],n=b[2];if(e==l&&f==m&&h==n)return g.identity(d);var o,p,q,r,s,t,u,v,w,x;return o=e-b[0],p=f-b[1],q=h-b[2],x=1/Math.sqrt(o*o+p*p+q*q),o*=x,p*=x,q*=x,r=j*q-k*p,s=k*o-i*q,t=i*p-j*o,x=Math.sqrt(r*r+s*s+t*t),x?(x=1/x,r*=x,s*=x,t*=x):(r=0,s=0,t=0),u=p*t-q*s,v=q*r-o*t,w=o*s-p*r,x=Math.sqrt(u*u+v*v+w*w),x?(x=1/x,u*=x,v*=x,w*=x):(u=0,v=0,w=0),d[0]=r,d[1]=u,d[2]=o,d[3]=0,d[4]=s,d[5]=v,d[6]=p,d[7]=0,d[8]=t,d[9]=w,d[10]=q,d[11]=0,d[12]=-(r*e+s*f+t*h),d[13]=-(u*e+v*f+w*h),d[14]=-(o*e+p*f+q*h),d[15]=1,d},g.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+",\n "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+",\n "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+",\n "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"},quat4={},quat4.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},quat4.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},quat4.calculateW=function(a,b){var c=a[0],d=a[1],e=a[2];return b&&a!=b?(b[0]=c,b[1]=d,b[2]=e,b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),b):(a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),a)},quat4.inverse=function(a,b){return b&&a!=b?(b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b[3]=a[3],b):(a[0]*=-1,a[1]*=-1,a[2]*=-1,a)},quat4.length=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return Math.sqrt(b*b+c*c+d*d+e*e)},quat4.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=Math.sqrt(c*c+d*d+e*e+f*f);return 0==g?(b[0]=0,b[1]=0,b[2]=0,b[3]=0,b):(g=1/g,b[0]=c*g,b[1]=d*g,b[2]=e*g,b[3]=f*g,b)},quat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=b[0],i=b[1],j=b[2],k=b[3];return c[0]=d*k+g*h+e*j-f*i,c[1]=e*k+g*i+f*h-d*j,c[2]=f*k+g*j+d*i-e*h,c[3]=g*k-d*h-e*i-f*j,c},quat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=a[0],h=a[1],i=a[2],j=a[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return c[0]=k*j+n*-g+l*-i-m*-h,c[1]=l*j+n*-h+m*-g-k*-i,c[2]=m*j+n*-i+k*-h-l*-g,c},quat4.toMat3=function(a,b){b||(b=f.create());var c=a[0],d=a[1],e=a[2],g=a[3],h=c+c,i=d+d,j=e+e,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=e*j,q=g*h,r=g*i,s=g*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=l+s,b[4]=1-(k+p),b[5]=o-q,b[6]=m-r,b[7]=o+q,b[8]=1-(k+n),b},quat4.toMat4=function(a,b){b||(b=g.create());var c=a[0],d=a[1],e=a[2],f=a[3],h=c+c,i=d+d,j=e+e,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=e*j,q=f*h,r=f*i,s=f*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=0,b[4]=l+s,b[5]=1-(k+p),b[6]=o-q,b[7]=0,b[8]=m-r,b[9]=o+q,b[10]=1-(k+n),b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},quat4.slerp=function(a,b,c,d){d||(d=a);var e=a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];if(Math.abs(e)>=1)return d!=a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]),d;var f=Math.acos(e),g=Math.sqrt(1-e*e);if(Math.abs(g)<.001)return d[0]=.5*a[0]+.5*b[0],d[1]=.5*a[1]+.5*b[1],d[2]=.5*a[2]+.5*b[2],d[3]=.5*a[3]+.5*b[3],d;var h=Math.sin((1-c)*f)/g,i=Math.sin(c*f)/g;return d[0]=a[0]*h+b[0]*i,d[1]=a[1]*h+b[1]*i,d[2]=a[2]*h+b[2]*i,d[3]=a[3]*h+b[3]*i,d},quat4.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"},d("glMatrix",["typedefs"],function(a){return function(){var b;return b||a.glMatrix}}(this)),g.xVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g,c[1]=a[4]*d+a[5]*e+a[6]*f+a[7]*g,c[2]=a[8]*d+a[9]*e+a[10]*f+a[11]*g,c[3]=a[12]*d+a[13]*e+a[14]*f+a[15]*g,c},f.scale=function(a,b,c){return c&&a!=c?(c=f.create(),c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c[6]=a[6]*b,c[7]=a[7]*b,c[8]=a[8]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a[6]*=b,a[7]*=b,a[8]*=b,a)},f.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=1/(c*g*k+d*h*i+e*f*j-e*g*i-d*f*k-c*h*j);return b[0]=(g*k-h*j)*l,b[1]=(e*j-d*k)*l,b[2]=(d*h-e*g)*l,b[3]=(h*i-f*k)*l,b[4]=(c*k-e*i)*l,b[5]=(e*f-c*h)*l,b[6]=(f*j-g*i)*l,b[7]=(d*i-c*j)*l,b[8]=(c*g-d*f)*l,b},f.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=b[0],n=b[1],o=b[2],p=b[3],q=b[4],r=b[5],s=b[6],t=b[7],u=b[8];return c[0]=d*m+e*p+f*s,c[1]=d*n+e*q+f*t,c[2]=d*o+e*r+f*u,c[3]=g*m+h*p+i*s,c[4]=g*n+h*q+i*t,c[5]=g*o+h*r+i*u,c[6]=j*m+k*p+l*s,c[7]=j*n+k*q+l*t,c[8]=j*o+k*r+l*u,c},f.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c};var h={};h.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},h.project=function(a,b){return b||(b=a),b[0]=a[0]/a[3],b[1]=a[1]/a[3],b[2]=a[2]/a[3],b},h.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[4]*=b,a)},h.xMat4=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3];return c[0]=b[0]*d+b[4]*e+b[8]*f+b[12]*g,c[1]=b[1]*d+b[5]*e+b[9]*f+b[13]*g,c[2]=b[2]*d+b[6]*e+b[10]*f+b[14]*g,c[3]=b[3]*d+b[7]*e+b[11]*f+b[15]*g,c};var i={};i.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},i.xVec2=function(a,b,c){c||(c=b);var d=b[0],e=b[1];return c[0]=a[0]*d+a[1]*e,c[1]=a[2]*d+a[3]*e,c},i.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a)},i.determinant=function(a){return a[0]*a[3]-a[1]*a[2]},i.inverse=function(a){var b=1/i.determinant(a),c=a[3]*b,d=-a[1]*b,e=-a[2]*b,f=a[0];return a[0]=c,a[1]=d,a[2]=e,a[3]=f,a};var j={};j.create=function(a){var b;return a?(b=new glMatrixArrayType(2),b[0]=a[0],b[1]=a[1]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0]:2),b +},j.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c):(a[0]-=b[0],a[1]-=b[1],a)},j.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c):(a[0]+=b[0],a[1]+=b[1],a)},j.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c):(a[0]*=b,a[1]*=b,a)},j.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=Math.sqrt(c*c+d*d);return e?1==e?(b[0]=c,b[1]=d,b):(e=1/e,b[0]=c*e,b[1]=d*e,b):(b[0]=0,b[1]=0,b)},j.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},j.multiply=function(a,b,c){return c||(c=a),c[0]=a[0]*b[0],c[1]=a[1]*b[1],c},j.unproject=function(a){return e.create([a[0],a[1],1])},j.length=function(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])},j.perspectiveProject=function(a){var b=j.create(a);return j.scale(b,1/a[2])},e.project=function(a){return j.scale(j.create(a),1/a[2])};var k={};k.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a)},k.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c[3]=a[3]-b[3],c[4]=a[4]-b[4],c[5]=a[5]-b[5],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a[3]-=b[3],a[4]-=b[4],a[5]-=b[5],a)},k.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]+a[4]*b[4]+a[5]*b[5]};var l={};return l.xVec6=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g+a[4]*h+a[5]*i,c[1]=a[6]*d+a[7]*e+a[8]*f+a[9]*g+a[10]*h+a[11]*i,c[2]=a[12]*d+a[13]*e+a[14]*f+a[15]*g+a[16]*h+a[17]*i,c[3]=a[18]*d+a[19]*e+a[20]*f+a[21]*g+a[22]*h+a[23]*i,c[4]=a[24]*d+a[25]*e+a[26]*f+a[27]*g+a[28]*h+a[29]*i,c[5]=a[30]*d+a[31]*e+a[32]*f+a[33]*g+a[34]*h+a[35]*i,c},f.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c},d("glMatrixAddon",["glMatrix"],function(a){return function(){var b;return b||a.glMatrixAddon}}(this)),d("array_helper",[],function(){return{init:function(a,b){for(var c=a.length;c--;)a[c]=b},shuffle:function(a){var b,c,d=a.length-1;for(d;d>=0;d--)b=Math.floor(Math.random()*d),c=a[d],a[d]=a[b],a[b]=c;return a},toPointList:function(a){var b,c,d=[],e=[];for(b=0;b=b&&e.push(a[d]);return e},maxIndex:function(a){var b,c=0;for(b=0;ba[c]&&(c=b);return c},max:function(a){var b,c=0;for(b=0;bc&&(c=a[b]);return c},sum:function(a){for(var b=a.length,c=0;b--;)c+=a[b];return c}}}),d("cv_utils",["cluster","glMatrixAddon","array_helper"],function(a,b,c){var d={};return d.imageRef=function(a,b){var c={x:a,y:b,toVec2:function(){return j.create([this.x,this.y])},toVec3:function(){return e.create([this.x,this.y,1])},round:function(){return this.x=Math.floor(this.x>0?this.x+.5:this.x-.5),this.y=Math.floor(this.y>0?this.y+.5:this.y-.5),this}};return c},d.computeIntegralImage2=function(a,b){var c,d,e=a.data,f=a.size.x,g=a.size.y,h=b.data,i=0,j=0,k=0,l=0,m=0;for(k=f,i=0,d=1;g>d;d++)i+=e[j],h[k]+=i,j+=f,k+=f;for(j=0,k=1,i=0,c=1;f>c;c++)i+=e[j],h[k]+=i,j++,k++;for(d=1;g>d;d++)for(j=d*f+1,k=(d-1)*f+1,l=d*f,m=(d-1)*f,c=1;f>c;c++)h[j]+=e[j]+h[k]+h[l]-h[m],j++,k++,l++,m++},d.computeIntegralImage=function(a,b){for(var c=a.data,d=a.size.x,e=a.size.y,f=b.data,g=0,h=0;d>h;h++)g+=c[h],f[h]=g;for(var i=1;e>i;i++){g=0;for(var j=0;d>j;j++)g+=c[i*d+j],f[i*d+j]=g+f[(i-1)*d+j]}},d.thresholdImage=function(a,b,c){c||(c=a);for(var d=a.data,e=d.length,f=c.data;e--;)f[e]=d[e]b;b++)e[b]=0;for(;d--;)e[c[d]]++;return e},d.otsuThreshold=function(a,b){function e(a,b){var c,d=0;for(c=a;b>=c;c++)d+=h[c];return d}function f(a,b){var c,d=0;for(c=a;b>=c;c++)d+=c*h[c];return d}function g(){var b,g,i,j,k,l,m,n=[0];for(h=d.computeHistogram(a),j=1;255>j;j++)b=e(0,j),g=e(j+1,255),i=b*g,0===i&&(i=1),k=f(0,j)*g,l=f(j+1,255)*b,m=k-l,n[j]=m*m/i;return c.maxIndex(n)}var h,i;return i=g(),d.thresholdImage(a,i,b),i},d.computeBinaryImage=function(a,b,c){d.computeIntegralImage(a,b),c||(c=a);var e,f,g,h,i,j,k,l=a.data,m=c.data,n=a.size.x,o=a.size.y,p=b.data,q=0,r=3,s=(2*r+1)*(2*r+1);for(e=0;r>=e;e++)for(f=0;n>f;f++)m[e*n+f]=0,m[(o-1-e)*n+f]=0;for(e=r;o-r>e;e++)for(f=0;r>=f;f++)m[e*n+f]=0,m[e*n+(n-1-f)]=0;for(e=r+1;o-r-1>e;e++)for(f=r+1;n-r>f;f++)g=p[(e-r-1)*n+(f-r-1)],h=p[(e-r-1)*n+(f+r)],i=p[(e+r)*n+(f-r-1)],j=p[(e+r)*n+(f+r)],q=j-i-h+g,k=q/s,m[e*n+f]=l[e*n+f]>k+5?0:1},d.cluster=function(b,c,d){function e(a){var b=!1;for(g=0;gb.x-j&&a.xb.y-k&&a.yd;d++){for(h=Math.floor(Math.random()*a.length),f=[],i=h,f.push(a[i]);null!==(i=c(i,!0));)f.push(a[i]);if(h>0)for(i=h;null!==(i=c(i,!1));)f.push(a[i]);f.length>g.length&&(g=f)}return g}},d.DILATE=1,d.ERODE=2,d.dilate=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=e>0?1:0},d.erode=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=5===e?1:0},d.subtract=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]-f[d]},d.bitwiseOr=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]||f[d]},d.countNonZero=function(a){for(var b=a.data.length,c=a.data,d=0;b--;)d+=c[b];return d},d.topGeneric=function(a,b,c){var d,e,f,g,h=0,i=0,j=[];for(d=0;b>d;d++)j[d]={score:0,item:null};for(d=0;di)for(f=j[h],f.score=e,f.item=a[d],i=Number.MAX_VALUE,g=0;b>g;g++)j[g].scoref;){for(d=0;h>d;d++)c[i]=Math.floor((.299*a[4*e+0]+.587*a[4*e+1]+.114*a[4*e+2]+(.299*a[4*(e+1)+0]+.587*a[4*(e+1)+1]+.114*a[4*(e+1)+2])+(.299*a[4*f+0]+.587*a[4*f+1]+.114*a[4*f+2])+(.299*a[4*(f+1)+0]+.587*a[4*(f+1)+1]+.114*a[4*(f+1)+2]))/4),i++,e+=2,f+=2;e+=j,f+=j}},d.computeGray=function(a,b){var c=a.length/4,d=0;for(d=0;c>d;d++)b[d]=Math.floor(.299*a[4*d+0]+.587*a[4*d+1]+.114*a[4*d+2])},d.loadImageArray=function(a,b,c){c||(c=document.createElement("canvas"));var e=new Image;e.callback=b,e.onload=function(){c.width=this.width,c.height=this.height;var a=c.getContext("2d");a.drawImage(this,0,0);var b=new Uint8Array(this.width*this.height);a.drawImage(this,0,0);var e=a.getImageData(0,0,this.width,this.height).data;d.computeGray(e,b),this.callback(b,{x:this.width,y:this.height},this)},e.src=a},d.halfSample=function(a,b){for(var c=a.data,d=a.size.x,e=b.data,f=0,g=d,h=c.length,i=d/2,j=0;h>g;){for(var k=0;i>k;k++)e[j]=Math.floor((c[f]+c[f+1]+c[g]+c[g+1])/4),j++,f+=2,g+=2;f+=d,g+=d}},d.hsv2rgb=function(a,b){var c=a[0],d=a[1],e=a[2],f=e*d,g=f*(1-Math.abs(c/60%2-1)),h=e-f,i=0,j=0,k=0;return b=b||[0,0,0],60>c?(i=f,j=g):120>c?(i=g,j=f):180>c?(j=f,k=g):240>c?(j=g,k=f):300>c?(i=g,k=f):360>c&&(i=f,k=g),b[0]=255*(i+h)|0,b[1]=255*(j+h)|0,b[2]=255*(k+h)|0,b},d._computeDivisors=function(a){var b,c=[],d=[];for(b=1;bb[d]?d++:c++;return e},d.calculatePatchSize=function(a,b){for(var c=this._computeDivisors(b.x),d=this._computeDivisors(b.y),e=Math.max(b.x,b.y),f=this._computeIntersection(c,d),g={"x-small":60,small:32,medium:20,large:15,"x-large":10},h=g[a]||g.medium,i=0,j=f[Math.floor(f.length/2)],k=e/h;i0&&(j=Math.abs(f[i]-k)>Math.abs(f[i-1]-k)?f[i-1]:f[i]),{x:j,y:j}},d}),d("image_wrapper",["subImage","cv_utils","array_helper"],function(a,b,c){function d(a,b,d,e){b?this.data=b:d?(this.data=new d(a.x*a.y),d===Array&&e&&c.init(this.data,0)):(this.data=new Uint8Array(a.x*a.y),Uint8Array===Array&&e&&c.init(this.data,0)),this.size=a}return d.prototype.inImageWithBorder=function(a,b){return a.x>=b&&a.y>=b&&a.x=0&&u>=0&&n-1>v&&o-1>w){for(g=s,h=0;m>h;++h,j.add(g,y))for(k=0;l>k;++k,j.add(g,p))b.set(k,h,x(a,g[0],g[1]));return 0}var z=n-1,A=o-1,B=0;for(g=s,h=0;m>h;++h,j.add(g,y))for(k=0;l>k;++k,j.add(g,p))0<=g[0]&&0<=g[1]&&g[0]c;c++)for(d=0;e>d;d++)a.data[d*f+c]=this.data[(b.y+d)*this.size.x+b.x+c]},d.prototype.copyTo=function(a){for(var b=this.data.length,c=this.data,d=a.data;b--;)d[b]=c[b]},d.prototype.get=function(a,b){return this.data[b*this.size.x+a]},d.prototype.getSafe=function(a,b){var c;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},c=0;ca;a++)d[a]=d[(c-1)*b+a]=0;for(a=1;c-1>a;a++)d[a*b]=d[a*b+(b-1)]=0},d.prototype.invert=function(){for(var a=this.data,b=a.length;b--;)a[b]=a[b]?0:1},d.prototype.convolve=function(a){var b,c,d,e,f=a.length/2|0,g=0;for(c=0;c=e;e++)for(d=-f;f>=d;d++)g+=a[e+f][d+f]*this.getSafe(b+d,c+e);this.data[c*this.size.x+b]=g}},d.prototype.moments=function(a){var b,c,d,e,f,g,h,i,k,l,m,n,o=this.data,p=this.size.y,q=this.size.x,r=[],s=[],t=Math.PI,u=t/4;if(0>=a)return s;for(f=0;a>f;f++)r[f]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(c=0;p>c;c++)for(e=c*c,b=0;q>b;b++)d=o[c*q+b],d>0&&(g=r[d-1],g.m00+=1,g.m01+=c,g.m10+=b,g.m11+=b*c,g.m02+=e,g.m20+=b*b);for(f=0;a>f;f++)g=r[f],isNaN(g.m00)||0===g.m00||(l=g.m10/g.m00,m=g.m01/g.m00,h=g.m11/g.m00-l*m,i=g.m02/g.m00-m*m,k=g.m20/g.m00-l*l,n=(i-k)/(2*h),n=.5*Math.atan(n)+(h>=0?u:-u)+t,g.theta=(180*n/t+90)%180-90,g.theta<0&&(g.theta+=180),g.rad=n>t?n-t:n,g.vec=j.create([Math.cos(n),Math.sin(n)]),s.push(g));return s},d.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,i=0;ic||c>360)&&(c=360);for(var e=[0,1,1],f=[0,0,0],g=[255,255,255],h=[0,0,0],i=[],j=a.getContext("2d"),k=j.getImageData(d.x,d.y,this.size.x,this.size.y),l=k.data,m=this.data.length;m--;)e[0]=this.data[m]*c,i=e[0]<=0?g:e[0]>=360?h:b.hsv2rgb(e,f),l[4*m+0]=i[0],l[4*m+1]=i[1],l[4*m+2]=i[2],l[4*m+3]=255;j.putImageData(k,d.x,d.y)},d}),d("tracer",[],function(){var a={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(a,b){function c(a,b,c,d){var e,k,l;for(e=0;7>e;e++){if(k=a.cy+i[a.dir][0],l=a.cx+i[a.dir][1],f=k*j+l,g[f]===b&&(0===h[f]||h[f]===c))return h[f]=c,a.cy=k,a.cx=l,!0;0===h[f]&&(h[f]=d),a.dir=(a.dir+1)%8}return!1}function d(a,b,c){return{dir:c,x:a,y:b,next:null,prev:null}}function e(a,b,e,f,g){var h,i,j,k=null,l={cx:b,cy:a,dir:0};if(c(l,f,e,g)){k=d(b,a,l.dir),h=k,j=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i;do l.dir=(l.dir+6)%8,c(l,f,e,g),j!=l.dir?(h.dir=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i):(h.dir=j,h.x=l.cx,h.y=l.cy),j=l.dir;while(l.cx!=b||l.cy!=a);k.prev=h.prev,h.prev.next=k}return k}var f,g=a.data,h=b.data,i=this.searchDirections,j=a.size.x;return{trace:function(a,b,d,e){return c(a,b,d,e)},contourTracing:function(a,b,c,d,f){return e(a,b,c,d,f)}}}};return a}),d("rasterizer",["tracer"],function(a){var b={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(c,d){var e=c.data,f=d.data,g=c.size.x,h=c.size.y,i=a.create(c,d);return{rasterize:function(a){var c,d,j,k,l,m,n,o,p,q,r,s,t=[],u=0;for(s=0;400>s;s++)t[s]=0;for(t[0]=e[0],p=null,m=1;h-1>m;m++)for(k=0,d=t[0],l=1;g-1>l;l++)if(r=m*g+l,0===f[r])if(c=e[r],c!==d){if(0===k)j=u+1,t[j]=c,d=c,n=i.contourTracing(m,l,j,c,b.DIR.OUTSIDE_EDGE),null!==n&&(u++,k=j,o=b.createContour2D(),o.dir=b.CONTOUR_DIR.CW_DIR,o.index=k,o.firstVertex=n,o.nextpeer=p,o.insideContours=null,null!==p&&(p.prevpeer=o),p=o);else if(n=i.contourTracing(m,l,b.DIR.INSIDE_EDGE,c,k),null!==n){for(o=b.createContour2D(),o.firstVertex=n,o.insideContours=null,o.dir=0===a?b.CONTOUR_DIR.CCW_DIR:b.CONTOUR_DIR.CW_DIR,o.index=a,q=p;null!==q&&q.index!==k;)q=q.nextpeer;null!==q&&(o.nextpeer=q.insideContours,null!==q.insideContours&&(q.insideContours.prevpeer=o),q.insideContours=o)}}else f[r]=k;else f[r]===b.DIR.OUTSIDE_EDGE||f[r]===b.DIR.INSIDE_EDGE?(k=0,d=f[r]===b.DIR.INSIDE_EDGE?e[r]:t[0]):(k=f[r],d=t[k]);for(q=p;null!==q;)q.index=a,q=q.nextpeer;return{cc:p,count:u}},debug:{drawContour:function(a,c){var d,e,f,g=a.getContext("2d"),h=c;for(g.strokeStyle="red",g.fillStyle="red",g.lineWidth=1,d=null!==h?h.insideContours:null;null!==h;){switch(null!==d?(e=d,d=d.nextpeer):(e=h,h=h.nextpeer,d=null!==h?h.insideContours:null),e.dir){case b.CONTOUR_DIR.CW_DIR:g.strokeStyle="red";break;case b.CONTOUR_DIR.CCW_DIR:g.strokeStyle="blue";break;case b.CONTOUR_DIR.UNKNOWN_DIR:g.strokeStyle="green"}f=e.firstVertex,g.beginPath(),g.moveTo(f.x,f.y);do f=f.next,g.lineTo(f.x,f.y);while(f!==e.firstVertex);g.stroke()}}}}}};return b}),d("skeletonizer",[],function(){function a(stdlib, foreign, buffer) {"use asm";var images=new stdlib.Uint8Array(buffer),size=foreign.size|0,imul=stdlib.Math.imul;function erode(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for ( v=1; (v|0)<((size - 1)|0); v=(v+1)|0) {offset=(offset+size)|0;for ( u=1; (u|0)<((size - 1)|0); u=(u+1)|0) {yStart1=(offset - size)|0;yStart2=(offset+size)|0;xStart1=(u - 1)|0;xStart2=(u+1)|0;sum=((images[(inImagePtr+yStart1+xStart1)|0]|0)+(images[(inImagePtr+yStart1+xStart2)|0]|0)+(images[(inImagePtr+offset+u)|0]|0)+(images[(inImagePtr+yStart2+xStart1)|0]|0)+(images[(inImagePtr+yStart2+xStart2)|0]|0))|0;if ((sum|0) == (5|0)) {images[(outImagePtr+offset+u)|0]=1;} else {images[(outImagePtr+offset+u)|0]=0;}}}return;}function subtract(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(outImagePtr+length)|0]=((images[(aImagePtr+length)|0]|0) - (images[(bImagePtr+length)|0]|0))|0;}}function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) {aImagePtr=aImagePtr|0;bImagePtr=bImagePtr|0;outImagePtr=outImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(outImagePtr+length)|0]=((images[(aImagePtr+length)|0]|0)|(images[(bImagePtr+length)|0]|0))|0;}}function countNonZero(imagePtr) {imagePtr=imagePtr|0;var sum=0,length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;sum=((sum|0)+(images[(imagePtr+length)|0]|0))|0;}return (sum|0);}function init(imagePtr, value) {imagePtr=imagePtr|0;value=value|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(imagePtr+length)|0]=value;}}function dilate(inImagePtr, outImagePtr) {inImagePtr=inImagePtr|0;outImagePtr=outImagePtr|0;var v=0,u=0,sum=0,yStart1=0,yStart2=0,xStart1=0,xStart2=0,offset=0;for ( v=1; (v|0)<((size - 1)|0); v=(v+1)|0) {offset=(offset+size)|0;for ( u=1; (u|0)<((size - 1)|0); u=(u+1)|0) {yStart1=(offset - size)|0;yStart2=(offset+size)|0;xStart1=(u - 1)|0;xStart2=(u+1)|0;sum=((images[(inImagePtr+yStart1+xStart1)|0]|0)+(images[(inImagePtr+yStart1+xStart2)|0]|0)+(images[(inImagePtr+offset+u)|0]|0)+(images[(inImagePtr+yStart2+xStart1)|0]|0)+(images[(inImagePtr+yStart2+xStart2)|0]|0))|0;if ((sum|0)>(0|0)) {images[(outImagePtr+offset+u)|0]=1;} else {images[(outImagePtr+offset+u)|0]=0;}}}return;}function memcpy(srcImagePtr, dstImagePtr) {srcImagePtr=srcImagePtr|0;dstImagePtr=dstImagePtr|0;var length=0;length=imul(size, size)|0;while ((length|0)>0) {length=(length - 1)|0;images[(dstImagePtr+length)|0]=(images[(srcImagePtr+length)|0]|0);}}function zeroBorder(imagePtr) {imagePtr=imagePtr|0;var x=0,y=0;for ( x=0; (x|0)<((size - 1)|0); x=(x+1)|0) {images[(imagePtr+x)|0]=0;images[(imagePtr+y)|0]=0;y=((y+size) - 1)|0;images[(imagePtr+y)|0]=0;y=(y+1)|0;}for ( x=0; (x|0)<(size|0); x=(x+1)|0) {images[(imagePtr+y)|0]=0;y=(y+1)|0;}}function skeletonize() {var subImagePtr=0,erodedImagePtr=0,tempImagePtr=0,skelImagePtr=0,sum=0,done=0;erodedImagePtr=imul(size, size)|0;tempImagePtr=(erodedImagePtr+erodedImagePtr)|0;skelImagePtr=(tempImagePtr+erodedImagePtr)|0;init(skelImagePtr, 0);zeroBorder(subImagePtr);do {erode(subImagePtr, erodedImagePtr);dilate(erodedImagePtr, tempImagePtr);subtract(subImagePtr, tempImagePtr, tempImagePtr);bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr);memcpy(erodedImagePtr, subImagePtr);sum=countNonZero(subImagePtr)|0;done=((sum|0) == 0|0);} while(!done);}return {skeletonize : skeletonize};} +return a}),d("image_debug",[],function(){return{drawRect:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=1,c.beginPath(),c.strokeRect(a.x,a.y,b.x,b.y)},drawPath:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=d.lineWidth,c.beginPath(),c.moveTo(a[0][b.x],a[0][b.y]);for(var e=1;eb&&(b+=180),b=(180-b)*Math.PI/180,f=i.create([Math.cos(b),-Math.sin(b),Math.sin(b),Math.cos(b)]),c=0;cd;d++)i.xVec2(f,e.box[d]);u.boxFromPatches.showTransformed&&g.drawPath(e.box,{x:0,y:1},G.ctx.binary,{color:"#99ff00",lineWidth:2})}for(c=0;cd;d++)e.box[d][0]n&&(n=e.box[d][0]),e.box[d][1]o&&(o=e.box[d][1]);for(h=[[l,m],[n,m],[n,o],[l,o]],u.boxFromPatches.showTransformedBox&&g.drawPath(h,{x:0,y:1},G.ctx.binary,{color:"#ff0000",lineWidth:2}),k=u.halfSample?2:1,f=i.inverse(f),d=0;4>d;d++)i.xVec2(f,h[d]);for(u.boxFromPatches.showBB&&g.drawPath(h,{x:0,y:1},G.ctx.binary,{color:"#ff0000",lineWidth:2}),d=0;4>d;d++)j.scale(h[d],k);return h}function m(){b.otsuThreshold(v,C),C.zeroBorder(),u.showCanvas&&C.show(G.dom.binary,255)}function n(){var a,b,d,e,h,i,j,k,l=[];for(a=0;ab;b++)d.push(0);for(c=A.data.length;c--;)A.data[c]>0&&d[A.data[c]-1]++;return d=d.map(function(a,b){return{val:a,label:b+1}}),d.sort(function(a,b){return b.val-a.val}),e=d.filter(function(a){return a.val>=5})}function p(a,c){var d,e,f,h,i,j=[],k=[],m=[0,1,1],n=[0,0,0];for(d=0;d=2){for(e=0;e6&&k.push(a[e]);if(k.length>=2){for(i=k.length,g=q(k),f=0,e=0;e1&&g.length>=k.length/4*3&&g.length>a.length/4&&(f/=g.length,h={index:b[1]*H.x+b[0],pos:{x:c,y:d},box:[j.create([c,d]),j.create([c+x.size.x,d]),j.create([c+x.size.x,d+x.size.y]),j.create([c,d+x.size.y])],moments:g,rad:f,vec:j.create([Math.cos(f),Math.sin(f)])},l.push(h))}}return l}function t(a){function c(){var a;for(a=0;al&&e(h))):A.data[h]=Number.MAX_VALUE}var h,i,k=0,l=.95,m=0,n=[0,1,1],o=[0,0,0];for(f.init(z.data,0),f.init(A.data,0),f.init(B.data,null),h=0;h0&&A.data[h]<=k&&(i=B.data[h],n[0]=A.data[h]/(k+1)*360,b.hsv2rgb(n,o),g.drawRect(i.pos,x.size,G.ctx.binary,{color:"rgb("+o.join(",")+")",lineWidth:2}));return k}var u,v,w,x,y,z,A,B,C,D,E,F,G={ctx:{binary:null},dom:{binary:null}},H={x:0,y:0},I=this;return{init:function(a,b){u=b,E=a,h(),k()},locate:function(){var a,c=[],d=[];if(u.halfSample&&b.halfSample(E,v),m(),a=n(),a.lengthe?null:(c=o(e),0===c.length?null:d=p(c,e))}}}),d("bresenham",[],function(){var a={},b={DIR:{UP:1,DOWN:-1}};return a.getBarcodeLine=function(a,b,c){function d(a,b){l=s[b*t+a],u+=l,v=v>l?l:v,w=l>w?l:w,r.push(l)}var e,f,g,h,i,j,k,l,m=0|b.x,n=0|b.y,o=0|c.x,p=0|c.y,q=Math.abs(p-n)>Math.abs(o-m),r=[],s=a.data,t=a.size.x,u=0,v=255,w=0;for(q&&(j=m,m=n,n=j,j=o,o=p,p=j),m>o&&(j=m,m=o,o=j,j=n,n=p,p=j),e=o-m,f=Math.abs(p-n),g=e/2|0,i=n,h=p>n?1:-1,k=m;o>k;k++)q?d(i,k):d(k,i),g-=f,0>g&&(i+=h,g+=e);return{line:r,min:v,max:w}},a.toBinaryLine=function(a){var c,d,e,f,g,h=a.min,i=a.max,j=a.line,k=h+(i-h)/2,l=[],m=(i-h)/12,n=-m;for(d=j[0]>k?b.DIR.UP:b.DIR.DOWN,l.push({pos:0,val:j[0]}),f=0;fc&&j[f+1]<1.5*k?b.DIR.DOWN:c>m&&j[f+1]>.5*k?b.DIR.UP:d,d!==e&&(l.push({pos:f,val:j[f]}),d=e);for(l.push({pos:j.length,val:j[j.length-1]}),g=l[0].pos;gk?0:1;for(f=1;fl[f].val?l[f].val+(l[f+1].val-l[f].val)/2|0:l[f+1].val+(l[f].val-l[f+1].val)/2|0,g=l[f].pos;gm?0:1;return{line:j,threshold:m}},a.debug={printFrequency:function(a,b){var c,d=b.getContext("2d");for(b.width=a.length,b.height=256,d.beginPath(),d.strokeStyle="blue",c=0;cd;d++)if(e._row[d]^h)c[i]++;else{if(i++,i===f)break;c[i]=1,h=!h}return c},c.prototype._decode=function(){var a,c,d,e,f=this,g=[0,0,0,0,0,0,0,0,0],h=[],i=f._findStart();if(!i)return null;e=f._nextSet(f._row,i.end);do{if(g=f._toCounters(e,g),d=f._toPattern(g),0>d)return null;if(a=f._patternToChar(d),0>a)return null;h.push(a),c=e,e+=b.sum(g),e=f._nextSet(f._row,e)}while("*"!==a);return h.pop(),{code:h.join(""),start:i.start,end:e,startInfo:i,decodedCodes:h}},c.prototype._patternToChar=function(a){var b,c=this;for(b=0;bb&&(d=a[c]);return d},c.prototype._toPattern=function(a){for(var b,c,d=a.length,e=0,f=d,g=0,h=this;f>3;){for(e=h._findNextWidth(a,e),f=0,b=0,c=0;d>c;c++)a[c]>e&&(b|=1<c&&f>0;c++)if(a[c]>e&&(f--,2*a[c]>=g))return-1;return b}}return-1},c.prototype._findStart=function(){var a,b,c,d=this,e=d._nextSet(d._row),f=e,g=[0,0,0,0,0,0,0,0,0],h=0,i=!1;for(a=e;ab;b++)g[b]=g[b+2];g[7]=0,g[8]=0,h--}else h++;g[h]=1,i=!i}return null},c}),d("codabar_reader",["./barcode_reader"],function(a){function b(){a.call(this),this._counters=[]}var c={ALPHABETH_STRING:{value:"0123456789-$:/.+ABCD"},ALPHABET:{value:[48,49,50,51,52,53,54,55,56,57,45,36,58,47,46,43,65,66,67,68]},CHARACTER_ENCODINGS:{value:[3,6,9,96,18,66,33,36,48,72,12,24,69,81,84,21,26,41,11,14]},START_END:{value:[26,41,11,14]},MIN_ENCODED_CHARS:{value:4},MAX_ACCEPTABLE:{value:2},PADDING:{value:1.5}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decode=function(){var a,b,c,d,e,f=this,g=[];if(f._fillCounters(),a=f._findStart(),!a)return null;d=a.startCounter;do{if(c=f._toPattern(d),0>c)return null;if(b=f._patternToChar(c),0>b)return null;if(g.push(b),d+=8,g.length>1&&f._isStartEnd(c))break}while(df._counters.length?f._counters.length:d,e=a.start+f._sumCounters(a.startCounter,d-8),{code:g.join(""),start:a.start,end:e,startInfo:a,decodedCodes:g}):null},b.prototype._verifyWhitespace=function(a,b){return(0>=a-1||this._counters[a-1]>=this._calculatePatternLength(a)/2)&&(b+8>=this._counters.length||this._counters[b+7]>=this._calculatePatternLength(b)/2)?!0:!1},b.prototype._calculatePatternLength=function(a){var b,c=0;for(b=a;a+7>b;b++)c+=this._counters[b];return c},b.prototype._thresholdResultPattern=function(a,b){var c,d,e,f,g,h=this,i={space:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}},bar:{narrow:{size:0,counts:0,min:0,max:Number.MAX_VALUE},wide:{size:0,counts:0,min:0,max:Number.MAX_VALUE}}},j=b;for(e=0;e=0;f--)c=2===(1&f)?i.bar:i.space,d=1===(1&g)?c.wide:c.narrow,d.size+=h._counters[j+f],d.counts++,g>>=1;j+=8}return["space","bar"].forEach(function(a){var b=i[a];b.wide.min=Math.floor((b.narrow.size/b.narrow.counts+b.wide.size/b.wide.counts)/2),b.narrow.max=Math.ceil(b.wide.min),b.wide.max=Math.ceil((b.wide.size*h.MAX_ACCEPTABLE+h.PADDING)/b.wide.counts)}),i},b.prototype._charToPattern=function(a){var b,c=this,d=a.charCodeAt(0);for(b=0;b=0;d--){if(e=0===(1&d)?j.bar:j.space,f=1===(1&h)?e.wide:e.narrow,g=i._counters[k+d],gf.max)return!1;h>>=1}k+=8}return!0},b.prototype._fillCounters=function(){var a,b=this,c=0,d=!0,e=b._nextUnset(b._row);for(b._counters.length=0,b._counters[c]=0,a=e;ac;c+=2)d=this._counters[c],d>f&&(f=d),e>d&&(e=d);return(e+f)/2|0},b.prototype._toPattern=function(a){var b,c,d,e,f=7,g=a+f,h=1<this._counters.length)return-1;for(b=this._computeAlternatingThreshold(a,g),c=this._computeAlternatingThreshold(a+1,g),d=0;f>d;d++)e=0===(1&d)?b:c,this._counters[a+d]>e&&(i|=h),h>>=1;return i},b.prototype._isStartEnd=function(a){var b;for(b=0;bc;c++)d+=this._counters[c];return d},b.prototype._findStart=function(){var a,b,c,d=this,e=d._nextUnset(d._row);for(a=1;ad;d++)a=e._decodeCode(a.end),b.push(a.code),c.push(a);if(a=e._findPattern(e.MIDDLE_PATTERN,a.end,!0),null===a)return null;for(c.push(a),d=0;4>d;d++)a=e._decodeCode(a.end,e.CODE_G_START),c.push(a),b.push(a.code);return a},b}),d("barcode_decoder",["bresenham","image_debug","code_128_reader","ean_reader","code_39_reader","codabar_reader","upc_reader","ean_8_reader"],function(a,b,c,d,e,f,g,h){var i={code_128_reader:c,ean_reader:d,ean_8_reader:h,code_39_reader:e,codabar_reader:f,upc_reader:g},j={create:function(c,d){function e(){if("undefined"!=typeof document){var a=document.querySelector("#debug.detection");o.dom.frequency=document.querySelector("canvas.frequency"),o.dom.frequency||(o.dom.frequency=document.createElement("canvas"),o.dom.frequency.className="frequency",a&&a.appendChild(o.dom.frequency)),o.ctx.frequency=o.dom.frequency.getContext("2d"),o.dom.pattern=document.querySelector("canvas.patternBuffer"),o.dom.pattern||(o.dom.pattern=document.createElement("canvas"),o.dom.pattern.className="patternBuffer",a&&a.appendChild(o.dom.pattern)),o.ctx.pattern=o.dom.pattern.getContext("2d"),o.dom.overlay=document.querySelector("canvas.drawingBuffer"),o.dom.overlay&&(o.ctx.overlay=o.dom.overlay.getContext("2d"))}}function f(){var a;for(a=0;a1&&!d.inImageWithBorder(a[0],0)||!d.inImageWithBorder(a[1],0);)c-=Math.floor(c/2),e(-c);return 1>=c?null:a}function j(a){return[{x:(a[1][0]-a[0][0])/2+a[0][0],y:(a[1][1]-a[0][1])/2+a[0][1]},{x:(a[3][0]-a[2][0])/2+a[2][0],y:(a[3][1]-a[2][1])/2+a[2][1]}]}function k(e){var f,g=null,h=a.getBarcodeLine(d,e[0],e[1]);for(c.showFrequency&&(b.drawPath(e,{x:"x",y:"y"},o.ctx.overlay,{color:"red",lineWidth:3}),a.debug.printFrequency(h.line,o.dom.frequency)),a.toBinaryLine(h),c.showPattern&&a.debug.printPattern(h.line,o.dom.pattern),f=0;fd&&null===i;d++)e=g/h*d*(d%2===0?-1:1),f={y:e*j,x:e*l},b[0].y+=f.x,b[0].x-=f.y,b[1].y+=f.x,b[1].x-=f.y,i=k(b);return i}function m(a){return Math.sqrt(Math.pow(Math.abs(a[1].y-a[0].y),2)+Math.pow(Math.abs(a[1].x-a[0].x),2))}function n(a){var d,e,f,g,i=o.ctx.overlay;return c.drawBoundingBox&&i&&b.drawPath(a,{x:0,y:1},i,{color:"blue",lineWidth:2}),d=j(a),g=m(d),e=Math.atan2(d[1].y-d[0].y,d[1].x-d[0].x),d=h(d,e,Math.floor(.07*g)),null===d?null:(f=k(d),null===f&&(f=l(a,d,e)),null===f?null:(f&&c.drawScanline&&i&&b.drawPath(d,{x:"x",y:"y"},i,{color:"red",lineWidth:3}),{codeResult:f.codeResult,line:d,angle:e,pattern:f.barcodeLine.line,threshold:f.barcodeLine.threshold}))}var o={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},p=[],q=null;return e(),f(),g(),{decodeFromBoundingBox:function(a){return n(a)},decodeFromBoundingBoxes:function(a){var b,c;for(b=0;b1?(k.x=i.size,k.y=j.y/j.x*i.size):(k.y=i.size,k.x=j.x/j.y*i.size)),d=j.x,e=k.x,f=j.y,g=k.y,p=c?c:document.createElement("canvas"),p.width=k.x,p.height=k.y,q=p.getContext("2d"),r=new Uint8Array(k.x*k.y),h.attachData=function(a){r=a},h.getData=function(){return r},h.grab=function(){var c,h=i.halfSample,j=b.getFrame();return j?(q.drawImage(j,l,m,d,f,n,o,e,g),c=q.getImageData(0,0,k.x,k.y).data,h?a.grayAndHalfSampleFromCanvasData(c,k,r):a.computeGray(c,r),!0):!1},h.getSize=function(){return k},h},b}),d("html_utils",[],function(){function a(a){var b=document.createElement("div");for(b.innerHTML=a;b.firstChild;)return b.firstChild}function b(a,c){for(var d in c)try{a[d]=c[d].constructor==Object?b(a[d],c[d]):c[d]}catch(e){a[d]=c[d]}return a}return{createNode:function(b){return a(b)},mergeObjects:function(a,c){return b(a,c)}}}),d("config",[],function(){var a={inputStream:{name:"Live",type:"LiveStream",constraints:{width:640,height:480,facing:"environment"}},tracking:!1,debug:!1,controls:!1,locate:!0,numOfWorkers:4,visual:{show:!0},decoder:{drawBoundingBox:!1,showFrequency:!1,drawScanline:!1,showPattern:!1,readers:["code_128_reader"]},locator:{halfSample:!0,patchSize:"medium",showCanvas:!1,showPatches:!1,showFoundPatches:!1,showSkeleton:!1,showLabels:!1,showPatchLabels:!1,showRemainingPatchLabels:!1,boxFromPatches:{showTransformed:!1,showTransformedBox:!1,showBB:!1}}};return a}),d("events",[],function(){var a=function(){function a(a){return e[a]||(e[a]={subscribers:[]}),e[a]}function b(){e={}}function c(a,b){a.async?setTimeout(function(){a.callback(b)},4):a.callback(b)}function d(b,c,d){var e;if("function"==typeof c)e={callback:c,async:d};else if(e=c,!e.callback)throw"Callback was not specified on options";a(b).subscribers.push(e)}var e={};return{subscribe:function(a,b,c){return d(a,b,c)},publish:function(b,d){var e=a(b),f=e.subscribers;e.subscribers=f.filter(function(a){return c(a,d),!a.once})},once:function(a,b,c){d(a,{callback:b,async:c,once:!0})},unsubscribe:function(c,d){var e;c?(e=a(c),e.subscribers=e&&d?e.subscribers.filter(function(a){return a.callback!==d}):[]):b()}}}();return a}),d("camera_access",["html_utils"],function(a){function b(a,b,c){navigator.getUserMedia(a,function(a){f=a;var c=window.URL&&window.URL.createObjectURL(a)||a;b.apply(null,[c])},c)}function c(a,c,d){b(a,function(a){c.src=a,c.addEventListener("loadeddata",function(){function a(){b>0?c.videoWidth>0&&c.videoHeight>0?(console.log(c.videoWidth+"px x "+c.videoHeight+"px"),d()):window.setTimeout(a,500):d("Unable to play video stream. Is webcam working?"),b--}var b=10;a()},!1),c.play()},function(a){console.log(a)})}function d(b,c){var d={audio:!1,video:!0},e=a.mergeObjects({width:640,height:480,facing:"environment"},b);return"undefined"==typeof MediaStreamTrack.getSources?(d.video={mediaSource:"camera",width:{min:e.width,max:e.width},height:{min:e.height,max:e.height},require:["width","height"]},c(d)):void MediaStreamTrack.getSources(function(a){for(var b,f=0;f!=a.length;++f){var g=a[f];"video"==g.kind&&g.facing==e.facing&&(b=g.id)}return d.video={mandatory:{minWidth:e.width,minHeight:e.height},optional:[{sourceId:b}]},c(d)})}function e(a,b,e){d(b,function(b){c(b,a,e)})}var f;return{request:function(a,b,c){e(a,b,c)},release:function(){var a=f&&f.getVideoTracks();a.length&&a[0].stop(),f=null}}}),d("quagga",["code_128_reader","ean_reader","input_stream","image_wrapper","barcode_locator","barcode_decoder","frame_grabber","html_utils","config","events","camera_access","image_debug","cv_utils"],function(b,c,d,e,f,g,h,i,k,l,m,n,o){function p(a){w(a),L=g.create(k.decoder,J)}function q(){for(var a=[{node:document.querySelector("div[data-controls]"),prop:k.controls},{node:M.dom.overlay,prop:k.visual.show}],b=0;b0?B(function(){console.log("Workers created"),u(a)}):(p(),u(a))}function u(a){G.play(),a()}function v(){var a=document.querySelector("#interactive.viewport");if(M.dom.image=document.querySelector("canvas.imgBuffer"),M.dom.image||(M.dom.image=document.createElement("canvas"),M.dom.image.className="imgBuffer",a&&"ImageStream"==k.inputStream.type&&a.appendChild(M.dom.image)),M.ctx.image=M.dom.image.getContext("2d"),M.dom.image.width=G.getWidth(),M.dom.image.height=G.getHeight(),M.dom.overlay=document.querySelector("canvas.drawingBuffer"),!M.dom.overlay){M.dom.overlay=document.createElement("canvas"),M.dom.overlay.className="drawingBuffer",a&&a.appendChild(M.dom.overlay);var b=document.createElement("br");b.setAttribute("clear","all"),a&&a.appendChild(b)}M.ctx.overlay=M.dom.overlay.getContext("2d"),M.dom.overlay.width=G.getWidth(),M.dom.overlay.height=G.getHeight()}function w(a){J=a?a:new e({x:G.getWidth(),y:G.getHeight()}),console.log(J.size),K=[j.create([20,J.size.y/2-100]),j.create([20,J.size.y/2+100]),j.create([J.size.x-20,J.size.y/2+100]),j.create([J.size.x-20,J.size.y/2-100])],f.init(J,k.locator)}function x(){return k.locate?f.locate():[K]}function y(){var a,b;b=x(),b?(a=L.decodeFromBoundingBoxes(b),a=a||{},a.boxes=b,l.publish("processed",a),a&&a.codeResult&&l.publish("detected",a)):l.publish("processed")}function z(){var a;if(O){if(N.length>0){if(a=N.filter(function(a){return!a.busy})[0],!a)return;H.attachData(a.imageData)}else H.attachData(J.data);H.grab()&&(a?(a.busy=!0,a.worker.postMessage({cmd:"process",imageData:a.imageData},[a.imageData.buffer])):y())}else y()}function A(){I=!1,function a(){I||(z(),O&&"LiveStream"==k.inputStream.type&&window.requestAnimFrame(a))}()}function B(a){function b(b){N.push(b),N.length>=k.numOfWorkers&&a()}var c;for(N=[],c=0;c0&&N.forEach(function(b){b.worker.postMessage({cmd:"setReaders",readers:a})})}var G,H,I,J,K,L,M={ctx:{image:null,overlay:null},dom:{image:null,overlay:null}},N=[],O=!0;return{init:function(a,b,c){return k=i.mergeObjects(k,a),c?(O=!1,p(c),b()):void r(b)},start:function(){A()},stop:function(){I=!0,"LiveStream"===k.inputStream.type&&m.release()},pause:function(){I=!0},onDetected:function(a){l.subscribe("detected",a)},onProcessed:function(a){l.subscribe("processed",a)},setReaders:function(a){F(a)},canvas:M,decodeSingle:function(a,b){a=i.mergeObjects({inputStream:{type:"ImageStream",sequence:!1,size:800,src:a.src},numOfWorkers:1,locator:{halfSample:!1}},a),this.init(a,function(){l.once("detected",function(a){I=!0,b.call(null,a)},!0),A()})},Reader:{EANReader:c,Code128Reader:b},ImageWrapper:e,ImageDebug:n}}),c("quagga")}); \ No newline at end of file diff --git a/example/file_input.html b/example/file_input.html index 429fe27..3e73d20 100644 --- a/example/file_input.html +++ b/example/file_input.html @@ -44,7 +44,9 @@ diff --git a/example/file_input.js b/example/file_input.js index 2ae87bc..049981d 100644 --- a/example/file_input.js +++ b/example/file_input.js @@ -99,7 +99,7 @@ $(function() { }, numOfWorkers: 0, decoder: { - readers: ["ean_reader"], + readers: ["ean_8_reader"], showFrequency: true, showPattern: true }, diff --git a/example/live_w_locator.html b/example/live_w_locator.html index b558e34..5cd4ad4 100644 --- a/example/live_w_locator.html +++ b/example/live_w_locator.html @@ -29,8 +29,10 @@
+ + - + @@ -54,7 +56,7 @@ - + diff --git a/example/live_w_locator.js b/example/live_w_locator.js index 7c6614e..b6f459a 100644 --- a/example/live_w_locator.js +++ b/example/live_w_locator.js @@ -7,7 +7,7 @@ $(function() { type : "LiveStream" }, decoder : { - readers : ["upc_reader"] + readers : ["ean_8_reader"] } }, function() { App.attachListeners(); diff --git a/src/barcode_decoder.js b/src/barcode_decoder.js index 8bb7c56..9f746ec 100644 --- a/src/barcode_decoder.js +++ b/src/barcode_decoder.js @@ -1,12 +1,30 @@ /* jshint undef: true, unused: true, browser:true, devel: true */ /* global define */ -define(["bresenham", "image_debug", 'code_128_reader', 'ean_reader', 'code_39_reader', 'codabar_reader', 'upc_reader'], function(Bresenham, ImageDebug, Code128Reader, EANReader, Code39Reader, CodabarReader, UPCReader) { +define([ + "bresenham", + "image_debug", + 'code_128_reader', + 'ean_reader', + 'code_39_reader', + 'codabar_reader', + 'upc_reader', + 'ean_8_reader' +], function( + Bresenham, + ImageDebug, + Code128Reader, + EANReader, + Code39Reader, + CodabarReader, + UPCReader, + EAN8Reader) { "use strict"; var readers = { code_128_reader: Code128Reader, ean_reader: EANReader, + ean_8_reader: EAN8Reader, code_39_reader: Code39Reader, codabar_reader: CodabarReader, upc_reader: UPCReader diff --git a/src/ean_8_reader.js b/src/ean_8_reader.js new file mode 100644 index 0000000..12b01d9 --- /dev/null +++ b/src/ean_8_reader.js @@ -0,0 +1,45 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define( + [ + "./ean_reader" + ], + function(EANReader) { + "use strict"; + + function EAN8Reader() { + EANReader.call(this); + } + + EAN8Reader.prototype = Object.create(EANReader.prototype); + EAN8Reader.prototype.constructor = EAN8Reader; + + EAN8Reader.prototype._decodePayload = function(code, result, decodedCodes) { + var i, + self = this; + + for ( i = 0; i < 4; i++) { + code = self._decodeCode(code.end); + result.push(code.code); + decodedCodes.push(code); + } + + code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); + if (code === null) { + return null; + } + decodedCodes.push(code); + + for ( i = 0; i < 4; i++) { + code = self._decodeCode(code.end, self.CODE_G_START); + decodedCodes.push(code); + result.push(code.code); + } + + return code; + }; + + return (EAN8Reader); + } +); \ No newline at end of file diff --git a/src/ean_reader.js b/src/ean_reader.js index 20ae675..983ad68 100644 --- a/src/ean_reader.js +++ b/src/ean_reader.js @@ -200,13 +200,50 @@ define( return null; }; + EANReader.prototype._decodePayload = function(code, result, decodedCodes) { + var i, + self = this, + codeFrequency = 0x0; + + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end); + if (code.code >= self.CODE_G_START) { + code.code = code.code - self.CODE_G_START; + codeFrequency |= 1 << (5 - i); + } else { + codeFrequency |= 0 << (5 - i); + } + result.push(code.code); + decodedCodes.push(code); + } + + for ( i = 0; i < self.CODE_FREQUENCY.length; i++) { + if (codeFrequency === self.CODE_FREQUENCY[i]) { + result.unshift(i); + break; + } + } + + code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); + if (code === null) { + return null; + } + decodedCodes.push(code); + + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end, self.CODE_G_START); + decodedCodes.push(code); + result.push(code.code); + } + + return code; + }; + EANReader.prototype._decode = function() { var startInfo, self = this, code = null, result = [], - i, - codeFrequency = 0x0, decodedCodes = []; try { @@ -217,37 +254,7 @@ define( end : startInfo.end }; decodedCodes.push(code); - for ( i = 0; i < 6; i++) { - code = self._decodeCode(code.end); - if (code.code >= self.CODE_G_START) { - code.code = code.code - self.CODE_G_START; - codeFrequency |= 1 << (5 - i); - } else { - codeFrequency |= 0 << (5 - i); - } - result.push(code.code); - decodedCodes.push(code); - } - - for ( i = 0; i < self.CODE_FREQUENCY.length; i++) { - if (codeFrequency === self.CODE_FREQUENCY[i]) { - result.unshift(i); - break; - } - } - - code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); - if (code === null) { - return null; - } - decodedCodes.push(code); - - for ( i = 0; i < 6; i++) { - code = self._decodeCode(code.end, self.CODE_G_START); - decodedCodes.push(code); - result.push(code.code); - } - + code = self._decodePayload(code, result, decodedCodes); code = self._findEnd(code.end); if (code === null){ return null; diff --git a/test/fixtures/ean-8/image-001.jpg b/test/fixtures/ean-8/image-001.jpg new file mode 100644 index 0000000000000000000000000000000000000000..feec8774d5a087225b6fcfa3ab7d52b9e96e6b90 GIT binary patch literal 48751 zcmb4qWprCT(58b;!<>eh8%BrPFf%xuhMAe0G|(_JGc$9;%*@QtFvGgT|8DRF4ZdOEU|^u3Vc8Y|DRF-#DAq9D*!|&a7|PwRB!|LYi(o6he{!;HdDvvs9YP7({BV^re_t zEh8DVe1V>Us1fz6v0xs`CM@_mJ=>qO;zV#Lx$p6vTN*A0S`|r@rMQp-b5^(?5dTNX zK=hN~pv~p0$KI|^w`0zEru?bELoA-SE$U}>KMaXrS->_Y8ty7Cxk2e-3v7(WgsmyL z=7D)^s6?ot_ON+A!15;`6_TsozENVHm8%BPGA|L*Y6d1wvLwdbPqY!VKC(<3iEqzw zIq#am#5VIJ5F#l{qCgP`N%k`|AM!hzEOZ0~oK--KbokOCkUeMQ%u!V!_)M4l`~x7o zJFr++6;2I+3+RS7ryv(muAPoZNLjN}x1b$#;CC#-8sc@=H;S0$)}mJq=cC58gX;?y zF%WCQbYLcr6q6V-j^N}Nm#wf%Go*}V>_|g5%(wM4Scaa@84Ruo$jZI-dJx=ww)tKv zf*k|%8xu)H!4HWf4qYftcbxLj%-(a=`p3dDvDv6>}XMS^3TIf@AC8VI8m_hG1=vr2q63&^)u>>IpUR>LEWfF z&iud!!1Ai=$Gz7mMDN0N>TffSF5x-6)HO*pYB^#WC6)=4`eYO((F;W>=<+J~%}UcZg(vzw z3xXtfJca^#4q5^N_J^>cl>xMVmDVJ&(D1Oic$YeO55N-*vSuK^-UvVM?DmS`>iJ_% zC8DABTrYx2@`h`QmIoW(0|LLd1rzRZU6=IaVdB-(3%(vDgd@&U9)tkS9 zR@ePK=ylIz*k|0ZT+`}x;YqMTYvAbTC{XzSoo(bRW!1OOEVy+xU$jT1Km6WF0w*FwP zCHss-TOXXqLC$p-W8K6F1LWT``?+WP$dD+~nMrZoXLX-~pR+_L9hCYmDiz{rSw9;X zDGJ~g3RAEts?;elv5qt7dh=VO?LE_yaFP7XR##vT1rYe_!!ZZ=kyViW?sPZQ7#EE& zmdSX?yw7NVKM;H-{#-MRpUCmYzNTAQDAd}{dnm)PsEtZ>WW7$vRx?Q0r18R`X55*` zwAS3hB|S?qu4zx8Yk0RwI)@qM>V2CIseJwh5T|fOvP@0;a!=p8-GLL^wtLIPlGv)1vMzwteY4T6 zYdd=S{9@2V7ziI8*JKquiqu6rWeQ+H%wc0a8mk@t{{tD zUU*iCpq~+zUAxyIFfD>`@EsQOL7aq5T3{jWHvg9CO@2IxKjEuo>Hw?6!OmXmBu?4c zr9A_`%}fENZf6G`?!qKXgDQ^;gLcw{@Pb`;$C(fLxmyOgx%&rzXno)tmqiv+*r_v} zS50T(2w#6^)|d7v4++z>XK(K(mQlhk=I=_8pL2|uWudk0WTEFUZ4^U$?rf><1sEe^ zC=VV0TM!grM6rIi zm0?LVIvnAsz90ZBekA^GSca*gbA;tri+Bhv}JB=qw(0jj*N4L4O4 z2eM0$ks3;~n`y`8?J*|bMqjjnBnu?IB&sNtFjDP+I=aFkrGsX!8Hio-X~k>+$NEk; zqi8;+%I>WF1282}^v94Q%EpB~h?5I?DMF(quK==(Z1Rq$sVdmH<2TypKxJ9_&>h@pEy=yl_Y@pEpjC#5wUqg^%d7&pD4K#V&3Cc`PFW^6GTwM1Ok z4HuEE8wVO=G3^(dI4eEW5mS~x(AG(9^v&}O9Q^0{SOb#k{O^1nxwj?Q$>j>AHd;Zi zsZq4(k>2XJ%IE`E9)pGMT;*?EznAi(iXti;H4U}7dSp(zN{b@FT94ONE^`kWI%TE*|yy6oW|d+GE0Y4gbUTWPPv*6H`3G*p-fX2Fnd zF@fjo=~E+OFmluVKopin9>l+gE*-N9WsFkE(+-ur%U+&K0$~GI4&uu_1N;dLV6&oM z+73G+yY3SAklgOv+=0#d{^VP9jVqwvS-baojUuy~Tf-=D^n{|l<&CU%h_ULvNVIry z)tUQ^ea|z}QZ#wJXr^BW(Qk~gV)$BTj32R>Je9Cz1~y({98M5=s=rrm-)yE)H`9oZ zIOpBkMyruxDy$MBFV?`(PAxnUtTWdx~df344;ZlWv)4M z>O-|V!}9&xOsLNL*KLBBXI(9FPYcb(YJ8ouKaDo=|sWQj47m{tzCPW4LQ&mI%2e%e}cH;Q}0B>~>;&iJb zs{8g2Ul`p>mA{l|#PN`<_yWH;dlK1COE373dp~uINF>E{gs03ba*s^#(d!Sb? zEcZqWhrfwo(x74811He4sO5lWFKYJY%i>_6wPh;jp&6&;P~jc+`ej-M>i831W`5Xy z3o&TVP{tSYVH1Oi@dMzvQk1l|b%!f9AuyPHZM%Baz(MHLLSP!J^eni^&bc@nc90Z2 z6Z5)r<&Eojkh!5(q}C*NNm;mGJqjlbeJR?l*>81GX_IKRfYatC-*V;TL{Y_6kGcR1 zkBAi|6f0LKNU&H3Her;saI~MvT3Y(<25ZR(nphA7M4~GCaZ|;bR9Cd#q&qH?0d(DH+mw! za%!}MgY#1NJ>^*DIn5AM3aZiY_r4EIKsE+?4!QUQxx5~ayQBszihqlrMlxP!p2jIxu<-y55jgGLTq+6I;@oGfE$hfb{Sp|hQX zJpn$ECpR~Z?yjB)ove)KSi+wQ^H5@L+dCw9@SmOu2+@KOZ}myON5cV209$`ziHVac z;?_rg^9YlslKA6hN03w*)T_#@e?4*&sN36!8tuvkjZa*+H8`5f3{lO`rH;+leVwI5 zhN3socax<%<;i!P+;$$$G^D1T9`Vn#JufsD9^8caO=Uj3UASCjIK690VcM|+UR_v` z8~zd19d(=?CcTUF)FIj3x}67^A|G(;+AcU=Jlc#MANn}sWViE$EzoZU*W`$c|0*O= zbHO|KDM|wQ6HEqB@dK-U=li4#q}AgX3WDq`c4`fpjG160vs_OIu3v*j(l#oik#z?6j~;X?uc$T)c>(Bw%-m5mw% z)Mp411%PHiv?=fS?b@U%t%P-qzgaLen=lrVCDu)=#tQJHrZv(q`*3!7NcU5@()aWN z^pwgRk>a&-jzRM{H~3dy5NEjta-Q~H;vIhCLVekcnfJ;;CSxDE466tY_3v9#^Qfp} zA1{vHyhKj^3bDaD{*uF~J)1W;_x?bg7q3+V%jU6}L)H$DHFBM2C~h~C4#>rnXFfuz zPJzL!S#;S^k(nt`Xp-+#E!lAj`VJko@`HqpRP7P$ibOkSC^gNq$cpej29W*j^myg8(w>G~cc(TqR7|93PVkqCxo z-z-37CU@$+O5Y+Ie=XU*#rnh7?PB`#6V;=-GR()LgBQfHp@iGp%bcW!>C3ltfjHBo zy8g~tyS#~3i1C^Xp8Z_pRsqQh7lvI!=|*if+!_1ClfQnF=J2!zax_#yHh2ppp#}d$ zBo`LA2VG29b@89^C~UEWI#Z)L;F<7kfg8<@#giiO`wk(%H@P=UkG4BK9+U ze1xM<(Vx$Zm2fNf+C5`Z}jxns7BeLCW*YzaDuqU#i10=66O zZ20op8QW;5&hvG_QU2sK_u=y@C@y34Y&V~k^ExI)&*YSa7m?vf9vMB}K`fnl5^)Wy zd|{&a(A*RS?~XnN)K$3f^jF7_NM2_3&$r0){famrB!k#QiWv!lR0T9du-3xRX|vq( zn_rY9P$i5@;1!}~-K<4j-NTK-XX(y7$t~KW^oCPsT)*!;;jI@?I@))JV5=TDK16A{ zulu|eA5e$I(8#D(dUIJWa+L$ z4_az~NKheZbSq}R`;Uo}sj1vd@~;P@w_V@jqOM=?6?xSysSNEtYe`X!{HfA>MKAfB zlW48l4Af;n_B=W8WL{zS1&7brQ2`Lp5RlL?P*C6)8vqI%D*G?EhK3G{ib0BrMZ(O2 z&B{jhUGNh*1tkX#I~Au8IIso>t_lGIN#}aRI8x|S2%^;~DHF1cEa(}x@XuFGyKE4t z@MaVt!_IuVJv~~CdAh?GVzZBAo_0Lz_8osKTdNq&ZelFhm%9tzes2!N7TWybFpZsy zMqEQXF$Gm@cUU@ac|319#-)tU4qX;}Yxess?OIt$YG`p*0&2wAMV+)=xN0(Znx)Sdb-HJYFHdv) zSF?yd%NE6V^sQn!{_ot_8&-%jAHm-n#rs=LGVI?EB4lU>YMB*4FJi?#Z_?JnfnV8icYb{REU4KX8gt&r!^Qr)~Z5-*zq5geLkVa}q(HD4C`8_d@N8;CR+ zcw;t2i^$h~@lhi<*~v8-*bfxtMEQ02YoKIY&yD#j2uBT&=+V!cI=Y9LcK4y3g_S-z zi5udv6p1yG^*5QImh@ner;ucL{_fO`-(-&2z(Mcj~Z-0PU4 zr*d+V=b~Zj^76APW-7YLf?P;yvGMYkpH`|nw?!lL0ie+W3ZUuA7Z&5#gi*wJ6oI|5 zDzt*VA)fMIQ~fgL%J+5r%rt4)?g|gF807+aM-bMBU5)30j~8j{k|n&q@s2nsy&_jK zM?V0E-_bq~HDKrVH`V#CuF8FPq`9HVRg{xg>pX&uexIM1>s`AzyEq`tDcNXh1R@`y zVs|v?3?om$RC#-zbVb#-wR}Sm5t;oV%&rWr({$Nvbc7fmqC(}dT23?96kDW!>yyujXdL>NcQXj1|2`XU-zjGrz zR81%kaJJMQ7gtPPOLL&#dsN*{3f6(y_CJD|vN(d7M#!I^u{aK_rq|>Md(s{iY^7vKi8OpguhWJ>5!8RM z+^-%kPjCRY92OZ;)*H8CU7F7EP}2|f?5tU#*507`Twz)FC>}TI5K5C9>X5WkydL{j zCpMLedOiy4+kem2uwR3e?p(v}ws}{hf5=o7=<=K_5HP(%8hQ6@zv&+&z~|5wT;*e_ z&Qn*yl28yTfy<|CNG|}dLYBWS$?yU^Y0$h`oVGk8d(^XqbnZ zg!HXD!z!|Le6%><;VQD1Rv*-jX)eP}Aq_ZWyv<5%y)y(l_UVoDH;?o97P4nGLgDTKh`zvW7K8(J+j#sspS@)2kTa9 zU@}Dv_uBApyc8cDlFNxt#(h>xTZ?5{kJPm}81G*`B_uyryGdptoqe6r8&UEuwqQWx>2H#BzDE+AC<_#T6g;N_zR9iXD>gw`{wl4h#}bzpQT>#b7BSGiU^K`}9PO+5wMdvyk8wD=&VBXr-k8x`_SOAF zz`Wo0FS8{^AIJ5D>nDS??e52d+e8}Dp2zCWi~(roW$On4S2jf(qqfSYdeZIli!nbVtF_r!YyVrv(&qt0gu_>dEUeV+pd5j0zeD4>Z@ZFkoAcI+tq33K=y`?R8cy zWsNUDC1cB}%VsNoMk!kSo|Di&0MC2eZjJ<8L6eUh;nicoIHM7L&U{o@Wj2_MooHcW z%oRkgK?Z!{!4}VTsA#)<5~{2U#uiaoyW9UE5llkxTL&M2u#31{uVj>5J zYI#E}23;aN&Prg;WMyJY#5&+=wUI2&uikj8gKtk%KL8m(l;bJkXGgHu6Js*yOf zucLI^5|(7`EyyzXl&Rda=jN{gi?<%fpB^4#55359Ak(+NoPyt@A36NU7bw=n!U@rV zxXTOIg+@>Iv|HdmQO5!c3jeD(?Cl&U9^tU>t)EI`FW`Q3*c>uA?iO8z(|4iOoG}`l z=G?sg4a6GC7fL%Ks&7~4vg19hlRd1tLK-nUDux7wpRMW0cXz0Mp8BgvWzU-t zn`i0usYsEJsV0h#C0b8vogS%27{h166i3sy#BSRg^c&&iRq44GFY3#bp1O*jT2E&= zjN(vwg7S*2;+~>-jGUYjJ&fI{%MSl2-Z2Lod70u$PS_7PN199#i$=@^hLDKq$0VD) zQ&*=k%wQT4BpnW$FdI;gX#5W(I2Q9&o6>cO3t>dEFKZBLW`aMuBdTXw+k{E zJkRu-L;1?1232F;^;DQ(v`KYITCFrWTr?}XCAN+>pMdfId7uJyb;TyE3t(#HPuU+9 za2}uK94ySVFtmzDZ~R?ObO+M^8j%b(Rtn*l$NfGQGSD+u$g^T^x@Bu)qX;jnL z8ndc3w8y+cny`z1;;Wj9%lY%y;+Zn+=(*dQHVWamTpBdHq`Kz@n@Lz9R$=ZbJC++t zJ5*Gna*{lg)d~qUB}FL#o}9f2+T}G=4P6Tak1defP&jb(v>6gxH(czR2e0;Z>H!DO z!)PM{hEsAc$JW)LG6IJVzkt#KrA84cPVh}T^r86QE7G~qY>^na&7pb&KXZFKSNl0% z(KfQ2_ALta^bQ@9Cfzvx$1}7lo6a`#Z_`JV=$UtXr^590w}Cx!Z+uau7jzxV$gscV z26ppUc8}xNoZx2tDvaXyLbR>0pguc{VpGX1m{;V zn6NQB23=Qwi{~(SoOy1Ss&W=2@dy?{BJKg0h)K0^PT%*)e*gjUOJzNgz6#uzsc2{3 zv7feAR_TZnrPpgZt~JYU?&Y1(fr6kcP$Pw!mG(|xr|YJMFV=~$*{Hr@#TtEiWt6P9 zysS4Z67685*dd=E+GDPj{L#zHh86++6&>_Ujo)mi#-O&XZ4G=(3T_`I;})a5t@s{{ zXz2e1Q9)NcP*>g$VU*jA38ptJhW^!0V^pI2~|Qz{X7{PwA>loCCQD%2dTCXUnM zyeU9~V8Lkq9_hTBjzV#>gFr&p)^q6265>)NP61N&8vpmKuu>S!H|;Www@Um11`~Mu zi_4l5G9(QvnOcpKuo{N52>QBl-^Qu zAg-$^4lpt=wJKUxGn$^u*@tMT_m^|Z&JGcUEsAv1h*|wT%BpGo>j?PS>HnTS&pUr- zenJTxk#tg)OPwY4Z;fO?B{)3LX}GNiM8SNhNq{0Y`3>hmvoW0k(4K=>A@jV z1e9b9)wq)hANt`ZP823*RQdDs7zB&;ypEss%E|cqsSis24U<;lew%2QYKtwN3AK+r zLr|Z%5JM~00GpUjpnJHOD{ILNBXR%Y2-~n3M4wyfocSU557Q#s+iS`XK&G1Tv!^UF zAQyG(tHU$K7t}2)&1Y&%Y+eX)9EO^=3oxkVM1fL;PXiBw*VABS;ZREyWQkI&#w%Pf zcjp>;kN{)zJzVwKTWR+G;?8Lj=G%IJ1K2(&m2X)HYW5B?RzPKBp-zoj69(O~m=c1s zFk08&`Yb>4nffmGAg!W#wUTx!C|dei7XAA!>Zs7sS#ErcE0xz z3l%}f64A(pmP7x-&R>-=tmmM zgZ_axWtqiFy_VXX)+&?WMC=&z!O?mS1MRV0k!pAq2n`9ZR+=^M9ybc%;09OBp1yg4 zfu-G>Z6|sq!P!W!Vz?qsH=vTNA#nd*yS;Wiz9xW5hj)yn~Fn4u012{O%Q7kv)%IAnXr>`Lm>l7=dHy87jLzeEgjYFRu$v`s?@Xu<- zw;}XLk0Z~ltkLJsyRy4n-5r}y(P*#=%M6YgLs1Lgx+cl^kIn6*g@6TdOwjUm4m@KPIhQ`(V@Z>&|7bcr zpT9_(g>i+cI?GVCEHgzrfly_LT`<)HARHs-5G#w7hW9n_4d!JvY`ytsDw@GkGWL8C z%cVDUe8qf1sRs5A8i!8XEEd^~?D+-UUZSe?) z(W3vkYKbCk#)&))9k`!@o!LJR4rwXWzM55SOzX8u#=JyP6-F8{11la82wwg_LHvco;$H_*rVp@sIIZ)x@Bp0R9pOu`+uB&N0wse*fnwo4ep}ke_b3+ zrFUtN_u0=qu8cjdOntmX{VmJmU`sysf+0O)SZg0hWkB`iI%cGBv>)R{*Sb;EPW{(- z8V0O+EBi^!@y3Pn*#THMMR_IKB)F`5f$0CbH?5u}=yDOdey)7D)>LuovC;Z_Bs?<~ z$X@s?U#;5Oh|kV`z)5kUoT|A%i6&r{-~9o&G~RL!bIDCO`PM{~ah4^fe0KX!cR-0k zZ7Sat56FLgj#1AN^|+Y#c`uY4jZ$>R`FG=D?^hK^DrQL@sLXO=gQ2E}iypbB#H<-H zT0ZzqZsJ(L`)t9Cw0a3zf$hcC9nn)$EP1!owJq+|5F7;q$FIPGBM`E#^+2W2NwOE#pvsc$6-&k2v#+@ z=Q_Iu)zO%%k@s5EF2VmXTrjm9CmnoZRf#n#$^x6`yw7v0_2E4O;hV8eDwQz)%E1x# zK+%+8{&h8l`Lxzg&2ZIl2{WNnhB8bkD=%BWrK!_%^}lhWa+(alEV=KNU;alOydMC4 zXh?z(C5iuO*x}}d^yY|fWW>fh;w;k^Q-e4%`K!#Ea}w`~K;8fvz>rjpSmgT>C_i_p&jO zKiEvbcEY;-_XQ3bh(p~a%J)p)Vr;(HZ1*%OCHs6P5YRhxoD5GaZZ%JaL=Ez^S};)7ITx}+Xuji zbSVCzK5V&hTB8zsT!INO>bS3Sed3NJ+e254& z4wa@yNf>`tPFiQIAKuGr5;kT?CX+8KOpDRWhBl;?6kc5G4_b2Uj-ru%ot|Mu>~m;s zs6xZ2RT?-nBCbi15w~OC?s5U8-Yg-O=9NSRkR&?2pUqZch3Sz|ThY zF)U-&)LK>vgV=pv_@@-b16ql5Ox7iZem>^4vaRhB9I^U&s`x=AP-BO?5Nqpd+SR{B z*MHjn0KCxrrw{Fx+%`v51D(D1DF=bLq1Uq29pvG*Dk|C4AazvRi)Pj-D2C{P$007a z=I^J>xd#2u;OMKx8`e-rqG%r--h zakkek&z#1~UyW+u$SnG`X5ou?egb5JvVCNd1)NPdY%Qce-Ws9>vY8+}DG!InbCT^)w1O z;{DgpDx@j-Fz}d0YmOcJz8ONeZwA(MR?Hi{E}*z~vni4w$n=R*Po#67Ks-d0pKL{I zww5ScdEXVda5!iFw$Z*xvBRsBC>6-TOo%yoTGo zdH+3qpqZjcLuOPIL_G37_md~_HQUo~PDKEhoyEgKDZ&vK9Kd<7C(w`z_ESp5yEg`} zkL*JzeX|_hBahAz3Sjv{V1j9MV~s2~h?zjs;!dTQzoQ_C;Wt1jmB8)FjX8B@jY&Jv z4UgR{H{*48pK5oOV@eWX1*vZI(i^zWC(D69VT{c*3%-?>55B-80SudCv%VJ)NS zM6^}YKuqLOx3;IoBzsq^kwC14BSmrZe>LQrYiLrG3ZzmkZfS>yNCKDp?|_Y2_8?4| zv#t_3IYDT~MF38-?zvtx(-6)c!gau*r$$EqXOW3%`F&mpl;0D(l*1Dl<8o3Sa6h~_ zUB6Ib@V0h@`oMhZHnmGvj_jkU>@sLT75cUH3;FYa3nYXP7$|gT0LXtyPw4*v3IGBP z5*?LX(JZw51-Cl-`rYky<+%>X)&pTZJVjEPG`wckc30^k1$D8$;b2WN=97e935D$f9a#2s>dC z(gz3Ue+3p;GSEp&i^ZeHoU>orbCHDpkoBSX08nlYyB?Jmz9P^AGbeJtG+~QuStUWE zj=L}vJMJ|e@Tm27)lM$!A18jVtxG-E!AgxV*C-P56?u;^`H^%BDt_Q7`CPA~=t!Bs z`E_kEvg?yBA=$tW$9v$KW&~P^ZEW$SN(0tcS+TyVzO22hy^`i7Et7+Gr;{>j#>0TX znEWQxMnZ{{Z=xo3IjTd2MKEJ6Nh~$iX{lFJ>O9q@RXMB$dwXk_fid+DRGd8&4Gcr_ z`o(aMp>y~55J(3sMN(Ney`Q#NpVYV{{!sByc|DPt>6S4f0s-Y2ftAhCptQyiMZdVuGP4FRvkaL6L+9Ccc3Mx}WN-%zZgkWF_P zC#A4cTI8dJ2KC$LA56E;W46a$<#~h@!-hw{-3no=TRsv&{OGuXa(&mR}j9~YYCVCU5qOH!6) zRums|tDhz30?$sG(YUu%k+LtOn<~EsTyEv3q$mywTnV)^h}HO-%*aTIgM*ZWgD$al zuyfC%q%5xGw-joxycIJise&h%%b(}3NE0tbVT%*tF*9Nwj%^}G3^sWQ@J0tH2x#y* zhEJa$Km9u{^lzgB8Z|oeK2Xr9-|*K=BnE zC$33a!}fJ85Z-J$+3h_uYEAs|7B}ju-?%=00c&P@>$s0&U~uC^3V#-vA@Cvb!KK;W)Z`hJ8U_kHByU- z2M|gug;)A{G09yDJO}FYJU?_wZDM2u<)Uh(_gtcRi&b>l9e>Ie^|(q($9 z^Hf~XlZ;V$QzJRH?@X-q(`AU)q0dS)JU#Ur^NuTet|fMsuUQUyQ;RZwsZXB8t7wsKMgxWNn<#IS?eyIx58ukUrifXfrsS&Ny zQdHa{$0Babgv0lxY9JqJajIPfvAxrR{>lDH7m5msoP%bEYFT6(1{}c(X2pR6gqqZP zXKJxCP0<&W$hZTo*^?tsNGN%=JN>pMH$CL0jf2r+RmAO zRBweT_4-vHAVVjORd0dZI`q3qT)`hxO&zE6Ruz98Mus-AB65fND|*ySylDNWnd_xH z&WFx(u8yPdxvIndgerQ=CbGfkfSS|!Fr0*^1TNyb1!&wwlzC_}UnWx0hBal08Z7;K zN~g^l5)*NBt#(nEit+)+x z^+mI^8_(H9(_DCw$z*)PVVwB@q=ud7_rP!a@>idkgTB?snTsrvUH=1%+a_ z#(NHRf7;>~i0Uc*{-Dd?Zec0Y%;Pfkj#_~l+%gE7VYf7FksBr?F~s$#J;1~mVoC~k z{;4eKkjkQ~s%q`f&OMlKsQwJG6rdFQ_WhoyUy~%~m(-D8Xj58?z8rd86swc0N94YP*oK8C{uc&US{{DX zuiViJKg?QLKcBVIYzvEQ9Y~yOHRS>3d;=)cRMrtKJ^XW-kM&^wTBj86&Q3f^(^=#9 zSV4kDCmnGkU%8)Q_bIpG=zw3JoHgs zvC>|WrQKE36&c6hkh9q~i{FF?QfQ+BGj{68I&B5buCqtE>^WbjMTSIPn_ z+uync6qvk971V8oY=#u&`yBjDsndDTcpxk`+t`D3(*1gsju&1H;f;Kwi}p*)C?#zA z$aYa%8#VgBENq&U@QW~q5{q~uCnj0>=B{U3QL#0{)|OeO)6vY_n9I2M=|dG#a~+w6 z0Uq|YD%h4AvaLYcS245`vG^R<_8n4{HbVl^^u)K7s=wVqyhiT{r`Y!EqNglwFsBUH z38%zUYN->F#wTjO&*9VGKL9cjNWXS`DSI(bf(0&f+ARuw0b~xZ+3o3<5x9~4UsM-X!h|>q>|L7Jl(I>xj#mI?Q;|fJh!88c} zkqzf<06QXfUGL(ShT(~M)99AEOr#^M8d3T!Mz?vAZeWEk4Bzzjt99h{S8E4%P`UII zqla;J-~>a5j*;hm6~FE36sb-gy#Coz7~vS>MrZj{kpHqHr6g8JIbswSuSdNKtY*%* zx5Ep&=d$d`$Wqpwi^NK+6g9_e<2($|v!^AW2X$n9J=Uw%E@j5Xl3qmidRhIF3F!oG zzfpj54Z7y%PJqHN#pO50o6?l~G_72cYm35QY3~Z$IK3MB@(Sd1_(K%v|#B)OK z#E=0)#2jp(KBlfvOY;XHQ4K8$E{P&)s~n&DT21)_K>wEXCLZHESLE#}S=e=cD01;u z=Be${uS;W%zma#b6au9yEIO8uDro9Su3tzh|H4}oDXf-Q=3MHs=9IjCC0koNS$xKx z5jrunG@Lr2tc}_DJJ*WpqTIREx^PxjKQyMgk$T`P{k6x*CZ^opj&efHQUt{;B?5{d z^m)Bx+;KoK55}Bx#$e$OJ2fYi2ampLsF%HzzGn~$ej*3*F?^r zQ0hVUX->6kzb{o9Q6nAtokG=F`?%V>lb0iZ?q%O%avq0dNgcCXpy%? zFO;f2aE@oupmOiAS)lL5x>uafC_2&c|F$+T88Q06rq`QnWC z6{wCPuP@lUG1 zktILy8}=p!dl_5WRb;=4->R>kGhThm%{oDe6$7acWo&LpqJGEMn${U7yhf8NWGKi6jkzbz2J zn0mq*ug71AO-ruqnJ@X2it%M6ApAhDkYK%zkr!D$% z3H=;ppBSz4x_QJBvAMVy*x;OeL(IuZ&n`szPW*x-%w=^QEX8OV`9V>}y_gHUxX7{= z(>hKL?>KLM`4Lrxpg<4{aXhugvZ3EN057`1$_^$l6D3An^izB}E>4Um@u)`Bex-6( ze2daQ^Gzr_E!Ydy>0F`Zz5mrAei50vUF%5fF=~wOx8QJqC$Ci_CQUw`DL7|GGf0Jj zGXAYaOT0bfqJ_^Tf!`M|y-o7~LW3d-;SmcMho1*uOx2O+<*hY!vU8YsL(Q(4r%#s9 z$t<_EYSd#2nw~(iCBN$`GdF)PpsTBi0<^fuM{DnAb%%X6xHLFSd#!ER1kX}hY_7lV zeS=Ka_~7lgdqVkLRzg zmUbE~SPZkwrheIwc2Kh&22R&p-2E>A_CN{0j|{{4eybiCkH9Q=U*r}%D&yd>;Tcbd z`!8Lb_$md z{93hsjeNlU79U32`5{lE(fq>I;21}UQhjE_9g(+iEZ&aLD813q@>wjFN}NMtT5$zE z&0&_x?d{E~x^|AoV6Ir$Z4#aI)d=zvWGVHNmyAU^A+mR4-&bEN6m9^{FYGs_uE^JfQ^1j0!!re!_u_7!&{6_S+R^fX6FH9P`zk2jp`Nmkhiz_yAi z=X4^bJRKxYf=6D_$+)g+%sf*+;x>rH4RCgfA)05^ZPD3TOhd+NTZbZVa0^@M3kS(- zeIy?-`mJxIhrz@3THi?|^Q?Z5OnaWSxN_0wSn#!>-x2*6?3TG_mg&LhcWrF`=St6v z4U6MG(4u{d>f%Pyf%ms7JEe#i+ZEGZwD}ttZJe^0BlUP#_kI^-ppo!L3mAQZrGh5L z_}yJ&nq+cvg0#YLt|2xiRB1DJXBcAzN`}PFRED3b10+?Vk=)Tf=6S6?jLWPWbSU)P z9V{$)pm9unp{2#5f{vo*Kdi4;ZBgXX!bFXXuvLGoYpf6}>DKj~DnIs-5M zJkaji*}dM3e#UD)CMNfE2<=egG+VzAMYa7wMmZZon)xNbiqIoQ-R{lE+NTtIuxoz^ zU1+OArC~NJNxgh~C0Xn?8_#Kd=f0Q)W(^g)Gjdi-k8^6%$t#_C_?Io;HSH_|mJz$; zxtTnr5837N73#Bj3S*^$MmFii&7yC1)((tu`)uz_?&vyL++mmTH+s7)P}&DxNHhqc z0}isZvN+8z;&$#bsP=~rqKuY%CXm;gh*5vZrzjWj3!m@qTE9owK1)}DAs-M}a8;eZ z62ik~9}@LzBYamP$kocS1<%5UP-{@x*pF?k?EG@{isx;Z8_nV5!26nZH^mFYGILLnpLBk`(dicA3<$F`&4y=vL zDHz;K4GLxd0BP4o3P_ny=4KodhBXh-oHwB7V^cslj@Wz0YbU?{IuXSjdKn5QJd+u5 z!>XAp?Ybm%;FgWSXrrc-iqz!6)>e)>{ZX!~-gA_o23$;nC>-N`t}X)wYqUj-krAub zDT=kaDIFE*D|lwEz2;N+oTR%0-AL&{{nfin%Z5XFstR6liM5jP-^6y`7S=#I`UyuK zj9epYqNlk33uupp$8efU05!-xQ zS%-H(Js<${8;7(IV+8=(9kKV9ZqjksHs|hRwmsu(DE-g#w#{eLD|EZCBcCrv;;BbD z*NZ3y^%X1WFrqD^i4M7|*F|}?6f~jSi`kBJ2x)<9w0F)3-i^#~rm5}XJ7;%|tB3wG z{l?Vdk4}>0H=Csr)~T{NmqwM&r)3lX#Nu?XaH4#gH?Wz5?u_X~$Q%1D>(9LGNldOd zoP1V|oTCmOFrPcwqM&1G@gR=b-Wy+l?G8OGxyFDZ%i{1=z9>a}5p!M(dePSk?csZ? zh>`}9JSvE;DvxVkH&tDZfunF*Oe>Y-Z&0-gBer*N+OxRr4m~b+=^RBlJCJQCFINWP zPV~kGI;@V4s8*udhCQL949b__SqDAWAvD` z3_>2yXB*x%TTqmqBSYru0i=XuX~Y#>R;1LBJ+j zFLFgL@g1|h&8!|j+hS42rppU!SC*&;CG8b){{RXtb5VaJ_OQK-qe*j)G*dK4WMHKU zOf{v`R2nC}c(`(KYO|d!%j`APt|{hGcI+Y4?NPQXvAZ21J!+r|h@4M&DnK0CwuP*w zE~=H$mijYI6*EG+(WqRKxh`CSxdn57n&$riHOTzeH~FqWT$Zn8dn?)bA{|U{+S&Wh z_ShUz$EP|^Y09?+dy#gGUh7gaFc@5J{#aLj?!Q!hwcBP)nOwK_YE7rN+E zpA^P2O?wlAFFo2PH@yiPCXBhF@TMr;fy|sz&hae)Ijl*~J`se3W%H6~;c5 za70$F0onE;8Kb0iC{Tnkx?0ealB=6_-AT8jFMcHUCmV)=m;1sum|AEE9cjl#`_0Xu zWSc-mMeIUp7oAai0gzkX>Q_`&h&{PDRWgT^;?TXLtXV)4DSKL@5!8kbXmF@58LeRE zHkX5)ye727_`~@wJJeTlCs_|hTEgpr{itZ-FDARy9q7d>Dp8V@6~Sx98XO63Dgpqk zoqMoRRk*sKf!LySw{A#jP3_v*yU+IfS)-5K14!G;2JfmmHtP_7HF@tQTruiZkQob| zQt`P~O6P@olS_4}QFNLn!FLS}+sOJlI9K(`$VWoLcM{uw*<&qiO(Dmv zK)~@lPUQ8DE0=u}W+wf6Q*>7(6?Jj#P`I}F6=CsAZ%{zYTSiudD>)8r#tbme1j6yG z*Sdm=258*ZHP@X{me$SQf4A8v{lfX0c`eCYrWhwRvDS{JXgDyI(xuyidu!<9ZAj}> z$FC&Ao#RAB_S9y9(l&>+U_#AifsugG1_5=WAfFfqS2C+q3#o=mHnp{>qgvI9FO7`^ z?+WeVd0eYQj^$g;0;>l!<3!?IDBROr!q;9juH+vf0~%_fCGAeNa~$s0m{)6N??2n@ z=l2tucdOT&_f#sGFUeZsFhT|qa+D;e$(c2;a&xqltW_;hUe4-haHCr18V2rGcQ%x5 z;a3a-#m4KPpsw|(?5yfso5?rH$u*1)G?Adcc52FNg-w1+Li5i0K~)$a$}0L}L7Ho( zezn6!lliD0USXlm@lsuBkO@H}vWe_qxWd5ey-L0T7zzyNDUE| zwe*d=S}+P%umas6H9N4)2_7#uO)oxVDTCZVP z@KTp^m%&f{PLlIoL0VHJ;Mz--90maxr6Ins@ti~ zY0|q5Ri!K}Xl>k4A;pckO08EG>fJr6O1S8YE~mB6bAc32yyrZ)Ql&UJlT%vnL>iJ! zYECMKq;JPHBi)E3Q4w@vYK&L6*1kJdJE*MsH~+){DG&ex0s#X81_J>B0RR9100001 z5g{=UK~Z6GAc2vw(eN;#!Qnvh|Jncu0RaF3KOtyDftJa#6jO-5rjhz$leQ)hgHHg6 zCdU{ON48QjmPpbz8X6lW#`JjAp)77t(C|AQ2F5p|It`LGNZpO-H^!CKL!=EpcfW!> z5J3bGK=pzIw8;`A356zhSqj;Fliw(si`fYzZgopWhUjndIk#}M5U@Zr*1}~)jX}8B z$C15Q$A}gQg=0x!1=Ka%L(2?oY+;KGY>~YV!($#uC>EJ+_q+1H!!ddZvIIxTN8}19 zp(PNBBzo_y>3&3HWP??}oje24v4$%dxi_TND3O#yv^ql_@1n%UM<<9xy&D|{#>U2X z3piTD{=d8aXd20m%%wRaxhm@XJL$fR=qHwT%C3p;B|qjVh^D~jBbWC;SpqmVU1Z)t4#NP{{V&lS%RiQpCYz1 zyMdYOzk!p`XvcCe<=D`vNUf2s7>v3lbIy`Cfrg-F<0)9x5gH(LdW=Xz(W@E~5bz** z9(AR7A|XRjqY=iTfg`s4^I;$y2iX(9|B_vIWk&EOz2#736lhi2oBS+k57=3C;W_4eI{uV}= zF=dX7!$Ion!6rl@RIHsEq0Aw+Il@CpM8S~Uo4$i?XC}lfWREoJOq?tpkkTiDd1K%i zB)GE<857iSW0;45X5?~`4=9KdXpxX9fl%4fHPG15#(|jQX&_xXFC2b289Ngi6N?l6 z6xd@RL-22=EXe5b&}rOm_Zp4~EIfqaYhf66<0Y8MBrxDs7*vDWnnq){*q+ZZNe;)- zMwuyfNMmMFHrZIr)btzO4dYOdm&{iW(TTxL#>;4E9>%fCh%eF%_!s;!CQB1=L$NK4 zDAKxW^kdR>Pi&DT9F&O3l>Si-lWH35(~ZDLtXbb-%GtK{7?zGErUYzP0#j6;l1pdg z{syc|&>DXa^nG)+zTMcx7_Zox=kQ776+Hxb6zDKrVA0X;A<|HX|(#U1DbYsBm zV-8zchqc`M0bT_E0OGO<*tx|aJCP*iM_NaPdL9IAWSgTTPBPnJiGUPghr2F2=NCCJEqN;sj<0lHZy1*4H1n9`;g;2!#uH$aK?bit8jj?Nc4 z4ctx;ww+Q>4D1^sqEoe!OPCs*4UK539S)4V0?<7%&{B5}ESlyoLn2Hh^KXENpm-98y~(pbx5qWq&<8F`Tvz_@|4v~x0A&el0g z4U2Qhz46RD%d6P2D z%Eq7CX>~jMo$IfHQ9FmT5>&jAhDh`x>A^^rlGzDe$z9mSZIJUFk#Lu5dc1_?T}ezg zO^L&(7B6i^=y9=!9ueGL@wTh*FU0JT$s-b=y9{=Ik47=-^;5wR7FeCZAGk@^aiVDX zoTB@TS4uaVkJ$$bxN25H+0dJ|Ar0E=jKMb&w9H$^;?X7F6;S1HHA$tV6#E$OP~6<> z?&KQtI>IDL1x)Q>CfF8Ewm+aAfIl7+J%;R&GDk_IyY>{qilMjIN)uBq+ZdsZXbe4Q zaiD!NvHt+Wj}WB_O~yV%&6C72kTx;s%5a{P#1jkL$U-+H>}XIVl5^Z^Dz*d5?m+c8 zI95T+smr_~g^3f8A-df$M1Yi(J3$nh^b*xfNznN#vWsz&0~@9>7$lWMMhxImWXmOu z6BIX~GXrDPGIU8WNZq;iDl*4&vK~i?jIrokc^h7$BbZh{`JyR>F*HhS^JcE}dNW~V z5n&G?d|SaSqp3k{Pbg}PXeIcvJFPNms7BEOwKUbh)p`&N}}jHIwJ(Bfg1SX89Nu0vwJPQO578(_a=!0K~dsDmzdL&^Q$_`Kf>$y3fY>ryMc%nFj6wyfSxDhBAqg@{u)#s9&QTXwcCd|6O&()m+=3SZ#)O@G#CjVA z?m?mD<2E^^rp~qx|VS5dG?UUe;mHX^o zi|COQ;72|2aB^N)VwWaC+GA+LLyk5} zgzu61{{Wq_>Iw2Qvk=BHjCG^Z(s45&M(lo;t?GIgX;V$1v^To5b;yem9Mn>DS#TP> zj-~Ln14%`xf9RxrI3$i%#T+Fp$5KEMjFN2VOfsg9Bo_Tf@f)sN?8ZJ!4;_+qf=sqj z$W6T(z5U9_=>ASk1{Ll zxe&{JSvD9JYnWpy9#=kMQ;{*2vE1p{T0|+f!iDG>x~i!=$aC%++&ezIi7cnR2uqN* z5R$@g8>tY0*}Ik#f~aX??lz4q$cNl|h<|O&D*JM5UvHS&F6hvIN66dxZ^5#0=%_FA zkKnTB`+BF2m{m}p~ghbBr?yMy)( z#5f&qW<01Ok&TGtax%F80K#%sP$&8&kunQ>A$pJf$nh+UnDrQidmC$<;CZl9>J(C( z?!E4C@T#xF3o1`>Za$_ruIEh*kaRplM4?2xfOuR$NP@EBM6dl+l)duRYQ{;`Fk zQVAz6V;E3rqHJGWx75zZ z)s{!YYEwcRyb5ZvJVYmSuugmmRANS=FeL8>+E;QeNK;ajAIzbfmBRkAILL7#1Uk3d%TL|buA|XOQlXrTa7ELUN%%kViHggSW$v+ zf)#9Ei7=phS7lZ$)6)v_@@YBVrVo_NJvm4M}$ctLPn&RiLXwL zXml~)c4EoJh_Y=rj)ViKeQRUO;|XFIZ*a($+AVy9?+w}ZVw$K>HcQ1eyfqO7)s_IV zv6EErQ)q5YZ41Yzk#i+Lv(T8SQ^}zySPfJKoEfA$AIQ@EITP4W>>J(K-U*RM=tZAR zz7409@EoImP7WT+;~Sb#Px=-n{U`c9%6`b8eKU1EY%GyNXs(B$kD|*(Ozw2w@A7Ob zKupp_vTz{+38amrn9z_pk{s_-(jkm`G2ojL!rQ(Qu;AJQMy(cD<3mAplL$)LiOfP8 zh_b2ZHl)@HKk`4aPAD zCauEKf=00nQxJnlMFX(wMlp*g{x$w?YF>KQSKX51VH6hTus zHU7if#{}3!I+oz#NXlIzUaVC_CR=jE@Z7~B^qmHdj5~N}S%_v)OVr=D9 z>9LMm%q!G^PqcreSw(bYnD)s3070LT;+HSpI}&ny$Q+<3mk8LI=_RD+r?~JuYh*Zv zBhwye=ohv4khM!eHE%)^0~3t`VG?Z`expMe^kdGh!&#Z8y&Xp=iL+SXDYl0Vvm!@x z2M2)+jEuG;rR*z0;|j|n>4Zv45v?cQx)o7 zjCgM{YI`9o&EN1wsj^=H(oOe@p@qSC&+>ea5H2!9qh`MpX>SRbOn&G|B`trx2vneV zrQ7Bza8G{z7x%Bo(q6doZt3tQe`pnsQ4n5iBD?BhaE+O}s}R>LiGIuRLSD3pDJ=A{)Il!4VbS*f2u)Hw z%L^3=hhq;2rVb#n;?upy^!fl1!;)U$(`1!7j+$!jqf7}FM&wGX7>7$^tFcqH+akP# z+@rU|Y<|Z=2FsV=_(#Arso!sa-M-Fl>!4T}4F*cV$(5t{-|j7V_ca)!5=aV_5AaU?<+cF6}- zhYXox>9TA{UL5zAl2urI@oNipKQ5i6vfMH9~4?vjo zB*FxMu=|5ptlWe%Xx)JV6#QK)Z z-pZ?P;_41*4U#a>n$Pk|y-mJM4(vDo0JHE|n?z1^msRl~)wh2MFYF03pOS63E6)qq zSmbrwWyGx&(z(-#`$NyrtyuL$32QPp8uUW9Vp?$uwH0Ncg9%|WLerAaLna*zV?uPm zK@-D1Yrlf+4g@0wx&rvFP$($AO4M83`I87KjWsK=5&f ztAuioLu4u>i(842IT*bHdL@z0gu$pzLZ3`26|a3MQ^G=It%56|_M(Ra$Ha@0c@Rz_K6P(B6=mzcI$WOUp?VDl4Q9QK!Rrvk1~Yk)#M9kd}>& z=+H!q7CGSznU$!BKtS~1T1f=$qA7(MmK_fx7{`q&+ff=gK0(Cq`gY z12-Hx4)O>!p$CJtPB|ySwo5M-4X*McMi$BtM-Bc8wL4}`qiMAuye(GxA<=)~7Ty?q zQS)#^Yrp>h(9vE)I=N#73Mm_INfFIwqc54VU4^t_CfaAW`!Dw4izCnQWgQ+Rs-3kS zXm3lSdQlJJ_AJCa-i-((Mv_Rw(4ZwGSRZrUj~{*ABI ztzN}_uk$U84hc>whm&^V_EA{et(@;ji7xm500yU3Ch7jjcDu7*;GO$WO;g?%?kNmg%R&y?gdQv@Y8{YDx@Pw6C3SI8|`;CYcEfrc9!#NTo zh4=$X+`VMD9T4|Tp(|lqNCePJNC-#{$x9=^Is+UF0+ETLW(U%Ah}jro#^DXf^kW_c zfs+nUA*Qb}Ia7SaHolKQ-3ldFEK(WGu_>wYG9@=8*;vWb?g%7p)duHIO@t&Xck(_I7H;wug6hajI-eiWjg@NKFLMh=>9e-i$Sn z88al*STedua3*jpA{_=YfsXWOHt7?~mNO$L$JJtMTa!NIRRpA0-(kwpDUSo3yhiuL z3G9mLj^?_IGW^v9t(-N|d7%@vOqS_BMaJ3vI6QDEFsTZPXVqg3x+1H$ z=n{>OCSk=3iAfD{j^urWf|fD{w8y zDzW7pwA)CrYe+4Bu9w}Xe3N(Wh1iy$2+lHk4i%b zND0zJMm)$GU_SuR$Qa1c0nx~8P@XK7FSzbnn(nsCU zgmaNLibZV$W{j}bXV7qKnoi;!Yz9;|SxiiC136SZ+`oq_yq;x(LqcZ?$>wA+KtgsU0%1t@=fdpKk-H_LBxBHO z32R5A(DE$_4V=jl-WLRkZccqd8hoq4Kx$4KPjSFroUDtL9O%y~b|->{(kmpdA^H)q zIa=<1gl_8Q(8faPq~tvrzK=)XVkh-4L&l}?*F?_ZU+ch{327M+jO>o=odCw!GvJ@Z z(7FtIF`^BIIu7Xg66}^*sLxS8>6uF^zeE@vro!fo$4X9RNlx3I^$kB#MC7Ok4d{os zvu4XF>4Q7*j^v?6y)ki6-?I;H!v6pPJY^#{N`9qZ5QHp-VZBo!nNXP_7Vv@wp!x?|@wK`Tk8Xth?@9b#AnwjMeS|17}j>sEu`~7@` zD6;Y0?C1DFwQn;K%qdlp++D;bLaKd&Y5xEWr%Kq~%!)(GcNa$?sMLZ7Y9lOy2rw#N zFLYvTO!(!$P7HYO`~Cogk&q%YvIU7)I9W6JC-Rf2oQXm`wl^964Vx03!>V4Q7aEbK zmO-$T5?0ZjycyV@hmYPl);&uD5In_(5;Wlmklvzyf`LWBOY#nM4qd09_S+*v0`YV5 zesQiOG&2*hl*za!^)Hd$_D1y{v9@fAF#iC3jQ8KjQT@G&Q+}!R82Ho4kN*G@A0Sbs zFk1?iuSOavskq#IM=@w2f+8@4b|43~fsV1c{8RXH82koq#})aq zS~@BhkW}AI1VjnK#)~vNOz+)BlISEMayr;>nK&hAY{JnrKLy>TPpxqTFo?*-qp<)= z!G^}?Ncb5pyEGgW#UF1e(QJxb-3o6QG;B9yM5}cDfCt(!-0Mjv(Od}c- zY0`X?;H!Xf%R1Xu;Xv1pbS#=omqL0iiGgdQeRUXyx5B99n@_`HmYYK@O#2vQ)}@Bl zM+6f>fv1#<+42~nkqoywN>>KifU)ov%Qp*U44GZ5G$nhaf>7fllrSiyj4T&YTZj?7 z=(&g@5*3mIv1-GZIN03&N%27;-b6hf zsit9((#sM#PB)f!66KwY?i$t#gYn?2#^u*&B2g(*4}^|aP%(say$x|Dd#Xnf38gGI zJ0eI$$go`bvL0)y)bJS&fljW1ZY9yo#ZfnQ!t;hIhSZNy7ztSssu=jDM$I^4c%;t* zvQg?t=Svid5a!(4#*99K=&J0Iss$255|HJ&1Bp-BAFrK z=W+&fDwI0zDE2ZjW5iA7_%d;M>55;AMi%3CN=8=5PEFhl}MD48JRUs)wTNvN%#)I<&GG+>`1fS|Nv+|`yKZUiDzc?%>coa{ow5;rJ>%qt|7 zq_Ielgbw6;TAm1Ogf?c@V@Lv}lO(uiM1+)25-KLjg~I7EG)k1pi4mGtxi%#Ykj>$g zCp$V8-$7=dWsxZnvw*@YmSaPNjGl*vM~D`kIghsFHbhtuuE|>tcA*&S!9FM@|sLK@BX`Sqrddu?Vl)s@EqwPIZH* zBo?GLzmhdb+cB_>%+(5oEM=oOnHv9(hW5?F90uqkM4$a_uyU_zvr3oGwAWKOxjtIO@#xboqp&rCo zx1H{P;IZtzi@B8&!sU`Y!6eZNf{BC?%ry5RvhBxl%9XB!pc#~f5}-*vhp*UaT+U2} z2VKeqiHJ%thuLMD0TO&oV2Lg)I?5YDh#M4nl_yG&l3NzA4K9#N%;Z*FP@V+RGTh*6 zz#_aN2vQyi+DS;U3C!+v7#Ou4rVL6kWS^_tL=v_qSZ-n1(8LXBMm4G>8JNYTFu2Fz zz``@5G9#h_l;Mm!QvQSpCN*Hdk+mtk;!UhCXJU3tm@fltQz;P8fgRFua;LE&4C33Q z4+!OHwP{Tk#US#O$r_bL<|fItV+-lVz9^Ml#(^(NDzUL#vwu5(-Cc zu`M7;iI^Rc0*(X|9;vp6`vsP5%d)M}Jj>j~pIk*4XT=Cmhd8?|+nXI7&Z%9xD$z7j z*oi_f9y$;%yHrO6TY;HsFiQmHce4U%LI|Jncy0|5X600RI301!nHxz!Sx zo_Nu)VPWcUHb3P!gr`9hq;~`xY0_aL0iZH;YJ}3@g~>^j2?i`@t@jPMg;Fq52uM!v zl^n;XB*0&lw4+?$hz^o)6n*Y$6n-`WWId%j0Wl&511~)yzAS!kP0j3?k}GF?t1RM# zgQGc%JzU{gE7BHkjw`t05@{3d>Lz#MF`=IGi-*LTk0|(O!e{N=kJ#!pRp9LGDX8b^ zg0Ctju$ZU69y_7Bm7F?ul%ic--b3QdFr;L&%%k)y8X3}vG2J#zMsishC9xhQ(k}2Z zN-VP857*RZ&D*RC{7m}{M_Ri6Dp+-cQy}4N{A1RKD{oxuS#SMOxnf@}q2ZU+vU}%mFuZ3YNoH#En%(*I zZgBeYqNFv@KhNRa?tS4^GV?J|FO@KBfQn`^2NyGgl~364XaUZ5Hw-en-Iw3@9caGh z3S4xvw8a-FU^bEEXw^-vy(hvr8C1g~?#p1r-9q>FllSBD3!k|kLPX+7`j=kx)E-Y8 z!DIM|JR`4)jOT{sN6X6#UqsV{CsnMFVxTpXWI68B%S$XXG?xcT{%DXKJwg4s0Fdip z_lPJt;Y1;pX9h-mcQsze3$<=kpTBIp^^{j5E)WJE&iV7ocpBW!+`6tAaN#|iApu1ZlZo52W zS5r+XrUG-g4uNQYStVWn0RA~bWc(RsJiSfs#07=TOlLFUkIDlH<6K+tKA?Uomp*qt ztd!GuSFmWA5l>#qPI*llwbigaykVVBJPtrr;?}4YXp^rR;$P0!2ddu{DuSu=)6#5Z z8OgF(#eV+)5a&(O*rYU8Qlgk8#V@~_!9Gu?VxAq3iv&y|=`6~B!GN6xNIWx27L*m; z@c4|C!O9ZxZ}*9gDCW`_WX1mgiGtl8im=C?GI4rZ~&Faf+GWZ$1W>!IEkXa49s3Vcf&*Jf)1#CLMsd63Ra93-{BA9t- zns6r!;2r`vB+ld0=sfl#QO2I*;2b-HctL`GFvJK2oDmlFcsOH+;hZnDbX`!{5iScO zgLeK*yJYY)R=xNU5!w;)XP1EQXSm@0%MS+}Mq7|A{9X~?QTVKuBv@EOso{v==;L^J zc+PV0f;+F=#6u;H+1zF0BP>H6OKrT1r19?}?jN|Hq_Cx`7Q{;=%X@;y-otrybT4?z zET1QnxQo9Q{XwP3jt1}u#^^6d>N72o{N8=!vP>u2V}TzS{9lSZf*?NJ2E!X`p z(#u=BTe4S?5f^drJ{i=^+m;w;exu!-5!fCOAjW*Vdpr}Cteaw4WS6cE1YMK*w$Fxf zxVCs3AtI2*azr4A43T6oe;hQn(%aL?5qiHtnU>xdVSeT!Aj0z1r@LRhs}bZmX4z*Q zW$%I`k6%HvE!y?LFwOxG$RG$Hyx9{N2xQ23qsPxiw*62 z5fOXjPa7-07Bg(N-pflrkAt*sFvmz_8yNO^ko(xNU|3$#L?1c*d=H!UlMExQBtjjgMqY%EC{@oF+kgOhFdQ{M%x|J-?i?*;>79!+2&J z4eNm&tq&qgV~-DpX91inL|F|48#Cat*b=X}G7xxUuY>Q9cq7P;JD-Mfco7dBd7CC| zXMmZeKLfm9aqL7!N1X27H@s&A@$5u!{yN#pqYe%-E?Mz|=y~ut9^ssK zY&IjPi#z8y&K^cM{{Tq|YW)NApN#(i+UVW5j(ZM!91VypY;O3)v9eAwI*toR=2g{` z&Tv6q7JvW5045Ou0RaF40s;d70{{a70000101*%&F+ovbAaS9Ak+H$y@G$?{00;pB z0RcY{j*BQR@4Ivb(q`PUwYOxGoU@FbOk)yB^T6BsKMijV2zXfS;K#}gvPn5NI7B#3 zGRrKo$t03UOqaX*A~+4;;NgxP<1CU+M(JpbTP?QRY|Pm*l#|EyKY-+NazHZBeY|AP zAe&@wYQy-(+iZ>%vom>@f824ukhdq@g3*5BczGPQ+X$cBcd-<$+_`MF%);?5(ZLY% za9MWVUIcK@Ad@)r$k>h?*t2io%=m9FCj=brvh|RAwjZeBnN!iWXP78=eh+HTJ;vf| zPj;>R+xIJZkm}AEWS%G2JHgaLpNZVEc#o1fV+_e&p*(G>d@lm`cN+!avP);ov!jdu z0FAfuTKO+#-W+6;!>j!<$ivRV&xXEb70}w;5 zS(LCJahz{E7RM|ZkBg~gpvMfm$tUzBc%8E>fIA`>Xa~DPoX>ER{{U-GpZbUM{BPO+ z08@tdco8!^A4lIO2L~P;2OA5s*YrcfGB!G7>MwkzPiK^rX?1x3HDR!Sk@7$4`(NaH z-}xZLyhxdumtW^^P5m#lIrR_m^I1VQ8CGau%dagpIdHVW;hp{Sz_(!iZP#;{$FqW zzDN2_nZMh`!!tMjeohF8UM;#Ufu6R&#gY4e1Hh6pHkKSm@1$7E*g9hv9YNvLSwE&9 zSBHjXW7qlKI3tisc}V!+?pzCoUBl<_X7w-TQ3>iBPpQ*n9bvNc4lpZU>L5BedR_Tv zj?;LfgFFrl;2?&`;kF}EY`2M_`{GUEw0e|`zl%j5aPU0ce%Go1dxQbo9!zm}Liwy2 z;)&qRJ>m zUKp942VdU=N)o+rF$Jpta4@z-DhwAeM;fbD06Z)3gzkvm;2(!sN z{{Rj?5^Tb)BztB_nY_~z$PXoE=Zw^6rUK2bZ4vF>_ zk5^SM#zM~)@zQ89+>Y8vb#L69B-tPIu^DVU*^|z2M||fUo9Mi3h4EgStFqEukovHC zu*|W$mLbf5Ukse}mw#La$t3Q`f33D`yX7S3El7FZ7XG`&$${=|cOdbR(;K5tHlgzi zJ1Dg5feqo#+CdU^_#O@~sD`q>q4R#MS@R{iEI1Fv|HJ?%5CH%J0s;X90|5a60RaF2 z0096IAu&NwVR3_JE zUZX4z19cBq{G21I$ojispk{I+UNF!h%+!gS| zS}0>sFAlquTrbQ66*LoqBHUEP{zm|6F$Qj3X7v?YtgOiK<{``45G9_o1-!x=dPkS` z5DVWC4_NGNw~1kfqf0sNVS|{=hW%OYMH720|&ZW0|g-guDxqo8@^UX%B4LFt+ zHbu|3AG{0niE^uq#w!e}^Ap+zP^?EC#`1)~{y68vx#A2 zS)(f)8xva|u|;9K9L{u|`<0Uue$YdvA>|-1iB+qp>F+8yyi1eZz0Mzz~s+B5I!|cVQRLdKw*v1;0F1xs^-dG^XGDXDYFnQcX-3FNHgVHr_sNk6wn_wu6 zV8uXH-@HoXMOTQcfr-d3qccZ9i$!k6m>Ipq7hO+|Qdr_L+($b)CUT79QPFbo7ZbNP|eL19Y-}PzZ#lqE*XG6QI^x6SW3PixOa>~ zY!sikn7u$(%s~0^13JqqG;UF-eNDfxOUa)xb3*{I_#tP}lx(%VjI~<}#$}a=_=axE zWvDE?4zWECNGCb+OoSZq1)e3B#K3N2;^S3gClC#O<(A->Og6t*)vmoI*~J^VWJ{_b zqjs4HstgC2hSQeg1jQ1~#3cDJfNMRsEtoVvxK*u)>R#^Zk zSnQQr;xOvo8AI7(2;Nh0;06JZJ8#5dt`S|HBhzj8gH78r2Qe1K@iMc&Fx~n%h|$%> zAP6<&JoN)R$%wff?jH%fka=V!8p*f!LzS8kG7jo@}aSY2>C;tG4D3s#m z^&FmIzs0`LCC9;u${{Yvo+=BZc*JAOHp&2>45(vQQzTa_pZZ0?987zi!y<7Cws!!> zWB_?%NnvoQSxrS-YZ=DkQL40J3?H#}reDaT2j#v#(1!gOWO9i6Z9W)aBumQlgx8UPMSQXn+KRxRRYUb>4%>LBJbd~*l|ZzRCgyY8@{L+%bD z#4`h$#Hjkm6B?V@JTWNuj!4i=#g~Z8yv$|E%wPJ5s+=!!r0cooVtm0`gSNcOvw4Qw z%Q9zjhcPq$z^h|yn2ts*gKoS^23r_HR3E4}dJAqGAu&l*MhhCvGL#9BWtDKl3Z_X- z)T(ItCSzK6Rc0y@cfBTSoSa6z(>%p%Zx_r3tI$`n4aUvZ;*ch- zvdpVD>n^J3Gn==>wHr?iR?@g7#aNhVtifi)MdBcG^6Qy-MN5H}?zI7)b&bk^?(PNG zIU<8bP3mvQJC}hsIfyfYZ0d3?K49E;ez82`Ub3rkTh!bYsCq(G&(w1Dhs>dgY(ckD zv)oEOW2mwCmEsnHJq<W=1B;|lIl3c9?o zqe8_mf$ar_OlEeh4#RWDbH|QRp}ciOdB8r#5UQMS5aGY$9 zVY56ywKyhMiGj{x2n(l~;4jvnDU3k#12JM(n0J4T<|jOUD!pfj^$>}uoyQ(wtY^er zQyUz8%)zo6JnM;!EO89!=^qZcb>?y%m+ClWcPKEb@iNqQbdY)OR|gOl(WnBhF1eIp zhgS=B8NqM{A;JJa8-;58K`QBJea{@p{@t_4w9|x0UHnv z+5Z5TAhPA4{X)gJ7ZF)o3r6!RU_ivP0uE4pKs8XxcL%U4<-wT{FmSUO+IR{BfX8lN ziDJHY0WhaSDw+g>G_?S(-jxClRkzuT0FVQ=3ae?{Cn&YFB8m$_Rtjsa5KXI#H8w{LIhGbMHrCj(%i_5?S!|;~KvZt3 z#I@`JEDXfO4XzMMLY!`9ss8{ah`bdN?elTrHp4?Riw~@KgtA@KZ4u!$GJ%y)(HO0# z_Y5oP|OnV2Mm4+%b8mjbayLl_$+ELPD&zDffao5?Jurc zj1jc>e}Xb00}9W4%qY=jLO*NB-M-Oc4K&OLN0?!dworZvPZBenJsu)xkp&mqK9a>( zRMDo)n&YWh2voieA5kbOIBPGgr&fTmVb@Zc1#N&=n1pP{BK*a~w4j`@Y@($OCak7K zCGfKrfE=)Dw2MMptCwNHVu^7e+u}cGH2H%rc)zW;)?rJxp;K zqF1h?&CD{&uDxNFrtN}{nq{Z}T>`4w*~A|Q)PNH_nfH%DX8A#T$9%Ohh6tGhDOP0K z#>b;YU=?6W*0#j@@gW0_oJ=>h_sMpk2PyW1W)%xSp{zD(w1Jc*0iq4)- zlPO+~T<$FjS^$}IS*>m(x5eAU$TsPjb6aAgm}oncsrNBJ?>;31vTyeec$4V>0jxzx z@%R?LKL-$C!!i9%O-1~AM!JdV0mq1y9LHBaiIbNth|h7cl%>C?+_u zocV&Fe+&a^Go0pP!ymG`9Ht?kA*iHav|anbfLM&)R|-QU5K5$DG#o@)raUC>^}J&0 zu?{l;rnLhVbV0GPJEAOe!CU0aF#uMyR24;G%|kFsN~YdsZ0RU96t}i5 zY+$Q$@0hEt`6ID(cP;%Q{{Z4CyO(C-NF^Kt)i5J#3ampGRlG`TcJ2Tp1AtLA8UtJA zD=xJN7VE^QP9<1JH_HUe+_iE)r3e22VZ;o>e}gOodY3PYmq{)TC4Ls(W}f9+xR!_{ zMJ90)7y*`E(lWq@XA#V!I(2WUg7Ya+rdZl0PX7P~^Deho@hD&lfGnvq88Izph`ZjV zZLF)xZ{{;`K8H5m2gI{XXaE5#XbXl!V-28DmZ-J@`kfpc%o373>BXA^Y)!MX?iJfm zf2XYtC_|f+UkfBXIz2|s5Uvu2y735G0i^mbl{)oKsD5^EW!KJ9=dZP?;Ts%czn$T)l+W~gF zfsvKbG=hp(EWU3s!Lu`x+*XK-LJmz_n8 z1mZZT>NhH5h?Z_SmVkpnqCZ*=ZY!NY3P??j3Xa&g!E=eYfa5V%Dmfp)#uEDJ#4T=~ zs%3TYO;=w~mOZTWM?(3C7;UEMyax_qd4WLXt=dAu!AZNb8K|bEi+?43`rKq$-d&96 zTILHCwVqQ$YX1O`uMZ<^l)WiwV@tFs2A8c`!zxQ(!$i#ii6tt6O2VcY#N1 zCRY-m2)BmVi~S;`o9+nCoX2cE<{1%~1pYvamx3Xv+;v$Z=QTh?OQnXK);@+oO7! zK9+`7>vP$eR;-X&y;MP*ho&(t&AC<3ulFXQ@|#%Ln+ zA)6|2axJ#pTzOPVpi@age8q*zF%r~)x{sttCC+=|QUR`-AF1=&jy{$;<9C1bpvxow z0D>(oSC86>MHJjGc3aNowJwa1&{hlX0S3&&nbdSI1i+j`Bl?3Xe9U#JXNUlC=2luc zr^MvXZqxf86V_Kz@%UX!zs3AcJA-UoRJ~0S@h>rPx%V8tAm#-k{O{X-8 z9>%1^I~C0o%Lgu(PJq3DXSg7aN}a`G>Y@puTVenzsOHu?& z7rFkMI>#n1;6M#Rj*`&t#9l~y`wA?9MW5`|xy2Xu3~v?7{fE){VL`F5 zDg8w~@c#e_MN(>?@*CI?0`tKYg;2S3moo6d&Si|)rhG<&M&MOOw>65MRFa~EvqhDtKCr|j$f%9#biuiDD0Z;)WlCp;;z2U=z`;8q%d454#a zzT8v_sI{|k&qbWZBLFw+2-gm4h(XHY1J}8h7PI)BUL}JF9N&m%DOo4~0Bsw8BWh-K zGtJanU_$wr3_-pi(+9XYmzkp(m*R0LU}9XkZaSB5P@js-Tk<(ET2XUbMz1jS}7-G`<%eZ_F3BSc}WsqO<64UX|Rt8uPTZ{fMzUmT?q zDGba;+5j)sK34)-@C80%N~=31DHbHoAAQn4kRW;Le%Ob_V!U@&(KDLE48)@WaIsJTb1a3X@&`KgBXA)L^f5I`-uqzxu zU;){LuXrMu3wx<0j$Z;;-s<*Cg!}{Whl{RxB~bPJaZft>jl!?kwzh8W52Z3~`(}O^ zXIW`#=@c$cyYxzEtKgU5%+7`lQ*YWYwd;A(gIZ2EMT43W@aLIhSQPn2V5Kw!YF;@d zDy=6`nyk&d#wDXD8E#otY6ZN02!y)DR8o&I>Hh$z?xkBC+;VPQ2%dj7-{W4BdW0*t=C*WN7H|q^RwCQl)%sw><8~hkuVk4*Yrv#n%Q~`Ew}avb(hJ(6oIPNm3<1*mgo{d&9kEd5LidMB zn(pct<|u24$+CJyMTNskafp!96Gzm4@o`Z&CpQOdV}}hp37FV%v*y_B9zZR-ln46@ zMzYK1AgnJ%H7`lHGP_P!))=%g0}~J!NjrU^Aat@1$QmK)bPbuIBVV_ zo6m`rSn(O0316=UuQLpH(-&0_Gf@ieE$&iPtXq$#yx*X$sCj}Gw}w6qu&Q&7&O%~_ zuI0dmCF(AG{x$6o7@##qbwaDynB2mxDa;gRT4KIqLw9o*5d0ywp~|44DbUiTCM4rltjmk-fA^FJOmCMA;5#0DCBIG*4{4$b zH9)AKP>XP&h;5o%@h%~dZa5w$00bXwdzDbo&To=rG*KDr65Vb(O?$!=3xuyyi@4ik z2AOVYgz3%mn*K*~96|WMGS)aFk^oDK%o^qxmXd9m;udXPlIRku5S>G@WMh;iQ&4incK5Ou40QJ5 zw2+7`WNxLGzgbFn;KK6TIgQ~f7XJX$;arDWp6oM!$4G2hHEbo8aNn3ZxTlL8W?HZ{#-ghHOGIskIrfJWD0&xpYdvNN_dqCLxl%&NTPdUp z;sdr->=#r@?&Y3;XpNLzZK!tH8mY>fzl)b%L2p@7*jEAIlIYK1-_%Cb?0?8B20H%$ z2x^}|M8yI0CAfptgT7iJQEIvx&xw&N>8sA-vBJ)xvbo|E6o%ZmBG8u0qp5A;5hCJa zcq0ccZxAc%H_EcJEzeTwI!@z={-K=Qt!MCc2sP6-;R{F*LWXedf)ERe592NNlmr|Y zp-{G-X%PXVdxw;{!-#h<_563l*VYyc+#zF-0p_4s4Ecbn7MC_uxvO*;XL#u0>THKr zm?7k$Sb<%InQke~ku52P@>cE|3x^VfE!B>auFP< zPMcNde(*p}?#I;!wpEcA6iNtj#vkD>{{V@~6Og3O!!yk}qy4Y|`F2merc%oG_Ze%| zps9ogsy9KO?pc}}V1WIjXe{8dH^J0Ry3DwWV>i^gyhU+FYKpR~)bAW0WUz~48c4V6 z2In_4L7c&eCDeW*rOPEdfm2XPeZw1tk$#aBO&v@hiq+yS zV=AB28&+6_`HCWSE~H^oY#>H^Oakb6zvOVz0$5gk$0{KxbV+KF%UTyssIPeQ?~{qO zULtv>wnrD^RSSRzbZ)|2#R`DYS;>x}mh6~e%B*YNAl8?W&r6$|Pg-KSA_JnSzGApq zE8+_Iqyxyyv~y$n0k3I;Z_!gixbRUADOduPbxtDO9k(A5(O0C)`$)3xGJj;D45$y> zswwb3Bn%Y4@lMqX%EQ}opsB(BV6HGGoCX(&0p04aSWr2xV7L;ftdW1jO2t+YVTlzR zb*QXC_n6$rWSbMlKc@`3i%vb}<8`lzvSXQk^0T?5fIPs?B4-lD=On?b$~O$$5_zU} zN?;~)EJvnyDdH7!FwLT;%)+Kp*kf_T!H&e_x?@%g74s}-?gibn#=YaL2mEd^Wd8ui zapS_$Q}c+4J3wc=K?m*~-nJQrdqe>zRZ$)V!2_#kAF#+kiIV}=A-erh{a9N78gJg> zgK%R3_ZEfxxV7EF1z%LXVj;KRRQ|}L>j>B3nQ9!YnxPJ@t5i$U|iAn zS$++>zxNeBc9(@xnW4@1mV8D+J_F)8$G9je0hGFcK* z+Q~Fs>>Ii@>dOGjxQ^-^4X(WH>%=$1BS!ID!9E-t_8|(a*4$2PK^FGRcUEIi0KsaN zeM`$Oa+Z`6(g$PsVxxoGaW!T6QmETJ`E;+fqwTnXa+g#$#wAK^*XhXdCoU(%Gnr5n zLv#bE9D_H*0@>o&OT%XjRIVjG^3+--3=NPuS>5;w{{Vzp%*UbohKE7)gG^g=MhwO$ z{ZlM@mq85i_~4d*kQ0en5ZenYg6`!i3XKMwr6NV~aqx|lsY|I`p?n__iKSNY@c~41 zYcXu!vjcDj@h)`^lXogvyNbqeI5#Rc&=xih2cy1YmaAy`wr}18x>I7|abA!Mmasr- zpX6C#VwdFsQ-Gx7c^>!F zi7UVWSF`sPRl?A7vY%0NqHmS+9Oz#@k&q`J>44X^5FjntxXqqS4nRA2_=K&wJzr9) zd=V1Iq;UQTUr4Y_Fe?ak+@Gm_0)O6EcU6NfR2h1VAOeeCLJN}n z2&(b9REq896}$R`F5p^TCD%EPMQd{JnkD}LgE8Oz_(uoe;yz~eh&f>fA5ev2WSkIG z6Vgy2h(_T9m}k@P@CEHT!7laU31i-PBX3ypx$H`uqygOZ5W?$>M_80siApXzsLJyd z0Vt>``vpb5@#S~Oe_(V#X8!=*2^CX^b>WuQElz5GVj8tFn7Wq`#qCuixN2ZTGgzh1 zq5?}#l=T6+G-Ho9r>Ix<1hpV6PuMlC1&8Ix`Z}VFs-YbT{wq8 zfDaH#TxxH}+9uknP%6Als<^k9!n8Lo3>lObXK>}Ft|+c1SvZ-jgwhD|SJ7W+l(?QI zJn95GANPnrct(!BF)7we9E<#nj7W+P5ui{ho(>^fCc_t%gQyJvTpr$B6aq7Qs_}`e zh&}lCVY`4qblZE)k-J+*f$6+%6$Zae}ve%*44yQR2PurXV5zydGY_1xfkdLb#sQVV96$#v9-^Zg zyXg|6E5yVbe9T%kxER7DH_=c=lC)NPnnrID@tpcVs+uMWZx9Eku0*C@ZSG#cWe(1u z6g8kcA`pRP=<=E$LLs(mr3+|(uz)d|#0o&W%0x#N}kR1hFRp#$*8tOOXuw>y~}9&PFy(%vfh z4jzs>tV>{6t3u&`pA>up+GQ?Z9LB3zh_)WG;Z^Sp8jiY|Z`<_+m6!D<(R>##BbM(I zNo~p*wUl5vlrJ9KNvCM5zDAH)MDwx$o~Lf zT65u)sB-fzXr;=QfDJAf6^IQtE9w%ZE5sJios$tk@I$Tf<}_DcDq%S`MQf{@=ThXm zaU-Il&aMu19$#=3f4D3m=z-*jx?HRT6zCutDx!xa5~*uXbq2d-DWB3jmq*(bB*+RM z(JGjYjW%#X4XyyDsp{glXa#1#{{SK+fODWQ`n4W4^0kkdbLF=eFNjtEo&!k5b;|?V znR~$7=BM46n4;xYr3Z+!v;v>V^;_L8N6g%HK){PzzEm)sJ7JTB1N&J@7qR6r#T#D{ zkeaW6ybeEdnTc&s2q|IQx3RvsnvC(8T8O6;Gtv>{nQC5_P`DiRF>8xO-R1VoO2n&{ z`GT61>vIN4R7Ic|@0nG~hd6@SoT!(FEc+~mO=r>zP=(qbjd8>;1co(4x162DyhNB| zxTXv|#}7FmeW|ykt=&dSv}Q_ZaTUU>{lZL{dDJ=38r&6nUU-FIGpmN$)f%lv!+RO^ zsbm1_$zN@=0?Z>Pf$PLX6!eNm1CW}Pgu@vySl#d109KolQSnc-zwwQ=c5YQ@Kwb9? zd~B-1#ec*UA!NG#rQdFxs11hYtfjnFTIt-o0ph@0b@eglE1<{2DuDV`DchMMWSF?_ zNdi4O*YJdu*QttTg(DxjGbm=_E#or7c&;7w#~hj@VVR2iY>H=!!u9*}vPC=Vu3%NiSUCjS8aMe9dn zfDTq6YMI^VA^x!PoNaVAo%#{zmte2*Tw_X>i~Av6ri!}55ogfx?=6H>3N5$(&z2OI z7^L}@*dSx(X9e^pOEpwQs%63tXp~zfB;^zw0xsRNz_{#?g^!6%Ikh_WxkSV0A}S|w zlp#T4YTdXgG4m=ezhg0@A=C;(>JPaNO^_ZKj;da;)HS)TWoec`(E>K9AdATS6$?%Y zgAjm}1~v4D+^zsQhHjWP!&;`wb_Z!IhUsL_>C<*M>jDPYeDMB2yiZKWv*rs3b0nn zeRmJi5DSV78_F8lTx^djOSwnB<8Y9mQ&q5K3qdWGyh5P2d@V^|KT&}i&^(@SpmI_N3jMPd9 ztOVP1mmE^pZB{HYFKR%wv&j9x3_mRW!*pYx?_sTM!_H*7m=#AB9t=LC@91lp$kfQG zwbj6?R!W;`sex-ZE@3^AGdRa^^99~<6*!g$rfQGG&&u@~PZ!w`t$qPUCHqFQiOF)j zTmt3<)At;rvcqIuLjv6t^WWcKqOVVI1Ts-K{#Ie{Y|XKugKI3 z%ITLSu!XAG?&GPqtR!E4tDdWv1Of%2L8))8AgjqvcN)6Oxvcuku>+A`*!prcR+bQh zLa7)#1knEgjIUHi0Y8%rUoMLd!vL2ISLo{CT2~RH4#HXB!3!raa(<A0gsTv7!aVwS2Br7)#Tgd{0A|pnaYS+X8q6?B#VpaI4H3&A! zj$sq_mmLBSL0RTM#g!GJ%teB}^N2bL%vFL@5lF}g?K}N3))>3QOI90ugiJD|8=5My zDOVJ=@2CSCB~EL5xS=;GLEYk8t@1!B*7f2F9AQzSuK`oP8cI6-D^B%KXnyu&-JO~}kSdDpFg9;ycQ2{TLC;}tW@nUOTT|dv1EHYw`{M{-uQ2Yk>RIGfF@6AG zs|}25^k5e*ShSqY0ZL)bGGVwsa+C@<(od<$_ZY$qfWT^+?x6rG+TQz!Qv?99c!i8& zCq2t%@g3xxQq#?q%y)d;!N$fePy5)9DUmVHH0(nT7I}d~hpZTo2QDFtIe;>aZ^|02RuJsc;-oLQUqlljWXW0W9&L5h9}z^HF*bKc)Hs(Qr>Gld z3#U-$%u`aO6yvBh0j3DL4Q$Y{7BwsHn}t+s;>X_Ng?uA?plrj|qN=#7X62`BD&*cq zk$PLAqeqDtm@J?^=NoUjnG(agRJqV=&J#J9R>go}!D{N&uR#n%u z=QkP!(_)*%aPM}}2rrH_z-8S88{52B07ID0ph8DQKeDNi(qk$;IsX8}_e_8InNGy4 z{Y9?jYh^Ykn9bw@W7YkYVzI{NA~}Ez-=xOxQ?YWliCwT^sfk?743L!k=471{JYVhy z`zd7;wSe0I76e-g=5$lcx)Tj7W&}Zy3zjnJU0k5o;AT92ASO8az#Sg&sat!D6}YOB zu2|@Y?YJBdr9iql?pWj85OQpqob5>t$-PXusO0l364|^=6PICVMXi0Uo{DExe z2$khEL1V@vrI=XNu(KOuU^!#9)YHR1ReIc|4P1_?5`(^$9<*@Xsc*q?7^bkx?Ebx= z*JfO(rK+>3m!(1tkT-&FRW9PuKyw(w?bOM9%6GX<;$YoJJ_snn#nybs6*ZY=ij{WD z<$(xNKry(x5OE41(m?kyVJbguf2TnrPdh#6Q4EyHP% z%vR5GVi+(`Th3w%%q0H+gb<=pso6d0O+fQ0wis!Infr(-pyn722beaQ^By9{QkM}{ zu3%YY6>%)`^n(M9c!VvgA6!Fm!!g-#(}c?`X!*R0o;FbRESGAv(ja*yMQm!LM31f zlEv1HZI048i8~1t4m|+D)@n>;%})`u$;lc(^9+2K)63inZ(s0HN$%ou3*B~A~BXfgQQ%?iqOFeNAf%q)yl#uJ^uOe*g%h)(&7 z)pF{VMbL`3iF5lPja;IzTz196xh7(vX3P8sJ7cr`j8$XI2bn{K+$;P#_a!4*LV>&!wXDs_f=kz zgG8_l#&4vGZHYsg^FT^h#wNIy_OEE*RM3F#c?c{V0TzWURW2ckWecz5S}HIBE-S>W zaG4IGJk7lzrCDoH!Ew8lZt*Y-5jufvAT`XnkC@;$?KQ^XqdyYJ-lFPf#1=S;mxx|k zm@$II?JrsVqJJZe-dRqhI$@6zsUU(-bt^EyVMhJ5_V%De+B z`#$-%uo@}>MS%VJlwkLYn9W1P7Pk<)#z{pVL^oQ3+_zm5L`28!glWE75zG zb#IfIWl+g!>Rbi^>r%taY%oz=M9%RS9%soYbL%R_bq;fhw?q$QN|m`_Imfd<`Hcuy zg5#7j!jhv3ICq(^Qzo}Gim!O;8#6F2Iyck@1U#XCEq{`p;L}J50^m_!jlv0j<|rkp zNzHmdEr?WUT*?x=<_f<&#({1y+|4fpB`eg8pd%}6g0c-OlM_*b6LIDn#CPTu)MZxQ zBE>tHDH6>~52O^7wdyDr*^87P0`j?6FPI9z0n}(aIhUR8@Doy(;Ws6uIdcmGLR@XN z1=>_GLA_TI;RQOBpsCLBFf$8@f>s!EObgZ*VG|fYTJzND`iY-NsP0!YCU=V=rVa8t zf!ZuJ$vV52)wq|n%uMQfW|_N!jAG_D-z*X#u(c$)2`sYW4`LIhKp8Vx`av zAWF1W+kvKr`HYBFZajd2wmYi%g&c3Gx0rBJXV8gOl-!~z!2%t=uzW{`H47&XuM%h; z(Oy$^mJ9;|`Sb~U4B*AZzSetiBpm!eWVChvy$qwicLCgU1RZ4FSn;6KYTkTL2YQ_y$tW=;l z#8&ZL!S67%ue=MGtuHZN^)uEp8!OK-s_Fz@(eu=`yogp>`IW=-3`5L|h+X}`X6g)7 zD`i(TL+S^I%sRY>#4~Wjyv4bj{5U0fnNS08#$LoGV#98o$20FQR>Vb2H#5{ljKfJT z5SAS8Y@{`D)qWMKW>o9mTo$F*H|{o7%wak_LvQjUS;aFqe6z*t92WylU@sRP=3Vy# z(-MIKMdf}XwY*82E6FZ9mzVU;=^V!CQhYyj zQ3dMCm!}3L5LM#Z_Lo4YU9okvSML#I zh+I4(wYDsE?Gl4kP_wsj);BP}F+)O@OPuM14Hq-NiE7L0aHSu${EO5WvoUMq@K!_y z?Yq&a$K?+4FrM$-igEp{rxF>OMF+0RZ4|L@s*O+Q3`9%A{WO1@DsFfAC;^7u1 z`DaKi+`(e1CZASf^uX3uhO;hLs&InR^IHmEFFBcsaaOex>FF&~n1T+Y?fjRRdce8zLc|jUS|Eoo6EMk*d4pV$17-P- z7IPaj_%ko?yup~4h&TA=B;r}-Ddt!lOHMhNz56p+x+3^!jaxkN9a*_%LD0h9F?>VF zsv8e3Nou0-4I-yX;jvDEkZ=V!D&G>fMTl`FUH2F(AFL_{%B6T9X5DRI^MG1d1@^=e zkaXygx*p6&gh0H7UuVozX_*62o3}0QBikdBOWj*bgIeC3N*bU>xM5;KE8vVvv5i-V z>C^2CC{^kcmKICKN#lvfh~v~=?{QU`M^ReAEP6*YXywVGE5|b+;^zh6iom${D4U{D zF{mkKLoD1jiiHzH=s)Yy3=4Jm?xt5PC2T-!)lMmuvD41t9Dg%A5-qafkHzCs@0yoc zmx5c&CDSerC7jGwrIMtp#x6$@i`1o_Y|D##gOtQZNR20c7B=-X(vNU;*K% zjTG?^Wxb>LQE8=Mdh_cV2k+&rW>V_g@`XgY;%Z>wZaRD68yM&y^DN9ii#i(`t^31N z+@yQ)oy8v7TkcVm5vPT}6v|;(d_ZBIgVPb5f@UV6w%RaMUDnEJSJBm|s?8Rcdo*nV4Q- z9z3~F6v8!}WK-o`pKmhRqKInguFO@;JAuz-t*bwJ?1ePS zRU>x7P8ixSDDL&*R>FX#X-7P!5ap4N@0L~PqCDY_DY-nU#I@zZR4J!Lxv1CrR1g-n zvh7YHOaVpLiA-mBt*;d+L3k+t0A+&Lc!0=SY)|zZ`jv zgq#MsWy70?&RJzu+y0}oTaVGWyP%GL;hieoTOVLp)C5zS%>F#|xCi0n>rE8^l3%?qN{U2bIn0~UHf znu;J^cbQ3eCd$F_jZ14K`W)w$;ZPcw8h{*1O}XE3`mt&sCQ9IMxCuV60z&bAvhsM5 zVi%Rr`oYAo6j5dG!`2>oaBzpLG0X+jB{5wXtraOk$gnFihb|EYn5BRRfQ(Hn%8(I2 z;P(kBYRn=u0-250t$9K9{^@>8*=43)FRhdxbQOi==mR4r{ zX9dhuGpJDNY@*?)IhAoDHRf@+MO4--o2@gYQ-$@@dWEZ3gEq1N<1=*K%n^* zoszY@l9FicaZDI9t|uckRmlPrjfFpCI;3JRt}y&Eju5l5Sw@7GN(c7$EouosbmC(E0byWm$Y;_Y838hjmg_XY_$pOdbwaAMnAF`XIbqM5j&3PM z6a?5b(+lhx5!)>-tPwP&#2nOyb}Uv_z?4>RB#bFkBDX zrdrhW1q!_>!4lU@EVt%SGdMYe8JA`NTxJ@#0XAZ#$IN(VBwfqXs5M1Xn80d->Nu1= zqJ+1+v{P(E-v0m_@dn7o`TShFVB0k|Z!--|!m6bqD&Rve5isIpUeU#kCrK6h_Z&Hi zd3C`F+n(cQc#iJGSi!it3n^p^64On+M8r1r0_)3OkQoyxTR>NK=W^b7_-zrD6c~)r zV(vqj?y75?YLb)EzSwmvZzFYB%keo}Cqz#Gpz{@3S;D7xTMu||gi7`{%~lwy0vV3D zZz11_cz;MBmaj&AplucWBCgyKTQkm$cw@ipg`7=!sKmwuU%wfYD!7bgM%&568F@f$ z^!fGbm3&{FP5@D$B1XY)az`Wz0C8}`<2DdCV)M)DpaRp(5 zg@-RS_%kebIhi1;F@{rM2SOu!p%l;7ItP9k*#Q)An7 z1f*RR7AZ$!t*;Q(y;!hZ_%!ndv>ikxisCMS8%5i3ND9N;XT+=om;^wNh!h3_R2mISFD_a}A)wn~Ob&x}t zM=Br~dFC!@+;FxVdddw;5LzFB_?Z%j{y5yt!KAB*-epk?RHoyP5pJd)vf{0qM!7_| zqZJbPf{RZOJ|M7nQ9z?p5NxZaTCpvZU(n_yjkp@%M#`vk=UH>GIlI@ScQ@CSN0cCn z0fYczw@@HZ^fEMoY7&H$TB~L|xqTcJ64D`=n`FA0Px-;^bdOB4%5aJQLK zz2GkEI9L{K>s1v5s}w5kejvjQxD=5+kGw4{W>gZTv>bcI^>UCUlaYe`AxlEC)n}ks zZXU6KCQ#}EU{->tp~BIwpa};jT0YN@GV3Y1P2g6?n%tv0UPm&xyT5o2*0KoL=B%~| z6+_T)66uSs`8Y_fNL+u?nE=zevE!L?4Tx11{e`9!>bw9#_M)K^ctGhhzeqQ|OQgxv z8F+-xRRuF53$h0WU?Y>>m^N_%Aj)T+VxV6>+f1D~0WHAqHKO#+X^e7J(!*>w7o0*@+0;=M^hP?TN?LV7||M#h#}x9w%Y%~Ulr z>iv|I(+qE|B8|YLF?E3lMI#5DD*2b^tdLO>o_?TTYQxR&R|13WAA*%qo{d52OwhWv) zls2|pRI^_(qQG}KD-(cXAit4+?5U{1{fNEcG_QDifJ+AWBbr(qO!`e9h0NCDG~CK> zW?-2gGexk|n5=OEw;>jarcm{48!j50KvARd2pZk7p!)I8P-lM7;8E_F^8p zQ!zQ0mcvCrM(y0S+6SJk5JKY+2h3QvK4x-{IPpWwD;`L%7?$2Bl`@C%lQ0;7N~)KP zTmT6$1irCQ!OX%IR5JV#3q`NO=B3AveqxR{D?>zY1X%1QLW_!y3X74!2>u3Iz#gkF z^$Hp`A8f>^BDdicVQj)vOmCdgU=vO~;8SuZWT%4bm|%*7Rb4R zU||GW^443dvloRhTc|N~xrZ1=f|97?P{m18k(Qcw=2V%N9yO_kv1Ak#l?Ikm7mK)Z zZd4+yz^lGyuN@eb6ctx5(_(V$I*QW@HEe8DFqGdGtmU0U;Bla!P}7oK0~U7^)nqjV zpzEamN4B~G;bU2;LBdSvONI+`CO-cF8tI9h%8c;MM1Kf3#5b97nUsvKL@)}COCt%? msmvMbBXBJkZspcd6wJB!3I)uR{8gckt-wD~TX722KmXY^y&VSt literal 0 HcmV?d00001 diff --git a/test/fixtures/ean-8/image-002.jpg b/test/fixtures/ean-8/image-002.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a448baa636f32dc6e4bff561d795286280788126 GIT binary patch literal 51670 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/ean-8/image-003.jpg b/test/fixtures/ean-8/image-003.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7aed95eecc15c016145dbdca9ad76a2e9bdd841 GIT binary patch literal 64995 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%0DS3=5fqy%pbeX#9^G!GBd-pAfI; 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